diff options
| author | Tim Redfern <tim@eclectronics.org> | 2012-01-18 18:02:10 +0000 |
|---|---|---|
| committer | Tim Redfern <tim@eclectronics.org> | 2012-01-18 18:02:10 +0000 |
| commit | 8c3efb592b16b672fc353368c04d88d3a32cf1a2 (patch) | |
| tree | 9cf4887292432c656651012c5370009b4a69cddf | |
| parent | fe92239d966f0219e8b7caf6335a776938b4e0e3 (diff) | |
157 files changed, 41545 insertions, 256 deletions
diff --git a/ESS1995i2c/ESS1995i2c.cbp b/ESS1995i2c/ESS1995i2c.cbp index d7b61cd..111a439 100644 --- a/ESS1995i2c/ESS1995i2c.cbp +++ b/ESS1995i2c/ESS1995i2c.cbp @@ -30,10 +30,10 @@ <Add option="-Wall" /> <Add option="-mmcu=atmega328p" /> <Add option="-DF_CPU=8000000UL" /> - <Add directory="../arduinoSrc0022" /> - <Add directory="../arduino libs/NewSoftSerial" /> - <Add directory="../arduino_libs/Wire" /> - <Add directory="../arduino_libs/Wire/utility" /> + <Add directory="../arduinoSrc1_0" /> + <Add directory="../arduino_libs_1_0/Wire/utility" /> + <Add directory="../arduino_libs_1_0/Wire" /> + <Add directory="../hardwarevariants_1_0/standard" /> </Compiler> <Linker> <Add option="-mmcu=atmega328p" /> @@ -62,49 +62,60 @@ <Unit filename="main.cpp"> <Option virtualFolder="src/" /> </Unit> - <Unit filename="../arduinoSrc0022/HardwareSerial.cpp" /> - <Unit filename="../arduinoSrc0022/HardwareSerial.h" /> - <Unit filename="../arduinoSrc0022/Print.cpp" /> - <Unit filename="../arduinoSrc0022/Print.h" /> - <Unit filename="../arduinoSrc0022/Stream.h" /> - <Unit filename="../arduinoSrc0022/Tone.cpp" /> - <Unit filename="../arduinoSrc0022/WCharacter.h" /> - <Unit filename="../arduinoSrc0022/WConstants.h" /> - <Unit filename="../arduinoSrc0022/WInterrupts.c"> + <Unit filename="../arduinoSrc1_0/Arduino.h" /> + <Unit filename="../arduinoSrc1_0/CDC.cpp" /> + <Unit filename="../arduinoSrc1_0/Client.h" /> + <Unit filename="../arduinoSrc1_0/HID.cpp" /> + <Unit filename="../arduinoSrc1_0/HardwareSerial.cpp" /> + <Unit filename="../arduinoSrc1_0/HardwareSerial.h" /> + <Unit filename="../arduinoSrc1_0/IPAddress.cpp" /> + <Unit filename="../arduinoSrc1_0/IPAddress.h" /> + <Unit filename="../arduinoSrc1_0/Platform.h" /> + <Unit filename="../arduinoSrc1_0/Print.cpp" /> + <Unit filename="../arduinoSrc1_0/Print.h" /> + <Unit filename="../arduinoSrc1_0/Printable.h" /> + <Unit filename="../arduinoSrc1_0/Server.h" /> + <Unit filename="../arduinoSrc1_0/Stream.cpp" /> + <Unit filename="../arduinoSrc1_0/Stream.h" /> + <Unit filename="../arduinoSrc1_0/Tone.cpp" /> + <Unit filename="../arduinoSrc1_0/USBAPI.h" /> + <Unit filename="../arduinoSrc1_0/USBCore.cpp" /> + <Unit filename="../arduinoSrc1_0/USBCore.h" /> + <Unit filename="../arduinoSrc1_0/USBDesc.h" /> + <Unit filename="../arduinoSrc1_0/Udp.h" /> + <Unit filename="../arduinoSrc1_0/WCharacter.h" /> + <Unit filename="../arduinoSrc1_0/WInterrupts.c"> <Option compilerVar="CC" /> </Unit> - <Unit filename="../arduinoSrc0022/WMath.cpp" /> - <Unit filename="../arduinoSrc0022/WProgram.h" /> - <Unit filename="../arduinoSrc0022/WString.cpp" /> - <Unit filename="../arduinoSrc0022/WString.h" /> - <Unit filename="../arduinoSrc0022/binary.h" /> - <Unit filename="../arduinoSrc0022/pins_arduino.c"> + <Unit filename="../arduinoSrc1_0/WMath.cpp" /> + <Unit filename="../arduinoSrc1_0/WString.cpp" /> + <Unit filename="../arduinoSrc1_0/WString.h" /> + <Unit filename="../arduinoSrc1_0/binary.h" /> + <Unit filename="../arduinoSrc1_0/new.cpp" /> + <Unit filename="../arduinoSrc1_0/new.h" /> + <Unit filename="../arduinoSrc1_0/wiring.c"> <Option compilerVar="CC" /> </Unit> - <Unit filename="../arduinoSrc0022/pins_arduino.h" /> - <Unit filename="../arduinoSrc0022/wiring.c"> + <Unit filename="../arduinoSrc1_0/wiring_analog.c"> <Option compilerVar="CC" /> </Unit> - <Unit filename="../arduinoSrc0022/wiring.h" /> - <Unit filename="../arduinoSrc0022/wiring_analog.c"> + <Unit filename="../arduinoSrc1_0/wiring_digital.c"> <Option compilerVar="CC" /> </Unit> - <Unit filename="../arduinoSrc0022/wiring_digital.c"> + <Unit filename="../arduinoSrc1_0/wiring_private.h" /> + <Unit filename="../arduinoSrc1_0/wiring_pulse.c"> <Option compilerVar="CC" /> </Unit> - <Unit filename="../arduinoSrc0022/wiring_private.h" /> - <Unit filename="../arduinoSrc0022/wiring_pulse.c"> + <Unit filename="../arduinoSrc1_0/wiring_shift.c"> <Option compilerVar="CC" /> </Unit> - <Unit filename="../arduinoSrc0022/wiring_shift.c"> + <Unit filename="../arduino_libs_1_0/Wire/Wire.cpp" /> + <Unit filename="../arduino_libs_1_0/Wire/Wire.h" /> + <Unit filename="../arduino_libs_1_0/Wire/utility/twi.c"> <Option compilerVar="CC" /> </Unit> - <Unit filename="../arduino_libs/Wire/Wire.cpp" /> - <Unit filename="../arduino_libs/Wire/Wire.h" /> - <Unit filename="../arduino_libs/Wire/utility/twi.c"> - <Option compilerVar="CC" /> - </Unit> - <Unit filename="../arduino_libs/Wire/utility/twi.h" /> + <Unit filename="../arduino_libs_1_0/Wire/utility/twi.h" /> + <Unit filename="../hardwarevariants_1_0/standard/pins_arduino.h" /> <Extensions> <code_completion /> <envvars /> diff --git a/ESS1995i2c/ESS1995i2c.depend b/ESS1995i2c/ESS1995i2c.depend index ac4554b..71c1650 100644 --- a/ESS1995i2c/ESS1995i2c.depend +++ b/ESS1995i2c/ESS1995i2c.depend @@ -1,8 +1,11 @@ # depslib dependency file v1.0 -1322661310 source:/home/tim/workspace/electic_AVR/ESS1995test_328p/main.cpp - "electic.h" +1326469170 source:/home/tim/workspace/electic/ESS1995i2c/adapticsBT.cpp + "adapticsBT.h" + +1326904499 /home/tim/workspace/electic/ESS1995i2c/adapticsBT.h + <Arduino.h> -1319028644 /home/tim/workspace/electic_AVR/arduinoSrc0022/WProgram.h +1319028644 /home/tim/workspace/electic/arduinoSrc0022/WProgram.h <stdlib.h> <string.h> <math.h> @@ -12,252 +15,224 @@ "WString.h" "HardwareSerial.h" -1319028644 /home/tim/workspace/electic_AVR/arduinoSrc0022/wiring.h +1319028644 /home/tim/workspace/electic/arduinoSrc0022/wiring.h <avr/io.h> <stdlib.h> "binary.h" -1319028644 /home/tim/workspace/electic_AVR/arduinoSrc0022/binary.h +1319028644 /home/tim/workspace/electic/arduinoSrc0022/binary.h -1319028644 /home/tim/workspace/electic_AVR/arduinoSrc0022/WCharacter.h +1319028644 /home/tim/workspace/electic/arduinoSrc0022/WCharacter.h <ctype.h> -1319028644 /home/tim/workspace/electic_AVR/arduinoSrc0022/WString.h +1319028644 /home/tim/workspace/electic/arduinoSrc0022/WString.h <stdlib.h> <string.h> <ctype.h> -1319028644 /home/tim/workspace/electic_AVR/arduinoSrc0022/HardwareSerial.h +1319028644 /home/tim/workspace/electic/arduinoSrc0022/HardwareSerial.h <inttypes.h> "Stream.h" "usb_api.h" -1319028644 /home/tim/workspace/electic_AVR/arduinoSrc0022/Stream.h +1319028644 /home/tim/workspace/electic/arduinoSrc0022/Stream.h <inttypes.h> "Print.h" -1319028644 /home/tim/workspace/electic_AVR/arduinoSrc0022/Print.h +1319028644 /home/tim/workspace/electic/arduinoSrc0022/Print.h <inttypes.h> <stdio.h> "WString.h" -1322661364 /home/tim/workspace/electic_AVR/ESS1995test_328p/electic.h - <WProgram.h> - "adapticsBT.h" - -1322574717 /home/tim/workspace/electic_AVR/ESS1995test_328p/adapticsBT.h - <WProgram.h> +1326473819 source:/home/tim/workspace/electic/ESS1995i2c/main.cpp + "electic.h" -1322574642 source:/home/tim/workspace/electic_AVR/ESS1995test_328p/adapticsBT.cpp +1326473161 /home/tim/workspace/electic/ESS1995i2c/electic.h + <Arduino.h> "adapticsBT.h" + <Wire.h> -1319029257 source:/home/tim/workspace/electic_AVR/arduinoSrc0022/HardwareSerial.cpp - <stdlib.h> - <stdio.h> - <string.h> +1322528192 /home/tim/workspace/electic/arduinoSrc1_0/Platform.h <inttypes.h> - "wiring.h" - "wiring_private.h" - "HardwareSerial.h" - -1319028644 /home/tim/workspace/electic_AVR/arduinoSrc0022/wiring_private.h - <avr/io.h> + <avr/pgmspace.h> + <avr/eeprom.h> <avr/interrupt.h> - <avr/delay.h> - <stdio.h> - <stdarg.h> - "wiring.h" + <util/delay.h> + "Arduino.h" + "USBDesc.h" + "USBCore.h" + "USBAPI.h" -1319029257 source:/home/tim/workspace/electic_AVR/arduinoSrc0022/Print.cpp +1322528192 /home/tim/workspace/electic/arduinoSrc1_0/Arduino.h <stdlib.h> - <stdio.h> <string.h> <math.h> - "wiring.h" - "Print.h" - -1319029257 source:/home/tim/workspace/electic_AVR/arduinoSrc0022/Tone.cpp - <avr/interrupt.h> - <avr/pgmspace.h> - "wiring.h" - "pins_arduino.h" - -1319028644 /home/tim/workspace/electic_AVR/arduinoSrc0022/pins_arduino.h <avr/pgmspace.h> - -1319029257 source:/home/tim/workspace/electic_AVR/arduinoSrc0022/WInterrupts.c - <inttypes.h> <avr/io.h> <avr/interrupt.h> - <avr/pgmspace.h> - <stdio.h> - "WConstants.h" - "wiring_private.h" - -1319028644 /home/tim/workspace/electic_AVR/arduinoSrc0022/WConstants.h - "wiring.h" - -1319029257 source:/home/tim/workspace/electic_AVR/arduinoSrc0022/WMath.cpp - "stdlib.h" - -1319029257 source:/home/tim/workspace/electic_AVR/arduinoSrc0022/WString.cpp - <stdlib.h> - "WProgram.h" - "WString.h" - -1319029257 source:/home/tim/workspace/electic_AVR/arduinoSrc0022/pins_arduino.c - <avr/io.h> - "wiring_private.h" - "pins_arduino.h" - -1319029257 source:/home/tim/workspace/electic_AVR/arduinoSrc0022/wiring.c - "wiring_private.h" - -1319029257 source:/home/tim/workspace/electic_AVR/arduinoSrc0022/wiring_analog.c - "wiring_private.h" - "pins_arduino.h" - -1319029257 source:/home/tim/workspace/electic_AVR/arduinoSrc0022/wiring_digital.c - "wiring_private.h" - "pins_arduino.h" - -1319029257 source:/home/tim/workspace/electic_AVR/arduinoSrc0022/wiring_pulse.c - "wiring_private.h" - "pins_arduino.h" - -1319029257 source:/home/tim/workspace/electic_AVR/arduinoSrc0022/wiring_shift.c - "wiring_private.h" - -1322574642 source:/home/tim/workspace/electic/ESS1995i2c/adapticsBT.cpp - "adapticsBT.h" - -1322574717 /home/tim/workspace/electic/ESS1995i2c/adapticsBT.h - <WProgram.h> - -1319028644 /home/tim/workspace/electic/arduinoSrc0022/WProgram.h - <stdlib.h> - <string.h> - <math.h> - <avr/interrupt.h> - "wiring.h" + "binary.h" "WCharacter.h" "WString.h" "HardwareSerial.h" + "pins_arduino.h" -1319028644 /home/tim/workspace/electic/arduinoSrc0022/wiring.h - <avr/io.h> - <stdlib.h> - "binary.h" - -1319028644 /home/tim/workspace/electic/arduinoSrc0022/binary.h +1322528192 /home/tim/workspace/electic/arduinoSrc1_0/binary.h -1319028644 /home/tim/workspace/electic/arduinoSrc0022/WCharacter.h +1322528191 /home/tim/workspace/electic/arduinoSrc1_0/WCharacter.h <ctype.h> -1319028644 /home/tim/workspace/electic/arduinoSrc0022/WString.h +1322528191 /home/tim/workspace/electic/arduinoSrc1_0/WString.h <stdlib.h> <string.h> <ctype.h> + <avr/pgmspace.h> -1319028644 /home/tim/workspace/electic/arduinoSrc0022/HardwareSerial.h +1322528192 /home/tim/workspace/electic/arduinoSrc1_0/HardwareSerial.h <inttypes.h> "Stream.h" - "usb_api.h" + "USBAPI.h" -1319028644 /home/tim/workspace/electic/arduinoSrc0022/Stream.h +1322528192 /home/tim/workspace/electic/arduinoSrc1_0/Stream.h <inttypes.h> "Print.h" -1319028644 /home/tim/workspace/electic/arduinoSrc0022/Print.h +1322528192 /home/tim/workspace/electic/arduinoSrc1_0/Print.h <inttypes.h> <stdio.h> "WString.h" + "Printable.h" -1326379728 source:/home/tim/workspace/electic/ESS1995i2c/main.cpp - "electic.h" +1322528192 /home/tim/workspace/electic/arduinoSrc1_0/Printable.h + <new.h> -1326379810 /home/tim/workspace/electic/ESS1995i2c/electic.h - <WProgram.h> - "adapticsBT.h" - <Wire.h> +1322528192 /home/tim/workspace/electic/arduinoSrc1_0/new.h + <stdlib.h> + +1322528191 /home/tim/workspace/electic/arduinoSrc1_0/USBAPI.h + +1322528191 /home/tim/workspace/electic/hardwarevariants_1_0/standard/pins_arduino.h + <avr/pgmspace.h> + +1322528192 /home/tim/workspace/electic/arduinoSrc1_0/USBDesc.h + +1322528192 /home/tim/workspace/electic/arduinoSrc1_0/USBCore.h -1319029257 source:/home/tim/workspace/electic/arduinoSrc0022/HardwareSerial.cpp +1322528191 source:/home/tim/workspace/electic/arduinoSrc1_0/CDC.cpp + "Platform.h" + "USBAPI.h" + <avr/wdt.h> + +1322528192 source:/home/tim/workspace/electic/arduinoSrc1_0/HID.cpp + "Platform.h" + "USBAPI.h" + "USBDesc.h" + +1322528192 source:/home/tim/workspace/electic/arduinoSrc1_0/HardwareSerial.cpp <stdlib.h> <stdio.h> <string.h> <inttypes.h> - "wiring.h" + "Arduino.h" "wiring_private.h" "HardwareSerial.h" -1319028644 /home/tim/workspace/electic/arduinoSrc0022/wiring_private.h +1322528191 /home/tim/workspace/electic/arduinoSrc1_0/wiring_private.h <avr/io.h> <avr/interrupt.h> - <avr/delay.h> <stdio.h> <stdarg.h> - "wiring.h" + "Arduino.h" -1319029257 source:/home/tim/workspace/electic/arduinoSrc0022/Print.cpp +1322528192 source:/home/tim/workspace/electic/arduinoSrc1_0/IPAddress.cpp + <Arduino.h> + <IPAddress.h> + +1322528191 /home/tim/workspace/electic/arduinoSrc1_0/IPAddress.h + <Printable.h> + +1322528191 source:/home/tim/workspace/electic/arduinoSrc1_0/Print.cpp <stdlib.h> <stdio.h> <string.h> <math.h> - "wiring.h" + "Arduino.h" "Print.h" -1319029257 source:/home/tim/workspace/electic/arduinoSrc0022/Tone.cpp +1322528191 source:/home/tim/workspace/electic/arduinoSrc1_0/Stream.cpp + "Arduino.h" + "Stream.h" + +1322528192 source:/home/tim/workspace/electic/arduinoSrc1_0/Tone.cpp <avr/interrupt.h> <avr/pgmspace.h> - "wiring.h" + "Arduino.h" "pins_arduino.h" -1319028644 /home/tim/workspace/electic/arduinoSrc0022/pins_arduino.h - <avr/pgmspace.h> +1322528192 source:/home/tim/workspace/electic/arduinoSrc1_0/USBCore.cpp + "Platform.h" + "USBAPI.h" + "USBDesc.h" -1319029257 source:/home/tim/workspace/electic/arduinoSrc0022/WInterrupts.c +1322528191 source:/home/tim/workspace/electic/arduinoSrc1_0/WInterrupts.c <inttypes.h> <avr/io.h> <avr/interrupt.h> <avr/pgmspace.h> <stdio.h> - "WConstants.h" "wiring_private.h" -1319028644 /home/tim/workspace/electic/arduinoSrc0022/WConstants.h - "wiring.h" - -1319029257 source:/home/tim/workspace/electic/arduinoSrc0022/WMath.cpp +1322528192 source:/home/tim/workspace/electic/arduinoSrc1_0/WMath.cpp "stdlib.h" -1319029257 source:/home/tim/workspace/electic/arduinoSrc0022/WString.cpp - <stdlib.h> - "WProgram.h" +1322528192 source:/home/tim/workspace/electic/arduinoSrc1_0/WString.cpp "WString.h" -1319029257 source:/home/tim/workspace/electic/arduinoSrc0022/pins_arduino.c - <avr/io.h> - "wiring_private.h" - "pins_arduino.h" +1322528191 source:/home/tim/workspace/electic/arduinoSrc1_0/main.cpp + <Arduino.h> + +1322528192 source:/home/tim/workspace/electic/arduinoSrc1_0/new.cpp + <new.h> -1319029257 source:/home/tim/workspace/electic/arduinoSrc0022/wiring.c +1322528192 source:/home/tim/workspace/electic/arduinoSrc1_0/wiring.c "wiring_private.h" -1319029257 source:/home/tim/workspace/electic/arduinoSrc0022/wiring_analog.c +1322528191 source:/home/tim/workspace/electic/arduinoSrc1_0/wiring_analog.c "wiring_private.h" "pins_arduino.h" -1319029257 source:/home/tim/workspace/electic/arduinoSrc0022/wiring_digital.c +1322528191 source:/home/tim/workspace/electic/arduinoSrc1_0/wiring_digital.c "wiring_private.h" "pins_arduino.h" -1319029257 source:/home/tim/workspace/electic/arduinoSrc0022/wiring_pulse.c +1322528191 source:/home/tim/workspace/electic/arduinoSrc1_0/wiring_pulse.c "wiring_private.h" "pins_arduino.h" -1319029257 source:/home/tim/workspace/electic/arduinoSrc0022/wiring_shift.c +1322528191 source:/home/tim/workspace/electic/arduinoSrc1_0/wiring_shift.c "wiring_private.h" -1293228745 /home/tim/workspace/electic/arduino_libs/Wire/Wire.h +1322528191 source:/home/tim/workspace/electic/arduino_libs_1_0/Wire/Wire.cpp + <stdlib.h> + <string.h> + <inttypes.h> + "twi.h" + "Wire.h" + +1322528191 /home/tim/workspace/electic/arduino_libs_1_0/Wire/utility/twi.h + <inttypes.h> + +1322528191 /home/tim/workspace/electic/arduino_libs_1_0/Wire/Wire.h <inttypes.h> + "Stream.h" + +1322528191 source:/home/tim/workspace/electic/arduino_libs_1_0/Wire/utility/twi.c + <math.h> + <stdlib.h> + <inttypes.h> + <avr/io.h> + <avr/interrupt.h> + <compat/twi.h> + "Arduino.h" + "pins_arduino.h" + "twi.h" diff --git a/ESS1995i2c/ESS1995i2c.layout b/ESS1995i2c/ESS1995i2c.layout index 73883f4..c1889b0 100644 --- a/ESS1995i2c/ESS1995i2c.layout +++ b/ESS1995i2c/ESS1995i2c.layout @@ -1,25 +1,25 @@ <?xml version="1.0" encoding="UTF-8" standalone="yes" ?> <CodeBlocks_layout_file> <ActiveTarget name="Release" /> - <File name="adapticsBT.cpp" open="0" top="0" tabpos="3"> - <Cursor position="1609" topLine="11" /> + <File name="adapticsBT.h" open="1" top="0" tabpos="2"> + <Cursor position="64" topLine="0" /> </File> - <File name="electic.h" open="1" top="0" tabpos="2"> - <Cursor position="1320" topLine="0" /> + <File name="burn" open="0" top="0" tabpos="0"> + <Cursor position="88" topLine="0" /> </File> - <File name="main.cpp" open="1" top="1" tabpos="1"> - <Cursor position="634" topLine="26" /> + <File name="electic.h" open="1" top="0" tabpos="3"> + <Cursor position="243" topLine="0" /> </File> - <File name="../arduinoSrc0022/HardwareSerial.h" open="0" top="0" tabpos="0"> - <Cursor position="0" topLine="40" /> + <File name="main.cpp" open="1" top="0" tabpos="1"> + <Cursor position="381" topLine="13" /> </File> - <File name="../arduinoSrc0022/Print.h" open="0" top="0" tabpos="0"> - <Cursor position="1919" topLine="0" /> + <File name="../arduinoSrc1_0/Arduino.h" open="0" top="0" tabpos="4"> + <Cursor position="5594" topLine="177" /> </File> - <File name="../arduinoSrc0022/Tone.cpp" open="0" top="0" tabpos="0"> - <Cursor position="7050" topLine="229" /> + <File name="../arduinoSrc1_0/Tone.cpp" open="0" top="0" tabpos="0"> + <Cursor position="3319" topLine="89" /> </File> - <File name="../arduino_libs/Wire/Wire.cpp" open="0" top="0" tabpos="0"> - <Cursor position="925" topLine="15" /> + <File name="../arduino_libs_1_0/Wire/Wire.cpp" open="0" top="0" tabpos="5"> + <Cursor position="1311" topLine="116" /> </File> </CodeBlocks_layout_file> diff --git a/ESS1995i2c/adapticsBT.h b/ESS1995i2c/adapticsBT.h index 8cb87e3..1438e94 100644 --- a/ESS1995i2c/adapticsBT.h +++ b/ESS1995i2c/adapticsBT.h @@ -1,11 +1,11 @@ #ifndef ADAPTICSBT_H_INCLUDED
#define ADAPTICSBT_H_INCLUDED -extern "C" void __cxa_pure_virtual(void); //for C++ defines +//extern "C" void __cxa_pure_virtual(void); //for C++ defines #define BTC 6 -#include <WProgram.h> //main Arduino header file
+#include <Arduino.h> //main Arduino header file
void setupBlueTooth(); void advertise();
diff --git a/ESS1995i2c/bin/Release/ESS1995i2c.elf b/ESS1995i2c/bin/Release/ESS1995i2c.elf Binary files differnew file mode 100755 index 0000000..75cee45 --- /dev/null +++ b/ESS1995i2c/bin/Release/ESS1995i2c.elf diff --git a/ESS1995i2c/bin/Release/ESS1995i2c.elf.eep.hex b/ESS1995i2c/bin/Release/ESS1995i2c.elf.eep.hex new file mode 100644 index 0000000..1996e8f --- /dev/null +++ b/ESS1995i2c/bin/Release/ESS1995i2c.elf.eep.hex @@ -0,0 +1 @@ +:00000001FF
diff --git a/ESS1995i2c/bin/Release/ESS1995i2c.elf.hex b/ESS1995i2c/bin/Release/ESS1995i2c.elf.hex new file mode 100644 index 0000000..2eb18e1 --- /dev/null +++ b/ESS1995i2c/bin/Release/ESS1995i2c.elf.hex @@ -0,0 +1,1349 @@ +:100000000C9465000C94E30D0C94100E0C948D0070
+:100010000C948D000C948D000C948D000C94570D55
+:100020000C948D000C948D000C948D000C948D001C
+:100030000C948D000C948D000C948D000C948D000C
+:100040000C94FA160C948D000C9404030C94350354
+:100050000C948D000C948D000C948D000C948D00EC
+:100060000C94551C0C948D00020000000024002705
+:10007000002A0000000000250028002B00000000DE
+:1000800000230026002900040404040404040402DC
+:100090000202020202030303030303010204081025
+:1000A00020408001020408102001020408102000F2
+:1000B0000000070002010000030406000000000029
+:1000C00000000000A10477056F1B11241FBECFEFB5
+:1000D000D8E0DEBFCDBF12E0A0E0B1E0E8E5F2E598
+:1000E00002C005900D92A03EB107D9F714E0A0EE32
+:1000F000B2E001C01D92A039B107E1F710E0CAECEF
+:10010000D0E004C02297FE010E945725C43CD107CD
+:10011000C9F70E94DC000C942A290C940000CF93AC
+:10012000DF9360ED77E080E090E00E948217C2E804
+:10013000D3E0CE0160E071E00E94170660ED77E049
+:1001400080E090E00E948217CE010E949C02DF9125
+:10015000CF910895CF93DF9386E060E00E949F18CF
+:10016000C2E8D3E0CE0140E056E960E070E00E94D2
+:10017000BB03CE016BE071E00E941706CE0169E17E
+:1001800071E00E941706CE0163E371E00E9417063A
+:10019000CE0161E471E00E941706CE016FE471E0C8
+:1001A0000E941706CE0160E671E00E9417060E94C9
+:1001B0008F00DF91CF9108957F928F929F92AF929F
+:1001C000BF92CF92DF92EF92FF920F931F93DF9334
+:1001D000CF93CDB7DEB727970FB6F894DEBF0FBE2B
+:1001E000CDBF0E94B31784E194E00E94161B85E006
+:1001F00061E00E949F1885E060E00E94C3180E94A1
+:10020000AA0082E060E00E949F1886E060E00E9401
+:100210009F188CE061E00E949F188DE061E00E94D1
+:100220009F188DE061E00E94C31885E061E00E94A4
+:10023000C3188091EB02879588278795E090EC02A0
+:10024000EE0CEE0CEE0CE82A8091ED02E82A80918B
+:10025000EF028295880F807E0091F002000F000F60
+:10026000000F082B8091EE02082B9091F1029795D8
+:10027000992797958091F5028295807F892B90919F
+:10028000F702892B9091F902990F990F990F982BEA
+:10029000A090F402AA0CA92A9091F20297959927AE
+:1002A00097958091F3028295880F880F807C892B27
+:1002B0009091F802892BC090F602CC0CCC0CC82A85
+:1002C00084E194E068EC70E00E94521B84E194E0C9
+:1002D0006E2D0E94D61A84E194E0602F0E94D61AF7
+:1002E00084E194E06A2D0E94D61A84E194E06C2D9A
+:1002F0000E94D61A84E194E00E94551B0AEF10E098
+:100300006E010894C11CD11CA4E0AA2EB12CAC0E25
+:10031000BD1EF2E08F2E912C8C0E9D1E77247394BF
+:1003200084E194E069EC70E00E94521B82E00E943C
+:10033000FB18009709F0A1C0E1EEEE2EE2E0FE2EE0
+:1003400084E194E00E944B1AF70181937F01FBEE58
+:10035000EF16F2E0FF06A1F784E194E00E94551B3E
+:100360008091E10289838091E30290E0A0E0B0E017
+:10037000BA2FA92F982F88272091E40230E040E07F
+:1003800050E0822B932BA42BB52B2091E20230E07E
+:1003900040E050E02770307040705070A901332762
+:1003A0002227822B932BA42BB52B8C839D83AE838A
+:1003B000BF838091E602829586958695837090E052
+:1003C0002091E50230E0220F331F220F331F822BD2
+:1003D000932B9B838A8313C082E893E00E947A0266
+:1003E000823029F0833031F0813049F406C00AEFC1
+:1003F00010E005C002E310E002C008EE13E082E85E
+:1004000093E00E944B021816190634F386E00E940E
+:10041000FB182091E002009751F1222311F4709211
+:10042000E00282E893E063E771E042E050E00E947E
+:10043000860582E893E062E771E041E050E00E94C7
+:10044000860582E893E0B60141E050E00E9486050F
+:1004500082E893E0B50144E050E00E94860582E81E
+:1004600093E0B40142E050E00E94860506C02223DA
+:1004700021F00E948F001092E002B80180E090E02D
+:100480000E9482178CE060E00E94C3188DE060E05B
+:100490000E94C31845CFFC0184859585FC01E05C72
+:1004A000FF4F208131818E5B9F4FFC0180819181C4
+:1004B000281B390B2F733070C9010895FC01848506
+:1004C0009585FC01E05CFF4F40815181FC01EE5BB2
+:1004D000FF4F208131814217530741F00190F08195
+:1004E000E02DE80FF91F208130E002C02FEF3FEF31
+:1004F000C9010895FC0184859585FC01E05CFF4FEE
+:1005000040815181FC01EE5BFF4F20813181421718
+:10051000530771F0A081B181A80FB91F2C91808180
+:10052000918101968F7390709183808330E002C037
+:100530002FEF3FEFC9010895DC011E968D919C912C
+:100540001F97FC01E05CFF4F8E5B9F4F4081518104
+:10055000DC012D913C91119742175307B9F708958B
+:100560001F93FC01162F26853785D901A05CBF4F4C
+:100570008D919C91019660E470E00E94BA24D901AB
+:10058000AE5BBF4F4D915C91119784179507D1F3E6
+:10059000D901A05CBF4F0D90BC91A02DA20FB31F3D
+:1005A0001C93A685B785A05CBF4F11969C938E9334
+:1005B000A689B7892C9181E090E0058C02C0880F54
+:1005C000991F0A94E2F7282B2C9381E090E01F9169
+:1005D0000895FB01E05CFF4F208131812F5F3F4F89
+:1005E0002F733070DB01AE5BBF4F4D915C91119763
+:1005F0002417350739F0A081B181A60FB71F8C935E
+:1006000031832083089508951F920F920FB60F92A1
+:1006100011242F933F934F935F936F937F938F9307
+:100620009F93AF93BF93EF93FF938091C6006AEFC0
+:1006300072E00E94E902FF91EF91BF91AF919F910B
+:100640008F917F916F915F914F913F912F910F907B
+:100650000FBE0F901F90189582E893E00E944B0206
+:10066000009711F00E94030308951F920F920FB696
+:100670000F9211242F933F935F936F937F938F93E8
+:100680009F93AF93BF93EF93FF9320917E0330919D
+:100690007F0380918003909181032817390731F4FB
+:1006A0008091C1008F7D8093C10016C0E0918003CE
+:1006B000F0918103E25CFC4F208180918003909156
+:1006C0008103019660E470E00E94BA249093810354
+:1006D000809380032093C600FF91EF91BF91AF916B
+:1006E0009F918F917F916F915F913F912F910F908B
+:1006F0000FBE0F901F9018958F92AF92BF92CF921E
+:10070000DF92EF92FF920F931F93DF93CF93CDB7BA
+:10071000DEB7FC011382128288EE93E0A0E0B0E025
+:1007200084839583A683B78389E791E0918380834F
+:100730007587648757874687318B208B138B028B95
+:10074000F58AE48AD78AC68AB18EA08E828E8E857B
+:10075000838F8F85848F8889858F8989868FCF91B4
+:10076000DF911F910F91FF90EF90DF90CF90BF909E
+:10077000AF908F9008959F92AF92BF92CF92DF92E9
+:10078000EF92FF920F931F93CF93DF93EC017A01C7
+:100790008B0199249394EC89FD8981E090E00E8C83
+:1007A00002C0880F991F0A94E2F7808360E874E81A
+:1007B0008EE190E0A80197010E94CD2421503040A5
+:1007C00040405040569547953795279590E4A92E7F
+:1007D00092E4B92E9FE0C92ED12C12C09924EC8945
+:1007E000FD891082C601B501A80197010E94CD24A0
+:1007F00021503040404050405695479537952795B9
+:1008000080E12030380710F0992041F7E889F98914
+:100810003083EA89FB892083EE89FF89408181E06A
+:1008200090E09C010A8C02C0220F331F0A94E2F769
+:10083000422B4083EE89FF8940819C010B8C02C0D2
+:10084000220F331F0A94E2F7422B4083EE89FF897F
+:1008500040819C010C8C02C0220F331F0A94E2F7E6
+:10086000422B4083EE89FF8920810D8C02C0880FC6
+:10087000991F0A94E2F7809582238083DF91CF91BC
+:100880001F910F91FF90EF90DF90CF90BF90AF90AE
+:100890009F900895CF93DF93FC0186859785DC01B7
+:1008A000A05CBF4F8E5B9F4F4D915C911197EC0107
+:1008B0002881398142175307B9F7A689B7894C9126
+:1008C00081E090E09C01028C02C0220F331F0A9449
+:1008D000E2F7209524232C93A689B7894C919C019B
+:1008E000038C02C0220F331F0A94E2F720952423C1
+:1008F0002C93A689B7894C919C01048C02C0220FCD
+:10090000331F0A94E2F7209524232C93A689B789F4
+:100910002C91058C02C0880F991F0A94E2F78095EC
+:1009200082238C9384859585FC01EE5BFF4F2081AB
+:100930003181805C9F4FFC0131832083DF91CF9117
+:100940000895109285031092840388EE93E0A0E04E
+:10095000B0E08093860390938703A0938803B093BD
+:100960008903E4E8F3E089E791E0929382938AEFC8
+:1009700092E0958784878EE393E09787868785EC5E
+:1009800090E0918B808B84EC90E0938B828B80EC59
+:1009900090E0958B848B81EC90E0978B868B86EC36
+:1009A00090E0918F808F84E0828F83E0838F87E057
+:1009B000848F85E0858F81E0868F08958F929F9246
+:1009C000AF92BF92CF92DF92EF92FF920F931F935D
+:1009D000CF93DF934C017B0182E0A82EB12CA80CB1
+:1009E000B91CC0E0D0E0CC24DD24F50161915F01A9
+:1009F000C7014AE050E00E943B078C01C7016EE24C
+:100A00000E941A06080F191FC00ED11E2196C3306E
+:100A1000D10559F7C701F40165814AE050E00E9411
+:100A20003B07C80ED91EC601DF91CF911F910F91D0
+:100A3000FF90EF90DF90CF90BF90AF909F908F90FE
+:100A40000895FC0189E991E09183808312821382E9
+:100A50001482158208950F93FC0189E991E0918336
+:100A6000808362834383248305830F910895FC016F
+:100A700089E991E091838083428353836483758302
+:100A80000895FC0189E991E091838083DB012D9138
+:100A90003D914D915C911397228333834483558319
+:100AA0000895CF93DF93FC01EB0188819981AA819E
+:100AB000BB8182839383A483B583CF01DF91CF91E0
+:100AC0000895FC01428353836483758308959B01D9
+:100AD000BC016E5F7F4FC90144E050E00E94ED27EA
+:100AE0009C0181E02115310509F080E0089589E934
+:100AF00091E09093A2038093A1031092A30310921C
+:100B0000A4031092A5031092A6030895CF92DF923A
+:100B1000EF92FF920F931F93CF93DF936C017B01B2
+:100B20008A01C0E0D0E00FC0D7016D917D01D601F0
+:100B3000ED91FC910190F081E02DC6010995C80F5F
+:100B4000D91F015010400115110571F7CE01DF9139
+:100B5000CF911F910F91FF90EF90DF90CF9008956C
+:100B6000DB010D900020E9F7AD0141505040461BDC
+:100B7000570BDC01ED91FC910280F381E02D09958A
+:100B80000895EF92FF920F931F93CF93DF937C0111
+:100B9000062F172FC0E0D0E0F8010F5F1F4F6491C0
+:100BA000662351F0F701A081B181ED91FC91C7015D
+:100BB0000995C80FD91FF0CFCE01DF91CF911F91BA
+:100BC0000F91FF90EF900895AF92BF92CF92DF9276
+:100BD000EF92FF920F931F93CF93DF937C016B01F2
+:100BE000C0E0D0E000E010E010C0D701ED91FC9132
+:100BF000A080B180C601BE010E94B613682FC70154
+:100C0000F5010995080F191F2196F6018481958138
+:100C1000C817D90750F3C801DF91CF911F910F91E9
+:100C2000FF90EF90DF90CF90BF90AF9008950E941B
+:100C3000B0050895DC01ED91FC910190F081E02D6B
+:100C4000099508959C01CB01DB01ED91FC91019088
+:100C5000F081E02DB901099508950F931F93CF936B
+:100C6000DF93EC016DE00E941A068C01CE016AE070
+:100C70000E941A06080F191FC801DF91CF911F911A
+:100C80000F9108950F931F93CF93DF93EC010E9470
+:100C9000C1058C01CE010E942D06080F191FC80145
+:100CA000DF91CF911F910F9108950F931F93CF93D1
+:100CB000DF93EC010E94E4058C01CE010E942D0619
+:100CC000080F191FC801DF91CF911F910F9108954F
+:100CD0000F931F93CF93DF93EC010E94B0058C011B
+:100CE000CE010E942D06080F191FC801DF91CF9178
+:100CF0001F910F9108950F931F93CF93DF93EC01F2
+:100D00000E941A068C01CE010E942D06080F191FA1
+:100D1000C801DF91CF911F910F9108950F931F93F9
+:100D2000CF93DF93EC010E9422068C01CE010E943A
+:100D30002D06080F191FC801DF91CF911F910F9148
+:100D400008958F929F92AF92BF92CF92DF92EF92CF
+:100D5000FF920F931F93DF93CF93CDB7DEB7A19789
+:100D60000FB6F894DEBF0FBECDBF6C01042FE52F88
+:100D7000CB01122F19A2223008F41AE021E2E22E50
+:100D8000F12CEC0EFD1E812E9924AA24BB2403C055
+:100D9000022FE32FCA01602F7E2FA50194010E942C
+:100DA000CD24129F802D1124081B0894E108F1081E
+:100DB0000A3014F4005D01C0095CF70100832115BD
+:100DC00031054105510521F7C601B7010E94B00563
+:100DD000A1960FB6F894DEBF0FBECDBFCF91DF91C5
+:100DE0001F910F91FF90EF90DF90CF90BF90AF9049
+:100DF0009F908F9008952115310549F4DC01ED9104
+:100E0000FC910190F081E02D642F099508950E94D6
+:100E1000A10608950F931F93CF93DF93EC010E94D7
+:100E2000FB068C01CE010E942D06080F191FC80178
+:100E3000DF91CF911F910F9108959A01AB0160E06E
+:100E400070E00E94FB0608950F931F93CF93DF93EA
+:100E5000EC019A01AB0160E070E00E94FB068C019E
+:100E6000CE010E942D06080F191FC801DF91CF91F6
+:100E70001F910F9108959A01462F50E060E070E0B5
+:100E80000E94FB0608950F931F93CF93DF93EC010D
+:100E90009A01462F50E060E070E00E94FB068C0152
+:100EA000CE010E942D06080F191FC801DF91CF91B6
+:100EB0001F910F910895CF92DF92EF92FF920F93BF
+:100EC0001F93CF93DF93EC017A018B01211531053C
+:100ED00041F4E881F9810190F081E02D642F0995BA
+:100EE0001AC02A303105A9F477FF12C06DE20E94C2
+:100EF0001A066C0144275527BA014E195F09600B89
+:100F0000710BCE012AE00E94A106C80ED91E04C0B2
+:100F10002AE00E94A1066C01C601DF91CF911F91CA
+:100F20000F91FF90EF90DF90CF9008950F931F9354
+:100F3000CF93DF93EC010E945B078C01CE010E94EE
+:100F40002D06080F191FC801DF91CF911F910F9136
+:100F500008959A01FB01AF01662757FD6095762F32
+:100F60000E945B0708950F931F93CF93DF93EC01CB
+:100F70009A01CB01AC01662757FD6095762FCE0113
+:100F80000E945B078C01CE010E942D06080F191FDD
+:100F9000C801DF91CF911F910F9108956F927F92B9
+:100FA0009F92AF92BF92CF92DF92EF92FF920F93F8
+:100FB0001F93CF93DF933C017A018B01C22ECB01AB
+:100FC000BA0120E030E0A9010E94572187FF0AC042
+:100FD000C3016DE20E941A06EC0117FB109517F988
+:100FE000109502C0C0E0D0E0DD2450E040E030E0E9
+:100FF0002FE311C0DA01F9016B2F742F8F2F922F7D
+:1010000020E030E040E251E40E947920562F472F43
+:10101000382F292FD394DC1468F3C801B701DA0103
+:10102000F9012B2F342F4F2F5E2F0E94211F5B01C0
+:10103000F82E992E7B2D0E94AB1D162FD72EE82E51
+:10104000092F0E9439229B01AC016A2D7B2D8F2D27
+:10105000992D0E944E1F962EA72EB82EF92EC30151
+:10106000412F5D2D6E2D702F2AE030E00E94FB068F
+:10107000C80FD91FCC20B9F1C30161EA71E00E9409
+:10108000B005C80FD91F2FC0692D7A2D8B2D9F2D2C
+:1010900020E030E040E251E40E947F1FD62EB72EC0
+:1010A000A82E992E0E94E7217B010027F7FC0095CE
+:1010B000102FC301B801A7012AE030E00E945B07AE
+:1010C000C80FD91FC801B7010E9487219B01AC013D
+:1010D0006D2D7B2D8A2D992D0E944E1F962EA72EA9
+:1010E000B82EF92ECA94CC2079F6CE01DF91CF919B
+:1010F0001F910F91FF90EF90DF90CF90BF90AF9036
+:101100009F907F906F9008950E94CE0708950F934F
+:101110001F93CF93DF93EC010E94CE078C01CE0189
+:101120000E942D06080F191FC801DF91CF911F9152
+:101130000F910895CF93DF93EC010E944E176887BB
+:1011400079878A879B87E881F9810680F781E02D7E
+:10115000CE0109959C0197FF15C00E944E17288566
+:1011600039854A855B85621B730B840B950B2C813B
+:101170003D814E815F81621773078407950718F3DD
+:101180002FEF3FEFC901DF91CF910895CF93DF9308
+:10119000EC010E944E17688779878A879B87E881D0
+:1011A000F9810084F185E02DCE0109959C0197FF1E
+:1011B00015C00E944E17288539854A855B85621BBC
+:1011C000730B840B950B2C813D814E815F816217DF
+:1011D00073078407950718F32FEF3FEFC901DF91DD
+:1011E000CF910895CF93DF93EC01CE010E94C60802
+:1011F0009C0197FD0FC08D32910561F0C0978A3038
+:10120000910540F0E881F9810680F781E02DCE015B
+:101210000995EBCFC901DF91CF910895FC0144837B
+:1012200055836683778308956F927F928F929F9202
+:10123000AF92BF92CF92DF92EF92FF920F931F93E4
+:10124000CF93DF933C016B014A0159017801FB0107
+:101250008081882391F1C0E0D0E000E010E026C05A
+:10126000F601E00FF11F2081332727FD309582170B
+:10127000930731F40F5F1F4F0815190518F01DC0B3
+:1012800000E010E0E114F10479F0F501EC0FFD1F2E
+:101290002081332727FD30958217930729F4219663
+:1012A000CE15DF0518F00BC0C0E0D0E0C3010E94EE
+:1012B0009A0818161906A4F202C081E001C080E065
+:1012C000DF91CF911F910F91FF90EF90DF90CF9022
+:1012D000BF90AF909F908F907F906F9008950F93E5
+:1012E0001F93CF93DF939A01FB0101900020E9F750
+:1012F0003197E61BF70BEA0109900020E9F78E0110
+:1013000001501040041B150BAF010E941409DF911E
+:10131000CF911F910F91089540E050E00E946F0916
+:1013200008950F931F9320E030E000E010E00E944A
+:1013300014091F910F9108959F92AF92BF92CF927F
+:10134000DF92EF92FF920F931F93CF93DF936C0185
+:10135000A62E0E94F208EC0197FD4EC0EE24FF2459
+:1013600087019924BB24A7FCB094CA15DB0531F191
+:10137000CD32D10509F1CE01C0978A309105F0F444
+:10138000C801B7012AE030E040E050E00E949B2411
+:101390007B018C01CE01AA2797FDA095BA2FE80EFC
+:1013A000F91E0A1F1B1F80ED9FEFAFEFBFEFE80E86
+:1013B000F91E0A1F1B1F02C099249394D601ED91B8
+:1013C000FC910680F781E02DC6010995C6010E94B7
+:1013D000C608EC01C0978A30910538F2CA15DB05C2
+:1013E00021F2992061F010950095F094E094E11CB1
+:1013F000F11C011D111D03C0EE24FF248701B7015C
+:10140000C801DF91CF911F910F91FF90EF90DF9076
+:10141000CF90BF90AF909F90089561E00E949C098B
+:1014200008956F927F928F929F92AF92BF92CF92C8
+:10143000DF92EF92FF920F931F93CF93DF93EC0114
+:10144000762E0E94F208D82E87FD7DC0BB24AA24E8
+:1014500090E8992E8FE3882EEE24FF248701CC2478
+:101460006624D714E1F18D2D8D32A1F18E32A9F1D0
+:1014700080538A30A0F5C801B7012AE030E040E08F
+:1014800050E00E949B247B018C018D2D992787FDC4
+:101490009095A92FB92FE80EF91E0A1F1B1F80ED8A
+:1014A0009FEFAFEFBFEFE80EF91E0A1F1B1FCC2006
+:1014B000B1F0A5019401652F7A2D832F982D2DEC85
+:1014C0003CEC4CEC5DE30E947F1FB62EA72E982EBD
+:1014D000892E05C06624639402C0CC24C394E8819D
+:1014E000F9810680F781E02DCE010995CE010E9499
+:1014F000C608D82E982F90539A3008F4B2CF8E3267
+:1015000009F4AFCF871509F4ACCF662041F01095F0
+:101510000095F094E094E11CF11C011D111DCC20FC
+:1015200069F0C801B7010E948721D501F4012B2F72
+:101530003A2D4F2F582D0E947F1F09C0C801B701B7
+:101540000E94872104C060E070E080E090E0DF91BD
+:10155000CF911F910F91FF90EF90DF90CF90BF90B0
+:10156000AF909F908F907F906F90089561E00E9460
+:10157000110A0895CF92DF92EF92FF920F931F937B
+:10158000CF93DF936C01EB017A0100E010E008C01B
+:10159000C6010E949A0897FD06C089930F5F1F4FEE
+:1015A0000E151F05A8F3C801DF91CF911F910F9170
+:1015B000FF90EF90DF90CF900895AF92BF92CF92BF
+:1015C000DF92EF92FF920F931F93CF93DF935C0113
+:1015D000EA01790121153105B1F000E010E0C62ED5
+:1015E000DD24C7FCD0940BC0C5010E949A0897FD6A
+:1015F0000CC08C159D0549F089930F5F1F4F0E1588
+:101600001F0590F302C000E010E0C801DF91CF9108
+:101610001F910F91FF90EF90DF90CF90BF90AF9010
+:1016200008952F923F924F925F926F927F928F9286
+:101630009F92AF92BF92DF92EF92FF920F931F9310
+:10164000DF93CF9300D000D0CDB7DEB71B01298345
+:101650003A834B835C839091AB01981721F09F3FB5
+:1016600009F0D8C104C0E8E6F0E0D4907DC08093D2
+:10167000AB01E8E6F0E0D4909D2D9F3F09F4CAC18C
+:10168000913031F1923009F449C0DD2009F06CC08D
+:1016900014BC15BC94B5926094BD95B5916095BD90
+:1016A000282F30E0F901E957FF4FE491F0E0EE0F09
+:1016B000FF1FED58FF4F459154914093AB0350935A
+:1016C000AC0325563F4FF90124912093AD034EC042
+:1016D0001092800010928100909181009860909308
+:1016E000810090918100916090938100282F30E0DB
+:1016F000F901E957FF4FE491F0E0EE0FFF1FED58BD
+:10170000FF4F459154914093B2035093B303255634
+:101710003F4FF90124912093B40328C01092B000E8
+:101720001092B1009091B00092609093B0009091AF
+:10173000B10091609093B100282F30E0F901E95792
+:10174000FF4FE491F0E0EE0FFF1FED58FF4F459182
+:1017500054914093B9035093BA0325563F4FF90172
+:1017600024912093BB0302C0D7FC54C161E00E94C6
+:101770009F18DD2021F0FD2DF23009F0C1C041019C
+:10178000AA24BB2460E079E08DE390E0A5019401F8
+:101790000E94CD2429013A0179018A010894E108C7
+:1017A000F108010911098FEFE816F104010511058F
+:1017B00009F008F498C060E271EA87E090E0A501C2
+:1017C00094010E94CD2479018A010894E108F1086E
+:1017D000010911099D2D9230C9F4AFEFEA16F10409
+:1017E0000105110509F008F485C068E478EE81E090
+:1017F00090E0A50194010E94CD2479018A0108940A
+:10180000E108F1080109110983E001C082E0BFEF9E
+:10181000EB16F1040105110509F008F465C064E256
+:1018200074EF80E090E0A50194010E94CD2479013D
+:101830008A010894E108F10801091109DD20E1F0AD
+:10184000ED2DE230D9F4FFEFEF16F104010511059B
+:1018500009F008F451C062E17AE780E090E0A50168
+:1018600094010E94CD2479018A010894E108F108CD
+:101870000109110985E003C083E001C084E09FEF06
+:10188000E916F1040105110579F170F169E07DE3D4
+:1018900080E090E0A50194010E94CD2479018A01A5
+:1018A0000894E108F10801091109DD2011F484E030
+:1018B00001C086E0AFEFEA16F10401051105A1F0C1
+:1018C00098F0830172019AE016950795F794E794D2
+:1018D0009A95D1F70894E108F10801091109DD2072
+:1018E00031F087E00AC081E0DD2011F006C085E01C
+:1018F00085BD3CC082E001C084E08093B10036C069
+:101900004101AA24BB2460E079E08DE390E0A501C9
+:1019100094010E94CD2479018A010894E108F1081C
+:1019200001091109B0E0EB16B0E0FB06B1E00B07CE
+:10193000B0E01B0788F064E274EF80E090E0A5015E
+:1019400094010E94CD2479018A010894E108F108EC
+:101950000109110993E001C091E0ED2DE13031F46E
+:1019600080918100887F892B8093810089819A8171
+:10197000AB81BC810097A105B10591F0B101660F63
+:10198000771F80E090E029813A814B815C810E9441
+:101990009B2428EE33E040E050E00E94CD2403C0B9
+:1019A0002FEF3FEFA9019D2D913099F0923019F161
+:1019B000DD2081F5E7BC2093A7033093A803409373
+:1019C000A9035093AA0380916E00826080936E00F9
+:1019D00021C0F0928900E09288002093AE033093FA
+:1019E000AF034093B0035093B10380916F008260C6
+:1019F00080936F000FC0E092B3002093B503309343
+:101A0000B6034093B7035093B8038091700082608F
+:101A1000809370000F900F900F900F90CF91DF91F7
+:101A20001F910F91FF90EF90DF90BF90AF909F902C
+:101A30008F907F906F905F904F903F902F90089580
+:101A4000813041F0813018F08230D1F409C0109219
+:101A50006E00089580916F008D7F80936F000895D0
+:101A6000809170008D7F8093700081E08093B00042
+:101A70008091B100887F84608093B1001092B300A0
+:101A800008951F93182F8091AB01811739F4E8E670
+:101A9000F0E084919FEF9093AB0101C08FEF0E9423
+:101AA000200D812F60E00E94C3181F9108951F929E
+:101AB0000F920FB60F9211242F933F934F935F9382
+:101AC0006F937F938F939F93AF93BF93EF93FF9306
+:101AD0008091B5039091B603A091B703B091B8037C
+:101AE0000097A105B10551F1E091B903F091BA0356
+:101AF00080819091BB03892780838091B503909169
+:101B0000B603A091B703B091B803181619061A06C8
+:101B10001B06C4F48091B5039091B603A091B7035E
+:101B2000B091B8030197A109B1098093B5039093CF
+:101B3000B603A093B703B093B80304C08091AB0180
+:101B40000E94410DFF91EF91BF91AF919F918F91B5
+:101B50007F916F915F914F913F912F910F900FBEA9
+:101B60000F901F9018958230E8F4E82FF0E0EE0F08
+:101B7000FF1FE454FC4F71836083813041F08091FA
+:101B800069008C7F842B80936900E89A0895809186
+:101B90006900440F551F440F551F837F842B80938A
+:101BA0006900E99A0895823068F4813011F0E8986C
+:101BB00001C0E998E82FF0E0EE0FFF1FE454FC4F5E
+:101BC0001182108208951F920F920FB60F92112466
+:101BD0002F933F934F935F936F937F938F939F9335
+:101BE000AF93BF93EF93FF938091BC039091BD039C
+:101BF000009729F0E091BC03F091BD030995FF9196
+:101C0000EF91BF91AF919F918F917F916F915F9174
+:101C10004F913F912F910F900FBE0F901F901895ED
+:101C20001F920F920FB60F9211242F933F934F9351
+:101C30005F936F937F938F939F93AF93BF93EF9334
+:101C4000FF938091BE039091BF03009729F0E0912C
+:101C5000BE03F091BF030995FF91EF91BF91AF9142
+:101C60009F918F917F916F915F914F913F912F91B4
+:101C70000F900FBE0F901F901895009729F0BC0190
+:101C800080E090E00E94DA260895EF92FF920F9391
+:101C90001F937B018C01611571058105910549F048
+:101CA0000E94D526A80197010E94EF249B01AC0158
+:101CB00003C020E030E0A901B901CA011F910F91D2
+:101CC000FF90EF900895EF92FF920F931F937B0187
+:101CD0008C01621773078407950764F4CA01B90180
+:101CE0006E197F09800B910B0E94450EE60EF71EC0
+:101CF000081F191FB701C8011F910F91FF90EF90A6
+:101D000008952F923F924F925F926F927F928F929F
+:101D10009F92AF92BF92CF92DF92EF92FF920F937A
+:101D20001F93DF93CF93CDB7DEB73B014C01190171
+:101D30002A016D897E898F89988D6A197B098C09A2
+:101D40009D09621A730A840A950AA40193010E94EC
+:101D50009B24E218F30804091509A80197010E94C1
+:101D6000EF242A0D3B1D4C1D5D1DB901CA01CF9109
+:101D7000DF911F910F91FF90EF90DF90CF90BF9078
+:101D8000AF909F908F907F906F905F904F903F901B
+:101D90002F900895089570E0382F20E0622B732B68
+:101DA000CB010895FC01808191810E94F525089561
+:101DB000CF93DF93EC0188819981009711F00E9405
+:101DC000F525198218821D821C821B821A82DF91DE
+:101DD000CF9108950F931F93CF93DF93EC018B0165
+:101DE0006F5F7F4F888199810E94E326009731F0D1
+:101DF000998388831B830A8381E001C080E0DF919F
+:101E0000CF911F910F910895CF93DF93EC018881BB
+:101E10009981009729F08A819B818617970778F42A
+:101E2000CE010E94EA0E882341F08C819D810097AB
+:101E300031F4E881F981108202C080E001C081E0C4
+:101E4000DF91CF910895EF92FF920F931F93CF935D
+:101E5000DF93EC017B018A01BA010E94040F882301
+:101E600021F4CE010E94D80E07C01D830C83888107
+:101E70009981B7010E942928CE01DF91CF911F914E
+:101E80000F91FF90EF900895CF93DF93FC011182A3
+:101E900010821382128215821482168261157105D6
+:101EA00059F0EB0109900020E9F7AE014150504094
+:101EB000461B570B0E94230FDF91CF910895EF929D
+:101EC000FF92CF93DF93EC01FB018617970761F038
+:101ED000608171816115710529F0448155810E94ED
+:101EE000230F02C00E94D80ECE01DF91CF91FF9048
+:101EF000EF900895FC0111821082138212821582E4
+:101F0000148216820E945F0F08950F931F938C0115
+:101F10006115710561F0DB010D900020E9F7AD015D
+:101F200041505040461B570B0E94230F02C00E9495
+:101F3000D80EC8011F910F910895EF92FF920F9351
+:101F40001F93DF93CF93CDB7DEB7A1970FB6F89469
+:101F5000DEBF0FBECDBF7C01CB01BA01F7011182FC
+:101F60001082138212821582148216828E010F5FF4
+:101F70001F4FA80130E00E94DC28C701B8010E9471
+:101F8000850FA1960FB6F894DEBF0FBECDBFCF91DF
+:101F9000DF911F910F91FF90EF900895EF92FF92C4
+:101FA0000F931F93DF93CF93CDB7DEB7A2970FB6F2
+:101FB000F894DEBF0FBECDBF7C01CB01BA01F701A3
+:101FC00011821082138212821582148216828E016F
+:101FD0000F5F1F4FA80130E00E949328C701B8018E
+:101FE0000E94850FA2960FB6F894DEBF0FBECDBF3C
+:101FF000CF91DF911F910F91FF90EF900895EF9295
+:10200000FF920F931F93DF93CF93CDB7DEB7619706
+:102010000FB6F894DEBF0FBECDBF7C01CB01F70138
+:1020200011821082138212821582148216828E010E
+:102030000F5F1F4FB80150E00E940129C701B8018E
+:102040000E94850F61960FB6F894DEBF0FBECDBF1C
+:10205000CF91DF911F910F91FF90EF900895EF9234
+:10206000FF920F931F93DF93CF93CDB7DEB76297A5
+:102070000FB6F894DEBF0FBECDBF7C01CB01F701D8
+:1020800011821082138212821582148216828E01AE
+:102090000F5F1F4FB80150E00E947228C701B801BE
+:1020A0000E94850F62960FB6F894DEBF0FBECDBFBB
+:1020B000CF91DF911F910F91FF90EF900895EF92D4
+:1020C000FF920F931F93DF93CF93CDB7DEB729977E
+:1020D0000FB6F894DEBF0FBECDBF7C01862FF7018F
+:1020E000118210821382128215821482168290E06D
+:1020F0008E010F5F1F4FB80150E00E940129C701F8
+:10210000B8010E94850F29960FB6F894DEBF0FBE66
+:10211000CDBFCF91DF911F910F91FF90EF90089568
+:10212000DF93CF9300D0CDB7DEB7FC0111821082D0
+:102130001382128215821482168269831A82BE016A
+:102140006F5F7F4F0E94850F0F900F90CF91DF91AF
+:102150000895EF92FF920F931F93CF93DF93EC01BB
+:102160007B010C811D8161157105B9F04115510587
+:1021700091F0040F151FB8010E94040F882369F025
+:10218000288139818C819D81820F931FB7010E9424
+:1021900029281D830C8381E001C080E0DF91CF916D
+:1021A0001F910F91FF90EF900895FB016081718165
+:1021B000448155810E94A91008956115710561F04F
+:1021C000DB010D900020E9F7AD0141505040461B66
+:1021D000570B0E94A910089580E00895DF93CF93D4
+:1021E00000D0CDB7DEB769831A82BE016F5F7F4F23
+:1021F00041E050E00E94A9100F900F90CF91DF9125
+:102200000895EF92FF920F931F93DF93CF9300D027
+:1022100000D0CDB7DEB77C01862F90E08E010F5F36
+:102220001F4FB8014AE050E00E947228F801019067
+:102230000020E9F7AF0141505040401B510BC7014E
+:10224000B8010E94A9100F900F900F900F90CF919E
+:10225000DF911F910F91FF90EF900895EF92FF9201
+:102260000F931F93DF93CF93CDB7DEB727970FB6AA
+:10227000F894DEBF0FBECDBF7C01CB018E010F5F96
+:102280001F4FB8014AE050E00E947228F801019007
+:102290000020E9F7AF0141505040401B510BC701EE
+:1022A000B8010E94A91027960FB6F894DEBF0FBEA2
+:1022B000CDBFCF91DF911F910F91FF90EF900895C7
+:1022C000EF92FF920F931F93DF93CF9300D000D034
+:1022D00000D0CDB7DEB77C01CB018E010F5F1F4F61
+:1022E000B8014AE050E00E940129F8010190002065
+:1022F000E9F7AF0141505040401B510BC701B801F5
+:102300000E94A91026960FB6F894DEBF0FBECDBF6F
+:10231000CF91DF911F910F91FF90EF900895EF9271
+:10232000FF920F931F93DF93CF93CDB7DEB72C9718
+:102330000FB6F894DEBF0FBECDBF7C01CB01BA0152
+:102340008E010F5F1F4FA8012AE030E00E94932802
+:10235000F80101900020E9F7AF0141505040401BC7
+:10236000510BC701B8010E94A9102C960FB6F89422
+:10237000DEBF0FBECDBFCF91DF911F910F91FF90B8
+:10238000EF900895EF92FF920F931F93DF93CF93F7
+:10239000CDB7DEB72B970FB6F894DEBF0FBECDBF1B
+:1023A0007C01CB01BA018E010F5F1F4FA8012AE00B
+:1023B00030E00E94DC28F80101900020E9F7AF012D
+:1023C00041505040401B510BC701B8010E94A91059
+:1023D0002B960FB6F894DEBF0FBECDBFCF91DF9125
+:1023E0001F910F91FF90EF9008950F931F938C0111
+:1023F000FB0160817181448155810E94A91088236D
+:1024000019F4C8010E94D80EC8011F910F910895B8
+:102410000F931F938C016115710569F0DB010D901D
+:102420000020E9F7AD0141505040461B570B0E9478
+:10243000A910882319F4C8010E94D80EC8011F9161
+:102440000F9108950F931F938C010E94EE10882323
+:1024500019F4C8010E94D80EC8011F910F91089568
+:102460000F931F938C010E940111882319F4C80156
+:102470000E94D80EC8011F910F9108950F931F93CA
+:102480008C010E942E11882319F4C8010E94D80ED5
+:10249000C8011F910F9108950F931F938C010E9403
+:1024A0006011882319F4C8010E94D80EC8011F9139
+:1024B0000F9108950F931F938C010E948F11882311
+:1024C00019F4C8010E94D80EC8011F910F910895F8
+:1024D0000F931F938C010E94C211882319F4C80125
+:1024E0000E94D80EC8011F910F910895CF93DF93DA
+:1024F000FC01DB0180819181009731F06D917C912D
+:10250000119761157105E9F4CD91DC911197209730
+:1025100069F014962D913C9115972115310531F0F4
+:10252000288130E0309521953F4F12C0009771F01F
+:10253000248135812115310549F0FC01208130E0ED
+:1025400007C00E942028282F392F02C020E030E049
+:10255000C901DF91CF910895FC0144815581FB01B0
+:10256000248135814217530729F40E94761221E015
+:10257000009709F020E0822F0895FC018481958165
+:10258000009741F46115710519F081E0FB0109C064
+:1025900081E008950190F081E02D6115710531F41D
+:1025A00081E09081992359F080E00895CF010E9445
+:1025B00020289C0181E02115310509F080E0089573
+:1025C0000E947612892F881F8827881F08950E94ED
+:1025D000761221E0181619060CF020E0822F0895DB
+:1025E0000E94761221E0181619060CF420E0822FC2
+:1025F00008950E947612892F8095881F8827881F4A
+:102600000895EF92FF920F931F93CF93DF93FC01F6
+:10261000DB018617970729F18481958114962D9106
+:102620003C91159782179307F1F40097D1F0008140
+:102630001181CD91DC9111970FC0992787FD90955D
+:102640000E94DD277C018991992787FD90950E9442
+:10265000DD27E816F90639F4F80181918F01882306
+:1026600061F781E001C080E0DF91CF911F910F9170
+:10267000FF90EF900895FC01DB01CA0114964D9183
+:102680005C91159724813581241B350B2817390758
+:10269000A0F0208131812115310579F06D917C9177
+:1026A00011976115710559F0820F931F0E94302810
+:1026B0009C0181E02115310519F080E0089580E04A
+:1026C0000895FC0144815581FB0124813581421725
+:1026D000530728F040E050E00E943B13089580E04B
+:1026E0000895FC01DB018481958114964D915C91E4
+:1026F000159784179507B0F0208131812115310598
+:1027000089F06D917C9111976115710569F0841BB9
+:10271000950B820F931F0E9420289C0181E02115B8
+:10272000310519F080E0089580E00895FC0184816E
+:1027300095816817790730F40190F081E02DE60F5C
+:10274000F71F40830895FC018481958168177907FC
+:1027500020F480819181009729F41092C00360ECED
+:1027600073E002C0680F791FCB010895FC018481DA
+:1027700095816817790748F480819181009739F035
+:10278000680F791FFB018081089580E0089580E043
+:1027900008950E94B61308950F931F93CF93DF936C
+:1027A000FC018B0141155105F1F061157105D9F05E
+:1027B000C481D5812C173D0718F0FB01108213C08E
+:1027C00041505040C21BD30B4C175D0708F4EA017F
+:1027D00060817181620F731FC801AE010E943E28A3
+:1027E000C00FD11F1882DF91CF911F910F910895D3
+:1027F000CF93DF93FC01CA0124813581421753072F
+:1028000078F4C081D181772767FD70958C0F9D1F6B
+:102810000E941528009721F09C012C1B3D0B02C043
+:102820002FEF3FEFC901DF91CF91089540E050E0D5
+:102830000E94F8130895CF93DF93FC01CA0124810D
+:1028400035814217530778F4C081D181FB01608143
+:1028500071818C0F9D1F0E945828009721F09C01C8
+:102860002C1B3D0B02C02FEF3FEFC901DF91CF9131
+:10287000089540E050E00E941B140895DF92EF920B
+:10288000FF920F931F93CF93DF93EC018C819D8177
+:1028900048175907F8F47A010894E11CF11CE88103
+:1028A000F981EE0DFF1DD0801082088119817727F4
+:1028B00067FD7095C8010E944D280E0D1F1DF8017F
+:1028C000D082009739F028813981AC01421B530B2B
+:1028D0009A0102C02FEF3FEFC901DF91CF911F9105
+:1028E0000F91FF90EF90DF900895FC014481558196
+:1028F000415050400E943E140895AF92BF92CF9233
+:10290000DF92EF92FF920F931F93CF93DF93FC011F
+:102910006B018A01DB0114962D913C9115972115CD
+:10292000310551F184819581009731F18217930728
+:1029300018F14817590718F08C0101501040E08039
+:10294000F180C701CFEFDFEF5701A00EB11E10C01D
+:10295000F601608171810E945828009779F09C01EE
+:102960002E193F090217130708F49E010196E90189
+:10297000A816B90668F702C0CFEFDFEFCE01DF91EE
+:10298000CF911F910F91FF90EF90DF90CF90BF906C
+:10299000AF900895FC0144815581FB01248135816C
+:1029A000421B530B0E947D140895AF92BF92CF92A9
+:1029B000DF92EF92FF920F931F93CF93DF93F82E46
+:1029C000E92E6B018A01E9012417350748F4342FF9
+:1029D000212F8E01C901A92EE5015E01B22EE5016C
+:1029E0008F2D9E2D6CEA71E00E94440FD601149643
+:1029F0008D919C91159780179107D8F08C179D07A2
+:102A000008F4EC01D601ED91FC911197EC0FFD1F3C
+:102A1000B08010826D917C91600F711F8F2D9E2D63
+:102A20000E94850FD601ED91FC911197EC0FFD1FCF
+:102A3000B0828F2D9E2DDF91CF911F910F91FF902E
+:102A4000EF90DF90CF90BF90AF900895CF93DF933A
+:102A5000EC01FB01248135810E94D514CE01DF9168
+:102A6000CF910895DC01ED91FC911197309729F4F5
+:102A70000895861709F44083319680818823C9F729
+:102A800008952F923F924F925F926F927F928F9212
+:102A90009F92AF92BF92CF92DF92EF92FF920F93ED
+:102AA0001F93CF93DF937C012B016A01DC01149605
+:102AB0006D907C9015976114710409F4D9C0FB01E5
+:102AC000848095808114910409F4D2C0DA011496AF
+:102AD000AD90BC901597A818B908FC010081118130
+:102AE000A114B104F1F413C0D6016C9111967C913C
+:102AF000119714964D915C911597CE010E94FA277B
+:102B0000D60114960D911C9115970C0F1D1FF20103
+:102B100060817181C8010E945828EC01009721F75B
+:102B2000A7C0B7FC02C0E30142C048012DC0E301C9
+:102B3000C01BD10BC401B801AE010E94FA27C80D19
+:102B4000D91DD6016C9111967C91119714964D91D7
+:102B50005C911597CE010E94FA27D60114968D90AC
+:102B60009C9015978C0E9D1EF20104811581060D17
+:102B7000171DD70114968D919C9115978A0D9B1D59
+:102B800015969C938E931497F20160817181C80110
+:102B90000E9458283C01009751F6C401B8010E94D8
+:102BA000292866C08C01080D191DCA0DDB1DD20134
+:102BB0006D917C91C8010E945828009799F7C6151D
+:102BC000D70509F455C0F701828193818C179D07C1
+:102BD00008F045C0C701BE010E94EA0E882309F42F
+:102BE00047C03DC0C701B201A9010E947D14EC019C
+:102BF00097FD3EC0D7016D917C911197F2018481C0
+:102C000095818C0F9D1F680F791F14964D915C91D3
+:102C10001597481B590BCB018A0D9B1D0E94032859
+:102C2000D70114968D919C9115978A0D9B1D159631
+:102C30009C938E931497ED91FC911197E80FF91FD7
+:102C400010822D913C912C0F3D1FF6016081718106
+:102C500044815581C9010E94FA279E0105C0D70110
+:102C600014962D913C9115972150304037FFBACFE3
+:102C7000DF91CF911F910F91FF90EF90DF90CF9058
+:102C8000BF90AF909F908F907F906F905F904F908C
+:102C90003F902F900895CF93DF93FC01C081D181A5
+:102CA000209739F409C0992787FD90950E94DD2768
+:102CB000899388818823B9F7DF91CF910895CF93C5
+:102CC000DF93FC01C081D181209739F409C0992795
+:102CD00087FD90950E94E527899388818823B9F71D
+:102CE000DF91CF910895AF92BF92CF92DF92EF9292
+:102CF000FF920F931F93CF93DF936C01DC01ED9054
+:102D0000FC901197E114F10409F443C01496AD90BE
+:102D1000BC901597A114B104E1F18701E801888105
+:102D20000F5F1F4F992787FD90950E94D527009729
+:102D3000A9F78501015010400E0D1F1DF80180817B
+:102D4000992787FD90950E94D527009731F00C17A1
+:102D50001D0718F001501040F1CF0F5F1F4F0C1BE3
+:102D60001D0BD60115961C930E931497EC16FD06B9
+:102D700028F4C701BE01A8010E94FA27D601ED91EF
+:102D8000FC91119714968D919C911597E80FF91F5E
+:102D90001082DF91CF911F910F91FF90EF90DF9004
+:102DA000CF90BF90AF900895FC01808191810097F2
+:102DB00029F00E94AE279B01AC0103C020E030E067
+:102DC000A901B901CA0108950E945B2508950E94D6
+:102DD000F525089521E030E0FC018081882311F081
+:102DE00020E030E0C901089521E0FC01208308952E
+:102DF000089508951F920F920FB60F9211242F93EA
+:102E00003F934F935F936F937F938F939F93AF9372
+:102E1000BF932091C5033091C6034091C7035091E1
+:102E2000C8037091C903DA01C9010296A11DB11D41
+:102E3000672F6A5F6D3730F06D57DA01C90103966D
+:102E4000A11DB11D6093C9038093C5039093C60370
+:102E5000A093C703B093C8038091C1039091C203AC
+:102E6000A091C303B091C4030196A11DB11D80932D
+:102E7000C1039093C203A093C303B093C403BF9153
+:102E8000AF919F918F917F916F915F914F913F9102
+:102E90002F910F900FBE0F901F9018958FB7F89439
+:102EA0002091C5033091C6034091C7035091C803D8
+:102EB0008FBFB901CA0108959FB7F8942091C1034B
+:102EC0003091C2034091C3035091C40386B5A89BBF
+:102ED00006C08F3F21F02F5F3F4F4F4F5F4F9FBF87
+:102EE000542F432F322F2227280F311D411D511DF2
+:102EF00083E0220F331F441F551F8A95D1F7B90174
+:102F0000CA010895EF92FF920F931F93CF93DF931F
+:102F10007B018C010E945C17EB010FC00E945C17C3
+:102F20006C1B7D0B83E0683E780738F00894E1085D
+:102F3000F10801091109C851DC4FE114F104010540
+:102F4000110561F7DF91CF911F910F91FF90EF90E5
+:102F50000895019739F0019729F0880F991F01977B
+:102F60000197F1F70895789484B5826084BD84B5A3
+:102F7000816084BD85B5826085BD85B5816085BD74
+:102F8000EEE6F0E0808181608083E1E8F0E010828D
+:102F9000808182608083808181608083E0E8F0E0CE
+:102FA000808181608083E1EBF0E0808184608083B8
+:102FB000E0EBF0E0808181608083EAE7F0E08081EF
+:102FC000846080838081826080838081816080834F
+:102FD0008081806880831092C10008958093AD0144
+:102FE00008958E3008F08E5087709091AD019295C3
+:102FF000990F990F907C982B90937C0080917A0088
+:10300000806480937A0080917A0086FDFCCF2091C5
+:10301000780030917900932F80E030E0282B392B15
+:10302000C90108951F93CF93DF93182FEB0161E03F
+:103030000E949F18209709F44AC0CF3FD10509F498
+:1030400049C0E12FF0E0E155FF4FE491E330C1F0DA
+:10305000E43028F4E13051F0E230B1F50CC0E63054
+:1030600019F1E73049F1E43079F514C084B580688E
+:1030700084BDC7BD33C084B5806284BDC8BD2EC0C9
+:1030800080918000806880938000D0938900C093F5
+:10309000880024C080918000806280938000D0935B
+:1030A0008B00C0938A001AC08091B0008068809322
+:1030B000B000C093B30012C08091B00080628093D2
+:1030C000B000C093B4000AC0C038D1051CF4812FF1
+:1030D00060E002C0812F61E00E94C318DF91CF91B0
+:1030E0001F910895833071F0843028F48130A1F06D
+:1030F000823021F514C08630B1F08730D1F08430B1
+:10310000E9F404C0809180008F7703C08091800033
+:103110008F7D80938000089584B58F7702C084B539
+:103120008F7D84BD08958091B0008F778093B0002B
+:1031300008958091B0008F7D8093B000089590E055
+:10314000FC01E556FF4F2491FC01E957FF4FE49144
+:10315000EE23C1F0F0E0EE0FFF1FE759FF4F85911E
+:103160009491DC01662341F49FB7F8948C912095EB
+:1031700082238C939FBF08959FB7F8948C91822BE4
+:103180008C939FBF08950F931F93DF93CF930F925C
+:10319000CDB7DEB7282F30E0F901E155FF4F84911C
+:1031A000F901E556FF4F149129573F4FF90104915A
+:1031B0000023D9F0882321F069830E947218698165
+:1031C000E02FF0E0EE0FFF1FED58FF4F8591949137
+:1031D000DC019FB7F894662321F48C91109581232C
+:1031E00002C08C91812B8C939FBF0F90CF91DF9168
+:1031F0001F910F9108950F931F93282F30E0F9012D
+:10320000E155FF4F8491F901E556FF4F049129578D
+:103210003F4FF9011491112391F0882311F00E947E
+:103220007218E12FF0E0EE0FFF1FE358FF4F85917A
+:103230009491DC018C91802321E030E011F420E0B6
+:1032400030E0C9011F910F9108958F929F92AF9224
+:10325000BF92CF92DF92EF92FF920F931F9390E075
+:10326000FC01E556FF4F949089579F4FFC01E49075
+:10327000662311F4882401C0892CCA01B90120E415
+:103280003FE140E050E00E949B2420E83EE340E024
+:1032900050E00E94CD2459016A0180E090E0DC01F9
+:1032A0006E2D70E0FB01EE0FFF1FE358FF4F2591DD
+:1032B000349109C08A159B05AC05BD0509F44DC0C4
+:1032C0000196A11DB11DF90140814921481591F3D5
+:1032D0000AC08A159B05AC05BD0509F43EC00196E0
+:1032E000A11DB11D07C0660F771F63587F4FFB01FB
+:1032F00025913491F90140814921481551F720E089
+:1033000030E0A901FB01659174910FC079018A0138
+:10331000E80EF91E0A1F1B1FEA14FB040C051D050D
+:10332000E1F02F5F3F4F4F4F5F4FFB01E081E921FD
+:10333000E81561F3CA01B90128E032E540E050E048
+:103340000E949B246058714C8F4F9F4F20E43FE1B7
+:1033500040E050E00E94CD2403C020E030E0A9010D
+:10336000B901CA011F910F91FF90EF90DF90CF90AC
+:10337000BF90AF909F908F900895CF92DF92EF9281
+:10338000FF920F931F93CF93DF93E82EF62EC42E58
+:10339000C7E0D0E0DD2407E010E08F2D61E00E945F
+:1033A000C318CC2071F48E2D0E94FB1898012C1BA1
+:1033B0003D0BAC0102C0440F551F2A95E2F79A015C
+:1033C0000AC08E2D0E94FB189C010C2E02C0220FF9
+:1033D000331F0A94E2F7D22A8F2D60E00E94C318AF
+:1033E00021975FEFCF3FD507C1F68D2DDF91CF91AC
+:1033F0001F910F91FF90EF90DF90CF900895BF92B3
+:10340000CF92DF92EF92FF920F931F93CF93DF93B0
+:10341000C82ED62EB42EC7E0D0E0022F10E087E0F1
+:10342000E82EF12CBB2059F497012C1B3D0BC80151
+:1034300002C0959587952A95E2F79C0107C09801EF
+:103440000C2E02C0359527950A94E2F7622F617021
+:103450008C2D0E94C3188D2D61E00E94C3188D2D04
+:1034600060E00E94C31821979FEFCF3FD907D1F6A4
+:10347000DF91CF911F910F91FF90EF90DF90CF9050
+:10348000BF9008952091EB0330E08091EA03281B60
+:103490003109C90108958091EA039091EB038917DE
+:1034A00050F4E82FF0E0E653FC4F208130E08F5FCE
+:1034B0008093EA0302C02FEF3FEFC9010895E09126
+:1034C000EA038091EB03E81730F4F0E0E653FC4F99
+:1034D000208130E002C02FEF3FEFC9010895089529
+:1034E000CF93DF939C01CB01E0911204F091130480
+:1034F0003097D9F05091EA034091EB035417A8F0AC
+:1035000060E009C0DA01A653BC4F420F531FEA0125
+:1035100048814C936F5F462F50E04817590794F34A
+:103520001092EA038093EB030995DF91CF91089500
+:10353000E0911004F0911104309729F010920D04DD
+:1035400010920E0409950895CF92DF92EF92FF92A8
+:103550000F931F93CF93DF936C01CB01EA0120916E
+:103560000F042223B1F0E62EF92E00E010E00DC08A
+:10357000D7016D917D01D601ED91FC910190F08113
+:10358000E02DC60109950F5F1F4F0C171D0780F333
+:1035900003C0642F0E94191CCE01DF91CF911F91AF
+:1035A0000F91FF90EF90DF90CF900895DF93CF932E
+:1035B0000F92CDB7DEB7698320910F042223D1F09B
+:1035C00020910E04203240F021E030E0FC013383F2
+:1035D000228320E030E015C080910D04E82FF0E058
+:1035E000E351FC4F998190838F5F80930D0480930A
+:1035F0000E0405C0CE01019661E00E94191C21E075
+:1036000030E0C9010F90CF91DF910895FC01138242
+:10361000128228EE33E040E050E024833583468375
+:10362000578382EB91E09183808308951092EA039F
+:103630001092EB0310920D0410920E040E94861B50
+:103640000895CF93DF93EC01862F0E949F1B88E99A
+:103650009AE10E94381C80E79AE10E94331CCE0157
+:103660000E94161BDF91CF9108950E94211B08959F
+:10367000862F413208F040E26AEC73E00E94A31BFF
+:103680001092EA038093EB0308950E94381B08957B
+:1036900081E080930F046093EC0310920D0410926C
+:1036A0000E0408950E94481B08958091EC036DEE6E
+:1036B00073E040910E0421E00E94D91B10920D048A
+:1036C00010920E0410920F040895709313046093E7
+:1036D00012040895709311046093100408951092D9
+:1036E00017041092160488EE93E0A0E0B0E08093F7
+:1036F000180490931904A0931A04B0931B0482EB4E
+:1037000091E090931504809314040895109244045A
+:1037100082E161E00E94C31883E161E00E94C31866
+:10372000E9EBF0E080818E7F808380818D7F8083D4
+:1037300080E28093B80085E48093BC000895880FF0
+:103740008093BA000895413288F5909144049923FA
+:10375000E1F791E0909344049FEF9093430410921B
+:103760002104942F915090932204880F81608093BC
+:10377000200485EE8093BC00809144048130E1F305
+:1037800080912104841710F440912104E3E2F4E0D5
+:10379000262F372FD901242F30E02E0F3F1F02C0D4
+:1037A00081918D93E217F307D9F701C040E0842F90
+:1037B00008954132B0F5909144049923E1F792E0E5
+:1037C000909344049FEF90934304109221044093FC
+:1037D0002204DB01E3E2F4E050E04E0F5F1F02C081
+:1037E0009D919193E417F507D9F790E0880F991F01
+:1037F0008093200485EE8093BC00222321F08091E9
+:1038000044048230E1F3809143048F3F61F0809162
+:103810004304803251F080914304803341F483E0CB
+:10382000089581E0089580E0089582E0089584E09D
+:1038300008956132A0F420914404243091F46093FF
+:103840006904DC01ECE6F4E070E06E0F7F1F02C05B
+:103850008D918193E617F707D9F780E0089581E00D
+:10386000089582E008959093670480936604089514
+:1038700090936B0480936A040895882311F085EC7B
+:1038800001C085E88093BC00089585ED8093BC005D
+:103890008091BC0084FDFCCF10924404089585EC17
+:1038A0008093BC001092440408951F920F920FB6AB
+:1038B0000F9211242F933F934F935F936F937F93B6
+:1038C0008F939F93AF93BF93EF93FF938091B90032
+:1038D00090E0887F90708036910509F4C2C08136EF
+:1038E0009105E4F58832910509F47EC0893291058D
+:1038F000C4F48031910509F472C08131910544F41A
+:10390000009709F413C18830910509F013C167C00D
+:103910008831910509F468C08032910509F00AC127
+:1039200078C08034910509F48AC0813491054CF443
+:103930008033910509F46FC08833910509F0FAC00E
+:103940006EC08035910509F46EC08835910509F483
+:103950007BC08834910509F0EDC0EAC08839910533
+:1039600009F4DAC089399105ECF48837910509F436
+:1039700078C0893791054CF48836910509F471C0F7
+:103980008037910509F0D6C06CC08838910509F4DC
+:10399000C3C08039910509F46AC08038910509F0E7
+:1039A000C9C065C0803B910509F48EC0813B91057B
+:1039B0004CF4803A910509F46CC0883A910509F0FD
+:1039C000B9C082C0803C910509F4AAC0883C910529
+:1039D00009F4A6C0883B910509F0ACC08AC080916B
+:1039E00020048093BB0013C0909121048091220495
+:1039F000981708F09DC080912104E82FF0E0ED5D5C
+:103A0000FB4F90819093BB008F5F8093210481E0F6
+:103A100084C080E201C080E38093430489C088E3CE
+:103A2000809343044EC0809121049091BB00E82F05
+:103A3000F0E0ED5DFB4F90838F5F809321049091C8
+:103A400021048091220465C0809121049091BB00E3
+:103A5000E82FF0E0ED5DFB4F90838F5F80932104B2
+:103A600067C083E08093440410924504D0CF8091D6
+:103A70004504803208F050C0809145049091BB000D
+:103A8000E82FF0E0EA5BFB4F90838F5F8093450463
+:103A9000BECF80914504803230F4E0914504F0E0DF
+:103AA000EA5BFB4F10820E94451C60914504E09147
+:103AB0006604F091670486E494E070E00995109242
+:103AC00045040E944F1C36C084E080934404109249
+:103AD000680410926904E0916A04F0916B040995FE
+:103AE00080916904882329F481E08093690410920D
+:103AF0006C0480916804E82FF0E0E459FB4F90815A
+:103B00009093BB008F5F80936804909168048091CC
+:103B10006904981708F47BCF80E00E943D1C0AC01E
+:103B200081E00E943D1C1092440404C010924304A2
+:103B30000E94451CFF91EF91BF91AF919F918F9192
+:103B40007F916F915F914F913F912F910F900FBE99
+:103B50000F901F901895EF92FF920F931F937B0188
+:103B60008C0120E030E040E05FE40E94272187FDE7
+:103B700011C0C801B70120E030E040E05FE40E94DE
+:103B80004E1F0E94E7219B01AC0120503040404075
+:103B9000504806C0C801B7010E94E7219B01AC0153
+:103BA000B901CA011F910F91FF90EF900895A0E015
+:103BB000B0E0EDEDFDE10C942225FC01EA018081ED
+:103BC000823008F438C1DB019C91923008F430C196
+:103BD000843059F4943009F02EC1918111968C9162
+:103BE0001197981709F021C126C1943009F420C11A
+:103BF0009230B1F4823009F01EC1CA01AF0128E051
+:103C0000DA010D90AD01DC010D92CD012150C1F71B
+:103C1000DB0111968C9111979181892389830AC1C7
+:103C2000823009F405C1C280D380DB0112966D9009
+:103C30007C90139724813581468157811496ED90AD
+:103C4000FD900D911C911797C601861997095C018B
+:103C500097FF04C0AA24BB24A81AB90AB0E2AB1685
+:103C6000B1040CF061C0181619066CF53701480153
+:103C70000A2C04C096948794779467940A94D2F798
+:103C800081E090E0A0E0B0E00A2C04C0880F991F0A
+:103C9000AA1FBB1F0A94D2F70197A109B1098E216F
+:103CA0009F21A023B123EE24FF248701E3940097F2
+:103CB000A105B10519F4EE24FF248701E628F728B1
+:103CC000082919293CC00097D1F1CA0CDB1C390125
+:103CD0004A010A2C04C096948794779467940A94B6
+:103CE000D2F781E090E0A0E0B0E00A2C04C0880F99
+:103CF000991FAA1FBB1F0A94D2F70197A109B10906
+:103D000082239323A423B52321E030E040E050E058
+:103D10000097A105B10519F420E030E0A90126299A
+:103D20003729482959290BC06C147D0424F4EE244A
+:103D3000FF24870104C0630120E030E0A9018181F4
+:103D4000FB019181891709F445C0882349F0D80106
+:103D5000C701821B930BA40BB50B9C01AD0104C0E2
+:103D60002E193F09400B510B57FD04C01982DB820D
+:103D7000CA820BC081E08983DB82CA82509540955C
+:103D8000309521953F4F4F4F5F4F2C833D834E839E
+:103D90005F830DC0880F991FAA1FBB1F8C839D8353
+:103DA000AE83BF838A819B8101979B838A838C81A9
+:103DB0009D81AE81BF819C01AD01215030404040CA
+:103DC00050402F3FEFEF3E07EFEF4E07EFE35E0768
+:103DD00008F30BC08983DB82CA822E0D3F1D401F72
+:103DE000511F2C833D834E835F8383E088832C8126
+:103DF0003D814E815F8157FF1DC0DA01C90181708D
+:103E00009070A070B0705695479537952795822B86
+:103E1000932BA42BB52B8C839D83AE83BF838A8188
+:103E20009B8101969B838A8305C0EEECF1E003C081
+:103E3000FB0101C0FE01CF01CDB7DEB7EEE00C946F
+:103E40003E25A0E2B0E0E7E2FFE10C942A25698379
+:103E50007A838B839C832D833E834F83588789E0AD
+:103E6000E82EF12CEC0EFD1ECE010196B7010E944A
+:103E7000D9238E010F5E1F4FCE010596B8010E9417
+:103E8000D923C701B801AE01475E5F4F0E94D71D1D
+:103E90000E940B23A096E6E00C944625A0E2B0E039
+:103EA000E4E5FFE10C942A2569837A838B839C8364
+:103EB0002D833E834F8358878E01075F1F4FCE01AE
+:103EC0000196B8010E94D92391E1E92EF12CEC0E64
+:103ED000FD1ECE010596B7010E94D9238A8991E083
+:103EE00089278A8BC801B701AE01475E5F4F0E94E8
+:103EF000D71D0E940B23A096E6E00C944625A0E275
+:103F0000B0E0E5E8FFE10C941E2569837A838B839A
+:103F10009C832D833E834F835887CE010196BE013B
+:103F2000675F7F4F0E94D923CE010596BE016F5E69
+:103F30007F4F0E94D9239985923078F08989823009
+:103F4000C0F0943019F4823041F4CBC0843019F4BD
+:103F5000923079F4C6C0923051F481E02A859A8972
+:103F6000291709F480E08A87CE010996BCC0823007
+:103F700051F481E02A859A89291709F480E08A8B17
+:103F8000CE014196B0C06D847E848F849888ED8880
+:103F9000FE880F89188DE0E2F0E080E090E0DC011F
+:103FA000AA24BB24650120E030E0A901B3016170BF
+:103FB000707061157105D1F02E0D3F1D401F511F0E
+:103FC00015012601280E391E4A1E5B1E81E090E075
+:103FD000A0E0B0E02E153F054007510718F080E043
+:103FE00090E0DC01820D931DA41DB51DAA0CBB1C25
+:103FF000CC1CDD1C17FF09C061E0262E312C412CA2
+:10400000512CA228B328C428D528319749F0EE0CAA
+:10401000FF1C001F111F9694879477946794C6CF56
+:104020006B897C89EB85FC856E0F7F1F6E5F7F4FF0
+:104030007C8F6B8F61E0EA857A89E71709F460E08D
+:104040006A8F6B8D7C8D10C0FC01E170F070309731
+:1040500029F056954795379527955068B695A795B9
+:10406000979587956F5F7F4FB7FDEECF0CC0880F98
+:10407000991FAA1FBB1F57FD8160220F331F441FCA
+:10408000551F615070408030E0E09E07E0E0AE07D1
+:10409000E0E4BE0760F36B8F7C8F6FE7E62EF12CB8
+:1040A000012D112DE822F9220A231B2360E4E616D4
+:1040B000F1040105110561F487FD0AC021153105E0
+:1040C0004105510529F0805C9F4FAF4FBF4F80786D
+:1040D0008D8F9E8FAF8FB8A383E0898FCE014996D5
+:1040E00002C08EEC91E00E940B23A096E2E10C94BA
+:1040F0003A25A8E1B0E0EFE7F0E20C9426256983C9
+:104100007A838B839C832D833E834F8358878E01D4
+:10411000075F1F4FCE010196B8010E94D92381E1AC
+:10412000E82EF12CEC0EFD1ECE010596B7010E9483
+:10413000D9239985923008F483C08989823008F4A4
+:104140007BC02A853A8923272A87943011F0923040
+:1041500021F4981709F06CC071C0843039F41D86C1
+:104160001E861F86188A1C861B866AC0823019F438
+:1041700084E0898765C08B859C852B893C89821B5F
+:10418000930B9C878B872D853E854F855889ED88BD
+:10419000FE880F89188D2E153F054007510738F40A
+:1041A000220F331F441F551F01979C878B876FE198
+:1041B00070E0A12CB12CC12CA0E4DA2E80E090E0BC
+:1041C000DC012E153F054007510740F08A299B2945
+:1041D000AC29BD292E193F09400B510BD694C79429
+:1041E000B794A794220F331F441F551F615070408E
+:1041F00041F76FE7E62EF12C012D112DE822F9226F
+:104200000A231B2360E4E616F1040105110561F49D
+:1042100087FD0AC0211531054105510529F0805C53
+:104220009F4FAF4FBF4F80788D879E87AF87B88BEA
+:104230008E01075F1F4F04C0870102C00EEC11E022
+:10424000C8010E940B236896EAE00C944225A8E17D
+:10425000B0E0EDE2F1E20C942A2569837A838B8346
+:104260009C832D833E834F8358878E01075F1F4FAA
+:10427000CE010196B8010E94D92381E1E82EF12CEC
+:10428000EC0EFD1ECE010596B7010E94D92389854B
+:10429000823040F08989823028F0C801B7010E943D
+:1042A000422401C08FEF6896E6E00C944625A8E111
+:1042B000B0E0EDE5F1E20C942A2569837A838B83E3
+:1042C0009C832D833E834F8358878E01075F1F4F4A
+:1042D000CE010196B8010E94D92381E1E82EF12C8C
+:1042E000EC0EFD1ECE010596B7010E94D9238985EB
+:1042F000823040F08989823028F0C801B7010E94DD
+:10430000422401C081E06896E6E00C944625A8E0CE
+:10431000B0E0EDE8F1E20C942A257B018C0183E00A
+:104320008983D801C7018827B7FD83959927AA27D4
+:10433000BB27282F8A83E114F1040105110519F424
+:1043400082E0898337C08EE190E09C838B832223B7
+:1043500089F080E0E81680E0F80680E0080780E851
+:10436000180769F110950095F094E094E11CF11C98
+:10437000011D111DED82FE820F831887C801B70150
+:104380000E94B1229C01215030401216130694F471
+:10439000022E04C0EE0CFF1C001F111F0A94D2F75E
+:1043A000ED82FE820F8318878EE190E0821B930BD3
+:1043B0009C838B83CE0101960E940B2304C060E096
+:1043C00070E080E09FEC2896E6E00C944625ACE097
+:1043D000B0E0EDEEF1E20C942E2569837A838B83B5
+:1043E0009C83CE010196BE016B5F7F4F0E94D92353
+:1043F0008D81823081F1823070F1843021F48E81A0
+:10440000882369F10AC02F81388537FD24C06E8169
+:104410002F3131053CF0662311F120E030E040E01F
+:1044200050E821C08EE190E0821B930B29853A85EC
+:104430004B855C8504C056954795379527958A9599
+:10444000D2F7662381F050954095309521953F4FE6
+:104450004F4F5F4F08C020E030E0A90104C02FEFAC
+:104460003FEF4FEF5FE7B901CA012C96E2E00C94F1
+:104470004A25A8E0B0E0EFE3F2E20C9428257B01A6
+:104480008C011A82611571058105910519F482E08C
+:1044900089835FC083E089838EE1C82ED12CDC82C2
+:1044A000CB82ED82FE820F831887C801B7010E947C
+:1044B000B122FC013197F7FF3AC0AA27BB27AE1BF8
+:1044C000BF0B21E030E040E050E00A2E04C0220F94
+:1044D000331F441F551F0A94D2F7215030404040EB
+:1044E00050402E213F214023512361E070E080E0C5
+:1044F00090E0211531054105510519F460E070E0A7
+:10450000CB0104C016950795F794E794AA95D2F7C6
+:10451000E62AF72A082B192BED82FE820F831887D3
+:104520008EE190E08E1B9F0B9C838B8312C0309793
+:1045300081F00E2E04C0EE0CFF1C001F111F0A9408
+:10454000D2F7ED82FE820F831887CE1ADF0ADC8253
+:10455000CB82CE0101960E940B232896E8E00C94B2
+:104560004425AF92BF92CF92DF92EF92FF920F93CA
+:104570001F937B018C0180E0E81680E0F80681E063
+:10458000080780E0180758F4EFEFEE16F104010574
+:10459000110509F090F480E090E0DC0117C0F0E034
+:1045A000EF16F0E0FF06F0E00F07F1E01F0750F410
+:1045B00080E190E0A0E0B0E009C088E090E0A0E0F9
+:1045C000B0E004C088E190E0A0E0B0E020E230E09C
+:1045D00040E050E0281B390B4A0B5B0B5701680188
+:1045E00004C0D694C794B794A7948A95D2F7D601FD
+:1045F000C5018A529E4FFC018081281B3109410967
+:104600005109C9011F910F91FF90EF90DF90CF905A
+:10461000BF90AF900895EF92FF920F931F93CF93A7
+:10462000DF93FC012481358146815781618180813E
+:10463000823020F44061EFEFF0E0A3C0843009F451
+:104640009BC0823009F492C0211531054105510506
+:1046500009F48FC00280F381E02D8FEFE238F80774
+:104660000CF05AC0C2E8DFEFCE1BDF0BCA31D10518
+:104670006CF579018A010C2E04C016950795F79404
+:10468000E7940A94D2F781E090E0A0E0B0E00C2E2D
+:1046900004C0880F991FAA1FBB1F0A94D2F7019765
+:1046A000A109B10982239323A423B52321E030E09B
+:1046B00040E050E00097A105B10519F420E030E09A
+:1046C000A9012E293F29402B512B03C020E030E0C7
+:1046D000A901DA01C9018F779070A070B0708034A1
+:1046E0009105A105B10539F427FF09C0205C3F4FB2
+:1046F0004F4F5F4F04C0215C3F4F4F4F5F4FE1E092
+:10470000F0E0203080E0380780E0480780E4580778
+:1047100028F5E0E0F0E022C0E038F1056CF5E15862
+:10472000FF4FDA01C9018F779070A070B0708034AC
+:104730009105A105B10539F427FF09C0205C3F4F61
+:104740004F4F5F4F04C0215C3F4F4F4F5F4F57FFAC
+:1047500005C05695479537952795319687E056952C
+:104760004795379527958A95D1F70BC0E0E0F0E0A3
+:1047700005C0E0E0F0E005C0EFEFF0E020E030E061
+:10478000A9018E2F879588278795942F9F77679506
+:1047900066276795E695E22EA92FA82BFE2FF62B0C
+:1047A000622F732F8A2F9F2FCDB7DEB7E6E00C94D0
+:1047B0004625DC01FB012C9111963C911197129634
+:1047C0008C911297482F4F7750E0982F991F992777
+:1047D000991F13966C911397862F880F892B90E061
+:1047E000661F6627661F6183009739F5211531051D
+:1047F0004105510511F482E029C082E89FEF9383BF
+:10480000828367E0220F331F441F551F6A95D1F73B
+:1048100083E0808309C0220F331F441F551F82810C
+:104820009381019793838283203080E0380780E072
+:10483000480780E4580778F320C08F3F910579F44A
+:10484000211531054105510519F484E0808308954F
+:1048500044FF03C081E0808310C010820EC08F57D8
+:1048600090409383828383E0808387E0220F331F0D
+:10487000441F551F8A95D1F750642483358346839E
+:1048800057830895FC01DB019081923008F449C000
+:104890008C91823008F445C0943051F461818430A9
+:1048A000B1F511962C91119730E0261B310941C0CA
+:1048B000843021F0923041F48230B1F111968C9124
+:1048C00011978823A1F12DC06181823001F11196E9
+:1048D0008C9111976817D9F42281338112968D91AA
+:1048E0009C9113978217930794F028173907BCF00F
+:1048F000248135814681578114968D919D910D902B
+:10490000BC91A02D82179307A407B50718F466235E
+:1049100041F00DC0281739074A075B0728F46623C2
+:1049200031F021E030E005C020E030E002C02FEFA0
+:104930003FEFC9010895629FD001739FF001829FEC
+:10494000E00DF11D649FE00DF11D929FF00D839F1E
+:10495000F00D749FF00D659FF00D9927729FB00DBB
+:10496000E11DF91F639FB00DE11DF91FBD01CF01CE
+:104970001124089597FB092E07260AD077FD04D04D
+:1049800049D006D000201AF4709561957F4F0895A4
+:10499000F6F7909581959F4F0895A1E21A2EAA1BD4
+:1049A000BB1BFD010DC0AA1FBB1FEE1FFF1FA217DF
+:1049B000B307E407F50720F0A21BB30BE40BF50BDC
+:1049C000661F771F881F991F1A9469F76095709565
+:1049D000809590959B01AC01BD01CF01089597FB97
+:1049E000092E05260ED057FD04D0D7DF0AD0001CB3
+:1049F00038F450954095309521953F4F4F4F5F4F7C
+:104A00000895F6F790958095709561957F4F8F4F3B
+:104A10009F4F0895AA1BBB1B51E107C0AA1FBB1FD4
+:104A2000A617B70710F0A61BB70B881F991F5A953A
+:104A3000A9F780959095BC01CD0108952F923F92E2
+:104A40004F925F926F927F928F929F92AF92BF929E
+:104A5000CF92DF92EF92FF920F931F93CF93DF934A
+:104A6000CDB7DEB7CA1BDB0B0FB6F894DEBF0FBEA7
+:104A7000CDBF09942A88398848885F846E847D84F4
+:104A80008C849B84AA84B984C884DF80EE80FD80F6
+:104A90000C811B81AA81B981CE0FD11D0FB6F8946C
+:104AA000DEBF0FBECDBFED010895EE0FFF1F0590D5
+:104AB000F491E02D0994CF93DF938230910510F4A7
+:104AC00082E090E0E0918E04F0918F0440E050E0AD
+:104AD00020E030E026C06081718168177907E0F03E
+:104AE0006817790781F4828193812115310531F0AE
+:104AF000D90113969C938E9312972BC090938F0499
+:104B000080938E0426C04115510519F0641775076E
+:104B100018F4AB01E901DF019F0172816381E72F86
+:104B2000F62F3097C1F64115510501F1481B590B7D
+:104B30004430510580F412968D919C9113972097E3
+:104B400019F09B838A8304C090938F0480938E0412
+:104B5000FD01329646C0FD01E40FF51F819391934C
+:104B60004250504011965C934E933BC020918C0470
+:104B700030918D042115310541F42091D8023091F6
+:104B8000D90230938D0420938C042091DA02309165
+:104B9000DB022115310541F42DB73EB74091D60215
+:104BA0005091D702241B350BE0918C04F0918D04B9
+:104BB000E217F307A0F42E1B3F0B2817390778F0F4
+:104BC000AC014E5F5F4F2417350748F04E0F5F1F53
+:104BD00050938D0440938C048193919302C0E0E044
+:104BE000F0E0CF01DF91CF910895CF93DF9300974D
+:104BF00009F491C0FC0132971382128260918E04F5
+:104C000070918F046115710581F420813181280F25
+:104C1000391F80918C0490918D048217930799F528
+:104C2000F0938D04E0938C0476C0DB0180E090E08B
+:104C300002C0CD01D901AE17BF0748F412962D91DD
+:104C40003C91139721153105A1F7CD0121C0B38304
+:104C5000A283EF01499159919E01240F351FA2179C
+:104C6000B30779F42D913C911197240F351F2E5FD6
+:104C70003F4F3183208312962D913C9113973383BC
+:104C80002283009729F4F0938F04E0938E0443C0AD
+:104C9000DC011396FC93EE9312974D915D91A40F56
+:104CA000B51FEA17FB0769F420813181240F351FF6
+:104CB0002E5F3F4FEC0139832883228133813B8370
+:104CC0002A83E0E0F0E002C0FB01BC01DB011296A8
+:104CD0008D919C9113970097B9F79B012E5F3F4FE1
+:104CE0008D919C911197820F931F40918C0450914C
+:104CF0008D044817590779F4309729F410928F04DE
+:104D000010928E0402C013821282225030403093DF
+:104D10008D0420938C04DF91CF910895A0E0B0E042
+:104D2000E4E9F6E20C942625EC01688179818A8118
+:104D30009B81611571058105910521F464E279ED8E
+:104D40008BE597E02DE133EF41E050E00E94EF2446
+:104D500079018A0127EA31E440E050E00E949B2477
+:104D60005B016C01C801B7012CEE34EF4FEF5FEF30
+:104D70000E949B249B01AC012A0D3B1D4C1D5D1D17
+:104D800057FF04C0215030404040504828833983A9
+:104D90004A835B835F77B901CA01CDB7DEB7EAE02A
+:104DA0000C9442250E948E2608958CED92E00E947C
+:104DB0008E2608956093DC027093DD028093DE02FC
+:104DC0009093DF020895A0E0B0E0E9EEF6E20C94E3
+:104DD00024258C01CB010115110529F40E945B25C6
+:104DE000082F192FB5C0D80112979801260F371F29
+:104DF0002A173B0708F4AAC0ED90FC901197E6161D
+:104E0000F706D0F045E0E416F10408F4A1C0A701CC
+:104E1000445050404617570708F49AC0A701425023
+:104E20005040461B570BF901419351936D937C936E
+:104E3000CF010E94F5258CC05B01AE18BF08480168
+:104E40008E0C9F1CE0918E04F0918F04CC24DD2405
+:104E5000C0E0D0E041C0E815F90599F560817181A5
+:104E6000AB014E5F5F4F4A155B0558F1AB014A1924
+:104E70005B09CC24DD246894C1F8C40ED51E828061
+:104E8000A380E5E0CE16D10448F0F9018282A38226
+:104E90005183408311969C938E9309C0C70102965B
+:104EA000860F971F11969C938E93E82DFA2D2097CD
+:104EB00019F0FB83EA834CC0F0938F04E0938E04D7
+:104EC00047C040815181C416D50608F46A01EF013C
+:104ED00052814381E52FF42F309709F0BCCF4091E8
+:104EE0008C0450918D0448155905E9F4C816D9066B
+:104EF000D0F44091DA025091DB024115510541F4A2
+:104F00004DB75EB76091D6027091D702461B570B22
+:104F100024173507D8F430938D0420938C04119610
+:104F20009C938E9315C00E945B25C82EE6016E01EE
+:104F3000D92EE601209751F08C2DB801A7010E94CF
+:104F4000FA27C8010E94F525860102C000E010E0A2
+:104F5000C801CDB7DEB7ECE00C9440251F93FC01EF
+:104F600099278827BC01E89411911032E9F3193090
+:104F700010F01E30C8F31B3251F01D3249F4689412
+:104F800006C00E94C728610F711D811D911D1191DE
+:104F900010531A30B0F33EF490958095709561955A
+:104FA0007F4F8F4F9F4F1F910895911140C18032C5
+:104FB00019F089508550D0F70895911108958154C2
+:104FC0008A5108F4805E855A08959111089581569A
+:104FD0008A5108F4805285580895FB01DC0104C011
+:104FE0008D910190801921F441505040C8F7881BE1
+:104FF000990B0895FB01DC0102C001900D92415014
+:105000005040D8F708956817790768F4FB01DC0170
+:10501000E40FF51FA40FB51F02C002900E9241507D
+:105020005040D8F708950C94FA27FC018191861717
+:1050300021F08823D9F7992708953197CF01089552
+:10504000FB01DC018D91019080190110D9F3990BBE
+:105050000895FB01DC0101900D920020E1F7089515
+:10506000FB01DC014150504030F08D9101908019DE
+:1050700019F40020B9F7881B990B0895FB01DC0196
+:105080004150504048F001900D920020C9F701C0F6
+:105090001D9241505040E0F70895FC0181E090E0FE
+:1050A0000190061609F4CF010020D1F70197089569
+:1050B000FB0151915523A9F0BF01DC014D9145172A
+:1050C0004111E1F759F4CD010190002049F04D91D3
+:1050D00040154111C9F3FB014111EFCF81E090E090
+:1050E00001970895FB019F01E8944230C4F04532D6
+:1050F000B4F44A3029F497FB1EF4909581959F4FA4
+:10510000642F77270E940A25805D8A330CF0895D21
+:105110008193CB010097A1F716F45DE251931082C1
+:10512000C9010C941A29FA01CF93FF93EF9322300F
+:1051300044F1253234F5C22FE894CA3049F497FB84
+:105140003EF490958095709561957F4F8F4F9F4F5E
+:105150002C2F332744275527FF93EF930E94CD240C
+:10516000EF91FF91605D6A330CF0695D6193B90165
+:10517000CA01605070408040904051F716F4CDE273
+:10518000C19310828F919F91CF910C941A29592F1E
+:10519000482F372F262F660F771F881F991F660FFE
+:1051A000771F881F991F620F731F841F951F660F3B
+:1051B000771F881F991F0895FA01CF93FF93EF93EC
+:1051C0002230CCF02532BCF4C22F2C2F33274427B9
+:1051D0005527FF93EF930E94CD24EF91FF91605DDF
+:1051E0006A330CF0695D6193B901CA016050704087
+:1051F0008040904051F710828F919F91CF910C94F5
+:105200001A29FB019F01423074F0453264F4642F87
+:1052100077270E940A25805D8A330CF0895D81938F
+:10522000CB010097A1F71082C9010C941A29992784
+:1052300088270895DC01FC01672F71917723E1F73E
+:10524000329704C07C916D9370836291AE17BF0753
+:08525000C8F30895F894FFCFA4
+:105258000D0A2B494E513D310D0A000D0A2B5354AE
+:10526800574D4F443D300D0A000D0A2B53544E4103
+:105278003D4164617074696373456C656374696307
+:105288000D0A000D0A2B53544F4155543D310D0A58
+:10529800000D0A2B53544155544F3D300D0A000D53
+:1052A8000A202B535450494E3D303030300D0A00FF
+:1052B8000D0A2B4C4F53535245434F4E4E3D300D24
+:1052C8000A0007F00000000000B00286054B027AD1
+:1052D800025E029C0200000000F9168605F916F924
+:1052E80016F916F91600000000DE0400000000F9A7
+:1052F800162E0000000000F9168605FF00010000C8
+:105308000000D61AA41A421A4B1A5F1A6F1A000024
+:105318000000F9168605F916F916F916F9160000AF
+:10532800000000000000000102020303030304045C
+:10533800040404040404050505050505050505051B
+:1053480005050505050506060606060606060606FB
+:1053580006060606060606060606060606060606E5
+:1053680006060606060607070707070707070707CB
+:1053780007070707070707070707070707070707B5
+:1053880007070707070707070707070707070707A5
+:105398000707070707070707070707070707070795
+:1053A800070707070707080808080808080808087B
+:1053B8000808080808080808080808080808080865
+:1053C8000808080808080808080808080808080855
+:1053D8000808080808080808080808080808080845
+:1053E8000808080808080808080808080808080835
+:1053F8000808080808080808080808080808080825
+:105408000808080808080808080808080808080814
+:105418000808080808080808080808080808080804
+:10542800080808080808200090040000010000008F
+:00000001FF
diff --git a/ESS1995i2c/bin/Release/ESS1995i2c.elf.lss b/ESS1995i2c/bin/Release/ESS1995i2c.elf.lss new file mode 100644 index 0000000..66af8d8 --- /dev/null +++ b/ESS1995i2c/bin/Release/ESS1995i2c.elf.lss @@ -0,0 +1,10311 @@ + +bin/Release/ESS1995i2c.elf: file format elf32-avr + +Sections: +Idx Name Size VMA LMA File off Algn + 0 .data 000001e0 00800100 00005258 000052ec 2**0 + CONTENTS, ALLOC, LOAD, DATA + 1 .text 00005258 00000000 00000000 00000094 2**1 + CONTENTS, ALLOC, LOAD, READONLY, CODE + 2 .bss 000001b0 008002e0 008002e0 000054cc 2**0 + ALLOC + 3 .stab 00002928 00000000 00000000 000054cc 2**2 + CONTENTS, READONLY, DEBUGGING + 4 .stabstr 00000d28 00000000 00000000 00007df4 2**0 + CONTENTS, READONLY, DEBUGGING + +Disassembly of section .text: + +00000000 <__vectors>: + 0: 0c 94 65 00 jmp 0xca ; 0xca <__ctors_end> + 4: 0c 94 e3 0d jmp 0x1bc6 ; 0x1bc6 <__vector_1> + 8: 0c 94 10 0e jmp 0x1c20 ; 0x1c20 <__vector_2> + c: 0c 94 8d 00 jmp 0x11a ; 0x11a <__bad_interrupt> + 10: 0c 94 8d 00 jmp 0x11a ; 0x11a <__bad_interrupt> + 14: 0c 94 8d 00 jmp 0x11a ; 0x11a <__bad_interrupt> + 18: 0c 94 8d 00 jmp 0x11a ; 0x11a <__bad_interrupt> + 1c: 0c 94 57 0d jmp 0x1aae ; 0x1aae <__vector_7> + 20: 0c 94 8d 00 jmp 0x11a ; 0x11a <__bad_interrupt> + 24: 0c 94 8d 00 jmp 0x11a ; 0x11a <__bad_interrupt> + 28: 0c 94 8d 00 jmp 0x11a ; 0x11a <__bad_interrupt> + 2c: 0c 94 8d 00 jmp 0x11a ; 0x11a <__bad_interrupt> + 30: 0c 94 8d 00 jmp 0x11a ; 0x11a <__bad_interrupt> + 34: 0c 94 8d 00 jmp 0x11a ; 0x11a <__bad_interrupt> + 38: 0c 94 8d 00 jmp 0x11a ; 0x11a <__bad_interrupt> + 3c: 0c 94 8d 00 jmp 0x11a ; 0x11a <__bad_interrupt> + 40: 0c 94 fa 16 jmp 0x2df4 ; 0x2df4 <__vector_16> + 44: 0c 94 8d 00 jmp 0x11a ; 0x11a <__bad_interrupt> + 48: 0c 94 04 03 jmp 0x608 ; 0x608 <__vector_18> + 4c: 0c 94 35 03 jmp 0x66a ; 0x66a <__vector_19> + 50: 0c 94 8d 00 jmp 0x11a ; 0x11a <__bad_interrupt> + 54: 0c 94 8d 00 jmp 0x11a ; 0x11a <__bad_interrupt> + 58: 0c 94 8d 00 jmp 0x11a ; 0x11a <__bad_interrupt> + 5c: 0c 94 8d 00 jmp 0x11a ; 0x11a <__bad_interrupt> + 60: 0c 94 55 1c jmp 0x38aa ; 0x38aa <__vector_24> + 64: 0c 94 8d 00 jmp 0x11a ; 0x11a <__bad_interrupt> + +00000068 <_ZL21tone_pin_to_timer_PGM>: + 68: 02 . + +00000069 <port_to_mode_PGM>: + 69: 00 00 00 00 24 00 27 00 2a 00 ....$.'.*. + +00000073 <port_to_output_PGM>: + 73: 00 00 00 00 25 00 28 00 2b 00 ....%.(.+. + +0000007d <port_to_input_PGM>: + 7d: 00 00 00 00 23 00 26 00 29 00 ....#.&.). + +00000087 <digital_pin_to_port_PGM>: + 87: 04 04 04 04 04 04 04 04 02 02 02 02 02 02 03 03 ................ + 97: 03 03 03 03 .... + +0000009b <digital_pin_to_bit_mask_PGM>: + 9b: 01 02 04 08 10 20 40 80 01 02 04 08 10 20 01 02 ..... @...... .. + ab: 04 08 10 20 ... + +000000af <digital_pin_to_timer_PGM>: + af: 00 00 00 07 00 02 01 00 00 03 04 06 00 00 00 00 ................ + bf: 00 00 00 00 00 ..... + +000000c4 <__ctors_start>: + c4: a1 04 cpc r10, r1 + c6: 77 05 cpc r23, r7 + c8: 6f 1b sub r22, r31 + +000000ca <__ctors_end>: + ca: 11 24 eor r1, r1 + cc: 1f be out 0x3f, r1 ; 63 + ce: cf ef ldi r28, 0xFF ; 255 + d0: d8 e0 ldi r29, 0x08 ; 8 + d2: de bf out 0x3e, r29 ; 62 + d4: cd bf out 0x3d, r28 ; 61 + +000000d6 <__do_copy_data>: + d6: 12 e0 ldi r17, 0x02 ; 2 + d8: a0 e0 ldi r26, 0x00 ; 0 + da: b1 e0 ldi r27, 0x01 ; 1 + dc: e8 e5 ldi r30, 0x58 ; 88 + de: f2 e5 ldi r31, 0x52 ; 82 + e0: 02 c0 rjmp .+4 ; 0xe6 <__do_copy_data+0x10> + e2: 05 90 lpm r0, Z+ + e4: 0d 92 st X+, r0 + e6: a0 3e cpi r26, 0xE0 ; 224 + e8: b1 07 cpc r27, r17 + ea: d9 f7 brne .-10 ; 0xe2 <__do_copy_data+0xc> + +000000ec <__do_clear_bss>: + ec: 14 e0 ldi r17, 0x04 ; 4 + ee: a0 ee ldi r26, 0xE0 ; 224 + f0: b2 e0 ldi r27, 0x02 ; 2 + f2: 01 c0 rjmp .+2 ; 0xf6 <.do_clear_bss_start> + +000000f4 <.do_clear_bss_loop>: + f4: 1d 92 st X+, r1 + +000000f6 <.do_clear_bss_start>: + f6: a0 39 cpi r26, 0x90 ; 144 + f8: b1 07 cpc r27, r17 + fa: e1 f7 brne .-8 ; 0xf4 <.do_clear_bss_loop> + +000000fc <__do_global_ctors>: + fc: 10 e0 ldi r17, 0x00 ; 0 + fe: ca ec ldi r28, 0xCA ; 202 + 100: d0 e0 ldi r29, 0x00 ; 0 + 102: 04 c0 rjmp .+8 ; 0x10c <__do_global_ctors+0x10> + 104: 22 97 sbiw r28, 0x02 ; 2 + 106: fe 01 movw r30, r28 + 108: 0e 94 57 25 call 0x4aae ; 0x4aae <__tablejump__> + 10c: c4 3c cpi r28, 0xC4 ; 196 + 10e: d1 07 cpc r29, r17 + 110: c9 f7 brne .-14 ; 0x104 <__do_global_ctors+0x8> + 112: 0e 94 dc 00 call 0x1b8 ; 0x1b8 <main> + 116: 0c 94 2a 29 jmp 0x5254 ; 0x5254 <_exit> + +0000011a <__bad_interrupt>: + 11a: 0c 94 00 00 jmp 0 ; 0x0 <__vectors> + +0000011e <_Z9advertisev>: + 11e: cf 93 push r28 + 120: df 93 push r29 + 122: 60 ed ldi r22, 0xD0 ; 208 + 124: 77 e0 ldi r23, 0x07 ; 7 + 126: 80 e0 ldi r24, 0x00 ; 0 + 128: 90 e0 ldi r25, 0x00 ; 0 + 12a: 0e 94 82 17 call 0x2f04 ; 0x2f04 <delay> + 12e: c2 e8 ldi r28, 0x82 ; 130 + 130: d3 e0 ldi r29, 0x03 ; 3 + 132: ce 01 movw r24, r28 + 134: 60 e0 ldi r22, 0x00 ; 0 + 136: 71 e0 ldi r23, 0x01 ; 1 + 138: 0e 94 17 06 call 0xc2e ; 0xc2e <_ZN5Print5printEPKc> + 13c: 60 ed ldi r22, 0xD0 ; 208 + 13e: 77 e0 ldi r23, 0x07 ; 7 + 140: 80 e0 ldi r24, 0x00 ; 0 + 142: 90 e0 ldi r25, 0x00 ; 0 + 144: 0e 94 82 17 call 0x2f04 ; 0x2f04 <delay> + 148: ce 01 movw r24, r28 + 14a: 0e 94 9c 02 call 0x538 ; 0x538 <_ZN14HardwareSerial5flushEv> + 14e: df 91 pop r29 + 150: cf 91 pop r28 + 152: 08 95 ret + +00000154 <_Z14setupBlueToothv>: + 154: cf 93 push r28 + 156: df 93 push r29 + 158: 86 e0 ldi r24, 0x06 ; 6 + 15a: 60 e0 ldi r22, 0x00 ; 0 + 15c: 0e 94 9f 18 call 0x313e ; 0x313e <pinMode> + 160: c2 e8 ldi r28, 0x82 ; 130 + 162: d3 e0 ldi r29, 0x03 ; 3 + 164: ce 01 movw r24, r28 + 166: 40 e0 ldi r20, 0x00 ; 0 + 168: 56 e9 ldi r21, 0x96 ; 150 + 16a: 60 e0 ldi r22, 0x00 ; 0 + 16c: 70 e0 ldi r23, 0x00 ; 0 + 16e: 0e 94 bb 03 call 0x776 ; 0x776 <_ZN14HardwareSerial5beginEm> + 172: ce 01 movw r24, r28 + 174: 6b e0 ldi r22, 0x0B ; 11 + 176: 71 e0 ldi r23, 0x01 ; 1 + 178: 0e 94 17 06 call 0xc2e ; 0xc2e <_ZN5Print5printEPKc> + 17c: ce 01 movw r24, r28 + 17e: 69 e1 ldi r22, 0x19 ; 25 + 180: 71 e0 ldi r23, 0x01 ; 1 + 182: 0e 94 17 06 call 0xc2e ; 0xc2e <_ZN5Print5printEPKc> + 186: ce 01 movw r24, r28 + 188: 63 e3 ldi r22, 0x33 ; 51 + 18a: 71 e0 ldi r23, 0x01 ; 1 + 18c: 0e 94 17 06 call 0xc2e ; 0xc2e <_ZN5Print5printEPKc> + 190: ce 01 movw r24, r28 + 192: 61 e4 ldi r22, 0x41 ; 65 + 194: 71 e0 ldi r23, 0x01 ; 1 + 196: 0e 94 17 06 call 0xc2e ; 0xc2e <_ZN5Print5printEPKc> + 19a: ce 01 movw r24, r28 + 19c: 6f e4 ldi r22, 0x4F ; 79 + 19e: 71 e0 ldi r23, 0x01 ; 1 + 1a0: 0e 94 17 06 call 0xc2e ; 0xc2e <_ZN5Print5printEPKc> + 1a4: ce 01 movw r24, r28 + 1a6: 60 e6 ldi r22, 0x60 ; 96 + 1a8: 71 e0 ldi r23, 0x01 ; 1 + 1aa: 0e 94 17 06 call 0xc2e ; 0xc2e <_ZN5Print5printEPKc> + 1ae: 0e 94 8f 00 call 0x11e ; 0x11e <_Z9advertisev> + 1b2: df 91 pop r29 + 1b4: cf 91 pop r28 + 1b6: 08 95 ret + +000001b8 <main>: + 1b8: 7f 92 push r7 + 1ba: 8f 92 push r8 + 1bc: 9f 92 push r9 + 1be: af 92 push r10 + 1c0: bf 92 push r11 + 1c2: cf 92 push r12 + 1c4: df 92 push r13 + 1c6: ef 92 push r14 + 1c8: ff 92 push r15 + 1ca: 0f 93 push r16 + 1cc: 1f 93 push r17 + 1ce: df 93 push r29 + 1d0: cf 93 push r28 + 1d2: cd b7 in r28, 0x3d ; 61 + 1d4: de b7 in r29, 0x3e ; 62 + 1d6: 27 97 sbiw r28, 0x07 ; 7 + 1d8: 0f b6 in r0, 0x3f ; 63 + 1da: f8 94 cli + 1dc: de bf out 0x3e, r29 ; 62 + 1de: 0f be out 0x3f, r0 ; 63 + 1e0: cd bf out 0x3d, r28 ; 61 + 1e2: 0e 94 b3 17 call 0x2f66 ; 0x2f66 <init> + 1e6: 84 e1 ldi r24, 0x14 ; 20 + 1e8: 94 e0 ldi r25, 0x04 ; 4 + 1ea: 0e 94 16 1b call 0x362c ; 0x362c <_ZN7TwoWire5beginEv> + 1ee: 85 e0 ldi r24, 0x05 ; 5 + 1f0: 61 e0 ldi r22, 0x01 ; 1 + 1f2: 0e 94 9f 18 call 0x313e ; 0x313e <pinMode> + 1f6: 85 e0 ldi r24, 0x05 ; 5 + 1f8: 60 e0 ldi r22, 0x00 ; 0 + 1fa: 0e 94 c3 18 call 0x3186 ; 0x3186 <digitalWrite> + 1fe: 0e 94 aa 00 call 0x154 ; 0x154 <_Z14setupBlueToothv> + 202: 82 e0 ldi r24, 0x02 ; 2 + 204: 60 e0 ldi r22, 0x00 ; 0 + 206: 0e 94 9f 18 call 0x313e ; 0x313e <pinMode> + 20a: 86 e0 ldi r24, 0x06 ; 6 + 20c: 60 e0 ldi r22, 0x00 ; 0 + 20e: 0e 94 9f 18 call 0x313e ; 0x313e <pinMode> + 212: 8c e0 ldi r24, 0x0C ; 12 + 214: 61 e0 ldi r22, 0x01 ; 1 + 216: 0e 94 9f 18 call 0x313e ; 0x313e <pinMode> + 21a: 8d e0 ldi r24, 0x0D ; 13 + 21c: 61 e0 ldi r22, 0x01 ; 1 + 21e: 0e 94 9f 18 call 0x313e ; 0x313e <pinMode> + 222: 8d e0 ldi r24, 0x0D ; 13 + 224: 61 e0 ldi r22, 0x01 ; 1 + 226: 0e 94 c3 18 call 0x3186 ; 0x3186 <digitalWrite> + 22a: 85 e0 ldi r24, 0x05 ; 5 + 22c: 61 e0 ldi r22, 0x01 ; 1 + 22e: 0e 94 c3 18 call 0x3186 ; 0x3186 <digitalWrite> + 232: 80 91 eb 02 lds r24, 0x02EB + 236: 87 95 ror r24 + 238: 88 27 eor r24, r24 + 23a: 87 95 ror r24 + 23c: e0 90 ec 02 lds r14, 0x02EC + 240: ee 0c add r14, r14 + 242: ee 0c add r14, r14 + 244: ee 0c add r14, r14 + 246: e8 2a or r14, r24 + 248: 80 91 ed 02 lds r24, 0x02ED + 24c: e8 2a or r14, r24 + 24e: 80 91 ef 02 lds r24, 0x02EF + 252: 82 95 swap r24 + 254: 88 0f add r24, r24 + 256: 80 7e andi r24, 0xE0 ; 224 + 258: 00 91 f0 02 lds r16, 0x02F0 + 25c: 00 0f add r16, r16 + 25e: 00 0f add r16, r16 + 260: 00 0f add r16, r16 + 262: 08 2b or r16, r24 + 264: 80 91 ee 02 lds r24, 0x02EE + 268: 08 2b or r16, r24 + 26a: 90 91 f1 02 lds r25, 0x02F1 + 26e: 97 95 ror r25 + 270: 99 27 eor r25, r25 + 272: 97 95 ror r25 + 274: 80 91 f5 02 lds r24, 0x02F5 + 278: 82 95 swap r24 + 27a: 80 7f andi r24, 0xF0 ; 240 + 27c: 89 2b or r24, r25 + 27e: 90 91 f7 02 lds r25, 0x02F7 + 282: 89 2b or r24, r25 + 284: 90 91 f9 02 lds r25, 0x02F9 + 288: 99 0f add r25, r25 + 28a: 99 0f add r25, r25 + 28c: 99 0f add r25, r25 + 28e: 98 2b or r25, r24 + 290: a0 90 f4 02 lds r10, 0x02F4 + 294: aa 0c add r10, r10 + 296: a9 2a or r10, r25 + 298: 90 91 f2 02 lds r25, 0x02F2 + 29c: 97 95 ror r25 + 29e: 99 27 eor r25, r25 + 2a0: 97 95 ror r25 + 2a2: 80 91 f3 02 lds r24, 0x02F3 + 2a6: 82 95 swap r24 + 2a8: 88 0f add r24, r24 + 2aa: 88 0f add r24, r24 + 2ac: 80 7c andi r24, 0xC0 ; 192 + 2ae: 89 2b or r24, r25 + 2b0: 90 91 f8 02 lds r25, 0x02F8 + 2b4: 89 2b or r24, r25 + 2b6: c0 90 f6 02 lds r12, 0x02F6 + 2ba: cc 0c add r12, r12 + 2bc: cc 0c add r12, r12 + 2be: c8 2a or r12, r24 + 2c0: 84 e1 ldi r24, 0x14 ; 20 + 2c2: 94 e0 ldi r25, 0x04 ; 4 + 2c4: 68 ec ldi r22, 0xC8 ; 200 + 2c6: 70 e0 ldi r23, 0x00 ; 0 + 2c8: 0e 94 52 1b call 0x36a4 ; 0x36a4 <_ZN7TwoWire17beginTransmissionEi> + 2cc: 84 e1 ldi r24, 0x14 ; 20 + 2ce: 94 e0 ldi r25, 0x04 ; 4 + 2d0: 6e 2d mov r22, r14 + 2d2: 0e 94 d6 1a call 0x35ac ; 0x35ac <_ZN7TwoWire5writeEh> + 2d6: 84 e1 ldi r24, 0x14 ; 20 + 2d8: 94 e0 ldi r25, 0x04 ; 4 + 2da: 60 2f mov r22, r16 + 2dc: 0e 94 d6 1a call 0x35ac ; 0x35ac <_ZN7TwoWire5writeEh> + 2e0: 84 e1 ldi r24, 0x14 ; 20 + 2e2: 94 e0 ldi r25, 0x04 ; 4 + 2e4: 6a 2d mov r22, r10 + 2e6: 0e 94 d6 1a call 0x35ac ; 0x35ac <_ZN7TwoWire5writeEh> + 2ea: 84 e1 ldi r24, 0x14 ; 20 + 2ec: 94 e0 ldi r25, 0x04 ; 4 + 2ee: 6c 2d mov r22, r12 + 2f0: 0e 94 d6 1a call 0x35ac ; 0x35ac <_ZN7TwoWire5writeEh> + 2f4: 84 e1 ldi r24, 0x14 ; 20 + 2f6: 94 e0 ldi r25, 0x04 ; 4 + 2f8: 0e 94 55 1b call 0x36aa ; 0x36aa <_ZN7TwoWire15endTransmissionEv> + 2fc: 0a ef ldi r16, 0xFA ; 250 + 2fe: 10 e0 ldi r17, 0x00 ; 0 + 300: 6e 01 movw r12, r28 + 302: 08 94 sec + 304: c1 1c adc r12, r1 + 306: d1 1c adc r13, r1 + 308: a4 e0 ldi r26, 0x04 ; 4 + 30a: aa 2e mov r10, r26 + 30c: b1 2c mov r11, r1 + 30e: ac 0e add r10, r28 + 310: bd 1e adc r11, r29 + 312: f2 e0 ldi r31, 0x02 ; 2 + 314: 8f 2e mov r8, r31 + 316: 91 2c mov r9, r1 + 318: 8c 0e add r8, r28 + 31a: 9d 1e adc r9, r29 + 31c: 77 24 eor r7, r7 + 31e: 73 94 inc r7 + 320: 84 e1 ldi r24, 0x14 ; 20 + 322: 94 e0 ldi r25, 0x04 ; 4 + 324: 69 ec ldi r22, 0xC9 ; 201 + 326: 70 e0 ldi r23, 0x00 ; 0 + 328: 0e 94 52 1b call 0x36a4 ; 0x36a4 <_ZN7TwoWire17beginTransmissionEi> + 32c: 82 e0 ldi r24, 0x02 ; 2 + 32e: 0e 94 fb 18 call 0x31f6 ; 0x31f6 <digitalRead> + 332: 00 97 sbiw r24, 0x00 ; 0 + 334: 09 f0 breq .+2 ; 0x338 <main+0x180> + 336: a1 c0 rjmp .+322 ; 0x47a <main+0x2c2> + 338: e1 ee ldi r30, 0xE1 ; 225 + 33a: ee 2e mov r14, r30 + 33c: e2 e0 ldi r30, 0x02 ; 2 + 33e: fe 2e mov r15, r30 + 340: 84 e1 ldi r24, 0x14 ; 20 + 342: 94 e0 ldi r25, 0x04 ; 4 + 344: 0e 94 4b 1a call 0x3496 ; 0x3496 <_ZN7TwoWire4readEv> + 348: f7 01 movw r30, r14 + 34a: 81 93 st Z+, r24 + 34c: 7f 01 movw r14, r30 + 34e: fb ee ldi r31, 0xEB ; 235 + 350: ef 16 cp r14, r31 + 352: f2 e0 ldi r31, 0x02 ; 2 + 354: ff 06 cpc r15, r31 + 356: a1 f7 brne .-24 ; 0x340 <main+0x188> + 358: 84 e1 ldi r24, 0x14 ; 20 + 35a: 94 e0 ldi r25, 0x04 ; 4 + 35c: 0e 94 55 1b call 0x36aa ; 0x36aa <_ZN7TwoWire15endTransmissionEv> + 360: 80 91 e1 02 lds r24, 0x02E1 + 364: 89 83 std Y+1, r24 ; 0x01 + 366: 80 91 e3 02 lds r24, 0x02E3 + 36a: 90 e0 ldi r25, 0x00 ; 0 + 36c: a0 e0 ldi r26, 0x00 ; 0 + 36e: b0 e0 ldi r27, 0x00 ; 0 + 370: ba 2f mov r27, r26 + 372: a9 2f mov r26, r25 + 374: 98 2f mov r25, r24 + 376: 88 27 eor r24, r24 + 378: 20 91 e4 02 lds r18, 0x02E4 + 37c: 30 e0 ldi r19, 0x00 ; 0 + 37e: 40 e0 ldi r20, 0x00 ; 0 + 380: 50 e0 ldi r21, 0x00 ; 0 + 382: 82 2b or r24, r18 + 384: 93 2b or r25, r19 + 386: a4 2b or r26, r20 + 388: b5 2b or r27, r21 + 38a: 20 91 e2 02 lds r18, 0x02E2 + 38e: 30 e0 ldi r19, 0x00 ; 0 + 390: 40 e0 ldi r20, 0x00 ; 0 + 392: 50 e0 ldi r21, 0x00 ; 0 + 394: 27 70 andi r18, 0x07 ; 7 + 396: 30 70 andi r19, 0x00 ; 0 + 398: 40 70 andi r20, 0x00 ; 0 + 39a: 50 70 andi r21, 0x00 ; 0 + 39c: a9 01 movw r20, r18 + 39e: 33 27 eor r19, r19 + 3a0: 22 27 eor r18, r18 + 3a2: 82 2b or r24, r18 + 3a4: 93 2b or r25, r19 + 3a6: a4 2b or r26, r20 + 3a8: b5 2b or r27, r21 + 3aa: 8c 83 std Y+4, r24 ; 0x04 + 3ac: 9d 83 std Y+5, r25 ; 0x05 + 3ae: ae 83 std Y+6, r26 ; 0x06 + 3b0: bf 83 std Y+7, r27 ; 0x07 + 3b2: 80 91 e6 02 lds r24, 0x02E6 + 3b6: 82 95 swap r24 + 3b8: 86 95 lsr r24 + 3ba: 86 95 lsr r24 + 3bc: 83 70 andi r24, 0x03 ; 3 + 3be: 90 e0 ldi r25, 0x00 ; 0 + 3c0: 20 91 e5 02 lds r18, 0x02E5 + 3c4: 30 e0 ldi r19, 0x00 ; 0 + 3c6: 22 0f add r18, r18 + 3c8: 33 1f adc r19, r19 + 3ca: 22 0f add r18, r18 + 3cc: 33 1f adc r19, r19 + 3ce: 82 2b or r24, r18 + 3d0: 93 2b or r25, r19 + 3d2: 9b 83 std Y+3, r25 ; 0x03 + 3d4: 8a 83 std Y+2, r24 ; 0x02 + 3d6: 13 c0 rjmp .+38 ; 0x3fe <main+0x246> + 3d8: 82 e8 ldi r24, 0x82 ; 130 + 3da: 93 e0 ldi r25, 0x03 ; 3 + 3dc: 0e 94 7a 02 call 0x4f4 ; 0x4f4 <_ZN14HardwareSerial4readEv> + 3e0: 82 30 cpi r24, 0x02 ; 2 + 3e2: 29 f0 breq .+10 ; 0x3ee <main+0x236> + 3e4: 83 30 cpi r24, 0x03 ; 3 + 3e6: 31 f0 breq .+12 ; 0x3f4 <main+0x23c> + 3e8: 81 30 cpi r24, 0x01 ; 1 + 3ea: 49 f4 brne .+18 ; 0x3fe <main+0x246> + 3ec: 06 c0 rjmp .+12 ; 0x3fa <main+0x242> + 3ee: 0a ef ldi r16, 0xFA ; 250 + 3f0: 10 e0 ldi r17, 0x00 ; 0 + 3f2: 05 c0 rjmp .+10 ; 0x3fe <main+0x246> + 3f4: 02 e3 ldi r16, 0x32 ; 50 + 3f6: 10 e0 ldi r17, 0x00 ; 0 + 3f8: 02 c0 rjmp .+4 ; 0x3fe <main+0x246> + 3fa: 08 ee ldi r16, 0xE8 ; 232 + 3fc: 13 e0 ldi r17, 0x03 ; 3 + 3fe: 82 e8 ldi r24, 0x82 ; 130 + 400: 93 e0 ldi r25, 0x03 ; 3 + 402: 0e 94 4b 02 call 0x496 ; 0x496 <_ZN14HardwareSerial9availableEv> + 406: 18 16 cp r1, r24 + 408: 19 06 cpc r1, r25 + 40a: 34 f3 brlt .-52 ; 0x3d8 <main+0x220> + 40c: 86 e0 ldi r24, 0x06 ; 6 + 40e: 0e 94 fb 18 call 0x31f6 ; 0x31f6 <digitalRead> + 412: 20 91 e0 02 lds r18, 0x02E0 + 416: 00 97 sbiw r24, 0x00 ; 0 + 418: 51 f1 breq .+84 ; 0x46e <main+0x2b6> + 41a: 22 23 and r18, r18 + 41c: 11 f4 brne .+4 ; 0x422 <main+0x26a> + 41e: 70 92 e0 02 sts 0x02E0, r7 + 422: 82 e8 ldi r24, 0x82 ; 130 + 424: 93 e0 ldi r25, 0x03 ; 3 + 426: 63 e7 ldi r22, 0x73 ; 115 + 428: 71 e0 ldi r23, 0x01 ; 1 + 42a: 42 e0 ldi r20, 0x02 ; 2 + 42c: 50 e0 ldi r21, 0x00 ; 0 + 42e: 0e 94 86 05 call 0xb0c ; 0xb0c <_ZN5Print5writeEPKhj> + 432: 82 e8 ldi r24, 0x82 ; 130 + 434: 93 e0 ldi r25, 0x03 ; 3 + 436: 62 e7 ldi r22, 0x72 ; 114 + 438: 71 e0 ldi r23, 0x01 ; 1 + 43a: 41 e0 ldi r20, 0x01 ; 1 + 43c: 50 e0 ldi r21, 0x00 ; 0 + 43e: 0e 94 86 05 call 0xb0c ; 0xb0c <_ZN5Print5writeEPKhj> + 442: 82 e8 ldi r24, 0x82 ; 130 + 444: 93 e0 ldi r25, 0x03 ; 3 + 446: b6 01 movw r22, r12 + 448: 41 e0 ldi r20, 0x01 ; 1 + 44a: 50 e0 ldi r21, 0x00 ; 0 + 44c: 0e 94 86 05 call 0xb0c ; 0xb0c <_ZN5Print5writeEPKhj> + 450: 82 e8 ldi r24, 0x82 ; 130 + 452: 93 e0 ldi r25, 0x03 ; 3 + 454: b5 01 movw r22, r10 + 456: 44 e0 ldi r20, 0x04 ; 4 + 458: 50 e0 ldi r21, 0x00 ; 0 + 45a: 0e 94 86 05 call 0xb0c ; 0xb0c <_ZN5Print5writeEPKhj> + 45e: 82 e8 ldi r24, 0x82 ; 130 + 460: 93 e0 ldi r25, 0x03 ; 3 + 462: b4 01 movw r22, r8 + 464: 42 e0 ldi r20, 0x02 ; 2 + 466: 50 e0 ldi r21, 0x00 ; 0 + 468: 0e 94 86 05 call 0xb0c ; 0xb0c <_ZN5Print5writeEPKhj> + 46c: 06 c0 rjmp .+12 ; 0x47a <main+0x2c2> + 46e: 22 23 and r18, r18 + 470: 21 f0 breq .+8 ; 0x47a <main+0x2c2> + 472: 0e 94 8f 00 call 0x11e ; 0x11e <_Z9advertisev> + 476: 10 92 e0 02 sts 0x02E0, r1 + 47a: b8 01 movw r22, r16 + 47c: 80 e0 ldi r24, 0x00 ; 0 + 47e: 90 e0 ldi r25, 0x00 ; 0 + 480: 0e 94 82 17 call 0x2f04 ; 0x2f04 <delay> + 484: 8c e0 ldi r24, 0x0C ; 12 + 486: 60 e0 ldi r22, 0x00 ; 0 + 488: 0e 94 c3 18 call 0x3186 ; 0x3186 <digitalWrite> + 48c: 8d e0 ldi r24, 0x0D ; 13 + 48e: 60 e0 ldi r22, 0x00 ; 0 + 490: 0e 94 c3 18 call 0x3186 ; 0x3186 <digitalWrite> + 494: 45 cf rjmp .-374 ; 0x320 <main+0x168> + +00000496 <_ZN14HardwareSerial9availableEv>: + 496: fc 01 movw r30, r24 + 498: 84 85 ldd r24, Z+12 ; 0x0c + 49a: 95 85 ldd r25, Z+13 ; 0x0d + 49c: fc 01 movw r30, r24 + 49e: e0 5c subi r30, 0xC0 ; 192 + 4a0: ff 4f sbci r31, 0xFF ; 255 + 4a2: 20 81 ld r18, Z + 4a4: 31 81 ldd r19, Z+1 ; 0x01 + 4a6: 8e 5b subi r24, 0xBE ; 190 + 4a8: 9f 4f sbci r25, 0xFF ; 255 + 4aa: fc 01 movw r30, r24 + 4ac: 80 81 ld r24, Z + 4ae: 91 81 ldd r25, Z+1 ; 0x01 + 4b0: 28 1b sub r18, r24 + 4b2: 39 0b sbc r19, r25 + 4b4: 2f 73 andi r18, 0x3F ; 63 + 4b6: 30 70 andi r19, 0x00 ; 0 + 4b8: c9 01 movw r24, r18 + 4ba: 08 95 ret + +000004bc <_ZN14HardwareSerial4peekEv>: + 4bc: fc 01 movw r30, r24 + 4be: 84 85 ldd r24, Z+12 ; 0x0c + 4c0: 95 85 ldd r25, Z+13 ; 0x0d + 4c2: fc 01 movw r30, r24 + 4c4: e0 5c subi r30, 0xC0 ; 192 + 4c6: ff 4f sbci r31, 0xFF ; 255 + 4c8: 40 81 ld r20, Z + 4ca: 51 81 ldd r21, Z+1 ; 0x01 + 4cc: fc 01 movw r30, r24 + 4ce: ee 5b subi r30, 0xBE ; 190 + 4d0: ff 4f sbci r31, 0xFF ; 255 + 4d2: 20 81 ld r18, Z + 4d4: 31 81 ldd r19, Z+1 ; 0x01 + 4d6: 42 17 cp r20, r18 + 4d8: 53 07 cpc r21, r19 + 4da: 41 f0 breq .+16 ; 0x4ec <_ZN14HardwareSerial4peekEv+0x30> + 4dc: 01 90 ld r0, Z+ + 4de: f0 81 ld r31, Z + 4e0: e0 2d mov r30, r0 + 4e2: e8 0f add r30, r24 + 4e4: f9 1f adc r31, r25 + 4e6: 20 81 ld r18, Z + 4e8: 30 e0 ldi r19, 0x00 ; 0 + 4ea: 02 c0 rjmp .+4 ; 0x4f0 <_ZN14HardwareSerial4peekEv+0x34> + 4ec: 2f ef ldi r18, 0xFF ; 255 + 4ee: 3f ef ldi r19, 0xFF ; 255 + 4f0: c9 01 movw r24, r18 + 4f2: 08 95 ret + +000004f4 <_ZN14HardwareSerial4readEv>: + 4f4: fc 01 movw r30, r24 + 4f6: 84 85 ldd r24, Z+12 ; 0x0c + 4f8: 95 85 ldd r25, Z+13 ; 0x0d + 4fa: fc 01 movw r30, r24 + 4fc: e0 5c subi r30, 0xC0 ; 192 + 4fe: ff 4f sbci r31, 0xFF ; 255 + 500: 40 81 ld r20, Z + 502: 51 81 ldd r21, Z+1 ; 0x01 + 504: fc 01 movw r30, r24 + 506: ee 5b subi r30, 0xBE ; 190 + 508: ff 4f sbci r31, 0xFF ; 255 + 50a: 20 81 ld r18, Z + 50c: 31 81 ldd r19, Z+1 ; 0x01 + 50e: 42 17 cp r20, r18 + 510: 53 07 cpc r21, r19 + 512: 71 f0 breq .+28 ; 0x530 <_ZN14HardwareSerial4readEv+0x3c> + 514: a0 81 ld r26, Z + 516: b1 81 ldd r27, Z+1 ; 0x01 + 518: a8 0f add r26, r24 + 51a: b9 1f adc r27, r25 + 51c: 2c 91 ld r18, X + 51e: 80 81 ld r24, Z + 520: 91 81 ldd r25, Z+1 ; 0x01 + 522: 01 96 adiw r24, 0x01 ; 1 + 524: 8f 73 andi r24, 0x3F ; 63 + 526: 90 70 andi r25, 0x00 ; 0 + 528: 91 83 std Z+1, r25 ; 0x01 + 52a: 80 83 st Z, r24 + 52c: 30 e0 ldi r19, 0x00 ; 0 + 52e: 02 c0 rjmp .+4 ; 0x534 <_ZN14HardwareSerial4readEv+0x40> + 530: 2f ef ldi r18, 0xFF ; 255 + 532: 3f ef ldi r19, 0xFF ; 255 + 534: c9 01 movw r24, r18 + 536: 08 95 ret + +00000538 <_ZN14HardwareSerial5flushEv>: + 538: dc 01 movw r26, r24 + 53a: 1e 96 adiw r26, 0x0e ; 14 + 53c: 8d 91 ld r24, X+ + 53e: 9c 91 ld r25, X + 540: 1f 97 sbiw r26, 0x0f ; 15 + 542: fc 01 movw r30, r24 + 544: e0 5c subi r30, 0xC0 ; 192 + 546: ff 4f sbci r31, 0xFF ; 255 + 548: 8e 5b subi r24, 0xBE ; 190 + 54a: 9f 4f sbci r25, 0xFF ; 255 + 54c: 40 81 ld r20, Z + 54e: 51 81 ldd r21, Z+1 ; 0x01 + 550: dc 01 movw r26, r24 + 552: 2d 91 ld r18, X+ + 554: 3c 91 ld r19, X + 556: 11 97 sbiw r26, 0x01 ; 1 + 558: 42 17 cp r20, r18 + 55a: 53 07 cpc r21, r19 + 55c: b9 f7 brne .-18 ; 0x54c <_ZN14HardwareSerial5flushEv+0x14> + 55e: 08 95 ret + +00000560 <_ZN14HardwareSerial5writeEh>: + 560: 1f 93 push r17 + 562: fc 01 movw r30, r24 + 564: 16 2f mov r17, r22 + 566: 26 85 ldd r18, Z+14 ; 0x0e + 568: 37 85 ldd r19, Z+15 ; 0x0f + 56a: d9 01 movw r26, r18 + 56c: a0 5c subi r26, 0xC0 ; 192 + 56e: bf 4f sbci r27, 0xFF ; 255 + 570: 8d 91 ld r24, X+ + 572: 9c 91 ld r25, X + 574: 01 96 adiw r24, 0x01 ; 1 + 576: 60 e4 ldi r22, 0x40 ; 64 + 578: 70 e0 ldi r23, 0x00 ; 0 + 57a: 0e 94 ba 24 call 0x4974 ; 0x4974 <__divmodhi4> + 57e: d9 01 movw r26, r18 + 580: ae 5b subi r26, 0xBE ; 190 + 582: bf 4f sbci r27, 0xFF ; 255 + 584: 4d 91 ld r20, X+ + 586: 5c 91 ld r21, X + 588: 11 97 sbiw r26, 0x01 ; 1 + 58a: 84 17 cp r24, r20 + 58c: 95 07 cpc r25, r21 + 58e: d1 f3 breq .-12 ; 0x584 <_ZN14HardwareSerial5writeEh+0x24> + 590: d9 01 movw r26, r18 + 592: a0 5c subi r26, 0xC0 ; 192 + 594: bf 4f sbci r27, 0xFF ; 255 + 596: 0d 90 ld r0, X+ + 598: bc 91 ld r27, X + 59a: a0 2d mov r26, r0 + 59c: a2 0f add r26, r18 + 59e: b3 1f adc r27, r19 + 5a0: 1c 93 st X, r17 + 5a2: a6 85 ldd r26, Z+14 ; 0x0e + 5a4: b7 85 ldd r27, Z+15 ; 0x0f + 5a6: a0 5c subi r26, 0xC0 ; 192 + 5a8: bf 4f sbci r27, 0xFF ; 255 + 5aa: 11 96 adiw r26, 0x01 ; 1 + 5ac: 9c 93 st X, r25 + 5ae: 8e 93 st -X, r24 + 5b0: a6 89 ldd r26, Z+22 ; 0x16 + 5b2: b7 89 ldd r27, Z+23 ; 0x17 + 5b4: 2c 91 ld r18, X + 5b6: 81 e0 ldi r24, 0x01 ; 1 + 5b8: 90 e0 ldi r25, 0x00 ; 0 + 5ba: 05 8c ldd r0, Z+29 ; 0x1d + 5bc: 02 c0 rjmp .+4 ; 0x5c2 <_ZN14HardwareSerial5writeEh+0x62> + 5be: 88 0f add r24, r24 + 5c0: 99 1f adc r25, r25 + 5c2: 0a 94 dec r0 + 5c4: e2 f7 brpl .-8 ; 0x5be <_ZN14HardwareSerial5writeEh+0x5e> + 5c6: 28 2b or r18, r24 + 5c8: 2c 93 st X, r18 + 5ca: 81 e0 ldi r24, 0x01 ; 1 + 5cc: 90 e0 ldi r25, 0x00 ; 0 + 5ce: 1f 91 pop r17 + 5d0: 08 95 ret + +000005d2 <_Z10store_charhP11ring_buffer>: + 5d2: fb 01 movw r30, r22 + 5d4: e0 5c subi r30, 0xC0 ; 192 + 5d6: ff 4f sbci r31, 0xFF ; 255 + 5d8: 20 81 ld r18, Z + 5da: 31 81 ldd r19, Z+1 ; 0x01 + 5dc: 2f 5f subi r18, 0xFF ; 255 + 5de: 3f 4f sbci r19, 0xFF ; 255 + 5e0: 2f 73 andi r18, 0x3F ; 63 + 5e2: 30 70 andi r19, 0x00 ; 0 + 5e4: db 01 movw r26, r22 + 5e6: ae 5b subi r26, 0xBE ; 190 + 5e8: bf 4f sbci r27, 0xFF ; 255 + 5ea: 4d 91 ld r20, X+ + 5ec: 5c 91 ld r21, X + 5ee: 11 97 sbiw r26, 0x01 ; 1 + 5f0: 24 17 cp r18, r20 + 5f2: 35 07 cpc r19, r21 + 5f4: 39 f0 breq .+14 ; 0x604 <_Z10store_charhP11ring_buffer+0x32> + 5f6: a0 81 ld r26, Z + 5f8: b1 81 ldd r27, Z+1 ; 0x01 + 5fa: a6 0f add r26, r22 + 5fc: b7 1f adc r27, r23 + 5fe: 8c 93 st X, r24 + 600: 31 83 std Z+1, r19 ; 0x01 + 602: 20 83 st Z, r18 + 604: 08 95 ret + +00000606 <_Z11serialEventv>: + 606: 08 95 ret + +00000608 <__vector_18>: + 608: 1f 92 push r1 + 60a: 0f 92 push r0 + 60c: 0f b6 in r0, 0x3f ; 63 + 60e: 0f 92 push r0 + 610: 11 24 eor r1, r1 + 612: 2f 93 push r18 + 614: 3f 93 push r19 + 616: 4f 93 push r20 + 618: 5f 93 push r21 + 61a: 6f 93 push r22 + 61c: 7f 93 push r23 + 61e: 8f 93 push r24 + 620: 9f 93 push r25 + 622: af 93 push r26 + 624: bf 93 push r27 + 626: ef 93 push r30 + 628: ff 93 push r31 + 62a: 80 91 c6 00 lds r24, 0x00C6 + 62e: 6a ef ldi r22, 0xFA ; 250 + 630: 72 e0 ldi r23, 0x02 ; 2 + 632: 0e 94 e9 02 call 0x5d2 ; 0x5d2 <_Z10store_charhP11ring_buffer> + 636: ff 91 pop r31 + 638: ef 91 pop r30 + 63a: bf 91 pop r27 + 63c: af 91 pop r26 + 63e: 9f 91 pop r25 + 640: 8f 91 pop r24 + 642: 7f 91 pop r23 + 644: 6f 91 pop r22 + 646: 5f 91 pop r21 + 648: 4f 91 pop r20 + 64a: 3f 91 pop r19 + 64c: 2f 91 pop r18 + 64e: 0f 90 pop r0 + 650: 0f be out 0x3f, r0 ; 63 + 652: 0f 90 pop r0 + 654: 1f 90 pop r1 + 656: 18 95 reti + +00000658 <_Z14serialEventRunv>: + 658: 82 e8 ldi r24, 0x82 ; 130 + 65a: 93 e0 ldi r25, 0x03 ; 3 + 65c: 0e 94 4b 02 call 0x496 ; 0x496 <_ZN14HardwareSerial9availableEv> + 660: 00 97 sbiw r24, 0x00 ; 0 + 662: 11 f0 breq .+4 ; 0x668 <_Z14serialEventRunv+0x10> + 664: 0e 94 03 03 call 0x606 ; 0x606 <_Z11serialEventv> + 668: 08 95 ret + +0000066a <__vector_19>: + 66a: 1f 92 push r1 + 66c: 0f 92 push r0 + 66e: 0f b6 in r0, 0x3f ; 63 + 670: 0f 92 push r0 + 672: 11 24 eor r1, r1 + 674: 2f 93 push r18 + 676: 3f 93 push r19 + 678: 5f 93 push r21 + 67a: 6f 93 push r22 + 67c: 7f 93 push r23 + 67e: 8f 93 push r24 + 680: 9f 93 push r25 + 682: af 93 push r26 + 684: bf 93 push r27 + 686: ef 93 push r30 + 688: ff 93 push r31 + 68a: 20 91 7e 03 lds r18, 0x037E + 68e: 30 91 7f 03 lds r19, 0x037F + 692: 80 91 80 03 lds r24, 0x0380 + 696: 90 91 81 03 lds r25, 0x0381 + 69a: 28 17 cp r18, r24 + 69c: 39 07 cpc r19, r25 + 69e: 31 f4 brne .+12 ; 0x6ac <__vector_19+0x42> + 6a0: 80 91 c1 00 lds r24, 0x00C1 + 6a4: 8f 7d andi r24, 0xDF ; 223 + 6a6: 80 93 c1 00 sts 0x00C1, r24 + 6aa: 16 c0 rjmp .+44 ; 0x6d8 <__vector_19+0x6e> + 6ac: e0 91 80 03 lds r30, 0x0380 + 6b0: f0 91 81 03 lds r31, 0x0381 + 6b4: e2 5c subi r30, 0xC2 ; 194 + 6b6: fc 4f sbci r31, 0xFC ; 252 + 6b8: 20 81 ld r18, Z + 6ba: 80 91 80 03 lds r24, 0x0380 + 6be: 90 91 81 03 lds r25, 0x0381 + 6c2: 01 96 adiw r24, 0x01 ; 1 + 6c4: 60 e4 ldi r22, 0x40 ; 64 + 6c6: 70 e0 ldi r23, 0x00 ; 0 + 6c8: 0e 94 ba 24 call 0x4974 ; 0x4974 <__divmodhi4> + 6cc: 90 93 81 03 sts 0x0381, r25 + 6d0: 80 93 80 03 sts 0x0380, r24 + 6d4: 20 93 c6 00 sts 0x00C6, r18 + 6d8: ff 91 pop r31 + 6da: ef 91 pop r30 + 6dc: bf 91 pop r27 + 6de: af 91 pop r26 + 6e0: 9f 91 pop r25 + 6e2: 8f 91 pop r24 + 6e4: 7f 91 pop r23 + 6e6: 6f 91 pop r22 + 6e8: 5f 91 pop r21 + 6ea: 3f 91 pop r19 + 6ec: 2f 91 pop r18 + 6ee: 0f 90 pop r0 + 6f0: 0f be out 0x3f, r0 ; 63 + 6f2: 0f 90 pop r0 + 6f4: 1f 90 pop r1 + 6f6: 18 95 reti + +000006f8 <_ZN14HardwareSerialC1EP11ring_bufferS1_PVhS3_S3_S3_S3_hhhhh>: + 6f8: 8f 92 push r8 + 6fa: af 92 push r10 + 6fc: bf 92 push r11 + 6fe: cf 92 push r12 + 700: df 92 push r13 + 702: ef 92 push r14 + 704: ff 92 push r15 + 706: 0f 93 push r16 + 708: 1f 93 push r17 + 70a: df 93 push r29 + 70c: cf 93 push r28 + 70e: cd b7 in r28, 0x3d ; 61 + 710: de b7 in r29, 0x3e ; 62 + 712: fc 01 movw r30, r24 + 714: 13 82 std Z+3, r1 ; 0x03 + 716: 12 82 std Z+2, r1 ; 0x02 + 718: 88 ee ldi r24, 0xE8 ; 232 + 71a: 93 e0 ldi r25, 0x03 ; 3 + 71c: a0 e0 ldi r26, 0x00 ; 0 + 71e: b0 e0 ldi r27, 0x00 ; 0 + 720: 84 83 std Z+4, r24 ; 0x04 + 722: 95 83 std Z+5, r25 ; 0x05 + 724: a6 83 std Z+6, r26 ; 0x06 + 726: b7 83 std Z+7, r27 ; 0x07 + 728: 89 e7 ldi r24, 0x79 ; 121 + 72a: 91 e0 ldi r25, 0x01 ; 1 + 72c: 91 83 std Z+1, r25 ; 0x01 + 72e: 80 83 st Z, r24 + 730: 75 87 std Z+13, r23 ; 0x0d + 732: 64 87 std Z+12, r22 ; 0x0c + 734: 57 87 std Z+15, r21 ; 0x0f + 736: 46 87 std Z+14, r20 ; 0x0e + 738: 31 8b std Z+17, r19 ; 0x11 + 73a: 20 8b std Z+16, r18 ; 0x10 + 73c: 13 8b std Z+19, r17 ; 0x13 + 73e: 02 8b std Z+18, r16 ; 0x12 + 740: f5 8a std Z+21, r15 ; 0x15 + 742: e4 8a std Z+20, r14 ; 0x14 + 744: d7 8a std Z+23, r13 ; 0x17 + 746: c6 8a std Z+22, r12 ; 0x16 + 748: b1 8e std Z+25, r11 ; 0x19 + 74a: a0 8e std Z+24, r10 ; 0x18 + 74c: 82 8e std Z+26, r8 ; 0x1a + 74e: 8e 85 ldd r24, Y+14 ; 0x0e + 750: 83 8f std Z+27, r24 ; 0x1b + 752: 8f 85 ldd r24, Y+15 ; 0x0f + 754: 84 8f std Z+28, r24 ; 0x1c + 756: 88 89 ldd r24, Y+16 ; 0x10 + 758: 85 8f std Z+29, r24 ; 0x1d + 75a: 89 89 ldd r24, Y+17 ; 0x11 + 75c: 86 8f std Z+30, r24 ; 0x1e + 75e: cf 91 pop r28 + 760: df 91 pop r29 + 762: 1f 91 pop r17 + 764: 0f 91 pop r16 + 766: ff 90 pop r15 + 768: ef 90 pop r14 + 76a: df 90 pop r13 + 76c: cf 90 pop r12 + 76e: bf 90 pop r11 + 770: af 90 pop r10 + 772: 8f 90 pop r8 + 774: 08 95 ret + +00000776 <_ZN14HardwareSerial5beginEm>: + 776: 9f 92 push r9 + 778: af 92 push r10 + 77a: bf 92 push r11 + 77c: cf 92 push r12 + 77e: df 92 push r13 + 780: ef 92 push r14 + 782: ff 92 push r15 + 784: 0f 93 push r16 + 786: 1f 93 push r17 + 788: cf 93 push r28 + 78a: df 93 push r29 + 78c: ec 01 movw r28, r24 + 78e: 7a 01 movw r14, r20 + 790: 8b 01 movw r16, r22 + 792: 99 24 eor r9, r9 + 794: 93 94 inc r9 + 796: ec 89 ldd r30, Y+20 ; 0x14 + 798: fd 89 ldd r31, Y+21 ; 0x15 + 79a: 81 e0 ldi r24, 0x01 ; 1 + 79c: 90 e0 ldi r25, 0x00 ; 0 + 79e: 0e 8c ldd r0, Y+30 ; 0x1e + 7a0: 02 c0 rjmp .+4 ; 0x7a6 <_ZN14HardwareSerial5beginEm+0x30> + 7a2: 88 0f add r24, r24 + 7a4: 99 1f adc r25, r25 + 7a6: 0a 94 dec r0 + 7a8: e2 f7 brpl .-8 ; 0x7a2 <_ZN14HardwareSerial5beginEm+0x2c> + 7aa: 80 83 st Z, r24 + 7ac: 60 e8 ldi r22, 0x80 ; 128 + 7ae: 74 e8 ldi r23, 0x84 ; 132 + 7b0: 8e e1 ldi r24, 0x1E ; 30 + 7b2: 90 e0 ldi r25, 0x00 ; 0 + 7b4: a8 01 movw r20, r16 + 7b6: 97 01 movw r18, r14 + 7b8: 0e 94 cd 24 call 0x499a ; 0x499a <__udivmodsi4> + 7bc: 21 50 subi r18, 0x01 ; 1 + 7be: 30 40 sbci r19, 0x00 ; 0 + 7c0: 40 40 sbci r20, 0x00 ; 0 + 7c2: 50 40 sbci r21, 0x00 ; 0 + 7c4: 56 95 lsr r21 + 7c6: 47 95 ror r20 + 7c8: 37 95 ror r19 + 7ca: 27 95 ror r18 + 7cc: 90 e4 ldi r25, 0x40 ; 64 + 7ce: a9 2e mov r10, r25 + 7d0: 92 e4 ldi r25, 0x42 ; 66 + 7d2: b9 2e mov r11, r25 + 7d4: 9f e0 ldi r25, 0x0F ; 15 + 7d6: c9 2e mov r12, r25 + 7d8: d1 2c mov r13, r1 + 7da: 12 c0 rjmp .+36 ; 0x800 <_ZN14HardwareSerial5beginEm+0x8a> + 7dc: 99 24 eor r9, r9 + 7de: ec 89 ldd r30, Y+20 ; 0x14 + 7e0: fd 89 ldd r31, Y+21 ; 0x15 + 7e2: 10 82 st Z, r1 + 7e4: c6 01 movw r24, r12 + 7e6: b5 01 movw r22, r10 + 7e8: a8 01 movw r20, r16 + 7ea: 97 01 movw r18, r14 + 7ec: 0e 94 cd 24 call 0x499a ; 0x499a <__udivmodsi4> + 7f0: 21 50 subi r18, 0x01 ; 1 + 7f2: 30 40 sbci r19, 0x00 ; 0 + 7f4: 40 40 sbci r20, 0x00 ; 0 + 7f6: 50 40 sbci r21, 0x00 ; 0 + 7f8: 56 95 lsr r21 + 7fa: 47 95 ror r20 + 7fc: 37 95 ror r19 + 7fe: 27 95 ror r18 + 800: 80 e1 ldi r24, 0x10 ; 16 + 802: 20 30 cpi r18, 0x00 ; 0 + 804: 38 07 cpc r19, r24 + 806: 10 f0 brcs .+4 ; 0x80c <_ZN14HardwareSerial5beginEm+0x96> + 808: 99 20 and r9, r9 + 80a: 41 f7 brne .-48 ; 0x7dc <_ZN14HardwareSerial5beginEm+0x66> + 80c: e8 89 ldd r30, Y+16 ; 0x10 + 80e: f9 89 ldd r31, Y+17 ; 0x11 + 810: 30 83 st Z, r19 + 812: ea 89 ldd r30, Y+18 ; 0x12 + 814: fb 89 ldd r31, Y+19 ; 0x13 + 816: 20 83 st Z, r18 + 818: ee 89 ldd r30, Y+22 ; 0x16 + 81a: ff 89 ldd r31, Y+23 ; 0x17 + 81c: 40 81 ld r20, Z + 81e: 81 e0 ldi r24, 0x01 ; 1 + 820: 90 e0 ldi r25, 0x00 ; 0 + 822: 9c 01 movw r18, r24 + 824: 0a 8c ldd r0, Y+26 ; 0x1a + 826: 02 c0 rjmp .+4 ; 0x82c <_ZN14HardwareSerial5beginEm+0xb6> + 828: 22 0f add r18, r18 + 82a: 33 1f adc r19, r19 + 82c: 0a 94 dec r0 + 82e: e2 f7 brpl .-8 ; 0x828 <_ZN14HardwareSerial5beginEm+0xb2> + 830: 42 2b or r20, r18 + 832: 40 83 st Z, r20 + 834: ee 89 ldd r30, Y+22 ; 0x16 + 836: ff 89 ldd r31, Y+23 ; 0x17 + 838: 40 81 ld r20, Z + 83a: 9c 01 movw r18, r24 + 83c: 0b 8c ldd r0, Y+27 ; 0x1b + 83e: 02 c0 rjmp .+4 ; 0x844 <_ZN14HardwareSerial5beginEm+0xce> + 840: 22 0f add r18, r18 + 842: 33 1f adc r19, r19 + 844: 0a 94 dec r0 + 846: e2 f7 brpl .-8 ; 0x840 <_ZN14HardwareSerial5beginEm+0xca> + 848: 42 2b or r20, r18 + 84a: 40 83 st Z, r20 + 84c: ee 89 ldd r30, Y+22 ; 0x16 + 84e: ff 89 ldd r31, Y+23 ; 0x17 + 850: 40 81 ld r20, Z + 852: 9c 01 movw r18, r24 + 854: 0c 8c ldd r0, Y+28 ; 0x1c + 856: 02 c0 rjmp .+4 ; 0x85c <_ZN14HardwareSerial5beginEm+0xe6> + 858: 22 0f add r18, r18 + 85a: 33 1f adc r19, r19 + 85c: 0a 94 dec r0 + 85e: e2 f7 brpl .-8 ; 0x858 <_ZN14HardwareSerial5beginEm+0xe2> + 860: 42 2b or r20, r18 + 862: 40 83 st Z, r20 + 864: ee 89 ldd r30, Y+22 ; 0x16 + 866: ff 89 ldd r31, Y+23 ; 0x17 + 868: 20 81 ld r18, Z + 86a: 0d 8c ldd r0, Y+29 ; 0x1d + 86c: 02 c0 rjmp .+4 ; 0x872 <_ZN14HardwareSerial5beginEm+0xfc> + 86e: 88 0f add r24, r24 + 870: 99 1f adc r25, r25 + 872: 0a 94 dec r0 + 874: e2 f7 brpl .-8 ; 0x86e <_ZN14HardwareSerial5beginEm+0xf8> + 876: 80 95 com r24 + 878: 82 23 and r24, r18 + 87a: 80 83 st Z, r24 + 87c: df 91 pop r29 + 87e: cf 91 pop r28 + 880: 1f 91 pop r17 + 882: 0f 91 pop r16 + 884: ff 90 pop r15 + 886: ef 90 pop r14 + 888: df 90 pop r13 + 88a: cf 90 pop r12 + 88c: bf 90 pop r11 + 88e: af 90 pop r10 + 890: 9f 90 pop r9 + 892: 08 95 ret + +00000894 <_ZN14HardwareSerial3endEv>: + 894: cf 93 push r28 + 896: df 93 push r29 + 898: fc 01 movw r30, r24 + 89a: 86 85 ldd r24, Z+14 ; 0x0e + 89c: 97 85 ldd r25, Z+15 ; 0x0f + 89e: dc 01 movw r26, r24 + 8a0: a0 5c subi r26, 0xC0 ; 192 + 8a2: bf 4f sbci r27, 0xFF ; 255 + 8a4: 8e 5b subi r24, 0xBE ; 190 + 8a6: 9f 4f sbci r25, 0xFF ; 255 + 8a8: 4d 91 ld r20, X+ + 8aa: 5c 91 ld r21, X + 8ac: 11 97 sbiw r26, 0x01 ; 1 + 8ae: ec 01 movw r28, r24 + 8b0: 28 81 ld r18, Y + 8b2: 39 81 ldd r19, Y+1 ; 0x01 + 8b4: 42 17 cp r20, r18 + 8b6: 53 07 cpc r21, r19 + 8b8: b9 f7 brne .-18 ; 0x8a8 <_ZN14HardwareSerial3endEv+0x14> + 8ba: a6 89 ldd r26, Z+22 ; 0x16 + 8bc: b7 89 ldd r27, Z+23 ; 0x17 + 8be: 4c 91 ld r20, X + 8c0: 81 e0 ldi r24, 0x01 ; 1 + 8c2: 90 e0 ldi r25, 0x00 ; 0 + 8c4: 9c 01 movw r18, r24 + 8c6: 02 8c ldd r0, Z+26 ; 0x1a + 8c8: 02 c0 rjmp .+4 ; 0x8ce <_ZN14HardwareSerial3endEv+0x3a> + 8ca: 22 0f add r18, r18 + 8cc: 33 1f adc r19, r19 + 8ce: 0a 94 dec r0 + 8d0: e2 f7 brpl .-8 ; 0x8ca <_ZN14HardwareSerial3endEv+0x36> + 8d2: 20 95 com r18 + 8d4: 24 23 and r18, r20 + 8d6: 2c 93 st X, r18 + 8d8: a6 89 ldd r26, Z+22 ; 0x16 + 8da: b7 89 ldd r27, Z+23 ; 0x17 + 8dc: 4c 91 ld r20, X + 8de: 9c 01 movw r18, r24 + 8e0: 03 8c ldd r0, Z+27 ; 0x1b + 8e2: 02 c0 rjmp .+4 ; 0x8e8 <_ZN14HardwareSerial3endEv+0x54> + 8e4: 22 0f add r18, r18 + 8e6: 33 1f adc r19, r19 + 8e8: 0a 94 dec r0 + 8ea: e2 f7 brpl .-8 ; 0x8e4 <_ZN14HardwareSerial3endEv+0x50> + 8ec: 20 95 com r18 + 8ee: 24 23 and r18, r20 + 8f0: 2c 93 st X, r18 + 8f2: a6 89 ldd r26, Z+22 ; 0x16 + 8f4: b7 89 ldd r27, Z+23 ; 0x17 + 8f6: 4c 91 ld r20, X + 8f8: 9c 01 movw r18, r24 + 8fa: 04 8c ldd r0, Z+28 ; 0x1c + 8fc: 02 c0 rjmp .+4 ; 0x902 <__stack+0x3> + 8fe: 22 0f add r18, r18 + 900: 33 1f adc r19, r19 + 902: 0a 94 dec r0 + 904: e2 f7 brpl .-8 ; 0x8fe <_ZN14HardwareSerial3endEv+0x6a> + 906: 20 95 com r18 + 908: 24 23 and r18, r20 + 90a: 2c 93 st X, r18 + 90c: a6 89 ldd r26, Z+22 ; 0x16 + 90e: b7 89 ldd r27, Z+23 ; 0x17 + 910: 2c 91 ld r18, X + 912: 05 8c ldd r0, Z+29 ; 0x1d + 914: 02 c0 rjmp .+4 ; 0x91a <__stack+0x1b> + 916: 88 0f add r24, r24 + 918: 99 1f adc r25, r25 + 91a: 0a 94 dec r0 + 91c: e2 f7 brpl .-8 ; 0x916 <__stack+0x17> + 91e: 80 95 com r24 + 920: 82 23 and r24, r18 + 922: 8c 93 st X, r24 + 924: 84 85 ldd r24, Z+12 ; 0x0c + 926: 95 85 ldd r25, Z+13 ; 0x0d + 928: fc 01 movw r30, r24 + 92a: ee 5b subi r30, 0xBE ; 190 + 92c: ff 4f sbci r31, 0xFF ; 255 + 92e: 20 81 ld r18, Z + 930: 31 81 ldd r19, Z+1 ; 0x01 + 932: 80 5c subi r24, 0xC0 ; 192 + 934: 9f 4f sbci r25, 0xFF ; 255 + 936: fc 01 movw r30, r24 + 938: 31 83 std Z+1, r19 ; 0x01 + 93a: 20 83 st Z, r18 + 93c: df 91 pop r29 + 93e: cf 91 pop r28 + 940: 08 95 ret + +00000942 <_GLOBAL__I_rx_buffer>: + 942: 10 92 85 03 sts 0x0385, r1 + 946: 10 92 84 03 sts 0x0384, r1 + 94a: 88 ee ldi r24, 0xE8 ; 232 + 94c: 93 e0 ldi r25, 0x03 ; 3 + 94e: a0 e0 ldi r26, 0x00 ; 0 + 950: b0 e0 ldi r27, 0x00 ; 0 + 952: 80 93 86 03 sts 0x0386, r24 + 956: 90 93 87 03 sts 0x0387, r25 + 95a: a0 93 88 03 sts 0x0388, r26 + 95e: b0 93 89 03 sts 0x0389, r27 + 962: e4 e8 ldi r30, 0x84 ; 132 + 964: f3 e0 ldi r31, 0x03 ; 3 + 966: 89 e7 ldi r24, 0x79 ; 121 + 968: 91 e0 ldi r25, 0x01 ; 1 + 96a: 92 93 st -Z, r25 + 96c: 82 93 st -Z, r24 + 96e: 8a ef ldi r24, 0xFA ; 250 + 970: 92 e0 ldi r25, 0x02 ; 2 + 972: 95 87 std Z+13, r25 ; 0x0d + 974: 84 87 std Z+12, r24 ; 0x0c + 976: 8e e3 ldi r24, 0x3E ; 62 + 978: 93 e0 ldi r25, 0x03 ; 3 + 97a: 97 87 std Z+15, r25 ; 0x0f + 97c: 86 87 std Z+14, r24 ; 0x0e + 97e: 85 ec ldi r24, 0xC5 ; 197 + 980: 90 e0 ldi r25, 0x00 ; 0 + 982: 91 8b std Z+17, r25 ; 0x11 + 984: 80 8b std Z+16, r24 ; 0x10 + 986: 84 ec ldi r24, 0xC4 ; 196 + 988: 90 e0 ldi r25, 0x00 ; 0 + 98a: 93 8b std Z+19, r25 ; 0x13 + 98c: 82 8b std Z+18, r24 ; 0x12 + 98e: 80 ec ldi r24, 0xC0 ; 192 + 990: 90 e0 ldi r25, 0x00 ; 0 + 992: 95 8b std Z+21, r25 ; 0x15 + 994: 84 8b std Z+20, r24 ; 0x14 + 996: 81 ec ldi r24, 0xC1 ; 193 + 998: 90 e0 ldi r25, 0x00 ; 0 + 99a: 97 8b std Z+23, r25 ; 0x17 + 99c: 86 8b std Z+22, r24 ; 0x16 + 99e: 86 ec ldi r24, 0xC6 ; 198 + 9a0: 90 e0 ldi r25, 0x00 ; 0 + 9a2: 91 8f std Z+25, r25 ; 0x19 + 9a4: 80 8f std Z+24, r24 ; 0x18 + 9a6: 84 e0 ldi r24, 0x04 ; 4 + 9a8: 82 8f std Z+26, r24 ; 0x1a + 9aa: 83 e0 ldi r24, 0x03 ; 3 + 9ac: 83 8f std Z+27, r24 ; 0x1b + 9ae: 87 e0 ldi r24, 0x07 ; 7 + 9b0: 84 8f std Z+28, r24 ; 0x1c + 9b2: 85 e0 ldi r24, 0x05 ; 5 + 9b4: 85 8f std Z+29, r24 ; 0x1d + 9b6: 81 e0 ldi r24, 0x01 ; 1 + 9b8: 86 8f std Z+30, r24 ; 0x1e + 9ba: 08 95 ret + +000009bc <_ZNK9IPAddress7printToER5Print>: + 9bc: 8f 92 push r8 + 9be: 9f 92 push r9 + 9c0: af 92 push r10 + 9c2: bf 92 push r11 + 9c4: cf 92 push r12 + 9c6: df 92 push r13 + 9c8: ef 92 push r14 + 9ca: ff 92 push r15 + 9cc: 0f 93 push r16 + 9ce: 1f 93 push r17 + 9d0: cf 93 push r28 + 9d2: df 93 push r29 + 9d4: 4c 01 movw r8, r24 + 9d6: 7b 01 movw r14, r22 + 9d8: 82 e0 ldi r24, 0x02 ; 2 + 9da: a8 2e mov r10, r24 + 9dc: b1 2c mov r11, r1 + 9de: a8 0c add r10, r8 + 9e0: b9 1c adc r11, r9 + 9e2: c0 e0 ldi r28, 0x00 ; 0 + 9e4: d0 e0 ldi r29, 0x00 ; 0 + 9e6: cc 24 eor r12, r12 + 9e8: dd 24 eor r13, r13 + 9ea: f5 01 movw r30, r10 + 9ec: 61 91 ld r22, Z+ + 9ee: 5f 01 movw r10, r30 + 9f0: c7 01 movw r24, r14 + 9f2: 4a e0 ldi r20, 0x0A ; 10 + 9f4: 50 e0 ldi r21, 0x00 ; 0 + 9f6: 0e 94 3b 07 call 0xe76 ; 0xe76 <_ZN5Print5printEhi> + 9fa: 8c 01 movw r16, r24 + 9fc: c7 01 movw r24, r14 + 9fe: 6e e2 ldi r22, 0x2E ; 46 + a00: 0e 94 1a 06 call 0xc34 ; 0xc34 <_ZN5Print5printEc> + a04: 08 0f add r16, r24 + a06: 19 1f adc r17, r25 + a08: c0 0e add r12, r16 + a0a: d1 1e adc r13, r17 + a0c: 21 96 adiw r28, 0x01 ; 1 + a0e: c3 30 cpi r28, 0x03 ; 3 + a10: d1 05 cpc r29, r1 + a12: 59 f7 brne .-42 ; 0x9ea <_ZNK9IPAddress7printToER5Print+0x2e> + a14: c7 01 movw r24, r14 + a16: f4 01 movw r30, r8 + a18: 65 81 ldd r22, Z+5 ; 0x05 + a1a: 4a e0 ldi r20, 0x0A ; 10 + a1c: 50 e0 ldi r21, 0x00 ; 0 + a1e: 0e 94 3b 07 call 0xe76 ; 0xe76 <_ZN5Print5printEhi> + a22: c8 0e add r12, r24 + a24: d9 1e adc r13, r25 + a26: c6 01 movw r24, r12 + a28: df 91 pop r29 + a2a: cf 91 pop r28 + a2c: 1f 91 pop r17 + a2e: 0f 91 pop r16 + a30: ff 90 pop r15 + a32: ef 90 pop r14 + a34: df 90 pop r13 + a36: cf 90 pop r12 + a38: bf 90 pop r11 + a3a: af 90 pop r10 + a3c: 9f 90 pop r9 + a3e: 8f 90 pop r8 + a40: 08 95 ret + +00000a42 <_ZN9IPAddressC1Ev>: + a42: fc 01 movw r30, r24 + a44: 89 e9 ldi r24, 0x99 ; 153 + a46: 91 e0 ldi r25, 0x01 ; 1 + a48: 91 83 std Z+1, r25 ; 0x01 + a4a: 80 83 st Z, r24 + a4c: 12 82 std Z+2, r1 ; 0x02 + a4e: 13 82 std Z+3, r1 ; 0x03 + a50: 14 82 std Z+4, r1 ; 0x04 + a52: 15 82 std Z+5, r1 ; 0x05 + a54: 08 95 ret + +00000a56 <_ZN9IPAddressC1Ehhhh>: + a56: 0f 93 push r16 + a58: fc 01 movw r30, r24 + a5a: 89 e9 ldi r24, 0x99 ; 153 + a5c: 91 e0 ldi r25, 0x01 ; 1 + a5e: 91 83 std Z+1, r25 ; 0x01 + a60: 80 83 st Z, r24 + a62: 62 83 std Z+2, r22 ; 0x02 + a64: 43 83 std Z+3, r20 ; 0x03 + a66: 24 83 std Z+4, r18 ; 0x04 + a68: 05 83 std Z+5, r16 ; 0x05 + a6a: 0f 91 pop r16 + a6c: 08 95 ret + +00000a6e <_ZN9IPAddressC1Em>: + a6e: fc 01 movw r30, r24 + a70: 89 e9 ldi r24, 0x99 ; 153 + a72: 91 e0 ldi r25, 0x01 ; 1 + a74: 91 83 std Z+1, r25 ; 0x01 + a76: 80 83 st Z, r24 + a78: 42 83 std Z+2, r20 ; 0x02 + a7a: 53 83 std Z+3, r21 ; 0x03 + a7c: 64 83 std Z+4, r22 ; 0x04 + a7e: 75 83 std Z+5, r23 ; 0x05 + a80: 08 95 ret + +00000a82 <_ZN9IPAddressC1EPKh>: + a82: fc 01 movw r30, r24 + a84: 89 e9 ldi r24, 0x99 ; 153 + a86: 91 e0 ldi r25, 0x01 ; 1 + a88: 91 83 std Z+1, r25 ; 0x01 + a8a: 80 83 st Z, r24 + a8c: db 01 movw r26, r22 + a8e: 2d 91 ld r18, X+ + a90: 3d 91 ld r19, X+ + a92: 4d 91 ld r20, X+ + a94: 5c 91 ld r21, X + a96: 13 97 sbiw r26, 0x03 ; 3 + a98: 22 83 std Z+2, r18 ; 0x02 + a9a: 33 83 std Z+3, r19 ; 0x03 + a9c: 44 83 std Z+4, r20 ; 0x04 + a9e: 55 83 std Z+5, r21 ; 0x05 + aa0: 08 95 ret + +00000aa2 <_ZN9IPAddressaSEPKh>: + aa2: cf 93 push r28 + aa4: df 93 push r29 + aa6: fc 01 movw r30, r24 + aa8: eb 01 movw r28, r22 + aaa: 88 81 ld r24, Y + aac: 99 81 ldd r25, Y+1 ; 0x01 + aae: aa 81 ldd r26, Y+2 ; 0x02 + ab0: bb 81 ldd r27, Y+3 ; 0x03 + ab2: 82 83 std Z+2, r24 ; 0x02 + ab4: 93 83 std Z+3, r25 ; 0x03 + ab6: a4 83 std Z+4, r26 ; 0x04 + ab8: b5 83 std Z+5, r27 ; 0x05 + aba: cf 01 movw r24, r30 + abc: df 91 pop r29 + abe: cf 91 pop r28 + ac0: 08 95 ret + +00000ac2 <_ZN9IPAddressaSEm>: + ac2: fc 01 movw r30, r24 + ac4: 42 83 std Z+2, r20 ; 0x02 + ac6: 53 83 std Z+3, r21 ; 0x03 + ac8: 64 83 std Z+4, r22 ; 0x04 + aca: 75 83 std Z+5, r23 ; 0x05 + acc: 08 95 ret + +00000ace <_ZN9IPAddresseqEPKh>: + ace: 9b 01 movw r18, r22 + ad0: bc 01 movw r22, r24 + ad2: 6e 5f subi r22, 0xFE ; 254 + ad4: 7f 4f sbci r23, 0xFF ; 255 + ad6: c9 01 movw r24, r18 + ad8: 44 e0 ldi r20, 0x04 ; 4 + ada: 50 e0 ldi r21, 0x00 ; 0 + adc: 0e 94 ed 27 call 0x4fda ; 0x4fda <memcmp> + ae0: 9c 01 movw r18, r24 + ae2: 81 e0 ldi r24, 0x01 ; 1 + ae4: 21 15 cp r18, r1 + ae6: 31 05 cpc r19, r1 + ae8: 09 f0 breq .+2 ; 0xaec <_ZN9IPAddresseqEPKh+0x1e> + aea: 80 e0 ldi r24, 0x00 ; 0 + aec: 08 95 ret + +00000aee <_GLOBAL__I__ZN9IPAddressC2Ev>: + aee: 89 e9 ldi r24, 0x99 ; 153 + af0: 91 e0 ldi r25, 0x01 ; 1 + af2: 90 93 a2 03 sts 0x03A2, r25 + af6: 80 93 a1 03 sts 0x03A1, r24 + afa: 10 92 a3 03 sts 0x03A3, r1 + afe: 10 92 a4 03 sts 0x03A4, r1 + b02: 10 92 a5 03 sts 0x03A5, r1 + b06: 10 92 a6 03 sts 0x03A6, r1 + b0a: 08 95 ret + +00000b0c <_ZN5Print5writeEPKhj>: + b0c: cf 92 push r12 + b0e: df 92 push r13 + b10: ef 92 push r14 + b12: ff 92 push r15 + b14: 0f 93 push r16 + b16: 1f 93 push r17 + b18: cf 93 push r28 + b1a: df 93 push r29 + b1c: 6c 01 movw r12, r24 + b1e: 7b 01 movw r14, r22 + b20: 8a 01 movw r16, r20 + b22: c0 e0 ldi r28, 0x00 ; 0 + b24: d0 e0 ldi r29, 0x00 ; 0 + b26: 0f c0 rjmp .+30 ; 0xb46 <_ZN5Print5writeEPKhj+0x3a> + b28: d7 01 movw r26, r14 + b2a: 6d 91 ld r22, X+ + b2c: 7d 01 movw r14, r26 + b2e: d6 01 movw r26, r12 + b30: ed 91 ld r30, X+ + b32: fc 91 ld r31, X + b34: 01 90 ld r0, Z+ + b36: f0 81 ld r31, Z + b38: e0 2d mov r30, r0 + b3a: c6 01 movw r24, r12 + b3c: 09 95 icall + b3e: c8 0f add r28, r24 + b40: d9 1f adc r29, r25 + b42: 01 50 subi r16, 0x01 ; 1 + b44: 10 40 sbci r17, 0x00 ; 0 + b46: 01 15 cp r16, r1 + b48: 11 05 cpc r17, r1 + b4a: 71 f7 brne .-36 ; 0xb28 <_ZN5Print5writeEPKhj+0x1c> + b4c: ce 01 movw r24, r28 + b4e: df 91 pop r29 + b50: cf 91 pop r28 + b52: 1f 91 pop r17 + b54: 0f 91 pop r16 + b56: ff 90 pop r15 + b58: ef 90 pop r14 + b5a: df 90 pop r13 + b5c: cf 90 pop r12 + b5e: 08 95 ret + +00000b60 <_ZN5Print5writeEPKc>: + b60: db 01 movw r26, r22 + b62: 0d 90 ld r0, X+ + b64: 00 20 and r0, r0 + b66: e9 f7 brne .-6 ; 0xb62 <_ZN5Print5writeEPKc+0x2> + b68: ad 01 movw r20, r26 + b6a: 41 50 subi r20, 0x01 ; 1 + b6c: 50 40 sbci r21, 0x00 ; 0 + b6e: 46 1b sub r20, r22 + b70: 57 0b sbc r21, r23 + b72: dc 01 movw r26, r24 + b74: ed 91 ld r30, X+ + b76: fc 91 ld r31, X + b78: 02 80 ldd r0, Z+2 ; 0x02 + b7a: f3 81 ldd r31, Z+3 ; 0x03 + b7c: e0 2d mov r30, r0 + b7e: 09 95 icall + b80: 08 95 ret + +00000b82 <_ZN5Print5printEPK19__FlashStringHelper>: + b82: ef 92 push r14 + b84: ff 92 push r15 + b86: 0f 93 push r16 + b88: 1f 93 push r17 + b8a: cf 93 push r28 + b8c: df 93 push r29 + b8e: 7c 01 movw r14, r24 + b90: 06 2f mov r16, r22 + b92: 17 2f mov r17, r23 + b94: c0 e0 ldi r28, 0x00 ; 0 + b96: d0 e0 ldi r29, 0x00 ; 0 + b98: f8 01 movw r30, r16 + b9a: 0f 5f subi r16, 0xFF ; 255 + b9c: 1f 4f sbci r17, 0xFF ; 255 + b9e: 64 91 lpm r22, Z+ + ba0: 66 23 and r22, r22 + ba2: 51 f0 breq .+20 ; 0xbb8 <_ZN5Print5printEPK19__FlashStringHelper+0x36> + ba4: f7 01 movw r30, r14 + ba6: a0 81 ld r26, Z + ba8: b1 81 ldd r27, Z+1 ; 0x01 + baa: ed 91 ld r30, X+ + bac: fc 91 ld r31, X + bae: c7 01 movw r24, r14 + bb0: 09 95 icall + bb2: c8 0f add r28, r24 + bb4: d9 1f adc r29, r25 + bb6: f0 cf rjmp .-32 ; 0xb98 <_ZN5Print5printEPK19__FlashStringHelper+0x16> + bb8: ce 01 movw r24, r28 + bba: df 91 pop r29 + bbc: cf 91 pop r28 + bbe: 1f 91 pop r17 + bc0: 0f 91 pop r16 + bc2: ff 90 pop r15 + bc4: ef 90 pop r14 + bc6: 08 95 ret + +00000bc8 <_ZN5Print5printERK6String>: + bc8: af 92 push r10 + bca: bf 92 push r11 + bcc: cf 92 push r12 + bce: df 92 push r13 + bd0: ef 92 push r14 + bd2: ff 92 push r15 + bd4: 0f 93 push r16 + bd6: 1f 93 push r17 + bd8: cf 93 push r28 + bda: df 93 push r29 + bdc: 7c 01 movw r14, r24 + bde: 6b 01 movw r12, r22 + be0: c0 e0 ldi r28, 0x00 ; 0 + be2: d0 e0 ldi r29, 0x00 ; 0 + be4: 00 e0 ldi r16, 0x00 ; 0 + be6: 10 e0 ldi r17, 0x00 ; 0 + be8: 10 c0 rjmp .+32 ; 0xc0a <_ZN5Print5printERK6String+0x42> + bea: d7 01 movw r26, r14 + bec: ed 91 ld r30, X+ + bee: fc 91 ld r31, X + bf0: a0 80 ld r10, Z + bf2: b1 80 ldd r11, Z+1 ; 0x01 + bf4: c6 01 movw r24, r12 + bf6: be 01 movw r22, r28 + bf8: 0e 94 b6 13 call 0x276c ; 0x276c <_ZNK6StringixEj> + bfc: 68 2f mov r22, r24 + bfe: c7 01 movw r24, r14 + c00: f5 01 movw r30, r10 + c02: 09 95 icall + c04: 08 0f add r16, r24 + c06: 19 1f adc r17, r25 + c08: 21 96 adiw r28, 0x01 ; 1 + c0a: f6 01 movw r30, r12 + c0c: 84 81 ldd r24, Z+4 ; 0x04 + c0e: 95 81 ldd r25, Z+5 ; 0x05 + c10: c8 17 cp r28, r24 + c12: d9 07 cpc r29, r25 + c14: 50 f3 brcs .-44 ; 0xbea <_ZN5Print5printERK6String+0x22> + c16: c8 01 movw r24, r16 + c18: df 91 pop r29 + c1a: cf 91 pop r28 + c1c: 1f 91 pop r17 + c1e: 0f 91 pop r16 + c20: ff 90 pop r15 + c22: ef 90 pop r14 + c24: df 90 pop r13 + c26: cf 90 pop r12 + c28: bf 90 pop r11 + c2a: af 90 pop r10 + c2c: 08 95 ret + +00000c2e <_ZN5Print5printEPKc>: + c2e: 0e 94 b0 05 call 0xb60 ; 0xb60 <_ZN5Print5writeEPKc> + c32: 08 95 ret + +00000c34 <_ZN5Print5printEc>: + c34: dc 01 movw r26, r24 + c36: ed 91 ld r30, X+ + c38: fc 91 ld r31, X + c3a: 01 90 ld r0, Z+ + c3c: f0 81 ld r31, Z + c3e: e0 2d mov r30, r0 + c40: 09 95 icall + c42: 08 95 ret + +00000c44 <_ZN5Print5printERK9Printable>: + c44: 9c 01 movw r18, r24 + c46: cb 01 movw r24, r22 + c48: db 01 movw r26, r22 + c4a: ed 91 ld r30, X+ + c4c: fc 91 ld r31, X + c4e: 01 90 ld r0, Z+ + c50: f0 81 ld r31, Z + c52: e0 2d mov r30, r0 + c54: b9 01 movw r22, r18 + c56: 09 95 icall + c58: 08 95 ret + +00000c5a <_ZN5Print7printlnEv>: + c5a: 0f 93 push r16 + c5c: 1f 93 push r17 + c5e: cf 93 push r28 + c60: df 93 push r29 + c62: ec 01 movw r28, r24 + c64: 6d e0 ldi r22, 0x0D ; 13 + c66: 0e 94 1a 06 call 0xc34 ; 0xc34 <_ZN5Print5printEc> + c6a: 8c 01 movw r16, r24 + c6c: ce 01 movw r24, r28 + c6e: 6a e0 ldi r22, 0x0A ; 10 + c70: 0e 94 1a 06 call 0xc34 ; 0xc34 <_ZN5Print5printEc> + c74: 08 0f add r16, r24 + c76: 19 1f adc r17, r25 + c78: c8 01 movw r24, r16 + c7a: df 91 pop r29 + c7c: cf 91 pop r28 + c7e: 1f 91 pop r17 + c80: 0f 91 pop r16 + c82: 08 95 ret + +00000c84 <_ZN5Print7printlnEPK19__FlashStringHelper>: + c84: 0f 93 push r16 + c86: 1f 93 push r17 + c88: cf 93 push r28 + c8a: df 93 push r29 + c8c: ec 01 movw r28, r24 + c8e: 0e 94 c1 05 call 0xb82 ; 0xb82 <_ZN5Print5printEPK19__FlashStringHelper> + c92: 8c 01 movw r16, r24 + c94: ce 01 movw r24, r28 + c96: 0e 94 2d 06 call 0xc5a ; 0xc5a <_ZN5Print7printlnEv> + c9a: 08 0f add r16, r24 + c9c: 19 1f adc r17, r25 + c9e: c8 01 movw r24, r16 + ca0: df 91 pop r29 + ca2: cf 91 pop r28 + ca4: 1f 91 pop r17 + ca6: 0f 91 pop r16 + ca8: 08 95 ret + +00000caa <_ZN5Print7printlnERK6String>: + caa: 0f 93 push r16 + cac: 1f 93 push r17 + cae: cf 93 push r28 + cb0: df 93 push r29 + cb2: ec 01 movw r28, r24 + cb4: 0e 94 e4 05 call 0xbc8 ; 0xbc8 <_ZN5Print5printERK6String> + cb8: 8c 01 movw r16, r24 + cba: ce 01 movw r24, r28 + cbc: 0e 94 2d 06 call 0xc5a ; 0xc5a <_ZN5Print7printlnEv> + cc0: 08 0f add r16, r24 + cc2: 19 1f adc r17, r25 + cc4: c8 01 movw r24, r16 + cc6: df 91 pop r29 + cc8: cf 91 pop r28 + cca: 1f 91 pop r17 + ccc: 0f 91 pop r16 + cce: 08 95 ret + +00000cd0 <_ZN5Print7printlnEPKc>: + cd0: 0f 93 push r16 + cd2: 1f 93 push r17 + cd4: cf 93 push r28 + cd6: df 93 push r29 + cd8: ec 01 movw r28, r24 + cda: 0e 94 b0 05 call 0xb60 ; 0xb60 <_ZN5Print5writeEPKc> + cde: 8c 01 movw r16, r24 + ce0: ce 01 movw r24, r28 + ce2: 0e 94 2d 06 call 0xc5a ; 0xc5a <_ZN5Print7printlnEv> + ce6: 08 0f add r16, r24 + ce8: 19 1f adc r17, r25 + cea: c8 01 movw r24, r16 + cec: df 91 pop r29 + cee: cf 91 pop r28 + cf0: 1f 91 pop r17 + cf2: 0f 91 pop r16 + cf4: 08 95 ret + +00000cf6 <_ZN5Print7printlnEc>: + cf6: 0f 93 push r16 + cf8: 1f 93 push r17 + cfa: cf 93 push r28 + cfc: df 93 push r29 + cfe: ec 01 movw r28, r24 + d00: 0e 94 1a 06 call 0xc34 ; 0xc34 <_ZN5Print5printEc> + d04: 8c 01 movw r16, r24 + d06: ce 01 movw r24, r28 + d08: 0e 94 2d 06 call 0xc5a ; 0xc5a <_ZN5Print7printlnEv> + d0c: 08 0f add r16, r24 + d0e: 19 1f adc r17, r25 + d10: c8 01 movw r24, r16 + d12: df 91 pop r29 + d14: cf 91 pop r28 + d16: 1f 91 pop r17 + d18: 0f 91 pop r16 + d1a: 08 95 ret + +00000d1c <_ZN5Print7printlnERK9Printable>: + d1c: 0f 93 push r16 + d1e: 1f 93 push r17 + d20: cf 93 push r28 + d22: df 93 push r29 + d24: ec 01 movw r28, r24 + d26: 0e 94 22 06 call 0xc44 ; 0xc44 <_ZN5Print5printERK9Printable> + d2a: 8c 01 movw r16, r24 + d2c: ce 01 movw r24, r28 + d2e: 0e 94 2d 06 call 0xc5a ; 0xc5a <_ZN5Print7printlnEv> + d32: 08 0f add r16, r24 + d34: 19 1f adc r17, r25 + d36: c8 01 movw r24, r16 + d38: df 91 pop r29 + d3a: cf 91 pop r28 + d3c: 1f 91 pop r17 + d3e: 0f 91 pop r16 + d40: 08 95 ret + +00000d42 <_ZN5Print11printNumberEmh>: + d42: 8f 92 push r8 + d44: 9f 92 push r9 + d46: af 92 push r10 + d48: bf 92 push r11 + d4a: cf 92 push r12 + d4c: df 92 push r13 + d4e: ef 92 push r14 + d50: ff 92 push r15 + d52: 0f 93 push r16 + d54: 1f 93 push r17 + d56: df 93 push r29 + d58: cf 93 push r28 + d5a: cd b7 in r28, 0x3d ; 61 + d5c: de b7 in r29, 0x3e ; 62 + d5e: a1 97 sbiw r28, 0x21 ; 33 + d60: 0f b6 in r0, 0x3f ; 63 + d62: f8 94 cli + d64: de bf out 0x3e, r29 ; 62 + d66: 0f be out 0x3f, r0 ; 63 + d68: cd bf out 0x3d, r28 ; 61 + d6a: 6c 01 movw r12, r24 + d6c: 04 2f mov r16, r20 + d6e: e5 2f mov r30, r21 + d70: cb 01 movw r24, r22 + d72: 12 2f mov r17, r18 + d74: 19 a2 std Y+33, r1 ; 0x21 + d76: 22 30 cpi r18, 0x02 ; 2 + d78: 08 f4 brcc .+2 ; 0xd7c <_ZN5Print11printNumberEmh+0x3a> + d7a: 1a e0 ldi r17, 0x0A ; 10 + d7c: 21 e2 ldi r18, 0x21 ; 33 + d7e: e2 2e mov r14, r18 + d80: f1 2c mov r15, r1 + d82: ec 0e add r14, r28 + d84: fd 1e adc r15, r29 + d86: 81 2e mov r8, r17 + d88: 99 24 eor r9, r9 + d8a: aa 24 eor r10, r10 + d8c: bb 24 eor r11, r11 + d8e: 03 c0 rjmp .+6 ; 0xd96 <_ZN5Print11printNumberEmh+0x54> + d90: 02 2f mov r16, r18 + d92: e3 2f mov r30, r19 + d94: ca 01 movw r24, r20 + d96: 60 2f mov r22, r16 + d98: 7e 2f mov r23, r30 + d9a: a5 01 movw r20, r10 + d9c: 94 01 movw r18, r8 + d9e: 0e 94 cd 24 call 0x499a ; 0x499a <__udivmodsi4> + da2: 12 9f mul r17, r18 + da4: 80 2d mov r24, r0 + da6: 11 24 eor r1, r1 + da8: 08 1b sub r16, r24 + daa: 08 94 sec + dac: e1 08 sbc r14, r1 + dae: f1 08 sbc r15, r1 + db0: 0a 30 cpi r16, 0x0A ; 10 + db2: 14 f4 brge .+4 ; 0xdb8 <_ZN5Print11printNumberEmh+0x76> + db4: 00 5d subi r16, 0xD0 ; 208 + db6: 01 c0 rjmp .+2 ; 0xdba <_ZN5Print11printNumberEmh+0x78> + db8: 09 5c subi r16, 0xC9 ; 201 + dba: f7 01 movw r30, r14 + dbc: 00 83 st Z, r16 + dbe: 21 15 cp r18, r1 + dc0: 31 05 cpc r19, r1 + dc2: 41 05 cpc r20, r1 + dc4: 51 05 cpc r21, r1 + dc6: 21 f7 brne .-56 ; 0xd90 <_ZN5Print11printNumberEmh+0x4e> + dc8: c6 01 movw r24, r12 + dca: b7 01 movw r22, r14 + dcc: 0e 94 b0 05 call 0xb60 ; 0xb60 <_ZN5Print5writeEPKc> + dd0: a1 96 adiw r28, 0x21 ; 33 + dd2: 0f b6 in r0, 0x3f ; 63 + dd4: f8 94 cli + dd6: de bf out 0x3e, r29 ; 62 + dd8: 0f be out 0x3f, r0 ; 63 + dda: cd bf out 0x3d, r28 ; 61 + ddc: cf 91 pop r28 + dde: df 91 pop r29 + de0: 1f 91 pop r17 + de2: 0f 91 pop r16 + de4: ff 90 pop r15 + de6: ef 90 pop r14 + de8: df 90 pop r13 + dea: cf 90 pop r12 + dec: bf 90 pop r11 + dee: af 90 pop r10 + df0: 9f 90 pop r9 + df2: 8f 90 pop r8 + df4: 08 95 ret + +00000df6 <_ZN5Print5printEmi>: + df6: 21 15 cp r18, r1 + df8: 31 05 cpc r19, r1 + dfa: 49 f4 brne .+18 ; 0xe0e <_ZN5Print5printEmi+0x18> + dfc: dc 01 movw r26, r24 + dfe: ed 91 ld r30, X+ + e00: fc 91 ld r31, X + e02: 01 90 ld r0, Z+ + e04: f0 81 ld r31, Z + e06: e0 2d mov r30, r0 + e08: 64 2f mov r22, r20 + e0a: 09 95 icall + e0c: 08 95 ret + e0e: 0e 94 a1 06 call 0xd42 ; 0xd42 <_ZN5Print11printNumberEmh> + e12: 08 95 ret + +00000e14 <_ZN5Print7printlnEmi>: + e14: 0f 93 push r16 + e16: 1f 93 push r17 + e18: cf 93 push r28 + e1a: df 93 push r29 + e1c: ec 01 movw r28, r24 + e1e: 0e 94 fb 06 call 0xdf6 ; 0xdf6 <_ZN5Print5printEmi> + e22: 8c 01 movw r16, r24 + e24: ce 01 movw r24, r28 + e26: 0e 94 2d 06 call 0xc5a ; 0xc5a <_ZN5Print7printlnEv> + e2a: 08 0f add r16, r24 + e2c: 19 1f adc r17, r25 + e2e: c8 01 movw r24, r16 + e30: df 91 pop r29 + e32: cf 91 pop r28 + e34: 1f 91 pop r17 + e36: 0f 91 pop r16 + e38: 08 95 ret + +00000e3a <_ZN5Print5printEji>: + e3a: 9a 01 movw r18, r20 + e3c: ab 01 movw r20, r22 + e3e: 60 e0 ldi r22, 0x00 ; 0 + e40: 70 e0 ldi r23, 0x00 ; 0 + e42: 0e 94 fb 06 call 0xdf6 ; 0xdf6 <_ZN5Print5printEmi> + e46: 08 95 ret + +00000e48 <_ZN5Print7printlnEji>: + e48: 0f 93 push r16 + e4a: 1f 93 push r17 + e4c: cf 93 push r28 + e4e: df 93 push r29 + e50: ec 01 movw r28, r24 + e52: 9a 01 movw r18, r20 + e54: ab 01 movw r20, r22 + e56: 60 e0 ldi r22, 0x00 ; 0 + e58: 70 e0 ldi r23, 0x00 ; 0 + e5a: 0e 94 fb 06 call 0xdf6 ; 0xdf6 <_ZN5Print5printEmi> + e5e: 8c 01 movw r16, r24 + e60: ce 01 movw r24, r28 + e62: 0e 94 2d 06 call 0xc5a ; 0xc5a <_ZN5Print7printlnEv> + e66: 08 0f add r16, r24 + e68: 19 1f adc r17, r25 + e6a: c8 01 movw r24, r16 + e6c: df 91 pop r29 + e6e: cf 91 pop r28 + e70: 1f 91 pop r17 + e72: 0f 91 pop r16 + e74: 08 95 ret + +00000e76 <_ZN5Print5printEhi>: + e76: 9a 01 movw r18, r20 + e78: 46 2f mov r20, r22 + e7a: 50 e0 ldi r21, 0x00 ; 0 + e7c: 60 e0 ldi r22, 0x00 ; 0 + e7e: 70 e0 ldi r23, 0x00 ; 0 + e80: 0e 94 fb 06 call 0xdf6 ; 0xdf6 <_ZN5Print5printEmi> + e84: 08 95 ret + +00000e86 <_ZN5Print7printlnEhi>: + e86: 0f 93 push r16 + e88: 1f 93 push r17 + e8a: cf 93 push r28 + e8c: df 93 push r29 + e8e: ec 01 movw r28, r24 + e90: 9a 01 movw r18, r20 + e92: 46 2f mov r20, r22 + e94: 50 e0 ldi r21, 0x00 ; 0 + e96: 60 e0 ldi r22, 0x00 ; 0 + e98: 70 e0 ldi r23, 0x00 ; 0 + e9a: 0e 94 fb 06 call 0xdf6 ; 0xdf6 <_ZN5Print5printEmi> + e9e: 8c 01 movw r16, r24 + ea0: ce 01 movw r24, r28 + ea2: 0e 94 2d 06 call 0xc5a ; 0xc5a <_ZN5Print7printlnEv> + ea6: 08 0f add r16, r24 + ea8: 19 1f adc r17, r25 + eaa: c8 01 movw r24, r16 + eac: df 91 pop r29 + eae: cf 91 pop r28 + eb0: 1f 91 pop r17 + eb2: 0f 91 pop r16 + eb4: 08 95 ret + +00000eb6 <_ZN5Print5printEli>: + eb6: cf 92 push r12 + eb8: df 92 push r13 + eba: ef 92 push r14 + ebc: ff 92 push r15 + ebe: 0f 93 push r16 + ec0: 1f 93 push r17 + ec2: cf 93 push r28 + ec4: df 93 push r29 + ec6: ec 01 movw r28, r24 + ec8: 7a 01 movw r14, r20 + eca: 8b 01 movw r16, r22 + ecc: 21 15 cp r18, r1 + ece: 31 05 cpc r19, r1 + ed0: 41 f4 brne .+16 ; 0xee2 <_ZN5Print5printEli+0x2c> + ed2: e8 81 ld r30, Y + ed4: f9 81 ldd r31, Y+1 ; 0x01 + ed6: 01 90 ld r0, Z+ + ed8: f0 81 ld r31, Z + eda: e0 2d mov r30, r0 + edc: 64 2f mov r22, r20 + ede: 09 95 icall + ee0: 1a c0 rjmp .+52 ; 0xf16 <_ZN5Print5printEli+0x60> + ee2: 2a 30 cpi r18, 0x0A ; 10 + ee4: 31 05 cpc r19, r1 + ee6: a9 f4 brne .+42 ; 0xf12 <_ZN5Print5printEli+0x5c> + ee8: 77 ff sbrs r23, 7 + eea: 12 c0 rjmp .+36 ; 0xf10 <_ZN5Print5printEli+0x5a> + eec: 6d e2 ldi r22, 0x2D ; 45 + eee: 0e 94 1a 06 call 0xc34 ; 0xc34 <_ZN5Print5printEc> + ef2: 6c 01 movw r12, r24 + ef4: 44 27 eor r20, r20 + ef6: 55 27 eor r21, r21 + ef8: ba 01 movw r22, r20 + efa: 4e 19 sub r20, r14 + efc: 5f 09 sbc r21, r15 + efe: 60 0b sbc r22, r16 + f00: 71 0b sbc r23, r17 + f02: ce 01 movw r24, r28 + f04: 2a e0 ldi r18, 0x0A ; 10 + f06: 0e 94 a1 06 call 0xd42 ; 0xd42 <_ZN5Print11printNumberEmh> + f0a: c8 0e add r12, r24 + f0c: d9 1e adc r13, r25 + f0e: 04 c0 rjmp .+8 ; 0xf18 <_ZN5Print5printEli+0x62> + f10: 2a e0 ldi r18, 0x0A ; 10 + f12: 0e 94 a1 06 call 0xd42 ; 0xd42 <_ZN5Print11printNumberEmh> + f16: 6c 01 movw r12, r24 + f18: c6 01 movw r24, r12 + f1a: df 91 pop r29 + f1c: cf 91 pop r28 + f1e: 1f 91 pop r17 + f20: 0f 91 pop r16 + f22: ff 90 pop r15 + f24: ef 90 pop r14 + f26: df 90 pop r13 + f28: cf 90 pop r12 + f2a: 08 95 ret + +00000f2c <_ZN5Print7printlnEli>: + f2c: 0f 93 push r16 + f2e: 1f 93 push r17 + f30: cf 93 push r28 + f32: df 93 push r29 + f34: ec 01 movw r28, r24 + f36: 0e 94 5b 07 call 0xeb6 ; 0xeb6 <_ZN5Print5printEli> + f3a: 8c 01 movw r16, r24 + f3c: ce 01 movw r24, r28 + f3e: 0e 94 2d 06 call 0xc5a ; 0xc5a <_ZN5Print7printlnEv> + f42: 08 0f add r16, r24 + f44: 19 1f adc r17, r25 + f46: c8 01 movw r24, r16 + f48: df 91 pop r29 + f4a: cf 91 pop r28 + f4c: 1f 91 pop r17 + f4e: 0f 91 pop r16 + f50: 08 95 ret + +00000f52 <_ZN5Print5printEii>: + f52: 9a 01 movw r18, r20 + f54: fb 01 movw r30, r22 + f56: af 01 movw r20, r30 + f58: 66 27 eor r22, r22 + f5a: 57 fd sbrc r21, 7 + f5c: 60 95 com r22 + f5e: 76 2f mov r23, r22 + f60: 0e 94 5b 07 call 0xeb6 ; 0xeb6 <_ZN5Print5printEli> + f64: 08 95 ret + +00000f66 <_ZN5Print7printlnEii>: + f66: 0f 93 push r16 + f68: 1f 93 push r17 + f6a: cf 93 push r28 + f6c: df 93 push r29 + f6e: ec 01 movw r28, r24 + f70: 9a 01 movw r18, r20 + f72: cb 01 movw r24, r22 + f74: ac 01 movw r20, r24 + f76: 66 27 eor r22, r22 + f78: 57 fd sbrc r21, 7 + f7a: 60 95 com r22 + f7c: 76 2f mov r23, r22 + f7e: ce 01 movw r24, r28 + f80: 0e 94 5b 07 call 0xeb6 ; 0xeb6 <_ZN5Print5printEli> + f84: 8c 01 movw r16, r24 + f86: ce 01 movw r24, r28 + f88: 0e 94 2d 06 call 0xc5a ; 0xc5a <_ZN5Print7printlnEv> + f8c: 08 0f add r16, r24 + f8e: 19 1f adc r17, r25 + f90: c8 01 movw r24, r16 + f92: df 91 pop r29 + f94: cf 91 pop r28 + f96: 1f 91 pop r17 + f98: 0f 91 pop r16 + f9a: 08 95 ret + +00000f9c <_ZN5Print10printFloatEdh>: + f9c: 6f 92 push r6 + f9e: 7f 92 push r7 + fa0: 9f 92 push r9 + fa2: af 92 push r10 + fa4: bf 92 push r11 + fa6: cf 92 push r12 + fa8: df 92 push r13 + faa: ef 92 push r14 + fac: ff 92 push r15 + fae: 0f 93 push r16 + fb0: 1f 93 push r17 + fb2: cf 93 push r28 + fb4: df 93 push r29 + fb6: 3c 01 movw r6, r24 + fb8: 7a 01 movw r14, r20 + fba: 8b 01 movw r16, r22 + fbc: c2 2e mov r12, r18 + fbe: cb 01 movw r24, r22 + fc0: ba 01 movw r22, r20 + fc2: 20 e0 ldi r18, 0x00 ; 0 + fc4: 30 e0 ldi r19, 0x00 ; 0 + fc6: a9 01 movw r20, r18 + fc8: 0e 94 57 21 call 0x42ae ; 0x42ae <__ltsf2> + fcc: 87 ff sbrs r24, 7 + fce: 0a c0 rjmp .+20 ; 0xfe4 <_ZN5Print10printFloatEdh+0x48> + fd0: c3 01 movw r24, r6 + fd2: 6d e2 ldi r22, 0x2D ; 45 + fd4: 0e 94 1a 06 call 0xc34 ; 0xc34 <_ZN5Print5printEc> + fd8: ec 01 movw r28, r24 + fda: 17 fb bst r17, 7 + fdc: 10 95 com r17 + fde: 17 f9 bld r17, 7 + fe0: 10 95 com r17 + fe2: 02 c0 rjmp .+4 ; 0xfe8 <_ZN5Print10printFloatEdh+0x4c> + fe4: c0 e0 ldi r28, 0x00 ; 0 + fe6: d0 e0 ldi r29, 0x00 ; 0 + fe8: dd 24 eor r13, r13 + fea: 50 e0 ldi r21, 0x00 ; 0 + fec: 40 e0 ldi r20, 0x00 ; 0 + fee: 30 e0 ldi r19, 0x00 ; 0 + ff0: 2f e3 ldi r18, 0x3F ; 63 + ff2: 11 c0 rjmp .+34 ; 0x1016 <_ZN5Print10printFloatEdh+0x7a> + ff4: da 01 movw r26, r20 + ff6: f9 01 movw r30, r18 + ff8: 6b 2f mov r22, r27 + ffa: 74 2f mov r23, r20 + ffc: 8f 2f mov r24, r31 + ffe: 92 2f mov r25, r18 + 1000: 20 e0 ldi r18, 0x00 ; 0 + 1002: 30 e0 ldi r19, 0x00 ; 0 + 1004: 40 e2 ldi r20, 0x20 ; 32 + 1006: 51 e4 ldi r21, 0x41 ; 65 + 1008: 0e 94 79 20 call 0x40f2 ; 0x40f2 <__divsf3> + 100c: 56 2f mov r21, r22 + 100e: 47 2f mov r20, r23 + 1010: 38 2f mov r19, r24 + 1012: 29 2f mov r18, r25 + 1014: d3 94 inc r13 + 1016: dc 14 cp r13, r12 + 1018: 68 f3 brcs .-38 ; 0xff4 <_ZN5Print10printFloatEdh+0x58> + 101a: c8 01 movw r24, r16 + 101c: b7 01 movw r22, r14 + 101e: da 01 movw r26, r20 + 1020: f9 01 movw r30, r18 + 1022: 2b 2f mov r18, r27 + 1024: 34 2f mov r19, r20 + 1026: 4f 2f mov r20, r31 + 1028: 5e 2f mov r21, r30 + 102a: 0e 94 21 1f call 0x3e42 ; 0x3e42 <__addsf3> + 102e: 5b 01 movw r10, r22 + 1030: f8 2e mov r15, r24 + 1032: 99 2e mov r9, r25 + 1034: 7b 2d mov r23, r11 + 1036: 0e 94 ab 1d call 0x3b56 ; 0x3b56 <__fixunssfsi> + 103a: 16 2f mov r17, r22 + 103c: d7 2e mov r13, r23 + 103e: e8 2e mov r14, r24 + 1040: 09 2f mov r16, r25 + 1042: 0e 94 39 22 call 0x4472 ; 0x4472 <__floatunsisf> + 1046: 9b 01 movw r18, r22 + 1048: ac 01 movw r20, r24 + 104a: 6a 2d mov r22, r10 + 104c: 7b 2d mov r23, r11 + 104e: 8f 2d mov r24, r15 + 1050: 99 2d mov r25, r9 + 1052: 0e 94 4e 1f call 0x3e9c ; 0x3e9c <__subsf3> + 1056: 96 2e mov r9, r22 + 1058: a7 2e mov r10, r23 + 105a: b8 2e mov r11, r24 + 105c: f9 2e mov r15, r25 + 105e: c3 01 movw r24, r6 + 1060: 41 2f mov r20, r17 + 1062: 5d 2d mov r21, r13 + 1064: 6e 2d mov r22, r14 + 1066: 70 2f mov r23, r16 + 1068: 2a e0 ldi r18, 0x0A ; 10 + 106a: 30 e0 ldi r19, 0x00 ; 0 + 106c: 0e 94 fb 06 call 0xdf6 ; 0xdf6 <_ZN5Print5printEmi> + 1070: c8 0f add r28, r24 + 1072: d9 1f adc r29, r25 + 1074: cc 20 and r12, r12 + 1076: b9 f1 breq .+110 ; 0x10e6 <_ZN5Print10printFloatEdh+0x14a> + 1078: c3 01 movw r24, r6 + 107a: 61 ea ldi r22, 0xA1 ; 161 + 107c: 71 e0 ldi r23, 0x01 ; 1 + 107e: 0e 94 b0 05 call 0xb60 ; 0xb60 <_ZN5Print5writeEPKc> + 1082: c8 0f add r28, r24 + 1084: d9 1f adc r29, r25 + 1086: 2f c0 rjmp .+94 ; 0x10e6 <_ZN5Print10printFloatEdh+0x14a> + 1088: 69 2d mov r22, r9 + 108a: 7a 2d mov r23, r10 + 108c: 8b 2d mov r24, r11 + 108e: 9f 2d mov r25, r15 + 1090: 20 e0 ldi r18, 0x00 ; 0 + 1092: 30 e0 ldi r19, 0x00 ; 0 + 1094: 40 e2 ldi r20, 0x20 ; 32 + 1096: 51 e4 ldi r21, 0x41 ; 65 + 1098: 0e 94 7f 1f call 0x3efe ; 0x3efe <__mulsf3> + 109c: d6 2e mov r13, r22 + 109e: b7 2e mov r11, r23 + 10a0: a8 2e mov r10, r24 + 10a2: 99 2e mov r9, r25 + 10a4: 0e 94 e7 21 call 0x43ce ; 0x43ce <__fixsfsi> + 10a8: 7b 01 movw r14, r22 + 10aa: 00 27 eor r16, r16 + 10ac: f7 fc sbrc r15, 7 + 10ae: 00 95 com r16 + 10b0: 10 2f mov r17, r16 + 10b2: c3 01 movw r24, r6 + 10b4: b8 01 movw r22, r16 + 10b6: a7 01 movw r20, r14 + 10b8: 2a e0 ldi r18, 0x0A ; 10 + 10ba: 30 e0 ldi r19, 0x00 ; 0 + 10bc: 0e 94 5b 07 call 0xeb6 ; 0xeb6 <_ZN5Print5printEli> + 10c0: c8 0f add r28, r24 + 10c2: d9 1f adc r29, r25 + 10c4: c8 01 movw r24, r16 + 10c6: b7 01 movw r22, r14 + 10c8: 0e 94 87 21 call 0x430e ; 0x430e <__floatsisf> + 10cc: 9b 01 movw r18, r22 + 10ce: ac 01 movw r20, r24 + 10d0: 6d 2d mov r22, r13 + 10d2: 7b 2d mov r23, r11 + 10d4: 8a 2d mov r24, r10 + 10d6: 99 2d mov r25, r9 + 10d8: 0e 94 4e 1f call 0x3e9c ; 0x3e9c <__subsf3> + 10dc: 96 2e mov r9, r22 + 10de: a7 2e mov r10, r23 + 10e0: b8 2e mov r11, r24 + 10e2: f9 2e mov r15, r25 + 10e4: ca 94 dec r12 + 10e6: cc 20 and r12, r12 + 10e8: 79 f6 brne .-98 ; 0x1088 <_ZN5Print10printFloatEdh+0xec> + 10ea: ce 01 movw r24, r28 + 10ec: df 91 pop r29 + 10ee: cf 91 pop r28 + 10f0: 1f 91 pop r17 + 10f2: 0f 91 pop r16 + 10f4: ff 90 pop r15 + 10f6: ef 90 pop r14 + 10f8: df 90 pop r13 + 10fa: cf 90 pop r12 + 10fc: bf 90 pop r11 + 10fe: af 90 pop r10 + 1100: 9f 90 pop r9 + 1102: 7f 90 pop r7 + 1104: 6f 90 pop r6 + 1106: 08 95 ret + +00001108 <_ZN5Print5printEdi>: + 1108: 0e 94 ce 07 call 0xf9c ; 0xf9c <_ZN5Print10printFloatEdh> + 110c: 08 95 ret + +0000110e <_ZN5Print7printlnEdi>: + 110e: 0f 93 push r16 + 1110: 1f 93 push r17 + 1112: cf 93 push r28 + 1114: df 93 push r29 + 1116: ec 01 movw r28, r24 + 1118: 0e 94 ce 07 call 0xf9c ; 0xf9c <_ZN5Print10printFloatEdh> + 111c: 8c 01 movw r16, r24 + 111e: ce 01 movw r24, r28 + 1120: 0e 94 2d 06 call 0xc5a ; 0xc5a <_ZN5Print7printlnEv> + 1124: 08 0f add r16, r24 + 1126: 19 1f adc r17, r25 + 1128: c8 01 movw r24, r16 + 112a: df 91 pop r29 + 112c: cf 91 pop r28 + 112e: 1f 91 pop r17 + 1130: 0f 91 pop r16 + 1132: 08 95 ret + +00001134 <_ZN6Stream9timedReadEv>: + 1134: cf 93 push r28 + 1136: df 93 push r29 + 1138: ec 01 movw r28, r24 + 113a: 0e 94 4e 17 call 0x2e9c ; 0x2e9c <millis> + 113e: 68 87 std Y+8, r22 ; 0x08 + 1140: 79 87 std Y+9, r23 ; 0x09 + 1142: 8a 87 std Y+10, r24 ; 0x0a + 1144: 9b 87 std Y+11, r25 ; 0x0b + 1146: e8 81 ld r30, Y + 1148: f9 81 ldd r31, Y+1 ; 0x01 + 114a: 06 80 ldd r0, Z+6 ; 0x06 + 114c: f7 81 ldd r31, Z+7 ; 0x07 + 114e: e0 2d mov r30, r0 + 1150: ce 01 movw r24, r28 + 1152: 09 95 icall + 1154: 9c 01 movw r18, r24 + 1156: 97 ff sbrs r25, 7 + 1158: 15 c0 rjmp .+42 ; 0x1184 <_ZN6Stream9timedReadEv+0x50> + 115a: 0e 94 4e 17 call 0x2e9c ; 0x2e9c <millis> + 115e: 28 85 ldd r18, Y+8 ; 0x08 + 1160: 39 85 ldd r19, Y+9 ; 0x09 + 1162: 4a 85 ldd r20, Y+10 ; 0x0a + 1164: 5b 85 ldd r21, Y+11 ; 0x0b + 1166: 62 1b sub r22, r18 + 1168: 73 0b sbc r23, r19 + 116a: 84 0b sbc r24, r20 + 116c: 95 0b sbc r25, r21 + 116e: 2c 81 ldd r18, Y+4 ; 0x04 + 1170: 3d 81 ldd r19, Y+5 ; 0x05 + 1172: 4e 81 ldd r20, Y+6 ; 0x06 + 1174: 5f 81 ldd r21, Y+7 ; 0x07 + 1176: 62 17 cp r22, r18 + 1178: 73 07 cpc r23, r19 + 117a: 84 07 cpc r24, r20 + 117c: 95 07 cpc r25, r21 + 117e: 18 f3 brcs .-58 ; 0x1146 <_ZN6Stream9timedReadEv+0x12> + 1180: 2f ef ldi r18, 0xFF ; 255 + 1182: 3f ef ldi r19, 0xFF ; 255 + 1184: c9 01 movw r24, r18 + 1186: df 91 pop r29 + 1188: cf 91 pop r28 + 118a: 08 95 ret + +0000118c <_ZN6Stream9timedPeekEv>: + 118c: cf 93 push r28 + 118e: df 93 push r29 + 1190: ec 01 movw r28, r24 + 1192: 0e 94 4e 17 call 0x2e9c ; 0x2e9c <millis> + 1196: 68 87 std Y+8, r22 ; 0x08 + 1198: 79 87 std Y+9, r23 ; 0x09 + 119a: 8a 87 std Y+10, r24 ; 0x0a + 119c: 9b 87 std Y+11, r25 ; 0x0b + 119e: e8 81 ld r30, Y + 11a0: f9 81 ldd r31, Y+1 ; 0x01 + 11a2: 00 84 ldd r0, Z+8 ; 0x08 + 11a4: f1 85 ldd r31, Z+9 ; 0x09 + 11a6: e0 2d mov r30, r0 + 11a8: ce 01 movw r24, r28 + 11aa: 09 95 icall + 11ac: 9c 01 movw r18, r24 + 11ae: 97 ff sbrs r25, 7 + 11b0: 15 c0 rjmp .+42 ; 0x11dc <_ZN6Stream9timedPeekEv+0x50> + 11b2: 0e 94 4e 17 call 0x2e9c ; 0x2e9c <millis> + 11b6: 28 85 ldd r18, Y+8 ; 0x08 + 11b8: 39 85 ldd r19, Y+9 ; 0x09 + 11ba: 4a 85 ldd r20, Y+10 ; 0x0a + 11bc: 5b 85 ldd r21, Y+11 ; 0x0b + 11be: 62 1b sub r22, r18 + 11c0: 73 0b sbc r23, r19 + 11c2: 84 0b sbc r24, r20 + 11c4: 95 0b sbc r25, r21 + 11c6: 2c 81 ldd r18, Y+4 ; 0x04 + 11c8: 3d 81 ldd r19, Y+5 ; 0x05 + 11ca: 4e 81 ldd r20, Y+6 ; 0x06 + 11cc: 5f 81 ldd r21, Y+7 ; 0x07 + 11ce: 62 17 cp r22, r18 + 11d0: 73 07 cpc r23, r19 + 11d2: 84 07 cpc r24, r20 + 11d4: 95 07 cpc r25, r21 + 11d6: 18 f3 brcs .-58 ; 0x119e <_ZN6Stream9timedPeekEv+0x12> + 11d8: 2f ef ldi r18, 0xFF ; 255 + 11da: 3f ef ldi r19, 0xFF ; 255 + 11dc: c9 01 movw r24, r18 + 11de: df 91 pop r29 + 11e0: cf 91 pop r28 + 11e2: 08 95 ret + +000011e4 <_ZN6Stream13peekNextDigitEv>: + 11e4: cf 93 push r28 + 11e6: df 93 push r29 + 11e8: ec 01 movw r28, r24 + 11ea: ce 01 movw r24, r28 + 11ec: 0e 94 c6 08 call 0x118c ; 0x118c <_ZN6Stream9timedPeekEv> + 11f0: 9c 01 movw r18, r24 + 11f2: 97 fd sbrc r25, 7 + 11f4: 0f c0 rjmp .+30 ; 0x1214 <_ZN6Stream13peekNextDigitEv+0x30> + 11f6: 8d 32 cpi r24, 0x2D ; 45 + 11f8: 91 05 cpc r25, r1 + 11fa: 61 f0 breq .+24 ; 0x1214 <_ZN6Stream13peekNextDigitEv+0x30> + 11fc: c0 97 sbiw r24, 0x30 ; 48 + 11fe: 8a 30 cpi r24, 0x0A ; 10 + 1200: 91 05 cpc r25, r1 + 1202: 40 f0 brcs .+16 ; 0x1214 <_ZN6Stream13peekNextDigitEv+0x30> + 1204: e8 81 ld r30, Y + 1206: f9 81 ldd r31, Y+1 ; 0x01 + 1208: 06 80 ldd r0, Z+6 ; 0x06 + 120a: f7 81 ldd r31, Z+7 ; 0x07 + 120c: e0 2d mov r30, r0 + 120e: ce 01 movw r24, r28 + 1210: 09 95 icall + 1212: eb cf rjmp .-42 ; 0x11ea <_ZN6Stream13peekNextDigitEv+0x6> + 1214: c9 01 movw r24, r18 + 1216: df 91 pop r29 + 1218: cf 91 pop r28 + 121a: 08 95 ret + +0000121c <_ZN6Stream10setTimeoutEm>: + 121c: fc 01 movw r30, r24 + 121e: 44 83 std Z+4, r20 ; 0x04 + 1220: 55 83 std Z+5, r21 ; 0x05 + 1222: 66 83 std Z+6, r22 ; 0x06 + 1224: 77 83 std Z+7, r23 ; 0x07 + 1226: 08 95 ret + +00001228 <_ZN6Stream9findUntilEPcjS0_j>: + 1228: 6f 92 push r6 + 122a: 7f 92 push r7 + 122c: 8f 92 push r8 + 122e: 9f 92 push r9 + 1230: af 92 push r10 + 1232: bf 92 push r11 + 1234: cf 92 push r12 + 1236: df 92 push r13 + 1238: ef 92 push r14 + 123a: ff 92 push r15 + 123c: 0f 93 push r16 + 123e: 1f 93 push r17 + 1240: cf 93 push r28 + 1242: df 93 push r29 + 1244: 3c 01 movw r6, r24 + 1246: 6b 01 movw r12, r22 + 1248: 4a 01 movw r8, r20 + 124a: 59 01 movw r10, r18 + 124c: 78 01 movw r14, r16 + 124e: fb 01 movw r30, r22 + 1250: 80 81 ld r24, Z + 1252: 88 23 and r24, r24 + 1254: 91 f1 breq .+100 ; 0x12ba <_ZN6Stream9findUntilEPcjS0_j+0x92> + 1256: c0 e0 ldi r28, 0x00 ; 0 + 1258: d0 e0 ldi r29, 0x00 ; 0 + 125a: 00 e0 ldi r16, 0x00 ; 0 + 125c: 10 e0 ldi r17, 0x00 ; 0 + 125e: 26 c0 rjmp .+76 ; 0x12ac <_ZN6Stream9findUntilEPcjS0_j+0x84> + 1260: f6 01 movw r30, r12 + 1262: e0 0f add r30, r16 + 1264: f1 1f adc r31, r17 + 1266: 20 81 ld r18, Z + 1268: 33 27 eor r19, r19 + 126a: 27 fd sbrc r18, 7 + 126c: 30 95 com r19 + 126e: 82 17 cp r24, r18 + 1270: 93 07 cpc r25, r19 + 1272: 31 f4 brne .+12 ; 0x1280 <_ZN6Stream9findUntilEPcjS0_j+0x58> + 1274: 0f 5f subi r16, 0xFF ; 255 + 1276: 1f 4f sbci r17, 0xFF ; 255 + 1278: 08 15 cp r16, r8 + 127a: 19 05 cpc r17, r9 + 127c: 18 f0 brcs .+6 ; 0x1284 <_ZN6Stream9findUntilEPcjS0_j+0x5c> + 127e: 1d c0 rjmp .+58 ; 0x12ba <_ZN6Stream9findUntilEPcjS0_j+0x92> + 1280: 00 e0 ldi r16, 0x00 ; 0 + 1282: 10 e0 ldi r17, 0x00 ; 0 + 1284: e1 14 cp r14, r1 + 1286: f1 04 cpc r15, r1 + 1288: 79 f0 breq .+30 ; 0x12a8 <_ZN6Stream9findUntilEPcjS0_j+0x80> + 128a: f5 01 movw r30, r10 + 128c: ec 0f add r30, r28 + 128e: fd 1f adc r31, r29 + 1290: 20 81 ld r18, Z + 1292: 33 27 eor r19, r19 + 1294: 27 fd sbrc r18, 7 + 1296: 30 95 com r19 + 1298: 82 17 cp r24, r18 + 129a: 93 07 cpc r25, r19 + 129c: 29 f4 brne .+10 ; 0x12a8 <_ZN6Stream9findUntilEPcjS0_j+0x80> + 129e: 21 96 adiw r28, 0x01 ; 1 + 12a0: ce 15 cp r28, r14 + 12a2: df 05 cpc r29, r15 + 12a4: 18 f0 brcs .+6 ; 0x12ac <_ZN6Stream9findUntilEPcjS0_j+0x84> + 12a6: 0b c0 rjmp .+22 ; 0x12be <_ZN6Stream9findUntilEPcjS0_j+0x96> + 12a8: c0 e0 ldi r28, 0x00 ; 0 + 12aa: d0 e0 ldi r29, 0x00 ; 0 + 12ac: c3 01 movw r24, r6 + 12ae: 0e 94 9a 08 call 0x1134 ; 0x1134 <_ZN6Stream9timedReadEv> + 12b2: 18 16 cp r1, r24 + 12b4: 19 06 cpc r1, r25 + 12b6: a4 f2 brlt .-88 ; 0x1260 <_ZN6Stream9findUntilEPcjS0_j+0x38> + 12b8: 02 c0 rjmp .+4 ; 0x12be <_ZN6Stream9findUntilEPcjS0_j+0x96> + 12ba: 81 e0 ldi r24, 0x01 ; 1 + 12bc: 01 c0 rjmp .+2 ; 0x12c0 <_ZN6Stream9findUntilEPcjS0_j+0x98> + 12be: 80 e0 ldi r24, 0x00 ; 0 + 12c0: df 91 pop r29 + 12c2: cf 91 pop r28 + 12c4: 1f 91 pop r17 + 12c6: 0f 91 pop r16 + 12c8: ff 90 pop r15 + 12ca: ef 90 pop r14 + 12cc: df 90 pop r13 + 12ce: cf 90 pop r12 + 12d0: bf 90 pop r11 + 12d2: af 90 pop r10 + 12d4: 9f 90 pop r9 + 12d6: 8f 90 pop r8 + 12d8: 7f 90 pop r7 + 12da: 6f 90 pop r6 + 12dc: 08 95 ret + +000012de <_ZN6Stream9findUntilEPcS0_>: + 12de: 0f 93 push r16 + 12e0: 1f 93 push r17 + 12e2: cf 93 push r28 + 12e4: df 93 push r29 + 12e6: 9a 01 movw r18, r20 + 12e8: fb 01 movw r30, r22 + 12ea: 01 90 ld r0, Z+ + 12ec: 00 20 and r0, r0 + 12ee: e9 f7 brne .-6 ; 0x12ea <_ZN6Stream9findUntilEPcS0_+0xc> + 12f0: 31 97 sbiw r30, 0x01 ; 1 + 12f2: e6 1b sub r30, r22 + 12f4: f7 0b sbc r31, r23 + 12f6: ea 01 movw r28, r20 + 12f8: 09 90 ld r0, Y+ + 12fa: 00 20 and r0, r0 + 12fc: e9 f7 brne .-6 ; 0x12f8 <_ZN6Stream9findUntilEPcS0_+0x1a> + 12fe: 8e 01 movw r16, r28 + 1300: 01 50 subi r16, 0x01 ; 1 + 1302: 10 40 sbci r17, 0x00 ; 0 + 1304: 04 1b sub r16, r20 + 1306: 15 0b sbc r17, r21 + 1308: af 01 movw r20, r30 + 130a: 0e 94 14 09 call 0x1228 ; 0x1228 <_ZN6Stream9findUntilEPcjS0_j> + 130e: df 91 pop r29 + 1310: cf 91 pop r28 + 1312: 1f 91 pop r17 + 1314: 0f 91 pop r16 + 1316: 08 95 ret + +00001318 <_ZN6Stream4findEPc>: + 1318: 40 e0 ldi r20, 0x00 ; 0 + 131a: 50 e0 ldi r21, 0x00 ; 0 + 131c: 0e 94 6f 09 call 0x12de ; 0x12de <_ZN6Stream9findUntilEPcS0_> + 1320: 08 95 ret + +00001322 <_ZN6Stream4findEPcj>: + 1322: 0f 93 push r16 + 1324: 1f 93 push r17 + 1326: 20 e0 ldi r18, 0x00 ; 0 + 1328: 30 e0 ldi r19, 0x00 ; 0 + 132a: 00 e0 ldi r16, 0x00 ; 0 + 132c: 10 e0 ldi r17, 0x00 ; 0 + 132e: 0e 94 14 09 call 0x1228 ; 0x1228 <_ZN6Stream9findUntilEPcjS0_j> + 1332: 1f 91 pop r17 + 1334: 0f 91 pop r16 + 1336: 08 95 ret + +00001338 <_ZN6Stream8parseIntEc>: + 1338: 9f 92 push r9 + 133a: af 92 push r10 + 133c: bf 92 push r11 + 133e: cf 92 push r12 + 1340: df 92 push r13 + 1342: ef 92 push r14 + 1344: ff 92 push r15 + 1346: 0f 93 push r16 + 1348: 1f 93 push r17 + 134a: cf 93 push r28 + 134c: df 93 push r29 + 134e: 6c 01 movw r12, r24 + 1350: a6 2e mov r10, r22 + 1352: 0e 94 f2 08 call 0x11e4 ; 0x11e4 <_ZN6Stream13peekNextDigitEv> + 1356: ec 01 movw r28, r24 + 1358: 97 fd sbrc r25, 7 + 135a: 4e c0 rjmp .+156 ; 0x13f8 <_ZN6Stream8parseIntEc+0xc0> + 135c: ee 24 eor r14, r14 + 135e: ff 24 eor r15, r15 + 1360: 87 01 movw r16, r14 + 1362: 99 24 eor r9, r9 + 1364: bb 24 eor r11, r11 + 1366: a7 fc sbrc r10, 7 + 1368: b0 94 com r11 + 136a: ca 15 cp r28, r10 + 136c: db 05 cpc r29, r11 + 136e: 31 f1 breq .+76 ; 0x13bc <_ZN6Stream8parseIntEc+0x84> + 1370: cd 32 cpi r28, 0x2D ; 45 + 1372: d1 05 cpc r29, r1 + 1374: 09 f1 breq .+66 ; 0x13b8 <_ZN6Stream8parseIntEc+0x80> + 1376: ce 01 movw r24, r28 + 1378: c0 97 sbiw r24, 0x30 ; 48 + 137a: 8a 30 cpi r24, 0x0A ; 10 + 137c: 91 05 cpc r25, r1 + 137e: f0 f4 brcc .+60 ; 0x13bc <_ZN6Stream8parseIntEc+0x84> + 1380: c8 01 movw r24, r16 + 1382: b7 01 movw r22, r14 + 1384: 2a e0 ldi r18, 0x0A ; 10 + 1386: 30 e0 ldi r19, 0x00 ; 0 + 1388: 40 e0 ldi r20, 0x00 ; 0 + 138a: 50 e0 ldi r21, 0x00 ; 0 + 138c: 0e 94 9b 24 call 0x4936 ; 0x4936 <__mulsi3> + 1390: 7b 01 movw r14, r22 + 1392: 8c 01 movw r16, r24 + 1394: ce 01 movw r24, r28 + 1396: aa 27 eor r26, r26 + 1398: 97 fd sbrc r25, 7 + 139a: a0 95 com r26 + 139c: ba 2f mov r27, r26 + 139e: e8 0e add r14, r24 + 13a0: f9 1e adc r15, r25 + 13a2: 0a 1f adc r16, r26 + 13a4: 1b 1f adc r17, r27 + 13a6: 80 ed ldi r24, 0xD0 ; 208 + 13a8: 9f ef ldi r25, 0xFF ; 255 + 13aa: af ef ldi r26, 0xFF ; 255 + 13ac: bf ef ldi r27, 0xFF ; 255 + 13ae: e8 0e add r14, r24 + 13b0: f9 1e adc r15, r25 + 13b2: 0a 1f adc r16, r26 + 13b4: 1b 1f adc r17, r27 + 13b6: 02 c0 rjmp .+4 ; 0x13bc <_ZN6Stream8parseIntEc+0x84> + 13b8: 99 24 eor r9, r9 + 13ba: 93 94 inc r9 + 13bc: d6 01 movw r26, r12 + 13be: ed 91 ld r30, X+ + 13c0: fc 91 ld r31, X + 13c2: 06 80 ldd r0, Z+6 ; 0x06 + 13c4: f7 81 ldd r31, Z+7 ; 0x07 + 13c6: e0 2d mov r30, r0 + 13c8: c6 01 movw r24, r12 + 13ca: 09 95 icall + 13cc: c6 01 movw r24, r12 + 13ce: 0e 94 c6 08 call 0x118c ; 0x118c <_ZN6Stream9timedPeekEv> + 13d2: ec 01 movw r28, r24 + 13d4: c0 97 sbiw r24, 0x30 ; 48 + 13d6: 8a 30 cpi r24, 0x0A ; 10 + 13d8: 91 05 cpc r25, r1 + 13da: 38 f2 brcs .-114 ; 0x136a <_ZN6Stream8parseIntEc+0x32> + 13dc: ca 15 cp r28, r10 + 13de: db 05 cpc r29, r11 + 13e0: 21 f2 breq .-120 ; 0x136a <_ZN6Stream8parseIntEc+0x32> + 13e2: 99 20 and r9, r9 + 13e4: 61 f0 breq .+24 ; 0x13fe <_ZN6Stream8parseIntEc+0xc6> + 13e6: 10 95 com r17 + 13e8: 00 95 com r16 + 13ea: f0 94 com r15 + 13ec: e0 94 com r14 + 13ee: e1 1c adc r14, r1 + 13f0: f1 1c adc r15, r1 + 13f2: 01 1d adc r16, r1 + 13f4: 11 1d adc r17, r1 + 13f6: 03 c0 rjmp .+6 ; 0x13fe <_ZN6Stream8parseIntEc+0xc6> + 13f8: ee 24 eor r14, r14 + 13fa: ff 24 eor r15, r15 + 13fc: 87 01 movw r16, r14 + 13fe: b7 01 movw r22, r14 + 1400: c8 01 movw r24, r16 + 1402: df 91 pop r29 + 1404: cf 91 pop r28 + 1406: 1f 91 pop r17 + 1408: 0f 91 pop r16 + 140a: ff 90 pop r15 + 140c: ef 90 pop r14 + 140e: df 90 pop r13 + 1410: cf 90 pop r12 + 1412: bf 90 pop r11 + 1414: af 90 pop r10 + 1416: 9f 90 pop r9 + 1418: 08 95 ret + +0000141a <_ZN6Stream8parseIntEv>: + 141a: 61 e0 ldi r22, 0x01 ; 1 + 141c: 0e 94 9c 09 call 0x1338 ; 0x1338 <_ZN6Stream8parseIntEc> + 1420: 08 95 ret + +00001422 <_ZN6Stream10parseFloatEc>: + 1422: 6f 92 push r6 + 1424: 7f 92 push r7 + 1426: 8f 92 push r8 + 1428: 9f 92 push r9 + 142a: af 92 push r10 + 142c: bf 92 push r11 + 142e: cf 92 push r12 + 1430: df 92 push r13 + 1432: ef 92 push r14 + 1434: ff 92 push r15 + 1436: 0f 93 push r16 + 1438: 1f 93 push r17 + 143a: cf 93 push r28 + 143c: df 93 push r29 + 143e: ec 01 movw r28, r24 + 1440: 76 2e mov r7, r22 + 1442: 0e 94 f2 08 call 0x11e4 ; 0x11e4 <_ZN6Stream13peekNextDigitEv> + 1446: d8 2e mov r13, r24 + 1448: 87 fd sbrc r24, 7 + 144a: 7d c0 rjmp .+250 ; 0x1546 <_ZN6Stream10parseFloatEc+0x124> + 144c: bb 24 eor r11, r11 + 144e: aa 24 eor r10, r10 + 1450: 90 e8 ldi r25, 0x80 ; 128 + 1452: 99 2e mov r9, r25 + 1454: 8f e3 ldi r24, 0x3F ; 63 + 1456: 88 2e mov r8, r24 + 1458: ee 24 eor r14, r14 + 145a: ff 24 eor r15, r15 + 145c: 87 01 movw r16, r14 + 145e: cc 24 eor r12, r12 + 1460: 66 24 eor r6, r6 + 1462: d7 14 cp r13, r7 + 1464: e1 f1 breq .+120 ; 0x14de <_ZN6Stream10parseFloatEc+0xbc> + 1466: 8d 2d mov r24, r13 + 1468: 8d 32 cpi r24, 0x2D ; 45 + 146a: a1 f1 breq .+104 ; 0x14d4 <_ZN6Stream10parseFloatEc+0xb2> + 146c: 8e 32 cpi r24, 0x2E ; 46 + 146e: a9 f1 breq .+106 ; 0x14da <_ZN6Stream10parseFloatEc+0xb8> + 1470: 80 53 subi r24, 0x30 ; 48 + 1472: 8a 30 cpi r24, 0x0A ; 10 + 1474: a0 f5 brcc .+104 ; 0x14de <_ZN6Stream10parseFloatEc+0xbc> + 1476: c8 01 movw r24, r16 + 1478: b7 01 movw r22, r14 + 147a: 2a e0 ldi r18, 0x0A ; 10 + 147c: 30 e0 ldi r19, 0x00 ; 0 + 147e: 40 e0 ldi r20, 0x00 ; 0 + 1480: 50 e0 ldi r21, 0x00 ; 0 + 1482: 0e 94 9b 24 call 0x4936 ; 0x4936 <__mulsi3> + 1486: 7b 01 movw r14, r22 + 1488: 8c 01 movw r16, r24 + 148a: 8d 2d mov r24, r13 + 148c: 99 27 eor r25, r25 + 148e: 87 fd sbrc r24, 7 + 1490: 90 95 com r25 + 1492: a9 2f mov r26, r25 + 1494: b9 2f mov r27, r25 + 1496: e8 0e add r14, r24 + 1498: f9 1e adc r15, r25 + 149a: 0a 1f adc r16, r26 + 149c: 1b 1f adc r17, r27 + 149e: 80 ed ldi r24, 0xD0 ; 208 + 14a0: 9f ef ldi r25, 0xFF ; 255 + 14a2: af ef ldi r26, 0xFF ; 255 + 14a4: bf ef ldi r27, 0xFF ; 255 + 14a6: e8 0e add r14, r24 + 14a8: f9 1e adc r15, r25 + 14aa: 0a 1f adc r16, r26 + 14ac: 1b 1f adc r17, r27 + 14ae: cc 20 and r12, r12 + 14b0: b1 f0 breq .+44 ; 0x14de <_ZN6Stream10parseFloatEc+0xbc> + 14b2: a5 01 movw r20, r10 + 14b4: 94 01 movw r18, r8 + 14b6: 65 2f mov r22, r21 + 14b8: 7a 2d mov r23, r10 + 14ba: 83 2f mov r24, r19 + 14bc: 98 2d mov r25, r8 + 14be: 2d ec ldi r18, 0xCD ; 205 + 14c0: 3c ec ldi r19, 0xCC ; 204 + 14c2: 4c ec ldi r20, 0xCC ; 204 + 14c4: 5d e3 ldi r21, 0x3D ; 61 + 14c6: 0e 94 7f 1f call 0x3efe ; 0x3efe <__mulsf3> + 14ca: b6 2e mov r11, r22 + 14cc: a7 2e mov r10, r23 + 14ce: 98 2e mov r9, r24 + 14d0: 89 2e mov r8, r25 + 14d2: 05 c0 rjmp .+10 ; 0x14de <_ZN6Stream10parseFloatEc+0xbc> + 14d4: 66 24 eor r6, r6 + 14d6: 63 94 inc r6 + 14d8: 02 c0 rjmp .+4 ; 0x14de <_ZN6Stream10parseFloatEc+0xbc> + 14da: cc 24 eor r12, r12 + 14dc: c3 94 inc r12 + 14de: e8 81 ld r30, Y + 14e0: f9 81 ldd r31, Y+1 ; 0x01 + 14e2: 06 80 ldd r0, Z+6 ; 0x06 + 14e4: f7 81 ldd r31, Z+7 ; 0x07 + 14e6: e0 2d mov r30, r0 + 14e8: ce 01 movw r24, r28 + 14ea: 09 95 icall + 14ec: ce 01 movw r24, r28 + 14ee: 0e 94 c6 08 call 0x118c ; 0x118c <_ZN6Stream9timedPeekEv> + 14f2: d8 2e mov r13, r24 + 14f4: 98 2f mov r25, r24 + 14f6: 90 53 subi r25, 0x30 ; 48 + 14f8: 9a 30 cpi r25, 0x0A ; 10 + 14fa: 08 f4 brcc .+2 ; 0x14fe <_ZN6Stream10parseFloatEc+0xdc> + 14fc: b2 cf rjmp .-156 ; 0x1462 <_ZN6Stream10parseFloatEc+0x40> + 14fe: 8e 32 cpi r24, 0x2E ; 46 + 1500: 09 f4 brne .+2 ; 0x1504 <_ZN6Stream10parseFloatEc+0xe2> + 1502: af cf rjmp .-162 ; 0x1462 <_ZN6Stream10parseFloatEc+0x40> + 1504: 87 15 cp r24, r7 + 1506: 09 f4 brne .+2 ; 0x150a <_ZN6Stream10parseFloatEc+0xe8> + 1508: ac cf rjmp .-168 ; 0x1462 <_ZN6Stream10parseFloatEc+0x40> + 150a: 66 20 and r6, r6 + 150c: 41 f0 breq .+16 ; 0x151e <_ZN6Stream10parseFloatEc+0xfc> + 150e: 10 95 com r17 + 1510: 00 95 com r16 + 1512: f0 94 com r15 + 1514: e0 94 com r14 + 1516: e1 1c adc r14, r1 + 1518: f1 1c adc r15, r1 + 151a: 01 1d adc r16, r1 + 151c: 11 1d adc r17, r1 + 151e: cc 20 and r12, r12 + 1520: 69 f0 breq .+26 ; 0x153c <_ZN6Stream10parseFloatEc+0x11a> + 1522: c8 01 movw r24, r16 + 1524: b7 01 movw r22, r14 + 1526: 0e 94 87 21 call 0x430e ; 0x430e <__floatsisf> + 152a: d5 01 movw r26, r10 + 152c: f4 01 movw r30, r8 + 152e: 2b 2f mov r18, r27 + 1530: 3a 2d mov r19, r10 + 1532: 4f 2f mov r20, r31 + 1534: 58 2d mov r21, r8 + 1536: 0e 94 7f 1f call 0x3efe ; 0x3efe <__mulsf3> + 153a: 09 c0 rjmp .+18 ; 0x154e <_ZN6Stream10parseFloatEc+0x12c> + 153c: c8 01 movw r24, r16 + 153e: b7 01 movw r22, r14 + 1540: 0e 94 87 21 call 0x430e ; 0x430e <__floatsisf> + 1544: 04 c0 rjmp .+8 ; 0x154e <_ZN6Stream10parseFloatEc+0x12c> + 1546: 60 e0 ldi r22, 0x00 ; 0 + 1548: 70 e0 ldi r23, 0x00 ; 0 + 154a: 80 e0 ldi r24, 0x00 ; 0 + 154c: 90 e0 ldi r25, 0x00 ; 0 + 154e: df 91 pop r29 + 1550: cf 91 pop r28 + 1552: 1f 91 pop r17 + 1554: 0f 91 pop r16 + 1556: ff 90 pop r15 + 1558: ef 90 pop r14 + 155a: df 90 pop r13 + 155c: cf 90 pop r12 + 155e: bf 90 pop r11 + 1560: af 90 pop r10 + 1562: 9f 90 pop r9 + 1564: 8f 90 pop r8 + 1566: 7f 90 pop r7 + 1568: 6f 90 pop r6 + 156a: 08 95 ret + +0000156c <_ZN6Stream10parseFloatEv>: + 156c: 61 e0 ldi r22, 0x01 ; 1 + 156e: 0e 94 11 0a call 0x1422 ; 0x1422 <_ZN6Stream10parseFloatEc> + 1572: 08 95 ret + +00001574 <_ZN6Stream9readBytesEPcj>: + 1574: cf 92 push r12 + 1576: df 92 push r13 + 1578: ef 92 push r14 + 157a: ff 92 push r15 + 157c: 0f 93 push r16 + 157e: 1f 93 push r17 + 1580: cf 93 push r28 + 1582: df 93 push r29 + 1584: 6c 01 movw r12, r24 + 1586: eb 01 movw r28, r22 + 1588: 7a 01 movw r14, r20 + 158a: 00 e0 ldi r16, 0x00 ; 0 + 158c: 10 e0 ldi r17, 0x00 ; 0 + 158e: 08 c0 rjmp .+16 ; 0x15a0 <_ZN6Stream9readBytesEPcj+0x2c> + 1590: c6 01 movw r24, r12 + 1592: 0e 94 9a 08 call 0x1134 ; 0x1134 <_ZN6Stream9timedReadEv> + 1596: 97 fd sbrc r25, 7 + 1598: 06 c0 rjmp .+12 ; 0x15a6 <_ZN6Stream9readBytesEPcj+0x32> + 159a: 89 93 st Y+, r24 + 159c: 0f 5f subi r16, 0xFF ; 255 + 159e: 1f 4f sbci r17, 0xFF ; 255 + 15a0: 0e 15 cp r16, r14 + 15a2: 1f 05 cpc r17, r15 + 15a4: a8 f3 brcs .-22 ; 0x1590 <_ZN6Stream9readBytesEPcj+0x1c> + 15a6: c8 01 movw r24, r16 + 15a8: df 91 pop r29 + 15aa: cf 91 pop r28 + 15ac: 1f 91 pop r17 + 15ae: 0f 91 pop r16 + 15b0: ff 90 pop r15 + 15b2: ef 90 pop r14 + 15b4: df 90 pop r13 + 15b6: cf 90 pop r12 + 15b8: 08 95 ret + +000015ba <_ZN6Stream14readBytesUntilEcPcj>: + 15ba: af 92 push r10 + 15bc: bf 92 push r11 + 15be: cf 92 push r12 + 15c0: df 92 push r13 + 15c2: ef 92 push r14 + 15c4: ff 92 push r15 + 15c6: 0f 93 push r16 + 15c8: 1f 93 push r17 + 15ca: cf 93 push r28 + 15cc: df 93 push r29 + 15ce: 5c 01 movw r10, r24 + 15d0: ea 01 movw r28, r20 + 15d2: 79 01 movw r14, r18 + 15d4: 21 15 cp r18, r1 + 15d6: 31 05 cpc r19, r1 + 15d8: b1 f0 breq .+44 ; 0x1606 <_ZN6Stream14readBytesUntilEcPcj+0x4c> + 15da: 00 e0 ldi r16, 0x00 ; 0 + 15dc: 10 e0 ldi r17, 0x00 ; 0 + 15de: c6 2e mov r12, r22 + 15e0: dd 24 eor r13, r13 + 15e2: c7 fc sbrc r12, 7 + 15e4: d0 94 com r13 + 15e6: 0b c0 rjmp .+22 ; 0x15fe <_ZN6Stream14readBytesUntilEcPcj+0x44> + 15e8: c5 01 movw r24, r10 + 15ea: 0e 94 9a 08 call 0x1134 ; 0x1134 <_ZN6Stream9timedReadEv> + 15ee: 97 fd sbrc r25, 7 + 15f0: 0c c0 rjmp .+24 ; 0x160a <_ZN6Stream14readBytesUntilEcPcj+0x50> + 15f2: 8c 15 cp r24, r12 + 15f4: 9d 05 cpc r25, r13 + 15f6: 49 f0 breq .+18 ; 0x160a <_ZN6Stream14readBytesUntilEcPcj+0x50> + 15f8: 89 93 st Y+, r24 + 15fa: 0f 5f subi r16, 0xFF ; 255 + 15fc: 1f 4f sbci r17, 0xFF ; 255 + 15fe: 0e 15 cp r16, r14 + 1600: 1f 05 cpc r17, r15 + 1602: 90 f3 brcs .-28 ; 0x15e8 <_ZN6Stream14readBytesUntilEcPcj+0x2e> + 1604: 02 c0 rjmp .+4 ; 0x160a <_ZN6Stream14readBytesUntilEcPcj+0x50> + 1606: 00 e0 ldi r16, 0x00 ; 0 + 1608: 10 e0 ldi r17, 0x00 ; 0 + 160a: c8 01 movw r24, r16 + 160c: df 91 pop r29 + 160e: cf 91 pop r28 + 1610: 1f 91 pop r17 + 1612: 0f 91 pop r16 + 1614: ff 90 pop r15 + 1616: ef 90 pop r14 + 1618: df 90 pop r13 + 161a: cf 90 pop r12 + 161c: bf 90 pop r11 + 161e: af 90 pop r10 + 1620: 08 95 ret + +00001622 <_Z4tonehjm>: + 1622: 2f 92 push r2 + 1624: 3f 92 push r3 + 1626: 4f 92 push r4 + 1628: 5f 92 push r5 + 162a: 6f 92 push r6 + 162c: 7f 92 push r7 + 162e: 8f 92 push r8 + 1630: 9f 92 push r9 + 1632: af 92 push r10 + 1634: bf 92 push r11 + 1636: df 92 push r13 + 1638: ef 92 push r14 + 163a: ff 92 push r15 + 163c: 0f 93 push r16 + 163e: 1f 93 push r17 + 1640: df 93 push r29 + 1642: cf 93 push r28 + 1644: 00 d0 rcall .+0 ; 0x1646 <_Z4tonehjm+0x24> + 1646: 00 d0 rcall .+0 ; 0x1648 <_Z4tonehjm+0x26> + 1648: cd b7 in r28, 0x3d ; 61 + 164a: de b7 in r29, 0x3e ; 62 + 164c: 1b 01 movw r2, r22 + 164e: 29 83 std Y+1, r18 ; 0x01 + 1650: 3a 83 std Y+2, r19 ; 0x02 + 1652: 4b 83 std Y+3, r20 ; 0x03 + 1654: 5c 83 std Y+4, r21 ; 0x04 + 1656: 90 91 ab 01 lds r25, 0x01AB + 165a: 98 17 cp r25, r24 + 165c: 21 f0 breq .+8 ; 0x1666 <_Z4tonehjm+0x44> + 165e: 9f 3f cpi r25, 0xFF ; 255 + 1660: 09 f0 breq .+2 ; 0x1664 <_Z4tonehjm+0x42> + 1662: d8 c1 rjmp .+944 ; 0x1a14 <_Z4tonehjm+0x3f2> + 1664: 04 c0 rjmp .+8 ; 0x166e <_Z4tonehjm+0x4c> + 1666: e8 e6 ldi r30, 0x68 ; 104 + 1668: f0 e0 ldi r31, 0x00 ; 0 + 166a: d4 90 lpm r13, Z+ + 166c: 7d c0 rjmp .+250 ; 0x1768 <_Z4tonehjm+0x146> + 166e: 80 93 ab 01 sts 0x01AB, r24 + 1672: e8 e6 ldi r30, 0x68 ; 104 + 1674: f0 e0 ldi r31, 0x00 ; 0 + 1676: d4 90 lpm r13, Z+ + 1678: 9d 2d mov r25, r13 + 167a: 9f 3f cpi r25, 0xFF ; 255 + 167c: 09 f4 brne .+2 ; 0x1680 <_Z4tonehjm+0x5e> + 167e: ca c1 rjmp .+916 ; 0x1a14 <_Z4tonehjm+0x3f2> + 1680: 91 30 cpi r25, 0x01 ; 1 + 1682: 31 f1 breq .+76 ; 0x16d0 <_Z4tonehjm+0xae> + 1684: 92 30 cpi r25, 0x02 ; 2 + 1686: 09 f4 brne .+2 ; 0x168a <_Z4tonehjm+0x68> + 1688: 49 c0 rjmp .+146 ; 0x171c <_Z4tonehjm+0xfa> + 168a: dd 20 and r13, r13 + 168c: 09 f0 breq .+2 ; 0x1690 <_Z4tonehjm+0x6e> + 168e: 6c c0 rjmp .+216 ; 0x1768 <_Z4tonehjm+0x146> + 1690: 14 bc out 0x24, r1 ; 36 + 1692: 15 bc out 0x25, r1 ; 37 + 1694: 94 b5 in r25, 0x24 ; 36 + 1696: 92 60 ori r25, 0x02 ; 2 + 1698: 94 bd out 0x24, r25 ; 36 + 169a: 95 b5 in r25, 0x25 ; 37 + 169c: 91 60 ori r25, 0x01 ; 1 + 169e: 95 bd out 0x25, r25 ; 37 + 16a0: 28 2f mov r18, r24 + 16a2: 30 e0 ldi r19, 0x00 ; 0 + 16a4: f9 01 movw r30, r18 + 16a6: e9 57 subi r30, 0x79 ; 121 + 16a8: ff 4f sbci r31, 0xFF ; 255 + 16aa: e4 91 lpm r30, Z+ + 16ac: f0 e0 ldi r31, 0x00 ; 0 + 16ae: ee 0f add r30, r30 + 16b0: ff 1f adc r31, r31 + 16b2: ed 58 subi r30, 0x8D ; 141 + 16b4: ff 4f sbci r31, 0xFF ; 255 + 16b6: 45 91 lpm r20, Z+ + 16b8: 54 91 lpm r21, Z+ + 16ba: 40 93 ab 03 sts 0x03AB, r20 + 16be: 50 93 ac 03 sts 0x03AC, r21 + 16c2: 25 56 subi r18, 0x65 ; 101 + 16c4: 3f 4f sbci r19, 0xFF ; 255 + 16c6: f9 01 movw r30, r18 + 16c8: 24 91 lpm r18, Z+ + 16ca: 20 93 ad 03 sts 0x03AD, r18 + 16ce: 4e c0 rjmp .+156 ; 0x176c <_Z4tonehjm+0x14a> + 16d0: 10 92 80 00 sts 0x0080, r1 + 16d4: 10 92 81 00 sts 0x0081, r1 + 16d8: 90 91 81 00 lds r25, 0x0081 + 16dc: 98 60 ori r25, 0x08 ; 8 + 16de: 90 93 81 00 sts 0x0081, r25 + 16e2: 90 91 81 00 lds r25, 0x0081 + 16e6: 91 60 ori r25, 0x01 ; 1 + 16e8: 90 93 81 00 sts 0x0081, r25 + 16ec: 28 2f mov r18, r24 + 16ee: 30 e0 ldi r19, 0x00 ; 0 + 16f0: f9 01 movw r30, r18 + 16f2: e9 57 subi r30, 0x79 ; 121 + 16f4: ff 4f sbci r31, 0xFF ; 255 + 16f6: e4 91 lpm r30, Z+ + 16f8: f0 e0 ldi r31, 0x00 ; 0 + 16fa: ee 0f add r30, r30 + 16fc: ff 1f adc r31, r31 + 16fe: ed 58 subi r30, 0x8D ; 141 + 1700: ff 4f sbci r31, 0xFF ; 255 + 1702: 45 91 lpm r20, Z+ + 1704: 54 91 lpm r21, Z+ + 1706: 40 93 b2 03 sts 0x03B2, r20 + 170a: 50 93 b3 03 sts 0x03B3, r21 + 170e: 25 56 subi r18, 0x65 ; 101 + 1710: 3f 4f sbci r19, 0xFF ; 255 + 1712: f9 01 movw r30, r18 + 1714: 24 91 lpm r18, Z+ + 1716: 20 93 b4 03 sts 0x03B4, r18 + 171a: 28 c0 rjmp .+80 ; 0x176c <_Z4tonehjm+0x14a> + 171c: 10 92 b0 00 sts 0x00B0, r1 + 1720: 10 92 b1 00 sts 0x00B1, r1 + 1724: 90 91 b0 00 lds r25, 0x00B0 + 1728: 92 60 ori r25, 0x02 ; 2 + 172a: 90 93 b0 00 sts 0x00B0, r25 + 172e: 90 91 b1 00 lds r25, 0x00B1 + 1732: 91 60 ori r25, 0x01 ; 1 + 1734: 90 93 b1 00 sts 0x00B1, r25 + 1738: 28 2f mov r18, r24 + 173a: 30 e0 ldi r19, 0x00 ; 0 + 173c: f9 01 movw r30, r18 + 173e: e9 57 subi r30, 0x79 ; 121 + 1740: ff 4f sbci r31, 0xFF ; 255 + 1742: e4 91 lpm r30, Z+ + 1744: f0 e0 ldi r31, 0x00 ; 0 + 1746: ee 0f add r30, r30 + 1748: ff 1f adc r31, r31 + 174a: ed 58 subi r30, 0x8D ; 141 + 174c: ff 4f sbci r31, 0xFF ; 255 + 174e: 45 91 lpm r20, Z+ + 1750: 54 91 lpm r21, Z+ + 1752: 40 93 b9 03 sts 0x03B9, r20 + 1756: 50 93 ba 03 sts 0x03BA, r21 + 175a: 25 56 subi r18, 0x65 ; 101 + 175c: 3f 4f sbci r19, 0xFF ; 255 + 175e: f9 01 movw r30, r18 + 1760: 24 91 lpm r18, Z+ + 1762: 20 93 bb 03 sts 0x03BB, r18 + 1766: 02 c0 rjmp .+4 ; 0x176c <_Z4tonehjm+0x14a> + 1768: d7 fc sbrc r13, 7 + 176a: 54 c1 rjmp .+680 ; 0x1a14 <_Z4tonehjm+0x3f2> + 176c: 61 e0 ldi r22, 0x01 ; 1 + 176e: 0e 94 9f 18 call 0x313e ; 0x313e <pinMode> + 1772: dd 20 and r13, r13 + 1774: 21 f0 breq .+8 ; 0x177e <_Z4tonehjm+0x15c> + 1776: fd 2d mov r31, r13 + 1778: f2 30 cpi r31, 0x02 ; 2 + 177a: 09 f0 breq .+2 ; 0x177e <_Z4tonehjm+0x15c> + 177c: c1 c0 rjmp .+386 ; 0x1900 <_Z4tonehjm+0x2de> + 177e: 41 01 movw r8, r2 + 1780: aa 24 eor r10, r10 + 1782: bb 24 eor r11, r11 + 1784: 60 e0 ldi r22, 0x00 ; 0 + 1786: 79 e0 ldi r23, 0x09 ; 9 + 1788: 8d e3 ldi r24, 0x3D ; 61 + 178a: 90 e0 ldi r25, 0x00 ; 0 + 178c: a5 01 movw r20, r10 + 178e: 94 01 movw r18, r8 + 1790: 0e 94 cd 24 call 0x499a ; 0x499a <__udivmodsi4> + 1794: 29 01 movw r4, r18 + 1796: 3a 01 movw r6, r20 + 1798: 79 01 movw r14, r18 + 179a: 8a 01 movw r16, r20 + 179c: 08 94 sec + 179e: e1 08 sbc r14, r1 + 17a0: f1 08 sbc r15, r1 + 17a2: 01 09 sbc r16, r1 + 17a4: 11 09 sbc r17, r1 + 17a6: 8f ef ldi r24, 0xFF ; 255 + 17a8: e8 16 cp r14, r24 + 17aa: f1 04 cpc r15, r1 + 17ac: 01 05 cpc r16, r1 + 17ae: 11 05 cpc r17, r1 + 17b0: 09 f0 breq .+2 ; 0x17b4 <_Z4tonehjm+0x192> + 17b2: 08 f4 brcc .+2 ; 0x17b6 <_Z4tonehjm+0x194> + 17b4: 98 c0 rjmp .+304 ; 0x18e6 <_Z4tonehjm+0x2c4> + 17b6: 60 e2 ldi r22, 0x20 ; 32 + 17b8: 71 ea ldi r23, 0xA1 ; 161 + 17ba: 87 e0 ldi r24, 0x07 ; 7 + 17bc: 90 e0 ldi r25, 0x00 ; 0 + 17be: a5 01 movw r20, r10 + 17c0: 94 01 movw r18, r8 + 17c2: 0e 94 cd 24 call 0x499a ; 0x499a <__udivmodsi4> + 17c6: 79 01 movw r14, r18 + 17c8: 8a 01 movw r16, r20 + 17ca: 08 94 sec + 17cc: e1 08 sbc r14, r1 + 17ce: f1 08 sbc r15, r1 + 17d0: 01 09 sbc r16, r1 + 17d2: 11 09 sbc r17, r1 + 17d4: 9d 2d mov r25, r13 + 17d6: 92 30 cpi r25, 0x02 ; 2 + 17d8: c9 f4 brne .+50 ; 0x180c <_Z4tonehjm+0x1ea> + 17da: af ef ldi r26, 0xFF ; 255 + 17dc: ea 16 cp r14, r26 + 17de: f1 04 cpc r15, r1 + 17e0: 01 05 cpc r16, r1 + 17e2: 11 05 cpc r17, r1 + 17e4: 09 f0 breq .+2 ; 0x17e8 <_Z4tonehjm+0x1c6> + 17e6: 08 f4 brcc .+2 ; 0x17ea <_Z4tonehjm+0x1c8> + 17e8: 85 c0 rjmp .+266 ; 0x18f4 <_Z4tonehjm+0x2d2> + 17ea: 68 e4 ldi r22, 0x48 ; 72 + 17ec: 78 ee ldi r23, 0xE8 ; 232 + 17ee: 81 e0 ldi r24, 0x01 ; 1 + 17f0: 90 e0 ldi r25, 0x00 ; 0 + 17f2: a5 01 movw r20, r10 + 17f4: 94 01 movw r18, r8 + 17f6: 0e 94 cd 24 call 0x499a ; 0x499a <__udivmodsi4> + 17fa: 79 01 movw r14, r18 + 17fc: 8a 01 movw r16, r20 + 17fe: 08 94 sec + 1800: e1 08 sbc r14, r1 + 1802: f1 08 sbc r15, r1 + 1804: 01 09 sbc r16, r1 + 1806: 11 09 sbc r17, r1 + 1808: 83 e0 ldi r24, 0x03 ; 3 + 180a: 01 c0 rjmp .+2 ; 0x180e <_Z4tonehjm+0x1ec> + 180c: 82 e0 ldi r24, 0x02 ; 2 + 180e: bf ef ldi r27, 0xFF ; 255 + 1810: eb 16 cp r14, r27 + 1812: f1 04 cpc r15, r1 + 1814: 01 05 cpc r16, r1 + 1816: 11 05 cpc r17, r1 + 1818: 09 f0 breq .+2 ; 0x181c <_Z4tonehjm+0x1fa> + 181a: 08 f4 brcc .+2 ; 0x181e <_Z4tonehjm+0x1fc> + 181c: 65 c0 rjmp .+202 ; 0x18e8 <_Z4tonehjm+0x2c6> + 181e: 64 e2 ldi r22, 0x24 ; 36 + 1820: 74 ef ldi r23, 0xF4 ; 244 + 1822: 80 e0 ldi r24, 0x00 ; 0 + 1824: 90 e0 ldi r25, 0x00 ; 0 + 1826: a5 01 movw r20, r10 + 1828: 94 01 movw r18, r8 + 182a: 0e 94 cd 24 call 0x499a ; 0x499a <__udivmodsi4> + 182e: 79 01 movw r14, r18 + 1830: 8a 01 movw r16, r20 + 1832: 08 94 sec + 1834: e1 08 sbc r14, r1 + 1836: f1 08 sbc r15, r1 + 1838: 01 09 sbc r16, r1 + 183a: 11 09 sbc r17, r1 + 183c: dd 20 and r13, r13 + 183e: e1 f0 breq .+56 ; 0x1878 <_Z4tonehjm+0x256> + 1840: ed 2d mov r30, r13 + 1842: e2 30 cpi r30, 0x02 ; 2 + 1844: d9 f4 brne .+54 ; 0x187c <_Z4tonehjm+0x25a> + 1846: ff ef ldi r31, 0xFF ; 255 + 1848: ef 16 cp r14, r31 + 184a: f1 04 cpc r15, r1 + 184c: 01 05 cpc r16, r1 + 184e: 11 05 cpc r17, r1 + 1850: 09 f0 breq .+2 ; 0x1854 <_Z4tonehjm+0x232> + 1852: 08 f4 brcc .+2 ; 0x1856 <_Z4tonehjm+0x234> + 1854: 51 c0 rjmp .+162 ; 0x18f8 <_Z4tonehjm+0x2d6> + 1856: 62 e1 ldi r22, 0x12 ; 18 + 1858: 7a e7 ldi r23, 0x7A ; 122 + 185a: 80 e0 ldi r24, 0x00 ; 0 + 185c: 90 e0 ldi r25, 0x00 ; 0 + 185e: a5 01 movw r20, r10 + 1860: 94 01 movw r18, r8 + 1862: 0e 94 cd 24 call 0x499a ; 0x499a <__udivmodsi4> + 1866: 79 01 movw r14, r18 + 1868: 8a 01 movw r16, r20 + 186a: 08 94 sec + 186c: e1 08 sbc r14, r1 + 186e: f1 08 sbc r15, r1 + 1870: 01 09 sbc r16, r1 + 1872: 11 09 sbc r17, r1 + 1874: 85 e0 ldi r24, 0x05 ; 5 + 1876: 03 c0 rjmp .+6 ; 0x187e <_Z4tonehjm+0x25c> + 1878: 83 e0 ldi r24, 0x03 ; 3 + 187a: 01 c0 rjmp .+2 ; 0x187e <_Z4tonehjm+0x25c> + 187c: 84 e0 ldi r24, 0x04 ; 4 + 187e: 9f ef ldi r25, 0xFF ; 255 + 1880: e9 16 cp r14, r25 + 1882: f1 04 cpc r15, r1 + 1884: 01 05 cpc r16, r1 + 1886: 11 05 cpc r17, r1 + 1888: 79 f1 breq .+94 ; 0x18e8 <_Z4tonehjm+0x2c6> + 188a: 70 f1 brcs .+92 ; 0x18e8 <_Z4tonehjm+0x2c6> + 188c: 69 e0 ldi r22, 0x09 ; 9 + 188e: 7d e3 ldi r23, 0x3D ; 61 + 1890: 80 e0 ldi r24, 0x00 ; 0 + 1892: 90 e0 ldi r25, 0x00 ; 0 + 1894: a5 01 movw r20, r10 + 1896: 94 01 movw r18, r8 + 1898: 0e 94 cd 24 call 0x499a ; 0x499a <__udivmodsi4> + 189c: 79 01 movw r14, r18 + 189e: 8a 01 movw r16, r20 + 18a0: 08 94 sec + 18a2: e1 08 sbc r14, r1 + 18a4: f1 08 sbc r15, r1 + 18a6: 01 09 sbc r16, r1 + 18a8: 11 09 sbc r17, r1 + 18aa: dd 20 and r13, r13 + 18ac: 11 f4 brne .+4 ; 0x18b2 <_Z4tonehjm+0x290> + 18ae: 84 e0 ldi r24, 0x04 ; 4 + 18b0: 01 c0 rjmp .+2 ; 0x18b4 <_Z4tonehjm+0x292> + 18b2: 86 e0 ldi r24, 0x06 ; 6 + 18b4: af ef ldi r26, 0xFF ; 255 + 18b6: ea 16 cp r14, r26 + 18b8: f1 04 cpc r15, r1 + 18ba: 01 05 cpc r16, r1 + 18bc: 11 05 cpc r17, r1 + 18be: a1 f0 breq .+40 ; 0x18e8 <_Z4tonehjm+0x2c6> + 18c0: 98 f0 brcs .+38 ; 0x18e8 <_Z4tonehjm+0x2c6> + 18c2: 83 01 movw r16, r6 + 18c4: 72 01 movw r14, r4 + 18c6: 9a e0 ldi r25, 0x0A ; 10 + 18c8: 16 95 lsr r17 + 18ca: 07 95 ror r16 + 18cc: f7 94 ror r15 + 18ce: e7 94 ror r14 + 18d0: 9a 95 dec r25 + 18d2: d1 f7 brne .-12 ; 0x18c8 <_Z4tonehjm+0x2a6> + 18d4: 08 94 sec + 18d6: e1 08 sbc r14, r1 + 18d8: f1 08 sbc r15, r1 + 18da: 01 09 sbc r16, r1 + 18dc: 11 09 sbc r17, r1 + 18de: dd 20 and r13, r13 + 18e0: 31 f0 breq .+12 ; 0x18ee <_Z4tonehjm+0x2cc> + 18e2: 87 e0 ldi r24, 0x07 ; 7 + 18e4: 0a c0 rjmp .+20 ; 0x18fa <_Z4tonehjm+0x2d8> + 18e6: 81 e0 ldi r24, 0x01 ; 1 + 18e8: dd 20 and r13, r13 + 18ea: 11 f0 breq .+4 ; 0x18f0 <_Z4tonehjm+0x2ce> + 18ec: 06 c0 rjmp .+12 ; 0x18fa <_Z4tonehjm+0x2d8> + 18ee: 85 e0 ldi r24, 0x05 ; 5 + 18f0: 85 bd out 0x25, r24 ; 37 + 18f2: 3c c0 rjmp .+120 ; 0x196c <_Z4tonehjm+0x34a> + 18f4: 82 e0 ldi r24, 0x02 ; 2 + 18f6: 01 c0 rjmp .+2 ; 0x18fa <_Z4tonehjm+0x2d8> + 18f8: 84 e0 ldi r24, 0x04 ; 4 + 18fa: 80 93 b1 00 sts 0x00B1, r24 + 18fe: 36 c0 rjmp .+108 ; 0x196c <_Z4tonehjm+0x34a> + 1900: 41 01 movw r8, r2 + 1902: aa 24 eor r10, r10 + 1904: bb 24 eor r11, r11 + 1906: 60 e0 ldi r22, 0x00 ; 0 + 1908: 79 e0 ldi r23, 0x09 ; 9 + 190a: 8d e3 ldi r24, 0x3D ; 61 + 190c: 90 e0 ldi r25, 0x00 ; 0 + 190e: a5 01 movw r20, r10 + 1910: 94 01 movw r18, r8 + 1912: 0e 94 cd 24 call 0x499a ; 0x499a <__udivmodsi4> + 1916: 79 01 movw r14, r18 + 1918: 8a 01 movw r16, r20 + 191a: 08 94 sec + 191c: e1 08 sbc r14, r1 + 191e: f1 08 sbc r15, r1 + 1920: 01 09 sbc r16, r1 + 1922: 11 09 sbc r17, r1 + 1924: b0 e0 ldi r27, 0x00 ; 0 + 1926: eb 16 cp r14, r27 + 1928: b0 e0 ldi r27, 0x00 ; 0 + 192a: fb 06 cpc r15, r27 + 192c: b1 e0 ldi r27, 0x01 ; 1 + 192e: 0b 07 cpc r16, r27 + 1930: b0 e0 ldi r27, 0x00 ; 0 + 1932: 1b 07 cpc r17, r27 + 1934: 88 f0 brcs .+34 ; 0x1958 <_Z4tonehjm+0x336> + 1936: 64 e2 ldi r22, 0x24 ; 36 + 1938: 74 ef ldi r23, 0xF4 ; 244 + 193a: 80 e0 ldi r24, 0x00 ; 0 + 193c: 90 e0 ldi r25, 0x00 ; 0 + 193e: a5 01 movw r20, r10 + 1940: 94 01 movw r18, r8 + 1942: 0e 94 cd 24 call 0x499a ; 0x499a <__udivmodsi4> + 1946: 79 01 movw r14, r18 + 1948: 8a 01 movw r16, r20 + 194a: 08 94 sec + 194c: e1 08 sbc r14, r1 + 194e: f1 08 sbc r15, r1 + 1950: 01 09 sbc r16, r1 + 1952: 11 09 sbc r17, r1 + 1954: 93 e0 ldi r25, 0x03 ; 3 + 1956: 01 c0 rjmp .+2 ; 0x195a <_Z4tonehjm+0x338> + 1958: 91 e0 ldi r25, 0x01 ; 1 + 195a: ed 2d mov r30, r13 + 195c: e1 30 cpi r30, 0x01 ; 1 + 195e: 31 f4 brne .+12 ; 0x196c <_Z4tonehjm+0x34a> + 1960: 80 91 81 00 lds r24, 0x0081 + 1964: 88 7f andi r24, 0xF8 ; 248 + 1966: 89 2b or r24, r25 + 1968: 80 93 81 00 sts 0x0081, r24 + 196c: 89 81 ldd r24, Y+1 ; 0x01 + 196e: 9a 81 ldd r25, Y+2 ; 0x02 + 1970: ab 81 ldd r26, Y+3 ; 0x03 + 1972: bc 81 ldd r27, Y+4 ; 0x04 + 1974: 00 97 sbiw r24, 0x00 ; 0 + 1976: a1 05 cpc r26, r1 + 1978: b1 05 cpc r27, r1 + 197a: 91 f0 breq .+36 ; 0x19a0 <_Z4tonehjm+0x37e> + 197c: b1 01 movw r22, r2 + 197e: 66 0f add r22, r22 + 1980: 77 1f adc r23, r23 + 1982: 80 e0 ldi r24, 0x00 ; 0 + 1984: 90 e0 ldi r25, 0x00 ; 0 + 1986: 29 81 ldd r18, Y+1 ; 0x01 + 1988: 3a 81 ldd r19, Y+2 ; 0x02 + 198a: 4b 81 ldd r20, Y+3 ; 0x03 + 198c: 5c 81 ldd r21, Y+4 ; 0x04 + 198e: 0e 94 9b 24 call 0x4936 ; 0x4936 <__mulsi3> + 1992: 28 ee ldi r18, 0xE8 ; 232 + 1994: 33 e0 ldi r19, 0x03 ; 3 + 1996: 40 e0 ldi r20, 0x00 ; 0 + 1998: 50 e0 ldi r21, 0x00 ; 0 + 199a: 0e 94 cd 24 call 0x499a ; 0x499a <__udivmodsi4> + 199e: 03 c0 rjmp .+6 ; 0x19a6 <_Z4tonehjm+0x384> + 19a0: 2f ef ldi r18, 0xFF ; 255 + 19a2: 3f ef ldi r19, 0xFF ; 255 + 19a4: a9 01 movw r20, r18 + 19a6: 9d 2d mov r25, r13 + 19a8: 91 30 cpi r25, 0x01 ; 1 + 19aa: 99 f0 breq .+38 ; 0x19d2 <_Z4tonehjm+0x3b0> + 19ac: 92 30 cpi r25, 0x02 ; 2 + 19ae: 19 f1 breq .+70 ; 0x19f6 <_Z4tonehjm+0x3d4> + 19b0: dd 20 and r13, r13 + 19b2: 81 f5 brne .+96 ; 0x1a14 <_Z4tonehjm+0x3f2> + 19b4: e7 bc out 0x27, r14 ; 39 + 19b6: 20 93 a7 03 sts 0x03A7, r18 + 19ba: 30 93 a8 03 sts 0x03A8, r19 + 19be: 40 93 a9 03 sts 0x03A9, r20 + 19c2: 50 93 aa 03 sts 0x03AA, r21 + 19c6: 80 91 6e 00 lds r24, 0x006E + 19ca: 82 60 ori r24, 0x02 ; 2 + 19cc: 80 93 6e 00 sts 0x006E, r24 + 19d0: 21 c0 rjmp .+66 ; 0x1a14 <_Z4tonehjm+0x3f2> + 19d2: f0 92 89 00 sts 0x0089, r15 + 19d6: e0 92 88 00 sts 0x0088, r14 + 19da: 20 93 ae 03 sts 0x03AE, r18 + 19de: 30 93 af 03 sts 0x03AF, r19 + 19e2: 40 93 b0 03 sts 0x03B0, r20 + 19e6: 50 93 b1 03 sts 0x03B1, r21 + 19ea: 80 91 6f 00 lds r24, 0x006F + 19ee: 82 60 ori r24, 0x02 ; 2 + 19f0: 80 93 6f 00 sts 0x006F, r24 + 19f4: 0f c0 rjmp .+30 ; 0x1a14 <_Z4tonehjm+0x3f2> + 19f6: e0 92 b3 00 sts 0x00B3, r14 + 19fa: 20 93 b5 03 sts 0x03B5, r18 + 19fe: 30 93 b6 03 sts 0x03B6, r19 + 1a02: 40 93 b7 03 sts 0x03B7, r20 + 1a06: 50 93 b8 03 sts 0x03B8, r21 + 1a0a: 80 91 70 00 lds r24, 0x0070 + 1a0e: 82 60 ori r24, 0x02 ; 2 + 1a10: 80 93 70 00 sts 0x0070, r24 + 1a14: 0f 90 pop r0 + 1a16: 0f 90 pop r0 + 1a18: 0f 90 pop r0 + 1a1a: 0f 90 pop r0 + 1a1c: cf 91 pop r28 + 1a1e: df 91 pop r29 + 1a20: 1f 91 pop r17 + 1a22: 0f 91 pop r16 + 1a24: ff 90 pop r15 + 1a26: ef 90 pop r14 + 1a28: df 90 pop r13 + 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 <_Z12disableTimerh>: + 1a40: 81 30 cpi r24, 0x01 ; 1 + 1a42: 41 f0 breq .+16 ; 0x1a54 <_Z12disableTimerh+0x14> + 1a44: 81 30 cpi r24, 0x01 ; 1 + 1a46: 18 f0 brcs .+6 ; 0x1a4e <_Z12disableTimerh+0xe> + 1a48: 82 30 cpi r24, 0x02 ; 2 + 1a4a: d1 f4 brne .+52 ; 0x1a80 <_Z12disableTimerh+0x40> + 1a4c: 09 c0 rjmp .+18 ; 0x1a60 <_Z12disableTimerh+0x20> + 1a4e: 10 92 6e 00 sts 0x006E, r1 + 1a52: 08 95 ret + 1a54: 80 91 6f 00 lds r24, 0x006F + 1a58: 8d 7f andi r24, 0xFD ; 253 + 1a5a: 80 93 6f 00 sts 0x006F, r24 + 1a5e: 08 95 ret + 1a60: 80 91 70 00 lds r24, 0x0070 + 1a64: 8d 7f andi r24, 0xFD ; 253 + 1a66: 80 93 70 00 sts 0x0070, r24 + 1a6a: 81 e0 ldi r24, 0x01 ; 1 + 1a6c: 80 93 b0 00 sts 0x00B0, r24 + 1a70: 80 91 b1 00 lds r24, 0x00B1 + 1a74: 88 7f andi r24, 0xF8 ; 248 + 1a76: 84 60 ori r24, 0x04 ; 4 + 1a78: 80 93 b1 00 sts 0x00B1, r24 + 1a7c: 10 92 b3 00 sts 0x00B3, r1 + 1a80: 08 95 ret + +00001a82 <_Z6noToneh>: + 1a82: 1f 93 push r17 + 1a84: 18 2f mov r17, r24 + 1a86: 80 91 ab 01 lds r24, 0x01AB + 1a8a: 81 17 cp r24, r17 + 1a8c: 39 f4 brne .+14 ; 0x1a9c <_Z6noToneh+0x1a> + 1a8e: e8 e6 ldi r30, 0x68 ; 104 + 1a90: f0 e0 ldi r31, 0x00 ; 0 + 1a92: 84 91 lpm r24, Z+ + 1a94: 9f ef ldi r25, 0xFF ; 255 + 1a96: 90 93 ab 01 sts 0x01AB, r25 + 1a9a: 01 c0 rjmp .+2 ; 0x1a9e <_Z6noToneh+0x1c> + 1a9c: 8f ef ldi r24, 0xFF ; 255 + 1a9e: 0e 94 20 0d call 0x1a40 ; 0x1a40 <_Z12disableTimerh> + 1aa2: 81 2f mov r24, r17 + 1aa4: 60 e0 ldi r22, 0x00 ; 0 + 1aa6: 0e 94 c3 18 call 0x3186 ; 0x3186 <digitalWrite> + 1aaa: 1f 91 pop r17 + 1aac: 08 95 ret + +00001aae <__vector_7>: + 1aae: 1f 92 push r1 + 1ab0: 0f 92 push r0 + 1ab2: 0f b6 in r0, 0x3f ; 63 + 1ab4: 0f 92 push r0 + 1ab6: 11 24 eor r1, r1 + 1ab8: 2f 93 push r18 + 1aba: 3f 93 push r19 + 1abc: 4f 93 push r20 + 1abe: 5f 93 push r21 + 1ac0: 6f 93 push r22 + 1ac2: 7f 93 push r23 + 1ac4: 8f 93 push r24 + 1ac6: 9f 93 push r25 + 1ac8: af 93 push r26 + 1aca: bf 93 push r27 + 1acc: ef 93 push r30 + 1ace: ff 93 push r31 + 1ad0: 80 91 b5 03 lds r24, 0x03B5 + 1ad4: 90 91 b6 03 lds r25, 0x03B6 + 1ad8: a0 91 b7 03 lds r26, 0x03B7 + 1adc: b0 91 b8 03 lds r27, 0x03B8 + 1ae0: 00 97 sbiw r24, 0x00 ; 0 + 1ae2: a1 05 cpc r26, r1 + 1ae4: b1 05 cpc r27, r1 + 1ae6: 51 f1 breq .+84 ; 0x1b3c <__vector_7+0x8e> + 1ae8: e0 91 b9 03 lds r30, 0x03B9 + 1aec: f0 91 ba 03 lds r31, 0x03BA + 1af0: 80 81 ld r24, Z + 1af2: 90 91 bb 03 lds r25, 0x03BB + 1af6: 89 27 eor r24, r25 + 1af8: 80 83 st Z, r24 + 1afa: 80 91 b5 03 lds r24, 0x03B5 + 1afe: 90 91 b6 03 lds r25, 0x03B6 + 1b02: a0 91 b7 03 lds r26, 0x03B7 + 1b06: b0 91 b8 03 lds r27, 0x03B8 + 1b0a: 18 16 cp r1, r24 + 1b0c: 19 06 cpc r1, r25 + 1b0e: 1a 06 cpc r1, r26 + 1b10: 1b 06 cpc r1, r27 + 1b12: c4 f4 brge .+48 ; 0x1b44 <__vector_7+0x96> + 1b14: 80 91 b5 03 lds r24, 0x03B5 + 1b18: 90 91 b6 03 lds r25, 0x03B6 + 1b1c: a0 91 b7 03 lds r26, 0x03B7 + 1b20: b0 91 b8 03 lds r27, 0x03B8 + 1b24: 01 97 sbiw r24, 0x01 ; 1 + 1b26: a1 09 sbc r26, r1 + 1b28: b1 09 sbc r27, r1 + 1b2a: 80 93 b5 03 sts 0x03B5, r24 + 1b2e: 90 93 b6 03 sts 0x03B6, r25 + 1b32: a0 93 b7 03 sts 0x03B7, r26 + 1b36: b0 93 b8 03 sts 0x03B8, r27 + 1b3a: 04 c0 rjmp .+8 ; 0x1b44 <__vector_7+0x96> + 1b3c: 80 91 ab 01 lds r24, 0x01AB + 1b40: 0e 94 41 0d call 0x1a82 ; 0x1a82 <_Z6noToneh> + 1b44: ff 91 pop r31 + 1b46: ef 91 pop r30 + 1b48: bf 91 pop r27 + 1b4a: af 91 pop r26 + 1b4c: 9f 91 pop r25 + 1b4e: 8f 91 pop r24 + 1b50: 7f 91 pop r23 + 1b52: 6f 91 pop r22 + 1b54: 5f 91 pop r21 + 1b56: 4f 91 pop r20 + 1b58: 3f 91 pop r19 + 1b5a: 2f 91 pop r18 + 1b5c: 0f 90 pop r0 + 1b5e: 0f be out 0x3f, r0 ; 63 + 1b60: 0f 90 pop r0 + 1b62: 1f 90 pop r1 + 1b64: 18 95 reti + +00001b66 <attachInterrupt>: + 1b66: 82 30 cpi r24, 0x02 ; 2 + 1b68: e8 f4 brcc .+58 ; 0x1ba4 <attachInterrupt+0x3e> + 1b6a: e8 2f mov r30, r24 + 1b6c: f0 e0 ldi r31, 0x00 ; 0 + 1b6e: ee 0f add r30, r30 + 1b70: ff 1f adc r31, r31 + 1b72: e4 54 subi r30, 0x44 ; 68 + 1b74: fc 4f sbci r31, 0xFC ; 252 + 1b76: 71 83 std Z+1, r23 ; 0x01 + 1b78: 60 83 st Z, r22 + 1b7a: 81 30 cpi r24, 0x01 ; 1 + 1b7c: 41 f0 breq .+16 ; 0x1b8e <attachInterrupt+0x28> + 1b7e: 80 91 69 00 lds r24, 0x0069 + 1b82: 8c 7f andi r24, 0xFC ; 252 + 1b84: 84 2b or r24, r20 + 1b86: 80 93 69 00 sts 0x0069, r24 + 1b8a: e8 9a sbi 0x1d, 0 ; 29 + 1b8c: 08 95 ret + 1b8e: 80 91 69 00 lds r24, 0x0069 + 1b92: 44 0f add r20, r20 + 1b94: 55 1f adc r21, r21 + 1b96: 44 0f add r20, r20 + 1b98: 55 1f adc r21, r21 + 1b9a: 83 7f andi r24, 0xF3 ; 243 + 1b9c: 84 2b or r24, r20 + 1b9e: 80 93 69 00 sts 0x0069, r24 + 1ba2: e9 9a sbi 0x1d, 1 ; 29 + 1ba4: 08 95 ret + +00001ba6 <detachInterrupt>: + 1ba6: 82 30 cpi r24, 0x02 ; 2 + 1ba8: 68 f4 brcc .+26 ; 0x1bc4 <detachInterrupt+0x1e> + 1baa: 81 30 cpi r24, 0x01 ; 1 + 1bac: 11 f0 breq .+4 ; 0x1bb2 <detachInterrupt+0xc> + 1bae: e8 98 cbi 0x1d, 0 ; 29 + 1bb0: 01 c0 rjmp .+2 ; 0x1bb4 <detachInterrupt+0xe> + 1bb2: e9 98 cbi 0x1d, 1 ; 29 + 1bb4: e8 2f mov r30, r24 + 1bb6: f0 e0 ldi r31, 0x00 ; 0 + 1bb8: ee 0f add r30, r30 + 1bba: ff 1f adc r31, r31 + 1bbc: e4 54 subi r30, 0x44 ; 68 + 1bbe: fc 4f sbci r31, 0xFC ; 252 + 1bc0: 11 82 std Z+1, r1 ; 0x01 + 1bc2: 10 82 st Z, r1 + 1bc4: 08 95 ret + +00001bc6 <__vector_1>: + 1bc6: 1f 92 push r1 + 1bc8: 0f 92 push r0 + 1bca: 0f b6 in r0, 0x3f ; 63 + 1bcc: 0f 92 push r0 + 1bce: 11 24 eor r1, r1 + 1bd0: 2f 93 push r18 + 1bd2: 3f 93 push r19 + 1bd4: 4f 93 push r20 + 1bd6: 5f 93 push r21 + 1bd8: 6f 93 push r22 + 1bda: 7f 93 push r23 + 1bdc: 8f 93 push r24 + 1bde: 9f 93 push r25 + 1be0: af 93 push r26 + 1be2: bf 93 push r27 + 1be4: ef 93 push r30 + 1be6: ff 93 push r31 + 1be8: 80 91 bc 03 lds r24, 0x03BC + 1bec: 90 91 bd 03 lds r25, 0x03BD + 1bf0: 00 97 sbiw r24, 0x00 ; 0 + 1bf2: 29 f0 breq .+10 ; 0x1bfe <__vector_1+0x38> + 1bf4: e0 91 bc 03 lds r30, 0x03BC + 1bf8: f0 91 bd 03 lds r31, 0x03BD + 1bfc: 09 95 icall + 1bfe: ff 91 pop r31 + 1c00: ef 91 pop r30 + 1c02: bf 91 pop r27 + 1c04: af 91 pop r26 + 1c06: 9f 91 pop r25 + 1c08: 8f 91 pop r24 + 1c0a: 7f 91 pop r23 + 1c0c: 6f 91 pop r22 + 1c0e: 5f 91 pop r21 + 1c10: 4f 91 pop r20 + 1c12: 3f 91 pop r19 + 1c14: 2f 91 pop r18 + 1c16: 0f 90 pop r0 + 1c18: 0f be out 0x3f, r0 ; 63 + 1c1a: 0f 90 pop r0 + 1c1c: 1f 90 pop r1 + 1c1e: 18 95 reti + +00001c20 <__vector_2>: + 1c20: 1f 92 push r1 + 1c22: 0f 92 push r0 + 1c24: 0f b6 in r0, 0x3f ; 63 + 1c26: 0f 92 push r0 + 1c28: 11 24 eor r1, r1 + 1c2a: 2f 93 push r18 + 1c2c: 3f 93 push r19 + 1c2e: 4f 93 push r20 + 1c30: 5f 93 push r21 + 1c32: 6f 93 push r22 + 1c34: 7f 93 push r23 + 1c36: 8f 93 push r24 + 1c38: 9f 93 push r25 + 1c3a: af 93 push r26 + 1c3c: bf 93 push r27 + 1c3e: ef 93 push r30 + 1c40: ff 93 push r31 + 1c42: 80 91 be 03 lds r24, 0x03BE + 1c46: 90 91 bf 03 lds r25, 0x03BF + 1c4a: 00 97 sbiw r24, 0x00 ; 0 + 1c4c: 29 f0 breq .+10 ; 0x1c58 <__vector_2+0x38> + 1c4e: e0 91 be 03 lds r30, 0x03BE + 1c52: f0 91 bf 03 lds r31, 0x03BF + 1c56: 09 95 icall + 1c58: ff 91 pop r31 + 1c5a: ef 91 pop r30 + 1c5c: bf 91 pop r27 + 1c5e: af 91 pop r26 + 1c60: 9f 91 pop r25 + 1c62: 8f 91 pop r24 + 1c64: 7f 91 pop r23 + 1c66: 6f 91 pop r22 + 1c68: 5f 91 pop r21 + 1c6a: 4f 91 pop r20 + 1c6c: 3f 91 pop r19 + 1c6e: 2f 91 pop r18 + 1c70: 0f 90 pop r0 + 1c72: 0f be out 0x3f, r0 ; 63 + 1c74: 0f 90 pop r0 + 1c76: 1f 90 pop r1 + 1c78: 18 95 reti + +00001c7a <_Z10randomSeedj>: + 1c7a: 00 97 sbiw r24, 0x00 ; 0 + 1c7c: 29 f0 breq .+10 ; 0x1c88 <_Z10randomSeedj+0xe> + 1c7e: bc 01 movw r22, r24 + 1c80: 80 e0 ldi r24, 0x00 ; 0 + 1c82: 90 e0 ldi r25, 0x00 ; 0 + 1c84: 0e 94 da 26 call 0x4db4 ; 0x4db4 <srandom> + 1c88: 08 95 ret + +00001c8a <_Z6randoml>: + 1c8a: ef 92 push r14 + 1c8c: ff 92 push r15 + 1c8e: 0f 93 push r16 + 1c90: 1f 93 push r17 + 1c92: 7b 01 movw r14, r22 + 1c94: 8c 01 movw r16, r24 + 1c96: 61 15 cp r22, r1 + 1c98: 71 05 cpc r23, r1 + 1c9a: 81 05 cpc r24, r1 + 1c9c: 91 05 cpc r25, r1 + 1c9e: 49 f0 breq .+18 ; 0x1cb2 <_Z6randoml+0x28> + 1ca0: 0e 94 d5 26 call 0x4daa ; 0x4daa <random> + 1ca4: a8 01 movw r20, r16 + 1ca6: 97 01 movw r18, r14 + 1ca8: 0e 94 ef 24 call 0x49de ; 0x49de <__divmodsi4> + 1cac: 9b 01 movw r18, r22 + 1cae: ac 01 movw r20, r24 + 1cb0: 03 c0 rjmp .+6 ; 0x1cb8 <_Z6randoml+0x2e> + 1cb2: 20 e0 ldi r18, 0x00 ; 0 + 1cb4: 30 e0 ldi r19, 0x00 ; 0 + 1cb6: a9 01 movw r20, r18 + 1cb8: b9 01 movw r22, r18 + 1cba: ca 01 movw r24, r20 + 1cbc: 1f 91 pop r17 + 1cbe: 0f 91 pop r16 + 1cc0: ff 90 pop r15 + 1cc2: ef 90 pop r14 + 1cc4: 08 95 ret + +00001cc6 <_Z6randomll>: + 1cc6: ef 92 push r14 + 1cc8: ff 92 push r15 + 1cca: 0f 93 push r16 + 1ccc: 1f 93 push r17 + 1cce: 7b 01 movw r14, r22 + 1cd0: 8c 01 movw r16, r24 + 1cd2: 62 17 cp r22, r18 + 1cd4: 73 07 cpc r23, r19 + 1cd6: 84 07 cpc r24, r20 + 1cd8: 95 07 cpc r25, r21 + 1cda: 64 f4 brge .+24 ; 0x1cf4 <_Z6randomll+0x2e> + 1cdc: ca 01 movw r24, r20 + 1cde: b9 01 movw r22, r18 + 1ce0: 6e 19 sub r22, r14 + 1ce2: 7f 09 sbc r23, r15 + 1ce4: 80 0b sbc r24, r16 + 1ce6: 91 0b sbc r25, r17 + 1ce8: 0e 94 45 0e call 0x1c8a ; 0x1c8a <_Z6randoml> + 1cec: e6 0e add r14, r22 + 1cee: f7 1e adc r15, r23 + 1cf0: 08 1f adc r16, r24 + 1cf2: 19 1f adc r17, r25 + 1cf4: b7 01 movw r22, r14 + 1cf6: c8 01 movw r24, r16 + 1cf8: 1f 91 pop r17 + 1cfa: 0f 91 pop r16 + 1cfc: ff 90 pop r15 + 1cfe: ef 90 pop r14 + 1d00: 08 95 ret + +00001d02 <_Z3maplllll>: + 1d02: 2f 92 push r2 + 1d04: 3f 92 push r3 + 1d06: 4f 92 push r4 + 1d08: 5f 92 push r5 + 1d0a: 6f 92 push r6 + 1d0c: 7f 92 push r7 + 1d0e: 8f 92 push r8 + 1d10: 9f 92 push r9 + 1d12: af 92 push r10 + 1d14: bf 92 push r11 + 1d16: cf 92 push r12 + 1d18: df 92 push r13 + 1d1a: ef 92 push r14 + 1d1c: ff 92 push r15 + 1d1e: 0f 93 push r16 + 1d20: 1f 93 push r17 + 1d22: df 93 push r29 + 1d24: cf 93 push r28 + 1d26: cd b7 in r28, 0x3d ; 61 + 1d28: de b7 in r29, 0x3e ; 62 + 1d2a: 3b 01 movw r6, r22 + 1d2c: 4c 01 movw r8, r24 + 1d2e: 19 01 movw r2, r18 + 1d30: 2a 01 movw r4, r20 + 1d32: 6d 89 ldd r22, Y+21 ; 0x15 + 1d34: 7e 89 ldd r23, Y+22 ; 0x16 + 1d36: 8f 89 ldd r24, Y+23 ; 0x17 + 1d38: 98 8d ldd r25, Y+24 ; 0x18 + 1d3a: 6a 19 sub r22, r10 + 1d3c: 7b 09 sbc r23, r11 + 1d3e: 8c 09 sbc r24, r12 + 1d40: 9d 09 sbc r25, r13 + 1d42: 62 1a sub r6, r18 + 1d44: 73 0a sbc r7, r19 + 1d46: 84 0a sbc r8, r20 + 1d48: 95 0a sbc r9, r21 + 1d4a: a4 01 movw r20, r8 + 1d4c: 93 01 movw r18, r6 + 1d4e: 0e 94 9b 24 call 0x4936 ; 0x4936 <__mulsi3> + 1d52: e2 18 sub r14, r2 + 1d54: f3 08 sbc r15, r3 + 1d56: 04 09 sbc r16, r4 + 1d58: 15 09 sbc r17, r5 + 1d5a: a8 01 movw r20, r16 + 1d5c: 97 01 movw r18, r14 + 1d5e: 0e 94 ef 24 call 0x49de ; 0x49de <__divmodsi4> + 1d62: 2a 0d add r18, r10 + 1d64: 3b 1d adc r19, r11 + 1d66: 4c 1d adc r20, r12 + 1d68: 5d 1d adc r21, r13 + 1d6a: b9 01 movw r22, r18 + 1d6c: ca 01 movw r24, r20 + 1d6e: cf 91 pop r28 + 1d70: df 91 pop r29 + 1d72: 1f 91 pop r17 + 1d74: 0f 91 pop r16 + 1d76: ff 90 pop r15 + 1d78: ef 90 pop r14 + 1d7a: df 90 pop r13 + 1d7c: cf 90 pop r12 + 1d7e: bf 90 pop r11 + 1d80: af 90 pop r10 + 1d82: 9f 90 pop r9 + 1d84: 8f 90 pop r8 + 1d86: 7f 90 pop r7 + 1d88: 6f 90 pop r6 + 1d8a: 5f 90 pop r5 + 1d8c: 4f 90 pop r4 + 1d8e: 3f 90 pop r3 + 1d90: 2f 90 pop r2 + 1d92: 08 95 ret + +00001d94 <_Z8makeWordj>: + 1d94: 08 95 ret + +00001d96 <_Z8makeWordhh>: + 1d96: 70 e0 ldi r23, 0x00 ; 0 + 1d98: 38 2f mov r19, r24 + 1d9a: 20 e0 ldi r18, 0x00 ; 0 + 1d9c: 62 2b or r22, r18 + 1d9e: 73 2b or r23, r19 + 1da0: cb 01 movw r24, r22 + 1da2: 08 95 ret + +00001da4 <_ZN6StringD1Ev>: + 1da4: fc 01 movw r30, r24 + 1da6: 80 81 ld r24, Z + 1da8: 91 81 ldd r25, Z+1 ; 0x01 + 1daa: 0e 94 f5 25 call 0x4bea ; 0x4bea <free> + 1dae: 08 95 ret + +00001db0 <_ZN6String10invalidateEv>: + 1db0: cf 93 push r28 + 1db2: df 93 push r29 + 1db4: ec 01 movw r28, r24 + 1db6: 88 81 ld r24, Y + 1db8: 99 81 ldd r25, Y+1 ; 0x01 + 1dba: 00 97 sbiw r24, 0x00 ; 0 + 1dbc: 11 f0 breq .+4 ; 0x1dc2 <_ZN6String10invalidateEv+0x12> + 1dbe: 0e 94 f5 25 call 0x4bea ; 0x4bea <free> + 1dc2: 19 82 std Y+1, r1 ; 0x01 + 1dc4: 18 82 st Y, r1 + 1dc6: 1d 82 std Y+5, r1 ; 0x05 + 1dc8: 1c 82 std Y+4, r1 ; 0x04 + 1dca: 1b 82 std Y+3, r1 ; 0x03 + 1dcc: 1a 82 std Y+2, r1 ; 0x02 + 1dce: df 91 pop r29 + 1dd0: cf 91 pop r28 + 1dd2: 08 95 ret + +00001dd4 <_ZN6String12changeBufferEj>: + 1dd4: 0f 93 push r16 + 1dd6: 1f 93 push r17 + 1dd8: cf 93 push r28 + 1dda: df 93 push r29 + 1ddc: ec 01 movw r28, r24 + 1dde: 8b 01 movw r16, r22 + 1de0: 6f 5f subi r22, 0xFF ; 255 + 1de2: 7f 4f sbci r23, 0xFF ; 255 + 1de4: 88 81 ld r24, Y + 1de6: 99 81 ldd r25, Y+1 ; 0x01 + 1de8: 0e 94 e3 26 call 0x4dc6 ; 0x4dc6 <realloc> + 1dec: 00 97 sbiw r24, 0x00 ; 0 + 1dee: 31 f0 breq .+12 ; 0x1dfc <_ZN6String12changeBufferEj+0x28> + 1df0: 99 83 std Y+1, r25 ; 0x01 + 1df2: 88 83 st Y, r24 + 1df4: 1b 83 std Y+3, r17 ; 0x03 + 1df6: 0a 83 std Y+2, r16 ; 0x02 + 1df8: 81 e0 ldi r24, 0x01 ; 1 + 1dfa: 01 c0 rjmp .+2 ; 0x1dfe <_ZN6String12changeBufferEj+0x2a> + 1dfc: 80 e0 ldi r24, 0x00 ; 0 + 1dfe: df 91 pop r29 + 1e00: cf 91 pop r28 + 1e02: 1f 91 pop r17 + 1e04: 0f 91 pop r16 + 1e06: 08 95 ret + +00001e08 <_ZN6String7reserveEj>: + 1e08: cf 93 push r28 + 1e0a: df 93 push r29 + 1e0c: ec 01 movw r28, r24 + 1e0e: 88 81 ld r24, Y + 1e10: 99 81 ldd r25, Y+1 ; 0x01 + 1e12: 00 97 sbiw r24, 0x00 ; 0 + 1e14: 29 f0 breq .+10 ; 0x1e20 <_ZN6String7reserveEj+0x18> + 1e16: 8a 81 ldd r24, Y+2 ; 0x02 + 1e18: 9b 81 ldd r25, Y+3 ; 0x03 + 1e1a: 86 17 cp r24, r22 + 1e1c: 97 07 cpc r25, r23 + 1e1e: 78 f4 brcc .+30 ; 0x1e3e <_ZN6String7reserveEj+0x36> + 1e20: ce 01 movw r24, r28 + 1e22: 0e 94 ea 0e call 0x1dd4 ; 0x1dd4 <_ZN6String12changeBufferEj> + 1e26: 88 23 and r24, r24 + 1e28: 41 f0 breq .+16 ; 0x1e3a <_ZN6String7reserveEj+0x32> + 1e2a: 8c 81 ldd r24, Y+4 ; 0x04 + 1e2c: 9d 81 ldd r25, Y+5 ; 0x05 + 1e2e: 00 97 sbiw r24, 0x00 ; 0 + 1e30: 31 f4 brne .+12 ; 0x1e3e <_ZN6String7reserveEj+0x36> + 1e32: e8 81 ld r30, Y + 1e34: f9 81 ldd r31, Y+1 ; 0x01 + 1e36: 10 82 st Z, r1 + 1e38: 02 c0 rjmp .+4 ; 0x1e3e <_ZN6String7reserveEj+0x36> + 1e3a: 80 e0 ldi r24, 0x00 ; 0 + 1e3c: 01 c0 rjmp .+2 ; 0x1e40 <_ZN6String7reserveEj+0x38> + 1e3e: 81 e0 ldi r24, 0x01 ; 1 + 1e40: df 91 pop r29 + 1e42: cf 91 pop r28 + 1e44: 08 95 ret + +00001e46 <_ZN6String4copyEPKcj>: + 1e46: ef 92 push r14 + 1e48: ff 92 push r15 + 1e4a: 0f 93 push r16 + 1e4c: 1f 93 push r17 + 1e4e: cf 93 push r28 + 1e50: df 93 push r29 + 1e52: ec 01 movw r28, r24 + 1e54: 7b 01 movw r14, r22 + 1e56: 8a 01 movw r16, r20 + 1e58: ba 01 movw r22, r20 + 1e5a: 0e 94 04 0f call 0x1e08 ; 0x1e08 <_ZN6String7reserveEj> + 1e5e: 88 23 and r24, r24 + 1e60: 21 f4 brne .+8 ; 0x1e6a <_ZN6String4copyEPKcj+0x24> + 1e62: ce 01 movw r24, r28 + 1e64: 0e 94 d8 0e call 0x1db0 ; 0x1db0 <_ZN6String10invalidateEv> + 1e68: 07 c0 rjmp .+14 ; 0x1e78 <_ZN6String4copyEPKcj+0x32> + 1e6a: 1d 83 std Y+5, r17 ; 0x05 + 1e6c: 0c 83 std Y+4, r16 ; 0x04 + 1e6e: 88 81 ld r24, Y + 1e70: 99 81 ldd r25, Y+1 ; 0x01 + 1e72: b7 01 movw r22, r14 + 1e74: 0e 94 29 28 call 0x5052 ; 0x5052 <strcpy> + 1e78: ce 01 movw r24, r28 + 1e7a: df 91 pop r29 + 1e7c: cf 91 pop r28 + 1e7e: 1f 91 pop r17 + 1e80: 0f 91 pop r16 + 1e82: ff 90 pop r15 + 1e84: ef 90 pop r14 + 1e86: 08 95 ret + +00001e88 <_ZN6StringC1EPKc>: + 1e88: cf 93 push r28 + 1e8a: df 93 push r29 + 1e8c: fc 01 movw r30, r24 + 1e8e: 11 82 std Z+1, r1 ; 0x01 + 1e90: 10 82 st Z, r1 + 1e92: 13 82 std Z+3, r1 ; 0x03 + 1e94: 12 82 std Z+2, r1 ; 0x02 + 1e96: 15 82 std Z+5, r1 ; 0x05 + 1e98: 14 82 std Z+4, r1 ; 0x04 + 1e9a: 16 82 std Z+6, r1 ; 0x06 + 1e9c: 61 15 cp r22, r1 + 1e9e: 71 05 cpc r23, r1 + 1ea0: 59 f0 breq .+22 ; 0x1eb8 <_ZN6StringC1EPKc+0x30> + 1ea2: eb 01 movw r28, r22 + 1ea4: 09 90 ld r0, Y+ + 1ea6: 00 20 and r0, r0 + 1ea8: e9 f7 brne .-6 ; 0x1ea4 <_ZN6StringC1EPKc+0x1c> + 1eaa: ae 01 movw r20, r28 + 1eac: 41 50 subi r20, 0x01 ; 1 + 1eae: 50 40 sbci r21, 0x00 ; 0 + 1eb0: 46 1b sub r20, r22 + 1eb2: 57 0b sbc r21, r23 + 1eb4: 0e 94 23 0f call 0x1e46 ; 0x1e46 <_ZN6String4copyEPKcj> + 1eb8: df 91 pop r29 + 1eba: cf 91 pop r28 + 1ebc: 08 95 ret + +00001ebe <_ZN6StringaSERKS_>: + 1ebe: ef 92 push r14 + 1ec0: ff 92 push r15 + 1ec2: cf 93 push r28 + 1ec4: df 93 push r29 + 1ec6: ec 01 movw r28, r24 + 1ec8: fb 01 movw r30, r22 + 1eca: 86 17 cp r24, r22 + 1ecc: 97 07 cpc r25, r23 + 1ece: 61 f0 breq .+24 ; 0x1ee8 <_ZN6StringaSERKS_+0x2a> + 1ed0: 60 81 ld r22, Z + 1ed2: 71 81 ldd r23, Z+1 ; 0x01 + 1ed4: 61 15 cp r22, r1 + 1ed6: 71 05 cpc r23, r1 + 1ed8: 29 f0 breq .+10 ; 0x1ee4 <_ZN6StringaSERKS_+0x26> + 1eda: 44 81 ldd r20, Z+4 ; 0x04 + 1edc: 55 81 ldd r21, Z+5 ; 0x05 + 1ede: 0e 94 23 0f call 0x1e46 ; 0x1e46 <_ZN6String4copyEPKcj> + 1ee2: 02 c0 rjmp .+4 ; 0x1ee8 <_ZN6StringaSERKS_+0x2a> + 1ee4: 0e 94 d8 0e call 0x1db0 ; 0x1db0 <_ZN6String10invalidateEv> + 1ee8: ce 01 movw r24, r28 + 1eea: df 91 pop r29 + 1eec: cf 91 pop r28 + 1eee: ff 90 pop r15 + 1ef0: ef 90 pop r14 + 1ef2: 08 95 ret + +00001ef4 <_ZN6StringC1ERKS_>: + 1ef4: fc 01 movw r30, r24 + 1ef6: 11 82 std Z+1, r1 ; 0x01 + 1ef8: 10 82 st Z, r1 + 1efa: 13 82 std Z+3, r1 ; 0x03 + 1efc: 12 82 std Z+2, r1 ; 0x02 + 1efe: 15 82 std Z+5, r1 ; 0x05 + 1f00: 14 82 std Z+4, r1 ; 0x04 + 1f02: 16 82 std Z+6, r1 ; 0x06 + 1f04: 0e 94 5f 0f call 0x1ebe ; 0x1ebe <_ZN6StringaSERKS_> + 1f08: 08 95 ret + +00001f0a <_ZN6StringaSEPKc>: + 1f0a: 0f 93 push r16 + 1f0c: 1f 93 push r17 + 1f0e: 8c 01 movw r16, r24 + 1f10: 61 15 cp r22, r1 + 1f12: 71 05 cpc r23, r1 + 1f14: 61 f0 breq .+24 ; 0x1f2e <_ZN6StringaSEPKc+0x24> + 1f16: db 01 movw r26, r22 + 1f18: 0d 90 ld r0, X+ + 1f1a: 00 20 and r0, r0 + 1f1c: e9 f7 brne .-6 ; 0x1f18 <_ZN6StringaSEPKc+0xe> + 1f1e: ad 01 movw r20, r26 + 1f20: 41 50 subi r20, 0x01 ; 1 + 1f22: 50 40 sbci r21, 0x00 ; 0 + 1f24: 46 1b sub r20, r22 + 1f26: 57 0b sbc r21, r23 + 1f28: 0e 94 23 0f call 0x1e46 ; 0x1e46 <_ZN6String4copyEPKcj> + 1f2c: 02 c0 rjmp .+4 ; 0x1f32 <_ZN6StringaSEPKc+0x28> + 1f2e: 0e 94 d8 0e call 0x1db0 ; 0x1db0 <_ZN6String10invalidateEv> + 1f32: c8 01 movw r24, r16 + 1f34: 1f 91 pop r17 + 1f36: 0f 91 pop r16 + 1f38: 08 95 ret + +00001f3a <_ZN6StringC1Emh>: + 1f3a: ef 92 push r14 + 1f3c: ff 92 push r15 + 1f3e: 0f 93 push r16 + 1f40: 1f 93 push r17 + 1f42: df 93 push r29 + 1f44: cf 93 push r28 + 1f46: cd b7 in r28, 0x3d ; 61 + 1f48: de b7 in r29, 0x3e ; 62 + 1f4a: a1 97 sbiw r28, 0x21 ; 33 + 1f4c: 0f b6 in r0, 0x3f ; 63 + 1f4e: f8 94 cli + 1f50: de bf out 0x3e, r29 ; 62 + 1f52: 0f be out 0x3f, r0 ; 63 + 1f54: cd bf out 0x3d, r28 ; 61 + 1f56: 7c 01 movw r14, r24 + 1f58: cb 01 movw r24, r22 + 1f5a: ba 01 movw r22, r20 + 1f5c: f7 01 movw r30, r14 + 1f5e: 11 82 std Z+1, r1 ; 0x01 + 1f60: 10 82 st Z, r1 + 1f62: 13 82 std Z+3, r1 ; 0x03 + 1f64: 12 82 std Z+2, r1 ; 0x02 + 1f66: 15 82 std Z+5, r1 ; 0x05 + 1f68: 14 82 std Z+4, r1 ; 0x04 + 1f6a: 16 82 std Z+6, r1 ; 0x06 + 1f6c: 8e 01 movw r16, r28 + 1f6e: 0f 5f subi r16, 0xFF ; 255 + 1f70: 1f 4f sbci r17, 0xFF ; 255 + 1f72: a8 01 movw r20, r16 + 1f74: 30 e0 ldi r19, 0x00 ; 0 + 1f76: 0e 94 dc 28 call 0x51b8 ; 0x51b8 <ultoa> + 1f7a: c7 01 movw r24, r14 + 1f7c: b8 01 movw r22, r16 + 1f7e: 0e 94 85 0f call 0x1f0a ; 0x1f0a <_ZN6StringaSEPKc> + 1f82: a1 96 adiw r28, 0x21 ; 33 + 1f84: 0f b6 in r0, 0x3f ; 63 + 1f86: f8 94 cli + 1f88: de bf out 0x3e, r29 ; 62 + 1f8a: 0f be out 0x3f, r0 ; 63 + 1f8c: cd bf out 0x3d, r28 ; 61 + 1f8e: cf 91 pop r28 + 1f90: df 91 pop r29 + 1f92: 1f 91 pop r17 + 1f94: 0f 91 pop r16 + 1f96: ff 90 pop r15 + 1f98: ef 90 pop r14 + 1f9a: 08 95 ret + +00001f9c <_ZN6StringC1Elh>: + 1f9c: ef 92 push r14 + 1f9e: ff 92 push r15 + 1fa0: 0f 93 push r16 + 1fa2: 1f 93 push r17 + 1fa4: df 93 push r29 + 1fa6: cf 93 push r28 + 1fa8: cd b7 in r28, 0x3d ; 61 + 1faa: de b7 in r29, 0x3e ; 62 + 1fac: a2 97 sbiw r28, 0x22 ; 34 + 1fae: 0f b6 in r0, 0x3f ; 63 + 1fb0: f8 94 cli + 1fb2: de bf out 0x3e, r29 ; 62 + 1fb4: 0f be out 0x3f, r0 ; 63 + 1fb6: cd bf out 0x3d, r28 ; 61 + 1fb8: 7c 01 movw r14, r24 + 1fba: cb 01 movw r24, r22 + 1fbc: ba 01 movw r22, r20 + 1fbe: f7 01 movw r30, r14 + 1fc0: 11 82 std Z+1, r1 ; 0x01 + 1fc2: 10 82 st Z, r1 + 1fc4: 13 82 std Z+3, r1 ; 0x03 + 1fc6: 12 82 std Z+2, r1 ; 0x02 + 1fc8: 15 82 std Z+5, r1 ; 0x05 + 1fca: 14 82 std Z+4, r1 ; 0x04 + 1fcc: 16 82 std Z+6, r1 ; 0x06 + 1fce: 8e 01 movw r16, r28 + 1fd0: 0f 5f subi r16, 0xFF ; 255 + 1fd2: 1f 4f sbci r17, 0xFF ; 255 + 1fd4: a8 01 movw r20, r16 + 1fd6: 30 e0 ldi r19, 0x00 ; 0 + 1fd8: 0e 94 93 28 call 0x5126 ; 0x5126 <ltoa> + 1fdc: c7 01 movw r24, r14 + 1fde: b8 01 movw r22, r16 + 1fe0: 0e 94 85 0f call 0x1f0a ; 0x1f0a <_ZN6StringaSEPKc> + 1fe4: a2 96 adiw r28, 0x22 ; 34 + 1fe6: 0f b6 in r0, 0x3f ; 63 + 1fe8: f8 94 cli + 1fea: de bf out 0x3e, r29 ; 62 + 1fec: 0f be out 0x3f, r0 ; 63 + 1fee: cd bf out 0x3d, r28 ; 61 + 1ff0: cf 91 pop r28 + 1ff2: df 91 pop r29 + 1ff4: 1f 91 pop r17 + 1ff6: 0f 91 pop r16 + 1ff8: ff 90 pop r15 + 1ffa: ef 90 pop r14 + 1ffc: 08 95 ret + +00001ffe <_ZN6StringC1Ejh>: + 1ffe: ef 92 push r14 + 2000: ff 92 push r15 + 2002: 0f 93 push r16 + 2004: 1f 93 push r17 + 2006: df 93 push r29 + 2008: cf 93 push r28 + 200a: cd b7 in r28, 0x3d ; 61 + 200c: de b7 in r29, 0x3e ; 62 + 200e: 61 97 sbiw r28, 0x11 ; 17 + 2010: 0f b6 in r0, 0x3f ; 63 + 2012: f8 94 cli + 2014: de bf out 0x3e, r29 ; 62 + 2016: 0f be out 0x3f, r0 ; 63 + 2018: cd bf out 0x3d, r28 ; 61 + 201a: 7c 01 movw r14, r24 + 201c: cb 01 movw r24, r22 + 201e: f7 01 movw r30, r14 + 2020: 11 82 std Z+1, r1 ; 0x01 + 2022: 10 82 st Z, r1 + 2024: 13 82 std Z+3, r1 ; 0x03 + 2026: 12 82 std Z+2, r1 ; 0x02 + 2028: 15 82 std Z+5, r1 ; 0x05 + 202a: 14 82 std Z+4, r1 ; 0x04 + 202c: 16 82 std Z+6, r1 ; 0x06 + 202e: 8e 01 movw r16, r28 + 2030: 0f 5f subi r16, 0xFF ; 255 + 2032: 1f 4f sbci r17, 0xFF ; 255 + 2034: b8 01 movw r22, r16 + 2036: 50 e0 ldi r21, 0x00 ; 0 + 2038: 0e 94 01 29 call 0x5202 ; 0x5202 <utoa> + 203c: c7 01 movw r24, r14 + 203e: b8 01 movw r22, r16 + 2040: 0e 94 85 0f call 0x1f0a ; 0x1f0a <_ZN6StringaSEPKc> + 2044: 61 96 adiw r28, 0x11 ; 17 + 2046: 0f b6 in r0, 0x3f ; 63 + 2048: f8 94 cli + 204a: de bf out 0x3e, r29 ; 62 + 204c: 0f be out 0x3f, r0 ; 63 + 204e: cd bf out 0x3d, r28 ; 61 + 2050: cf 91 pop r28 + 2052: df 91 pop r29 + 2054: 1f 91 pop r17 + 2056: 0f 91 pop r16 + 2058: ff 90 pop r15 + 205a: ef 90 pop r14 + 205c: 08 95 ret + +0000205e <_ZN6StringC1Eih>: + 205e: ef 92 push r14 + 2060: ff 92 push r15 + 2062: 0f 93 push r16 + 2064: 1f 93 push r17 + 2066: df 93 push r29 + 2068: cf 93 push r28 + 206a: cd b7 in r28, 0x3d ; 61 + 206c: de b7 in r29, 0x3e ; 62 + 206e: 62 97 sbiw r28, 0x12 ; 18 + 2070: 0f b6 in r0, 0x3f ; 63 + 2072: f8 94 cli + 2074: de bf out 0x3e, r29 ; 62 + 2076: 0f be out 0x3f, r0 ; 63 + 2078: cd bf out 0x3d, r28 ; 61 + 207a: 7c 01 movw r14, r24 + 207c: cb 01 movw r24, r22 + 207e: f7 01 movw r30, r14 + 2080: 11 82 std Z+1, r1 ; 0x01 + 2082: 10 82 st Z, r1 + 2084: 13 82 std Z+3, r1 ; 0x03 + 2086: 12 82 std Z+2, r1 ; 0x02 + 2088: 15 82 std Z+5, r1 ; 0x05 + 208a: 14 82 std Z+4, r1 ; 0x04 + 208c: 16 82 std Z+6, r1 ; 0x06 + 208e: 8e 01 movw r16, r28 + 2090: 0f 5f subi r16, 0xFF ; 255 + 2092: 1f 4f sbci r17, 0xFF ; 255 + 2094: b8 01 movw r22, r16 + 2096: 50 e0 ldi r21, 0x00 ; 0 + 2098: 0e 94 72 28 call 0x50e4 ; 0x50e4 <itoa> + 209c: c7 01 movw r24, r14 + 209e: b8 01 movw r22, r16 + 20a0: 0e 94 85 0f call 0x1f0a ; 0x1f0a <_ZN6StringaSEPKc> + 20a4: 62 96 adiw r28, 0x12 ; 18 + 20a6: 0f b6 in r0, 0x3f ; 63 + 20a8: f8 94 cli + 20aa: de bf out 0x3e, r29 ; 62 + 20ac: 0f be out 0x3f, r0 ; 63 + 20ae: cd bf out 0x3d, r28 ; 61 + 20b0: cf 91 pop r28 + 20b2: df 91 pop r29 + 20b4: 1f 91 pop r17 + 20b6: 0f 91 pop r16 + 20b8: ff 90 pop r15 + 20ba: ef 90 pop r14 + 20bc: 08 95 ret + +000020be <_ZN6StringC1Ehh>: + 20be: ef 92 push r14 + 20c0: ff 92 push r15 + 20c2: 0f 93 push r16 + 20c4: 1f 93 push r17 + 20c6: df 93 push r29 + 20c8: cf 93 push r28 + 20ca: cd b7 in r28, 0x3d ; 61 + 20cc: de b7 in r29, 0x3e ; 62 + 20ce: 29 97 sbiw r28, 0x09 ; 9 + 20d0: 0f b6 in r0, 0x3f ; 63 + 20d2: f8 94 cli + 20d4: de bf out 0x3e, r29 ; 62 + 20d6: 0f be out 0x3f, r0 ; 63 + 20d8: cd bf out 0x3d, r28 ; 61 + 20da: 7c 01 movw r14, r24 + 20dc: 86 2f mov r24, r22 + 20de: f7 01 movw r30, r14 + 20e0: 11 82 std Z+1, r1 ; 0x01 + 20e2: 10 82 st Z, r1 + 20e4: 13 82 std Z+3, r1 ; 0x03 + 20e6: 12 82 std Z+2, r1 ; 0x02 + 20e8: 15 82 std Z+5, r1 ; 0x05 + 20ea: 14 82 std Z+4, r1 ; 0x04 + 20ec: 16 82 std Z+6, r1 ; 0x06 + 20ee: 90 e0 ldi r25, 0x00 ; 0 + 20f0: 8e 01 movw r16, r28 + 20f2: 0f 5f subi r16, 0xFF ; 255 + 20f4: 1f 4f sbci r17, 0xFF ; 255 + 20f6: b8 01 movw r22, r16 + 20f8: 50 e0 ldi r21, 0x00 ; 0 + 20fa: 0e 94 01 29 call 0x5202 ; 0x5202 <utoa> + 20fe: c7 01 movw r24, r14 + 2100: b8 01 movw r22, r16 + 2102: 0e 94 85 0f call 0x1f0a ; 0x1f0a <_ZN6StringaSEPKc> + 2106: 29 96 adiw r28, 0x09 ; 9 + 2108: 0f b6 in r0, 0x3f ; 63 + 210a: f8 94 cli + 210c: de bf out 0x3e, r29 ; 62 + 210e: 0f be out 0x3f, r0 ; 63 + 2110: cd bf out 0x3d, r28 ; 61 + 2112: cf 91 pop r28 + 2114: df 91 pop r29 + 2116: 1f 91 pop r17 + 2118: 0f 91 pop r16 + 211a: ff 90 pop r15 + 211c: ef 90 pop r14 + 211e: 08 95 ret + +00002120 <_ZN6StringC1Ec>: + 2120: df 93 push r29 + 2122: cf 93 push r28 + 2124: 00 d0 rcall .+0 ; 0x2126 <_ZN6StringC1Ec+0x6> + 2126: cd b7 in r28, 0x3d ; 61 + 2128: de b7 in r29, 0x3e ; 62 + 212a: fc 01 movw r30, r24 + 212c: 11 82 std Z+1, r1 ; 0x01 + 212e: 10 82 st Z, r1 + 2130: 13 82 std Z+3, r1 ; 0x03 + 2132: 12 82 std Z+2, r1 ; 0x02 + 2134: 15 82 std Z+5, r1 ; 0x05 + 2136: 14 82 std Z+4, r1 ; 0x04 + 2138: 16 82 std Z+6, r1 ; 0x06 + 213a: 69 83 std Y+1, r22 ; 0x01 + 213c: 1a 82 std Y+2, r1 ; 0x02 + 213e: be 01 movw r22, r28 + 2140: 6f 5f subi r22, 0xFF ; 255 + 2142: 7f 4f sbci r23, 0xFF ; 255 + 2144: 0e 94 85 0f call 0x1f0a ; 0x1f0a <_ZN6StringaSEPKc> + 2148: 0f 90 pop r0 + 214a: 0f 90 pop r0 + 214c: cf 91 pop r28 + 214e: df 91 pop r29 + 2150: 08 95 ret + +00002152 <_ZN6String6concatEPKcj>: + 2152: ef 92 push r14 + 2154: ff 92 push r15 + 2156: 0f 93 push r16 + 2158: 1f 93 push r17 + 215a: cf 93 push r28 + 215c: df 93 push r29 + 215e: ec 01 movw r28, r24 + 2160: 7b 01 movw r14, r22 + 2162: 0c 81 ldd r16, Y+4 ; 0x04 + 2164: 1d 81 ldd r17, Y+5 ; 0x05 + 2166: 61 15 cp r22, r1 + 2168: 71 05 cpc r23, r1 + 216a: b9 f0 breq .+46 ; 0x219a <_ZN6String6concatEPKcj+0x48> + 216c: 41 15 cp r20, r1 + 216e: 51 05 cpc r21, r1 + 2170: 91 f0 breq .+36 ; 0x2196 <_ZN6String6concatEPKcj+0x44> + 2172: 04 0f add r16, r20 + 2174: 15 1f adc r17, r21 + 2176: b8 01 movw r22, r16 + 2178: 0e 94 04 0f call 0x1e08 ; 0x1e08 <_ZN6String7reserveEj> + 217c: 88 23 and r24, r24 + 217e: 69 f0 breq .+26 ; 0x219a <_ZN6String6concatEPKcj+0x48> + 2180: 28 81 ld r18, Y + 2182: 39 81 ldd r19, Y+1 ; 0x01 + 2184: 8c 81 ldd r24, Y+4 ; 0x04 + 2186: 9d 81 ldd r25, Y+5 ; 0x05 + 2188: 82 0f add r24, r18 + 218a: 93 1f adc r25, r19 + 218c: b7 01 movw r22, r14 + 218e: 0e 94 29 28 call 0x5052 ; 0x5052 <strcpy> + 2192: 1d 83 std Y+5, r17 ; 0x05 + 2194: 0c 83 std Y+4, r16 ; 0x04 + 2196: 81 e0 ldi r24, 0x01 ; 1 + 2198: 01 c0 rjmp .+2 ; 0x219c <_ZN6String6concatEPKcj+0x4a> + 219a: 80 e0 ldi r24, 0x00 ; 0 + 219c: df 91 pop r29 + 219e: cf 91 pop r28 + 21a0: 1f 91 pop r17 + 21a2: 0f 91 pop r16 + 21a4: ff 90 pop r15 + 21a6: ef 90 pop r14 + 21a8: 08 95 ret + +000021aa <_ZN6String6concatERKS_>: + 21aa: fb 01 movw r30, r22 + 21ac: 60 81 ld r22, Z + 21ae: 71 81 ldd r23, Z+1 ; 0x01 + 21b0: 44 81 ldd r20, Z+4 ; 0x04 + 21b2: 55 81 ldd r21, Z+5 ; 0x05 + 21b4: 0e 94 a9 10 call 0x2152 ; 0x2152 <_ZN6String6concatEPKcj> + 21b8: 08 95 ret + +000021ba <_ZN6String6concatEPKc>: + 21ba: 61 15 cp r22, r1 + 21bc: 71 05 cpc r23, r1 + 21be: 61 f0 breq .+24 ; 0x21d8 <_ZN6String6concatEPKc+0x1e> + 21c0: db 01 movw r26, r22 + 21c2: 0d 90 ld r0, X+ + 21c4: 00 20 and r0, r0 + 21c6: e9 f7 brne .-6 ; 0x21c2 <_ZN6String6concatEPKc+0x8> + 21c8: ad 01 movw r20, r26 + 21ca: 41 50 subi r20, 0x01 ; 1 + 21cc: 50 40 sbci r21, 0x00 ; 0 + 21ce: 46 1b sub r20, r22 + 21d0: 57 0b sbc r21, r23 + 21d2: 0e 94 a9 10 call 0x2152 ; 0x2152 <_ZN6String6concatEPKcj> + 21d6: 08 95 ret + 21d8: 80 e0 ldi r24, 0x00 ; 0 + 21da: 08 95 ret + +000021dc <_ZN6String6concatEc>: + 21dc: df 93 push r29 + 21de: cf 93 push r28 + 21e0: 00 d0 rcall .+0 ; 0x21e2 <_ZN6String6concatEc+0x6> + 21e2: cd b7 in r28, 0x3d ; 61 + 21e4: de b7 in r29, 0x3e ; 62 + 21e6: 69 83 std Y+1, r22 ; 0x01 + 21e8: 1a 82 std Y+2, r1 ; 0x02 + 21ea: be 01 movw r22, r28 + 21ec: 6f 5f subi r22, 0xFF ; 255 + 21ee: 7f 4f sbci r23, 0xFF ; 255 + 21f0: 41 e0 ldi r20, 0x01 ; 1 + 21f2: 50 e0 ldi r21, 0x00 ; 0 + 21f4: 0e 94 a9 10 call 0x2152 ; 0x2152 <_ZN6String6concatEPKcj> + 21f8: 0f 90 pop r0 + 21fa: 0f 90 pop r0 + 21fc: cf 91 pop r28 + 21fe: df 91 pop r29 + 2200: 08 95 ret + +00002202 <_ZN6String6concatEh>: + 2202: ef 92 push r14 + 2204: ff 92 push r15 + 2206: 0f 93 push r16 + 2208: 1f 93 push r17 + 220a: df 93 push r29 + 220c: cf 93 push r28 + 220e: 00 d0 rcall .+0 ; 0x2210 <_ZN6String6concatEh+0xe> + 2210: 00 d0 rcall .+0 ; 0x2212 <_ZN6String6concatEh+0x10> + 2212: cd b7 in r28, 0x3d ; 61 + 2214: de b7 in r29, 0x3e ; 62 + 2216: 7c 01 movw r14, r24 + 2218: 86 2f mov r24, r22 + 221a: 90 e0 ldi r25, 0x00 ; 0 + 221c: 8e 01 movw r16, r28 + 221e: 0f 5f subi r16, 0xFF ; 255 + 2220: 1f 4f sbci r17, 0xFF ; 255 + 2222: b8 01 movw r22, r16 + 2224: 4a e0 ldi r20, 0x0A ; 10 + 2226: 50 e0 ldi r21, 0x00 ; 0 + 2228: 0e 94 72 28 call 0x50e4 ; 0x50e4 <itoa> + 222c: f8 01 movw r30, r16 + 222e: 01 90 ld r0, Z+ + 2230: 00 20 and r0, r0 + 2232: e9 f7 brne .-6 ; 0x222e <_ZN6String6concatEh+0x2c> + 2234: af 01 movw r20, r30 + 2236: 41 50 subi r20, 0x01 ; 1 + 2238: 50 40 sbci r21, 0x00 ; 0 + 223a: 40 1b sub r20, r16 + 223c: 51 0b sbc r21, r17 + 223e: c7 01 movw r24, r14 + 2240: b8 01 movw r22, r16 + 2242: 0e 94 a9 10 call 0x2152 ; 0x2152 <_ZN6String6concatEPKcj> + 2246: 0f 90 pop r0 + 2248: 0f 90 pop r0 + 224a: 0f 90 pop r0 + 224c: 0f 90 pop r0 + 224e: cf 91 pop r28 + 2250: df 91 pop r29 + 2252: 1f 91 pop r17 + 2254: 0f 91 pop r16 + 2256: ff 90 pop r15 + 2258: ef 90 pop r14 + 225a: 08 95 ret + +0000225c <_ZN6String6concatEi>: + 225c: ef 92 push r14 + 225e: ff 92 push r15 + 2260: 0f 93 push r16 + 2262: 1f 93 push r17 + 2264: df 93 push r29 + 2266: cf 93 push r28 + 2268: cd b7 in r28, 0x3d ; 61 + 226a: de b7 in r29, 0x3e ; 62 + 226c: 27 97 sbiw r28, 0x07 ; 7 + 226e: 0f b6 in r0, 0x3f ; 63 + 2270: f8 94 cli + 2272: de bf out 0x3e, r29 ; 62 + 2274: 0f be out 0x3f, r0 ; 63 + 2276: cd bf out 0x3d, r28 ; 61 + 2278: 7c 01 movw r14, r24 + 227a: cb 01 movw r24, r22 + 227c: 8e 01 movw r16, r28 + 227e: 0f 5f subi r16, 0xFF ; 255 + 2280: 1f 4f sbci r17, 0xFF ; 255 + 2282: b8 01 movw r22, r16 + 2284: 4a e0 ldi r20, 0x0A ; 10 + 2286: 50 e0 ldi r21, 0x00 ; 0 + 2288: 0e 94 72 28 call 0x50e4 ; 0x50e4 <itoa> + 228c: f8 01 movw r30, r16 + 228e: 01 90 ld r0, Z+ + 2290: 00 20 and r0, r0 + 2292: e9 f7 brne .-6 ; 0x228e <_ZN6String6concatEi+0x32> + 2294: af 01 movw r20, r30 + 2296: 41 50 subi r20, 0x01 ; 1 + 2298: 50 40 sbci r21, 0x00 ; 0 + 229a: 40 1b sub r20, r16 + 229c: 51 0b sbc r21, r17 + 229e: c7 01 movw r24, r14 + 22a0: b8 01 movw r22, r16 + 22a2: 0e 94 a9 10 call 0x2152 ; 0x2152 <_ZN6String6concatEPKcj> + 22a6: 27 96 adiw r28, 0x07 ; 7 + 22a8: 0f b6 in r0, 0x3f ; 63 + 22aa: f8 94 cli + 22ac: de bf out 0x3e, r29 ; 62 + 22ae: 0f be out 0x3f, r0 ; 63 + 22b0: cd bf out 0x3d, r28 ; 61 + 22b2: cf 91 pop r28 + 22b4: df 91 pop r29 + 22b6: 1f 91 pop r17 + 22b8: 0f 91 pop r16 + 22ba: ff 90 pop r15 + 22bc: ef 90 pop r14 + 22be: 08 95 ret + +000022c0 <_ZN6String6concatEj>: + 22c0: ef 92 push r14 + 22c2: ff 92 push r15 + 22c4: 0f 93 push r16 + 22c6: 1f 93 push r17 + 22c8: df 93 push r29 + 22ca: cf 93 push r28 + 22cc: 00 d0 rcall .+0 ; 0x22ce <_ZN6String6concatEj+0xe> + 22ce: 00 d0 rcall .+0 ; 0x22d0 <_ZN6String6concatEj+0x10> + 22d0: 00 d0 rcall .+0 ; 0x22d2 <_ZN6String6concatEj+0x12> + 22d2: cd b7 in r28, 0x3d ; 61 + 22d4: de b7 in r29, 0x3e ; 62 + 22d6: 7c 01 movw r14, r24 + 22d8: cb 01 movw r24, r22 + 22da: 8e 01 movw r16, r28 + 22dc: 0f 5f subi r16, 0xFF ; 255 + 22de: 1f 4f sbci r17, 0xFF ; 255 + 22e0: b8 01 movw r22, r16 + 22e2: 4a e0 ldi r20, 0x0A ; 10 + 22e4: 50 e0 ldi r21, 0x00 ; 0 + 22e6: 0e 94 01 29 call 0x5202 ; 0x5202 <utoa> + 22ea: f8 01 movw r30, r16 + 22ec: 01 90 ld r0, Z+ + 22ee: 00 20 and r0, r0 + 22f0: e9 f7 brne .-6 ; 0x22ec <_ZN6String6concatEj+0x2c> + 22f2: af 01 movw r20, r30 + 22f4: 41 50 subi r20, 0x01 ; 1 + 22f6: 50 40 sbci r21, 0x00 ; 0 + 22f8: 40 1b sub r20, r16 + 22fa: 51 0b sbc r21, r17 + 22fc: c7 01 movw r24, r14 + 22fe: b8 01 movw r22, r16 + 2300: 0e 94 a9 10 call 0x2152 ; 0x2152 <_ZN6String6concatEPKcj> + 2304: 26 96 adiw r28, 0x06 ; 6 + 2306: 0f b6 in r0, 0x3f ; 63 + 2308: f8 94 cli + 230a: de bf out 0x3e, r29 ; 62 + 230c: 0f be out 0x3f, r0 ; 63 + 230e: cd bf out 0x3d, r28 ; 61 + 2310: cf 91 pop r28 + 2312: df 91 pop r29 + 2314: 1f 91 pop r17 + 2316: 0f 91 pop r16 + 2318: ff 90 pop r15 + 231a: ef 90 pop r14 + 231c: 08 95 ret + +0000231e <_ZN6String6concatEl>: + 231e: ef 92 push r14 + 2320: ff 92 push r15 + 2322: 0f 93 push r16 + 2324: 1f 93 push r17 + 2326: df 93 push r29 + 2328: cf 93 push r28 + 232a: cd b7 in r28, 0x3d ; 61 + 232c: de b7 in r29, 0x3e ; 62 + 232e: 2c 97 sbiw r28, 0x0c ; 12 + 2330: 0f b6 in r0, 0x3f ; 63 + 2332: f8 94 cli + 2334: de bf out 0x3e, r29 ; 62 + 2336: 0f be out 0x3f, r0 ; 63 + 2338: cd bf out 0x3d, r28 ; 61 + 233a: 7c 01 movw r14, r24 + 233c: cb 01 movw r24, r22 + 233e: ba 01 movw r22, r20 + 2340: 8e 01 movw r16, r28 + 2342: 0f 5f subi r16, 0xFF ; 255 + 2344: 1f 4f sbci r17, 0xFF ; 255 + 2346: a8 01 movw r20, r16 + 2348: 2a e0 ldi r18, 0x0A ; 10 + 234a: 30 e0 ldi r19, 0x00 ; 0 + 234c: 0e 94 93 28 call 0x5126 ; 0x5126 <ltoa> + 2350: f8 01 movw r30, r16 + 2352: 01 90 ld r0, Z+ + 2354: 00 20 and r0, r0 + 2356: e9 f7 brne .-6 ; 0x2352 <_ZN6String6concatEl+0x34> + 2358: af 01 movw r20, r30 + 235a: 41 50 subi r20, 0x01 ; 1 + 235c: 50 40 sbci r21, 0x00 ; 0 + 235e: 40 1b sub r20, r16 + 2360: 51 0b sbc r21, r17 + 2362: c7 01 movw r24, r14 + 2364: b8 01 movw r22, r16 + 2366: 0e 94 a9 10 call 0x2152 ; 0x2152 <_ZN6String6concatEPKcj> + 236a: 2c 96 adiw r28, 0x0c ; 12 + 236c: 0f b6 in r0, 0x3f ; 63 + 236e: f8 94 cli + 2370: de bf out 0x3e, r29 ; 62 + 2372: 0f be out 0x3f, r0 ; 63 + 2374: cd bf out 0x3d, r28 ; 61 + 2376: cf 91 pop r28 + 2378: df 91 pop r29 + 237a: 1f 91 pop r17 + 237c: 0f 91 pop r16 + 237e: ff 90 pop r15 + 2380: ef 90 pop r14 + 2382: 08 95 ret + +00002384 <_ZN6String6concatEm>: + 2384: ef 92 push r14 + 2386: ff 92 push r15 + 2388: 0f 93 push r16 + 238a: 1f 93 push r17 + 238c: df 93 push r29 + 238e: cf 93 push r28 + 2390: cd b7 in r28, 0x3d ; 61 + 2392: de b7 in r29, 0x3e ; 62 + 2394: 2b 97 sbiw r28, 0x0b ; 11 + 2396: 0f b6 in r0, 0x3f ; 63 + 2398: f8 94 cli + 239a: de bf out 0x3e, r29 ; 62 + 239c: 0f be out 0x3f, r0 ; 63 + 239e: cd bf out 0x3d, r28 ; 61 + 23a0: 7c 01 movw r14, r24 + 23a2: cb 01 movw r24, r22 + 23a4: ba 01 movw r22, r20 + 23a6: 8e 01 movw r16, r28 + 23a8: 0f 5f subi r16, 0xFF ; 255 + 23aa: 1f 4f sbci r17, 0xFF ; 255 + 23ac: a8 01 movw r20, r16 + 23ae: 2a e0 ldi r18, 0x0A ; 10 + 23b0: 30 e0 ldi r19, 0x00 ; 0 + 23b2: 0e 94 dc 28 call 0x51b8 ; 0x51b8 <ultoa> + 23b6: f8 01 movw r30, r16 + 23b8: 01 90 ld r0, Z+ + 23ba: 00 20 and r0, r0 + 23bc: e9 f7 brne .-6 ; 0x23b8 <_ZN6String6concatEm+0x34> + 23be: af 01 movw r20, r30 + 23c0: 41 50 subi r20, 0x01 ; 1 + 23c2: 50 40 sbci r21, 0x00 ; 0 + 23c4: 40 1b sub r20, r16 + 23c6: 51 0b sbc r21, r17 + 23c8: c7 01 movw r24, r14 + 23ca: b8 01 movw r22, r16 + 23cc: 0e 94 a9 10 call 0x2152 ; 0x2152 <_ZN6String6concatEPKcj> + 23d0: 2b 96 adiw r28, 0x0b ; 11 + 23d2: 0f b6 in r0, 0x3f ; 63 + 23d4: f8 94 cli + 23d6: de bf out 0x3e, r29 ; 62 + 23d8: 0f be out 0x3f, r0 ; 63 + 23da: cd bf out 0x3d, r28 ; 61 + 23dc: cf 91 pop r28 + 23de: df 91 pop r29 + 23e0: 1f 91 pop r17 + 23e2: 0f 91 pop r16 + 23e4: ff 90 pop r15 + 23e6: ef 90 pop r14 + 23e8: 08 95 ret + +000023ea <_ZplRK15StringSumHelperRK6String>: + 23ea: 0f 93 push r16 + 23ec: 1f 93 push r17 + 23ee: 8c 01 movw r16, r24 + 23f0: fb 01 movw r30, r22 + 23f2: 60 81 ld r22, Z + 23f4: 71 81 ldd r23, Z+1 ; 0x01 + 23f6: 44 81 ldd r20, Z+4 ; 0x04 + 23f8: 55 81 ldd r21, Z+5 ; 0x05 + 23fa: 0e 94 a9 10 call 0x2152 ; 0x2152 <_ZN6String6concatEPKcj> + 23fe: 88 23 and r24, r24 + 2400: 19 f4 brne .+6 ; 0x2408 <_ZplRK15StringSumHelperRK6String+0x1e> + 2402: c8 01 movw r24, r16 + 2404: 0e 94 d8 0e call 0x1db0 ; 0x1db0 <_ZN6String10invalidateEv> + 2408: c8 01 movw r24, r16 + 240a: 1f 91 pop r17 + 240c: 0f 91 pop r16 + 240e: 08 95 ret + +00002410 <_ZplRK15StringSumHelperPKc>: + 2410: 0f 93 push r16 + 2412: 1f 93 push r17 + 2414: 8c 01 movw r16, r24 + 2416: 61 15 cp r22, r1 + 2418: 71 05 cpc r23, r1 + 241a: 69 f0 breq .+26 ; 0x2436 <_ZplRK15StringSumHelperPKc+0x26> + 241c: db 01 movw r26, r22 + 241e: 0d 90 ld r0, X+ + 2420: 00 20 and r0, r0 + 2422: e9 f7 brne .-6 ; 0x241e <_ZplRK15StringSumHelperPKc+0xe> + 2424: ad 01 movw r20, r26 + 2426: 41 50 subi r20, 0x01 ; 1 + 2428: 50 40 sbci r21, 0x00 ; 0 + 242a: 46 1b sub r20, r22 + 242c: 57 0b sbc r21, r23 + 242e: 0e 94 a9 10 call 0x2152 ; 0x2152 <_ZN6String6concatEPKcj> + 2432: 88 23 and r24, r24 + 2434: 19 f4 brne .+6 ; 0x243c <_ZplRK15StringSumHelperPKc+0x2c> + 2436: c8 01 movw r24, r16 + 2438: 0e 94 d8 0e call 0x1db0 ; 0x1db0 <_ZN6String10invalidateEv> + 243c: c8 01 movw r24, r16 + 243e: 1f 91 pop r17 + 2440: 0f 91 pop r16 + 2442: 08 95 ret + +00002444 <_ZplRK15StringSumHelperc>: + 2444: 0f 93 push r16 + 2446: 1f 93 push r17 + 2448: 8c 01 movw r16, r24 + 244a: 0e 94 ee 10 call 0x21dc ; 0x21dc <_ZN6String6concatEc> + 244e: 88 23 and r24, r24 + 2450: 19 f4 brne .+6 ; 0x2458 <_ZplRK15StringSumHelperc+0x14> + 2452: c8 01 movw r24, r16 + 2454: 0e 94 d8 0e call 0x1db0 ; 0x1db0 <_ZN6String10invalidateEv> + 2458: c8 01 movw r24, r16 + 245a: 1f 91 pop r17 + 245c: 0f 91 pop r16 + 245e: 08 95 ret + +00002460 <_ZplRK15StringSumHelperh>: + 2460: 0f 93 push r16 + 2462: 1f 93 push r17 + 2464: 8c 01 movw r16, r24 + 2466: 0e 94 01 11 call 0x2202 ; 0x2202 <_ZN6String6concatEh> + 246a: 88 23 and r24, r24 + 246c: 19 f4 brne .+6 ; 0x2474 <_ZplRK15StringSumHelperh+0x14> + 246e: c8 01 movw r24, r16 + 2470: 0e 94 d8 0e call 0x1db0 ; 0x1db0 <_ZN6String10invalidateEv> + 2474: c8 01 movw r24, r16 + 2476: 1f 91 pop r17 + 2478: 0f 91 pop r16 + 247a: 08 95 ret + +0000247c <_ZplRK15StringSumHelperi>: + 247c: 0f 93 push r16 + 247e: 1f 93 push r17 + 2480: 8c 01 movw r16, r24 + 2482: 0e 94 2e 11 call 0x225c ; 0x225c <_ZN6String6concatEi> + 2486: 88 23 and r24, r24 + 2488: 19 f4 brne .+6 ; 0x2490 <_ZplRK15StringSumHelperi+0x14> + 248a: c8 01 movw r24, r16 + 248c: 0e 94 d8 0e call 0x1db0 ; 0x1db0 <_ZN6String10invalidateEv> + 2490: c8 01 movw r24, r16 + 2492: 1f 91 pop r17 + 2494: 0f 91 pop r16 + 2496: 08 95 ret + +00002498 <_ZplRK15StringSumHelperj>: + 2498: 0f 93 push r16 + 249a: 1f 93 push r17 + 249c: 8c 01 movw r16, r24 + 249e: 0e 94 60 11 call 0x22c0 ; 0x22c0 <_ZN6String6concatEj> + 24a2: 88 23 and r24, r24 + 24a4: 19 f4 brne .+6 ; 0x24ac <_ZplRK15StringSumHelperj+0x14> + 24a6: c8 01 movw r24, r16 + 24a8: 0e 94 d8 0e call 0x1db0 ; 0x1db0 <_ZN6String10invalidateEv> + 24ac: c8 01 movw r24, r16 + 24ae: 1f 91 pop r17 + 24b0: 0f 91 pop r16 + 24b2: 08 95 ret + +000024b4 <_ZplRK15StringSumHelperl>: + 24b4: 0f 93 push r16 + 24b6: 1f 93 push r17 + 24b8: 8c 01 movw r16, r24 + 24ba: 0e 94 8f 11 call 0x231e ; 0x231e <_ZN6String6concatEl> + 24be: 88 23 and r24, r24 + 24c0: 19 f4 brne .+6 ; 0x24c8 <_ZplRK15StringSumHelperl+0x14> + 24c2: c8 01 movw r24, r16 + 24c4: 0e 94 d8 0e call 0x1db0 ; 0x1db0 <_ZN6String10invalidateEv> + 24c8: c8 01 movw r24, r16 + 24ca: 1f 91 pop r17 + 24cc: 0f 91 pop r16 + 24ce: 08 95 ret + +000024d0 <_ZplRK15StringSumHelperm>: + 24d0: 0f 93 push r16 + 24d2: 1f 93 push r17 + 24d4: 8c 01 movw r16, r24 + 24d6: 0e 94 c2 11 call 0x2384 ; 0x2384 <_ZN6String6concatEm> + 24da: 88 23 and r24, r24 + 24dc: 19 f4 brne .+6 ; 0x24e4 <_ZplRK15StringSumHelperm+0x14> + 24de: c8 01 movw r24, r16 + 24e0: 0e 94 d8 0e call 0x1db0 ; 0x1db0 <_ZN6String10invalidateEv> + 24e4: c8 01 movw r24, r16 + 24e6: 1f 91 pop r17 + 24e8: 0f 91 pop r16 + 24ea: 08 95 ret + +000024ec <_ZNK6String9compareToERKS_>: + 24ec: cf 93 push r28 + 24ee: df 93 push r29 + 24f0: fc 01 movw r30, r24 + 24f2: db 01 movw r26, r22 + 24f4: 80 81 ld r24, Z + 24f6: 91 81 ldd r25, Z+1 ; 0x01 + 24f8: 00 97 sbiw r24, 0x00 ; 0 + 24fa: 31 f0 breq .+12 ; 0x2508 <_ZNK6String9compareToERKS_+0x1c> + 24fc: 6d 91 ld r22, X+ + 24fe: 7c 91 ld r23, X + 2500: 11 97 sbiw r26, 0x01 ; 1 + 2502: 61 15 cp r22, r1 + 2504: 71 05 cpc r23, r1 + 2506: e9 f4 brne .+58 ; 0x2542 <_ZNK6String9compareToERKS_+0x56> + 2508: cd 91 ld r28, X+ + 250a: dc 91 ld r29, X + 250c: 11 97 sbiw r26, 0x01 ; 1 + 250e: 20 97 sbiw r28, 0x00 ; 0 + 2510: 69 f0 breq .+26 ; 0x252c <_ZNK6String9compareToERKS_+0x40> + 2512: 14 96 adiw r26, 0x04 ; 4 + 2514: 2d 91 ld r18, X+ + 2516: 3c 91 ld r19, X + 2518: 15 97 sbiw r26, 0x05 ; 5 + 251a: 21 15 cp r18, r1 + 251c: 31 05 cpc r19, r1 + 251e: 31 f0 breq .+12 ; 0x252c <_ZNK6String9compareToERKS_+0x40> + 2520: 28 81 ld r18, Y + 2522: 30 e0 ldi r19, 0x00 ; 0 + 2524: 30 95 com r19 + 2526: 21 95 neg r18 + 2528: 3f 4f sbci r19, 0xFF ; 255 + 252a: 12 c0 rjmp .+36 ; 0x2550 <_ZNK6String9compareToERKS_+0x64> + 252c: 00 97 sbiw r24, 0x00 ; 0 + 252e: 71 f0 breq .+28 ; 0x254c <_ZNK6String9compareToERKS_+0x60> + 2530: 24 81 ldd r18, Z+4 ; 0x04 + 2532: 35 81 ldd r19, Z+5 ; 0x05 + 2534: 21 15 cp r18, r1 + 2536: 31 05 cpc r19, r1 + 2538: 49 f0 breq .+18 ; 0x254c <_ZNK6String9compareToERKS_+0x60> + 253a: fc 01 movw r30, r24 + 253c: 20 81 ld r18, Z + 253e: 30 e0 ldi r19, 0x00 ; 0 + 2540: 07 c0 rjmp .+14 ; 0x2550 <_ZNK6String9compareToERKS_+0x64> + 2542: 0e 94 20 28 call 0x5040 ; 0x5040 <strcmp> + 2546: 28 2f mov r18, r24 + 2548: 39 2f mov r19, r25 + 254a: 02 c0 rjmp .+4 ; 0x2550 <_ZNK6String9compareToERKS_+0x64> + 254c: 20 e0 ldi r18, 0x00 ; 0 + 254e: 30 e0 ldi r19, 0x00 ; 0 + 2550: c9 01 movw r24, r18 + 2552: df 91 pop r29 + 2554: cf 91 pop r28 + 2556: 08 95 ret + +00002558 <_ZNK6String6equalsERKS_>: + 2558: fc 01 movw r30, r24 + 255a: 44 81 ldd r20, Z+4 ; 0x04 + 255c: 55 81 ldd r21, Z+5 ; 0x05 + 255e: fb 01 movw r30, r22 + 2560: 24 81 ldd r18, Z+4 ; 0x04 + 2562: 35 81 ldd r19, Z+5 ; 0x05 + 2564: 42 17 cp r20, r18 + 2566: 53 07 cpc r21, r19 + 2568: 29 f4 brne .+10 ; 0x2574 <_ZNK6String6equalsERKS_+0x1c> + 256a: 0e 94 76 12 call 0x24ec ; 0x24ec <_ZNK6String9compareToERKS_> + 256e: 21 e0 ldi r18, 0x01 ; 1 + 2570: 00 97 sbiw r24, 0x00 ; 0 + 2572: 09 f0 breq .+2 ; 0x2576 <_ZNK6String6equalsERKS_+0x1e> + 2574: 20 e0 ldi r18, 0x00 ; 0 + 2576: 82 2f mov r24, r18 + 2578: 08 95 ret + +0000257a <_ZNK6String6equalsEPKc>: + 257a: fc 01 movw r30, r24 + 257c: 84 81 ldd r24, Z+4 ; 0x04 + 257e: 95 81 ldd r25, Z+5 ; 0x05 + 2580: 00 97 sbiw r24, 0x00 ; 0 + 2582: 41 f4 brne .+16 ; 0x2594 <_ZNK6String6equalsEPKc+0x1a> + 2584: 61 15 cp r22, r1 + 2586: 71 05 cpc r23, r1 + 2588: 19 f0 breq .+6 ; 0x2590 <_ZNK6String6equalsEPKc+0x16> + 258a: 81 e0 ldi r24, 0x01 ; 1 + 258c: fb 01 movw r30, r22 + 258e: 09 c0 rjmp .+18 ; 0x25a2 <_ZNK6String6equalsEPKc+0x28> + 2590: 81 e0 ldi r24, 0x01 ; 1 + 2592: 08 95 ret + 2594: 01 90 ld r0, Z+ + 2596: f0 81 ld r31, Z + 2598: e0 2d mov r30, r0 + 259a: 61 15 cp r22, r1 + 259c: 71 05 cpc r23, r1 + 259e: 31 f4 brne .+12 ; 0x25ac <_ZNK6String6equalsEPKc+0x32> + 25a0: 81 e0 ldi r24, 0x01 ; 1 + 25a2: 90 81 ld r25, Z + 25a4: 99 23 and r25, r25 + 25a6: 59 f0 breq .+22 ; 0x25be <_ZNK6String6equalsEPKc+0x44> + 25a8: 80 e0 ldi r24, 0x00 ; 0 + 25aa: 08 95 ret + 25ac: cf 01 movw r24, r30 + 25ae: 0e 94 20 28 call 0x5040 ; 0x5040 <strcmp> + 25b2: 9c 01 movw r18, r24 + 25b4: 81 e0 ldi r24, 0x01 ; 1 + 25b6: 21 15 cp r18, r1 + 25b8: 31 05 cpc r19, r1 + 25ba: 09 f0 breq .+2 ; 0x25be <_ZNK6String6equalsEPKc+0x44> + 25bc: 80 e0 ldi r24, 0x00 ; 0 + 25be: 08 95 ret + +000025c0 <_ZNK6StringltERKS_>: + 25c0: 0e 94 76 12 call 0x24ec ; 0x24ec <_ZNK6String9compareToERKS_> + 25c4: 89 2f mov r24, r25 + 25c6: 88 1f adc r24, r24 + 25c8: 88 27 eor r24, r24 + 25ca: 88 1f adc r24, r24 + 25cc: 08 95 ret + +000025ce <_ZNK6StringgtERKS_>: + 25ce: 0e 94 76 12 call 0x24ec ; 0x24ec <_ZNK6String9compareToERKS_> + 25d2: 21 e0 ldi r18, 0x01 ; 1 + 25d4: 18 16 cp r1, r24 + 25d6: 19 06 cpc r1, r25 + 25d8: 0c f0 brlt .+2 ; 0x25dc <_ZNK6StringgtERKS_+0xe> + 25da: 20 e0 ldi r18, 0x00 ; 0 + 25dc: 82 2f mov r24, r18 + 25de: 08 95 ret + +000025e0 <_ZNK6StringleERKS_>: + 25e0: 0e 94 76 12 call 0x24ec ; 0x24ec <_ZNK6String9compareToERKS_> + 25e4: 21 e0 ldi r18, 0x01 ; 1 + 25e6: 18 16 cp r1, r24 + 25e8: 19 06 cpc r1, r25 + 25ea: 0c f4 brge .+2 ; 0x25ee <_ZNK6StringleERKS_+0xe> + 25ec: 20 e0 ldi r18, 0x00 ; 0 + 25ee: 82 2f mov r24, r18 + 25f0: 08 95 ret + +000025f2 <_ZNK6StringgeERKS_>: + 25f2: 0e 94 76 12 call 0x24ec ; 0x24ec <_ZNK6String9compareToERKS_> + 25f6: 89 2f mov r24, r25 + 25f8: 80 95 com r24 + 25fa: 88 1f adc r24, r24 + 25fc: 88 27 eor r24, r24 + 25fe: 88 1f adc r24, r24 + 2600: 08 95 ret + +00002602 <_ZNK6String16equalsIgnoreCaseERKS_>: + 2602: ef 92 push r14 + 2604: ff 92 push r15 + 2606: 0f 93 push r16 + 2608: 1f 93 push r17 + 260a: cf 93 push r28 + 260c: df 93 push r29 + 260e: fc 01 movw r30, r24 + 2610: db 01 movw r26, r22 + 2612: 86 17 cp r24, r22 + 2614: 97 07 cpc r25, r23 + 2616: 29 f1 breq .+74 ; 0x2662 <_ZNK6String16equalsIgnoreCaseERKS_+0x60> + 2618: 84 81 ldd r24, Z+4 ; 0x04 + 261a: 95 81 ldd r25, Z+5 ; 0x05 + 261c: 14 96 adiw r26, 0x04 ; 4 + 261e: 2d 91 ld r18, X+ + 2620: 3c 91 ld r19, X + 2622: 15 97 sbiw r26, 0x05 ; 5 + 2624: 82 17 cp r24, r18 + 2626: 93 07 cpc r25, r19 + 2628: f1 f4 brne .+60 ; 0x2666 <_ZNK6String16equalsIgnoreCaseERKS_+0x64> + 262a: 00 97 sbiw r24, 0x00 ; 0 + 262c: d1 f0 breq .+52 ; 0x2662 <_ZNK6String16equalsIgnoreCaseERKS_+0x60> + 262e: 00 81 ld r16, Z + 2630: 11 81 ldd r17, Z+1 ; 0x01 + 2632: cd 91 ld r28, X+ + 2634: dc 91 ld r29, X + 2636: 11 97 sbiw r26, 0x01 ; 1 + 2638: 0f c0 rjmp .+30 ; 0x2658 <_ZNK6String16equalsIgnoreCaseERKS_+0x56> + 263a: 99 27 eor r25, r25 + 263c: 87 fd sbrc r24, 7 + 263e: 90 95 com r25 + 2640: 0e 94 dd 27 call 0x4fba ; 0x4fba <tolower> + 2644: 7c 01 movw r14, r24 + 2646: 89 91 ld r24, Y+ + 2648: 99 27 eor r25, r25 + 264a: 87 fd sbrc r24, 7 + 264c: 90 95 com r25 + 264e: 0e 94 dd 27 call 0x4fba ; 0x4fba <tolower> + 2652: e8 16 cp r14, r24 + 2654: f9 06 cpc r15, r25 + 2656: 39 f4 brne .+14 ; 0x2666 <_ZNK6String16equalsIgnoreCaseERKS_+0x64> + 2658: f8 01 movw r30, r16 + 265a: 81 91 ld r24, Z+ + 265c: 8f 01 movw r16, r30 + 265e: 88 23 and r24, r24 + 2660: 61 f7 brne .-40 ; 0x263a <_ZNK6String16equalsIgnoreCaseERKS_+0x38> + 2662: 81 e0 ldi r24, 0x01 ; 1 + 2664: 01 c0 rjmp .+2 ; 0x2668 <_ZNK6String16equalsIgnoreCaseERKS_+0x66> + 2666: 80 e0 ldi r24, 0x00 ; 0 + 2668: df 91 pop r29 + 266a: cf 91 pop r28 + 266c: 1f 91 pop r17 + 266e: 0f 91 pop r16 + 2670: ff 90 pop r15 + 2672: ef 90 pop r14 + 2674: 08 95 ret + +00002676 <_ZNK6String10startsWithERKS_j>: + 2676: fc 01 movw r30, r24 + 2678: db 01 movw r26, r22 + 267a: ca 01 movw r24, r20 + 267c: 14 96 adiw r26, 0x04 ; 4 + 267e: 4d 91 ld r20, X+ + 2680: 5c 91 ld r21, X + 2682: 15 97 sbiw r26, 0x05 ; 5 + 2684: 24 81 ldd r18, Z+4 ; 0x04 + 2686: 35 81 ldd r19, Z+5 ; 0x05 + 2688: 24 1b sub r18, r20 + 268a: 35 0b sbc r19, r21 + 268c: 28 17 cp r18, r24 + 268e: 39 07 cpc r19, r25 + 2690: a0 f0 brcs .+40 ; 0x26ba <_ZNK6String10startsWithERKS_j+0x44> + 2692: 20 81 ld r18, Z + 2694: 31 81 ldd r19, Z+1 ; 0x01 + 2696: 21 15 cp r18, r1 + 2698: 31 05 cpc r19, r1 + 269a: 79 f0 breq .+30 ; 0x26ba <_ZNK6String10startsWithERKS_j+0x44> + 269c: 6d 91 ld r22, X+ + 269e: 7c 91 ld r23, X + 26a0: 11 97 sbiw r26, 0x01 ; 1 + 26a2: 61 15 cp r22, r1 + 26a4: 71 05 cpc r23, r1 + 26a6: 59 f0 breq .+22 ; 0x26be <_ZNK6String10startsWithERKS_j+0x48> + 26a8: 82 0f add r24, r18 + 26aa: 93 1f adc r25, r19 + 26ac: 0e 94 30 28 call 0x5060 ; 0x5060 <strncmp> + 26b0: 9c 01 movw r18, r24 + 26b2: 81 e0 ldi r24, 0x01 ; 1 + 26b4: 21 15 cp r18, r1 + 26b6: 31 05 cpc r19, r1 + 26b8: 19 f0 breq .+6 ; 0x26c0 <_ZNK6String10startsWithERKS_j+0x4a> + 26ba: 80 e0 ldi r24, 0x00 ; 0 + 26bc: 08 95 ret + 26be: 80 e0 ldi r24, 0x00 ; 0 + 26c0: 08 95 ret + +000026c2 <_ZNK6String10startsWithERKS_>: + 26c2: fc 01 movw r30, r24 + 26c4: 44 81 ldd r20, Z+4 ; 0x04 + 26c6: 55 81 ldd r21, Z+5 ; 0x05 + 26c8: fb 01 movw r30, r22 + 26ca: 24 81 ldd r18, Z+4 ; 0x04 + 26cc: 35 81 ldd r19, Z+5 ; 0x05 + 26ce: 42 17 cp r20, r18 + 26d0: 53 07 cpc r21, r19 + 26d2: 28 f0 brcs .+10 ; 0x26de <_ZNK6String10startsWithERKS_+0x1c> + 26d4: 40 e0 ldi r20, 0x00 ; 0 + 26d6: 50 e0 ldi r21, 0x00 ; 0 + 26d8: 0e 94 3b 13 call 0x2676 ; 0x2676 <_ZNK6String10startsWithERKS_j> + 26dc: 08 95 ret + 26de: 80 e0 ldi r24, 0x00 ; 0 + 26e0: 08 95 ret + +000026e2 <_ZNK6String8endsWithERKS_>: + 26e2: fc 01 movw r30, r24 + 26e4: db 01 movw r26, r22 + 26e6: 84 81 ldd r24, Z+4 ; 0x04 + 26e8: 95 81 ldd r25, Z+5 ; 0x05 + 26ea: 14 96 adiw r26, 0x04 ; 4 + 26ec: 4d 91 ld r20, X+ + 26ee: 5c 91 ld r21, X + 26f0: 15 97 sbiw r26, 0x05 ; 5 + 26f2: 84 17 cp r24, r20 + 26f4: 95 07 cpc r25, r21 + 26f6: b0 f0 brcs .+44 ; 0x2724 <_ZNK6String8endsWithERKS_+0x42> + 26f8: 20 81 ld r18, Z + 26fa: 31 81 ldd r19, Z+1 ; 0x01 + 26fc: 21 15 cp r18, r1 + 26fe: 31 05 cpc r19, r1 + 2700: 89 f0 breq .+34 ; 0x2724 <_ZNK6String8endsWithERKS_+0x42> + 2702: 6d 91 ld r22, X+ + 2704: 7c 91 ld r23, X + 2706: 11 97 sbiw r26, 0x01 ; 1 + 2708: 61 15 cp r22, r1 + 270a: 71 05 cpc r23, r1 + 270c: 69 f0 breq .+26 ; 0x2728 <_ZNK6String8endsWithERKS_+0x46> + 270e: 84 1b sub r24, r20 + 2710: 95 0b sbc r25, r21 + 2712: 82 0f add r24, r18 + 2714: 93 1f adc r25, r19 + 2716: 0e 94 20 28 call 0x5040 ; 0x5040 <strcmp> + 271a: 9c 01 movw r18, r24 + 271c: 81 e0 ldi r24, 0x01 ; 1 + 271e: 21 15 cp r18, r1 + 2720: 31 05 cpc r19, r1 + 2722: 19 f0 breq .+6 ; 0x272a <_ZNK6String8endsWithERKS_+0x48> + 2724: 80 e0 ldi r24, 0x00 ; 0 + 2726: 08 95 ret + 2728: 80 e0 ldi r24, 0x00 ; 0 + 272a: 08 95 ret + +0000272c <_ZN6String9setCharAtEjc>: + 272c: fc 01 movw r30, r24 + 272e: 84 81 ldd r24, Z+4 ; 0x04 + 2730: 95 81 ldd r25, Z+5 ; 0x05 + 2732: 68 17 cp r22, r24 + 2734: 79 07 cpc r23, r25 + 2736: 30 f4 brcc .+12 ; 0x2744 <_ZN6String9setCharAtEjc+0x18> + 2738: 01 90 ld r0, Z+ + 273a: f0 81 ld r31, Z + 273c: e0 2d mov r30, r0 + 273e: e6 0f add r30, r22 + 2740: f7 1f adc r31, r23 + 2742: 40 83 st Z, r20 + 2744: 08 95 ret + +00002746 <_ZN6StringixEj>: + 2746: fc 01 movw r30, r24 + 2748: 84 81 ldd r24, Z+4 ; 0x04 + 274a: 95 81 ldd r25, Z+5 ; 0x05 + 274c: 68 17 cp r22, r24 + 274e: 79 07 cpc r23, r25 + 2750: 20 f4 brcc .+8 ; 0x275a <_ZN6StringixEj+0x14> + 2752: 80 81 ld r24, Z + 2754: 91 81 ldd r25, Z+1 ; 0x01 + 2756: 00 97 sbiw r24, 0x00 ; 0 + 2758: 29 f4 brne .+10 ; 0x2764 <_ZN6StringixEj+0x1e> + 275a: 10 92 c0 03 sts 0x03C0, r1 + 275e: 60 ec ldi r22, 0xC0 ; 192 + 2760: 73 e0 ldi r23, 0x03 ; 3 + 2762: 02 c0 rjmp .+4 ; 0x2768 <_ZN6StringixEj+0x22> + 2764: 68 0f add r22, r24 + 2766: 79 1f adc r23, r25 + 2768: cb 01 movw r24, r22 + 276a: 08 95 ret + +0000276c <_ZNK6StringixEj>: + 276c: fc 01 movw r30, r24 + 276e: 84 81 ldd r24, Z+4 ; 0x04 + 2770: 95 81 ldd r25, Z+5 ; 0x05 + 2772: 68 17 cp r22, r24 + 2774: 79 07 cpc r23, r25 + 2776: 48 f4 brcc .+18 ; 0x278a <_ZNK6StringixEj+0x1e> + 2778: 80 81 ld r24, Z + 277a: 91 81 ldd r25, Z+1 ; 0x01 + 277c: 00 97 sbiw r24, 0x00 ; 0 + 277e: 39 f0 breq .+14 ; 0x278e <_ZNK6StringixEj+0x22> + 2780: 68 0f add r22, r24 + 2782: 79 1f adc r23, r25 + 2784: fb 01 movw r30, r22 + 2786: 80 81 ld r24, Z + 2788: 08 95 ret + 278a: 80 e0 ldi r24, 0x00 ; 0 + 278c: 08 95 ret + 278e: 80 e0 ldi r24, 0x00 ; 0 + 2790: 08 95 ret + +00002792 <_ZNK6String6charAtEj>: + 2792: 0e 94 b6 13 call 0x276c ; 0x276c <_ZNK6StringixEj> + 2796: 08 95 ret + +00002798 <_ZNK6String8getBytesEPhjj>: + 2798: 0f 93 push r16 + 279a: 1f 93 push r17 + 279c: cf 93 push r28 + 279e: df 93 push r29 + 27a0: fc 01 movw r30, r24 + 27a2: 8b 01 movw r16, r22 + 27a4: 41 15 cp r20, r1 + 27a6: 51 05 cpc r21, r1 + 27a8: f1 f0 breq .+60 ; 0x27e6 <_ZNK6String8getBytesEPhjj+0x4e> + 27aa: 61 15 cp r22, r1 + 27ac: 71 05 cpc r23, r1 + 27ae: d9 f0 breq .+54 ; 0x27e6 <_ZNK6String8getBytesEPhjj+0x4e> + 27b0: c4 81 ldd r28, Z+4 ; 0x04 + 27b2: d5 81 ldd r29, Z+5 ; 0x05 + 27b4: 2c 17 cp r18, r28 + 27b6: 3d 07 cpc r19, r29 + 27b8: 18 f0 brcs .+6 ; 0x27c0 <_ZNK6String8getBytesEPhjj+0x28> + 27ba: fb 01 movw r30, r22 + 27bc: 10 82 st Z, r1 + 27be: 13 c0 rjmp .+38 ; 0x27e6 <_ZNK6String8getBytesEPhjj+0x4e> + 27c0: 41 50 subi r20, 0x01 ; 1 + 27c2: 50 40 sbci r21, 0x00 ; 0 + 27c4: c2 1b sub r28, r18 + 27c6: d3 0b sbc r29, r19 + 27c8: 4c 17 cp r20, r28 + 27ca: 5d 07 cpc r21, r29 + 27cc: 08 f4 brcc .+2 ; 0x27d0 <_ZNK6String8getBytesEPhjj+0x38> + 27ce: ea 01 movw r28, r20 + 27d0: 60 81 ld r22, Z + 27d2: 71 81 ldd r23, Z+1 ; 0x01 + 27d4: 62 0f add r22, r18 + 27d6: 73 1f adc r23, r19 + 27d8: c8 01 movw r24, r16 + 27da: ae 01 movw r20, r28 + 27dc: 0e 94 3e 28 call 0x507c ; 0x507c <strncpy> + 27e0: c0 0f add r28, r16 + 27e2: d1 1f adc r29, r17 + 27e4: 18 82 st Y, r1 + 27e6: df 91 pop r29 + 27e8: cf 91 pop r28 + 27ea: 1f 91 pop r17 + 27ec: 0f 91 pop r16 + 27ee: 08 95 ret + +000027f0 <_ZNK6String7indexOfEcj>: + 27f0: cf 93 push r28 + 27f2: df 93 push r29 + 27f4: fc 01 movw r30, r24 + 27f6: ca 01 movw r24, r20 + 27f8: 24 81 ldd r18, Z+4 ; 0x04 + 27fa: 35 81 ldd r19, Z+5 ; 0x05 + 27fc: 42 17 cp r20, r18 + 27fe: 53 07 cpc r21, r19 + 2800: 78 f4 brcc .+30 ; 0x2820 <_ZNK6String7indexOfEcj+0x30> + 2802: c0 81 ld r28, Z + 2804: d1 81 ldd r29, Z+1 ; 0x01 + 2806: 77 27 eor r23, r23 + 2808: 67 fd sbrc r22, 7 + 280a: 70 95 com r23 + 280c: 8c 0f add r24, r28 + 280e: 9d 1f adc r25, r29 + 2810: 0e 94 15 28 call 0x502a ; 0x502a <strchr> + 2814: 00 97 sbiw r24, 0x00 ; 0 + 2816: 21 f0 breq .+8 ; 0x2820 <_ZNK6String7indexOfEcj+0x30> + 2818: 9c 01 movw r18, r24 + 281a: 2c 1b sub r18, r28 + 281c: 3d 0b sbc r19, r29 + 281e: 02 c0 rjmp .+4 ; 0x2824 <_ZNK6String7indexOfEcj+0x34> + 2820: 2f ef ldi r18, 0xFF ; 255 + 2822: 3f ef ldi r19, 0xFF ; 255 + 2824: c9 01 movw r24, r18 + 2826: df 91 pop r29 + 2828: cf 91 pop r28 + 282a: 08 95 ret + +0000282c <_ZNK6String7indexOfEc>: + 282c: 40 e0 ldi r20, 0x00 ; 0 + 282e: 50 e0 ldi r21, 0x00 ; 0 + 2830: 0e 94 f8 13 call 0x27f0 ; 0x27f0 <_ZNK6String7indexOfEcj> + 2834: 08 95 ret + +00002836 <_ZNK6String7indexOfERKS_j>: + 2836: cf 93 push r28 + 2838: df 93 push r29 + 283a: fc 01 movw r30, r24 + 283c: ca 01 movw r24, r20 + 283e: 24 81 ldd r18, Z+4 ; 0x04 + 2840: 35 81 ldd r19, Z+5 ; 0x05 + 2842: 42 17 cp r20, r18 + 2844: 53 07 cpc r21, r19 + 2846: 78 f4 brcc .+30 ; 0x2866 <_ZNK6String7indexOfERKS_j+0x30> + 2848: c0 81 ld r28, Z + 284a: d1 81 ldd r29, Z+1 ; 0x01 + 284c: fb 01 movw r30, r22 + 284e: 60 81 ld r22, Z + 2850: 71 81 ldd r23, Z+1 ; 0x01 + 2852: 8c 0f add r24, r28 + 2854: 9d 1f adc r25, r29 + 2856: 0e 94 58 28 call 0x50b0 ; 0x50b0 <strstr> + 285a: 00 97 sbiw r24, 0x00 ; 0 + 285c: 21 f0 breq .+8 ; 0x2866 <_ZNK6String7indexOfERKS_j+0x30> + 285e: 9c 01 movw r18, r24 + 2860: 2c 1b sub r18, r28 + 2862: 3d 0b sbc r19, r29 + 2864: 02 c0 rjmp .+4 ; 0x286a <_ZNK6String7indexOfERKS_j+0x34> + 2866: 2f ef ldi r18, 0xFF ; 255 + 2868: 3f ef ldi r19, 0xFF ; 255 + 286a: c9 01 movw r24, r18 + 286c: df 91 pop r29 + 286e: cf 91 pop r28 + 2870: 08 95 ret + +00002872 <_ZNK6String7indexOfERKS_>: + 2872: 40 e0 ldi r20, 0x00 ; 0 + 2874: 50 e0 ldi r21, 0x00 ; 0 + 2876: 0e 94 1b 14 call 0x2836 ; 0x2836 <_ZNK6String7indexOfERKS_j> + 287a: 08 95 ret + +0000287c <_ZNK6String11lastIndexOfEcj>: + 287c: df 92 push r13 + 287e: ef 92 push r14 + 2880: ff 92 push r15 + 2882: 0f 93 push r16 + 2884: 1f 93 push r17 + 2886: cf 93 push r28 + 2888: df 93 push r29 + 288a: ec 01 movw r28, r24 + 288c: 8c 81 ldd r24, Y+4 ; 0x04 + 288e: 9d 81 ldd r25, Y+5 ; 0x05 + 2890: 48 17 cp r20, r24 + 2892: 59 07 cpc r21, r25 + 2894: f8 f4 brcc .+62 ; 0x28d4 <_ZNK6String11lastIndexOfEcj+0x58> + 2896: 7a 01 movw r14, r20 + 2898: 08 94 sec + 289a: e1 1c adc r14, r1 + 289c: f1 1c adc r15, r1 + 289e: e8 81 ld r30, Y + 28a0: f9 81 ldd r31, Y+1 ; 0x01 + 28a2: ee 0d add r30, r14 + 28a4: ff 1d adc r31, r15 + 28a6: d0 80 ld r13, Z + 28a8: 10 82 st Z, r1 + 28aa: 08 81 ld r16, Y + 28ac: 19 81 ldd r17, Y+1 ; 0x01 + 28ae: 77 27 eor r23, r23 + 28b0: 67 fd sbrc r22, 7 + 28b2: 70 95 com r23 + 28b4: c8 01 movw r24, r16 + 28b6: 0e 94 4d 28 call 0x509a ; 0x509a <strrchr> + 28ba: 0e 0d add r16, r14 + 28bc: 1f 1d adc r17, r15 + 28be: f8 01 movw r30, r16 + 28c0: d0 82 st Z, r13 + 28c2: 00 97 sbiw r24, 0x00 ; 0 + 28c4: 39 f0 breq .+14 ; 0x28d4 <_ZNK6String11lastIndexOfEcj+0x58> + 28c6: 28 81 ld r18, Y + 28c8: 39 81 ldd r19, Y+1 ; 0x01 + 28ca: ac 01 movw r20, r24 + 28cc: 42 1b sub r20, r18 + 28ce: 53 0b sbc r21, r19 + 28d0: 9a 01 movw r18, r20 + 28d2: 02 c0 rjmp .+4 ; 0x28d8 <_ZNK6String11lastIndexOfEcj+0x5c> + 28d4: 2f ef ldi r18, 0xFF ; 255 + 28d6: 3f ef ldi r19, 0xFF ; 255 + 28d8: c9 01 movw r24, r18 + 28da: df 91 pop r29 + 28dc: cf 91 pop r28 + 28de: 1f 91 pop r17 + 28e0: 0f 91 pop r16 + 28e2: ff 90 pop r15 + 28e4: ef 90 pop r14 + 28e6: df 90 pop r13 + 28e8: 08 95 ret + +000028ea <_ZNK6String11lastIndexOfEc>: + 28ea: fc 01 movw r30, r24 + 28ec: 44 81 ldd r20, Z+4 ; 0x04 + 28ee: 55 81 ldd r21, Z+5 ; 0x05 + 28f0: 41 50 subi r20, 0x01 ; 1 + 28f2: 50 40 sbci r21, 0x00 ; 0 + 28f4: 0e 94 3e 14 call 0x287c ; 0x287c <_ZNK6String11lastIndexOfEcj> + 28f8: 08 95 ret + +000028fa <_ZNK6String11lastIndexOfERKS_j>: + 28fa: af 92 push r10 + 28fc: bf 92 push r11 + 28fe: cf 92 push r12 + 2900: df 92 push r13 + 2902: ef 92 push r14 + 2904: ff 92 push r15 + 2906: 0f 93 push r16 + 2908: 1f 93 push r17 + 290a: cf 93 push r28 + 290c: df 93 push r29 + 290e: fc 01 movw r30, r24 + 2910: 6b 01 movw r12, r22 + 2912: 8a 01 movw r16, r20 + 2914: db 01 movw r26, r22 + 2916: 14 96 adiw r26, 0x04 ; 4 + 2918: 2d 91 ld r18, X+ + 291a: 3c 91 ld r19, X + 291c: 15 97 sbiw r26, 0x05 ; 5 + 291e: 21 15 cp r18, r1 + 2920: 31 05 cpc r19, r1 + 2922: 51 f1 breq .+84 ; 0x2978 <_ZNK6String11lastIndexOfERKS_j+0x7e> + 2924: 84 81 ldd r24, Z+4 ; 0x04 + 2926: 95 81 ldd r25, Z+5 ; 0x05 + 2928: 00 97 sbiw r24, 0x00 ; 0 + 292a: 31 f1 breq .+76 ; 0x2978 <_ZNK6String11lastIndexOfERKS_j+0x7e> + 292c: 82 17 cp r24, r18 + 292e: 93 07 cpc r25, r19 + 2930: 18 f1 brcs .+70 ; 0x2978 <_ZNK6String11lastIndexOfERKS_j+0x7e> + 2932: 48 17 cp r20, r24 + 2934: 59 07 cpc r21, r25 + 2936: 18 f0 brcs .+6 ; 0x293e <_ZNK6String11lastIndexOfERKS_j+0x44> + 2938: 8c 01 movw r16, r24 + 293a: 01 50 subi r16, 0x01 ; 1 + 293c: 10 40 sbci r17, 0x00 ; 0 + 293e: e0 80 ld r14, Z + 2940: f1 80 ldd r15, Z+1 ; 0x01 + 2942: c7 01 movw r24, r14 + 2944: cf ef ldi r28, 0xFF ; 255 + 2946: df ef ldi r29, 0xFF ; 255 + 2948: 57 01 movw r10, r14 + 294a: a0 0e add r10, r16 + 294c: b1 1e adc r11, r17 + 294e: 10 c0 rjmp .+32 ; 0x2970 <_ZNK6String11lastIndexOfERKS_j+0x76> + 2950: f6 01 movw r30, r12 + 2952: 60 81 ld r22, Z + 2954: 71 81 ldd r23, Z+1 ; 0x01 + 2956: 0e 94 58 28 call 0x50b0 ; 0x50b0 <strstr> + 295a: 00 97 sbiw r24, 0x00 ; 0 + 295c: 79 f0 breq .+30 ; 0x297c <_ZNK6String11lastIndexOfERKS_j+0x82> + 295e: 9c 01 movw r18, r24 + 2960: 2e 19 sub r18, r14 + 2962: 3f 09 sbc r19, r15 + 2964: 02 17 cp r16, r18 + 2966: 13 07 cpc r17, r19 + 2968: 08 f4 brcc .+2 ; 0x296c <_ZNK6String11lastIndexOfERKS_j+0x72> + 296a: 9e 01 movw r18, r28 + 296c: 01 96 adiw r24, 0x01 ; 1 + 296e: e9 01 movw r28, r18 + 2970: a8 16 cp r10, r24 + 2972: b9 06 cpc r11, r25 + 2974: 68 f7 brcc .-38 ; 0x2950 <_ZNK6String11lastIndexOfERKS_j+0x56> + 2976: 02 c0 rjmp .+4 ; 0x297c <_ZNK6String11lastIndexOfERKS_j+0x82> + 2978: cf ef ldi r28, 0xFF ; 255 + 297a: df ef ldi r29, 0xFF ; 255 + 297c: ce 01 movw r24, r28 + 297e: df 91 pop r29 + 2980: cf 91 pop r28 + 2982: 1f 91 pop r17 + 2984: 0f 91 pop r16 + 2986: ff 90 pop r15 + 2988: ef 90 pop r14 + 298a: df 90 pop r13 + 298c: cf 90 pop r12 + 298e: bf 90 pop r11 + 2990: af 90 pop r10 + 2992: 08 95 ret + +00002994 <_ZNK6String11lastIndexOfERKS_>: + 2994: fc 01 movw r30, r24 + 2996: 44 81 ldd r20, Z+4 ; 0x04 + 2998: 55 81 ldd r21, Z+5 ; 0x05 + 299a: fb 01 movw r30, r22 + 299c: 24 81 ldd r18, Z+4 ; 0x04 + 299e: 35 81 ldd r19, Z+5 ; 0x05 + 29a0: 42 1b sub r20, r18 + 29a2: 53 0b sbc r21, r19 + 29a4: 0e 94 7d 14 call 0x28fa ; 0x28fa <_ZNK6String11lastIndexOfERKS_j> + 29a8: 08 95 ret + +000029aa <_ZNK6String9substringEjj>: + 29aa: af 92 push r10 + 29ac: bf 92 push r11 + 29ae: cf 92 push r12 + 29b0: df 92 push r13 + 29b2: ef 92 push r14 + 29b4: ff 92 push r15 + 29b6: 0f 93 push r16 + 29b8: 1f 93 push r17 + 29ba: cf 93 push r28 + 29bc: df 93 push r29 + 29be: f8 2e mov r15, r24 + 29c0: e9 2e mov r14, r25 + 29c2: 6b 01 movw r12, r22 + 29c4: 8a 01 movw r16, r20 + 29c6: e9 01 movw r28, r18 + 29c8: 24 17 cp r18, r20 + 29ca: 35 07 cpc r19, r21 + 29cc: 48 f4 brcc .+18 ; 0x29e0 <_ZNK6String9substringEjj+0x36> + 29ce: 34 2f mov r19, r20 + 29d0: 21 2f mov r18, r17 + 29d2: 8e 01 movw r16, r28 + 29d4: c9 01 movw r24, r18 + 29d6: a9 2e mov r10, r25 + 29d8: e5 01 movw r28, r10 + 29da: 5e 01 movw r10, r28 + 29dc: b2 2e mov r11, r18 + 29de: e5 01 movw r28, r10 + 29e0: 8f 2d mov r24, r15 + 29e2: 9e 2d mov r25, r14 + 29e4: 6c ea ldi r22, 0xAC ; 172 + 29e6: 71 e0 ldi r23, 0x01 ; 1 + 29e8: 0e 94 44 0f call 0x1e88 ; 0x1e88 <_ZN6StringC1EPKc> + 29ec: d6 01 movw r26, r12 + 29ee: 14 96 adiw r26, 0x04 ; 4 + 29f0: 8d 91 ld r24, X+ + 29f2: 9c 91 ld r25, X + 29f4: 15 97 sbiw r26, 0x05 ; 5 + 29f6: 80 17 cp r24, r16 + 29f8: 91 07 cpc r25, r17 + 29fa: d8 f0 brcs .+54 ; 0x2a32 <_ZNK6String9substringEjj+0x88> + 29fc: 8c 17 cp r24, r28 + 29fe: 9d 07 cpc r25, r29 + 2a00: 08 f4 brcc .+2 ; 0x2a04 <_ZNK6String9substringEjj+0x5a> + 2a02: ec 01 movw r28, r24 + 2a04: d6 01 movw r26, r12 + 2a06: ed 91 ld r30, X+ + 2a08: fc 91 ld r31, X + 2a0a: 11 97 sbiw r26, 0x01 ; 1 + 2a0c: ec 0f add r30, r28 + 2a0e: fd 1f adc r31, r29 + 2a10: b0 80 ld r11, Z + 2a12: 10 82 st Z, r1 + 2a14: 6d 91 ld r22, X+ + 2a16: 7c 91 ld r23, X + 2a18: 60 0f add r22, r16 + 2a1a: 71 1f adc r23, r17 + 2a1c: 8f 2d mov r24, r15 + 2a1e: 9e 2d mov r25, r14 + 2a20: 0e 94 85 0f call 0x1f0a ; 0x1f0a <_ZN6StringaSEPKc> + 2a24: d6 01 movw r26, r12 + 2a26: ed 91 ld r30, X+ + 2a28: fc 91 ld r31, X + 2a2a: 11 97 sbiw r26, 0x01 ; 1 + 2a2c: ec 0f add r30, r28 + 2a2e: fd 1f adc r31, r29 + 2a30: b0 82 st Z, r11 + 2a32: 8f 2d mov r24, r15 + 2a34: 9e 2d mov r25, r14 + 2a36: df 91 pop r29 + 2a38: cf 91 pop r28 + 2a3a: 1f 91 pop r17 + 2a3c: 0f 91 pop r16 + 2a3e: ff 90 pop r15 + 2a40: ef 90 pop r14 + 2a42: df 90 pop r13 + 2a44: cf 90 pop r12 + 2a46: bf 90 pop r11 + 2a48: af 90 pop r10 + 2a4a: 08 95 ret + +00002a4c <_ZNK6String9substringEj>: + 2a4c: cf 93 push r28 + 2a4e: df 93 push r29 + 2a50: ec 01 movw r28, r24 + 2a52: fb 01 movw r30, r22 + 2a54: 24 81 ldd r18, Z+4 ; 0x04 + 2a56: 35 81 ldd r19, Z+5 ; 0x05 + 2a58: 0e 94 d5 14 call 0x29aa ; 0x29aa <_ZNK6String9substringEjj> + 2a5c: ce 01 movw r24, r28 + 2a5e: df 91 pop r29 + 2a60: cf 91 pop r28 + 2a62: 08 95 ret + +00002a64 <_ZN6String7replaceEcc>: + 2a64: dc 01 movw r26, r24 + 2a66: ed 91 ld r30, X+ + 2a68: fc 91 ld r31, X + 2a6a: 11 97 sbiw r26, 0x01 ; 1 + 2a6c: 30 97 sbiw r30, 0x00 ; 0 + 2a6e: 29 f4 brne .+10 ; 0x2a7a <_ZN6String7replaceEcc+0x16> + 2a70: 08 95 ret + 2a72: 86 17 cp r24, r22 + 2a74: 09 f4 brne .+2 ; 0x2a78 <_ZN6String7replaceEcc+0x14> + 2a76: 40 83 st Z, r20 + 2a78: 31 96 adiw r30, 0x01 ; 1 + 2a7a: 80 81 ld r24, Z + 2a7c: 88 23 and r24, r24 + 2a7e: c9 f7 brne .-14 ; 0x2a72 <_ZN6String7replaceEcc+0xe> + 2a80: 08 95 ret + +00002a82 <_ZN6String7replaceERKS_S1_>: + 2a82: 2f 92 push r2 + 2a84: 3f 92 push r3 + 2a86: 4f 92 push r4 + 2a88: 5f 92 push r5 + 2a8a: 6f 92 push r6 + 2a8c: 7f 92 push r7 + 2a8e: 8f 92 push r8 + 2a90: 9f 92 push r9 + 2a92: af 92 push r10 + 2a94: bf 92 push r11 + 2a96: cf 92 push r12 + 2a98: df 92 push r13 + 2a9a: ef 92 push r14 + 2a9c: ff 92 push r15 + 2a9e: 0f 93 push r16 + 2aa0: 1f 93 push r17 + 2aa2: cf 93 push r28 + 2aa4: df 93 push r29 + 2aa6: 7c 01 movw r14, r24 + 2aa8: 2b 01 movw r4, r22 + 2aaa: 6a 01 movw r12, r20 + 2aac: dc 01 movw r26, r24 + 2aae: 14 96 adiw r26, 0x04 ; 4 + 2ab0: 6d 90 ld r6, X+ + 2ab2: 7c 90 ld r7, X + 2ab4: 15 97 sbiw r26, 0x05 ; 5 + 2ab6: 61 14 cp r6, r1 + 2ab8: 71 04 cpc r7, r1 + 2aba: 09 f4 brne .+2 ; 0x2abe <_ZN6String7replaceERKS_S1_+0x3c> + 2abc: d9 c0 rjmp .+434 ; 0x2c70 <_ZN6String7replaceERKS_S1_+0x1ee> + 2abe: fb 01 movw r30, r22 + 2ac0: 84 80 ldd r8, Z+4 ; 0x04 + 2ac2: 95 80 ldd r9, Z+5 ; 0x05 + 2ac4: 81 14 cp r8, r1 + 2ac6: 91 04 cpc r9, r1 + 2ac8: 09 f4 brne .+2 ; 0x2acc <_ZN6String7replaceERKS_S1_+0x4a> + 2aca: d2 c0 rjmp .+420 ; 0x2c70 <_ZN6String7replaceERKS_S1_+0x1ee> + 2acc: da 01 movw r26, r20 + 2ace: 14 96 adiw r26, 0x04 ; 4 + 2ad0: ad 90 ld r10, X+ + 2ad2: bc 90 ld r11, X + 2ad4: 15 97 sbiw r26, 0x05 ; 5 + 2ad6: a8 18 sub r10, r8 + 2ad8: b9 08 sbc r11, r9 + 2ada: fc 01 movw r30, r24 + 2adc: 00 81 ld r16, Z + 2ade: 11 81 ldd r17, Z+1 ; 0x01 + 2ae0: a1 14 cp r10, r1 + 2ae2: b1 04 cpc r11, r1 + 2ae4: f1 f4 brne .+60 ; 0x2b22 <_ZN6String7replaceERKS_S1_+0xa0> + 2ae6: 13 c0 rjmp .+38 ; 0x2b0e <_ZN6String7replaceERKS_S1_+0x8c> + 2ae8: d6 01 movw r26, r12 + 2aea: 6c 91 ld r22, X + 2aec: 11 96 adiw r26, 0x01 ; 1 + 2aee: 7c 91 ld r23, X + 2af0: 11 97 sbiw r26, 0x01 ; 1 + 2af2: 14 96 adiw r26, 0x04 ; 4 + 2af4: 4d 91 ld r20, X+ + 2af6: 5c 91 ld r21, X + 2af8: 15 97 sbiw r26, 0x05 ; 5 + 2afa: ce 01 movw r24, r28 + 2afc: 0e 94 fa 27 call 0x4ff4 ; 0x4ff4 <memcpy> + 2b00: d6 01 movw r26, r12 + 2b02: 14 96 adiw r26, 0x04 ; 4 + 2b04: 0d 91 ld r16, X+ + 2b06: 1c 91 ld r17, X + 2b08: 15 97 sbiw r26, 0x05 ; 5 + 2b0a: 0c 0f add r16, r28 + 2b0c: 1d 1f adc r17, r29 + 2b0e: f2 01 movw r30, r4 + 2b10: 60 81 ld r22, Z + 2b12: 71 81 ldd r23, Z+1 ; 0x01 + 2b14: c8 01 movw r24, r16 + 2b16: 0e 94 58 28 call 0x50b0 ; 0x50b0 <strstr> + 2b1a: ec 01 movw r28, r24 + 2b1c: 00 97 sbiw r24, 0x00 ; 0 + 2b1e: 21 f7 brne .-56 ; 0x2ae8 <_ZN6String7replaceERKS_S1_+0x66> + 2b20: a7 c0 rjmp .+334 ; 0x2c70 <_ZN6String7replaceERKS_S1_+0x1ee> + 2b22: b7 fc sbrc r11, 7 + 2b24: 02 c0 rjmp .+4 ; 0x2b2a <_ZN6String7replaceERKS_S1_+0xa8> + 2b26: e3 01 movw r28, r6 + 2b28: 42 c0 rjmp .+132 ; 0x2bae <_ZN6String7replaceERKS_S1_+0x12c> + 2b2a: 48 01 movw r8, r16 + 2b2c: 2d c0 rjmp .+90 ; 0x2b88 <_ZN6String7replaceERKS_S1_+0x106> + 2b2e: e3 01 movw r28, r6 + 2b30: c0 1b sub r28, r16 + 2b32: d1 0b sbc r29, r17 + 2b34: c4 01 movw r24, r8 + 2b36: b8 01 movw r22, r16 + 2b38: ae 01 movw r20, r28 + 2b3a: 0e 94 fa 27 call 0x4ff4 ; 0x4ff4 <memcpy> + 2b3e: c8 0d add r28, r8 + 2b40: d9 1d adc r29, r9 + 2b42: d6 01 movw r26, r12 + 2b44: 6c 91 ld r22, X + 2b46: 11 96 adiw r26, 0x01 ; 1 + 2b48: 7c 91 ld r23, X + 2b4a: 11 97 sbiw r26, 0x01 ; 1 + 2b4c: 14 96 adiw r26, 0x04 ; 4 + 2b4e: 4d 91 ld r20, X+ + 2b50: 5c 91 ld r21, X + 2b52: 15 97 sbiw r26, 0x05 ; 5 + 2b54: ce 01 movw r24, r28 + 2b56: 0e 94 fa 27 call 0x4ff4 ; 0x4ff4 <memcpy> + 2b5a: d6 01 movw r26, r12 + 2b5c: 14 96 adiw r26, 0x04 ; 4 + 2b5e: 8d 90 ld r8, X+ + 2b60: 9c 90 ld r9, X + 2b62: 15 97 sbiw r26, 0x05 ; 5 + 2b64: 8c 0e add r8, r28 + 2b66: 9d 1e adc r9, r29 + 2b68: f2 01 movw r30, r4 + 2b6a: 04 81 ldd r16, Z+4 ; 0x04 + 2b6c: 15 81 ldd r17, Z+5 ; 0x05 + 2b6e: 06 0d add r16, r6 + 2b70: 17 1d adc r17, r7 + 2b72: d7 01 movw r26, r14 + 2b74: 14 96 adiw r26, 0x04 ; 4 + 2b76: 8d 91 ld r24, X+ + 2b78: 9c 91 ld r25, X + 2b7a: 15 97 sbiw r26, 0x05 ; 5 + 2b7c: 8a 0d add r24, r10 + 2b7e: 9b 1d adc r25, r11 + 2b80: 15 96 adiw r26, 0x05 ; 5 + 2b82: 9c 93 st X, r25 + 2b84: 8e 93 st -X, r24 + 2b86: 14 97 sbiw r26, 0x04 ; 4 + 2b88: f2 01 movw r30, r4 + 2b8a: 60 81 ld r22, Z + 2b8c: 71 81 ldd r23, Z+1 ; 0x01 + 2b8e: c8 01 movw r24, r16 + 2b90: 0e 94 58 28 call 0x50b0 ; 0x50b0 <strstr> + 2b94: 3c 01 movw r6, r24 + 2b96: 00 97 sbiw r24, 0x00 ; 0 + 2b98: 51 f6 brne .-108 ; 0x2b2e <_ZN6String7replaceERKS_S1_+0xac> + 2b9a: c4 01 movw r24, r8 + 2b9c: b8 01 movw r22, r16 + 2b9e: 0e 94 29 28 call 0x5052 ; 0x5052 <strcpy> + 2ba2: 66 c0 rjmp .+204 ; 0x2c70 <_ZN6String7replaceERKS_S1_+0x1ee> + 2ba4: 8c 01 movw r16, r24 + 2ba6: 08 0d add r16, r8 + 2ba8: 19 1d adc r17, r9 + 2baa: ca 0d add r28, r10 + 2bac: db 1d adc r29, r11 + 2bae: d2 01 movw r26, r4 + 2bb0: 6d 91 ld r22, X+ + 2bb2: 7c 91 ld r23, X + 2bb4: c8 01 movw r24, r16 + 2bb6: 0e 94 58 28 call 0x50b0 ; 0x50b0 <strstr> + 2bba: 00 97 sbiw r24, 0x00 ; 0 + 2bbc: 99 f7 brne .-26 ; 0x2ba4 <_ZN6String7replaceERKS_S1_+0x122> + 2bbe: c6 15 cp r28, r6 + 2bc0: d7 05 cpc r29, r7 + 2bc2: 09 f4 brne .+2 ; 0x2bc6 <_ZN6String7replaceERKS_S1_+0x144> + 2bc4: 55 c0 rjmp .+170 ; 0x2c70 <_ZN6String7replaceERKS_S1_+0x1ee> + 2bc6: f7 01 movw r30, r14 + 2bc8: 82 81 ldd r24, Z+2 ; 0x02 + 2bca: 93 81 ldd r25, Z+3 ; 0x03 + 2bcc: 8c 17 cp r24, r28 + 2bce: 9d 07 cpc r25, r29 + 2bd0: 08 f0 brcs .+2 ; 0x2bd4 <_ZN6String7replaceERKS_S1_+0x152> + 2bd2: 45 c0 rjmp .+138 ; 0x2c5e <_ZN6String7replaceERKS_S1_+0x1dc> + 2bd4: c7 01 movw r24, r14 + 2bd6: be 01 movw r22, r28 + 2bd8: 0e 94 ea 0e call 0x1dd4 ; 0x1dd4 <_ZN6String12changeBufferEj> + 2bdc: 88 23 and r24, r24 + 2bde: 09 f4 brne .+2 ; 0x2be2 <_ZN6String7replaceERKS_S1_+0x160> + 2be0: 47 c0 rjmp .+142 ; 0x2c70 <_ZN6String7replaceERKS_S1_+0x1ee> + 2be2: 3d c0 rjmp .+122 ; 0x2c5e <_ZN6String7replaceERKS_S1_+0x1dc> + 2be4: c7 01 movw r24, r14 + 2be6: b2 01 movw r22, r4 + 2be8: a9 01 movw r20, r18 + 2bea: 0e 94 7d 14 call 0x28fa ; 0x28fa <_ZNK6String11lastIndexOfERKS_j> + 2bee: ec 01 movw r28, r24 + 2bf0: 97 fd sbrc r25, 7 + 2bf2: 3e c0 rjmp .+124 ; 0x2c70 <_ZN6String7replaceERKS_S1_+0x1ee> + 2bf4: d7 01 movw r26, r14 + 2bf6: 6d 91 ld r22, X+ + 2bf8: 7c 91 ld r23, X + 2bfa: 11 97 sbiw r26, 0x01 ; 1 + 2bfc: f2 01 movw r30, r4 + 2bfe: 84 81 ldd r24, Z+4 ; 0x04 + 2c00: 95 81 ldd r25, Z+5 ; 0x05 + 2c02: 8c 0f add r24, r28 + 2c04: 9d 1f adc r25, r29 + 2c06: 68 0f add r22, r24 + 2c08: 79 1f adc r23, r25 + 2c0a: 14 96 adiw r26, 0x04 ; 4 + 2c0c: 4d 91 ld r20, X+ + 2c0e: 5c 91 ld r21, X + 2c10: 15 97 sbiw r26, 0x05 ; 5 + 2c12: 48 1b sub r20, r24 + 2c14: 59 0b sbc r21, r25 + 2c16: cb 01 movw r24, r22 + 2c18: 8a 0d add r24, r10 + 2c1a: 9b 1d adc r25, r11 + 2c1c: 0e 94 03 28 call 0x5006 ; 0x5006 <memmove> + 2c20: d7 01 movw r26, r14 + 2c22: 14 96 adiw r26, 0x04 ; 4 + 2c24: 8d 91 ld r24, X+ + 2c26: 9c 91 ld r25, X + 2c28: 15 97 sbiw r26, 0x05 ; 5 + 2c2a: 8a 0d add r24, r10 + 2c2c: 9b 1d adc r25, r11 + 2c2e: 15 96 adiw r26, 0x05 ; 5 + 2c30: 9c 93 st X, r25 + 2c32: 8e 93 st -X, r24 + 2c34: 14 97 sbiw r26, 0x04 ; 4 + 2c36: ed 91 ld r30, X+ + 2c38: fc 91 ld r31, X + 2c3a: 11 97 sbiw r26, 0x01 ; 1 + 2c3c: e8 0f add r30, r24 + 2c3e: f9 1f adc r31, r25 + 2c40: 10 82 st Z, r1 + 2c42: 2d 91 ld r18, X+ + 2c44: 3c 91 ld r19, X + 2c46: 2c 0f add r18, r28 + 2c48: 3d 1f adc r19, r29 + 2c4a: f6 01 movw r30, r12 + 2c4c: 60 81 ld r22, Z + 2c4e: 71 81 ldd r23, Z+1 ; 0x01 + 2c50: 44 81 ldd r20, Z+4 ; 0x04 + 2c52: 55 81 ldd r21, Z+5 ; 0x05 + 2c54: c9 01 movw r24, r18 + 2c56: 0e 94 fa 27 call 0x4ff4 ; 0x4ff4 <memcpy> + 2c5a: 9e 01 movw r18, r28 + 2c5c: 05 c0 rjmp .+10 ; 0x2c68 <_ZN6String7replaceERKS_S1_+0x1e6> + 2c5e: d7 01 movw r26, r14 + 2c60: 14 96 adiw r26, 0x04 ; 4 + 2c62: 2d 91 ld r18, X+ + 2c64: 3c 91 ld r19, X + 2c66: 15 97 sbiw r26, 0x05 ; 5 + 2c68: 21 50 subi r18, 0x01 ; 1 + 2c6a: 30 40 sbci r19, 0x00 ; 0 + 2c6c: 37 ff sbrs r19, 7 + 2c6e: ba cf rjmp .-140 ; 0x2be4 <_ZN6String7replaceERKS_S1_+0x162> + 2c70: df 91 pop r29 + 2c72: cf 91 pop r28 + 2c74: 1f 91 pop r17 + 2c76: 0f 91 pop r16 + 2c78: ff 90 pop r15 + 2c7a: ef 90 pop r14 + 2c7c: df 90 pop r13 + 2c7e: cf 90 pop r12 + 2c80: bf 90 pop r11 + 2c82: af 90 pop r10 + 2c84: 9f 90 pop r9 + 2c86: 8f 90 pop r8 + 2c88: 7f 90 pop r7 + 2c8a: 6f 90 pop r6 + 2c8c: 5f 90 pop r5 + 2c8e: 4f 90 pop r4 + 2c90: 3f 90 pop r3 + 2c92: 2f 90 pop r2 + 2c94: 08 95 ret + +00002c96 <_ZN6String11toLowerCaseEv>: + 2c96: cf 93 push r28 + 2c98: df 93 push r29 + 2c9a: fc 01 movw r30, r24 + 2c9c: c0 81 ld r28, Z + 2c9e: d1 81 ldd r29, Z+1 ; 0x01 + 2ca0: 20 97 sbiw r28, 0x00 ; 0 + 2ca2: 39 f4 brne .+14 ; 0x2cb2 <_ZN6String11toLowerCaseEv+0x1c> + 2ca4: 09 c0 rjmp .+18 ; 0x2cb8 <_ZN6String11toLowerCaseEv+0x22> + 2ca6: 99 27 eor r25, r25 + 2ca8: 87 fd sbrc r24, 7 + 2caa: 90 95 com r25 + 2cac: 0e 94 dd 27 call 0x4fba ; 0x4fba <tolower> + 2cb0: 89 93 st Y+, r24 + 2cb2: 88 81 ld r24, Y + 2cb4: 88 23 and r24, r24 + 2cb6: b9 f7 brne .-18 ; 0x2ca6 <_ZN6String11toLowerCaseEv+0x10> + 2cb8: df 91 pop r29 + 2cba: cf 91 pop r28 + 2cbc: 08 95 ret + +00002cbe <_ZN6String11toUpperCaseEv>: + 2cbe: cf 93 push r28 + 2cc0: df 93 push r29 + 2cc2: fc 01 movw r30, r24 + 2cc4: c0 81 ld r28, Z + 2cc6: d1 81 ldd r29, Z+1 ; 0x01 + 2cc8: 20 97 sbiw r28, 0x00 ; 0 + 2cca: 39 f4 brne .+14 ; 0x2cda <_ZN6String11toUpperCaseEv+0x1c> + 2ccc: 09 c0 rjmp .+18 ; 0x2ce0 <_ZN6String11toUpperCaseEv+0x22> + 2cce: 99 27 eor r25, r25 + 2cd0: 87 fd sbrc r24, 7 + 2cd2: 90 95 com r25 + 2cd4: 0e 94 e5 27 call 0x4fca ; 0x4fca <toupper> + 2cd8: 89 93 st Y+, r24 + 2cda: 88 81 ld r24, Y + 2cdc: 88 23 and r24, r24 + 2cde: b9 f7 brne .-18 ; 0x2cce <_ZN6String11toUpperCaseEv+0x10> + 2ce0: df 91 pop r29 + 2ce2: cf 91 pop r28 + 2ce4: 08 95 ret + +00002ce6 <_ZN6String4trimEv>: + 2ce6: af 92 push r10 + 2ce8: bf 92 push r11 + 2cea: cf 92 push r12 + 2cec: df 92 push r13 + 2cee: ef 92 push r14 + 2cf0: ff 92 push r15 + 2cf2: 0f 93 push r16 + 2cf4: 1f 93 push r17 + 2cf6: cf 93 push r28 + 2cf8: df 93 push r29 + 2cfa: 6c 01 movw r12, r24 + 2cfc: dc 01 movw r26, r24 + 2cfe: ed 90 ld r14, X+ + 2d00: fc 90 ld r15, X + 2d02: 11 97 sbiw r26, 0x01 ; 1 + 2d04: e1 14 cp r14, r1 + 2d06: f1 04 cpc r15, r1 + 2d08: 09 f4 brne .+2 ; 0x2d0c <_ZN6String4trimEv+0x26> + 2d0a: 43 c0 rjmp .+134 ; 0x2d92 <_ZN6String4trimEv+0xac> + 2d0c: 14 96 adiw r26, 0x04 ; 4 + 2d0e: ad 90 ld r10, X+ + 2d10: bc 90 ld r11, X + 2d12: 15 97 sbiw r26, 0x05 ; 5 + 2d14: a1 14 cp r10, r1 + 2d16: b1 04 cpc r11, r1 + 2d18: e1 f1 breq .+120 ; 0x2d92 <_ZN6String4trimEv+0xac> + 2d1a: 87 01 movw r16, r14 + 2d1c: e8 01 movw r28, r16 + 2d1e: 88 81 ld r24, Y + 2d20: 0f 5f subi r16, 0xFF ; 255 + 2d22: 1f 4f sbci r17, 0xFF ; 255 + 2d24: 99 27 eor r25, r25 + 2d26: 87 fd sbrc r24, 7 + 2d28: 90 95 com r25 + 2d2a: 0e 94 d5 27 call 0x4faa ; 0x4faa <isspace> + 2d2e: 00 97 sbiw r24, 0x00 ; 0 + 2d30: a9 f7 brne .-22 ; 0x2d1c <_ZN6String4trimEv+0x36> + 2d32: 85 01 movw r16, r10 + 2d34: 01 50 subi r16, 0x01 ; 1 + 2d36: 10 40 sbci r17, 0x00 ; 0 + 2d38: 0e 0d add r16, r14 + 2d3a: 1f 1d adc r17, r15 + 2d3c: f8 01 movw r30, r16 + 2d3e: 80 81 ld r24, Z + 2d40: 99 27 eor r25, r25 + 2d42: 87 fd sbrc r24, 7 + 2d44: 90 95 com r25 + 2d46: 0e 94 d5 27 call 0x4faa ; 0x4faa <isspace> + 2d4a: 00 97 sbiw r24, 0x00 ; 0 + 2d4c: 31 f0 breq .+12 ; 0x2d5a <_ZN6String4trimEv+0x74> + 2d4e: 0c 17 cp r16, r28 + 2d50: 1d 07 cpc r17, r29 + 2d52: 18 f0 brcs .+6 ; 0x2d5a <_ZN6String4trimEv+0x74> + 2d54: 01 50 subi r16, 0x01 ; 1 + 2d56: 10 40 sbci r17, 0x00 ; 0 + 2d58: f1 cf rjmp .-30 ; 0x2d3c <_ZN6String4trimEv+0x56> + 2d5a: 0f 5f subi r16, 0xFF ; 255 + 2d5c: 1f 4f sbci r17, 0xFF ; 255 + 2d5e: 0c 1b sub r16, r28 + 2d60: 1d 0b sbc r17, r29 + 2d62: d6 01 movw r26, r12 + 2d64: 15 96 adiw r26, 0x05 ; 5 + 2d66: 1c 93 st X, r17 + 2d68: 0e 93 st -X, r16 + 2d6a: 14 97 sbiw r26, 0x04 ; 4 + 2d6c: ec 16 cp r14, r28 + 2d6e: fd 06 cpc r15, r29 + 2d70: 28 f4 brcc .+10 ; 0x2d7c <_ZN6String4trimEv+0x96> + 2d72: c7 01 movw r24, r14 + 2d74: be 01 movw r22, r28 + 2d76: a8 01 movw r20, r16 + 2d78: 0e 94 fa 27 call 0x4ff4 ; 0x4ff4 <memcpy> + 2d7c: d6 01 movw r26, r12 + 2d7e: ed 91 ld r30, X+ + 2d80: fc 91 ld r31, X + 2d82: 11 97 sbiw r26, 0x01 ; 1 + 2d84: 14 96 adiw r26, 0x04 ; 4 + 2d86: 8d 91 ld r24, X+ + 2d88: 9c 91 ld r25, X + 2d8a: 15 97 sbiw r26, 0x05 ; 5 + 2d8c: e8 0f add r30, r24 + 2d8e: f9 1f adc r31, r25 + 2d90: 10 82 st Z, r1 + 2d92: df 91 pop r29 + 2d94: cf 91 pop r28 + 2d96: 1f 91 pop r17 + 2d98: 0f 91 pop r16 + 2d9a: ff 90 pop r15 + 2d9c: ef 90 pop r14 + 2d9e: df 90 pop r13 + 2da0: cf 90 pop r12 + 2da2: bf 90 pop r11 + 2da4: af 90 pop r10 + 2da6: 08 95 ret + +00002da8 <_ZNK6String5toIntEv>: + 2da8: fc 01 movw r30, r24 + 2daa: 80 81 ld r24, Z + 2dac: 91 81 ldd r25, Z+1 ; 0x01 + 2dae: 00 97 sbiw r24, 0x00 ; 0 + 2db0: 29 f0 breq .+10 ; 0x2dbc <_ZNK6String5toIntEv+0x14> + 2db2: 0e 94 ae 27 call 0x4f5c ; 0x4f5c <atol> + 2db6: 9b 01 movw r18, r22 + 2db8: ac 01 movw r20, r24 + 2dba: 03 c0 rjmp .+6 ; 0x2dc2 <_ZNK6String5toIntEv+0x1a> + 2dbc: 20 e0 ldi r18, 0x00 ; 0 + 2dbe: 30 e0 ldi r19, 0x00 ; 0 + 2dc0: a9 01 movw r20, r18 + 2dc2: b9 01 movw r22, r18 + 2dc4: ca 01 movw r24, r20 + 2dc6: 08 95 ret + +00002dc8 <_Znwj>: + 2dc8: 0e 94 5b 25 call 0x4ab6 ; 0x4ab6 <malloc> + 2dcc: 08 95 ret + +00002dce <_ZdlPv>: + 2dce: 0e 94 f5 25 call 0x4bea ; 0x4bea <free> + 2dd2: 08 95 ret + +00002dd4 <__cxa_guard_acquire>: + 2dd4: 21 e0 ldi r18, 0x01 ; 1 + 2dd6: 30 e0 ldi r19, 0x00 ; 0 + 2dd8: fc 01 movw r30, r24 + 2dda: 80 81 ld r24, Z + 2ddc: 88 23 and r24, r24 + 2dde: 11 f0 breq .+4 ; 0x2de4 <__cxa_guard_acquire+0x10> + 2de0: 20 e0 ldi r18, 0x00 ; 0 + 2de2: 30 e0 ldi r19, 0x00 ; 0 + 2de4: c9 01 movw r24, r18 + 2de6: 08 95 ret + +00002de8 <__cxa_guard_release>: + 2de8: 21 e0 ldi r18, 0x01 ; 1 + 2dea: fc 01 movw r30, r24 + 2dec: 20 83 st Z, r18 + 2dee: 08 95 ret + +00002df0 <__cxa_guard_abort>: + 2df0: 08 95 ret + +00002df2 <__cxa_pure_virtual>: + 2df2: 08 95 ret + +00002df4 <__vector_16>: + 2df4: 1f 92 push r1 + 2df6: 0f 92 push r0 + 2df8: 0f b6 in r0, 0x3f ; 63 + 2dfa: 0f 92 push r0 + 2dfc: 11 24 eor r1, r1 + 2dfe: 2f 93 push r18 + 2e00: 3f 93 push r19 + 2e02: 4f 93 push r20 + 2e04: 5f 93 push r21 + 2e06: 6f 93 push r22 + 2e08: 7f 93 push r23 + 2e0a: 8f 93 push r24 + 2e0c: 9f 93 push r25 + 2e0e: af 93 push r26 + 2e10: bf 93 push r27 + 2e12: 20 91 c5 03 lds r18, 0x03C5 + 2e16: 30 91 c6 03 lds r19, 0x03C6 + 2e1a: 40 91 c7 03 lds r20, 0x03C7 + 2e1e: 50 91 c8 03 lds r21, 0x03C8 + 2e22: 70 91 c9 03 lds r23, 0x03C9 + 2e26: da 01 movw r26, r20 + 2e28: c9 01 movw r24, r18 + 2e2a: 02 96 adiw r24, 0x02 ; 2 + 2e2c: a1 1d adc r26, r1 + 2e2e: b1 1d adc r27, r1 + 2e30: 67 2f mov r22, r23 + 2e32: 6a 5f subi r22, 0xFA ; 250 + 2e34: 6d 37 cpi r22, 0x7D ; 125 + 2e36: 30 f0 brcs .+12 ; 0x2e44 <__vector_16+0x50> + 2e38: 6d 57 subi r22, 0x7D ; 125 + 2e3a: da 01 movw r26, r20 + 2e3c: c9 01 movw r24, r18 + 2e3e: 03 96 adiw r24, 0x03 ; 3 + 2e40: a1 1d adc r26, r1 + 2e42: b1 1d adc r27, r1 + 2e44: 60 93 c9 03 sts 0x03C9, r22 + 2e48: 80 93 c5 03 sts 0x03C5, r24 + 2e4c: 90 93 c6 03 sts 0x03C6, r25 + 2e50: a0 93 c7 03 sts 0x03C7, r26 + 2e54: b0 93 c8 03 sts 0x03C8, r27 + 2e58: 80 91 c1 03 lds r24, 0x03C1 + 2e5c: 90 91 c2 03 lds r25, 0x03C2 + 2e60: a0 91 c3 03 lds r26, 0x03C3 + 2e64: b0 91 c4 03 lds r27, 0x03C4 + 2e68: 01 96 adiw r24, 0x01 ; 1 + 2e6a: a1 1d adc r26, r1 + 2e6c: b1 1d adc r27, r1 + 2e6e: 80 93 c1 03 sts 0x03C1, r24 + 2e72: 90 93 c2 03 sts 0x03C2, r25 + 2e76: a0 93 c3 03 sts 0x03C3, r26 + 2e7a: b0 93 c4 03 sts 0x03C4, r27 + 2e7e: bf 91 pop r27 + 2e80: af 91 pop r26 + 2e82: 9f 91 pop r25 + 2e84: 8f 91 pop r24 + 2e86: 7f 91 pop r23 + 2e88: 6f 91 pop r22 + 2e8a: 5f 91 pop r21 + 2e8c: 4f 91 pop r20 + 2e8e: 3f 91 pop r19 + 2e90: 2f 91 pop r18 + 2e92: 0f 90 pop r0 + 2e94: 0f be out 0x3f, r0 ; 63 + 2e96: 0f 90 pop r0 + 2e98: 1f 90 pop r1 + 2e9a: 18 95 reti + +00002e9c <millis>: + 2e9c: 8f b7 in r24, 0x3f ; 63 + 2e9e: f8 94 cli + 2ea0: 20 91 c5 03 lds r18, 0x03C5 + 2ea4: 30 91 c6 03 lds r19, 0x03C6 + 2ea8: 40 91 c7 03 lds r20, 0x03C7 + 2eac: 50 91 c8 03 lds r21, 0x03C8 + 2eb0: 8f bf out 0x3f, r24 ; 63 + 2eb2: b9 01 movw r22, r18 + 2eb4: ca 01 movw r24, r20 + 2eb6: 08 95 ret + +00002eb8 <micros>: + 2eb8: 9f b7 in r25, 0x3f ; 63 + 2eba: f8 94 cli + 2ebc: 20 91 c1 03 lds r18, 0x03C1 + 2ec0: 30 91 c2 03 lds r19, 0x03C2 + 2ec4: 40 91 c3 03 lds r20, 0x03C3 + 2ec8: 50 91 c4 03 lds r21, 0x03C4 + 2ecc: 86 b5 in r24, 0x26 ; 38 + 2ece: a8 9b sbis 0x15, 0 ; 21 + 2ed0: 06 c0 rjmp .+12 ; 0x2ede <micros+0x26> + 2ed2: 8f 3f cpi r24, 0xFF ; 255 + 2ed4: 21 f0 breq .+8 ; 0x2ede <micros+0x26> + 2ed6: 2f 5f subi r18, 0xFF ; 255 + 2ed8: 3f 4f sbci r19, 0xFF ; 255 + 2eda: 4f 4f sbci r20, 0xFF ; 255 + 2edc: 5f 4f sbci r21, 0xFF ; 255 + 2ede: 9f bf out 0x3f, r25 ; 63 + 2ee0: 54 2f mov r21, r20 + 2ee2: 43 2f mov r20, r19 + 2ee4: 32 2f mov r19, r18 + 2ee6: 22 27 eor r18, r18 + 2ee8: 28 0f add r18, r24 + 2eea: 31 1d adc r19, r1 + 2eec: 41 1d adc r20, r1 + 2eee: 51 1d adc r21, r1 + 2ef0: 83 e0 ldi r24, 0x03 ; 3 + 2ef2: 22 0f add r18, r18 + 2ef4: 33 1f adc r19, r19 + 2ef6: 44 1f adc r20, r20 + 2ef8: 55 1f adc r21, r21 + 2efa: 8a 95 dec r24 + 2efc: d1 f7 brne .-12 ; 0x2ef2 <micros+0x3a> + 2efe: b9 01 movw r22, r18 + 2f00: ca 01 movw r24, r20 + 2f02: 08 95 ret + +00002f04 <delay>: + 2f04: ef 92 push r14 + 2f06: ff 92 push r15 + 2f08: 0f 93 push r16 + 2f0a: 1f 93 push r17 + 2f0c: cf 93 push r28 + 2f0e: df 93 push r29 + 2f10: 7b 01 movw r14, r22 + 2f12: 8c 01 movw r16, r24 + 2f14: 0e 94 5c 17 call 0x2eb8 ; 0x2eb8 <micros> + 2f18: eb 01 movw r28, r22 + 2f1a: 0f c0 rjmp .+30 ; 0x2f3a <delay+0x36> + 2f1c: 0e 94 5c 17 call 0x2eb8 ; 0x2eb8 <micros> + 2f20: 6c 1b sub r22, r28 + 2f22: 7d 0b sbc r23, r29 + 2f24: 83 e0 ldi r24, 0x03 ; 3 + 2f26: 68 3e cpi r22, 0xE8 ; 232 + 2f28: 78 07 cpc r23, r24 + 2f2a: 38 f0 brcs .+14 ; 0x2f3a <delay+0x36> + 2f2c: 08 94 sec + 2f2e: e1 08 sbc r14, r1 + 2f30: f1 08 sbc r15, r1 + 2f32: 01 09 sbc r16, r1 + 2f34: 11 09 sbc r17, r1 + 2f36: c8 51 subi r28, 0x18 ; 24 + 2f38: dc 4f sbci r29, 0xFC ; 252 + 2f3a: e1 14 cp r14, r1 + 2f3c: f1 04 cpc r15, r1 + 2f3e: 01 05 cpc r16, r1 + 2f40: 11 05 cpc r17, r1 + 2f42: 61 f7 brne .-40 ; 0x2f1c <delay+0x18> + 2f44: df 91 pop r29 + 2f46: cf 91 pop r28 + 2f48: 1f 91 pop r17 + 2f4a: 0f 91 pop r16 + 2f4c: ff 90 pop r15 + 2f4e: ef 90 pop r14 + 2f50: 08 95 ret + +00002f52 <delayMicroseconds>: + 2f52: 01 97 sbiw r24, 0x01 ; 1 + 2f54: 39 f0 breq .+14 ; 0x2f64 <delayMicroseconds+0x12> + 2f56: 01 97 sbiw r24, 0x01 ; 1 + 2f58: 29 f0 breq .+10 ; 0x2f64 <delayMicroseconds+0x12> + 2f5a: 88 0f add r24, r24 + 2f5c: 99 1f adc r25, r25 + 2f5e: 01 97 sbiw r24, 0x01 ; 1 + 2f60: 01 97 sbiw r24, 0x01 ; 1 + 2f62: f1 f7 brne .-4 ; 0x2f60 <delayMicroseconds+0xe> + 2f64: 08 95 ret + +00002f66 <init>: + 2f66: 78 94 sei + 2f68: 84 b5 in r24, 0x24 ; 36 + 2f6a: 82 60 ori r24, 0x02 ; 2 + 2f6c: 84 bd out 0x24, r24 ; 36 + 2f6e: 84 b5 in r24, 0x24 ; 36 + 2f70: 81 60 ori r24, 0x01 ; 1 + 2f72: 84 bd out 0x24, r24 ; 36 + 2f74: 85 b5 in r24, 0x25 ; 37 + 2f76: 82 60 ori r24, 0x02 ; 2 + 2f78: 85 bd out 0x25, r24 ; 37 + 2f7a: 85 b5 in r24, 0x25 ; 37 + 2f7c: 81 60 ori r24, 0x01 ; 1 + 2f7e: 85 bd out 0x25, r24 ; 37 + 2f80: ee e6 ldi r30, 0x6E ; 110 + 2f82: f0 e0 ldi r31, 0x00 ; 0 + 2f84: 80 81 ld r24, Z + 2f86: 81 60 ori r24, 0x01 ; 1 + 2f88: 80 83 st Z, r24 + 2f8a: e1 e8 ldi r30, 0x81 ; 129 + 2f8c: f0 e0 ldi r31, 0x00 ; 0 + 2f8e: 10 82 st Z, r1 + 2f90: 80 81 ld r24, Z + 2f92: 82 60 ori r24, 0x02 ; 2 + 2f94: 80 83 st Z, r24 + 2f96: 80 81 ld r24, Z + 2f98: 81 60 ori r24, 0x01 ; 1 + 2f9a: 80 83 st Z, r24 + 2f9c: e0 e8 ldi r30, 0x80 ; 128 + 2f9e: f0 e0 ldi r31, 0x00 ; 0 + 2fa0: 80 81 ld r24, Z + 2fa2: 81 60 ori r24, 0x01 ; 1 + 2fa4: 80 83 st Z, r24 + 2fa6: e1 eb ldi r30, 0xB1 ; 177 + 2fa8: f0 e0 ldi r31, 0x00 ; 0 + 2faa: 80 81 ld r24, Z + 2fac: 84 60 ori r24, 0x04 ; 4 + 2fae: 80 83 st Z, r24 + 2fb0: e0 eb ldi r30, 0xB0 ; 176 + 2fb2: f0 e0 ldi r31, 0x00 ; 0 + 2fb4: 80 81 ld r24, Z + 2fb6: 81 60 ori r24, 0x01 ; 1 + 2fb8: 80 83 st Z, r24 + 2fba: ea e7 ldi r30, 0x7A ; 122 + 2fbc: f0 e0 ldi r31, 0x00 ; 0 + 2fbe: 80 81 ld r24, Z + 2fc0: 84 60 ori r24, 0x04 ; 4 + 2fc2: 80 83 st Z, r24 + 2fc4: 80 81 ld r24, Z + 2fc6: 82 60 ori r24, 0x02 ; 2 + 2fc8: 80 83 st Z, r24 + 2fca: 80 81 ld r24, Z + 2fcc: 81 60 ori r24, 0x01 ; 1 + 2fce: 80 83 st Z, r24 + 2fd0: 80 81 ld r24, Z + 2fd2: 80 68 ori r24, 0x80 ; 128 + 2fd4: 80 83 st Z, r24 + 2fd6: 10 92 c1 00 sts 0x00C1, r1 + 2fda: 08 95 ret + +00002fdc <analogReference>: + 2fdc: 80 93 ad 01 sts 0x01AD, r24 + 2fe0: 08 95 ret + +00002fe2 <analogRead>: + 2fe2: 8e 30 cpi r24, 0x0E ; 14 + 2fe4: 08 f0 brcs .+2 ; 0x2fe8 <analogRead+0x6> + 2fe6: 8e 50 subi r24, 0x0E ; 14 + 2fe8: 87 70 andi r24, 0x07 ; 7 + 2fea: 90 91 ad 01 lds r25, 0x01AD + 2fee: 92 95 swap r25 + 2ff0: 99 0f add r25, r25 + 2ff2: 99 0f add r25, r25 + 2ff4: 90 7c andi r25, 0xC0 ; 192 + 2ff6: 98 2b or r25, r24 + 2ff8: 90 93 7c 00 sts 0x007C, r25 + 2ffc: 80 91 7a 00 lds r24, 0x007A + 3000: 80 64 ori r24, 0x40 ; 64 + 3002: 80 93 7a 00 sts 0x007A, r24 + 3006: 80 91 7a 00 lds r24, 0x007A + 300a: 86 fd sbrc r24, 6 + 300c: fc cf rjmp .-8 ; 0x3006 <analogRead+0x24> + 300e: 20 91 78 00 lds r18, 0x0078 + 3012: 30 91 79 00 lds r19, 0x0079 + 3016: 93 2f mov r25, r19 + 3018: 80 e0 ldi r24, 0x00 ; 0 + 301a: 30 e0 ldi r19, 0x00 ; 0 + 301c: 28 2b or r18, r24 + 301e: 39 2b or r19, r25 + 3020: c9 01 movw r24, r18 + 3022: 08 95 ret + +00003024 <analogWrite>: + 3024: 1f 93 push r17 + 3026: cf 93 push r28 + 3028: df 93 push r29 + 302a: 18 2f mov r17, r24 + 302c: eb 01 movw r28, r22 + 302e: 61 e0 ldi r22, 0x01 ; 1 + 3030: 0e 94 9f 18 call 0x313e ; 0x313e <pinMode> + 3034: 20 97 sbiw r28, 0x00 ; 0 + 3036: 09 f4 brne .+2 ; 0x303a <analogWrite+0x16> + 3038: 4a c0 rjmp .+148 ; 0x30ce <analogWrite+0xaa> + 303a: cf 3f cpi r28, 0xFF ; 255 + 303c: d1 05 cpc r29, r1 + 303e: 09 f4 brne .+2 ; 0x3042 <analogWrite+0x1e> + 3040: 49 c0 rjmp .+146 ; 0x30d4 <analogWrite+0xb0> + 3042: e1 2f mov r30, r17 + 3044: f0 e0 ldi r31, 0x00 ; 0 + 3046: e1 55 subi r30, 0x51 ; 81 + 3048: ff 4f sbci r31, 0xFF ; 255 + 304a: e4 91 lpm r30, Z+ + 304c: e3 30 cpi r30, 0x03 ; 3 + 304e: c1 f0 breq .+48 ; 0x3080 <analogWrite+0x5c> + 3050: e4 30 cpi r30, 0x04 ; 4 + 3052: 28 f4 brcc .+10 ; 0x305e <analogWrite+0x3a> + 3054: e1 30 cpi r30, 0x01 ; 1 + 3056: 51 f0 breq .+20 ; 0x306c <analogWrite+0x48> + 3058: e2 30 cpi r30, 0x02 ; 2 + 305a: b1 f5 brne .+108 ; 0x30c8 <analogWrite+0xa4> + 305c: 0c c0 rjmp .+24 ; 0x3076 <analogWrite+0x52> + 305e: e6 30 cpi r30, 0x06 ; 6 + 3060: 19 f1 breq .+70 ; 0x30a8 <analogWrite+0x84> + 3062: e7 30 cpi r30, 0x07 ; 7 + 3064: 49 f1 breq .+82 ; 0x30b8 <analogWrite+0x94> + 3066: e4 30 cpi r30, 0x04 ; 4 + 3068: 79 f5 brne .+94 ; 0x30c8 <analogWrite+0xa4> + 306a: 14 c0 rjmp .+40 ; 0x3094 <analogWrite+0x70> + 306c: 84 b5 in r24, 0x24 ; 36 + 306e: 80 68 ori r24, 0x80 ; 128 + 3070: 84 bd out 0x24, r24 ; 36 + 3072: c7 bd out 0x27, r28 ; 39 + 3074: 33 c0 rjmp .+102 ; 0x30dc <analogWrite+0xb8> + 3076: 84 b5 in r24, 0x24 ; 36 + 3078: 80 62 ori r24, 0x20 ; 32 + 307a: 84 bd out 0x24, r24 ; 36 + 307c: c8 bd out 0x28, r28 ; 40 + 307e: 2e c0 rjmp .+92 ; 0x30dc <analogWrite+0xb8> + 3080: 80 91 80 00 lds r24, 0x0080 + 3084: 80 68 ori r24, 0x80 ; 128 + 3086: 80 93 80 00 sts 0x0080, r24 + 308a: d0 93 89 00 sts 0x0089, r29 + 308e: c0 93 88 00 sts 0x0088, r28 + 3092: 24 c0 rjmp .+72 ; 0x30dc <analogWrite+0xb8> + 3094: 80 91 80 00 lds r24, 0x0080 + 3098: 80 62 ori r24, 0x20 ; 32 + 309a: 80 93 80 00 sts 0x0080, r24 + 309e: d0 93 8b 00 sts 0x008B, r29 + 30a2: c0 93 8a 00 sts 0x008A, r28 + 30a6: 1a c0 rjmp .+52 ; 0x30dc <analogWrite+0xb8> + 30a8: 80 91 b0 00 lds r24, 0x00B0 + 30ac: 80 68 ori r24, 0x80 ; 128 + 30ae: 80 93 b0 00 sts 0x00B0, r24 + 30b2: c0 93 b3 00 sts 0x00B3, r28 + 30b6: 12 c0 rjmp .+36 ; 0x30dc <analogWrite+0xb8> + 30b8: 80 91 b0 00 lds r24, 0x00B0 + 30bc: 80 62 ori r24, 0x20 ; 32 + 30be: 80 93 b0 00 sts 0x00B0, r24 + 30c2: c0 93 b4 00 sts 0x00B4, r28 + 30c6: 0a c0 rjmp .+20 ; 0x30dc <analogWrite+0xb8> + 30c8: c0 38 cpi r28, 0x80 ; 128 + 30ca: d1 05 cpc r29, r1 + 30cc: 1c f4 brge .+6 ; 0x30d4 <analogWrite+0xb0> + 30ce: 81 2f mov r24, r17 + 30d0: 60 e0 ldi r22, 0x00 ; 0 + 30d2: 02 c0 rjmp .+4 ; 0x30d8 <analogWrite+0xb4> + 30d4: 81 2f mov r24, r17 + 30d6: 61 e0 ldi r22, 0x01 ; 1 + 30d8: 0e 94 c3 18 call 0x3186 ; 0x3186 <digitalWrite> + 30dc: df 91 pop r29 + 30de: cf 91 pop r28 + 30e0: 1f 91 pop r17 + 30e2: 08 95 ret + +000030e4 <turnOffPWM>: + 30e4: 83 30 cpi r24, 0x03 ; 3 + 30e6: 71 f0 breq .+28 ; 0x3104 <turnOffPWM+0x20> + 30e8: 84 30 cpi r24, 0x04 ; 4 + 30ea: 28 f4 brcc .+10 ; 0x30f6 <turnOffPWM+0x12> + 30ec: 81 30 cpi r24, 0x01 ; 1 + 30ee: a1 f0 breq .+40 ; 0x3118 <turnOffPWM+0x34> + 30f0: 82 30 cpi r24, 0x02 ; 2 + 30f2: 21 f5 brne .+72 ; 0x313c <turnOffPWM+0x58> + 30f4: 14 c0 rjmp .+40 ; 0x311e <turnOffPWM+0x3a> + 30f6: 86 30 cpi r24, 0x06 ; 6 + 30f8: b1 f0 breq .+44 ; 0x3126 <turnOffPWM+0x42> + 30fa: 87 30 cpi r24, 0x07 ; 7 + 30fc: d1 f0 breq .+52 ; 0x3132 <turnOffPWM+0x4e> + 30fe: 84 30 cpi r24, 0x04 ; 4 + 3100: e9 f4 brne .+58 ; 0x313c <turnOffPWM+0x58> + 3102: 04 c0 rjmp .+8 ; 0x310c <turnOffPWM+0x28> + 3104: 80 91 80 00 lds r24, 0x0080 + 3108: 8f 77 andi r24, 0x7F ; 127 + 310a: 03 c0 rjmp .+6 ; 0x3112 <turnOffPWM+0x2e> + 310c: 80 91 80 00 lds r24, 0x0080 + 3110: 8f 7d andi r24, 0xDF ; 223 + 3112: 80 93 80 00 sts 0x0080, r24 + 3116: 08 95 ret + 3118: 84 b5 in r24, 0x24 ; 36 + 311a: 8f 77 andi r24, 0x7F ; 127 + 311c: 02 c0 rjmp .+4 ; 0x3122 <turnOffPWM+0x3e> + 311e: 84 b5 in r24, 0x24 ; 36 + 3120: 8f 7d andi r24, 0xDF ; 223 + 3122: 84 bd out 0x24, r24 ; 36 + 3124: 08 95 ret + 3126: 80 91 b0 00 lds r24, 0x00B0 + 312a: 8f 77 andi r24, 0x7F ; 127 + 312c: 80 93 b0 00 sts 0x00B0, r24 + 3130: 08 95 ret + 3132: 80 91 b0 00 lds r24, 0x00B0 + 3136: 8f 7d andi r24, 0xDF ; 223 + 3138: 80 93 b0 00 sts 0x00B0, r24 + 313c: 08 95 ret + +0000313e <pinMode>: + 313e: 90 e0 ldi r25, 0x00 ; 0 + 3140: fc 01 movw r30, r24 + 3142: e5 56 subi r30, 0x65 ; 101 + 3144: ff 4f sbci r31, 0xFF ; 255 + 3146: 24 91 lpm r18, Z+ + 3148: fc 01 movw r30, r24 + 314a: e9 57 subi r30, 0x79 ; 121 + 314c: ff 4f sbci r31, 0xFF ; 255 + 314e: e4 91 lpm r30, Z+ + 3150: ee 23 and r30, r30 + 3152: c1 f0 breq .+48 ; 0x3184 <pinMode+0x46> + 3154: f0 e0 ldi r31, 0x00 ; 0 + 3156: ee 0f add r30, r30 + 3158: ff 1f adc r31, r31 + 315a: e7 59 subi r30, 0x97 ; 151 + 315c: ff 4f sbci r31, 0xFF ; 255 + 315e: 85 91 lpm r24, Z+ + 3160: 94 91 lpm r25, Z+ + 3162: dc 01 movw r26, r24 + 3164: 66 23 and r22, r22 + 3166: 41 f4 brne .+16 ; 0x3178 <pinMode+0x3a> + 3168: 9f b7 in r25, 0x3f ; 63 + 316a: f8 94 cli + 316c: 8c 91 ld r24, X + 316e: 20 95 com r18 + 3170: 82 23 and r24, r18 + 3172: 8c 93 st X, r24 + 3174: 9f bf out 0x3f, r25 ; 63 + 3176: 08 95 ret + 3178: 9f b7 in r25, 0x3f ; 63 + 317a: f8 94 cli + 317c: 8c 91 ld r24, X + 317e: 82 2b or r24, r18 + 3180: 8c 93 st X, r24 + 3182: 9f bf out 0x3f, r25 ; 63 + 3184: 08 95 ret + +00003186 <digitalWrite>: + 3186: 0f 93 push r16 + 3188: 1f 93 push r17 + 318a: df 93 push r29 + 318c: cf 93 push r28 + 318e: 0f 92 push r0 + 3190: cd b7 in r28, 0x3d ; 61 + 3192: de b7 in r29, 0x3e ; 62 + 3194: 28 2f mov r18, r24 + 3196: 30 e0 ldi r19, 0x00 ; 0 + 3198: f9 01 movw r30, r18 + 319a: e1 55 subi r30, 0x51 ; 81 + 319c: ff 4f sbci r31, 0xFF ; 255 + 319e: 84 91 lpm r24, Z+ + 31a0: f9 01 movw r30, r18 + 31a2: e5 56 subi r30, 0x65 ; 101 + 31a4: ff 4f sbci r31, 0xFF ; 255 + 31a6: 14 91 lpm r17, Z+ + 31a8: 29 57 subi r18, 0x79 ; 121 + 31aa: 3f 4f sbci r19, 0xFF ; 255 + 31ac: f9 01 movw r30, r18 + 31ae: 04 91 lpm r16, Z+ + 31b0: 00 23 and r16, r16 + 31b2: d9 f0 breq .+54 ; 0x31ea <digitalWrite+0x64> + 31b4: 88 23 and r24, r24 + 31b6: 21 f0 breq .+8 ; 0x31c0 <digitalWrite+0x3a> + 31b8: 69 83 std Y+1, r22 ; 0x01 + 31ba: 0e 94 72 18 call 0x30e4 ; 0x30e4 <turnOffPWM> + 31be: 69 81 ldd r22, Y+1 ; 0x01 + 31c0: e0 2f mov r30, r16 + 31c2: f0 e0 ldi r31, 0x00 ; 0 + 31c4: ee 0f add r30, r30 + 31c6: ff 1f adc r31, r31 + 31c8: ed 58 subi r30, 0x8D ; 141 + 31ca: ff 4f sbci r31, 0xFF ; 255 + 31cc: 85 91 lpm r24, Z+ + 31ce: 94 91 lpm r25, Z+ + 31d0: dc 01 movw r26, r24 + 31d2: 9f b7 in r25, 0x3f ; 63 + 31d4: f8 94 cli + 31d6: 66 23 and r22, r22 + 31d8: 21 f4 brne .+8 ; 0x31e2 <digitalWrite+0x5c> + 31da: 8c 91 ld r24, X + 31dc: 10 95 com r17 + 31de: 81 23 and r24, r17 + 31e0: 02 c0 rjmp .+4 ; 0x31e6 <digitalWrite+0x60> + 31e2: 8c 91 ld r24, X + 31e4: 81 2b or r24, r17 + 31e6: 8c 93 st X, r24 + 31e8: 9f bf out 0x3f, r25 ; 63 + 31ea: 0f 90 pop r0 + 31ec: cf 91 pop r28 + 31ee: df 91 pop r29 + 31f0: 1f 91 pop r17 + 31f2: 0f 91 pop r16 + 31f4: 08 95 ret + +000031f6 <digitalRead>: + 31f6: 0f 93 push r16 + 31f8: 1f 93 push r17 + 31fa: 28 2f mov r18, r24 + 31fc: 30 e0 ldi r19, 0x00 ; 0 + 31fe: f9 01 movw r30, r18 + 3200: e1 55 subi r30, 0x51 ; 81 + 3202: ff 4f sbci r31, 0xFF ; 255 + 3204: 84 91 lpm r24, Z+ + 3206: f9 01 movw r30, r18 + 3208: e5 56 subi r30, 0x65 ; 101 + 320a: ff 4f sbci r31, 0xFF ; 255 + 320c: 04 91 lpm r16, Z+ + 320e: 29 57 subi r18, 0x79 ; 121 + 3210: 3f 4f sbci r19, 0xFF ; 255 + 3212: f9 01 movw r30, r18 + 3214: 14 91 lpm r17, Z+ + 3216: 11 23 and r17, r17 + 3218: 91 f0 breq .+36 ; 0x323e <digitalRead+0x48> + 321a: 88 23 and r24, r24 + 321c: 11 f0 breq .+4 ; 0x3222 <digitalRead+0x2c> + 321e: 0e 94 72 18 call 0x30e4 ; 0x30e4 <turnOffPWM> + 3222: e1 2f mov r30, r17 + 3224: f0 e0 ldi r31, 0x00 ; 0 + 3226: ee 0f add r30, r30 + 3228: ff 1f adc r31, r31 + 322a: e3 58 subi r30, 0x83 ; 131 + 322c: ff 4f sbci r31, 0xFF ; 255 + 322e: 85 91 lpm r24, Z+ + 3230: 94 91 lpm r25, Z+ + 3232: dc 01 movw r26, r24 + 3234: 8c 91 ld r24, X + 3236: 80 23 and r24, r16 + 3238: 21 e0 ldi r18, 0x01 ; 1 + 323a: 30 e0 ldi r19, 0x00 ; 0 + 323c: 11 f4 brne .+4 ; 0x3242 <digitalRead+0x4c> + 323e: 20 e0 ldi r18, 0x00 ; 0 + 3240: 30 e0 ldi r19, 0x00 ; 0 + 3242: c9 01 movw r24, r18 + 3244: 1f 91 pop r17 + 3246: 0f 91 pop r16 + 3248: 08 95 ret + +0000324a <pulseIn>: + 324a: 8f 92 push r8 + 324c: 9f 92 push r9 + 324e: af 92 push r10 + 3250: bf 92 push r11 + 3252: cf 92 push r12 + 3254: df 92 push r13 + 3256: ef 92 push r14 + 3258: ff 92 push r15 + 325a: 0f 93 push r16 + 325c: 1f 93 push r17 + 325e: 90 e0 ldi r25, 0x00 ; 0 + 3260: fc 01 movw r30, r24 + 3262: e5 56 subi r30, 0x65 ; 101 + 3264: ff 4f sbci r31, 0xFF ; 255 + 3266: 94 90 lpm r9, Z+ + 3268: 89 57 subi r24, 0x79 ; 121 + 326a: 9f 4f sbci r25, 0xFF ; 255 + 326c: fc 01 movw r30, r24 + 326e: e4 90 lpm r14, Z+ + 3270: 66 23 and r22, r22 + 3272: 11 f4 brne .+4 ; 0x3278 <pulseIn+0x2e> + 3274: 88 24 eor r8, r8 + 3276: 01 c0 rjmp .+2 ; 0x327a <pulseIn+0x30> + 3278: 89 2c mov r8, r9 + 327a: ca 01 movw r24, r20 + 327c: b9 01 movw r22, r18 + 327e: 20 e4 ldi r18, 0x40 ; 64 + 3280: 3f e1 ldi r19, 0x1F ; 31 + 3282: 40 e0 ldi r20, 0x00 ; 0 + 3284: 50 e0 ldi r21, 0x00 ; 0 + 3286: 0e 94 9b 24 call 0x4936 ; 0x4936 <__mulsi3> + 328a: 20 e8 ldi r18, 0x80 ; 128 + 328c: 3e e3 ldi r19, 0x3E ; 62 + 328e: 40 e0 ldi r20, 0x00 ; 0 + 3290: 50 e0 ldi r21, 0x00 ; 0 + 3292: 0e 94 cd 24 call 0x499a ; 0x499a <__udivmodsi4> + 3296: 59 01 movw r10, r18 + 3298: 6a 01 movw r12, r20 + 329a: 80 e0 ldi r24, 0x00 ; 0 + 329c: 90 e0 ldi r25, 0x00 ; 0 + 329e: dc 01 movw r26, r24 + 32a0: 6e 2d mov r22, r14 + 32a2: 70 e0 ldi r23, 0x00 ; 0 + 32a4: fb 01 movw r30, r22 + 32a6: ee 0f add r30, r30 + 32a8: ff 1f adc r31, r31 + 32aa: e3 58 subi r30, 0x83 ; 131 + 32ac: ff 4f sbci r31, 0xFF ; 255 + 32ae: 25 91 lpm r18, Z+ + 32b0: 34 91 lpm r19, Z+ + 32b2: 09 c0 rjmp .+18 ; 0x32c6 <pulseIn+0x7c> + 32b4: 8a 15 cp r24, r10 + 32b6: 9b 05 cpc r25, r11 + 32b8: ac 05 cpc r26, r12 + 32ba: bd 05 cpc r27, r13 + 32bc: 09 f4 brne .+2 ; 0x32c0 <pulseIn+0x76> + 32be: 4d c0 rjmp .+154 ; 0x335a <pulseIn+0x110> + 32c0: 01 96 adiw r24, 0x01 ; 1 + 32c2: a1 1d adc r26, r1 + 32c4: b1 1d adc r27, r1 + 32c6: f9 01 movw r30, r18 + 32c8: 40 81 ld r20, Z + 32ca: 49 21 and r20, r9 + 32cc: 48 15 cp r20, r8 + 32ce: 91 f3 breq .-28 ; 0x32b4 <pulseIn+0x6a> + 32d0: 0a c0 rjmp .+20 ; 0x32e6 <pulseIn+0x9c> + 32d2: 8a 15 cp r24, r10 + 32d4: 9b 05 cpc r25, r11 + 32d6: ac 05 cpc r26, r12 + 32d8: bd 05 cpc r27, r13 + 32da: 09 f4 brne .+2 ; 0x32de <pulseIn+0x94> + 32dc: 3e c0 rjmp .+124 ; 0x335a <pulseIn+0x110> + 32de: 01 96 adiw r24, 0x01 ; 1 + 32e0: a1 1d adc r26, r1 + 32e2: b1 1d adc r27, r1 + 32e4: 07 c0 rjmp .+14 ; 0x32f4 <pulseIn+0xaa> + 32e6: 66 0f add r22, r22 + 32e8: 77 1f adc r23, r23 + 32ea: 63 58 subi r22, 0x83 ; 131 + 32ec: 7f 4f sbci r23, 0xFF ; 255 + 32ee: fb 01 movw r30, r22 + 32f0: 25 91 lpm r18, Z+ + 32f2: 34 91 lpm r19, Z+ + 32f4: f9 01 movw r30, r18 + 32f6: 40 81 ld r20, Z + 32f8: 49 21 and r20, r9 + 32fa: 48 15 cp r20, r8 + 32fc: 51 f7 brne .-44 ; 0x32d2 <pulseIn+0x88> + 32fe: 20 e0 ldi r18, 0x00 ; 0 + 3300: 30 e0 ldi r19, 0x00 ; 0 + 3302: a9 01 movw r20, r18 + 3304: fb 01 movw r30, r22 + 3306: 65 91 lpm r22, Z+ + 3308: 74 91 lpm r23, Z+ + 330a: 0f c0 rjmp .+30 ; 0x332a <pulseIn+0xe0> + 330c: 79 01 movw r14, r18 + 330e: 8a 01 movw r16, r20 + 3310: e8 0e add r14, r24 + 3312: f9 1e adc r15, r25 + 3314: 0a 1f adc r16, r26 + 3316: 1b 1f adc r17, r27 + 3318: ea 14 cp r14, r10 + 331a: fb 04 cpc r15, r11 + 331c: 0c 05 cpc r16, r12 + 331e: 1d 05 cpc r17, r13 + 3320: e1 f0 breq .+56 ; 0x335a <pulseIn+0x110> + 3322: 2f 5f subi r18, 0xFF ; 255 + 3324: 3f 4f sbci r19, 0xFF ; 255 + 3326: 4f 4f sbci r20, 0xFF ; 255 + 3328: 5f 4f sbci r21, 0xFF ; 255 + 332a: fb 01 movw r30, r22 + 332c: e0 81 ld r30, Z + 332e: e9 21 and r30, r9 + 3330: e8 15 cp r30, r8 + 3332: 61 f3 breq .-40 ; 0x330c <pulseIn+0xc2> + 3334: ca 01 movw r24, r20 + 3336: b9 01 movw r22, r18 + 3338: 28 e0 ldi r18, 0x08 ; 8 + 333a: 32 e5 ldi r19, 0x52 ; 82 + 333c: 40 e0 ldi r20, 0x00 ; 0 + 333e: 50 e0 ldi r21, 0x00 ; 0 + 3340: 0e 94 9b 24 call 0x4936 ; 0x4936 <__mulsi3> + 3344: 60 58 subi r22, 0x80 ; 128 + 3346: 71 4c sbci r23, 0xC1 ; 193 + 3348: 8f 4f sbci r24, 0xFF ; 255 + 334a: 9f 4f sbci r25, 0xFF ; 255 + 334c: 20 e4 ldi r18, 0x40 ; 64 + 334e: 3f e1 ldi r19, 0x1F ; 31 + 3350: 40 e0 ldi r20, 0x00 ; 0 + 3352: 50 e0 ldi r21, 0x00 ; 0 + 3354: 0e 94 cd 24 call 0x499a ; 0x499a <__udivmodsi4> + 3358: 03 c0 rjmp .+6 ; 0x3360 <pulseIn+0x116> + 335a: 20 e0 ldi r18, 0x00 ; 0 + 335c: 30 e0 ldi r19, 0x00 ; 0 + 335e: a9 01 movw r20, r18 + 3360: b9 01 movw r22, r18 + 3362: ca 01 movw r24, r20 + 3364: 1f 91 pop r17 + 3366: 0f 91 pop r16 + 3368: ff 90 pop r15 + 336a: ef 90 pop r14 + 336c: df 90 pop r13 + 336e: cf 90 pop r12 + 3370: bf 90 pop r11 + 3372: af 90 pop r10 + 3374: 9f 90 pop r9 + 3376: 8f 90 pop r8 + 3378: 08 95 ret + +0000337a <shiftIn>: + 337a: cf 92 push r12 + 337c: df 92 push r13 + 337e: ef 92 push r14 + 3380: ff 92 push r15 + 3382: 0f 93 push r16 + 3384: 1f 93 push r17 + 3386: cf 93 push r28 + 3388: df 93 push r29 + 338a: e8 2e mov r14, r24 + 338c: f6 2e mov r15, r22 + 338e: c4 2e mov r12, r20 + 3390: c7 e0 ldi r28, 0x07 ; 7 + 3392: d0 e0 ldi r29, 0x00 ; 0 + 3394: dd 24 eor r13, r13 + 3396: 07 e0 ldi r16, 0x07 ; 7 + 3398: 10 e0 ldi r17, 0x00 ; 0 + 339a: 8f 2d mov r24, r15 + 339c: 61 e0 ldi r22, 0x01 ; 1 + 339e: 0e 94 c3 18 call 0x3186 ; 0x3186 <digitalWrite> + 33a2: cc 20 and r12, r12 + 33a4: 71 f4 brne .+28 ; 0x33c2 <shiftIn+0x48> + 33a6: 8e 2d mov r24, r14 + 33a8: 0e 94 fb 18 call 0x31f6 ; 0x31f6 <digitalRead> + 33ac: 98 01 movw r18, r16 + 33ae: 2c 1b sub r18, r28 + 33b0: 3d 0b sbc r19, r29 + 33b2: ac 01 movw r20, r24 + 33b4: 02 c0 rjmp .+4 ; 0x33ba <shiftIn+0x40> + 33b6: 44 0f add r20, r20 + 33b8: 55 1f adc r21, r21 + 33ba: 2a 95 dec r18 + 33bc: e2 f7 brpl .-8 ; 0x33b6 <shiftIn+0x3c> + 33be: 9a 01 movw r18, r20 + 33c0: 0a c0 rjmp .+20 ; 0x33d6 <shiftIn+0x5c> + 33c2: 8e 2d mov r24, r14 + 33c4: 0e 94 fb 18 call 0x31f6 ; 0x31f6 <digitalRead> + 33c8: 9c 01 movw r18, r24 + 33ca: 0c 2e mov r0, r28 + 33cc: 02 c0 rjmp .+4 ; 0x33d2 <shiftIn+0x58> + 33ce: 22 0f add r18, r18 + 33d0: 33 1f adc r19, r19 + 33d2: 0a 94 dec r0 + 33d4: e2 f7 brpl .-8 ; 0x33ce <shiftIn+0x54> + 33d6: d2 2a or r13, r18 + 33d8: 8f 2d mov r24, r15 + 33da: 60 e0 ldi r22, 0x00 ; 0 + 33dc: 0e 94 c3 18 call 0x3186 ; 0x3186 <digitalWrite> + 33e0: 21 97 sbiw r28, 0x01 ; 1 + 33e2: 5f ef ldi r21, 0xFF ; 255 + 33e4: cf 3f cpi r28, 0xFF ; 255 + 33e6: d5 07 cpc r29, r21 + 33e8: c1 f6 brne .-80 ; 0x339a <shiftIn+0x20> + 33ea: 8d 2d mov r24, r13 + 33ec: df 91 pop r29 + 33ee: cf 91 pop r28 + 33f0: 1f 91 pop r17 + 33f2: 0f 91 pop r16 + 33f4: ff 90 pop r15 + 33f6: ef 90 pop r14 + 33f8: df 90 pop r13 + 33fa: cf 90 pop r12 + 33fc: 08 95 ret + +000033fe <shiftOut>: + 33fe: bf 92 push r11 + 3400: cf 92 push r12 + 3402: df 92 push r13 + 3404: ef 92 push r14 + 3406: ff 92 push r15 + 3408: 0f 93 push r16 + 340a: 1f 93 push r17 + 340c: cf 93 push r28 + 340e: df 93 push r29 + 3410: c8 2e mov r12, r24 + 3412: d6 2e mov r13, r22 + 3414: b4 2e mov r11, r20 + 3416: c7 e0 ldi r28, 0x07 ; 7 + 3418: d0 e0 ldi r29, 0x00 ; 0 + 341a: 02 2f mov r16, r18 + 341c: 10 e0 ldi r17, 0x00 ; 0 + 341e: 87 e0 ldi r24, 0x07 ; 7 + 3420: e8 2e mov r14, r24 + 3422: f1 2c mov r15, r1 + 3424: bb 20 and r11, r11 + 3426: 59 f4 brne .+22 ; 0x343e <shiftOut+0x40> + 3428: 97 01 movw r18, r14 + 342a: 2c 1b sub r18, r28 + 342c: 3d 0b sbc r19, r29 + 342e: c8 01 movw r24, r16 + 3430: 02 c0 rjmp .+4 ; 0x3436 <shiftOut+0x38> + 3432: 95 95 asr r25 + 3434: 87 95 ror r24 + 3436: 2a 95 dec r18 + 3438: e2 f7 brpl .-8 ; 0x3432 <shiftOut+0x34> + 343a: 9c 01 movw r18, r24 + 343c: 07 c0 rjmp .+14 ; 0x344c <shiftOut+0x4e> + 343e: 98 01 movw r18, r16 + 3440: 0c 2e mov r0, r28 + 3442: 02 c0 rjmp .+4 ; 0x3448 <shiftOut+0x4a> + 3444: 35 95 asr r19 + 3446: 27 95 ror r18 + 3448: 0a 94 dec r0 + 344a: e2 f7 brpl .-8 ; 0x3444 <shiftOut+0x46> + 344c: 62 2f mov r22, r18 + 344e: 61 70 andi r22, 0x01 ; 1 + 3450: 8c 2d mov r24, r12 + 3452: 0e 94 c3 18 call 0x3186 ; 0x3186 <digitalWrite> + 3456: 8d 2d mov r24, r13 + 3458: 61 e0 ldi r22, 0x01 ; 1 + 345a: 0e 94 c3 18 call 0x3186 ; 0x3186 <digitalWrite> + 345e: 8d 2d mov r24, r13 + 3460: 60 e0 ldi r22, 0x00 ; 0 + 3462: 0e 94 c3 18 call 0x3186 ; 0x3186 <digitalWrite> + 3466: 21 97 sbiw r28, 0x01 ; 1 + 3468: 9f ef ldi r25, 0xFF ; 255 + 346a: cf 3f cpi r28, 0xFF ; 255 + 346c: d9 07 cpc r29, r25 + 346e: d1 f6 brne .-76 ; 0x3424 <shiftOut+0x26> + 3470: df 91 pop r29 + 3472: cf 91 pop r28 + 3474: 1f 91 pop r17 + 3476: 0f 91 pop r16 + 3478: ff 90 pop r15 + 347a: ef 90 pop r14 + 347c: df 90 pop r13 + 347e: cf 90 pop r12 + 3480: bf 90 pop r11 + 3482: 08 95 ret + +00003484 <_ZN7TwoWire9availableEv>: + 3484: 20 91 eb 03 lds r18, 0x03EB + 3488: 30 e0 ldi r19, 0x00 ; 0 + 348a: 80 91 ea 03 lds r24, 0x03EA + 348e: 28 1b sub r18, r24 + 3490: 31 09 sbc r19, r1 + 3492: c9 01 movw r24, r18 + 3494: 08 95 ret + +00003496 <_ZN7TwoWire4readEv>: + 3496: 80 91 ea 03 lds r24, 0x03EA + 349a: 90 91 eb 03 lds r25, 0x03EB + 349e: 89 17 cp r24, r25 + 34a0: 50 f4 brcc .+20 ; 0x34b6 <_ZN7TwoWire4readEv+0x20> + 34a2: e8 2f mov r30, r24 + 34a4: f0 e0 ldi r31, 0x00 ; 0 + 34a6: e6 53 subi r30, 0x36 ; 54 + 34a8: fc 4f sbci r31, 0xFC ; 252 + 34aa: 20 81 ld r18, Z + 34ac: 30 e0 ldi r19, 0x00 ; 0 + 34ae: 8f 5f subi r24, 0xFF ; 255 + 34b0: 80 93 ea 03 sts 0x03EA, r24 + 34b4: 02 c0 rjmp .+4 ; 0x34ba <_ZN7TwoWire4readEv+0x24> + 34b6: 2f ef ldi r18, 0xFF ; 255 + 34b8: 3f ef ldi r19, 0xFF ; 255 + 34ba: c9 01 movw r24, r18 + 34bc: 08 95 ret + +000034be <_ZN7TwoWire4peekEv>: + 34be: e0 91 ea 03 lds r30, 0x03EA + 34c2: 80 91 eb 03 lds r24, 0x03EB + 34c6: e8 17 cp r30, r24 + 34c8: 30 f4 brcc .+12 ; 0x34d6 <_ZN7TwoWire4peekEv+0x18> + 34ca: f0 e0 ldi r31, 0x00 ; 0 + 34cc: e6 53 subi r30, 0x36 ; 54 + 34ce: fc 4f sbci r31, 0xFC ; 252 + 34d0: 20 81 ld r18, Z + 34d2: 30 e0 ldi r19, 0x00 ; 0 + 34d4: 02 c0 rjmp .+4 ; 0x34da <_ZN7TwoWire4peekEv+0x1c> + 34d6: 2f ef ldi r18, 0xFF ; 255 + 34d8: 3f ef ldi r19, 0xFF ; 255 + 34da: c9 01 movw r24, r18 + 34dc: 08 95 ret + +000034de <_ZN7TwoWire5flushEv>: + 34de: 08 95 ret + +000034e0 <_ZN7TwoWire16onReceiveServiceEPhi>: + 34e0: cf 93 push r28 + 34e2: df 93 push r29 + 34e4: 9c 01 movw r18, r24 + 34e6: cb 01 movw r24, r22 + 34e8: e0 91 12 04 lds r30, 0x0412 + 34ec: f0 91 13 04 lds r31, 0x0413 + 34f0: 30 97 sbiw r30, 0x00 ; 0 + 34f2: d9 f0 breq .+54 ; 0x352a <_ZN7TwoWire16onReceiveServiceEPhi+0x4a> + 34f4: 50 91 ea 03 lds r21, 0x03EA + 34f8: 40 91 eb 03 lds r20, 0x03EB + 34fc: 54 17 cp r21, r20 + 34fe: a8 f0 brcs .+42 ; 0x352a <_ZN7TwoWire16onReceiveServiceEPhi+0x4a> + 3500: 60 e0 ldi r22, 0x00 ; 0 + 3502: 09 c0 rjmp .+18 ; 0x3516 <_ZN7TwoWire16onReceiveServiceEPhi+0x36> + 3504: da 01 movw r26, r20 + 3506: a6 53 subi r26, 0x36 ; 54 + 3508: bc 4f sbci r27, 0xFC ; 252 + 350a: 42 0f add r20, r18 + 350c: 53 1f adc r21, r19 + 350e: ea 01 movw r28, r20 + 3510: 48 81 ld r20, Y + 3512: 4c 93 st X, r20 + 3514: 6f 5f subi r22, 0xFF ; 255 + 3516: 46 2f mov r20, r22 + 3518: 50 e0 ldi r21, 0x00 ; 0 + 351a: 48 17 cp r20, r24 + 351c: 59 07 cpc r21, r25 + 351e: 94 f3 brlt .-28 ; 0x3504 <_ZN7TwoWire16onReceiveServiceEPhi+0x24> + 3520: 10 92 ea 03 sts 0x03EA, r1 + 3524: 80 93 eb 03 sts 0x03EB, r24 + 3528: 09 95 icall + 352a: df 91 pop r29 + 352c: cf 91 pop r28 + 352e: 08 95 ret + +00003530 <_ZN7TwoWire16onRequestServiceEv>: + 3530: e0 91 10 04 lds r30, 0x0410 + 3534: f0 91 11 04 lds r31, 0x0411 + 3538: 30 97 sbiw r30, 0x00 ; 0 + 353a: 29 f0 breq .+10 ; 0x3546 <_ZN7TwoWire16onRequestServiceEv+0x16> + 353c: 10 92 0d 04 sts 0x040D, r1 + 3540: 10 92 0e 04 sts 0x040E, r1 + 3544: 09 95 icall + 3546: 08 95 ret + +00003548 <_ZN7TwoWire5writeEPKhj>: + 3548: cf 92 push r12 + 354a: df 92 push r13 + 354c: ef 92 push r14 + 354e: ff 92 push r15 + 3550: 0f 93 push r16 + 3552: 1f 93 push r17 + 3554: cf 93 push r28 + 3556: df 93 push r29 + 3558: 6c 01 movw r12, r24 + 355a: cb 01 movw r24, r22 + 355c: ea 01 movw r28, r20 + 355e: 20 91 0f 04 lds r18, 0x040F + 3562: 22 23 and r18, r18 + 3564: b1 f0 breq .+44 ; 0x3592 <_ZN7TwoWire5writeEPKhj+0x4a> + 3566: e6 2e mov r14, r22 + 3568: f9 2e mov r15, r25 + 356a: 00 e0 ldi r16, 0x00 ; 0 + 356c: 10 e0 ldi r17, 0x00 ; 0 + 356e: 0d c0 rjmp .+26 ; 0x358a <_ZN7TwoWire5writeEPKhj+0x42> + 3570: d7 01 movw r26, r14 + 3572: 6d 91 ld r22, X+ + 3574: 7d 01 movw r14, r26 + 3576: d6 01 movw r26, r12 + 3578: ed 91 ld r30, X+ + 357a: fc 91 ld r31, X + 357c: 01 90 ld r0, Z+ + 357e: f0 81 ld r31, Z + 3580: e0 2d mov r30, r0 + 3582: c6 01 movw r24, r12 + 3584: 09 95 icall + 3586: 0f 5f subi r16, 0xFF ; 255 + 3588: 1f 4f sbci r17, 0xFF ; 255 + 358a: 0c 17 cp r16, r28 + 358c: 1d 07 cpc r17, r29 + 358e: 80 f3 brcs .-32 ; 0x3570 <_ZN7TwoWire5writeEPKhj+0x28> + 3590: 03 c0 rjmp .+6 ; 0x3598 <_ZN7TwoWire5writeEPKhj+0x50> + 3592: 64 2f mov r22, r20 + 3594: 0e 94 19 1c call 0x3832 ; 0x3832 <twi_transmit> + 3598: ce 01 movw r24, r28 + 359a: df 91 pop r29 + 359c: cf 91 pop r28 + 359e: 1f 91 pop r17 + 35a0: 0f 91 pop r16 + 35a2: ff 90 pop r15 + 35a4: ef 90 pop r14 + 35a6: df 90 pop r13 + 35a8: cf 90 pop r12 + 35aa: 08 95 ret + +000035ac <_ZN7TwoWire5writeEh>: + 35ac: df 93 push r29 + 35ae: cf 93 push r28 + 35b0: 0f 92 push r0 + 35b2: cd b7 in r28, 0x3d ; 61 + 35b4: de b7 in r29, 0x3e ; 62 + 35b6: 69 83 std Y+1, r22 ; 0x01 + 35b8: 20 91 0f 04 lds r18, 0x040F + 35bc: 22 23 and r18, r18 + 35be: d1 f0 breq .+52 ; 0x35f4 <_ZN7TwoWire5writeEh+0x48> + 35c0: 20 91 0e 04 lds r18, 0x040E + 35c4: 20 32 cpi r18, 0x20 ; 32 + 35c6: 40 f0 brcs .+16 ; 0x35d8 <_ZN7TwoWire5writeEh+0x2c> + 35c8: 21 e0 ldi r18, 0x01 ; 1 + 35ca: 30 e0 ldi r19, 0x00 ; 0 + 35cc: fc 01 movw r30, r24 + 35ce: 33 83 std Z+3, r19 ; 0x03 + 35d0: 22 83 std Z+2, r18 ; 0x02 + 35d2: 20 e0 ldi r18, 0x00 ; 0 + 35d4: 30 e0 ldi r19, 0x00 ; 0 + 35d6: 15 c0 rjmp .+42 ; 0x3602 <_ZN7TwoWire5writeEh+0x56> + 35d8: 80 91 0d 04 lds r24, 0x040D + 35dc: e8 2f mov r30, r24 + 35de: f0 e0 ldi r31, 0x00 ; 0 + 35e0: e3 51 subi r30, 0x13 ; 19 + 35e2: fc 4f sbci r31, 0xFC ; 252 + 35e4: 99 81 ldd r25, Y+1 ; 0x01 + 35e6: 90 83 st Z, r25 + 35e8: 8f 5f subi r24, 0xFF ; 255 + 35ea: 80 93 0d 04 sts 0x040D, r24 + 35ee: 80 93 0e 04 sts 0x040E, r24 + 35f2: 05 c0 rjmp .+10 ; 0x35fe <_ZN7TwoWire5writeEh+0x52> + 35f4: ce 01 movw r24, r28 + 35f6: 01 96 adiw r24, 0x01 ; 1 + 35f8: 61 e0 ldi r22, 0x01 ; 1 + 35fa: 0e 94 19 1c call 0x3832 ; 0x3832 <twi_transmit> + 35fe: 21 e0 ldi r18, 0x01 ; 1 + 3600: 30 e0 ldi r19, 0x00 ; 0 + 3602: c9 01 movw r24, r18 + 3604: 0f 90 pop r0 + 3606: cf 91 pop r28 + 3608: df 91 pop r29 + 360a: 08 95 ret + +0000360c <_ZN7TwoWireC1Ev>: + 360c: fc 01 movw r30, r24 + 360e: 13 82 std Z+3, r1 ; 0x03 + 3610: 12 82 std Z+2, r1 ; 0x02 + 3612: 28 ee ldi r18, 0xE8 ; 232 + 3614: 33 e0 ldi r19, 0x03 ; 3 + 3616: 40 e0 ldi r20, 0x00 ; 0 + 3618: 50 e0 ldi r21, 0x00 ; 0 + 361a: 24 83 std Z+4, r18 ; 0x04 + 361c: 35 83 std Z+5, r19 ; 0x05 + 361e: 46 83 std Z+6, r20 ; 0x06 + 3620: 57 83 std Z+7, r21 ; 0x07 + 3622: 82 eb ldi r24, 0xB2 ; 178 + 3624: 91 e0 ldi r25, 0x01 ; 1 + 3626: 91 83 std Z+1, r25 ; 0x01 + 3628: 80 83 st Z, r24 + 362a: 08 95 ret + +0000362c <_ZN7TwoWire5beginEv>: + 362c: 10 92 ea 03 sts 0x03EA, r1 + 3630: 10 92 eb 03 sts 0x03EB, r1 + 3634: 10 92 0d 04 sts 0x040D, r1 + 3638: 10 92 0e 04 sts 0x040E, r1 + 363c: 0e 94 86 1b call 0x370c ; 0x370c <twi_init> + 3640: 08 95 ret + +00003642 <_ZN7TwoWire5beginEh>: + 3642: cf 93 push r28 + 3644: df 93 push r29 + 3646: ec 01 movw r28, r24 + 3648: 86 2f mov r24, r22 + 364a: 0e 94 9f 1b call 0x373e ; 0x373e <twi_setAddress> + 364e: 88 e9 ldi r24, 0x98 ; 152 + 3650: 9a e1 ldi r25, 0x1A ; 26 + 3652: 0e 94 38 1c call 0x3870 ; 0x3870 <twi_attachSlaveTxEvent> + 3656: 80 e7 ldi r24, 0x70 ; 112 + 3658: 9a e1 ldi r25, 0x1A ; 26 + 365a: 0e 94 33 1c call 0x3866 ; 0x3866 <twi_attachSlaveRxEvent> + 365e: ce 01 movw r24, r28 + 3660: 0e 94 16 1b call 0x362c ; 0x362c <_ZN7TwoWire5beginEv> + 3664: df 91 pop r29 + 3666: cf 91 pop r28 + 3668: 08 95 ret + +0000366a <_ZN7TwoWire5beginEi>: + 366a: 0e 94 21 1b call 0x3642 ; 0x3642 <_ZN7TwoWire5beginEh> + 366e: 08 95 ret + +00003670 <_ZN7TwoWire11requestFromEhh>: + 3670: 86 2f mov r24, r22 + 3672: 41 32 cpi r20, 0x21 ; 33 + 3674: 08 f0 brcs .+2 ; 0x3678 <_ZN7TwoWire11requestFromEhh+0x8> + 3676: 40 e2 ldi r20, 0x20 ; 32 + 3678: 6a ec ldi r22, 0xCA ; 202 + 367a: 73 e0 ldi r23, 0x03 ; 3 + 367c: 0e 94 a3 1b call 0x3746 ; 0x3746 <twi_readFrom> + 3680: 10 92 ea 03 sts 0x03EA, r1 + 3684: 80 93 eb 03 sts 0x03EB, r24 + 3688: 08 95 ret + +0000368a <_ZN7TwoWire11requestFromEii>: + 368a: 0e 94 38 1b call 0x3670 ; 0x3670 <_ZN7TwoWire11requestFromEhh> + 368e: 08 95 ret + +00003690 <_ZN7TwoWire17beginTransmissionEh>: + 3690: 81 e0 ldi r24, 0x01 ; 1 + 3692: 80 93 0f 04 sts 0x040F, r24 + 3696: 60 93 ec 03 sts 0x03EC, r22 + 369a: 10 92 0d 04 sts 0x040D, r1 + 369e: 10 92 0e 04 sts 0x040E, r1 + 36a2: 08 95 ret + +000036a4 <_ZN7TwoWire17beginTransmissionEi>: + 36a4: 0e 94 48 1b call 0x3690 ; 0x3690 <_ZN7TwoWire17beginTransmissionEh> + 36a8: 08 95 ret + +000036aa <_ZN7TwoWire15endTransmissionEv>: + 36aa: 80 91 ec 03 lds r24, 0x03EC + 36ae: 6d ee ldi r22, 0xED ; 237 + 36b0: 73 e0 ldi r23, 0x03 ; 3 + 36b2: 40 91 0e 04 lds r20, 0x040E + 36b6: 21 e0 ldi r18, 0x01 ; 1 + 36b8: 0e 94 d9 1b call 0x37b2 ; 0x37b2 <twi_writeTo> + 36bc: 10 92 0d 04 sts 0x040D, r1 + 36c0: 10 92 0e 04 sts 0x040E, r1 + 36c4: 10 92 0f 04 sts 0x040F, r1 + 36c8: 08 95 ret + +000036ca <_ZN7TwoWire9onReceiveEPFviE>: + 36ca: 70 93 13 04 sts 0x0413, r23 + 36ce: 60 93 12 04 sts 0x0412, r22 + 36d2: 08 95 ret + +000036d4 <_ZN7TwoWire9onRequestEPFvvE>: + 36d4: 70 93 11 04 sts 0x0411, r23 + 36d8: 60 93 10 04 sts 0x0410, r22 + 36dc: 08 95 ret + +000036de <_GLOBAL__I__ZN7TwoWire8rxBufferE>: + 36de: 10 92 17 04 sts 0x0417, r1 + 36e2: 10 92 16 04 sts 0x0416, r1 + 36e6: 88 ee ldi r24, 0xE8 ; 232 + 36e8: 93 e0 ldi r25, 0x03 ; 3 + 36ea: a0 e0 ldi r26, 0x00 ; 0 + 36ec: b0 e0 ldi r27, 0x00 ; 0 + 36ee: 80 93 18 04 sts 0x0418, r24 + 36f2: 90 93 19 04 sts 0x0419, r25 + 36f6: a0 93 1a 04 sts 0x041A, r26 + 36fa: b0 93 1b 04 sts 0x041B, r27 + 36fe: 82 eb ldi r24, 0xB2 ; 178 + 3700: 91 e0 ldi r25, 0x01 ; 1 + 3702: 90 93 15 04 sts 0x0415, r25 + 3706: 80 93 14 04 sts 0x0414, r24 + 370a: 08 95 ret + +0000370c <twi_init>: + 370c: 10 92 44 04 sts 0x0444, r1 + 3710: 82 e1 ldi r24, 0x12 ; 18 + 3712: 61 e0 ldi r22, 0x01 ; 1 + 3714: 0e 94 c3 18 call 0x3186 ; 0x3186 <digitalWrite> + 3718: 83 e1 ldi r24, 0x13 ; 19 + 371a: 61 e0 ldi r22, 0x01 ; 1 + 371c: 0e 94 c3 18 call 0x3186 ; 0x3186 <digitalWrite> + 3720: e9 eb ldi r30, 0xB9 ; 185 + 3722: f0 e0 ldi r31, 0x00 ; 0 + 3724: 80 81 ld r24, Z + 3726: 8e 7f andi r24, 0xFE ; 254 + 3728: 80 83 st Z, r24 + 372a: 80 81 ld r24, Z + 372c: 8d 7f andi r24, 0xFD ; 253 + 372e: 80 83 st Z, r24 + 3730: 80 e2 ldi r24, 0x20 ; 32 + 3732: 80 93 b8 00 sts 0x00B8, r24 + 3736: 85 e4 ldi r24, 0x45 ; 69 + 3738: 80 93 bc 00 sts 0x00BC, r24 + 373c: 08 95 ret + +0000373e <twi_setAddress>: + 373e: 88 0f add r24, r24 + 3740: 80 93 ba 00 sts 0x00BA, r24 + 3744: 08 95 ret + +00003746 <twi_readFrom>: + 3746: 41 32 cpi r20, 0x21 ; 33 + 3748: 88 f5 brcc .+98 ; 0x37ac <twi_readFrom+0x66> + 374a: 90 91 44 04 lds r25, 0x0444 + 374e: 99 23 and r25, r25 + 3750: e1 f7 brne .-8 ; 0x374a <twi_readFrom+0x4> + 3752: 91 e0 ldi r25, 0x01 ; 1 + 3754: 90 93 44 04 sts 0x0444, r25 + 3758: 9f ef ldi r25, 0xFF ; 255 + 375a: 90 93 43 04 sts 0x0443, r25 + 375e: 10 92 21 04 sts 0x0421, r1 + 3762: 94 2f mov r25, r20 + 3764: 91 50 subi r25, 0x01 ; 1 + 3766: 90 93 22 04 sts 0x0422, r25 + 376a: 88 0f add r24, r24 + 376c: 81 60 ori r24, 0x01 ; 1 + 376e: 80 93 20 04 sts 0x0420, r24 + 3772: 85 ee ldi r24, 0xE5 ; 229 + 3774: 80 93 bc 00 sts 0x00BC, r24 + 3778: 80 91 44 04 lds r24, 0x0444 + 377c: 81 30 cpi r24, 0x01 ; 1 + 377e: e1 f3 breq .-8 ; 0x3778 <twi_readFrom+0x32> + 3780: 80 91 21 04 lds r24, 0x0421 + 3784: 84 17 cp r24, r20 + 3786: 10 f4 brcc .+4 ; 0x378c <twi_readFrom+0x46> + 3788: 40 91 21 04 lds r20, 0x0421 + 378c: e3 e2 ldi r30, 0x23 ; 35 + 378e: f4 e0 ldi r31, 0x04 ; 4 + 3790: 26 2f mov r18, r22 + 3792: 37 2f mov r19, r23 + 3794: d9 01 movw r26, r18 + 3796: 24 2f mov r18, r20 + 3798: 30 e0 ldi r19, 0x00 ; 0 + 379a: 2e 0f add r18, r30 + 379c: 3f 1f adc r19, r31 + 379e: 02 c0 rjmp .+4 ; 0x37a4 <twi_readFrom+0x5e> + 37a0: 81 91 ld r24, Z+ + 37a2: 8d 93 st X+, r24 + 37a4: e2 17 cp r30, r18 + 37a6: f3 07 cpc r31, r19 + 37a8: d9 f7 brne .-10 ; 0x37a0 <twi_readFrom+0x5a> + 37aa: 01 c0 rjmp .+2 ; 0x37ae <twi_readFrom+0x68> + 37ac: 40 e0 ldi r20, 0x00 ; 0 + 37ae: 84 2f mov r24, r20 + 37b0: 08 95 ret + +000037b2 <twi_writeTo>: + 37b2: 41 32 cpi r20, 0x21 ; 33 + 37b4: b0 f5 brcc .+108 ; 0x3822 <twi_writeTo+0x70> + 37b6: 90 91 44 04 lds r25, 0x0444 + 37ba: 99 23 and r25, r25 + 37bc: e1 f7 brne .-8 ; 0x37b6 <twi_writeTo+0x4> + 37be: 92 e0 ldi r25, 0x02 ; 2 + 37c0: 90 93 44 04 sts 0x0444, r25 + 37c4: 9f ef ldi r25, 0xFF ; 255 + 37c6: 90 93 43 04 sts 0x0443, r25 + 37ca: 10 92 21 04 sts 0x0421, r1 + 37ce: 40 93 22 04 sts 0x0422, r20 + 37d2: db 01 movw r26, r22 + 37d4: e3 e2 ldi r30, 0x23 ; 35 + 37d6: f4 e0 ldi r31, 0x04 ; 4 + 37d8: 50 e0 ldi r21, 0x00 ; 0 + 37da: 4e 0f add r20, r30 + 37dc: 5f 1f adc r21, r31 + 37de: 02 c0 rjmp .+4 ; 0x37e4 <twi_writeTo+0x32> + 37e0: 9d 91 ld r25, X+ + 37e2: 91 93 st Z+, r25 + 37e4: e4 17 cp r30, r20 + 37e6: f5 07 cpc r31, r21 + 37e8: d9 f7 brne .-10 ; 0x37e0 <twi_writeTo+0x2e> + 37ea: 90 e0 ldi r25, 0x00 ; 0 + 37ec: 88 0f add r24, r24 + 37ee: 99 1f adc r25, r25 + 37f0: 80 93 20 04 sts 0x0420, r24 + 37f4: 85 ee ldi r24, 0xE5 ; 229 + 37f6: 80 93 bc 00 sts 0x00BC, r24 + 37fa: 22 23 and r18, r18 + 37fc: 21 f0 breq .+8 ; 0x3806 <twi_writeTo+0x54> + 37fe: 80 91 44 04 lds r24, 0x0444 + 3802: 82 30 cpi r24, 0x02 ; 2 + 3804: e1 f3 breq .-8 ; 0x37fe <twi_writeTo+0x4c> + 3806: 80 91 43 04 lds r24, 0x0443 + 380a: 8f 3f cpi r24, 0xFF ; 255 + 380c: 61 f0 breq .+24 ; 0x3826 <twi_writeTo+0x74> + 380e: 80 91 43 04 lds r24, 0x0443 + 3812: 80 32 cpi r24, 0x20 ; 32 + 3814: 51 f0 breq .+20 ; 0x382a <twi_writeTo+0x78> + 3816: 80 91 43 04 lds r24, 0x0443 + 381a: 80 33 cpi r24, 0x30 ; 48 + 381c: 41 f4 brne .+16 ; 0x382e <twi_writeTo+0x7c> + 381e: 83 e0 ldi r24, 0x03 ; 3 + 3820: 08 95 ret + 3822: 81 e0 ldi r24, 0x01 ; 1 + 3824: 08 95 ret + 3826: 80 e0 ldi r24, 0x00 ; 0 + 3828: 08 95 ret + 382a: 82 e0 ldi r24, 0x02 ; 2 + 382c: 08 95 ret + 382e: 84 e0 ldi r24, 0x04 ; 4 + 3830: 08 95 ret + +00003832 <twi_transmit>: + 3832: 61 32 cpi r22, 0x21 ; 33 + 3834: a0 f4 brcc .+40 ; 0x385e <twi_transmit+0x2c> + 3836: 20 91 44 04 lds r18, 0x0444 + 383a: 24 30 cpi r18, 0x04 ; 4 + 383c: 91 f4 brne .+36 ; 0x3862 <twi_transmit+0x30> + 383e: 60 93 69 04 sts 0x0469, r22 + 3842: dc 01 movw r26, r24 + 3844: ec e6 ldi r30, 0x6C ; 108 + 3846: f4 e0 ldi r31, 0x04 ; 4 + 3848: 70 e0 ldi r23, 0x00 ; 0 + 384a: 6e 0f add r22, r30 + 384c: 7f 1f adc r23, r31 + 384e: 02 c0 rjmp .+4 ; 0x3854 <twi_transmit+0x22> + 3850: 8d 91 ld r24, X+ + 3852: 81 93 st Z+, r24 + 3854: e6 17 cp r30, r22 + 3856: f7 07 cpc r31, r23 + 3858: d9 f7 brne .-10 ; 0x3850 <twi_transmit+0x1e> + 385a: 80 e0 ldi r24, 0x00 ; 0 + 385c: 08 95 ret + 385e: 81 e0 ldi r24, 0x01 ; 1 + 3860: 08 95 ret + 3862: 82 e0 ldi r24, 0x02 ; 2 + 3864: 08 95 ret + +00003866 <twi_attachSlaveRxEvent>: + 3866: 90 93 67 04 sts 0x0467, r25 + 386a: 80 93 66 04 sts 0x0466, r24 + 386e: 08 95 ret + +00003870 <twi_attachSlaveTxEvent>: + 3870: 90 93 6b 04 sts 0x046B, r25 + 3874: 80 93 6a 04 sts 0x046A, r24 + 3878: 08 95 ret + +0000387a <twi_reply>: + 387a: 88 23 and r24, r24 + 387c: 11 f0 breq .+4 ; 0x3882 <twi_reply+0x8> + 387e: 85 ec ldi r24, 0xC5 ; 197 + 3880: 01 c0 rjmp .+2 ; 0x3884 <twi_reply+0xa> + 3882: 85 e8 ldi r24, 0x85 ; 133 + 3884: 80 93 bc 00 sts 0x00BC, r24 + 3888: 08 95 ret + +0000388a <twi_stop>: + 388a: 85 ed ldi r24, 0xD5 ; 213 + 388c: 80 93 bc 00 sts 0x00BC, r24 + 3890: 80 91 bc 00 lds r24, 0x00BC + 3894: 84 fd sbrc r24, 4 + 3896: fc cf rjmp .-8 ; 0x3890 <twi_stop+0x6> + 3898: 10 92 44 04 sts 0x0444, r1 + 389c: 08 95 ret + +0000389e <twi_releaseBus>: + 389e: 85 ec ldi r24, 0xC5 ; 197 + 38a0: 80 93 bc 00 sts 0x00BC, r24 + 38a4: 10 92 44 04 sts 0x0444, r1 + 38a8: 08 95 ret + +000038aa <__vector_24>: + 38aa: 1f 92 push r1 + 38ac: 0f 92 push r0 + 38ae: 0f b6 in r0, 0x3f ; 63 + 38b0: 0f 92 push r0 + 38b2: 11 24 eor r1, r1 + 38b4: 2f 93 push r18 + 38b6: 3f 93 push r19 + 38b8: 4f 93 push r20 + 38ba: 5f 93 push r21 + 38bc: 6f 93 push r22 + 38be: 7f 93 push r23 + 38c0: 8f 93 push r24 + 38c2: 9f 93 push r25 + 38c4: af 93 push r26 + 38c6: bf 93 push r27 + 38c8: ef 93 push r30 + 38ca: ff 93 push r31 + 38cc: 80 91 b9 00 lds r24, 0x00B9 + 38d0: 90 e0 ldi r25, 0x00 ; 0 + 38d2: 88 7f andi r24, 0xF8 ; 248 + 38d4: 90 70 andi r25, 0x00 ; 0 + 38d6: 80 36 cpi r24, 0x60 ; 96 + 38d8: 91 05 cpc r25, r1 + 38da: 09 f4 brne .+2 ; 0x38de <__vector_24+0x34> + 38dc: c2 c0 rjmp .+388 ; 0x3a62 <__vector_24+0x1b8> + 38de: 81 36 cpi r24, 0x61 ; 97 + 38e0: 91 05 cpc r25, r1 + 38e2: e4 f5 brge .+120 ; 0x395c <__vector_24+0xb2> + 38e4: 88 32 cpi r24, 0x28 ; 40 + 38e6: 91 05 cpc r25, r1 + 38e8: 09 f4 brne .+2 ; 0x38ec <__vector_24+0x42> + 38ea: 7e c0 rjmp .+252 ; 0x39e8 <__vector_24+0x13e> + 38ec: 89 32 cpi r24, 0x29 ; 41 + 38ee: 91 05 cpc r25, r1 + 38f0: c4 f4 brge .+48 ; 0x3922 <__vector_24+0x78> + 38f2: 80 31 cpi r24, 0x10 ; 16 + 38f4: 91 05 cpc r25, r1 + 38f6: 09 f4 brne .+2 ; 0x38fa <__vector_24+0x50> + 38f8: 72 c0 rjmp .+228 ; 0x39de <__vector_24+0x134> + 38fa: 81 31 cpi r24, 0x11 ; 17 + 38fc: 91 05 cpc r25, r1 + 38fe: 44 f4 brge .+16 ; 0x3910 <__vector_24+0x66> + 3900: 00 97 sbiw r24, 0x00 ; 0 + 3902: 09 f4 brne .+2 ; 0x3906 <__vector_24+0x5c> + 3904: 13 c1 rjmp .+550 ; 0x3b2c <__vector_24+0x282> + 3906: 88 30 cpi r24, 0x08 ; 8 + 3908: 91 05 cpc r25, r1 + 390a: 09 f0 breq .+2 ; 0x390e <__vector_24+0x64> + 390c: 13 c1 rjmp .+550 ; 0x3b34 <__vector_24+0x28a> + 390e: 67 c0 rjmp .+206 ; 0x39de <__vector_24+0x134> + 3910: 88 31 cpi r24, 0x18 ; 24 + 3912: 91 05 cpc r25, r1 + 3914: 09 f4 brne .+2 ; 0x3918 <__vector_24+0x6e> + 3916: 68 c0 rjmp .+208 ; 0x39e8 <__vector_24+0x13e> + 3918: 80 32 cpi r24, 0x20 ; 32 + 391a: 91 05 cpc r25, r1 + 391c: 09 f0 breq .+2 ; 0x3920 <__vector_24+0x76> + 391e: 0a c1 rjmp .+532 ; 0x3b34 <__vector_24+0x28a> + 3920: 78 c0 rjmp .+240 ; 0x3a12 <__vector_24+0x168> + 3922: 80 34 cpi r24, 0x40 ; 64 + 3924: 91 05 cpc r25, r1 + 3926: 09 f4 brne .+2 ; 0x392a <__vector_24+0x80> + 3928: 8a c0 rjmp .+276 ; 0x3a3e <__vector_24+0x194> + 392a: 81 34 cpi r24, 0x41 ; 65 + 392c: 91 05 cpc r25, r1 + 392e: 4c f4 brge .+18 ; 0x3942 <__vector_24+0x98> + 3930: 80 33 cpi r24, 0x30 ; 48 + 3932: 91 05 cpc r25, r1 + 3934: 09 f4 brne .+2 ; 0x3938 <__vector_24+0x8e> + 3936: 6f c0 rjmp .+222 ; 0x3a16 <__vector_24+0x16c> + 3938: 88 33 cpi r24, 0x38 ; 56 + 393a: 91 05 cpc r25, r1 + 393c: 09 f0 breq .+2 ; 0x3940 <__vector_24+0x96> + 393e: fa c0 rjmp .+500 ; 0x3b34 <__vector_24+0x28a> + 3940: 6e c0 rjmp .+220 ; 0x3a1e <__vector_24+0x174> + 3942: 80 35 cpi r24, 0x50 ; 80 + 3944: 91 05 cpc r25, r1 + 3946: 09 f4 brne .+2 ; 0x394a <__vector_24+0xa0> + 3948: 6e c0 rjmp .+220 ; 0x3a26 <__vector_24+0x17c> + 394a: 88 35 cpi r24, 0x58 ; 88 + 394c: 91 05 cpc r25, r1 + 394e: 09 f4 brne .+2 ; 0x3952 <__vector_24+0xa8> + 3950: 7b c0 rjmp .+246 ; 0x3a48 <__vector_24+0x19e> + 3952: 88 34 cpi r24, 0x48 ; 72 + 3954: 91 05 cpc r25, r1 + 3956: 09 f0 breq .+2 ; 0x395a <__vector_24+0xb0> + 3958: ed c0 rjmp .+474 ; 0x3b34 <__vector_24+0x28a> + 395a: ea c0 rjmp .+468 ; 0x3b30 <__vector_24+0x286> + 395c: 88 39 cpi r24, 0x98 ; 152 + 395e: 91 05 cpc r25, r1 + 3960: 09 f4 brne .+2 ; 0x3964 <__vector_24+0xba> + 3962: da c0 rjmp .+436 ; 0x3b18 <__vector_24+0x26e> + 3964: 89 39 cpi r24, 0x99 ; 153 + 3966: 91 05 cpc r25, r1 + 3968: ec f4 brge .+58 ; 0x39a4 <__vector_24+0xfa> + 396a: 88 37 cpi r24, 0x78 ; 120 + 396c: 91 05 cpc r25, r1 + 396e: 09 f4 brne .+2 ; 0x3972 <__vector_24+0xc8> + 3970: 78 c0 rjmp .+240 ; 0x3a62 <__vector_24+0x1b8> + 3972: 89 37 cpi r24, 0x79 ; 121 + 3974: 91 05 cpc r25, r1 + 3976: 4c f4 brge .+18 ; 0x398a <__vector_24+0xe0> + 3978: 88 36 cpi r24, 0x68 ; 104 + 397a: 91 05 cpc r25, r1 + 397c: 09 f4 brne .+2 ; 0x3980 <__vector_24+0xd6> + 397e: 71 c0 rjmp .+226 ; 0x3a62 <__vector_24+0x1b8> + 3980: 80 37 cpi r24, 0x70 ; 112 + 3982: 91 05 cpc r25, r1 + 3984: 09 f0 breq .+2 ; 0x3988 <__vector_24+0xde> + 3986: d6 c0 rjmp .+428 ; 0x3b34 <__vector_24+0x28a> + 3988: 6c c0 rjmp .+216 ; 0x3a62 <__vector_24+0x1b8> + 398a: 88 38 cpi r24, 0x88 ; 136 + 398c: 91 05 cpc r25, r1 + 398e: 09 f4 brne .+2 ; 0x3992 <__vector_24+0xe8> + 3990: c3 c0 rjmp .+390 ; 0x3b18 <__vector_24+0x26e> + 3992: 80 39 cpi r24, 0x90 ; 144 + 3994: 91 05 cpc r25, r1 + 3996: 09 f4 brne .+2 ; 0x399a <__vector_24+0xf0> + 3998: 6a c0 rjmp .+212 ; 0x3a6e <__vector_24+0x1c4> + 399a: 80 38 cpi r24, 0x80 ; 128 + 399c: 91 05 cpc r25, r1 + 399e: 09 f0 breq .+2 ; 0x39a2 <__vector_24+0xf8> + 39a0: c9 c0 rjmp .+402 ; 0x3b34 <__vector_24+0x28a> + 39a2: 65 c0 rjmp .+202 ; 0x3a6e <__vector_24+0x1c4> + 39a4: 80 3b cpi r24, 0xB0 ; 176 + 39a6: 91 05 cpc r25, r1 + 39a8: 09 f4 brne .+2 ; 0x39ac <__vector_24+0x102> + 39aa: 8e c0 rjmp .+284 ; 0x3ac8 <__vector_24+0x21e> + 39ac: 81 3b cpi r24, 0xB1 ; 177 + 39ae: 91 05 cpc r25, r1 + 39b0: 4c f4 brge .+18 ; 0x39c4 <__vector_24+0x11a> + 39b2: 80 3a cpi r24, 0xA0 ; 160 + 39b4: 91 05 cpc r25, r1 + 39b6: 09 f4 brne .+2 ; 0x39ba <__vector_24+0x110> + 39b8: 6c c0 rjmp .+216 ; 0x3a92 <__vector_24+0x1e8> + 39ba: 88 3a cpi r24, 0xA8 ; 168 + 39bc: 91 05 cpc r25, r1 + 39be: 09 f0 breq .+2 ; 0x39c2 <__vector_24+0x118> + 39c0: b9 c0 rjmp .+370 ; 0x3b34 <__vector_24+0x28a> + 39c2: 82 c0 rjmp .+260 ; 0x3ac8 <__vector_24+0x21e> + 39c4: 80 3c cpi r24, 0xC0 ; 192 + 39c6: 91 05 cpc r25, r1 + 39c8: 09 f4 brne .+2 ; 0x39cc <__vector_24+0x122> + 39ca: aa c0 rjmp .+340 ; 0x3b20 <__vector_24+0x276> + 39cc: 88 3c cpi r24, 0xC8 ; 200 + 39ce: 91 05 cpc r25, r1 + 39d0: 09 f4 brne .+2 ; 0x39d4 <__vector_24+0x12a> + 39d2: a6 c0 rjmp .+332 ; 0x3b20 <__vector_24+0x276> + 39d4: 88 3b cpi r24, 0xB8 ; 184 + 39d6: 91 05 cpc r25, r1 + 39d8: 09 f0 breq .+2 ; 0x39dc <__vector_24+0x132> + 39da: ac c0 rjmp .+344 ; 0x3b34 <__vector_24+0x28a> + 39dc: 8a c0 rjmp .+276 ; 0x3af2 <__vector_24+0x248> + 39de: 80 91 20 04 lds r24, 0x0420 + 39e2: 80 93 bb 00 sts 0x00BB, r24 + 39e6: 13 c0 rjmp .+38 ; 0x3a0e <__vector_24+0x164> + 39e8: 90 91 21 04 lds r25, 0x0421 + 39ec: 80 91 22 04 lds r24, 0x0422 + 39f0: 98 17 cp r25, r24 + 39f2: 08 f0 brcs .+2 ; 0x39f6 <__vector_24+0x14c> + 39f4: 9d c0 rjmp .+314 ; 0x3b30 <__vector_24+0x286> + 39f6: 80 91 21 04 lds r24, 0x0421 + 39fa: e8 2f mov r30, r24 + 39fc: f0 e0 ldi r31, 0x00 ; 0 + 39fe: ed 5d subi r30, 0xDD ; 221 + 3a00: fb 4f sbci r31, 0xFB ; 251 + 3a02: 90 81 ld r25, Z + 3a04: 90 93 bb 00 sts 0x00BB, r25 + 3a08: 8f 5f subi r24, 0xFF ; 255 + 3a0a: 80 93 21 04 sts 0x0421, r24 + 3a0e: 81 e0 ldi r24, 0x01 ; 1 + 3a10: 84 c0 rjmp .+264 ; 0x3b1a <__vector_24+0x270> + 3a12: 80 e2 ldi r24, 0x20 ; 32 + 3a14: 01 c0 rjmp .+2 ; 0x3a18 <__vector_24+0x16e> + 3a16: 80 e3 ldi r24, 0x30 ; 48 + 3a18: 80 93 43 04 sts 0x0443, r24 + 3a1c: 89 c0 rjmp .+274 ; 0x3b30 <__vector_24+0x286> + 3a1e: 88 e3 ldi r24, 0x38 ; 56 + 3a20: 80 93 43 04 sts 0x0443, r24 + 3a24: 4e c0 rjmp .+156 ; 0x3ac2 <__vector_24+0x218> + 3a26: 80 91 21 04 lds r24, 0x0421 + 3a2a: 90 91 bb 00 lds r25, 0x00BB + 3a2e: e8 2f mov r30, r24 + 3a30: f0 e0 ldi r31, 0x00 ; 0 + 3a32: ed 5d subi r30, 0xDD ; 221 + 3a34: fb 4f sbci r31, 0xFB ; 251 + 3a36: 90 83 st Z, r25 + 3a38: 8f 5f subi r24, 0xFF ; 255 + 3a3a: 80 93 21 04 sts 0x0421, r24 + 3a3e: 90 91 21 04 lds r25, 0x0421 + 3a42: 80 91 22 04 lds r24, 0x0422 + 3a46: 65 c0 rjmp .+202 ; 0x3b12 <__vector_24+0x268> + 3a48: 80 91 21 04 lds r24, 0x0421 + 3a4c: 90 91 bb 00 lds r25, 0x00BB + 3a50: e8 2f mov r30, r24 + 3a52: f0 e0 ldi r31, 0x00 ; 0 + 3a54: ed 5d subi r30, 0xDD ; 221 + 3a56: fb 4f sbci r31, 0xFB ; 251 + 3a58: 90 83 st Z, r25 + 3a5a: 8f 5f subi r24, 0xFF ; 255 + 3a5c: 80 93 21 04 sts 0x0421, r24 + 3a60: 67 c0 rjmp .+206 ; 0x3b30 <__vector_24+0x286> + 3a62: 83 e0 ldi r24, 0x03 ; 3 + 3a64: 80 93 44 04 sts 0x0444, r24 + 3a68: 10 92 45 04 sts 0x0445, r1 + 3a6c: d0 cf rjmp .-96 ; 0x3a0e <__vector_24+0x164> + 3a6e: 80 91 45 04 lds r24, 0x0445 + 3a72: 80 32 cpi r24, 0x20 ; 32 + 3a74: 08 f0 brcs .+2 ; 0x3a78 <__vector_24+0x1ce> + 3a76: 50 c0 rjmp .+160 ; 0x3b18 <__vector_24+0x26e> + 3a78: 80 91 45 04 lds r24, 0x0445 + 3a7c: 90 91 bb 00 lds r25, 0x00BB + 3a80: e8 2f mov r30, r24 + 3a82: f0 e0 ldi r31, 0x00 ; 0 + 3a84: ea 5b subi r30, 0xBA ; 186 + 3a86: fb 4f sbci r31, 0xFB ; 251 + 3a88: 90 83 st Z, r25 + 3a8a: 8f 5f subi r24, 0xFF ; 255 + 3a8c: 80 93 45 04 sts 0x0445, r24 + 3a90: be cf rjmp .-132 ; 0x3a0e <__vector_24+0x164> + 3a92: 80 91 45 04 lds r24, 0x0445 + 3a96: 80 32 cpi r24, 0x20 ; 32 + 3a98: 30 f4 brcc .+12 ; 0x3aa6 <__vector_24+0x1fc> + 3a9a: e0 91 45 04 lds r30, 0x0445 + 3a9e: f0 e0 ldi r31, 0x00 ; 0 + 3aa0: ea 5b subi r30, 0xBA ; 186 + 3aa2: fb 4f sbci r31, 0xFB ; 251 + 3aa4: 10 82 st Z, r1 + 3aa6: 0e 94 45 1c call 0x388a ; 0x388a <twi_stop> + 3aaa: 60 91 45 04 lds r22, 0x0445 + 3aae: e0 91 66 04 lds r30, 0x0466 + 3ab2: f0 91 67 04 lds r31, 0x0467 + 3ab6: 86 e4 ldi r24, 0x46 ; 70 + 3ab8: 94 e0 ldi r25, 0x04 ; 4 + 3aba: 70 e0 ldi r23, 0x00 ; 0 + 3abc: 09 95 icall + 3abe: 10 92 45 04 sts 0x0445, r1 + 3ac2: 0e 94 4f 1c call 0x389e ; 0x389e <twi_releaseBus> + 3ac6: 36 c0 rjmp .+108 ; 0x3b34 <__vector_24+0x28a> + 3ac8: 84 e0 ldi r24, 0x04 ; 4 + 3aca: 80 93 44 04 sts 0x0444, r24 + 3ace: 10 92 68 04 sts 0x0468, r1 + 3ad2: 10 92 69 04 sts 0x0469, r1 + 3ad6: e0 91 6a 04 lds r30, 0x046A + 3ada: f0 91 6b 04 lds r31, 0x046B + 3ade: 09 95 icall + 3ae0: 80 91 69 04 lds r24, 0x0469 + 3ae4: 88 23 and r24, r24 + 3ae6: 29 f4 brne .+10 ; 0x3af2 <__vector_24+0x248> + 3ae8: 81 e0 ldi r24, 0x01 ; 1 + 3aea: 80 93 69 04 sts 0x0469, r24 + 3aee: 10 92 6c 04 sts 0x046C, r1 + 3af2: 80 91 68 04 lds r24, 0x0468 + 3af6: e8 2f mov r30, r24 + 3af8: f0 e0 ldi r31, 0x00 ; 0 + 3afa: e4 59 subi r30, 0x94 ; 148 + 3afc: fb 4f sbci r31, 0xFB ; 251 + 3afe: 90 81 ld r25, Z + 3b00: 90 93 bb 00 sts 0x00BB, r25 + 3b04: 8f 5f subi r24, 0xFF ; 255 + 3b06: 80 93 68 04 sts 0x0468, r24 + 3b0a: 90 91 68 04 lds r25, 0x0468 + 3b0e: 80 91 69 04 lds r24, 0x0469 + 3b12: 98 17 cp r25, r24 + 3b14: 08 f4 brcc .+2 ; 0x3b18 <__vector_24+0x26e> + 3b16: 7b cf rjmp .-266 ; 0x3a0e <__vector_24+0x164> + 3b18: 80 e0 ldi r24, 0x00 ; 0 + 3b1a: 0e 94 3d 1c call 0x387a ; 0x387a <twi_reply> + 3b1e: 0a c0 rjmp .+20 ; 0x3b34 <__vector_24+0x28a> + 3b20: 81 e0 ldi r24, 0x01 ; 1 + 3b22: 0e 94 3d 1c call 0x387a ; 0x387a <twi_reply> + 3b26: 10 92 44 04 sts 0x0444, r1 + 3b2a: 04 c0 rjmp .+8 ; 0x3b34 <__vector_24+0x28a> + 3b2c: 10 92 43 04 sts 0x0443, r1 + 3b30: 0e 94 45 1c call 0x388a ; 0x388a <twi_stop> + 3b34: ff 91 pop r31 + 3b36: ef 91 pop r30 + 3b38: bf 91 pop r27 + 3b3a: af 91 pop r26 + 3b3c: 9f 91 pop r25 + 3b3e: 8f 91 pop r24 + 3b40: 7f 91 pop r23 + 3b42: 6f 91 pop r22 + 3b44: 5f 91 pop r21 + 3b46: 4f 91 pop r20 + 3b48: 3f 91 pop r19 + 3b4a: 2f 91 pop r18 + 3b4c: 0f 90 pop r0 + 3b4e: 0f be out 0x3f, r0 ; 63 + 3b50: 0f 90 pop r0 + 3b52: 1f 90 pop r1 + 3b54: 18 95 reti + +00003b56 <__fixunssfsi>: + 3b56: ef 92 push r14 + 3b58: ff 92 push r15 + 3b5a: 0f 93 push r16 + 3b5c: 1f 93 push r17 + 3b5e: 7b 01 movw r14, r22 + 3b60: 8c 01 movw r16, r24 + 3b62: 20 e0 ldi r18, 0x00 ; 0 + 3b64: 30 e0 ldi r19, 0x00 ; 0 + 3b66: 40 e0 ldi r20, 0x00 ; 0 + 3b68: 5f e4 ldi r21, 0x4F ; 79 + 3b6a: 0e 94 27 21 call 0x424e ; 0x424e <__gesf2> + 3b6e: 87 fd sbrc r24, 7 + 3b70: 11 c0 rjmp .+34 ; 0x3b94 <__fixunssfsi+0x3e> + 3b72: c8 01 movw r24, r16 + 3b74: b7 01 movw r22, r14 + 3b76: 20 e0 ldi r18, 0x00 ; 0 + 3b78: 30 e0 ldi r19, 0x00 ; 0 + 3b7a: 40 e0 ldi r20, 0x00 ; 0 + 3b7c: 5f e4 ldi r21, 0x4F ; 79 + 3b7e: 0e 94 4e 1f call 0x3e9c ; 0x3e9c <__subsf3> + 3b82: 0e 94 e7 21 call 0x43ce ; 0x43ce <__fixsfsi> + 3b86: 9b 01 movw r18, r22 + 3b88: ac 01 movw r20, r24 + 3b8a: 20 50 subi r18, 0x00 ; 0 + 3b8c: 30 40 sbci r19, 0x00 ; 0 + 3b8e: 40 40 sbci r20, 0x00 ; 0 + 3b90: 50 48 sbci r21, 0x80 ; 128 + 3b92: 06 c0 rjmp .+12 ; 0x3ba0 <__fixunssfsi+0x4a> + 3b94: c8 01 movw r24, r16 + 3b96: b7 01 movw r22, r14 + 3b98: 0e 94 e7 21 call 0x43ce ; 0x43ce <__fixsfsi> + 3b9c: 9b 01 movw r18, r22 + 3b9e: ac 01 movw r20, r24 + 3ba0: b9 01 movw r22, r18 + 3ba2: ca 01 movw r24, r20 + 3ba4: 1f 91 pop r17 + 3ba6: 0f 91 pop r16 + 3ba8: ff 90 pop r15 + 3baa: ef 90 pop r14 + 3bac: 08 95 ret + +00003bae <_fpadd_parts>: + 3bae: a0 e0 ldi r26, 0x00 ; 0 + 3bb0: b0 e0 ldi r27, 0x00 ; 0 + 3bb2: ed ed ldi r30, 0xDD ; 221 + 3bb4: fd e1 ldi r31, 0x1D ; 29 + 3bb6: 0c 94 22 25 jmp 0x4a44 ; 0x4a44 <__prologue_saves__+0x8> + 3bba: fc 01 movw r30, r24 + 3bbc: ea 01 movw r28, r20 + 3bbe: 80 81 ld r24, Z + 3bc0: 82 30 cpi r24, 0x02 ; 2 + 3bc2: 08 f4 brcc .+2 ; 0x3bc6 <_fpadd_parts+0x18> + 3bc4: 38 c1 rjmp .+624 ; 0x3e36 <_fpadd_parts+0x288> + 3bc6: db 01 movw r26, r22 + 3bc8: 9c 91 ld r25, X + 3bca: 92 30 cpi r25, 0x02 ; 2 + 3bcc: 08 f4 brcc .+2 ; 0x3bd0 <_fpadd_parts+0x22> + 3bce: 30 c1 rjmp .+608 ; 0x3e30 <_fpadd_parts+0x282> + 3bd0: 84 30 cpi r24, 0x04 ; 4 + 3bd2: 59 f4 brne .+22 ; 0x3bea <_fpadd_parts+0x3c> + 3bd4: 94 30 cpi r25, 0x04 ; 4 + 3bd6: 09 f0 breq .+2 ; 0x3bda <_fpadd_parts+0x2c> + 3bd8: 2e c1 rjmp .+604 ; 0x3e36 <_fpadd_parts+0x288> + 3bda: 91 81 ldd r25, Z+1 ; 0x01 + 3bdc: 11 96 adiw r26, 0x01 ; 1 + 3bde: 8c 91 ld r24, X + 3be0: 11 97 sbiw r26, 0x01 ; 1 + 3be2: 98 17 cp r25, r24 + 3be4: 09 f0 breq .+2 ; 0x3be8 <_fpadd_parts+0x3a> + 3be6: 21 c1 rjmp .+578 ; 0x3e2a <_fpadd_parts+0x27c> + 3be8: 26 c1 rjmp .+588 ; 0x3e36 <_fpadd_parts+0x288> + 3bea: 94 30 cpi r25, 0x04 ; 4 + 3bec: 09 f4 brne .+2 ; 0x3bf0 <_fpadd_parts+0x42> + 3bee: 20 c1 rjmp .+576 ; 0x3e30 <_fpadd_parts+0x282> + 3bf0: 92 30 cpi r25, 0x02 ; 2 + 3bf2: b1 f4 brne .+44 ; 0x3c20 <_fpadd_parts+0x72> + 3bf4: 82 30 cpi r24, 0x02 ; 2 + 3bf6: 09 f0 breq .+2 ; 0x3bfa <_fpadd_parts+0x4c> + 3bf8: 1e c1 rjmp .+572 ; 0x3e36 <_fpadd_parts+0x288> + 3bfa: ca 01 movw r24, r20 + 3bfc: af 01 movw r20, r30 + 3bfe: 28 e0 ldi r18, 0x08 ; 8 + 3c00: da 01 movw r26, r20 + 3c02: 0d 90 ld r0, X+ + 3c04: ad 01 movw r20, r26 + 3c06: dc 01 movw r26, r24 + 3c08: 0d 92 st X+, r0 + 3c0a: cd 01 movw r24, r26 + 3c0c: 21 50 subi r18, 0x01 ; 1 + 3c0e: c1 f7 brne .-16 ; 0x3c00 <_fpadd_parts+0x52> + 3c10: db 01 movw r26, r22 + 3c12: 11 96 adiw r26, 0x01 ; 1 + 3c14: 8c 91 ld r24, X + 3c16: 11 97 sbiw r26, 0x01 ; 1 + 3c18: 91 81 ldd r25, Z+1 ; 0x01 + 3c1a: 89 23 and r24, r25 + 3c1c: 89 83 std Y+1, r24 ; 0x01 + 3c1e: 0a c1 rjmp .+532 ; 0x3e34 <_fpadd_parts+0x286> + 3c20: 82 30 cpi r24, 0x02 ; 2 + 3c22: 09 f4 brne .+2 ; 0x3c26 <_fpadd_parts+0x78> + 3c24: 05 c1 rjmp .+522 ; 0x3e30 <_fpadd_parts+0x282> + 3c26: c2 80 ldd r12, Z+2 ; 0x02 + 3c28: d3 80 ldd r13, Z+3 ; 0x03 + 3c2a: db 01 movw r26, r22 + 3c2c: 12 96 adiw r26, 0x02 ; 2 + 3c2e: 6d 90 ld r6, X+ + 3c30: 7c 90 ld r7, X + 3c32: 13 97 sbiw r26, 0x03 ; 3 + 3c34: 24 81 ldd r18, Z+4 ; 0x04 + 3c36: 35 81 ldd r19, Z+5 ; 0x05 + 3c38: 46 81 ldd r20, Z+6 ; 0x06 + 3c3a: 57 81 ldd r21, Z+7 ; 0x07 + 3c3c: 14 96 adiw r26, 0x04 ; 4 + 3c3e: ed 90 ld r14, X+ + 3c40: fd 90 ld r15, X+ + 3c42: 0d 91 ld r16, X+ + 3c44: 1c 91 ld r17, X + 3c46: 17 97 sbiw r26, 0x07 ; 7 + 3c48: c6 01 movw r24, r12 + 3c4a: 86 19 sub r24, r6 + 3c4c: 97 09 sbc r25, r7 + 3c4e: 5c 01 movw r10, r24 + 3c50: 97 ff sbrs r25, 7 + 3c52: 04 c0 rjmp .+8 ; 0x3c5c <_fpadd_parts+0xae> + 3c54: aa 24 eor r10, r10 + 3c56: bb 24 eor r11, r11 + 3c58: a8 1a sub r10, r24 + 3c5a: b9 0a sbc r11, r25 + 3c5c: b0 e2 ldi r27, 0x20 ; 32 + 3c5e: ab 16 cp r10, r27 + 3c60: b1 04 cpc r11, r1 + 3c62: 0c f0 brlt .+2 ; 0x3c66 <_fpadd_parts+0xb8> + 3c64: 61 c0 rjmp .+194 ; 0x3d28 <_fpadd_parts+0x17a> + 3c66: 18 16 cp r1, r24 + 3c68: 19 06 cpc r1, r25 + 3c6a: 6c f5 brge .+90 ; 0x3cc6 <_fpadd_parts+0x118> + 3c6c: 37 01 movw r6, r14 + 3c6e: 48 01 movw r8, r16 + 3c70: 0a 2c mov r0, r10 + 3c72: 04 c0 rjmp .+8 ; 0x3c7c <_fpadd_parts+0xce> + 3c74: 96 94 lsr r9 + 3c76: 87 94 ror r8 + 3c78: 77 94 ror r7 + 3c7a: 67 94 ror r6 + 3c7c: 0a 94 dec r0 + 3c7e: d2 f7 brpl .-12 ; 0x3c74 <_fpadd_parts+0xc6> + 3c80: 81 e0 ldi r24, 0x01 ; 1 + 3c82: 90 e0 ldi r25, 0x00 ; 0 + 3c84: a0 e0 ldi r26, 0x00 ; 0 + 3c86: b0 e0 ldi r27, 0x00 ; 0 + 3c88: 0a 2c mov r0, r10 + 3c8a: 04 c0 rjmp .+8 ; 0x3c94 <_fpadd_parts+0xe6> + 3c8c: 88 0f add r24, r24 + 3c8e: 99 1f adc r25, r25 + 3c90: aa 1f adc r26, r26 + 3c92: bb 1f adc r27, r27 + 3c94: 0a 94 dec r0 + 3c96: d2 f7 brpl .-12 ; 0x3c8c <_fpadd_parts+0xde> + 3c98: 01 97 sbiw r24, 0x01 ; 1 + 3c9a: a1 09 sbc r26, r1 + 3c9c: b1 09 sbc r27, r1 + 3c9e: 8e 21 and r24, r14 + 3ca0: 9f 21 and r25, r15 + 3ca2: a0 23 and r26, r16 + 3ca4: b1 23 and r27, r17 + 3ca6: ee 24 eor r14, r14 + 3ca8: ff 24 eor r15, r15 + 3caa: 87 01 movw r16, r14 + 3cac: e3 94 inc r14 + 3cae: 00 97 sbiw r24, 0x00 ; 0 + 3cb0: a1 05 cpc r26, r1 + 3cb2: b1 05 cpc r27, r1 + 3cb4: 19 f4 brne .+6 ; 0x3cbc <_fpadd_parts+0x10e> + 3cb6: ee 24 eor r14, r14 + 3cb8: ff 24 eor r15, r15 + 3cba: 87 01 movw r16, r14 + 3cbc: e6 28 or r14, r6 + 3cbe: f7 28 or r15, r7 + 3cc0: 08 29 or r16, r8 + 3cc2: 19 29 or r17, r9 + 3cc4: 3c c0 rjmp .+120 ; 0x3d3e <_fpadd_parts+0x190> + 3cc6: 00 97 sbiw r24, 0x00 ; 0 + 3cc8: d1 f1 breq .+116 ; 0x3d3e <_fpadd_parts+0x190> + 3cca: ca 0c add r12, r10 + 3ccc: db 1c adc r13, r11 + 3cce: 39 01 movw r6, r18 + 3cd0: 4a 01 movw r8, r20 + 3cd2: 0a 2c mov r0, r10 + 3cd4: 04 c0 rjmp .+8 ; 0x3cde <_fpadd_parts+0x130> + 3cd6: 96 94 lsr r9 + 3cd8: 87 94 ror r8 + 3cda: 77 94 ror r7 + 3cdc: 67 94 ror r6 + 3cde: 0a 94 dec r0 + 3ce0: d2 f7 brpl .-12 ; 0x3cd6 <_fpadd_parts+0x128> + 3ce2: 81 e0 ldi r24, 0x01 ; 1 + 3ce4: 90 e0 ldi r25, 0x00 ; 0 + 3ce6: a0 e0 ldi r26, 0x00 ; 0 + 3ce8: b0 e0 ldi r27, 0x00 ; 0 + 3cea: 0a 2c mov r0, r10 + 3cec: 04 c0 rjmp .+8 ; 0x3cf6 <_fpadd_parts+0x148> + 3cee: 88 0f add r24, r24 + 3cf0: 99 1f adc r25, r25 + 3cf2: aa 1f adc r26, r26 + 3cf4: bb 1f adc r27, r27 + 3cf6: 0a 94 dec r0 + 3cf8: d2 f7 brpl .-12 ; 0x3cee <_fpadd_parts+0x140> + 3cfa: 01 97 sbiw r24, 0x01 ; 1 + 3cfc: a1 09 sbc r26, r1 + 3cfe: b1 09 sbc r27, r1 + 3d00: 82 23 and r24, r18 + 3d02: 93 23 and r25, r19 + 3d04: a4 23 and r26, r20 + 3d06: b5 23 and r27, r21 + 3d08: 21 e0 ldi r18, 0x01 ; 1 + 3d0a: 30 e0 ldi r19, 0x00 ; 0 + 3d0c: 40 e0 ldi r20, 0x00 ; 0 + 3d0e: 50 e0 ldi r21, 0x00 ; 0 + 3d10: 00 97 sbiw r24, 0x00 ; 0 + 3d12: a1 05 cpc r26, r1 + 3d14: b1 05 cpc r27, r1 + 3d16: 19 f4 brne .+6 ; 0x3d1e <_fpadd_parts+0x170> + 3d18: 20 e0 ldi r18, 0x00 ; 0 + 3d1a: 30 e0 ldi r19, 0x00 ; 0 + 3d1c: a9 01 movw r20, r18 + 3d1e: 26 29 or r18, r6 + 3d20: 37 29 or r19, r7 + 3d22: 48 29 or r20, r8 + 3d24: 59 29 or r21, r9 + 3d26: 0b c0 rjmp .+22 ; 0x3d3e <_fpadd_parts+0x190> + 3d28: 6c 14 cp r6, r12 + 3d2a: 7d 04 cpc r7, r13 + 3d2c: 24 f4 brge .+8 ; 0x3d36 <_fpadd_parts+0x188> + 3d2e: ee 24 eor r14, r14 + 3d30: ff 24 eor r15, r15 + 3d32: 87 01 movw r16, r14 + 3d34: 04 c0 rjmp .+8 ; 0x3d3e <_fpadd_parts+0x190> + 3d36: 63 01 movw r12, r6 + 3d38: 20 e0 ldi r18, 0x00 ; 0 + 3d3a: 30 e0 ldi r19, 0x00 ; 0 + 3d3c: a9 01 movw r20, r18 + 3d3e: 81 81 ldd r24, Z+1 ; 0x01 + 3d40: fb 01 movw r30, r22 + 3d42: 91 81 ldd r25, Z+1 ; 0x01 + 3d44: 89 17 cp r24, r25 + 3d46: 09 f4 brne .+2 ; 0x3d4a <_fpadd_parts+0x19c> + 3d48: 45 c0 rjmp .+138 ; 0x3dd4 <_fpadd_parts+0x226> + 3d4a: 88 23 and r24, r24 + 3d4c: 49 f0 breq .+18 ; 0x3d60 <_fpadd_parts+0x1b2> + 3d4e: d8 01 movw r26, r16 + 3d50: c7 01 movw r24, r14 + 3d52: 82 1b sub r24, r18 + 3d54: 93 0b sbc r25, r19 + 3d56: a4 0b sbc r26, r20 + 3d58: b5 0b sbc r27, r21 + 3d5a: 9c 01 movw r18, r24 + 3d5c: ad 01 movw r20, r26 + 3d5e: 04 c0 rjmp .+8 ; 0x3d68 <_fpadd_parts+0x1ba> + 3d60: 2e 19 sub r18, r14 + 3d62: 3f 09 sbc r19, r15 + 3d64: 40 0b sbc r20, r16 + 3d66: 51 0b sbc r21, r17 + 3d68: 57 fd sbrc r21, 7 + 3d6a: 04 c0 rjmp .+8 ; 0x3d74 <_fpadd_parts+0x1c6> + 3d6c: 19 82 std Y+1, r1 ; 0x01 + 3d6e: db 82 std Y+3, r13 ; 0x03 + 3d70: ca 82 std Y+2, r12 ; 0x02 + 3d72: 0b c0 rjmp .+22 ; 0x3d8a <_fpadd_parts+0x1dc> + 3d74: 81 e0 ldi r24, 0x01 ; 1 + 3d76: 89 83 std Y+1, r24 ; 0x01 + 3d78: db 82 std Y+3, r13 ; 0x03 + 3d7a: ca 82 std Y+2, r12 ; 0x02 + 3d7c: 50 95 com r21 + 3d7e: 40 95 com r20 + 3d80: 30 95 com r19 + 3d82: 21 95 neg r18 + 3d84: 3f 4f sbci r19, 0xFF ; 255 + 3d86: 4f 4f sbci r20, 0xFF ; 255 + 3d88: 5f 4f sbci r21, 0xFF ; 255 + 3d8a: 2c 83 std Y+4, r18 ; 0x04 + 3d8c: 3d 83 std Y+5, r19 ; 0x05 + 3d8e: 4e 83 std Y+6, r20 ; 0x06 + 3d90: 5f 83 std Y+7, r21 ; 0x07 + 3d92: 0d c0 rjmp .+26 ; 0x3dae <_fpadd_parts+0x200> + 3d94: 88 0f add r24, r24 + 3d96: 99 1f adc r25, r25 + 3d98: aa 1f adc r26, r26 + 3d9a: bb 1f adc r27, r27 + 3d9c: 8c 83 std Y+4, r24 ; 0x04 + 3d9e: 9d 83 std Y+5, r25 ; 0x05 + 3da0: ae 83 std Y+6, r26 ; 0x06 + 3da2: bf 83 std Y+7, r27 ; 0x07 + 3da4: 8a 81 ldd r24, Y+2 ; 0x02 + 3da6: 9b 81 ldd r25, Y+3 ; 0x03 + 3da8: 01 97 sbiw r24, 0x01 ; 1 + 3daa: 9b 83 std Y+3, r25 ; 0x03 + 3dac: 8a 83 std Y+2, r24 ; 0x02 + 3dae: 8c 81 ldd r24, Y+4 ; 0x04 + 3db0: 9d 81 ldd r25, Y+5 ; 0x05 + 3db2: ae 81 ldd r26, Y+6 ; 0x06 + 3db4: bf 81 ldd r27, Y+7 ; 0x07 + 3db6: 9c 01 movw r18, r24 + 3db8: ad 01 movw r20, r26 + 3dba: 21 50 subi r18, 0x01 ; 1 + 3dbc: 30 40 sbci r19, 0x00 ; 0 + 3dbe: 40 40 sbci r20, 0x00 ; 0 + 3dc0: 50 40 sbci r21, 0x00 ; 0 + 3dc2: 2f 3f cpi r18, 0xFF ; 255 + 3dc4: ef ef ldi r30, 0xFF ; 255 + 3dc6: 3e 07 cpc r19, r30 + 3dc8: ef ef ldi r30, 0xFF ; 255 + 3dca: 4e 07 cpc r20, r30 + 3dcc: ef e3 ldi r30, 0x3F ; 63 + 3dce: 5e 07 cpc r21, r30 + 3dd0: 08 f3 brcs .-62 ; 0x3d94 <_fpadd_parts+0x1e6> + 3dd2: 0b c0 rjmp .+22 ; 0x3dea <_fpadd_parts+0x23c> + 3dd4: 89 83 std Y+1, r24 ; 0x01 + 3dd6: db 82 std Y+3, r13 ; 0x03 + 3dd8: ca 82 std Y+2, r12 ; 0x02 + 3dda: 2e 0d add r18, r14 + 3ddc: 3f 1d adc r19, r15 + 3dde: 40 1f adc r20, r16 + 3de0: 51 1f adc r21, r17 + 3de2: 2c 83 std Y+4, r18 ; 0x04 + 3de4: 3d 83 std Y+5, r19 ; 0x05 + 3de6: 4e 83 std Y+6, r20 ; 0x06 + 3de8: 5f 83 std Y+7, r21 ; 0x07 + 3dea: 83 e0 ldi r24, 0x03 ; 3 + 3dec: 88 83 st Y, r24 + 3dee: 2c 81 ldd r18, Y+4 ; 0x04 + 3df0: 3d 81 ldd r19, Y+5 ; 0x05 + 3df2: 4e 81 ldd r20, Y+6 ; 0x06 + 3df4: 5f 81 ldd r21, Y+7 ; 0x07 + 3df6: 57 ff sbrs r21, 7 + 3df8: 1d c0 rjmp .+58 ; 0x3e34 <_fpadd_parts+0x286> + 3dfa: da 01 movw r26, r20 + 3dfc: c9 01 movw r24, r18 + 3dfe: 81 70 andi r24, 0x01 ; 1 + 3e00: 90 70 andi r25, 0x00 ; 0 + 3e02: a0 70 andi r26, 0x00 ; 0 + 3e04: b0 70 andi r27, 0x00 ; 0 + 3e06: 56 95 lsr r21 + 3e08: 47 95 ror r20 + 3e0a: 37 95 ror r19 + 3e0c: 27 95 ror r18 + 3e0e: 82 2b or r24, r18 + 3e10: 93 2b or r25, r19 + 3e12: a4 2b or r26, r20 + 3e14: b5 2b or r27, r21 + 3e16: 8c 83 std Y+4, r24 ; 0x04 + 3e18: 9d 83 std Y+5, r25 ; 0x05 + 3e1a: ae 83 std Y+6, r26 ; 0x06 + 3e1c: bf 83 std Y+7, r27 ; 0x07 + 3e1e: 8a 81 ldd r24, Y+2 ; 0x02 + 3e20: 9b 81 ldd r25, Y+3 ; 0x03 + 3e22: 01 96 adiw r24, 0x01 ; 1 + 3e24: 9b 83 std Y+3, r25 ; 0x03 + 3e26: 8a 83 std Y+2, r24 ; 0x02 + 3e28: 05 c0 rjmp .+10 ; 0x3e34 <_fpadd_parts+0x286> + 3e2a: ee ec ldi r30, 0xCE ; 206 + 3e2c: f1 e0 ldi r31, 0x01 ; 1 + 3e2e: 03 c0 rjmp .+6 ; 0x3e36 <_fpadd_parts+0x288> + 3e30: fb 01 movw r30, r22 + 3e32: 01 c0 rjmp .+2 ; 0x3e36 <_fpadd_parts+0x288> + 3e34: fe 01 movw r30, r28 + 3e36: cf 01 movw r24, r30 + 3e38: cd b7 in r28, 0x3d ; 61 + 3e3a: de b7 in r29, 0x3e ; 62 + 3e3c: ee e0 ldi r30, 0x0E ; 14 + 3e3e: 0c 94 3e 25 jmp 0x4a7c ; 0x4a7c <__epilogue_restores__+0x8> + +00003e42 <__addsf3>: + 3e42: a0 e2 ldi r26, 0x20 ; 32 + 3e44: b0 e0 ldi r27, 0x00 ; 0 + 3e46: e7 e2 ldi r30, 0x27 ; 39 + 3e48: ff e1 ldi r31, 0x1F ; 31 + 3e4a: 0c 94 2a 25 jmp 0x4a54 ; 0x4a54 <__prologue_saves__+0x18> + 3e4e: 69 83 std Y+1, r22 ; 0x01 + 3e50: 7a 83 std Y+2, r23 ; 0x02 + 3e52: 8b 83 std Y+3, r24 ; 0x03 + 3e54: 9c 83 std Y+4, r25 ; 0x04 + 3e56: 2d 83 std Y+5, r18 ; 0x05 + 3e58: 3e 83 std Y+6, r19 ; 0x06 + 3e5a: 4f 83 std Y+7, r20 ; 0x07 + 3e5c: 58 87 std Y+8, r21 ; 0x08 + 3e5e: 89 e0 ldi r24, 0x09 ; 9 + 3e60: e8 2e mov r14, r24 + 3e62: f1 2c mov r15, r1 + 3e64: ec 0e add r14, r28 + 3e66: fd 1e adc r15, r29 + 3e68: ce 01 movw r24, r28 + 3e6a: 01 96 adiw r24, 0x01 ; 1 + 3e6c: b7 01 movw r22, r14 + 3e6e: 0e 94 d9 23 call 0x47b2 ; 0x47b2 <__unpack_f> + 3e72: 8e 01 movw r16, r28 + 3e74: 0f 5e subi r16, 0xEF ; 239 + 3e76: 1f 4f sbci r17, 0xFF ; 255 + 3e78: ce 01 movw r24, r28 + 3e7a: 05 96 adiw r24, 0x05 ; 5 + 3e7c: b8 01 movw r22, r16 + 3e7e: 0e 94 d9 23 call 0x47b2 ; 0x47b2 <__unpack_f> + 3e82: c7 01 movw r24, r14 + 3e84: b8 01 movw r22, r16 + 3e86: ae 01 movw r20, r28 + 3e88: 47 5e subi r20, 0xE7 ; 231 + 3e8a: 5f 4f sbci r21, 0xFF ; 255 + 3e8c: 0e 94 d7 1d call 0x3bae ; 0x3bae <_fpadd_parts> + 3e90: 0e 94 0b 23 call 0x4616 ; 0x4616 <__pack_f> + 3e94: a0 96 adiw r28, 0x20 ; 32 + 3e96: e6 e0 ldi r30, 0x06 ; 6 + 3e98: 0c 94 46 25 jmp 0x4a8c ; 0x4a8c <__epilogue_restores__+0x18> + +00003e9c <__subsf3>: + 3e9c: a0 e2 ldi r26, 0x20 ; 32 + 3e9e: b0 e0 ldi r27, 0x00 ; 0 + 3ea0: e4 e5 ldi r30, 0x54 ; 84 + 3ea2: ff e1 ldi r31, 0x1F ; 31 + 3ea4: 0c 94 2a 25 jmp 0x4a54 ; 0x4a54 <__prologue_saves__+0x18> + 3ea8: 69 83 std Y+1, r22 ; 0x01 + 3eaa: 7a 83 std Y+2, r23 ; 0x02 + 3eac: 8b 83 std Y+3, r24 ; 0x03 + 3eae: 9c 83 std Y+4, r25 ; 0x04 + 3eb0: 2d 83 std Y+5, r18 ; 0x05 + 3eb2: 3e 83 std Y+6, r19 ; 0x06 + 3eb4: 4f 83 std Y+7, r20 ; 0x07 + 3eb6: 58 87 std Y+8, r21 ; 0x08 + 3eb8: 8e 01 movw r16, r28 + 3eba: 07 5f subi r16, 0xF7 ; 247 + 3ebc: 1f 4f sbci r17, 0xFF ; 255 + 3ebe: ce 01 movw r24, r28 + 3ec0: 01 96 adiw r24, 0x01 ; 1 + 3ec2: b8 01 movw r22, r16 + 3ec4: 0e 94 d9 23 call 0x47b2 ; 0x47b2 <__unpack_f> + 3ec8: 91 e1 ldi r25, 0x11 ; 17 + 3eca: e9 2e mov r14, r25 + 3ecc: f1 2c mov r15, r1 + 3ece: ec 0e add r14, r28 + 3ed0: fd 1e adc r15, r29 + 3ed2: ce 01 movw r24, r28 + 3ed4: 05 96 adiw r24, 0x05 ; 5 + 3ed6: b7 01 movw r22, r14 + 3ed8: 0e 94 d9 23 call 0x47b2 ; 0x47b2 <__unpack_f> + 3edc: 8a 89 ldd r24, Y+18 ; 0x12 + 3ede: 91 e0 ldi r25, 0x01 ; 1 + 3ee0: 89 27 eor r24, r25 + 3ee2: 8a 8b std Y+18, r24 ; 0x12 + 3ee4: c8 01 movw r24, r16 + 3ee6: b7 01 movw r22, r14 + 3ee8: ae 01 movw r20, r28 + 3eea: 47 5e subi r20, 0xE7 ; 231 + 3eec: 5f 4f sbci r21, 0xFF ; 255 + 3eee: 0e 94 d7 1d call 0x3bae ; 0x3bae <_fpadd_parts> + 3ef2: 0e 94 0b 23 call 0x4616 ; 0x4616 <__pack_f> + 3ef6: a0 96 adiw r28, 0x20 ; 32 + 3ef8: e6 e0 ldi r30, 0x06 ; 6 + 3efa: 0c 94 46 25 jmp 0x4a8c ; 0x4a8c <__epilogue_restores__+0x18> + +00003efe <__mulsf3>: + 3efe: a0 e2 ldi r26, 0x20 ; 32 + 3f00: b0 e0 ldi r27, 0x00 ; 0 + 3f02: e5 e8 ldi r30, 0x85 ; 133 + 3f04: ff e1 ldi r31, 0x1F ; 31 + 3f06: 0c 94 1e 25 jmp 0x4a3c ; 0x4a3c <__prologue_saves__> + 3f0a: 69 83 std Y+1, r22 ; 0x01 + 3f0c: 7a 83 std Y+2, r23 ; 0x02 + 3f0e: 8b 83 std Y+3, r24 ; 0x03 + 3f10: 9c 83 std Y+4, r25 ; 0x04 + 3f12: 2d 83 std Y+5, r18 ; 0x05 + 3f14: 3e 83 std Y+6, r19 ; 0x06 + 3f16: 4f 83 std Y+7, r20 ; 0x07 + 3f18: 58 87 std Y+8, r21 ; 0x08 + 3f1a: ce 01 movw r24, r28 + 3f1c: 01 96 adiw r24, 0x01 ; 1 + 3f1e: be 01 movw r22, r28 + 3f20: 67 5f subi r22, 0xF7 ; 247 + 3f22: 7f 4f sbci r23, 0xFF ; 255 + 3f24: 0e 94 d9 23 call 0x47b2 ; 0x47b2 <__unpack_f> + 3f28: ce 01 movw r24, r28 + 3f2a: 05 96 adiw r24, 0x05 ; 5 + 3f2c: be 01 movw r22, r28 + 3f2e: 6f 5e subi r22, 0xEF ; 239 + 3f30: 7f 4f sbci r23, 0xFF ; 255 + 3f32: 0e 94 d9 23 call 0x47b2 ; 0x47b2 <__unpack_f> + 3f36: 99 85 ldd r25, Y+9 ; 0x09 + 3f38: 92 30 cpi r25, 0x02 ; 2 + 3f3a: 78 f0 brcs .+30 ; 0x3f5a <__mulsf3+0x5c> + 3f3c: 89 89 ldd r24, Y+17 ; 0x11 + 3f3e: 82 30 cpi r24, 0x02 ; 2 + 3f40: c0 f0 brcs .+48 ; 0x3f72 <__mulsf3+0x74> + 3f42: 94 30 cpi r25, 0x04 ; 4 + 3f44: 19 f4 brne .+6 ; 0x3f4c <__mulsf3+0x4e> + 3f46: 82 30 cpi r24, 0x02 ; 2 + 3f48: 41 f4 brne .+16 ; 0x3f5a <__mulsf3+0x5c> + 3f4a: cb c0 rjmp .+406 ; 0x40e2 <__mulsf3+0x1e4> + 3f4c: 84 30 cpi r24, 0x04 ; 4 + 3f4e: 19 f4 brne .+6 ; 0x3f56 <__mulsf3+0x58> + 3f50: 92 30 cpi r25, 0x02 ; 2 + 3f52: 79 f4 brne .+30 ; 0x3f72 <__mulsf3+0x74> + 3f54: c6 c0 rjmp .+396 ; 0x40e2 <__mulsf3+0x1e4> + 3f56: 92 30 cpi r25, 0x02 ; 2 + 3f58: 51 f4 brne .+20 ; 0x3f6e <__mulsf3+0x70> + 3f5a: 81 e0 ldi r24, 0x01 ; 1 + 3f5c: 2a 85 ldd r18, Y+10 ; 0x0a + 3f5e: 9a 89 ldd r25, Y+18 ; 0x12 + 3f60: 29 17 cp r18, r25 + 3f62: 09 f4 brne .+2 ; 0x3f66 <__mulsf3+0x68> + 3f64: 80 e0 ldi r24, 0x00 ; 0 + 3f66: 8a 87 std Y+10, r24 ; 0x0a + 3f68: ce 01 movw r24, r28 + 3f6a: 09 96 adiw r24, 0x09 ; 9 + 3f6c: bc c0 rjmp .+376 ; 0x40e6 <__mulsf3+0x1e8> + 3f6e: 82 30 cpi r24, 0x02 ; 2 + 3f70: 51 f4 brne .+20 ; 0x3f86 <__mulsf3+0x88> + 3f72: 81 e0 ldi r24, 0x01 ; 1 + 3f74: 2a 85 ldd r18, Y+10 ; 0x0a + 3f76: 9a 89 ldd r25, Y+18 ; 0x12 + 3f78: 29 17 cp r18, r25 + 3f7a: 09 f4 brne .+2 ; 0x3f7e <__mulsf3+0x80> + 3f7c: 80 e0 ldi r24, 0x00 ; 0 + 3f7e: 8a 8b std Y+18, r24 ; 0x12 + 3f80: ce 01 movw r24, r28 + 3f82: 41 96 adiw r24, 0x11 ; 17 + 3f84: b0 c0 rjmp .+352 ; 0x40e6 <__mulsf3+0x1e8> + 3f86: 6d 84 ldd r6, Y+13 ; 0x0d + 3f88: 7e 84 ldd r7, Y+14 ; 0x0e + 3f8a: 8f 84 ldd r8, Y+15 ; 0x0f + 3f8c: 98 88 ldd r9, Y+16 ; 0x10 + 3f8e: ed 88 ldd r14, Y+21 ; 0x15 + 3f90: fe 88 ldd r15, Y+22 ; 0x16 + 3f92: 0f 89 ldd r16, Y+23 ; 0x17 + 3f94: 18 8d ldd r17, Y+24 ; 0x18 + 3f96: e0 e2 ldi r30, 0x20 ; 32 + 3f98: f0 e0 ldi r31, 0x00 ; 0 + 3f9a: 80 e0 ldi r24, 0x00 ; 0 + 3f9c: 90 e0 ldi r25, 0x00 ; 0 + 3f9e: dc 01 movw r26, r24 + 3fa0: aa 24 eor r10, r10 + 3fa2: bb 24 eor r11, r11 + 3fa4: 65 01 movw r12, r10 + 3fa6: 20 e0 ldi r18, 0x00 ; 0 + 3fa8: 30 e0 ldi r19, 0x00 ; 0 + 3faa: a9 01 movw r20, r18 + 3fac: b3 01 movw r22, r6 + 3fae: 61 70 andi r22, 0x01 ; 1 + 3fb0: 70 70 andi r23, 0x00 ; 0 + 3fb2: 61 15 cp r22, r1 + 3fb4: 71 05 cpc r23, r1 + 3fb6: d1 f0 breq .+52 ; 0x3fec <__mulsf3+0xee> + 3fb8: 2e 0d add r18, r14 + 3fba: 3f 1d adc r19, r15 + 3fbc: 40 1f adc r20, r16 + 3fbe: 51 1f adc r21, r17 + 3fc0: 15 01 movw r2, r10 + 3fc2: 26 01 movw r4, r12 + 3fc4: 28 0e add r2, r24 + 3fc6: 39 1e adc r3, r25 + 3fc8: 4a 1e adc r4, r26 + 3fca: 5b 1e adc r5, r27 + 3fcc: 81 e0 ldi r24, 0x01 ; 1 + 3fce: 90 e0 ldi r25, 0x00 ; 0 + 3fd0: a0 e0 ldi r26, 0x00 ; 0 + 3fd2: b0 e0 ldi r27, 0x00 ; 0 + 3fd4: 2e 15 cp r18, r14 + 3fd6: 3f 05 cpc r19, r15 + 3fd8: 40 07 cpc r20, r16 + 3fda: 51 07 cpc r21, r17 + 3fdc: 18 f0 brcs .+6 ; 0x3fe4 <__mulsf3+0xe6> + 3fde: 80 e0 ldi r24, 0x00 ; 0 + 3fe0: 90 e0 ldi r25, 0x00 ; 0 + 3fe2: dc 01 movw r26, r24 + 3fe4: 82 0d add r24, r2 + 3fe6: 93 1d adc r25, r3 + 3fe8: a4 1d adc r26, r4 + 3fea: b5 1d adc r27, r5 + 3fec: aa 0c add r10, r10 + 3fee: bb 1c adc r11, r11 + 3ff0: cc 1c adc r12, r12 + 3ff2: dd 1c adc r13, r13 + 3ff4: 17 ff sbrs r17, 7 + 3ff6: 09 c0 rjmp .+18 ; 0x400a <__mulsf3+0x10c> + 3ff8: 61 e0 ldi r22, 0x01 ; 1 + 3ffa: 26 2e mov r2, r22 + 3ffc: 31 2c mov r3, r1 + 3ffe: 41 2c mov r4, r1 + 4000: 51 2c mov r5, r1 + 4002: a2 28 or r10, r2 + 4004: b3 28 or r11, r3 + 4006: c4 28 or r12, r4 + 4008: d5 28 or r13, r5 + 400a: 31 97 sbiw r30, 0x01 ; 1 + 400c: 49 f0 breq .+18 ; 0x4020 <__mulsf3+0x122> + 400e: ee 0c add r14, r14 + 4010: ff 1c adc r15, r15 + 4012: 00 1f adc r16, r16 + 4014: 11 1f adc r17, r17 + 4016: 96 94 lsr r9 + 4018: 87 94 ror r8 + 401a: 77 94 ror r7 + 401c: 67 94 ror r6 + 401e: c6 cf rjmp .-116 ; 0x3fac <__mulsf3+0xae> + 4020: 6b 89 ldd r22, Y+19 ; 0x13 + 4022: 7c 89 ldd r23, Y+20 ; 0x14 + 4024: eb 85 ldd r30, Y+11 ; 0x0b + 4026: fc 85 ldd r31, Y+12 ; 0x0c + 4028: 6e 0f add r22, r30 + 402a: 7f 1f adc r23, r31 + 402c: 6e 5f subi r22, 0xFE ; 254 + 402e: 7f 4f sbci r23, 0xFF ; 255 + 4030: 7c 8f std Y+28, r23 ; 0x1c + 4032: 6b 8f std Y+27, r22 ; 0x1b + 4034: 61 e0 ldi r22, 0x01 ; 1 + 4036: ea 85 ldd r30, Y+10 ; 0x0a + 4038: 7a 89 ldd r23, Y+18 ; 0x12 + 403a: e7 17 cp r30, r23 + 403c: 09 f4 brne .+2 ; 0x4040 <__mulsf3+0x142> + 403e: 60 e0 ldi r22, 0x00 ; 0 + 4040: 6a 8f std Y+26, r22 ; 0x1a + 4042: 6b 8d ldd r22, Y+27 ; 0x1b + 4044: 7c 8d ldd r23, Y+28 ; 0x1c + 4046: 10 c0 rjmp .+32 ; 0x4068 <__mulsf3+0x16a> + 4048: fc 01 movw r30, r24 + 404a: e1 70 andi r30, 0x01 ; 1 + 404c: f0 70 andi r31, 0x00 ; 0 + 404e: 30 97 sbiw r30, 0x00 ; 0 + 4050: 29 f0 breq .+10 ; 0x405c <__mulsf3+0x15e> + 4052: 56 95 lsr r21 + 4054: 47 95 ror r20 + 4056: 37 95 ror r19 + 4058: 27 95 ror r18 + 405a: 50 68 ori r21, 0x80 ; 128 + 405c: b6 95 lsr r27 + 405e: a7 95 ror r26 + 4060: 97 95 ror r25 + 4062: 87 95 ror r24 + 4064: 6f 5f subi r22, 0xFF ; 255 + 4066: 7f 4f sbci r23, 0xFF ; 255 + 4068: b7 fd sbrc r27, 7 + 406a: ee cf rjmp .-36 ; 0x4048 <__mulsf3+0x14a> + 406c: 0c c0 rjmp .+24 ; 0x4086 <__mulsf3+0x188> + 406e: 88 0f add r24, r24 + 4070: 99 1f adc r25, r25 + 4072: aa 1f adc r26, r26 + 4074: bb 1f adc r27, r27 + 4076: 57 fd sbrc r21, 7 + 4078: 81 60 ori r24, 0x01 ; 1 + 407a: 22 0f add r18, r18 + 407c: 33 1f adc r19, r19 + 407e: 44 1f adc r20, r20 + 4080: 55 1f adc r21, r21 + 4082: 61 50 subi r22, 0x01 ; 1 + 4084: 70 40 sbci r23, 0x00 ; 0 + 4086: 80 30 cpi r24, 0x00 ; 0 + 4088: e0 e0 ldi r30, 0x00 ; 0 + 408a: 9e 07 cpc r25, r30 + 408c: e0 e0 ldi r30, 0x00 ; 0 + 408e: ae 07 cpc r26, r30 + 4090: e0 e4 ldi r30, 0x40 ; 64 + 4092: be 07 cpc r27, r30 + 4094: 60 f3 brcs .-40 ; 0x406e <__mulsf3+0x170> + 4096: 6b 8f std Y+27, r22 ; 0x1b + 4098: 7c 8f std Y+28, r23 ; 0x1c + 409a: 6f e7 ldi r22, 0x7F ; 127 + 409c: e6 2e mov r14, r22 + 409e: f1 2c mov r15, r1 + 40a0: 01 2d mov r16, r1 + 40a2: 11 2d mov r17, r1 + 40a4: e8 22 and r14, r24 + 40a6: f9 22 and r15, r25 + 40a8: 0a 23 and r16, r26 + 40aa: 1b 23 and r17, r27 + 40ac: 60 e4 ldi r22, 0x40 ; 64 + 40ae: e6 16 cp r14, r22 + 40b0: f1 04 cpc r15, r1 + 40b2: 01 05 cpc r16, r1 + 40b4: 11 05 cpc r17, r1 + 40b6: 61 f4 brne .+24 ; 0x40d0 <__mulsf3+0x1d2> + 40b8: 87 fd sbrc r24, 7 + 40ba: 0a c0 rjmp .+20 ; 0x40d0 <__mulsf3+0x1d2> + 40bc: 21 15 cp r18, r1 + 40be: 31 05 cpc r19, r1 + 40c0: 41 05 cpc r20, r1 + 40c2: 51 05 cpc r21, r1 + 40c4: 29 f0 breq .+10 ; 0x40d0 <__mulsf3+0x1d2> + 40c6: 80 5c subi r24, 0xC0 ; 192 + 40c8: 9f 4f sbci r25, 0xFF ; 255 + 40ca: af 4f sbci r26, 0xFF ; 255 + 40cc: bf 4f sbci r27, 0xFF ; 255 + 40ce: 80 78 andi r24, 0x80 ; 128 + 40d0: 8d 8f std Y+29, r24 ; 0x1d + 40d2: 9e 8f std Y+30, r25 ; 0x1e + 40d4: af 8f std Y+31, r26 ; 0x1f + 40d6: b8 a3 std Y+32, r27 ; 0x20 + 40d8: 83 e0 ldi r24, 0x03 ; 3 + 40da: 89 8f std Y+25, r24 ; 0x19 + 40dc: ce 01 movw r24, r28 + 40de: 49 96 adiw r24, 0x19 ; 25 + 40e0: 02 c0 rjmp .+4 ; 0x40e6 <__mulsf3+0x1e8> + 40e2: 8e ec ldi r24, 0xCE ; 206 + 40e4: 91 e0 ldi r25, 0x01 ; 1 + 40e6: 0e 94 0b 23 call 0x4616 ; 0x4616 <__pack_f> + 40ea: a0 96 adiw r28, 0x20 ; 32 + 40ec: e2 e1 ldi r30, 0x12 ; 18 + 40ee: 0c 94 3a 25 jmp 0x4a74 ; 0x4a74 <__epilogue_restores__> + +000040f2 <__divsf3>: + 40f2: a8 e1 ldi r26, 0x18 ; 24 + 40f4: b0 e0 ldi r27, 0x00 ; 0 + 40f6: ef e7 ldi r30, 0x7F ; 127 + 40f8: f0 e2 ldi r31, 0x20 ; 32 + 40fa: 0c 94 26 25 jmp 0x4a4c ; 0x4a4c <__prologue_saves__+0x10> + 40fe: 69 83 std Y+1, r22 ; 0x01 + 4100: 7a 83 std Y+2, r23 ; 0x02 + 4102: 8b 83 std Y+3, r24 ; 0x03 + 4104: 9c 83 std Y+4, r25 ; 0x04 + 4106: 2d 83 std Y+5, r18 ; 0x05 + 4108: 3e 83 std Y+6, r19 ; 0x06 + 410a: 4f 83 std Y+7, r20 ; 0x07 + 410c: 58 87 std Y+8, r21 ; 0x08 + 410e: 8e 01 movw r16, r28 + 4110: 07 5f subi r16, 0xF7 ; 247 + 4112: 1f 4f sbci r17, 0xFF ; 255 + 4114: ce 01 movw r24, r28 + 4116: 01 96 adiw r24, 0x01 ; 1 + 4118: b8 01 movw r22, r16 + 411a: 0e 94 d9 23 call 0x47b2 ; 0x47b2 <__unpack_f> + 411e: 81 e1 ldi r24, 0x11 ; 17 + 4120: e8 2e mov r14, r24 + 4122: f1 2c mov r15, r1 + 4124: ec 0e add r14, r28 + 4126: fd 1e adc r15, r29 + 4128: ce 01 movw r24, r28 + 412a: 05 96 adiw r24, 0x05 ; 5 + 412c: b7 01 movw r22, r14 + 412e: 0e 94 d9 23 call 0x47b2 ; 0x47b2 <__unpack_f> + 4132: 99 85 ldd r25, Y+9 ; 0x09 + 4134: 92 30 cpi r25, 0x02 ; 2 + 4136: 08 f4 brcc .+2 ; 0x413a <__divsf3+0x48> + 4138: 83 c0 rjmp .+262 ; 0x4240 <__divsf3+0x14e> + 413a: 89 89 ldd r24, Y+17 ; 0x11 + 413c: 82 30 cpi r24, 0x02 ; 2 + 413e: 08 f4 brcc .+2 ; 0x4142 <__divsf3+0x50> + 4140: 7b c0 rjmp .+246 ; 0x4238 <__divsf3+0x146> + 4142: 2a 85 ldd r18, Y+10 ; 0x0a + 4144: 3a 89 ldd r19, Y+18 ; 0x12 + 4146: 23 27 eor r18, r19 + 4148: 2a 87 std Y+10, r18 ; 0x0a + 414a: 94 30 cpi r25, 0x04 ; 4 + 414c: 11 f0 breq .+4 ; 0x4152 <__divsf3+0x60> + 414e: 92 30 cpi r25, 0x02 ; 2 + 4150: 21 f4 brne .+8 ; 0x415a <__divsf3+0x68> + 4152: 98 17 cp r25, r24 + 4154: 09 f0 breq .+2 ; 0x4158 <__divsf3+0x66> + 4156: 6c c0 rjmp .+216 ; 0x4230 <__divsf3+0x13e> + 4158: 71 c0 rjmp .+226 ; 0x423c <__divsf3+0x14a> + 415a: 84 30 cpi r24, 0x04 ; 4 + 415c: 39 f4 brne .+14 ; 0x416c <__divsf3+0x7a> + 415e: 1d 86 std Y+13, r1 ; 0x0d + 4160: 1e 86 std Y+14, r1 ; 0x0e + 4162: 1f 86 std Y+15, r1 ; 0x0f + 4164: 18 8a std Y+16, r1 ; 0x10 + 4166: 1c 86 std Y+12, r1 ; 0x0c + 4168: 1b 86 std Y+11, r1 ; 0x0b + 416a: 6a c0 rjmp .+212 ; 0x4240 <__divsf3+0x14e> + 416c: 82 30 cpi r24, 0x02 ; 2 + 416e: 19 f4 brne .+6 ; 0x4176 <__divsf3+0x84> + 4170: 84 e0 ldi r24, 0x04 ; 4 + 4172: 89 87 std Y+9, r24 ; 0x09 + 4174: 65 c0 rjmp .+202 ; 0x4240 <__divsf3+0x14e> + 4176: 8b 85 ldd r24, Y+11 ; 0x0b + 4178: 9c 85 ldd r25, Y+12 ; 0x0c + 417a: 2b 89 ldd r18, Y+19 ; 0x13 + 417c: 3c 89 ldd r19, Y+20 ; 0x14 + 417e: 82 1b sub r24, r18 + 4180: 93 0b sbc r25, r19 + 4182: 9c 87 std Y+12, r25 ; 0x0c + 4184: 8b 87 std Y+11, r24 ; 0x0b + 4186: 2d 85 ldd r18, Y+13 ; 0x0d + 4188: 3e 85 ldd r19, Y+14 ; 0x0e + 418a: 4f 85 ldd r20, Y+15 ; 0x0f + 418c: 58 89 ldd r21, Y+16 ; 0x10 + 418e: ed 88 ldd r14, Y+21 ; 0x15 + 4190: fe 88 ldd r15, Y+22 ; 0x16 + 4192: 0f 89 ldd r16, Y+23 ; 0x17 + 4194: 18 8d ldd r17, Y+24 ; 0x18 + 4196: 2e 15 cp r18, r14 + 4198: 3f 05 cpc r19, r15 + 419a: 40 07 cpc r20, r16 + 419c: 51 07 cpc r21, r17 + 419e: 38 f4 brcc .+14 ; 0x41ae <__divsf3+0xbc> + 41a0: 22 0f add r18, r18 + 41a2: 33 1f adc r19, r19 + 41a4: 44 1f adc r20, r20 + 41a6: 55 1f adc r21, r21 + 41a8: 01 97 sbiw r24, 0x01 ; 1 + 41aa: 9c 87 std Y+12, r25 ; 0x0c + 41ac: 8b 87 std Y+11, r24 ; 0x0b + 41ae: 6f e1 ldi r22, 0x1F ; 31 + 41b0: 70 e0 ldi r23, 0x00 ; 0 + 41b2: a1 2c mov r10, r1 + 41b4: b1 2c mov r11, r1 + 41b6: c1 2c mov r12, r1 + 41b8: a0 e4 ldi r26, 0x40 ; 64 + 41ba: da 2e mov r13, r26 + 41bc: 80 e0 ldi r24, 0x00 ; 0 + 41be: 90 e0 ldi r25, 0x00 ; 0 + 41c0: dc 01 movw r26, r24 + 41c2: 2e 15 cp r18, r14 + 41c4: 3f 05 cpc r19, r15 + 41c6: 40 07 cpc r20, r16 + 41c8: 51 07 cpc r21, r17 + 41ca: 40 f0 brcs .+16 ; 0x41dc <__divsf3+0xea> + 41cc: 8a 29 or r24, r10 + 41ce: 9b 29 or r25, r11 + 41d0: ac 29 or r26, r12 + 41d2: bd 29 or r27, r13 + 41d4: 2e 19 sub r18, r14 + 41d6: 3f 09 sbc r19, r15 + 41d8: 40 0b sbc r20, r16 + 41da: 51 0b sbc r21, r17 + 41dc: d6 94 lsr r13 + 41de: c7 94 ror r12 + 41e0: b7 94 ror r11 + 41e2: a7 94 ror r10 + 41e4: 22 0f add r18, r18 + 41e6: 33 1f adc r19, r19 + 41e8: 44 1f adc r20, r20 + 41ea: 55 1f adc r21, r21 + 41ec: 61 50 subi r22, 0x01 ; 1 + 41ee: 70 40 sbci r23, 0x00 ; 0 + 41f0: 41 f7 brne .-48 ; 0x41c2 <__divsf3+0xd0> + 41f2: 6f e7 ldi r22, 0x7F ; 127 + 41f4: e6 2e mov r14, r22 + 41f6: f1 2c mov r15, r1 + 41f8: 01 2d mov r16, r1 + 41fa: 11 2d mov r17, r1 + 41fc: e8 22 and r14, r24 + 41fe: f9 22 and r15, r25 + 4200: 0a 23 and r16, r26 + 4202: 1b 23 and r17, r27 + 4204: 60 e4 ldi r22, 0x40 ; 64 + 4206: e6 16 cp r14, r22 + 4208: f1 04 cpc r15, r1 + 420a: 01 05 cpc r16, r1 + 420c: 11 05 cpc r17, r1 + 420e: 61 f4 brne .+24 ; 0x4228 <__divsf3+0x136> + 4210: 87 fd sbrc r24, 7 + 4212: 0a c0 rjmp .+20 ; 0x4228 <__divsf3+0x136> + 4214: 21 15 cp r18, r1 + 4216: 31 05 cpc r19, r1 + 4218: 41 05 cpc r20, r1 + 421a: 51 05 cpc r21, r1 + 421c: 29 f0 breq .+10 ; 0x4228 <__divsf3+0x136> + 421e: 80 5c subi r24, 0xC0 ; 192 + 4220: 9f 4f sbci r25, 0xFF ; 255 + 4222: af 4f sbci r26, 0xFF ; 255 + 4224: bf 4f sbci r27, 0xFF ; 255 + 4226: 80 78 andi r24, 0x80 ; 128 + 4228: 8d 87 std Y+13, r24 ; 0x0d + 422a: 9e 87 std Y+14, r25 ; 0x0e + 422c: af 87 std Y+15, r26 ; 0x0f + 422e: b8 8b std Y+16, r27 ; 0x10 + 4230: 8e 01 movw r16, r28 + 4232: 07 5f subi r16, 0xF7 ; 247 + 4234: 1f 4f sbci r17, 0xFF ; 255 + 4236: 04 c0 rjmp .+8 ; 0x4240 <__divsf3+0x14e> + 4238: 87 01 movw r16, r14 + 423a: 02 c0 rjmp .+4 ; 0x4240 <__divsf3+0x14e> + 423c: 0e ec ldi r16, 0xCE ; 206 + 423e: 11 e0 ldi r17, 0x01 ; 1 + 4240: c8 01 movw r24, r16 + 4242: 0e 94 0b 23 call 0x4616 ; 0x4616 <__pack_f> + 4246: 68 96 adiw r28, 0x18 ; 24 + 4248: ea e0 ldi r30, 0x0A ; 10 + 424a: 0c 94 42 25 jmp 0x4a84 ; 0x4a84 <__epilogue_restores__+0x10> + +0000424e <__gesf2>: + 424e: a8 e1 ldi r26, 0x18 ; 24 + 4250: b0 e0 ldi r27, 0x00 ; 0 + 4252: ed e2 ldi r30, 0x2D ; 45 + 4254: f1 e2 ldi r31, 0x21 ; 33 + 4256: 0c 94 2a 25 jmp 0x4a54 ; 0x4a54 <__prologue_saves__+0x18> + 425a: 69 83 std Y+1, r22 ; 0x01 + 425c: 7a 83 std Y+2, r23 ; 0x02 + 425e: 8b 83 std Y+3, r24 ; 0x03 + 4260: 9c 83 std Y+4, r25 ; 0x04 + 4262: 2d 83 std Y+5, r18 ; 0x05 + 4264: 3e 83 std Y+6, r19 ; 0x06 + 4266: 4f 83 std Y+7, r20 ; 0x07 + 4268: 58 87 std Y+8, r21 ; 0x08 + 426a: 8e 01 movw r16, r28 + 426c: 07 5f subi r16, 0xF7 ; 247 + 426e: 1f 4f sbci r17, 0xFF ; 255 + 4270: ce 01 movw r24, r28 + 4272: 01 96 adiw r24, 0x01 ; 1 + 4274: b8 01 movw r22, r16 + 4276: 0e 94 d9 23 call 0x47b2 ; 0x47b2 <__unpack_f> + 427a: 81 e1 ldi r24, 0x11 ; 17 + 427c: e8 2e mov r14, r24 + 427e: f1 2c mov r15, r1 + 4280: ec 0e add r14, r28 + 4282: fd 1e adc r15, r29 + 4284: ce 01 movw r24, r28 + 4286: 05 96 adiw r24, 0x05 ; 5 + 4288: b7 01 movw r22, r14 + 428a: 0e 94 d9 23 call 0x47b2 ; 0x47b2 <__unpack_f> + 428e: 89 85 ldd r24, Y+9 ; 0x09 + 4290: 82 30 cpi r24, 0x02 ; 2 + 4292: 40 f0 brcs .+16 ; 0x42a4 <__gesf2+0x56> + 4294: 89 89 ldd r24, Y+17 ; 0x11 + 4296: 82 30 cpi r24, 0x02 ; 2 + 4298: 28 f0 brcs .+10 ; 0x42a4 <__gesf2+0x56> + 429a: c8 01 movw r24, r16 + 429c: b7 01 movw r22, r14 + 429e: 0e 94 42 24 call 0x4884 ; 0x4884 <__fpcmp_parts_f> + 42a2: 01 c0 rjmp .+2 ; 0x42a6 <__gesf2+0x58> + 42a4: 8f ef ldi r24, 0xFF ; 255 + 42a6: 68 96 adiw r28, 0x18 ; 24 + 42a8: e6 e0 ldi r30, 0x06 ; 6 + 42aa: 0c 94 46 25 jmp 0x4a8c ; 0x4a8c <__epilogue_restores__+0x18> + +000042ae <__ltsf2>: + 42ae: a8 e1 ldi r26, 0x18 ; 24 + 42b0: b0 e0 ldi r27, 0x00 ; 0 + 42b2: ed e5 ldi r30, 0x5D ; 93 + 42b4: f1 e2 ldi r31, 0x21 ; 33 + 42b6: 0c 94 2a 25 jmp 0x4a54 ; 0x4a54 <__prologue_saves__+0x18> + 42ba: 69 83 std Y+1, r22 ; 0x01 + 42bc: 7a 83 std Y+2, r23 ; 0x02 + 42be: 8b 83 std Y+3, r24 ; 0x03 + 42c0: 9c 83 std Y+4, r25 ; 0x04 + 42c2: 2d 83 std Y+5, r18 ; 0x05 + 42c4: 3e 83 std Y+6, r19 ; 0x06 + 42c6: 4f 83 std Y+7, r20 ; 0x07 + 42c8: 58 87 std Y+8, r21 ; 0x08 + 42ca: 8e 01 movw r16, r28 + 42cc: 07 5f subi r16, 0xF7 ; 247 + 42ce: 1f 4f sbci r17, 0xFF ; 255 + 42d0: ce 01 movw r24, r28 + 42d2: 01 96 adiw r24, 0x01 ; 1 + 42d4: b8 01 movw r22, r16 + 42d6: 0e 94 d9 23 call 0x47b2 ; 0x47b2 <__unpack_f> + 42da: 81 e1 ldi r24, 0x11 ; 17 + 42dc: e8 2e mov r14, r24 + 42de: f1 2c mov r15, r1 + 42e0: ec 0e add r14, r28 + 42e2: fd 1e adc r15, r29 + 42e4: ce 01 movw r24, r28 + 42e6: 05 96 adiw r24, 0x05 ; 5 + 42e8: b7 01 movw r22, r14 + 42ea: 0e 94 d9 23 call 0x47b2 ; 0x47b2 <__unpack_f> + 42ee: 89 85 ldd r24, Y+9 ; 0x09 + 42f0: 82 30 cpi r24, 0x02 ; 2 + 42f2: 40 f0 brcs .+16 ; 0x4304 <__ltsf2+0x56> + 42f4: 89 89 ldd r24, Y+17 ; 0x11 + 42f6: 82 30 cpi r24, 0x02 ; 2 + 42f8: 28 f0 brcs .+10 ; 0x4304 <__ltsf2+0x56> + 42fa: c8 01 movw r24, r16 + 42fc: b7 01 movw r22, r14 + 42fe: 0e 94 42 24 call 0x4884 ; 0x4884 <__fpcmp_parts_f> + 4302: 01 c0 rjmp .+2 ; 0x4306 <__ltsf2+0x58> + 4304: 81 e0 ldi r24, 0x01 ; 1 + 4306: 68 96 adiw r28, 0x18 ; 24 + 4308: e6 e0 ldi r30, 0x06 ; 6 + 430a: 0c 94 46 25 jmp 0x4a8c ; 0x4a8c <__epilogue_restores__+0x18> + +0000430e <__floatsisf>: + 430e: a8 e0 ldi r26, 0x08 ; 8 + 4310: b0 e0 ldi r27, 0x00 ; 0 + 4312: ed e8 ldi r30, 0x8D ; 141 + 4314: f1 e2 ldi r31, 0x21 ; 33 + 4316: 0c 94 2a 25 jmp 0x4a54 ; 0x4a54 <__prologue_saves__+0x18> + 431a: 7b 01 movw r14, r22 + 431c: 8c 01 movw r16, r24 + 431e: 83 e0 ldi r24, 0x03 ; 3 + 4320: 89 83 std Y+1, r24 ; 0x01 + 4322: d8 01 movw r26, r16 + 4324: c7 01 movw r24, r14 + 4326: 88 27 eor r24, r24 + 4328: b7 fd sbrc r27, 7 + 432a: 83 95 inc r24 + 432c: 99 27 eor r25, r25 + 432e: aa 27 eor r26, r26 + 4330: bb 27 eor r27, r27 + 4332: 28 2f mov r18, r24 + 4334: 8a 83 std Y+2, r24 ; 0x02 + 4336: e1 14 cp r14, r1 + 4338: f1 04 cpc r15, r1 + 433a: 01 05 cpc r16, r1 + 433c: 11 05 cpc r17, r1 + 433e: 19 f4 brne .+6 ; 0x4346 <__floatsisf+0x38> + 4340: 82 e0 ldi r24, 0x02 ; 2 + 4342: 89 83 std Y+1, r24 ; 0x01 + 4344: 37 c0 rjmp .+110 ; 0x43b4 <__floatsisf+0xa6> + 4346: 8e e1 ldi r24, 0x1E ; 30 + 4348: 90 e0 ldi r25, 0x00 ; 0 + 434a: 9c 83 std Y+4, r25 ; 0x04 + 434c: 8b 83 std Y+3, r24 ; 0x03 + 434e: 22 23 and r18, r18 + 4350: 89 f0 breq .+34 ; 0x4374 <__floatsisf+0x66> + 4352: 80 e0 ldi r24, 0x00 ; 0 + 4354: e8 16 cp r14, r24 + 4356: 80 e0 ldi r24, 0x00 ; 0 + 4358: f8 06 cpc r15, r24 + 435a: 80 e0 ldi r24, 0x00 ; 0 + 435c: 08 07 cpc r16, r24 + 435e: 80 e8 ldi r24, 0x80 ; 128 + 4360: 18 07 cpc r17, r24 + 4362: 69 f1 breq .+90 ; 0x43be <__floatsisf+0xb0> + 4364: 10 95 com r17 + 4366: 00 95 com r16 + 4368: f0 94 com r15 + 436a: e0 94 com r14 + 436c: e1 1c adc r14, r1 + 436e: f1 1c adc r15, r1 + 4370: 01 1d adc r16, r1 + 4372: 11 1d adc r17, r1 + 4374: ed 82 std Y+5, r14 ; 0x05 + 4376: fe 82 std Y+6, r15 ; 0x06 + 4378: 0f 83 std Y+7, r16 ; 0x07 + 437a: 18 87 std Y+8, r17 ; 0x08 + 437c: c8 01 movw r24, r16 + 437e: b7 01 movw r22, r14 + 4380: 0e 94 b1 22 call 0x4562 ; 0x4562 <__clzsi2> + 4384: 9c 01 movw r18, r24 + 4386: 21 50 subi r18, 0x01 ; 1 + 4388: 30 40 sbci r19, 0x00 ; 0 + 438a: 12 16 cp r1, r18 + 438c: 13 06 cpc r1, r19 + 438e: 94 f4 brge .+36 ; 0x43b4 <__floatsisf+0xa6> + 4390: 02 2e mov r0, r18 + 4392: 04 c0 rjmp .+8 ; 0x439c <__floatsisf+0x8e> + 4394: ee 0c add r14, r14 + 4396: ff 1c adc r15, r15 + 4398: 00 1f adc r16, r16 + 439a: 11 1f adc r17, r17 + 439c: 0a 94 dec r0 + 439e: d2 f7 brpl .-12 ; 0x4394 <__floatsisf+0x86> + 43a0: ed 82 std Y+5, r14 ; 0x05 + 43a2: fe 82 std Y+6, r15 ; 0x06 + 43a4: 0f 83 std Y+7, r16 ; 0x07 + 43a6: 18 87 std Y+8, r17 ; 0x08 + 43a8: 8e e1 ldi r24, 0x1E ; 30 + 43aa: 90 e0 ldi r25, 0x00 ; 0 + 43ac: 82 1b sub r24, r18 + 43ae: 93 0b sbc r25, r19 + 43b0: 9c 83 std Y+4, r25 ; 0x04 + 43b2: 8b 83 std Y+3, r24 ; 0x03 + 43b4: ce 01 movw r24, r28 + 43b6: 01 96 adiw r24, 0x01 ; 1 + 43b8: 0e 94 0b 23 call 0x4616 ; 0x4616 <__pack_f> + 43bc: 04 c0 rjmp .+8 ; 0x43c6 <__floatsisf+0xb8> + 43be: 60 e0 ldi r22, 0x00 ; 0 + 43c0: 70 e0 ldi r23, 0x00 ; 0 + 43c2: 80 e0 ldi r24, 0x00 ; 0 + 43c4: 9f ec ldi r25, 0xCF ; 207 + 43c6: 28 96 adiw r28, 0x08 ; 8 + 43c8: e6 e0 ldi r30, 0x06 ; 6 + 43ca: 0c 94 46 25 jmp 0x4a8c ; 0x4a8c <__epilogue_restores__+0x18> + +000043ce <__fixsfsi>: + 43ce: ac e0 ldi r26, 0x0C ; 12 + 43d0: b0 e0 ldi r27, 0x00 ; 0 + 43d2: ed ee ldi r30, 0xED ; 237 + 43d4: f1 e2 ldi r31, 0x21 ; 33 + 43d6: 0c 94 2e 25 jmp 0x4a5c ; 0x4a5c <__prologue_saves__+0x20> + 43da: 69 83 std Y+1, r22 ; 0x01 + 43dc: 7a 83 std Y+2, r23 ; 0x02 + 43de: 8b 83 std Y+3, r24 ; 0x03 + 43e0: 9c 83 std Y+4, r25 ; 0x04 + 43e2: ce 01 movw r24, r28 + 43e4: 01 96 adiw r24, 0x01 ; 1 + 43e6: be 01 movw r22, r28 + 43e8: 6b 5f subi r22, 0xFB ; 251 + 43ea: 7f 4f sbci r23, 0xFF ; 255 + 43ec: 0e 94 d9 23 call 0x47b2 ; 0x47b2 <__unpack_f> + 43f0: 8d 81 ldd r24, Y+5 ; 0x05 + 43f2: 82 30 cpi r24, 0x02 ; 2 + 43f4: 81 f1 breq .+96 ; 0x4456 <__fixsfsi+0x88> + 43f6: 82 30 cpi r24, 0x02 ; 2 + 43f8: 70 f1 brcs .+92 ; 0x4456 <__fixsfsi+0x88> + 43fa: 84 30 cpi r24, 0x04 ; 4 + 43fc: 21 f4 brne .+8 ; 0x4406 <__fixsfsi+0x38> + 43fe: 8e 81 ldd r24, Y+6 ; 0x06 + 4400: 88 23 and r24, r24 + 4402: 69 f1 breq .+90 ; 0x445e <__fixsfsi+0x90> + 4404: 0a c0 rjmp .+20 ; 0x441a <__fixsfsi+0x4c> + 4406: 2f 81 ldd r18, Y+7 ; 0x07 + 4408: 38 85 ldd r19, Y+8 ; 0x08 + 440a: 37 fd sbrc r19, 7 + 440c: 24 c0 rjmp .+72 ; 0x4456 <__fixsfsi+0x88> + 440e: 6e 81 ldd r22, Y+6 ; 0x06 + 4410: 2f 31 cpi r18, 0x1F ; 31 + 4412: 31 05 cpc r19, r1 + 4414: 3c f0 brlt .+14 ; 0x4424 <__fixsfsi+0x56> + 4416: 66 23 and r22, r22 + 4418: 11 f1 breq .+68 ; 0x445e <__fixsfsi+0x90> + 441a: 20 e0 ldi r18, 0x00 ; 0 + 441c: 30 e0 ldi r19, 0x00 ; 0 + 441e: 40 e0 ldi r20, 0x00 ; 0 + 4420: 50 e8 ldi r21, 0x80 ; 128 + 4422: 21 c0 rjmp .+66 ; 0x4466 <__fixsfsi+0x98> + 4424: 8e e1 ldi r24, 0x1E ; 30 + 4426: 90 e0 ldi r25, 0x00 ; 0 + 4428: 82 1b sub r24, r18 + 442a: 93 0b sbc r25, r19 + 442c: 29 85 ldd r18, Y+9 ; 0x09 + 442e: 3a 85 ldd r19, Y+10 ; 0x0a + 4430: 4b 85 ldd r20, Y+11 ; 0x0b + 4432: 5c 85 ldd r21, Y+12 ; 0x0c + 4434: 04 c0 rjmp .+8 ; 0x443e <__fixsfsi+0x70> + 4436: 56 95 lsr r21 + 4438: 47 95 ror r20 + 443a: 37 95 ror r19 + 443c: 27 95 ror r18 + 443e: 8a 95 dec r24 + 4440: d2 f7 brpl .-12 ; 0x4436 <__fixsfsi+0x68> + 4442: 66 23 and r22, r22 + 4444: 81 f0 breq .+32 ; 0x4466 <__fixsfsi+0x98> + 4446: 50 95 com r21 + 4448: 40 95 com r20 + 444a: 30 95 com r19 + 444c: 21 95 neg r18 + 444e: 3f 4f sbci r19, 0xFF ; 255 + 4450: 4f 4f sbci r20, 0xFF ; 255 + 4452: 5f 4f sbci r21, 0xFF ; 255 + 4454: 08 c0 rjmp .+16 ; 0x4466 <__fixsfsi+0x98> + 4456: 20 e0 ldi r18, 0x00 ; 0 + 4458: 30 e0 ldi r19, 0x00 ; 0 + 445a: a9 01 movw r20, r18 + 445c: 04 c0 rjmp .+8 ; 0x4466 <__fixsfsi+0x98> + 445e: 2f ef ldi r18, 0xFF ; 255 + 4460: 3f ef ldi r19, 0xFF ; 255 + 4462: 4f ef ldi r20, 0xFF ; 255 + 4464: 5f e7 ldi r21, 0x7F ; 127 + 4466: b9 01 movw r22, r18 + 4468: ca 01 movw r24, r20 + 446a: 2c 96 adiw r28, 0x0c ; 12 + 446c: e2 e0 ldi r30, 0x02 ; 2 + 446e: 0c 94 4a 25 jmp 0x4a94 ; 0x4a94 <__epilogue_restores__+0x20> + +00004472 <__floatunsisf>: + 4472: a8 e0 ldi r26, 0x08 ; 8 + 4474: b0 e0 ldi r27, 0x00 ; 0 + 4476: ef e3 ldi r30, 0x3F ; 63 + 4478: f2 e2 ldi r31, 0x22 ; 34 + 447a: 0c 94 28 25 jmp 0x4a50 ; 0x4a50 <__prologue_saves__+0x14> + 447e: 7b 01 movw r14, r22 + 4480: 8c 01 movw r16, r24 + 4482: 1a 82 std Y+2, r1 ; 0x02 + 4484: 61 15 cp r22, r1 + 4486: 71 05 cpc r23, r1 + 4488: 81 05 cpc r24, r1 + 448a: 91 05 cpc r25, r1 + 448c: 19 f4 brne .+6 ; 0x4494 <__floatunsisf+0x22> + 448e: 82 e0 ldi r24, 0x02 ; 2 + 4490: 89 83 std Y+1, r24 ; 0x01 + 4492: 5f c0 rjmp .+190 ; 0x4552 <__floatunsisf+0xe0> + 4494: 83 e0 ldi r24, 0x03 ; 3 + 4496: 89 83 std Y+1, r24 ; 0x01 + 4498: 8e e1 ldi r24, 0x1E ; 30 + 449a: c8 2e mov r12, r24 + 449c: d1 2c mov r13, r1 + 449e: dc 82 std Y+4, r13 ; 0x04 + 44a0: cb 82 std Y+3, r12 ; 0x03 + 44a2: ed 82 std Y+5, r14 ; 0x05 + 44a4: fe 82 std Y+6, r15 ; 0x06 + 44a6: 0f 83 std Y+7, r16 ; 0x07 + 44a8: 18 87 std Y+8, r17 ; 0x08 + 44aa: c8 01 movw r24, r16 + 44ac: b7 01 movw r22, r14 + 44ae: 0e 94 b1 22 call 0x4562 ; 0x4562 <__clzsi2> + 44b2: fc 01 movw r30, r24 + 44b4: 31 97 sbiw r30, 0x01 ; 1 + 44b6: f7 ff sbrs r31, 7 + 44b8: 3a c0 rjmp .+116 ; 0x452e <__floatunsisf+0xbc> + 44ba: aa 27 eor r26, r26 + 44bc: bb 27 eor r27, r27 + 44be: ae 1b sub r26, r30 + 44c0: bf 0b sbc r27, r31 + 44c2: 21 e0 ldi r18, 0x01 ; 1 + 44c4: 30 e0 ldi r19, 0x00 ; 0 + 44c6: 40 e0 ldi r20, 0x00 ; 0 + 44c8: 50 e0 ldi r21, 0x00 ; 0 + 44ca: 0a 2e mov r0, r26 + 44cc: 04 c0 rjmp .+8 ; 0x44d6 <__floatunsisf+0x64> + 44ce: 22 0f add r18, r18 + 44d0: 33 1f adc r19, r19 + 44d2: 44 1f adc r20, r20 + 44d4: 55 1f adc r21, r21 + 44d6: 0a 94 dec r0 + 44d8: d2 f7 brpl .-12 ; 0x44ce <__floatunsisf+0x5c> + 44da: 21 50 subi r18, 0x01 ; 1 + 44dc: 30 40 sbci r19, 0x00 ; 0 + 44de: 40 40 sbci r20, 0x00 ; 0 + 44e0: 50 40 sbci r21, 0x00 ; 0 + 44e2: 2e 21 and r18, r14 + 44e4: 3f 21 and r19, r15 + 44e6: 40 23 and r20, r16 + 44e8: 51 23 and r21, r17 + 44ea: 61 e0 ldi r22, 0x01 ; 1 + 44ec: 70 e0 ldi r23, 0x00 ; 0 + 44ee: 80 e0 ldi r24, 0x00 ; 0 + 44f0: 90 e0 ldi r25, 0x00 ; 0 + 44f2: 21 15 cp r18, r1 + 44f4: 31 05 cpc r19, r1 + 44f6: 41 05 cpc r20, r1 + 44f8: 51 05 cpc r21, r1 + 44fa: 19 f4 brne .+6 ; 0x4502 <__floatunsisf+0x90> + 44fc: 60 e0 ldi r22, 0x00 ; 0 + 44fe: 70 e0 ldi r23, 0x00 ; 0 + 4500: cb 01 movw r24, r22 + 4502: 04 c0 rjmp .+8 ; 0x450c <__floatunsisf+0x9a> + 4504: 16 95 lsr r17 + 4506: 07 95 ror r16 + 4508: f7 94 ror r15 + 450a: e7 94 ror r14 + 450c: aa 95 dec r26 + 450e: d2 f7 brpl .-12 ; 0x4504 <__floatunsisf+0x92> + 4510: e6 2a or r14, r22 + 4512: f7 2a or r15, r23 + 4514: 08 2b or r16, r24 + 4516: 19 2b or r17, r25 + 4518: ed 82 std Y+5, r14 ; 0x05 + 451a: fe 82 std Y+6, r15 ; 0x06 + 451c: 0f 83 std Y+7, r16 ; 0x07 + 451e: 18 87 std Y+8, r17 ; 0x08 + 4520: 8e e1 ldi r24, 0x1E ; 30 + 4522: 90 e0 ldi r25, 0x00 ; 0 + 4524: 8e 1b sub r24, r30 + 4526: 9f 0b sbc r25, r31 + 4528: 9c 83 std Y+4, r25 ; 0x04 + 452a: 8b 83 std Y+3, r24 ; 0x03 + 452c: 12 c0 rjmp .+36 ; 0x4552 <__floatunsisf+0xe0> + 452e: 30 97 sbiw r30, 0x00 ; 0 + 4530: 81 f0 breq .+32 ; 0x4552 <__floatunsisf+0xe0> + 4532: 0e 2e mov r0, r30 + 4534: 04 c0 rjmp .+8 ; 0x453e <__floatunsisf+0xcc> + 4536: ee 0c add r14, r14 + 4538: ff 1c adc r15, r15 + 453a: 00 1f adc r16, r16 + 453c: 11 1f adc r17, r17 + 453e: 0a 94 dec r0 + 4540: d2 f7 brpl .-12 ; 0x4536 <__floatunsisf+0xc4> + 4542: ed 82 std Y+5, r14 ; 0x05 + 4544: fe 82 std Y+6, r15 ; 0x06 + 4546: 0f 83 std Y+7, r16 ; 0x07 + 4548: 18 87 std Y+8, r17 ; 0x08 + 454a: ce 1a sub r12, r30 + 454c: df 0a sbc r13, r31 + 454e: dc 82 std Y+4, r13 ; 0x04 + 4550: cb 82 std Y+3, r12 ; 0x03 + 4552: ce 01 movw r24, r28 + 4554: 01 96 adiw r24, 0x01 ; 1 + 4556: 0e 94 0b 23 call 0x4616 ; 0x4616 <__pack_f> + 455a: 28 96 adiw r28, 0x08 ; 8 + 455c: e8 e0 ldi r30, 0x08 ; 8 + 455e: 0c 94 44 25 jmp 0x4a88 ; 0x4a88 <__epilogue_restores__+0x14> + +00004562 <__clzsi2>: + 4562: af 92 push r10 + 4564: bf 92 push r11 + 4566: cf 92 push r12 + 4568: df 92 push r13 + 456a: ef 92 push r14 + 456c: ff 92 push r15 + 456e: 0f 93 push r16 + 4570: 1f 93 push r17 + 4572: 7b 01 movw r14, r22 + 4574: 8c 01 movw r16, r24 + 4576: 80 e0 ldi r24, 0x00 ; 0 + 4578: e8 16 cp r14, r24 + 457a: 80 e0 ldi r24, 0x00 ; 0 + 457c: f8 06 cpc r15, r24 + 457e: 81 e0 ldi r24, 0x01 ; 1 + 4580: 08 07 cpc r16, r24 + 4582: 80 e0 ldi r24, 0x00 ; 0 + 4584: 18 07 cpc r17, r24 + 4586: 58 f4 brcc .+22 ; 0x459e <__clzsi2+0x3c> + 4588: ef ef ldi r30, 0xFF ; 255 + 458a: ee 16 cp r14, r30 + 458c: f1 04 cpc r15, r1 + 458e: 01 05 cpc r16, r1 + 4590: 11 05 cpc r17, r1 + 4592: 09 f0 breq .+2 ; 0x4596 <__clzsi2+0x34> + 4594: 90 f4 brcc .+36 ; 0x45ba <__clzsi2+0x58> + 4596: 80 e0 ldi r24, 0x00 ; 0 + 4598: 90 e0 ldi r25, 0x00 ; 0 + 459a: dc 01 movw r26, r24 + 459c: 17 c0 rjmp .+46 ; 0x45cc <__clzsi2+0x6a> + 459e: f0 e0 ldi r31, 0x00 ; 0 + 45a0: ef 16 cp r14, r31 + 45a2: f0 e0 ldi r31, 0x00 ; 0 + 45a4: ff 06 cpc r15, r31 + 45a6: f0 e0 ldi r31, 0x00 ; 0 + 45a8: 0f 07 cpc r16, r31 + 45aa: f1 e0 ldi r31, 0x01 ; 1 + 45ac: 1f 07 cpc r17, r31 + 45ae: 50 f4 brcc .+20 ; 0x45c4 <__clzsi2+0x62> + 45b0: 80 e1 ldi r24, 0x10 ; 16 + 45b2: 90 e0 ldi r25, 0x00 ; 0 + 45b4: a0 e0 ldi r26, 0x00 ; 0 + 45b6: b0 e0 ldi r27, 0x00 ; 0 + 45b8: 09 c0 rjmp .+18 ; 0x45cc <__clzsi2+0x6a> + 45ba: 88 e0 ldi r24, 0x08 ; 8 + 45bc: 90 e0 ldi r25, 0x00 ; 0 + 45be: a0 e0 ldi r26, 0x00 ; 0 + 45c0: b0 e0 ldi r27, 0x00 ; 0 + 45c2: 04 c0 rjmp .+8 ; 0x45cc <__clzsi2+0x6a> + 45c4: 88 e1 ldi r24, 0x18 ; 24 + 45c6: 90 e0 ldi r25, 0x00 ; 0 + 45c8: a0 e0 ldi r26, 0x00 ; 0 + 45ca: b0 e0 ldi r27, 0x00 ; 0 + 45cc: 20 e2 ldi r18, 0x20 ; 32 + 45ce: 30 e0 ldi r19, 0x00 ; 0 + 45d0: 40 e0 ldi r20, 0x00 ; 0 + 45d2: 50 e0 ldi r21, 0x00 ; 0 + 45d4: 28 1b sub r18, r24 + 45d6: 39 0b sbc r19, r25 + 45d8: 4a 0b sbc r20, r26 + 45da: 5b 0b sbc r21, r27 + 45dc: 57 01 movw r10, r14 + 45de: 68 01 movw r12, r16 + 45e0: 04 c0 rjmp .+8 ; 0x45ea <__clzsi2+0x88> + 45e2: d6 94 lsr r13 + 45e4: c7 94 ror r12 + 45e6: b7 94 ror r11 + 45e8: a7 94 ror r10 + 45ea: 8a 95 dec r24 + 45ec: d2 f7 brpl .-12 ; 0x45e2 <__clzsi2+0x80> + 45ee: d6 01 movw r26, r12 + 45f0: c5 01 movw r24, r10 + 45f2: 8a 52 subi r24, 0x2A ; 42 + 45f4: 9e 4f sbci r25, 0xFE ; 254 + 45f6: fc 01 movw r30, r24 + 45f8: 80 81 ld r24, Z + 45fa: 28 1b sub r18, r24 + 45fc: 31 09 sbc r19, r1 + 45fe: 41 09 sbc r20, r1 + 4600: 51 09 sbc r21, r1 + 4602: c9 01 movw r24, r18 + 4604: 1f 91 pop r17 + 4606: 0f 91 pop r16 + 4608: ff 90 pop r15 + 460a: ef 90 pop r14 + 460c: df 90 pop r13 + 460e: cf 90 pop r12 + 4610: bf 90 pop r11 + 4612: af 90 pop r10 + 4614: 08 95 ret + +00004616 <__pack_f>: + 4616: ef 92 push r14 + 4618: ff 92 push r15 + 461a: 0f 93 push r16 + 461c: 1f 93 push r17 + 461e: cf 93 push r28 + 4620: df 93 push r29 + 4622: fc 01 movw r30, r24 + 4624: 24 81 ldd r18, Z+4 ; 0x04 + 4626: 35 81 ldd r19, Z+5 ; 0x05 + 4628: 46 81 ldd r20, Z+6 ; 0x06 + 462a: 57 81 ldd r21, Z+7 ; 0x07 + 462c: 61 81 ldd r22, Z+1 ; 0x01 + 462e: 80 81 ld r24, Z + 4630: 82 30 cpi r24, 0x02 ; 2 + 4632: 20 f4 brcc .+8 ; 0x463c <__pack_f+0x26> + 4634: 40 61 ori r20, 0x10 ; 16 + 4636: ef ef ldi r30, 0xFF ; 255 + 4638: f0 e0 ldi r31, 0x00 ; 0 + 463a: a3 c0 rjmp .+326 ; 0x4782 <__pack_f+0x16c> + 463c: 84 30 cpi r24, 0x04 ; 4 + 463e: 09 f4 brne .+2 ; 0x4642 <__pack_f+0x2c> + 4640: 9b c0 rjmp .+310 ; 0x4778 <__pack_f+0x162> + 4642: 82 30 cpi r24, 0x02 ; 2 + 4644: 09 f4 brne .+2 ; 0x4648 <__pack_f+0x32> + 4646: 92 c0 rjmp .+292 ; 0x476c <__pack_f+0x156> + 4648: 21 15 cp r18, r1 + 464a: 31 05 cpc r19, r1 + 464c: 41 05 cpc r20, r1 + 464e: 51 05 cpc r21, r1 + 4650: 09 f4 brne .+2 ; 0x4654 <__pack_f+0x3e> + 4652: 8f c0 rjmp .+286 ; 0x4772 <__pack_f+0x15c> + 4654: 02 80 ldd r0, Z+2 ; 0x02 + 4656: f3 81 ldd r31, Z+3 ; 0x03 + 4658: e0 2d mov r30, r0 + 465a: 8f ef ldi r24, 0xFF ; 255 + 465c: e2 38 cpi r30, 0x82 ; 130 + 465e: f8 07 cpc r31, r24 + 4660: 0c f0 brlt .+2 ; 0x4664 <__pack_f+0x4e> + 4662: 5a c0 rjmp .+180 ; 0x4718 <__pack_f+0x102> + 4664: c2 e8 ldi r28, 0x82 ; 130 + 4666: df ef ldi r29, 0xFF ; 255 + 4668: ce 1b sub r28, r30 + 466a: df 0b sbc r29, r31 + 466c: ca 31 cpi r28, 0x1A ; 26 + 466e: d1 05 cpc r29, r1 + 4670: 6c f5 brge .+90 ; 0x46cc <__pack_f+0xb6> + 4672: 79 01 movw r14, r18 + 4674: 8a 01 movw r16, r20 + 4676: 0c 2e mov r0, r28 + 4678: 04 c0 rjmp .+8 ; 0x4682 <__pack_f+0x6c> + 467a: 16 95 lsr r17 + 467c: 07 95 ror r16 + 467e: f7 94 ror r15 + 4680: e7 94 ror r14 + 4682: 0a 94 dec r0 + 4684: d2 f7 brpl .-12 ; 0x467a <__pack_f+0x64> + 4686: 81 e0 ldi r24, 0x01 ; 1 + 4688: 90 e0 ldi r25, 0x00 ; 0 + 468a: a0 e0 ldi r26, 0x00 ; 0 + 468c: b0 e0 ldi r27, 0x00 ; 0 + 468e: 0c 2e mov r0, r28 + 4690: 04 c0 rjmp .+8 ; 0x469a <__pack_f+0x84> + 4692: 88 0f add r24, r24 + 4694: 99 1f adc r25, r25 + 4696: aa 1f adc r26, r26 + 4698: bb 1f adc r27, r27 + 469a: 0a 94 dec r0 + 469c: d2 f7 brpl .-12 ; 0x4692 <__pack_f+0x7c> + 469e: 01 97 sbiw r24, 0x01 ; 1 + 46a0: a1 09 sbc r26, r1 + 46a2: b1 09 sbc r27, r1 + 46a4: 82 23 and r24, r18 + 46a6: 93 23 and r25, r19 + 46a8: a4 23 and r26, r20 + 46aa: b5 23 and r27, r21 + 46ac: 21 e0 ldi r18, 0x01 ; 1 + 46ae: 30 e0 ldi r19, 0x00 ; 0 + 46b0: 40 e0 ldi r20, 0x00 ; 0 + 46b2: 50 e0 ldi r21, 0x00 ; 0 + 46b4: 00 97 sbiw r24, 0x00 ; 0 + 46b6: a1 05 cpc r26, r1 + 46b8: b1 05 cpc r27, r1 + 46ba: 19 f4 brne .+6 ; 0x46c2 <__pack_f+0xac> + 46bc: 20 e0 ldi r18, 0x00 ; 0 + 46be: 30 e0 ldi r19, 0x00 ; 0 + 46c0: a9 01 movw r20, r18 + 46c2: 2e 29 or r18, r14 + 46c4: 3f 29 or r19, r15 + 46c6: 40 2b or r20, r16 + 46c8: 51 2b or r21, r17 + 46ca: 03 c0 rjmp .+6 ; 0x46d2 <__pack_f+0xbc> + 46cc: 20 e0 ldi r18, 0x00 ; 0 + 46ce: 30 e0 ldi r19, 0x00 ; 0 + 46d0: a9 01 movw r20, r18 + 46d2: da 01 movw r26, r20 + 46d4: c9 01 movw r24, r18 + 46d6: 8f 77 andi r24, 0x7F ; 127 + 46d8: 90 70 andi r25, 0x00 ; 0 + 46da: a0 70 andi r26, 0x00 ; 0 + 46dc: b0 70 andi r27, 0x00 ; 0 + 46de: 80 34 cpi r24, 0x40 ; 64 + 46e0: 91 05 cpc r25, r1 + 46e2: a1 05 cpc r26, r1 + 46e4: b1 05 cpc r27, r1 + 46e6: 39 f4 brne .+14 ; 0x46f6 <__pack_f+0xe0> + 46e8: 27 ff sbrs r18, 7 + 46ea: 09 c0 rjmp .+18 ; 0x46fe <__pack_f+0xe8> + 46ec: 20 5c subi r18, 0xC0 ; 192 + 46ee: 3f 4f sbci r19, 0xFF ; 255 + 46f0: 4f 4f sbci r20, 0xFF ; 255 + 46f2: 5f 4f sbci r21, 0xFF ; 255 + 46f4: 04 c0 rjmp .+8 ; 0x46fe <__pack_f+0xe8> + 46f6: 21 5c subi r18, 0xC1 ; 193 + 46f8: 3f 4f sbci r19, 0xFF ; 255 + 46fa: 4f 4f sbci r20, 0xFF ; 255 + 46fc: 5f 4f sbci r21, 0xFF ; 255 + 46fe: e1 e0 ldi r30, 0x01 ; 1 + 4700: f0 e0 ldi r31, 0x00 ; 0 + 4702: 20 30 cpi r18, 0x00 ; 0 + 4704: 80 e0 ldi r24, 0x00 ; 0 + 4706: 38 07 cpc r19, r24 + 4708: 80 e0 ldi r24, 0x00 ; 0 + 470a: 48 07 cpc r20, r24 + 470c: 80 e4 ldi r24, 0x40 ; 64 + 470e: 58 07 cpc r21, r24 + 4710: 28 f5 brcc .+74 ; 0x475c <__pack_f+0x146> + 4712: e0 e0 ldi r30, 0x00 ; 0 + 4714: f0 e0 ldi r31, 0x00 ; 0 + 4716: 22 c0 rjmp .+68 ; 0x475c <__pack_f+0x146> + 4718: e0 38 cpi r30, 0x80 ; 128 + 471a: f1 05 cpc r31, r1 + 471c: 6c f5 brge .+90 ; 0x4778 <__pack_f+0x162> + 471e: e1 58 subi r30, 0x81 ; 129 + 4720: ff 4f sbci r31, 0xFF ; 255 + 4722: da 01 movw r26, r20 + 4724: c9 01 movw r24, r18 + 4726: 8f 77 andi r24, 0x7F ; 127 + 4728: 90 70 andi r25, 0x00 ; 0 + 472a: a0 70 andi r26, 0x00 ; 0 + 472c: b0 70 andi r27, 0x00 ; 0 + 472e: 80 34 cpi r24, 0x40 ; 64 + 4730: 91 05 cpc r25, r1 + 4732: a1 05 cpc r26, r1 + 4734: b1 05 cpc r27, r1 + 4736: 39 f4 brne .+14 ; 0x4746 <__pack_f+0x130> + 4738: 27 ff sbrs r18, 7 + 473a: 09 c0 rjmp .+18 ; 0x474e <__pack_f+0x138> + 473c: 20 5c subi r18, 0xC0 ; 192 + 473e: 3f 4f sbci r19, 0xFF ; 255 + 4740: 4f 4f sbci r20, 0xFF ; 255 + 4742: 5f 4f sbci r21, 0xFF ; 255 + 4744: 04 c0 rjmp .+8 ; 0x474e <__pack_f+0x138> + 4746: 21 5c subi r18, 0xC1 ; 193 + 4748: 3f 4f sbci r19, 0xFF ; 255 + 474a: 4f 4f sbci r20, 0xFF ; 255 + 474c: 5f 4f sbci r21, 0xFF ; 255 + 474e: 57 ff sbrs r21, 7 + 4750: 05 c0 rjmp .+10 ; 0x475c <__pack_f+0x146> + 4752: 56 95 lsr r21 + 4754: 47 95 ror r20 + 4756: 37 95 ror r19 + 4758: 27 95 ror r18 + 475a: 31 96 adiw r30, 0x01 ; 1 + 475c: 87 e0 ldi r24, 0x07 ; 7 + 475e: 56 95 lsr r21 + 4760: 47 95 ror r20 + 4762: 37 95 ror r19 + 4764: 27 95 ror r18 + 4766: 8a 95 dec r24 + 4768: d1 f7 brne .-12 ; 0x475e <__pack_f+0x148> + 476a: 0b c0 rjmp .+22 ; 0x4782 <__pack_f+0x16c> + 476c: e0 e0 ldi r30, 0x00 ; 0 + 476e: f0 e0 ldi r31, 0x00 ; 0 + 4770: 05 c0 rjmp .+10 ; 0x477c <__pack_f+0x166> + 4772: e0 e0 ldi r30, 0x00 ; 0 + 4774: f0 e0 ldi r31, 0x00 ; 0 + 4776: 05 c0 rjmp .+10 ; 0x4782 <__pack_f+0x16c> + 4778: ef ef ldi r30, 0xFF ; 255 + 477a: f0 e0 ldi r31, 0x00 ; 0 + 477c: 20 e0 ldi r18, 0x00 ; 0 + 477e: 30 e0 ldi r19, 0x00 ; 0 + 4780: a9 01 movw r20, r18 + 4782: 8e 2f mov r24, r30 + 4784: 87 95 ror r24 + 4786: 88 27 eor r24, r24 + 4788: 87 95 ror r24 + 478a: 94 2f mov r25, r20 + 478c: 9f 77 andi r25, 0x7F ; 127 + 478e: 67 95 ror r22 + 4790: 66 27 eor r22, r22 + 4792: 67 95 ror r22 + 4794: e6 95 lsr r30 + 4796: e2 2e mov r14, r18 + 4798: a9 2f mov r26, r25 + 479a: a8 2b or r26, r24 + 479c: fe 2f mov r31, r30 + 479e: f6 2b or r31, r22 + 47a0: 62 2f mov r22, r18 + 47a2: 73 2f mov r23, r19 + 47a4: 8a 2f mov r24, r26 + 47a6: 9f 2f mov r25, r31 + 47a8: cd b7 in r28, 0x3d ; 61 + 47aa: de b7 in r29, 0x3e ; 62 + 47ac: e6 e0 ldi r30, 0x06 ; 6 + 47ae: 0c 94 46 25 jmp 0x4a8c ; 0x4a8c <__epilogue_restores__+0x18> + +000047b2 <__unpack_f>: + 47b2: dc 01 movw r26, r24 + 47b4: fb 01 movw r30, r22 + 47b6: 2c 91 ld r18, X + 47b8: 11 96 adiw r26, 0x01 ; 1 + 47ba: 3c 91 ld r19, X + 47bc: 11 97 sbiw r26, 0x01 ; 1 + 47be: 12 96 adiw r26, 0x02 ; 2 + 47c0: 8c 91 ld r24, X + 47c2: 12 97 sbiw r26, 0x02 ; 2 + 47c4: 48 2f mov r20, r24 + 47c6: 4f 77 andi r20, 0x7F ; 127 + 47c8: 50 e0 ldi r21, 0x00 ; 0 + 47ca: 98 2f mov r25, r24 + 47cc: 99 1f adc r25, r25 + 47ce: 99 27 eor r25, r25 + 47d0: 99 1f adc r25, r25 + 47d2: 13 96 adiw r26, 0x03 ; 3 + 47d4: 6c 91 ld r22, X + 47d6: 13 97 sbiw r26, 0x03 ; 3 + 47d8: 86 2f mov r24, r22 + 47da: 88 0f add r24, r24 + 47dc: 89 2b or r24, r25 + 47de: 90 e0 ldi r25, 0x00 ; 0 + 47e0: 66 1f adc r22, r22 + 47e2: 66 27 eor r22, r22 + 47e4: 66 1f adc r22, r22 + 47e6: 61 83 std Z+1, r22 ; 0x01 + 47e8: 00 97 sbiw r24, 0x00 ; 0 + 47ea: 39 f5 brne .+78 ; 0x483a <__unpack_f+0x88> + 47ec: 21 15 cp r18, r1 + 47ee: 31 05 cpc r19, r1 + 47f0: 41 05 cpc r20, r1 + 47f2: 51 05 cpc r21, r1 + 47f4: 11 f4 brne .+4 ; 0x47fa <__unpack_f+0x48> + 47f6: 82 e0 ldi r24, 0x02 ; 2 + 47f8: 29 c0 rjmp .+82 ; 0x484c <__unpack_f+0x9a> + 47fa: 82 e8 ldi r24, 0x82 ; 130 + 47fc: 9f ef ldi r25, 0xFF ; 255 + 47fe: 93 83 std Z+3, r25 ; 0x03 + 4800: 82 83 std Z+2, r24 ; 0x02 + 4802: 67 e0 ldi r22, 0x07 ; 7 + 4804: 22 0f add r18, r18 + 4806: 33 1f adc r19, r19 + 4808: 44 1f adc r20, r20 + 480a: 55 1f adc r21, r21 + 480c: 6a 95 dec r22 + 480e: d1 f7 brne .-12 ; 0x4804 <__unpack_f+0x52> + 4810: 83 e0 ldi r24, 0x03 ; 3 + 4812: 80 83 st Z, r24 + 4814: 09 c0 rjmp .+18 ; 0x4828 <__unpack_f+0x76> + 4816: 22 0f add r18, r18 + 4818: 33 1f adc r19, r19 + 481a: 44 1f adc r20, r20 + 481c: 55 1f adc r21, r21 + 481e: 82 81 ldd r24, Z+2 ; 0x02 + 4820: 93 81 ldd r25, Z+3 ; 0x03 + 4822: 01 97 sbiw r24, 0x01 ; 1 + 4824: 93 83 std Z+3, r25 ; 0x03 + 4826: 82 83 std Z+2, r24 ; 0x02 + 4828: 20 30 cpi r18, 0x00 ; 0 + 482a: 80 e0 ldi r24, 0x00 ; 0 + 482c: 38 07 cpc r19, r24 + 482e: 80 e0 ldi r24, 0x00 ; 0 + 4830: 48 07 cpc r20, r24 + 4832: 80 e4 ldi r24, 0x40 ; 64 + 4834: 58 07 cpc r21, r24 + 4836: 78 f3 brcs .-34 ; 0x4816 <__unpack_f+0x64> + 4838: 20 c0 rjmp .+64 ; 0x487a <__unpack_f+0xc8> + 483a: 8f 3f cpi r24, 0xFF ; 255 + 483c: 91 05 cpc r25, r1 + 483e: 79 f4 brne .+30 ; 0x485e <__unpack_f+0xac> + 4840: 21 15 cp r18, r1 + 4842: 31 05 cpc r19, r1 + 4844: 41 05 cpc r20, r1 + 4846: 51 05 cpc r21, r1 + 4848: 19 f4 brne .+6 ; 0x4850 <__unpack_f+0x9e> + 484a: 84 e0 ldi r24, 0x04 ; 4 + 484c: 80 83 st Z, r24 + 484e: 08 95 ret + 4850: 44 ff sbrs r20, 4 + 4852: 03 c0 rjmp .+6 ; 0x485a <__unpack_f+0xa8> + 4854: 81 e0 ldi r24, 0x01 ; 1 + 4856: 80 83 st Z, r24 + 4858: 10 c0 rjmp .+32 ; 0x487a <__unpack_f+0xc8> + 485a: 10 82 st Z, r1 + 485c: 0e c0 rjmp .+28 ; 0x487a <__unpack_f+0xc8> + 485e: 8f 57 subi r24, 0x7F ; 127 + 4860: 90 40 sbci r25, 0x00 ; 0 + 4862: 93 83 std Z+3, r25 ; 0x03 + 4864: 82 83 std Z+2, r24 ; 0x02 + 4866: 83 e0 ldi r24, 0x03 ; 3 + 4868: 80 83 st Z, r24 + 486a: 87 e0 ldi r24, 0x07 ; 7 + 486c: 22 0f add r18, r18 + 486e: 33 1f adc r19, r19 + 4870: 44 1f adc r20, r20 + 4872: 55 1f adc r21, r21 + 4874: 8a 95 dec r24 + 4876: d1 f7 brne .-12 ; 0x486c <__unpack_f+0xba> + 4878: 50 64 ori r21, 0x40 ; 64 + 487a: 24 83 std Z+4, r18 ; 0x04 + 487c: 35 83 std Z+5, r19 ; 0x05 + 487e: 46 83 std Z+6, r20 ; 0x06 + 4880: 57 83 std Z+7, r21 ; 0x07 + 4882: 08 95 ret + +00004884 <__fpcmp_parts_f>: + 4884: fc 01 movw r30, r24 + 4886: db 01 movw r26, r22 + 4888: 90 81 ld r25, Z + 488a: 92 30 cpi r25, 0x02 ; 2 + 488c: 08 f4 brcc .+2 ; 0x4890 <__fpcmp_parts_f+0xc> + 488e: 49 c0 rjmp .+146 ; 0x4922 <__fpcmp_parts_f+0x9e> + 4890: 8c 91 ld r24, X + 4892: 82 30 cpi r24, 0x02 ; 2 + 4894: 08 f4 brcc .+2 ; 0x4898 <__fpcmp_parts_f+0x14> + 4896: 45 c0 rjmp .+138 ; 0x4922 <__fpcmp_parts_f+0x9e> + 4898: 94 30 cpi r25, 0x04 ; 4 + 489a: 51 f4 brne .+20 ; 0x48b0 <__fpcmp_parts_f+0x2c> + 489c: 61 81 ldd r22, Z+1 ; 0x01 + 489e: 84 30 cpi r24, 0x04 ; 4 + 48a0: b1 f5 brne .+108 ; 0x490e <__fpcmp_parts_f+0x8a> + 48a2: 11 96 adiw r26, 0x01 ; 1 + 48a4: 2c 91 ld r18, X + 48a6: 11 97 sbiw r26, 0x01 ; 1 + 48a8: 30 e0 ldi r19, 0x00 ; 0 + 48aa: 26 1b sub r18, r22 + 48ac: 31 09 sbc r19, r1 + 48ae: 41 c0 rjmp .+130 ; 0x4932 <__fpcmp_parts_f+0xae> + 48b0: 84 30 cpi r24, 0x04 ; 4 + 48b2: 21 f0 breq .+8 ; 0x48bc <__fpcmp_parts_f+0x38> + 48b4: 92 30 cpi r25, 0x02 ; 2 + 48b6: 41 f4 brne .+16 ; 0x48c8 <__fpcmp_parts_f+0x44> + 48b8: 82 30 cpi r24, 0x02 ; 2 + 48ba: b1 f1 breq .+108 ; 0x4928 <__fpcmp_parts_f+0xa4> + 48bc: 11 96 adiw r26, 0x01 ; 1 + 48be: 8c 91 ld r24, X + 48c0: 11 97 sbiw r26, 0x01 ; 1 + 48c2: 88 23 and r24, r24 + 48c4: a1 f1 breq .+104 ; 0x492e <__fpcmp_parts_f+0xaa> + 48c6: 2d c0 rjmp .+90 ; 0x4922 <__fpcmp_parts_f+0x9e> + 48c8: 61 81 ldd r22, Z+1 ; 0x01 + 48ca: 82 30 cpi r24, 0x02 ; 2 + 48cc: 01 f1 breq .+64 ; 0x490e <__fpcmp_parts_f+0x8a> + 48ce: 11 96 adiw r26, 0x01 ; 1 + 48d0: 8c 91 ld r24, X + 48d2: 11 97 sbiw r26, 0x01 ; 1 + 48d4: 68 17 cp r22, r24 + 48d6: d9 f4 brne .+54 ; 0x490e <__fpcmp_parts_f+0x8a> + 48d8: 22 81 ldd r18, Z+2 ; 0x02 + 48da: 33 81 ldd r19, Z+3 ; 0x03 + 48dc: 12 96 adiw r26, 0x02 ; 2 + 48de: 8d 91 ld r24, X+ + 48e0: 9c 91 ld r25, X + 48e2: 13 97 sbiw r26, 0x03 ; 3 + 48e4: 82 17 cp r24, r18 + 48e6: 93 07 cpc r25, r19 + 48e8: 94 f0 brlt .+36 ; 0x490e <__fpcmp_parts_f+0x8a> + 48ea: 28 17 cp r18, r24 + 48ec: 39 07 cpc r19, r25 + 48ee: bc f0 brlt .+46 ; 0x491e <__fpcmp_parts_f+0x9a> + 48f0: 24 81 ldd r18, Z+4 ; 0x04 + 48f2: 35 81 ldd r19, Z+5 ; 0x05 + 48f4: 46 81 ldd r20, Z+6 ; 0x06 + 48f6: 57 81 ldd r21, Z+7 ; 0x07 + 48f8: 14 96 adiw r26, 0x04 ; 4 + 48fa: 8d 91 ld r24, X+ + 48fc: 9d 91 ld r25, X+ + 48fe: 0d 90 ld r0, X+ + 4900: bc 91 ld r27, X + 4902: a0 2d mov r26, r0 + 4904: 82 17 cp r24, r18 + 4906: 93 07 cpc r25, r19 + 4908: a4 07 cpc r26, r20 + 490a: b5 07 cpc r27, r21 + 490c: 18 f4 brcc .+6 ; 0x4914 <__fpcmp_parts_f+0x90> + 490e: 66 23 and r22, r22 + 4910: 41 f0 breq .+16 ; 0x4922 <__fpcmp_parts_f+0x9e> + 4912: 0d c0 rjmp .+26 ; 0x492e <__fpcmp_parts_f+0xaa> + 4914: 28 17 cp r18, r24 + 4916: 39 07 cpc r19, r25 + 4918: 4a 07 cpc r20, r26 + 491a: 5b 07 cpc r21, r27 + 491c: 28 f4 brcc .+10 ; 0x4928 <__fpcmp_parts_f+0xa4> + 491e: 66 23 and r22, r22 + 4920: 31 f0 breq .+12 ; 0x492e <__fpcmp_parts_f+0xaa> + 4922: 21 e0 ldi r18, 0x01 ; 1 + 4924: 30 e0 ldi r19, 0x00 ; 0 + 4926: 05 c0 rjmp .+10 ; 0x4932 <__fpcmp_parts_f+0xae> + 4928: 20 e0 ldi r18, 0x00 ; 0 + 492a: 30 e0 ldi r19, 0x00 ; 0 + 492c: 02 c0 rjmp .+4 ; 0x4932 <__fpcmp_parts_f+0xae> + 492e: 2f ef ldi r18, 0xFF ; 255 + 4930: 3f ef ldi r19, 0xFF ; 255 + 4932: c9 01 movw r24, r18 + 4934: 08 95 ret + +00004936 <__mulsi3>: + 4936: 62 9f mul r22, r18 + 4938: d0 01 movw r26, r0 + 493a: 73 9f mul r23, r19 + 493c: f0 01 movw r30, r0 + 493e: 82 9f mul r24, r18 + 4940: e0 0d add r30, r0 + 4942: f1 1d adc r31, r1 + 4944: 64 9f mul r22, r20 + 4946: e0 0d add r30, r0 + 4948: f1 1d adc r31, r1 + 494a: 92 9f mul r25, r18 + 494c: f0 0d add r31, r0 + 494e: 83 9f mul r24, r19 + 4950: f0 0d add r31, r0 + 4952: 74 9f mul r23, r20 + 4954: f0 0d add r31, r0 + 4956: 65 9f mul r22, r21 + 4958: f0 0d add r31, r0 + 495a: 99 27 eor r25, r25 + 495c: 72 9f mul r23, r18 + 495e: b0 0d add r27, r0 + 4960: e1 1d adc r30, r1 + 4962: f9 1f adc r31, r25 + 4964: 63 9f mul r22, r19 + 4966: b0 0d add r27, r0 + 4968: e1 1d adc r30, r1 + 496a: f9 1f adc r31, r25 + 496c: bd 01 movw r22, r26 + 496e: cf 01 movw r24, r30 + 4970: 11 24 eor r1, r1 + 4972: 08 95 ret + +00004974 <__divmodhi4>: + 4974: 97 fb bst r25, 7 + 4976: 09 2e mov r0, r25 + 4978: 07 26 eor r0, r23 + 497a: 0a d0 rcall .+20 ; 0x4990 <__divmodhi4_neg1> + 497c: 77 fd sbrc r23, 7 + 497e: 04 d0 rcall .+8 ; 0x4988 <__divmodhi4_neg2> + 4980: 49 d0 rcall .+146 ; 0x4a14 <__udivmodhi4> + 4982: 06 d0 rcall .+12 ; 0x4990 <__divmodhi4_neg1> + 4984: 00 20 and r0, r0 + 4986: 1a f4 brpl .+6 ; 0x498e <__divmodhi4_exit> + +00004988 <__divmodhi4_neg2>: + 4988: 70 95 com r23 + 498a: 61 95 neg r22 + 498c: 7f 4f sbci r23, 0xFF ; 255 + +0000498e <__divmodhi4_exit>: + 498e: 08 95 ret + +00004990 <__divmodhi4_neg1>: + 4990: f6 f7 brtc .-4 ; 0x498e <__divmodhi4_exit> + 4992: 90 95 com r25 + 4994: 81 95 neg r24 + 4996: 9f 4f sbci r25, 0xFF ; 255 + 4998: 08 95 ret + +0000499a <__udivmodsi4>: + 499a: a1 e2 ldi r26, 0x21 ; 33 + 499c: 1a 2e mov r1, r26 + 499e: aa 1b sub r26, r26 + 49a0: bb 1b sub r27, r27 + 49a2: fd 01 movw r30, r26 + 49a4: 0d c0 rjmp .+26 ; 0x49c0 <__udivmodsi4_ep> + +000049a6 <__udivmodsi4_loop>: + 49a6: aa 1f adc r26, r26 + 49a8: bb 1f adc r27, r27 + 49aa: ee 1f adc r30, r30 + 49ac: ff 1f adc r31, r31 + 49ae: a2 17 cp r26, r18 + 49b0: b3 07 cpc r27, r19 + 49b2: e4 07 cpc r30, r20 + 49b4: f5 07 cpc r31, r21 + 49b6: 20 f0 brcs .+8 ; 0x49c0 <__udivmodsi4_ep> + 49b8: a2 1b sub r26, r18 + 49ba: b3 0b sbc r27, r19 + 49bc: e4 0b sbc r30, r20 + 49be: f5 0b sbc r31, r21 + +000049c0 <__udivmodsi4_ep>: + 49c0: 66 1f adc r22, r22 + 49c2: 77 1f adc r23, r23 + 49c4: 88 1f adc r24, r24 + 49c6: 99 1f adc r25, r25 + 49c8: 1a 94 dec r1 + 49ca: 69 f7 brne .-38 ; 0x49a6 <__udivmodsi4_loop> + 49cc: 60 95 com r22 + 49ce: 70 95 com r23 + 49d0: 80 95 com r24 + 49d2: 90 95 com r25 + 49d4: 9b 01 movw r18, r22 + 49d6: ac 01 movw r20, r24 + 49d8: bd 01 movw r22, r26 + 49da: cf 01 movw r24, r30 + 49dc: 08 95 ret + +000049de <__divmodsi4>: + 49de: 97 fb bst r25, 7 + 49e0: 09 2e mov r0, r25 + 49e2: 05 26 eor r0, r21 + 49e4: 0e d0 rcall .+28 ; 0x4a02 <__divmodsi4_neg1> + 49e6: 57 fd sbrc r21, 7 + 49e8: 04 d0 rcall .+8 ; 0x49f2 <__divmodsi4_neg2> + 49ea: d7 df rcall .-82 ; 0x499a <__udivmodsi4> + 49ec: 0a d0 rcall .+20 ; 0x4a02 <__divmodsi4_neg1> + 49ee: 00 1c adc r0, r0 + 49f0: 38 f4 brcc .+14 ; 0x4a00 <__divmodsi4_exit> + +000049f2 <__divmodsi4_neg2>: + 49f2: 50 95 com r21 + 49f4: 40 95 com r20 + 49f6: 30 95 com r19 + 49f8: 21 95 neg r18 + 49fa: 3f 4f sbci r19, 0xFF ; 255 + 49fc: 4f 4f sbci r20, 0xFF ; 255 + 49fe: 5f 4f sbci r21, 0xFF ; 255 + +00004a00 <__divmodsi4_exit>: + 4a00: 08 95 ret + +00004a02 <__divmodsi4_neg1>: + 4a02: f6 f7 brtc .-4 ; 0x4a00 <__divmodsi4_exit> + 4a04: 90 95 com r25 + 4a06: 80 95 com r24 + 4a08: 70 95 com r23 + 4a0a: 61 95 neg r22 + 4a0c: 7f 4f sbci r23, 0xFF ; 255 + 4a0e: 8f 4f sbci r24, 0xFF ; 255 + 4a10: 9f 4f sbci r25, 0xFF ; 255 + 4a12: 08 95 ret + +00004a14 <__udivmodhi4>: + 4a14: aa 1b sub r26, r26 + 4a16: bb 1b sub r27, r27 + 4a18: 51 e1 ldi r21, 0x11 ; 17 + 4a1a: 07 c0 rjmp .+14 ; 0x4a2a <__udivmodhi4_ep> + +00004a1c <__udivmodhi4_loop>: + 4a1c: aa 1f adc r26, r26 + 4a1e: bb 1f adc r27, r27 + 4a20: a6 17 cp r26, r22 + 4a22: b7 07 cpc r27, r23 + 4a24: 10 f0 brcs .+4 ; 0x4a2a <__udivmodhi4_ep> + 4a26: a6 1b sub r26, r22 + 4a28: b7 0b sbc r27, r23 + +00004a2a <__udivmodhi4_ep>: + 4a2a: 88 1f adc r24, r24 + 4a2c: 99 1f adc r25, r25 + 4a2e: 5a 95 dec r21 + 4a30: a9 f7 brne .-22 ; 0x4a1c <__udivmodhi4_loop> + 4a32: 80 95 com r24 + 4a34: 90 95 com r25 + 4a36: bc 01 movw r22, r24 + 4a38: cd 01 movw r24, r26 + 4a3a: 08 95 ret + +00004a3c <__prologue_saves__>: + 4a3c: 2f 92 push r2 + 4a3e: 3f 92 push r3 + 4a40: 4f 92 push r4 + 4a42: 5f 92 push r5 + 4a44: 6f 92 push r6 + 4a46: 7f 92 push r7 + 4a48: 8f 92 push r8 + 4a4a: 9f 92 push r9 + 4a4c: af 92 push r10 + 4a4e: bf 92 push r11 + 4a50: cf 92 push r12 + 4a52: df 92 push r13 + 4a54: ef 92 push r14 + 4a56: ff 92 push r15 + 4a58: 0f 93 push r16 + 4a5a: 1f 93 push r17 + 4a5c: cf 93 push r28 + 4a5e: df 93 push r29 + 4a60: cd b7 in r28, 0x3d ; 61 + 4a62: de b7 in r29, 0x3e ; 62 + 4a64: ca 1b sub r28, r26 + 4a66: db 0b sbc r29, r27 + 4a68: 0f b6 in r0, 0x3f ; 63 + 4a6a: f8 94 cli + 4a6c: de bf out 0x3e, r29 ; 62 + 4a6e: 0f be out 0x3f, r0 ; 63 + 4a70: cd bf out 0x3d, r28 ; 61 + 4a72: 09 94 ijmp + +00004a74 <__epilogue_restores__>: + 4a74: 2a 88 ldd r2, Y+18 ; 0x12 + 4a76: 39 88 ldd r3, Y+17 ; 0x11 + 4a78: 48 88 ldd r4, Y+16 ; 0x10 + 4a7a: 5f 84 ldd r5, Y+15 ; 0x0f + 4a7c: 6e 84 ldd r6, Y+14 ; 0x0e + 4a7e: 7d 84 ldd r7, Y+13 ; 0x0d + 4a80: 8c 84 ldd r8, Y+12 ; 0x0c + 4a82: 9b 84 ldd r9, Y+11 ; 0x0b + 4a84: aa 84 ldd r10, Y+10 ; 0x0a + 4a86: b9 84 ldd r11, Y+9 ; 0x09 + 4a88: c8 84 ldd r12, Y+8 ; 0x08 + 4a8a: df 80 ldd r13, Y+7 ; 0x07 + 4a8c: ee 80 ldd r14, Y+6 ; 0x06 + 4a8e: fd 80 ldd r15, Y+5 ; 0x05 + 4a90: 0c 81 ldd r16, Y+4 ; 0x04 + 4a92: 1b 81 ldd r17, Y+3 ; 0x03 + 4a94: aa 81 ldd r26, Y+2 ; 0x02 + 4a96: b9 81 ldd r27, Y+1 ; 0x01 + 4a98: ce 0f add r28, r30 + 4a9a: d1 1d adc r29, r1 + 4a9c: 0f b6 in r0, 0x3f ; 63 + 4a9e: f8 94 cli + 4aa0: de bf out 0x3e, r29 ; 62 + 4aa2: 0f be out 0x3f, r0 ; 63 + 4aa4: cd bf out 0x3d, r28 ; 61 + 4aa6: ed 01 movw r28, r26 + 4aa8: 08 95 ret + +00004aaa <__tablejump2__>: + 4aaa: ee 0f add r30, r30 + 4aac: ff 1f adc r31, r31 + +00004aae <__tablejump__>: + 4aae: 05 90 lpm r0, Z+ + 4ab0: f4 91 lpm r31, Z+ + 4ab2: e0 2d mov r30, r0 + 4ab4: 09 94 ijmp + +00004ab6 <malloc>: + 4ab6: cf 93 push r28 + 4ab8: df 93 push r29 + 4aba: 82 30 cpi r24, 0x02 ; 2 + 4abc: 91 05 cpc r25, r1 + 4abe: 10 f4 brcc .+4 ; 0x4ac4 <malloc+0xe> + 4ac0: 82 e0 ldi r24, 0x02 ; 2 + 4ac2: 90 e0 ldi r25, 0x00 ; 0 + 4ac4: e0 91 8e 04 lds r30, 0x048E + 4ac8: f0 91 8f 04 lds r31, 0x048F + 4acc: 40 e0 ldi r20, 0x00 ; 0 + 4ace: 50 e0 ldi r21, 0x00 ; 0 + 4ad0: 20 e0 ldi r18, 0x00 ; 0 + 4ad2: 30 e0 ldi r19, 0x00 ; 0 + 4ad4: 26 c0 rjmp .+76 ; 0x4b22 <malloc+0x6c> + 4ad6: 60 81 ld r22, Z + 4ad8: 71 81 ldd r23, Z+1 ; 0x01 + 4ada: 68 17 cp r22, r24 + 4adc: 79 07 cpc r23, r25 + 4ade: e0 f0 brcs .+56 ; 0x4b18 <malloc+0x62> + 4ae0: 68 17 cp r22, r24 + 4ae2: 79 07 cpc r23, r25 + 4ae4: 81 f4 brne .+32 ; 0x4b06 <malloc+0x50> + 4ae6: 82 81 ldd r24, Z+2 ; 0x02 + 4ae8: 93 81 ldd r25, Z+3 ; 0x03 + 4aea: 21 15 cp r18, r1 + 4aec: 31 05 cpc r19, r1 + 4aee: 31 f0 breq .+12 ; 0x4afc <malloc+0x46> + 4af0: d9 01 movw r26, r18 + 4af2: 13 96 adiw r26, 0x03 ; 3 + 4af4: 9c 93 st X, r25 + 4af6: 8e 93 st -X, r24 + 4af8: 12 97 sbiw r26, 0x02 ; 2 + 4afa: 2b c0 rjmp .+86 ; 0x4b52 <malloc+0x9c> + 4afc: 90 93 8f 04 sts 0x048F, r25 + 4b00: 80 93 8e 04 sts 0x048E, r24 + 4b04: 26 c0 rjmp .+76 ; 0x4b52 <malloc+0x9c> + 4b06: 41 15 cp r20, r1 + 4b08: 51 05 cpc r21, r1 + 4b0a: 19 f0 breq .+6 ; 0x4b12 <malloc+0x5c> + 4b0c: 64 17 cp r22, r20 + 4b0e: 75 07 cpc r23, r21 + 4b10: 18 f4 brcc .+6 ; 0x4b18 <malloc+0x62> + 4b12: ab 01 movw r20, r22 + 4b14: e9 01 movw r28, r18 + 4b16: df 01 movw r26, r30 + 4b18: 9f 01 movw r18, r30 + 4b1a: 72 81 ldd r23, Z+2 ; 0x02 + 4b1c: 63 81 ldd r22, Z+3 ; 0x03 + 4b1e: e7 2f mov r30, r23 + 4b20: f6 2f mov r31, r22 + 4b22: 30 97 sbiw r30, 0x00 ; 0 + 4b24: c1 f6 brne .-80 ; 0x4ad6 <malloc+0x20> + 4b26: 41 15 cp r20, r1 + 4b28: 51 05 cpc r21, r1 + 4b2a: 01 f1 breq .+64 ; 0x4b6c <malloc+0xb6> + 4b2c: 48 1b sub r20, r24 + 4b2e: 59 0b sbc r21, r25 + 4b30: 44 30 cpi r20, 0x04 ; 4 + 4b32: 51 05 cpc r21, r1 + 4b34: 80 f4 brcc .+32 ; 0x4b56 <malloc+0xa0> + 4b36: 12 96 adiw r26, 0x02 ; 2 + 4b38: 8d 91 ld r24, X+ + 4b3a: 9c 91 ld r25, X + 4b3c: 13 97 sbiw r26, 0x03 ; 3 + 4b3e: 20 97 sbiw r28, 0x00 ; 0 + 4b40: 19 f0 breq .+6 ; 0x4b48 <malloc+0x92> + 4b42: 9b 83 std Y+3, r25 ; 0x03 + 4b44: 8a 83 std Y+2, r24 ; 0x02 + 4b46: 04 c0 rjmp .+8 ; 0x4b50 <malloc+0x9a> + 4b48: 90 93 8f 04 sts 0x048F, r25 + 4b4c: 80 93 8e 04 sts 0x048E, r24 + 4b50: fd 01 movw r30, r26 + 4b52: 32 96 adiw r30, 0x02 ; 2 + 4b54: 46 c0 rjmp .+140 ; 0x4be2 <malloc+0x12c> + 4b56: fd 01 movw r30, r26 + 4b58: e4 0f add r30, r20 + 4b5a: f5 1f adc r31, r21 + 4b5c: 81 93 st Z+, r24 + 4b5e: 91 93 st Z+, r25 + 4b60: 42 50 subi r20, 0x02 ; 2 + 4b62: 50 40 sbci r21, 0x00 ; 0 + 4b64: 11 96 adiw r26, 0x01 ; 1 + 4b66: 5c 93 st X, r21 + 4b68: 4e 93 st -X, r20 + 4b6a: 3b c0 rjmp .+118 ; 0x4be2 <malloc+0x12c> + 4b6c: 20 91 8c 04 lds r18, 0x048C + 4b70: 30 91 8d 04 lds r19, 0x048D + 4b74: 21 15 cp r18, r1 + 4b76: 31 05 cpc r19, r1 + 4b78: 41 f4 brne .+16 ; 0x4b8a <malloc+0xd4> + 4b7a: 20 91 d8 02 lds r18, 0x02D8 + 4b7e: 30 91 d9 02 lds r19, 0x02D9 + 4b82: 30 93 8d 04 sts 0x048D, r19 + 4b86: 20 93 8c 04 sts 0x048C, r18 + 4b8a: 20 91 da 02 lds r18, 0x02DA + 4b8e: 30 91 db 02 lds r19, 0x02DB + 4b92: 21 15 cp r18, r1 + 4b94: 31 05 cpc r19, r1 + 4b96: 41 f4 brne .+16 ; 0x4ba8 <malloc+0xf2> + 4b98: 2d b7 in r18, 0x3d ; 61 + 4b9a: 3e b7 in r19, 0x3e ; 62 + 4b9c: 40 91 d6 02 lds r20, 0x02D6 + 4ba0: 50 91 d7 02 lds r21, 0x02D7 + 4ba4: 24 1b sub r18, r20 + 4ba6: 35 0b sbc r19, r21 + 4ba8: e0 91 8c 04 lds r30, 0x048C + 4bac: f0 91 8d 04 lds r31, 0x048D + 4bb0: e2 17 cp r30, r18 + 4bb2: f3 07 cpc r31, r19 + 4bb4: a0 f4 brcc .+40 ; 0x4bde <malloc+0x128> + 4bb6: 2e 1b sub r18, r30 + 4bb8: 3f 0b sbc r19, r31 + 4bba: 28 17 cp r18, r24 + 4bbc: 39 07 cpc r19, r25 + 4bbe: 78 f0 brcs .+30 ; 0x4bde <malloc+0x128> + 4bc0: ac 01 movw r20, r24 + 4bc2: 4e 5f subi r20, 0xFE ; 254 + 4bc4: 5f 4f sbci r21, 0xFF ; 255 + 4bc6: 24 17 cp r18, r20 + 4bc8: 35 07 cpc r19, r21 + 4bca: 48 f0 brcs .+18 ; 0x4bde <malloc+0x128> + 4bcc: 4e 0f add r20, r30 + 4bce: 5f 1f adc r21, r31 + 4bd0: 50 93 8d 04 sts 0x048D, r21 + 4bd4: 40 93 8c 04 sts 0x048C, r20 + 4bd8: 81 93 st Z+, r24 + 4bda: 91 93 st Z+, r25 + 4bdc: 02 c0 rjmp .+4 ; 0x4be2 <malloc+0x12c> + 4bde: e0 e0 ldi r30, 0x00 ; 0 + 4be0: f0 e0 ldi r31, 0x00 ; 0 + 4be2: cf 01 movw r24, r30 + 4be4: df 91 pop r29 + 4be6: cf 91 pop r28 + 4be8: 08 95 ret + +00004bea <free>: + 4bea: cf 93 push r28 + 4bec: df 93 push r29 + 4bee: 00 97 sbiw r24, 0x00 ; 0 + 4bf0: 09 f4 brne .+2 ; 0x4bf4 <free+0xa> + 4bf2: 91 c0 rjmp .+290 ; 0x4d16 <free+0x12c> + 4bf4: fc 01 movw r30, r24 + 4bf6: 32 97 sbiw r30, 0x02 ; 2 + 4bf8: 13 82 std Z+3, r1 ; 0x03 + 4bfa: 12 82 std Z+2, r1 ; 0x02 + 4bfc: 60 91 8e 04 lds r22, 0x048E + 4c00: 70 91 8f 04 lds r23, 0x048F + 4c04: 61 15 cp r22, r1 + 4c06: 71 05 cpc r23, r1 + 4c08: 81 f4 brne .+32 ; 0x4c2a <free+0x40> + 4c0a: 20 81 ld r18, Z + 4c0c: 31 81 ldd r19, Z+1 ; 0x01 + 4c0e: 28 0f add r18, r24 + 4c10: 39 1f adc r19, r25 + 4c12: 80 91 8c 04 lds r24, 0x048C + 4c16: 90 91 8d 04 lds r25, 0x048D + 4c1a: 82 17 cp r24, r18 + 4c1c: 93 07 cpc r25, r19 + 4c1e: 99 f5 brne .+102 ; 0x4c86 <free+0x9c> + 4c20: f0 93 8d 04 sts 0x048D, r31 + 4c24: e0 93 8c 04 sts 0x048C, r30 + 4c28: 76 c0 rjmp .+236 ; 0x4d16 <free+0x12c> + 4c2a: db 01 movw r26, r22 + 4c2c: 80 e0 ldi r24, 0x00 ; 0 + 4c2e: 90 e0 ldi r25, 0x00 ; 0 + 4c30: 02 c0 rjmp .+4 ; 0x4c36 <free+0x4c> + 4c32: cd 01 movw r24, r26 + 4c34: d9 01 movw r26, r18 + 4c36: ae 17 cp r26, r30 + 4c38: bf 07 cpc r27, r31 + 4c3a: 48 f4 brcc .+18 ; 0x4c4e <free+0x64> + 4c3c: 12 96 adiw r26, 0x02 ; 2 + 4c3e: 2d 91 ld r18, X+ + 4c40: 3c 91 ld r19, X + 4c42: 13 97 sbiw r26, 0x03 ; 3 + 4c44: 21 15 cp r18, r1 + 4c46: 31 05 cpc r19, r1 + 4c48: a1 f7 brne .-24 ; 0x4c32 <free+0x48> + 4c4a: cd 01 movw r24, r26 + 4c4c: 21 c0 rjmp .+66 ; 0x4c90 <free+0xa6> + 4c4e: b3 83 std Z+3, r27 ; 0x03 + 4c50: a2 83 std Z+2, r26 ; 0x02 + 4c52: ef 01 movw r28, r30 + 4c54: 49 91 ld r20, Y+ + 4c56: 59 91 ld r21, Y+ + 4c58: 9e 01 movw r18, r28 + 4c5a: 24 0f add r18, r20 + 4c5c: 35 1f adc r19, r21 + 4c5e: a2 17 cp r26, r18 + 4c60: b3 07 cpc r27, r19 + 4c62: 79 f4 brne .+30 ; 0x4c82 <free+0x98> + 4c64: 2d 91 ld r18, X+ + 4c66: 3c 91 ld r19, X + 4c68: 11 97 sbiw r26, 0x01 ; 1 + 4c6a: 24 0f add r18, r20 + 4c6c: 35 1f adc r19, r21 + 4c6e: 2e 5f subi r18, 0xFE ; 254 + 4c70: 3f 4f sbci r19, 0xFF ; 255 + 4c72: 31 83 std Z+1, r19 ; 0x01 + 4c74: 20 83 st Z, r18 + 4c76: 12 96 adiw r26, 0x02 ; 2 + 4c78: 2d 91 ld r18, X+ + 4c7a: 3c 91 ld r19, X + 4c7c: 13 97 sbiw r26, 0x03 ; 3 + 4c7e: 33 83 std Z+3, r19 ; 0x03 + 4c80: 22 83 std Z+2, r18 ; 0x02 + 4c82: 00 97 sbiw r24, 0x00 ; 0 + 4c84: 29 f4 brne .+10 ; 0x4c90 <free+0xa6> + 4c86: f0 93 8f 04 sts 0x048F, r31 + 4c8a: e0 93 8e 04 sts 0x048E, r30 + 4c8e: 43 c0 rjmp .+134 ; 0x4d16 <free+0x12c> + 4c90: dc 01 movw r26, r24 + 4c92: 13 96 adiw r26, 0x03 ; 3 + 4c94: fc 93 st X, r31 + 4c96: ee 93 st -X, r30 + 4c98: 12 97 sbiw r26, 0x02 ; 2 + 4c9a: 4d 91 ld r20, X+ + 4c9c: 5d 91 ld r21, X+ + 4c9e: a4 0f add r26, r20 + 4ca0: b5 1f adc r27, r21 + 4ca2: ea 17 cp r30, r26 + 4ca4: fb 07 cpc r31, r27 + 4ca6: 69 f4 brne .+26 ; 0x4cc2 <free+0xd8> + 4ca8: 20 81 ld r18, Z + 4caa: 31 81 ldd r19, Z+1 ; 0x01 + 4cac: 24 0f add r18, r20 + 4cae: 35 1f adc r19, r21 + 4cb0: 2e 5f subi r18, 0xFE ; 254 + 4cb2: 3f 4f sbci r19, 0xFF ; 255 + 4cb4: ec 01 movw r28, r24 + 4cb6: 39 83 std Y+1, r19 ; 0x01 + 4cb8: 28 83 st Y, r18 + 4cba: 22 81 ldd r18, Z+2 ; 0x02 + 4cbc: 33 81 ldd r19, Z+3 ; 0x03 + 4cbe: 3b 83 std Y+3, r19 ; 0x03 + 4cc0: 2a 83 std Y+2, r18 ; 0x02 + 4cc2: e0 e0 ldi r30, 0x00 ; 0 + 4cc4: f0 e0 ldi r31, 0x00 ; 0 + 4cc6: 02 c0 rjmp .+4 ; 0x4ccc <free+0xe2> + 4cc8: fb 01 movw r30, r22 + 4cca: bc 01 movw r22, r24 + 4ccc: db 01 movw r26, r22 + 4cce: 12 96 adiw r26, 0x02 ; 2 + 4cd0: 8d 91 ld r24, X+ + 4cd2: 9c 91 ld r25, X + 4cd4: 13 97 sbiw r26, 0x03 ; 3 + 4cd6: 00 97 sbiw r24, 0x00 ; 0 + 4cd8: b9 f7 brne .-18 ; 0x4cc8 <free+0xde> + 4cda: 9b 01 movw r18, r22 + 4cdc: 2e 5f subi r18, 0xFE ; 254 + 4cde: 3f 4f sbci r19, 0xFF ; 255 + 4ce0: 8d 91 ld r24, X+ + 4ce2: 9c 91 ld r25, X + 4ce4: 11 97 sbiw r26, 0x01 ; 1 + 4ce6: 82 0f add r24, r18 + 4ce8: 93 1f adc r25, r19 + 4cea: 40 91 8c 04 lds r20, 0x048C + 4cee: 50 91 8d 04 lds r21, 0x048D + 4cf2: 48 17 cp r20, r24 + 4cf4: 59 07 cpc r21, r25 + 4cf6: 79 f4 brne .+30 ; 0x4d16 <free+0x12c> + 4cf8: 30 97 sbiw r30, 0x00 ; 0 + 4cfa: 29 f4 brne .+10 ; 0x4d06 <free+0x11c> + 4cfc: 10 92 8f 04 sts 0x048F, r1 + 4d00: 10 92 8e 04 sts 0x048E, r1 + 4d04: 02 c0 rjmp .+4 ; 0x4d0a <free+0x120> + 4d06: 13 82 std Z+3, r1 ; 0x03 + 4d08: 12 82 std Z+2, r1 ; 0x02 + 4d0a: 22 50 subi r18, 0x02 ; 2 + 4d0c: 30 40 sbci r19, 0x00 ; 0 + 4d0e: 30 93 8d 04 sts 0x048D, r19 + 4d12: 20 93 8c 04 sts 0x048C, r18 + 4d16: df 91 pop r29 + 4d18: cf 91 pop r28 + 4d1a: 08 95 ret + +00004d1c <do_random>: + 4d1c: a0 e0 ldi r26, 0x00 ; 0 + 4d1e: b0 e0 ldi r27, 0x00 ; 0 + 4d20: e4 e9 ldi r30, 0x94 ; 148 + 4d22: f6 e2 ldi r31, 0x26 ; 38 + 4d24: 0c 94 26 25 jmp 0x4a4c ; 0x4a4c <__prologue_saves__+0x10> + 4d28: ec 01 movw r28, r24 + 4d2a: 68 81 ld r22, Y + 4d2c: 79 81 ldd r23, Y+1 ; 0x01 + 4d2e: 8a 81 ldd r24, Y+2 ; 0x02 + 4d30: 9b 81 ldd r25, Y+3 ; 0x03 + 4d32: 61 15 cp r22, r1 + 4d34: 71 05 cpc r23, r1 + 4d36: 81 05 cpc r24, r1 + 4d38: 91 05 cpc r25, r1 + 4d3a: 21 f4 brne .+8 ; 0x4d44 <do_random+0x28> + 4d3c: 64 e2 ldi r22, 0x24 ; 36 + 4d3e: 79 ed ldi r23, 0xD9 ; 217 + 4d40: 8b e5 ldi r24, 0x5B ; 91 + 4d42: 97 e0 ldi r25, 0x07 ; 7 + 4d44: 2d e1 ldi r18, 0x1D ; 29 + 4d46: 33 ef ldi r19, 0xF3 ; 243 + 4d48: 41 e0 ldi r20, 0x01 ; 1 + 4d4a: 50 e0 ldi r21, 0x00 ; 0 + 4d4c: 0e 94 ef 24 call 0x49de ; 0x49de <__divmodsi4> + 4d50: 79 01 movw r14, r18 + 4d52: 8a 01 movw r16, r20 + 4d54: 27 ea ldi r18, 0xA7 ; 167 + 4d56: 31 e4 ldi r19, 0x41 ; 65 + 4d58: 40 e0 ldi r20, 0x00 ; 0 + 4d5a: 50 e0 ldi r21, 0x00 ; 0 + 4d5c: 0e 94 9b 24 call 0x4936 ; 0x4936 <__mulsi3> + 4d60: 5b 01 movw r10, r22 + 4d62: 6c 01 movw r12, r24 + 4d64: c8 01 movw r24, r16 + 4d66: b7 01 movw r22, r14 + 4d68: 2c ee ldi r18, 0xEC ; 236 + 4d6a: 34 ef ldi r19, 0xF4 ; 244 + 4d6c: 4f ef ldi r20, 0xFF ; 255 + 4d6e: 5f ef ldi r21, 0xFF ; 255 + 4d70: 0e 94 9b 24 call 0x4936 ; 0x4936 <__mulsi3> + 4d74: 9b 01 movw r18, r22 + 4d76: ac 01 movw r20, r24 + 4d78: 2a 0d add r18, r10 + 4d7a: 3b 1d adc r19, r11 + 4d7c: 4c 1d adc r20, r12 + 4d7e: 5d 1d adc r21, r13 + 4d80: 57 ff sbrs r21, 7 + 4d82: 04 c0 rjmp .+8 ; 0x4d8c <do_random+0x70> + 4d84: 21 50 subi r18, 0x01 ; 1 + 4d86: 30 40 sbci r19, 0x00 ; 0 + 4d88: 40 40 sbci r20, 0x00 ; 0 + 4d8a: 50 48 sbci r21, 0x80 ; 128 + 4d8c: 28 83 st Y, r18 + 4d8e: 39 83 std Y+1, r19 ; 0x01 + 4d90: 4a 83 std Y+2, r20 ; 0x02 + 4d92: 5b 83 std Y+3, r21 ; 0x03 + 4d94: 5f 77 andi r21, 0x7F ; 127 + 4d96: b9 01 movw r22, r18 + 4d98: ca 01 movw r24, r20 + 4d9a: cd b7 in r28, 0x3d ; 61 + 4d9c: de b7 in r29, 0x3e ; 62 + 4d9e: ea e0 ldi r30, 0x0A ; 10 + 4da0: 0c 94 42 25 jmp 0x4a84 ; 0x4a84 <__epilogue_restores__+0x10> + +00004da4 <random_r>: + 4da4: 0e 94 8e 26 call 0x4d1c ; 0x4d1c <do_random> + 4da8: 08 95 ret + +00004daa <random>: + 4daa: 8c ed ldi r24, 0xDC ; 220 + 4dac: 92 e0 ldi r25, 0x02 ; 2 + 4dae: 0e 94 8e 26 call 0x4d1c ; 0x4d1c <do_random> + 4db2: 08 95 ret + +00004db4 <srandom>: + 4db4: 60 93 dc 02 sts 0x02DC, r22 + 4db8: 70 93 dd 02 sts 0x02DD, r23 + 4dbc: 80 93 de 02 sts 0x02DE, r24 + 4dc0: 90 93 df 02 sts 0x02DF, r25 + 4dc4: 08 95 ret + +00004dc6 <realloc>: + 4dc6: a0 e0 ldi r26, 0x00 ; 0 + 4dc8: b0 e0 ldi r27, 0x00 ; 0 + 4dca: e9 ee ldi r30, 0xE9 ; 233 + 4dcc: f6 e2 ldi r31, 0x26 ; 38 + 4dce: 0c 94 24 25 jmp 0x4a48 ; 0x4a48 <__prologue_saves__+0xc> + 4dd2: 8c 01 movw r16, r24 + 4dd4: cb 01 movw r24, r22 + 4dd6: 01 15 cp r16, r1 + 4dd8: 11 05 cpc r17, r1 + 4dda: 29 f4 brne .+10 ; 0x4de6 <realloc+0x20> + 4ddc: 0e 94 5b 25 call 0x4ab6 ; 0x4ab6 <malloc> + 4de0: 08 2f mov r16, r24 + 4de2: 19 2f mov r17, r25 + 4de4: b5 c0 rjmp .+362 ; 0x4f50 <realloc+0x18a> + 4de6: d8 01 movw r26, r16 + 4de8: 12 97 sbiw r26, 0x02 ; 2 + 4dea: 98 01 movw r18, r16 + 4dec: 26 0f add r18, r22 + 4dee: 37 1f adc r19, r23 + 4df0: 2a 17 cp r18, r26 + 4df2: 3b 07 cpc r19, r27 + 4df4: 08 f4 brcc .+2 ; 0x4df8 <realloc+0x32> + 4df6: aa c0 rjmp .+340 ; 0x4f4c <realloc+0x186> + 4df8: ed 90 ld r14, X+ + 4dfa: fc 90 ld r15, X + 4dfc: 11 97 sbiw r26, 0x01 ; 1 + 4dfe: e6 16 cp r14, r22 + 4e00: f7 06 cpc r15, r23 + 4e02: d0 f0 brcs .+52 ; 0x4e38 <realloc+0x72> + 4e04: 45 e0 ldi r20, 0x05 ; 5 + 4e06: e4 16 cp r14, r20 + 4e08: f1 04 cpc r15, r1 + 4e0a: 08 f4 brcc .+2 ; 0x4e0e <realloc+0x48> + 4e0c: a1 c0 rjmp .+322 ; 0x4f50 <realloc+0x18a> + 4e0e: a7 01 movw r20, r14 + 4e10: 44 50 subi r20, 0x04 ; 4 + 4e12: 50 40 sbci r21, 0x00 ; 0 + 4e14: 46 17 cp r20, r22 + 4e16: 57 07 cpc r21, r23 + 4e18: 08 f4 brcc .+2 ; 0x4e1c <realloc+0x56> + 4e1a: 9a c0 rjmp .+308 ; 0x4f50 <realloc+0x18a> + 4e1c: a7 01 movw r20, r14 + 4e1e: 42 50 subi r20, 0x02 ; 2 + 4e20: 50 40 sbci r21, 0x00 ; 0 + 4e22: 46 1b sub r20, r22 + 4e24: 57 0b sbc r21, r23 + 4e26: f9 01 movw r30, r18 + 4e28: 41 93 st Z+, r20 + 4e2a: 51 93 st Z+, r21 + 4e2c: 6d 93 st X+, r22 + 4e2e: 7c 93 st X, r23 + 4e30: cf 01 movw r24, r30 + 4e32: 0e 94 f5 25 call 0x4bea ; 0x4bea <free> + 4e36: 8c c0 rjmp .+280 ; 0x4f50 <realloc+0x18a> + 4e38: 5b 01 movw r10, r22 + 4e3a: ae 18 sub r10, r14 + 4e3c: bf 08 sbc r11, r15 + 4e3e: 48 01 movw r8, r16 + 4e40: 8e 0c add r8, r14 + 4e42: 9f 1c adc r9, r15 + 4e44: e0 91 8e 04 lds r30, 0x048E + 4e48: f0 91 8f 04 lds r31, 0x048F + 4e4c: cc 24 eor r12, r12 + 4e4e: dd 24 eor r13, r13 + 4e50: c0 e0 ldi r28, 0x00 ; 0 + 4e52: d0 e0 ldi r29, 0x00 ; 0 + 4e54: 41 c0 rjmp .+130 ; 0x4ed8 <realloc+0x112> + 4e56: e8 15 cp r30, r8 + 4e58: f9 05 cpc r31, r9 + 4e5a: 99 f5 brne .+102 ; 0x4ec2 <realloc+0xfc> + 4e5c: 60 81 ld r22, Z + 4e5e: 71 81 ldd r23, Z+1 ; 0x01 + 4e60: ab 01 movw r20, r22 + 4e62: 4e 5f subi r20, 0xFE ; 254 + 4e64: 5f 4f sbci r21, 0xFF ; 255 + 4e66: 4a 15 cp r20, r10 + 4e68: 5b 05 cpc r21, r11 + 4e6a: 58 f1 brcs .+86 ; 0x4ec2 <realloc+0xfc> + 4e6c: ab 01 movw r20, r22 + 4e6e: 4a 19 sub r20, r10 + 4e70: 5b 09 sbc r21, r11 + 4e72: cc 24 eor r12, r12 + 4e74: dd 24 eor r13, r13 + 4e76: 68 94 set + 4e78: c1 f8 bld r12, 1 + 4e7a: c4 0e add r12, r20 + 4e7c: d5 1e adc r13, r21 + 4e7e: 82 80 ldd r8, Z+2 ; 0x02 + 4e80: a3 80 ldd r10, Z+3 ; 0x03 + 4e82: e5 e0 ldi r30, 0x05 ; 5 + 4e84: ce 16 cp r12, r30 + 4e86: d1 04 cpc r13, r1 + 4e88: 48 f0 brcs .+18 ; 0x4e9c <realloc+0xd6> + 4e8a: f9 01 movw r30, r18 + 4e8c: 82 82 std Z+2, r8 ; 0x02 + 4e8e: a3 82 std Z+3, r10 ; 0x03 + 4e90: 51 83 std Z+1, r21 ; 0x01 + 4e92: 40 83 st Z, r20 + 4e94: 11 96 adiw r26, 0x01 ; 1 + 4e96: 9c 93 st X, r25 + 4e98: 8e 93 st -X, r24 + 4e9a: 09 c0 rjmp .+18 ; 0x4eae <realloc+0xe8> + 4e9c: c7 01 movw r24, r14 + 4e9e: 02 96 adiw r24, 0x02 ; 2 + 4ea0: 86 0f add r24, r22 + 4ea2: 97 1f adc r25, r23 + 4ea4: 11 96 adiw r26, 0x01 ; 1 + 4ea6: 9c 93 st X, r25 + 4ea8: 8e 93 st -X, r24 + 4eaa: e8 2d mov r30, r8 + 4eac: fa 2d mov r31, r10 + 4eae: 20 97 sbiw r28, 0x00 ; 0 + 4eb0: 19 f0 breq .+6 ; 0x4eb8 <realloc+0xf2> + 4eb2: fb 83 std Y+3, r31 ; 0x03 + 4eb4: ea 83 std Y+2, r30 ; 0x02 + 4eb6: 4c c0 rjmp .+152 ; 0x4f50 <realloc+0x18a> + 4eb8: f0 93 8f 04 sts 0x048F, r31 + 4ebc: e0 93 8e 04 sts 0x048E, r30 + 4ec0: 47 c0 rjmp .+142 ; 0x4f50 <realloc+0x18a> + 4ec2: 40 81 ld r20, Z + 4ec4: 51 81 ldd r21, Z+1 ; 0x01 + 4ec6: c4 16 cp r12, r20 + 4ec8: d5 06 cpc r13, r21 + 4eca: 08 f4 brcc .+2 ; 0x4ece <realloc+0x108> + 4ecc: 6a 01 movw r12, r20 + 4ece: ef 01 movw r28, r30 + 4ed0: 52 81 ldd r21, Z+2 ; 0x02 + 4ed2: 43 81 ldd r20, Z+3 ; 0x03 + 4ed4: e5 2f mov r30, r21 + 4ed6: f4 2f mov r31, r20 + 4ed8: 30 97 sbiw r30, 0x00 ; 0 + 4eda: 09 f0 breq .+2 ; 0x4ede <realloc+0x118> + 4edc: bc cf rjmp .-136 ; 0x4e56 <realloc+0x90> + 4ede: 40 91 8c 04 lds r20, 0x048C + 4ee2: 50 91 8d 04 lds r21, 0x048D + 4ee6: 48 15 cp r20, r8 + 4ee8: 59 05 cpc r21, r9 + 4eea: e9 f4 brne .+58 ; 0x4f26 <realloc+0x160> + 4eec: c8 16 cp r12, r24 + 4eee: d9 06 cpc r13, r25 + 4ef0: d0 f4 brcc .+52 ; 0x4f26 <realloc+0x160> + 4ef2: 40 91 da 02 lds r20, 0x02DA + 4ef6: 50 91 db 02 lds r21, 0x02DB + 4efa: 41 15 cp r20, r1 + 4efc: 51 05 cpc r21, r1 + 4efe: 41 f4 brne .+16 ; 0x4f10 <realloc+0x14a> + 4f00: 4d b7 in r20, 0x3d ; 61 + 4f02: 5e b7 in r21, 0x3e ; 62 + 4f04: 60 91 d6 02 lds r22, 0x02D6 + 4f08: 70 91 d7 02 lds r23, 0x02D7 + 4f0c: 46 1b sub r20, r22 + 4f0e: 57 0b sbc r21, r23 + 4f10: 24 17 cp r18, r20 + 4f12: 35 07 cpc r19, r21 + 4f14: d8 f4 brcc .+54 ; 0x4f4c <realloc+0x186> + 4f16: 30 93 8d 04 sts 0x048D, r19 + 4f1a: 20 93 8c 04 sts 0x048C, r18 + 4f1e: 11 96 adiw r26, 0x01 ; 1 + 4f20: 9c 93 st X, r25 + 4f22: 8e 93 st -X, r24 + 4f24: 15 c0 rjmp .+42 ; 0x4f50 <realloc+0x18a> + 4f26: 0e 94 5b 25 call 0x4ab6 ; 0x4ab6 <malloc> + 4f2a: c8 2e mov r12, r24 + 4f2c: e6 01 movw r28, r12 + 4f2e: 6e 01 movw r12, r28 + 4f30: d9 2e mov r13, r25 + 4f32: e6 01 movw r28, r12 + 4f34: 20 97 sbiw r28, 0x00 ; 0 + 4f36: 51 f0 breq .+20 ; 0x4f4c <realloc+0x186> + 4f38: 8c 2d mov r24, r12 + 4f3a: b8 01 movw r22, r16 + 4f3c: a7 01 movw r20, r14 + 4f3e: 0e 94 fa 27 call 0x4ff4 ; 0x4ff4 <memcpy> + 4f42: c8 01 movw r24, r16 + 4f44: 0e 94 f5 25 call 0x4bea ; 0x4bea <free> + 4f48: 86 01 movw r16, r12 + 4f4a: 02 c0 rjmp .+4 ; 0x4f50 <realloc+0x18a> + 4f4c: 00 e0 ldi r16, 0x00 ; 0 + 4f4e: 10 e0 ldi r17, 0x00 ; 0 + 4f50: c8 01 movw r24, r16 + 4f52: cd b7 in r28, 0x3d ; 61 + 4f54: de b7 in r29, 0x3e ; 62 + 4f56: ec e0 ldi r30, 0x0C ; 12 + 4f58: 0c 94 40 25 jmp 0x4a80 ; 0x4a80 <__epilogue_restores__+0xc> + +00004f5c <atol>: + 4f5c: 1f 93 push r17 + 4f5e: fc 01 movw r30, r24 + 4f60: 99 27 eor r25, r25 + 4f62: 88 27 eor r24, r24 + 4f64: bc 01 movw r22, r24 + 4f66: e8 94 clt + 4f68: 11 91 ld r17, Z+ + 4f6a: 10 32 cpi r17, 0x20 ; 32 + 4f6c: e9 f3 breq .-6 ; 0x4f68 <atol+0xc> + 4f6e: 19 30 cpi r17, 0x09 ; 9 + 4f70: 10 f0 brcs .+4 ; 0x4f76 <atol+0x1a> + 4f72: 1e 30 cpi r17, 0x0E ; 14 + 4f74: c8 f3 brcs .-14 ; 0x4f68 <atol+0xc> + 4f76: 1b 32 cpi r17, 0x2B ; 43 + 4f78: 51 f0 breq .+20 ; 0x4f8e <atol+0x32> + 4f7a: 1d 32 cpi r17, 0x2D ; 45 + 4f7c: 49 f4 brne .+18 ; 0x4f90 <atol+0x34> + 4f7e: 68 94 set + 4f80: 06 c0 rjmp .+12 ; 0x4f8e <atol+0x32> + 4f82: 0e 94 c7 28 call 0x518e ; 0x518e <__mulsi_const_10> + 4f86: 61 0f add r22, r17 + 4f88: 71 1d adc r23, r1 + 4f8a: 81 1d adc r24, r1 + 4f8c: 91 1d adc r25, r1 + 4f8e: 11 91 ld r17, Z+ + 4f90: 10 53 subi r17, 0x30 ; 48 + 4f92: 1a 30 cpi r17, 0x0A ; 10 + 4f94: b0 f3 brcs .-20 ; 0x4f82 <atol+0x26> + 4f96: 3e f4 brtc .+14 ; 0x4fa6 <atol+0x4a> + 4f98: 90 95 com r25 + 4f9a: 80 95 com r24 + 4f9c: 70 95 com r23 + 4f9e: 61 95 neg r22 + 4fa0: 7f 4f sbci r23, 0xFF ; 255 + 4fa2: 8f 4f sbci r24, 0xFF ; 255 + 4fa4: 9f 4f sbci r25, 0xFF ; 255 + 4fa6: 1f 91 pop r17 + 4fa8: 08 95 ret + +00004faa <isspace>: + 4faa: 91 11 cpse r25, r1 + 4fac: 40 c1 rjmp .+640 ; 0x522e <__ctype_isfalse> + 4fae: 80 32 cpi r24, 0x20 ; 32 + 4fb0: 19 f0 breq .+6 ; 0x4fb8 <isspace+0xe> + 4fb2: 89 50 subi r24, 0x09 ; 9 + 4fb4: 85 50 subi r24, 0x05 ; 5 + 4fb6: d0 f7 brcc .-12 ; 0x4fac <isspace+0x2> + 4fb8: 08 95 ret + +00004fba <tolower>: + 4fba: 91 11 cpse r25, r1 + 4fbc: 08 95 ret + 4fbe: 81 54 subi r24, 0x41 ; 65 + 4fc0: 8a 51 subi r24, 0x1A ; 26 + 4fc2: 08 f4 brcc .+2 ; 0x4fc6 <tolower+0xc> + 4fc4: 80 5e subi r24, 0xE0 ; 224 + 4fc6: 85 5a subi r24, 0xA5 ; 165 + 4fc8: 08 95 ret + +00004fca <toupper>: + 4fca: 91 11 cpse r25, r1 + 4fcc: 08 95 ret + 4fce: 81 56 subi r24, 0x61 ; 97 + 4fd0: 8a 51 subi r24, 0x1A ; 26 + 4fd2: 08 f4 brcc .+2 ; 0x4fd6 <toupper+0xc> + 4fd4: 80 52 subi r24, 0x20 ; 32 + 4fd6: 85 58 subi r24, 0x85 ; 133 + 4fd8: 08 95 ret + +00004fda <memcmp>: + 4fda: fb 01 movw r30, r22 + 4fdc: dc 01 movw r26, r24 + 4fde: 04 c0 rjmp .+8 ; 0x4fe8 <memcmp+0xe> + 4fe0: 8d 91 ld r24, X+ + 4fe2: 01 90 ld r0, Z+ + 4fe4: 80 19 sub r24, r0 + 4fe6: 21 f4 brne .+8 ; 0x4ff0 <memcmp+0x16> + 4fe8: 41 50 subi r20, 0x01 ; 1 + 4fea: 50 40 sbci r21, 0x00 ; 0 + 4fec: c8 f7 brcc .-14 ; 0x4fe0 <memcmp+0x6> + 4fee: 88 1b sub r24, r24 + 4ff0: 99 0b sbc r25, r25 + 4ff2: 08 95 ret + +00004ff4 <memcpy>: + 4ff4: fb 01 movw r30, r22 + 4ff6: dc 01 movw r26, r24 + 4ff8: 02 c0 rjmp .+4 ; 0x4ffe <memcpy+0xa> + 4ffa: 01 90 ld r0, Z+ + 4ffc: 0d 92 st X+, r0 + 4ffe: 41 50 subi r20, 0x01 ; 1 + 5000: 50 40 sbci r21, 0x00 ; 0 + 5002: d8 f7 brcc .-10 ; 0x4ffa <memcpy+0x6> + 5004: 08 95 ret + +00005006 <memmove>: + 5006: 68 17 cp r22, r24 + 5008: 79 07 cpc r23, r25 + 500a: 68 f4 brcc .+26 ; 0x5026 <memmove+0x20> + 500c: fb 01 movw r30, r22 + 500e: dc 01 movw r26, r24 + 5010: e4 0f add r30, r20 + 5012: f5 1f adc r31, r21 + 5014: a4 0f add r26, r20 + 5016: b5 1f adc r27, r21 + 5018: 02 c0 rjmp .+4 ; 0x501e <memmove+0x18> + 501a: 02 90 ld r0, -Z + 501c: 0e 92 st -X, r0 + 501e: 41 50 subi r20, 0x01 ; 1 + 5020: 50 40 sbci r21, 0x00 ; 0 + 5022: d8 f7 brcc .-10 ; 0x501a <memmove+0x14> + 5024: 08 95 ret + 5026: 0c 94 fa 27 jmp 0x4ff4 ; 0x4ff4 <memcpy> + +0000502a <strchr>: + 502a: fc 01 movw r30, r24 + 502c: 81 91 ld r24, Z+ + 502e: 86 17 cp r24, r22 + 5030: 21 f0 breq .+8 ; 0x503a <strchr+0x10> + 5032: 88 23 and r24, r24 + 5034: d9 f7 brne .-10 ; 0x502c <strchr+0x2> + 5036: 99 27 eor r25, r25 + 5038: 08 95 ret + 503a: 31 97 sbiw r30, 0x01 ; 1 + 503c: cf 01 movw r24, r30 + 503e: 08 95 ret + +00005040 <strcmp>: + 5040: fb 01 movw r30, r22 + 5042: dc 01 movw r26, r24 + 5044: 8d 91 ld r24, X+ + 5046: 01 90 ld r0, Z+ + 5048: 80 19 sub r24, r0 + 504a: 01 10 cpse r0, r1 + 504c: d9 f3 breq .-10 ; 0x5044 <strcmp+0x4> + 504e: 99 0b sbc r25, r25 + 5050: 08 95 ret + +00005052 <strcpy>: + 5052: fb 01 movw r30, r22 + 5054: dc 01 movw r26, r24 + 5056: 01 90 ld r0, Z+ + 5058: 0d 92 st X+, r0 + 505a: 00 20 and r0, r0 + 505c: e1 f7 brne .-8 ; 0x5056 <strcpy+0x4> + 505e: 08 95 ret + +00005060 <strncmp>: + 5060: fb 01 movw r30, r22 + 5062: dc 01 movw r26, r24 + 5064: 41 50 subi r20, 0x01 ; 1 + 5066: 50 40 sbci r21, 0x00 ; 0 + 5068: 30 f0 brcs .+12 ; 0x5076 <strncmp+0x16> + 506a: 8d 91 ld r24, X+ + 506c: 01 90 ld r0, Z+ + 506e: 80 19 sub r24, r0 + 5070: 19 f4 brne .+6 ; 0x5078 <strncmp+0x18> + 5072: 00 20 and r0, r0 + 5074: b9 f7 brne .-18 ; 0x5064 <strncmp+0x4> + 5076: 88 1b sub r24, r24 + 5078: 99 0b sbc r25, r25 + 507a: 08 95 ret + +0000507c <strncpy>: + 507c: fb 01 movw r30, r22 + 507e: dc 01 movw r26, r24 + 5080: 41 50 subi r20, 0x01 ; 1 + 5082: 50 40 sbci r21, 0x00 ; 0 + 5084: 48 f0 brcs .+18 ; 0x5098 <strncpy+0x1c> + 5086: 01 90 ld r0, Z+ + 5088: 0d 92 st X+, r0 + 508a: 00 20 and r0, r0 + 508c: c9 f7 brne .-14 ; 0x5080 <strncpy+0x4> + 508e: 01 c0 rjmp .+2 ; 0x5092 <strncpy+0x16> + 5090: 1d 92 st X+, r1 + 5092: 41 50 subi r20, 0x01 ; 1 + 5094: 50 40 sbci r21, 0x00 ; 0 + 5096: e0 f7 brcc .-8 ; 0x5090 <strncpy+0x14> + 5098: 08 95 ret + +0000509a <strrchr>: + 509a: fc 01 movw r30, r24 + 509c: 81 e0 ldi r24, 0x01 ; 1 + 509e: 90 e0 ldi r25, 0x00 ; 0 + 50a0: 01 90 ld r0, Z+ + 50a2: 06 16 cp r0, r22 + 50a4: 09 f4 brne .+2 ; 0x50a8 <strrchr+0xe> + 50a6: cf 01 movw r24, r30 + 50a8: 00 20 and r0, r0 + 50aa: d1 f7 brne .-12 ; 0x50a0 <strrchr+0x6> + 50ac: 01 97 sbiw r24, 0x01 ; 1 + 50ae: 08 95 ret + +000050b0 <strstr>: + 50b0: fb 01 movw r30, r22 + 50b2: 51 91 ld r21, Z+ + 50b4: 55 23 and r21, r21 + 50b6: a9 f0 breq .+42 ; 0x50e2 <strstr+0x32> + 50b8: bf 01 movw r22, r30 + 50ba: dc 01 movw r26, r24 + 50bc: 4d 91 ld r20, X+ + 50be: 45 17 cp r20, r21 + 50c0: 41 11 cpse r20, r1 + 50c2: e1 f7 brne .-8 ; 0x50bc <strstr+0xc> + 50c4: 59 f4 brne .+22 ; 0x50dc <strstr+0x2c> + 50c6: cd 01 movw r24, r26 + 50c8: 01 90 ld r0, Z+ + 50ca: 00 20 and r0, r0 + 50cc: 49 f0 breq .+18 ; 0x50e0 <strstr+0x30> + 50ce: 4d 91 ld r20, X+ + 50d0: 40 15 cp r20, r0 + 50d2: 41 11 cpse r20, r1 + 50d4: c9 f3 breq .-14 ; 0x50c8 <strstr+0x18> + 50d6: fb 01 movw r30, r22 + 50d8: 41 11 cpse r20, r1 + 50da: ef cf rjmp .-34 ; 0x50ba <strstr+0xa> + 50dc: 81 e0 ldi r24, 0x01 ; 1 + 50de: 90 e0 ldi r25, 0x00 ; 0 + 50e0: 01 97 sbiw r24, 0x01 ; 1 + 50e2: 08 95 ret + +000050e4 <itoa>: + 50e4: fb 01 movw r30, r22 + 50e6: 9f 01 movw r18, r30 + 50e8: e8 94 clt + 50ea: 42 30 cpi r20, 0x02 ; 2 + 50ec: c4 f0 brlt .+48 ; 0x511e <itoa+0x3a> + 50ee: 45 32 cpi r20, 0x25 ; 37 + 50f0: b4 f4 brge .+44 ; 0x511e <itoa+0x3a> + 50f2: 4a 30 cpi r20, 0x0A ; 10 + 50f4: 29 f4 brne .+10 ; 0x5100 <itoa+0x1c> + 50f6: 97 fb bst r25, 7 + 50f8: 1e f4 brtc .+6 ; 0x5100 <itoa+0x1c> + 50fa: 90 95 com r25 + 50fc: 81 95 neg r24 + 50fe: 9f 4f sbci r25, 0xFF ; 255 + 5100: 64 2f mov r22, r20 + 5102: 77 27 eor r23, r23 + 5104: 0e 94 0a 25 call 0x4a14 ; 0x4a14 <__udivmodhi4> + 5108: 80 5d subi r24, 0xD0 ; 208 + 510a: 8a 33 cpi r24, 0x3A ; 58 + 510c: 0c f0 brlt .+2 ; 0x5110 <itoa+0x2c> + 510e: 89 5d subi r24, 0xD9 ; 217 + 5110: 81 93 st Z+, r24 + 5112: cb 01 movw r24, r22 + 5114: 00 97 sbiw r24, 0x00 ; 0 + 5116: a1 f7 brne .-24 ; 0x5100 <itoa+0x1c> + 5118: 16 f4 brtc .+4 ; 0x511e <itoa+0x3a> + 511a: 5d e2 ldi r21, 0x2D ; 45 + 511c: 51 93 st Z+, r21 + 511e: 10 82 st Z, r1 + 5120: c9 01 movw r24, r18 + 5122: 0c 94 1a 29 jmp 0x5234 ; 0x5234 <strrev> + +00005126 <ltoa>: + 5126: fa 01 movw r30, r20 + 5128: cf 93 push r28 + 512a: ff 93 push r31 + 512c: ef 93 push r30 + 512e: 22 30 cpi r18, 0x02 ; 2 + 5130: 44 f1 brlt .+80 ; 0x5182 <ltoa+0x5c> + 5132: 25 32 cpi r18, 0x25 ; 37 + 5134: 34 f5 brge .+76 ; 0x5182 <ltoa+0x5c> + 5136: c2 2f mov r28, r18 + 5138: e8 94 clt + 513a: ca 30 cpi r28, 0x0A ; 10 + 513c: 49 f4 brne .+18 ; 0x5150 <ltoa+0x2a> + 513e: 97 fb bst r25, 7 + 5140: 3e f4 brtc .+14 ; 0x5150 <ltoa+0x2a> + 5142: 90 95 com r25 + 5144: 80 95 com r24 + 5146: 70 95 com r23 + 5148: 61 95 neg r22 + 514a: 7f 4f sbci r23, 0xFF ; 255 + 514c: 8f 4f sbci r24, 0xFF ; 255 + 514e: 9f 4f sbci r25, 0xFF ; 255 + 5150: 2c 2f mov r18, r28 + 5152: 33 27 eor r19, r19 + 5154: 44 27 eor r20, r20 + 5156: 55 27 eor r21, r21 + 5158: ff 93 push r31 + 515a: ef 93 push r30 + 515c: 0e 94 cd 24 call 0x499a ; 0x499a <__udivmodsi4> + 5160: ef 91 pop r30 + 5162: ff 91 pop r31 + 5164: 60 5d subi r22, 0xD0 ; 208 + 5166: 6a 33 cpi r22, 0x3A ; 58 + 5168: 0c f0 brlt .+2 ; 0x516c <ltoa+0x46> + 516a: 69 5d subi r22, 0xD9 ; 217 + 516c: 61 93 st Z+, r22 + 516e: b9 01 movw r22, r18 + 5170: ca 01 movw r24, r20 + 5172: 60 50 subi r22, 0x00 ; 0 + 5174: 70 40 sbci r23, 0x00 ; 0 + 5176: 80 40 sbci r24, 0x00 ; 0 + 5178: 90 40 sbci r25, 0x00 ; 0 + 517a: 51 f7 brne .-44 ; 0x5150 <ltoa+0x2a> + 517c: 16 f4 brtc .+4 ; 0x5182 <ltoa+0x5c> + 517e: cd e2 ldi r28, 0x2D ; 45 + 5180: c1 93 st Z+, r28 + 5182: 10 82 st Z, r1 + 5184: 8f 91 pop r24 + 5186: 9f 91 pop r25 + 5188: cf 91 pop r28 + 518a: 0c 94 1a 29 jmp 0x5234 ; 0x5234 <strrev> + +0000518e <__mulsi_const_10>: + 518e: 59 2f mov r21, r25 + 5190: 48 2f mov r20, r24 + 5192: 37 2f mov r19, r23 + 5194: 26 2f mov r18, r22 + 5196: 66 0f add r22, r22 + 5198: 77 1f adc r23, r23 + 519a: 88 1f adc r24, r24 + 519c: 99 1f adc r25, r25 + 519e: 66 0f add r22, r22 + 51a0: 77 1f adc r23, r23 + 51a2: 88 1f adc r24, r24 + 51a4: 99 1f adc r25, r25 + 51a6: 62 0f add r22, r18 + 51a8: 73 1f adc r23, r19 + 51aa: 84 1f adc r24, r20 + 51ac: 95 1f adc r25, r21 + 51ae: 66 0f add r22, r22 + 51b0: 77 1f adc r23, r23 + 51b2: 88 1f adc r24, r24 + 51b4: 99 1f adc r25, r25 + 51b6: 08 95 ret + +000051b8 <ultoa>: + 51b8: fa 01 movw r30, r20 + 51ba: cf 93 push r28 + 51bc: ff 93 push r31 + 51be: ef 93 push r30 + 51c0: 22 30 cpi r18, 0x02 ; 2 + 51c2: cc f0 brlt .+50 ; 0x51f6 <ultoa+0x3e> + 51c4: 25 32 cpi r18, 0x25 ; 37 + 51c6: bc f4 brge .+46 ; 0x51f6 <ultoa+0x3e> + 51c8: c2 2f mov r28, r18 + 51ca: 2c 2f mov r18, r28 + 51cc: 33 27 eor r19, r19 + 51ce: 44 27 eor r20, r20 + 51d0: 55 27 eor r21, r21 + 51d2: ff 93 push r31 + 51d4: ef 93 push r30 + 51d6: 0e 94 cd 24 call 0x499a ; 0x499a <__udivmodsi4> + 51da: ef 91 pop r30 + 51dc: ff 91 pop r31 + 51de: 60 5d subi r22, 0xD0 ; 208 + 51e0: 6a 33 cpi r22, 0x3A ; 58 + 51e2: 0c f0 brlt .+2 ; 0x51e6 <ultoa+0x2e> + 51e4: 69 5d subi r22, 0xD9 ; 217 + 51e6: 61 93 st Z+, r22 + 51e8: b9 01 movw r22, r18 + 51ea: ca 01 movw r24, r20 + 51ec: 60 50 subi r22, 0x00 ; 0 + 51ee: 70 40 sbci r23, 0x00 ; 0 + 51f0: 80 40 sbci r24, 0x00 ; 0 + 51f2: 90 40 sbci r25, 0x00 ; 0 + 51f4: 51 f7 brne .-44 ; 0x51ca <ultoa+0x12> + 51f6: 10 82 st Z, r1 + 51f8: 8f 91 pop r24 + 51fa: 9f 91 pop r25 + 51fc: cf 91 pop r28 + 51fe: 0c 94 1a 29 jmp 0x5234 ; 0x5234 <strrev> + +00005202 <utoa>: + 5202: fb 01 movw r30, r22 + 5204: 9f 01 movw r18, r30 + 5206: 42 30 cpi r20, 0x02 ; 2 + 5208: 74 f0 brlt .+28 ; 0x5226 <utoa+0x24> + 520a: 45 32 cpi r20, 0x25 ; 37 + 520c: 64 f4 brge .+24 ; 0x5226 <utoa+0x24> + 520e: 64 2f mov r22, r20 + 5210: 77 27 eor r23, r23 + 5212: 0e 94 0a 25 call 0x4a14 ; 0x4a14 <__udivmodhi4> + 5216: 80 5d subi r24, 0xD0 ; 208 + 5218: 8a 33 cpi r24, 0x3A ; 58 + 521a: 0c f0 brlt .+2 ; 0x521e <utoa+0x1c> + 521c: 89 5d subi r24, 0xD9 ; 217 + 521e: 81 93 st Z+, r24 + 5220: cb 01 movw r24, r22 + 5222: 00 97 sbiw r24, 0x00 ; 0 + 5224: a1 f7 brne .-24 ; 0x520e <utoa+0xc> + 5226: 10 82 st Z, r1 + 5228: c9 01 movw r24, r18 + 522a: 0c 94 1a 29 jmp 0x5234 ; 0x5234 <strrev> + +0000522e <__ctype_isfalse>: + 522e: 99 27 eor r25, r25 + 5230: 88 27 eor r24, r24 + +00005232 <__ctype_istrue>: + 5232: 08 95 ret + +00005234 <strrev>: + 5234: dc 01 movw r26, r24 + 5236: fc 01 movw r30, r24 + 5238: 67 2f mov r22, r23 + 523a: 71 91 ld r23, Z+ + 523c: 77 23 and r23, r23 + 523e: e1 f7 brne .-8 ; 0x5238 <strrev+0x4> + 5240: 32 97 sbiw r30, 0x02 ; 2 + 5242: 04 c0 rjmp .+8 ; 0x524c <strrev+0x18> + 5244: 7c 91 ld r23, X + 5246: 6d 93 st X+, r22 + 5248: 70 83 st Z, r23 + 524a: 62 91 ld r22, -Z + 524c: ae 17 cp r26, r30 + 524e: bf 07 cpc r27, r31 + 5250: c8 f3 brcs .-14 ; 0x5244 <strrev+0x10> + 5252: 08 95 ret + +00005254 <_exit>: + 5254: f8 94 cli + +00005256 <__stop_program>: + 5256: ff cf rjmp .-2 ; 0x5256 <__stop_program> diff --git a/ESS1995i2c/bin/Release/ESS1995i2c.elf.map b/ESS1995i2c/bin/Release/ESS1995i2c.elf.map new file mode 100644 index 0000000..ed79f00 --- /dev/null +++ b/ESS1995i2c/bin/Release/ESS1995i2c.elf.map @@ -0,0 +1,1679 @@ +Archive member included because of file (symbol) + +/usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_mulsi3.o) + obj/Release/arduinoSrc1_0/Stream.o (__mulsi3) +/usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_divmodhi4.o) + obj/Release/arduinoSrc1_0/HardwareSerial.o (__divmodhi4) +/usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_udivmodsi4.o) + obj/Release/arduinoSrc1_0/HardwareSerial.o (__udivmodsi4) +/usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_divmodsi4.o) + obj/Release/arduinoSrc1_0/WMath.o (__divmodsi4) +/usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_exit.o) + /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/crtm328p.o (exit) +/usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_copy_data.o) + obj/Release/adapticsBT.o (__do_copy_data) +/usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_clear_bss.o) + obj/Release/main.o (__do_clear_bss) +/usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_ctors.o) + obj/Release/arduinoSrc1_0/HardwareSerial.o (__do_global_ctors) +/usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_fixunssfsi.o) + obj/Release/arduinoSrc1_0/Print.o (__fixunssfsi) +/usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_addsub_sf.o) + obj/Release/arduinoSrc1_0/Print.o (__addsf3) +/usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_mul_sf.o) + obj/Release/arduinoSrc1_0/Print.o (__mulsf3) +/usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_div_sf.o) + obj/Release/arduinoSrc1_0/Print.o (__divsf3) +/usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_ge_sf.o) + /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_fixunssfsi.o) (__gesf2) +/usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_lt_sf.o) + obj/Release/arduinoSrc1_0/Print.o (__ltsf2) +/usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_si_to_sf.o) + obj/Release/arduinoSrc1_0/Print.o (__floatsisf) +/usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_sf_to_si.o) + obj/Release/arduinoSrc1_0/Print.o (__fixsfsi) +/usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_thenan_sf.o) + /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_addsub_sf.o) (__thenan_sf) +/usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_usi_to_sf.o) + obj/Release/arduinoSrc1_0/Print.o (__floatunsisf) +/usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_udivmodhi4.o) + /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_divmodhi4.o) (__udivmodhi4) +/usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_prologue.o) + /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_addsub_sf.o) (__prologue_saves__) +/usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_epilogue.o) + /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_addsub_sf.o) (__epilogue_restores__) +/usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_tablejump.o) + /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_ctors.o) (__tablejump__) +/usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_clzsi2.o) + /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_si_to_sf.o) (__clzsi2) +/usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_pack_sf.o) + /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_addsub_sf.o) (__pack_f) +/usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_unpack_sf.o) + /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_addsub_sf.o) (__unpack_f) +/usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_fpcmp_parts_sf.o) + /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_ge_sf.o) (__fpcmp_parts_f) +/usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_clz.o) + /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_clzsi2.o) (__clz_tab) +/usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(malloc.o) + obj/Release/arduinoSrc1_0/new.o (malloc) +/usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(random.o) + obj/Release/arduinoSrc1_0/WMath.o (random) +/usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(realloc.o) + obj/Release/arduinoSrc1_0/WString.o (realloc) +/usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(atol.o) + obj/Release/arduinoSrc1_0/WString.o (atol) +/usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(isspace.o) + obj/Release/arduinoSrc1_0/WString.o (isspace) +/usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(tolower.o) + obj/Release/arduinoSrc1_0/WString.o (tolower) +/usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(toupper.o) + obj/Release/arduinoSrc1_0/WString.o (toupper) +/usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(memcmp.o) + obj/Release/arduinoSrc1_0/IPAddress.o (memcmp) +/usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(memcpy.o) + obj/Release/arduinoSrc1_0/WString.o (memcpy) +/usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(memmove.o) + obj/Release/arduinoSrc1_0/WString.o (memmove) +/usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(strchr.o) + obj/Release/arduinoSrc1_0/WString.o (strchr) +/usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(strcmp.o) + obj/Release/arduinoSrc1_0/WString.o (strcmp) +/usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(strcpy.o) + obj/Release/arduinoSrc1_0/WString.o (strcpy) +/usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(strncmp.o) + obj/Release/arduinoSrc1_0/WString.o (strncmp) +/usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(strncpy.o) + obj/Release/arduinoSrc1_0/WString.o (strncpy) +/usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(strrchr.o) + obj/Release/arduinoSrc1_0/WString.o (strrchr) +/usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(strstr.o) + obj/Release/arduinoSrc1_0/WString.o (strstr) +/usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(itoa.o) + obj/Release/arduinoSrc1_0/WString.o (itoa) +/usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(ltoa.o) + obj/Release/arduinoSrc1_0/WString.o (ltoa) +/usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(mulsi10.o) + /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(atol.o) (__mulsi_const_10) +/usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(ultoa.o) + obj/Release/arduinoSrc1_0/WString.o (ultoa) +/usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(utoa.o) + obj/Release/arduinoSrc1_0/WString.o (utoa) +/usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(cty_isfalse.o) + /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(isspace.o) (__ctype_isfalse) +/usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(strrev.o) + /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(itoa.o) (strrev) + +Allocating common symbols +Common symbol size file + +__brkval 0x2 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(malloc.o) +__flp 0x2 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(malloc.o) + +Memory Configuration + +Name Origin Length Attributes +text 0x00000000 0x00020000 xr +data 0x00800060 0x0000ffa0 rw !x +eeprom 0x00810000 0x00010000 rw !x +fuse 0x00820000 0x00000400 rw !x +lock 0x00830000 0x00000400 rw !x +signature 0x00840000 0x00000400 rw !x +*default* 0x00000000 0xffffffff + +Linker script and memory map + +Address of section .data set to 0x800100 +LOAD /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/crtm328p.o +LOAD obj/Release/adapticsBT.o +LOAD obj/Release/main.o +LOAD obj/Release/arduinoSrc1_0/CDC.o +LOAD obj/Release/arduinoSrc1_0/HID.o +LOAD obj/Release/arduinoSrc1_0/HardwareSerial.o +LOAD obj/Release/arduinoSrc1_0/IPAddress.o +LOAD obj/Release/arduinoSrc1_0/Print.o +LOAD obj/Release/arduinoSrc1_0/Stream.o +LOAD obj/Release/arduinoSrc1_0/Tone.o +LOAD obj/Release/arduinoSrc1_0/USBCore.o +LOAD obj/Release/arduinoSrc1_0/WInterrupts.o +LOAD obj/Release/arduinoSrc1_0/WMath.o +LOAD obj/Release/arduinoSrc1_0/WString.o +LOAD obj/Release/arduinoSrc1_0/new.o +LOAD obj/Release/arduinoSrc1_0/wiring.o +LOAD obj/Release/arduinoSrc1_0/wiring_analog.o +LOAD obj/Release/arduinoSrc1_0/wiring_digital.o +LOAD obj/Release/arduinoSrc1_0/wiring_pulse.o +LOAD obj/Release/arduinoSrc1_0/wiring_shift.o +LOAD obj/Release/arduino_libs_1_0/Wire/Wire.o +LOAD obj/Release/arduino_libs_1_0/Wire/utility/twi.o +LOAD /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a +LOAD /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libm.a +LOAD /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a +LOAD /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a +LOAD /usr/lib/gcc/avr/4.5.3/avr5/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 0x00000000 0x5258 + *(.vectors) + .vectors 0x00000000 0x68 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/crtm328p.o + 0x00000000 __vectors + 0x00000000 __vector_default + *(.vectors) + *(.progmem.gcc*) + *(.progmem*) + .progmem.data 0x00000068 0x1 obj/Release/arduinoSrc1_0/Tone.o + .progmem.data 0x00000069 0x5a obj/Release/arduinoSrc1_0/wiring_digital.o + 0x00000069 port_to_mode_PGM + 0x00000073 port_to_output_PGM + 0x0000007d port_to_input_PGM + 0x00000087 digital_pin_to_port_PGM + 0x0000009b digital_pin_to_bit_mask_PGM + 0x000000af digital_pin_to_timer_PGM + 0x000000c4 . = ALIGN (0x2) + *fill* 0x000000c3 0x1 00 + 0x000000c4 __trampolines_start = . + *(.trampolines) + .trampolines 0x000000c4 0x0 linker stubs + *(.trampolines*) + 0x000000c4 __trampolines_end = . + *(.jumptables) + *(.jumptables*) + *(.lowtext) + *(.lowtext*) + 0x000000c4 __ctors_start = . + *(.ctors) + .ctors 0x000000c4 0x2 obj/Release/arduinoSrc1_0/HardwareSerial.o + .ctors 0x000000c6 0x2 obj/Release/arduinoSrc1_0/IPAddress.o + .ctors 0x000000c8 0x2 obj/Release/arduino_libs_1_0/Wire/Wire.o + 0x000000ca __ctors_end = . + 0x000000ca __dtors_start = . + *(.dtors) + 0x000000ca __dtors_end = . + SORT(*)(.ctors) + SORT(*)(.dtors) + *(.init0) + .init0 0x000000ca 0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/crtm328p.o + 0x000000ca __init + *(.init0) + *(.init1) + *(.init1) + *(.init2) + .init2 0x000000ca 0xc /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/crtm328p.o + *(.init2) + *(.init3) + *(.init3) + *(.init4) + .init4 0x000000d6 0x16 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_copy_data.o) + 0x000000d6 __do_copy_data + .init4 0x000000ec 0x10 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_clear_bss.o) + 0x000000ec __do_clear_bss + *(.init4) + *(.init5) + *(.init5) + *(.init6) + .init6 0x000000fc 0x16 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_ctors.o) + 0x000000fc __do_global_ctors + *(.init6) + *(.init7) + *(.init7) + *(.init8) + *(.init8) + *(.init9) + .init9 0x00000112 0x8 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/crtm328p.o + *(.init9) + *(.text) + .text 0x0000011a 0x4 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/crtm328p.o + 0x0000011a __vector_22 + 0x0000011a __vector_12 + 0x0000011a __bad_interrupt + 0x0000011a __vector_6 + 0x0000011a __vector_3 + 0x0000011a __vector_23 + 0x0000011a __vector_25 + 0x0000011a __vector_11 + 0x0000011a __vector_13 + 0x0000011a __vector_17 + 0x0000011a __vector_5 + 0x0000011a __vector_4 + 0x0000011a __vector_9 + 0x0000011a __vector_21 + 0x0000011a __vector_15 + 0x0000011a __vector_8 + 0x0000011a __vector_14 + 0x0000011a __vector_10 + 0x0000011a __vector_20 + .text 0x0000011e 0x9a obj/Release/adapticsBT.o + 0x0000011e _Z9advertisev + 0x00000154 _Z14setupBlueToothv + .text 0x000001b8 0x2de obj/Release/main.o + 0x000001b8 main + .text 0x00000496 0x0 obj/Release/arduinoSrc1_0/CDC.o + .text 0x00000496 0x0 obj/Release/arduinoSrc1_0/HID.o + .text 0x00000496 0x526 obj/Release/arduinoSrc1_0/HardwareSerial.o + 0x00000496 _ZN14HardwareSerial9availableEv + 0x000004bc _ZN14HardwareSerial4peekEv + 0x000004f4 _ZN14HardwareSerial4readEv + 0x00000538 _ZN14HardwareSerial5flushEv + 0x00000560 _ZN14HardwareSerial5writeEh + 0x000005d2 _Z10store_charhP11ring_buffer + 0x00000606 _Z11serialEventv + 0x00000608 __vector_18 + 0x00000658 _Z14serialEventRunv + 0x0000066a __vector_19 + 0x000006f8 _ZN14HardwareSerialC2EP11ring_bufferS1_PVhS3_S3_S3_S3_hhhhh + 0x000006f8 _ZN14HardwareSerialC1EP11ring_bufferS1_PVhS3_S3_S3_S3_hhhhh + 0x00000776 _ZN14HardwareSerial5beginEm + 0x00000894 _ZN14HardwareSerial3endEv + .text 0x000009bc 0x150 obj/Release/arduinoSrc1_0/IPAddress.o + 0x000009bc _ZNK9IPAddress7printToER5Print + 0x00000a42 _ZN9IPAddressC2Ev + 0x00000a42 _ZN9IPAddressC1Ev + 0x00000a56 _ZN9IPAddressC1Ehhhh + 0x00000a56 _ZN9IPAddressC2Ehhhh + 0x00000a6e _ZN9IPAddressC2Em + 0x00000a6e _ZN9IPAddressC1Em + 0x00000a82 _ZN9IPAddressC1EPKh + 0x00000a82 _ZN9IPAddressC2EPKh + 0x00000aa2 _ZN9IPAddressaSEPKh + 0x00000ac2 _ZN9IPAddressaSEm + 0x00000ace _ZN9IPAddresseqEPKh + .text 0x00000b0c 0x628 obj/Release/arduinoSrc1_0/Print.o + 0x00000b0c _ZN5Print5writeEPKhj + 0x00000b60 _ZN5Print5writeEPKc + 0x00000b82 _ZN5Print5printEPK19__FlashStringHelper + 0x00000bc8 _ZN5Print5printERK6String + 0x00000c2e _ZN5Print5printEPKc + 0x00000c34 _ZN5Print5printEc + 0x00000c44 _ZN5Print5printERK9Printable + 0x00000c5a _ZN5Print7printlnEv + 0x00000c84 _ZN5Print7printlnEPK19__FlashStringHelper + 0x00000caa _ZN5Print7printlnERK6String + 0x00000cd0 _ZN5Print7printlnEPKc + 0x00000cf6 _ZN5Print7printlnEc + 0x00000d1c _ZN5Print7printlnERK9Printable + 0x00000d42 _ZN5Print11printNumberEmh + 0x00000df6 _ZN5Print5printEmi + 0x00000e14 _ZN5Print7printlnEmi + 0x00000e3a _ZN5Print5printEji + 0x00000e48 _ZN5Print7printlnEji + 0x00000e76 _ZN5Print5printEhi + 0x00000e86 _ZN5Print7printlnEhi + 0x00000eb6 _ZN5Print5printEli + 0x00000f2c _ZN5Print7printlnEli + 0x00000f52 _ZN5Print5printEii + 0x00000f66 _ZN5Print7printlnEii + 0x00000f9c _ZN5Print10printFloatEdh + 0x00001108 _ZN5Print5printEdi + 0x0000110e _ZN5Print7printlnEdi + .text 0x00001134 0x4ee obj/Release/arduinoSrc1_0/Stream.o + 0x00001134 _ZN6Stream9timedReadEv + 0x0000118c _ZN6Stream9timedPeekEv + 0x000011e4 _ZN6Stream13peekNextDigitEv + 0x0000121c _ZN6Stream10setTimeoutEm + 0x00001228 _ZN6Stream9findUntilEPcjS0_j + 0x000012de _ZN6Stream9findUntilEPcS0_ + 0x00001318 _ZN6Stream4findEPc + 0x00001322 _ZN6Stream4findEPcj + 0x00001338 _ZN6Stream8parseIntEc + 0x0000141a _ZN6Stream8parseIntEv + 0x00001422 _ZN6Stream10parseFloatEc + 0x0000156c _ZN6Stream10parseFloatEv + 0x00001574 _ZN6Stream9readBytesEPcj + 0x000015ba _ZN6Stream14readBytesUntilEcPcj + .text 0x00001622 0x544 obj/Release/arduinoSrc1_0/Tone.o + 0x00001622 _Z4tonehjm + 0x00001a40 _Z12disableTimerh + 0x00001a82 _Z6noToneh + 0x00001aae __vector_7 + .text 0x00001b66 0x0 obj/Release/arduinoSrc1_0/USBCore.o + .text 0x00001b66 0x114 obj/Release/arduinoSrc1_0/WInterrupts.o + 0x00001b66 attachInterrupt + 0x00001ba6 detachInterrupt + 0x00001bc6 __vector_1 + 0x00001c20 __vector_2 + .text 0x00001c7a 0x12a obj/Release/arduinoSrc1_0/WMath.o + 0x00001c7a _Z10randomSeedj + 0x00001c8a _Z6randoml + 0x00001cc6 _Z6randomll + 0x00001d02 _Z3maplllll + 0x00001d94 _Z8makeWordj + 0x00001d96 _Z8makeWordhh + .text 0x00001da4 0x1024 obj/Release/arduinoSrc1_0/WString.o + 0x00001da4 _ZN6StringD1Ev + 0x00001da4 _ZN6StringD2Ev + 0x00001db0 _ZN6String10invalidateEv + 0x00001dd4 _ZN6String12changeBufferEj + 0x00001e08 _ZN6String7reserveEj + 0x00001e46 _ZN6String4copyEPKcj + 0x00001e88 _ZN6StringC1EPKc + 0x00001e88 _ZN6StringC2EPKc + 0x00001ebe _ZN6StringaSERKS_ + 0x00001ef4 _ZN6StringC1ERKS_ + 0x00001ef4 _ZN6StringC2ERKS_ + 0x00001f0a _ZN6StringaSEPKc + 0x00001f3a _ZN6StringC2Emh + 0x00001f3a _ZN6StringC1Emh + 0x00001f9c _ZN6StringC1Elh + 0x00001f9c _ZN6StringC2Elh + 0x00001ffe _ZN6StringC2Ejh + 0x00001ffe _ZN6StringC1Ejh + 0x0000205e _ZN6StringC1Eih + 0x0000205e _ZN6StringC2Eih + 0x000020be _ZN6StringC1Ehh + 0x000020be _ZN6StringC2Ehh + 0x00002120 _ZN6StringC2Ec + 0x00002120 _ZN6StringC1Ec + 0x00002152 _ZN6String6concatEPKcj + 0x000021aa _ZN6String6concatERKS_ + 0x000021ba _ZN6String6concatEPKc + 0x000021dc _ZN6String6concatEc + 0x00002202 _ZN6String6concatEh + 0x0000225c _ZN6String6concatEi + 0x000022c0 _ZN6String6concatEj + 0x0000231e _ZN6String6concatEl + 0x00002384 _ZN6String6concatEm + 0x000023ea _ZplRK15StringSumHelperRK6String + 0x00002410 _ZplRK15StringSumHelperPKc + 0x00002444 _ZplRK15StringSumHelperc + 0x00002460 _ZplRK15StringSumHelperh + 0x0000247c _ZplRK15StringSumHelperi + 0x00002498 _ZplRK15StringSumHelperj + 0x000024b4 _ZplRK15StringSumHelperl + 0x000024d0 _ZplRK15StringSumHelperm + 0x000024ec _ZNK6String9compareToERKS_ + 0x00002558 _ZNK6String6equalsERKS_ + 0x0000257a _ZNK6String6equalsEPKc + 0x000025c0 _ZNK6StringltERKS_ + 0x000025ce _ZNK6StringgtERKS_ + 0x000025e0 _ZNK6StringleERKS_ + 0x000025f2 _ZNK6StringgeERKS_ + 0x00002602 _ZNK6String16equalsIgnoreCaseERKS_ + 0x00002676 _ZNK6String10startsWithERKS_j + 0x000026c2 _ZNK6String10startsWithERKS_ + 0x000026e2 _ZNK6String8endsWithERKS_ + 0x0000272c _ZN6String9setCharAtEjc + 0x00002746 _ZN6StringixEj + 0x0000276c _ZNK6StringixEj + 0x00002792 _ZNK6String6charAtEj + 0x00002798 _ZNK6String8getBytesEPhjj + 0x000027f0 _ZNK6String7indexOfEcj + 0x0000282c _ZNK6String7indexOfEc + 0x00002836 _ZNK6String7indexOfERKS_j + 0x00002872 _ZNK6String7indexOfERKS_ + 0x0000287c _ZNK6String11lastIndexOfEcj + 0x000028ea _ZNK6String11lastIndexOfEc + 0x000028fa _ZNK6String11lastIndexOfERKS_j + 0x00002994 _ZNK6String11lastIndexOfERKS_ + 0x000029aa _ZNK6String9substringEjj + 0x00002a4c _ZNK6String9substringEj + 0x00002a64 _ZN6String7replaceEcc + 0x00002a82 _ZN6String7replaceERKS_S1_ + 0x00002c96 _ZN6String11toLowerCaseEv + 0x00002cbe _ZN6String11toUpperCaseEv + 0x00002ce6 _ZN6String4trimEv + 0x00002da8 _ZNK6String5toIntEv + .text 0x00002dc8 0x2c obj/Release/arduinoSrc1_0/new.o + 0x00002dc8 _Znwj + 0x00002dce _ZdlPv + 0x00002dd4 __cxa_guard_acquire + 0x00002de8 __cxa_guard_release + 0x00002df0 __cxa_guard_abort + 0x00002df2 __cxa_pure_virtual + .text 0x00002df4 0x1e8 obj/Release/arduinoSrc1_0/wiring.o + 0x00002df4 __vector_16 + 0x00002e9c millis + 0x00002eb8 micros + 0x00002f04 delay + 0x00002f52 delayMicroseconds + 0x00002f66 init + .text 0x00002fdc 0x108 obj/Release/arduinoSrc1_0/wiring_analog.o + 0x00002fdc analogReference + 0x00002fe2 analogRead + 0x00003024 analogWrite + .text 0x000030e4 0x166 obj/Release/arduinoSrc1_0/wiring_digital.o + 0x0000313e pinMode + 0x00003186 digitalWrite + 0x000031f6 digitalRead + .text 0x0000324a 0x130 obj/Release/arduinoSrc1_0/wiring_pulse.o + 0x0000324a pulseIn + .text 0x0000337a 0x10a obj/Release/arduinoSrc1_0/wiring_shift.o + 0x0000337a shiftIn + 0x000033fe shiftOut + .text 0x00003484 0x288 obj/Release/arduino_libs_1_0/Wire/Wire.o + 0x00003484 _ZN7TwoWire9availableEv + 0x00003496 _ZN7TwoWire4readEv + 0x000034be _ZN7TwoWire4peekEv + 0x000034de _ZN7TwoWire5flushEv + 0x000034e0 _ZN7TwoWire16onReceiveServiceEPhi + 0x00003530 _ZN7TwoWire16onRequestServiceEv + 0x00003548 _ZN7TwoWire5writeEPKhj + 0x000035ac _ZN7TwoWire5writeEh + 0x0000360c _ZN7TwoWireC2Ev + 0x0000360c _ZN7TwoWireC1Ev + 0x0000362c _ZN7TwoWire5beginEv + 0x00003642 _ZN7TwoWire5beginEh + 0x0000366a _ZN7TwoWire5beginEi + 0x00003670 _ZN7TwoWire11requestFromEhh + 0x0000368a _ZN7TwoWire11requestFromEii + 0x00003690 _ZN7TwoWire17beginTransmissionEh + 0x000036a4 _ZN7TwoWire17beginTransmissionEi + 0x000036aa _ZN7TwoWire15endTransmissionEv + 0x000036ca _ZN7TwoWire9onReceiveEPFviE + 0x000036d4 _ZN7TwoWire9onRequestEPFvvE + .text 0x0000370c 0x44a obj/Release/arduino_libs_1_0/Wire/utility/twi.o + 0x0000370c twi_init + 0x0000373e twi_setAddress + 0x00003746 twi_readFrom + 0x000037b2 twi_writeTo + 0x00003832 twi_transmit + 0x00003866 twi_attachSlaveRxEvent + 0x00003870 twi_attachSlaveTxEvent + 0x0000387a twi_reply + 0x0000388a twi_stop + 0x0000389e twi_releaseBus + 0x000038aa __vector_24 + .text 0x00003b56 0x0 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_mulsi3.o) + .text 0x00003b56 0x0 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_divmodhi4.o) + .text 0x00003b56 0x0 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_udivmodsi4.o) + .text 0x00003b56 0x0 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_divmodsi4.o) + .text 0x00003b56 0x0 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_exit.o) + .text 0x00003b56 0x0 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_copy_data.o) + .text 0x00003b56 0x0 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_clear_bss.o) + .text 0x00003b56 0x0 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_ctors.o) + .text 0x00003b56 0x58 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_fixunssfsi.o) + 0x00003b56 __fixunssfsi + .text 0x00003bae 0x350 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_addsub_sf.o) + 0x00003e42 __addsf3 + 0x00003e9c __subsf3 + .text 0x00003efe 0x1f4 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_mul_sf.o) + 0x00003efe __mulsf3 + .text 0x000040f2 0x15c /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_div_sf.o) + 0x000040f2 __divsf3 + .text 0x0000424e 0x60 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_ge_sf.o) + 0x0000424e __gesf2 + .text 0x000042ae 0x60 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_lt_sf.o) + 0x000042ae __ltsf2 + .text 0x0000430e 0xc0 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_si_to_sf.o) + 0x0000430e __floatsisf + .text 0x000043ce 0xa4 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_sf_to_si.o) + 0x000043ce __fixsfsi + .text 0x00004472 0x0 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_thenan_sf.o) + .text 0x00004472 0xf0 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_usi_to_sf.o) + 0x00004472 __floatunsisf + .text 0x00004562 0x0 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_udivmodhi4.o) + .text 0x00004562 0x0 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_prologue.o) + .text 0x00004562 0x0 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_epilogue.o) + .text 0x00004562 0x0 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_tablejump.o) + .text 0x00004562 0xb4 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_clzsi2.o) + 0x00004562 __clzsi2 + .text 0x00004616 0x19c /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_pack_sf.o) + 0x00004616 __pack_f + .text 0x000047b2 0xd2 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_unpack_sf.o) + 0x000047b2 __unpack_f + .text 0x00004884 0xb2 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_fpcmp_parts_sf.o) + 0x00004884 __fpcmp_parts_f + .text 0x00004936 0x0 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_clz.o) + .text 0x00004936 0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(malloc.o) + .text 0x00004936 0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(random.o) + .text 0x00004936 0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(realloc.o) + .text 0x00004936 0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(atol.o) + .text 0x00004936 0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(isspace.o) + .text 0x00004936 0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(tolower.o) + .text 0x00004936 0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(toupper.o) + .text 0x00004936 0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(memcmp.o) + .text 0x00004936 0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(memcpy.o) + .text 0x00004936 0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(memmove.o) + .text 0x00004936 0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(strchr.o) + .text 0x00004936 0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(strcmp.o) + .text 0x00004936 0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(strcpy.o) + .text 0x00004936 0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(strncmp.o) + .text 0x00004936 0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(strncpy.o) + .text 0x00004936 0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(strrchr.o) + .text 0x00004936 0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(strstr.o) + .text 0x00004936 0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(itoa.o) + .text 0x00004936 0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(ltoa.o) + .text 0x00004936 0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(mulsi10.o) + .text 0x00004936 0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(ultoa.o) + .text 0x00004936 0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(utoa.o) + .text 0x00004936 0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(cty_isfalse.o) + .text 0x00004936 0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(strrev.o) + 0x00004936 . = ALIGN (0x2) + *(.text.*) + .text.libgcc 0x00004936 0x3e /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_mulsi3.o) + 0x00004936 __mulsi3 + .text.libgcc 0x00004974 0x26 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_divmodhi4.o) + 0x00004974 __divmodhi4 + 0x00004974 _div + .text.libgcc 0x0000499a 0x44 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_udivmodsi4.o) + 0x0000499a __udivmodsi4 + .text.libgcc 0x000049de 0x36 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_divmodsi4.o) + 0x000049de __divmodsi4 + .text.libgcc 0x00004a14 0x0 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_exit.o) + .text.libgcc 0x00004a14 0x0 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_copy_data.o) + .text.libgcc 0x00004a14 0x0 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_clear_bss.o) + .text.libgcc 0x00004a14 0x0 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_ctors.o) + .text.libgcc 0x00004a14 0x28 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_udivmodhi4.o) + 0x00004a14 __udivmodhi4 + .text.libgcc 0x00004a3c 0x38 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_prologue.o) + 0x00004a3c __prologue_saves__ + .text.libgcc 0x00004a74 0x36 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_epilogue.o) + 0x00004a74 __epilogue_restores__ + .text.libgcc 0x00004aaa 0xc /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_tablejump.o) + 0x00004aaa __tablejump2__ + 0x00004aae __tablejump__ + .text.avr-libc + 0x00004ab6 0x266 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(malloc.o) + 0x00004ab6 malloc + 0x00004bea free + .text.avr-libc + 0x00004d1c 0xaa /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(random.o) + 0x00004da4 random_r + 0x00004daa random + 0x00004db4 srandom + .text.avr-libc + 0x00004dc6 0x196 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(realloc.o) + 0x00004dc6 realloc + .text.avr-libc + 0x00004f5c 0x4e /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(atol.o) + 0x00004f5c atol + .text.avr-libc + 0x00004faa 0x10 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(isspace.o) + 0x00004faa isspace + .text.avr-libc + 0x00004fba 0x10 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(tolower.o) + 0x00004fba tolower + .text.avr-libc + 0x00004fca 0x10 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(toupper.o) + 0x00004fca toupper + .text.avr-libc + 0x00004fda 0x1a /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(memcmp.o) + 0x00004fda memcmp + .text.avr-libc + 0x00004ff4 0x12 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(memcpy.o) + 0x00004ff4 memcpy + .text.avr-libc + 0x00005006 0x24 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(memmove.o) + 0x00005006 memmove + .text.avr-libc + 0x0000502a 0x16 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(strchr.o) + 0x0000502a strchr + .text.avr-libc + 0x00005040 0x12 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(strcmp.o) + 0x00005040 strcmp + .text.avr-libc + 0x00005052 0xe /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(strcpy.o) + 0x00005052 strcpy + .text.avr-libc + 0x00005060 0x1c /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(strncmp.o) + 0x00005060 strncmp + .text.avr-libc + 0x0000507c 0x1e /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(strncpy.o) + 0x0000507c strncpy + .text.avr-libc + 0x0000509a 0x16 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(strrchr.o) + 0x0000509a strrchr + .text.avr-libc + 0x000050b0 0x34 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(strstr.o) + 0x000050b0 strstr + .text.avr-libc + 0x000050e4 0x42 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(itoa.o) + 0x000050e4 itoa + .text.avr-libc + 0x00005126 0x68 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(ltoa.o) + 0x00005126 ltoa + .text.avr-libc + 0x0000518e 0x2a /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(mulsi10.o) + 0x0000518e __mulsi_const_10 + .text.avr-libc + 0x000051b8 0x4a /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(ultoa.o) + 0x000051b8 ultoa + .text.avr-libc + 0x00005202 0x2c /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(utoa.o) + 0x00005202 utoa + .text.avr-libc + 0x0000522e 0x6 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(cty_isfalse.o) + 0x0000522e __ctype_isfalse + 0x00005232 __ctype_istrue + .text.avr-libc + 0x00005234 0x20 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(strrev.o) + 0x00005234 strrev + 0x00005254 . = ALIGN (0x2) + *(.fini9) + .fini9 0x00005254 0x0 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_exit.o) + 0x00005254 exit + 0x00005254 _exit + *(.fini9) + *(.fini8) + *(.fini8) + *(.fini7) + *(.fini7) + *(.fini6) + *(.fini6) + *(.fini5) + *(.fini5) + *(.fini4) + *(.fini4) + *(.fini3) + *(.fini3) + *(.fini2) + *(.fini2) + *(.fini1) + *(.fini1) + *(.fini0) + .fini0 0x00005254 0x4 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_exit.o) + *(.fini0) + 0x00005258 _etext = . + +.data 0x00800100 0x1e0 load address 0x00005258 + 0x00800100 PROVIDE (__data_start, .) + *(.data) + .data 0x00800100 0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/crtm328p.o + .data 0x00800100 0x72 obj/Release/adapticsBT.o + .data 0x00800172 0x3 obj/Release/main.o + 0x00800172 packetSize + .data 0x00800175 0x0 obj/Release/arduinoSrc1_0/CDC.o + .data 0x00800175 0x0 obj/Release/arduinoSrc1_0/HID.o + .data 0x00800175 0x20 obj/Release/arduinoSrc1_0/HardwareSerial.o + 0x00800175 _ZTV14HardwareSerial + 0x00800185 _ZTV6Stream + .data 0x00800195 0xc obj/Release/arduinoSrc1_0/IPAddress.o + 0x00800195 _ZTV9IPAddress + 0x0080019b _ZTV9Printable + .data 0x008001a1 0xa obj/Release/arduinoSrc1_0/Print.o + 0x008001a3 _ZTV5Print + .data 0x008001ab 0x0 obj/Release/arduinoSrc1_0/Stream.o + .data 0x008001ab 0x1 obj/Release/arduinoSrc1_0/Tone.o + .data 0x008001ac 0x0 obj/Release/arduinoSrc1_0/USBCore.o + .data 0x008001ac 0x0 obj/Release/arduinoSrc1_0/WInterrupts.o + .data 0x008001ac 0x0 obj/Release/arduinoSrc1_0/WMath.o + .data 0x008001ac 0x1 obj/Release/arduinoSrc1_0/WString.o + .data 0x008001ad 0x0 obj/Release/arduinoSrc1_0/new.o + .data 0x008001ad 0x0 obj/Release/arduinoSrc1_0/wiring.o + .data 0x008001ad 0x1 obj/Release/arduinoSrc1_0/wiring_analog.o + 0x008001ad analog_reference + .data 0x008001ae 0x0 obj/Release/arduinoSrc1_0/wiring_digital.o + .data 0x008001ae 0x0 obj/Release/arduinoSrc1_0/wiring_pulse.o + .data 0x008001ae 0x0 obj/Release/arduinoSrc1_0/wiring_shift.o + .data 0x008001ae 0x20 obj/Release/arduino_libs_1_0/Wire/Wire.o + 0x008001ae _ZTV7TwoWire + .data 0x008001ce 0x0 obj/Release/arduino_libs_1_0/Wire/utility/twi.o + .data 0x008001ce 0x0 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_mulsi3.o) + .data 0x008001ce 0x0 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_divmodhi4.o) + .data 0x008001ce 0x0 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_udivmodsi4.o) + .data 0x008001ce 0x0 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_divmodsi4.o) + .data 0x008001ce 0x0 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_exit.o) + .data 0x008001ce 0x0 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_copy_data.o) + .data 0x008001ce 0x0 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_clear_bss.o) + .data 0x008001ce 0x0 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_ctors.o) + .data 0x008001ce 0x0 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_fixunssfsi.o) + .data 0x008001ce 0x0 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_addsub_sf.o) + .data 0x008001ce 0x0 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_mul_sf.o) + .data 0x008001ce 0x0 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_div_sf.o) + .data 0x008001ce 0x0 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_ge_sf.o) + .data 0x008001ce 0x0 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_lt_sf.o) + .data 0x008001ce 0x0 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_si_to_sf.o) + .data 0x008001ce 0x0 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_sf_to_si.o) + .data 0x008001ce 0x8 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_thenan_sf.o) + 0x008001ce __thenan_sf + .data 0x008001d6 0x0 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_usi_to_sf.o) + .data 0x008001d6 0x0 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_udivmodhi4.o) + .data 0x008001d6 0x0 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_prologue.o) + .data 0x008001d6 0x0 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_epilogue.o) + .data 0x008001d6 0x0 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_tablejump.o) + .data 0x008001d6 0x0 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_clzsi2.o) + .data 0x008001d6 0x0 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_pack_sf.o) + .data 0x008001d6 0x0 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_unpack_sf.o) + .data 0x008001d6 0x0 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_fpcmp_parts_sf.o) + .data 0x008001d6 0x100 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_clz.o) + 0x008001d6 __clz_tab + .data 0x008002d6 0x6 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(malloc.o) + 0x008002d6 __malloc_margin + 0x008002d8 __malloc_heap_start + 0x008002da __malloc_heap_end + .data 0x008002dc 0x4 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(random.o) + .data 0x008002e0 0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(realloc.o) + .data 0x008002e0 0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(atol.o) + .data 0x008002e0 0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(isspace.o) + .data 0x008002e0 0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(tolower.o) + .data 0x008002e0 0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(toupper.o) + .data 0x008002e0 0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(memcmp.o) + .data 0x008002e0 0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(memcpy.o) + .data 0x008002e0 0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(memmove.o) + .data 0x008002e0 0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(strchr.o) + .data 0x008002e0 0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(strcmp.o) + .data 0x008002e0 0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(strcpy.o) + .data 0x008002e0 0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(strncmp.o) + .data 0x008002e0 0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(strncpy.o) + .data 0x008002e0 0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(strrchr.o) + .data 0x008002e0 0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(strstr.o) + .data 0x008002e0 0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(itoa.o) + .data 0x008002e0 0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(ltoa.o) + .data 0x008002e0 0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(mulsi10.o) + .data 0x008002e0 0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(ultoa.o) + .data 0x008002e0 0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(utoa.o) + .data 0x008002e0 0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(cty_isfalse.o) + .data 0x008002e0 0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(strrev.o) + *(.data*) + *(.rodata) + *(.rodata*) + *(.gnu.linkonce.d*) + 0x008002e0 . = ALIGN (0x2) + 0x008002e0 _edata = . + 0x008002e0 PROVIDE (__data_end, .) + +.bss 0x008002e0 0x1b0 + 0x008002e0 PROVIDE (__bss_start, .) + *(.bss) + .bss 0x008002e0 0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/crtm328p.o + .bss 0x008002e0 0x0 obj/Release/adapticsBT.o + .bss 0x008002e0 0x1a obj/Release/main.o + 0x008002e0 connected + 0x008002e1 data + 0x008002eb CB_SHBP + 0x008002ec CB_function + 0x008002ed CB_VARCrange + 0x008002ee CB_FREQrange + 0x008002ef CB_BUZfreq + 0x008002f0 CB_ADCrate + 0x008002f1 CB_ACmode + 0x008002f2 CB_PEAKmode + 0x008002f3 CB_PCALmode + 0x008002f4 CB_LPFbw + 0x008002f5 CB_EXTdiode + 0x008002f6 CB_OPconf + 0x008002f7 CB_FREQinprest + 0x008002f8 CB_ADPext + 0x008002f9 CB_DCfs + .bss 0x008002fa 0x0 obj/Release/arduinoSrc1_0/CDC.o + .bss 0x008002fa 0x0 obj/Release/arduinoSrc1_0/HID.o + .bss 0x008002fa 0xa7 obj/Release/arduinoSrc1_0/HardwareSerial.o + 0x008002fa rx_buffer + 0x0080033e tx_buffer + 0x00800382 Serial + .bss 0x008003a1 0x6 obj/Release/arduinoSrc1_0/IPAddress.o + .bss 0x008003a7 0x0 obj/Release/arduinoSrc1_0/Print.o + .bss 0x008003a7 0x0 obj/Release/arduinoSrc1_0/Stream.o + .bss 0x008003a7 0x15 obj/Release/arduinoSrc1_0/Tone.o + 0x008003a7 timer0_toggle_count + 0x008003ab timer0_pin_port + 0x008003ad timer0_pin_mask + 0x008003ae timer1_toggle_count + 0x008003b2 timer1_pin_port + 0x008003b4 timer1_pin_mask + 0x008003b5 timer2_toggle_count + 0x008003b9 timer2_pin_port + 0x008003bb timer2_pin_mask + .bss 0x008003bc 0x0 obj/Release/arduinoSrc1_0/USBCore.o + .bss 0x008003bc 0x4 obj/Release/arduinoSrc1_0/WInterrupts.o + .bss 0x008003c0 0x0 obj/Release/arduinoSrc1_0/WMath.o + .bss 0x008003c0 0x1 obj/Release/arduinoSrc1_0/WString.o + .bss 0x008003c1 0x0 obj/Release/arduinoSrc1_0/new.o + .bss 0x008003c1 0x9 obj/Release/arduinoSrc1_0/wiring.o + 0x008003c1 timer0_overflow_count + 0x008003c5 timer0_millis + .bss 0x008003ca 0x0 obj/Release/arduinoSrc1_0/wiring_analog.o + .bss 0x008003ca 0x0 obj/Release/arduinoSrc1_0/wiring_digital.o + .bss 0x008003ca 0x0 obj/Release/arduinoSrc1_0/wiring_pulse.o + .bss 0x008003ca 0x0 obj/Release/arduinoSrc1_0/wiring_shift.o + .bss 0x008003ca 0x56 obj/Release/arduino_libs_1_0/Wire/Wire.o + 0x008003ca _ZN7TwoWire8rxBufferE + 0x008003ea _ZN7TwoWire13rxBufferIndexE + 0x008003eb _ZN7TwoWire14rxBufferLengthE + 0x008003ec _ZN7TwoWire9txAddressE + 0x008003ed _ZN7TwoWire8txBufferE + 0x0080040d _ZN7TwoWire13txBufferIndexE + 0x0080040e _ZN7TwoWire14txBufferLengthE + 0x0080040f _ZN7TwoWire12transmittingE + 0x00800410 _ZN7TwoWire14user_onRequestE + 0x00800412 _ZN7TwoWire14user_onReceiveE + 0x00800414 Wire + .bss 0x00800420 0x6c obj/Release/arduino_libs_1_0/Wire/utility/twi.o + .bss 0x0080048c 0x0 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_mulsi3.o) + .bss 0x0080048c 0x0 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_divmodhi4.o) + .bss 0x0080048c 0x0 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_udivmodsi4.o) + .bss 0x0080048c 0x0 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_divmodsi4.o) + .bss 0x0080048c 0x0 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_exit.o) + .bss 0x0080048c 0x0 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_copy_data.o) + .bss 0x0080048c 0x0 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_clear_bss.o) + .bss 0x0080048c 0x0 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_ctors.o) + .bss 0x0080048c 0x0 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_fixunssfsi.o) + .bss 0x0080048c 0x0 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_addsub_sf.o) + .bss 0x0080048c 0x0 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_mul_sf.o) + .bss 0x0080048c 0x0 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_div_sf.o) + .bss 0x0080048c 0x0 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_ge_sf.o) + .bss 0x0080048c 0x0 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_lt_sf.o) + .bss 0x0080048c 0x0 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_si_to_sf.o) + .bss 0x0080048c 0x0 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_sf_to_si.o) + .bss 0x0080048c 0x0 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_thenan_sf.o) + .bss 0x0080048c 0x0 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_usi_to_sf.o) + .bss 0x0080048c 0x0 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_udivmodhi4.o) + .bss 0x0080048c 0x0 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_prologue.o) + .bss 0x0080048c 0x0 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_epilogue.o) + .bss 0x0080048c 0x0 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_tablejump.o) + .bss 0x0080048c 0x0 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_clzsi2.o) + .bss 0x0080048c 0x0 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_pack_sf.o) + .bss 0x0080048c 0x0 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_unpack_sf.o) + .bss 0x0080048c 0x0 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_fpcmp_parts_sf.o) + .bss 0x0080048c 0x0 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_clz.o) + .bss 0x0080048c 0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(malloc.o) + .bss 0x0080048c 0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(random.o) + .bss 0x0080048c 0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(realloc.o) + .bss 0x0080048c 0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(atol.o) + .bss 0x0080048c 0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(isspace.o) + .bss 0x0080048c 0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(tolower.o) + .bss 0x0080048c 0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(toupper.o) + .bss 0x0080048c 0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(memcmp.o) + .bss 0x0080048c 0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(memcpy.o) + .bss 0x0080048c 0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(memmove.o) + .bss 0x0080048c 0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(strchr.o) + .bss 0x0080048c 0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(strcmp.o) + .bss 0x0080048c 0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(strcpy.o) + .bss 0x0080048c 0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(strncmp.o) + .bss 0x0080048c 0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(strncpy.o) + .bss 0x0080048c 0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(strrchr.o) + .bss 0x0080048c 0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(strstr.o) + .bss 0x0080048c 0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(itoa.o) + .bss 0x0080048c 0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(ltoa.o) + .bss 0x0080048c 0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(mulsi10.o) + .bss 0x0080048c 0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(ultoa.o) + .bss 0x0080048c 0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(utoa.o) + .bss 0x0080048c 0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(cty_isfalse.o) + .bss 0x0080048c 0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(strrev.o) + *(.bss*) + *(COMMON) + COMMON 0x0080048c 0x4 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(malloc.o) + 0x0080048c __brkval + 0x0080048e __flp + 0x00800490 PROVIDE (__bss_end, .) + 0x00005258 __data_load_start = LOADADDR (.data) + 0x00005438 __data_load_end = (__data_load_start + SIZEOF (.data)) + +.noinit 0x00800490 0x0 + 0x00800490 PROVIDE (__noinit_start, .) + *(.noinit*) + 0x00800490 PROVIDE (__noinit_end, .) + 0x00800490 _end = . + 0x00800490 PROVIDE (__heap_start, .) + +.eeprom 0x00810000 0x0 + *(.eeprom*) + 0x00810000 __eeprom_end = . + +.fuse + *(.fuse) + *(.lfuse) + *(.hfuse) + *(.efuse) + +.lock + *(.lock*) + +.signature + *(.signature*) + +.stab 0x00000000 0x2928 + *(.stab) + .stab 0x00000000 0x6cc /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/crtm328p.o + .stab 0x000006cc 0x750 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(malloc.o) + 0x75c (size before relaxing) + .stab 0x00000e1c 0x2d0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(random.o) + 0x330 (size before relaxing) + .stab 0x000010ec 0x3cc /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(realloc.o) + 0x5c4 (size before relaxing) + .stab 0x000014b8 0x1e0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(atol.o) + 0x1ec (size before relaxing) + .stab 0x00001698 0x9c /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(isspace.o) + 0xa8 (size before relaxing) + .stab 0x00001734 0x9c /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(tolower.o) + 0xa8 (size before relaxing) + .stab 0x000017d0 0x9c /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(toupper.o) + 0xa8 (size before relaxing) + .stab 0x0000186c 0xb4 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(memcmp.o) + 0xc0 (size before relaxing) + .stab 0x00001920 0x84 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(memcpy.o) + 0x90 (size before relaxing) + .stab 0x000019a4 0xe4 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(memmove.o) + 0xf0 (size before relaxing) + .stab 0x00001a88 0x9c /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(strchr.o) + 0xa8 (size before relaxing) + .stab 0x00001b24 0x84 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(strcmp.o) + 0x90 (size before relaxing) + .stab 0x00001ba8 0x6c /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(strcpy.o) + 0x78 (size before relaxing) + .stab 0x00001c14 0xc0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(strncmp.o) + 0xcc (size before relaxing) + .stab 0x00001cd4 0xcc /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(strncpy.o) + 0xd8 (size before relaxing) + .stab 0x00001da0 0x9c /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(strrchr.o) + 0xa8 (size before relaxing) + .stab 0x00001e3c 0x150 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(strstr.o) + 0x15c (size before relaxing) + .stab 0x00001f8c 0x1b0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(itoa.o) + 0x1bc (size before relaxing) + .stab 0x0000213c 0x294 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(ltoa.o) + 0x2a0 (size before relaxing) + .stab 0x000023d0 0x114 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(mulsi10.o) + 0x120 (size before relaxing) + .stab 0x000024e4 0x1e0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(ultoa.o) + 0x1ec (size before relaxing) + .stab 0x000026c4 0x12c /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(utoa.o) + 0x138 (size before relaxing) + .stab 0x000027f0 0x60 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(cty_isfalse.o) + 0x6c (size before relaxing) + .stab 0x00002850 0xd8 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(strrev.o) + 0xe4 (size before relaxing) + +.stabstr 0x00000000 0xd28 + *(.stabstr) + .stabstr 0x00000000 0xd28 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/crtm328p.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(bin/Release/ESS1995i2c.elf elf32-avr) +LOAD linker stubs + +Cross Reference Table + +Symbol File +CB_ACmode obj/Release/main.o +CB_ADCrate obj/Release/main.o +CB_ADPext obj/Release/main.o +CB_BUZfreq obj/Release/main.o +CB_DCfs obj/Release/main.o +CB_EXTdiode obj/Release/main.o +CB_FREQinprest obj/Release/main.o +CB_FREQrange obj/Release/main.o +CB_LPFbw obj/Release/main.o +CB_OPconf obj/Release/main.o +CB_PCALmode obj/Release/main.o +CB_PEAKmode obj/Release/main.o +CB_SHBP obj/Release/main.o +CB_VARCrange obj/Release/main.o +CB_function obj/Release/main.o +HardwareSerial::HardwareSerial(ring_buffer*, ring_buffer*, unsigned char volatile*, unsigned char volatile*, unsigned char volatile*, unsigned char volatile*, unsigned char volatile*, unsigned char, unsigned char, unsigned char, unsigned char, unsigned char) obj/Release/arduinoSrc1_0/HardwareSerial.o +HardwareSerial::HardwareSerial(ring_buffer*, ring_buffer*, unsigned char volatile*, unsigned char volatile*, unsigned char volatile*, unsigned char volatile*, unsigned char volatile*, unsigned char, unsigned char, unsigned char, unsigned char, unsigned char) obj/Release/arduinoSrc1_0/HardwareSerial.o +HardwareSerial::available() obj/Release/arduinoSrc1_0/HardwareSerial.o + obj/Release/main.o +HardwareSerial::begin(unsigned long) obj/Release/arduinoSrc1_0/HardwareSerial.o + obj/Release/adapticsBT.o +HardwareSerial::end() obj/Release/arduinoSrc1_0/HardwareSerial.o +HardwareSerial::flush() obj/Release/arduinoSrc1_0/HardwareSerial.o + obj/Release/adapticsBT.o +HardwareSerial::peek() obj/Release/arduinoSrc1_0/HardwareSerial.o +HardwareSerial::read() obj/Release/arduinoSrc1_0/HardwareSerial.o + obj/Release/main.o +HardwareSerial::write(unsigned char) obj/Release/arduinoSrc1_0/HardwareSerial.o +IPAddress::IPAddress() obj/Release/arduinoSrc1_0/IPAddress.o +IPAddress::IPAddress() obj/Release/arduinoSrc1_0/IPAddress.o +IPAddress::IPAddress(unsigned char const*) obj/Release/arduinoSrc1_0/IPAddress.o +IPAddress::IPAddress(unsigned char const*) obj/Release/arduinoSrc1_0/IPAddress.o +IPAddress::IPAddress(unsigned char, unsigned char, unsigned char, unsigned char) obj/Release/arduinoSrc1_0/IPAddress.o +IPAddress::IPAddress(unsigned char, unsigned char, unsigned char, unsigned char) obj/Release/arduinoSrc1_0/IPAddress.o +IPAddress::IPAddress(unsigned long) obj/Release/arduinoSrc1_0/IPAddress.o +IPAddress::IPAddress(unsigned long) obj/Release/arduinoSrc1_0/IPAddress.o +IPAddress::operator=(unsigned char const*) obj/Release/arduinoSrc1_0/IPAddress.o +IPAddress::operator=(unsigned long) obj/Release/arduinoSrc1_0/IPAddress.o +IPAddress::operator==(unsigned char const*) obj/Release/arduinoSrc1_0/IPAddress.o +IPAddress::printTo(Print&) const obj/Release/arduinoSrc1_0/IPAddress.o +Print::print(Printable const&) obj/Release/arduinoSrc1_0/Print.o +Print::print(String const&) obj/Release/arduinoSrc1_0/Print.o +Print::print(__FlashStringHelper const*) obj/Release/arduinoSrc1_0/Print.o +Print::print(char const*) obj/Release/arduinoSrc1_0/Print.o + obj/Release/adapticsBT.o +Print::print(char) obj/Release/arduinoSrc1_0/Print.o + obj/Release/arduinoSrc1_0/IPAddress.o +Print::print(double, int) obj/Release/arduinoSrc1_0/Print.o +Print::print(int, int) obj/Release/arduinoSrc1_0/Print.o +Print::print(long, int) obj/Release/arduinoSrc1_0/Print.o +Print::print(unsigned char, int) obj/Release/arduinoSrc1_0/Print.o + obj/Release/arduinoSrc1_0/IPAddress.o +Print::print(unsigned int, int) obj/Release/arduinoSrc1_0/Print.o +Print::print(unsigned long, int) obj/Release/arduinoSrc1_0/Print.o +Print::printFloat(double, unsigned char) obj/Release/arduinoSrc1_0/Print.o +Print::printNumber(unsigned long, unsigned char) obj/Release/arduinoSrc1_0/Print.o +Print::println() obj/Release/arduinoSrc1_0/Print.o +Print::println(Printable const&) obj/Release/arduinoSrc1_0/Print.o +Print::println(String const&) obj/Release/arduinoSrc1_0/Print.o +Print::println(__FlashStringHelper const*) obj/Release/arduinoSrc1_0/Print.o +Print::println(char const*) obj/Release/arduinoSrc1_0/Print.o +Print::println(char) obj/Release/arduinoSrc1_0/Print.o +Print::println(double, int) obj/Release/arduinoSrc1_0/Print.o +Print::println(int, int) obj/Release/arduinoSrc1_0/Print.o +Print::println(long, int) obj/Release/arduinoSrc1_0/Print.o +Print::println(unsigned char, int) obj/Release/arduinoSrc1_0/Print.o +Print::println(unsigned int, int) obj/Release/arduinoSrc1_0/Print.o +Print::println(unsigned long, int) obj/Release/arduinoSrc1_0/Print.o +Print::write(char const*) obj/Release/arduinoSrc1_0/Print.o +Print::write(unsigned char const*, unsigned int) obj/Release/arduinoSrc1_0/Print.o + obj/Release/arduino_libs_1_0/Wire/Wire.o + obj/Release/arduinoSrc1_0/HardwareSerial.o + obj/Release/main.o +Serial obj/Release/arduinoSrc1_0/HardwareSerial.o + obj/Release/main.o + obj/Release/adapticsBT.o +Stream::find(char*) obj/Release/arduinoSrc1_0/Stream.o +Stream::find(char*, unsigned int) obj/Release/arduinoSrc1_0/Stream.o +Stream::findUntil(char*, char*) obj/Release/arduinoSrc1_0/Stream.o +Stream::findUntil(char*, unsigned int, char*, unsigned int) obj/Release/arduinoSrc1_0/Stream.o +Stream::parseFloat() obj/Release/arduinoSrc1_0/Stream.o +Stream::parseFloat(char) obj/Release/arduinoSrc1_0/Stream.o +Stream::parseInt() obj/Release/arduinoSrc1_0/Stream.o +Stream::parseInt(char) obj/Release/arduinoSrc1_0/Stream.o +Stream::peekNextDigit() obj/Release/arduinoSrc1_0/Stream.o +Stream::readBytes(char*, unsigned int) obj/Release/arduinoSrc1_0/Stream.o +Stream::readBytesUntil(char, char*, unsigned int) obj/Release/arduinoSrc1_0/Stream.o +Stream::setTimeout(unsigned long) obj/Release/arduinoSrc1_0/Stream.o +Stream::timedPeek() obj/Release/arduinoSrc1_0/Stream.o +Stream::timedRead() obj/Release/arduinoSrc1_0/Stream.o +String::String(String const&) obj/Release/arduinoSrc1_0/WString.o +String::String(String const&) obj/Release/arduinoSrc1_0/WString.o +String::String(char const*) obj/Release/arduinoSrc1_0/WString.o +String::String(char const*) obj/Release/arduinoSrc1_0/WString.o +String::String(char) obj/Release/arduinoSrc1_0/WString.o +String::String(char) obj/Release/arduinoSrc1_0/WString.o +String::String(int, unsigned char) obj/Release/arduinoSrc1_0/WString.o +String::String(int, unsigned char) obj/Release/arduinoSrc1_0/WString.o +String::String(long, unsigned char) obj/Release/arduinoSrc1_0/WString.o +String::String(long, unsigned char) obj/Release/arduinoSrc1_0/WString.o +String::String(unsigned char, unsigned char) obj/Release/arduinoSrc1_0/WString.o +String::String(unsigned char, unsigned char) obj/Release/arduinoSrc1_0/WString.o +String::String(unsigned int, unsigned char) obj/Release/arduinoSrc1_0/WString.o +String::String(unsigned int, unsigned char) obj/Release/arduinoSrc1_0/WString.o +String::String(unsigned long, unsigned char) obj/Release/arduinoSrc1_0/WString.o +String::String(unsigned long, unsigned char) obj/Release/arduinoSrc1_0/WString.o +String::changeBuffer(unsigned int) obj/Release/arduinoSrc1_0/WString.o +String::charAt(unsigned int) const obj/Release/arduinoSrc1_0/WString.o +String::compareTo(String const&) const obj/Release/arduinoSrc1_0/WString.o +String::concat(String const&) obj/Release/arduinoSrc1_0/WString.o +String::concat(char const*) obj/Release/arduinoSrc1_0/WString.o +String::concat(char const*, unsigned int) obj/Release/arduinoSrc1_0/WString.o +String::concat(char) obj/Release/arduinoSrc1_0/WString.o +String::concat(int) obj/Release/arduinoSrc1_0/WString.o +String::concat(long) obj/Release/arduinoSrc1_0/WString.o +String::concat(unsigned char) obj/Release/arduinoSrc1_0/WString.o +String::concat(unsigned int) obj/Release/arduinoSrc1_0/WString.o +String::concat(unsigned long) obj/Release/arduinoSrc1_0/WString.o +String::copy(char const*, unsigned int) obj/Release/arduinoSrc1_0/WString.o +String::endsWith(String const&) const obj/Release/arduinoSrc1_0/WString.o +String::equals(String const&) const obj/Release/arduinoSrc1_0/WString.o +String::equals(char const*) const obj/Release/arduinoSrc1_0/WString.o +String::equalsIgnoreCase(String const&) const obj/Release/arduinoSrc1_0/WString.o +String::getBytes(unsigned char*, unsigned int, unsigned int) const obj/Release/arduinoSrc1_0/WString.o +String::indexOf(String const&) const obj/Release/arduinoSrc1_0/WString.o +String::indexOf(String const&, unsigned int) const obj/Release/arduinoSrc1_0/WString.o +String::indexOf(char) const obj/Release/arduinoSrc1_0/WString.o +String::indexOf(char, unsigned int) const obj/Release/arduinoSrc1_0/WString.o +String::invalidate() obj/Release/arduinoSrc1_0/WString.o +String::lastIndexOf(String const&) const obj/Release/arduinoSrc1_0/WString.o +String::lastIndexOf(String const&, unsigned int) const obj/Release/arduinoSrc1_0/WString.o +String::lastIndexOf(char) const obj/Release/arduinoSrc1_0/WString.o +String::lastIndexOf(char, unsigned int) const obj/Release/arduinoSrc1_0/WString.o +String::operator<(String const&) const obj/Release/arduinoSrc1_0/WString.o +String::operator<=(String const&) const obj/Release/arduinoSrc1_0/WString.o +String::operator=(String const&) obj/Release/arduinoSrc1_0/WString.o +String::operator=(char const*) obj/Release/arduinoSrc1_0/WString.o +String::operator>(String const&) const obj/Release/arduinoSrc1_0/WString.o +String::operator>=(String const&) const obj/Release/arduinoSrc1_0/WString.o +String::operator[](unsigned int) obj/Release/arduinoSrc1_0/WString.o +String::operator[](unsigned int) const obj/Release/arduinoSrc1_0/WString.o + obj/Release/arduinoSrc1_0/Print.o +String::replace(String const&, String const&) obj/Release/arduinoSrc1_0/WString.o +String::replace(char, char) obj/Release/arduinoSrc1_0/WString.o +String::reserve(unsigned int) obj/Release/arduinoSrc1_0/WString.o +String::setCharAt(unsigned int, char) obj/Release/arduinoSrc1_0/WString.o +String::startsWith(String const&) const obj/Release/arduinoSrc1_0/WString.o +String::startsWith(String const&, unsigned int) const obj/Release/arduinoSrc1_0/WString.o +String::substring(unsigned int) const obj/Release/arduinoSrc1_0/WString.o +String::substring(unsigned int, unsigned int) const obj/Release/arduinoSrc1_0/WString.o +String::toInt() const obj/Release/arduinoSrc1_0/WString.o +String::toLowerCase() obj/Release/arduinoSrc1_0/WString.o +String::toUpperCase() obj/Release/arduinoSrc1_0/WString.o +String::trim() obj/Release/arduinoSrc1_0/WString.o +String::~String() obj/Release/arduinoSrc1_0/WString.o +String::~String() obj/Release/arduinoSrc1_0/WString.o +TwoWire::TwoWire() obj/Release/arduino_libs_1_0/Wire/Wire.o +TwoWire::TwoWire() obj/Release/arduino_libs_1_0/Wire/Wire.o +TwoWire::available() obj/Release/arduino_libs_1_0/Wire/Wire.o +TwoWire::begin() obj/Release/arduino_libs_1_0/Wire/Wire.o + obj/Release/main.o +TwoWire::begin(int) obj/Release/arduino_libs_1_0/Wire/Wire.o +TwoWire::begin(unsigned char) obj/Release/arduino_libs_1_0/Wire/Wire.o +TwoWire::beginTransmission(int) obj/Release/arduino_libs_1_0/Wire/Wire.o + obj/Release/main.o +TwoWire::beginTransmission(unsigned char) obj/Release/arduino_libs_1_0/Wire/Wire.o +TwoWire::endTransmission() obj/Release/arduino_libs_1_0/Wire/Wire.o + obj/Release/main.o +TwoWire::flush() obj/Release/arduino_libs_1_0/Wire/Wire.o +TwoWire::onReceive(void (*)(int)) obj/Release/arduino_libs_1_0/Wire/Wire.o +TwoWire::onReceiveService(unsigned char*, int) obj/Release/arduino_libs_1_0/Wire/Wire.o +TwoWire::onRequest(void (*)()) obj/Release/arduino_libs_1_0/Wire/Wire.o +TwoWire::onRequestService() obj/Release/arduino_libs_1_0/Wire/Wire.o +TwoWire::peek() obj/Release/arduino_libs_1_0/Wire/Wire.o +TwoWire::read() obj/Release/arduino_libs_1_0/Wire/Wire.o + obj/Release/main.o +TwoWire::requestFrom(int, int) obj/Release/arduino_libs_1_0/Wire/Wire.o +TwoWire::requestFrom(unsigned char, unsigned char) obj/Release/arduino_libs_1_0/Wire/Wire.o +TwoWire::rxBuffer obj/Release/arduino_libs_1_0/Wire/Wire.o +TwoWire::rxBufferIndex obj/Release/arduino_libs_1_0/Wire/Wire.o +TwoWire::rxBufferLength obj/Release/arduino_libs_1_0/Wire/Wire.o +TwoWire::transmitting obj/Release/arduino_libs_1_0/Wire/Wire.o +TwoWire::txAddress obj/Release/arduino_libs_1_0/Wire/Wire.o +TwoWire::txBuffer obj/Release/arduino_libs_1_0/Wire/Wire.o +TwoWire::txBufferIndex obj/Release/arduino_libs_1_0/Wire/Wire.o +TwoWire::txBufferLength obj/Release/arduino_libs_1_0/Wire/Wire.o +TwoWire::user_onReceive obj/Release/arduino_libs_1_0/Wire/Wire.o +TwoWire::user_onRequest obj/Release/arduino_libs_1_0/Wire/Wire.o +TwoWire::write(unsigned char const*, unsigned int) obj/Release/arduino_libs_1_0/Wire/Wire.o +TwoWire::write(unsigned char) obj/Release/arduino_libs_1_0/Wire/Wire.o + obj/Release/main.o +Wire obj/Release/arduino_libs_1_0/Wire/Wire.o + obj/Release/main.o +__addsf3 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_addsub_sf.o) + obj/Release/arduinoSrc1_0/Print.o +__bad_interrupt /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/crtm328p.o +__brkval /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(realloc.o) + /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(malloc.o) +__bss_end /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_clear_bss.o) +__bss_start /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_clear_bss.o) +__clz_tab /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_clz.o) + /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_clzsi2.o) +__clzsi2 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_clzsi2.o) + /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_usi_to_sf.o) + /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_si_to_sf.o) +__ctors_end /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_ctors.o) +__ctors_start /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_ctors.o) +__ctype_isfalse /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(cty_isfalse.o) + /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(isspace.o) +__ctype_istrue /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(cty_isfalse.o) +__cxa_guard_abort obj/Release/arduinoSrc1_0/new.o +__cxa_guard_acquire obj/Release/arduinoSrc1_0/new.o +__cxa_guard_release obj/Release/arduinoSrc1_0/new.o +__cxa_pure_virtual obj/Release/arduinoSrc1_0/new.o + obj/Release/arduino_libs_1_0/Wire/Wire.o + obj/Release/arduinoSrc1_0/Print.o + obj/Release/arduinoSrc1_0/IPAddress.o + obj/Release/arduinoSrc1_0/HardwareSerial.o +__data_end /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_copy_data.o) +__data_load_start /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_copy_data.o) +__data_start /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_copy_data.o) +__divmodhi4 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_divmodhi4.o) + obj/Release/arduinoSrc1_0/HardwareSerial.o +__divmodsi4 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_divmodsi4.o) + /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(random.o) + obj/Release/arduinoSrc1_0/WMath.o +__divsf3 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_div_sf.o) + obj/Release/arduinoSrc1_0/Print.o +__do_clear_bss /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_clear_bss.o) + /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(malloc.o) + obj/Release/arduino_libs_1_0/Wire/utility/twi.o + obj/Release/arduino_libs_1_0/Wire/Wire.o + obj/Release/arduinoSrc1_0/wiring.o + obj/Release/arduinoSrc1_0/WString.o + obj/Release/arduinoSrc1_0/WInterrupts.o + obj/Release/arduinoSrc1_0/Tone.o + obj/Release/arduinoSrc1_0/IPAddress.o + obj/Release/arduinoSrc1_0/HardwareSerial.o + obj/Release/main.o +__do_copy_data /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_copy_data.o) + /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(random.o) + /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(malloc.o) + /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_clz.o) + /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_thenan_sf.o) + obj/Release/arduino_libs_1_0/Wire/Wire.o + obj/Release/arduinoSrc1_0/wiring_analog.o + obj/Release/arduinoSrc1_0/WString.o + obj/Release/arduinoSrc1_0/Tone.o + obj/Release/arduinoSrc1_0/Print.o + obj/Release/arduinoSrc1_0/IPAddress.o + obj/Release/arduinoSrc1_0/HardwareSerial.o + obj/Release/main.o + obj/Release/adapticsBT.o +__do_global_ctors /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_ctors.o) + obj/Release/arduino_libs_1_0/Wire/Wire.o + obj/Release/arduinoSrc1_0/IPAddress.o + obj/Release/arduinoSrc1_0/HardwareSerial.o +__epilogue_restores__ /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_epilogue.o) + /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(realloc.o) + /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(random.o) + /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_pack_sf.o) + /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_usi_to_sf.o) + /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_sf_to_si.o) + /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_si_to_sf.o) + /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_lt_sf.o) + /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_ge_sf.o) + /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_div_sf.o) + /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_mul_sf.o) + /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_addsub_sf.o) +__fixsfsi /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_sf_to_si.o) + /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_fixunssfsi.o) + obj/Release/arduinoSrc1_0/Print.o +__fixunssfsi /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_fixunssfsi.o) + obj/Release/arduinoSrc1_0/Print.o +__floatsisf /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_si_to_sf.o) + obj/Release/arduinoSrc1_0/Stream.o + obj/Release/arduinoSrc1_0/Print.o +__floatunsisf /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_usi_to_sf.o) + obj/Release/arduinoSrc1_0/Print.o +__flp /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(realloc.o) + /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(malloc.o) +__fpcmp_parts_f /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_fpcmp_parts_sf.o) + /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_lt_sf.o) + /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_ge_sf.o) +__gesf2 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_ge_sf.o) + /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_fixunssfsi.o) +__heap_end /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/crtm328p.o + /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(malloc.o) +__heap_start /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(malloc.o) +__init /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/crtm328p.o +__ltsf2 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_lt_sf.o) + obj/Release/arduinoSrc1_0/Print.o +__malloc_heap_end /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(malloc.o) + /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(realloc.o) +__malloc_heap_start /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(malloc.o) +__malloc_margin /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(malloc.o) + /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(realloc.o) +__mulsf3 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_mul_sf.o) + obj/Release/arduinoSrc1_0/Stream.o + obj/Release/arduinoSrc1_0/Print.o +__mulsi3 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_mulsi3.o) + /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(random.o) + obj/Release/arduinoSrc1_0/wiring_pulse.o + obj/Release/arduinoSrc1_0/WMath.o + obj/Release/arduinoSrc1_0/Tone.o + obj/Release/arduinoSrc1_0/Stream.o +__mulsi_const_10 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(mulsi10.o) + /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(atol.o) +__pack_f /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_pack_sf.o) + /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_usi_to_sf.o) + /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_si_to_sf.o) + /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_div_sf.o) + /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_mul_sf.o) + /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_addsub_sf.o) +__prologue_saves__ /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_prologue.o) + /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(realloc.o) + /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(random.o) + /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_usi_to_sf.o) + /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_sf_to_si.o) + /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_si_to_sf.o) + /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_lt_sf.o) + /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_ge_sf.o) + /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_div_sf.o) + /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_mul_sf.o) + /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_addsub_sf.o) +__stack /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/crtm328p.o +__subsf3 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_addsub_sf.o) + /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_fixunssfsi.o) + obj/Release/arduinoSrc1_0/Print.o +__tablejump2__ /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_tablejump.o) +__tablejump__ /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_tablejump.o) + /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_ctors.o) +__thenan_sf /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_thenan_sf.o) + /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_div_sf.o) + /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_mul_sf.o) + /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_addsub_sf.o) +__udivmodhi4 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_udivmodhi4.o) + /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(utoa.o) + /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(itoa.o) + /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_divmodhi4.o) +__udivmodsi4 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_udivmodsi4.o) + /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(ultoa.o) + /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(ltoa.o) + /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_divmodsi4.o) + obj/Release/arduinoSrc1_0/wiring_pulse.o + obj/Release/arduinoSrc1_0/Tone.o + obj/Release/arduinoSrc1_0/Print.o + obj/Release/arduinoSrc1_0/HardwareSerial.o +__unpack_f /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_unpack_sf.o) + /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_sf_to_si.o) + /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_lt_sf.o) + /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_ge_sf.o) + /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_div_sf.o) + /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_mul_sf.o) + /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_addsub_sf.o) +__vector_1 obj/Release/arduinoSrc1_0/WInterrupts.o + /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/crtm328p.o +__vector_10 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/crtm328p.o +__vector_11 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/crtm328p.o +__vector_12 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/crtm328p.o +__vector_13 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/crtm328p.o +__vector_14 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/crtm328p.o +__vector_15 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/crtm328p.o +__vector_16 obj/Release/arduinoSrc1_0/wiring.o + /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/crtm328p.o +__vector_17 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/crtm328p.o +__vector_18 obj/Release/arduinoSrc1_0/HardwareSerial.o + /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/crtm328p.o +__vector_19 obj/Release/arduinoSrc1_0/HardwareSerial.o + /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/crtm328p.o +__vector_2 obj/Release/arduinoSrc1_0/WInterrupts.o + /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/crtm328p.o +__vector_20 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/crtm328p.o +__vector_21 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/crtm328p.o +__vector_22 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/crtm328p.o +__vector_23 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/crtm328p.o +__vector_24 obj/Release/arduino_libs_1_0/Wire/utility/twi.o + /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/crtm328p.o +__vector_25 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/crtm328p.o +__vector_3 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/crtm328p.o +__vector_4 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/crtm328p.o +__vector_5 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/crtm328p.o +__vector_6 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/crtm328p.o +__vector_7 obj/Release/arduinoSrc1_0/Tone.o + /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/crtm328p.o +__vector_8 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/crtm328p.o +__vector_9 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/crtm328p.o +__vector_default /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/crtm328p.o +__vectors /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/crtm328p.o +_div /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_divmodhi4.o) +_exit /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_exit.o) +advertise() obj/Release/adapticsBT.o + obj/Release/main.o +analogRead obj/Release/arduinoSrc1_0/wiring_analog.o +analogReference obj/Release/arduinoSrc1_0/wiring_analog.o +analogWrite obj/Release/arduinoSrc1_0/wiring_analog.o +analog_reference obj/Release/arduinoSrc1_0/wiring_analog.o +atol /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(atol.o) + obj/Release/arduinoSrc1_0/WString.o +attachInterrupt obj/Release/arduinoSrc1_0/WInterrupts.o +connected obj/Release/main.o +data obj/Release/main.o +delay obj/Release/arduinoSrc1_0/wiring.o + obj/Release/main.o + obj/Release/adapticsBT.o +delayMicroseconds obj/Release/arduinoSrc1_0/wiring.o +detachInterrupt obj/Release/arduinoSrc1_0/WInterrupts.o +digitalRead obj/Release/arduinoSrc1_0/wiring_digital.o + obj/Release/arduinoSrc1_0/wiring_shift.o + obj/Release/main.o +digitalWrite obj/Release/arduinoSrc1_0/wiring_digital.o + obj/Release/arduino_libs_1_0/Wire/utility/twi.o + obj/Release/arduinoSrc1_0/wiring_shift.o + obj/Release/arduinoSrc1_0/wiring_analog.o + obj/Release/arduinoSrc1_0/Tone.o + obj/Release/main.o +digital_pin_to_bit_mask_PGM obj/Release/arduinoSrc1_0/wiring_digital.o + obj/Release/arduinoSrc1_0/wiring_pulse.o + obj/Release/arduinoSrc1_0/Tone.o +digital_pin_to_port_PGM obj/Release/arduinoSrc1_0/wiring_digital.o + obj/Release/arduinoSrc1_0/wiring_pulse.o + obj/Release/arduinoSrc1_0/Tone.o +digital_pin_to_timer_PGM obj/Release/arduinoSrc1_0/wiring_digital.o + obj/Release/arduinoSrc1_0/wiring_analog.o +disableTimer(unsigned char) obj/Release/arduinoSrc1_0/Tone.o +exit /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_exit.o) + /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/crtm328p.o +free /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(malloc.o) + /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(realloc.o) + obj/Release/arduinoSrc1_0/new.o + obj/Release/arduinoSrc1_0/WString.o +init obj/Release/arduinoSrc1_0/wiring.o + obj/Release/main.o +isspace /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(isspace.o) + obj/Release/arduinoSrc1_0/WString.o +itoa /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(itoa.o) + obj/Release/arduinoSrc1_0/WString.o +ltoa /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(ltoa.o) + obj/Release/arduinoSrc1_0/WString.o +main obj/Release/main.o + /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/crtm328p.o +makeWord(unsigned char, unsigned char) obj/Release/arduinoSrc1_0/WMath.o +makeWord(unsigned int) obj/Release/arduinoSrc1_0/WMath.o +malloc /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(malloc.o) + /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(realloc.o) + obj/Release/arduinoSrc1_0/new.o +map(long, long, long, long, long) obj/Release/arduinoSrc1_0/WMath.o +memcmp /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(memcmp.o) + obj/Release/arduinoSrc1_0/IPAddress.o +memcpy /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(memcpy.o) + /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(memmove.o) + /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(realloc.o) + obj/Release/arduinoSrc1_0/WString.o +memmove /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(memmove.o) + obj/Release/arduinoSrc1_0/WString.o +micros obj/Release/arduinoSrc1_0/wiring.o +millis obj/Release/arduinoSrc1_0/wiring.o + obj/Release/arduinoSrc1_0/Stream.o +noTone(unsigned char) obj/Release/arduinoSrc1_0/Tone.o +operator delete(void*) obj/Release/arduinoSrc1_0/new.o +operator new(unsigned int) obj/Release/arduinoSrc1_0/new.o +operator+(StringSumHelper const&, String const&) obj/Release/arduinoSrc1_0/WString.o +operator+(StringSumHelper const&, char const*) obj/Release/arduinoSrc1_0/WString.o +operator+(StringSumHelper const&, char) obj/Release/arduinoSrc1_0/WString.o +operator+(StringSumHelper const&, int) obj/Release/arduinoSrc1_0/WString.o +operator+(StringSumHelper const&, long) obj/Release/arduinoSrc1_0/WString.o +operator+(StringSumHelper const&, unsigned char) obj/Release/arduinoSrc1_0/WString.o +operator+(StringSumHelper const&, unsigned int) obj/Release/arduinoSrc1_0/WString.o +operator+(StringSumHelper const&, unsigned long) obj/Release/arduinoSrc1_0/WString.o +packetSize obj/Release/main.o +pinMode obj/Release/arduinoSrc1_0/wiring_digital.o + obj/Release/arduinoSrc1_0/wiring_analog.o + obj/Release/arduinoSrc1_0/Tone.o + obj/Release/main.o + obj/Release/adapticsBT.o +port_to_input_PGM obj/Release/arduinoSrc1_0/wiring_digital.o + obj/Release/arduinoSrc1_0/wiring_pulse.o +port_to_mode_PGM obj/Release/arduinoSrc1_0/wiring_digital.o +port_to_output_PGM obj/Release/arduinoSrc1_0/wiring_digital.o + obj/Release/arduinoSrc1_0/Tone.o +pulseIn obj/Release/arduinoSrc1_0/wiring_pulse.o +random /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(random.o) + obj/Release/arduinoSrc1_0/WMath.o +random(long) obj/Release/arduinoSrc1_0/WMath.o +random(long, long) obj/Release/arduinoSrc1_0/WMath.o +randomSeed(unsigned int) obj/Release/arduinoSrc1_0/WMath.o +random_r /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(random.o) +realloc /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(realloc.o) + obj/Release/arduinoSrc1_0/WString.o +rx_buffer obj/Release/arduinoSrc1_0/HardwareSerial.o +serialEvent() obj/Release/arduinoSrc1_0/HardwareSerial.o +serialEventRun() obj/Release/arduinoSrc1_0/HardwareSerial.o +setupBlueTooth() obj/Release/adapticsBT.o + obj/Release/main.o +shiftIn obj/Release/arduinoSrc1_0/wiring_shift.o +shiftOut obj/Release/arduinoSrc1_0/wiring_shift.o +srandom /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(random.o) + obj/Release/arduinoSrc1_0/WMath.o +store_char(unsigned char, ring_buffer*) obj/Release/arduinoSrc1_0/HardwareSerial.o +strchr /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(strchr.o) + obj/Release/arduinoSrc1_0/WString.o +strcmp /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(strcmp.o) + obj/Release/arduinoSrc1_0/WString.o +strcpy /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(strcpy.o) + obj/Release/arduinoSrc1_0/WString.o +strncmp /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(strncmp.o) + obj/Release/arduinoSrc1_0/WString.o +strncpy /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(strncpy.o) + obj/Release/arduinoSrc1_0/WString.o +strrchr /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(strrchr.o) + obj/Release/arduinoSrc1_0/WString.o +strrev /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(strrev.o) + /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(utoa.o) + /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(ultoa.o) + /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(ltoa.o) + /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(itoa.o) +strstr /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(strstr.o) + obj/Release/arduinoSrc1_0/WString.o +timer0_millis obj/Release/arduinoSrc1_0/wiring.o +timer0_overflow_count obj/Release/arduinoSrc1_0/wiring.o +timer0_pin_mask obj/Release/arduinoSrc1_0/Tone.o +timer0_pin_port obj/Release/arduinoSrc1_0/Tone.o +timer0_toggle_count obj/Release/arduinoSrc1_0/Tone.o +timer1_pin_mask obj/Release/arduinoSrc1_0/Tone.o +timer1_pin_port obj/Release/arduinoSrc1_0/Tone.o +timer1_toggle_count obj/Release/arduinoSrc1_0/Tone.o +timer2_pin_mask obj/Release/arduinoSrc1_0/Tone.o +timer2_pin_port obj/Release/arduinoSrc1_0/Tone.o +timer2_toggle_count obj/Release/arduinoSrc1_0/Tone.o +tolower /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(tolower.o) + obj/Release/arduinoSrc1_0/WString.o +tone(unsigned char, unsigned int, unsigned long) obj/Release/arduinoSrc1_0/Tone.o +toupper /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(toupper.o) + obj/Release/arduinoSrc1_0/WString.o +twi_attachSlaveRxEvent obj/Release/arduino_libs_1_0/Wire/utility/twi.o + obj/Release/arduino_libs_1_0/Wire/Wire.o +twi_attachSlaveTxEvent obj/Release/arduino_libs_1_0/Wire/utility/twi.o + obj/Release/arduino_libs_1_0/Wire/Wire.o +twi_init obj/Release/arduino_libs_1_0/Wire/utility/twi.o + obj/Release/arduino_libs_1_0/Wire/Wire.o +twi_readFrom obj/Release/arduino_libs_1_0/Wire/utility/twi.o + obj/Release/arduino_libs_1_0/Wire/Wire.o +twi_releaseBus obj/Release/arduino_libs_1_0/Wire/utility/twi.o +twi_reply obj/Release/arduino_libs_1_0/Wire/utility/twi.o +twi_setAddress obj/Release/arduino_libs_1_0/Wire/utility/twi.o + obj/Release/arduino_libs_1_0/Wire/Wire.o +twi_stop obj/Release/arduino_libs_1_0/Wire/utility/twi.o +twi_transmit obj/Release/arduino_libs_1_0/Wire/utility/twi.o + obj/Release/arduino_libs_1_0/Wire/Wire.o +twi_writeTo obj/Release/arduino_libs_1_0/Wire/utility/twi.o + obj/Release/arduino_libs_1_0/Wire/Wire.o +tx_buffer obj/Release/arduinoSrc1_0/HardwareSerial.o +ultoa /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(ultoa.o) + obj/Release/arduinoSrc1_0/WString.o +utoa /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(utoa.o) + obj/Release/arduinoSrc1_0/WString.o +vtable for HardwareSerial obj/Release/arduinoSrc1_0/HardwareSerial.o +vtable for IPAddress obj/Release/arduinoSrc1_0/IPAddress.o +vtable for Print obj/Release/arduinoSrc1_0/Print.o +vtable for Printable obj/Release/arduinoSrc1_0/IPAddress.o +vtable for Stream obj/Release/arduinoSrc1_0/HardwareSerial.o +vtable for TwoWire obj/Release/arduino_libs_1_0/Wire/Wire.o diff --git a/ESS1995i2c/burn b/ESS1995i2c/burn index 04ef732..7039706 100755 --- a/ESS1995i2c/burn +++ b/ESS1995i2c/burn @@ -1 +1 @@ -avrdude -p m328p -c avrispmkII -P usb -b 1000000 -F -u -U flash:w:bin/Release/ESS1995test_328p.elf.hex +avrdude -p m328p -c avrispmkII -P usb -b 1000000 -F -u -U flash:w:bin/Release/ESS1995i2c.elf.hex diff --git a/ESS1995i2c/electic.h b/ESS1995i2c/electic.h index bf31728..405c46c 100644 --- a/ESS1995i2c/electic.h +++ b/ESS1995i2c/electic.h @@ -14,7 +14,10 @@ */ -#include <WProgram.h> //main Arduino header file +
+#include <Arduino.h>
+ + #include "adapticsBT.h" #include <Wire.h> diff --git a/ESS1995i2c/main.cpp b/ESS1995i2c/main.cpp index efb8e65..1d02052 100644 --- a/ESS1995i2c/main.cpp +++ b/ESS1995i2c/main.cpp @@ -8,21 +8,21 @@ i2c library seems to require a 'register address' - -ESS1995 doesn't need this? it certainly doesn't define a register in control byte 1 of write message + + 130112 - updated for arduino 1.0 - compiles but doesn't work - but it is Friday 13th */ + #include "electic.h" -extern "C" void __cxa_pure_virtual() -{ - cli(); - for (;;); -} int main(){ init(); //-- init Arduino library - delay, PWM setup messes with timers, millis(), micros() etc don't work without it + Wire.begin(); + //Wire.pullup pinMode(CS,OUTPUT); @@ -30,34 +30,45 @@ int main(){ setupBlueTooth(); -/* + pinMode(DATA_NEW,INPUT); - pinMode(SCLK,OUTPUT); + // pinMode(SCLK,OUTPUT); + pinMode(BTC,INPUT); pinMode(OUTPUT1, OUTPUT); pinMode(OUTPUT2, OUTPUT); + digitalWrite(OUTPUT2,HIGH); -*/ + digitalWrite(CS,HIGH); //select DMM - uint8_t WB1,WB2,WB3,WB4; -/* + //uint8_t WB1,WB2,WB3,WB4; + + + + + uint8_t WB1 = (CB_SHBP << 7) | (CB_function << 3) | (CB_VARCrange); uint8_t WB2 = (CB_BUZfreq << 5) | (CB_ADCrate << 3) | (CB_FREQrange); uint8_t WB3 = (CB_ACmode << 7) | (CB_EXTdiode << 4) | (CB_DCfs << 3) | (CB_LPFbw << 1) | (CB_FREQinprest); uint8_t WB4 = (CB_PEAKmode << 7) | (CB_PCALmode << 6) | (CB_OPconf << 2) | (CB_ADPext); -*/ + + + + Wire.beginTransmission(WRITE_ID); - Wire.send(WB1); - Wire.send(WB2); - Wire.send(WB3); - Wire.send(WB4); + Wire.write(WB1); + Wire.write(WB2); + Wire.write(WB3); + Wire.write(WB4); //default reads Wire.endTransmission(); + + uint16_t delayMillis=250; //send 1st write to initiate readings - not necessary - what is default mode? @@ -108,16 +119,18 @@ writeDMM(); //writeDMM(); while(1) { - if (digitalRead(DATA_NEW)==HIGH){ //DMM is ready to send data + //if (digitalRead(DATA_NEW)==HIGH){ //DMM is ready to send data Wire.beginTransmission(READ_ID); if (digitalRead(DATA_NEW)==LOW){ //ID confirmed for (int i=0;i<10;i++) { - data[i] = Wire.receive(); + data[i] = Wire.read(); } Wire.endTransmission(); //parse data DB_STATUS=data[0]; + + /* DB_ASIGN=data[0]>>7; DB_BSIGN=(data[0]>>6) & 0b01; @@ -131,6 +144,8 @@ writeDMM(); DB_STA=((data[1]>>3) & 0b10)|((data[0]>>1) & 0b01); DB_F_FIN=(data[1]>>3) & 0b01; */ + + DB_D0=(((uint32_t)( data[1] & 0b111))<<16)|(((uint32_t)data[2])<<8)|data[3]; DB_D1=(((uint16_t)data[4])<<2)|((data[5] & 0b11000000)>>6); DB_D2=(((uint32_t)( data[5] & 0b111111))<<13)|(((uint32_t) data[6] )<<5)|(((uint32_t)( data[7] & 0b11111000))>>3); @@ -173,13 +188,14 @@ writeDMM(); } } } - } + //} delay(delayMillis); digitalWrite(OUTPUT1,LOW); digitalWrite(OUTPUT2,LOW); //delay(delayMillis); } + } diff --git a/ESS1995i2c/obj/Release/adapticsBT.o b/ESS1995i2c/obj/Release/adapticsBT.o Binary files differnew file mode 100644 index 0000000..3af99a1 --- /dev/null +++ b/ESS1995i2c/obj/Release/adapticsBT.o diff --git a/ESS1995i2c/obj/Release/arduinoSrc1_0/CDC.o b/ESS1995i2c/obj/Release/arduinoSrc1_0/CDC.o Binary files differnew file mode 100644 index 0000000..982717d --- /dev/null +++ b/ESS1995i2c/obj/Release/arduinoSrc1_0/CDC.o diff --git a/ESS1995i2c/obj/Release/arduinoSrc1_0/HID.o b/ESS1995i2c/obj/Release/arduinoSrc1_0/HID.o Binary files differnew file mode 100644 index 0000000..8f80213 --- /dev/null +++ b/ESS1995i2c/obj/Release/arduinoSrc1_0/HID.o diff --git a/ESS1995i2c/obj/Release/arduinoSrc1_0/HardwareSerial.o b/ESS1995i2c/obj/Release/arduinoSrc1_0/HardwareSerial.o Binary files differnew file mode 100644 index 0000000..d21ffd0 --- /dev/null +++ b/ESS1995i2c/obj/Release/arduinoSrc1_0/HardwareSerial.o diff --git a/ESS1995i2c/obj/Release/arduinoSrc1_0/IPAddress.o b/ESS1995i2c/obj/Release/arduinoSrc1_0/IPAddress.o Binary files differnew file mode 100644 index 0000000..1f5d4b0 --- /dev/null +++ b/ESS1995i2c/obj/Release/arduinoSrc1_0/IPAddress.o diff --git a/ESS1995i2c/obj/Release/arduinoSrc1_0/Print.o b/ESS1995i2c/obj/Release/arduinoSrc1_0/Print.o Binary files differnew file mode 100644 index 0000000..d4a6ed2 --- /dev/null +++ b/ESS1995i2c/obj/Release/arduinoSrc1_0/Print.o diff --git a/ESS1995i2c/obj/Release/arduinoSrc1_0/Stream.o b/ESS1995i2c/obj/Release/arduinoSrc1_0/Stream.o Binary files differnew file mode 100644 index 0000000..ccbdb47 --- /dev/null +++ b/ESS1995i2c/obj/Release/arduinoSrc1_0/Stream.o diff --git a/ESS1995i2c/obj/Release/arduinoSrc1_0/Tone.o b/ESS1995i2c/obj/Release/arduinoSrc1_0/Tone.o Binary files differnew file mode 100644 index 0000000..ee4ec93 --- /dev/null +++ b/ESS1995i2c/obj/Release/arduinoSrc1_0/Tone.o diff --git a/ESS1995i2c/obj/Release/arduinoSrc1_0/USBCore.o b/ESS1995i2c/obj/Release/arduinoSrc1_0/USBCore.o Binary files differnew file mode 100644 index 0000000..58809be --- /dev/null +++ b/ESS1995i2c/obj/Release/arduinoSrc1_0/USBCore.o diff --git a/ESS1995i2c/obj/Release/arduinoSrc1_0/WInterrupts.o b/ESS1995i2c/obj/Release/arduinoSrc1_0/WInterrupts.o Binary files differnew file mode 100644 index 0000000..106d971 --- /dev/null +++ b/ESS1995i2c/obj/Release/arduinoSrc1_0/WInterrupts.o diff --git a/ESS1995i2c/obj/Release/arduinoSrc1_0/WMath.o b/ESS1995i2c/obj/Release/arduinoSrc1_0/WMath.o Binary files differnew file mode 100644 index 0000000..3de47b2 --- /dev/null +++ b/ESS1995i2c/obj/Release/arduinoSrc1_0/WMath.o diff --git a/ESS1995i2c/obj/Release/arduinoSrc1_0/WString.o b/ESS1995i2c/obj/Release/arduinoSrc1_0/WString.o Binary files differnew file mode 100644 index 0000000..9a4a73b --- /dev/null +++ b/ESS1995i2c/obj/Release/arduinoSrc1_0/WString.o diff --git a/ESS1995i2c/obj/Release/arduinoSrc1_0/main.o b/ESS1995i2c/obj/Release/arduinoSrc1_0/main.o Binary files differnew file mode 100644 index 0000000..772d9f8 --- /dev/null +++ b/ESS1995i2c/obj/Release/arduinoSrc1_0/main.o diff --git a/ESS1995i2c/obj/Release/arduinoSrc1_0/new.o b/ESS1995i2c/obj/Release/arduinoSrc1_0/new.o Binary files differnew file mode 100644 index 0000000..fdeab58 --- /dev/null +++ b/ESS1995i2c/obj/Release/arduinoSrc1_0/new.o diff --git a/ESS1995i2c/obj/Release/arduinoSrc1_0/wiring.o b/ESS1995i2c/obj/Release/arduinoSrc1_0/wiring.o Binary files differnew file mode 100644 index 0000000..8b01327 --- /dev/null +++ b/ESS1995i2c/obj/Release/arduinoSrc1_0/wiring.o diff --git a/ESS1995i2c/obj/Release/arduinoSrc1_0/wiring_analog.o b/ESS1995i2c/obj/Release/arduinoSrc1_0/wiring_analog.o Binary files differnew file mode 100644 index 0000000..3057391 --- /dev/null +++ b/ESS1995i2c/obj/Release/arduinoSrc1_0/wiring_analog.o diff --git a/ESS1995i2c/obj/Release/arduinoSrc1_0/wiring_digital.o b/ESS1995i2c/obj/Release/arduinoSrc1_0/wiring_digital.o Binary files differnew file mode 100644 index 0000000..77cb9a1 --- /dev/null +++ b/ESS1995i2c/obj/Release/arduinoSrc1_0/wiring_digital.o diff --git a/ESS1995i2c/obj/Release/arduinoSrc1_0/wiring_pulse.o b/ESS1995i2c/obj/Release/arduinoSrc1_0/wiring_pulse.o Binary files differnew file mode 100644 index 0000000..6f918b7 --- /dev/null +++ b/ESS1995i2c/obj/Release/arduinoSrc1_0/wiring_pulse.o diff --git a/ESS1995i2c/obj/Release/arduinoSrc1_0/wiring_shift.o b/ESS1995i2c/obj/Release/arduinoSrc1_0/wiring_shift.o Binary files differnew file mode 100644 index 0000000..6cdc3ac --- /dev/null +++ b/ESS1995i2c/obj/Release/arduinoSrc1_0/wiring_shift.o diff --git a/ESS1995i2c/obj/Release/arduino_libs_1_0/Wire/Wire.o b/ESS1995i2c/obj/Release/arduino_libs_1_0/Wire/Wire.o Binary files differnew file mode 100644 index 0000000..e9c277c --- /dev/null +++ b/ESS1995i2c/obj/Release/arduino_libs_1_0/Wire/Wire.o diff --git a/ESS1995i2c/obj/Release/arduino_libs_1_0/Wire/utility/twi.o b/ESS1995i2c/obj/Release/arduino_libs_1_0/Wire/utility/twi.o Binary files differnew file mode 100644 index 0000000..c69b882 --- /dev/null +++ b/ESS1995i2c/obj/Release/arduino_libs_1_0/Wire/utility/twi.o diff --git a/ESS1995i2c/obj/Release/main.o b/ESS1995i2c/obj/Release/main.o Binary files differnew file mode 100644 index 0000000..e715f74 --- /dev/null +++ b/ESS1995i2c/obj/Release/main.o diff --git a/ESS1995test_328p/ESS1995test_328p.cbp b/ESS1995test_328p/ESS1995test_328p.cbp index e559c31..204e947 100644 --- a/ESS1995test_328p/ESS1995test_328p.cbp +++ b/ESS1995test_328p/ESS1995test_328p.cbp @@ -30,8 +30,8 @@ <Add option="-Wall" /> <Add option="-mmcu=atmega328p" /> <Add option="-DF_CPU=8000000UL" /> - <Add directory="../arduinoSrc0022" /> - <Add directory="../arduino libs/NewSoftSerial" /> + <Add directory="../arduinoSrc1_0" /> + <Add directory="../hardwarevariants_1_0/standard" /> </Compiler> <Linker> <Add option="-mmcu=atmega328p" /> @@ -60,43 +60,54 @@ <Unit filename="main.cpp"> <Option virtualFolder="src/" /> </Unit> - <Unit filename="../arduinoSrc0022/HardwareSerial.cpp" /> - <Unit filename="../arduinoSrc0022/HardwareSerial.h" /> - <Unit filename="../arduinoSrc0022/Print.cpp" /> - <Unit filename="../arduinoSrc0022/Print.h" /> - <Unit filename="../arduinoSrc0022/Stream.h" /> - <Unit filename="../arduinoSrc0022/Tone.cpp" /> - <Unit filename="../arduinoSrc0022/WCharacter.h" /> - <Unit filename="../arduinoSrc0022/WConstants.h" /> - <Unit filename="../arduinoSrc0022/WInterrupts.c"> + <Unit filename="../arduinoSrc1_0/Arduino.h" /> + <Unit filename="../arduinoSrc1_0/CDC.cpp" /> + <Unit filename="../arduinoSrc1_0/Client.h" /> + <Unit filename="../arduinoSrc1_0/HID.cpp" /> + <Unit filename="../arduinoSrc1_0/HardwareSerial.cpp" /> + <Unit filename="../arduinoSrc1_0/HardwareSerial.h" /> + <Unit filename="../arduinoSrc1_0/IPAddress.cpp" /> + <Unit filename="../arduinoSrc1_0/IPAddress.h" /> + <Unit filename="../arduinoSrc1_0/Platform.h" /> + <Unit filename="../arduinoSrc1_0/Print.cpp" /> + <Unit filename="../arduinoSrc1_0/Print.h" /> + <Unit filename="../arduinoSrc1_0/Printable.h" /> + <Unit filename="../arduinoSrc1_0/Server.h" /> + <Unit filename="../arduinoSrc1_0/Stream.cpp" /> + <Unit filename="../arduinoSrc1_0/Stream.h" /> + <Unit filename="../arduinoSrc1_0/Tone.cpp" /> + <Unit filename="../arduinoSrc1_0/USBAPI.h" /> + <Unit filename="../arduinoSrc1_0/USBCore.cpp" /> + <Unit filename="../arduinoSrc1_0/USBCore.h" /> + <Unit filename="../arduinoSrc1_0/USBDesc.h" /> + <Unit filename="../arduinoSrc1_0/Udp.h" /> + <Unit filename="../arduinoSrc1_0/WCharacter.h" /> + <Unit filename="../arduinoSrc1_0/WInterrupts.c"> <Option compilerVar="CC" /> </Unit> - <Unit filename="../arduinoSrc0022/WMath.cpp" /> - <Unit filename="../arduinoSrc0022/WProgram.h" /> - <Unit filename="../arduinoSrc0022/WString.cpp" /> - <Unit filename="../arduinoSrc0022/WString.h" /> - <Unit filename="../arduinoSrc0022/binary.h" /> - <Unit filename="../arduinoSrc0022/pins_arduino.c"> + <Unit filename="../arduinoSrc1_0/WMath.cpp" /> + <Unit filename="../arduinoSrc1_0/WString.cpp" /> + <Unit filename="../arduinoSrc1_0/WString.h" /> + <Unit filename="../arduinoSrc1_0/binary.h" /> + <Unit filename="../arduinoSrc1_0/new.cpp" /> + <Unit filename="../arduinoSrc1_0/new.h" /> + <Unit filename="../arduinoSrc1_0/wiring.c"> <Option compilerVar="CC" /> </Unit> - <Unit filename="../arduinoSrc0022/pins_arduino.h" /> - <Unit filename="../arduinoSrc0022/wiring.c"> + <Unit filename="../arduinoSrc1_0/wiring_analog.c"> <Option compilerVar="CC" /> </Unit> - <Unit filename="../arduinoSrc0022/wiring.h" /> - <Unit filename="../arduinoSrc0022/wiring_analog.c"> + <Unit filename="../arduinoSrc1_0/wiring_digital.c"> <Option compilerVar="CC" /> </Unit> - <Unit filename="../arduinoSrc0022/wiring_digital.c"> + <Unit filename="../arduinoSrc1_0/wiring_private.h" /> + <Unit filename="../arduinoSrc1_0/wiring_pulse.c"> <Option compilerVar="CC" /> </Unit> - <Unit filename="../arduinoSrc0022/wiring_private.h" /> - <Unit filename="../arduinoSrc0022/wiring_pulse.c"> - <Option compilerVar="CC" /> - </Unit> - <Unit filename="../arduinoSrc0022/wiring_shift.c"> + <Unit filename="../arduinoSrc1_0/wiring_shift.c"> <Option compilerVar="CC" /> </Unit> + <Unit filename="../hardwarevariants_1_0/standard/pins_arduino.h" /> <Extensions> <code_completion /> <envvars /> diff --git a/ESS1995test_328p/ESS1995test_328p.depend b/ESS1995test_328p/ESS1995test_328p.depend index 52f4c69..ed2ca82 100644 --- a/ESS1995test_328p/ESS1995test_328p.depend +++ b/ESS1995test_328p/ESS1995test_328p.depend @@ -128,3 +128,211 @@ 1319029257 source:/home/tim/workspace/electic_AVR/arduinoSrc0022/wiring_shift.c "wiring_private.h" +1322574642 source:/home/tim/workspace/electic/ESS1995test_328p/adapticsBT.cpp + "adapticsBT.h" + +1326896982 /home/tim/workspace/electic/ESS1995test_328p/adapticsBT.h + <Arduino.h> + +1319028644 /home/tim/workspace/electic/arduinoSrc0022/WProgram.h + <stdlib.h> + <string.h> + <math.h> + <avr/interrupt.h> + "wiring.h" + "WCharacter.h" + "WString.h" + "HardwareSerial.h" + +1319028644 /home/tim/workspace/electic/arduinoSrc0022/wiring.h + <avr/io.h> + <stdlib.h> + "binary.h" + +1319028644 /home/tim/workspace/electic/arduinoSrc0022/binary.h + +1319028644 /home/tim/workspace/electic/arduinoSrc0022/WCharacter.h + <ctype.h> + +1319028644 /home/tim/workspace/electic/arduinoSrc0022/WString.h + <stdlib.h> + <string.h> + <ctype.h> + +1319028644 /home/tim/workspace/electic/arduinoSrc0022/HardwareSerial.h + <inttypes.h> + "Stream.h" + "usb_api.h" + +1319028644 /home/tim/workspace/electic/arduinoSrc0022/Stream.h + <inttypes.h> + "Print.h" + +1319028644 /home/tim/workspace/electic/arduinoSrc0022/Print.h + <inttypes.h> + <stdio.h> + "WString.h" + +1322661310 source:/home/tim/workspace/electic/ESS1995test_328p/main.cpp + "electic.h" + +1326896819 /home/tim/workspace/electic/ESS1995test_328p/electic.h + <Arduino.h> + "adapticsBT.h" + +1322528192 /home/tim/workspace/electic/arduinoSrc1_0/Arduino.h + <stdlib.h> + <string.h> + <math.h> + <avr/pgmspace.h> + <avr/io.h> + <avr/interrupt.h> + "binary.h" + "WCharacter.h" + "WString.h" + "HardwareSerial.h" + "pins_arduino.h" + +1322528192 /home/tim/workspace/electic/arduinoSrc1_0/binary.h + +1322528191 /home/tim/workspace/electic/arduinoSrc1_0/WCharacter.h + <ctype.h> + +1322528191 /home/tim/workspace/electic/arduinoSrc1_0/WString.h + <stdlib.h> + <string.h> + <ctype.h> + <avr/pgmspace.h> + +1322528192 /home/tim/workspace/electic/arduinoSrc1_0/HardwareSerial.h + <inttypes.h> + "Stream.h" + "USBAPI.h" + +1322528192 /home/tim/workspace/electic/arduinoSrc1_0/Stream.h + <inttypes.h> + "Print.h" + +1322528192 /home/tim/workspace/electic/arduinoSrc1_0/Print.h + <inttypes.h> + <stdio.h> + "WString.h" + "Printable.h" + +1322528192 /home/tim/workspace/electic/arduinoSrc1_0/Printable.h + <new.h> + +1322528192 /home/tim/workspace/electic/arduinoSrc1_0/new.h + <stdlib.h> + +1322528191 /home/tim/workspace/electic/arduinoSrc1_0/USBAPI.h + +1322528191 /home/tim/workspace/electic/hardwarevariants_1_0/standard/pins_arduino.h + <avr/pgmspace.h> + +1322528191 source:/home/tim/workspace/electic/arduinoSrc1_0/CDC.cpp + "Platform.h" + "USBAPI.h" + <avr/wdt.h> + +1322528192 /home/tim/workspace/electic/arduinoSrc1_0/Platform.h + <inttypes.h> + <avr/pgmspace.h> + <avr/eeprom.h> + <avr/interrupt.h> + <util/delay.h> + "Arduino.h" + "USBDesc.h" + "USBCore.h" + "USBAPI.h" + +1322528192 /home/tim/workspace/electic/arduinoSrc1_0/USBDesc.h + +1322528192 /home/tim/workspace/electic/arduinoSrc1_0/USBCore.h + +1322528192 source:/home/tim/workspace/electic/arduinoSrc1_0/HID.cpp + "Platform.h" + "USBAPI.h" + "USBDesc.h" + +1322528192 source:/home/tim/workspace/electic/arduinoSrc1_0/HardwareSerial.cpp + <stdlib.h> + <stdio.h> + <string.h> + <inttypes.h> + "Arduino.h" + "wiring_private.h" + "HardwareSerial.h" + +1322528191 /home/tim/workspace/electic/arduinoSrc1_0/wiring_private.h + <avr/io.h> + <avr/interrupt.h> + <stdio.h> + <stdarg.h> + "Arduino.h" + +1322528192 source:/home/tim/workspace/electic/arduinoSrc1_0/IPAddress.cpp + <Arduino.h> + <IPAddress.h> + +1322528191 /home/tim/workspace/electic/arduinoSrc1_0/IPAddress.h + <Printable.h> + +1322528191 source:/home/tim/workspace/electic/arduinoSrc1_0/Print.cpp + <stdlib.h> + <stdio.h> + <string.h> + <math.h> + "Arduino.h" + "Print.h" + +1322528191 source:/home/tim/workspace/electic/arduinoSrc1_0/Stream.cpp + "Arduino.h" + "Stream.h" + +1322528192 source:/home/tim/workspace/electic/arduinoSrc1_0/Tone.cpp + <avr/interrupt.h> + <avr/pgmspace.h> + "Arduino.h" + "pins_arduino.h" + +1322528192 source:/home/tim/workspace/electic/arduinoSrc1_0/USBCore.cpp + "Platform.h" + "USBAPI.h" + "USBDesc.h" + +1322528191 source:/home/tim/workspace/electic/arduinoSrc1_0/WInterrupts.c + <inttypes.h> + <avr/io.h> + <avr/interrupt.h> + <avr/pgmspace.h> + <stdio.h> + "wiring_private.h" + +1322528192 source:/home/tim/workspace/electic/arduinoSrc1_0/WMath.cpp + "stdlib.h" + +1322528192 source:/home/tim/workspace/electic/arduinoSrc1_0/WString.cpp + "WString.h" + +1322528192 source:/home/tim/workspace/electic/arduinoSrc1_0/new.cpp + <new.h> + +1322528192 source:/home/tim/workspace/electic/arduinoSrc1_0/wiring.c + "wiring_private.h" + +1322528191 source:/home/tim/workspace/electic/arduinoSrc1_0/wiring_analog.c + "wiring_private.h" + "pins_arduino.h" + +1322528191 source:/home/tim/workspace/electic/arduinoSrc1_0/wiring_digital.c + "wiring_private.h" + "pins_arduino.h" + +1322528191 source:/home/tim/workspace/electic/arduinoSrc1_0/wiring_pulse.c + "wiring_private.h" + "pins_arduino.h" + +1322528191 source:/home/tim/workspace/electic/arduinoSrc1_0/wiring_shift.c + "wiring_private.h" + diff --git a/ESS1995test_328p/ESS1995test_328p.layout b/ESS1995test_328p/ESS1995test_328p.layout index eef63ab..5b79951 100644 --- a/ESS1995test_328p/ESS1995test_328p.layout +++ b/ESS1995test_328p/ESS1995test_328p.layout @@ -2,21 +2,18 @@ <CodeBlocks_layout_file> <ActiveTarget name="Release" /> <File name="adapticsBT.cpp" open="1" top="0" tabpos="3"> - <Cursor position="1609" topLine="11" /> + <Cursor position="1609" topLine="14" /> + </File> + <File name="adapticsBT.h" open="0" top="0" tabpos="0"> + <Cursor position="64" topLine="0" /> </File> <File name="electic.h" open="1" top="0" tabpos="2"> - <Cursor position="864" topLine="0" /> + <Cursor position="241" topLine="0" /> </File> <File name="main.cpp" open="1" top="1" tabpos="1"> - <Cursor position="1415" topLine="0" /> - </File> - <File name="../arduinoSrc0022/HardwareSerial.h" open="0" top="0" tabpos="0"> - <Cursor position="0" topLine="40" /> - </File> - <File name="../arduinoSrc0022/Print.h" open="0" top="0" tabpos="0"> - <Cursor position="1919" topLine="0" /> + <Cursor position="153" topLine="9" /> </File> - <File name="../arduinoSrc0022/Tone.cpp" open="0" top="0" tabpos="0"> - <Cursor position="7050" topLine="229" /> + <File name="../arduinoSrc1_0/Arduino.h" open="1" top="0" tabpos="4"> + <Cursor position="5594" topLine="177" /> </File> </CodeBlocks_layout_file> diff --git a/ESS1995test_328p/adapticsBT.h b/ESS1995test_328p/adapticsBT.h index 8cb87e3..1438e94 100644 --- a/ESS1995test_328p/adapticsBT.h +++ b/ESS1995test_328p/adapticsBT.h @@ -1,11 +1,11 @@ #ifndef ADAPTICSBT_H_INCLUDED
#define ADAPTICSBT_H_INCLUDED -extern "C" void __cxa_pure_virtual(void); //for C++ defines +//extern "C" void __cxa_pure_virtual(void); //for C++ defines #define BTC 6 -#include <WProgram.h> //main Arduino header file
+#include <Arduino.h> //main Arduino header file
void setupBlueTooth(); void advertise();
diff --git a/ESS1995test_328p/bin/Release/ESS1995test_328p.elf b/ESS1995test_328p/bin/Release/ESS1995test_328p.elf Binary files differnew file mode 100755 index 0000000..79c4e2b --- /dev/null +++ b/ESS1995test_328p/bin/Release/ESS1995test_328p.elf diff --git a/ESS1995test_328p/bin/Release/ESS1995test_328p.elf.eep.hex b/ESS1995test_328p/bin/Release/ESS1995test_328p.elf.eep.hex new file mode 100644 index 0000000..1996e8f --- /dev/null +++ b/ESS1995test_328p/bin/Release/ESS1995test_328p.elf.eep.hex @@ -0,0 +1 @@ +:00000001FF
diff --git a/ESS1995test_328p/bin/Release/ESS1995test_328p.elf.hex b/ESS1995test_328p/bin/Release/ESS1995test_328p.elf.hex new file mode 100644 index 0000000..8e9335b --- /dev/null +++ b/ESS1995test_328p/bin/Release/ESS1995test_328p.elf.hex @@ -0,0 +1,1263 @@ +:100000000C9464000C94AB0E0C94D80E0C948C00E1
+:100010000C948C000C948C000C948C000C941F0E8F
+:100020000C948C000C948C000C948C000C948C0020
+:100030000C948C000C948C000C948C000C948C0010
+:100040000C94C2170C948C000C94CC030C94FD03FC
+:100050000C948C000C948C000C948C000C948C00F0
+:100060000C948C000C948C000200000000240027EB
+:10007000002A0000000000250028002B00000000DE
+:1000800000230026002900040404040404040402DC
+:100090000202020202030303030303010204081025
+:1000A00020408001020408102001020408102000F2
+:1000B0000000070002010000030406000000000029
+:1000C0000000000069053F0611241FBECFEFD8E0F5
+:1000D000DEBFCDBF12E0A0E0B1E0E6E1FDE402C08A
+:1000E00005900D92A03CB107D9F713E0A0ECB2E067
+:1000F00001C01D92AE3AB107E1F710E0C8ECD0E0C4
+:1001000004C02297FE010E94B622C43CD107C9F761
+:100110000E94EF010C9489260C940000CF93DF938A
+:1001200060ED77E080E090E00E944A18C2E6D3E0FC
+:10013000CE0160E071E00E94DF0660ED77E080E0D4
+:1001400090E00E944A18CE010E946403DF91CF9193
+:100150000895CF93DF9386E060E00E946719C2E6BE
+:10016000D3E0CE0140E056E960E070E00E948304F5
+:10017000CE016BE071E00E94DF06CE0169E171E023
+:100180000E94DF06CE0163E371E00E94DF06CE012C
+:1001900061E471E00E94DF06CE016FE471E00E942D
+:1001A000DF06CE0160E671E00E94DF060E948E004D
+:1001B000DF91CF91089584E061E00E94671983E0A8
+:1001C00061E00E948B19089584E060E00E94671945
+:1001D00083E061E00E948B1908958AE090E00E941C
+:1001E000711883E061E00E948B1984E190E00E9425
+:1001F000711883E060E00E948B198AE090E00E9411
+:10020000711808958AE090E00E94711883E060E020
+:100210000E948B1984E190E00E94711883E061E0F4
+:100220000E948B198AE090E00E94711808951F9334
+:10023000CF93DF9317E0C82FD0E0BE01012E02C09C
+:10024000759567950A94E2F7617084E00E948B19B6
+:100250000E94ED00115088F784E061E00E948B1944
+:100260000E94ED00DF91CF911F91089584E060E03E
+:100270000E948B198AE090E00E94711883E061E08F
+:100280000E948B198AE090E00E94711884E061E07E
+:100290000E948B19089584E061E00E948B1983E02D
+:1002A00061E00E948B198AE090E00E94711884E05E
+:1002B00060E00E948B198AE090E00E94711883E050
+:1002C00060E00E948B198AE090E00E947118089506
+:1002D0000F931F938AE090E00E94711817E000E0EE
+:1002E00084E00E94C319682F282F30E0012E02C03D
+:1002F000220F331F0A94E2F7022B8CE00E948B1925
+:100300000E940201115060F70E940201802F1F918C
+:100310000F910895EF92FF920F931F938091CB025C
+:100320008795882787950091CC02000F000F000F5A
+:10033000082B8091CD02082B8091CF028295880FE7
+:10034000807E1091D002110F110F110F182B809188
+:10035000CE02182B9091D10297959927979580916D
+:10036000D5028295807F892B9091D702892B90911D
+:10037000D902990F990F990F982BE090D402EE0CA7
+:10038000E92A9091D2029795992797958091D30267
+:100390008295880F880F807C892B9091D802892BB9
+:1003A000F090D602FF0CFF0CF82A0E94DB000E949E
+:1003B0004B0188EC0E941701802F0E941701812FAA
+:1003C0000E9417018E2D0E9417018F2D0E94170188
+:1003D0000E9436011F910F91FF90EF9008958F9228
+:1003E0009F92AF92BF92CF92DF92EF92FF920F93C4
+:1003F0001F93DF93CF93CDB7DEB727970FB6F8944F
+:10040000DEBF0FBECDBF0E947B1885E061E00E9479
+:10041000671985E060E00E948B190E94A90082E0C4
+:1004200060E00E94671983E061E00E94671986E03E
+:1004300060E00E9467198CE061E00E9467198DE01E
+:1004400061E00E9467198DE061E00E948B1985E0F0
+:1004500061E00E948B196AEF70E080E090E00E94FA
+:100460004A180E948A010AEF10E07E010894E11CFC
+:10047000F11CA4E0AA2EB12CAC0EBD1EF2E08F2E12
+:10048000912C8C0E9D1E82E00E94C3198130910533
+:1004900009F0BBC08CE061E00E948B198DE060E048
+:1004A0000E948B190E94DB000E944B0189EC0E9484
+:1004B000170182E00E94C319009709F0A6C08DE0E1
+:1004C00061E00E948B190E94E400E1ECCE2EE2E094
+:1004D000DE2E0E946801F60181936F01FBECCF16BE
+:1004E000F2E0DF06B1F70E94DB000E943601809146
+:1004F000C10289838091C30290E0A0E0B0E0BA2FEE
+:10050000A92F982F88272091C40230E040E050E0C6
+:10051000822B932BA42BB52B2091C20230E040E01C
+:1005200050E02770307040705070A90133272227A7
+:10053000822B932BA42BB52B8C839D83AE83BF83FF
+:100540008091C602829586958695837090E0209171
+:10055000C50230E0220F331F220F331F822B932B53
+:100560009B838A8313C082E693E00E944203823019
+:1005700029F0833031F0813049F406C00AEF10E0F1
+:1005800005C002E310E002C008EE13E082E693E04B
+:100590000E9413031816190634F386E00E94C3194B
+:1005A0002091C002009759F1222319F481E0809331
+:1005B000C00282E693E063E771E042E050E00E940F
+:1005C0004E0682E693E062E771E041E050E00E946F
+:1005D0004E0682E693E0B70141E050E00E944E06ED
+:1005E00082E693E0B50144E050E00E944E0682E6C8
+:1005F00093E0B40142E050E00E944E0606C0222380
+:1006000021F00E948E001092C002B80180E090E0BC
+:100610000E944A188CE060E00E948B198DE060E037
+:100620000E948B1930CFFC0184859585FC01E05C2C
+:10063000FF4F208131818E5B9F4FFC018081918132
+:10064000281B390B2F733070C9010895FC01848574
+:100650009585FC01E05CFF4F40815181FC01EE5B20
+:10066000FF4F208131814217530741F00190F08103
+:10067000E02DE80FF91F208130E002C02FEF3FEF9F
+:10068000C9010895FC0184859585FC01E05CFF4F5C
+:1006900040815181FC01EE5BFF4F20813181421787
+:1006A000530771F0A081B181A80FB91F2C918081EF
+:1006B000918101968F7390709183808330E002C0A6
+:1006C0002FEF3FEFC9010895DC011E968D919C919B
+:1006D0001F97FC01E05CFF4F8E5B9F4F4081518173
+:1006E000DC012D913C91119742175307B9F70895FA
+:1006F0001F93FC01162F26853785D901A05CBF4FBB
+:100700008D919C91019660E470E00E941922D901BC
+:10071000AE5BBF4F4D915C91119784179507D1F354
+:10072000D901A05CBF4F0D90BC91A02DA20FB31FAB
+:100730001C93A685B785A05CBF4F11969C938E93A2
+:10074000A689B7892C9181E090E0058C02C0880FC2
+:10075000991F0A94E2F7282B2C9381E090E01F91D7
+:100760000895FB01E05CFF4F208131812F5F3F4FF7
+:100770002F733070DB01AE5BBF4F4D915C911197D1
+:100780002417350739F0A081B181A60FB71F8C93CC
+:1007900031832083089508951F920F920FB60F9210
+:1007A00011242F933F934F935F936F937F938F9376
+:1007B0009F93AF93BF93EF93FF938091C6006AED31
+:1007C00072E00E94B103FF91EF91BF91AF919F91B1
+:1007D0008F917F916F915F914F913F912F910F90EA
+:1007E0000FBE0F901F90189582E693E00E941303AE
+:1007F000009711F00E94CB0308951F920F920FB63D
+:100800000F9211242F933F935F936F937F938F9356
+:100810009F93AF93BF93EF93FF9320915E0330912B
+:100820005F0380916003909161032817390731F4C9
+:100830008091C1008F7D8093C10016C0E09160035C
+:10084000F0916103E25EFC4F208180916003909102
+:100850006103019660E470E00E94192290936103A5
+:10086000809360032093C600FF91EF91BF91AF91F9
+:100870009F918F917F916F915F913F912F910F90F9
+:100880000FBE0F901F9018958F92AF92BF92CF928C
+:10089000DF92EF92FF920F931F93DF93CF93CDB729
+:1008A000DEB7FC011382128288EE93E0A0E0B0E094
+:1008B00084839583A683B78389E791E091838083BE
+:1008C0007587648757874687318B208B138B028B04
+:1008D000F58AE48AD78AC68AB18EA08E828E8E85EA
+:1008E000838F8F85848F8889858F8989868FCF9123
+:1008F000DF911F910F91FF90EF90DF90CF90BF900D
+:10090000AF908F9008959F92AF92BF92CF92DF9257
+:10091000EF92FF920F931F93CF93DF93EC017A0135
+:100920008B0199249394EC89FD8981E090E00E8CF1
+:1009300002C0880F991F0A94E2F7808360E874E888
+:100940008EE190E0A80197010E942C2221503040B6
+:1009500040405040569547953795279590E4A92EED
+:1009600092E4B92E9FE0C92ED12C12C09924EC89B3
+:10097000FD891082C601B501A80197010E942C22B1
+:100980002150304040405040569547953795279527
+:1009900080E12030380710F0992041F7E889F98983
+:1009A0003083EA89FB892083EE89FF89408181E0D9
+:1009B00090E09C010A8C02C0220F331F0A94E2F7D8
+:1009C000422B4083EE89FF8940819C010B8C02C041
+:1009D000220F331F0A94E2F7422B4083EE89FF89EE
+:1009E00040819C010C8C02C0220F331F0A94E2F755
+:1009F000422B4083EE89FF8920810D8C02C0880F35
+:100A0000991F0A94E2F7809582238083DF91CF912A
+:100A10001F910F91FF90EF90DF90CF90BF90AF901C
+:100A20009F900895CF93DF93FC0186859785DC0125
+:100A3000A05CBF4F8E5B9F4F4D915C911197EC0175
+:100A40002881398142175307B9F7A689B7894C9194
+:100A500081E090E09C01028C02C0220F331F0A94B7
+:100A6000E2F7209524232C93A689B7894C919C0109
+:100A7000038C02C0220F331F0A94E2F7209524232F
+:100A80002C93A689B7894C919C01048C02C0220F3B
+:100A9000331F0A94E2F7209524232C93A689B78963
+:100AA0002C91058C02C0880F991F0A94E2F780955B
+:100AB00082238C9384859585FC01EE5BFF4F20811A
+:100AC0003181805C9F4FFC0131832083DF91CF9186
+:100AD0000895109265031092640388EE93E0A0E0FD
+:100AE000B0E08093660390936703A0936803B0938C
+:100AF0006903E4E6F3E089E791E0929382938AED5B
+:100B000092E0958784878EE193E09787868785ECCE
+:100B100090E0918B808B84EC90E0938B828B80ECC7
+:100B200090E0958B848B81EC90E0978B868B86ECA4
+:100B300090E0918F808F84E0828F83E0838F87E0C5
+:100B4000848F85E0858F81E0868F08958F929F92B4
+:100B5000AF92BF92CF92DF92EF92FF920F931F93CB
+:100B6000CF93DF934C017B0182E0A82EB12CA80C1F
+:100B7000B91CC0E0D0E0CC24DD24F50161915F0117
+:100B8000C7014AE050E00E9403088C01C7016EE2F1
+:100B90000E94E206080F191FC00ED11E2196C33015
+:100BA000D10559F7C701F40165814AE050E00E9480
+:100BB0000308C80ED91EC601DF91CF911F910F9176
+:100BC000FF90EF90DF90CF90BF90AF909F908F906D
+:100BD0000895FC0189E991E0918380831282138258
+:100BE0001482158208950F93FC0189E991E09183A5
+:100BF000808362834383248305830F910895FC01DE
+:100C000089E991E091838083428353836483758370
+:100C10000895FC0189E991E091838083DB012D91A6
+:100C20003D914D915C911397228333834483558387
+:100C30000895CF93DF93FC01EB0188819981AA810C
+:100C4000BB8182839383A483B583CF01DF91CF914E
+:100C50000895FC01428353836483758308959B0147
+:100C6000BC016E5F7F4FC90144E050E00E944C25FB
+:100C70009C0181E02115310509F080E0089589E9A2
+:100C800091E09093820380938103109283031092EA
+:100C9000840310928503109286030895CF92DF9209
+:100CA000EF92FF920F931F93CF93DF936C017B0121
+:100CB0008A01C0E0D0E00FC0D7016D917D01D6015F
+:100CC000ED91FC910190F081E02DC6010995C80FCE
+:100CD000D91F015010400115110571F7CE01DF91A8
+:100CE000CF911F910F91FF90EF90DF90CF900895DB
+:100CF000DB010D900020E9F7AD0141505040461B4B
+:100D0000570BDC01ED91FC910280F381E02D0995F8
+:100D10000895EF92FF920F931F93CF93DF937C017F
+:100D2000062F172FC0E0D0E0F8010F5F1F4F64912E
+:100D3000662351F0F701A081B181ED91FC91C701CB
+:100D40000995C80FD91FF0CFCE01DF91CF911F9128
+:100D50000F91FF90EF900895AF92BF92CF92DF92E4
+:100D6000EF92FF920F931F93CF93DF937C016B0160
+:100D7000C0E0D0E000E010E010C0D701ED91FC91A0
+:100D8000A080B180C601BE010E947E14682FC701F9
+:100D9000F5010995080F191F2196F60184819581A7
+:100DA000C817D90750F3C801DF91CF911F910F9158
+:100DB000FF90EF90DF90CF90BF90AF9008950E948A
+:100DC00078060895DC01ED91FC910190F081E02D11
+:100DD000099508959C01CB01DB01ED91FC910190F7
+:100DE000F081E02DB901099508950F931F93CF93DA
+:100DF000DF93EC016DE00E94E2068C01CE016AE017
+:100E00000E94E206080F191FC801DF91CF911F91C0
+:100E10000F9108950F931F93CF93DF93EC010E94DE
+:100E200089068C01CE010E94F506080F191FC80122
+:100E3000DF91CF911F910F9108950F931F93CF933F
+:100E4000DF93EC010E94AC068C01CE010E94F506F6
+:100E5000080F191FC801DF91CF911F910F910895BD
+:100E60000F931F93CF93DF93EC010E9478068C01C0
+:100E7000CE010E94F506080F191FC801DF91CF911E
+:100E80001F910F9108950F931F93CF93DF93EC0160
+:100E90000E94E2068C01CE010E94F506080F191F80
+:100EA000C801DF91CF911F910F9108950F931F9368
+:100EB000CF93DF93EC010E94EA068C01CE010E94E1
+:100EC000F506080F191FC801DF91CF911F910F91EF
+:100ED00008958F929F92AF92BF92CF92DF92EF923E
+:100EE000FF920F931F93DF93CF93CDB7DEB7A197F8
+:100EF0000FB6F894DEBF0FBECDBF6C01042FE52FF7
+:100F0000CB01122F19A2223008F41AE021E2E22EBE
+:100F1000F12CEC0EFD1E812E9924AA24BB2403C0C3
+:100F2000022FE32FCA01602F7E2FA50194010E949A
+:100F30002C22129F802D1124081B0894E108F1082F
+:100F40000A3014F4005D01C0095CF701008321152B
+:100F500031054105510521F7C601B7010E94780608
+:100F6000A1960FB6F894DEBF0FBECDBFCF91DF9133
+:100F70001F910F91FF90EF90DF90CF90BF90AF90B7
+:100F80009F908F9008952115310549F4DC01ED9172
+:100F9000FC910190F081E02D642F099508950E9445
+:100FA000690708950F931F93CF93DF93EC010E947D
+:100FB000C3078C01CE010E94F506080F191FC80156
+:100FC000DF91CF911F910F9108959A01AB0160E0DD
+:100FD00070E00E94C30708950F931F93CF93DF9390
+:100FE000EC019A01AB0160E070E00E94C3078C0144
+:100FF000CE010E94F506080F191FC801DF91CF919D
+:101000001F910F9108959A01462F50E060E070E023
+:101010000E94C30708950F931F93CF93DF93EC01B2
+:101020009A01462F50E060E070E00E94C3078C01F7
+:10103000CE010E94F506080F191FC801DF91CF915C
+:101040001F910F910895CF92DF92EF92FF920F932D
+:101050001F93CF93DF93EC017A018B0121153105AA
+:1010600041F4E881F9810190F081E02D642F099528
+:101070001AC02A303105A9F477FF12C06DE20E9430
+:10108000E2066C0144275527BA014E195F09600B2F
+:10109000710BCE012AE00E946907C80ED91E04C058
+:1010A0002AE00E9469076C01C601DF91CF911F9170
+:1010B0000F91FF90EF90DF90CF9008950F931F93C3
+:1010C000CF93DF93EC010E9423088C01CE010E9494
+:1010D000F506080F191FC801DF91CF911F910F91DD
+:1010E00008959A01FB01AF01662757FD6095762FA1
+:1010F0000E94230808950F931F93CF93DF93EC0171
+:101100009A01CB01AC01662757FD6095762FCE0181
+:101110000E9423088C01CE010E94F506080F191FBA
+:10112000C801DF91CF911F910F9108956F927F9227
+:101130009F92AF92BF92CF92DF92EF92FF920F9366
+:101140001F93CF93DF933C017A018B01C22ECB0119
+:10115000BA0120E030E0A9010E94B61E87FF0AC054
+:10116000C3016DE20E94E206EC0117FB109517F92E
+:10117000109502C0C0E0D0E0DD2450E040E030E057
+:101180002FE311C0DA01F9016B2F742F8F2F922FEB
+:1011900020E030E040E251E40E94D81D562F472F56
+:1011A000382F292FD394DC1468F3C801B701DA0172
+:1011B000F9012B2F342F4F2F5E2F0E94801C5B01D3
+:1011C000F82E992E7B2D0E940A1B162FD72EE82E63
+:1011D000092F0E94981F9B01AC016A2D7B2D8F2D3A
+:1011E000992D0E94AD1C962EA72EB82EF92EC30164
+:1011F000412F5D2D6E2D702F2AE030E00E94C30735
+:10120000C80FD91FCC20B9F1C30161EA71E00E9477
+:101210007806C80FD91F2FC0692D7A2D8B2D9F2DD1
+:1012200020E030E040E251E40E94DE1CD62EB72ED2
+:10123000A82E992E0E94461F7B010027F7FC0095DF
+:10124000102FC301B801A7012AE030E00E94230853
+:10125000C80FD91FC801B7010E94E61E9B01AC014F
+:101260006D2D7B2D8A2D992D0E94AD1C962EA72EBB
+:10127000B82EF92ECA94CC2079F6CE01DF91CF9109
+:101280001F910F91FF90EF90DF90CF90BF90AF90A4
+:101290009F907F906F9008950E94960808950F93F5
+:1012A0001F93CF93DF93EC010E9496088C01CE012F
+:1012B0000E94F506080F191FC801DF91CF911F91F9
+:1012C0000F910895CF93DF93EC010E941618688761
+:1012D00079878A879B87E881F9810680F781E02DED
+:1012E000CE0109959C0197FF15C00E94161828850C
+:1012F00039854A855B85621B730B840B950B2C81AA
+:101300003D814E815F81621773078407950718F34B
+:101310002FEF3FEFC901DF91CF910895CF93DF9376
+:10132000EC010E941618688779878A879B87E88175
+:10133000F9810084F185E02DCE0109959C0197FF8C
+:1013400015C00E941618288539854A855B85621B61
+:10135000730B840B950B2C813D814E815F8162174D
+:1013600073078407950718F32FEF3FEFC901DF914B
+:10137000CF910895CF93DF93EC01CE010E948E09A7
+:101380009C0197FD0FC08D32910561F0C0978A30A6
+:10139000910540F0E881F9810680F781E02DCE01CA
+:1013A0000995EBCFC901DF91CF910895FC014483EA
+:1013B00055836683778308956F927F928F929F9271
+:1013C000AF92BF92CF92DF92EF92FF920F931F9353
+:1013D000CF93DF933C016B014A0159017801FB0176
+:1013E0008081882391F1C0E0D0E000E010E026C0C9
+:1013F000F601E00FF11F2081332727FD309582177A
+:10140000930731F40F5F1F4F0815190518F01DC021
+:1014100000E010E0E114F10479F0F501EC0FFD1F9C
+:101420002081332727FD30958217930729F42196D1
+:10143000CE15DF0518F00BC0C0E0D0E0C3010E945C
+:10144000620918161906A4F202C081E001C080E00A
+:10145000DF91CF911F910F91FF90EF90DF90CF9090
+:10146000BF90AF909F908F907F906F9008950F9353
+:101470001F93CF93DF939A01FB0101900020E9F7BE
+:101480003197E61BF70BEA0109900020E9F78E017E
+:1014900001501040041B150BAF010E94DC09DF91C5
+:1014A000CF911F910F91089540E050E00E94370ABC
+:1014B00008950F931F9320E030E000E010E00E94B9
+:1014C000DC091F910F9108959F92AF92BF92CF9226
+:1014D000DF92EF92FF920F931F93CF93DF936C01F4
+:1014E000A62E0E94BA09EC0197FD4EC0EE24FF24FF
+:1014F00087019924BB24A7FCB094CA15DB0531F100
+:10150000CD32D10509F1CE01C0978A309105F0F4B2
+:10151000C801B7012AE030E040E050E00E94FA2123
+:101520007B018C01CE01AA2797FDA095BA2FE80E6A
+:10153000F91E0A1F1B1F80ED9FEFAFEFBFEFE80EF4
+:10154000F91E0A1F1B1F02C099249394D601ED9126
+:10155000FC910680F781E02DC6010995C6010E9425
+:101560008E09EC01C0978A30910538F2CA15DB0567
+:1015700021F2992061F010950095F094E094E11C1F
+:10158000F11C011D111D03C0EE24FF248701B701CA
+:10159000C801DF91CF911F910F91FF90EF90DF90E5
+:1015A000CF90BF90AF909F90089561E00E94640A31
+:1015B00008956F927F928F929F92AF92BF92CF9237
+:1015C000DF92EF92FF920F931F93CF93DF93EC0183
+:1015D000762E0E94BA09D82E87FD7DC0BB24AA248E
+:1015E00090E8992E8FE3882EEE24FF248701CC24E7
+:1015F0006624D714E1F18D2D8D32A1F18E32A9F13F
+:1016000080538A30A0F5C801B7012AE030E040E0FD
+:1016100050E00E94FA217B018C018D2D992787FDD6
+:101620009095A92FB92FE80EF91E0A1F1B1F80EDF8
+:101630009FEFAFEFBFEFE80EF91E0A1F1B1FCC2074
+:10164000B1F0A5019401652F7A2D832F982D2DECF3
+:101650003CEC4CEC5DE30E94DE1CB62EA72E982ECF
+:10166000892E05C06624639402C0CC24C394E8810B
+:10167000F9810680F781E02DCE010995CE010E9407
+:101680008E09D82E982F90539A3008F4B2CF8E320C
+:1016900009F4AFCF871509F4ACCF662041F010955F
+:1016A0000095F094E094E11CF11C011D111DCC206B
+:1016B00069F0C801B7010E94E61ED501F4012B2F85
+:1016C0003A2D4F2F582D0E94DE1C09C0C801B701CA
+:1016D0000E94E61E04C060E070E080E090E0DF91D0
+:1016E000CF911F910F91FF90EF90DF90CF90BF901F
+:1016F000AF909F908F907F906F90089561E00E94CF
+:10170000D90A0895CF92DF92EF92FF920F931F9321
+:10171000CF93DF936C01EB017A0100E010E008C089
+:10172000C6010E94620997FD06C089930F5F1F4F93
+:101730000E151F05A8F3C801DF91CF911F910F91DE
+:10174000FF90EF90DF90CF900895AF92BF92CF922D
+:10175000DF92EF92FF920F931F93CF93DF935C0181
+:10176000EA01790121153105B1F000E010E0C62E43
+:10177000DD24C7FCD0940BC0C5010E94620997FD0F
+:101780000CC08C159D0549F089930F5F1F4F0E15F6
+:101790001F0590F302C000E010E0C801DF91CF9177
+:1017A0001F910F91FF90EF90DF90CF90BF90AF907F
+:1017B00008952F923F924F925F926F927F928F92F5
+:1017C0009F92AF92BF92DF92EF92FF920F931F937F
+:1017D000DF93CF9300D000D0CDB7DEB71B012983B4
+:1017E0003A834B835C839091AB01981721F09F3F24
+:1017F00009F0D8C104C0E8E6F0E0D4907DC0809341
+:10180000AB01E8E6F0E0D4909D2D9F3F09F4CAC1FA
+:10181000913031F1923009F449C0DD2009F06CC0FB
+:1018200014BC15BC94B5926094BD95B5916095BDFE
+:10183000282F30E0F901E957FF4FE491F0E0EE0F77
+:10184000FF1FED58FF4F4591549140938B035093E8
+:101850008C0325563F4FF901249120938D034EC0F0
+:101860001092800010928100909181009860909376
+:10187000810090918100916090938100282F30E049
+:10188000F901E957FF4FE491F0E0EE0FFF1FED582B
+:10189000FF4F4591549140939203509393032556E3
+:1018A0003F4FF90124912093940328C01092B00077
+:1018B0001092B1009091B00092609093B00090911E
+:1018C000B10091609093B100282F30E0F901E95701
+:1018D000FF4FE491F0E0EE0FFF1FED58FF4F4591F1
+:1018E00054914093990350939A0325563F4FF90121
+:1018F000249120939B0302C0D7FC54C161E00E9455
+:101900006719DD2021F0FD2DF23009F0C1C0410141
+:10191000AA24BB2460E079E08DE390E0A501940166
+:101920000E942C2229013A0179018A010894E108D8
+:10193000F108010911098FEFE816F10401051105FD
+:1019400009F008F498C060E271EA87E090E0A50130
+:1019500094010E942C2279018A010894E108F1087F
+:10196000010911099D2D9230C9F4AFEFEA16F10477
+:101970000105110509F008F485C068E478EE81E0FE
+:1019800090E0A50194010E942C2279018A0108941B
+:10199000E108F1080109110983E001C082E0BFEF0D
+:1019A000EB16F1040105110509F008F465C064E2C5
+:1019B00074EF80E090E0A50194010E942C2279014F
+:1019C0008A010894E108F10801091109DD20E1F01C
+:1019D000ED2DE230D9F4FFEFEF16F104010511050A
+:1019E00009F008F451C062E17AE780E090E0A501D7
+:1019F00094010E942C2279018A010894E108F108DF
+:101A00000109110985E003C083E001C084E09FEF74
+:101A1000E916F1040105110579F170F169E07DE342
+:101A200080E090E0A50194010E942C2279018A01B6
+:101A30000894E108F10801091109DD2011F484E09E
+:101A400001C086E0AFEFEA16F10401051105A1F02F
+:101A500098F0830172019AE016950795F794E79440
+:101A60009A95D1F70894E108F10801091109DD20E0
+:101A700031F087E00AC081E0DD2011F006C085E08A
+:101A800085BD3CC082E001C084E08093B10036C0D7
+:101A90004101AA24BB2460E079E08DE390E0A50138
+:101AA00094010E942C2279018A010894E108F1082E
+:101AB00001091109B0E0EB16B0E0FB06B1E00B073D
+:101AC000B0E01B0788F064E274EF80E090E0A501CD
+:101AD00094010E942C2279018A010894E108F108FE
+:101AE0000109110993E001C091E0ED2DE13031F4DD
+:101AF00080918100887F892B8093810089819A81E0
+:101B0000AB81BC810097A105B10591F0B101660FD1
+:101B1000771F80E090E029813A814B815C810E94AF
+:101B2000FA2128EE33E040E050E00E942C2203C06E
+:101B30002FEF3FEFA9019D2D913099F0923019F1CF
+:101B4000DD2081F5E7BC2093870330938803409321
+:101B5000890350938A0380916E00826080936E00A7
+:101B600021C0F0928900E092880020938E03309388
+:101B70008F03409390035093910380916F00826094
+:101B800080936F000FC0E092B300209395033093D1
+:101B9000960340939703509398038091700082605E
+:101BA000809370000F900F900F900F90CF91DF9166
+:101BB0001F910F91FF90EF90DF90BF90AF909F909B
+:101BC0008F907F906F905F904F903F902F900895EF
+:101BD000813041F0813018F08230D1F409C0109288
+:101BE0006E00089580916F008D7F80936F0008953F
+:101BF000809170008D7F8093700081E08093B000B1
+:101C00008091B100887F84608093B1001092B3000E
+:101C100008951F93182F8091AB01811739F4E8E6DE
+:101C2000F0E084919FEF9093AB0101C08FEF0E9491
+:101C3000E80D812F60E00E948B191F9108951F927B
+:101C40000F920FB60F9211242F933F934F935F93F0
+:101C50006F937F938F939F93AF93BF93EF93FF9374
+:101C60008091950390919603A0919703B09198036A
+:101C70000097A105B10551F1E0919903F0919A0304
+:101C8000808190919B038927808380919503909117
+:101C90009603A0919703B0919803181619061A0697
+:101CA0001B06C4F48091950390919603A09197032D
+:101CB000B09198030197A109B1098093950390937E
+:101CC0009603A0939703B093980304C08091AB014F
+:101CD0000E94090EFF91EF91BF91AF919F918F915B
+:101CE0007F916F915F914F913F912F910F900FBE18
+:101CF0000F901F9018958230E8F4E82FF0E0EE0F77
+:101D0000FF1FE456FC4F71836083813041F0809166
+:101D100069008C7F842B80936900E89A08958091F4
+:101D20006900440F551F440F551F837F842B8093F8
+:101D30006900E99A0895823068F4813011F0E898DA
+:101D400001C0E998E82FF0E0EE0FFF1FE456FC4FCA
+:101D50001182108208951F920F920FB60F921124D4
+:101D60002F933F934F935F936F937F938F939F93A3
+:101D7000AF93BF93EF93FF9380919C0390919D034A
+:101D8000009729F0E0919C03F0919D030995FF9144
+:101D9000EF91BF91AF919F918F917F916F915F91E3
+:101DA0004F913F912F910F900FBE0F901F9018955C
+:101DB0001F920F920FB60F9211242F933F934F93C0
+:101DC0005F936F937F938F939F93AF93BF93EF93A3
+:101DD000FF9380919E0390919F03009729F0E091DB
+:101DE0009E03F0919F030995FF91EF91BF91AF91F1
+:101DF0009F918F917F916F915F914F913F912F9123
+:101E00000F900FBE0F901F901895009729F0BC01FE
+:101E100080E090E00E9439240895EF92FF920F93A2
+:101E20001F937B018C01611571058105910549F0B6
+:101E30000E943424A80197010E944E229B01AC010C
+:101E400003C020E030E0A901B901CA011F910F9140
+:101E5000FF90EF900895EF92FF920F931F937B01F5
+:101E60008C01621773078407950764F4CA01B901EE
+:101E70006E197F09800B910B0E940D0FE60EF71E65
+:101E8000081F191FB701C8011F910F91FF90EF9014
+:101E900008952F923F924F925F926F927F928F920E
+:101EA0009F92AF92BF92CF92DF92EF92FF920F93E9
+:101EB0001F93DF93CF93CDB7DEB73B014C011901E0
+:101EC0002A016D897E898F89988D6A197B098C0911
+:101ED0009D09621A730A840A950AA40193010E945B
+:101EE000FA21E218F30804091509A80197010E94D4
+:101EF0004E222A0D3B1D4C1D5D1DB901CA01CF911B
+:101F0000DF911F910F91FF90EF90DF90CF90BF90E6
+:101F1000AF909F908F907F906F905F904F903F9089
+:101F20002F900895089570E0382F20E0622B732BD6
+:101F3000CB010895FC01808191810E945423089572
+:101F4000CF93DF93EC0188819981009711F00E9473
+:101F50005423198218821D821C821B821A82DF91EF
+:101F6000CF9108950F931F93CF93DF93EC018B01D3
+:101F70006F5F7F4F888199810E944224009731F0E2
+:101F8000998388831B830A8381E001C080E0DF910D
+:101F9000CF911F910F910895CF93DF93EC0188812A
+:101FA0009981009729F08A819B818617970778F499
+:101FB000CE010E94B20F882341F08C819D81009751
+:101FC00031F4E881F981108202C080E001C081E033
+:101FD000DF91CF910895EF92FF920F931F93CF93CC
+:101FE000DF93EC017B018A01BA010E94CC0F8823A8
+:101FF00021F4CE010E94A00F07C01D830C838881AD
+:102000009981B7010E948825CE01DF91CF911F9160
+:102010000F91FF90EF900895CF93DF93FC01118211
+:102020001082138212821582148216826115710544
+:1020300059F0EB0109900020E9F7AE014150504002
+:10204000461B570B0E94EB0FDF91CF910895EF9243
+:10205000FF92CF93DF93EC01FB018617970761F0A6
+:10206000608171816115710529F0448155810E945B
+:10207000EB0F02C00E94A00FCE01DF91CF91FF9025
+:10208000EF900895FC011182108213821282158252
+:10209000148216820E94271008950F931F938C01BB
+:1020A0006115710561F0DB010D900020E9F7AD01CC
+:1020B00041505040461B570B0E94EB0F02C00E943C
+:1020C000A00FC8011F910F910895EF92FF920F93F7
+:1020D0001F93DF93CF93CDB7DEB7A1970FB6F894D8
+:1020E000DEBF0FBECDBF7C01CB01BA01F70111826B
+:1020F0001082138212821582148216828E010F5F63
+:102100001F4FA80130E00E943B26C701B8010E9482
+:102110004D10A1960FB6F894DEBF0FBECDBFCF9184
+:10212000DF911F910F91FF90EF900895EF92FF9232
+:102130000F931F93DF93CF93CDB7DEB7A2970FB660
+:10214000F894DEBF0FBECDBF7C01CB01BA01F70111
+:1021500011821082138212821582148216828E01DD
+:102160000F5F1F4FA80130E00E94F225C701B801A0
+:102170000E944D10A2960FB6F894DEBF0FBECDBFE1
+:10218000CF91DF911F910F91FF90EF900895EF9203
+:10219000FF920F931F93DF93CF93CDB7DEB7619775
+:1021A0000FB6F894DEBF0FBECDBF7C01CB01F701A7
+:1021B00011821082138212821582148216828E017D
+:1021C0000F5F1F4FB80150E00E946026C701B801A1
+:1021D0000E944D1061960FB6F894DEBF0FBECDBFC2
+:1021E000CF91DF911F910F91FF90EF900895EF92A3
+:1021F000FF920F931F93DF93CF93CDB7DEB7629714
+:102200000FB6F894DEBF0FBECDBF7C01CB01F70146
+:1022100011821082138212821582148216828E011C
+:102220000F5F1F4FB80150E00E94D125C701B801D0
+:102230000E944D1062960FB6F894DEBF0FBECDBF60
+:10224000CF91DF911F910F91FF90EF900895EF9242
+:10225000FF920F931F93DF93CF93CDB7DEB72997EC
+:102260000FB6F894DEBF0FBECDBF7C01862FF701FD
+:10227000118210821382128215821482168290E0DB
+:102280008E010F5F1F4FB80150E00E946026C7010A
+:10229000B8010E944D1029960FB6F894DEBF0FBE0C
+:1022A000CDBFCF91DF911F910F91FF90EF900895D7
+:1022B000DF93CF9300D0CDB7DEB7FC01118210823F
+:1022C0001382128215821482168269831A82BE01D9
+:1022D0006F5F7F4F0E944D100F900F90CF91DF9155
+:1022E0000895EF92FF920F931F93CF93DF93EC012A
+:1022F0007B010C811D8161157105B9F041155105F6
+:1023000091F0040F151FB8010E94CC0F882369F0CB
+:10231000288139818C819D81820F931FB7010E9492
+:1023200088251D830C8381E001C080E0DF91CF917F
+:102330001F910F91FF90EF900895FB0160817181D3
+:10234000448155810E94711108956115710561F0F4
+:10235000DB010D900020E9F7AD0141505040461BD4
+:10236000570B0E947111089580E00895DF93CF9379
+:1023700000D0CDB7DEB769831A82BE016F5F7F4F91
+:1023800041E050E00E9471110F900F90CF91DF91CA
+:102390000895EF92FF920F931F93DF93CF9300D096
+:1023A00000D0CDB7DEB77C01862F90E08E010F5FA5
+:1023B0001F4FB8014AE050E00E94D125F80101907A
+:1023C0000020E9F7AF0141505040401B510BC701BD
+:1023D000B8010E9471110F900F900F900F90CF9144
+:1023E000DF911F910F91FF90EF900895EF92FF9270
+:1023F0000F931F93DF93CF93CDB7DEB727970FB619
+:10240000F894DEBF0FBECDBF7C01CB018E010F5F04
+:102410001F4FB8014AE050E00E94D125F801019019
+:102420000020E9F7AF0141505040401B510BC7015C
+:10243000B8010E94711127960FB6F894DEBF0FBE47
+:10244000CDBFCF91DF911F910F91FF90EF90089535
+:10245000EF92FF920F931F93DF93CF9300D000D0A2
+:1024600000D0CDB7DEB77C01CB018E010F5F1F4FCF
+:10247000B8014AE050E00E946026F8010190002077
+:10248000E9F7AF0141505040401B510BC701B80163
+:102490000E94711126960FB6F894DEBF0FBECDBF15
+:1024A000CF91DF911F910F91FF90EF900895EF92E0
+:1024B000FF920F931F93DF93CF93CDB7DEB72C9787
+:1024C0000FB6F894DEBF0FBECDBF7C01CB01BA01C1
+:1024D0008E010F5F1F4FA8012AE030E00E94F22515
+:1024E000F80101900020E9F7AF0141505040401B36
+:1024F000510BC701B8010E9471112C960FB6F894C8
+:10250000DEBF0FBECDBFCF91DF911F910F91FF9026
+:10251000EF900895EF92FF920F931F93DF93CF9365
+:10252000CDB7DEB72B970FB6F894DEBF0FBECDBF89
+:102530007C01CB01BA018E010F5F1F4FA8012AE079
+:1025400030E00E943B26F80101900020E9F7AF013E
+:1025500041505040401B510BC701B8010E947111FE
+:102560002B960FB6F894DEBF0FBECDBFCF91DF9193
+:102570001F910F91FF90EF9008950F931F938C017F
+:10258000FB0160817181448155810E947111882312
+:1025900019F4C8010E94A00FC8011F910F9108955E
+:1025A0000F931F938C016115710569F0DB010D908C
+:1025B0000020E9F7AD0141505040461B570B0E94E7
+:1025C0007111882319F4C8010E94A00FC8011F913E
+:1025D0000F9108950F931F938C010E94B6118823C9
+:1025E00019F4C8010E94A00FC8011F910F9108950E
+:1025F0000F931F938C010E94C911882319F4C801FD
+:102600000E94A00FC8011F910F9108950F931F936F
+:102610008C010E94F611882319F4C8010E94A00FB2
+:10262000C8011F910F9108950F931F938C010E9471
+:102630002812882319F4C8010E94A00FC8011F9115
+:102640000F9108950F931F938C010E9457128823B6
+:1026500019F4C8010E94A00FC8011F910F9108959D
+:102660000F931F938C010E948A12882319F4C801CA
+:102670000E94A00FC8011F910F910895CF93DF937F
+:10268000FC01DB0180819181009731F06D917C919B
+:10269000119761157105E9F4CD91DC91119720979F
+:1026A00069F014962D913C9115972115310531F063
+:1026B000288130E0309521953F4F12C0009771F08E
+:1026C000248135812115310549F0FC01208130E05C
+:1026D00007C00E947F25282F392F02C020E030E05C
+:1026E000C901DF91CF910895FC0144815581FB011F
+:1026F000248135814217530729F40E943E1321E0BB
+:10270000009709F020E0822F0895FC0184819581D3
+:10271000009741F46115710519F081E0FB0109C0D2
+:1027200081E008950190F081E02D6115710531F48B
+:1027300081E09081992359F080E00895CF010E94B3
+:102740007F259C0181E02115310509F080E0089585
+:102750000E943E13892F881F8827881F08950E9492
+:102760003E1321E0181619060CF020E0822F089580
+:102770000E943E1321E0181619060CF420E0822F67
+:1027800008950E943E13892F8095881F8827881FEF
+:102790000895EF92FF920F931F93CF93DF93FC0165
+:1027A000DB018617970729F18481958114962D9175
+:1027B0003C91159782179307F1F40097D1F00081AF
+:1027C0001181CD91DC9111970FC0992787FD9095CC
+:1027D0000E943C257C018991992787FD90950E9454
+:1027E0003C25E816F90639F4F80181918F01882318
+:1027F00061F781E001C080E0DF91CF911F910F91DF
+:10280000FF90EF900895FC01DB01CA0114964D91F1
+:102810005C91159724813581241B350B28173907C6
+:10282000A0F0208131812115310579F06D917C91E5
+:1028300011976115710559F0820F931F0E948F2522
+:102840009C0181E02115310519F080E0089580E0B8
+:102850000895FC0144815581FB0124813581421793
+:10286000530728F040E050E00E940314089580E0F0
+:102870000895FC01DB018481958114964D915C9152
+:10288000159784179507B0F0208131812115310506
+:1028900089F06D917C9111976115710569F0841B28
+:1028A000950B820F931F0E947F259C0181E02115CB
+:1028B000310519F080E0089580E00895FC018481DD
+:1028C00095816817790730F40190F081E02DE60FCB
+:1028D000F71F40830895FC0184819581681779076B
+:1028E00020F480819181009729F41092A00360EA7E
+:1028F00073E002C0680F791FCB010895FC01848149
+:1029000095816817790748F480819181009739F0A3
+:10291000680F791FFB018081089580E0089580E0B1
+:1029200008950E947E1408950F931F93CF93DF9311
+:10293000FC018B0141155105F1F061157105D9F0CC
+:10294000C481D5812C173D0718F0FB01108213C0FC
+:1029500041505040C21BD30B4C175D0708F4EA01ED
+:1029600060817181620F731FC801AE010E949D25B5
+:10297000C00FD11F1882DF91CF911F910F91089541
+:10298000CF93DF93FC01CA0124813581421753079D
+:1029900078F4C081D181772767FD70958C0F9D1FDA
+:1029A0000E947425009721F09C012C1B3D0B02C056
+:1029B0002FEF3FEFC901DF91CF91089540E050E044
+:1029C0000E94C0140895CF93DF93FC01CA012481B3
+:1029D00035814217530778F4C081D181FB016081B2
+:1029E00071818C0F9D1F0E94B725009721F09C01DB
+:1029F0002C1B3D0B02C02FEF3FEFC901DF91CF91A0
+:102A0000089540E050E00E94E3140895DF92EF92B1
+:102A1000FF920F931F93CF93DF93EC018C819D81E5
+:102A200048175907F8F47A010894E11CF11CE88171
+:102A3000F981EE0DFF1DD080108208811981772762
+:102A400067FD7095C8010E94AC250E0D1F1DF80191
+:102A5000D082009739F028813981AC01421B530B99
+:102A60009A0102C02FEF3FEFC901DF91CF911F9173
+:102A70000F91FF90EF90DF900895FC014481558104
+:102A8000415050400E9406150895AF92BF92CF92D8
+:102A9000DF92EF92FF920F931F93CF93DF93FC018E
+:102AA0006B018A01DB0114962D913C91159721153C
+:102AB000310551F184819581009731F18217930797
+:102AC00018F14817590718F08C0101501040E080A8
+:102AD000F180C701CFEFDFEF5701A00EB11E10C08C
+:102AE000F601608171810E94B725009779F09C0101
+:102AF0002E193F090217130708F49E010196E901F8
+:102B0000A816B90668F702C0CFEFDFEFCE01DF915C
+:102B1000CF911F910F91FF90EF90DF90CF90BF90DA
+:102B2000AF900895FC0144815581FB0124813581DA
+:102B3000421B530B0E9445150895AF92BF92CF924E
+:102B4000DF92EF92FF920F931F93CF93DF93F82EB4
+:102B5000E92E6B018A01E9012417350748F4342F67
+:102B6000212F8E01C901A92EE5015E01B22EE501DA
+:102B70008F2D9E2D6CEA71E00E940C10D6011496E8
+:102B80008D919C91159780179107D8F08C179D0710
+:102B900008F4EC01D601ED91FC911197EC0FFD1FAB
+:102BA000B08010826D917C91600F711F8F2D9E2DD2
+:102BB0000E944D10D601ED91FC911197EC0FFD1F75
+:102BC000B0828F2D9E2DDF91CF911F910F91FF909D
+:102BD000EF90DF90CF90BF90AF900895CF93DF93A9
+:102BE000EC01FB01248135810E949D15CE01DF910E
+:102BF000CF910895DC01ED91FC911197309729F464
+:102C00000895861709F44083319680818823C9F797
+:102C100008952F923F924F925F926F927F928F9280
+:102C20009F92AF92BF92CF92DF92EF92FF920F935B
+:102C30001F93CF93DF937C012B016A01DC01149673
+:102C40006D907C9015976114710409F4D9C0FB0153
+:102C5000848095808114910409F4D2C0DA0114961D
+:102C6000AD90BC901597A818B908FC01008111819E
+:102C7000A114B104F1F413C0D6016C9111967C91AA
+:102C8000119714964D915C911597CE010E9459258C
+:102C9000D60114960D911C9115970C0F1D1FF20172
+:102CA00060817181C8010E94B725EC01009721F76E
+:102CB000A7C0B7FC02C0E30142C048012DC0E30138
+:102CC000C01BD10BC401B801AE010E945925C80D2B
+:102CD000D91DD6016C9111967C91119714964D9146
+:102CE0005C911597CE010E945925D60114968D90BE
+:102CF0009C9015978C0E9D1EF20104811581060D86
+:102D0000171DD70114968D919C9115978A0D9B1DC7
+:102D100015969C938E931497F20160817181C8017E
+:102D20000E94B7253C01009751F6C401B8010E94EA
+:102D3000882566C08C01080D191DCA0DDB1DD20146
+:102D40006D917C91C8010E94B725009799F7C6152F
+:102D5000D70509F455C0F701828193818C179D072F
+:102D600008F045C0C701BE010E94B20F882309F4D4
+:102D700047C03DC0C701B201A9010E944515EC0141
+:102D800097FD3EC0D7016D917C911197F20184812E
+:102D900095818C0F9D1F680F791F14964D915C9142
+:102DA0001597481B590BCB018A0D9B1D0E9462256C
+:102DB000D70114968D919C9115978A0D9B1D1596A0
+:102DC0009C938E931497ED91FC911197E80FF91F46
+:102DD00010822D913C912C0F3D1FF6016081718175
+:102DE00044815581C9010E9459259E0105C0D70122
+:102DF00014962D913C9115972150304037FFBACF52
+:102E0000DF91CF911F910F91FF90EF90DF90CF90C6
+:102E1000BF90AF909F908F907F906F905F904F90FA
+:102E20003F902F900895CF93DF93FC01C081D18113
+:102E3000209739F409C0992787FD90950E943C2579
+:102E4000899388818823B9F7DF91CF910895CF9333
+:102E5000DF93FC01C081D181209739F409C0992703
+:102E600087FD90950E944425899388818823B9F72E
+:102E7000DF91CF910895AF92BF92CF92DF92EF9200
+:102E8000FF920F931F93CF93DF936C01DC01ED90C2
+:102E9000FC901197E114F10409F443C01496AD902D
+:102EA000BC901597A114B104E1F18701E801888174
+:102EB0000F5F1F4F992787FD90950E94342500973B
+:102EC000A9F78501015010400E0D1F1DF8018081EA
+:102ED000992787FD90950E943425009731F00C17B3
+:102EE0001D0718F001501040F1CF0F5F1F4F0C1B52
+:102EF0001D0BD60115961C930E931497EC16FD0628
+:102F000028F4C701BE01A8010E945925D601ED9100
+:102F1000FC91119714968D919C911597E80FF91FCC
+:102F20001082DF91CF911F910F91FF90EF90DF9072
+:102F3000CF90BF90AF900895FC0180819181009760
+:102F400029F00E940D259B01AC0103C020E030E078
+:102F5000A901B901CA0108950E94BA2208950E94E8
+:102F60005423089521E030E0FC018081882311F092
+:102F700020E030E0C901089521E0FC01208308959C
+:102F8000089508951F920F920FB60F9211242F9358
+:102F90003F934F935F936F937F938F939F93AF93E1
+:102FA000BF932091A5033091A6034091A7035091B0
+:102FB000A8037091A903DA01C9010296A11DB11DF0
+:102FC000672F6A5F6D3730F06D57DA01C9010396DC
+:102FD000A11DB11D6093A9038093A5039093A6033F
+:102FE000A093A703B093A8038091A1039091A2039B
+:102FF000A091A303B091A4030196A11DB11D8093DC
+:10300000A1039093A203A093A303B093A403BF9141
+:10301000AF919F918F917F916F915F914F913F9170
+:103020002F910F900FBE0F901F9018958FB7F894A7
+:103030002091A5033091A6034091A7035091A803C6
+:103040008FBFB901CA0108959FB7F8942091A103D9
+:103050003091A2034091A3035091A40386B5A89B8D
+:1030600006C08F3F21F02F5F3F4F4F4F5F4F9FBFF5
+:10307000542F432F322F2227280F311D411D511D60
+:1030800083E0220F331F441F551F8A95D1F7B901E2
+:10309000CA010895EF92FF920F931F93CF93DF938E
+:1030A0007B018C010E942418EB010FC00E942418A0
+:1030B0006C1B7D0B83E0683E780738F00894E108CC
+:1030C000F10801091109C851DC4FE114F1040105AF
+:1030D000110561F7DF91CF911F910F91FF90EF9054
+:1030E0000895019739F0019729F0880F991F0197EA
+:1030F0000197F1F70895789484B5826084BD84B512
+:10310000816084BD85B5826085BD85B5816085BDE2
+:10311000EEE6F0E0808181608083E1E8F0E01082FB
+:10312000808182608083808181608083E0E8F0E03C
+:10313000808181608083E1EBF0E080818460808326
+:10314000E0EBF0E0808181608083EAE7F0E080815D
+:1031500084608083808182608083808181608083BD
+:103160008081806880831092C10008958093AD01B2
+:1031700008958E3008F08E5087709091AD01929531
+:10318000990F990F907C982B90937C0080917A00F6
+:10319000806480937A0080917A0086FDFCCF209134
+:1031A000780030917900932F80E030E0282B392B84
+:1031B000C90108951F93CF93DF93182FEB0161E0AE
+:1031C0000E946719209709F44AC0CF3FD10509F43E
+:1031D00049C0E12FF0E0E155FF4FE491E330C1F049
+:1031E000E43028F4E13051F0E230B1F50CC0E630C3
+:1031F00019F1E73049F1E43079F514C084B58068FD
+:1032000084BDC7BD33C084B5806284BDC8BD2EC037
+:1032100080918000806880938000D0938900C09363
+:10322000880024C080918000806280938000D093C9
+:103230008B00C0938A001AC08091B0008068809390
+:10324000B000C093B30012C08091B0008062809340
+:10325000B000C093B4000AC0C038D1051CF4812F5F
+:1032600060E002C0812F61E00E948B19DF91CF9155
+:103270001F910895833071F0843028F48130A1F0DB
+:10328000823021F514C08630B1F08730D1F084301F
+:10329000E9F404C0809180008F7703C080918000A2
+:1032A0008F7D80938000089584B58F7702C084B5A8
+:1032B0008F7D84BD08958091B0008F778093B0009A
+:1032C00008958091B0008F7D8093B000089590E0C4
+:1032D000FC01E556FF4F2491FC01E957FF4FE491B3
+:1032E000EE23C1F0F0E0EE0FFF1FE759FF4F85918D
+:1032F0009491DC01662341F49FB7F8948C9120955A
+:1033000082238C939FBF08959FB7F8948C91822B52
+:103310008C939FBF08950F931F93DF93CF930F92CA
+:10332000CDB7DEB7282F30E0F901E155FF4F84918A
+:10333000F901E556FF4F149129573F4FF9010491C8
+:103340000023D9F0882321F069830E943A1969810A
+:10335000E02FF0E0EE0FFF1FED58FF4F85919491A5
+:10336000DC019FB7F894662321F48C91109581239A
+:1033700002C08C91812B8C939FBF0F90CF91DF91D6
+:103380001F910F9108950F931F93282F30E0F9019B
+:10339000E155FF4F8491F901E556FF4F04912957FC
+:1033A0003F4FF9011491112391F0882311F00E94ED
+:1033B0003A19E12FF0E0EE0FFF1FE358FF4F859120
+:1033C0009491DC018C91802321E030E011F420E025
+:1033D00030E0C9011F910F9108958F929F92AF9293
+:1033E000BF92CF92DF92EF92FF920F931F9390E0E4
+:1033F000FC01E556FF4F949089579F4FFC01E490E4
+:10340000662311F4882401C0892CCA01B90120E483
+:103410003FE140E050E00E94FA2120E83EE340E036
+:1034200050E00E942C2259016A0180E090E0DC010A
+:103430006E2D70E0FB01EE0FFF1FE358FF4F25914B
+:10344000349109C08A159B05AC05BD0509F44DC032
+:103450000196A11DB11DF90140814921481591F343
+:103460000AC08A159B05AC05BD0509F43EC001964E
+:10347000A11DB11D07C0660F771F63587F4FFB0169
+:1034800025913491F90140814921481551F720E0F7
+:1034900030E0A901FB01659174910FC079018A01A7
+:1034A000E80EF91E0A1F1B1FEA14FB040C051D057C
+:1034B000E1F02F5F3F4F4F4F5F4FFB01E081E9216C
+:1034C000E81561F3CA01B90128E032E540E050E0B7
+:1034D0000E94FA216058714C8F4F9F4F20E43FE1CA
+:1034E00040E050E00E942C2203C020E030E0A9011F
+:1034F000B901CA011F910F91FF90EF90DF90CF901B
+:10350000BF90AF909F908F900895CF92DF92EF92EF
+:10351000FF920F931F93CF93DF93E82EF62EC42EC6
+:10352000C7E0D0E0DD2407E010E08F2D61E00E94CD
+:103530008B19CC2071F48E2D0E94C31998012C1B7D
+:103540003D0BAC0102C0440F551F2A95E2F79A01CA
+:103550000AC08E2D0E94C3199C010C2E02C0220F9E
+:10356000331F0A94E2F7D22A8F2D60E00E948B1954
+:1035700021975FEFCF3FD507C1F68D2DDF91CF911A
+:103580001F910F91FF90EF90DF90CF900895BF9221
+:10359000CF92DF92EF92FF920F931F93CF93DF931F
+:1035A000C82ED62EB42EC7E0D0E0022F10E087E060
+:1035B000E82EF12CBB2059F497012C1B3D0BC801C0
+:1035C00002C0959587952A95E2F79C0107C098015E
+:1035D0000C2E02C0359527950A94E2F7622F617090
+:1035E0008C2D0E948B198D2D61E00E948B198D2DE1
+:1035F00060E00E948B1921979FEFCF3FD907D1F64A
+:10360000DF91CF911F910F91FF90EF90DF90CF90BE
+:10361000BF900895EF92FF920F931F937B018C014F
+:1036200020E030E040E05FE40E94861E87FD11C08C
+:10363000C801B70120E030E040E05FE40E94AD1C2B
+:103640000E94461F9B01AC01205030404040504832
+:1036500006C0C801B7010E94461F9B01AC01B90119
+:10366000CA011F910F91FF90EF900895A0E0B0E084
+:10367000ECE3FBE10C948122FC01EA0180818230C1
+:1036800008F438C1DB019C91923008F430C18430D9
+:1036900059F4943009F02EC1918111968C911197B3
+:1036A000981709F021C126C1943009F420C1923045
+:1036B000B1F4823009F01EC1CA01AF0128E0DA017D
+:1036C0000D90AD01DC010D92CD012150C1F7DB0160
+:1036D00011968C9111979181892389830AC1823037
+:1036E00009F405C1C280D380DB0112966D907C90F5
+:1036F000139724813581468157811496ED90FD9072
+:103700000D911C911797C601861997095C0197FFC7
+:1037100004C0AA24BB24A81AB90AB0E2AB16B104AB
+:103720000CF061C0181619066CF5370148010A2C17
+:1037300004C096948794779467940A94D2F781E0B2
+:1037400090E0A0E0B0E00A2C04C0880F991FAA1FE7
+:10375000BB1F0A94D2F70197A109B1098E219F21BD
+:10376000A023B123EE24FF248701E3940097A10551
+:10377000B10519F4EE24FF248701E628F72808296B
+:1037800019293CC00097D1F1CA0CDB1C39014A0150
+:103790000A2C04C096948794779467940A94D2F77D
+:1037A00081E090E0A0E0B0E00A2C04C0880F991FEF
+:1037B000AA1FBB1F0A94D2F70197A109B10982235E
+:1037C0009323A423B52321E030E040E050E00097AC
+:1037D000A105B10519F420E030E0A9012629372917
+:1037E000482959290BC06C147D0424F4EE24FF24CD
+:1037F000870104C0630120E030E0A9018181FB0161
+:103800009181891709F445C0882349F0D801C7017F
+:10381000821B930BA40BB50B9C01AD0104C02E19A8
+:103820003F09400B510B57FD04C01982DB82CA824D
+:103830000BC081E08983DB82CA8250954095309528
+:1038400021953F4F4F4F5F4F2C833D834E835F83C6
+:103850000DC0880F991FAA1FBB1F8C839D83AE8349
+:10386000BF838A819B8101979B838A838C819D8101
+:10387000AE81BF819C01AD0121503040404050409D
+:103880002F3FEFEF3E07EFEF4E07EFE35E0708F342
+:103890000BC08983DB82CA822E0D3F1D401F511F42
+:1038A0002C833D834E835F8383E088832C813D811D
+:1038B0004E815F8157FF1DC0DA01C9018170907090
+:1038C000A070B0705695479537952795822B932B0E
+:1038D000A42BB52B8C839D83AE83BF838A819B8170
+:1038E00001969B838A8305C0EEEAF1E003C0FB01E9
+:1038F00001C0FE01CF01CDB7DEB7EEE00C949D22F2
+:10390000A0E2B0E0E6E8FCE10C94892269837A83C6
+:103910008B839C832D833E834F83588789E0E82ED9
+:10392000F12CEC0EFD1ECE010196B7010E9438214C
+:103930008E010F5E1F4FCE010596B8010E943821FF
+:10394000C701B801AE01475E5F4F0E94361B0E945F
+:103950006A20A096E6E00C94A522A0E2B0E0E3EB9A
+:10396000FCE10C94892269837A838B839C832D8369
+:103970003E834F8358878E01075F1F4FCE0101960C
+:10398000B8010E94382191E1E92EF12CEC0EFD1EC8
+:10399000CE010596B7010E9438218A8991E08927D6
+:1039A0008A8BC801B701AE01475E5F4F0E94361B8C
+:1039B0000E946A20A096E6E00C94A522A0E2B0E066
+:1039C000E4EEFCE10C947D2269837A838B839C83F3
+:1039D0002D833E834F835887CE010196BE01675FDA
+:1039E0007F4F0E943821CE010596BE016F5E7F4F4A
+:1039F0000E9438219985923078F089898230C0F010
+:103A0000943019F4823041F4CBC0843019F49230F0
+:103A100079F4C6C0923051F481E02A859A89291739
+:103A200009F480E08A87CE010996BCC0823051F447
+:103A300081E02A859A89291709F480E08A8BCE01D2
+:103A40004196B0C06D847E848F849888ED88FE880E
+:103A50000F89188DE0E2F0E080E090E0DC01AA241C
+:103A6000BB24650120E030E0A901B30161707070F2
+:103A700061157105D1F02E0D3F1D401F511F15011D
+:103A80002601280E391E4A1E5B1E81E090E0A0E050
+:103A9000B0E02E153F054007510718F080E090E098
+:103AA000DC01820D931DA41DB51DAA0CBB1CCC1CF2
+:103AB000DD1C17FF09C061E0262E312C412C512C52
+:103AC000A228B328C428D528319749F0EE0CFF1C52
+:103AD000001F111F9694879477946794C6CF6B89C3
+:103AE0007C89EB85FC856E0F7F1F6E5F7F4F7C8F1F
+:103AF0006B8F61E0EA857A89E71709F460E06A8FE5
+:103B00006B8D7C8D10C0FC01E170F070309729F056
+:103B100056954795379527955068B695A7959795EB
+:103B200087956F5F7F4FB7FDEECF0CC0880F991F51
+:103B3000AA1FBB1F57FD8160220F331F441F551F53
+:103B4000615070408030E0E09E07E0E0AE07E0E4C6
+:103B5000BE0760F36B8F7C8F6FE7E62EF12C012D93
+:103B6000112DE822F9220A231B2360E4E616F10452
+:103B70000105110561F487FD0AC0211531054105D4
+:103B8000510529F0805C9F4FAF4FBF4F80788D8FDC
+:103B90009E8FAF8FB8A383E0898FCE01499602C074
+:103BA0008EEA91E00E946A20A096E2E10C949922AC
+:103BB000A8E1B0E0EEEDFDE10C94852269837A8303
+:103BC0008B839C832D833E834F8358878E01075FB1
+:103BD0001F4FCE010196B8010E94382181E1E82EE5
+:103BE000F12CEC0EFD1ECE010596B7010E94382186
+:103BF0009985923008F483C08989823008F47BC0AB
+:103C00002A853A8923272A87943011F0923021F4AB
+:103C1000981709F06CC071C0843039F41D861E8677
+:103C20001F86188A1C861B866AC0823019F484E0BD
+:103C3000898765C08B859C852B893C89821B930B6A
+:103C40009C878B872D853E854F855889ED88FE881A
+:103C50000F89188D2E153F054007510738F4220FA4
+:103C6000331F441F551F01979C878B876FE170E0BE
+:103C7000A12CB12CC12CA0E4DA2E80E090E0DC0174
+:103C80002E153F054007510740F08A299B29AC2992
+:103C9000BD292E193F09400B510BD694C794B794F8
+:103CA000A794220F331F441F551F6150704041F7E6
+:103CB0006FE7E62EF12C012D112DE822F9220A23BF
+:103CC0001B2360E4E616F1040105110561F487FD8C
+:103CD0000AC0211531054105510529F0805C9F4F2F
+:103CE000AF4FBF4F80788D879E87AF87B88B8E018F
+:103CF000075F1F4F04C0870102C00EEA11E0C80130
+:103D00000E946A206896EAE00C94A122A8E1B0E043
+:103D1000ECE8FEE10C94892269837A838B839C838F
+:103D20002D833E834F8358878E01075F1F4FCE013F
+:103D30000196B8010E94382181E1E82EF12CEC0EA9
+:103D4000FD1ECE010596B7010E943821898582307B
+:103D500040F08989823028F0C801B7010E94A12172
+:103D600001C08FEF6896E6E00C94A522A8E1B0E0D0
+:103D7000ECEBFEE10C94892269837A838B839C832C
+:103D80002D833E834F8358878E01075F1F4FCE01DF
+:103D90000196B8010E94382181E1E82EF12CEC0E49
+:103DA000FD1ECE010596B7010E943821898582301B
+:103DB00040F08989823028F0C801B7010E94A12112
+:103DC00001C081E06896E6E00C94A522A8E0B0E08E
+:103DD000ECEEFEE10C9489227B018C0183E0898367
+:103DE000D801C7018827B7FD83959927AA27BB2744
+:103DF000282F8A83E114F1040105110519F482E0EA
+:103E0000898337C08EE190E09C838B83222389F0E5
+:103E100080E0E81680E0F80680E0080780E81807F0
+:103E200069F110950095F094E094E11CF11C011DDE
+:103E3000111DED82FE820F831887C801B7010E9411
+:103E400010209C01215030401216130694F4022ECB
+:103E500004C0EE0CFF1C001F111F0A94D2F7ED8264
+:103E6000FE820F8318878EE190E0821B930B9C8368
+:103E70008B83CE0101960E946A2004C060E070E04E
+:103E800080E09FEC2896E6E00C94A522ACE0B0E040
+:103E9000ECE4FFE10C948D2269837A838B839C830D
+:103EA000CE010196BE016B5F7F4F0E9438218D814C
+:103EB000823081F1823070F1843021F48E81882348
+:103EC00069F10AC02F81388537FD24C06E812F31FA
+:103ED00031053CF0662311F120E030E040E050E88D
+:103EE00021C08EE190E0821B930B29853A854B859A
+:103EF0005C8504C056954795379527958A95D2F7E6
+:103F0000662381F050954095309521953F4F4F4F56
+:103F10005F4F08C020E030E0A90104C02FEF3FEF61
+:103F20004FEF5FE7B901CA012C96E2E00C94A92299
+:103F3000A8E0B0E0EEE9FFE10C9487227B018C0160
+:103F40001A82611571058105910519F482E0898352
+:103F50005FC083E089838EE1C82ED12CDC82CB82C6
+:103F6000ED82FE820F831887C801B7010E941020DE
+:103F7000FC013197F7FF3AC0AA27BB27AE1BBF0B46
+:103F800021E030E040E050E00A2E04C0220F331F51
+:103F9000441F551F0A94D2F72150304040405040F2
+:103FA0002E213F214023512361E070E080E090E02A
+:103FB000211531054105510519F460E070E0CB0190
+:103FC00004C016950795F794E794AA95D2F7E62AC8
+:103FD000F72A082B192BED82FE820F8318878EE1BA
+:103FE00090E08E1B9F0B9C838B8312C0309781F0D7
+:103FF0000E2E04C0EE0CFF1C001F111F0A94D2F7F6
+:10400000ED82FE820F831887CE1ADF0ADC82CB8214
+:10401000CE0101960E946A202896E8E00C94A32223
+:10402000AF92BF92CF92DF92EF92FF920F931F93C6
+:104030007B018C0180E0E81680E0F80681E008074B
+:1040400080E0180758F4EFEFEE16F10401051105B2
+:1040500009F090F480E090E0DC0117C0F0E0EF168A
+:10406000F0E0FF06F0E00F07F1E01F0750F480E1F9
+:1040700090E0A0E0B0E009C088E090E0A0E0B0E00F
+:1040800004C088E190E0A0E0B0E020E230E040E051
+:1040900050E0281B390B4A0B5B0B5701680104C029
+:1040A000D694C794B794A7948A95D2F7D601C50140
+:1040B0008A549E4FFC018081281B31094109510916
+:1040C000C9011F910F91FF90EF90DF90CF90BF90AB
+:1040D000AF900895EF92FF920F931F93CF93DF93CA
+:1040E000FC01248135814681578161818081823044
+:1040F00020F44061EFEFF0E0A3C0843009F49BC0EE
+:10410000823009F492C0211531054105510509F4A9
+:104110008FC00280F381E02D8FEFE238F8070CF0BA
+:104120005AC0C2E8DFEFCE1BDF0BCA31D1056CF5F8
+:1041300079018A010C2E04C016950795F794E7942F
+:104140000A94D2F781E090E0A0E0B0E00C2E04C029
+:10415000880F991FAA1FBB1F0A94D2F70197A109C4
+:10416000B10982239323A423B52321E030E040E06A
+:1041700050E00097A105B10519F420E030E0A90155
+:104180002E293F29402B512B03C020E030E0A9010C
+:10419000DA01C9018F779070A070B07080349105FA
+:1041A000A105B10539F427FF09C0205C3F4F4F4FEF
+:1041B0005F4F04C0215C3F4F4F4F5F4FE1E0F0E0A5
+:1041C000203080E0380780E0480780E4580728F571
+:1041D000E0E0F0E022C0E038F1056CF5E158FF4F77
+:1041E000DA01C9018F779070A070B07080349105AA
+:1041F000A105B10539F427FF09C0205C3F4F4F4F9F
+:104200005F4F04C0215C3F4F4F4F5F4F57FF05C0CA
+:104210005695479537952795319687E0569547955A
+:10422000379527958A95D1F70BC0E0E0F0E005C0FF
+:10423000E0E0F0E005C0EFEFF0E020E030E0A901C1
+:104240008E2F879588278795942F9F776795662768
+:104250006795E695E22EA92FA82BFE2FF62B622F4D
+:10426000732F8A2F9F2FCDB7DEB7E6E00C94A522DF
+:10427000DC01FB012C9111963C91119712968C91C7
+:104280001297482F4F7750E0982F991F9927991F21
+:1042900013966C911397862F880F892B90E0661FD9
+:1042A0006627661F6183009739F5211531054105A1
+:1042B000510511F482E029C082E89FEF9383828345
+:1042C00067E0220F331F441F551F6A95D1F783E023
+:1042D000808309C0220F331F441F551F82819381A1
+:1042E000019793838283203080E0380780E048077D
+:1042F00080E4580778F320C08F3F910579F42115A9
+:1043000031054105510519F484E08083089544FF87
+:1043100003C081E0808310C010820EC08F57904090
+:104320009383828383E0808387E0220F331F441FBF
+:10433000551F8A95D1F7506424833583468357836C
+:104340000895FC01DB019081923008F449C08C9102
+:10435000823008F445C0943051F461818430B1F565
+:1043600011962C91119730E0261B310941C0843001
+:1043700021F0923041F48230B1F111968C91119775
+:104380008823A1F12DC06181823001F111968C91B9
+:1043900011976817D9F42281338112968D919C91DF
+:1043A00013978217930794F028173907BCF02481DC
+:1043B00035814681578114968D919D910D90BC91C8
+:1043C000A02D82179307A407B50718F4662341F0C0
+:1043D0000DC0281739074A075B0728F4662331F018
+:1043E00021E030E005C020E030E002C02FEF3FEFD9
+:1043F000C9010895629FD001739FF001829FE00D73
+:10440000F11D649FE00DF11D929FF00D839FF00D53
+:10441000749FF00D659FF00D9927729FB00DE11DFF
+:10442000F91F639FB00DE11DF91FBD01CF011124DC
+:10443000089597FB092E07260AD077FD04D049D0AE
+:1044400006D000201AF4709561957F4F0895F6F715
+:10445000909581959F4F0895A1E21A2EAA1BBB1B30
+:10446000FD010DC0AA1FBB1FEE1FFF1FA217B30740
+:10447000E407F50720F0A21BB30BE40BF50B661F56
+:10448000771F881F991F1A9469F76095709580951A
+:1044900090959B01AC01BD01CF01089597FB092EBA
+:1044A00005260ED057FD04D0D7DF0AD0001C38F403
+:1044B00050954095309521953F4F4F4F5F4F089550
+:1044C000F6F790958095709561957F4F8F4F9F4F30
+:1044D0000895AA1BBB1B51E107C0AA1FBB1FA6174B
+:1044E000B70710F0A61BB70B881F991F5A95A9F79D
+:1044F00080959095BC01CD0108952F923F924F92E7
+:104500005F926F927F928F929F92AF92BF92CF9263
+:10451000DF92EF92FF920F931F93CF93DF93CDB76C
+:10452000DEB7CA1BDB0B0FB6F894DEBF0FBECDBFE4
+:1045300009942A88398848885F846E847D848C84B5
+:104540009B84AA84B984C884DF80EE80FD800C81BE
+:104550001B81AA81B981CE0FD11D0FB6F894DEBFA1
+:104560000FBECDBFED010895EE0FFF1F0590F49132
+:10457000E02D0994CF93DF938230910510F482E00F
+:1045800090E0E091AC03F091AD0340E050E020E01A
+:1045900030E026C06081718168177907E0F0681704
+:1045A000790781F4828193812115310531F0D90198
+:1045B00013969C938E9312972BC09093AD03809388
+:1045C000AC0326C04115510519F06417750718F49E
+:1045D000AB01E901DF019F0172816381E72FF62FB3
+:1045E0003097C1F64115510501F1481B590B443074
+:1045F000510580F412968D919C911397209719F094
+:104600009B838A8304C09093AD038093AC03FD0128
+:10461000329646C0FD01E40FF51F819391934250FD
+:10462000504011965C934E933BC02091AA03309169
+:10463000AB032115310541F42091B8023091B90244
+:104640003093AB032093AA032091BA023091BB02AE
+:104650002115310541F42DB73EB74091B602509176
+:10466000B702241B350BE091AA03F091AB03E217CC
+:10467000F307A0F42E1B3F0B2817390778F0AC0185
+:104680004E5F5F4F2417350748F04E0F5F1F509362
+:10469000AB034093AA038193919302C0E0E0F0E062
+:1046A000CF01DF91CF910895CF93DF93009709F465
+:1046B00091C0FC013297138212826091AC03709119
+:1046C000AD036115710581F420813181280F391FF7
+:1046D0008091AA039091AB038217930799F5F09309
+:1046E000AB03E093AA0376C0DB0180E090E002C058
+:1046F000CD01D901AE17BF0748F412962D913C9118
+:10470000139721153105A1F7CD0121C0B383A283F1
+:10471000EF01499159919E01240F351FA217B3074C
+:1047200079F42D913C911197240F351F2E5F3F4F47
+:104730003183208312962D913C91139733832283EA
+:10474000009729F4F093AD03E093AC0343C0DC0180
+:104750001396FC93EE9312974D915D91A40FB51FA4
+:10476000EA17FB0769F420813181240F351F2E5F82
+:104770003F4FEC0139832883228133813B832A8395
+:10478000E0E0F0E002C0FB01BC01DB0112968D917C
+:104790009C9113970097B9F79B012E5F3F4F8D9126
+:1047A0009C911197820F931F4091AA035091AB03E4
+:1047B0004817590779F4309729F41092AD031092F5
+:1047C000AC0302C013821282225030403093AB03FC
+:1047D0002093AA03DF91CF910895A0E0B0E0E3EF2A
+:1047E000F3E20C948522EC01688179818A819B81B6
+:1047F000611571058105910521F464E279ED8BE580
+:1048000097E02DE133EF41E050E00E944E22790124
+:104810008A0127EA31E440E050E00E94FA215B017E
+:104820006C01C801B7012CEE34EF4FEF5FEF0E942F
+:10483000FA219B01AC012A0D3B1D4C1D5D1D57FF4C
+:1048400004C02150304040405048288339834A8377
+:104850005B835F77B901CA01CDB7DEB7EAE00C949C
+:10486000A1220E94ED2308958CEB92E00E94ED239B
+:1048700008956093BC027093BD028093BE02909332
+:10488000BF020895A0E0B0E0E8E4F4E20C948322D3
+:104890008C01CB010115110529F40E94BA22082FC1
+:1048A000192FB5C0D80112979801260F371F2A1764
+:1048B0003B0708F4AAC0ED90FC901197E616F706A6
+:1048C000D0F045E0E416F10408F4A1C0A70144507B
+:1048D00050404617570708F49AC0A701425050406D
+:1048E000461B570BF901419351936D937C93CF0174
+:1048F0000E9454238CC05B01AE18BF0848018E0C87
+:104900009F1CE091AC03F091AD03CC24DD24C0E00A
+:10491000D0E041C0E815F90599F560817181AB01DE
+:104920004E5F5F4F4A155B0558F1AB014A195B09B1
+:10493000CC24DD246894C1F8C40ED51E8280A380E7
+:10494000E5E0CE16D10448F0F9018282A3825183BA
+:10495000408311969C938E9309C0C7010296860FDF
+:10496000971F11969C938E93E82DFA2D209719F09E
+:10497000FB83EA834CC0F093AD03E093AC0347C0E4
+:1049800040815181C416D50608F46A01EF015281B5
+:104990004381E52FF42F309709F0BCCF4091AA0353
+:1049A0005091AB0348155905E9F4C816D906D0F45F
+:1049B0004091BA025091BB024115510541F44DB7E7
+:1049C0005EB76091B6027091B702461B570B241771
+:1049D0003507D8F43093AB032093AA0311969C9328
+:1049E0008E9315C00E94BA22C82EE6016E01D92E00
+:1049F000E601209751F08C2DB801A7010E9459259E
+:104A0000C8010E945423860102C000E010E0C801E2
+:104A1000CDB7DEB7ECE00C949F221F93FC019927E1
+:104A20008827BC01E89411911032E9F3193010F095
+:104A30001E30C8F31B3251F01D3249F4689406C091
+:104A40000E942626610F711D811D911D1191105329
+:104A50001A30B0F33EF490958095709561957F4F34
+:104A60008F4F9F4F1F910895911140C1803219F0CF
+:104A700089508550D0F708959111089581548A5135
+:104A800008F4805E855A08959111089581568A51DF
+:104A900008F4805285580895FB01DC0104C08D9113
+:104AA0000190801921F441505040C8F7881B990BA0
+:104AB0000895FB01DC0102C001900D92415050406D
+:104AC000D8F708956817790768F4FB01DC01E40F53
+:104AD000F51FA40FB51F02C002900E924150504026
+:104AE000D8F708950C945925FC018191861721F07F
+:104AF0008823D9F7992708953197CF010895FB01AD
+:104B0000DC018D91019080190110D9F3990B089562
+:104B1000FB01DC0101900D920020E1F70895FB01FB
+:104B2000DC014150504030F08D910190801919F412
+:104B30000020B9F7881B990B0895FB01DC01415057
+:104B4000504048F001900D920020C9F701C01D921D
+:104B500041505040E0F70895FC0181E090E0019061
+:104B6000061609F4CF010020D1F701970895FB0143
+:104B700051915523A9F0BF01DC014D914517411119
+:104B8000E1F759F4CD010190002049F04D91401515
+:104B90004111C9F3FB014111EFCF81E090E0019792
+:104BA0000895FB019F01E8944230C4F04532B4F40B
+:104BB0004A3029F497FB1EF4909581959F4F642FFE
+:104BC00077270E946922805D8A330CF0895D81938A
+:104BD000CB010097A1F716F45DE251931082C90151
+:104BE0000C947926FA01CF93FF93EF93223044F18E
+:104BF000253234F5C22FE894CA3049F497FB3EF4CD
+:104C000090958095709561957F4F8F4F9F4F2C2F7A
+:104C1000332744275527FF93EF930E942C22EF91CF
+:104C2000FF91605D6A330CF0695D6193B901CA015F
+:104C3000605070408040904051F716F4CDE2C1932F
+:104C400010828F919F91CF910C947926592F482FE4
+:104C5000372F262F660F771F881F991F660F771F24
+:104C6000881F991F620F731F841F951F660F771F80
+:104C7000881F991F0895FA01CF93FF93EF93223075
+:104C8000CCF02532BCF4C22F2C2F332744275527D4
+:104C9000FF93EF930E942C22EF91FF91605D6A33A6
+:104CA0000CF0695D6193B901CA01605070408040A9
+:104CB000904051F710828F919F91CF910C9479265B
+:104CC000FB019F01423074F0453264F4642F772772
+:104CD0000E946922805D8A330CF0895D8193CB014B
+:104CE0000097A1F71082C9010C947926992788278B
+:104CF0000895DC01FC01672F71917723E1F732976A
+:104D000004C07C916D9370836291AE17BF07C8F3A6
+:064D10000895F894FFCFA6
+:104D16000D0A2B494E513D310D0A000D0A2B5354F5
+:104D2600574D4F443D300D0A000D0A2B53544E414A
+:104D36003D4164617074696373456C65637469634E
+:104D46000D0A000D0A2B53544F4155543D310D0A9F
+:104D5600000D0A2B53544155544F3D300D0A000D9A
+:104D66000A202B535450494E3D303030300D0A0046
+:104D76000D0A2B4C4F53535245434F4E4E3D300D6B
+:104D86000A0007F0000000000078034E06130342F5
+:104D9600032603640300000000C1174E06C117C1B5
+:104DA60017C117C11700000000A60500000000C1CA
+:104DB600172E0000000000C1174E06FF000100007C
+:104DC60000000000000000010202030303030404C4
+:104DD6000404040404040505050505050505050583
+:104DE6000505050505050606060606060606060663
+:104DF600060606060606060606060606060606064D
+:104E06000606060606060707070707070707070732
+:104E1600070707070707070707070707070707071C
+:104E2600070707070707070707070707070707070C
+:104E360007070707070707070707070707070707FC
+:104E460007070707070708080808080808080808E2
+:104E560008080808080808080808080808080808CC
+:104E660008080808080808080808080808080808BC
+:104E760008080808080808080808080808080808AC
+:104E8600080808080808080808080808080808089C
+:104E9600080808080808080808080808080808088C
+:104EA600080808080808080808080808080808087C
+:104EB600080808080808080808080808080808086C
+:104EC6000808080808082000AE03000001000000DA
+:00000001FF
diff --git a/ESS1995test_328p/bin/Release/ESS1995test_328p.elf.lss b/ESS1995test_328p/bin/Release/ESS1995test_328p.elf.lss new file mode 100644 index 0000000..542aa8a --- /dev/null +++ b/ESS1995test_328p/bin/Release/ESS1995test_328p.elf.lss @@ -0,0 +1,9698 @@ + +bin/Release/ESS1995test_328p.elf: file format elf32-avr + +Sections: +Idx Name Size VMA LMA File off Algn + 0 .data 000001c0 00800100 00004d16 00004daa 2**0 + CONTENTS, ALLOC, LOAD, DATA + 1 .text 00004d16 00000000 00000000 00000094 2**1 + CONTENTS, ALLOC, LOAD, READONLY, CODE + 2 .bss 000000ee 008002c0 008002c0 00004f6a 2**0 + ALLOC + 3 .stab 00002928 00000000 00000000 00004f6c 2**2 + CONTENTS, READONLY, DEBUGGING + 4 .stabstr 00000d28 00000000 00000000 00007894 2**0 + CONTENTS, READONLY, DEBUGGING + +Disassembly of section .text: + +00000000 <__vectors>: + 0: 0c 94 64 00 jmp 0xc8 ; 0xc8 <__ctors_end> + 4: 0c 94 ab 0e jmp 0x1d56 ; 0x1d56 <__vector_1> + 8: 0c 94 d8 0e jmp 0x1db0 ; 0x1db0 <__vector_2> + c: 0c 94 8c 00 jmp 0x118 ; 0x118 <__bad_interrupt> + 10: 0c 94 8c 00 jmp 0x118 ; 0x118 <__bad_interrupt> + 14: 0c 94 8c 00 jmp 0x118 ; 0x118 <__bad_interrupt> + 18: 0c 94 8c 00 jmp 0x118 ; 0x118 <__bad_interrupt> + 1c: 0c 94 1f 0e jmp 0x1c3e ; 0x1c3e <__vector_7> + 20: 0c 94 8c 00 jmp 0x118 ; 0x118 <__bad_interrupt> + 24: 0c 94 8c 00 jmp 0x118 ; 0x118 <__bad_interrupt> + 28: 0c 94 8c 00 jmp 0x118 ; 0x118 <__bad_interrupt> + 2c: 0c 94 8c 00 jmp 0x118 ; 0x118 <__bad_interrupt> + 30: 0c 94 8c 00 jmp 0x118 ; 0x118 <__bad_interrupt> + 34: 0c 94 8c 00 jmp 0x118 ; 0x118 <__bad_interrupt> + 38: 0c 94 8c 00 jmp 0x118 ; 0x118 <__bad_interrupt> + 3c: 0c 94 8c 00 jmp 0x118 ; 0x118 <__bad_interrupt> + 40: 0c 94 c2 17 jmp 0x2f84 ; 0x2f84 <__vector_16> + 44: 0c 94 8c 00 jmp 0x118 ; 0x118 <__bad_interrupt> + 48: 0c 94 cc 03 jmp 0x798 ; 0x798 <__vector_18> + 4c: 0c 94 fd 03 jmp 0x7fa ; 0x7fa <__vector_19> + 50: 0c 94 8c 00 jmp 0x118 ; 0x118 <__bad_interrupt> + 54: 0c 94 8c 00 jmp 0x118 ; 0x118 <__bad_interrupt> + 58: 0c 94 8c 00 jmp 0x118 ; 0x118 <__bad_interrupt> + 5c: 0c 94 8c 00 jmp 0x118 ; 0x118 <__bad_interrupt> + 60: 0c 94 8c 00 jmp 0x118 ; 0x118 <__bad_interrupt> + 64: 0c 94 8c 00 jmp 0x118 ; 0x118 <__bad_interrupt> + +00000068 <_ZL21tone_pin_to_timer_PGM>: + 68: 02 . + +00000069 <port_to_mode_PGM>: + 69: 00 00 00 00 24 00 27 00 2a 00 ....$.'.*. + +00000073 <port_to_output_PGM>: + 73: 00 00 00 00 25 00 28 00 2b 00 ....%.(.+. + +0000007d <port_to_input_PGM>: + 7d: 00 00 00 00 23 00 26 00 29 00 ....#.&.). + +00000087 <digital_pin_to_port_PGM>: + 87: 04 04 04 04 04 04 04 04 02 02 02 02 02 02 03 03 ................ + 97: 03 03 03 03 .... + +0000009b <digital_pin_to_bit_mask_PGM>: + 9b: 01 02 04 08 10 20 40 80 01 02 04 08 10 20 01 02 ..... @...... .. + ab: 04 08 10 20 ... + +000000af <digital_pin_to_timer_PGM>: + af: 00 00 00 07 00 02 01 00 00 03 04 06 00 00 00 00 ................ + bf: 00 00 00 00 00 ..... + +000000c4 <__ctors_start>: + c4: 69 05 cpc r22, r9 + c6: 3f 06 cpc r3, r31 + +000000c8 <__ctors_end>: + c8: 11 24 eor r1, r1 + ca: 1f be out 0x3f, r1 ; 63 + cc: cf ef ldi r28, 0xFF ; 255 + ce: d8 e0 ldi r29, 0x08 ; 8 + d0: de bf out 0x3e, r29 ; 62 + d2: cd bf out 0x3d, r28 ; 61 + +000000d4 <__do_copy_data>: + d4: 12 e0 ldi r17, 0x02 ; 2 + d6: a0 e0 ldi r26, 0x00 ; 0 + d8: b1 e0 ldi r27, 0x01 ; 1 + da: e6 e1 ldi r30, 0x16 ; 22 + dc: fd e4 ldi r31, 0x4D ; 77 + de: 02 c0 rjmp .+4 ; 0xe4 <__do_copy_data+0x10> + e0: 05 90 lpm r0, Z+ + e2: 0d 92 st X+, r0 + e4: a0 3c cpi r26, 0xC0 ; 192 + e6: b1 07 cpc r27, r17 + e8: d9 f7 brne .-10 ; 0xe0 <__do_copy_data+0xc> + +000000ea <__do_clear_bss>: + ea: 13 e0 ldi r17, 0x03 ; 3 + ec: a0 ec ldi r26, 0xC0 ; 192 + ee: b2 e0 ldi r27, 0x02 ; 2 + f0: 01 c0 rjmp .+2 ; 0xf4 <.do_clear_bss_start> + +000000f2 <.do_clear_bss_loop>: + f2: 1d 92 st X+, r1 + +000000f4 <.do_clear_bss_start>: + f4: ae 3a cpi r26, 0xAE ; 174 + f6: b1 07 cpc r27, r17 + f8: e1 f7 brne .-8 ; 0xf2 <.do_clear_bss_loop> + +000000fa <__do_global_ctors>: + fa: 10 e0 ldi r17, 0x00 ; 0 + fc: c8 ec ldi r28, 0xC8 ; 200 + fe: d0 e0 ldi r29, 0x00 ; 0 + 100: 04 c0 rjmp .+8 ; 0x10a <__do_global_ctors+0x10> + 102: 22 97 sbiw r28, 0x02 ; 2 + 104: fe 01 movw r30, r28 + 106: 0e 94 b6 22 call 0x456c ; 0x456c <__tablejump__> + 10a: c4 3c cpi r28, 0xC4 ; 196 + 10c: d1 07 cpc r29, r17 + 10e: c9 f7 brne .-14 ; 0x102 <__do_global_ctors+0x8> + 110: 0e 94 ef 01 call 0x3de ; 0x3de <main> + 114: 0c 94 89 26 jmp 0x4d12 ; 0x4d12 <_exit> + +00000118 <__bad_interrupt>: + 118: 0c 94 00 00 jmp 0 ; 0x0 <__vectors> + +0000011c <_Z9advertisev>: + 11c: cf 93 push r28 + 11e: df 93 push r29 + 120: 60 ed ldi r22, 0xD0 ; 208 + 122: 77 e0 ldi r23, 0x07 ; 7 + 124: 80 e0 ldi r24, 0x00 ; 0 + 126: 90 e0 ldi r25, 0x00 ; 0 + 128: 0e 94 4a 18 call 0x3094 ; 0x3094 <delay> + 12c: c2 e6 ldi r28, 0x62 ; 98 + 12e: d3 e0 ldi r29, 0x03 ; 3 + 130: ce 01 movw r24, r28 + 132: 60 e0 ldi r22, 0x00 ; 0 + 134: 71 e0 ldi r23, 0x01 ; 1 + 136: 0e 94 df 06 call 0xdbe ; 0xdbe <_ZN5Print5printEPKc> + 13a: 60 ed ldi r22, 0xD0 ; 208 + 13c: 77 e0 ldi r23, 0x07 ; 7 + 13e: 80 e0 ldi r24, 0x00 ; 0 + 140: 90 e0 ldi r25, 0x00 ; 0 + 142: 0e 94 4a 18 call 0x3094 ; 0x3094 <delay> + 146: ce 01 movw r24, r28 + 148: 0e 94 64 03 call 0x6c8 ; 0x6c8 <_ZN14HardwareSerial5flushEv> + 14c: df 91 pop r29 + 14e: cf 91 pop r28 + 150: 08 95 ret + +00000152 <_Z14setupBlueToothv>: + 152: cf 93 push r28 + 154: df 93 push r29 + 156: 86 e0 ldi r24, 0x06 ; 6 + 158: 60 e0 ldi r22, 0x00 ; 0 + 15a: 0e 94 67 19 call 0x32ce ; 0x32ce <pinMode> + 15e: c2 e6 ldi r28, 0x62 ; 98 + 160: d3 e0 ldi r29, 0x03 ; 3 + 162: ce 01 movw r24, r28 + 164: 40 e0 ldi r20, 0x00 ; 0 + 166: 56 e9 ldi r21, 0x96 ; 150 + 168: 60 e0 ldi r22, 0x00 ; 0 + 16a: 70 e0 ldi r23, 0x00 ; 0 + 16c: 0e 94 83 04 call 0x906 ; 0x906 <_ZN14HardwareSerial5beginEm> + 170: ce 01 movw r24, r28 + 172: 6b e0 ldi r22, 0x0B ; 11 + 174: 71 e0 ldi r23, 0x01 ; 1 + 176: 0e 94 df 06 call 0xdbe ; 0xdbe <_ZN5Print5printEPKc> + 17a: ce 01 movw r24, r28 + 17c: 69 e1 ldi r22, 0x19 ; 25 + 17e: 71 e0 ldi r23, 0x01 ; 1 + 180: 0e 94 df 06 call 0xdbe ; 0xdbe <_ZN5Print5printEPKc> + 184: ce 01 movw r24, r28 + 186: 63 e3 ldi r22, 0x33 ; 51 + 188: 71 e0 ldi r23, 0x01 ; 1 + 18a: 0e 94 df 06 call 0xdbe ; 0xdbe <_ZN5Print5printEPKc> + 18e: ce 01 movw r24, r28 + 190: 61 e4 ldi r22, 0x41 ; 65 + 192: 71 e0 ldi r23, 0x01 ; 1 + 194: 0e 94 df 06 call 0xdbe ; 0xdbe <_ZN5Print5printEPKc> + 198: ce 01 movw r24, r28 + 19a: 6f e4 ldi r22, 0x4F ; 79 + 19c: 71 e0 ldi r23, 0x01 ; 1 + 19e: 0e 94 df 06 call 0xdbe ; 0xdbe <_ZN5Print5printEPKc> + 1a2: ce 01 movw r24, r28 + 1a4: 60 e6 ldi r22, 0x60 ; 96 + 1a6: 71 e0 ldi r23, 0x01 ; 1 + 1a8: 0e 94 df 06 call 0xdbe ; 0xdbe <_ZN5Print5printEPKc> + 1ac: 0e 94 8e 00 call 0x11c ; 0x11c <_Z9advertisev> + 1b0: df 91 pop r29 + 1b2: cf 91 pop r28 + 1b4: 08 95 ret + +000001b6 <_Z10startWritev>: + 1b6: 84 e0 ldi r24, 0x04 ; 4 + 1b8: 61 e0 ldi r22, 0x01 ; 1 + 1ba: 0e 94 67 19 call 0x32ce ; 0x32ce <pinMode> + 1be: 83 e0 ldi r24, 0x03 ; 3 + 1c0: 61 e0 ldi r22, 0x01 ; 1 + 1c2: 0e 94 8b 19 call 0x3316 ; 0x3316 <digitalWrite> + 1c6: 08 95 ret + +000001c8 <_Z9startReadv>: + 1c8: 84 e0 ldi r24, 0x04 ; 4 + 1ca: 60 e0 ldi r22, 0x00 ; 0 + 1cc: 0e 94 67 19 call 0x32ce ; 0x32ce <pinMode> + 1d0: 83 e0 ldi r24, 0x03 ; 3 + 1d2: 61 e0 ldi r22, 0x01 ; 1 + 1d4: 0e 94 8b 19 call 0x3316 ; 0x3316 <digitalWrite> + 1d8: 08 95 ret + +000001da <_Z11SCLKcycle_Wv>: + 1da: 8a e0 ldi r24, 0x0A ; 10 + 1dc: 90 e0 ldi r25, 0x00 ; 0 + 1de: 0e 94 71 18 call 0x30e2 ; 0x30e2 <delayMicroseconds> + 1e2: 83 e0 ldi r24, 0x03 ; 3 + 1e4: 61 e0 ldi r22, 0x01 ; 1 + 1e6: 0e 94 8b 19 call 0x3316 ; 0x3316 <digitalWrite> + 1ea: 84 e1 ldi r24, 0x14 ; 20 + 1ec: 90 e0 ldi r25, 0x00 ; 0 + 1ee: 0e 94 71 18 call 0x30e2 ; 0x30e2 <delayMicroseconds> + 1f2: 83 e0 ldi r24, 0x03 ; 3 + 1f4: 60 e0 ldi r22, 0x00 ; 0 + 1f6: 0e 94 8b 19 call 0x3316 ; 0x3316 <digitalWrite> + 1fa: 8a e0 ldi r24, 0x0A ; 10 + 1fc: 90 e0 ldi r25, 0x00 ; 0 + 1fe: 0e 94 71 18 call 0x30e2 ; 0x30e2 <delayMicroseconds> + 202: 08 95 ret + +00000204 <_Z11SCLKcycle_Rv>: + 204: 8a e0 ldi r24, 0x0A ; 10 + 206: 90 e0 ldi r25, 0x00 ; 0 + 208: 0e 94 71 18 call 0x30e2 ; 0x30e2 <delayMicroseconds> + 20c: 83 e0 ldi r24, 0x03 ; 3 + 20e: 60 e0 ldi r22, 0x00 ; 0 + 210: 0e 94 8b 19 call 0x3316 ; 0x3316 <digitalWrite> + 214: 84 e1 ldi r24, 0x14 ; 20 + 216: 90 e0 ldi r25, 0x00 ; 0 + 218: 0e 94 71 18 call 0x30e2 ; 0x30e2 <delayMicroseconds> + 21c: 83 e0 ldi r24, 0x03 ; 3 + 21e: 61 e0 ldi r22, 0x01 ; 1 + 220: 0e 94 8b 19 call 0x3316 ; 0x3316 <digitalWrite> + 224: 8a e0 ldi r24, 0x0A ; 10 + 226: 90 e0 ldi r25, 0x00 ; 0 + 228: 0e 94 71 18 call 0x30e2 ; 0x30e2 <delayMicroseconds> + 22c: 08 95 ret + +0000022e <_Z9writeByteh>: + 22e: 1f 93 push r17 + 230: cf 93 push r28 + 232: df 93 push r29 + 234: 17 e0 ldi r17, 0x07 ; 7 + 236: c8 2f mov r28, r24 + 238: d0 e0 ldi r29, 0x00 ; 0 + 23a: be 01 movw r22, r28 + 23c: 01 2e mov r0, r17 + 23e: 02 c0 rjmp .+4 ; 0x244 <_Z9writeByteh+0x16> + 240: 75 95 asr r23 + 242: 67 95 ror r22 + 244: 0a 94 dec r0 + 246: e2 f7 brpl .-8 ; 0x240 <_Z9writeByteh+0x12> + 248: 61 70 andi r22, 0x01 ; 1 + 24a: 84 e0 ldi r24, 0x04 ; 4 + 24c: 0e 94 8b 19 call 0x3316 ; 0x3316 <digitalWrite> + 250: 0e 94 ed 00 call 0x1da ; 0x1da <_Z11SCLKcycle_Wv> + 254: 11 50 subi r17, 0x01 ; 1 + 256: 88 f7 brcc .-30 ; 0x23a <_Z9writeByteh+0xc> + 258: 84 e0 ldi r24, 0x04 ; 4 + 25a: 61 e0 ldi r22, 0x01 ; 1 + 25c: 0e 94 8b 19 call 0x3316 ; 0x3316 <digitalWrite> + 260: 0e 94 ed 00 call 0x1da ; 0x1da <_Z11SCLKcycle_Wv> + 264: df 91 pop r29 + 266: cf 91 pop r28 + 268: 1f 91 pop r17 + 26a: 08 95 ret + +0000026c <_Z12writeStopBitv>: + 26c: 84 e0 ldi r24, 0x04 ; 4 + 26e: 60 e0 ldi r22, 0x00 ; 0 + 270: 0e 94 8b 19 call 0x3316 ; 0x3316 <digitalWrite> + 274: 8a e0 ldi r24, 0x0A ; 10 + 276: 90 e0 ldi r25, 0x00 ; 0 + 278: 0e 94 71 18 call 0x30e2 ; 0x30e2 <delayMicroseconds> + 27c: 83 e0 ldi r24, 0x03 ; 3 + 27e: 61 e0 ldi r22, 0x01 ; 1 + 280: 0e 94 8b 19 call 0x3316 ; 0x3316 <digitalWrite> + 284: 8a e0 ldi r24, 0x0A ; 10 + 286: 90 e0 ldi r25, 0x00 ; 0 + 288: 0e 94 71 18 call 0x30e2 ; 0x30e2 <delayMicroseconds> + 28c: 84 e0 ldi r24, 0x04 ; 4 + 28e: 61 e0 ldi r22, 0x01 ; 1 + 290: 0e 94 8b 19 call 0x3316 ; 0x3316 <digitalWrite> + 294: 08 95 ret + +00000296 <_Z13writeStartBitv>: + 296: 84 e0 ldi r24, 0x04 ; 4 + 298: 61 e0 ldi r22, 0x01 ; 1 + 29a: 0e 94 8b 19 call 0x3316 ; 0x3316 <digitalWrite> + 29e: 83 e0 ldi r24, 0x03 ; 3 + 2a0: 61 e0 ldi r22, 0x01 ; 1 + 2a2: 0e 94 8b 19 call 0x3316 ; 0x3316 <digitalWrite> + 2a6: 8a e0 ldi r24, 0x0A ; 10 + 2a8: 90 e0 ldi r25, 0x00 ; 0 + 2aa: 0e 94 71 18 call 0x30e2 ; 0x30e2 <delayMicroseconds> + 2ae: 84 e0 ldi r24, 0x04 ; 4 + 2b0: 60 e0 ldi r22, 0x00 ; 0 + 2b2: 0e 94 8b 19 call 0x3316 ; 0x3316 <digitalWrite> + 2b6: 8a e0 ldi r24, 0x0A ; 10 + 2b8: 90 e0 ldi r25, 0x00 ; 0 + 2ba: 0e 94 71 18 call 0x30e2 ; 0x30e2 <delayMicroseconds> + 2be: 83 e0 ldi r24, 0x03 ; 3 + 2c0: 60 e0 ldi r22, 0x00 ; 0 + 2c2: 0e 94 8b 19 call 0x3316 ; 0x3316 <digitalWrite> + 2c6: 8a e0 ldi r24, 0x0A ; 10 + 2c8: 90 e0 ldi r25, 0x00 ; 0 + 2ca: 0e 94 71 18 call 0x30e2 ; 0x30e2 <delayMicroseconds> + 2ce: 08 95 ret + +000002d0 <_Z8readBytev>: + 2d0: 0f 93 push r16 + 2d2: 1f 93 push r17 + 2d4: 8a e0 ldi r24, 0x0A ; 10 + 2d6: 90 e0 ldi r25, 0x00 ; 0 + 2d8: 0e 94 71 18 call 0x30e2 ; 0x30e2 <delayMicroseconds> + 2dc: 17 e0 ldi r17, 0x07 ; 7 + 2de: 00 e0 ldi r16, 0x00 ; 0 + 2e0: 84 e0 ldi r24, 0x04 ; 4 + 2e2: 0e 94 c3 19 call 0x3386 ; 0x3386 <digitalRead> + 2e6: 68 2f mov r22, r24 + 2e8: 28 2f mov r18, r24 + 2ea: 30 e0 ldi r19, 0x00 ; 0 + 2ec: 01 2e mov r0, r17 + 2ee: 02 c0 rjmp .+4 ; 0x2f4 <_Z8readBytev+0x24> + 2f0: 22 0f add r18, r18 + 2f2: 33 1f adc r19, r19 + 2f4: 0a 94 dec r0 + 2f6: e2 f7 brpl .-8 ; 0x2f0 <_Z8readBytev+0x20> + 2f8: 02 2b or r16, r18 + 2fa: 8c e0 ldi r24, 0x0C ; 12 + 2fc: 0e 94 8b 19 call 0x3316 ; 0x3316 <digitalWrite> + 300: 0e 94 02 01 call 0x204 ; 0x204 <_Z11SCLKcycle_Rv> + 304: 11 50 subi r17, 0x01 ; 1 + 306: 60 f7 brcc .-40 ; 0x2e0 <_Z8readBytev+0x10> + 308: 0e 94 02 01 call 0x204 ; 0x204 <_Z11SCLKcycle_Rv> + 30c: 80 2f mov r24, r16 + 30e: 1f 91 pop r17 + 310: 0f 91 pop r16 + 312: 08 95 ret + +00000314 <_Z8writeDMMv>: + 314: ef 92 push r14 + 316: ff 92 push r15 + 318: 0f 93 push r16 + 31a: 1f 93 push r17 + 31c: 80 91 cb 02 lds r24, 0x02CB + 320: 87 95 ror r24 + 322: 88 27 eor r24, r24 + 324: 87 95 ror r24 + 326: 00 91 cc 02 lds r16, 0x02CC + 32a: 00 0f add r16, r16 + 32c: 00 0f add r16, r16 + 32e: 00 0f add r16, r16 + 330: 08 2b or r16, r24 + 332: 80 91 cd 02 lds r24, 0x02CD + 336: 08 2b or r16, r24 + 338: 80 91 cf 02 lds r24, 0x02CF + 33c: 82 95 swap r24 + 33e: 88 0f add r24, r24 + 340: 80 7e andi r24, 0xE0 ; 224 + 342: 10 91 d0 02 lds r17, 0x02D0 + 346: 11 0f add r17, r17 + 348: 11 0f add r17, r17 + 34a: 11 0f add r17, r17 + 34c: 18 2b or r17, r24 + 34e: 80 91 ce 02 lds r24, 0x02CE + 352: 18 2b or r17, r24 + 354: 90 91 d1 02 lds r25, 0x02D1 + 358: 97 95 ror r25 + 35a: 99 27 eor r25, r25 + 35c: 97 95 ror r25 + 35e: 80 91 d5 02 lds r24, 0x02D5 + 362: 82 95 swap r24 + 364: 80 7f andi r24, 0xF0 ; 240 + 366: 89 2b or r24, r25 + 368: 90 91 d7 02 lds r25, 0x02D7 + 36c: 89 2b or r24, r25 + 36e: 90 91 d9 02 lds r25, 0x02D9 + 372: 99 0f add r25, r25 + 374: 99 0f add r25, r25 + 376: 99 0f add r25, r25 + 378: 98 2b or r25, r24 + 37a: e0 90 d4 02 lds r14, 0x02D4 + 37e: ee 0c add r14, r14 + 380: e9 2a or r14, r25 + 382: 90 91 d2 02 lds r25, 0x02D2 + 386: 97 95 ror r25 + 388: 99 27 eor r25, r25 + 38a: 97 95 ror r25 + 38c: 80 91 d3 02 lds r24, 0x02D3 + 390: 82 95 swap r24 + 392: 88 0f add r24, r24 + 394: 88 0f add r24, r24 + 396: 80 7c andi r24, 0xC0 ; 192 + 398: 89 2b or r24, r25 + 39a: 90 91 d8 02 lds r25, 0x02D8 + 39e: 89 2b or r24, r25 + 3a0: f0 90 d6 02 lds r15, 0x02D6 + 3a4: ff 0c add r15, r15 + 3a6: ff 0c add r15, r15 + 3a8: f8 2a or r15, r24 + 3aa: 0e 94 db 00 call 0x1b6 ; 0x1b6 <_Z10startWritev> + 3ae: 0e 94 4b 01 call 0x296 ; 0x296 <_Z13writeStartBitv> + 3b2: 88 ec ldi r24, 0xC8 ; 200 + 3b4: 0e 94 17 01 call 0x22e ; 0x22e <_Z9writeByteh> + 3b8: 80 2f mov r24, r16 + 3ba: 0e 94 17 01 call 0x22e ; 0x22e <_Z9writeByteh> + 3be: 81 2f mov r24, r17 + 3c0: 0e 94 17 01 call 0x22e ; 0x22e <_Z9writeByteh> + 3c4: 8e 2d mov r24, r14 + 3c6: 0e 94 17 01 call 0x22e ; 0x22e <_Z9writeByteh> + 3ca: 8f 2d mov r24, r15 + 3cc: 0e 94 17 01 call 0x22e ; 0x22e <_Z9writeByteh> + 3d0: 0e 94 36 01 call 0x26c ; 0x26c <_Z12writeStopBitv> + 3d4: 1f 91 pop r17 + 3d6: 0f 91 pop r16 + 3d8: ff 90 pop r15 + 3da: ef 90 pop r14 + 3dc: 08 95 ret + +000003de <main>: + 3de: 8f 92 push r8 + 3e0: 9f 92 push r9 + 3e2: af 92 push r10 + 3e4: bf 92 push r11 + 3e6: cf 92 push r12 + 3e8: df 92 push r13 + 3ea: ef 92 push r14 + 3ec: ff 92 push r15 + 3ee: 0f 93 push r16 + 3f0: 1f 93 push r17 + 3f2: df 93 push r29 + 3f4: cf 93 push r28 + 3f6: cd b7 in r28, 0x3d ; 61 + 3f8: de b7 in r29, 0x3e ; 62 + 3fa: 27 97 sbiw r28, 0x07 ; 7 + 3fc: 0f b6 in r0, 0x3f ; 63 + 3fe: f8 94 cli + 400: de bf out 0x3e, r29 ; 62 + 402: 0f be out 0x3f, r0 ; 63 + 404: cd bf out 0x3d, r28 ; 61 + 406: 0e 94 7b 18 call 0x30f6 ; 0x30f6 <init> + 40a: 85 e0 ldi r24, 0x05 ; 5 + 40c: 61 e0 ldi r22, 0x01 ; 1 + 40e: 0e 94 67 19 call 0x32ce ; 0x32ce <pinMode> + 412: 85 e0 ldi r24, 0x05 ; 5 + 414: 60 e0 ldi r22, 0x00 ; 0 + 416: 0e 94 8b 19 call 0x3316 ; 0x3316 <digitalWrite> + 41a: 0e 94 a9 00 call 0x152 ; 0x152 <_Z14setupBlueToothv> + 41e: 82 e0 ldi r24, 0x02 ; 2 + 420: 60 e0 ldi r22, 0x00 ; 0 + 422: 0e 94 67 19 call 0x32ce ; 0x32ce <pinMode> + 426: 83 e0 ldi r24, 0x03 ; 3 + 428: 61 e0 ldi r22, 0x01 ; 1 + 42a: 0e 94 67 19 call 0x32ce ; 0x32ce <pinMode> + 42e: 86 e0 ldi r24, 0x06 ; 6 + 430: 60 e0 ldi r22, 0x00 ; 0 + 432: 0e 94 67 19 call 0x32ce ; 0x32ce <pinMode> + 436: 8c e0 ldi r24, 0x0C ; 12 + 438: 61 e0 ldi r22, 0x01 ; 1 + 43a: 0e 94 67 19 call 0x32ce ; 0x32ce <pinMode> + 43e: 8d e0 ldi r24, 0x0D ; 13 + 440: 61 e0 ldi r22, 0x01 ; 1 + 442: 0e 94 67 19 call 0x32ce ; 0x32ce <pinMode> + 446: 8d e0 ldi r24, 0x0D ; 13 + 448: 61 e0 ldi r22, 0x01 ; 1 + 44a: 0e 94 8b 19 call 0x3316 ; 0x3316 <digitalWrite> + 44e: 85 e0 ldi r24, 0x05 ; 5 + 450: 61 e0 ldi r22, 0x01 ; 1 + 452: 0e 94 8b 19 call 0x3316 ; 0x3316 <digitalWrite> + 456: 6a ef ldi r22, 0xFA ; 250 + 458: 70 e0 ldi r23, 0x00 ; 0 + 45a: 80 e0 ldi r24, 0x00 ; 0 + 45c: 90 e0 ldi r25, 0x00 ; 0 + 45e: 0e 94 4a 18 call 0x3094 ; 0x3094 <delay> + 462: 0e 94 8a 01 call 0x314 ; 0x314 <_Z8writeDMMv> + 466: 0a ef ldi r16, 0xFA ; 250 + 468: 10 e0 ldi r17, 0x00 ; 0 + 46a: 7e 01 movw r14, r28 + 46c: 08 94 sec + 46e: e1 1c adc r14, r1 + 470: f1 1c adc r15, r1 + 472: a4 e0 ldi r26, 0x04 ; 4 + 474: aa 2e mov r10, r26 + 476: b1 2c mov r11, r1 + 478: ac 0e add r10, r28 + 47a: bd 1e adc r11, r29 + 47c: f2 e0 ldi r31, 0x02 ; 2 + 47e: 8f 2e mov r8, r31 + 480: 91 2c mov r9, r1 + 482: 8c 0e add r8, r28 + 484: 9d 1e adc r9, r29 + 486: 82 e0 ldi r24, 0x02 ; 2 + 488: 0e 94 c3 19 call 0x3386 ; 0x3386 <digitalRead> + 48c: 81 30 cpi r24, 0x01 ; 1 + 48e: 91 05 cpc r25, r1 + 490: 09 f0 breq .+2 ; 0x494 <main+0xb6> + 492: bb c0 rjmp .+374 ; 0x60a <main+0x22c> + 494: 8c e0 ldi r24, 0x0C ; 12 + 496: 61 e0 ldi r22, 0x01 ; 1 + 498: 0e 94 8b 19 call 0x3316 ; 0x3316 <digitalWrite> + 49c: 8d e0 ldi r24, 0x0D ; 13 + 49e: 60 e0 ldi r22, 0x00 ; 0 + 4a0: 0e 94 8b 19 call 0x3316 ; 0x3316 <digitalWrite> + 4a4: 0e 94 db 00 call 0x1b6 ; 0x1b6 <_Z10startWritev> + 4a8: 0e 94 4b 01 call 0x296 ; 0x296 <_Z13writeStartBitv> + 4ac: 89 ec ldi r24, 0xC9 ; 201 + 4ae: 0e 94 17 01 call 0x22e ; 0x22e <_Z9writeByteh> + 4b2: 82 e0 ldi r24, 0x02 ; 2 + 4b4: 0e 94 c3 19 call 0x3386 ; 0x3386 <digitalRead> + 4b8: 00 97 sbiw r24, 0x00 ; 0 + 4ba: 09 f0 breq .+2 ; 0x4be <main+0xe0> + 4bc: a6 c0 rjmp .+332 ; 0x60a <main+0x22c> + 4be: 8d e0 ldi r24, 0x0D ; 13 + 4c0: 61 e0 ldi r22, 0x01 ; 1 + 4c2: 0e 94 8b 19 call 0x3316 ; 0x3316 <digitalWrite> + 4c6: 0e 94 e4 00 call 0x1c8 ; 0x1c8 <_Z9startReadv> + 4ca: e1 ec ldi r30, 0xC1 ; 193 + 4cc: ce 2e mov r12, r30 + 4ce: e2 e0 ldi r30, 0x02 ; 2 + 4d0: de 2e mov r13, r30 + 4d2: 0e 94 68 01 call 0x2d0 ; 0x2d0 <_Z8readBytev> + 4d6: f6 01 movw r30, r12 + 4d8: 81 93 st Z+, r24 + 4da: 6f 01 movw r12, r30 + 4dc: fb ec ldi r31, 0xCB ; 203 + 4de: cf 16 cp r12, r31 + 4e0: f2 e0 ldi r31, 0x02 ; 2 + 4e2: df 06 cpc r13, r31 + 4e4: b1 f7 brne .-20 ; 0x4d2 <main+0xf4> + 4e6: 0e 94 db 00 call 0x1b6 ; 0x1b6 <_Z10startWritev> + 4ea: 0e 94 36 01 call 0x26c ; 0x26c <_Z12writeStopBitv> + 4ee: 80 91 c1 02 lds r24, 0x02C1 + 4f2: 89 83 std Y+1, r24 ; 0x01 + 4f4: 80 91 c3 02 lds r24, 0x02C3 + 4f8: 90 e0 ldi r25, 0x00 ; 0 + 4fa: a0 e0 ldi r26, 0x00 ; 0 + 4fc: b0 e0 ldi r27, 0x00 ; 0 + 4fe: ba 2f mov r27, r26 + 500: a9 2f mov r26, r25 + 502: 98 2f mov r25, r24 + 504: 88 27 eor r24, r24 + 506: 20 91 c4 02 lds r18, 0x02C4 + 50a: 30 e0 ldi r19, 0x00 ; 0 + 50c: 40 e0 ldi r20, 0x00 ; 0 + 50e: 50 e0 ldi r21, 0x00 ; 0 + 510: 82 2b or r24, r18 + 512: 93 2b or r25, r19 + 514: a4 2b or r26, r20 + 516: b5 2b or r27, r21 + 518: 20 91 c2 02 lds r18, 0x02C2 + 51c: 30 e0 ldi r19, 0x00 ; 0 + 51e: 40 e0 ldi r20, 0x00 ; 0 + 520: 50 e0 ldi r21, 0x00 ; 0 + 522: 27 70 andi r18, 0x07 ; 7 + 524: 30 70 andi r19, 0x00 ; 0 + 526: 40 70 andi r20, 0x00 ; 0 + 528: 50 70 andi r21, 0x00 ; 0 + 52a: a9 01 movw r20, r18 + 52c: 33 27 eor r19, r19 + 52e: 22 27 eor r18, r18 + 530: 82 2b or r24, r18 + 532: 93 2b or r25, r19 + 534: a4 2b or r26, r20 + 536: b5 2b or r27, r21 + 538: 8c 83 std Y+4, r24 ; 0x04 + 53a: 9d 83 std Y+5, r25 ; 0x05 + 53c: ae 83 std Y+6, r26 ; 0x06 + 53e: bf 83 std Y+7, r27 ; 0x07 + 540: 80 91 c6 02 lds r24, 0x02C6 + 544: 82 95 swap r24 + 546: 86 95 lsr r24 + 548: 86 95 lsr r24 + 54a: 83 70 andi r24, 0x03 ; 3 + 54c: 90 e0 ldi r25, 0x00 ; 0 + 54e: 20 91 c5 02 lds r18, 0x02C5 + 552: 30 e0 ldi r19, 0x00 ; 0 + 554: 22 0f add r18, r18 + 556: 33 1f adc r19, r19 + 558: 22 0f add r18, r18 + 55a: 33 1f adc r19, r19 + 55c: 82 2b or r24, r18 + 55e: 93 2b or r25, r19 + 560: 9b 83 std Y+3, r25 ; 0x03 + 562: 8a 83 std Y+2, r24 ; 0x02 + 564: 13 c0 rjmp .+38 ; 0x58c <main+0x1ae> + 566: 82 e6 ldi r24, 0x62 ; 98 + 568: 93 e0 ldi r25, 0x03 ; 3 + 56a: 0e 94 42 03 call 0x684 ; 0x684 <_ZN14HardwareSerial4readEv> + 56e: 82 30 cpi r24, 0x02 ; 2 + 570: 29 f0 breq .+10 ; 0x57c <main+0x19e> + 572: 83 30 cpi r24, 0x03 ; 3 + 574: 31 f0 breq .+12 ; 0x582 <main+0x1a4> + 576: 81 30 cpi r24, 0x01 ; 1 + 578: 49 f4 brne .+18 ; 0x58c <main+0x1ae> + 57a: 06 c0 rjmp .+12 ; 0x588 <main+0x1aa> + 57c: 0a ef ldi r16, 0xFA ; 250 + 57e: 10 e0 ldi r17, 0x00 ; 0 + 580: 05 c0 rjmp .+10 ; 0x58c <main+0x1ae> + 582: 02 e3 ldi r16, 0x32 ; 50 + 584: 10 e0 ldi r17, 0x00 ; 0 + 586: 02 c0 rjmp .+4 ; 0x58c <main+0x1ae> + 588: 08 ee ldi r16, 0xE8 ; 232 + 58a: 13 e0 ldi r17, 0x03 ; 3 + 58c: 82 e6 ldi r24, 0x62 ; 98 + 58e: 93 e0 ldi r25, 0x03 ; 3 + 590: 0e 94 13 03 call 0x626 ; 0x626 <_ZN14HardwareSerial9availableEv> + 594: 18 16 cp r1, r24 + 596: 19 06 cpc r1, r25 + 598: 34 f3 brlt .-52 ; 0x566 <main+0x188> + 59a: 86 e0 ldi r24, 0x06 ; 6 + 59c: 0e 94 c3 19 call 0x3386 ; 0x3386 <digitalRead> + 5a0: 20 91 c0 02 lds r18, 0x02C0 + 5a4: 00 97 sbiw r24, 0x00 ; 0 + 5a6: 59 f1 breq .+86 ; 0x5fe <main+0x220> + 5a8: 22 23 and r18, r18 + 5aa: 19 f4 brne .+6 ; 0x5b2 <main+0x1d4> + 5ac: 81 e0 ldi r24, 0x01 ; 1 + 5ae: 80 93 c0 02 sts 0x02C0, r24 + 5b2: 82 e6 ldi r24, 0x62 ; 98 + 5b4: 93 e0 ldi r25, 0x03 ; 3 + 5b6: 63 e7 ldi r22, 0x73 ; 115 + 5b8: 71 e0 ldi r23, 0x01 ; 1 + 5ba: 42 e0 ldi r20, 0x02 ; 2 + 5bc: 50 e0 ldi r21, 0x00 ; 0 + 5be: 0e 94 4e 06 call 0xc9c ; 0xc9c <_ZN5Print5writeEPKhj> + 5c2: 82 e6 ldi r24, 0x62 ; 98 + 5c4: 93 e0 ldi r25, 0x03 ; 3 + 5c6: 62 e7 ldi r22, 0x72 ; 114 + 5c8: 71 e0 ldi r23, 0x01 ; 1 + 5ca: 41 e0 ldi r20, 0x01 ; 1 + 5cc: 50 e0 ldi r21, 0x00 ; 0 + 5ce: 0e 94 4e 06 call 0xc9c ; 0xc9c <_ZN5Print5writeEPKhj> + 5d2: 82 e6 ldi r24, 0x62 ; 98 + 5d4: 93 e0 ldi r25, 0x03 ; 3 + 5d6: b7 01 movw r22, r14 + 5d8: 41 e0 ldi r20, 0x01 ; 1 + 5da: 50 e0 ldi r21, 0x00 ; 0 + 5dc: 0e 94 4e 06 call 0xc9c ; 0xc9c <_ZN5Print5writeEPKhj> + 5e0: 82 e6 ldi r24, 0x62 ; 98 + 5e2: 93 e0 ldi r25, 0x03 ; 3 + 5e4: b5 01 movw r22, r10 + 5e6: 44 e0 ldi r20, 0x04 ; 4 + 5e8: 50 e0 ldi r21, 0x00 ; 0 + 5ea: 0e 94 4e 06 call 0xc9c ; 0xc9c <_ZN5Print5writeEPKhj> + 5ee: 82 e6 ldi r24, 0x62 ; 98 + 5f0: 93 e0 ldi r25, 0x03 ; 3 + 5f2: b4 01 movw r22, r8 + 5f4: 42 e0 ldi r20, 0x02 ; 2 + 5f6: 50 e0 ldi r21, 0x00 ; 0 + 5f8: 0e 94 4e 06 call 0xc9c ; 0xc9c <_ZN5Print5writeEPKhj> + 5fc: 06 c0 rjmp .+12 ; 0x60a <main+0x22c> + 5fe: 22 23 and r18, r18 + 600: 21 f0 breq .+8 ; 0x60a <main+0x22c> + 602: 0e 94 8e 00 call 0x11c ; 0x11c <_Z9advertisev> + 606: 10 92 c0 02 sts 0x02C0, r1 + 60a: b8 01 movw r22, r16 + 60c: 80 e0 ldi r24, 0x00 ; 0 + 60e: 90 e0 ldi r25, 0x00 ; 0 + 610: 0e 94 4a 18 call 0x3094 ; 0x3094 <delay> + 614: 8c e0 ldi r24, 0x0C ; 12 + 616: 60 e0 ldi r22, 0x00 ; 0 + 618: 0e 94 8b 19 call 0x3316 ; 0x3316 <digitalWrite> + 61c: 8d e0 ldi r24, 0x0D ; 13 + 61e: 60 e0 ldi r22, 0x00 ; 0 + 620: 0e 94 8b 19 call 0x3316 ; 0x3316 <digitalWrite> + 624: 30 cf rjmp .-416 ; 0x486 <main+0xa8> + +00000626 <_ZN14HardwareSerial9availableEv>: + 626: fc 01 movw r30, r24 + 628: 84 85 ldd r24, Z+12 ; 0x0c + 62a: 95 85 ldd r25, Z+13 ; 0x0d + 62c: fc 01 movw r30, r24 + 62e: e0 5c subi r30, 0xC0 ; 192 + 630: ff 4f sbci r31, 0xFF ; 255 + 632: 20 81 ld r18, Z + 634: 31 81 ldd r19, Z+1 ; 0x01 + 636: 8e 5b subi r24, 0xBE ; 190 + 638: 9f 4f sbci r25, 0xFF ; 255 + 63a: fc 01 movw r30, r24 + 63c: 80 81 ld r24, Z + 63e: 91 81 ldd r25, Z+1 ; 0x01 + 640: 28 1b sub r18, r24 + 642: 39 0b sbc r19, r25 + 644: 2f 73 andi r18, 0x3F ; 63 + 646: 30 70 andi r19, 0x00 ; 0 + 648: c9 01 movw r24, r18 + 64a: 08 95 ret + +0000064c <_ZN14HardwareSerial4peekEv>: + 64c: fc 01 movw r30, r24 + 64e: 84 85 ldd r24, Z+12 ; 0x0c + 650: 95 85 ldd r25, Z+13 ; 0x0d + 652: fc 01 movw r30, r24 + 654: e0 5c subi r30, 0xC0 ; 192 + 656: ff 4f sbci r31, 0xFF ; 255 + 658: 40 81 ld r20, Z + 65a: 51 81 ldd r21, Z+1 ; 0x01 + 65c: fc 01 movw r30, r24 + 65e: ee 5b subi r30, 0xBE ; 190 + 660: ff 4f sbci r31, 0xFF ; 255 + 662: 20 81 ld r18, Z + 664: 31 81 ldd r19, Z+1 ; 0x01 + 666: 42 17 cp r20, r18 + 668: 53 07 cpc r21, r19 + 66a: 41 f0 breq .+16 ; 0x67c <_ZN14HardwareSerial4peekEv+0x30> + 66c: 01 90 ld r0, Z+ + 66e: f0 81 ld r31, Z + 670: e0 2d mov r30, r0 + 672: e8 0f add r30, r24 + 674: f9 1f adc r31, r25 + 676: 20 81 ld r18, Z + 678: 30 e0 ldi r19, 0x00 ; 0 + 67a: 02 c0 rjmp .+4 ; 0x680 <_ZN14HardwareSerial4peekEv+0x34> + 67c: 2f ef ldi r18, 0xFF ; 255 + 67e: 3f ef ldi r19, 0xFF ; 255 + 680: c9 01 movw r24, r18 + 682: 08 95 ret + +00000684 <_ZN14HardwareSerial4readEv>: + 684: fc 01 movw r30, r24 + 686: 84 85 ldd r24, Z+12 ; 0x0c + 688: 95 85 ldd r25, Z+13 ; 0x0d + 68a: fc 01 movw r30, r24 + 68c: e0 5c subi r30, 0xC0 ; 192 + 68e: ff 4f sbci r31, 0xFF ; 255 + 690: 40 81 ld r20, Z + 692: 51 81 ldd r21, Z+1 ; 0x01 + 694: fc 01 movw r30, r24 + 696: ee 5b subi r30, 0xBE ; 190 + 698: ff 4f sbci r31, 0xFF ; 255 + 69a: 20 81 ld r18, Z + 69c: 31 81 ldd r19, Z+1 ; 0x01 + 69e: 42 17 cp r20, r18 + 6a0: 53 07 cpc r21, r19 + 6a2: 71 f0 breq .+28 ; 0x6c0 <_ZN14HardwareSerial4readEv+0x3c> + 6a4: a0 81 ld r26, Z + 6a6: b1 81 ldd r27, Z+1 ; 0x01 + 6a8: a8 0f add r26, r24 + 6aa: b9 1f adc r27, r25 + 6ac: 2c 91 ld r18, X + 6ae: 80 81 ld r24, Z + 6b0: 91 81 ldd r25, Z+1 ; 0x01 + 6b2: 01 96 adiw r24, 0x01 ; 1 + 6b4: 8f 73 andi r24, 0x3F ; 63 + 6b6: 90 70 andi r25, 0x00 ; 0 + 6b8: 91 83 std Z+1, r25 ; 0x01 + 6ba: 80 83 st Z, r24 + 6bc: 30 e0 ldi r19, 0x00 ; 0 + 6be: 02 c0 rjmp .+4 ; 0x6c4 <_ZN14HardwareSerial4readEv+0x40> + 6c0: 2f ef ldi r18, 0xFF ; 255 + 6c2: 3f ef ldi r19, 0xFF ; 255 + 6c4: c9 01 movw r24, r18 + 6c6: 08 95 ret + +000006c8 <_ZN14HardwareSerial5flushEv>: + 6c8: dc 01 movw r26, r24 + 6ca: 1e 96 adiw r26, 0x0e ; 14 + 6cc: 8d 91 ld r24, X+ + 6ce: 9c 91 ld r25, X + 6d0: 1f 97 sbiw r26, 0x0f ; 15 + 6d2: fc 01 movw r30, r24 + 6d4: e0 5c subi r30, 0xC0 ; 192 + 6d6: ff 4f sbci r31, 0xFF ; 255 + 6d8: 8e 5b subi r24, 0xBE ; 190 + 6da: 9f 4f sbci r25, 0xFF ; 255 + 6dc: 40 81 ld r20, Z + 6de: 51 81 ldd r21, Z+1 ; 0x01 + 6e0: dc 01 movw r26, r24 + 6e2: 2d 91 ld r18, X+ + 6e4: 3c 91 ld r19, X + 6e6: 11 97 sbiw r26, 0x01 ; 1 + 6e8: 42 17 cp r20, r18 + 6ea: 53 07 cpc r21, r19 + 6ec: b9 f7 brne .-18 ; 0x6dc <_ZN14HardwareSerial5flushEv+0x14> + 6ee: 08 95 ret + +000006f0 <_ZN14HardwareSerial5writeEh>: + 6f0: 1f 93 push r17 + 6f2: fc 01 movw r30, r24 + 6f4: 16 2f mov r17, r22 + 6f6: 26 85 ldd r18, Z+14 ; 0x0e + 6f8: 37 85 ldd r19, Z+15 ; 0x0f + 6fa: d9 01 movw r26, r18 + 6fc: a0 5c subi r26, 0xC0 ; 192 + 6fe: bf 4f sbci r27, 0xFF ; 255 + 700: 8d 91 ld r24, X+ + 702: 9c 91 ld r25, X + 704: 01 96 adiw r24, 0x01 ; 1 + 706: 60 e4 ldi r22, 0x40 ; 64 + 708: 70 e0 ldi r23, 0x00 ; 0 + 70a: 0e 94 19 22 call 0x4432 ; 0x4432 <__divmodhi4> + 70e: d9 01 movw r26, r18 + 710: ae 5b subi r26, 0xBE ; 190 + 712: bf 4f sbci r27, 0xFF ; 255 + 714: 4d 91 ld r20, X+ + 716: 5c 91 ld r21, X + 718: 11 97 sbiw r26, 0x01 ; 1 + 71a: 84 17 cp r24, r20 + 71c: 95 07 cpc r25, r21 + 71e: d1 f3 breq .-12 ; 0x714 <_ZN14HardwareSerial5writeEh+0x24> + 720: d9 01 movw r26, r18 + 722: a0 5c subi r26, 0xC0 ; 192 + 724: bf 4f sbci r27, 0xFF ; 255 + 726: 0d 90 ld r0, X+ + 728: bc 91 ld r27, X + 72a: a0 2d mov r26, r0 + 72c: a2 0f add r26, r18 + 72e: b3 1f adc r27, r19 + 730: 1c 93 st X, r17 + 732: a6 85 ldd r26, Z+14 ; 0x0e + 734: b7 85 ldd r27, Z+15 ; 0x0f + 736: a0 5c subi r26, 0xC0 ; 192 + 738: bf 4f sbci r27, 0xFF ; 255 + 73a: 11 96 adiw r26, 0x01 ; 1 + 73c: 9c 93 st X, r25 + 73e: 8e 93 st -X, r24 + 740: a6 89 ldd r26, Z+22 ; 0x16 + 742: b7 89 ldd r27, Z+23 ; 0x17 + 744: 2c 91 ld r18, X + 746: 81 e0 ldi r24, 0x01 ; 1 + 748: 90 e0 ldi r25, 0x00 ; 0 + 74a: 05 8c ldd r0, Z+29 ; 0x1d + 74c: 02 c0 rjmp .+4 ; 0x752 <_ZN14HardwareSerial5writeEh+0x62> + 74e: 88 0f add r24, r24 + 750: 99 1f adc r25, r25 + 752: 0a 94 dec r0 + 754: e2 f7 brpl .-8 ; 0x74e <_ZN14HardwareSerial5writeEh+0x5e> + 756: 28 2b or r18, r24 + 758: 2c 93 st X, r18 + 75a: 81 e0 ldi r24, 0x01 ; 1 + 75c: 90 e0 ldi r25, 0x00 ; 0 + 75e: 1f 91 pop r17 + 760: 08 95 ret + +00000762 <_Z10store_charhP11ring_buffer>: + 762: fb 01 movw r30, r22 + 764: e0 5c subi r30, 0xC0 ; 192 + 766: ff 4f sbci r31, 0xFF ; 255 + 768: 20 81 ld r18, Z + 76a: 31 81 ldd r19, Z+1 ; 0x01 + 76c: 2f 5f subi r18, 0xFF ; 255 + 76e: 3f 4f sbci r19, 0xFF ; 255 + 770: 2f 73 andi r18, 0x3F ; 63 + 772: 30 70 andi r19, 0x00 ; 0 + 774: db 01 movw r26, r22 + 776: ae 5b subi r26, 0xBE ; 190 + 778: bf 4f sbci r27, 0xFF ; 255 + 77a: 4d 91 ld r20, X+ + 77c: 5c 91 ld r21, X + 77e: 11 97 sbiw r26, 0x01 ; 1 + 780: 24 17 cp r18, r20 + 782: 35 07 cpc r19, r21 + 784: 39 f0 breq .+14 ; 0x794 <_Z10store_charhP11ring_buffer+0x32> + 786: a0 81 ld r26, Z + 788: b1 81 ldd r27, Z+1 ; 0x01 + 78a: a6 0f add r26, r22 + 78c: b7 1f adc r27, r23 + 78e: 8c 93 st X, r24 + 790: 31 83 std Z+1, r19 ; 0x01 + 792: 20 83 st Z, r18 + 794: 08 95 ret + +00000796 <_Z11serialEventv>: + 796: 08 95 ret + +00000798 <__vector_18>: + 798: 1f 92 push r1 + 79a: 0f 92 push r0 + 79c: 0f b6 in r0, 0x3f ; 63 + 79e: 0f 92 push r0 + 7a0: 11 24 eor r1, r1 + 7a2: 2f 93 push r18 + 7a4: 3f 93 push r19 + 7a6: 4f 93 push r20 + 7a8: 5f 93 push r21 + 7aa: 6f 93 push r22 + 7ac: 7f 93 push r23 + 7ae: 8f 93 push r24 + 7b0: 9f 93 push r25 + 7b2: af 93 push r26 + 7b4: bf 93 push r27 + 7b6: ef 93 push r30 + 7b8: ff 93 push r31 + 7ba: 80 91 c6 00 lds r24, 0x00C6 + 7be: 6a ed ldi r22, 0xDA ; 218 + 7c0: 72 e0 ldi r23, 0x02 ; 2 + 7c2: 0e 94 b1 03 call 0x762 ; 0x762 <_Z10store_charhP11ring_buffer> + 7c6: ff 91 pop r31 + 7c8: ef 91 pop r30 + 7ca: bf 91 pop r27 + 7cc: af 91 pop r26 + 7ce: 9f 91 pop r25 + 7d0: 8f 91 pop r24 + 7d2: 7f 91 pop r23 + 7d4: 6f 91 pop r22 + 7d6: 5f 91 pop r21 + 7d8: 4f 91 pop r20 + 7da: 3f 91 pop r19 + 7dc: 2f 91 pop r18 + 7de: 0f 90 pop r0 + 7e0: 0f be out 0x3f, r0 ; 63 + 7e2: 0f 90 pop r0 + 7e4: 1f 90 pop r1 + 7e6: 18 95 reti + +000007e8 <_Z14serialEventRunv>: + 7e8: 82 e6 ldi r24, 0x62 ; 98 + 7ea: 93 e0 ldi r25, 0x03 ; 3 + 7ec: 0e 94 13 03 call 0x626 ; 0x626 <_ZN14HardwareSerial9availableEv> + 7f0: 00 97 sbiw r24, 0x00 ; 0 + 7f2: 11 f0 breq .+4 ; 0x7f8 <_Z14serialEventRunv+0x10> + 7f4: 0e 94 cb 03 call 0x796 ; 0x796 <_Z11serialEventv> + 7f8: 08 95 ret + +000007fa <__vector_19>: + 7fa: 1f 92 push r1 + 7fc: 0f 92 push r0 + 7fe: 0f b6 in r0, 0x3f ; 63 + 800: 0f 92 push r0 + 802: 11 24 eor r1, r1 + 804: 2f 93 push r18 + 806: 3f 93 push r19 + 808: 5f 93 push r21 + 80a: 6f 93 push r22 + 80c: 7f 93 push r23 + 80e: 8f 93 push r24 + 810: 9f 93 push r25 + 812: af 93 push r26 + 814: bf 93 push r27 + 816: ef 93 push r30 + 818: ff 93 push r31 + 81a: 20 91 5e 03 lds r18, 0x035E + 81e: 30 91 5f 03 lds r19, 0x035F + 822: 80 91 60 03 lds r24, 0x0360 + 826: 90 91 61 03 lds r25, 0x0361 + 82a: 28 17 cp r18, r24 + 82c: 39 07 cpc r19, r25 + 82e: 31 f4 brne .+12 ; 0x83c <__vector_19+0x42> + 830: 80 91 c1 00 lds r24, 0x00C1 + 834: 8f 7d andi r24, 0xDF ; 223 + 836: 80 93 c1 00 sts 0x00C1, r24 + 83a: 16 c0 rjmp .+44 ; 0x868 <__vector_19+0x6e> + 83c: e0 91 60 03 lds r30, 0x0360 + 840: f0 91 61 03 lds r31, 0x0361 + 844: e2 5e subi r30, 0xE2 ; 226 + 846: fc 4f sbci r31, 0xFC ; 252 + 848: 20 81 ld r18, Z + 84a: 80 91 60 03 lds r24, 0x0360 + 84e: 90 91 61 03 lds r25, 0x0361 + 852: 01 96 adiw r24, 0x01 ; 1 + 854: 60 e4 ldi r22, 0x40 ; 64 + 856: 70 e0 ldi r23, 0x00 ; 0 + 858: 0e 94 19 22 call 0x4432 ; 0x4432 <__divmodhi4> + 85c: 90 93 61 03 sts 0x0361, r25 + 860: 80 93 60 03 sts 0x0360, r24 + 864: 20 93 c6 00 sts 0x00C6, r18 + 868: ff 91 pop r31 + 86a: ef 91 pop r30 + 86c: bf 91 pop r27 + 86e: af 91 pop r26 + 870: 9f 91 pop r25 + 872: 8f 91 pop r24 + 874: 7f 91 pop r23 + 876: 6f 91 pop r22 + 878: 5f 91 pop r21 + 87a: 3f 91 pop r19 + 87c: 2f 91 pop r18 + 87e: 0f 90 pop r0 + 880: 0f be out 0x3f, r0 ; 63 + 882: 0f 90 pop r0 + 884: 1f 90 pop r1 + 886: 18 95 reti + +00000888 <_ZN14HardwareSerialC1EP11ring_bufferS1_PVhS3_S3_S3_S3_hhhhh>: + 888: 8f 92 push r8 + 88a: af 92 push r10 + 88c: bf 92 push r11 + 88e: cf 92 push r12 + 890: df 92 push r13 + 892: ef 92 push r14 + 894: ff 92 push r15 + 896: 0f 93 push r16 + 898: 1f 93 push r17 + 89a: df 93 push r29 + 89c: cf 93 push r28 + 89e: cd b7 in r28, 0x3d ; 61 + 8a0: de b7 in r29, 0x3e ; 62 + 8a2: fc 01 movw r30, r24 + 8a4: 13 82 std Z+3, r1 ; 0x03 + 8a6: 12 82 std Z+2, r1 ; 0x02 + 8a8: 88 ee ldi r24, 0xE8 ; 232 + 8aa: 93 e0 ldi r25, 0x03 ; 3 + 8ac: a0 e0 ldi r26, 0x00 ; 0 + 8ae: b0 e0 ldi r27, 0x00 ; 0 + 8b0: 84 83 std Z+4, r24 ; 0x04 + 8b2: 95 83 std Z+5, r25 ; 0x05 + 8b4: a6 83 std Z+6, r26 ; 0x06 + 8b6: b7 83 std Z+7, r27 ; 0x07 + 8b8: 89 e7 ldi r24, 0x79 ; 121 + 8ba: 91 e0 ldi r25, 0x01 ; 1 + 8bc: 91 83 std Z+1, r25 ; 0x01 + 8be: 80 83 st Z, r24 + 8c0: 75 87 std Z+13, r23 ; 0x0d + 8c2: 64 87 std Z+12, r22 ; 0x0c + 8c4: 57 87 std Z+15, r21 ; 0x0f + 8c6: 46 87 std Z+14, r20 ; 0x0e + 8c8: 31 8b std Z+17, r19 ; 0x11 + 8ca: 20 8b std Z+16, r18 ; 0x10 + 8cc: 13 8b std Z+19, r17 ; 0x13 + 8ce: 02 8b std Z+18, r16 ; 0x12 + 8d0: f5 8a std Z+21, r15 ; 0x15 + 8d2: e4 8a std Z+20, r14 ; 0x14 + 8d4: d7 8a std Z+23, r13 ; 0x17 + 8d6: c6 8a std Z+22, r12 ; 0x16 + 8d8: b1 8e std Z+25, r11 ; 0x19 + 8da: a0 8e std Z+24, r10 ; 0x18 + 8dc: 82 8e std Z+26, r8 ; 0x1a + 8de: 8e 85 ldd r24, Y+14 ; 0x0e + 8e0: 83 8f std Z+27, r24 ; 0x1b + 8e2: 8f 85 ldd r24, Y+15 ; 0x0f + 8e4: 84 8f std Z+28, r24 ; 0x1c + 8e6: 88 89 ldd r24, Y+16 ; 0x10 + 8e8: 85 8f std Z+29, r24 ; 0x1d + 8ea: 89 89 ldd r24, Y+17 ; 0x11 + 8ec: 86 8f std Z+30, r24 ; 0x1e + 8ee: cf 91 pop r28 + 8f0: df 91 pop r29 + 8f2: 1f 91 pop r17 + 8f4: 0f 91 pop r16 + 8f6: ff 90 pop r15 + 8f8: ef 90 pop r14 + 8fa: df 90 pop r13 + 8fc: cf 90 pop r12 + 8fe: bf 90 pop r11 + 900: af 90 pop r10 + 902: 8f 90 pop r8 + 904: 08 95 ret + +00000906 <_ZN14HardwareSerial5beginEm>: + 906: 9f 92 push r9 + 908: af 92 push r10 + 90a: bf 92 push r11 + 90c: cf 92 push r12 + 90e: df 92 push r13 + 910: ef 92 push r14 + 912: ff 92 push r15 + 914: 0f 93 push r16 + 916: 1f 93 push r17 + 918: cf 93 push r28 + 91a: df 93 push r29 + 91c: ec 01 movw r28, r24 + 91e: 7a 01 movw r14, r20 + 920: 8b 01 movw r16, r22 + 922: 99 24 eor r9, r9 + 924: 93 94 inc r9 + 926: ec 89 ldd r30, Y+20 ; 0x14 + 928: fd 89 ldd r31, Y+21 ; 0x15 + 92a: 81 e0 ldi r24, 0x01 ; 1 + 92c: 90 e0 ldi r25, 0x00 ; 0 + 92e: 0e 8c ldd r0, Y+30 ; 0x1e + 930: 02 c0 rjmp .+4 ; 0x936 <_ZN14HardwareSerial5beginEm+0x30> + 932: 88 0f add r24, r24 + 934: 99 1f adc r25, r25 + 936: 0a 94 dec r0 + 938: e2 f7 brpl .-8 ; 0x932 <_ZN14HardwareSerial5beginEm+0x2c> + 93a: 80 83 st Z, r24 + 93c: 60 e8 ldi r22, 0x80 ; 128 + 93e: 74 e8 ldi r23, 0x84 ; 132 + 940: 8e e1 ldi r24, 0x1E ; 30 + 942: 90 e0 ldi r25, 0x00 ; 0 + 944: a8 01 movw r20, r16 + 946: 97 01 movw r18, r14 + 948: 0e 94 2c 22 call 0x4458 ; 0x4458 <__udivmodsi4> + 94c: 21 50 subi r18, 0x01 ; 1 + 94e: 30 40 sbci r19, 0x00 ; 0 + 950: 40 40 sbci r20, 0x00 ; 0 + 952: 50 40 sbci r21, 0x00 ; 0 + 954: 56 95 lsr r21 + 956: 47 95 ror r20 + 958: 37 95 ror r19 + 95a: 27 95 ror r18 + 95c: 90 e4 ldi r25, 0x40 ; 64 + 95e: a9 2e mov r10, r25 + 960: 92 e4 ldi r25, 0x42 ; 66 + 962: b9 2e mov r11, r25 + 964: 9f e0 ldi r25, 0x0F ; 15 + 966: c9 2e mov r12, r25 + 968: d1 2c mov r13, r1 + 96a: 12 c0 rjmp .+36 ; 0x990 <_ZN14HardwareSerial5beginEm+0x8a> + 96c: 99 24 eor r9, r9 + 96e: ec 89 ldd r30, Y+20 ; 0x14 + 970: fd 89 ldd r31, Y+21 ; 0x15 + 972: 10 82 st Z, r1 + 974: c6 01 movw r24, r12 + 976: b5 01 movw r22, r10 + 978: a8 01 movw r20, r16 + 97a: 97 01 movw r18, r14 + 97c: 0e 94 2c 22 call 0x4458 ; 0x4458 <__udivmodsi4> + 980: 21 50 subi r18, 0x01 ; 1 + 982: 30 40 sbci r19, 0x00 ; 0 + 984: 40 40 sbci r20, 0x00 ; 0 + 986: 50 40 sbci r21, 0x00 ; 0 + 988: 56 95 lsr r21 + 98a: 47 95 ror r20 + 98c: 37 95 ror r19 + 98e: 27 95 ror r18 + 990: 80 e1 ldi r24, 0x10 ; 16 + 992: 20 30 cpi r18, 0x00 ; 0 + 994: 38 07 cpc r19, r24 + 996: 10 f0 brcs .+4 ; 0x99c <_ZN14HardwareSerial5beginEm+0x96> + 998: 99 20 and r9, r9 + 99a: 41 f7 brne .-48 ; 0x96c <_ZN14HardwareSerial5beginEm+0x66> + 99c: e8 89 ldd r30, Y+16 ; 0x10 + 99e: f9 89 ldd r31, Y+17 ; 0x11 + 9a0: 30 83 st Z, r19 + 9a2: ea 89 ldd r30, Y+18 ; 0x12 + 9a4: fb 89 ldd r31, Y+19 ; 0x13 + 9a6: 20 83 st Z, r18 + 9a8: ee 89 ldd r30, Y+22 ; 0x16 + 9aa: ff 89 ldd r31, Y+23 ; 0x17 + 9ac: 40 81 ld r20, Z + 9ae: 81 e0 ldi r24, 0x01 ; 1 + 9b0: 90 e0 ldi r25, 0x00 ; 0 + 9b2: 9c 01 movw r18, r24 + 9b4: 0a 8c ldd r0, Y+26 ; 0x1a + 9b6: 02 c0 rjmp .+4 ; 0x9bc <_ZN14HardwareSerial5beginEm+0xb6> + 9b8: 22 0f add r18, r18 + 9ba: 33 1f adc r19, r19 + 9bc: 0a 94 dec r0 + 9be: e2 f7 brpl .-8 ; 0x9b8 <_ZN14HardwareSerial5beginEm+0xb2> + 9c0: 42 2b or r20, r18 + 9c2: 40 83 st Z, r20 + 9c4: ee 89 ldd r30, Y+22 ; 0x16 + 9c6: ff 89 ldd r31, Y+23 ; 0x17 + 9c8: 40 81 ld r20, Z + 9ca: 9c 01 movw r18, r24 + 9cc: 0b 8c ldd r0, Y+27 ; 0x1b + 9ce: 02 c0 rjmp .+4 ; 0x9d4 <_ZN14HardwareSerial5beginEm+0xce> + 9d0: 22 0f add r18, r18 + 9d2: 33 1f adc r19, r19 + 9d4: 0a 94 dec r0 + 9d6: e2 f7 brpl .-8 ; 0x9d0 <_ZN14HardwareSerial5beginEm+0xca> + 9d8: 42 2b or r20, r18 + 9da: 40 83 st Z, r20 + 9dc: ee 89 ldd r30, Y+22 ; 0x16 + 9de: ff 89 ldd r31, Y+23 ; 0x17 + 9e0: 40 81 ld r20, Z + 9e2: 9c 01 movw r18, r24 + 9e4: 0c 8c ldd r0, Y+28 ; 0x1c + 9e6: 02 c0 rjmp .+4 ; 0x9ec <_ZN14HardwareSerial5beginEm+0xe6> + 9e8: 22 0f add r18, r18 + 9ea: 33 1f adc r19, r19 + 9ec: 0a 94 dec r0 + 9ee: e2 f7 brpl .-8 ; 0x9e8 <_ZN14HardwareSerial5beginEm+0xe2> + 9f0: 42 2b or r20, r18 + 9f2: 40 83 st Z, r20 + 9f4: ee 89 ldd r30, Y+22 ; 0x16 + 9f6: ff 89 ldd r31, Y+23 ; 0x17 + 9f8: 20 81 ld r18, Z + 9fa: 0d 8c ldd r0, Y+29 ; 0x1d + 9fc: 02 c0 rjmp .+4 ; 0xa02 <_ZN14HardwareSerial5beginEm+0xfc> + 9fe: 88 0f add r24, r24 + a00: 99 1f adc r25, r25 + a02: 0a 94 dec r0 + a04: e2 f7 brpl .-8 ; 0x9fe <_ZN14HardwareSerial5beginEm+0xf8> + a06: 80 95 com r24 + a08: 82 23 and r24, r18 + a0a: 80 83 st Z, r24 + a0c: df 91 pop r29 + a0e: cf 91 pop r28 + a10: 1f 91 pop r17 + a12: 0f 91 pop r16 + a14: ff 90 pop r15 + a16: ef 90 pop r14 + a18: df 90 pop r13 + a1a: cf 90 pop r12 + a1c: bf 90 pop r11 + a1e: af 90 pop r10 + a20: 9f 90 pop r9 + a22: 08 95 ret + +00000a24 <_ZN14HardwareSerial3endEv>: + a24: cf 93 push r28 + a26: df 93 push r29 + a28: fc 01 movw r30, r24 + a2a: 86 85 ldd r24, Z+14 ; 0x0e + a2c: 97 85 ldd r25, Z+15 ; 0x0f + a2e: dc 01 movw r26, r24 + a30: a0 5c subi r26, 0xC0 ; 192 + a32: bf 4f sbci r27, 0xFF ; 255 + a34: 8e 5b subi r24, 0xBE ; 190 + a36: 9f 4f sbci r25, 0xFF ; 255 + a38: 4d 91 ld r20, X+ + a3a: 5c 91 ld r21, X + a3c: 11 97 sbiw r26, 0x01 ; 1 + a3e: ec 01 movw r28, r24 + a40: 28 81 ld r18, Y + a42: 39 81 ldd r19, Y+1 ; 0x01 + a44: 42 17 cp r20, r18 + a46: 53 07 cpc r21, r19 + a48: b9 f7 brne .-18 ; 0xa38 <_ZN14HardwareSerial3endEv+0x14> + a4a: a6 89 ldd r26, Z+22 ; 0x16 + a4c: b7 89 ldd r27, Z+23 ; 0x17 + a4e: 4c 91 ld r20, X + a50: 81 e0 ldi r24, 0x01 ; 1 + a52: 90 e0 ldi r25, 0x00 ; 0 + a54: 9c 01 movw r18, r24 + a56: 02 8c ldd r0, Z+26 ; 0x1a + a58: 02 c0 rjmp .+4 ; 0xa5e <_ZN14HardwareSerial3endEv+0x3a> + a5a: 22 0f add r18, r18 + a5c: 33 1f adc r19, r19 + a5e: 0a 94 dec r0 + a60: e2 f7 brpl .-8 ; 0xa5a <_ZN14HardwareSerial3endEv+0x36> + a62: 20 95 com r18 + a64: 24 23 and r18, r20 + a66: 2c 93 st X, r18 + a68: a6 89 ldd r26, Z+22 ; 0x16 + a6a: b7 89 ldd r27, Z+23 ; 0x17 + a6c: 4c 91 ld r20, X + a6e: 9c 01 movw r18, r24 + a70: 03 8c ldd r0, Z+27 ; 0x1b + a72: 02 c0 rjmp .+4 ; 0xa78 <_ZN14HardwareSerial3endEv+0x54> + a74: 22 0f add r18, r18 + a76: 33 1f adc r19, r19 + a78: 0a 94 dec r0 + a7a: e2 f7 brpl .-8 ; 0xa74 <_ZN14HardwareSerial3endEv+0x50> + a7c: 20 95 com r18 + a7e: 24 23 and r18, r20 + a80: 2c 93 st X, r18 + a82: a6 89 ldd r26, Z+22 ; 0x16 + a84: b7 89 ldd r27, Z+23 ; 0x17 + a86: 4c 91 ld r20, X + a88: 9c 01 movw r18, r24 + a8a: 04 8c ldd r0, Z+28 ; 0x1c + a8c: 02 c0 rjmp .+4 ; 0xa92 <_ZN14HardwareSerial3endEv+0x6e> + a8e: 22 0f add r18, r18 + a90: 33 1f adc r19, r19 + a92: 0a 94 dec r0 + a94: e2 f7 brpl .-8 ; 0xa8e <_ZN14HardwareSerial3endEv+0x6a> + a96: 20 95 com r18 + a98: 24 23 and r18, r20 + a9a: 2c 93 st X, r18 + a9c: a6 89 ldd r26, Z+22 ; 0x16 + a9e: b7 89 ldd r27, Z+23 ; 0x17 + aa0: 2c 91 ld r18, X + aa2: 05 8c ldd r0, Z+29 ; 0x1d + aa4: 02 c0 rjmp .+4 ; 0xaaa <_ZN14HardwareSerial3endEv+0x86> + aa6: 88 0f add r24, r24 + aa8: 99 1f adc r25, r25 + aaa: 0a 94 dec r0 + aac: e2 f7 brpl .-8 ; 0xaa6 <_ZN14HardwareSerial3endEv+0x82> + aae: 80 95 com r24 + ab0: 82 23 and r24, r18 + ab2: 8c 93 st X, r24 + ab4: 84 85 ldd r24, Z+12 ; 0x0c + ab6: 95 85 ldd r25, Z+13 ; 0x0d + ab8: fc 01 movw r30, r24 + aba: ee 5b subi r30, 0xBE ; 190 + abc: ff 4f sbci r31, 0xFF ; 255 + abe: 20 81 ld r18, Z + ac0: 31 81 ldd r19, Z+1 ; 0x01 + ac2: 80 5c subi r24, 0xC0 ; 192 + ac4: 9f 4f sbci r25, 0xFF ; 255 + ac6: fc 01 movw r30, r24 + ac8: 31 83 std Z+1, r19 ; 0x01 + aca: 20 83 st Z, r18 + acc: df 91 pop r29 + ace: cf 91 pop r28 + ad0: 08 95 ret + +00000ad2 <_GLOBAL__I_rx_buffer>: + ad2: 10 92 65 03 sts 0x0365, r1 + ad6: 10 92 64 03 sts 0x0364, r1 + ada: 88 ee ldi r24, 0xE8 ; 232 + adc: 93 e0 ldi r25, 0x03 ; 3 + ade: a0 e0 ldi r26, 0x00 ; 0 + ae0: b0 e0 ldi r27, 0x00 ; 0 + ae2: 80 93 66 03 sts 0x0366, r24 + ae6: 90 93 67 03 sts 0x0367, r25 + aea: a0 93 68 03 sts 0x0368, r26 + aee: b0 93 69 03 sts 0x0369, r27 + af2: e4 e6 ldi r30, 0x64 ; 100 + af4: f3 e0 ldi r31, 0x03 ; 3 + af6: 89 e7 ldi r24, 0x79 ; 121 + af8: 91 e0 ldi r25, 0x01 ; 1 + afa: 92 93 st -Z, r25 + afc: 82 93 st -Z, r24 + afe: 8a ed ldi r24, 0xDA ; 218 + b00: 92 e0 ldi r25, 0x02 ; 2 + b02: 95 87 std Z+13, r25 ; 0x0d + b04: 84 87 std Z+12, r24 ; 0x0c + b06: 8e e1 ldi r24, 0x1E ; 30 + b08: 93 e0 ldi r25, 0x03 ; 3 + b0a: 97 87 std Z+15, r25 ; 0x0f + b0c: 86 87 std Z+14, r24 ; 0x0e + b0e: 85 ec ldi r24, 0xC5 ; 197 + b10: 90 e0 ldi r25, 0x00 ; 0 + b12: 91 8b std Z+17, r25 ; 0x11 + b14: 80 8b std Z+16, r24 ; 0x10 + b16: 84 ec ldi r24, 0xC4 ; 196 + b18: 90 e0 ldi r25, 0x00 ; 0 + b1a: 93 8b std Z+19, r25 ; 0x13 + b1c: 82 8b std Z+18, r24 ; 0x12 + b1e: 80 ec ldi r24, 0xC0 ; 192 + b20: 90 e0 ldi r25, 0x00 ; 0 + b22: 95 8b std Z+21, r25 ; 0x15 + b24: 84 8b std Z+20, r24 ; 0x14 + b26: 81 ec ldi r24, 0xC1 ; 193 + b28: 90 e0 ldi r25, 0x00 ; 0 + b2a: 97 8b std Z+23, r25 ; 0x17 + b2c: 86 8b std Z+22, r24 ; 0x16 + b2e: 86 ec ldi r24, 0xC6 ; 198 + b30: 90 e0 ldi r25, 0x00 ; 0 + b32: 91 8f std Z+25, r25 ; 0x19 + b34: 80 8f std Z+24, r24 ; 0x18 + b36: 84 e0 ldi r24, 0x04 ; 4 + b38: 82 8f std Z+26, r24 ; 0x1a + b3a: 83 e0 ldi r24, 0x03 ; 3 + b3c: 83 8f std Z+27, r24 ; 0x1b + b3e: 87 e0 ldi r24, 0x07 ; 7 + b40: 84 8f std Z+28, r24 ; 0x1c + b42: 85 e0 ldi r24, 0x05 ; 5 + b44: 85 8f std Z+29, r24 ; 0x1d + b46: 81 e0 ldi r24, 0x01 ; 1 + b48: 86 8f std Z+30, r24 ; 0x1e + b4a: 08 95 ret + +00000b4c <_ZNK9IPAddress7printToER5Print>: + b4c: 8f 92 push r8 + b4e: 9f 92 push r9 + b50: af 92 push r10 + b52: bf 92 push r11 + b54: cf 92 push r12 + b56: df 92 push r13 + b58: ef 92 push r14 + b5a: ff 92 push r15 + b5c: 0f 93 push r16 + b5e: 1f 93 push r17 + b60: cf 93 push r28 + b62: df 93 push r29 + b64: 4c 01 movw r8, r24 + b66: 7b 01 movw r14, r22 + b68: 82 e0 ldi r24, 0x02 ; 2 + b6a: a8 2e mov r10, r24 + b6c: b1 2c mov r11, r1 + b6e: a8 0c add r10, r8 + b70: b9 1c adc r11, r9 + b72: c0 e0 ldi r28, 0x00 ; 0 + b74: d0 e0 ldi r29, 0x00 ; 0 + b76: cc 24 eor r12, r12 + b78: dd 24 eor r13, r13 + b7a: f5 01 movw r30, r10 + b7c: 61 91 ld r22, Z+ + b7e: 5f 01 movw r10, r30 + b80: c7 01 movw r24, r14 + b82: 4a e0 ldi r20, 0x0A ; 10 + b84: 50 e0 ldi r21, 0x00 ; 0 + b86: 0e 94 03 08 call 0x1006 ; 0x1006 <_ZN5Print5printEhi> + b8a: 8c 01 movw r16, r24 + b8c: c7 01 movw r24, r14 + b8e: 6e e2 ldi r22, 0x2E ; 46 + b90: 0e 94 e2 06 call 0xdc4 ; 0xdc4 <_ZN5Print5printEc> + b94: 08 0f add r16, r24 + b96: 19 1f adc r17, r25 + b98: c0 0e add r12, r16 + b9a: d1 1e adc r13, r17 + b9c: 21 96 adiw r28, 0x01 ; 1 + b9e: c3 30 cpi r28, 0x03 ; 3 + ba0: d1 05 cpc r29, r1 + ba2: 59 f7 brne .-42 ; 0xb7a <_ZNK9IPAddress7printToER5Print+0x2e> + ba4: c7 01 movw r24, r14 + ba6: f4 01 movw r30, r8 + ba8: 65 81 ldd r22, Z+5 ; 0x05 + baa: 4a e0 ldi r20, 0x0A ; 10 + bac: 50 e0 ldi r21, 0x00 ; 0 + bae: 0e 94 03 08 call 0x1006 ; 0x1006 <_ZN5Print5printEhi> + bb2: c8 0e add r12, r24 + bb4: d9 1e adc r13, r25 + bb6: c6 01 movw r24, r12 + bb8: df 91 pop r29 + bba: cf 91 pop r28 + bbc: 1f 91 pop r17 + bbe: 0f 91 pop r16 + bc0: ff 90 pop r15 + bc2: ef 90 pop r14 + bc4: df 90 pop r13 + bc6: cf 90 pop r12 + bc8: bf 90 pop r11 + bca: af 90 pop r10 + bcc: 9f 90 pop r9 + bce: 8f 90 pop r8 + bd0: 08 95 ret + +00000bd2 <_ZN9IPAddressC1Ev>: + bd2: fc 01 movw r30, r24 + bd4: 89 e9 ldi r24, 0x99 ; 153 + bd6: 91 e0 ldi r25, 0x01 ; 1 + bd8: 91 83 std Z+1, r25 ; 0x01 + bda: 80 83 st Z, r24 + bdc: 12 82 std Z+2, r1 ; 0x02 + bde: 13 82 std Z+3, r1 ; 0x03 + be0: 14 82 std Z+4, r1 ; 0x04 + be2: 15 82 std Z+5, r1 ; 0x05 + be4: 08 95 ret + +00000be6 <_ZN9IPAddressC1Ehhhh>: + be6: 0f 93 push r16 + be8: fc 01 movw r30, r24 + bea: 89 e9 ldi r24, 0x99 ; 153 + bec: 91 e0 ldi r25, 0x01 ; 1 + bee: 91 83 std Z+1, r25 ; 0x01 + bf0: 80 83 st Z, r24 + bf2: 62 83 std Z+2, r22 ; 0x02 + bf4: 43 83 std Z+3, r20 ; 0x03 + bf6: 24 83 std Z+4, r18 ; 0x04 + bf8: 05 83 std Z+5, r16 ; 0x05 + bfa: 0f 91 pop r16 + bfc: 08 95 ret + +00000bfe <_ZN9IPAddressC1Em>: + bfe: fc 01 movw r30, r24 + c00: 89 e9 ldi r24, 0x99 ; 153 + c02: 91 e0 ldi r25, 0x01 ; 1 + c04: 91 83 std Z+1, r25 ; 0x01 + c06: 80 83 st Z, r24 + c08: 42 83 std Z+2, r20 ; 0x02 + c0a: 53 83 std Z+3, r21 ; 0x03 + c0c: 64 83 std Z+4, r22 ; 0x04 + c0e: 75 83 std Z+5, r23 ; 0x05 + c10: 08 95 ret + +00000c12 <_ZN9IPAddressC1EPKh>: + c12: fc 01 movw r30, r24 + c14: 89 e9 ldi r24, 0x99 ; 153 + c16: 91 e0 ldi r25, 0x01 ; 1 + c18: 91 83 std Z+1, r25 ; 0x01 + c1a: 80 83 st Z, r24 + c1c: db 01 movw r26, r22 + c1e: 2d 91 ld r18, X+ + c20: 3d 91 ld r19, X+ + c22: 4d 91 ld r20, X+ + c24: 5c 91 ld r21, X + c26: 13 97 sbiw r26, 0x03 ; 3 + c28: 22 83 std Z+2, r18 ; 0x02 + c2a: 33 83 std Z+3, r19 ; 0x03 + c2c: 44 83 std Z+4, r20 ; 0x04 + c2e: 55 83 std Z+5, r21 ; 0x05 + c30: 08 95 ret + +00000c32 <_ZN9IPAddressaSEPKh>: + c32: cf 93 push r28 + c34: df 93 push r29 + c36: fc 01 movw r30, r24 + c38: eb 01 movw r28, r22 + c3a: 88 81 ld r24, Y + c3c: 99 81 ldd r25, Y+1 ; 0x01 + c3e: aa 81 ldd r26, Y+2 ; 0x02 + c40: bb 81 ldd r27, Y+3 ; 0x03 + c42: 82 83 std Z+2, r24 ; 0x02 + c44: 93 83 std Z+3, r25 ; 0x03 + c46: a4 83 std Z+4, r26 ; 0x04 + c48: b5 83 std Z+5, r27 ; 0x05 + c4a: cf 01 movw r24, r30 + c4c: df 91 pop r29 + c4e: cf 91 pop r28 + c50: 08 95 ret + +00000c52 <_ZN9IPAddressaSEm>: + c52: fc 01 movw r30, r24 + c54: 42 83 std Z+2, r20 ; 0x02 + c56: 53 83 std Z+3, r21 ; 0x03 + c58: 64 83 std Z+4, r22 ; 0x04 + c5a: 75 83 std Z+5, r23 ; 0x05 + c5c: 08 95 ret + +00000c5e <_ZN9IPAddresseqEPKh>: + c5e: 9b 01 movw r18, r22 + c60: bc 01 movw r22, r24 + c62: 6e 5f subi r22, 0xFE ; 254 + c64: 7f 4f sbci r23, 0xFF ; 255 + c66: c9 01 movw r24, r18 + c68: 44 e0 ldi r20, 0x04 ; 4 + c6a: 50 e0 ldi r21, 0x00 ; 0 + c6c: 0e 94 4c 25 call 0x4a98 ; 0x4a98 <memcmp> + c70: 9c 01 movw r18, r24 + c72: 81 e0 ldi r24, 0x01 ; 1 + c74: 21 15 cp r18, r1 + c76: 31 05 cpc r19, r1 + c78: 09 f0 breq .+2 ; 0xc7c <_ZN9IPAddresseqEPKh+0x1e> + c7a: 80 e0 ldi r24, 0x00 ; 0 + c7c: 08 95 ret + +00000c7e <_GLOBAL__I__ZN9IPAddressC2Ev>: + c7e: 89 e9 ldi r24, 0x99 ; 153 + c80: 91 e0 ldi r25, 0x01 ; 1 + c82: 90 93 82 03 sts 0x0382, r25 + c86: 80 93 81 03 sts 0x0381, r24 + c8a: 10 92 83 03 sts 0x0383, r1 + c8e: 10 92 84 03 sts 0x0384, r1 + c92: 10 92 85 03 sts 0x0385, r1 + c96: 10 92 86 03 sts 0x0386, r1 + c9a: 08 95 ret + +00000c9c <_ZN5Print5writeEPKhj>: + c9c: cf 92 push r12 + c9e: df 92 push r13 + ca0: ef 92 push r14 + ca2: ff 92 push r15 + ca4: 0f 93 push r16 + ca6: 1f 93 push r17 + ca8: cf 93 push r28 + caa: df 93 push r29 + cac: 6c 01 movw r12, r24 + cae: 7b 01 movw r14, r22 + cb0: 8a 01 movw r16, r20 + cb2: c0 e0 ldi r28, 0x00 ; 0 + cb4: d0 e0 ldi r29, 0x00 ; 0 + cb6: 0f c0 rjmp .+30 ; 0xcd6 <_ZN5Print5writeEPKhj+0x3a> + cb8: d7 01 movw r26, r14 + cba: 6d 91 ld r22, X+ + cbc: 7d 01 movw r14, r26 + cbe: d6 01 movw r26, r12 + cc0: ed 91 ld r30, X+ + cc2: fc 91 ld r31, X + cc4: 01 90 ld r0, Z+ + cc6: f0 81 ld r31, Z + cc8: e0 2d mov r30, r0 + cca: c6 01 movw r24, r12 + ccc: 09 95 icall + cce: c8 0f add r28, r24 + cd0: d9 1f adc r29, r25 + cd2: 01 50 subi r16, 0x01 ; 1 + cd4: 10 40 sbci r17, 0x00 ; 0 + cd6: 01 15 cp r16, r1 + cd8: 11 05 cpc r17, r1 + cda: 71 f7 brne .-36 ; 0xcb8 <_ZN5Print5writeEPKhj+0x1c> + cdc: ce 01 movw r24, r28 + cde: df 91 pop r29 + ce0: cf 91 pop r28 + ce2: 1f 91 pop r17 + ce4: 0f 91 pop r16 + ce6: ff 90 pop r15 + ce8: ef 90 pop r14 + cea: df 90 pop r13 + cec: cf 90 pop r12 + cee: 08 95 ret + +00000cf0 <_ZN5Print5writeEPKc>: + cf0: db 01 movw r26, r22 + cf2: 0d 90 ld r0, X+ + cf4: 00 20 and r0, r0 + cf6: e9 f7 brne .-6 ; 0xcf2 <_ZN5Print5writeEPKc+0x2> + cf8: ad 01 movw r20, r26 + cfa: 41 50 subi r20, 0x01 ; 1 + cfc: 50 40 sbci r21, 0x00 ; 0 + cfe: 46 1b sub r20, r22 + d00: 57 0b sbc r21, r23 + d02: dc 01 movw r26, r24 + d04: ed 91 ld r30, X+ + d06: fc 91 ld r31, X + d08: 02 80 ldd r0, Z+2 ; 0x02 + d0a: f3 81 ldd r31, Z+3 ; 0x03 + d0c: e0 2d mov r30, r0 + d0e: 09 95 icall + d10: 08 95 ret + +00000d12 <_ZN5Print5printEPK19__FlashStringHelper>: + d12: ef 92 push r14 + d14: ff 92 push r15 + d16: 0f 93 push r16 + d18: 1f 93 push r17 + d1a: cf 93 push r28 + d1c: df 93 push r29 + d1e: 7c 01 movw r14, r24 + d20: 06 2f mov r16, r22 + d22: 17 2f mov r17, r23 + d24: c0 e0 ldi r28, 0x00 ; 0 + d26: d0 e0 ldi r29, 0x00 ; 0 + d28: f8 01 movw r30, r16 + d2a: 0f 5f subi r16, 0xFF ; 255 + d2c: 1f 4f sbci r17, 0xFF ; 255 + d2e: 64 91 lpm r22, Z+ + d30: 66 23 and r22, r22 + d32: 51 f0 breq .+20 ; 0xd48 <_ZN5Print5printEPK19__FlashStringHelper+0x36> + d34: f7 01 movw r30, r14 + d36: a0 81 ld r26, Z + d38: b1 81 ldd r27, Z+1 ; 0x01 + d3a: ed 91 ld r30, X+ + d3c: fc 91 ld r31, X + d3e: c7 01 movw r24, r14 + d40: 09 95 icall + d42: c8 0f add r28, r24 + d44: d9 1f adc r29, r25 + d46: f0 cf rjmp .-32 ; 0xd28 <_ZN5Print5printEPK19__FlashStringHelper+0x16> + d48: ce 01 movw r24, r28 + d4a: df 91 pop r29 + d4c: cf 91 pop r28 + d4e: 1f 91 pop r17 + d50: 0f 91 pop r16 + d52: ff 90 pop r15 + d54: ef 90 pop r14 + d56: 08 95 ret + +00000d58 <_ZN5Print5printERK6String>: + d58: af 92 push r10 + d5a: bf 92 push r11 + d5c: cf 92 push r12 + d5e: df 92 push r13 + d60: ef 92 push r14 + d62: ff 92 push r15 + d64: 0f 93 push r16 + d66: 1f 93 push r17 + d68: cf 93 push r28 + d6a: df 93 push r29 + d6c: 7c 01 movw r14, r24 + d6e: 6b 01 movw r12, r22 + d70: c0 e0 ldi r28, 0x00 ; 0 + d72: d0 e0 ldi r29, 0x00 ; 0 + d74: 00 e0 ldi r16, 0x00 ; 0 + d76: 10 e0 ldi r17, 0x00 ; 0 + d78: 10 c0 rjmp .+32 ; 0xd9a <_ZN5Print5printERK6String+0x42> + d7a: d7 01 movw r26, r14 + d7c: ed 91 ld r30, X+ + d7e: fc 91 ld r31, X + d80: a0 80 ld r10, Z + d82: b1 80 ldd r11, Z+1 ; 0x01 + d84: c6 01 movw r24, r12 + d86: be 01 movw r22, r28 + d88: 0e 94 7e 14 call 0x28fc ; 0x28fc <_ZNK6StringixEj> + d8c: 68 2f mov r22, r24 + d8e: c7 01 movw r24, r14 + d90: f5 01 movw r30, r10 + d92: 09 95 icall + d94: 08 0f add r16, r24 + d96: 19 1f adc r17, r25 + d98: 21 96 adiw r28, 0x01 ; 1 + d9a: f6 01 movw r30, r12 + d9c: 84 81 ldd r24, Z+4 ; 0x04 + d9e: 95 81 ldd r25, Z+5 ; 0x05 + da0: c8 17 cp r28, r24 + da2: d9 07 cpc r29, r25 + da4: 50 f3 brcs .-44 ; 0xd7a <_ZN5Print5printERK6String+0x22> + da6: c8 01 movw r24, r16 + da8: df 91 pop r29 + daa: cf 91 pop r28 + dac: 1f 91 pop r17 + dae: 0f 91 pop r16 + db0: ff 90 pop r15 + db2: ef 90 pop r14 + db4: df 90 pop r13 + db6: cf 90 pop r12 + db8: bf 90 pop r11 + dba: af 90 pop r10 + dbc: 08 95 ret + +00000dbe <_ZN5Print5printEPKc>: + dbe: 0e 94 78 06 call 0xcf0 ; 0xcf0 <_ZN5Print5writeEPKc> + dc2: 08 95 ret + +00000dc4 <_ZN5Print5printEc>: + dc4: dc 01 movw r26, r24 + dc6: ed 91 ld r30, X+ + dc8: fc 91 ld r31, X + dca: 01 90 ld r0, Z+ + dcc: f0 81 ld r31, Z + dce: e0 2d mov r30, r0 + dd0: 09 95 icall + dd2: 08 95 ret + +00000dd4 <_ZN5Print5printERK9Printable>: + dd4: 9c 01 movw r18, r24 + dd6: cb 01 movw r24, r22 + dd8: db 01 movw r26, r22 + dda: ed 91 ld r30, X+ + ddc: fc 91 ld r31, X + dde: 01 90 ld r0, Z+ + de0: f0 81 ld r31, Z + de2: e0 2d mov r30, r0 + de4: b9 01 movw r22, r18 + de6: 09 95 icall + de8: 08 95 ret + +00000dea <_ZN5Print7printlnEv>: + dea: 0f 93 push r16 + dec: 1f 93 push r17 + dee: cf 93 push r28 + df0: df 93 push r29 + df2: ec 01 movw r28, r24 + df4: 6d e0 ldi r22, 0x0D ; 13 + df6: 0e 94 e2 06 call 0xdc4 ; 0xdc4 <_ZN5Print5printEc> + dfa: 8c 01 movw r16, r24 + dfc: ce 01 movw r24, r28 + dfe: 6a e0 ldi r22, 0x0A ; 10 + e00: 0e 94 e2 06 call 0xdc4 ; 0xdc4 <_ZN5Print5printEc> + e04: 08 0f add r16, r24 + e06: 19 1f adc r17, r25 + e08: c8 01 movw r24, r16 + e0a: df 91 pop r29 + e0c: cf 91 pop r28 + e0e: 1f 91 pop r17 + e10: 0f 91 pop r16 + e12: 08 95 ret + +00000e14 <_ZN5Print7printlnEPK19__FlashStringHelper>: + e14: 0f 93 push r16 + e16: 1f 93 push r17 + e18: cf 93 push r28 + e1a: df 93 push r29 + e1c: ec 01 movw r28, r24 + e1e: 0e 94 89 06 call 0xd12 ; 0xd12 <_ZN5Print5printEPK19__FlashStringHelper> + e22: 8c 01 movw r16, r24 + e24: ce 01 movw r24, r28 + e26: 0e 94 f5 06 call 0xdea ; 0xdea <_ZN5Print7printlnEv> + e2a: 08 0f add r16, r24 + e2c: 19 1f adc r17, r25 + e2e: c8 01 movw r24, r16 + e30: df 91 pop r29 + e32: cf 91 pop r28 + e34: 1f 91 pop r17 + e36: 0f 91 pop r16 + e38: 08 95 ret + +00000e3a <_ZN5Print7printlnERK6String>: + e3a: 0f 93 push r16 + e3c: 1f 93 push r17 + e3e: cf 93 push r28 + e40: df 93 push r29 + e42: ec 01 movw r28, r24 + e44: 0e 94 ac 06 call 0xd58 ; 0xd58 <_ZN5Print5printERK6String> + e48: 8c 01 movw r16, r24 + e4a: ce 01 movw r24, r28 + e4c: 0e 94 f5 06 call 0xdea ; 0xdea <_ZN5Print7printlnEv> + e50: 08 0f add r16, r24 + e52: 19 1f adc r17, r25 + e54: c8 01 movw r24, r16 + e56: df 91 pop r29 + e58: cf 91 pop r28 + e5a: 1f 91 pop r17 + e5c: 0f 91 pop r16 + e5e: 08 95 ret + +00000e60 <_ZN5Print7printlnEPKc>: + e60: 0f 93 push r16 + e62: 1f 93 push r17 + e64: cf 93 push r28 + e66: df 93 push r29 + e68: ec 01 movw r28, r24 + e6a: 0e 94 78 06 call 0xcf0 ; 0xcf0 <_ZN5Print5writeEPKc> + e6e: 8c 01 movw r16, r24 + e70: ce 01 movw r24, r28 + e72: 0e 94 f5 06 call 0xdea ; 0xdea <_ZN5Print7printlnEv> + e76: 08 0f add r16, r24 + e78: 19 1f adc r17, r25 + e7a: c8 01 movw r24, r16 + e7c: df 91 pop r29 + e7e: cf 91 pop r28 + e80: 1f 91 pop r17 + e82: 0f 91 pop r16 + e84: 08 95 ret + +00000e86 <_ZN5Print7printlnEc>: + e86: 0f 93 push r16 + e88: 1f 93 push r17 + e8a: cf 93 push r28 + e8c: df 93 push r29 + e8e: ec 01 movw r28, r24 + e90: 0e 94 e2 06 call 0xdc4 ; 0xdc4 <_ZN5Print5printEc> + e94: 8c 01 movw r16, r24 + e96: ce 01 movw r24, r28 + e98: 0e 94 f5 06 call 0xdea ; 0xdea <_ZN5Print7printlnEv> + e9c: 08 0f add r16, r24 + e9e: 19 1f adc r17, r25 + ea0: c8 01 movw r24, r16 + ea2: df 91 pop r29 + ea4: cf 91 pop r28 + ea6: 1f 91 pop r17 + ea8: 0f 91 pop r16 + eaa: 08 95 ret + +00000eac <_ZN5Print7printlnERK9Printable>: + eac: 0f 93 push r16 + eae: 1f 93 push r17 + eb0: cf 93 push r28 + eb2: df 93 push r29 + eb4: ec 01 movw r28, r24 + eb6: 0e 94 ea 06 call 0xdd4 ; 0xdd4 <_ZN5Print5printERK9Printable> + eba: 8c 01 movw r16, r24 + ebc: ce 01 movw r24, r28 + ebe: 0e 94 f5 06 call 0xdea ; 0xdea <_ZN5Print7printlnEv> + ec2: 08 0f add r16, r24 + ec4: 19 1f adc r17, r25 + ec6: c8 01 movw r24, r16 + ec8: df 91 pop r29 + eca: cf 91 pop r28 + ecc: 1f 91 pop r17 + ece: 0f 91 pop r16 + ed0: 08 95 ret + +00000ed2 <_ZN5Print11printNumberEmh>: + ed2: 8f 92 push r8 + ed4: 9f 92 push r9 + ed6: af 92 push r10 + ed8: bf 92 push r11 + eda: cf 92 push r12 + edc: df 92 push r13 + ede: ef 92 push r14 + ee0: ff 92 push r15 + ee2: 0f 93 push r16 + ee4: 1f 93 push r17 + ee6: df 93 push r29 + ee8: cf 93 push r28 + eea: cd b7 in r28, 0x3d ; 61 + eec: de b7 in r29, 0x3e ; 62 + eee: a1 97 sbiw r28, 0x21 ; 33 + ef0: 0f b6 in r0, 0x3f ; 63 + ef2: f8 94 cli + ef4: de bf out 0x3e, r29 ; 62 + ef6: 0f be out 0x3f, r0 ; 63 + ef8: cd bf out 0x3d, r28 ; 61 + efa: 6c 01 movw r12, r24 + efc: 04 2f mov r16, r20 + efe: e5 2f mov r30, r21 + f00: cb 01 movw r24, r22 + f02: 12 2f mov r17, r18 + f04: 19 a2 std Y+33, r1 ; 0x21 + f06: 22 30 cpi r18, 0x02 ; 2 + f08: 08 f4 brcc .+2 ; 0xf0c <_ZN5Print11printNumberEmh+0x3a> + f0a: 1a e0 ldi r17, 0x0A ; 10 + f0c: 21 e2 ldi r18, 0x21 ; 33 + f0e: e2 2e mov r14, r18 + f10: f1 2c mov r15, r1 + f12: ec 0e add r14, r28 + f14: fd 1e adc r15, r29 + f16: 81 2e mov r8, r17 + f18: 99 24 eor r9, r9 + f1a: aa 24 eor r10, r10 + f1c: bb 24 eor r11, r11 + f1e: 03 c0 rjmp .+6 ; 0xf26 <_ZN5Print11printNumberEmh+0x54> + f20: 02 2f mov r16, r18 + f22: e3 2f mov r30, r19 + f24: ca 01 movw r24, r20 + f26: 60 2f mov r22, r16 + f28: 7e 2f mov r23, r30 + f2a: a5 01 movw r20, r10 + f2c: 94 01 movw r18, r8 + f2e: 0e 94 2c 22 call 0x4458 ; 0x4458 <__udivmodsi4> + f32: 12 9f mul r17, r18 + f34: 80 2d mov r24, r0 + f36: 11 24 eor r1, r1 + f38: 08 1b sub r16, r24 + f3a: 08 94 sec + f3c: e1 08 sbc r14, r1 + f3e: f1 08 sbc r15, r1 + f40: 0a 30 cpi r16, 0x0A ; 10 + f42: 14 f4 brge .+4 ; 0xf48 <_ZN5Print11printNumberEmh+0x76> + f44: 00 5d subi r16, 0xD0 ; 208 + f46: 01 c0 rjmp .+2 ; 0xf4a <_ZN5Print11printNumberEmh+0x78> + f48: 09 5c subi r16, 0xC9 ; 201 + f4a: f7 01 movw r30, r14 + f4c: 00 83 st Z, r16 + f4e: 21 15 cp r18, r1 + f50: 31 05 cpc r19, r1 + f52: 41 05 cpc r20, r1 + f54: 51 05 cpc r21, r1 + f56: 21 f7 brne .-56 ; 0xf20 <_ZN5Print11printNumberEmh+0x4e> + f58: c6 01 movw r24, r12 + f5a: b7 01 movw r22, r14 + f5c: 0e 94 78 06 call 0xcf0 ; 0xcf0 <_ZN5Print5writeEPKc> + f60: a1 96 adiw r28, 0x21 ; 33 + f62: 0f b6 in r0, 0x3f ; 63 + f64: f8 94 cli + f66: de bf out 0x3e, r29 ; 62 + f68: 0f be out 0x3f, r0 ; 63 + f6a: cd bf out 0x3d, r28 ; 61 + f6c: cf 91 pop r28 + f6e: df 91 pop r29 + f70: 1f 91 pop r17 + f72: 0f 91 pop r16 + f74: ff 90 pop r15 + f76: ef 90 pop r14 + f78: df 90 pop r13 + f7a: cf 90 pop r12 + f7c: bf 90 pop r11 + f7e: af 90 pop r10 + f80: 9f 90 pop r9 + f82: 8f 90 pop r8 + f84: 08 95 ret + +00000f86 <_ZN5Print5printEmi>: + f86: 21 15 cp r18, r1 + f88: 31 05 cpc r19, r1 + f8a: 49 f4 brne .+18 ; 0xf9e <_ZN5Print5printEmi+0x18> + f8c: dc 01 movw r26, r24 + f8e: ed 91 ld r30, X+ + f90: fc 91 ld r31, X + f92: 01 90 ld r0, Z+ + f94: f0 81 ld r31, Z + f96: e0 2d mov r30, r0 + f98: 64 2f mov r22, r20 + f9a: 09 95 icall + f9c: 08 95 ret + f9e: 0e 94 69 07 call 0xed2 ; 0xed2 <_ZN5Print11printNumberEmh> + fa2: 08 95 ret + +00000fa4 <_ZN5Print7printlnEmi>: + fa4: 0f 93 push r16 + fa6: 1f 93 push r17 + fa8: cf 93 push r28 + faa: df 93 push r29 + fac: ec 01 movw r28, r24 + fae: 0e 94 c3 07 call 0xf86 ; 0xf86 <_ZN5Print5printEmi> + fb2: 8c 01 movw r16, r24 + fb4: ce 01 movw r24, r28 + fb6: 0e 94 f5 06 call 0xdea ; 0xdea <_ZN5Print7printlnEv> + fba: 08 0f add r16, r24 + fbc: 19 1f adc r17, r25 + fbe: c8 01 movw r24, r16 + fc0: df 91 pop r29 + fc2: cf 91 pop r28 + fc4: 1f 91 pop r17 + fc6: 0f 91 pop r16 + fc8: 08 95 ret + +00000fca <_ZN5Print5printEji>: + fca: 9a 01 movw r18, r20 + fcc: ab 01 movw r20, r22 + fce: 60 e0 ldi r22, 0x00 ; 0 + fd0: 70 e0 ldi r23, 0x00 ; 0 + fd2: 0e 94 c3 07 call 0xf86 ; 0xf86 <_ZN5Print5printEmi> + fd6: 08 95 ret + +00000fd8 <_ZN5Print7printlnEji>: + fd8: 0f 93 push r16 + fda: 1f 93 push r17 + fdc: cf 93 push r28 + fde: df 93 push r29 + fe0: ec 01 movw r28, r24 + fe2: 9a 01 movw r18, r20 + fe4: ab 01 movw r20, r22 + fe6: 60 e0 ldi r22, 0x00 ; 0 + fe8: 70 e0 ldi r23, 0x00 ; 0 + fea: 0e 94 c3 07 call 0xf86 ; 0xf86 <_ZN5Print5printEmi> + fee: 8c 01 movw r16, r24 + ff0: ce 01 movw r24, r28 + ff2: 0e 94 f5 06 call 0xdea ; 0xdea <_ZN5Print7printlnEv> + ff6: 08 0f add r16, r24 + ff8: 19 1f adc r17, r25 + ffa: c8 01 movw r24, r16 + ffc: df 91 pop r29 + ffe: cf 91 pop r28 + 1000: 1f 91 pop r17 + 1002: 0f 91 pop r16 + 1004: 08 95 ret + +00001006 <_ZN5Print5printEhi>: + 1006: 9a 01 movw r18, r20 + 1008: 46 2f mov r20, r22 + 100a: 50 e0 ldi r21, 0x00 ; 0 + 100c: 60 e0 ldi r22, 0x00 ; 0 + 100e: 70 e0 ldi r23, 0x00 ; 0 + 1010: 0e 94 c3 07 call 0xf86 ; 0xf86 <_ZN5Print5printEmi> + 1014: 08 95 ret + +00001016 <_ZN5Print7printlnEhi>: + 1016: 0f 93 push r16 + 1018: 1f 93 push r17 + 101a: cf 93 push r28 + 101c: df 93 push r29 + 101e: ec 01 movw r28, r24 + 1020: 9a 01 movw r18, r20 + 1022: 46 2f mov r20, r22 + 1024: 50 e0 ldi r21, 0x00 ; 0 + 1026: 60 e0 ldi r22, 0x00 ; 0 + 1028: 70 e0 ldi r23, 0x00 ; 0 + 102a: 0e 94 c3 07 call 0xf86 ; 0xf86 <_ZN5Print5printEmi> + 102e: 8c 01 movw r16, r24 + 1030: ce 01 movw r24, r28 + 1032: 0e 94 f5 06 call 0xdea ; 0xdea <_ZN5Print7printlnEv> + 1036: 08 0f add r16, r24 + 1038: 19 1f adc r17, r25 + 103a: c8 01 movw r24, r16 + 103c: df 91 pop r29 + 103e: cf 91 pop r28 + 1040: 1f 91 pop r17 + 1042: 0f 91 pop r16 + 1044: 08 95 ret + +00001046 <_ZN5Print5printEli>: + 1046: cf 92 push r12 + 1048: df 92 push r13 + 104a: ef 92 push r14 + 104c: ff 92 push r15 + 104e: 0f 93 push r16 + 1050: 1f 93 push r17 + 1052: cf 93 push r28 + 1054: df 93 push r29 + 1056: ec 01 movw r28, r24 + 1058: 7a 01 movw r14, r20 + 105a: 8b 01 movw r16, r22 + 105c: 21 15 cp r18, r1 + 105e: 31 05 cpc r19, r1 + 1060: 41 f4 brne .+16 ; 0x1072 <_ZN5Print5printEli+0x2c> + 1062: e8 81 ld r30, Y + 1064: f9 81 ldd r31, Y+1 ; 0x01 + 1066: 01 90 ld r0, Z+ + 1068: f0 81 ld r31, Z + 106a: e0 2d mov r30, r0 + 106c: 64 2f mov r22, r20 + 106e: 09 95 icall + 1070: 1a c0 rjmp .+52 ; 0x10a6 <_ZN5Print5printEli+0x60> + 1072: 2a 30 cpi r18, 0x0A ; 10 + 1074: 31 05 cpc r19, r1 + 1076: a9 f4 brne .+42 ; 0x10a2 <_ZN5Print5printEli+0x5c> + 1078: 77 ff sbrs r23, 7 + 107a: 12 c0 rjmp .+36 ; 0x10a0 <_ZN5Print5printEli+0x5a> + 107c: 6d e2 ldi r22, 0x2D ; 45 + 107e: 0e 94 e2 06 call 0xdc4 ; 0xdc4 <_ZN5Print5printEc> + 1082: 6c 01 movw r12, r24 + 1084: 44 27 eor r20, r20 + 1086: 55 27 eor r21, r21 + 1088: ba 01 movw r22, r20 + 108a: 4e 19 sub r20, r14 + 108c: 5f 09 sbc r21, r15 + 108e: 60 0b sbc r22, r16 + 1090: 71 0b sbc r23, r17 + 1092: ce 01 movw r24, r28 + 1094: 2a e0 ldi r18, 0x0A ; 10 + 1096: 0e 94 69 07 call 0xed2 ; 0xed2 <_ZN5Print11printNumberEmh> + 109a: c8 0e add r12, r24 + 109c: d9 1e adc r13, r25 + 109e: 04 c0 rjmp .+8 ; 0x10a8 <_ZN5Print5printEli+0x62> + 10a0: 2a e0 ldi r18, 0x0A ; 10 + 10a2: 0e 94 69 07 call 0xed2 ; 0xed2 <_ZN5Print11printNumberEmh> + 10a6: 6c 01 movw r12, r24 + 10a8: c6 01 movw r24, r12 + 10aa: df 91 pop r29 + 10ac: cf 91 pop r28 + 10ae: 1f 91 pop r17 + 10b0: 0f 91 pop r16 + 10b2: ff 90 pop r15 + 10b4: ef 90 pop r14 + 10b6: df 90 pop r13 + 10b8: cf 90 pop r12 + 10ba: 08 95 ret + +000010bc <_ZN5Print7printlnEli>: + 10bc: 0f 93 push r16 + 10be: 1f 93 push r17 + 10c0: cf 93 push r28 + 10c2: df 93 push r29 + 10c4: ec 01 movw r28, r24 + 10c6: 0e 94 23 08 call 0x1046 ; 0x1046 <_ZN5Print5printEli> + 10ca: 8c 01 movw r16, r24 + 10cc: ce 01 movw r24, r28 + 10ce: 0e 94 f5 06 call 0xdea ; 0xdea <_ZN5Print7printlnEv> + 10d2: 08 0f add r16, r24 + 10d4: 19 1f adc r17, r25 + 10d6: c8 01 movw r24, r16 + 10d8: df 91 pop r29 + 10da: cf 91 pop r28 + 10dc: 1f 91 pop r17 + 10de: 0f 91 pop r16 + 10e0: 08 95 ret + +000010e2 <_ZN5Print5printEii>: + 10e2: 9a 01 movw r18, r20 + 10e4: fb 01 movw r30, r22 + 10e6: af 01 movw r20, r30 + 10e8: 66 27 eor r22, r22 + 10ea: 57 fd sbrc r21, 7 + 10ec: 60 95 com r22 + 10ee: 76 2f mov r23, r22 + 10f0: 0e 94 23 08 call 0x1046 ; 0x1046 <_ZN5Print5printEli> + 10f4: 08 95 ret + +000010f6 <_ZN5Print7printlnEii>: + 10f6: 0f 93 push r16 + 10f8: 1f 93 push r17 + 10fa: cf 93 push r28 + 10fc: df 93 push r29 + 10fe: ec 01 movw r28, r24 + 1100: 9a 01 movw r18, r20 + 1102: cb 01 movw r24, r22 + 1104: ac 01 movw r20, r24 + 1106: 66 27 eor r22, r22 + 1108: 57 fd sbrc r21, 7 + 110a: 60 95 com r22 + 110c: 76 2f mov r23, r22 + 110e: ce 01 movw r24, r28 + 1110: 0e 94 23 08 call 0x1046 ; 0x1046 <_ZN5Print5printEli> + 1114: 8c 01 movw r16, r24 + 1116: ce 01 movw r24, r28 + 1118: 0e 94 f5 06 call 0xdea ; 0xdea <_ZN5Print7printlnEv> + 111c: 08 0f add r16, r24 + 111e: 19 1f adc r17, r25 + 1120: c8 01 movw r24, r16 + 1122: df 91 pop r29 + 1124: cf 91 pop r28 + 1126: 1f 91 pop r17 + 1128: 0f 91 pop r16 + 112a: 08 95 ret + +0000112c <_ZN5Print10printFloatEdh>: + 112c: 6f 92 push r6 + 112e: 7f 92 push r7 + 1130: 9f 92 push r9 + 1132: af 92 push r10 + 1134: bf 92 push r11 + 1136: cf 92 push r12 + 1138: df 92 push r13 + 113a: ef 92 push r14 + 113c: ff 92 push r15 + 113e: 0f 93 push r16 + 1140: 1f 93 push r17 + 1142: cf 93 push r28 + 1144: df 93 push r29 + 1146: 3c 01 movw r6, r24 + 1148: 7a 01 movw r14, r20 + 114a: 8b 01 movw r16, r22 + 114c: c2 2e mov r12, r18 + 114e: cb 01 movw r24, r22 + 1150: ba 01 movw r22, r20 + 1152: 20 e0 ldi r18, 0x00 ; 0 + 1154: 30 e0 ldi r19, 0x00 ; 0 + 1156: a9 01 movw r20, r18 + 1158: 0e 94 b6 1e call 0x3d6c ; 0x3d6c <__ltsf2> + 115c: 87 ff sbrs r24, 7 + 115e: 0a c0 rjmp .+20 ; 0x1174 <_ZN5Print10printFloatEdh+0x48> + 1160: c3 01 movw r24, r6 + 1162: 6d e2 ldi r22, 0x2D ; 45 + 1164: 0e 94 e2 06 call 0xdc4 ; 0xdc4 <_ZN5Print5printEc> + 1168: ec 01 movw r28, r24 + 116a: 17 fb bst r17, 7 + 116c: 10 95 com r17 + 116e: 17 f9 bld r17, 7 + 1170: 10 95 com r17 + 1172: 02 c0 rjmp .+4 ; 0x1178 <_ZN5Print10printFloatEdh+0x4c> + 1174: c0 e0 ldi r28, 0x00 ; 0 + 1176: d0 e0 ldi r29, 0x00 ; 0 + 1178: dd 24 eor r13, r13 + 117a: 50 e0 ldi r21, 0x00 ; 0 + 117c: 40 e0 ldi r20, 0x00 ; 0 + 117e: 30 e0 ldi r19, 0x00 ; 0 + 1180: 2f e3 ldi r18, 0x3F ; 63 + 1182: 11 c0 rjmp .+34 ; 0x11a6 <_ZN5Print10printFloatEdh+0x7a> + 1184: da 01 movw r26, r20 + 1186: f9 01 movw r30, r18 + 1188: 6b 2f mov r22, r27 + 118a: 74 2f mov r23, r20 + 118c: 8f 2f mov r24, r31 + 118e: 92 2f mov r25, r18 + 1190: 20 e0 ldi r18, 0x00 ; 0 + 1192: 30 e0 ldi r19, 0x00 ; 0 + 1194: 40 e2 ldi r20, 0x20 ; 32 + 1196: 51 e4 ldi r21, 0x41 ; 65 + 1198: 0e 94 d8 1d call 0x3bb0 ; 0x3bb0 <__divsf3> + 119c: 56 2f mov r21, r22 + 119e: 47 2f mov r20, r23 + 11a0: 38 2f mov r19, r24 + 11a2: 29 2f mov r18, r25 + 11a4: d3 94 inc r13 + 11a6: dc 14 cp r13, r12 + 11a8: 68 f3 brcs .-38 ; 0x1184 <_ZN5Print10printFloatEdh+0x58> + 11aa: c8 01 movw r24, r16 + 11ac: b7 01 movw r22, r14 + 11ae: da 01 movw r26, r20 + 11b0: f9 01 movw r30, r18 + 11b2: 2b 2f mov r18, r27 + 11b4: 34 2f mov r19, r20 + 11b6: 4f 2f mov r20, r31 + 11b8: 5e 2f mov r21, r30 + 11ba: 0e 94 80 1c call 0x3900 ; 0x3900 <__addsf3> + 11be: 5b 01 movw r10, r22 + 11c0: f8 2e mov r15, r24 + 11c2: 99 2e mov r9, r25 + 11c4: 7b 2d mov r23, r11 + 11c6: 0e 94 0a 1b call 0x3614 ; 0x3614 <__fixunssfsi> + 11ca: 16 2f mov r17, r22 + 11cc: d7 2e mov r13, r23 + 11ce: e8 2e mov r14, r24 + 11d0: 09 2f mov r16, r25 + 11d2: 0e 94 98 1f call 0x3f30 ; 0x3f30 <__floatunsisf> + 11d6: 9b 01 movw r18, r22 + 11d8: ac 01 movw r20, r24 + 11da: 6a 2d mov r22, r10 + 11dc: 7b 2d mov r23, r11 + 11de: 8f 2d mov r24, r15 + 11e0: 99 2d mov r25, r9 + 11e2: 0e 94 ad 1c call 0x395a ; 0x395a <__subsf3> + 11e6: 96 2e mov r9, r22 + 11e8: a7 2e mov r10, r23 + 11ea: b8 2e mov r11, r24 + 11ec: f9 2e mov r15, r25 + 11ee: c3 01 movw r24, r6 + 11f0: 41 2f mov r20, r17 + 11f2: 5d 2d mov r21, r13 + 11f4: 6e 2d mov r22, r14 + 11f6: 70 2f mov r23, r16 + 11f8: 2a e0 ldi r18, 0x0A ; 10 + 11fa: 30 e0 ldi r19, 0x00 ; 0 + 11fc: 0e 94 c3 07 call 0xf86 ; 0xf86 <_ZN5Print5printEmi> + 1200: c8 0f add r28, r24 + 1202: d9 1f adc r29, r25 + 1204: cc 20 and r12, r12 + 1206: b9 f1 breq .+110 ; 0x1276 <_ZN5Print10printFloatEdh+0x14a> + 1208: c3 01 movw r24, r6 + 120a: 61 ea ldi r22, 0xA1 ; 161 + 120c: 71 e0 ldi r23, 0x01 ; 1 + 120e: 0e 94 78 06 call 0xcf0 ; 0xcf0 <_ZN5Print5writeEPKc> + 1212: c8 0f add r28, r24 + 1214: d9 1f adc r29, r25 + 1216: 2f c0 rjmp .+94 ; 0x1276 <_ZN5Print10printFloatEdh+0x14a> + 1218: 69 2d mov r22, r9 + 121a: 7a 2d mov r23, r10 + 121c: 8b 2d mov r24, r11 + 121e: 9f 2d mov r25, r15 + 1220: 20 e0 ldi r18, 0x00 ; 0 + 1222: 30 e0 ldi r19, 0x00 ; 0 + 1224: 40 e2 ldi r20, 0x20 ; 32 + 1226: 51 e4 ldi r21, 0x41 ; 65 + 1228: 0e 94 de 1c call 0x39bc ; 0x39bc <__mulsf3> + 122c: d6 2e mov r13, r22 + 122e: b7 2e mov r11, r23 + 1230: a8 2e mov r10, r24 + 1232: 99 2e mov r9, r25 + 1234: 0e 94 46 1f call 0x3e8c ; 0x3e8c <__fixsfsi> + 1238: 7b 01 movw r14, r22 + 123a: 00 27 eor r16, r16 + 123c: f7 fc sbrc r15, 7 + 123e: 00 95 com r16 + 1240: 10 2f mov r17, r16 + 1242: c3 01 movw r24, r6 + 1244: b8 01 movw r22, r16 + 1246: a7 01 movw r20, r14 + 1248: 2a e0 ldi r18, 0x0A ; 10 + 124a: 30 e0 ldi r19, 0x00 ; 0 + 124c: 0e 94 23 08 call 0x1046 ; 0x1046 <_ZN5Print5printEli> + 1250: c8 0f add r28, r24 + 1252: d9 1f adc r29, r25 + 1254: c8 01 movw r24, r16 + 1256: b7 01 movw r22, r14 + 1258: 0e 94 e6 1e call 0x3dcc ; 0x3dcc <__floatsisf> + 125c: 9b 01 movw r18, r22 + 125e: ac 01 movw r20, r24 + 1260: 6d 2d mov r22, r13 + 1262: 7b 2d mov r23, r11 + 1264: 8a 2d mov r24, r10 + 1266: 99 2d mov r25, r9 + 1268: 0e 94 ad 1c call 0x395a ; 0x395a <__subsf3> + 126c: 96 2e mov r9, r22 + 126e: a7 2e mov r10, r23 + 1270: b8 2e mov r11, r24 + 1272: f9 2e mov r15, r25 + 1274: ca 94 dec r12 + 1276: cc 20 and r12, r12 + 1278: 79 f6 brne .-98 ; 0x1218 <_ZN5Print10printFloatEdh+0xec> + 127a: ce 01 movw r24, r28 + 127c: df 91 pop r29 + 127e: cf 91 pop r28 + 1280: 1f 91 pop r17 + 1282: 0f 91 pop r16 + 1284: ff 90 pop r15 + 1286: ef 90 pop r14 + 1288: df 90 pop r13 + 128a: cf 90 pop r12 + 128c: bf 90 pop r11 + 128e: af 90 pop r10 + 1290: 9f 90 pop r9 + 1292: 7f 90 pop r7 + 1294: 6f 90 pop r6 + 1296: 08 95 ret + +00001298 <_ZN5Print5printEdi>: + 1298: 0e 94 96 08 call 0x112c ; 0x112c <_ZN5Print10printFloatEdh> + 129c: 08 95 ret + +0000129e <_ZN5Print7printlnEdi>: + 129e: 0f 93 push r16 + 12a0: 1f 93 push r17 + 12a2: cf 93 push r28 + 12a4: df 93 push r29 + 12a6: ec 01 movw r28, r24 + 12a8: 0e 94 96 08 call 0x112c ; 0x112c <_ZN5Print10printFloatEdh> + 12ac: 8c 01 movw r16, r24 + 12ae: ce 01 movw r24, r28 + 12b0: 0e 94 f5 06 call 0xdea ; 0xdea <_ZN5Print7printlnEv> + 12b4: 08 0f add r16, r24 + 12b6: 19 1f adc r17, r25 + 12b8: c8 01 movw r24, r16 + 12ba: df 91 pop r29 + 12bc: cf 91 pop r28 + 12be: 1f 91 pop r17 + 12c0: 0f 91 pop r16 + 12c2: 08 95 ret + +000012c4 <_ZN6Stream9timedReadEv>: + 12c4: cf 93 push r28 + 12c6: df 93 push r29 + 12c8: ec 01 movw r28, r24 + 12ca: 0e 94 16 18 call 0x302c ; 0x302c <millis> + 12ce: 68 87 std Y+8, r22 ; 0x08 + 12d0: 79 87 std Y+9, r23 ; 0x09 + 12d2: 8a 87 std Y+10, r24 ; 0x0a + 12d4: 9b 87 std Y+11, r25 ; 0x0b + 12d6: e8 81 ld r30, Y + 12d8: f9 81 ldd r31, Y+1 ; 0x01 + 12da: 06 80 ldd r0, Z+6 ; 0x06 + 12dc: f7 81 ldd r31, Z+7 ; 0x07 + 12de: e0 2d mov r30, r0 + 12e0: ce 01 movw r24, r28 + 12e2: 09 95 icall + 12e4: 9c 01 movw r18, r24 + 12e6: 97 ff sbrs r25, 7 + 12e8: 15 c0 rjmp .+42 ; 0x1314 <_ZN6Stream9timedReadEv+0x50> + 12ea: 0e 94 16 18 call 0x302c ; 0x302c <millis> + 12ee: 28 85 ldd r18, Y+8 ; 0x08 + 12f0: 39 85 ldd r19, Y+9 ; 0x09 + 12f2: 4a 85 ldd r20, Y+10 ; 0x0a + 12f4: 5b 85 ldd r21, Y+11 ; 0x0b + 12f6: 62 1b sub r22, r18 + 12f8: 73 0b sbc r23, r19 + 12fa: 84 0b sbc r24, r20 + 12fc: 95 0b sbc r25, r21 + 12fe: 2c 81 ldd r18, Y+4 ; 0x04 + 1300: 3d 81 ldd r19, Y+5 ; 0x05 + 1302: 4e 81 ldd r20, Y+6 ; 0x06 + 1304: 5f 81 ldd r21, Y+7 ; 0x07 + 1306: 62 17 cp r22, r18 + 1308: 73 07 cpc r23, r19 + 130a: 84 07 cpc r24, r20 + 130c: 95 07 cpc r25, r21 + 130e: 18 f3 brcs .-58 ; 0x12d6 <_ZN6Stream9timedReadEv+0x12> + 1310: 2f ef ldi r18, 0xFF ; 255 + 1312: 3f ef ldi r19, 0xFF ; 255 + 1314: c9 01 movw r24, r18 + 1316: df 91 pop r29 + 1318: cf 91 pop r28 + 131a: 08 95 ret + +0000131c <_ZN6Stream9timedPeekEv>: + 131c: cf 93 push r28 + 131e: df 93 push r29 + 1320: ec 01 movw r28, r24 + 1322: 0e 94 16 18 call 0x302c ; 0x302c <millis> + 1326: 68 87 std Y+8, r22 ; 0x08 + 1328: 79 87 std Y+9, r23 ; 0x09 + 132a: 8a 87 std Y+10, r24 ; 0x0a + 132c: 9b 87 std Y+11, r25 ; 0x0b + 132e: e8 81 ld r30, Y + 1330: f9 81 ldd r31, Y+1 ; 0x01 + 1332: 00 84 ldd r0, Z+8 ; 0x08 + 1334: f1 85 ldd r31, Z+9 ; 0x09 + 1336: e0 2d mov r30, r0 + 1338: ce 01 movw r24, r28 + 133a: 09 95 icall + 133c: 9c 01 movw r18, r24 + 133e: 97 ff sbrs r25, 7 + 1340: 15 c0 rjmp .+42 ; 0x136c <_ZN6Stream9timedPeekEv+0x50> + 1342: 0e 94 16 18 call 0x302c ; 0x302c <millis> + 1346: 28 85 ldd r18, Y+8 ; 0x08 + 1348: 39 85 ldd r19, Y+9 ; 0x09 + 134a: 4a 85 ldd r20, Y+10 ; 0x0a + 134c: 5b 85 ldd r21, Y+11 ; 0x0b + 134e: 62 1b sub r22, r18 + 1350: 73 0b sbc r23, r19 + 1352: 84 0b sbc r24, r20 + 1354: 95 0b sbc r25, r21 + 1356: 2c 81 ldd r18, Y+4 ; 0x04 + 1358: 3d 81 ldd r19, Y+5 ; 0x05 + 135a: 4e 81 ldd r20, Y+6 ; 0x06 + 135c: 5f 81 ldd r21, Y+7 ; 0x07 + 135e: 62 17 cp r22, r18 + 1360: 73 07 cpc r23, r19 + 1362: 84 07 cpc r24, r20 + 1364: 95 07 cpc r25, r21 + 1366: 18 f3 brcs .-58 ; 0x132e <_ZN6Stream9timedPeekEv+0x12> + 1368: 2f ef ldi r18, 0xFF ; 255 + 136a: 3f ef ldi r19, 0xFF ; 255 + 136c: c9 01 movw r24, r18 + 136e: df 91 pop r29 + 1370: cf 91 pop r28 + 1372: 08 95 ret + +00001374 <_ZN6Stream13peekNextDigitEv>: + 1374: cf 93 push r28 + 1376: df 93 push r29 + 1378: ec 01 movw r28, r24 + 137a: ce 01 movw r24, r28 + 137c: 0e 94 8e 09 call 0x131c ; 0x131c <_ZN6Stream9timedPeekEv> + 1380: 9c 01 movw r18, r24 + 1382: 97 fd sbrc r25, 7 + 1384: 0f c0 rjmp .+30 ; 0x13a4 <_ZN6Stream13peekNextDigitEv+0x30> + 1386: 8d 32 cpi r24, 0x2D ; 45 + 1388: 91 05 cpc r25, r1 + 138a: 61 f0 breq .+24 ; 0x13a4 <_ZN6Stream13peekNextDigitEv+0x30> + 138c: c0 97 sbiw r24, 0x30 ; 48 + 138e: 8a 30 cpi r24, 0x0A ; 10 + 1390: 91 05 cpc r25, r1 + 1392: 40 f0 brcs .+16 ; 0x13a4 <_ZN6Stream13peekNextDigitEv+0x30> + 1394: e8 81 ld r30, Y + 1396: f9 81 ldd r31, Y+1 ; 0x01 + 1398: 06 80 ldd r0, Z+6 ; 0x06 + 139a: f7 81 ldd r31, Z+7 ; 0x07 + 139c: e0 2d mov r30, r0 + 139e: ce 01 movw r24, r28 + 13a0: 09 95 icall + 13a2: eb cf rjmp .-42 ; 0x137a <_ZN6Stream13peekNextDigitEv+0x6> + 13a4: c9 01 movw r24, r18 + 13a6: df 91 pop r29 + 13a8: cf 91 pop r28 + 13aa: 08 95 ret + +000013ac <_ZN6Stream10setTimeoutEm>: + 13ac: fc 01 movw r30, r24 + 13ae: 44 83 std Z+4, r20 ; 0x04 + 13b0: 55 83 std Z+5, r21 ; 0x05 + 13b2: 66 83 std Z+6, r22 ; 0x06 + 13b4: 77 83 std Z+7, r23 ; 0x07 + 13b6: 08 95 ret + +000013b8 <_ZN6Stream9findUntilEPcjS0_j>: + 13b8: 6f 92 push r6 + 13ba: 7f 92 push r7 + 13bc: 8f 92 push r8 + 13be: 9f 92 push r9 + 13c0: af 92 push r10 + 13c2: bf 92 push r11 + 13c4: cf 92 push r12 + 13c6: df 92 push r13 + 13c8: ef 92 push r14 + 13ca: ff 92 push r15 + 13cc: 0f 93 push r16 + 13ce: 1f 93 push r17 + 13d0: cf 93 push r28 + 13d2: df 93 push r29 + 13d4: 3c 01 movw r6, r24 + 13d6: 6b 01 movw r12, r22 + 13d8: 4a 01 movw r8, r20 + 13da: 59 01 movw r10, r18 + 13dc: 78 01 movw r14, r16 + 13de: fb 01 movw r30, r22 + 13e0: 80 81 ld r24, Z + 13e2: 88 23 and r24, r24 + 13e4: 91 f1 breq .+100 ; 0x144a <_ZN6Stream9findUntilEPcjS0_j+0x92> + 13e6: c0 e0 ldi r28, 0x00 ; 0 + 13e8: d0 e0 ldi r29, 0x00 ; 0 + 13ea: 00 e0 ldi r16, 0x00 ; 0 + 13ec: 10 e0 ldi r17, 0x00 ; 0 + 13ee: 26 c0 rjmp .+76 ; 0x143c <_ZN6Stream9findUntilEPcjS0_j+0x84> + 13f0: f6 01 movw r30, r12 + 13f2: e0 0f add r30, r16 + 13f4: f1 1f adc r31, r17 + 13f6: 20 81 ld r18, Z + 13f8: 33 27 eor r19, r19 + 13fa: 27 fd sbrc r18, 7 + 13fc: 30 95 com r19 + 13fe: 82 17 cp r24, r18 + 1400: 93 07 cpc r25, r19 + 1402: 31 f4 brne .+12 ; 0x1410 <_ZN6Stream9findUntilEPcjS0_j+0x58> + 1404: 0f 5f subi r16, 0xFF ; 255 + 1406: 1f 4f sbci r17, 0xFF ; 255 + 1408: 08 15 cp r16, r8 + 140a: 19 05 cpc r17, r9 + 140c: 18 f0 brcs .+6 ; 0x1414 <_ZN6Stream9findUntilEPcjS0_j+0x5c> + 140e: 1d c0 rjmp .+58 ; 0x144a <_ZN6Stream9findUntilEPcjS0_j+0x92> + 1410: 00 e0 ldi r16, 0x00 ; 0 + 1412: 10 e0 ldi r17, 0x00 ; 0 + 1414: e1 14 cp r14, r1 + 1416: f1 04 cpc r15, r1 + 1418: 79 f0 breq .+30 ; 0x1438 <_ZN6Stream9findUntilEPcjS0_j+0x80> + 141a: f5 01 movw r30, r10 + 141c: ec 0f add r30, r28 + 141e: fd 1f adc r31, r29 + 1420: 20 81 ld r18, Z + 1422: 33 27 eor r19, r19 + 1424: 27 fd sbrc r18, 7 + 1426: 30 95 com r19 + 1428: 82 17 cp r24, r18 + 142a: 93 07 cpc r25, r19 + 142c: 29 f4 brne .+10 ; 0x1438 <_ZN6Stream9findUntilEPcjS0_j+0x80> + 142e: 21 96 adiw r28, 0x01 ; 1 + 1430: ce 15 cp r28, r14 + 1432: df 05 cpc r29, r15 + 1434: 18 f0 brcs .+6 ; 0x143c <_ZN6Stream9findUntilEPcjS0_j+0x84> + 1436: 0b c0 rjmp .+22 ; 0x144e <_ZN6Stream9findUntilEPcjS0_j+0x96> + 1438: c0 e0 ldi r28, 0x00 ; 0 + 143a: d0 e0 ldi r29, 0x00 ; 0 + 143c: c3 01 movw r24, r6 + 143e: 0e 94 62 09 call 0x12c4 ; 0x12c4 <_ZN6Stream9timedReadEv> + 1442: 18 16 cp r1, r24 + 1444: 19 06 cpc r1, r25 + 1446: a4 f2 brlt .-88 ; 0x13f0 <_ZN6Stream9findUntilEPcjS0_j+0x38> + 1448: 02 c0 rjmp .+4 ; 0x144e <_ZN6Stream9findUntilEPcjS0_j+0x96> + 144a: 81 e0 ldi r24, 0x01 ; 1 + 144c: 01 c0 rjmp .+2 ; 0x1450 <_ZN6Stream9findUntilEPcjS0_j+0x98> + 144e: 80 e0 ldi r24, 0x00 ; 0 + 1450: df 91 pop r29 + 1452: cf 91 pop r28 + 1454: 1f 91 pop r17 + 1456: 0f 91 pop r16 + 1458: ff 90 pop r15 + 145a: ef 90 pop r14 + 145c: df 90 pop r13 + 145e: cf 90 pop r12 + 1460: bf 90 pop r11 + 1462: af 90 pop r10 + 1464: 9f 90 pop r9 + 1466: 8f 90 pop r8 + 1468: 7f 90 pop r7 + 146a: 6f 90 pop r6 + 146c: 08 95 ret + +0000146e <_ZN6Stream9findUntilEPcS0_>: + 146e: 0f 93 push r16 + 1470: 1f 93 push r17 + 1472: cf 93 push r28 + 1474: df 93 push r29 + 1476: 9a 01 movw r18, r20 + 1478: fb 01 movw r30, r22 + 147a: 01 90 ld r0, Z+ + 147c: 00 20 and r0, r0 + 147e: e9 f7 brne .-6 ; 0x147a <_ZN6Stream9findUntilEPcS0_+0xc> + 1480: 31 97 sbiw r30, 0x01 ; 1 + 1482: e6 1b sub r30, r22 + 1484: f7 0b sbc r31, r23 + 1486: ea 01 movw r28, r20 + 1488: 09 90 ld r0, Y+ + 148a: 00 20 and r0, r0 + 148c: e9 f7 brne .-6 ; 0x1488 <_ZN6Stream9findUntilEPcS0_+0x1a> + 148e: 8e 01 movw r16, r28 + 1490: 01 50 subi r16, 0x01 ; 1 + 1492: 10 40 sbci r17, 0x00 ; 0 + 1494: 04 1b sub r16, r20 + 1496: 15 0b sbc r17, r21 + 1498: af 01 movw r20, r30 + 149a: 0e 94 dc 09 call 0x13b8 ; 0x13b8 <_ZN6Stream9findUntilEPcjS0_j> + 149e: df 91 pop r29 + 14a0: cf 91 pop r28 + 14a2: 1f 91 pop r17 + 14a4: 0f 91 pop r16 + 14a6: 08 95 ret + +000014a8 <_ZN6Stream4findEPc>: + 14a8: 40 e0 ldi r20, 0x00 ; 0 + 14aa: 50 e0 ldi r21, 0x00 ; 0 + 14ac: 0e 94 37 0a call 0x146e ; 0x146e <_ZN6Stream9findUntilEPcS0_> + 14b0: 08 95 ret + +000014b2 <_ZN6Stream4findEPcj>: + 14b2: 0f 93 push r16 + 14b4: 1f 93 push r17 + 14b6: 20 e0 ldi r18, 0x00 ; 0 + 14b8: 30 e0 ldi r19, 0x00 ; 0 + 14ba: 00 e0 ldi r16, 0x00 ; 0 + 14bc: 10 e0 ldi r17, 0x00 ; 0 + 14be: 0e 94 dc 09 call 0x13b8 ; 0x13b8 <_ZN6Stream9findUntilEPcjS0_j> + 14c2: 1f 91 pop r17 + 14c4: 0f 91 pop r16 + 14c6: 08 95 ret + +000014c8 <_ZN6Stream8parseIntEc>: + 14c8: 9f 92 push r9 + 14ca: af 92 push r10 + 14cc: bf 92 push r11 + 14ce: cf 92 push r12 + 14d0: df 92 push r13 + 14d2: ef 92 push r14 + 14d4: ff 92 push r15 + 14d6: 0f 93 push r16 + 14d8: 1f 93 push r17 + 14da: cf 93 push r28 + 14dc: df 93 push r29 + 14de: 6c 01 movw r12, r24 + 14e0: a6 2e mov r10, r22 + 14e2: 0e 94 ba 09 call 0x1374 ; 0x1374 <_ZN6Stream13peekNextDigitEv> + 14e6: ec 01 movw r28, r24 + 14e8: 97 fd sbrc r25, 7 + 14ea: 4e c0 rjmp .+156 ; 0x1588 <_ZN6Stream8parseIntEc+0xc0> + 14ec: ee 24 eor r14, r14 + 14ee: ff 24 eor r15, r15 + 14f0: 87 01 movw r16, r14 + 14f2: 99 24 eor r9, r9 + 14f4: bb 24 eor r11, r11 + 14f6: a7 fc sbrc r10, 7 + 14f8: b0 94 com r11 + 14fa: ca 15 cp r28, r10 + 14fc: db 05 cpc r29, r11 + 14fe: 31 f1 breq .+76 ; 0x154c <_ZN6Stream8parseIntEc+0x84> + 1500: cd 32 cpi r28, 0x2D ; 45 + 1502: d1 05 cpc r29, r1 + 1504: 09 f1 breq .+66 ; 0x1548 <_ZN6Stream8parseIntEc+0x80> + 1506: ce 01 movw r24, r28 + 1508: c0 97 sbiw r24, 0x30 ; 48 + 150a: 8a 30 cpi r24, 0x0A ; 10 + 150c: 91 05 cpc r25, r1 + 150e: f0 f4 brcc .+60 ; 0x154c <_ZN6Stream8parseIntEc+0x84> + 1510: c8 01 movw r24, r16 + 1512: b7 01 movw r22, r14 + 1514: 2a e0 ldi r18, 0x0A ; 10 + 1516: 30 e0 ldi r19, 0x00 ; 0 + 1518: 40 e0 ldi r20, 0x00 ; 0 + 151a: 50 e0 ldi r21, 0x00 ; 0 + 151c: 0e 94 fa 21 call 0x43f4 ; 0x43f4 <__mulsi3> + 1520: 7b 01 movw r14, r22 + 1522: 8c 01 movw r16, r24 + 1524: ce 01 movw r24, r28 + 1526: aa 27 eor r26, r26 + 1528: 97 fd sbrc r25, 7 + 152a: a0 95 com r26 + 152c: ba 2f mov r27, r26 + 152e: e8 0e add r14, r24 + 1530: f9 1e adc r15, r25 + 1532: 0a 1f adc r16, r26 + 1534: 1b 1f adc r17, r27 + 1536: 80 ed ldi r24, 0xD0 ; 208 + 1538: 9f ef ldi r25, 0xFF ; 255 + 153a: af ef ldi r26, 0xFF ; 255 + 153c: bf ef ldi r27, 0xFF ; 255 + 153e: e8 0e add r14, r24 + 1540: f9 1e adc r15, r25 + 1542: 0a 1f adc r16, r26 + 1544: 1b 1f adc r17, r27 + 1546: 02 c0 rjmp .+4 ; 0x154c <_ZN6Stream8parseIntEc+0x84> + 1548: 99 24 eor r9, r9 + 154a: 93 94 inc r9 + 154c: d6 01 movw r26, r12 + 154e: ed 91 ld r30, X+ + 1550: fc 91 ld r31, X + 1552: 06 80 ldd r0, Z+6 ; 0x06 + 1554: f7 81 ldd r31, Z+7 ; 0x07 + 1556: e0 2d mov r30, r0 + 1558: c6 01 movw r24, r12 + 155a: 09 95 icall + 155c: c6 01 movw r24, r12 + 155e: 0e 94 8e 09 call 0x131c ; 0x131c <_ZN6Stream9timedPeekEv> + 1562: ec 01 movw r28, r24 + 1564: c0 97 sbiw r24, 0x30 ; 48 + 1566: 8a 30 cpi r24, 0x0A ; 10 + 1568: 91 05 cpc r25, r1 + 156a: 38 f2 brcs .-114 ; 0x14fa <_ZN6Stream8parseIntEc+0x32> + 156c: ca 15 cp r28, r10 + 156e: db 05 cpc r29, r11 + 1570: 21 f2 breq .-120 ; 0x14fa <_ZN6Stream8parseIntEc+0x32> + 1572: 99 20 and r9, r9 + 1574: 61 f0 breq .+24 ; 0x158e <_ZN6Stream8parseIntEc+0xc6> + 1576: 10 95 com r17 + 1578: 00 95 com r16 + 157a: f0 94 com r15 + 157c: e0 94 com r14 + 157e: e1 1c adc r14, r1 + 1580: f1 1c adc r15, r1 + 1582: 01 1d adc r16, r1 + 1584: 11 1d adc r17, r1 + 1586: 03 c0 rjmp .+6 ; 0x158e <_ZN6Stream8parseIntEc+0xc6> + 1588: ee 24 eor r14, r14 + 158a: ff 24 eor r15, r15 + 158c: 87 01 movw r16, r14 + 158e: b7 01 movw r22, r14 + 1590: c8 01 movw r24, r16 + 1592: df 91 pop r29 + 1594: cf 91 pop r28 + 1596: 1f 91 pop r17 + 1598: 0f 91 pop r16 + 159a: ff 90 pop r15 + 159c: ef 90 pop r14 + 159e: df 90 pop r13 + 15a0: cf 90 pop r12 + 15a2: bf 90 pop r11 + 15a4: af 90 pop r10 + 15a6: 9f 90 pop r9 + 15a8: 08 95 ret + +000015aa <_ZN6Stream8parseIntEv>: + 15aa: 61 e0 ldi r22, 0x01 ; 1 + 15ac: 0e 94 64 0a call 0x14c8 ; 0x14c8 <_ZN6Stream8parseIntEc> + 15b0: 08 95 ret + +000015b2 <_ZN6Stream10parseFloatEc>: + 15b2: 6f 92 push r6 + 15b4: 7f 92 push r7 + 15b6: 8f 92 push r8 + 15b8: 9f 92 push r9 + 15ba: af 92 push r10 + 15bc: bf 92 push r11 + 15be: cf 92 push r12 + 15c0: df 92 push r13 + 15c2: ef 92 push r14 + 15c4: ff 92 push r15 + 15c6: 0f 93 push r16 + 15c8: 1f 93 push r17 + 15ca: cf 93 push r28 + 15cc: df 93 push r29 + 15ce: ec 01 movw r28, r24 + 15d0: 76 2e mov r7, r22 + 15d2: 0e 94 ba 09 call 0x1374 ; 0x1374 <_ZN6Stream13peekNextDigitEv> + 15d6: d8 2e mov r13, r24 + 15d8: 87 fd sbrc r24, 7 + 15da: 7d c0 rjmp .+250 ; 0x16d6 <_ZN6Stream10parseFloatEc+0x124> + 15dc: bb 24 eor r11, r11 + 15de: aa 24 eor r10, r10 + 15e0: 90 e8 ldi r25, 0x80 ; 128 + 15e2: 99 2e mov r9, r25 + 15e4: 8f e3 ldi r24, 0x3F ; 63 + 15e6: 88 2e mov r8, r24 + 15e8: ee 24 eor r14, r14 + 15ea: ff 24 eor r15, r15 + 15ec: 87 01 movw r16, r14 + 15ee: cc 24 eor r12, r12 + 15f0: 66 24 eor r6, r6 + 15f2: d7 14 cp r13, r7 + 15f4: e1 f1 breq .+120 ; 0x166e <_ZN6Stream10parseFloatEc+0xbc> + 15f6: 8d 2d mov r24, r13 + 15f8: 8d 32 cpi r24, 0x2D ; 45 + 15fa: a1 f1 breq .+104 ; 0x1664 <_ZN6Stream10parseFloatEc+0xb2> + 15fc: 8e 32 cpi r24, 0x2E ; 46 + 15fe: a9 f1 breq .+106 ; 0x166a <_ZN6Stream10parseFloatEc+0xb8> + 1600: 80 53 subi r24, 0x30 ; 48 + 1602: 8a 30 cpi r24, 0x0A ; 10 + 1604: a0 f5 brcc .+104 ; 0x166e <_ZN6Stream10parseFloatEc+0xbc> + 1606: c8 01 movw r24, r16 + 1608: b7 01 movw r22, r14 + 160a: 2a e0 ldi r18, 0x0A ; 10 + 160c: 30 e0 ldi r19, 0x00 ; 0 + 160e: 40 e0 ldi r20, 0x00 ; 0 + 1610: 50 e0 ldi r21, 0x00 ; 0 + 1612: 0e 94 fa 21 call 0x43f4 ; 0x43f4 <__mulsi3> + 1616: 7b 01 movw r14, r22 + 1618: 8c 01 movw r16, r24 + 161a: 8d 2d mov r24, r13 + 161c: 99 27 eor r25, r25 + 161e: 87 fd sbrc r24, 7 + 1620: 90 95 com r25 + 1622: a9 2f mov r26, r25 + 1624: b9 2f mov r27, r25 + 1626: e8 0e add r14, r24 + 1628: f9 1e adc r15, r25 + 162a: 0a 1f adc r16, r26 + 162c: 1b 1f adc r17, r27 + 162e: 80 ed ldi r24, 0xD0 ; 208 + 1630: 9f ef ldi r25, 0xFF ; 255 + 1632: af ef ldi r26, 0xFF ; 255 + 1634: bf ef ldi r27, 0xFF ; 255 + 1636: e8 0e add r14, r24 + 1638: f9 1e adc r15, r25 + 163a: 0a 1f adc r16, r26 + 163c: 1b 1f adc r17, r27 + 163e: cc 20 and r12, r12 + 1640: b1 f0 breq .+44 ; 0x166e <_ZN6Stream10parseFloatEc+0xbc> + 1642: a5 01 movw r20, r10 + 1644: 94 01 movw r18, r8 + 1646: 65 2f mov r22, r21 + 1648: 7a 2d mov r23, r10 + 164a: 83 2f mov r24, r19 + 164c: 98 2d mov r25, r8 + 164e: 2d ec ldi r18, 0xCD ; 205 + 1650: 3c ec ldi r19, 0xCC ; 204 + 1652: 4c ec ldi r20, 0xCC ; 204 + 1654: 5d e3 ldi r21, 0x3D ; 61 + 1656: 0e 94 de 1c call 0x39bc ; 0x39bc <__mulsf3> + 165a: b6 2e mov r11, r22 + 165c: a7 2e mov r10, r23 + 165e: 98 2e mov r9, r24 + 1660: 89 2e mov r8, r25 + 1662: 05 c0 rjmp .+10 ; 0x166e <_ZN6Stream10parseFloatEc+0xbc> + 1664: 66 24 eor r6, r6 + 1666: 63 94 inc r6 + 1668: 02 c0 rjmp .+4 ; 0x166e <_ZN6Stream10parseFloatEc+0xbc> + 166a: cc 24 eor r12, r12 + 166c: c3 94 inc r12 + 166e: e8 81 ld r30, Y + 1670: f9 81 ldd r31, Y+1 ; 0x01 + 1672: 06 80 ldd r0, Z+6 ; 0x06 + 1674: f7 81 ldd r31, Z+7 ; 0x07 + 1676: e0 2d mov r30, r0 + 1678: ce 01 movw r24, r28 + 167a: 09 95 icall + 167c: ce 01 movw r24, r28 + 167e: 0e 94 8e 09 call 0x131c ; 0x131c <_ZN6Stream9timedPeekEv> + 1682: d8 2e mov r13, r24 + 1684: 98 2f mov r25, r24 + 1686: 90 53 subi r25, 0x30 ; 48 + 1688: 9a 30 cpi r25, 0x0A ; 10 + 168a: 08 f4 brcc .+2 ; 0x168e <_ZN6Stream10parseFloatEc+0xdc> + 168c: b2 cf rjmp .-156 ; 0x15f2 <_ZN6Stream10parseFloatEc+0x40> + 168e: 8e 32 cpi r24, 0x2E ; 46 + 1690: 09 f4 brne .+2 ; 0x1694 <_ZN6Stream10parseFloatEc+0xe2> + 1692: af cf rjmp .-162 ; 0x15f2 <_ZN6Stream10parseFloatEc+0x40> + 1694: 87 15 cp r24, r7 + 1696: 09 f4 brne .+2 ; 0x169a <_ZN6Stream10parseFloatEc+0xe8> + 1698: ac cf rjmp .-168 ; 0x15f2 <_ZN6Stream10parseFloatEc+0x40> + 169a: 66 20 and r6, r6 + 169c: 41 f0 breq .+16 ; 0x16ae <_ZN6Stream10parseFloatEc+0xfc> + 169e: 10 95 com r17 + 16a0: 00 95 com r16 + 16a2: f0 94 com r15 + 16a4: e0 94 com r14 + 16a6: e1 1c adc r14, r1 + 16a8: f1 1c adc r15, r1 + 16aa: 01 1d adc r16, r1 + 16ac: 11 1d adc r17, r1 + 16ae: cc 20 and r12, r12 + 16b0: 69 f0 breq .+26 ; 0x16cc <_ZN6Stream10parseFloatEc+0x11a> + 16b2: c8 01 movw r24, r16 + 16b4: b7 01 movw r22, r14 + 16b6: 0e 94 e6 1e call 0x3dcc ; 0x3dcc <__floatsisf> + 16ba: d5 01 movw r26, r10 + 16bc: f4 01 movw r30, r8 + 16be: 2b 2f mov r18, r27 + 16c0: 3a 2d mov r19, r10 + 16c2: 4f 2f mov r20, r31 + 16c4: 58 2d mov r21, r8 + 16c6: 0e 94 de 1c call 0x39bc ; 0x39bc <__mulsf3> + 16ca: 09 c0 rjmp .+18 ; 0x16de <_ZN6Stream10parseFloatEc+0x12c> + 16cc: c8 01 movw r24, r16 + 16ce: b7 01 movw r22, r14 + 16d0: 0e 94 e6 1e call 0x3dcc ; 0x3dcc <__floatsisf> + 16d4: 04 c0 rjmp .+8 ; 0x16de <_ZN6Stream10parseFloatEc+0x12c> + 16d6: 60 e0 ldi r22, 0x00 ; 0 + 16d8: 70 e0 ldi r23, 0x00 ; 0 + 16da: 80 e0 ldi r24, 0x00 ; 0 + 16dc: 90 e0 ldi r25, 0x00 ; 0 + 16de: df 91 pop r29 + 16e0: cf 91 pop r28 + 16e2: 1f 91 pop r17 + 16e4: 0f 91 pop r16 + 16e6: ff 90 pop r15 + 16e8: ef 90 pop r14 + 16ea: df 90 pop r13 + 16ec: cf 90 pop r12 + 16ee: bf 90 pop r11 + 16f0: af 90 pop r10 + 16f2: 9f 90 pop r9 + 16f4: 8f 90 pop r8 + 16f6: 7f 90 pop r7 + 16f8: 6f 90 pop r6 + 16fa: 08 95 ret + +000016fc <_ZN6Stream10parseFloatEv>: + 16fc: 61 e0 ldi r22, 0x01 ; 1 + 16fe: 0e 94 d9 0a call 0x15b2 ; 0x15b2 <_ZN6Stream10parseFloatEc> + 1702: 08 95 ret + +00001704 <_ZN6Stream9readBytesEPcj>: + 1704: cf 92 push r12 + 1706: df 92 push r13 + 1708: ef 92 push r14 + 170a: ff 92 push r15 + 170c: 0f 93 push r16 + 170e: 1f 93 push r17 + 1710: cf 93 push r28 + 1712: df 93 push r29 + 1714: 6c 01 movw r12, r24 + 1716: eb 01 movw r28, r22 + 1718: 7a 01 movw r14, r20 + 171a: 00 e0 ldi r16, 0x00 ; 0 + 171c: 10 e0 ldi r17, 0x00 ; 0 + 171e: 08 c0 rjmp .+16 ; 0x1730 <_ZN6Stream9readBytesEPcj+0x2c> + 1720: c6 01 movw r24, r12 + 1722: 0e 94 62 09 call 0x12c4 ; 0x12c4 <_ZN6Stream9timedReadEv> + 1726: 97 fd sbrc r25, 7 + 1728: 06 c0 rjmp .+12 ; 0x1736 <_ZN6Stream9readBytesEPcj+0x32> + 172a: 89 93 st Y+, r24 + 172c: 0f 5f subi r16, 0xFF ; 255 + 172e: 1f 4f sbci r17, 0xFF ; 255 + 1730: 0e 15 cp r16, r14 + 1732: 1f 05 cpc r17, r15 + 1734: a8 f3 brcs .-22 ; 0x1720 <_ZN6Stream9readBytesEPcj+0x1c> + 1736: c8 01 movw r24, r16 + 1738: df 91 pop r29 + 173a: cf 91 pop r28 + 173c: 1f 91 pop r17 + 173e: 0f 91 pop r16 + 1740: ff 90 pop r15 + 1742: ef 90 pop r14 + 1744: df 90 pop r13 + 1746: cf 90 pop r12 + 1748: 08 95 ret + +0000174a <_ZN6Stream14readBytesUntilEcPcj>: + 174a: af 92 push r10 + 174c: bf 92 push r11 + 174e: cf 92 push r12 + 1750: df 92 push r13 + 1752: ef 92 push r14 + 1754: ff 92 push r15 + 1756: 0f 93 push r16 + 1758: 1f 93 push r17 + 175a: cf 93 push r28 + 175c: df 93 push r29 + 175e: 5c 01 movw r10, r24 + 1760: ea 01 movw r28, r20 + 1762: 79 01 movw r14, r18 + 1764: 21 15 cp r18, r1 + 1766: 31 05 cpc r19, r1 + 1768: b1 f0 breq .+44 ; 0x1796 <_ZN6Stream14readBytesUntilEcPcj+0x4c> + 176a: 00 e0 ldi r16, 0x00 ; 0 + 176c: 10 e0 ldi r17, 0x00 ; 0 + 176e: c6 2e mov r12, r22 + 1770: dd 24 eor r13, r13 + 1772: c7 fc sbrc r12, 7 + 1774: d0 94 com r13 + 1776: 0b c0 rjmp .+22 ; 0x178e <_ZN6Stream14readBytesUntilEcPcj+0x44> + 1778: c5 01 movw r24, r10 + 177a: 0e 94 62 09 call 0x12c4 ; 0x12c4 <_ZN6Stream9timedReadEv> + 177e: 97 fd sbrc r25, 7 + 1780: 0c c0 rjmp .+24 ; 0x179a <_ZN6Stream14readBytesUntilEcPcj+0x50> + 1782: 8c 15 cp r24, r12 + 1784: 9d 05 cpc r25, r13 + 1786: 49 f0 breq .+18 ; 0x179a <_ZN6Stream14readBytesUntilEcPcj+0x50> + 1788: 89 93 st Y+, r24 + 178a: 0f 5f subi r16, 0xFF ; 255 + 178c: 1f 4f sbci r17, 0xFF ; 255 + 178e: 0e 15 cp r16, r14 + 1790: 1f 05 cpc r17, r15 + 1792: 90 f3 brcs .-28 ; 0x1778 <_ZN6Stream14readBytesUntilEcPcj+0x2e> + 1794: 02 c0 rjmp .+4 ; 0x179a <_ZN6Stream14readBytesUntilEcPcj+0x50> + 1796: 00 e0 ldi r16, 0x00 ; 0 + 1798: 10 e0 ldi r17, 0x00 ; 0 + 179a: c8 01 movw r24, r16 + 179c: df 91 pop r29 + 179e: cf 91 pop r28 + 17a0: 1f 91 pop r17 + 17a2: 0f 91 pop r16 + 17a4: ff 90 pop r15 + 17a6: ef 90 pop r14 + 17a8: df 90 pop r13 + 17aa: cf 90 pop r12 + 17ac: bf 90 pop r11 + 17ae: af 90 pop r10 + 17b0: 08 95 ret + +000017b2 <_Z4tonehjm>: + 17b2: 2f 92 push r2 + 17b4: 3f 92 push r3 + 17b6: 4f 92 push r4 + 17b8: 5f 92 push r5 + 17ba: 6f 92 push r6 + 17bc: 7f 92 push r7 + 17be: 8f 92 push r8 + 17c0: 9f 92 push r9 + 17c2: af 92 push r10 + 17c4: bf 92 push r11 + 17c6: df 92 push r13 + 17c8: ef 92 push r14 + 17ca: ff 92 push r15 + 17cc: 0f 93 push r16 + 17ce: 1f 93 push r17 + 17d0: df 93 push r29 + 17d2: cf 93 push r28 + 17d4: 00 d0 rcall .+0 ; 0x17d6 <_Z4tonehjm+0x24> + 17d6: 00 d0 rcall .+0 ; 0x17d8 <_Z4tonehjm+0x26> + 17d8: cd b7 in r28, 0x3d ; 61 + 17da: de b7 in r29, 0x3e ; 62 + 17dc: 1b 01 movw r2, r22 + 17de: 29 83 std Y+1, r18 ; 0x01 + 17e0: 3a 83 std Y+2, r19 ; 0x02 + 17e2: 4b 83 std Y+3, r20 ; 0x03 + 17e4: 5c 83 std Y+4, r21 ; 0x04 + 17e6: 90 91 ab 01 lds r25, 0x01AB + 17ea: 98 17 cp r25, r24 + 17ec: 21 f0 breq .+8 ; 0x17f6 <_Z4tonehjm+0x44> + 17ee: 9f 3f cpi r25, 0xFF ; 255 + 17f0: 09 f0 breq .+2 ; 0x17f4 <_Z4tonehjm+0x42> + 17f2: d8 c1 rjmp .+944 ; 0x1ba4 <_Z4tonehjm+0x3f2> + 17f4: 04 c0 rjmp .+8 ; 0x17fe <_Z4tonehjm+0x4c> + 17f6: e8 e6 ldi r30, 0x68 ; 104 + 17f8: f0 e0 ldi r31, 0x00 ; 0 + 17fa: d4 90 lpm r13, Z+ + 17fc: 7d c0 rjmp .+250 ; 0x18f8 <_Z4tonehjm+0x146> + 17fe: 80 93 ab 01 sts 0x01AB, r24 + 1802: e8 e6 ldi r30, 0x68 ; 104 + 1804: f0 e0 ldi r31, 0x00 ; 0 + 1806: d4 90 lpm r13, Z+ + 1808: 9d 2d mov r25, r13 + 180a: 9f 3f cpi r25, 0xFF ; 255 + 180c: 09 f4 brne .+2 ; 0x1810 <_Z4tonehjm+0x5e> + 180e: ca c1 rjmp .+916 ; 0x1ba4 <_Z4tonehjm+0x3f2> + 1810: 91 30 cpi r25, 0x01 ; 1 + 1812: 31 f1 breq .+76 ; 0x1860 <_Z4tonehjm+0xae> + 1814: 92 30 cpi r25, 0x02 ; 2 + 1816: 09 f4 brne .+2 ; 0x181a <_Z4tonehjm+0x68> + 1818: 49 c0 rjmp .+146 ; 0x18ac <_Z4tonehjm+0xfa> + 181a: dd 20 and r13, r13 + 181c: 09 f0 breq .+2 ; 0x1820 <_Z4tonehjm+0x6e> + 181e: 6c c0 rjmp .+216 ; 0x18f8 <_Z4tonehjm+0x146> + 1820: 14 bc out 0x24, r1 ; 36 + 1822: 15 bc out 0x25, r1 ; 37 + 1824: 94 b5 in r25, 0x24 ; 36 + 1826: 92 60 ori r25, 0x02 ; 2 + 1828: 94 bd out 0x24, r25 ; 36 + 182a: 95 b5 in r25, 0x25 ; 37 + 182c: 91 60 ori r25, 0x01 ; 1 + 182e: 95 bd out 0x25, r25 ; 37 + 1830: 28 2f mov r18, r24 + 1832: 30 e0 ldi r19, 0x00 ; 0 + 1834: f9 01 movw r30, r18 + 1836: e9 57 subi r30, 0x79 ; 121 + 1838: ff 4f sbci r31, 0xFF ; 255 + 183a: e4 91 lpm r30, Z+ + 183c: f0 e0 ldi r31, 0x00 ; 0 + 183e: ee 0f add r30, r30 + 1840: ff 1f adc r31, r31 + 1842: ed 58 subi r30, 0x8D ; 141 + 1844: ff 4f sbci r31, 0xFF ; 255 + 1846: 45 91 lpm r20, Z+ + 1848: 54 91 lpm r21, Z+ + 184a: 40 93 8b 03 sts 0x038B, r20 + 184e: 50 93 8c 03 sts 0x038C, r21 + 1852: 25 56 subi r18, 0x65 ; 101 + 1854: 3f 4f sbci r19, 0xFF ; 255 + 1856: f9 01 movw r30, r18 + 1858: 24 91 lpm r18, Z+ + 185a: 20 93 8d 03 sts 0x038D, r18 + 185e: 4e c0 rjmp .+156 ; 0x18fc <_Z4tonehjm+0x14a> + 1860: 10 92 80 00 sts 0x0080, r1 + 1864: 10 92 81 00 sts 0x0081, r1 + 1868: 90 91 81 00 lds r25, 0x0081 + 186c: 98 60 ori r25, 0x08 ; 8 + 186e: 90 93 81 00 sts 0x0081, r25 + 1872: 90 91 81 00 lds r25, 0x0081 + 1876: 91 60 ori r25, 0x01 ; 1 + 1878: 90 93 81 00 sts 0x0081, r25 + 187c: 28 2f mov r18, r24 + 187e: 30 e0 ldi r19, 0x00 ; 0 + 1880: f9 01 movw r30, r18 + 1882: e9 57 subi r30, 0x79 ; 121 + 1884: ff 4f sbci r31, 0xFF ; 255 + 1886: e4 91 lpm r30, Z+ + 1888: f0 e0 ldi r31, 0x00 ; 0 + 188a: ee 0f add r30, r30 + 188c: ff 1f adc r31, r31 + 188e: ed 58 subi r30, 0x8D ; 141 + 1890: ff 4f sbci r31, 0xFF ; 255 + 1892: 45 91 lpm r20, Z+ + 1894: 54 91 lpm r21, Z+ + 1896: 40 93 92 03 sts 0x0392, r20 + 189a: 50 93 93 03 sts 0x0393, r21 + 189e: 25 56 subi r18, 0x65 ; 101 + 18a0: 3f 4f sbci r19, 0xFF ; 255 + 18a2: f9 01 movw r30, r18 + 18a4: 24 91 lpm r18, Z+ + 18a6: 20 93 94 03 sts 0x0394, r18 + 18aa: 28 c0 rjmp .+80 ; 0x18fc <_Z4tonehjm+0x14a> + 18ac: 10 92 b0 00 sts 0x00B0, r1 + 18b0: 10 92 b1 00 sts 0x00B1, r1 + 18b4: 90 91 b0 00 lds r25, 0x00B0 + 18b8: 92 60 ori r25, 0x02 ; 2 + 18ba: 90 93 b0 00 sts 0x00B0, r25 + 18be: 90 91 b1 00 lds r25, 0x00B1 + 18c2: 91 60 ori r25, 0x01 ; 1 + 18c4: 90 93 b1 00 sts 0x00B1, r25 + 18c8: 28 2f mov r18, r24 + 18ca: 30 e0 ldi r19, 0x00 ; 0 + 18cc: f9 01 movw r30, r18 + 18ce: e9 57 subi r30, 0x79 ; 121 + 18d0: ff 4f sbci r31, 0xFF ; 255 + 18d2: e4 91 lpm r30, Z+ + 18d4: f0 e0 ldi r31, 0x00 ; 0 + 18d6: ee 0f add r30, r30 + 18d8: ff 1f adc r31, r31 + 18da: ed 58 subi r30, 0x8D ; 141 + 18dc: ff 4f sbci r31, 0xFF ; 255 + 18de: 45 91 lpm r20, Z+ + 18e0: 54 91 lpm r21, Z+ + 18e2: 40 93 99 03 sts 0x0399, r20 + 18e6: 50 93 9a 03 sts 0x039A, r21 + 18ea: 25 56 subi r18, 0x65 ; 101 + 18ec: 3f 4f sbci r19, 0xFF ; 255 + 18ee: f9 01 movw r30, r18 + 18f0: 24 91 lpm r18, Z+ + 18f2: 20 93 9b 03 sts 0x039B, r18 + 18f6: 02 c0 rjmp .+4 ; 0x18fc <_Z4tonehjm+0x14a> + 18f8: d7 fc sbrc r13, 7 + 18fa: 54 c1 rjmp .+680 ; 0x1ba4 <_Z4tonehjm+0x3f2> + 18fc: 61 e0 ldi r22, 0x01 ; 1 + 18fe: 0e 94 67 19 call 0x32ce ; 0x32ce <pinMode> + 1902: dd 20 and r13, r13 + 1904: 21 f0 breq .+8 ; 0x190e <_Z4tonehjm+0x15c> + 1906: fd 2d mov r31, r13 + 1908: f2 30 cpi r31, 0x02 ; 2 + 190a: 09 f0 breq .+2 ; 0x190e <_Z4tonehjm+0x15c> + 190c: c1 c0 rjmp .+386 ; 0x1a90 <_Z4tonehjm+0x2de> + 190e: 41 01 movw r8, r2 + 1910: aa 24 eor r10, r10 + 1912: bb 24 eor r11, r11 + 1914: 60 e0 ldi r22, 0x00 ; 0 + 1916: 79 e0 ldi r23, 0x09 ; 9 + 1918: 8d e3 ldi r24, 0x3D ; 61 + 191a: 90 e0 ldi r25, 0x00 ; 0 + 191c: a5 01 movw r20, r10 + 191e: 94 01 movw r18, r8 + 1920: 0e 94 2c 22 call 0x4458 ; 0x4458 <__udivmodsi4> + 1924: 29 01 movw r4, r18 + 1926: 3a 01 movw r6, r20 + 1928: 79 01 movw r14, r18 + 192a: 8a 01 movw r16, r20 + 192c: 08 94 sec + 192e: e1 08 sbc r14, r1 + 1930: f1 08 sbc r15, r1 + 1932: 01 09 sbc r16, r1 + 1934: 11 09 sbc r17, r1 + 1936: 8f ef ldi r24, 0xFF ; 255 + 1938: e8 16 cp r14, r24 + 193a: f1 04 cpc r15, r1 + 193c: 01 05 cpc r16, r1 + 193e: 11 05 cpc r17, r1 + 1940: 09 f0 breq .+2 ; 0x1944 <_Z4tonehjm+0x192> + 1942: 08 f4 brcc .+2 ; 0x1946 <_Z4tonehjm+0x194> + 1944: 98 c0 rjmp .+304 ; 0x1a76 <_Z4tonehjm+0x2c4> + 1946: 60 e2 ldi r22, 0x20 ; 32 + 1948: 71 ea ldi r23, 0xA1 ; 161 + 194a: 87 e0 ldi r24, 0x07 ; 7 + 194c: 90 e0 ldi r25, 0x00 ; 0 + 194e: a5 01 movw r20, r10 + 1950: 94 01 movw r18, r8 + 1952: 0e 94 2c 22 call 0x4458 ; 0x4458 <__udivmodsi4> + 1956: 79 01 movw r14, r18 + 1958: 8a 01 movw r16, r20 + 195a: 08 94 sec + 195c: e1 08 sbc r14, r1 + 195e: f1 08 sbc r15, r1 + 1960: 01 09 sbc r16, r1 + 1962: 11 09 sbc r17, r1 + 1964: 9d 2d mov r25, r13 + 1966: 92 30 cpi r25, 0x02 ; 2 + 1968: c9 f4 brne .+50 ; 0x199c <_Z4tonehjm+0x1ea> + 196a: af ef ldi r26, 0xFF ; 255 + 196c: ea 16 cp r14, r26 + 196e: f1 04 cpc r15, r1 + 1970: 01 05 cpc r16, r1 + 1972: 11 05 cpc r17, r1 + 1974: 09 f0 breq .+2 ; 0x1978 <_Z4tonehjm+0x1c6> + 1976: 08 f4 brcc .+2 ; 0x197a <_Z4tonehjm+0x1c8> + 1978: 85 c0 rjmp .+266 ; 0x1a84 <_Z4tonehjm+0x2d2> + 197a: 68 e4 ldi r22, 0x48 ; 72 + 197c: 78 ee ldi r23, 0xE8 ; 232 + 197e: 81 e0 ldi r24, 0x01 ; 1 + 1980: 90 e0 ldi r25, 0x00 ; 0 + 1982: a5 01 movw r20, r10 + 1984: 94 01 movw r18, r8 + 1986: 0e 94 2c 22 call 0x4458 ; 0x4458 <__udivmodsi4> + 198a: 79 01 movw r14, r18 + 198c: 8a 01 movw r16, r20 + 198e: 08 94 sec + 1990: e1 08 sbc r14, r1 + 1992: f1 08 sbc r15, r1 + 1994: 01 09 sbc r16, r1 + 1996: 11 09 sbc r17, r1 + 1998: 83 e0 ldi r24, 0x03 ; 3 + 199a: 01 c0 rjmp .+2 ; 0x199e <_Z4tonehjm+0x1ec> + 199c: 82 e0 ldi r24, 0x02 ; 2 + 199e: bf ef ldi r27, 0xFF ; 255 + 19a0: eb 16 cp r14, r27 + 19a2: f1 04 cpc r15, r1 + 19a4: 01 05 cpc r16, r1 + 19a6: 11 05 cpc r17, r1 + 19a8: 09 f0 breq .+2 ; 0x19ac <_Z4tonehjm+0x1fa> + 19aa: 08 f4 brcc .+2 ; 0x19ae <_Z4tonehjm+0x1fc> + 19ac: 65 c0 rjmp .+202 ; 0x1a78 <_Z4tonehjm+0x2c6> + 19ae: 64 e2 ldi r22, 0x24 ; 36 + 19b0: 74 ef ldi r23, 0xF4 ; 244 + 19b2: 80 e0 ldi r24, 0x00 ; 0 + 19b4: 90 e0 ldi r25, 0x00 ; 0 + 19b6: a5 01 movw r20, r10 + 19b8: 94 01 movw r18, r8 + 19ba: 0e 94 2c 22 call 0x4458 ; 0x4458 <__udivmodsi4> + 19be: 79 01 movw r14, r18 + 19c0: 8a 01 movw r16, r20 + 19c2: 08 94 sec + 19c4: e1 08 sbc r14, r1 + 19c6: f1 08 sbc r15, r1 + 19c8: 01 09 sbc r16, r1 + 19ca: 11 09 sbc r17, r1 + 19cc: dd 20 and r13, r13 + 19ce: e1 f0 breq .+56 ; 0x1a08 <_Z4tonehjm+0x256> + 19d0: ed 2d mov r30, r13 + 19d2: e2 30 cpi r30, 0x02 ; 2 + 19d4: d9 f4 brne .+54 ; 0x1a0c <_Z4tonehjm+0x25a> + 19d6: ff ef ldi r31, 0xFF ; 255 + 19d8: ef 16 cp r14, r31 + 19da: f1 04 cpc r15, r1 + 19dc: 01 05 cpc r16, r1 + 19de: 11 05 cpc r17, r1 + 19e0: 09 f0 breq .+2 ; 0x19e4 <_Z4tonehjm+0x232> + 19e2: 08 f4 brcc .+2 ; 0x19e6 <_Z4tonehjm+0x234> + 19e4: 51 c0 rjmp .+162 ; 0x1a88 <_Z4tonehjm+0x2d6> + 19e6: 62 e1 ldi r22, 0x12 ; 18 + 19e8: 7a e7 ldi r23, 0x7A ; 122 + 19ea: 80 e0 ldi r24, 0x00 ; 0 + 19ec: 90 e0 ldi r25, 0x00 ; 0 + 19ee: a5 01 movw r20, r10 + 19f0: 94 01 movw r18, r8 + 19f2: 0e 94 2c 22 call 0x4458 ; 0x4458 <__udivmodsi4> + 19f6: 79 01 movw r14, r18 + 19f8: 8a 01 movw r16, r20 + 19fa: 08 94 sec + 19fc: e1 08 sbc r14, r1 + 19fe: f1 08 sbc r15, r1 + 1a00: 01 09 sbc r16, r1 + 1a02: 11 09 sbc r17, r1 + 1a04: 85 e0 ldi r24, 0x05 ; 5 + 1a06: 03 c0 rjmp .+6 ; 0x1a0e <_Z4tonehjm+0x25c> + 1a08: 83 e0 ldi r24, 0x03 ; 3 + 1a0a: 01 c0 rjmp .+2 ; 0x1a0e <_Z4tonehjm+0x25c> + 1a0c: 84 e0 ldi r24, 0x04 ; 4 + 1a0e: 9f ef ldi r25, 0xFF ; 255 + 1a10: e9 16 cp r14, r25 + 1a12: f1 04 cpc r15, r1 + 1a14: 01 05 cpc r16, r1 + 1a16: 11 05 cpc r17, r1 + 1a18: 79 f1 breq .+94 ; 0x1a78 <_Z4tonehjm+0x2c6> + 1a1a: 70 f1 brcs .+92 ; 0x1a78 <_Z4tonehjm+0x2c6> + 1a1c: 69 e0 ldi r22, 0x09 ; 9 + 1a1e: 7d e3 ldi r23, 0x3D ; 61 + 1a20: 80 e0 ldi r24, 0x00 ; 0 + 1a22: 90 e0 ldi r25, 0x00 ; 0 + 1a24: a5 01 movw r20, r10 + 1a26: 94 01 movw r18, r8 + 1a28: 0e 94 2c 22 call 0x4458 ; 0x4458 <__udivmodsi4> + 1a2c: 79 01 movw r14, r18 + 1a2e: 8a 01 movw r16, r20 + 1a30: 08 94 sec + 1a32: e1 08 sbc r14, r1 + 1a34: f1 08 sbc r15, r1 + 1a36: 01 09 sbc r16, r1 + 1a38: 11 09 sbc r17, r1 + 1a3a: dd 20 and r13, r13 + 1a3c: 11 f4 brne .+4 ; 0x1a42 <_Z4tonehjm+0x290> + 1a3e: 84 e0 ldi r24, 0x04 ; 4 + 1a40: 01 c0 rjmp .+2 ; 0x1a44 <_Z4tonehjm+0x292> + 1a42: 86 e0 ldi r24, 0x06 ; 6 + 1a44: af ef ldi r26, 0xFF ; 255 + 1a46: ea 16 cp r14, r26 + 1a48: f1 04 cpc r15, r1 + 1a4a: 01 05 cpc r16, r1 + 1a4c: 11 05 cpc r17, r1 + 1a4e: a1 f0 breq .+40 ; 0x1a78 <_Z4tonehjm+0x2c6> + 1a50: 98 f0 brcs .+38 ; 0x1a78 <_Z4tonehjm+0x2c6> + 1a52: 83 01 movw r16, r6 + 1a54: 72 01 movw r14, r4 + 1a56: 9a e0 ldi r25, 0x0A ; 10 + 1a58: 16 95 lsr r17 + 1a5a: 07 95 ror r16 + 1a5c: f7 94 ror r15 + 1a5e: e7 94 ror r14 + 1a60: 9a 95 dec r25 + 1a62: d1 f7 brne .-12 ; 0x1a58 <_Z4tonehjm+0x2a6> + 1a64: 08 94 sec + 1a66: e1 08 sbc r14, r1 + 1a68: f1 08 sbc r15, r1 + 1a6a: 01 09 sbc r16, r1 + 1a6c: 11 09 sbc r17, r1 + 1a6e: dd 20 and r13, r13 + 1a70: 31 f0 breq .+12 ; 0x1a7e <_Z4tonehjm+0x2cc> + 1a72: 87 e0 ldi r24, 0x07 ; 7 + 1a74: 0a c0 rjmp .+20 ; 0x1a8a <_Z4tonehjm+0x2d8> + 1a76: 81 e0 ldi r24, 0x01 ; 1 + 1a78: dd 20 and r13, r13 + 1a7a: 11 f0 breq .+4 ; 0x1a80 <_Z4tonehjm+0x2ce> + 1a7c: 06 c0 rjmp .+12 ; 0x1a8a <_Z4tonehjm+0x2d8> + 1a7e: 85 e0 ldi r24, 0x05 ; 5 + 1a80: 85 bd out 0x25, r24 ; 37 + 1a82: 3c c0 rjmp .+120 ; 0x1afc <_Z4tonehjm+0x34a> + 1a84: 82 e0 ldi r24, 0x02 ; 2 + 1a86: 01 c0 rjmp .+2 ; 0x1a8a <_Z4tonehjm+0x2d8> + 1a88: 84 e0 ldi r24, 0x04 ; 4 + 1a8a: 80 93 b1 00 sts 0x00B1, r24 + 1a8e: 36 c0 rjmp .+108 ; 0x1afc <_Z4tonehjm+0x34a> + 1a90: 41 01 movw r8, r2 + 1a92: aa 24 eor r10, r10 + 1a94: bb 24 eor r11, r11 + 1a96: 60 e0 ldi r22, 0x00 ; 0 + 1a98: 79 e0 ldi r23, 0x09 ; 9 + 1a9a: 8d e3 ldi r24, 0x3D ; 61 + 1a9c: 90 e0 ldi r25, 0x00 ; 0 + 1a9e: a5 01 movw r20, r10 + 1aa0: 94 01 movw r18, r8 + 1aa2: 0e 94 2c 22 call 0x4458 ; 0x4458 <__udivmodsi4> + 1aa6: 79 01 movw r14, r18 + 1aa8: 8a 01 movw r16, r20 + 1aaa: 08 94 sec + 1aac: e1 08 sbc r14, r1 + 1aae: f1 08 sbc r15, r1 + 1ab0: 01 09 sbc r16, r1 + 1ab2: 11 09 sbc r17, r1 + 1ab4: b0 e0 ldi r27, 0x00 ; 0 + 1ab6: eb 16 cp r14, r27 + 1ab8: b0 e0 ldi r27, 0x00 ; 0 + 1aba: fb 06 cpc r15, r27 + 1abc: b1 e0 ldi r27, 0x01 ; 1 + 1abe: 0b 07 cpc r16, r27 + 1ac0: b0 e0 ldi r27, 0x00 ; 0 + 1ac2: 1b 07 cpc r17, r27 + 1ac4: 88 f0 brcs .+34 ; 0x1ae8 <_Z4tonehjm+0x336> + 1ac6: 64 e2 ldi r22, 0x24 ; 36 + 1ac8: 74 ef ldi r23, 0xF4 ; 244 + 1aca: 80 e0 ldi r24, 0x00 ; 0 + 1acc: 90 e0 ldi r25, 0x00 ; 0 + 1ace: a5 01 movw r20, r10 + 1ad0: 94 01 movw r18, r8 + 1ad2: 0e 94 2c 22 call 0x4458 ; 0x4458 <__udivmodsi4> + 1ad6: 79 01 movw r14, r18 + 1ad8: 8a 01 movw r16, r20 + 1ada: 08 94 sec + 1adc: e1 08 sbc r14, r1 + 1ade: f1 08 sbc r15, r1 + 1ae0: 01 09 sbc r16, r1 + 1ae2: 11 09 sbc r17, r1 + 1ae4: 93 e0 ldi r25, 0x03 ; 3 + 1ae6: 01 c0 rjmp .+2 ; 0x1aea <_Z4tonehjm+0x338> + 1ae8: 91 e0 ldi r25, 0x01 ; 1 + 1aea: ed 2d mov r30, r13 + 1aec: e1 30 cpi r30, 0x01 ; 1 + 1aee: 31 f4 brne .+12 ; 0x1afc <_Z4tonehjm+0x34a> + 1af0: 80 91 81 00 lds r24, 0x0081 + 1af4: 88 7f andi r24, 0xF8 ; 248 + 1af6: 89 2b or r24, r25 + 1af8: 80 93 81 00 sts 0x0081, r24 + 1afc: 89 81 ldd r24, Y+1 ; 0x01 + 1afe: 9a 81 ldd r25, Y+2 ; 0x02 + 1b00: ab 81 ldd r26, Y+3 ; 0x03 + 1b02: bc 81 ldd r27, Y+4 ; 0x04 + 1b04: 00 97 sbiw r24, 0x00 ; 0 + 1b06: a1 05 cpc r26, r1 + 1b08: b1 05 cpc r27, r1 + 1b0a: 91 f0 breq .+36 ; 0x1b30 <_Z4tonehjm+0x37e> + 1b0c: b1 01 movw r22, r2 + 1b0e: 66 0f add r22, r22 + 1b10: 77 1f adc r23, r23 + 1b12: 80 e0 ldi r24, 0x00 ; 0 + 1b14: 90 e0 ldi r25, 0x00 ; 0 + 1b16: 29 81 ldd r18, Y+1 ; 0x01 + 1b18: 3a 81 ldd r19, Y+2 ; 0x02 + 1b1a: 4b 81 ldd r20, Y+3 ; 0x03 + 1b1c: 5c 81 ldd r21, Y+4 ; 0x04 + 1b1e: 0e 94 fa 21 call 0x43f4 ; 0x43f4 <__mulsi3> + 1b22: 28 ee ldi r18, 0xE8 ; 232 + 1b24: 33 e0 ldi r19, 0x03 ; 3 + 1b26: 40 e0 ldi r20, 0x00 ; 0 + 1b28: 50 e0 ldi r21, 0x00 ; 0 + 1b2a: 0e 94 2c 22 call 0x4458 ; 0x4458 <__udivmodsi4> + 1b2e: 03 c0 rjmp .+6 ; 0x1b36 <_Z4tonehjm+0x384> + 1b30: 2f ef ldi r18, 0xFF ; 255 + 1b32: 3f ef ldi r19, 0xFF ; 255 + 1b34: a9 01 movw r20, r18 + 1b36: 9d 2d mov r25, r13 + 1b38: 91 30 cpi r25, 0x01 ; 1 + 1b3a: 99 f0 breq .+38 ; 0x1b62 <_Z4tonehjm+0x3b0> + 1b3c: 92 30 cpi r25, 0x02 ; 2 + 1b3e: 19 f1 breq .+70 ; 0x1b86 <_Z4tonehjm+0x3d4> + 1b40: dd 20 and r13, r13 + 1b42: 81 f5 brne .+96 ; 0x1ba4 <_Z4tonehjm+0x3f2> + 1b44: e7 bc out 0x27, r14 ; 39 + 1b46: 20 93 87 03 sts 0x0387, r18 + 1b4a: 30 93 88 03 sts 0x0388, r19 + 1b4e: 40 93 89 03 sts 0x0389, r20 + 1b52: 50 93 8a 03 sts 0x038A, r21 + 1b56: 80 91 6e 00 lds r24, 0x006E + 1b5a: 82 60 ori r24, 0x02 ; 2 + 1b5c: 80 93 6e 00 sts 0x006E, r24 + 1b60: 21 c0 rjmp .+66 ; 0x1ba4 <_Z4tonehjm+0x3f2> + 1b62: f0 92 89 00 sts 0x0089, r15 + 1b66: e0 92 88 00 sts 0x0088, r14 + 1b6a: 20 93 8e 03 sts 0x038E, r18 + 1b6e: 30 93 8f 03 sts 0x038F, r19 + 1b72: 40 93 90 03 sts 0x0390, r20 + 1b76: 50 93 91 03 sts 0x0391, r21 + 1b7a: 80 91 6f 00 lds r24, 0x006F + 1b7e: 82 60 ori r24, 0x02 ; 2 + 1b80: 80 93 6f 00 sts 0x006F, r24 + 1b84: 0f c0 rjmp .+30 ; 0x1ba4 <_Z4tonehjm+0x3f2> + 1b86: e0 92 b3 00 sts 0x00B3, r14 + 1b8a: 20 93 95 03 sts 0x0395, r18 + 1b8e: 30 93 96 03 sts 0x0396, r19 + 1b92: 40 93 97 03 sts 0x0397, r20 + 1b96: 50 93 98 03 sts 0x0398, r21 + 1b9a: 80 91 70 00 lds r24, 0x0070 + 1b9e: 82 60 ori r24, 0x02 ; 2 + 1ba0: 80 93 70 00 sts 0x0070, r24 + 1ba4: 0f 90 pop r0 + 1ba6: 0f 90 pop r0 + 1ba8: 0f 90 pop r0 + 1baa: 0f 90 pop r0 + 1bac: cf 91 pop r28 + 1bae: df 91 pop r29 + 1bb0: 1f 91 pop r17 + 1bb2: 0f 91 pop r16 + 1bb4: ff 90 pop r15 + 1bb6: ef 90 pop r14 + 1bb8: df 90 pop r13 + 1bba: bf 90 pop r11 + 1bbc: af 90 pop r10 + 1bbe: 9f 90 pop r9 + 1bc0: 8f 90 pop r8 + 1bc2: 7f 90 pop r7 + 1bc4: 6f 90 pop r6 + 1bc6: 5f 90 pop r5 + 1bc8: 4f 90 pop r4 + 1bca: 3f 90 pop r3 + 1bcc: 2f 90 pop r2 + 1bce: 08 95 ret + +00001bd0 <_Z12disableTimerh>: + 1bd0: 81 30 cpi r24, 0x01 ; 1 + 1bd2: 41 f0 breq .+16 ; 0x1be4 <_Z12disableTimerh+0x14> + 1bd4: 81 30 cpi r24, 0x01 ; 1 + 1bd6: 18 f0 brcs .+6 ; 0x1bde <_Z12disableTimerh+0xe> + 1bd8: 82 30 cpi r24, 0x02 ; 2 + 1bda: d1 f4 brne .+52 ; 0x1c10 <_Z12disableTimerh+0x40> + 1bdc: 09 c0 rjmp .+18 ; 0x1bf0 <_Z12disableTimerh+0x20> + 1bde: 10 92 6e 00 sts 0x006E, r1 + 1be2: 08 95 ret + 1be4: 80 91 6f 00 lds r24, 0x006F + 1be8: 8d 7f andi r24, 0xFD ; 253 + 1bea: 80 93 6f 00 sts 0x006F, r24 + 1bee: 08 95 ret + 1bf0: 80 91 70 00 lds r24, 0x0070 + 1bf4: 8d 7f andi r24, 0xFD ; 253 + 1bf6: 80 93 70 00 sts 0x0070, r24 + 1bfa: 81 e0 ldi r24, 0x01 ; 1 + 1bfc: 80 93 b0 00 sts 0x00B0, r24 + 1c00: 80 91 b1 00 lds r24, 0x00B1 + 1c04: 88 7f andi r24, 0xF8 ; 248 + 1c06: 84 60 ori r24, 0x04 ; 4 + 1c08: 80 93 b1 00 sts 0x00B1, r24 + 1c0c: 10 92 b3 00 sts 0x00B3, r1 + 1c10: 08 95 ret + +00001c12 <_Z6noToneh>: + 1c12: 1f 93 push r17 + 1c14: 18 2f mov r17, r24 + 1c16: 80 91 ab 01 lds r24, 0x01AB + 1c1a: 81 17 cp r24, r17 + 1c1c: 39 f4 brne .+14 ; 0x1c2c <_Z6noToneh+0x1a> + 1c1e: e8 e6 ldi r30, 0x68 ; 104 + 1c20: f0 e0 ldi r31, 0x00 ; 0 + 1c22: 84 91 lpm r24, Z+ + 1c24: 9f ef ldi r25, 0xFF ; 255 + 1c26: 90 93 ab 01 sts 0x01AB, r25 + 1c2a: 01 c0 rjmp .+2 ; 0x1c2e <_Z6noToneh+0x1c> + 1c2c: 8f ef ldi r24, 0xFF ; 255 + 1c2e: 0e 94 e8 0d call 0x1bd0 ; 0x1bd0 <_Z12disableTimerh> + 1c32: 81 2f mov r24, r17 + 1c34: 60 e0 ldi r22, 0x00 ; 0 + 1c36: 0e 94 8b 19 call 0x3316 ; 0x3316 <digitalWrite> + 1c3a: 1f 91 pop r17 + 1c3c: 08 95 ret + +00001c3e <__vector_7>: + 1c3e: 1f 92 push r1 + 1c40: 0f 92 push r0 + 1c42: 0f b6 in r0, 0x3f ; 63 + 1c44: 0f 92 push r0 + 1c46: 11 24 eor r1, r1 + 1c48: 2f 93 push r18 + 1c4a: 3f 93 push r19 + 1c4c: 4f 93 push r20 + 1c4e: 5f 93 push r21 + 1c50: 6f 93 push r22 + 1c52: 7f 93 push r23 + 1c54: 8f 93 push r24 + 1c56: 9f 93 push r25 + 1c58: af 93 push r26 + 1c5a: bf 93 push r27 + 1c5c: ef 93 push r30 + 1c5e: ff 93 push r31 + 1c60: 80 91 95 03 lds r24, 0x0395 + 1c64: 90 91 96 03 lds r25, 0x0396 + 1c68: a0 91 97 03 lds r26, 0x0397 + 1c6c: b0 91 98 03 lds r27, 0x0398 + 1c70: 00 97 sbiw r24, 0x00 ; 0 + 1c72: a1 05 cpc r26, r1 + 1c74: b1 05 cpc r27, r1 + 1c76: 51 f1 breq .+84 ; 0x1ccc <__vector_7+0x8e> + 1c78: e0 91 99 03 lds r30, 0x0399 + 1c7c: f0 91 9a 03 lds r31, 0x039A + 1c80: 80 81 ld r24, Z + 1c82: 90 91 9b 03 lds r25, 0x039B + 1c86: 89 27 eor r24, r25 + 1c88: 80 83 st Z, r24 + 1c8a: 80 91 95 03 lds r24, 0x0395 + 1c8e: 90 91 96 03 lds r25, 0x0396 + 1c92: a0 91 97 03 lds r26, 0x0397 + 1c96: b0 91 98 03 lds r27, 0x0398 + 1c9a: 18 16 cp r1, r24 + 1c9c: 19 06 cpc r1, r25 + 1c9e: 1a 06 cpc r1, r26 + 1ca0: 1b 06 cpc r1, r27 + 1ca2: c4 f4 brge .+48 ; 0x1cd4 <__vector_7+0x96> + 1ca4: 80 91 95 03 lds r24, 0x0395 + 1ca8: 90 91 96 03 lds r25, 0x0396 + 1cac: a0 91 97 03 lds r26, 0x0397 + 1cb0: b0 91 98 03 lds r27, 0x0398 + 1cb4: 01 97 sbiw r24, 0x01 ; 1 + 1cb6: a1 09 sbc r26, r1 + 1cb8: b1 09 sbc r27, r1 + 1cba: 80 93 95 03 sts 0x0395, r24 + 1cbe: 90 93 96 03 sts 0x0396, r25 + 1cc2: a0 93 97 03 sts 0x0397, r26 + 1cc6: b0 93 98 03 sts 0x0398, r27 + 1cca: 04 c0 rjmp .+8 ; 0x1cd4 <__vector_7+0x96> + 1ccc: 80 91 ab 01 lds r24, 0x01AB + 1cd0: 0e 94 09 0e call 0x1c12 ; 0x1c12 <_Z6noToneh> + 1cd4: ff 91 pop r31 + 1cd6: ef 91 pop r30 + 1cd8: bf 91 pop r27 + 1cda: af 91 pop r26 + 1cdc: 9f 91 pop r25 + 1cde: 8f 91 pop r24 + 1ce0: 7f 91 pop r23 + 1ce2: 6f 91 pop r22 + 1ce4: 5f 91 pop r21 + 1ce6: 4f 91 pop r20 + 1ce8: 3f 91 pop r19 + 1cea: 2f 91 pop r18 + 1cec: 0f 90 pop r0 + 1cee: 0f be out 0x3f, r0 ; 63 + 1cf0: 0f 90 pop r0 + 1cf2: 1f 90 pop r1 + 1cf4: 18 95 reti + +00001cf6 <attachInterrupt>: + 1cf6: 82 30 cpi r24, 0x02 ; 2 + 1cf8: e8 f4 brcc .+58 ; 0x1d34 <attachInterrupt+0x3e> + 1cfa: e8 2f mov r30, r24 + 1cfc: f0 e0 ldi r31, 0x00 ; 0 + 1cfe: ee 0f add r30, r30 + 1d00: ff 1f adc r31, r31 + 1d02: e4 56 subi r30, 0x64 ; 100 + 1d04: fc 4f sbci r31, 0xFC ; 252 + 1d06: 71 83 std Z+1, r23 ; 0x01 + 1d08: 60 83 st Z, r22 + 1d0a: 81 30 cpi r24, 0x01 ; 1 + 1d0c: 41 f0 breq .+16 ; 0x1d1e <attachInterrupt+0x28> + 1d0e: 80 91 69 00 lds r24, 0x0069 + 1d12: 8c 7f andi r24, 0xFC ; 252 + 1d14: 84 2b or r24, r20 + 1d16: 80 93 69 00 sts 0x0069, r24 + 1d1a: e8 9a sbi 0x1d, 0 ; 29 + 1d1c: 08 95 ret + 1d1e: 80 91 69 00 lds r24, 0x0069 + 1d22: 44 0f add r20, r20 + 1d24: 55 1f adc r21, r21 + 1d26: 44 0f add r20, r20 + 1d28: 55 1f adc r21, r21 + 1d2a: 83 7f andi r24, 0xF3 ; 243 + 1d2c: 84 2b or r24, r20 + 1d2e: 80 93 69 00 sts 0x0069, r24 + 1d32: e9 9a sbi 0x1d, 1 ; 29 + 1d34: 08 95 ret + +00001d36 <detachInterrupt>: + 1d36: 82 30 cpi r24, 0x02 ; 2 + 1d38: 68 f4 brcc .+26 ; 0x1d54 <detachInterrupt+0x1e> + 1d3a: 81 30 cpi r24, 0x01 ; 1 + 1d3c: 11 f0 breq .+4 ; 0x1d42 <detachInterrupt+0xc> + 1d3e: e8 98 cbi 0x1d, 0 ; 29 + 1d40: 01 c0 rjmp .+2 ; 0x1d44 <detachInterrupt+0xe> + 1d42: e9 98 cbi 0x1d, 1 ; 29 + 1d44: e8 2f mov r30, r24 + 1d46: f0 e0 ldi r31, 0x00 ; 0 + 1d48: ee 0f add r30, r30 + 1d4a: ff 1f adc r31, r31 + 1d4c: e4 56 subi r30, 0x64 ; 100 + 1d4e: fc 4f sbci r31, 0xFC ; 252 + 1d50: 11 82 std Z+1, r1 ; 0x01 + 1d52: 10 82 st Z, r1 + 1d54: 08 95 ret + +00001d56 <__vector_1>: + 1d56: 1f 92 push r1 + 1d58: 0f 92 push r0 + 1d5a: 0f b6 in r0, 0x3f ; 63 + 1d5c: 0f 92 push r0 + 1d5e: 11 24 eor r1, r1 + 1d60: 2f 93 push r18 + 1d62: 3f 93 push r19 + 1d64: 4f 93 push r20 + 1d66: 5f 93 push r21 + 1d68: 6f 93 push r22 + 1d6a: 7f 93 push r23 + 1d6c: 8f 93 push r24 + 1d6e: 9f 93 push r25 + 1d70: af 93 push r26 + 1d72: bf 93 push r27 + 1d74: ef 93 push r30 + 1d76: ff 93 push r31 + 1d78: 80 91 9c 03 lds r24, 0x039C + 1d7c: 90 91 9d 03 lds r25, 0x039D + 1d80: 00 97 sbiw r24, 0x00 ; 0 + 1d82: 29 f0 breq .+10 ; 0x1d8e <__vector_1+0x38> + 1d84: e0 91 9c 03 lds r30, 0x039C + 1d88: f0 91 9d 03 lds r31, 0x039D + 1d8c: 09 95 icall + 1d8e: ff 91 pop r31 + 1d90: ef 91 pop r30 + 1d92: bf 91 pop r27 + 1d94: af 91 pop r26 + 1d96: 9f 91 pop r25 + 1d98: 8f 91 pop r24 + 1d9a: 7f 91 pop r23 + 1d9c: 6f 91 pop r22 + 1d9e: 5f 91 pop r21 + 1da0: 4f 91 pop r20 + 1da2: 3f 91 pop r19 + 1da4: 2f 91 pop r18 + 1da6: 0f 90 pop r0 + 1da8: 0f be out 0x3f, r0 ; 63 + 1daa: 0f 90 pop r0 + 1dac: 1f 90 pop r1 + 1dae: 18 95 reti + +00001db0 <__vector_2>: + 1db0: 1f 92 push r1 + 1db2: 0f 92 push r0 + 1db4: 0f b6 in r0, 0x3f ; 63 + 1db6: 0f 92 push r0 + 1db8: 11 24 eor r1, r1 + 1dba: 2f 93 push r18 + 1dbc: 3f 93 push r19 + 1dbe: 4f 93 push r20 + 1dc0: 5f 93 push r21 + 1dc2: 6f 93 push r22 + 1dc4: 7f 93 push r23 + 1dc6: 8f 93 push r24 + 1dc8: 9f 93 push r25 + 1dca: af 93 push r26 + 1dcc: bf 93 push r27 + 1dce: ef 93 push r30 + 1dd0: ff 93 push r31 + 1dd2: 80 91 9e 03 lds r24, 0x039E + 1dd6: 90 91 9f 03 lds r25, 0x039F + 1dda: 00 97 sbiw r24, 0x00 ; 0 + 1ddc: 29 f0 breq .+10 ; 0x1de8 <__vector_2+0x38> + 1dde: e0 91 9e 03 lds r30, 0x039E + 1de2: f0 91 9f 03 lds r31, 0x039F + 1de6: 09 95 icall + 1de8: ff 91 pop r31 + 1dea: ef 91 pop r30 + 1dec: bf 91 pop r27 + 1dee: af 91 pop r26 + 1df0: 9f 91 pop r25 + 1df2: 8f 91 pop r24 + 1df4: 7f 91 pop r23 + 1df6: 6f 91 pop r22 + 1df8: 5f 91 pop r21 + 1dfa: 4f 91 pop r20 + 1dfc: 3f 91 pop r19 + 1dfe: 2f 91 pop r18 + 1e00: 0f 90 pop r0 + 1e02: 0f be out 0x3f, r0 ; 63 + 1e04: 0f 90 pop r0 + 1e06: 1f 90 pop r1 + 1e08: 18 95 reti + +00001e0a <_Z10randomSeedj>: + 1e0a: 00 97 sbiw r24, 0x00 ; 0 + 1e0c: 29 f0 breq .+10 ; 0x1e18 <_Z10randomSeedj+0xe> + 1e0e: bc 01 movw r22, r24 + 1e10: 80 e0 ldi r24, 0x00 ; 0 + 1e12: 90 e0 ldi r25, 0x00 ; 0 + 1e14: 0e 94 39 24 call 0x4872 ; 0x4872 <srandom> + 1e18: 08 95 ret + +00001e1a <_Z6randoml>: + 1e1a: ef 92 push r14 + 1e1c: ff 92 push r15 + 1e1e: 0f 93 push r16 + 1e20: 1f 93 push r17 + 1e22: 7b 01 movw r14, r22 + 1e24: 8c 01 movw r16, r24 + 1e26: 61 15 cp r22, r1 + 1e28: 71 05 cpc r23, r1 + 1e2a: 81 05 cpc r24, r1 + 1e2c: 91 05 cpc r25, r1 + 1e2e: 49 f0 breq .+18 ; 0x1e42 <_Z6randoml+0x28> + 1e30: 0e 94 34 24 call 0x4868 ; 0x4868 <random> + 1e34: a8 01 movw r20, r16 + 1e36: 97 01 movw r18, r14 + 1e38: 0e 94 4e 22 call 0x449c ; 0x449c <__divmodsi4> + 1e3c: 9b 01 movw r18, r22 + 1e3e: ac 01 movw r20, r24 + 1e40: 03 c0 rjmp .+6 ; 0x1e48 <_Z6randoml+0x2e> + 1e42: 20 e0 ldi r18, 0x00 ; 0 + 1e44: 30 e0 ldi r19, 0x00 ; 0 + 1e46: a9 01 movw r20, r18 + 1e48: b9 01 movw r22, r18 + 1e4a: ca 01 movw r24, r20 + 1e4c: 1f 91 pop r17 + 1e4e: 0f 91 pop r16 + 1e50: ff 90 pop r15 + 1e52: ef 90 pop r14 + 1e54: 08 95 ret + +00001e56 <_Z6randomll>: + 1e56: ef 92 push r14 + 1e58: ff 92 push r15 + 1e5a: 0f 93 push r16 + 1e5c: 1f 93 push r17 + 1e5e: 7b 01 movw r14, r22 + 1e60: 8c 01 movw r16, r24 + 1e62: 62 17 cp r22, r18 + 1e64: 73 07 cpc r23, r19 + 1e66: 84 07 cpc r24, r20 + 1e68: 95 07 cpc r25, r21 + 1e6a: 64 f4 brge .+24 ; 0x1e84 <_Z6randomll+0x2e> + 1e6c: ca 01 movw r24, r20 + 1e6e: b9 01 movw r22, r18 + 1e70: 6e 19 sub r22, r14 + 1e72: 7f 09 sbc r23, r15 + 1e74: 80 0b sbc r24, r16 + 1e76: 91 0b sbc r25, r17 + 1e78: 0e 94 0d 0f call 0x1e1a ; 0x1e1a <_Z6randoml> + 1e7c: e6 0e add r14, r22 + 1e7e: f7 1e adc r15, r23 + 1e80: 08 1f adc r16, r24 + 1e82: 19 1f adc r17, r25 + 1e84: b7 01 movw r22, r14 + 1e86: c8 01 movw r24, r16 + 1e88: 1f 91 pop r17 + 1e8a: 0f 91 pop r16 + 1e8c: ff 90 pop r15 + 1e8e: ef 90 pop r14 + 1e90: 08 95 ret + +00001e92 <_Z3maplllll>: + 1e92: 2f 92 push r2 + 1e94: 3f 92 push r3 + 1e96: 4f 92 push r4 + 1e98: 5f 92 push r5 + 1e9a: 6f 92 push r6 + 1e9c: 7f 92 push r7 + 1e9e: 8f 92 push r8 + 1ea0: 9f 92 push r9 + 1ea2: af 92 push r10 + 1ea4: bf 92 push r11 + 1ea6: cf 92 push r12 + 1ea8: df 92 push r13 + 1eaa: ef 92 push r14 + 1eac: ff 92 push r15 + 1eae: 0f 93 push r16 + 1eb0: 1f 93 push r17 + 1eb2: df 93 push r29 + 1eb4: cf 93 push r28 + 1eb6: cd b7 in r28, 0x3d ; 61 + 1eb8: de b7 in r29, 0x3e ; 62 + 1eba: 3b 01 movw r6, r22 + 1ebc: 4c 01 movw r8, r24 + 1ebe: 19 01 movw r2, r18 + 1ec0: 2a 01 movw r4, r20 + 1ec2: 6d 89 ldd r22, Y+21 ; 0x15 + 1ec4: 7e 89 ldd r23, Y+22 ; 0x16 + 1ec6: 8f 89 ldd r24, Y+23 ; 0x17 + 1ec8: 98 8d ldd r25, Y+24 ; 0x18 + 1eca: 6a 19 sub r22, r10 + 1ecc: 7b 09 sbc r23, r11 + 1ece: 8c 09 sbc r24, r12 + 1ed0: 9d 09 sbc r25, r13 + 1ed2: 62 1a sub r6, r18 + 1ed4: 73 0a sbc r7, r19 + 1ed6: 84 0a sbc r8, r20 + 1ed8: 95 0a sbc r9, r21 + 1eda: a4 01 movw r20, r8 + 1edc: 93 01 movw r18, r6 + 1ede: 0e 94 fa 21 call 0x43f4 ; 0x43f4 <__mulsi3> + 1ee2: e2 18 sub r14, r2 + 1ee4: f3 08 sbc r15, r3 + 1ee6: 04 09 sbc r16, r4 + 1ee8: 15 09 sbc r17, r5 + 1eea: a8 01 movw r20, r16 + 1eec: 97 01 movw r18, r14 + 1eee: 0e 94 4e 22 call 0x449c ; 0x449c <__divmodsi4> + 1ef2: 2a 0d add r18, r10 + 1ef4: 3b 1d adc r19, r11 + 1ef6: 4c 1d adc r20, r12 + 1ef8: 5d 1d adc r21, r13 + 1efa: b9 01 movw r22, r18 + 1efc: ca 01 movw r24, r20 + 1efe: cf 91 pop r28 + 1f00: df 91 pop r29 + 1f02: 1f 91 pop r17 + 1f04: 0f 91 pop r16 + 1f06: ff 90 pop r15 + 1f08: ef 90 pop r14 + 1f0a: df 90 pop r13 + 1f0c: cf 90 pop r12 + 1f0e: bf 90 pop r11 + 1f10: af 90 pop r10 + 1f12: 9f 90 pop r9 + 1f14: 8f 90 pop r8 + 1f16: 7f 90 pop r7 + 1f18: 6f 90 pop r6 + 1f1a: 5f 90 pop r5 + 1f1c: 4f 90 pop r4 + 1f1e: 3f 90 pop r3 + 1f20: 2f 90 pop r2 + 1f22: 08 95 ret + +00001f24 <_Z8makeWordj>: + 1f24: 08 95 ret + +00001f26 <_Z8makeWordhh>: + 1f26: 70 e0 ldi r23, 0x00 ; 0 + 1f28: 38 2f mov r19, r24 + 1f2a: 20 e0 ldi r18, 0x00 ; 0 + 1f2c: 62 2b or r22, r18 + 1f2e: 73 2b or r23, r19 + 1f30: cb 01 movw r24, r22 + 1f32: 08 95 ret + +00001f34 <_ZN6StringD1Ev>: + 1f34: fc 01 movw r30, r24 + 1f36: 80 81 ld r24, Z + 1f38: 91 81 ldd r25, Z+1 ; 0x01 + 1f3a: 0e 94 54 23 call 0x46a8 ; 0x46a8 <free> + 1f3e: 08 95 ret + +00001f40 <_ZN6String10invalidateEv>: + 1f40: cf 93 push r28 + 1f42: df 93 push r29 + 1f44: ec 01 movw r28, r24 + 1f46: 88 81 ld r24, Y + 1f48: 99 81 ldd r25, Y+1 ; 0x01 + 1f4a: 00 97 sbiw r24, 0x00 ; 0 + 1f4c: 11 f0 breq .+4 ; 0x1f52 <_ZN6String10invalidateEv+0x12> + 1f4e: 0e 94 54 23 call 0x46a8 ; 0x46a8 <free> + 1f52: 19 82 std Y+1, r1 ; 0x01 + 1f54: 18 82 st Y, r1 + 1f56: 1d 82 std Y+5, r1 ; 0x05 + 1f58: 1c 82 std Y+4, r1 ; 0x04 + 1f5a: 1b 82 std Y+3, r1 ; 0x03 + 1f5c: 1a 82 std Y+2, r1 ; 0x02 + 1f5e: df 91 pop r29 + 1f60: cf 91 pop r28 + 1f62: 08 95 ret + +00001f64 <_ZN6String12changeBufferEj>: + 1f64: 0f 93 push r16 + 1f66: 1f 93 push r17 + 1f68: cf 93 push r28 + 1f6a: df 93 push r29 + 1f6c: ec 01 movw r28, r24 + 1f6e: 8b 01 movw r16, r22 + 1f70: 6f 5f subi r22, 0xFF ; 255 + 1f72: 7f 4f sbci r23, 0xFF ; 255 + 1f74: 88 81 ld r24, Y + 1f76: 99 81 ldd r25, Y+1 ; 0x01 + 1f78: 0e 94 42 24 call 0x4884 ; 0x4884 <realloc> + 1f7c: 00 97 sbiw r24, 0x00 ; 0 + 1f7e: 31 f0 breq .+12 ; 0x1f8c <_ZN6String12changeBufferEj+0x28> + 1f80: 99 83 std Y+1, r25 ; 0x01 + 1f82: 88 83 st Y, r24 + 1f84: 1b 83 std Y+3, r17 ; 0x03 + 1f86: 0a 83 std Y+2, r16 ; 0x02 + 1f88: 81 e0 ldi r24, 0x01 ; 1 + 1f8a: 01 c0 rjmp .+2 ; 0x1f8e <_ZN6String12changeBufferEj+0x2a> + 1f8c: 80 e0 ldi r24, 0x00 ; 0 + 1f8e: df 91 pop r29 + 1f90: cf 91 pop r28 + 1f92: 1f 91 pop r17 + 1f94: 0f 91 pop r16 + 1f96: 08 95 ret + +00001f98 <_ZN6String7reserveEj>: + 1f98: cf 93 push r28 + 1f9a: df 93 push r29 + 1f9c: ec 01 movw r28, r24 + 1f9e: 88 81 ld r24, Y + 1fa0: 99 81 ldd r25, Y+1 ; 0x01 + 1fa2: 00 97 sbiw r24, 0x00 ; 0 + 1fa4: 29 f0 breq .+10 ; 0x1fb0 <_ZN6String7reserveEj+0x18> + 1fa6: 8a 81 ldd r24, Y+2 ; 0x02 + 1fa8: 9b 81 ldd r25, Y+3 ; 0x03 + 1faa: 86 17 cp r24, r22 + 1fac: 97 07 cpc r25, r23 + 1fae: 78 f4 brcc .+30 ; 0x1fce <_ZN6String7reserveEj+0x36> + 1fb0: ce 01 movw r24, r28 + 1fb2: 0e 94 b2 0f call 0x1f64 ; 0x1f64 <_ZN6String12changeBufferEj> + 1fb6: 88 23 and r24, r24 + 1fb8: 41 f0 breq .+16 ; 0x1fca <_ZN6String7reserveEj+0x32> + 1fba: 8c 81 ldd r24, Y+4 ; 0x04 + 1fbc: 9d 81 ldd r25, Y+5 ; 0x05 + 1fbe: 00 97 sbiw r24, 0x00 ; 0 + 1fc0: 31 f4 brne .+12 ; 0x1fce <_ZN6String7reserveEj+0x36> + 1fc2: e8 81 ld r30, Y + 1fc4: f9 81 ldd r31, Y+1 ; 0x01 + 1fc6: 10 82 st Z, r1 + 1fc8: 02 c0 rjmp .+4 ; 0x1fce <_ZN6String7reserveEj+0x36> + 1fca: 80 e0 ldi r24, 0x00 ; 0 + 1fcc: 01 c0 rjmp .+2 ; 0x1fd0 <_ZN6String7reserveEj+0x38> + 1fce: 81 e0 ldi r24, 0x01 ; 1 + 1fd0: df 91 pop r29 + 1fd2: cf 91 pop r28 + 1fd4: 08 95 ret + +00001fd6 <_ZN6String4copyEPKcj>: + 1fd6: ef 92 push r14 + 1fd8: ff 92 push r15 + 1fda: 0f 93 push r16 + 1fdc: 1f 93 push r17 + 1fde: cf 93 push r28 + 1fe0: df 93 push r29 + 1fe2: ec 01 movw r28, r24 + 1fe4: 7b 01 movw r14, r22 + 1fe6: 8a 01 movw r16, r20 + 1fe8: ba 01 movw r22, r20 + 1fea: 0e 94 cc 0f call 0x1f98 ; 0x1f98 <_ZN6String7reserveEj> + 1fee: 88 23 and r24, r24 + 1ff0: 21 f4 brne .+8 ; 0x1ffa <_ZN6String4copyEPKcj+0x24> + 1ff2: ce 01 movw r24, r28 + 1ff4: 0e 94 a0 0f call 0x1f40 ; 0x1f40 <_ZN6String10invalidateEv> + 1ff8: 07 c0 rjmp .+14 ; 0x2008 <_ZN6String4copyEPKcj+0x32> + 1ffa: 1d 83 std Y+5, r17 ; 0x05 + 1ffc: 0c 83 std Y+4, r16 ; 0x04 + 1ffe: 88 81 ld r24, Y + 2000: 99 81 ldd r25, Y+1 ; 0x01 + 2002: b7 01 movw r22, r14 + 2004: 0e 94 88 25 call 0x4b10 ; 0x4b10 <strcpy> + 2008: ce 01 movw r24, r28 + 200a: df 91 pop r29 + 200c: cf 91 pop r28 + 200e: 1f 91 pop r17 + 2010: 0f 91 pop r16 + 2012: ff 90 pop r15 + 2014: ef 90 pop r14 + 2016: 08 95 ret + +00002018 <_ZN6StringC1EPKc>: + 2018: cf 93 push r28 + 201a: df 93 push r29 + 201c: fc 01 movw r30, r24 + 201e: 11 82 std Z+1, r1 ; 0x01 + 2020: 10 82 st Z, r1 + 2022: 13 82 std Z+3, r1 ; 0x03 + 2024: 12 82 std Z+2, r1 ; 0x02 + 2026: 15 82 std Z+5, r1 ; 0x05 + 2028: 14 82 std Z+4, r1 ; 0x04 + 202a: 16 82 std Z+6, r1 ; 0x06 + 202c: 61 15 cp r22, r1 + 202e: 71 05 cpc r23, r1 + 2030: 59 f0 breq .+22 ; 0x2048 <_ZN6StringC1EPKc+0x30> + 2032: eb 01 movw r28, r22 + 2034: 09 90 ld r0, Y+ + 2036: 00 20 and r0, r0 + 2038: e9 f7 brne .-6 ; 0x2034 <_ZN6StringC1EPKc+0x1c> + 203a: ae 01 movw r20, r28 + 203c: 41 50 subi r20, 0x01 ; 1 + 203e: 50 40 sbci r21, 0x00 ; 0 + 2040: 46 1b sub r20, r22 + 2042: 57 0b sbc r21, r23 + 2044: 0e 94 eb 0f call 0x1fd6 ; 0x1fd6 <_ZN6String4copyEPKcj> + 2048: df 91 pop r29 + 204a: cf 91 pop r28 + 204c: 08 95 ret + +0000204e <_ZN6StringaSERKS_>: + 204e: ef 92 push r14 + 2050: ff 92 push r15 + 2052: cf 93 push r28 + 2054: df 93 push r29 + 2056: ec 01 movw r28, r24 + 2058: fb 01 movw r30, r22 + 205a: 86 17 cp r24, r22 + 205c: 97 07 cpc r25, r23 + 205e: 61 f0 breq .+24 ; 0x2078 <_ZN6StringaSERKS_+0x2a> + 2060: 60 81 ld r22, Z + 2062: 71 81 ldd r23, Z+1 ; 0x01 + 2064: 61 15 cp r22, r1 + 2066: 71 05 cpc r23, r1 + 2068: 29 f0 breq .+10 ; 0x2074 <_ZN6StringaSERKS_+0x26> + 206a: 44 81 ldd r20, Z+4 ; 0x04 + 206c: 55 81 ldd r21, Z+5 ; 0x05 + 206e: 0e 94 eb 0f call 0x1fd6 ; 0x1fd6 <_ZN6String4copyEPKcj> + 2072: 02 c0 rjmp .+4 ; 0x2078 <_ZN6StringaSERKS_+0x2a> + 2074: 0e 94 a0 0f call 0x1f40 ; 0x1f40 <_ZN6String10invalidateEv> + 2078: ce 01 movw r24, r28 + 207a: df 91 pop r29 + 207c: cf 91 pop r28 + 207e: ff 90 pop r15 + 2080: ef 90 pop r14 + 2082: 08 95 ret + +00002084 <_ZN6StringC1ERKS_>: + 2084: fc 01 movw r30, r24 + 2086: 11 82 std Z+1, r1 ; 0x01 + 2088: 10 82 st Z, r1 + 208a: 13 82 std Z+3, r1 ; 0x03 + 208c: 12 82 std Z+2, r1 ; 0x02 + 208e: 15 82 std Z+5, r1 ; 0x05 + 2090: 14 82 std Z+4, r1 ; 0x04 + 2092: 16 82 std Z+6, r1 ; 0x06 + 2094: 0e 94 27 10 call 0x204e ; 0x204e <_ZN6StringaSERKS_> + 2098: 08 95 ret + +0000209a <_ZN6StringaSEPKc>: + 209a: 0f 93 push r16 + 209c: 1f 93 push r17 + 209e: 8c 01 movw r16, r24 + 20a0: 61 15 cp r22, r1 + 20a2: 71 05 cpc r23, r1 + 20a4: 61 f0 breq .+24 ; 0x20be <_ZN6StringaSEPKc+0x24> + 20a6: db 01 movw r26, r22 + 20a8: 0d 90 ld r0, X+ + 20aa: 00 20 and r0, r0 + 20ac: e9 f7 brne .-6 ; 0x20a8 <_ZN6StringaSEPKc+0xe> + 20ae: ad 01 movw r20, r26 + 20b0: 41 50 subi r20, 0x01 ; 1 + 20b2: 50 40 sbci r21, 0x00 ; 0 + 20b4: 46 1b sub r20, r22 + 20b6: 57 0b sbc r21, r23 + 20b8: 0e 94 eb 0f call 0x1fd6 ; 0x1fd6 <_ZN6String4copyEPKcj> + 20bc: 02 c0 rjmp .+4 ; 0x20c2 <_ZN6StringaSEPKc+0x28> + 20be: 0e 94 a0 0f call 0x1f40 ; 0x1f40 <_ZN6String10invalidateEv> + 20c2: c8 01 movw r24, r16 + 20c4: 1f 91 pop r17 + 20c6: 0f 91 pop r16 + 20c8: 08 95 ret + +000020ca <_ZN6StringC1Emh>: + 20ca: ef 92 push r14 + 20cc: ff 92 push r15 + 20ce: 0f 93 push r16 + 20d0: 1f 93 push r17 + 20d2: df 93 push r29 + 20d4: cf 93 push r28 + 20d6: cd b7 in r28, 0x3d ; 61 + 20d8: de b7 in r29, 0x3e ; 62 + 20da: a1 97 sbiw r28, 0x21 ; 33 + 20dc: 0f b6 in r0, 0x3f ; 63 + 20de: f8 94 cli + 20e0: de bf out 0x3e, r29 ; 62 + 20e2: 0f be out 0x3f, r0 ; 63 + 20e4: cd bf out 0x3d, r28 ; 61 + 20e6: 7c 01 movw r14, r24 + 20e8: cb 01 movw r24, r22 + 20ea: ba 01 movw r22, r20 + 20ec: f7 01 movw r30, r14 + 20ee: 11 82 std Z+1, r1 ; 0x01 + 20f0: 10 82 st Z, r1 + 20f2: 13 82 std Z+3, r1 ; 0x03 + 20f4: 12 82 std Z+2, r1 ; 0x02 + 20f6: 15 82 std Z+5, r1 ; 0x05 + 20f8: 14 82 std Z+4, r1 ; 0x04 + 20fa: 16 82 std Z+6, r1 ; 0x06 + 20fc: 8e 01 movw r16, r28 + 20fe: 0f 5f subi r16, 0xFF ; 255 + 2100: 1f 4f sbci r17, 0xFF ; 255 + 2102: a8 01 movw r20, r16 + 2104: 30 e0 ldi r19, 0x00 ; 0 + 2106: 0e 94 3b 26 call 0x4c76 ; 0x4c76 <ultoa> + 210a: c7 01 movw r24, r14 + 210c: b8 01 movw r22, r16 + 210e: 0e 94 4d 10 call 0x209a ; 0x209a <_ZN6StringaSEPKc> + 2112: a1 96 adiw r28, 0x21 ; 33 + 2114: 0f b6 in r0, 0x3f ; 63 + 2116: f8 94 cli + 2118: de bf out 0x3e, r29 ; 62 + 211a: 0f be out 0x3f, r0 ; 63 + 211c: cd bf out 0x3d, r28 ; 61 + 211e: cf 91 pop r28 + 2120: df 91 pop r29 + 2122: 1f 91 pop r17 + 2124: 0f 91 pop r16 + 2126: ff 90 pop r15 + 2128: ef 90 pop r14 + 212a: 08 95 ret + +0000212c <_ZN6StringC1Elh>: + 212c: ef 92 push r14 + 212e: ff 92 push r15 + 2130: 0f 93 push r16 + 2132: 1f 93 push r17 + 2134: df 93 push r29 + 2136: cf 93 push r28 + 2138: cd b7 in r28, 0x3d ; 61 + 213a: de b7 in r29, 0x3e ; 62 + 213c: a2 97 sbiw r28, 0x22 ; 34 + 213e: 0f b6 in r0, 0x3f ; 63 + 2140: f8 94 cli + 2142: de bf out 0x3e, r29 ; 62 + 2144: 0f be out 0x3f, r0 ; 63 + 2146: cd bf out 0x3d, r28 ; 61 + 2148: 7c 01 movw r14, r24 + 214a: cb 01 movw r24, r22 + 214c: ba 01 movw r22, r20 + 214e: f7 01 movw r30, r14 + 2150: 11 82 std Z+1, r1 ; 0x01 + 2152: 10 82 st Z, r1 + 2154: 13 82 std Z+3, r1 ; 0x03 + 2156: 12 82 std Z+2, r1 ; 0x02 + 2158: 15 82 std Z+5, r1 ; 0x05 + 215a: 14 82 std Z+4, r1 ; 0x04 + 215c: 16 82 std Z+6, r1 ; 0x06 + 215e: 8e 01 movw r16, r28 + 2160: 0f 5f subi r16, 0xFF ; 255 + 2162: 1f 4f sbci r17, 0xFF ; 255 + 2164: a8 01 movw r20, r16 + 2166: 30 e0 ldi r19, 0x00 ; 0 + 2168: 0e 94 f2 25 call 0x4be4 ; 0x4be4 <ltoa> + 216c: c7 01 movw r24, r14 + 216e: b8 01 movw r22, r16 + 2170: 0e 94 4d 10 call 0x209a ; 0x209a <_ZN6StringaSEPKc> + 2174: a2 96 adiw r28, 0x22 ; 34 + 2176: 0f b6 in r0, 0x3f ; 63 + 2178: f8 94 cli + 217a: de bf out 0x3e, r29 ; 62 + 217c: 0f be out 0x3f, r0 ; 63 + 217e: cd bf out 0x3d, r28 ; 61 + 2180: cf 91 pop r28 + 2182: df 91 pop r29 + 2184: 1f 91 pop r17 + 2186: 0f 91 pop r16 + 2188: ff 90 pop r15 + 218a: ef 90 pop r14 + 218c: 08 95 ret + +0000218e <_ZN6StringC1Ejh>: + 218e: ef 92 push r14 + 2190: ff 92 push r15 + 2192: 0f 93 push r16 + 2194: 1f 93 push r17 + 2196: df 93 push r29 + 2198: cf 93 push r28 + 219a: cd b7 in r28, 0x3d ; 61 + 219c: de b7 in r29, 0x3e ; 62 + 219e: 61 97 sbiw r28, 0x11 ; 17 + 21a0: 0f b6 in r0, 0x3f ; 63 + 21a2: f8 94 cli + 21a4: de bf out 0x3e, r29 ; 62 + 21a6: 0f be out 0x3f, r0 ; 63 + 21a8: cd bf out 0x3d, r28 ; 61 + 21aa: 7c 01 movw r14, r24 + 21ac: cb 01 movw r24, r22 + 21ae: f7 01 movw r30, r14 + 21b0: 11 82 std Z+1, r1 ; 0x01 + 21b2: 10 82 st Z, r1 + 21b4: 13 82 std Z+3, r1 ; 0x03 + 21b6: 12 82 std Z+2, r1 ; 0x02 + 21b8: 15 82 std Z+5, r1 ; 0x05 + 21ba: 14 82 std Z+4, r1 ; 0x04 + 21bc: 16 82 std Z+6, r1 ; 0x06 + 21be: 8e 01 movw r16, r28 + 21c0: 0f 5f subi r16, 0xFF ; 255 + 21c2: 1f 4f sbci r17, 0xFF ; 255 + 21c4: b8 01 movw r22, r16 + 21c6: 50 e0 ldi r21, 0x00 ; 0 + 21c8: 0e 94 60 26 call 0x4cc0 ; 0x4cc0 <utoa> + 21cc: c7 01 movw r24, r14 + 21ce: b8 01 movw r22, r16 + 21d0: 0e 94 4d 10 call 0x209a ; 0x209a <_ZN6StringaSEPKc> + 21d4: 61 96 adiw r28, 0x11 ; 17 + 21d6: 0f b6 in r0, 0x3f ; 63 + 21d8: f8 94 cli + 21da: de bf out 0x3e, r29 ; 62 + 21dc: 0f be out 0x3f, r0 ; 63 + 21de: cd bf out 0x3d, r28 ; 61 + 21e0: cf 91 pop r28 + 21e2: df 91 pop r29 + 21e4: 1f 91 pop r17 + 21e6: 0f 91 pop r16 + 21e8: ff 90 pop r15 + 21ea: ef 90 pop r14 + 21ec: 08 95 ret + +000021ee <_ZN6StringC1Eih>: + 21ee: ef 92 push r14 + 21f0: ff 92 push r15 + 21f2: 0f 93 push r16 + 21f4: 1f 93 push r17 + 21f6: df 93 push r29 + 21f8: cf 93 push r28 + 21fa: cd b7 in r28, 0x3d ; 61 + 21fc: de b7 in r29, 0x3e ; 62 + 21fe: 62 97 sbiw r28, 0x12 ; 18 + 2200: 0f b6 in r0, 0x3f ; 63 + 2202: f8 94 cli + 2204: de bf out 0x3e, r29 ; 62 + 2206: 0f be out 0x3f, r0 ; 63 + 2208: cd bf out 0x3d, r28 ; 61 + 220a: 7c 01 movw r14, r24 + 220c: cb 01 movw r24, r22 + 220e: f7 01 movw r30, r14 + 2210: 11 82 std Z+1, r1 ; 0x01 + 2212: 10 82 st Z, r1 + 2214: 13 82 std Z+3, r1 ; 0x03 + 2216: 12 82 std Z+2, r1 ; 0x02 + 2218: 15 82 std Z+5, r1 ; 0x05 + 221a: 14 82 std Z+4, r1 ; 0x04 + 221c: 16 82 std Z+6, r1 ; 0x06 + 221e: 8e 01 movw r16, r28 + 2220: 0f 5f subi r16, 0xFF ; 255 + 2222: 1f 4f sbci r17, 0xFF ; 255 + 2224: b8 01 movw r22, r16 + 2226: 50 e0 ldi r21, 0x00 ; 0 + 2228: 0e 94 d1 25 call 0x4ba2 ; 0x4ba2 <itoa> + 222c: c7 01 movw r24, r14 + 222e: b8 01 movw r22, r16 + 2230: 0e 94 4d 10 call 0x209a ; 0x209a <_ZN6StringaSEPKc> + 2234: 62 96 adiw r28, 0x12 ; 18 + 2236: 0f b6 in r0, 0x3f ; 63 + 2238: f8 94 cli + 223a: de bf out 0x3e, r29 ; 62 + 223c: 0f be out 0x3f, r0 ; 63 + 223e: cd bf out 0x3d, r28 ; 61 + 2240: cf 91 pop r28 + 2242: df 91 pop r29 + 2244: 1f 91 pop r17 + 2246: 0f 91 pop r16 + 2248: ff 90 pop r15 + 224a: ef 90 pop r14 + 224c: 08 95 ret + +0000224e <_ZN6StringC1Ehh>: + 224e: ef 92 push r14 + 2250: ff 92 push r15 + 2252: 0f 93 push r16 + 2254: 1f 93 push r17 + 2256: df 93 push r29 + 2258: cf 93 push r28 + 225a: cd b7 in r28, 0x3d ; 61 + 225c: de b7 in r29, 0x3e ; 62 + 225e: 29 97 sbiw r28, 0x09 ; 9 + 2260: 0f b6 in r0, 0x3f ; 63 + 2262: f8 94 cli + 2264: de bf out 0x3e, r29 ; 62 + 2266: 0f be out 0x3f, r0 ; 63 + 2268: cd bf out 0x3d, r28 ; 61 + 226a: 7c 01 movw r14, r24 + 226c: 86 2f mov r24, r22 + 226e: f7 01 movw r30, r14 + 2270: 11 82 std Z+1, r1 ; 0x01 + 2272: 10 82 st Z, r1 + 2274: 13 82 std Z+3, r1 ; 0x03 + 2276: 12 82 std Z+2, r1 ; 0x02 + 2278: 15 82 std Z+5, r1 ; 0x05 + 227a: 14 82 std Z+4, r1 ; 0x04 + 227c: 16 82 std Z+6, r1 ; 0x06 + 227e: 90 e0 ldi r25, 0x00 ; 0 + 2280: 8e 01 movw r16, r28 + 2282: 0f 5f subi r16, 0xFF ; 255 + 2284: 1f 4f sbci r17, 0xFF ; 255 + 2286: b8 01 movw r22, r16 + 2288: 50 e0 ldi r21, 0x00 ; 0 + 228a: 0e 94 60 26 call 0x4cc0 ; 0x4cc0 <utoa> + 228e: c7 01 movw r24, r14 + 2290: b8 01 movw r22, r16 + 2292: 0e 94 4d 10 call 0x209a ; 0x209a <_ZN6StringaSEPKc> + 2296: 29 96 adiw r28, 0x09 ; 9 + 2298: 0f b6 in r0, 0x3f ; 63 + 229a: f8 94 cli + 229c: de bf out 0x3e, r29 ; 62 + 229e: 0f be out 0x3f, r0 ; 63 + 22a0: cd bf out 0x3d, r28 ; 61 + 22a2: cf 91 pop r28 + 22a4: df 91 pop r29 + 22a6: 1f 91 pop r17 + 22a8: 0f 91 pop r16 + 22aa: ff 90 pop r15 + 22ac: ef 90 pop r14 + 22ae: 08 95 ret + +000022b0 <_ZN6StringC1Ec>: + 22b0: df 93 push r29 + 22b2: cf 93 push r28 + 22b4: 00 d0 rcall .+0 ; 0x22b6 <_ZN6StringC1Ec+0x6> + 22b6: cd b7 in r28, 0x3d ; 61 + 22b8: de b7 in r29, 0x3e ; 62 + 22ba: fc 01 movw r30, r24 + 22bc: 11 82 std Z+1, r1 ; 0x01 + 22be: 10 82 st Z, r1 + 22c0: 13 82 std Z+3, r1 ; 0x03 + 22c2: 12 82 std Z+2, r1 ; 0x02 + 22c4: 15 82 std Z+5, r1 ; 0x05 + 22c6: 14 82 std Z+4, r1 ; 0x04 + 22c8: 16 82 std Z+6, r1 ; 0x06 + 22ca: 69 83 std Y+1, r22 ; 0x01 + 22cc: 1a 82 std Y+2, r1 ; 0x02 + 22ce: be 01 movw r22, r28 + 22d0: 6f 5f subi r22, 0xFF ; 255 + 22d2: 7f 4f sbci r23, 0xFF ; 255 + 22d4: 0e 94 4d 10 call 0x209a ; 0x209a <_ZN6StringaSEPKc> + 22d8: 0f 90 pop r0 + 22da: 0f 90 pop r0 + 22dc: cf 91 pop r28 + 22de: df 91 pop r29 + 22e0: 08 95 ret + +000022e2 <_ZN6String6concatEPKcj>: + 22e2: ef 92 push r14 + 22e4: ff 92 push r15 + 22e6: 0f 93 push r16 + 22e8: 1f 93 push r17 + 22ea: cf 93 push r28 + 22ec: df 93 push r29 + 22ee: ec 01 movw r28, r24 + 22f0: 7b 01 movw r14, r22 + 22f2: 0c 81 ldd r16, Y+4 ; 0x04 + 22f4: 1d 81 ldd r17, Y+5 ; 0x05 + 22f6: 61 15 cp r22, r1 + 22f8: 71 05 cpc r23, r1 + 22fa: b9 f0 breq .+46 ; 0x232a <_ZN6String6concatEPKcj+0x48> + 22fc: 41 15 cp r20, r1 + 22fe: 51 05 cpc r21, r1 + 2300: 91 f0 breq .+36 ; 0x2326 <_ZN6String6concatEPKcj+0x44> + 2302: 04 0f add r16, r20 + 2304: 15 1f adc r17, r21 + 2306: b8 01 movw r22, r16 + 2308: 0e 94 cc 0f call 0x1f98 ; 0x1f98 <_ZN6String7reserveEj> + 230c: 88 23 and r24, r24 + 230e: 69 f0 breq .+26 ; 0x232a <_ZN6String6concatEPKcj+0x48> + 2310: 28 81 ld r18, Y + 2312: 39 81 ldd r19, Y+1 ; 0x01 + 2314: 8c 81 ldd r24, Y+4 ; 0x04 + 2316: 9d 81 ldd r25, Y+5 ; 0x05 + 2318: 82 0f add r24, r18 + 231a: 93 1f adc r25, r19 + 231c: b7 01 movw r22, r14 + 231e: 0e 94 88 25 call 0x4b10 ; 0x4b10 <strcpy> + 2322: 1d 83 std Y+5, r17 ; 0x05 + 2324: 0c 83 std Y+4, r16 ; 0x04 + 2326: 81 e0 ldi r24, 0x01 ; 1 + 2328: 01 c0 rjmp .+2 ; 0x232c <_ZN6String6concatEPKcj+0x4a> + 232a: 80 e0 ldi r24, 0x00 ; 0 + 232c: df 91 pop r29 + 232e: cf 91 pop r28 + 2330: 1f 91 pop r17 + 2332: 0f 91 pop r16 + 2334: ff 90 pop r15 + 2336: ef 90 pop r14 + 2338: 08 95 ret + +0000233a <_ZN6String6concatERKS_>: + 233a: fb 01 movw r30, r22 + 233c: 60 81 ld r22, Z + 233e: 71 81 ldd r23, Z+1 ; 0x01 + 2340: 44 81 ldd r20, Z+4 ; 0x04 + 2342: 55 81 ldd r21, Z+5 ; 0x05 + 2344: 0e 94 71 11 call 0x22e2 ; 0x22e2 <_ZN6String6concatEPKcj> + 2348: 08 95 ret + +0000234a <_ZN6String6concatEPKc>: + 234a: 61 15 cp r22, r1 + 234c: 71 05 cpc r23, r1 + 234e: 61 f0 breq .+24 ; 0x2368 <_ZN6String6concatEPKc+0x1e> + 2350: db 01 movw r26, r22 + 2352: 0d 90 ld r0, X+ + 2354: 00 20 and r0, r0 + 2356: e9 f7 brne .-6 ; 0x2352 <_ZN6String6concatEPKc+0x8> + 2358: ad 01 movw r20, r26 + 235a: 41 50 subi r20, 0x01 ; 1 + 235c: 50 40 sbci r21, 0x00 ; 0 + 235e: 46 1b sub r20, r22 + 2360: 57 0b sbc r21, r23 + 2362: 0e 94 71 11 call 0x22e2 ; 0x22e2 <_ZN6String6concatEPKcj> + 2366: 08 95 ret + 2368: 80 e0 ldi r24, 0x00 ; 0 + 236a: 08 95 ret + +0000236c <_ZN6String6concatEc>: + 236c: df 93 push r29 + 236e: cf 93 push r28 + 2370: 00 d0 rcall .+0 ; 0x2372 <_ZN6String6concatEc+0x6> + 2372: cd b7 in r28, 0x3d ; 61 + 2374: de b7 in r29, 0x3e ; 62 + 2376: 69 83 std Y+1, r22 ; 0x01 + 2378: 1a 82 std Y+2, r1 ; 0x02 + 237a: be 01 movw r22, r28 + 237c: 6f 5f subi r22, 0xFF ; 255 + 237e: 7f 4f sbci r23, 0xFF ; 255 + 2380: 41 e0 ldi r20, 0x01 ; 1 + 2382: 50 e0 ldi r21, 0x00 ; 0 + 2384: 0e 94 71 11 call 0x22e2 ; 0x22e2 <_ZN6String6concatEPKcj> + 2388: 0f 90 pop r0 + 238a: 0f 90 pop r0 + 238c: cf 91 pop r28 + 238e: df 91 pop r29 + 2390: 08 95 ret + +00002392 <_ZN6String6concatEh>: + 2392: ef 92 push r14 + 2394: ff 92 push r15 + 2396: 0f 93 push r16 + 2398: 1f 93 push r17 + 239a: df 93 push r29 + 239c: cf 93 push r28 + 239e: 00 d0 rcall .+0 ; 0x23a0 <_ZN6String6concatEh+0xe> + 23a0: 00 d0 rcall .+0 ; 0x23a2 <_ZN6String6concatEh+0x10> + 23a2: cd b7 in r28, 0x3d ; 61 + 23a4: de b7 in r29, 0x3e ; 62 + 23a6: 7c 01 movw r14, r24 + 23a8: 86 2f mov r24, r22 + 23aa: 90 e0 ldi r25, 0x00 ; 0 + 23ac: 8e 01 movw r16, r28 + 23ae: 0f 5f subi r16, 0xFF ; 255 + 23b0: 1f 4f sbci r17, 0xFF ; 255 + 23b2: b8 01 movw r22, r16 + 23b4: 4a e0 ldi r20, 0x0A ; 10 + 23b6: 50 e0 ldi r21, 0x00 ; 0 + 23b8: 0e 94 d1 25 call 0x4ba2 ; 0x4ba2 <itoa> + 23bc: f8 01 movw r30, r16 + 23be: 01 90 ld r0, Z+ + 23c0: 00 20 and r0, r0 + 23c2: e9 f7 brne .-6 ; 0x23be <_ZN6String6concatEh+0x2c> + 23c4: af 01 movw r20, r30 + 23c6: 41 50 subi r20, 0x01 ; 1 + 23c8: 50 40 sbci r21, 0x00 ; 0 + 23ca: 40 1b sub r20, r16 + 23cc: 51 0b sbc r21, r17 + 23ce: c7 01 movw r24, r14 + 23d0: b8 01 movw r22, r16 + 23d2: 0e 94 71 11 call 0x22e2 ; 0x22e2 <_ZN6String6concatEPKcj> + 23d6: 0f 90 pop r0 + 23d8: 0f 90 pop r0 + 23da: 0f 90 pop r0 + 23dc: 0f 90 pop r0 + 23de: cf 91 pop r28 + 23e0: df 91 pop r29 + 23e2: 1f 91 pop r17 + 23e4: 0f 91 pop r16 + 23e6: ff 90 pop r15 + 23e8: ef 90 pop r14 + 23ea: 08 95 ret + +000023ec <_ZN6String6concatEi>: + 23ec: ef 92 push r14 + 23ee: ff 92 push r15 + 23f0: 0f 93 push r16 + 23f2: 1f 93 push r17 + 23f4: df 93 push r29 + 23f6: cf 93 push r28 + 23f8: cd b7 in r28, 0x3d ; 61 + 23fa: de b7 in r29, 0x3e ; 62 + 23fc: 27 97 sbiw r28, 0x07 ; 7 + 23fe: 0f b6 in r0, 0x3f ; 63 + 2400: f8 94 cli + 2402: de bf out 0x3e, r29 ; 62 + 2404: 0f be out 0x3f, r0 ; 63 + 2406: cd bf out 0x3d, r28 ; 61 + 2408: 7c 01 movw r14, r24 + 240a: cb 01 movw r24, r22 + 240c: 8e 01 movw r16, r28 + 240e: 0f 5f subi r16, 0xFF ; 255 + 2410: 1f 4f sbci r17, 0xFF ; 255 + 2412: b8 01 movw r22, r16 + 2414: 4a e0 ldi r20, 0x0A ; 10 + 2416: 50 e0 ldi r21, 0x00 ; 0 + 2418: 0e 94 d1 25 call 0x4ba2 ; 0x4ba2 <itoa> + 241c: f8 01 movw r30, r16 + 241e: 01 90 ld r0, Z+ + 2420: 00 20 and r0, r0 + 2422: e9 f7 brne .-6 ; 0x241e <_ZN6String6concatEi+0x32> + 2424: af 01 movw r20, r30 + 2426: 41 50 subi r20, 0x01 ; 1 + 2428: 50 40 sbci r21, 0x00 ; 0 + 242a: 40 1b sub r20, r16 + 242c: 51 0b sbc r21, r17 + 242e: c7 01 movw r24, r14 + 2430: b8 01 movw r22, r16 + 2432: 0e 94 71 11 call 0x22e2 ; 0x22e2 <_ZN6String6concatEPKcj> + 2436: 27 96 adiw r28, 0x07 ; 7 + 2438: 0f b6 in r0, 0x3f ; 63 + 243a: f8 94 cli + 243c: de bf out 0x3e, r29 ; 62 + 243e: 0f be out 0x3f, r0 ; 63 + 2440: cd bf out 0x3d, r28 ; 61 + 2442: cf 91 pop r28 + 2444: df 91 pop r29 + 2446: 1f 91 pop r17 + 2448: 0f 91 pop r16 + 244a: ff 90 pop r15 + 244c: ef 90 pop r14 + 244e: 08 95 ret + +00002450 <_ZN6String6concatEj>: + 2450: ef 92 push r14 + 2452: ff 92 push r15 + 2454: 0f 93 push r16 + 2456: 1f 93 push r17 + 2458: df 93 push r29 + 245a: cf 93 push r28 + 245c: 00 d0 rcall .+0 ; 0x245e <_ZN6String6concatEj+0xe> + 245e: 00 d0 rcall .+0 ; 0x2460 <_ZN6String6concatEj+0x10> + 2460: 00 d0 rcall .+0 ; 0x2462 <_ZN6String6concatEj+0x12> + 2462: cd b7 in r28, 0x3d ; 61 + 2464: de b7 in r29, 0x3e ; 62 + 2466: 7c 01 movw r14, r24 + 2468: cb 01 movw r24, r22 + 246a: 8e 01 movw r16, r28 + 246c: 0f 5f subi r16, 0xFF ; 255 + 246e: 1f 4f sbci r17, 0xFF ; 255 + 2470: b8 01 movw r22, r16 + 2472: 4a e0 ldi r20, 0x0A ; 10 + 2474: 50 e0 ldi r21, 0x00 ; 0 + 2476: 0e 94 60 26 call 0x4cc0 ; 0x4cc0 <utoa> + 247a: f8 01 movw r30, r16 + 247c: 01 90 ld r0, Z+ + 247e: 00 20 and r0, r0 + 2480: e9 f7 brne .-6 ; 0x247c <_ZN6String6concatEj+0x2c> + 2482: af 01 movw r20, r30 + 2484: 41 50 subi r20, 0x01 ; 1 + 2486: 50 40 sbci r21, 0x00 ; 0 + 2488: 40 1b sub r20, r16 + 248a: 51 0b sbc r21, r17 + 248c: c7 01 movw r24, r14 + 248e: b8 01 movw r22, r16 + 2490: 0e 94 71 11 call 0x22e2 ; 0x22e2 <_ZN6String6concatEPKcj> + 2494: 26 96 adiw r28, 0x06 ; 6 + 2496: 0f b6 in r0, 0x3f ; 63 + 2498: f8 94 cli + 249a: de bf out 0x3e, r29 ; 62 + 249c: 0f be out 0x3f, r0 ; 63 + 249e: cd bf out 0x3d, r28 ; 61 + 24a0: cf 91 pop r28 + 24a2: df 91 pop r29 + 24a4: 1f 91 pop r17 + 24a6: 0f 91 pop r16 + 24a8: ff 90 pop r15 + 24aa: ef 90 pop r14 + 24ac: 08 95 ret + +000024ae <_ZN6String6concatEl>: + 24ae: ef 92 push r14 + 24b0: ff 92 push r15 + 24b2: 0f 93 push r16 + 24b4: 1f 93 push r17 + 24b6: df 93 push r29 + 24b8: cf 93 push r28 + 24ba: cd b7 in r28, 0x3d ; 61 + 24bc: de b7 in r29, 0x3e ; 62 + 24be: 2c 97 sbiw r28, 0x0c ; 12 + 24c0: 0f b6 in r0, 0x3f ; 63 + 24c2: f8 94 cli + 24c4: de bf out 0x3e, r29 ; 62 + 24c6: 0f be out 0x3f, r0 ; 63 + 24c8: cd bf out 0x3d, r28 ; 61 + 24ca: 7c 01 movw r14, r24 + 24cc: cb 01 movw r24, r22 + 24ce: ba 01 movw r22, r20 + 24d0: 8e 01 movw r16, r28 + 24d2: 0f 5f subi r16, 0xFF ; 255 + 24d4: 1f 4f sbci r17, 0xFF ; 255 + 24d6: a8 01 movw r20, r16 + 24d8: 2a e0 ldi r18, 0x0A ; 10 + 24da: 30 e0 ldi r19, 0x00 ; 0 + 24dc: 0e 94 f2 25 call 0x4be4 ; 0x4be4 <ltoa> + 24e0: f8 01 movw r30, r16 + 24e2: 01 90 ld r0, Z+ + 24e4: 00 20 and r0, r0 + 24e6: e9 f7 brne .-6 ; 0x24e2 <_ZN6String6concatEl+0x34> + 24e8: af 01 movw r20, r30 + 24ea: 41 50 subi r20, 0x01 ; 1 + 24ec: 50 40 sbci r21, 0x00 ; 0 + 24ee: 40 1b sub r20, r16 + 24f0: 51 0b sbc r21, r17 + 24f2: c7 01 movw r24, r14 + 24f4: b8 01 movw r22, r16 + 24f6: 0e 94 71 11 call 0x22e2 ; 0x22e2 <_ZN6String6concatEPKcj> + 24fa: 2c 96 adiw r28, 0x0c ; 12 + 24fc: 0f b6 in r0, 0x3f ; 63 + 24fe: f8 94 cli + 2500: de bf out 0x3e, r29 ; 62 + 2502: 0f be out 0x3f, r0 ; 63 + 2504: cd bf out 0x3d, r28 ; 61 + 2506: cf 91 pop r28 + 2508: df 91 pop r29 + 250a: 1f 91 pop r17 + 250c: 0f 91 pop r16 + 250e: ff 90 pop r15 + 2510: ef 90 pop r14 + 2512: 08 95 ret + +00002514 <_ZN6String6concatEm>: + 2514: ef 92 push r14 + 2516: ff 92 push r15 + 2518: 0f 93 push r16 + 251a: 1f 93 push r17 + 251c: df 93 push r29 + 251e: cf 93 push r28 + 2520: cd b7 in r28, 0x3d ; 61 + 2522: de b7 in r29, 0x3e ; 62 + 2524: 2b 97 sbiw r28, 0x0b ; 11 + 2526: 0f b6 in r0, 0x3f ; 63 + 2528: f8 94 cli + 252a: de bf out 0x3e, r29 ; 62 + 252c: 0f be out 0x3f, r0 ; 63 + 252e: cd bf out 0x3d, r28 ; 61 + 2530: 7c 01 movw r14, r24 + 2532: cb 01 movw r24, r22 + 2534: ba 01 movw r22, r20 + 2536: 8e 01 movw r16, r28 + 2538: 0f 5f subi r16, 0xFF ; 255 + 253a: 1f 4f sbci r17, 0xFF ; 255 + 253c: a8 01 movw r20, r16 + 253e: 2a e0 ldi r18, 0x0A ; 10 + 2540: 30 e0 ldi r19, 0x00 ; 0 + 2542: 0e 94 3b 26 call 0x4c76 ; 0x4c76 <ultoa> + 2546: f8 01 movw r30, r16 + 2548: 01 90 ld r0, Z+ + 254a: 00 20 and r0, r0 + 254c: e9 f7 brne .-6 ; 0x2548 <_ZN6String6concatEm+0x34> + 254e: af 01 movw r20, r30 + 2550: 41 50 subi r20, 0x01 ; 1 + 2552: 50 40 sbci r21, 0x00 ; 0 + 2554: 40 1b sub r20, r16 + 2556: 51 0b sbc r21, r17 + 2558: c7 01 movw r24, r14 + 255a: b8 01 movw r22, r16 + 255c: 0e 94 71 11 call 0x22e2 ; 0x22e2 <_ZN6String6concatEPKcj> + 2560: 2b 96 adiw r28, 0x0b ; 11 + 2562: 0f b6 in r0, 0x3f ; 63 + 2564: f8 94 cli + 2566: de bf out 0x3e, r29 ; 62 + 2568: 0f be out 0x3f, r0 ; 63 + 256a: cd bf out 0x3d, r28 ; 61 + 256c: cf 91 pop r28 + 256e: df 91 pop r29 + 2570: 1f 91 pop r17 + 2572: 0f 91 pop r16 + 2574: ff 90 pop r15 + 2576: ef 90 pop r14 + 2578: 08 95 ret + +0000257a <_ZplRK15StringSumHelperRK6String>: + 257a: 0f 93 push r16 + 257c: 1f 93 push r17 + 257e: 8c 01 movw r16, r24 + 2580: fb 01 movw r30, r22 + 2582: 60 81 ld r22, Z + 2584: 71 81 ldd r23, Z+1 ; 0x01 + 2586: 44 81 ldd r20, Z+4 ; 0x04 + 2588: 55 81 ldd r21, Z+5 ; 0x05 + 258a: 0e 94 71 11 call 0x22e2 ; 0x22e2 <_ZN6String6concatEPKcj> + 258e: 88 23 and r24, r24 + 2590: 19 f4 brne .+6 ; 0x2598 <_ZplRK15StringSumHelperRK6String+0x1e> + 2592: c8 01 movw r24, r16 + 2594: 0e 94 a0 0f call 0x1f40 ; 0x1f40 <_ZN6String10invalidateEv> + 2598: c8 01 movw r24, r16 + 259a: 1f 91 pop r17 + 259c: 0f 91 pop r16 + 259e: 08 95 ret + +000025a0 <_ZplRK15StringSumHelperPKc>: + 25a0: 0f 93 push r16 + 25a2: 1f 93 push r17 + 25a4: 8c 01 movw r16, r24 + 25a6: 61 15 cp r22, r1 + 25a8: 71 05 cpc r23, r1 + 25aa: 69 f0 breq .+26 ; 0x25c6 <_ZplRK15StringSumHelperPKc+0x26> + 25ac: db 01 movw r26, r22 + 25ae: 0d 90 ld r0, X+ + 25b0: 00 20 and r0, r0 + 25b2: e9 f7 brne .-6 ; 0x25ae <_ZplRK15StringSumHelperPKc+0xe> + 25b4: ad 01 movw r20, r26 + 25b6: 41 50 subi r20, 0x01 ; 1 + 25b8: 50 40 sbci r21, 0x00 ; 0 + 25ba: 46 1b sub r20, r22 + 25bc: 57 0b sbc r21, r23 + 25be: 0e 94 71 11 call 0x22e2 ; 0x22e2 <_ZN6String6concatEPKcj> + 25c2: 88 23 and r24, r24 + 25c4: 19 f4 brne .+6 ; 0x25cc <_ZplRK15StringSumHelperPKc+0x2c> + 25c6: c8 01 movw r24, r16 + 25c8: 0e 94 a0 0f call 0x1f40 ; 0x1f40 <_ZN6String10invalidateEv> + 25cc: c8 01 movw r24, r16 + 25ce: 1f 91 pop r17 + 25d0: 0f 91 pop r16 + 25d2: 08 95 ret + +000025d4 <_ZplRK15StringSumHelperc>: + 25d4: 0f 93 push r16 + 25d6: 1f 93 push r17 + 25d8: 8c 01 movw r16, r24 + 25da: 0e 94 b6 11 call 0x236c ; 0x236c <_ZN6String6concatEc> + 25de: 88 23 and r24, r24 + 25e0: 19 f4 brne .+6 ; 0x25e8 <_ZplRK15StringSumHelperc+0x14> + 25e2: c8 01 movw r24, r16 + 25e4: 0e 94 a0 0f call 0x1f40 ; 0x1f40 <_ZN6String10invalidateEv> + 25e8: c8 01 movw r24, r16 + 25ea: 1f 91 pop r17 + 25ec: 0f 91 pop r16 + 25ee: 08 95 ret + +000025f0 <_ZplRK15StringSumHelperh>: + 25f0: 0f 93 push r16 + 25f2: 1f 93 push r17 + 25f4: 8c 01 movw r16, r24 + 25f6: 0e 94 c9 11 call 0x2392 ; 0x2392 <_ZN6String6concatEh> + 25fa: 88 23 and r24, r24 + 25fc: 19 f4 brne .+6 ; 0x2604 <_ZplRK15StringSumHelperh+0x14> + 25fe: c8 01 movw r24, r16 + 2600: 0e 94 a0 0f call 0x1f40 ; 0x1f40 <_ZN6String10invalidateEv> + 2604: c8 01 movw r24, r16 + 2606: 1f 91 pop r17 + 2608: 0f 91 pop r16 + 260a: 08 95 ret + +0000260c <_ZplRK15StringSumHelperi>: + 260c: 0f 93 push r16 + 260e: 1f 93 push r17 + 2610: 8c 01 movw r16, r24 + 2612: 0e 94 f6 11 call 0x23ec ; 0x23ec <_ZN6String6concatEi> + 2616: 88 23 and r24, r24 + 2618: 19 f4 brne .+6 ; 0x2620 <_ZplRK15StringSumHelperi+0x14> + 261a: c8 01 movw r24, r16 + 261c: 0e 94 a0 0f call 0x1f40 ; 0x1f40 <_ZN6String10invalidateEv> + 2620: c8 01 movw r24, r16 + 2622: 1f 91 pop r17 + 2624: 0f 91 pop r16 + 2626: 08 95 ret + +00002628 <_ZplRK15StringSumHelperj>: + 2628: 0f 93 push r16 + 262a: 1f 93 push r17 + 262c: 8c 01 movw r16, r24 + 262e: 0e 94 28 12 call 0x2450 ; 0x2450 <_ZN6String6concatEj> + 2632: 88 23 and r24, r24 + 2634: 19 f4 brne .+6 ; 0x263c <_ZplRK15StringSumHelperj+0x14> + 2636: c8 01 movw r24, r16 + 2638: 0e 94 a0 0f call 0x1f40 ; 0x1f40 <_ZN6String10invalidateEv> + 263c: c8 01 movw r24, r16 + 263e: 1f 91 pop r17 + 2640: 0f 91 pop r16 + 2642: 08 95 ret + +00002644 <_ZplRK15StringSumHelperl>: + 2644: 0f 93 push r16 + 2646: 1f 93 push r17 + 2648: 8c 01 movw r16, r24 + 264a: 0e 94 57 12 call 0x24ae ; 0x24ae <_ZN6String6concatEl> + 264e: 88 23 and r24, r24 + 2650: 19 f4 brne .+6 ; 0x2658 <_ZplRK15StringSumHelperl+0x14> + 2652: c8 01 movw r24, r16 + 2654: 0e 94 a0 0f call 0x1f40 ; 0x1f40 <_ZN6String10invalidateEv> + 2658: c8 01 movw r24, r16 + 265a: 1f 91 pop r17 + 265c: 0f 91 pop r16 + 265e: 08 95 ret + +00002660 <_ZplRK15StringSumHelperm>: + 2660: 0f 93 push r16 + 2662: 1f 93 push r17 + 2664: 8c 01 movw r16, r24 + 2666: 0e 94 8a 12 call 0x2514 ; 0x2514 <_ZN6String6concatEm> + 266a: 88 23 and r24, r24 + 266c: 19 f4 brne .+6 ; 0x2674 <_ZplRK15StringSumHelperm+0x14> + 266e: c8 01 movw r24, r16 + 2670: 0e 94 a0 0f call 0x1f40 ; 0x1f40 <_ZN6String10invalidateEv> + 2674: c8 01 movw r24, r16 + 2676: 1f 91 pop r17 + 2678: 0f 91 pop r16 + 267a: 08 95 ret + +0000267c <_ZNK6String9compareToERKS_>: + 267c: cf 93 push r28 + 267e: df 93 push r29 + 2680: fc 01 movw r30, r24 + 2682: db 01 movw r26, r22 + 2684: 80 81 ld r24, Z + 2686: 91 81 ldd r25, Z+1 ; 0x01 + 2688: 00 97 sbiw r24, 0x00 ; 0 + 268a: 31 f0 breq .+12 ; 0x2698 <_ZNK6String9compareToERKS_+0x1c> + 268c: 6d 91 ld r22, X+ + 268e: 7c 91 ld r23, X + 2690: 11 97 sbiw r26, 0x01 ; 1 + 2692: 61 15 cp r22, r1 + 2694: 71 05 cpc r23, r1 + 2696: e9 f4 brne .+58 ; 0x26d2 <_ZNK6String9compareToERKS_+0x56> + 2698: cd 91 ld r28, X+ + 269a: dc 91 ld r29, X + 269c: 11 97 sbiw r26, 0x01 ; 1 + 269e: 20 97 sbiw r28, 0x00 ; 0 + 26a0: 69 f0 breq .+26 ; 0x26bc <_ZNK6String9compareToERKS_+0x40> + 26a2: 14 96 adiw r26, 0x04 ; 4 + 26a4: 2d 91 ld r18, X+ + 26a6: 3c 91 ld r19, X + 26a8: 15 97 sbiw r26, 0x05 ; 5 + 26aa: 21 15 cp r18, r1 + 26ac: 31 05 cpc r19, r1 + 26ae: 31 f0 breq .+12 ; 0x26bc <_ZNK6String9compareToERKS_+0x40> + 26b0: 28 81 ld r18, Y + 26b2: 30 e0 ldi r19, 0x00 ; 0 + 26b4: 30 95 com r19 + 26b6: 21 95 neg r18 + 26b8: 3f 4f sbci r19, 0xFF ; 255 + 26ba: 12 c0 rjmp .+36 ; 0x26e0 <_ZNK6String9compareToERKS_+0x64> + 26bc: 00 97 sbiw r24, 0x00 ; 0 + 26be: 71 f0 breq .+28 ; 0x26dc <_ZNK6String9compareToERKS_+0x60> + 26c0: 24 81 ldd r18, Z+4 ; 0x04 + 26c2: 35 81 ldd r19, Z+5 ; 0x05 + 26c4: 21 15 cp r18, r1 + 26c6: 31 05 cpc r19, r1 + 26c8: 49 f0 breq .+18 ; 0x26dc <_ZNK6String9compareToERKS_+0x60> + 26ca: fc 01 movw r30, r24 + 26cc: 20 81 ld r18, Z + 26ce: 30 e0 ldi r19, 0x00 ; 0 + 26d0: 07 c0 rjmp .+14 ; 0x26e0 <_ZNK6String9compareToERKS_+0x64> + 26d2: 0e 94 7f 25 call 0x4afe ; 0x4afe <strcmp> + 26d6: 28 2f mov r18, r24 + 26d8: 39 2f mov r19, r25 + 26da: 02 c0 rjmp .+4 ; 0x26e0 <_ZNK6String9compareToERKS_+0x64> + 26dc: 20 e0 ldi r18, 0x00 ; 0 + 26de: 30 e0 ldi r19, 0x00 ; 0 + 26e0: c9 01 movw r24, r18 + 26e2: df 91 pop r29 + 26e4: cf 91 pop r28 + 26e6: 08 95 ret + +000026e8 <_ZNK6String6equalsERKS_>: + 26e8: fc 01 movw r30, r24 + 26ea: 44 81 ldd r20, Z+4 ; 0x04 + 26ec: 55 81 ldd r21, Z+5 ; 0x05 + 26ee: fb 01 movw r30, r22 + 26f0: 24 81 ldd r18, Z+4 ; 0x04 + 26f2: 35 81 ldd r19, Z+5 ; 0x05 + 26f4: 42 17 cp r20, r18 + 26f6: 53 07 cpc r21, r19 + 26f8: 29 f4 brne .+10 ; 0x2704 <_ZNK6String6equalsERKS_+0x1c> + 26fa: 0e 94 3e 13 call 0x267c ; 0x267c <_ZNK6String9compareToERKS_> + 26fe: 21 e0 ldi r18, 0x01 ; 1 + 2700: 00 97 sbiw r24, 0x00 ; 0 + 2702: 09 f0 breq .+2 ; 0x2706 <_ZNK6String6equalsERKS_+0x1e> + 2704: 20 e0 ldi r18, 0x00 ; 0 + 2706: 82 2f mov r24, r18 + 2708: 08 95 ret + +0000270a <_ZNK6String6equalsEPKc>: + 270a: fc 01 movw r30, r24 + 270c: 84 81 ldd r24, Z+4 ; 0x04 + 270e: 95 81 ldd r25, Z+5 ; 0x05 + 2710: 00 97 sbiw r24, 0x00 ; 0 + 2712: 41 f4 brne .+16 ; 0x2724 <_ZNK6String6equalsEPKc+0x1a> + 2714: 61 15 cp r22, r1 + 2716: 71 05 cpc r23, r1 + 2718: 19 f0 breq .+6 ; 0x2720 <_ZNK6String6equalsEPKc+0x16> + 271a: 81 e0 ldi r24, 0x01 ; 1 + 271c: fb 01 movw r30, r22 + 271e: 09 c0 rjmp .+18 ; 0x2732 <_ZNK6String6equalsEPKc+0x28> + 2720: 81 e0 ldi r24, 0x01 ; 1 + 2722: 08 95 ret + 2724: 01 90 ld r0, Z+ + 2726: f0 81 ld r31, Z + 2728: e0 2d mov r30, r0 + 272a: 61 15 cp r22, r1 + 272c: 71 05 cpc r23, r1 + 272e: 31 f4 brne .+12 ; 0x273c <_ZNK6String6equalsEPKc+0x32> + 2730: 81 e0 ldi r24, 0x01 ; 1 + 2732: 90 81 ld r25, Z + 2734: 99 23 and r25, r25 + 2736: 59 f0 breq .+22 ; 0x274e <_ZNK6String6equalsEPKc+0x44> + 2738: 80 e0 ldi r24, 0x00 ; 0 + 273a: 08 95 ret + 273c: cf 01 movw r24, r30 + 273e: 0e 94 7f 25 call 0x4afe ; 0x4afe <strcmp> + 2742: 9c 01 movw r18, r24 + 2744: 81 e0 ldi r24, 0x01 ; 1 + 2746: 21 15 cp r18, r1 + 2748: 31 05 cpc r19, r1 + 274a: 09 f0 breq .+2 ; 0x274e <_ZNK6String6equalsEPKc+0x44> + 274c: 80 e0 ldi r24, 0x00 ; 0 + 274e: 08 95 ret + +00002750 <_ZNK6StringltERKS_>: + 2750: 0e 94 3e 13 call 0x267c ; 0x267c <_ZNK6String9compareToERKS_> + 2754: 89 2f mov r24, r25 + 2756: 88 1f adc r24, r24 + 2758: 88 27 eor r24, r24 + 275a: 88 1f adc r24, r24 + 275c: 08 95 ret + +0000275e <_ZNK6StringgtERKS_>: + 275e: 0e 94 3e 13 call 0x267c ; 0x267c <_ZNK6String9compareToERKS_> + 2762: 21 e0 ldi r18, 0x01 ; 1 + 2764: 18 16 cp r1, r24 + 2766: 19 06 cpc r1, r25 + 2768: 0c f0 brlt .+2 ; 0x276c <_ZNK6StringgtERKS_+0xe> + 276a: 20 e0 ldi r18, 0x00 ; 0 + 276c: 82 2f mov r24, r18 + 276e: 08 95 ret + +00002770 <_ZNK6StringleERKS_>: + 2770: 0e 94 3e 13 call 0x267c ; 0x267c <_ZNK6String9compareToERKS_> + 2774: 21 e0 ldi r18, 0x01 ; 1 + 2776: 18 16 cp r1, r24 + 2778: 19 06 cpc r1, r25 + 277a: 0c f4 brge .+2 ; 0x277e <_ZNK6StringleERKS_+0xe> + 277c: 20 e0 ldi r18, 0x00 ; 0 + 277e: 82 2f mov r24, r18 + 2780: 08 95 ret + +00002782 <_ZNK6StringgeERKS_>: + 2782: 0e 94 3e 13 call 0x267c ; 0x267c <_ZNK6String9compareToERKS_> + 2786: 89 2f mov r24, r25 + 2788: 80 95 com r24 + 278a: 88 1f adc r24, r24 + 278c: 88 27 eor r24, r24 + 278e: 88 1f adc r24, r24 + 2790: 08 95 ret + +00002792 <_ZNK6String16equalsIgnoreCaseERKS_>: + 2792: ef 92 push r14 + 2794: ff 92 push r15 + 2796: 0f 93 push r16 + 2798: 1f 93 push r17 + 279a: cf 93 push r28 + 279c: df 93 push r29 + 279e: fc 01 movw r30, r24 + 27a0: db 01 movw r26, r22 + 27a2: 86 17 cp r24, r22 + 27a4: 97 07 cpc r25, r23 + 27a6: 29 f1 breq .+74 ; 0x27f2 <_ZNK6String16equalsIgnoreCaseERKS_+0x60> + 27a8: 84 81 ldd r24, Z+4 ; 0x04 + 27aa: 95 81 ldd r25, Z+5 ; 0x05 + 27ac: 14 96 adiw r26, 0x04 ; 4 + 27ae: 2d 91 ld r18, X+ + 27b0: 3c 91 ld r19, X + 27b2: 15 97 sbiw r26, 0x05 ; 5 + 27b4: 82 17 cp r24, r18 + 27b6: 93 07 cpc r25, r19 + 27b8: f1 f4 brne .+60 ; 0x27f6 <_ZNK6String16equalsIgnoreCaseERKS_+0x64> + 27ba: 00 97 sbiw r24, 0x00 ; 0 + 27bc: d1 f0 breq .+52 ; 0x27f2 <_ZNK6String16equalsIgnoreCaseERKS_+0x60> + 27be: 00 81 ld r16, Z + 27c0: 11 81 ldd r17, Z+1 ; 0x01 + 27c2: cd 91 ld r28, X+ + 27c4: dc 91 ld r29, X + 27c6: 11 97 sbiw r26, 0x01 ; 1 + 27c8: 0f c0 rjmp .+30 ; 0x27e8 <_ZNK6String16equalsIgnoreCaseERKS_+0x56> + 27ca: 99 27 eor r25, r25 + 27cc: 87 fd sbrc r24, 7 + 27ce: 90 95 com r25 + 27d0: 0e 94 3c 25 call 0x4a78 ; 0x4a78 <tolower> + 27d4: 7c 01 movw r14, r24 + 27d6: 89 91 ld r24, Y+ + 27d8: 99 27 eor r25, r25 + 27da: 87 fd sbrc r24, 7 + 27dc: 90 95 com r25 + 27de: 0e 94 3c 25 call 0x4a78 ; 0x4a78 <tolower> + 27e2: e8 16 cp r14, r24 + 27e4: f9 06 cpc r15, r25 + 27e6: 39 f4 brne .+14 ; 0x27f6 <_ZNK6String16equalsIgnoreCaseERKS_+0x64> + 27e8: f8 01 movw r30, r16 + 27ea: 81 91 ld r24, Z+ + 27ec: 8f 01 movw r16, r30 + 27ee: 88 23 and r24, r24 + 27f0: 61 f7 brne .-40 ; 0x27ca <_ZNK6String16equalsIgnoreCaseERKS_+0x38> + 27f2: 81 e0 ldi r24, 0x01 ; 1 + 27f4: 01 c0 rjmp .+2 ; 0x27f8 <_ZNK6String16equalsIgnoreCaseERKS_+0x66> + 27f6: 80 e0 ldi r24, 0x00 ; 0 + 27f8: df 91 pop r29 + 27fa: cf 91 pop r28 + 27fc: 1f 91 pop r17 + 27fe: 0f 91 pop r16 + 2800: ff 90 pop r15 + 2802: ef 90 pop r14 + 2804: 08 95 ret + +00002806 <_ZNK6String10startsWithERKS_j>: + 2806: fc 01 movw r30, r24 + 2808: db 01 movw r26, r22 + 280a: ca 01 movw r24, r20 + 280c: 14 96 adiw r26, 0x04 ; 4 + 280e: 4d 91 ld r20, X+ + 2810: 5c 91 ld r21, X + 2812: 15 97 sbiw r26, 0x05 ; 5 + 2814: 24 81 ldd r18, Z+4 ; 0x04 + 2816: 35 81 ldd r19, Z+5 ; 0x05 + 2818: 24 1b sub r18, r20 + 281a: 35 0b sbc r19, r21 + 281c: 28 17 cp r18, r24 + 281e: 39 07 cpc r19, r25 + 2820: a0 f0 brcs .+40 ; 0x284a <_ZNK6String10startsWithERKS_j+0x44> + 2822: 20 81 ld r18, Z + 2824: 31 81 ldd r19, Z+1 ; 0x01 + 2826: 21 15 cp r18, r1 + 2828: 31 05 cpc r19, r1 + 282a: 79 f0 breq .+30 ; 0x284a <_ZNK6String10startsWithERKS_j+0x44> + 282c: 6d 91 ld r22, X+ + 282e: 7c 91 ld r23, X + 2830: 11 97 sbiw r26, 0x01 ; 1 + 2832: 61 15 cp r22, r1 + 2834: 71 05 cpc r23, r1 + 2836: 59 f0 breq .+22 ; 0x284e <_ZNK6String10startsWithERKS_j+0x48> + 2838: 82 0f add r24, r18 + 283a: 93 1f adc r25, r19 + 283c: 0e 94 8f 25 call 0x4b1e ; 0x4b1e <strncmp> + 2840: 9c 01 movw r18, r24 + 2842: 81 e0 ldi r24, 0x01 ; 1 + 2844: 21 15 cp r18, r1 + 2846: 31 05 cpc r19, r1 + 2848: 19 f0 breq .+6 ; 0x2850 <_ZNK6String10startsWithERKS_j+0x4a> + 284a: 80 e0 ldi r24, 0x00 ; 0 + 284c: 08 95 ret + 284e: 80 e0 ldi r24, 0x00 ; 0 + 2850: 08 95 ret + +00002852 <_ZNK6String10startsWithERKS_>: + 2852: fc 01 movw r30, r24 + 2854: 44 81 ldd r20, Z+4 ; 0x04 + 2856: 55 81 ldd r21, Z+5 ; 0x05 + 2858: fb 01 movw r30, r22 + 285a: 24 81 ldd r18, Z+4 ; 0x04 + 285c: 35 81 ldd r19, Z+5 ; 0x05 + 285e: 42 17 cp r20, r18 + 2860: 53 07 cpc r21, r19 + 2862: 28 f0 brcs .+10 ; 0x286e <_ZNK6String10startsWithERKS_+0x1c> + 2864: 40 e0 ldi r20, 0x00 ; 0 + 2866: 50 e0 ldi r21, 0x00 ; 0 + 2868: 0e 94 03 14 call 0x2806 ; 0x2806 <_ZNK6String10startsWithERKS_j> + 286c: 08 95 ret + 286e: 80 e0 ldi r24, 0x00 ; 0 + 2870: 08 95 ret + +00002872 <_ZNK6String8endsWithERKS_>: + 2872: fc 01 movw r30, r24 + 2874: db 01 movw r26, r22 + 2876: 84 81 ldd r24, Z+4 ; 0x04 + 2878: 95 81 ldd r25, Z+5 ; 0x05 + 287a: 14 96 adiw r26, 0x04 ; 4 + 287c: 4d 91 ld r20, X+ + 287e: 5c 91 ld r21, X + 2880: 15 97 sbiw r26, 0x05 ; 5 + 2882: 84 17 cp r24, r20 + 2884: 95 07 cpc r25, r21 + 2886: b0 f0 brcs .+44 ; 0x28b4 <_ZNK6String8endsWithERKS_+0x42> + 2888: 20 81 ld r18, Z + 288a: 31 81 ldd r19, Z+1 ; 0x01 + 288c: 21 15 cp r18, r1 + 288e: 31 05 cpc r19, r1 + 2890: 89 f0 breq .+34 ; 0x28b4 <_ZNK6String8endsWithERKS_+0x42> + 2892: 6d 91 ld r22, X+ + 2894: 7c 91 ld r23, X + 2896: 11 97 sbiw r26, 0x01 ; 1 + 2898: 61 15 cp r22, r1 + 289a: 71 05 cpc r23, r1 + 289c: 69 f0 breq .+26 ; 0x28b8 <_ZNK6String8endsWithERKS_+0x46> + 289e: 84 1b sub r24, r20 + 28a0: 95 0b sbc r25, r21 + 28a2: 82 0f add r24, r18 + 28a4: 93 1f adc r25, r19 + 28a6: 0e 94 7f 25 call 0x4afe ; 0x4afe <strcmp> + 28aa: 9c 01 movw r18, r24 + 28ac: 81 e0 ldi r24, 0x01 ; 1 + 28ae: 21 15 cp r18, r1 + 28b0: 31 05 cpc r19, r1 + 28b2: 19 f0 breq .+6 ; 0x28ba <_ZNK6String8endsWithERKS_+0x48> + 28b4: 80 e0 ldi r24, 0x00 ; 0 + 28b6: 08 95 ret + 28b8: 80 e0 ldi r24, 0x00 ; 0 + 28ba: 08 95 ret + +000028bc <_ZN6String9setCharAtEjc>: + 28bc: fc 01 movw r30, r24 + 28be: 84 81 ldd r24, Z+4 ; 0x04 + 28c0: 95 81 ldd r25, Z+5 ; 0x05 + 28c2: 68 17 cp r22, r24 + 28c4: 79 07 cpc r23, r25 + 28c6: 30 f4 brcc .+12 ; 0x28d4 <_ZN6String9setCharAtEjc+0x18> + 28c8: 01 90 ld r0, Z+ + 28ca: f0 81 ld r31, Z + 28cc: e0 2d mov r30, r0 + 28ce: e6 0f add r30, r22 + 28d0: f7 1f adc r31, r23 + 28d2: 40 83 st Z, r20 + 28d4: 08 95 ret + +000028d6 <_ZN6StringixEj>: + 28d6: fc 01 movw r30, r24 + 28d8: 84 81 ldd r24, Z+4 ; 0x04 + 28da: 95 81 ldd r25, Z+5 ; 0x05 + 28dc: 68 17 cp r22, r24 + 28de: 79 07 cpc r23, r25 + 28e0: 20 f4 brcc .+8 ; 0x28ea <_ZN6StringixEj+0x14> + 28e2: 80 81 ld r24, Z + 28e4: 91 81 ldd r25, Z+1 ; 0x01 + 28e6: 00 97 sbiw r24, 0x00 ; 0 + 28e8: 29 f4 brne .+10 ; 0x28f4 <_ZN6StringixEj+0x1e> + 28ea: 10 92 a0 03 sts 0x03A0, r1 + 28ee: 60 ea ldi r22, 0xA0 ; 160 + 28f0: 73 e0 ldi r23, 0x03 ; 3 + 28f2: 02 c0 rjmp .+4 ; 0x28f8 <_ZN6StringixEj+0x22> + 28f4: 68 0f add r22, r24 + 28f6: 79 1f adc r23, r25 + 28f8: cb 01 movw r24, r22 + 28fa: 08 95 ret + +000028fc <_ZNK6StringixEj>: + 28fc: fc 01 movw r30, r24 + 28fe: 84 81 ldd r24, Z+4 ; 0x04 + 2900: 95 81 ldd r25, Z+5 ; 0x05 + 2902: 68 17 cp r22, r24 + 2904: 79 07 cpc r23, r25 + 2906: 48 f4 brcc .+18 ; 0x291a <_ZNK6StringixEj+0x1e> + 2908: 80 81 ld r24, Z + 290a: 91 81 ldd r25, Z+1 ; 0x01 + 290c: 00 97 sbiw r24, 0x00 ; 0 + 290e: 39 f0 breq .+14 ; 0x291e <_ZNK6StringixEj+0x22> + 2910: 68 0f add r22, r24 + 2912: 79 1f adc r23, r25 + 2914: fb 01 movw r30, r22 + 2916: 80 81 ld r24, Z + 2918: 08 95 ret + 291a: 80 e0 ldi r24, 0x00 ; 0 + 291c: 08 95 ret + 291e: 80 e0 ldi r24, 0x00 ; 0 + 2920: 08 95 ret + +00002922 <_ZNK6String6charAtEj>: + 2922: 0e 94 7e 14 call 0x28fc ; 0x28fc <_ZNK6StringixEj> + 2926: 08 95 ret + +00002928 <_ZNK6String8getBytesEPhjj>: + 2928: 0f 93 push r16 + 292a: 1f 93 push r17 + 292c: cf 93 push r28 + 292e: df 93 push r29 + 2930: fc 01 movw r30, r24 + 2932: 8b 01 movw r16, r22 + 2934: 41 15 cp r20, r1 + 2936: 51 05 cpc r21, r1 + 2938: f1 f0 breq .+60 ; 0x2976 <_ZNK6String8getBytesEPhjj+0x4e> + 293a: 61 15 cp r22, r1 + 293c: 71 05 cpc r23, r1 + 293e: d9 f0 breq .+54 ; 0x2976 <_ZNK6String8getBytesEPhjj+0x4e> + 2940: c4 81 ldd r28, Z+4 ; 0x04 + 2942: d5 81 ldd r29, Z+5 ; 0x05 + 2944: 2c 17 cp r18, r28 + 2946: 3d 07 cpc r19, r29 + 2948: 18 f0 brcs .+6 ; 0x2950 <_ZNK6String8getBytesEPhjj+0x28> + 294a: fb 01 movw r30, r22 + 294c: 10 82 st Z, r1 + 294e: 13 c0 rjmp .+38 ; 0x2976 <_ZNK6String8getBytesEPhjj+0x4e> + 2950: 41 50 subi r20, 0x01 ; 1 + 2952: 50 40 sbci r21, 0x00 ; 0 + 2954: c2 1b sub r28, r18 + 2956: d3 0b sbc r29, r19 + 2958: 4c 17 cp r20, r28 + 295a: 5d 07 cpc r21, r29 + 295c: 08 f4 brcc .+2 ; 0x2960 <_ZNK6String8getBytesEPhjj+0x38> + 295e: ea 01 movw r28, r20 + 2960: 60 81 ld r22, Z + 2962: 71 81 ldd r23, Z+1 ; 0x01 + 2964: 62 0f add r22, r18 + 2966: 73 1f adc r23, r19 + 2968: c8 01 movw r24, r16 + 296a: ae 01 movw r20, r28 + 296c: 0e 94 9d 25 call 0x4b3a ; 0x4b3a <strncpy> + 2970: c0 0f add r28, r16 + 2972: d1 1f adc r29, r17 + 2974: 18 82 st Y, r1 + 2976: df 91 pop r29 + 2978: cf 91 pop r28 + 297a: 1f 91 pop r17 + 297c: 0f 91 pop r16 + 297e: 08 95 ret + +00002980 <_ZNK6String7indexOfEcj>: + 2980: cf 93 push r28 + 2982: df 93 push r29 + 2984: fc 01 movw r30, r24 + 2986: ca 01 movw r24, r20 + 2988: 24 81 ldd r18, Z+4 ; 0x04 + 298a: 35 81 ldd r19, Z+5 ; 0x05 + 298c: 42 17 cp r20, r18 + 298e: 53 07 cpc r21, r19 + 2990: 78 f4 brcc .+30 ; 0x29b0 <_ZNK6String7indexOfEcj+0x30> + 2992: c0 81 ld r28, Z + 2994: d1 81 ldd r29, Z+1 ; 0x01 + 2996: 77 27 eor r23, r23 + 2998: 67 fd sbrc r22, 7 + 299a: 70 95 com r23 + 299c: 8c 0f add r24, r28 + 299e: 9d 1f adc r25, r29 + 29a0: 0e 94 74 25 call 0x4ae8 ; 0x4ae8 <strchr> + 29a4: 00 97 sbiw r24, 0x00 ; 0 + 29a6: 21 f0 breq .+8 ; 0x29b0 <_ZNK6String7indexOfEcj+0x30> + 29a8: 9c 01 movw r18, r24 + 29aa: 2c 1b sub r18, r28 + 29ac: 3d 0b sbc r19, r29 + 29ae: 02 c0 rjmp .+4 ; 0x29b4 <_ZNK6String7indexOfEcj+0x34> + 29b0: 2f ef ldi r18, 0xFF ; 255 + 29b2: 3f ef ldi r19, 0xFF ; 255 + 29b4: c9 01 movw r24, r18 + 29b6: df 91 pop r29 + 29b8: cf 91 pop r28 + 29ba: 08 95 ret + +000029bc <_ZNK6String7indexOfEc>: + 29bc: 40 e0 ldi r20, 0x00 ; 0 + 29be: 50 e0 ldi r21, 0x00 ; 0 + 29c0: 0e 94 c0 14 call 0x2980 ; 0x2980 <_ZNK6String7indexOfEcj> + 29c4: 08 95 ret + +000029c6 <_ZNK6String7indexOfERKS_j>: + 29c6: cf 93 push r28 + 29c8: df 93 push r29 + 29ca: fc 01 movw r30, r24 + 29cc: ca 01 movw r24, r20 + 29ce: 24 81 ldd r18, Z+4 ; 0x04 + 29d0: 35 81 ldd r19, Z+5 ; 0x05 + 29d2: 42 17 cp r20, r18 + 29d4: 53 07 cpc r21, r19 + 29d6: 78 f4 brcc .+30 ; 0x29f6 <_ZNK6String7indexOfERKS_j+0x30> + 29d8: c0 81 ld r28, Z + 29da: d1 81 ldd r29, Z+1 ; 0x01 + 29dc: fb 01 movw r30, r22 + 29de: 60 81 ld r22, Z + 29e0: 71 81 ldd r23, Z+1 ; 0x01 + 29e2: 8c 0f add r24, r28 + 29e4: 9d 1f adc r25, r29 + 29e6: 0e 94 b7 25 call 0x4b6e ; 0x4b6e <strstr> + 29ea: 00 97 sbiw r24, 0x00 ; 0 + 29ec: 21 f0 breq .+8 ; 0x29f6 <_ZNK6String7indexOfERKS_j+0x30> + 29ee: 9c 01 movw r18, r24 + 29f0: 2c 1b sub r18, r28 + 29f2: 3d 0b sbc r19, r29 + 29f4: 02 c0 rjmp .+4 ; 0x29fa <_ZNK6String7indexOfERKS_j+0x34> + 29f6: 2f ef ldi r18, 0xFF ; 255 + 29f8: 3f ef ldi r19, 0xFF ; 255 + 29fa: c9 01 movw r24, r18 + 29fc: df 91 pop r29 + 29fe: cf 91 pop r28 + 2a00: 08 95 ret + +00002a02 <_ZNK6String7indexOfERKS_>: + 2a02: 40 e0 ldi r20, 0x00 ; 0 + 2a04: 50 e0 ldi r21, 0x00 ; 0 + 2a06: 0e 94 e3 14 call 0x29c6 ; 0x29c6 <_ZNK6String7indexOfERKS_j> + 2a0a: 08 95 ret + +00002a0c <_ZNK6String11lastIndexOfEcj>: + 2a0c: df 92 push r13 + 2a0e: ef 92 push r14 + 2a10: ff 92 push r15 + 2a12: 0f 93 push r16 + 2a14: 1f 93 push r17 + 2a16: cf 93 push r28 + 2a18: df 93 push r29 + 2a1a: ec 01 movw r28, r24 + 2a1c: 8c 81 ldd r24, Y+4 ; 0x04 + 2a1e: 9d 81 ldd r25, Y+5 ; 0x05 + 2a20: 48 17 cp r20, r24 + 2a22: 59 07 cpc r21, r25 + 2a24: f8 f4 brcc .+62 ; 0x2a64 <_ZNK6String11lastIndexOfEcj+0x58> + 2a26: 7a 01 movw r14, r20 + 2a28: 08 94 sec + 2a2a: e1 1c adc r14, r1 + 2a2c: f1 1c adc r15, r1 + 2a2e: e8 81 ld r30, Y + 2a30: f9 81 ldd r31, Y+1 ; 0x01 + 2a32: ee 0d add r30, r14 + 2a34: ff 1d adc r31, r15 + 2a36: d0 80 ld r13, Z + 2a38: 10 82 st Z, r1 + 2a3a: 08 81 ld r16, Y + 2a3c: 19 81 ldd r17, Y+1 ; 0x01 + 2a3e: 77 27 eor r23, r23 + 2a40: 67 fd sbrc r22, 7 + 2a42: 70 95 com r23 + 2a44: c8 01 movw r24, r16 + 2a46: 0e 94 ac 25 call 0x4b58 ; 0x4b58 <strrchr> + 2a4a: 0e 0d add r16, r14 + 2a4c: 1f 1d adc r17, r15 + 2a4e: f8 01 movw r30, r16 + 2a50: d0 82 st Z, r13 + 2a52: 00 97 sbiw r24, 0x00 ; 0 + 2a54: 39 f0 breq .+14 ; 0x2a64 <_ZNK6String11lastIndexOfEcj+0x58> + 2a56: 28 81 ld r18, Y + 2a58: 39 81 ldd r19, Y+1 ; 0x01 + 2a5a: ac 01 movw r20, r24 + 2a5c: 42 1b sub r20, r18 + 2a5e: 53 0b sbc r21, r19 + 2a60: 9a 01 movw r18, r20 + 2a62: 02 c0 rjmp .+4 ; 0x2a68 <_ZNK6String11lastIndexOfEcj+0x5c> + 2a64: 2f ef ldi r18, 0xFF ; 255 + 2a66: 3f ef ldi r19, 0xFF ; 255 + 2a68: c9 01 movw r24, r18 + 2a6a: df 91 pop r29 + 2a6c: cf 91 pop r28 + 2a6e: 1f 91 pop r17 + 2a70: 0f 91 pop r16 + 2a72: ff 90 pop r15 + 2a74: ef 90 pop r14 + 2a76: df 90 pop r13 + 2a78: 08 95 ret + +00002a7a <_ZNK6String11lastIndexOfEc>: + 2a7a: fc 01 movw r30, r24 + 2a7c: 44 81 ldd r20, Z+4 ; 0x04 + 2a7e: 55 81 ldd r21, Z+5 ; 0x05 + 2a80: 41 50 subi r20, 0x01 ; 1 + 2a82: 50 40 sbci r21, 0x00 ; 0 + 2a84: 0e 94 06 15 call 0x2a0c ; 0x2a0c <_ZNK6String11lastIndexOfEcj> + 2a88: 08 95 ret + +00002a8a <_ZNK6String11lastIndexOfERKS_j>: + 2a8a: af 92 push r10 + 2a8c: bf 92 push r11 + 2a8e: cf 92 push r12 + 2a90: df 92 push r13 + 2a92: ef 92 push r14 + 2a94: ff 92 push r15 + 2a96: 0f 93 push r16 + 2a98: 1f 93 push r17 + 2a9a: cf 93 push r28 + 2a9c: df 93 push r29 + 2a9e: fc 01 movw r30, r24 + 2aa0: 6b 01 movw r12, r22 + 2aa2: 8a 01 movw r16, r20 + 2aa4: db 01 movw r26, r22 + 2aa6: 14 96 adiw r26, 0x04 ; 4 + 2aa8: 2d 91 ld r18, X+ + 2aaa: 3c 91 ld r19, X + 2aac: 15 97 sbiw r26, 0x05 ; 5 + 2aae: 21 15 cp r18, r1 + 2ab0: 31 05 cpc r19, r1 + 2ab2: 51 f1 breq .+84 ; 0x2b08 <_ZNK6String11lastIndexOfERKS_j+0x7e> + 2ab4: 84 81 ldd r24, Z+4 ; 0x04 + 2ab6: 95 81 ldd r25, Z+5 ; 0x05 + 2ab8: 00 97 sbiw r24, 0x00 ; 0 + 2aba: 31 f1 breq .+76 ; 0x2b08 <_ZNK6String11lastIndexOfERKS_j+0x7e> + 2abc: 82 17 cp r24, r18 + 2abe: 93 07 cpc r25, r19 + 2ac0: 18 f1 brcs .+70 ; 0x2b08 <_ZNK6String11lastIndexOfERKS_j+0x7e> + 2ac2: 48 17 cp r20, r24 + 2ac4: 59 07 cpc r21, r25 + 2ac6: 18 f0 brcs .+6 ; 0x2ace <_ZNK6String11lastIndexOfERKS_j+0x44> + 2ac8: 8c 01 movw r16, r24 + 2aca: 01 50 subi r16, 0x01 ; 1 + 2acc: 10 40 sbci r17, 0x00 ; 0 + 2ace: e0 80 ld r14, Z + 2ad0: f1 80 ldd r15, Z+1 ; 0x01 + 2ad2: c7 01 movw r24, r14 + 2ad4: cf ef ldi r28, 0xFF ; 255 + 2ad6: df ef ldi r29, 0xFF ; 255 + 2ad8: 57 01 movw r10, r14 + 2ada: a0 0e add r10, r16 + 2adc: b1 1e adc r11, r17 + 2ade: 10 c0 rjmp .+32 ; 0x2b00 <_ZNK6String11lastIndexOfERKS_j+0x76> + 2ae0: f6 01 movw r30, r12 + 2ae2: 60 81 ld r22, Z + 2ae4: 71 81 ldd r23, Z+1 ; 0x01 + 2ae6: 0e 94 b7 25 call 0x4b6e ; 0x4b6e <strstr> + 2aea: 00 97 sbiw r24, 0x00 ; 0 + 2aec: 79 f0 breq .+30 ; 0x2b0c <_ZNK6String11lastIndexOfERKS_j+0x82> + 2aee: 9c 01 movw r18, r24 + 2af0: 2e 19 sub r18, r14 + 2af2: 3f 09 sbc r19, r15 + 2af4: 02 17 cp r16, r18 + 2af6: 13 07 cpc r17, r19 + 2af8: 08 f4 brcc .+2 ; 0x2afc <_ZNK6String11lastIndexOfERKS_j+0x72> + 2afa: 9e 01 movw r18, r28 + 2afc: 01 96 adiw r24, 0x01 ; 1 + 2afe: e9 01 movw r28, r18 + 2b00: a8 16 cp r10, r24 + 2b02: b9 06 cpc r11, r25 + 2b04: 68 f7 brcc .-38 ; 0x2ae0 <_ZNK6String11lastIndexOfERKS_j+0x56> + 2b06: 02 c0 rjmp .+4 ; 0x2b0c <_ZNK6String11lastIndexOfERKS_j+0x82> + 2b08: cf ef ldi r28, 0xFF ; 255 + 2b0a: df ef ldi r29, 0xFF ; 255 + 2b0c: ce 01 movw r24, r28 + 2b0e: df 91 pop r29 + 2b10: cf 91 pop r28 + 2b12: 1f 91 pop r17 + 2b14: 0f 91 pop r16 + 2b16: ff 90 pop r15 + 2b18: ef 90 pop r14 + 2b1a: df 90 pop r13 + 2b1c: cf 90 pop r12 + 2b1e: bf 90 pop r11 + 2b20: af 90 pop r10 + 2b22: 08 95 ret + +00002b24 <_ZNK6String11lastIndexOfERKS_>: + 2b24: fc 01 movw r30, r24 + 2b26: 44 81 ldd r20, Z+4 ; 0x04 + 2b28: 55 81 ldd r21, Z+5 ; 0x05 + 2b2a: fb 01 movw r30, r22 + 2b2c: 24 81 ldd r18, Z+4 ; 0x04 + 2b2e: 35 81 ldd r19, Z+5 ; 0x05 + 2b30: 42 1b sub r20, r18 + 2b32: 53 0b sbc r21, r19 + 2b34: 0e 94 45 15 call 0x2a8a ; 0x2a8a <_ZNK6String11lastIndexOfERKS_j> + 2b38: 08 95 ret + +00002b3a <_ZNK6String9substringEjj>: + 2b3a: af 92 push r10 + 2b3c: bf 92 push r11 + 2b3e: cf 92 push r12 + 2b40: df 92 push r13 + 2b42: ef 92 push r14 + 2b44: ff 92 push r15 + 2b46: 0f 93 push r16 + 2b48: 1f 93 push r17 + 2b4a: cf 93 push r28 + 2b4c: df 93 push r29 + 2b4e: f8 2e mov r15, r24 + 2b50: e9 2e mov r14, r25 + 2b52: 6b 01 movw r12, r22 + 2b54: 8a 01 movw r16, r20 + 2b56: e9 01 movw r28, r18 + 2b58: 24 17 cp r18, r20 + 2b5a: 35 07 cpc r19, r21 + 2b5c: 48 f4 brcc .+18 ; 0x2b70 <_ZNK6String9substringEjj+0x36> + 2b5e: 34 2f mov r19, r20 + 2b60: 21 2f mov r18, r17 + 2b62: 8e 01 movw r16, r28 + 2b64: c9 01 movw r24, r18 + 2b66: a9 2e mov r10, r25 + 2b68: e5 01 movw r28, r10 + 2b6a: 5e 01 movw r10, r28 + 2b6c: b2 2e mov r11, r18 + 2b6e: e5 01 movw r28, r10 + 2b70: 8f 2d mov r24, r15 + 2b72: 9e 2d mov r25, r14 + 2b74: 6c ea ldi r22, 0xAC ; 172 + 2b76: 71 e0 ldi r23, 0x01 ; 1 + 2b78: 0e 94 0c 10 call 0x2018 ; 0x2018 <_ZN6StringC1EPKc> + 2b7c: d6 01 movw r26, r12 + 2b7e: 14 96 adiw r26, 0x04 ; 4 + 2b80: 8d 91 ld r24, X+ + 2b82: 9c 91 ld r25, X + 2b84: 15 97 sbiw r26, 0x05 ; 5 + 2b86: 80 17 cp r24, r16 + 2b88: 91 07 cpc r25, r17 + 2b8a: d8 f0 brcs .+54 ; 0x2bc2 <_ZNK6String9substringEjj+0x88> + 2b8c: 8c 17 cp r24, r28 + 2b8e: 9d 07 cpc r25, r29 + 2b90: 08 f4 brcc .+2 ; 0x2b94 <_ZNK6String9substringEjj+0x5a> + 2b92: ec 01 movw r28, r24 + 2b94: d6 01 movw r26, r12 + 2b96: ed 91 ld r30, X+ + 2b98: fc 91 ld r31, X + 2b9a: 11 97 sbiw r26, 0x01 ; 1 + 2b9c: ec 0f add r30, r28 + 2b9e: fd 1f adc r31, r29 + 2ba0: b0 80 ld r11, Z + 2ba2: 10 82 st Z, r1 + 2ba4: 6d 91 ld r22, X+ + 2ba6: 7c 91 ld r23, X + 2ba8: 60 0f add r22, r16 + 2baa: 71 1f adc r23, r17 + 2bac: 8f 2d mov r24, r15 + 2bae: 9e 2d mov r25, r14 + 2bb0: 0e 94 4d 10 call 0x209a ; 0x209a <_ZN6StringaSEPKc> + 2bb4: d6 01 movw r26, r12 + 2bb6: ed 91 ld r30, X+ + 2bb8: fc 91 ld r31, X + 2bba: 11 97 sbiw r26, 0x01 ; 1 + 2bbc: ec 0f add r30, r28 + 2bbe: fd 1f adc r31, r29 + 2bc0: b0 82 st Z, r11 + 2bc2: 8f 2d mov r24, r15 + 2bc4: 9e 2d mov r25, r14 + 2bc6: df 91 pop r29 + 2bc8: cf 91 pop r28 + 2bca: 1f 91 pop r17 + 2bcc: 0f 91 pop r16 + 2bce: ff 90 pop r15 + 2bd0: ef 90 pop r14 + 2bd2: df 90 pop r13 + 2bd4: cf 90 pop r12 + 2bd6: bf 90 pop r11 + 2bd8: af 90 pop r10 + 2bda: 08 95 ret + +00002bdc <_ZNK6String9substringEj>: + 2bdc: cf 93 push r28 + 2bde: df 93 push r29 + 2be0: ec 01 movw r28, r24 + 2be2: fb 01 movw r30, r22 + 2be4: 24 81 ldd r18, Z+4 ; 0x04 + 2be6: 35 81 ldd r19, Z+5 ; 0x05 + 2be8: 0e 94 9d 15 call 0x2b3a ; 0x2b3a <_ZNK6String9substringEjj> + 2bec: ce 01 movw r24, r28 + 2bee: df 91 pop r29 + 2bf0: cf 91 pop r28 + 2bf2: 08 95 ret + +00002bf4 <_ZN6String7replaceEcc>: + 2bf4: dc 01 movw r26, r24 + 2bf6: ed 91 ld r30, X+ + 2bf8: fc 91 ld r31, X + 2bfa: 11 97 sbiw r26, 0x01 ; 1 + 2bfc: 30 97 sbiw r30, 0x00 ; 0 + 2bfe: 29 f4 brne .+10 ; 0x2c0a <_ZN6String7replaceEcc+0x16> + 2c00: 08 95 ret + 2c02: 86 17 cp r24, r22 + 2c04: 09 f4 brne .+2 ; 0x2c08 <_ZN6String7replaceEcc+0x14> + 2c06: 40 83 st Z, r20 + 2c08: 31 96 adiw r30, 0x01 ; 1 + 2c0a: 80 81 ld r24, Z + 2c0c: 88 23 and r24, r24 + 2c0e: c9 f7 brne .-14 ; 0x2c02 <_ZN6String7replaceEcc+0xe> + 2c10: 08 95 ret + +00002c12 <_ZN6String7replaceERKS_S1_>: + 2c12: 2f 92 push r2 + 2c14: 3f 92 push r3 + 2c16: 4f 92 push r4 + 2c18: 5f 92 push r5 + 2c1a: 6f 92 push r6 + 2c1c: 7f 92 push r7 + 2c1e: 8f 92 push r8 + 2c20: 9f 92 push r9 + 2c22: af 92 push r10 + 2c24: bf 92 push r11 + 2c26: cf 92 push r12 + 2c28: df 92 push r13 + 2c2a: ef 92 push r14 + 2c2c: ff 92 push r15 + 2c2e: 0f 93 push r16 + 2c30: 1f 93 push r17 + 2c32: cf 93 push r28 + 2c34: df 93 push r29 + 2c36: 7c 01 movw r14, r24 + 2c38: 2b 01 movw r4, r22 + 2c3a: 6a 01 movw r12, r20 + 2c3c: dc 01 movw r26, r24 + 2c3e: 14 96 adiw r26, 0x04 ; 4 + 2c40: 6d 90 ld r6, X+ + 2c42: 7c 90 ld r7, X + 2c44: 15 97 sbiw r26, 0x05 ; 5 + 2c46: 61 14 cp r6, r1 + 2c48: 71 04 cpc r7, r1 + 2c4a: 09 f4 brne .+2 ; 0x2c4e <_ZN6String7replaceERKS_S1_+0x3c> + 2c4c: d9 c0 rjmp .+434 ; 0x2e00 <_ZN6String7replaceERKS_S1_+0x1ee> + 2c4e: fb 01 movw r30, r22 + 2c50: 84 80 ldd r8, Z+4 ; 0x04 + 2c52: 95 80 ldd r9, Z+5 ; 0x05 + 2c54: 81 14 cp r8, r1 + 2c56: 91 04 cpc r9, r1 + 2c58: 09 f4 brne .+2 ; 0x2c5c <_ZN6String7replaceERKS_S1_+0x4a> + 2c5a: d2 c0 rjmp .+420 ; 0x2e00 <_ZN6String7replaceERKS_S1_+0x1ee> + 2c5c: da 01 movw r26, r20 + 2c5e: 14 96 adiw r26, 0x04 ; 4 + 2c60: ad 90 ld r10, X+ + 2c62: bc 90 ld r11, X + 2c64: 15 97 sbiw r26, 0x05 ; 5 + 2c66: a8 18 sub r10, r8 + 2c68: b9 08 sbc r11, r9 + 2c6a: fc 01 movw r30, r24 + 2c6c: 00 81 ld r16, Z + 2c6e: 11 81 ldd r17, Z+1 ; 0x01 + 2c70: a1 14 cp r10, r1 + 2c72: b1 04 cpc r11, r1 + 2c74: f1 f4 brne .+60 ; 0x2cb2 <_ZN6String7replaceERKS_S1_+0xa0> + 2c76: 13 c0 rjmp .+38 ; 0x2c9e <_ZN6String7replaceERKS_S1_+0x8c> + 2c78: d6 01 movw r26, r12 + 2c7a: 6c 91 ld r22, X + 2c7c: 11 96 adiw r26, 0x01 ; 1 + 2c7e: 7c 91 ld r23, X + 2c80: 11 97 sbiw r26, 0x01 ; 1 + 2c82: 14 96 adiw r26, 0x04 ; 4 + 2c84: 4d 91 ld r20, X+ + 2c86: 5c 91 ld r21, X + 2c88: 15 97 sbiw r26, 0x05 ; 5 + 2c8a: ce 01 movw r24, r28 + 2c8c: 0e 94 59 25 call 0x4ab2 ; 0x4ab2 <memcpy> + 2c90: d6 01 movw r26, r12 + 2c92: 14 96 adiw r26, 0x04 ; 4 + 2c94: 0d 91 ld r16, X+ + 2c96: 1c 91 ld r17, X + 2c98: 15 97 sbiw r26, 0x05 ; 5 + 2c9a: 0c 0f add r16, r28 + 2c9c: 1d 1f adc r17, r29 + 2c9e: f2 01 movw r30, r4 + 2ca0: 60 81 ld r22, Z + 2ca2: 71 81 ldd r23, Z+1 ; 0x01 + 2ca4: c8 01 movw r24, r16 + 2ca6: 0e 94 b7 25 call 0x4b6e ; 0x4b6e <strstr> + 2caa: ec 01 movw r28, r24 + 2cac: 00 97 sbiw r24, 0x00 ; 0 + 2cae: 21 f7 brne .-56 ; 0x2c78 <_ZN6String7replaceERKS_S1_+0x66> + 2cb0: a7 c0 rjmp .+334 ; 0x2e00 <_ZN6String7replaceERKS_S1_+0x1ee> + 2cb2: b7 fc sbrc r11, 7 + 2cb4: 02 c0 rjmp .+4 ; 0x2cba <_ZN6String7replaceERKS_S1_+0xa8> + 2cb6: e3 01 movw r28, r6 + 2cb8: 42 c0 rjmp .+132 ; 0x2d3e <_ZN6String7replaceERKS_S1_+0x12c> + 2cba: 48 01 movw r8, r16 + 2cbc: 2d c0 rjmp .+90 ; 0x2d18 <_ZN6String7replaceERKS_S1_+0x106> + 2cbe: e3 01 movw r28, r6 + 2cc0: c0 1b sub r28, r16 + 2cc2: d1 0b sbc r29, r17 + 2cc4: c4 01 movw r24, r8 + 2cc6: b8 01 movw r22, r16 + 2cc8: ae 01 movw r20, r28 + 2cca: 0e 94 59 25 call 0x4ab2 ; 0x4ab2 <memcpy> + 2cce: c8 0d add r28, r8 + 2cd0: d9 1d adc r29, r9 + 2cd2: d6 01 movw r26, r12 + 2cd4: 6c 91 ld r22, X + 2cd6: 11 96 adiw r26, 0x01 ; 1 + 2cd8: 7c 91 ld r23, X + 2cda: 11 97 sbiw r26, 0x01 ; 1 + 2cdc: 14 96 adiw r26, 0x04 ; 4 + 2cde: 4d 91 ld r20, X+ + 2ce0: 5c 91 ld r21, X + 2ce2: 15 97 sbiw r26, 0x05 ; 5 + 2ce4: ce 01 movw r24, r28 + 2ce6: 0e 94 59 25 call 0x4ab2 ; 0x4ab2 <memcpy> + 2cea: d6 01 movw r26, r12 + 2cec: 14 96 adiw r26, 0x04 ; 4 + 2cee: 8d 90 ld r8, X+ + 2cf0: 9c 90 ld r9, X + 2cf2: 15 97 sbiw r26, 0x05 ; 5 + 2cf4: 8c 0e add r8, r28 + 2cf6: 9d 1e adc r9, r29 + 2cf8: f2 01 movw r30, r4 + 2cfa: 04 81 ldd r16, Z+4 ; 0x04 + 2cfc: 15 81 ldd r17, Z+5 ; 0x05 + 2cfe: 06 0d add r16, r6 + 2d00: 17 1d adc r17, r7 + 2d02: d7 01 movw r26, r14 + 2d04: 14 96 adiw r26, 0x04 ; 4 + 2d06: 8d 91 ld r24, X+ + 2d08: 9c 91 ld r25, X + 2d0a: 15 97 sbiw r26, 0x05 ; 5 + 2d0c: 8a 0d add r24, r10 + 2d0e: 9b 1d adc r25, r11 + 2d10: 15 96 adiw r26, 0x05 ; 5 + 2d12: 9c 93 st X, r25 + 2d14: 8e 93 st -X, r24 + 2d16: 14 97 sbiw r26, 0x04 ; 4 + 2d18: f2 01 movw r30, r4 + 2d1a: 60 81 ld r22, Z + 2d1c: 71 81 ldd r23, Z+1 ; 0x01 + 2d1e: c8 01 movw r24, r16 + 2d20: 0e 94 b7 25 call 0x4b6e ; 0x4b6e <strstr> + 2d24: 3c 01 movw r6, r24 + 2d26: 00 97 sbiw r24, 0x00 ; 0 + 2d28: 51 f6 brne .-108 ; 0x2cbe <_ZN6String7replaceERKS_S1_+0xac> + 2d2a: c4 01 movw r24, r8 + 2d2c: b8 01 movw r22, r16 + 2d2e: 0e 94 88 25 call 0x4b10 ; 0x4b10 <strcpy> + 2d32: 66 c0 rjmp .+204 ; 0x2e00 <_ZN6String7replaceERKS_S1_+0x1ee> + 2d34: 8c 01 movw r16, r24 + 2d36: 08 0d add r16, r8 + 2d38: 19 1d adc r17, r9 + 2d3a: ca 0d add r28, r10 + 2d3c: db 1d adc r29, r11 + 2d3e: d2 01 movw r26, r4 + 2d40: 6d 91 ld r22, X+ + 2d42: 7c 91 ld r23, X + 2d44: c8 01 movw r24, r16 + 2d46: 0e 94 b7 25 call 0x4b6e ; 0x4b6e <strstr> + 2d4a: 00 97 sbiw r24, 0x00 ; 0 + 2d4c: 99 f7 brne .-26 ; 0x2d34 <_ZN6String7replaceERKS_S1_+0x122> + 2d4e: c6 15 cp r28, r6 + 2d50: d7 05 cpc r29, r7 + 2d52: 09 f4 brne .+2 ; 0x2d56 <_ZN6String7replaceERKS_S1_+0x144> + 2d54: 55 c0 rjmp .+170 ; 0x2e00 <_ZN6String7replaceERKS_S1_+0x1ee> + 2d56: f7 01 movw r30, r14 + 2d58: 82 81 ldd r24, Z+2 ; 0x02 + 2d5a: 93 81 ldd r25, Z+3 ; 0x03 + 2d5c: 8c 17 cp r24, r28 + 2d5e: 9d 07 cpc r25, r29 + 2d60: 08 f0 brcs .+2 ; 0x2d64 <_ZN6String7replaceERKS_S1_+0x152> + 2d62: 45 c0 rjmp .+138 ; 0x2dee <_ZN6String7replaceERKS_S1_+0x1dc> + 2d64: c7 01 movw r24, r14 + 2d66: be 01 movw r22, r28 + 2d68: 0e 94 b2 0f call 0x1f64 ; 0x1f64 <_ZN6String12changeBufferEj> + 2d6c: 88 23 and r24, r24 + 2d6e: 09 f4 brne .+2 ; 0x2d72 <_ZN6String7replaceERKS_S1_+0x160> + 2d70: 47 c0 rjmp .+142 ; 0x2e00 <_ZN6String7replaceERKS_S1_+0x1ee> + 2d72: 3d c0 rjmp .+122 ; 0x2dee <_ZN6String7replaceERKS_S1_+0x1dc> + 2d74: c7 01 movw r24, r14 + 2d76: b2 01 movw r22, r4 + 2d78: a9 01 movw r20, r18 + 2d7a: 0e 94 45 15 call 0x2a8a ; 0x2a8a <_ZNK6String11lastIndexOfERKS_j> + 2d7e: ec 01 movw r28, r24 + 2d80: 97 fd sbrc r25, 7 + 2d82: 3e c0 rjmp .+124 ; 0x2e00 <_ZN6String7replaceERKS_S1_+0x1ee> + 2d84: d7 01 movw r26, r14 + 2d86: 6d 91 ld r22, X+ + 2d88: 7c 91 ld r23, X + 2d8a: 11 97 sbiw r26, 0x01 ; 1 + 2d8c: f2 01 movw r30, r4 + 2d8e: 84 81 ldd r24, Z+4 ; 0x04 + 2d90: 95 81 ldd r25, Z+5 ; 0x05 + 2d92: 8c 0f add r24, r28 + 2d94: 9d 1f adc r25, r29 + 2d96: 68 0f add r22, r24 + 2d98: 79 1f adc r23, r25 + 2d9a: 14 96 adiw r26, 0x04 ; 4 + 2d9c: 4d 91 ld r20, X+ + 2d9e: 5c 91 ld r21, X + 2da0: 15 97 sbiw r26, 0x05 ; 5 + 2da2: 48 1b sub r20, r24 + 2da4: 59 0b sbc r21, r25 + 2da6: cb 01 movw r24, r22 + 2da8: 8a 0d add r24, r10 + 2daa: 9b 1d adc r25, r11 + 2dac: 0e 94 62 25 call 0x4ac4 ; 0x4ac4 <memmove> + 2db0: d7 01 movw r26, r14 + 2db2: 14 96 adiw r26, 0x04 ; 4 + 2db4: 8d 91 ld r24, X+ + 2db6: 9c 91 ld r25, X + 2db8: 15 97 sbiw r26, 0x05 ; 5 + 2dba: 8a 0d add r24, r10 + 2dbc: 9b 1d adc r25, r11 + 2dbe: 15 96 adiw r26, 0x05 ; 5 + 2dc0: 9c 93 st X, r25 + 2dc2: 8e 93 st -X, r24 + 2dc4: 14 97 sbiw r26, 0x04 ; 4 + 2dc6: ed 91 ld r30, X+ + 2dc8: fc 91 ld r31, X + 2dca: 11 97 sbiw r26, 0x01 ; 1 + 2dcc: e8 0f add r30, r24 + 2dce: f9 1f adc r31, r25 + 2dd0: 10 82 st Z, r1 + 2dd2: 2d 91 ld r18, X+ + 2dd4: 3c 91 ld r19, X + 2dd6: 2c 0f add r18, r28 + 2dd8: 3d 1f adc r19, r29 + 2dda: f6 01 movw r30, r12 + 2ddc: 60 81 ld r22, Z + 2dde: 71 81 ldd r23, Z+1 ; 0x01 + 2de0: 44 81 ldd r20, Z+4 ; 0x04 + 2de2: 55 81 ldd r21, Z+5 ; 0x05 + 2de4: c9 01 movw r24, r18 + 2de6: 0e 94 59 25 call 0x4ab2 ; 0x4ab2 <memcpy> + 2dea: 9e 01 movw r18, r28 + 2dec: 05 c0 rjmp .+10 ; 0x2df8 <_ZN6String7replaceERKS_S1_+0x1e6> + 2dee: d7 01 movw r26, r14 + 2df0: 14 96 adiw r26, 0x04 ; 4 + 2df2: 2d 91 ld r18, X+ + 2df4: 3c 91 ld r19, X + 2df6: 15 97 sbiw r26, 0x05 ; 5 + 2df8: 21 50 subi r18, 0x01 ; 1 + 2dfa: 30 40 sbci r19, 0x00 ; 0 + 2dfc: 37 ff sbrs r19, 7 + 2dfe: ba cf rjmp .-140 ; 0x2d74 <_ZN6String7replaceERKS_S1_+0x162> + 2e00: df 91 pop r29 + 2e02: cf 91 pop r28 + 2e04: 1f 91 pop r17 + 2e06: 0f 91 pop r16 + 2e08: ff 90 pop r15 + 2e0a: ef 90 pop r14 + 2e0c: df 90 pop r13 + 2e0e: cf 90 pop r12 + 2e10: bf 90 pop r11 + 2e12: af 90 pop r10 + 2e14: 9f 90 pop r9 + 2e16: 8f 90 pop r8 + 2e18: 7f 90 pop r7 + 2e1a: 6f 90 pop r6 + 2e1c: 5f 90 pop r5 + 2e1e: 4f 90 pop r4 + 2e20: 3f 90 pop r3 + 2e22: 2f 90 pop r2 + 2e24: 08 95 ret + +00002e26 <_ZN6String11toLowerCaseEv>: + 2e26: cf 93 push r28 + 2e28: df 93 push r29 + 2e2a: fc 01 movw r30, r24 + 2e2c: c0 81 ld r28, Z + 2e2e: d1 81 ldd r29, Z+1 ; 0x01 + 2e30: 20 97 sbiw r28, 0x00 ; 0 + 2e32: 39 f4 brne .+14 ; 0x2e42 <_ZN6String11toLowerCaseEv+0x1c> + 2e34: 09 c0 rjmp .+18 ; 0x2e48 <_ZN6String11toLowerCaseEv+0x22> + 2e36: 99 27 eor r25, r25 + 2e38: 87 fd sbrc r24, 7 + 2e3a: 90 95 com r25 + 2e3c: 0e 94 3c 25 call 0x4a78 ; 0x4a78 <tolower> + 2e40: 89 93 st Y+, r24 + 2e42: 88 81 ld r24, Y + 2e44: 88 23 and r24, r24 + 2e46: b9 f7 brne .-18 ; 0x2e36 <_ZN6String11toLowerCaseEv+0x10> + 2e48: df 91 pop r29 + 2e4a: cf 91 pop r28 + 2e4c: 08 95 ret + +00002e4e <_ZN6String11toUpperCaseEv>: + 2e4e: cf 93 push r28 + 2e50: df 93 push r29 + 2e52: fc 01 movw r30, r24 + 2e54: c0 81 ld r28, Z + 2e56: d1 81 ldd r29, Z+1 ; 0x01 + 2e58: 20 97 sbiw r28, 0x00 ; 0 + 2e5a: 39 f4 brne .+14 ; 0x2e6a <_ZN6String11toUpperCaseEv+0x1c> + 2e5c: 09 c0 rjmp .+18 ; 0x2e70 <_ZN6String11toUpperCaseEv+0x22> + 2e5e: 99 27 eor r25, r25 + 2e60: 87 fd sbrc r24, 7 + 2e62: 90 95 com r25 + 2e64: 0e 94 44 25 call 0x4a88 ; 0x4a88 <toupper> + 2e68: 89 93 st Y+, r24 + 2e6a: 88 81 ld r24, Y + 2e6c: 88 23 and r24, r24 + 2e6e: b9 f7 brne .-18 ; 0x2e5e <_ZN6String11toUpperCaseEv+0x10> + 2e70: df 91 pop r29 + 2e72: cf 91 pop r28 + 2e74: 08 95 ret + +00002e76 <_ZN6String4trimEv>: + 2e76: af 92 push r10 + 2e78: bf 92 push r11 + 2e7a: cf 92 push r12 + 2e7c: df 92 push r13 + 2e7e: ef 92 push r14 + 2e80: ff 92 push r15 + 2e82: 0f 93 push r16 + 2e84: 1f 93 push r17 + 2e86: cf 93 push r28 + 2e88: df 93 push r29 + 2e8a: 6c 01 movw r12, r24 + 2e8c: dc 01 movw r26, r24 + 2e8e: ed 90 ld r14, X+ + 2e90: fc 90 ld r15, X + 2e92: 11 97 sbiw r26, 0x01 ; 1 + 2e94: e1 14 cp r14, r1 + 2e96: f1 04 cpc r15, r1 + 2e98: 09 f4 brne .+2 ; 0x2e9c <_ZN6String4trimEv+0x26> + 2e9a: 43 c0 rjmp .+134 ; 0x2f22 <_ZN6String4trimEv+0xac> + 2e9c: 14 96 adiw r26, 0x04 ; 4 + 2e9e: ad 90 ld r10, X+ + 2ea0: bc 90 ld r11, X + 2ea2: 15 97 sbiw r26, 0x05 ; 5 + 2ea4: a1 14 cp r10, r1 + 2ea6: b1 04 cpc r11, r1 + 2ea8: e1 f1 breq .+120 ; 0x2f22 <_ZN6String4trimEv+0xac> + 2eaa: 87 01 movw r16, r14 + 2eac: e8 01 movw r28, r16 + 2eae: 88 81 ld r24, Y + 2eb0: 0f 5f subi r16, 0xFF ; 255 + 2eb2: 1f 4f sbci r17, 0xFF ; 255 + 2eb4: 99 27 eor r25, r25 + 2eb6: 87 fd sbrc r24, 7 + 2eb8: 90 95 com r25 + 2eba: 0e 94 34 25 call 0x4a68 ; 0x4a68 <isspace> + 2ebe: 00 97 sbiw r24, 0x00 ; 0 + 2ec0: a9 f7 brne .-22 ; 0x2eac <_ZN6String4trimEv+0x36> + 2ec2: 85 01 movw r16, r10 + 2ec4: 01 50 subi r16, 0x01 ; 1 + 2ec6: 10 40 sbci r17, 0x00 ; 0 + 2ec8: 0e 0d add r16, r14 + 2eca: 1f 1d adc r17, r15 + 2ecc: f8 01 movw r30, r16 + 2ece: 80 81 ld r24, Z + 2ed0: 99 27 eor r25, r25 + 2ed2: 87 fd sbrc r24, 7 + 2ed4: 90 95 com r25 + 2ed6: 0e 94 34 25 call 0x4a68 ; 0x4a68 <isspace> + 2eda: 00 97 sbiw r24, 0x00 ; 0 + 2edc: 31 f0 breq .+12 ; 0x2eea <_ZN6String4trimEv+0x74> + 2ede: 0c 17 cp r16, r28 + 2ee0: 1d 07 cpc r17, r29 + 2ee2: 18 f0 brcs .+6 ; 0x2eea <_ZN6String4trimEv+0x74> + 2ee4: 01 50 subi r16, 0x01 ; 1 + 2ee6: 10 40 sbci r17, 0x00 ; 0 + 2ee8: f1 cf rjmp .-30 ; 0x2ecc <_ZN6String4trimEv+0x56> + 2eea: 0f 5f subi r16, 0xFF ; 255 + 2eec: 1f 4f sbci r17, 0xFF ; 255 + 2eee: 0c 1b sub r16, r28 + 2ef0: 1d 0b sbc r17, r29 + 2ef2: d6 01 movw r26, r12 + 2ef4: 15 96 adiw r26, 0x05 ; 5 + 2ef6: 1c 93 st X, r17 + 2ef8: 0e 93 st -X, r16 + 2efa: 14 97 sbiw r26, 0x04 ; 4 + 2efc: ec 16 cp r14, r28 + 2efe: fd 06 cpc r15, r29 + 2f00: 28 f4 brcc .+10 ; 0x2f0c <_ZN6String4trimEv+0x96> + 2f02: c7 01 movw r24, r14 + 2f04: be 01 movw r22, r28 + 2f06: a8 01 movw r20, r16 + 2f08: 0e 94 59 25 call 0x4ab2 ; 0x4ab2 <memcpy> + 2f0c: d6 01 movw r26, r12 + 2f0e: ed 91 ld r30, X+ + 2f10: fc 91 ld r31, X + 2f12: 11 97 sbiw r26, 0x01 ; 1 + 2f14: 14 96 adiw r26, 0x04 ; 4 + 2f16: 8d 91 ld r24, X+ + 2f18: 9c 91 ld r25, X + 2f1a: 15 97 sbiw r26, 0x05 ; 5 + 2f1c: e8 0f add r30, r24 + 2f1e: f9 1f adc r31, r25 + 2f20: 10 82 st Z, r1 + 2f22: df 91 pop r29 + 2f24: cf 91 pop r28 + 2f26: 1f 91 pop r17 + 2f28: 0f 91 pop r16 + 2f2a: ff 90 pop r15 + 2f2c: ef 90 pop r14 + 2f2e: df 90 pop r13 + 2f30: cf 90 pop r12 + 2f32: bf 90 pop r11 + 2f34: af 90 pop r10 + 2f36: 08 95 ret + +00002f38 <_ZNK6String5toIntEv>: + 2f38: fc 01 movw r30, r24 + 2f3a: 80 81 ld r24, Z + 2f3c: 91 81 ldd r25, Z+1 ; 0x01 + 2f3e: 00 97 sbiw r24, 0x00 ; 0 + 2f40: 29 f0 breq .+10 ; 0x2f4c <_ZNK6String5toIntEv+0x14> + 2f42: 0e 94 0d 25 call 0x4a1a ; 0x4a1a <atol> + 2f46: 9b 01 movw r18, r22 + 2f48: ac 01 movw r20, r24 + 2f4a: 03 c0 rjmp .+6 ; 0x2f52 <_ZNK6String5toIntEv+0x1a> + 2f4c: 20 e0 ldi r18, 0x00 ; 0 + 2f4e: 30 e0 ldi r19, 0x00 ; 0 + 2f50: a9 01 movw r20, r18 + 2f52: b9 01 movw r22, r18 + 2f54: ca 01 movw r24, r20 + 2f56: 08 95 ret + +00002f58 <_Znwj>: + 2f58: 0e 94 ba 22 call 0x4574 ; 0x4574 <malloc> + 2f5c: 08 95 ret + +00002f5e <_ZdlPv>: + 2f5e: 0e 94 54 23 call 0x46a8 ; 0x46a8 <free> + 2f62: 08 95 ret + +00002f64 <__cxa_guard_acquire>: + 2f64: 21 e0 ldi r18, 0x01 ; 1 + 2f66: 30 e0 ldi r19, 0x00 ; 0 + 2f68: fc 01 movw r30, r24 + 2f6a: 80 81 ld r24, Z + 2f6c: 88 23 and r24, r24 + 2f6e: 11 f0 breq .+4 ; 0x2f74 <__cxa_guard_acquire+0x10> + 2f70: 20 e0 ldi r18, 0x00 ; 0 + 2f72: 30 e0 ldi r19, 0x00 ; 0 + 2f74: c9 01 movw r24, r18 + 2f76: 08 95 ret + +00002f78 <__cxa_guard_release>: + 2f78: 21 e0 ldi r18, 0x01 ; 1 + 2f7a: fc 01 movw r30, r24 + 2f7c: 20 83 st Z, r18 + 2f7e: 08 95 ret + +00002f80 <__cxa_guard_abort>: + 2f80: 08 95 ret + +00002f82 <__cxa_pure_virtual>: + 2f82: 08 95 ret + +00002f84 <__vector_16>: + 2f84: 1f 92 push r1 + 2f86: 0f 92 push r0 + 2f88: 0f b6 in r0, 0x3f ; 63 + 2f8a: 0f 92 push r0 + 2f8c: 11 24 eor r1, r1 + 2f8e: 2f 93 push r18 + 2f90: 3f 93 push r19 + 2f92: 4f 93 push r20 + 2f94: 5f 93 push r21 + 2f96: 6f 93 push r22 + 2f98: 7f 93 push r23 + 2f9a: 8f 93 push r24 + 2f9c: 9f 93 push r25 + 2f9e: af 93 push r26 + 2fa0: bf 93 push r27 + 2fa2: 20 91 a5 03 lds r18, 0x03A5 + 2fa6: 30 91 a6 03 lds r19, 0x03A6 + 2faa: 40 91 a7 03 lds r20, 0x03A7 + 2fae: 50 91 a8 03 lds r21, 0x03A8 + 2fb2: 70 91 a9 03 lds r23, 0x03A9 + 2fb6: da 01 movw r26, r20 + 2fb8: c9 01 movw r24, r18 + 2fba: 02 96 adiw r24, 0x02 ; 2 + 2fbc: a1 1d adc r26, r1 + 2fbe: b1 1d adc r27, r1 + 2fc0: 67 2f mov r22, r23 + 2fc2: 6a 5f subi r22, 0xFA ; 250 + 2fc4: 6d 37 cpi r22, 0x7D ; 125 + 2fc6: 30 f0 brcs .+12 ; 0x2fd4 <__vector_16+0x50> + 2fc8: 6d 57 subi r22, 0x7D ; 125 + 2fca: da 01 movw r26, r20 + 2fcc: c9 01 movw r24, r18 + 2fce: 03 96 adiw r24, 0x03 ; 3 + 2fd0: a1 1d adc r26, r1 + 2fd2: b1 1d adc r27, r1 + 2fd4: 60 93 a9 03 sts 0x03A9, r22 + 2fd8: 80 93 a5 03 sts 0x03A5, r24 + 2fdc: 90 93 a6 03 sts 0x03A6, r25 + 2fe0: a0 93 a7 03 sts 0x03A7, r26 + 2fe4: b0 93 a8 03 sts 0x03A8, r27 + 2fe8: 80 91 a1 03 lds r24, 0x03A1 + 2fec: 90 91 a2 03 lds r25, 0x03A2 + 2ff0: a0 91 a3 03 lds r26, 0x03A3 + 2ff4: b0 91 a4 03 lds r27, 0x03A4 + 2ff8: 01 96 adiw r24, 0x01 ; 1 + 2ffa: a1 1d adc r26, r1 + 2ffc: b1 1d adc r27, r1 + 2ffe: 80 93 a1 03 sts 0x03A1, r24 + 3002: 90 93 a2 03 sts 0x03A2, r25 + 3006: a0 93 a3 03 sts 0x03A3, r26 + 300a: b0 93 a4 03 sts 0x03A4, r27 + 300e: bf 91 pop r27 + 3010: af 91 pop r26 + 3012: 9f 91 pop r25 + 3014: 8f 91 pop r24 + 3016: 7f 91 pop r23 + 3018: 6f 91 pop r22 + 301a: 5f 91 pop r21 + 301c: 4f 91 pop r20 + 301e: 3f 91 pop r19 + 3020: 2f 91 pop r18 + 3022: 0f 90 pop r0 + 3024: 0f be out 0x3f, r0 ; 63 + 3026: 0f 90 pop r0 + 3028: 1f 90 pop r1 + 302a: 18 95 reti + +0000302c <millis>: + 302c: 8f b7 in r24, 0x3f ; 63 + 302e: f8 94 cli + 3030: 20 91 a5 03 lds r18, 0x03A5 + 3034: 30 91 a6 03 lds r19, 0x03A6 + 3038: 40 91 a7 03 lds r20, 0x03A7 + 303c: 50 91 a8 03 lds r21, 0x03A8 + 3040: 8f bf out 0x3f, r24 ; 63 + 3042: b9 01 movw r22, r18 + 3044: ca 01 movw r24, r20 + 3046: 08 95 ret + +00003048 <micros>: + 3048: 9f b7 in r25, 0x3f ; 63 + 304a: f8 94 cli + 304c: 20 91 a1 03 lds r18, 0x03A1 + 3050: 30 91 a2 03 lds r19, 0x03A2 + 3054: 40 91 a3 03 lds r20, 0x03A3 + 3058: 50 91 a4 03 lds r21, 0x03A4 + 305c: 86 b5 in r24, 0x26 ; 38 + 305e: a8 9b sbis 0x15, 0 ; 21 + 3060: 06 c0 rjmp .+12 ; 0x306e <micros+0x26> + 3062: 8f 3f cpi r24, 0xFF ; 255 + 3064: 21 f0 breq .+8 ; 0x306e <micros+0x26> + 3066: 2f 5f subi r18, 0xFF ; 255 + 3068: 3f 4f sbci r19, 0xFF ; 255 + 306a: 4f 4f sbci r20, 0xFF ; 255 + 306c: 5f 4f sbci r21, 0xFF ; 255 + 306e: 9f bf out 0x3f, r25 ; 63 + 3070: 54 2f mov r21, r20 + 3072: 43 2f mov r20, r19 + 3074: 32 2f mov r19, r18 + 3076: 22 27 eor r18, r18 + 3078: 28 0f add r18, r24 + 307a: 31 1d adc r19, r1 + 307c: 41 1d adc r20, r1 + 307e: 51 1d adc r21, r1 + 3080: 83 e0 ldi r24, 0x03 ; 3 + 3082: 22 0f add r18, r18 + 3084: 33 1f adc r19, r19 + 3086: 44 1f adc r20, r20 + 3088: 55 1f adc r21, r21 + 308a: 8a 95 dec r24 + 308c: d1 f7 brne .-12 ; 0x3082 <micros+0x3a> + 308e: b9 01 movw r22, r18 + 3090: ca 01 movw r24, r20 + 3092: 08 95 ret + +00003094 <delay>: + 3094: ef 92 push r14 + 3096: ff 92 push r15 + 3098: 0f 93 push r16 + 309a: 1f 93 push r17 + 309c: cf 93 push r28 + 309e: df 93 push r29 + 30a0: 7b 01 movw r14, r22 + 30a2: 8c 01 movw r16, r24 + 30a4: 0e 94 24 18 call 0x3048 ; 0x3048 <micros> + 30a8: eb 01 movw r28, r22 + 30aa: 0f c0 rjmp .+30 ; 0x30ca <delay+0x36> + 30ac: 0e 94 24 18 call 0x3048 ; 0x3048 <micros> + 30b0: 6c 1b sub r22, r28 + 30b2: 7d 0b sbc r23, r29 + 30b4: 83 e0 ldi r24, 0x03 ; 3 + 30b6: 68 3e cpi r22, 0xE8 ; 232 + 30b8: 78 07 cpc r23, r24 + 30ba: 38 f0 brcs .+14 ; 0x30ca <delay+0x36> + 30bc: 08 94 sec + 30be: e1 08 sbc r14, r1 + 30c0: f1 08 sbc r15, r1 + 30c2: 01 09 sbc r16, r1 + 30c4: 11 09 sbc r17, r1 + 30c6: c8 51 subi r28, 0x18 ; 24 + 30c8: dc 4f sbci r29, 0xFC ; 252 + 30ca: e1 14 cp r14, r1 + 30cc: f1 04 cpc r15, r1 + 30ce: 01 05 cpc r16, r1 + 30d0: 11 05 cpc r17, r1 + 30d2: 61 f7 brne .-40 ; 0x30ac <delay+0x18> + 30d4: df 91 pop r29 + 30d6: cf 91 pop r28 + 30d8: 1f 91 pop r17 + 30da: 0f 91 pop r16 + 30dc: ff 90 pop r15 + 30de: ef 90 pop r14 + 30e0: 08 95 ret + +000030e2 <delayMicroseconds>: + 30e2: 01 97 sbiw r24, 0x01 ; 1 + 30e4: 39 f0 breq .+14 ; 0x30f4 <delayMicroseconds+0x12> + 30e6: 01 97 sbiw r24, 0x01 ; 1 + 30e8: 29 f0 breq .+10 ; 0x30f4 <delayMicroseconds+0x12> + 30ea: 88 0f add r24, r24 + 30ec: 99 1f adc r25, r25 + 30ee: 01 97 sbiw r24, 0x01 ; 1 + 30f0: 01 97 sbiw r24, 0x01 ; 1 + 30f2: f1 f7 brne .-4 ; 0x30f0 <delayMicroseconds+0xe> + 30f4: 08 95 ret + +000030f6 <init>: + 30f6: 78 94 sei + 30f8: 84 b5 in r24, 0x24 ; 36 + 30fa: 82 60 ori r24, 0x02 ; 2 + 30fc: 84 bd out 0x24, r24 ; 36 + 30fe: 84 b5 in r24, 0x24 ; 36 + 3100: 81 60 ori r24, 0x01 ; 1 + 3102: 84 bd out 0x24, r24 ; 36 + 3104: 85 b5 in r24, 0x25 ; 37 + 3106: 82 60 ori r24, 0x02 ; 2 + 3108: 85 bd out 0x25, r24 ; 37 + 310a: 85 b5 in r24, 0x25 ; 37 + 310c: 81 60 ori r24, 0x01 ; 1 + 310e: 85 bd out 0x25, r24 ; 37 + 3110: ee e6 ldi r30, 0x6E ; 110 + 3112: f0 e0 ldi r31, 0x00 ; 0 + 3114: 80 81 ld r24, Z + 3116: 81 60 ori r24, 0x01 ; 1 + 3118: 80 83 st Z, r24 + 311a: e1 e8 ldi r30, 0x81 ; 129 + 311c: f0 e0 ldi r31, 0x00 ; 0 + 311e: 10 82 st Z, r1 + 3120: 80 81 ld r24, Z + 3122: 82 60 ori r24, 0x02 ; 2 + 3124: 80 83 st Z, r24 + 3126: 80 81 ld r24, Z + 3128: 81 60 ori r24, 0x01 ; 1 + 312a: 80 83 st Z, r24 + 312c: e0 e8 ldi r30, 0x80 ; 128 + 312e: f0 e0 ldi r31, 0x00 ; 0 + 3130: 80 81 ld r24, Z + 3132: 81 60 ori r24, 0x01 ; 1 + 3134: 80 83 st Z, r24 + 3136: e1 eb ldi r30, 0xB1 ; 177 + 3138: f0 e0 ldi r31, 0x00 ; 0 + 313a: 80 81 ld r24, Z + 313c: 84 60 ori r24, 0x04 ; 4 + 313e: 80 83 st Z, r24 + 3140: e0 eb ldi r30, 0xB0 ; 176 + 3142: f0 e0 ldi r31, 0x00 ; 0 + 3144: 80 81 ld r24, Z + 3146: 81 60 ori r24, 0x01 ; 1 + 3148: 80 83 st Z, r24 + 314a: ea e7 ldi r30, 0x7A ; 122 + 314c: f0 e0 ldi r31, 0x00 ; 0 + 314e: 80 81 ld r24, Z + 3150: 84 60 ori r24, 0x04 ; 4 + 3152: 80 83 st Z, r24 + 3154: 80 81 ld r24, Z + 3156: 82 60 ori r24, 0x02 ; 2 + 3158: 80 83 st Z, r24 + 315a: 80 81 ld r24, Z + 315c: 81 60 ori r24, 0x01 ; 1 + 315e: 80 83 st Z, r24 + 3160: 80 81 ld r24, Z + 3162: 80 68 ori r24, 0x80 ; 128 + 3164: 80 83 st Z, r24 + 3166: 10 92 c1 00 sts 0x00C1, r1 + 316a: 08 95 ret + +0000316c <analogReference>: + 316c: 80 93 ad 01 sts 0x01AD, r24 + 3170: 08 95 ret + +00003172 <analogRead>: + 3172: 8e 30 cpi r24, 0x0E ; 14 + 3174: 08 f0 brcs .+2 ; 0x3178 <analogRead+0x6> + 3176: 8e 50 subi r24, 0x0E ; 14 + 3178: 87 70 andi r24, 0x07 ; 7 + 317a: 90 91 ad 01 lds r25, 0x01AD + 317e: 92 95 swap r25 + 3180: 99 0f add r25, r25 + 3182: 99 0f add r25, r25 + 3184: 90 7c andi r25, 0xC0 ; 192 + 3186: 98 2b or r25, r24 + 3188: 90 93 7c 00 sts 0x007C, r25 + 318c: 80 91 7a 00 lds r24, 0x007A + 3190: 80 64 ori r24, 0x40 ; 64 + 3192: 80 93 7a 00 sts 0x007A, r24 + 3196: 80 91 7a 00 lds r24, 0x007A + 319a: 86 fd sbrc r24, 6 + 319c: fc cf rjmp .-8 ; 0x3196 <analogRead+0x24> + 319e: 20 91 78 00 lds r18, 0x0078 + 31a2: 30 91 79 00 lds r19, 0x0079 + 31a6: 93 2f mov r25, r19 + 31a8: 80 e0 ldi r24, 0x00 ; 0 + 31aa: 30 e0 ldi r19, 0x00 ; 0 + 31ac: 28 2b or r18, r24 + 31ae: 39 2b or r19, r25 + 31b0: c9 01 movw r24, r18 + 31b2: 08 95 ret + +000031b4 <analogWrite>: + 31b4: 1f 93 push r17 + 31b6: cf 93 push r28 + 31b8: df 93 push r29 + 31ba: 18 2f mov r17, r24 + 31bc: eb 01 movw r28, r22 + 31be: 61 e0 ldi r22, 0x01 ; 1 + 31c0: 0e 94 67 19 call 0x32ce ; 0x32ce <pinMode> + 31c4: 20 97 sbiw r28, 0x00 ; 0 + 31c6: 09 f4 brne .+2 ; 0x31ca <analogWrite+0x16> + 31c8: 4a c0 rjmp .+148 ; 0x325e <analogWrite+0xaa> + 31ca: cf 3f cpi r28, 0xFF ; 255 + 31cc: d1 05 cpc r29, r1 + 31ce: 09 f4 brne .+2 ; 0x31d2 <analogWrite+0x1e> + 31d0: 49 c0 rjmp .+146 ; 0x3264 <analogWrite+0xb0> + 31d2: e1 2f mov r30, r17 + 31d4: f0 e0 ldi r31, 0x00 ; 0 + 31d6: e1 55 subi r30, 0x51 ; 81 + 31d8: ff 4f sbci r31, 0xFF ; 255 + 31da: e4 91 lpm r30, Z+ + 31dc: e3 30 cpi r30, 0x03 ; 3 + 31de: c1 f0 breq .+48 ; 0x3210 <analogWrite+0x5c> + 31e0: e4 30 cpi r30, 0x04 ; 4 + 31e2: 28 f4 brcc .+10 ; 0x31ee <analogWrite+0x3a> + 31e4: e1 30 cpi r30, 0x01 ; 1 + 31e6: 51 f0 breq .+20 ; 0x31fc <analogWrite+0x48> + 31e8: e2 30 cpi r30, 0x02 ; 2 + 31ea: b1 f5 brne .+108 ; 0x3258 <analogWrite+0xa4> + 31ec: 0c c0 rjmp .+24 ; 0x3206 <analogWrite+0x52> + 31ee: e6 30 cpi r30, 0x06 ; 6 + 31f0: 19 f1 breq .+70 ; 0x3238 <analogWrite+0x84> + 31f2: e7 30 cpi r30, 0x07 ; 7 + 31f4: 49 f1 breq .+82 ; 0x3248 <analogWrite+0x94> + 31f6: e4 30 cpi r30, 0x04 ; 4 + 31f8: 79 f5 brne .+94 ; 0x3258 <analogWrite+0xa4> + 31fa: 14 c0 rjmp .+40 ; 0x3224 <analogWrite+0x70> + 31fc: 84 b5 in r24, 0x24 ; 36 + 31fe: 80 68 ori r24, 0x80 ; 128 + 3200: 84 bd out 0x24, r24 ; 36 + 3202: c7 bd out 0x27, r28 ; 39 + 3204: 33 c0 rjmp .+102 ; 0x326c <analogWrite+0xb8> + 3206: 84 b5 in r24, 0x24 ; 36 + 3208: 80 62 ori r24, 0x20 ; 32 + 320a: 84 bd out 0x24, r24 ; 36 + 320c: c8 bd out 0x28, r28 ; 40 + 320e: 2e c0 rjmp .+92 ; 0x326c <analogWrite+0xb8> + 3210: 80 91 80 00 lds r24, 0x0080 + 3214: 80 68 ori r24, 0x80 ; 128 + 3216: 80 93 80 00 sts 0x0080, r24 + 321a: d0 93 89 00 sts 0x0089, r29 + 321e: c0 93 88 00 sts 0x0088, r28 + 3222: 24 c0 rjmp .+72 ; 0x326c <analogWrite+0xb8> + 3224: 80 91 80 00 lds r24, 0x0080 + 3228: 80 62 ori r24, 0x20 ; 32 + 322a: 80 93 80 00 sts 0x0080, r24 + 322e: d0 93 8b 00 sts 0x008B, r29 + 3232: c0 93 8a 00 sts 0x008A, r28 + 3236: 1a c0 rjmp .+52 ; 0x326c <analogWrite+0xb8> + 3238: 80 91 b0 00 lds r24, 0x00B0 + 323c: 80 68 ori r24, 0x80 ; 128 + 323e: 80 93 b0 00 sts 0x00B0, r24 + 3242: c0 93 b3 00 sts 0x00B3, r28 + 3246: 12 c0 rjmp .+36 ; 0x326c <analogWrite+0xb8> + 3248: 80 91 b0 00 lds r24, 0x00B0 + 324c: 80 62 ori r24, 0x20 ; 32 + 324e: 80 93 b0 00 sts 0x00B0, r24 + 3252: c0 93 b4 00 sts 0x00B4, r28 + 3256: 0a c0 rjmp .+20 ; 0x326c <analogWrite+0xb8> + 3258: c0 38 cpi r28, 0x80 ; 128 + 325a: d1 05 cpc r29, r1 + 325c: 1c f4 brge .+6 ; 0x3264 <analogWrite+0xb0> + 325e: 81 2f mov r24, r17 + 3260: 60 e0 ldi r22, 0x00 ; 0 + 3262: 02 c0 rjmp .+4 ; 0x3268 <analogWrite+0xb4> + 3264: 81 2f mov r24, r17 + 3266: 61 e0 ldi r22, 0x01 ; 1 + 3268: 0e 94 8b 19 call 0x3316 ; 0x3316 <digitalWrite> + 326c: df 91 pop r29 + 326e: cf 91 pop r28 + 3270: 1f 91 pop r17 + 3272: 08 95 ret + +00003274 <turnOffPWM>: + 3274: 83 30 cpi r24, 0x03 ; 3 + 3276: 71 f0 breq .+28 ; 0x3294 <turnOffPWM+0x20> + 3278: 84 30 cpi r24, 0x04 ; 4 + 327a: 28 f4 brcc .+10 ; 0x3286 <turnOffPWM+0x12> + 327c: 81 30 cpi r24, 0x01 ; 1 + 327e: a1 f0 breq .+40 ; 0x32a8 <turnOffPWM+0x34> + 3280: 82 30 cpi r24, 0x02 ; 2 + 3282: 21 f5 brne .+72 ; 0x32cc <turnOffPWM+0x58> + 3284: 14 c0 rjmp .+40 ; 0x32ae <turnOffPWM+0x3a> + 3286: 86 30 cpi r24, 0x06 ; 6 + 3288: b1 f0 breq .+44 ; 0x32b6 <turnOffPWM+0x42> + 328a: 87 30 cpi r24, 0x07 ; 7 + 328c: d1 f0 breq .+52 ; 0x32c2 <turnOffPWM+0x4e> + 328e: 84 30 cpi r24, 0x04 ; 4 + 3290: e9 f4 brne .+58 ; 0x32cc <turnOffPWM+0x58> + 3292: 04 c0 rjmp .+8 ; 0x329c <turnOffPWM+0x28> + 3294: 80 91 80 00 lds r24, 0x0080 + 3298: 8f 77 andi r24, 0x7F ; 127 + 329a: 03 c0 rjmp .+6 ; 0x32a2 <turnOffPWM+0x2e> + 329c: 80 91 80 00 lds r24, 0x0080 + 32a0: 8f 7d andi r24, 0xDF ; 223 + 32a2: 80 93 80 00 sts 0x0080, r24 + 32a6: 08 95 ret + 32a8: 84 b5 in r24, 0x24 ; 36 + 32aa: 8f 77 andi r24, 0x7F ; 127 + 32ac: 02 c0 rjmp .+4 ; 0x32b2 <turnOffPWM+0x3e> + 32ae: 84 b5 in r24, 0x24 ; 36 + 32b0: 8f 7d andi r24, 0xDF ; 223 + 32b2: 84 bd out 0x24, r24 ; 36 + 32b4: 08 95 ret + 32b6: 80 91 b0 00 lds r24, 0x00B0 + 32ba: 8f 77 andi r24, 0x7F ; 127 + 32bc: 80 93 b0 00 sts 0x00B0, r24 + 32c0: 08 95 ret + 32c2: 80 91 b0 00 lds r24, 0x00B0 + 32c6: 8f 7d andi r24, 0xDF ; 223 + 32c8: 80 93 b0 00 sts 0x00B0, r24 + 32cc: 08 95 ret + +000032ce <pinMode>: + 32ce: 90 e0 ldi r25, 0x00 ; 0 + 32d0: fc 01 movw r30, r24 + 32d2: e5 56 subi r30, 0x65 ; 101 + 32d4: ff 4f sbci r31, 0xFF ; 255 + 32d6: 24 91 lpm r18, Z+ + 32d8: fc 01 movw r30, r24 + 32da: e9 57 subi r30, 0x79 ; 121 + 32dc: ff 4f sbci r31, 0xFF ; 255 + 32de: e4 91 lpm r30, Z+ + 32e0: ee 23 and r30, r30 + 32e2: c1 f0 breq .+48 ; 0x3314 <pinMode+0x46> + 32e4: f0 e0 ldi r31, 0x00 ; 0 + 32e6: ee 0f add r30, r30 + 32e8: ff 1f adc r31, r31 + 32ea: e7 59 subi r30, 0x97 ; 151 + 32ec: ff 4f sbci r31, 0xFF ; 255 + 32ee: 85 91 lpm r24, Z+ + 32f0: 94 91 lpm r25, Z+ + 32f2: dc 01 movw r26, r24 + 32f4: 66 23 and r22, r22 + 32f6: 41 f4 brne .+16 ; 0x3308 <pinMode+0x3a> + 32f8: 9f b7 in r25, 0x3f ; 63 + 32fa: f8 94 cli + 32fc: 8c 91 ld r24, X + 32fe: 20 95 com r18 + 3300: 82 23 and r24, r18 + 3302: 8c 93 st X, r24 + 3304: 9f bf out 0x3f, r25 ; 63 + 3306: 08 95 ret + 3308: 9f b7 in r25, 0x3f ; 63 + 330a: f8 94 cli + 330c: 8c 91 ld r24, X + 330e: 82 2b or r24, r18 + 3310: 8c 93 st X, r24 + 3312: 9f bf out 0x3f, r25 ; 63 + 3314: 08 95 ret + +00003316 <digitalWrite>: + 3316: 0f 93 push r16 + 3318: 1f 93 push r17 + 331a: df 93 push r29 + 331c: cf 93 push r28 + 331e: 0f 92 push r0 + 3320: cd b7 in r28, 0x3d ; 61 + 3322: de b7 in r29, 0x3e ; 62 + 3324: 28 2f mov r18, r24 + 3326: 30 e0 ldi r19, 0x00 ; 0 + 3328: f9 01 movw r30, r18 + 332a: e1 55 subi r30, 0x51 ; 81 + 332c: ff 4f sbci r31, 0xFF ; 255 + 332e: 84 91 lpm r24, Z+ + 3330: f9 01 movw r30, r18 + 3332: e5 56 subi r30, 0x65 ; 101 + 3334: ff 4f sbci r31, 0xFF ; 255 + 3336: 14 91 lpm r17, Z+ + 3338: 29 57 subi r18, 0x79 ; 121 + 333a: 3f 4f sbci r19, 0xFF ; 255 + 333c: f9 01 movw r30, r18 + 333e: 04 91 lpm r16, Z+ + 3340: 00 23 and r16, r16 + 3342: d9 f0 breq .+54 ; 0x337a <digitalWrite+0x64> + 3344: 88 23 and r24, r24 + 3346: 21 f0 breq .+8 ; 0x3350 <digitalWrite+0x3a> + 3348: 69 83 std Y+1, r22 ; 0x01 + 334a: 0e 94 3a 19 call 0x3274 ; 0x3274 <turnOffPWM> + 334e: 69 81 ldd r22, Y+1 ; 0x01 + 3350: e0 2f mov r30, r16 + 3352: f0 e0 ldi r31, 0x00 ; 0 + 3354: ee 0f add r30, r30 + 3356: ff 1f adc r31, r31 + 3358: ed 58 subi r30, 0x8D ; 141 + 335a: ff 4f sbci r31, 0xFF ; 255 + 335c: 85 91 lpm r24, Z+ + 335e: 94 91 lpm r25, Z+ + 3360: dc 01 movw r26, r24 + 3362: 9f b7 in r25, 0x3f ; 63 + 3364: f8 94 cli + 3366: 66 23 and r22, r22 + 3368: 21 f4 brne .+8 ; 0x3372 <digitalWrite+0x5c> + 336a: 8c 91 ld r24, X + 336c: 10 95 com r17 + 336e: 81 23 and r24, r17 + 3370: 02 c0 rjmp .+4 ; 0x3376 <digitalWrite+0x60> + 3372: 8c 91 ld r24, X + 3374: 81 2b or r24, r17 + 3376: 8c 93 st X, r24 + 3378: 9f bf out 0x3f, r25 ; 63 + 337a: 0f 90 pop r0 + 337c: cf 91 pop r28 + 337e: df 91 pop r29 + 3380: 1f 91 pop r17 + 3382: 0f 91 pop r16 + 3384: 08 95 ret + +00003386 <digitalRead>: + 3386: 0f 93 push r16 + 3388: 1f 93 push r17 + 338a: 28 2f mov r18, r24 + 338c: 30 e0 ldi r19, 0x00 ; 0 + 338e: f9 01 movw r30, r18 + 3390: e1 55 subi r30, 0x51 ; 81 + 3392: ff 4f sbci r31, 0xFF ; 255 + 3394: 84 91 lpm r24, Z+ + 3396: f9 01 movw r30, r18 + 3398: e5 56 subi r30, 0x65 ; 101 + 339a: ff 4f sbci r31, 0xFF ; 255 + 339c: 04 91 lpm r16, Z+ + 339e: 29 57 subi r18, 0x79 ; 121 + 33a0: 3f 4f sbci r19, 0xFF ; 255 + 33a2: f9 01 movw r30, r18 + 33a4: 14 91 lpm r17, Z+ + 33a6: 11 23 and r17, r17 + 33a8: 91 f0 breq .+36 ; 0x33ce <digitalRead+0x48> + 33aa: 88 23 and r24, r24 + 33ac: 11 f0 breq .+4 ; 0x33b2 <digitalRead+0x2c> + 33ae: 0e 94 3a 19 call 0x3274 ; 0x3274 <turnOffPWM> + 33b2: e1 2f mov r30, r17 + 33b4: f0 e0 ldi r31, 0x00 ; 0 + 33b6: ee 0f add r30, r30 + 33b8: ff 1f adc r31, r31 + 33ba: e3 58 subi r30, 0x83 ; 131 + 33bc: ff 4f sbci r31, 0xFF ; 255 + 33be: 85 91 lpm r24, Z+ + 33c0: 94 91 lpm r25, Z+ + 33c2: dc 01 movw r26, r24 + 33c4: 8c 91 ld r24, X + 33c6: 80 23 and r24, r16 + 33c8: 21 e0 ldi r18, 0x01 ; 1 + 33ca: 30 e0 ldi r19, 0x00 ; 0 + 33cc: 11 f4 brne .+4 ; 0x33d2 <digitalRead+0x4c> + 33ce: 20 e0 ldi r18, 0x00 ; 0 + 33d0: 30 e0 ldi r19, 0x00 ; 0 + 33d2: c9 01 movw r24, r18 + 33d4: 1f 91 pop r17 + 33d6: 0f 91 pop r16 + 33d8: 08 95 ret + +000033da <pulseIn>: + 33da: 8f 92 push r8 + 33dc: 9f 92 push r9 + 33de: af 92 push r10 + 33e0: bf 92 push r11 + 33e2: cf 92 push r12 + 33e4: df 92 push r13 + 33e6: ef 92 push r14 + 33e8: ff 92 push r15 + 33ea: 0f 93 push r16 + 33ec: 1f 93 push r17 + 33ee: 90 e0 ldi r25, 0x00 ; 0 + 33f0: fc 01 movw r30, r24 + 33f2: e5 56 subi r30, 0x65 ; 101 + 33f4: ff 4f sbci r31, 0xFF ; 255 + 33f6: 94 90 lpm r9, Z+ + 33f8: 89 57 subi r24, 0x79 ; 121 + 33fa: 9f 4f sbci r25, 0xFF ; 255 + 33fc: fc 01 movw r30, r24 + 33fe: e4 90 lpm r14, Z+ + 3400: 66 23 and r22, r22 + 3402: 11 f4 brne .+4 ; 0x3408 <pulseIn+0x2e> + 3404: 88 24 eor r8, r8 + 3406: 01 c0 rjmp .+2 ; 0x340a <pulseIn+0x30> + 3408: 89 2c mov r8, r9 + 340a: ca 01 movw r24, r20 + 340c: b9 01 movw r22, r18 + 340e: 20 e4 ldi r18, 0x40 ; 64 + 3410: 3f e1 ldi r19, 0x1F ; 31 + 3412: 40 e0 ldi r20, 0x00 ; 0 + 3414: 50 e0 ldi r21, 0x00 ; 0 + 3416: 0e 94 fa 21 call 0x43f4 ; 0x43f4 <__mulsi3> + 341a: 20 e8 ldi r18, 0x80 ; 128 + 341c: 3e e3 ldi r19, 0x3E ; 62 + 341e: 40 e0 ldi r20, 0x00 ; 0 + 3420: 50 e0 ldi r21, 0x00 ; 0 + 3422: 0e 94 2c 22 call 0x4458 ; 0x4458 <__udivmodsi4> + 3426: 59 01 movw r10, r18 + 3428: 6a 01 movw r12, r20 + 342a: 80 e0 ldi r24, 0x00 ; 0 + 342c: 90 e0 ldi r25, 0x00 ; 0 + 342e: dc 01 movw r26, r24 + 3430: 6e 2d mov r22, r14 + 3432: 70 e0 ldi r23, 0x00 ; 0 + 3434: fb 01 movw r30, r22 + 3436: ee 0f add r30, r30 + 3438: ff 1f adc r31, r31 + 343a: e3 58 subi r30, 0x83 ; 131 + 343c: ff 4f sbci r31, 0xFF ; 255 + 343e: 25 91 lpm r18, Z+ + 3440: 34 91 lpm r19, Z+ + 3442: 09 c0 rjmp .+18 ; 0x3456 <pulseIn+0x7c> + 3444: 8a 15 cp r24, r10 + 3446: 9b 05 cpc r25, r11 + 3448: ac 05 cpc r26, r12 + 344a: bd 05 cpc r27, r13 + 344c: 09 f4 brne .+2 ; 0x3450 <pulseIn+0x76> + 344e: 4d c0 rjmp .+154 ; 0x34ea <pulseIn+0x110> + 3450: 01 96 adiw r24, 0x01 ; 1 + 3452: a1 1d adc r26, r1 + 3454: b1 1d adc r27, r1 + 3456: f9 01 movw r30, r18 + 3458: 40 81 ld r20, Z + 345a: 49 21 and r20, r9 + 345c: 48 15 cp r20, r8 + 345e: 91 f3 breq .-28 ; 0x3444 <pulseIn+0x6a> + 3460: 0a c0 rjmp .+20 ; 0x3476 <pulseIn+0x9c> + 3462: 8a 15 cp r24, r10 + 3464: 9b 05 cpc r25, r11 + 3466: ac 05 cpc r26, r12 + 3468: bd 05 cpc r27, r13 + 346a: 09 f4 brne .+2 ; 0x346e <pulseIn+0x94> + 346c: 3e c0 rjmp .+124 ; 0x34ea <pulseIn+0x110> + 346e: 01 96 adiw r24, 0x01 ; 1 + 3470: a1 1d adc r26, r1 + 3472: b1 1d adc r27, r1 + 3474: 07 c0 rjmp .+14 ; 0x3484 <pulseIn+0xaa> + 3476: 66 0f add r22, r22 + 3478: 77 1f adc r23, r23 + 347a: 63 58 subi r22, 0x83 ; 131 + 347c: 7f 4f sbci r23, 0xFF ; 255 + 347e: fb 01 movw r30, r22 + 3480: 25 91 lpm r18, Z+ + 3482: 34 91 lpm r19, Z+ + 3484: f9 01 movw r30, r18 + 3486: 40 81 ld r20, Z + 3488: 49 21 and r20, r9 + 348a: 48 15 cp r20, r8 + 348c: 51 f7 brne .-44 ; 0x3462 <pulseIn+0x88> + 348e: 20 e0 ldi r18, 0x00 ; 0 + 3490: 30 e0 ldi r19, 0x00 ; 0 + 3492: a9 01 movw r20, r18 + 3494: fb 01 movw r30, r22 + 3496: 65 91 lpm r22, Z+ + 3498: 74 91 lpm r23, Z+ + 349a: 0f c0 rjmp .+30 ; 0x34ba <pulseIn+0xe0> + 349c: 79 01 movw r14, r18 + 349e: 8a 01 movw r16, r20 + 34a0: e8 0e add r14, r24 + 34a2: f9 1e adc r15, r25 + 34a4: 0a 1f adc r16, r26 + 34a6: 1b 1f adc r17, r27 + 34a8: ea 14 cp r14, r10 + 34aa: fb 04 cpc r15, r11 + 34ac: 0c 05 cpc r16, r12 + 34ae: 1d 05 cpc r17, r13 + 34b0: e1 f0 breq .+56 ; 0x34ea <pulseIn+0x110> + 34b2: 2f 5f subi r18, 0xFF ; 255 + 34b4: 3f 4f sbci r19, 0xFF ; 255 + 34b6: 4f 4f sbci r20, 0xFF ; 255 + 34b8: 5f 4f sbci r21, 0xFF ; 255 + 34ba: fb 01 movw r30, r22 + 34bc: e0 81 ld r30, Z + 34be: e9 21 and r30, r9 + 34c0: e8 15 cp r30, r8 + 34c2: 61 f3 breq .-40 ; 0x349c <pulseIn+0xc2> + 34c4: ca 01 movw r24, r20 + 34c6: b9 01 movw r22, r18 + 34c8: 28 e0 ldi r18, 0x08 ; 8 + 34ca: 32 e5 ldi r19, 0x52 ; 82 + 34cc: 40 e0 ldi r20, 0x00 ; 0 + 34ce: 50 e0 ldi r21, 0x00 ; 0 + 34d0: 0e 94 fa 21 call 0x43f4 ; 0x43f4 <__mulsi3> + 34d4: 60 58 subi r22, 0x80 ; 128 + 34d6: 71 4c sbci r23, 0xC1 ; 193 + 34d8: 8f 4f sbci r24, 0xFF ; 255 + 34da: 9f 4f sbci r25, 0xFF ; 255 + 34dc: 20 e4 ldi r18, 0x40 ; 64 + 34de: 3f e1 ldi r19, 0x1F ; 31 + 34e0: 40 e0 ldi r20, 0x00 ; 0 + 34e2: 50 e0 ldi r21, 0x00 ; 0 + 34e4: 0e 94 2c 22 call 0x4458 ; 0x4458 <__udivmodsi4> + 34e8: 03 c0 rjmp .+6 ; 0x34f0 <pulseIn+0x116> + 34ea: 20 e0 ldi r18, 0x00 ; 0 + 34ec: 30 e0 ldi r19, 0x00 ; 0 + 34ee: a9 01 movw r20, r18 + 34f0: b9 01 movw r22, r18 + 34f2: ca 01 movw r24, r20 + 34f4: 1f 91 pop r17 + 34f6: 0f 91 pop r16 + 34f8: ff 90 pop r15 + 34fa: ef 90 pop r14 + 34fc: df 90 pop r13 + 34fe: cf 90 pop r12 + 3500: bf 90 pop r11 + 3502: af 90 pop r10 + 3504: 9f 90 pop r9 + 3506: 8f 90 pop r8 + 3508: 08 95 ret + +0000350a <shiftIn>: + 350a: cf 92 push r12 + 350c: df 92 push r13 + 350e: ef 92 push r14 + 3510: ff 92 push r15 + 3512: 0f 93 push r16 + 3514: 1f 93 push r17 + 3516: cf 93 push r28 + 3518: df 93 push r29 + 351a: e8 2e mov r14, r24 + 351c: f6 2e mov r15, r22 + 351e: c4 2e mov r12, r20 + 3520: c7 e0 ldi r28, 0x07 ; 7 + 3522: d0 e0 ldi r29, 0x00 ; 0 + 3524: dd 24 eor r13, r13 + 3526: 07 e0 ldi r16, 0x07 ; 7 + 3528: 10 e0 ldi r17, 0x00 ; 0 + 352a: 8f 2d mov r24, r15 + 352c: 61 e0 ldi r22, 0x01 ; 1 + 352e: 0e 94 8b 19 call 0x3316 ; 0x3316 <digitalWrite> + 3532: cc 20 and r12, r12 + 3534: 71 f4 brne .+28 ; 0x3552 <shiftIn+0x48> + 3536: 8e 2d mov r24, r14 + 3538: 0e 94 c3 19 call 0x3386 ; 0x3386 <digitalRead> + 353c: 98 01 movw r18, r16 + 353e: 2c 1b sub r18, r28 + 3540: 3d 0b sbc r19, r29 + 3542: ac 01 movw r20, r24 + 3544: 02 c0 rjmp .+4 ; 0x354a <shiftIn+0x40> + 3546: 44 0f add r20, r20 + 3548: 55 1f adc r21, r21 + 354a: 2a 95 dec r18 + 354c: e2 f7 brpl .-8 ; 0x3546 <shiftIn+0x3c> + 354e: 9a 01 movw r18, r20 + 3550: 0a c0 rjmp .+20 ; 0x3566 <shiftIn+0x5c> + 3552: 8e 2d mov r24, r14 + 3554: 0e 94 c3 19 call 0x3386 ; 0x3386 <digitalRead> + 3558: 9c 01 movw r18, r24 + 355a: 0c 2e mov r0, r28 + 355c: 02 c0 rjmp .+4 ; 0x3562 <shiftIn+0x58> + 355e: 22 0f add r18, r18 + 3560: 33 1f adc r19, r19 + 3562: 0a 94 dec r0 + 3564: e2 f7 brpl .-8 ; 0x355e <shiftIn+0x54> + 3566: d2 2a or r13, r18 + 3568: 8f 2d mov r24, r15 + 356a: 60 e0 ldi r22, 0x00 ; 0 + 356c: 0e 94 8b 19 call 0x3316 ; 0x3316 <digitalWrite> + 3570: 21 97 sbiw r28, 0x01 ; 1 + 3572: 5f ef ldi r21, 0xFF ; 255 + 3574: cf 3f cpi r28, 0xFF ; 255 + 3576: d5 07 cpc r29, r21 + 3578: c1 f6 brne .-80 ; 0x352a <shiftIn+0x20> + 357a: 8d 2d mov r24, r13 + 357c: df 91 pop r29 + 357e: cf 91 pop r28 + 3580: 1f 91 pop r17 + 3582: 0f 91 pop r16 + 3584: ff 90 pop r15 + 3586: ef 90 pop r14 + 3588: df 90 pop r13 + 358a: cf 90 pop r12 + 358c: 08 95 ret + +0000358e <shiftOut>: + 358e: bf 92 push r11 + 3590: cf 92 push r12 + 3592: df 92 push r13 + 3594: ef 92 push r14 + 3596: ff 92 push r15 + 3598: 0f 93 push r16 + 359a: 1f 93 push r17 + 359c: cf 93 push r28 + 359e: df 93 push r29 + 35a0: c8 2e mov r12, r24 + 35a2: d6 2e mov r13, r22 + 35a4: b4 2e mov r11, r20 + 35a6: c7 e0 ldi r28, 0x07 ; 7 + 35a8: d0 e0 ldi r29, 0x00 ; 0 + 35aa: 02 2f mov r16, r18 + 35ac: 10 e0 ldi r17, 0x00 ; 0 + 35ae: 87 e0 ldi r24, 0x07 ; 7 + 35b0: e8 2e mov r14, r24 + 35b2: f1 2c mov r15, r1 + 35b4: bb 20 and r11, r11 + 35b6: 59 f4 brne .+22 ; 0x35ce <shiftOut+0x40> + 35b8: 97 01 movw r18, r14 + 35ba: 2c 1b sub r18, r28 + 35bc: 3d 0b sbc r19, r29 + 35be: c8 01 movw r24, r16 + 35c0: 02 c0 rjmp .+4 ; 0x35c6 <shiftOut+0x38> + 35c2: 95 95 asr r25 + 35c4: 87 95 ror r24 + 35c6: 2a 95 dec r18 + 35c8: e2 f7 brpl .-8 ; 0x35c2 <shiftOut+0x34> + 35ca: 9c 01 movw r18, r24 + 35cc: 07 c0 rjmp .+14 ; 0x35dc <shiftOut+0x4e> + 35ce: 98 01 movw r18, r16 + 35d0: 0c 2e mov r0, r28 + 35d2: 02 c0 rjmp .+4 ; 0x35d8 <shiftOut+0x4a> + 35d4: 35 95 asr r19 + 35d6: 27 95 ror r18 + 35d8: 0a 94 dec r0 + 35da: e2 f7 brpl .-8 ; 0x35d4 <shiftOut+0x46> + 35dc: 62 2f mov r22, r18 + 35de: 61 70 andi r22, 0x01 ; 1 + 35e0: 8c 2d mov r24, r12 + 35e2: 0e 94 8b 19 call 0x3316 ; 0x3316 <digitalWrite> + 35e6: 8d 2d mov r24, r13 + 35e8: 61 e0 ldi r22, 0x01 ; 1 + 35ea: 0e 94 8b 19 call 0x3316 ; 0x3316 <digitalWrite> + 35ee: 8d 2d mov r24, r13 + 35f0: 60 e0 ldi r22, 0x00 ; 0 + 35f2: 0e 94 8b 19 call 0x3316 ; 0x3316 <digitalWrite> + 35f6: 21 97 sbiw r28, 0x01 ; 1 + 35f8: 9f ef ldi r25, 0xFF ; 255 + 35fa: cf 3f cpi r28, 0xFF ; 255 + 35fc: d9 07 cpc r29, r25 + 35fe: d1 f6 brne .-76 ; 0x35b4 <shiftOut+0x26> + 3600: df 91 pop r29 + 3602: cf 91 pop r28 + 3604: 1f 91 pop r17 + 3606: 0f 91 pop r16 + 3608: ff 90 pop r15 + 360a: ef 90 pop r14 + 360c: df 90 pop r13 + 360e: cf 90 pop r12 + 3610: bf 90 pop r11 + 3612: 08 95 ret + +00003614 <__fixunssfsi>: + 3614: ef 92 push r14 + 3616: ff 92 push r15 + 3618: 0f 93 push r16 + 361a: 1f 93 push r17 + 361c: 7b 01 movw r14, r22 + 361e: 8c 01 movw r16, r24 + 3620: 20 e0 ldi r18, 0x00 ; 0 + 3622: 30 e0 ldi r19, 0x00 ; 0 + 3624: 40 e0 ldi r20, 0x00 ; 0 + 3626: 5f e4 ldi r21, 0x4F ; 79 + 3628: 0e 94 86 1e call 0x3d0c ; 0x3d0c <__gesf2> + 362c: 87 fd sbrc r24, 7 + 362e: 11 c0 rjmp .+34 ; 0x3652 <__fixunssfsi+0x3e> + 3630: c8 01 movw r24, r16 + 3632: b7 01 movw r22, r14 + 3634: 20 e0 ldi r18, 0x00 ; 0 + 3636: 30 e0 ldi r19, 0x00 ; 0 + 3638: 40 e0 ldi r20, 0x00 ; 0 + 363a: 5f e4 ldi r21, 0x4F ; 79 + 363c: 0e 94 ad 1c call 0x395a ; 0x395a <__subsf3> + 3640: 0e 94 46 1f call 0x3e8c ; 0x3e8c <__fixsfsi> + 3644: 9b 01 movw r18, r22 + 3646: ac 01 movw r20, r24 + 3648: 20 50 subi r18, 0x00 ; 0 + 364a: 30 40 sbci r19, 0x00 ; 0 + 364c: 40 40 sbci r20, 0x00 ; 0 + 364e: 50 48 sbci r21, 0x80 ; 128 + 3650: 06 c0 rjmp .+12 ; 0x365e <__fixunssfsi+0x4a> + 3652: c8 01 movw r24, r16 + 3654: b7 01 movw r22, r14 + 3656: 0e 94 46 1f call 0x3e8c ; 0x3e8c <__fixsfsi> + 365a: 9b 01 movw r18, r22 + 365c: ac 01 movw r20, r24 + 365e: b9 01 movw r22, r18 + 3660: ca 01 movw r24, r20 + 3662: 1f 91 pop r17 + 3664: 0f 91 pop r16 + 3666: ff 90 pop r15 + 3668: ef 90 pop r14 + 366a: 08 95 ret + +0000366c <_fpadd_parts>: + 366c: a0 e0 ldi r26, 0x00 ; 0 + 366e: b0 e0 ldi r27, 0x00 ; 0 + 3670: ec e3 ldi r30, 0x3C ; 60 + 3672: fb e1 ldi r31, 0x1B ; 27 + 3674: 0c 94 81 22 jmp 0x4502 ; 0x4502 <__prologue_saves__+0x8> + 3678: fc 01 movw r30, r24 + 367a: ea 01 movw r28, r20 + 367c: 80 81 ld r24, Z + 367e: 82 30 cpi r24, 0x02 ; 2 + 3680: 08 f4 brcc .+2 ; 0x3684 <_fpadd_parts+0x18> + 3682: 38 c1 rjmp .+624 ; 0x38f4 <_fpadd_parts+0x288> + 3684: db 01 movw r26, r22 + 3686: 9c 91 ld r25, X + 3688: 92 30 cpi r25, 0x02 ; 2 + 368a: 08 f4 brcc .+2 ; 0x368e <_fpadd_parts+0x22> + 368c: 30 c1 rjmp .+608 ; 0x38ee <_fpadd_parts+0x282> + 368e: 84 30 cpi r24, 0x04 ; 4 + 3690: 59 f4 brne .+22 ; 0x36a8 <_fpadd_parts+0x3c> + 3692: 94 30 cpi r25, 0x04 ; 4 + 3694: 09 f0 breq .+2 ; 0x3698 <_fpadd_parts+0x2c> + 3696: 2e c1 rjmp .+604 ; 0x38f4 <_fpadd_parts+0x288> + 3698: 91 81 ldd r25, Z+1 ; 0x01 + 369a: 11 96 adiw r26, 0x01 ; 1 + 369c: 8c 91 ld r24, X + 369e: 11 97 sbiw r26, 0x01 ; 1 + 36a0: 98 17 cp r25, r24 + 36a2: 09 f0 breq .+2 ; 0x36a6 <_fpadd_parts+0x3a> + 36a4: 21 c1 rjmp .+578 ; 0x38e8 <_fpadd_parts+0x27c> + 36a6: 26 c1 rjmp .+588 ; 0x38f4 <_fpadd_parts+0x288> + 36a8: 94 30 cpi r25, 0x04 ; 4 + 36aa: 09 f4 brne .+2 ; 0x36ae <_fpadd_parts+0x42> + 36ac: 20 c1 rjmp .+576 ; 0x38ee <_fpadd_parts+0x282> + 36ae: 92 30 cpi r25, 0x02 ; 2 + 36b0: b1 f4 brne .+44 ; 0x36de <_fpadd_parts+0x72> + 36b2: 82 30 cpi r24, 0x02 ; 2 + 36b4: 09 f0 breq .+2 ; 0x36b8 <_fpadd_parts+0x4c> + 36b6: 1e c1 rjmp .+572 ; 0x38f4 <_fpadd_parts+0x288> + 36b8: ca 01 movw r24, r20 + 36ba: af 01 movw r20, r30 + 36bc: 28 e0 ldi r18, 0x08 ; 8 + 36be: da 01 movw r26, r20 + 36c0: 0d 90 ld r0, X+ + 36c2: ad 01 movw r20, r26 + 36c4: dc 01 movw r26, r24 + 36c6: 0d 92 st X+, r0 + 36c8: cd 01 movw r24, r26 + 36ca: 21 50 subi r18, 0x01 ; 1 + 36cc: c1 f7 brne .-16 ; 0x36be <_fpadd_parts+0x52> + 36ce: db 01 movw r26, r22 + 36d0: 11 96 adiw r26, 0x01 ; 1 + 36d2: 8c 91 ld r24, X + 36d4: 11 97 sbiw r26, 0x01 ; 1 + 36d6: 91 81 ldd r25, Z+1 ; 0x01 + 36d8: 89 23 and r24, r25 + 36da: 89 83 std Y+1, r24 ; 0x01 + 36dc: 0a c1 rjmp .+532 ; 0x38f2 <_fpadd_parts+0x286> + 36de: 82 30 cpi r24, 0x02 ; 2 + 36e0: 09 f4 brne .+2 ; 0x36e4 <_fpadd_parts+0x78> + 36e2: 05 c1 rjmp .+522 ; 0x38ee <_fpadd_parts+0x282> + 36e4: c2 80 ldd r12, Z+2 ; 0x02 + 36e6: d3 80 ldd r13, Z+3 ; 0x03 + 36e8: db 01 movw r26, r22 + 36ea: 12 96 adiw r26, 0x02 ; 2 + 36ec: 6d 90 ld r6, X+ + 36ee: 7c 90 ld r7, X + 36f0: 13 97 sbiw r26, 0x03 ; 3 + 36f2: 24 81 ldd r18, Z+4 ; 0x04 + 36f4: 35 81 ldd r19, Z+5 ; 0x05 + 36f6: 46 81 ldd r20, Z+6 ; 0x06 + 36f8: 57 81 ldd r21, Z+7 ; 0x07 + 36fa: 14 96 adiw r26, 0x04 ; 4 + 36fc: ed 90 ld r14, X+ + 36fe: fd 90 ld r15, X+ + 3700: 0d 91 ld r16, X+ + 3702: 1c 91 ld r17, X + 3704: 17 97 sbiw r26, 0x07 ; 7 + 3706: c6 01 movw r24, r12 + 3708: 86 19 sub r24, r6 + 370a: 97 09 sbc r25, r7 + 370c: 5c 01 movw r10, r24 + 370e: 97 ff sbrs r25, 7 + 3710: 04 c0 rjmp .+8 ; 0x371a <_fpadd_parts+0xae> + 3712: aa 24 eor r10, r10 + 3714: bb 24 eor r11, r11 + 3716: a8 1a sub r10, r24 + 3718: b9 0a sbc r11, r25 + 371a: b0 e2 ldi r27, 0x20 ; 32 + 371c: ab 16 cp r10, r27 + 371e: b1 04 cpc r11, r1 + 3720: 0c f0 brlt .+2 ; 0x3724 <_fpadd_parts+0xb8> + 3722: 61 c0 rjmp .+194 ; 0x37e6 <_fpadd_parts+0x17a> + 3724: 18 16 cp r1, r24 + 3726: 19 06 cpc r1, r25 + 3728: 6c f5 brge .+90 ; 0x3784 <_fpadd_parts+0x118> + 372a: 37 01 movw r6, r14 + 372c: 48 01 movw r8, r16 + 372e: 0a 2c mov r0, r10 + 3730: 04 c0 rjmp .+8 ; 0x373a <_fpadd_parts+0xce> + 3732: 96 94 lsr r9 + 3734: 87 94 ror r8 + 3736: 77 94 ror r7 + 3738: 67 94 ror r6 + 373a: 0a 94 dec r0 + 373c: d2 f7 brpl .-12 ; 0x3732 <_fpadd_parts+0xc6> + 373e: 81 e0 ldi r24, 0x01 ; 1 + 3740: 90 e0 ldi r25, 0x00 ; 0 + 3742: a0 e0 ldi r26, 0x00 ; 0 + 3744: b0 e0 ldi r27, 0x00 ; 0 + 3746: 0a 2c mov r0, r10 + 3748: 04 c0 rjmp .+8 ; 0x3752 <_fpadd_parts+0xe6> + 374a: 88 0f add r24, r24 + 374c: 99 1f adc r25, r25 + 374e: aa 1f adc r26, r26 + 3750: bb 1f adc r27, r27 + 3752: 0a 94 dec r0 + 3754: d2 f7 brpl .-12 ; 0x374a <_fpadd_parts+0xde> + 3756: 01 97 sbiw r24, 0x01 ; 1 + 3758: a1 09 sbc r26, r1 + 375a: b1 09 sbc r27, r1 + 375c: 8e 21 and r24, r14 + 375e: 9f 21 and r25, r15 + 3760: a0 23 and r26, r16 + 3762: b1 23 and r27, r17 + 3764: ee 24 eor r14, r14 + 3766: ff 24 eor r15, r15 + 3768: 87 01 movw r16, r14 + 376a: e3 94 inc r14 + 376c: 00 97 sbiw r24, 0x00 ; 0 + 376e: a1 05 cpc r26, r1 + 3770: b1 05 cpc r27, r1 + 3772: 19 f4 brne .+6 ; 0x377a <_fpadd_parts+0x10e> + 3774: ee 24 eor r14, r14 + 3776: ff 24 eor r15, r15 + 3778: 87 01 movw r16, r14 + 377a: e6 28 or r14, r6 + 377c: f7 28 or r15, r7 + 377e: 08 29 or r16, r8 + 3780: 19 29 or r17, r9 + 3782: 3c c0 rjmp .+120 ; 0x37fc <_fpadd_parts+0x190> + 3784: 00 97 sbiw r24, 0x00 ; 0 + 3786: d1 f1 breq .+116 ; 0x37fc <_fpadd_parts+0x190> + 3788: ca 0c add r12, r10 + 378a: db 1c adc r13, r11 + 378c: 39 01 movw r6, r18 + 378e: 4a 01 movw r8, r20 + 3790: 0a 2c mov r0, r10 + 3792: 04 c0 rjmp .+8 ; 0x379c <_fpadd_parts+0x130> + 3794: 96 94 lsr r9 + 3796: 87 94 ror r8 + 3798: 77 94 ror r7 + 379a: 67 94 ror r6 + 379c: 0a 94 dec r0 + 379e: d2 f7 brpl .-12 ; 0x3794 <_fpadd_parts+0x128> + 37a0: 81 e0 ldi r24, 0x01 ; 1 + 37a2: 90 e0 ldi r25, 0x00 ; 0 + 37a4: a0 e0 ldi r26, 0x00 ; 0 + 37a6: b0 e0 ldi r27, 0x00 ; 0 + 37a8: 0a 2c mov r0, r10 + 37aa: 04 c0 rjmp .+8 ; 0x37b4 <_fpadd_parts+0x148> + 37ac: 88 0f add r24, r24 + 37ae: 99 1f adc r25, r25 + 37b0: aa 1f adc r26, r26 + 37b2: bb 1f adc r27, r27 + 37b4: 0a 94 dec r0 + 37b6: d2 f7 brpl .-12 ; 0x37ac <_fpadd_parts+0x140> + 37b8: 01 97 sbiw r24, 0x01 ; 1 + 37ba: a1 09 sbc r26, r1 + 37bc: b1 09 sbc r27, r1 + 37be: 82 23 and r24, r18 + 37c0: 93 23 and r25, r19 + 37c2: a4 23 and r26, r20 + 37c4: b5 23 and r27, r21 + 37c6: 21 e0 ldi r18, 0x01 ; 1 + 37c8: 30 e0 ldi r19, 0x00 ; 0 + 37ca: 40 e0 ldi r20, 0x00 ; 0 + 37cc: 50 e0 ldi r21, 0x00 ; 0 + 37ce: 00 97 sbiw r24, 0x00 ; 0 + 37d0: a1 05 cpc r26, r1 + 37d2: b1 05 cpc r27, r1 + 37d4: 19 f4 brne .+6 ; 0x37dc <_fpadd_parts+0x170> + 37d6: 20 e0 ldi r18, 0x00 ; 0 + 37d8: 30 e0 ldi r19, 0x00 ; 0 + 37da: a9 01 movw r20, r18 + 37dc: 26 29 or r18, r6 + 37de: 37 29 or r19, r7 + 37e0: 48 29 or r20, r8 + 37e2: 59 29 or r21, r9 + 37e4: 0b c0 rjmp .+22 ; 0x37fc <_fpadd_parts+0x190> + 37e6: 6c 14 cp r6, r12 + 37e8: 7d 04 cpc r7, r13 + 37ea: 24 f4 brge .+8 ; 0x37f4 <_fpadd_parts+0x188> + 37ec: ee 24 eor r14, r14 + 37ee: ff 24 eor r15, r15 + 37f0: 87 01 movw r16, r14 + 37f2: 04 c0 rjmp .+8 ; 0x37fc <_fpadd_parts+0x190> + 37f4: 63 01 movw r12, r6 + 37f6: 20 e0 ldi r18, 0x00 ; 0 + 37f8: 30 e0 ldi r19, 0x00 ; 0 + 37fa: a9 01 movw r20, r18 + 37fc: 81 81 ldd r24, Z+1 ; 0x01 + 37fe: fb 01 movw r30, r22 + 3800: 91 81 ldd r25, Z+1 ; 0x01 + 3802: 89 17 cp r24, r25 + 3804: 09 f4 brne .+2 ; 0x3808 <_fpadd_parts+0x19c> + 3806: 45 c0 rjmp .+138 ; 0x3892 <_fpadd_parts+0x226> + 3808: 88 23 and r24, r24 + 380a: 49 f0 breq .+18 ; 0x381e <_fpadd_parts+0x1b2> + 380c: d8 01 movw r26, r16 + 380e: c7 01 movw r24, r14 + 3810: 82 1b sub r24, r18 + 3812: 93 0b sbc r25, r19 + 3814: a4 0b sbc r26, r20 + 3816: b5 0b sbc r27, r21 + 3818: 9c 01 movw r18, r24 + 381a: ad 01 movw r20, r26 + 381c: 04 c0 rjmp .+8 ; 0x3826 <_fpadd_parts+0x1ba> + 381e: 2e 19 sub r18, r14 + 3820: 3f 09 sbc r19, r15 + 3822: 40 0b sbc r20, r16 + 3824: 51 0b sbc r21, r17 + 3826: 57 fd sbrc r21, 7 + 3828: 04 c0 rjmp .+8 ; 0x3832 <_fpadd_parts+0x1c6> + 382a: 19 82 std Y+1, r1 ; 0x01 + 382c: db 82 std Y+3, r13 ; 0x03 + 382e: ca 82 std Y+2, r12 ; 0x02 + 3830: 0b c0 rjmp .+22 ; 0x3848 <_fpadd_parts+0x1dc> + 3832: 81 e0 ldi r24, 0x01 ; 1 + 3834: 89 83 std Y+1, r24 ; 0x01 + 3836: db 82 std Y+3, r13 ; 0x03 + 3838: ca 82 std Y+2, r12 ; 0x02 + 383a: 50 95 com r21 + 383c: 40 95 com r20 + 383e: 30 95 com r19 + 3840: 21 95 neg r18 + 3842: 3f 4f sbci r19, 0xFF ; 255 + 3844: 4f 4f sbci r20, 0xFF ; 255 + 3846: 5f 4f sbci r21, 0xFF ; 255 + 3848: 2c 83 std Y+4, r18 ; 0x04 + 384a: 3d 83 std Y+5, r19 ; 0x05 + 384c: 4e 83 std Y+6, r20 ; 0x06 + 384e: 5f 83 std Y+7, r21 ; 0x07 + 3850: 0d c0 rjmp .+26 ; 0x386c <_fpadd_parts+0x200> + 3852: 88 0f add r24, r24 + 3854: 99 1f adc r25, r25 + 3856: aa 1f adc r26, r26 + 3858: bb 1f adc r27, r27 + 385a: 8c 83 std Y+4, r24 ; 0x04 + 385c: 9d 83 std Y+5, r25 ; 0x05 + 385e: ae 83 std Y+6, r26 ; 0x06 + 3860: bf 83 std Y+7, r27 ; 0x07 + 3862: 8a 81 ldd r24, Y+2 ; 0x02 + 3864: 9b 81 ldd r25, Y+3 ; 0x03 + 3866: 01 97 sbiw r24, 0x01 ; 1 + 3868: 9b 83 std Y+3, r25 ; 0x03 + 386a: 8a 83 std Y+2, r24 ; 0x02 + 386c: 8c 81 ldd r24, Y+4 ; 0x04 + 386e: 9d 81 ldd r25, Y+5 ; 0x05 + 3870: ae 81 ldd r26, Y+6 ; 0x06 + 3872: bf 81 ldd r27, Y+7 ; 0x07 + 3874: 9c 01 movw r18, r24 + 3876: ad 01 movw r20, r26 + 3878: 21 50 subi r18, 0x01 ; 1 + 387a: 30 40 sbci r19, 0x00 ; 0 + 387c: 40 40 sbci r20, 0x00 ; 0 + 387e: 50 40 sbci r21, 0x00 ; 0 + 3880: 2f 3f cpi r18, 0xFF ; 255 + 3882: ef ef ldi r30, 0xFF ; 255 + 3884: 3e 07 cpc r19, r30 + 3886: ef ef ldi r30, 0xFF ; 255 + 3888: 4e 07 cpc r20, r30 + 388a: ef e3 ldi r30, 0x3F ; 63 + 388c: 5e 07 cpc r21, r30 + 388e: 08 f3 brcs .-62 ; 0x3852 <_fpadd_parts+0x1e6> + 3890: 0b c0 rjmp .+22 ; 0x38a8 <_fpadd_parts+0x23c> + 3892: 89 83 std Y+1, r24 ; 0x01 + 3894: db 82 std Y+3, r13 ; 0x03 + 3896: ca 82 std Y+2, r12 ; 0x02 + 3898: 2e 0d add r18, r14 + 389a: 3f 1d adc r19, r15 + 389c: 40 1f adc r20, r16 + 389e: 51 1f adc r21, r17 + 38a0: 2c 83 std Y+4, r18 ; 0x04 + 38a2: 3d 83 std Y+5, r19 ; 0x05 + 38a4: 4e 83 std Y+6, r20 ; 0x06 + 38a6: 5f 83 std Y+7, r21 ; 0x07 + 38a8: 83 e0 ldi r24, 0x03 ; 3 + 38aa: 88 83 st Y, r24 + 38ac: 2c 81 ldd r18, Y+4 ; 0x04 + 38ae: 3d 81 ldd r19, Y+5 ; 0x05 + 38b0: 4e 81 ldd r20, Y+6 ; 0x06 + 38b2: 5f 81 ldd r21, Y+7 ; 0x07 + 38b4: 57 ff sbrs r21, 7 + 38b6: 1d c0 rjmp .+58 ; 0x38f2 <_fpadd_parts+0x286> + 38b8: da 01 movw r26, r20 + 38ba: c9 01 movw r24, r18 + 38bc: 81 70 andi r24, 0x01 ; 1 + 38be: 90 70 andi r25, 0x00 ; 0 + 38c0: a0 70 andi r26, 0x00 ; 0 + 38c2: b0 70 andi r27, 0x00 ; 0 + 38c4: 56 95 lsr r21 + 38c6: 47 95 ror r20 + 38c8: 37 95 ror r19 + 38ca: 27 95 ror r18 + 38cc: 82 2b or r24, r18 + 38ce: 93 2b or r25, r19 + 38d0: a4 2b or r26, r20 + 38d2: b5 2b or r27, r21 + 38d4: 8c 83 std Y+4, r24 ; 0x04 + 38d6: 9d 83 std Y+5, r25 ; 0x05 + 38d8: ae 83 std Y+6, r26 ; 0x06 + 38da: bf 83 std Y+7, r27 ; 0x07 + 38dc: 8a 81 ldd r24, Y+2 ; 0x02 + 38de: 9b 81 ldd r25, Y+3 ; 0x03 + 38e0: 01 96 adiw r24, 0x01 ; 1 + 38e2: 9b 83 std Y+3, r25 ; 0x03 + 38e4: 8a 83 std Y+2, r24 ; 0x02 + 38e6: 05 c0 rjmp .+10 ; 0x38f2 <_fpadd_parts+0x286> + 38e8: ee ea ldi r30, 0xAE ; 174 + 38ea: f1 e0 ldi r31, 0x01 ; 1 + 38ec: 03 c0 rjmp .+6 ; 0x38f4 <_fpadd_parts+0x288> + 38ee: fb 01 movw r30, r22 + 38f0: 01 c0 rjmp .+2 ; 0x38f4 <_fpadd_parts+0x288> + 38f2: fe 01 movw r30, r28 + 38f4: cf 01 movw r24, r30 + 38f6: cd b7 in r28, 0x3d ; 61 + 38f8: de b7 in r29, 0x3e ; 62 + 38fa: ee e0 ldi r30, 0x0E ; 14 + 38fc: 0c 94 9d 22 jmp 0x453a ; 0x453a <__epilogue_restores__+0x8> + +00003900 <__addsf3>: + 3900: a0 e2 ldi r26, 0x20 ; 32 + 3902: b0 e0 ldi r27, 0x00 ; 0 + 3904: e6 e8 ldi r30, 0x86 ; 134 + 3906: fc e1 ldi r31, 0x1C ; 28 + 3908: 0c 94 89 22 jmp 0x4512 ; 0x4512 <__prologue_saves__+0x18> + 390c: 69 83 std Y+1, r22 ; 0x01 + 390e: 7a 83 std Y+2, r23 ; 0x02 + 3910: 8b 83 std Y+3, r24 ; 0x03 + 3912: 9c 83 std Y+4, r25 ; 0x04 + 3914: 2d 83 std Y+5, r18 ; 0x05 + 3916: 3e 83 std Y+6, r19 ; 0x06 + 3918: 4f 83 std Y+7, r20 ; 0x07 + 391a: 58 87 std Y+8, r21 ; 0x08 + 391c: 89 e0 ldi r24, 0x09 ; 9 + 391e: e8 2e mov r14, r24 + 3920: f1 2c mov r15, r1 + 3922: ec 0e add r14, r28 + 3924: fd 1e adc r15, r29 + 3926: ce 01 movw r24, r28 + 3928: 01 96 adiw r24, 0x01 ; 1 + 392a: b7 01 movw r22, r14 + 392c: 0e 94 38 21 call 0x4270 ; 0x4270 <__unpack_f> + 3930: 8e 01 movw r16, r28 + 3932: 0f 5e subi r16, 0xEF ; 239 + 3934: 1f 4f sbci r17, 0xFF ; 255 + 3936: ce 01 movw r24, r28 + 3938: 05 96 adiw r24, 0x05 ; 5 + 393a: b8 01 movw r22, r16 + 393c: 0e 94 38 21 call 0x4270 ; 0x4270 <__unpack_f> + 3940: c7 01 movw r24, r14 + 3942: b8 01 movw r22, r16 + 3944: ae 01 movw r20, r28 + 3946: 47 5e subi r20, 0xE7 ; 231 + 3948: 5f 4f sbci r21, 0xFF ; 255 + 394a: 0e 94 36 1b call 0x366c ; 0x366c <_fpadd_parts> + 394e: 0e 94 6a 20 call 0x40d4 ; 0x40d4 <__pack_f> + 3952: a0 96 adiw r28, 0x20 ; 32 + 3954: e6 e0 ldi r30, 0x06 ; 6 + 3956: 0c 94 a5 22 jmp 0x454a ; 0x454a <__epilogue_restores__+0x18> + +0000395a <__subsf3>: + 395a: a0 e2 ldi r26, 0x20 ; 32 + 395c: b0 e0 ldi r27, 0x00 ; 0 + 395e: e3 eb ldi r30, 0xB3 ; 179 + 3960: fc e1 ldi r31, 0x1C ; 28 + 3962: 0c 94 89 22 jmp 0x4512 ; 0x4512 <__prologue_saves__+0x18> + 3966: 69 83 std Y+1, r22 ; 0x01 + 3968: 7a 83 std Y+2, r23 ; 0x02 + 396a: 8b 83 std Y+3, r24 ; 0x03 + 396c: 9c 83 std Y+4, r25 ; 0x04 + 396e: 2d 83 std Y+5, r18 ; 0x05 + 3970: 3e 83 std Y+6, r19 ; 0x06 + 3972: 4f 83 std Y+7, r20 ; 0x07 + 3974: 58 87 std Y+8, r21 ; 0x08 + 3976: 8e 01 movw r16, r28 + 3978: 07 5f subi r16, 0xF7 ; 247 + 397a: 1f 4f sbci r17, 0xFF ; 255 + 397c: ce 01 movw r24, r28 + 397e: 01 96 adiw r24, 0x01 ; 1 + 3980: b8 01 movw r22, r16 + 3982: 0e 94 38 21 call 0x4270 ; 0x4270 <__unpack_f> + 3986: 91 e1 ldi r25, 0x11 ; 17 + 3988: e9 2e mov r14, r25 + 398a: f1 2c mov r15, r1 + 398c: ec 0e add r14, r28 + 398e: fd 1e adc r15, r29 + 3990: ce 01 movw r24, r28 + 3992: 05 96 adiw r24, 0x05 ; 5 + 3994: b7 01 movw r22, r14 + 3996: 0e 94 38 21 call 0x4270 ; 0x4270 <__unpack_f> + 399a: 8a 89 ldd r24, Y+18 ; 0x12 + 399c: 91 e0 ldi r25, 0x01 ; 1 + 399e: 89 27 eor r24, r25 + 39a0: 8a 8b std Y+18, r24 ; 0x12 + 39a2: c8 01 movw r24, r16 + 39a4: b7 01 movw r22, r14 + 39a6: ae 01 movw r20, r28 + 39a8: 47 5e subi r20, 0xE7 ; 231 + 39aa: 5f 4f sbci r21, 0xFF ; 255 + 39ac: 0e 94 36 1b call 0x366c ; 0x366c <_fpadd_parts> + 39b0: 0e 94 6a 20 call 0x40d4 ; 0x40d4 <__pack_f> + 39b4: a0 96 adiw r28, 0x20 ; 32 + 39b6: e6 e0 ldi r30, 0x06 ; 6 + 39b8: 0c 94 a5 22 jmp 0x454a ; 0x454a <__epilogue_restores__+0x18> + +000039bc <__mulsf3>: + 39bc: a0 e2 ldi r26, 0x20 ; 32 + 39be: b0 e0 ldi r27, 0x00 ; 0 + 39c0: e4 ee ldi r30, 0xE4 ; 228 + 39c2: fc e1 ldi r31, 0x1C ; 28 + 39c4: 0c 94 7d 22 jmp 0x44fa ; 0x44fa <__prologue_saves__> + 39c8: 69 83 std Y+1, r22 ; 0x01 + 39ca: 7a 83 std Y+2, r23 ; 0x02 + 39cc: 8b 83 std Y+3, r24 ; 0x03 + 39ce: 9c 83 std Y+4, r25 ; 0x04 + 39d0: 2d 83 std Y+5, r18 ; 0x05 + 39d2: 3e 83 std Y+6, r19 ; 0x06 + 39d4: 4f 83 std Y+7, r20 ; 0x07 + 39d6: 58 87 std Y+8, r21 ; 0x08 + 39d8: ce 01 movw r24, r28 + 39da: 01 96 adiw r24, 0x01 ; 1 + 39dc: be 01 movw r22, r28 + 39de: 67 5f subi r22, 0xF7 ; 247 + 39e0: 7f 4f sbci r23, 0xFF ; 255 + 39e2: 0e 94 38 21 call 0x4270 ; 0x4270 <__unpack_f> + 39e6: ce 01 movw r24, r28 + 39e8: 05 96 adiw r24, 0x05 ; 5 + 39ea: be 01 movw r22, r28 + 39ec: 6f 5e subi r22, 0xEF ; 239 + 39ee: 7f 4f sbci r23, 0xFF ; 255 + 39f0: 0e 94 38 21 call 0x4270 ; 0x4270 <__unpack_f> + 39f4: 99 85 ldd r25, Y+9 ; 0x09 + 39f6: 92 30 cpi r25, 0x02 ; 2 + 39f8: 78 f0 brcs .+30 ; 0x3a18 <__mulsf3+0x5c> + 39fa: 89 89 ldd r24, Y+17 ; 0x11 + 39fc: 82 30 cpi r24, 0x02 ; 2 + 39fe: c0 f0 brcs .+48 ; 0x3a30 <__mulsf3+0x74> + 3a00: 94 30 cpi r25, 0x04 ; 4 + 3a02: 19 f4 brne .+6 ; 0x3a0a <__mulsf3+0x4e> + 3a04: 82 30 cpi r24, 0x02 ; 2 + 3a06: 41 f4 brne .+16 ; 0x3a18 <__mulsf3+0x5c> + 3a08: cb c0 rjmp .+406 ; 0x3ba0 <__mulsf3+0x1e4> + 3a0a: 84 30 cpi r24, 0x04 ; 4 + 3a0c: 19 f4 brne .+6 ; 0x3a14 <__mulsf3+0x58> + 3a0e: 92 30 cpi r25, 0x02 ; 2 + 3a10: 79 f4 brne .+30 ; 0x3a30 <__mulsf3+0x74> + 3a12: c6 c0 rjmp .+396 ; 0x3ba0 <__mulsf3+0x1e4> + 3a14: 92 30 cpi r25, 0x02 ; 2 + 3a16: 51 f4 brne .+20 ; 0x3a2c <__mulsf3+0x70> + 3a18: 81 e0 ldi r24, 0x01 ; 1 + 3a1a: 2a 85 ldd r18, Y+10 ; 0x0a + 3a1c: 9a 89 ldd r25, Y+18 ; 0x12 + 3a1e: 29 17 cp r18, r25 + 3a20: 09 f4 brne .+2 ; 0x3a24 <__mulsf3+0x68> + 3a22: 80 e0 ldi r24, 0x00 ; 0 + 3a24: 8a 87 std Y+10, r24 ; 0x0a + 3a26: ce 01 movw r24, r28 + 3a28: 09 96 adiw r24, 0x09 ; 9 + 3a2a: bc c0 rjmp .+376 ; 0x3ba4 <__mulsf3+0x1e8> + 3a2c: 82 30 cpi r24, 0x02 ; 2 + 3a2e: 51 f4 brne .+20 ; 0x3a44 <__mulsf3+0x88> + 3a30: 81 e0 ldi r24, 0x01 ; 1 + 3a32: 2a 85 ldd r18, Y+10 ; 0x0a + 3a34: 9a 89 ldd r25, Y+18 ; 0x12 + 3a36: 29 17 cp r18, r25 + 3a38: 09 f4 brne .+2 ; 0x3a3c <__mulsf3+0x80> + 3a3a: 80 e0 ldi r24, 0x00 ; 0 + 3a3c: 8a 8b std Y+18, r24 ; 0x12 + 3a3e: ce 01 movw r24, r28 + 3a40: 41 96 adiw r24, 0x11 ; 17 + 3a42: b0 c0 rjmp .+352 ; 0x3ba4 <__mulsf3+0x1e8> + 3a44: 6d 84 ldd r6, Y+13 ; 0x0d + 3a46: 7e 84 ldd r7, Y+14 ; 0x0e + 3a48: 8f 84 ldd r8, Y+15 ; 0x0f + 3a4a: 98 88 ldd r9, Y+16 ; 0x10 + 3a4c: ed 88 ldd r14, Y+21 ; 0x15 + 3a4e: fe 88 ldd r15, Y+22 ; 0x16 + 3a50: 0f 89 ldd r16, Y+23 ; 0x17 + 3a52: 18 8d ldd r17, Y+24 ; 0x18 + 3a54: e0 e2 ldi r30, 0x20 ; 32 + 3a56: f0 e0 ldi r31, 0x00 ; 0 + 3a58: 80 e0 ldi r24, 0x00 ; 0 + 3a5a: 90 e0 ldi r25, 0x00 ; 0 + 3a5c: dc 01 movw r26, r24 + 3a5e: aa 24 eor r10, r10 + 3a60: bb 24 eor r11, r11 + 3a62: 65 01 movw r12, r10 + 3a64: 20 e0 ldi r18, 0x00 ; 0 + 3a66: 30 e0 ldi r19, 0x00 ; 0 + 3a68: a9 01 movw r20, r18 + 3a6a: b3 01 movw r22, r6 + 3a6c: 61 70 andi r22, 0x01 ; 1 + 3a6e: 70 70 andi r23, 0x00 ; 0 + 3a70: 61 15 cp r22, r1 + 3a72: 71 05 cpc r23, r1 + 3a74: d1 f0 breq .+52 ; 0x3aaa <__mulsf3+0xee> + 3a76: 2e 0d add r18, r14 + 3a78: 3f 1d adc r19, r15 + 3a7a: 40 1f adc r20, r16 + 3a7c: 51 1f adc r21, r17 + 3a7e: 15 01 movw r2, r10 + 3a80: 26 01 movw r4, r12 + 3a82: 28 0e add r2, r24 + 3a84: 39 1e adc r3, r25 + 3a86: 4a 1e adc r4, r26 + 3a88: 5b 1e adc r5, r27 + 3a8a: 81 e0 ldi r24, 0x01 ; 1 + 3a8c: 90 e0 ldi r25, 0x00 ; 0 + 3a8e: a0 e0 ldi r26, 0x00 ; 0 + 3a90: b0 e0 ldi r27, 0x00 ; 0 + 3a92: 2e 15 cp r18, r14 + 3a94: 3f 05 cpc r19, r15 + 3a96: 40 07 cpc r20, r16 + 3a98: 51 07 cpc r21, r17 + 3a9a: 18 f0 brcs .+6 ; 0x3aa2 <__mulsf3+0xe6> + 3a9c: 80 e0 ldi r24, 0x00 ; 0 + 3a9e: 90 e0 ldi r25, 0x00 ; 0 + 3aa0: dc 01 movw r26, r24 + 3aa2: 82 0d add r24, r2 + 3aa4: 93 1d adc r25, r3 + 3aa6: a4 1d adc r26, r4 + 3aa8: b5 1d adc r27, r5 + 3aaa: aa 0c add r10, r10 + 3aac: bb 1c adc r11, r11 + 3aae: cc 1c adc r12, r12 + 3ab0: dd 1c adc r13, r13 + 3ab2: 17 ff sbrs r17, 7 + 3ab4: 09 c0 rjmp .+18 ; 0x3ac8 <__mulsf3+0x10c> + 3ab6: 61 e0 ldi r22, 0x01 ; 1 + 3ab8: 26 2e mov r2, r22 + 3aba: 31 2c mov r3, r1 + 3abc: 41 2c mov r4, r1 + 3abe: 51 2c mov r5, r1 + 3ac0: a2 28 or r10, r2 + 3ac2: b3 28 or r11, r3 + 3ac4: c4 28 or r12, r4 + 3ac6: d5 28 or r13, r5 + 3ac8: 31 97 sbiw r30, 0x01 ; 1 + 3aca: 49 f0 breq .+18 ; 0x3ade <__mulsf3+0x122> + 3acc: ee 0c add r14, r14 + 3ace: ff 1c adc r15, r15 + 3ad0: 00 1f adc r16, r16 + 3ad2: 11 1f adc r17, r17 + 3ad4: 96 94 lsr r9 + 3ad6: 87 94 ror r8 + 3ad8: 77 94 ror r7 + 3ada: 67 94 ror r6 + 3adc: c6 cf rjmp .-116 ; 0x3a6a <__mulsf3+0xae> + 3ade: 6b 89 ldd r22, Y+19 ; 0x13 + 3ae0: 7c 89 ldd r23, Y+20 ; 0x14 + 3ae2: eb 85 ldd r30, Y+11 ; 0x0b + 3ae4: fc 85 ldd r31, Y+12 ; 0x0c + 3ae6: 6e 0f add r22, r30 + 3ae8: 7f 1f adc r23, r31 + 3aea: 6e 5f subi r22, 0xFE ; 254 + 3aec: 7f 4f sbci r23, 0xFF ; 255 + 3aee: 7c 8f std Y+28, r23 ; 0x1c + 3af0: 6b 8f std Y+27, r22 ; 0x1b + 3af2: 61 e0 ldi r22, 0x01 ; 1 + 3af4: ea 85 ldd r30, Y+10 ; 0x0a + 3af6: 7a 89 ldd r23, Y+18 ; 0x12 + 3af8: e7 17 cp r30, r23 + 3afa: 09 f4 brne .+2 ; 0x3afe <__mulsf3+0x142> + 3afc: 60 e0 ldi r22, 0x00 ; 0 + 3afe: 6a 8f std Y+26, r22 ; 0x1a + 3b00: 6b 8d ldd r22, Y+27 ; 0x1b + 3b02: 7c 8d ldd r23, Y+28 ; 0x1c + 3b04: 10 c0 rjmp .+32 ; 0x3b26 <__mulsf3+0x16a> + 3b06: fc 01 movw r30, r24 + 3b08: e1 70 andi r30, 0x01 ; 1 + 3b0a: f0 70 andi r31, 0x00 ; 0 + 3b0c: 30 97 sbiw r30, 0x00 ; 0 + 3b0e: 29 f0 breq .+10 ; 0x3b1a <__mulsf3+0x15e> + 3b10: 56 95 lsr r21 + 3b12: 47 95 ror r20 + 3b14: 37 95 ror r19 + 3b16: 27 95 ror r18 + 3b18: 50 68 ori r21, 0x80 ; 128 + 3b1a: b6 95 lsr r27 + 3b1c: a7 95 ror r26 + 3b1e: 97 95 ror r25 + 3b20: 87 95 ror r24 + 3b22: 6f 5f subi r22, 0xFF ; 255 + 3b24: 7f 4f sbci r23, 0xFF ; 255 + 3b26: b7 fd sbrc r27, 7 + 3b28: ee cf rjmp .-36 ; 0x3b06 <__mulsf3+0x14a> + 3b2a: 0c c0 rjmp .+24 ; 0x3b44 <__mulsf3+0x188> + 3b2c: 88 0f add r24, r24 + 3b2e: 99 1f adc r25, r25 + 3b30: aa 1f adc r26, r26 + 3b32: bb 1f adc r27, r27 + 3b34: 57 fd sbrc r21, 7 + 3b36: 81 60 ori r24, 0x01 ; 1 + 3b38: 22 0f add r18, r18 + 3b3a: 33 1f adc r19, r19 + 3b3c: 44 1f adc r20, r20 + 3b3e: 55 1f adc r21, r21 + 3b40: 61 50 subi r22, 0x01 ; 1 + 3b42: 70 40 sbci r23, 0x00 ; 0 + 3b44: 80 30 cpi r24, 0x00 ; 0 + 3b46: e0 e0 ldi r30, 0x00 ; 0 + 3b48: 9e 07 cpc r25, r30 + 3b4a: e0 e0 ldi r30, 0x00 ; 0 + 3b4c: ae 07 cpc r26, r30 + 3b4e: e0 e4 ldi r30, 0x40 ; 64 + 3b50: be 07 cpc r27, r30 + 3b52: 60 f3 brcs .-40 ; 0x3b2c <__mulsf3+0x170> + 3b54: 6b 8f std Y+27, r22 ; 0x1b + 3b56: 7c 8f std Y+28, r23 ; 0x1c + 3b58: 6f e7 ldi r22, 0x7F ; 127 + 3b5a: e6 2e mov r14, r22 + 3b5c: f1 2c mov r15, r1 + 3b5e: 01 2d mov r16, r1 + 3b60: 11 2d mov r17, r1 + 3b62: e8 22 and r14, r24 + 3b64: f9 22 and r15, r25 + 3b66: 0a 23 and r16, r26 + 3b68: 1b 23 and r17, r27 + 3b6a: 60 e4 ldi r22, 0x40 ; 64 + 3b6c: e6 16 cp r14, r22 + 3b6e: f1 04 cpc r15, r1 + 3b70: 01 05 cpc r16, r1 + 3b72: 11 05 cpc r17, r1 + 3b74: 61 f4 brne .+24 ; 0x3b8e <__mulsf3+0x1d2> + 3b76: 87 fd sbrc r24, 7 + 3b78: 0a c0 rjmp .+20 ; 0x3b8e <__mulsf3+0x1d2> + 3b7a: 21 15 cp r18, r1 + 3b7c: 31 05 cpc r19, r1 + 3b7e: 41 05 cpc r20, r1 + 3b80: 51 05 cpc r21, r1 + 3b82: 29 f0 breq .+10 ; 0x3b8e <__mulsf3+0x1d2> + 3b84: 80 5c subi r24, 0xC0 ; 192 + 3b86: 9f 4f sbci r25, 0xFF ; 255 + 3b88: af 4f sbci r26, 0xFF ; 255 + 3b8a: bf 4f sbci r27, 0xFF ; 255 + 3b8c: 80 78 andi r24, 0x80 ; 128 + 3b8e: 8d 8f std Y+29, r24 ; 0x1d + 3b90: 9e 8f std Y+30, r25 ; 0x1e + 3b92: af 8f std Y+31, r26 ; 0x1f + 3b94: b8 a3 std Y+32, r27 ; 0x20 + 3b96: 83 e0 ldi r24, 0x03 ; 3 + 3b98: 89 8f std Y+25, r24 ; 0x19 + 3b9a: ce 01 movw r24, r28 + 3b9c: 49 96 adiw r24, 0x19 ; 25 + 3b9e: 02 c0 rjmp .+4 ; 0x3ba4 <__mulsf3+0x1e8> + 3ba0: 8e ea ldi r24, 0xAE ; 174 + 3ba2: 91 e0 ldi r25, 0x01 ; 1 + 3ba4: 0e 94 6a 20 call 0x40d4 ; 0x40d4 <__pack_f> + 3ba8: a0 96 adiw r28, 0x20 ; 32 + 3baa: e2 e1 ldi r30, 0x12 ; 18 + 3bac: 0c 94 99 22 jmp 0x4532 ; 0x4532 <__epilogue_restores__> + +00003bb0 <__divsf3>: + 3bb0: a8 e1 ldi r26, 0x18 ; 24 + 3bb2: b0 e0 ldi r27, 0x00 ; 0 + 3bb4: ee ed ldi r30, 0xDE ; 222 + 3bb6: fd e1 ldi r31, 0x1D ; 29 + 3bb8: 0c 94 85 22 jmp 0x450a ; 0x450a <__prologue_saves__+0x10> + 3bbc: 69 83 std Y+1, r22 ; 0x01 + 3bbe: 7a 83 std Y+2, r23 ; 0x02 + 3bc0: 8b 83 std Y+3, r24 ; 0x03 + 3bc2: 9c 83 std Y+4, r25 ; 0x04 + 3bc4: 2d 83 std Y+5, r18 ; 0x05 + 3bc6: 3e 83 std Y+6, r19 ; 0x06 + 3bc8: 4f 83 std Y+7, r20 ; 0x07 + 3bca: 58 87 std Y+8, r21 ; 0x08 + 3bcc: 8e 01 movw r16, r28 + 3bce: 07 5f subi r16, 0xF7 ; 247 + 3bd0: 1f 4f sbci r17, 0xFF ; 255 + 3bd2: ce 01 movw r24, r28 + 3bd4: 01 96 adiw r24, 0x01 ; 1 + 3bd6: b8 01 movw r22, r16 + 3bd8: 0e 94 38 21 call 0x4270 ; 0x4270 <__unpack_f> + 3bdc: 81 e1 ldi r24, 0x11 ; 17 + 3bde: e8 2e mov r14, r24 + 3be0: f1 2c mov r15, r1 + 3be2: ec 0e add r14, r28 + 3be4: fd 1e adc r15, r29 + 3be6: ce 01 movw r24, r28 + 3be8: 05 96 adiw r24, 0x05 ; 5 + 3bea: b7 01 movw r22, r14 + 3bec: 0e 94 38 21 call 0x4270 ; 0x4270 <__unpack_f> + 3bf0: 99 85 ldd r25, Y+9 ; 0x09 + 3bf2: 92 30 cpi r25, 0x02 ; 2 + 3bf4: 08 f4 brcc .+2 ; 0x3bf8 <__divsf3+0x48> + 3bf6: 83 c0 rjmp .+262 ; 0x3cfe <__divsf3+0x14e> + 3bf8: 89 89 ldd r24, Y+17 ; 0x11 + 3bfa: 82 30 cpi r24, 0x02 ; 2 + 3bfc: 08 f4 brcc .+2 ; 0x3c00 <__divsf3+0x50> + 3bfe: 7b c0 rjmp .+246 ; 0x3cf6 <__divsf3+0x146> + 3c00: 2a 85 ldd r18, Y+10 ; 0x0a + 3c02: 3a 89 ldd r19, Y+18 ; 0x12 + 3c04: 23 27 eor r18, r19 + 3c06: 2a 87 std Y+10, r18 ; 0x0a + 3c08: 94 30 cpi r25, 0x04 ; 4 + 3c0a: 11 f0 breq .+4 ; 0x3c10 <__divsf3+0x60> + 3c0c: 92 30 cpi r25, 0x02 ; 2 + 3c0e: 21 f4 brne .+8 ; 0x3c18 <__divsf3+0x68> + 3c10: 98 17 cp r25, r24 + 3c12: 09 f0 breq .+2 ; 0x3c16 <__divsf3+0x66> + 3c14: 6c c0 rjmp .+216 ; 0x3cee <__divsf3+0x13e> + 3c16: 71 c0 rjmp .+226 ; 0x3cfa <__divsf3+0x14a> + 3c18: 84 30 cpi r24, 0x04 ; 4 + 3c1a: 39 f4 brne .+14 ; 0x3c2a <__divsf3+0x7a> + 3c1c: 1d 86 std Y+13, r1 ; 0x0d + 3c1e: 1e 86 std Y+14, r1 ; 0x0e + 3c20: 1f 86 std Y+15, r1 ; 0x0f + 3c22: 18 8a std Y+16, r1 ; 0x10 + 3c24: 1c 86 std Y+12, r1 ; 0x0c + 3c26: 1b 86 std Y+11, r1 ; 0x0b + 3c28: 6a c0 rjmp .+212 ; 0x3cfe <__divsf3+0x14e> + 3c2a: 82 30 cpi r24, 0x02 ; 2 + 3c2c: 19 f4 brne .+6 ; 0x3c34 <__divsf3+0x84> + 3c2e: 84 e0 ldi r24, 0x04 ; 4 + 3c30: 89 87 std Y+9, r24 ; 0x09 + 3c32: 65 c0 rjmp .+202 ; 0x3cfe <__divsf3+0x14e> + 3c34: 8b 85 ldd r24, Y+11 ; 0x0b + 3c36: 9c 85 ldd r25, Y+12 ; 0x0c + 3c38: 2b 89 ldd r18, Y+19 ; 0x13 + 3c3a: 3c 89 ldd r19, Y+20 ; 0x14 + 3c3c: 82 1b sub r24, r18 + 3c3e: 93 0b sbc r25, r19 + 3c40: 9c 87 std Y+12, r25 ; 0x0c + 3c42: 8b 87 std Y+11, r24 ; 0x0b + 3c44: 2d 85 ldd r18, Y+13 ; 0x0d + 3c46: 3e 85 ldd r19, Y+14 ; 0x0e + 3c48: 4f 85 ldd r20, Y+15 ; 0x0f + 3c4a: 58 89 ldd r21, Y+16 ; 0x10 + 3c4c: ed 88 ldd r14, Y+21 ; 0x15 + 3c4e: fe 88 ldd r15, Y+22 ; 0x16 + 3c50: 0f 89 ldd r16, Y+23 ; 0x17 + 3c52: 18 8d ldd r17, Y+24 ; 0x18 + 3c54: 2e 15 cp r18, r14 + 3c56: 3f 05 cpc r19, r15 + 3c58: 40 07 cpc r20, r16 + 3c5a: 51 07 cpc r21, r17 + 3c5c: 38 f4 brcc .+14 ; 0x3c6c <__divsf3+0xbc> + 3c5e: 22 0f add r18, r18 + 3c60: 33 1f adc r19, r19 + 3c62: 44 1f adc r20, r20 + 3c64: 55 1f adc r21, r21 + 3c66: 01 97 sbiw r24, 0x01 ; 1 + 3c68: 9c 87 std Y+12, r25 ; 0x0c + 3c6a: 8b 87 std Y+11, r24 ; 0x0b + 3c6c: 6f e1 ldi r22, 0x1F ; 31 + 3c6e: 70 e0 ldi r23, 0x00 ; 0 + 3c70: a1 2c mov r10, r1 + 3c72: b1 2c mov r11, r1 + 3c74: c1 2c mov r12, r1 + 3c76: a0 e4 ldi r26, 0x40 ; 64 + 3c78: da 2e mov r13, r26 + 3c7a: 80 e0 ldi r24, 0x00 ; 0 + 3c7c: 90 e0 ldi r25, 0x00 ; 0 + 3c7e: dc 01 movw r26, r24 + 3c80: 2e 15 cp r18, r14 + 3c82: 3f 05 cpc r19, r15 + 3c84: 40 07 cpc r20, r16 + 3c86: 51 07 cpc r21, r17 + 3c88: 40 f0 brcs .+16 ; 0x3c9a <__divsf3+0xea> + 3c8a: 8a 29 or r24, r10 + 3c8c: 9b 29 or r25, r11 + 3c8e: ac 29 or r26, r12 + 3c90: bd 29 or r27, r13 + 3c92: 2e 19 sub r18, r14 + 3c94: 3f 09 sbc r19, r15 + 3c96: 40 0b sbc r20, r16 + 3c98: 51 0b sbc r21, r17 + 3c9a: d6 94 lsr r13 + 3c9c: c7 94 ror r12 + 3c9e: b7 94 ror r11 + 3ca0: a7 94 ror r10 + 3ca2: 22 0f add r18, r18 + 3ca4: 33 1f adc r19, r19 + 3ca6: 44 1f adc r20, r20 + 3ca8: 55 1f adc r21, r21 + 3caa: 61 50 subi r22, 0x01 ; 1 + 3cac: 70 40 sbci r23, 0x00 ; 0 + 3cae: 41 f7 brne .-48 ; 0x3c80 <__divsf3+0xd0> + 3cb0: 6f e7 ldi r22, 0x7F ; 127 + 3cb2: e6 2e mov r14, r22 + 3cb4: f1 2c mov r15, r1 + 3cb6: 01 2d mov r16, r1 + 3cb8: 11 2d mov r17, r1 + 3cba: e8 22 and r14, r24 + 3cbc: f9 22 and r15, r25 + 3cbe: 0a 23 and r16, r26 + 3cc0: 1b 23 and r17, r27 + 3cc2: 60 e4 ldi r22, 0x40 ; 64 + 3cc4: e6 16 cp r14, r22 + 3cc6: f1 04 cpc r15, r1 + 3cc8: 01 05 cpc r16, r1 + 3cca: 11 05 cpc r17, r1 + 3ccc: 61 f4 brne .+24 ; 0x3ce6 <__divsf3+0x136> + 3cce: 87 fd sbrc r24, 7 + 3cd0: 0a c0 rjmp .+20 ; 0x3ce6 <__divsf3+0x136> + 3cd2: 21 15 cp r18, r1 + 3cd4: 31 05 cpc r19, r1 + 3cd6: 41 05 cpc r20, r1 + 3cd8: 51 05 cpc r21, r1 + 3cda: 29 f0 breq .+10 ; 0x3ce6 <__divsf3+0x136> + 3cdc: 80 5c subi r24, 0xC0 ; 192 + 3cde: 9f 4f sbci r25, 0xFF ; 255 + 3ce0: af 4f sbci r26, 0xFF ; 255 + 3ce2: bf 4f sbci r27, 0xFF ; 255 + 3ce4: 80 78 andi r24, 0x80 ; 128 + 3ce6: 8d 87 std Y+13, r24 ; 0x0d + 3ce8: 9e 87 std Y+14, r25 ; 0x0e + 3cea: af 87 std Y+15, r26 ; 0x0f + 3cec: b8 8b std Y+16, r27 ; 0x10 + 3cee: 8e 01 movw r16, r28 + 3cf0: 07 5f subi r16, 0xF7 ; 247 + 3cf2: 1f 4f sbci r17, 0xFF ; 255 + 3cf4: 04 c0 rjmp .+8 ; 0x3cfe <__divsf3+0x14e> + 3cf6: 87 01 movw r16, r14 + 3cf8: 02 c0 rjmp .+4 ; 0x3cfe <__divsf3+0x14e> + 3cfa: 0e ea ldi r16, 0xAE ; 174 + 3cfc: 11 e0 ldi r17, 0x01 ; 1 + 3cfe: c8 01 movw r24, r16 + 3d00: 0e 94 6a 20 call 0x40d4 ; 0x40d4 <__pack_f> + 3d04: 68 96 adiw r28, 0x18 ; 24 + 3d06: ea e0 ldi r30, 0x0A ; 10 + 3d08: 0c 94 a1 22 jmp 0x4542 ; 0x4542 <__epilogue_restores__+0x10> + +00003d0c <__gesf2>: + 3d0c: a8 e1 ldi r26, 0x18 ; 24 + 3d0e: b0 e0 ldi r27, 0x00 ; 0 + 3d10: ec e8 ldi r30, 0x8C ; 140 + 3d12: fe e1 ldi r31, 0x1E ; 30 + 3d14: 0c 94 89 22 jmp 0x4512 ; 0x4512 <__prologue_saves__+0x18> + 3d18: 69 83 std Y+1, r22 ; 0x01 + 3d1a: 7a 83 std Y+2, r23 ; 0x02 + 3d1c: 8b 83 std Y+3, r24 ; 0x03 + 3d1e: 9c 83 std Y+4, r25 ; 0x04 + 3d20: 2d 83 std Y+5, r18 ; 0x05 + 3d22: 3e 83 std Y+6, r19 ; 0x06 + 3d24: 4f 83 std Y+7, r20 ; 0x07 + 3d26: 58 87 std Y+8, r21 ; 0x08 + 3d28: 8e 01 movw r16, r28 + 3d2a: 07 5f subi r16, 0xF7 ; 247 + 3d2c: 1f 4f sbci r17, 0xFF ; 255 + 3d2e: ce 01 movw r24, r28 + 3d30: 01 96 adiw r24, 0x01 ; 1 + 3d32: b8 01 movw r22, r16 + 3d34: 0e 94 38 21 call 0x4270 ; 0x4270 <__unpack_f> + 3d38: 81 e1 ldi r24, 0x11 ; 17 + 3d3a: e8 2e mov r14, r24 + 3d3c: f1 2c mov r15, r1 + 3d3e: ec 0e add r14, r28 + 3d40: fd 1e adc r15, r29 + 3d42: ce 01 movw r24, r28 + 3d44: 05 96 adiw r24, 0x05 ; 5 + 3d46: b7 01 movw r22, r14 + 3d48: 0e 94 38 21 call 0x4270 ; 0x4270 <__unpack_f> + 3d4c: 89 85 ldd r24, Y+9 ; 0x09 + 3d4e: 82 30 cpi r24, 0x02 ; 2 + 3d50: 40 f0 brcs .+16 ; 0x3d62 <__gesf2+0x56> + 3d52: 89 89 ldd r24, Y+17 ; 0x11 + 3d54: 82 30 cpi r24, 0x02 ; 2 + 3d56: 28 f0 brcs .+10 ; 0x3d62 <__gesf2+0x56> + 3d58: c8 01 movw r24, r16 + 3d5a: b7 01 movw r22, r14 + 3d5c: 0e 94 a1 21 call 0x4342 ; 0x4342 <__fpcmp_parts_f> + 3d60: 01 c0 rjmp .+2 ; 0x3d64 <__gesf2+0x58> + 3d62: 8f ef ldi r24, 0xFF ; 255 + 3d64: 68 96 adiw r28, 0x18 ; 24 + 3d66: e6 e0 ldi r30, 0x06 ; 6 + 3d68: 0c 94 a5 22 jmp 0x454a ; 0x454a <__epilogue_restores__+0x18> + +00003d6c <__ltsf2>: + 3d6c: a8 e1 ldi r26, 0x18 ; 24 + 3d6e: b0 e0 ldi r27, 0x00 ; 0 + 3d70: ec eb ldi r30, 0xBC ; 188 + 3d72: fe e1 ldi r31, 0x1E ; 30 + 3d74: 0c 94 89 22 jmp 0x4512 ; 0x4512 <__prologue_saves__+0x18> + 3d78: 69 83 std Y+1, r22 ; 0x01 + 3d7a: 7a 83 std Y+2, r23 ; 0x02 + 3d7c: 8b 83 std Y+3, r24 ; 0x03 + 3d7e: 9c 83 std Y+4, r25 ; 0x04 + 3d80: 2d 83 std Y+5, r18 ; 0x05 + 3d82: 3e 83 std Y+6, r19 ; 0x06 + 3d84: 4f 83 std Y+7, r20 ; 0x07 + 3d86: 58 87 std Y+8, r21 ; 0x08 + 3d88: 8e 01 movw r16, r28 + 3d8a: 07 5f subi r16, 0xF7 ; 247 + 3d8c: 1f 4f sbci r17, 0xFF ; 255 + 3d8e: ce 01 movw r24, r28 + 3d90: 01 96 adiw r24, 0x01 ; 1 + 3d92: b8 01 movw r22, r16 + 3d94: 0e 94 38 21 call 0x4270 ; 0x4270 <__unpack_f> + 3d98: 81 e1 ldi r24, 0x11 ; 17 + 3d9a: e8 2e mov r14, r24 + 3d9c: f1 2c mov r15, r1 + 3d9e: ec 0e add r14, r28 + 3da0: fd 1e adc r15, r29 + 3da2: ce 01 movw r24, r28 + 3da4: 05 96 adiw r24, 0x05 ; 5 + 3da6: b7 01 movw r22, r14 + 3da8: 0e 94 38 21 call 0x4270 ; 0x4270 <__unpack_f> + 3dac: 89 85 ldd r24, Y+9 ; 0x09 + 3dae: 82 30 cpi r24, 0x02 ; 2 + 3db0: 40 f0 brcs .+16 ; 0x3dc2 <__ltsf2+0x56> + 3db2: 89 89 ldd r24, Y+17 ; 0x11 + 3db4: 82 30 cpi r24, 0x02 ; 2 + 3db6: 28 f0 brcs .+10 ; 0x3dc2 <__ltsf2+0x56> + 3db8: c8 01 movw r24, r16 + 3dba: b7 01 movw r22, r14 + 3dbc: 0e 94 a1 21 call 0x4342 ; 0x4342 <__fpcmp_parts_f> + 3dc0: 01 c0 rjmp .+2 ; 0x3dc4 <__ltsf2+0x58> + 3dc2: 81 e0 ldi r24, 0x01 ; 1 + 3dc4: 68 96 adiw r28, 0x18 ; 24 + 3dc6: e6 e0 ldi r30, 0x06 ; 6 + 3dc8: 0c 94 a5 22 jmp 0x454a ; 0x454a <__epilogue_restores__+0x18> + +00003dcc <__floatsisf>: + 3dcc: a8 e0 ldi r26, 0x08 ; 8 + 3dce: b0 e0 ldi r27, 0x00 ; 0 + 3dd0: ec ee ldi r30, 0xEC ; 236 + 3dd2: fe e1 ldi r31, 0x1E ; 30 + 3dd4: 0c 94 89 22 jmp 0x4512 ; 0x4512 <__prologue_saves__+0x18> + 3dd8: 7b 01 movw r14, r22 + 3dda: 8c 01 movw r16, r24 + 3ddc: 83 e0 ldi r24, 0x03 ; 3 + 3dde: 89 83 std Y+1, r24 ; 0x01 + 3de0: d8 01 movw r26, r16 + 3de2: c7 01 movw r24, r14 + 3de4: 88 27 eor r24, r24 + 3de6: b7 fd sbrc r27, 7 + 3de8: 83 95 inc r24 + 3dea: 99 27 eor r25, r25 + 3dec: aa 27 eor r26, r26 + 3dee: bb 27 eor r27, r27 + 3df0: 28 2f mov r18, r24 + 3df2: 8a 83 std Y+2, r24 ; 0x02 + 3df4: e1 14 cp r14, r1 + 3df6: f1 04 cpc r15, r1 + 3df8: 01 05 cpc r16, r1 + 3dfa: 11 05 cpc r17, r1 + 3dfc: 19 f4 brne .+6 ; 0x3e04 <__floatsisf+0x38> + 3dfe: 82 e0 ldi r24, 0x02 ; 2 + 3e00: 89 83 std Y+1, r24 ; 0x01 + 3e02: 37 c0 rjmp .+110 ; 0x3e72 <__floatsisf+0xa6> + 3e04: 8e e1 ldi r24, 0x1E ; 30 + 3e06: 90 e0 ldi r25, 0x00 ; 0 + 3e08: 9c 83 std Y+4, r25 ; 0x04 + 3e0a: 8b 83 std Y+3, r24 ; 0x03 + 3e0c: 22 23 and r18, r18 + 3e0e: 89 f0 breq .+34 ; 0x3e32 <__floatsisf+0x66> + 3e10: 80 e0 ldi r24, 0x00 ; 0 + 3e12: e8 16 cp r14, r24 + 3e14: 80 e0 ldi r24, 0x00 ; 0 + 3e16: f8 06 cpc r15, r24 + 3e18: 80 e0 ldi r24, 0x00 ; 0 + 3e1a: 08 07 cpc r16, r24 + 3e1c: 80 e8 ldi r24, 0x80 ; 128 + 3e1e: 18 07 cpc r17, r24 + 3e20: 69 f1 breq .+90 ; 0x3e7c <__floatsisf+0xb0> + 3e22: 10 95 com r17 + 3e24: 00 95 com r16 + 3e26: f0 94 com r15 + 3e28: e0 94 com r14 + 3e2a: e1 1c adc r14, r1 + 3e2c: f1 1c adc r15, r1 + 3e2e: 01 1d adc r16, r1 + 3e30: 11 1d adc r17, r1 + 3e32: ed 82 std Y+5, r14 ; 0x05 + 3e34: fe 82 std Y+6, r15 ; 0x06 + 3e36: 0f 83 std Y+7, r16 ; 0x07 + 3e38: 18 87 std Y+8, r17 ; 0x08 + 3e3a: c8 01 movw r24, r16 + 3e3c: b7 01 movw r22, r14 + 3e3e: 0e 94 10 20 call 0x4020 ; 0x4020 <__clzsi2> + 3e42: 9c 01 movw r18, r24 + 3e44: 21 50 subi r18, 0x01 ; 1 + 3e46: 30 40 sbci r19, 0x00 ; 0 + 3e48: 12 16 cp r1, r18 + 3e4a: 13 06 cpc r1, r19 + 3e4c: 94 f4 brge .+36 ; 0x3e72 <__floatsisf+0xa6> + 3e4e: 02 2e mov r0, r18 + 3e50: 04 c0 rjmp .+8 ; 0x3e5a <__floatsisf+0x8e> + 3e52: ee 0c add r14, r14 + 3e54: ff 1c adc r15, r15 + 3e56: 00 1f adc r16, r16 + 3e58: 11 1f adc r17, r17 + 3e5a: 0a 94 dec r0 + 3e5c: d2 f7 brpl .-12 ; 0x3e52 <__floatsisf+0x86> + 3e5e: ed 82 std Y+5, r14 ; 0x05 + 3e60: fe 82 std Y+6, r15 ; 0x06 + 3e62: 0f 83 std Y+7, r16 ; 0x07 + 3e64: 18 87 std Y+8, r17 ; 0x08 + 3e66: 8e e1 ldi r24, 0x1E ; 30 + 3e68: 90 e0 ldi r25, 0x00 ; 0 + 3e6a: 82 1b sub r24, r18 + 3e6c: 93 0b sbc r25, r19 + 3e6e: 9c 83 std Y+4, r25 ; 0x04 + 3e70: 8b 83 std Y+3, r24 ; 0x03 + 3e72: ce 01 movw r24, r28 + 3e74: 01 96 adiw r24, 0x01 ; 1 + 3e76: 0e 94 6a 20 call 0x40d4 ; 0x40d4 <__pack_f> + 3e7a: 04 c0 rjmp .+8 ; 0x3e84 <__floatsisf+0xb8> + 3e7c: 60 e0 ldi r22, 0x00 ; 0 + 3e7e: 70 e0 ldi r23, 0x00 ; 0 + 3e80: 80 e0 ldi r24, 0x00 ; 0 + 3e82: 9f ec ldi r25, 0xCF ; 207 + 3e84: 28 96 adiw r28, 0x08 ; 8 + 3e86: e6 e0 ldi r30, 0x06 ; 6 + 3e88: 0c 94 a5 22 jmp 0x454a ; 0x454a <__epilogue_restores__+0x18> + +00003e8c <__fixsfsi>: + 3e8c: ac e0 ldi r26, 0x0C ; 12 + 3e8e: b0 e0 ldi r27, 0x00 ; 0 + 3e90: ec e4 ldi r30, 0x4C ; 76 + 3e92: ff e1 ldi r31, 0x1F ; 31 + 3e94: 0c 94 8d 22 jmp 0x451a ; 0x451a <__prologue_saves__+0x20> + 3e98: 69 83 std Y+1, r22 ; 0x01 + 3e9a: 7a 83 std Y+2, r23 ; 0x02 + 3e9c: 8b 83 std Y+3, r24 ; 0x03 + 3e9e: 9c 83 std Y+4, r25 ; 0x04 + 3ea0: ce 01 movw r24, r28 + 3ea2: 01 96 adiw r24, 0x01 ; 1 + 3ea4: be 01 movw r22, r28 + 3ea6: 6b 5f subi r22, 0xFB ; 251 + 3ea8: 7f 4f sbci r23, 0xFF ; 255 + 3eaa: 0e 94 38 21 call 0x4270 ; 0x4270 <__unpack_f> + 3eae: 8d 81 ldd r24, Y+5 ; 0x05 + 3eb0: 82 30 cpi r24, 0x02 ; 2 + 3eb2: 81 f1 breq .+96 ; 0x3f14 <__fixsfsi+0x88> + 3eb4: 82 30 cpi r24, 0x02 ; 2 + 3eb6: 70 f1 brcs .+92 ; 0x3f14 <__fixsfsi+0x88> + 3eb8: 84 30 cpi r24, 0x04 ; 4 + 3eba: 21 f4 brne .+8 ; 0x3ec4 <__fixsfsi+0x38> + 3ebc: 8e 81 ldd r24, Y+6 ; 0x06 + 3ebe: 88 23 and r24, r24 + 3ec0: 69 f1 breq .+90 ; 0x3f1c <__fixsfsi+0x90> + 3ec2: 0a c0 rjmp .+20 ; 0x3ed8 <__fixsfsi+0x4c> + 3ec4: 2f 81 ldd r18, Y+7 ; 0x07 + 3ec6: 38 85 ldd r19, Y+8 ; 0x08 + 3ec8: 37 fd sbrc r19, 7 + 3eca: 24 c0 rjmp .+72 ; 0x3f14 <__fixsfsi+0x88> + 3ecc: 6e 81 ldd r22, Y+6 ; 0x06 + 3ece: 2f 31 cpi r18, 0x1F ; 31 + 3ed0: 31 05 cpc r19, r1 + 3ed2: 3c f0 brlt .+14 ; 0x3ee2 <__fixsfsi+0x56> + 3ed4: 66 23 and r22, r22 + 3ed6: 11 f1 breq .+68 ; 0x3f1c <__fixsfsi+0x90> + 3ed8: 20 e0 ldi r18, 0x00 ; 0 + 3eda: 30 e0 ldi r19, 0x00 ; 0 + 3edc: 40 e0 ldi r20, 0x00 ; 0 + 3ede: 50 e8 ldi r21, 0x80 ; 128 + 3ee0: 21 c0 rjmp .+66 ; 0x3f24 <__fixsfsi+0x98> + 3ee2: 8e e1 ldi r24, 0x1E ; 30 + 3ee4: 90 e0 ldi r25, 0x00 ; 0 + 3ee6: 82 1b sub r24, r18 + 3ee8: 93 0b sbc r25, r19 + 3eea: 29 85 ldd r18, Y+9 ; 0x09 + 3eec: 3a 85 ldd r19, Y+10 ; 0x0a + 3eee: 4b 85 ldd r20, Y+11 ; 0x0b + 3ef0: 5c 85 ldd r21, Y+12 ; 0x0c + 3ef2: 04 c0 rjmp .+8 ; 0x3efc <__fixsfsi+0x70> + 3ef4: 56 95 lsr r21 + 3ef6: 47 95 ror r20 + 3ef8: 37 95 ror r19 + 3efa: 27 95 ror r18 + 3efc: 8a 95 dec r24 + 3efe: d2 f7 brpl .-12 ; 0x3ef4 <__fixsfsi+0x68> + 3f00: 66 23 and r22, r22 + 3f02: 81 f0 breq .+32 ; 0x3f24 <__fixsfsi+0x98> + 3f04: 50 95 com r21 + 3f06: 40 95 com r20 + 3f08: 30 95 com r19 + 3f0a: 21 95 neg r18 + 3f0c: 3f 4f sbci r19, 0xFF ; 255 + 3f0e: 4f 4f sbci r20, 0xFF ; 255 + 3f10: 5f 4f sbci r21, 0xFF ; 255 + 3f12: 08 c0 rjmp .+16 ; 0x3f24 <__fixsfsi+0x98> + 3f14: 20 e0 ldi r18, 0x00 ; 0 + 3f16: 30 e0 ldi r19, 0x00 ; 0 + 3f18: a9 01 movw r20, r18 + 3f1a: 04 c0 rjmp .+8 ; 0x3f24 <__fixsfsi+0x98> + 3f1c: 2f ef ldi r18, 0xFF ; 255 + 3f1e: 3f ef ldi r19, 0xFF ; 255 + 3f20: 4f ef ldi r20, 0xFF ; 255 + 3f22: 5f e7 ldi r21, 0x7F ; 127 + 3f24: b9 01 movw r22, r18 + 3f26: ca 01 movw r24, r20 + 3f28: 2c 96 adiw r28, 0x0c ; 12 + 3f2a: e2 e0 ldi r30, 0x02 ; 2 + 3f2c: 0c 94 a9 22 jmp 0x4552 ; 0x4552 <__epilogue_restores__+0x20> + +00003f30 <__floatunsisf>: + 3f30: a8 e0 ldi r26, 0x08 ; 8 + 3f32: b0 e0 ldi r27, 0x00 ; 0 + 3f34: ee e9 ldi r30, 0x9E ; 158 + 3f36: ff e1 ldi r31, 0x1F ; 31 + 3f38: 0c 94 87 22 jmp 0x450e ; 0x450e <__prologue_saves__+0x14> + 3f3c: 7b 01 movw r14, r22 + 3f3e: 8c 01 movw r16, r24 + 3f40: 1a 82 std Y+2, r1 ; 0x02 + 3f42: 61 15 cp r22, r1 + 3f44: 71 05 cpc r23, r1 + 3f46: 81 05 cpc r24, r1 + 3f48: 91 05 cpc r25, r1 + 3f4a: 19 f4 brne .+6 ; 0x3f52 <__floatunsisf+0x22> + 3f4c: 82 e0 ldi r24, 0x02 ; 2 + 3f4e: 89 83 std Y+1, r24 ; 0x01 + 3f50: 5f c0 rjmp .+190 ; 0x4010 <__floatunsisf+0xe0> + 3f52: 83 e0 ldi r24, 0x03 ; 3 + 3f54: 89 83 std Y+1, r24 ; 0x01 + 3f56: 8e e1 ldi r24, 0x1E ; 30 + 3f58: c8 2e mov r12, r24 + 3f5a: d1 2c mov r13, r1 + 3f5c: dc 82 std Y+4, r13 ; 0x04 + 3f5e: cb 82 std Y+3, r12 ; 0x03 + 3f60: ed 82 std Y+5, r14 ; 0x05 + 3f62: fe 82 std Y+6, r15 ; 0x06 + 3f64: 0f 83 std Y+7, r16 ; 0x07 + 3f66: 18 87 std Y+8, r17 ; 0x08 + 3f68: c8 01 movw r24, r16 + 3f6a: b7 01 movw r22, r14 + 3f6c: 0e 94 10 20 call 0x4020 ; 0x4020 <__clzsi2> + 3f70: fc 01 movw r30, r24 + 3f72: 31 97 sbiw r30, 0x01 ; 1 + 3f74: f7 ff sbrs r31, 7 + 3f76: 3a c0 rjmp .+116 ; 0x3fec <__floatunsisf+0xbc> + 3f78: aa 27 eor r26, r26 + 3f7a: bb 27 eor r27, r27 + 3f7c: ae 1b sub r26, r30 + 3f7e: bf 0b sbc r27, r31 + 3f80: 21 e0 ldi r18, 0x01 ; 1 + 3f82: 30 e0 ldi r19, 0x00 ; 0 + 3f84: 40 e0 ldi r20, 0x00 ; 0 + 3f86: 50 e0 ldi r21, 0x00 ; 0 + 3f88: 0a 2e mov r0, r26 + 3f8a: 04 c0 rjmp .+8 ; 0x3f94 <__floatunsisf+0x64> + 3f8c: 22 0f add r18, r18 + 3f8e: 33 1f adc r19, r19 + 3f90: 44 1f adc r20, r20 + 3f92: 55 1f adc r21, r21 + 3f94: 0a 94 dec r0 + 3f96: d2 f7 brpl .-12 ; 0x3f8c <__floatunsisf+0x5c> + 3f98: 21 50 subi r18, 0x01 ; 1 + 3f9a: 30 40 sbci r19, 0x00 ; 0 + 3f9c: 40 40 sbci r20, 0x00 ; 0 + 3f9e: 50 40 sbci r21, 0x00 ; 0 + 3fa0: 2e 21 and r18, r14 + 3fa2: 3f 21 and r19, r15 + 3fa4: 40 23 and r20, r16 + 3fa6: 51 23 and r21, r17 + 3fa8: 61 e0 ldi r22, 0x01 ; 1 + 3faa: 70 e0 ldi r23, 0x00 ; 0 + 3fac: 80 e0 ldi r24, 0x00 ; 0 + 3fae: 90 e0 ldi r25, 0x00 ; 0 + 3fb0: 21 15 cp r18, r1 + 3fb2: 31 05 cpc r19, r1 + 3fb4: 41 05 cpc r20, r1 + 3fb6: 51 05 cpc r21, r1 + 3fb8: 19 f4 brne .+6 ; 0x3fc0 <__floatunsisf+0x90> + 3fba: 60 e0 ldi r22, 0x00 ; 0 + 3fbc: 70 e0 ldi r23, 0x00 ; 0 + 3fbe: cb 01 movw r24, r22 + 3fc0: 04 c0 rjmp .+8 ; 0x3fca <__floatunsisf+0x9a> + 3fc2: 16 95 lsr r17 + 3fc4: 07 95 ror r16 + 3fc6: f7 94 ror r15 + 3fc8: e7 94 ror r14 + 3fca: aa 95 dec r26 + 3fcc: d2 f7 brpl .-12 ; 0x3fc2 <__floatunsisf+0x92> + 3fce: e6 2a or r14, r22 + 3fd0: f7 2a or r15, r23 + 3fd2: 08 2b or r16, r24 + 3fd4: 19 2b or r17, r25 + 3fd6: ed 82 std Y+5, r14 ; 0x05 + 3fd8: fe 82 std Y+6, r15 ; 0x06 + 3fda: 0f 83 std Y+7, r16 ; 0x07 + 3fdc: 18 87 std Y+8, r17 ; 0x08 + 3fde: 8e e1 ldi r24, 0x1E ; 30 + 3fe0: 90 e0 ldi r25, 0x00 ; 0 + 3fe2: 8e 1b sub r24, r30 + 3fe4: 9f 0b sbc r25, r31 + 3fe6: 9c 83 std Y+4, r25 ; 0x04 + 3fe8: 8b 83 std Y+3, r24 ; 0x03 + 3fea: 12 c0 rjmp .+36 ; 0x4010 <__floatunsisf+0xe0> + 3fec: 30 97 sbiw r30, 0x00 ; 0 + 3fee: 81 f0 breq .+32 ; 0x4010 <__floatunsisf+0xe0> + 3ff0: 0e 2e mov r0, r30 + 3ff2: 04 c0 rjmp .+8 ; 0x3ffc <__floatunsisf+0xcc> + 3ff4: ee 0c add r14, r14 + 3ff6: ff 1c adc r15, r15 + 3ff8: 00 1f adc r16, r16 + 3ffa: 11 1f adc r17, r17 + 3ffc: 0a 94 dec r0 + 3ffe: d2 f7 brpl .-12 ; 0x3ff4 <__floatunsisf+0xc4> + 4000: ed 82 std Y+5, r14 ; 0x05 + 4002: fe 82 std Y+6, r15 ; 0x06 + 4004: 0f 83 std Y+7, r16 ; 0x07 + 4006: 18 87 std Y+8, r17 ; 0x08 + 4008: ce 1a sub r12, r30 + 400a: df 0a sbc r13, r31 + 400c: dc 82 std Y+4, r13 ; 0x04 + 400e: cb 82 std Y+3, r12 ; 0x03 + 4010: ce 01 movw r24, r28 + 4012: 01 96 adiw r24, 0x01 ; 1 + 4014: 0e 94 6a 20 call 0x40d4 ; 0x40d4 <__pack_f> + 4018: 28 96 adiw r28, 0x08 ; 8 + 401a: e8 e0 ldi r30, 0x08 ; 8 + 401c: 0c 94 a3 22 jmp 0x4546 ; 0x4546 <__epilogue_restores__+0x14> + +00004020 <__clzsi2>: + 4020: af 92 push r10 + 4022: bf 92 push r11 + 4024: cf 92 push r12 + 4026: df 92 push r13 + 4028: ef 92 push r14 + 402a: ff 92 push r15 + 402c: 0f 93 push r16 + 402e: 1f 93 push r17 + 4030: 7b 01 movw r14, r22 + 4032: 8c 01 movw r16, r24 + 4034: 80 e0 ldi r24, 0x00 ; 0 + 4036: e8 16 cp r14, r24 + 4038: 80 e0 ldi r24, 0x00 ; 0 + 403a: f8 06 cpc r15, r24 + 403c: 81 e0 ldi r24, 0x01 ; 1 + 403e: 08 07 cpc r16, r24 + 4040: 80 e0 ldi r24, 0x00 ; 0 + 4042: 18 07 cpc r17, r24 + 4044: 58 f4 brcc .+22 ; 0x405c <__clzsi2+0x3c> + 4046: ef ef ldi r30, 0xFF ; 255 + 4048: ee 16 cp r14, r30 + 404a: f1 04 cpc r15, r1 + 404c: 01 05 cpc r16, r1 + 404e: 11 05 cpc r17, r1 + 4050: 09 f0 breq .+2 ; 0x4054 <__clzsi2+0x34> + 4052: 90 f4 brcc .+36 ; 0x4078 <__clzsi2+0x58> + 4054: 80 e0 ldi r24, 0x00 ; 0 + 4056: 90 e0 ldi r25, 0x00 ; 0 + 4058: dc 01 movw r26, r24 + 405a: 17 c0 rjmp .+46 ; 0x408a <__clzsi2+0x6a> + 405c: f0 e0 ldi r31, 0x00 ; 0 + 405e: ef 16 cp r14, r31 + 4060: f0 e0 ldi r31, 0x00 ; 0 + 4062: ff 06 cpc r15, r31 + 4064: f0 e0 ldi r31, 0x00 ; 0 + 4066: 0f 07 cpc r16, r31 + 4068: f1 e0 ldi r31, 0x01 ; 1 + 406a: 1f 07 cpc r17, r31 + 406c: 50 f4 brcc .+20 ; 0x4082 <__clzsi2+0x62> + 406e: 80 e1 ldi r24, 0x10 ; 16 + 4070: 90 e0 ldi r25, 0x00 ; 0 + 4072: a0 e0 ldi r26, 0x00 ; 0 + 4074: b0 e0 ldi r27, 0x00 ; 0 + 4076: 09 c0 rjmp .+18 ; 0x408a <__clzsi2+0x6a> + 4078: 88 e0 ldi r24, 0x08 ; 8 + 407a: 90 e0 ldi r25, 0x00 ; 0 + 407c: a0 e0 ldi r26, 0x00 ; 0 + 407e: b0 e0 ldi r27, 0x00 ; 0 + 4080: 04 c0 rjmp .+8 ; 0x408a <__clzsi2+0x6a> + 4082: 88 e1 ldi r24, 0x18 ; 24 + 4084: 90 e0 ldi r25, 0x00 ; 0 + 4086: a0 e0 ldi r26, 0x00 ; 0 + 4088: b0 e0 ldi r27, 0x00 ; 0 + 408a: 20 e2 ldi r18, 0x20 ; 32 + 408c: 30 e0 ldi r19, 0x00 ; 0 + 408e: 40 e0 ldi r20, 0x00 ; 0 + 4090: 50 e0 ldi r21, 0x00 ; 0 + 4092: 28 1b sub r18, r24 + 4094: 39 0b sbc r19, r25 + 4096: 4a 0b sbc r20, r26 + 4098: 5b 0b sbc r21, r27 + 409a: 57 01 movw r10, r14 + 409c: 68 01 movw r12, r16 + 409e: 04 c0 rjmp .+8 ; 0x40a8 <__clzsi2+0x88> + 40a0: d6 94 lsr r13 + 40a2: c7 94 ror r12 + 40a4: b7 94 ror r11 + 40a6: a7 94 ror r10 + 40a8: 8a 95 dec r24 + 40aa: d2 f7 brpl .-12 ; 0x40a0 <__clzsi2+0x80> + 40ac: d6 01 movw r26, r12 + 40ae: c5 01 movw r24, r10 + 40b0: 8a 54 subi r24, 0x4A ; 74 + 40b2: 9e 4f sbci r25, 0xFE ; 254 + 40b4: fc 01 movw r30, r24 + 40b6: 80 81 ld r24, Z + 40b8: 28 1b sub r18, r24 + 40ba: 31 09 sbc r19, r1 + 40bc: 41 09 sbc r20, r1 + 40be: 51 09 sbc r21, r1 + 40c0: c9 01 movw r24, r18 + 40c2: 1f 91 pop r17 + 40c4: 0f 91 pop r16 + 40c6: ff 90 pop r15 + 40c8: ef 90 pop r14 + 40ca: df 90 pop r13 + 40cc: cf 90 pop r12 + 40ce: bf 90 pop r11 + 40d0: af 90 pop r10 + 40d2: 08 95 ret + +000040d4 <__pack_f>: + 40d4: ef 92 push r14 + 40d6: ff 92 push r15 + 40d8: 0f 93 push r16 + 40da: 1f 93 push r17 + 40dc: cf 93 push r28 + 40de: df 93 push r29 + 40e0: fc 01 movw r30, r24 + 40e2: 24 81 ldd r18, Z+4 ; 0x04 + 40e4: 35 81 ldd r19, Z+5 ; 0x05 + 40e6: 46 81 ldd r20, Z+6 ; 0x06 + 40e8: 57 81 ldd r21, Z+7 ; 0x07 + 40ea: 61 81 ldd r22, Z+1 ; 0x01 + 40ec: 80 81 ld r24, Z + 40ee: 82 30 cpi r24, 0x02 ; 2 + 40f0: 20 f4 brcc .+8 ; 0x40fa <__pack_f+0x26> + 40f2: 40 61 ori r20, 0x10 ; 16 + 40f4: ef ef ldi r30, 0xFF ; 255 + 40f6: f0 e0 ldi r31, 0x00 ; 0 + 40f8: a3 c0 rjmp .+326 ; 0x4240 <__pack_f+0x16c> + 40fa: 84 30 cpi r24, 0x04 ; 4 + 40fc: 09 f4 brne .+2 ; 0x4100 <__pack_f+0x2c> + 40fe: 9b c0 rjmp .+310 ; 0x4236 <__pack_f+0x162> + 4100: 82 30 cpi r24, 0x02 ; 2 + 4102: 09 f4 brne .+2 ; 0x4106 <__pack_f+0x32> + 4104: 92 c0 rjmp .+292 ; 0x422a <__pack_f+0x156> + 4106: 21 15 cp r18, r1 + 4108: 31 05 cpc r19, r1 + 410a: 41 05 cpc r20, r1 + 410c: 51 05 cpc r21, r1 + 410e: 09 f4 brne .+2 ; 0x4112 <__pack_f+0x3e> + 4110: 8f c0 rjmp .+286 ; 0x4230 <__pack_f+0x15c> + 4112: 02 80 ldd r0, Z+2 ; 0x02 + 4114: f3 81 ldd r31, Z+3 ; 0x03 + 4116: e0 2d mov r30, r0 + 4118: 8f ef ldi r24, 0xFF ; 255 + 411a: e2 38 cpi r30, 0x82 ; 130 + 411c: f8 07 cpc r31, r24 + 411e: 0c f0 brlt .+2 ; 0x4122 <__pack_f+0x4e> + 4120: 5a c0 rjmp .+180 ; 0x41d6 <__pack_f+0x102> + 4122: c2 e8 ldi r28, 0x82 ; 130 + 4124: df ef ldi r29, 0xFF ; 255 + 4126: ce 1b sub r28, r30 + 4128: df 0b sbc r29, r31 + 412a: ca 31 cpi r28, 0x1A ; 26 + 412c: d1 05 cpc r29, r1 + 412e: 6c f5 brge .+90 ; 0x418a <__pack_f+0xb6> + 4130: 79 01 movw r14, r18 + 4132: 8a 01 movw r16, r20 + 4134: 0c 2e mov r0, r28 + 4136: 04 c0 rjmp .+8 ; 0x4140 <__pack_f+0x6c> + 4138: 16 95 lsr r17 + 413a: 07 95 ror r16 + 413c: f7 94 ror r15 + 413e: e7 94 ror r14 + 4140: 0a 94 dec r0 + 4142: d2 f7 brpl .-12 ; 0x4138 <__pack_f+0x64> + 4144: 81 e0 ldi r24, 0x01 ; 1 + 4146: 90 e0 ldi r25, 0x00 ; 0 + 4148: a0 e0 ldi r26, 0x00 ; 0 + 414a: b0 e0 ldi r27, 0x00 ; 0 + 414c: 0c 2e mov r0, r28 + 414e: 04 c0 rjmp .+8 ; 0x4158 <__pack_f+0x84> + 4150: 88 0f add r24, r24 + 4152: 99 1f adc r25, r25 + 4154: aa 1f adc r26, r26 + 4156: bb 1f adc r27, r27 + 4158: 0a 94 dec r0 + 415a: d2 f7 brpl .-12 ; 0x4150 <__pack_f+0x7c> + 415c: 01 97 sbiw r24, 0x01 ; 1 + 415e: a1 09 sbc r26, r1 + 4160: b1 09 sbc r27, r1 + 4162: 82 23 and r24, r18 + 4164: 93 23 and r25, r19 + 4166: a4 23 and r26, r20 + 4168: b5 23 and r27, r21 + 416a: 21 e0 ldi r18, 0x01 ; 1 + 416c: 30 e0 ldi r19, 0x00 ; 0 + 416e: 40 e0 ldi r20, 0x00 ; 0 + 4170: 50 e0 ldi r21, 0x00 ; 0 + 4172: 00 97 sbiw r24, 0x00 ; 0 + 4174: a1 05 cpc r26, r1 + 4176: b1 05 cpc r27, r1 + 4178: 19 f4 brne .+6 ; 0x4180 <__pack_f+0xac> + 417a: 20 e0 ldi r18, 0x00 ; 0 + 417c: 30 e0 ldi r19, 0x00 ; 0 + 417e: a9 01 movw r20, r18 + 4180: 2e 29 or r18, r14 + 4182: 3f 29 or r19, r15 + 4184: 40 2b or r20, r16 + 4186: 51 2b or r21, r17 + 4188: 03 c0 rjmp .+6 ; 0x4190 <__pack_f+0xbc> + 418a: 20 e0 ldi r18, 0x00 ; 0 + 418c: 30 e0 ldi r19, 0x00 ; 0 + 418e: a9 01 movw r20, r18 + 4190: da 01 movw r26, r20 + 4192: c9 01 movw r24, r18 + 4194: 8f 77 andi r24, 0x7F ; 127 + 4196: 90 70 andi r25, 0x00 ; 0 + 4198: a0 70 andi r26, 0x00 ; 0 + 419a: b0 70 andi r27, 0x00 ; 0 + 419c: 80 34 cpi r24, 0x40 ; 64 + 419e: 91 05 cpc r25, r1 + 41a0: a1 05 cpc r26, r1 + 41a2: b1 05 cpc r27, r1 + 41a4: 39 f4 brne .+14 ; 0x41b4 <__pack_f+0xe0> + 41a6: 27 ff sbrs r18, 7 + 41a8: 09 c0 rjmp .+18 ; 0x41bc <__pack_f+0xe8> + 41aa: 20 5c subi r18, 0xC0 ; 192 + 41ac: 3f 4f sbci r19, 0xFF ; 255 + 41ae: 4f 4f sbci r20, 0xFF ; 255 + 41b0: 5f 4f sbci r21, 0xFF ; 255 + 41b2: 04 c0 rjmp .+8 ; 0x41bc <__pack_f+0xe8> + 41b4: 21 5c subi r18, 0xC1 ; 193 + 41b6: 3f 4f sbci r19, 0xFF ; 255 + 41b8: 4f 4f sbci r20, 0xFF ; 255 + 41ba: 5f 4f sbci r21, 0xFF ; 255 + 41bc: e1 e0 ldi r30, 0x01 ; 1 + 41be: f0 e0 ldi r31, 0x00 ; 0 + 41c0: 20 30 cpi r18, 0x00 ; 0 + 41c2: 80 e0 ldi r24, 0x00 ; 0 + 41c4: 38 07 cpc r19, r24 + 41c6: 80 e0 ldi r24, 0x00 ; 0 + 41c8: 48 07 cpc r20, r24 + 41ca: 80 e4 ldi r24, 0x40 ; 64 + 41cc: 58 07 cpc r21, r24 + 41ce: 28 f5 brcc .+74 ; 0x421a <__pack_f+0x146> + 41d0: e0 e0 ldi r30, 0x00 ; 0 + 41d2: f0 e0 ldi r31, 0x00 ; 0 + 41d4: 22 c0 rjmp .+68 ; 0x421a <__pack_f+0x146> + 41d6: e0 38 cpi r30, 0x80 ; 128 + 41d8: f1 05 cpc r31, r1 + 41da: 6c f5 brge .+90 ; 0x4236 <__pack_f+0x162> + 41dc: e1 58 subi r30, 0x81 ; 129 + 41de: ff 4f sbci r31, 0xFF ; 255 + 41e0: da 01 movw r26, r20 + 41e2: c9 01 movw r24, r18 + 41e4: 8f 77 andi r24, 0x7F ; 127 + 41e6: 90 70 andi r25, 0x00 ; 0 + 41e8: a0 70 andi r26, 0x00 ; 0 + 41ea: b0 70 andi r27, 0x00 ; 0 + 41ec: 80 34 cpi r24, 0x40 ; 64 + 41ee: 91 05 cpc r25, r1 + 41f0: a1 05 cpc r26, r1 + 41f2: b1 05 cpc r27, r1 + 41f4: 39 f4 brne .+14 ; 0x4204 <__pack_f+0x130> + 41f6: 27 ff sbrs r18, 7 + 41f8: 09 c0 rjmp .+18 ; 0x420c <__pack_f+0x138> + 41fa: 20 5c subi r18, 0xC0 ; 192 + 41fc: 3f 4f sbci r19, 0xFF ; 255 + 41fe: 4f 4f sbci r20, 0xFF ; 255 + 4200: 5f 4f sbci r21, 0xFF ; 255 + 4202: 04 c0 rjmp .+8 ; 0x420c <__pack_f+0x138> + 4204: 21 5c subi r18, 0xC1 ; 193 + 4206: 3f 4f sbci r19, 0xFF ; 255 + 4208: 4f 4f sbci r20, 0xFF ; 255 + 420a: 5f 4f sbci r21, 0xFF ; 255 + 420c: 57 ff sbrs r21, 7 + 420e: 05 c0 rjmp .+10 ; 0x421a <__pack_f+0x146> + 4210: 56 95 lsr r21 + 4212: 47 95 ror r20 + 4214: 37 95 ror r19 + 4216: 27 95 ror r18 + 4218: 31 96 adiw r30, 0x01 ; 1 + 421a: 87 e0 ldi r24, 0x07 ; 7 + 421c: 56 95 lsr r21 + 421e: 47 95 ror r20 + 4220: 37 95 ror r19 + 4222: 27 95 ror r18 + 4224: 8a 95 dec r24 + 4226: d1 f7 brne .-12 ; 0x421c <__pack_f+0x148> + 4228: 0b c0 rjmp .+22 ; 0x4240 <__pack_f+0x16c> + 422a: e0 e0 ldi r30, 0x00 ; 0 + 422c: f0 e0 ldi r31, 0x00 ; 0 + 422e: 05 c0 rjmp .+10 ; 0x423a <__pack_f+0x166> + 4230: e0 e0 ldi r30, 0x00 ; 0 + 4232: f0 e0 ldi r31, 0x00 ; 0 + 4234: 05 c0 rjmp .+10 ; 0x4240 <__pack_f+0x16c> + 4236: ef ef ldi r30, 0xFF ; 255 + 4238: f0 e0 ldi r31, 0x00 ; 0 + 423a: 20 e0 ldi r18, 0x00 ; 0 + 423c: 30 e0 ldi r19, 0x00 ; 0 + 423e: a9 01 movw r20, r18 + 4240: 8e 2f mov r24, r30 + 4242: 87 95 ror r24 + 4244: 88 27 eor r24, r24 + 4246: 87 95 ror r24 + 4248: 94 2f mov r25, r20 + 424a: 9f 77 andi r25, 0x7F ; 127 + 424c: 67 95 ror r22 + 424e: 66 27 eor r22, r22 + 4250: 67 95 ror r22 + 4252: e6 95 lsr r30 + 4254: e2 2e mov r14, r18 + 4256: a9 2f mov r26, r25 + 4258: a8 2b or r26, r24 + 425a: fe 2f mov r31, r30 + 425c: f6 2b or r31, r22 + 425e: 62 2f mov r22, r18 + 4260: 73 2f mov r23, r19 + 4262: 8a 2f mov r24, r26 + 4264: 9f 2f mov r25, r31 + 4266: cd b7 in r28, 0x3d ; 61 + 4268: de b7 in r29, 0x3e ; 62 + 426a: e6 e0 ldi r30, 0x06 ; 6 + 426c: 0c 94 a5 22 jmp 0x454a ; 0x454a <__epilogue_restores__+0x18> + +00004270 <__unpack_f>: + 4270: dc 01 movw r26, r24 + 4272: fb 01 movw r30, r22 + 4274: 2c 91 ld r18, X + 4276: 11 96 adiw r26, 0x01 ; 1 + 4278: 3c 91 ld r19, X + 427a: 11 97 sbiw r26, 0x01 ; 1 + 427c: 12 96 adiw r26, 0x02 ; 2 + 427e: 8c 91 ld r24, X + 4280: 12 97 sbiw r26, 0x02 ; 2 + 4282: 48 2f mov r20, r24 + 4284: 4f 77 andi r20, 0x7F ; 127 + 4286: 50 e0 ldi r21, 0x00 ; 0 + 4288: 98 2f mov r25, r24 + 428a: 99 1f adc r25, r25 + 428c: 99 27 eor r25, r25 + 428e: 99 1f adc r25, r25 + 4290: 13 96 adiw r26, 0x03 ; 3 + 4292: 6c 91 ld r22, X + 4294: 13 97 sbiw r26, 0x03 ; 3 + 4296: 86 2f mov r24, r22 + 4298: 88 0f add r24, r24 + 429a: 89 2b or r24, r25 + 429c: 90 e0 ldi r25, 0x00 ; 0 + 429e: 66 1f adc r22, r22 + 42a0: 66 27 eor r22, r22 + 42a2: 66 1f adc r22, r22 + 42a4: 61 83 std Z+1, r22 ; 0x01 + 42a6: 00 97 sbiw r24, 0x00 ; 0 + 42a8: 39 f5 brne .+78 ; 0x42f8 <__unpack_f+0x88> + 42aa: 21 15 cp r18, r1 + 42ac: 31 05 cpc r19, r1 + 42ae: 41 05 cpc r20, r1 + 42b0: 51 05 cpc r21, r1 + 42b2: 11 f4 brne .+4 ; 0x42b8 <__unpack_f+0x48> + 42b4: 82 e0 ldi r24, 0x02 ; 2 + 42b6: 29 c0 rjmp .+82 ; 0x430a <__unpack_f+0x9a> + 42b8: 82 e8 ldi r24, 0x82 ; 130 + 42ba: 9f ef ldi r25, 0xFF ; 255 + 42bc: 93 83 std Z+3, r25 ; 0x03 + 42be: 82 83 std Z+2, r24 ; 0x02 + 42c0: 67 e0 ldi r22, 0x07 ; 7 + 42c2: 22 0f add r18, r18 + 42c4: 33 1f adc r19, r19 + 42c6: 44 1f adc r20, r20 + 42c8: 55 1f adc r21, r21 + 42ca: 6a 95 dec r22 + 42cc: d1 f7 brne .-12 ; 0x42c2 <__unpack_f+0x52> + 42ce: 83 e0 ldi r24, 0x03 ; 3 + 42d0: 80 83 st Z, r24 + 42d2: 09 c0 rjmp .+18 ; 0x42e6 <__unpack_f+0x76> + 42d4: 22 0f add r18, r18 + 42d6: 33 1f adc r19, r19 + 42d8: 44 1f adc r20, r20 + 42da: 55 1f adc r21, r21 + 42dc: 82 81 ldd r24, Z+2 ; 0x02 + 42de: 93 81 ldd r25, Z+3 ; 0x03 + 42e0: 01 97 sbiw r24, 0x01 ; 1 + 42e2: 93 83 std Z+3, r25 ; 0x03 + 42e4: 82 83 std Z+2, r24 ; 0x02 + 42e6: 20 30 cpi r18, 0x00 ; 0 + 42e8: 80 e0 ldi r24, 0x00 ; 0 + 42ea: 38 07 cpc r19, r24 + 42ec: 80 e0 ldi r24, 0x00 ; 0 + 42ee: 48 07 cpc r20, r24 + 42f0: 80 e4 ldi r24, 0x40 ; 64 + 42f2: 58 07 cpc r21, r24 + 42f4: 78 f3 brcs .-34 ; 0x42d4 <__unpack_f+0x64> + 42f6: 20 c0 rjmp .+64 ; 0x4338 <__unpack_f+0xc8> + 42f8: 8f 3f cpi r24, 0xFF ; 255 + 42fa: 91 05 cpc r25, r1 + 42fc: 79 f4 brne .+30 ; 0x431c <__unpack_f+0xac> + 42fe: 21 15 cp r18, r1 + 4300: 31 05 cpc r19, r1 + 4302: 41 05 cpc r20, r1 + 4304: 51 05 cpc r21, r1 + 4306: 19 f4 brne .+6 ; 0x430e <__unpack_f+0x9e> + 4308: 84 e0 ldi r24, 0x04 ; 4 + 430a: 80 83 st Z, r24 + 430c: 08 95 ret + 430e: 44 ff sbrs r20, 4 + 4310: 03 c0 rjmp .+6 ; 0x4318 <__unpack_f+0xa8> + 4312: 81 e0 ldi r24, 0x01 ; 1 + 4314: 80 83 st Z, r24 + 4316: 10 c0 rjmp .+32 ; 0x4338 <__unpack_f+0xc8> + 4318: 10 82 st Z, r1 + 431a: 0e c0 rjmp .+28 ; 0x4338 <__unpack_f+0xc8> + 431c: 8f 57 subi r24, 0x7F ; 127 + 431e: 90 40 sbci r25, 0x00 ; 0 + 4320: 93 83 std Z+3, r25 ; 0x03 + 4322: 82 83 std Z+2, r24 ; 0x02 + 4324: 83 e0 ldi r24, 0x03 ; 3 + 4326: 80 83 st Z, r24 + 4328: 87 e0 ldi r24, 0x07 ; 7 + 432a: 22 0f add r18, r18 + 432c: 33 1f adc r19, r19 + 432e: 44 1f adc r20, r20 + 4330: 55 1f adc r21, r21 + 4332: 8a 95 dec r24 + 4334: d1 f7 brne .-12 ; 0x432a <__unpack_f+0xba> + 4336: 50 64 ori r21, 0x40 ; 64 + 4338: 24 83 std Z+4, r18 ; 0x04 + 433a: 35 83 std Z+5, r19 ; 0x05 + 433c: 46 83 std Z+6, r20 ; 0x06 + 433e: 57 83 std Z+7, r21 ; 0x07 + 4340: 08 95 ret + +00004342 <__fpcmp_parts_f>: + 4342: fc 01 movw r30, r24 + 4344: db 01 movw r26, r22 + 4346: 90 81 ld r25, Z + 4348: 92 30 cpi r25, 0x02 ; 2 + 434a: 08 f4 brcc .+2 ; 0x434e <__fpcmp_parts_f+0xc> + 434c: 49 c0 rjmp .+146 ; 0x43e0 <__fpcmp_parts_f+0x9e> + 434e: 8c 91 ld r24, X + 4350: 82 30 cpi r24, 0x02 ; 2 + 4352: 08 f4 brcc .+2 ; 0x4356 <__fpcmp_parts_f+0x14> + 4354: 45 c0 rjmp .+138 ; 0x43e0 <__fpcmp_parts_f+0x9e> + 4356: 94 30 cpi r25, 0x04 ; 4 + 4358: 51 f4 brne .+20 ; 0x436e <__fpcmp_parts_f+0x2c> + 435a: 61 81 ldd r22, Z+1 ; 0x01 + 435c: 84 30 cpi r24, 0x04 ; 4 + 435e: b1 f5 brne .+108 ; 0x43cc <__fpcmp_parts_f+0x8a> + 4360: 11 96 adiw r26, 0x01 ; 1 + 4362: 2c 91 ld r18, X + 4364: 11 97 sbiw r26, 0x01 ; 1 + 4366: 30 e0 ldi r19, 0x00 ; 0 + 4368: 26 1b sub r18, r22 + 436a: 31 09 sbc r19, r1 + 436c: 41 c0 rjmp .+130 ; 0x43f0 <__fpcmp_parts_f+0xae> + 436e: 84 30 cpi r24, 0x04 ; 4 + 4370: 21 f0 breq .+8 ; 0x437a <__fpcmp_parts_f+0x38> + 4372: 92 30 cpi r25, 0x02 ; 2 + 4374: 41 f4 brne .+16 ; 0x4386 <__fpcmp_parts_f+0x44> + 4376: 82 30 cpi r24, 0x02 ; 2 + 4378: b1 f1 breq .+108 ; 0x43e6 <__fpcmp_parts_f+0xa4> + 437a: 11 96 adiw r26, 0x01 ; 1 + 437c: 8c 91 ld r24, X + 437e: 11 97 sbiw r26, 0x01 ; 1 + 4380: 88 23 and r24, r24 + 4382: a1 f1 breq .+104 ; 0x43ec <__fpcmp_parts_f+0xaa> + 4384: 2d c0 rjmp .+90 ; 0x43e0 <__fpcmp_parts_f+0x9e> + 4386: 61 81 ldd r22, Z+1 ; 0x01 + 4388: 82 30 cpi r24, 0x02 ; 2 + 438a: 01 f1 breq .+64 ; 0x43cc <__fpcmp_parts_f+0x8a> + 438c: 11 96 adiw r26, 0x01 ; 1 + 438e: 8c 91 ld r24, X + 4390: 11 97 sbiw r26, 0x01 ; 1 + 4392: 68 17 cp r22, r24 + 4394: d9 f4 brne .+54 ; 0x43cc <__fpcmp_parts_f+0x8a> + 4396: 22 81 ldd r18, Z+2 ; 0x02 + 4398: 33 81 ldd r19, Z+3 ; 0x03 + 439a: 12 96 adiw r26, 0x02 ; 2 + 439c: 8d 91 ld r24, X+ + 439e: 9c 91 ld r25, X + 43a0: 13 97 sbiw r26, 0x03 ; 3 + 43a2: 82 17 cp r24, r18 + 43a4: 93 07 cpc r25, r19 + 43a6: 94 f0 brlt .+36 ; 0x43cc <__fpcmp_parts_f+0x8a> + 43a8: 28 17 cp r18, r24 + 43aa: 39 07 cpc r19, r25 + 43ac: bc f0 brlt .+46 ; 0x43dc <__fpcmp_parts_f+0x9a> + 43ae: 24 81 ldd r18, Z+4 ; 0x04 + 43b0: 35 81 ldd r19, Z+5 ; 0x05 + 43b2: 46 81 ldd r20, Z+6 ; 0x06 + 43b4: 57 81 ldd r21, Z+7 ; 0x07 + 43b6: 14 96 adiw r26, 0x04 ; 4 + 43b8: 8d 91 ld r24, X+ + 43ba: 9d 91 ld r25, X+ + 43bc: 0d 90 ld r0, X+ + 43be: bc 91 ld r27, X + 43c0: a0 2d mov r26, r0 + 43c2: 82 17 cp r24, r18 + 43c4: 93 07 cpc r25, r19 + 43c6: a4 07 cpc r26, r20 + 43c8: b5 07 cpc r27, r21 + 43ca: 18 f4 brcc .+6 ; 0x43d2 <__fpcmp_parts_f+0x90> + 43cc: 66 23 and r22, r22 + 43ce: 41 f0 breq .+16 ; 0x43e0 <__fpcmp_parts_f+0x9e> + 43d0: 0d c0 rjmp .+26 ; 0x43ec <__fpcmp_parts_f+0xaa> + 43d2: 28 17 cp r18, r24 + 43d4: 39 07 cpc r19, r25 + 43d6: 4a 07 cpc r20, r26 + 43d8: 5b 07 cpc r21, r27 + 43da: 28 f4 brcc .+10 ; 0x43e6 <__fpcmp_parts_f+0xa4> + 43dc: 66 23 and r22, r22 + 43de: 31 f0 breq .+12 ; 0x43ec <__fpcmp_parts_f+0xaa> + 43e0: 21 e0 ldi r18, 0x01 ; 1 + 43e2: 30 e0 ldi r19, 0x00 ; 0 + 43e4: 05 c0 rjmp .+10 ; 0x43f0 <__fpcmp_parts_f+0xae> + 43e6: 20 e0 ldi r18, 0x00 ; 0 + 43e8: 30 e0 ldi r19, 0x00 ; 0 + 43ea: 02 c0 rjmp .+4 ; 0x43f0 <__fpcmp_parts_f+0xae> + 43ec: 2f ef ldi r18, 0xFF ; 255 + 43ee: 3f ef ldi r19, 0xFF ; 255 + 43f0: c9 01 movw r24, r18 + 43f2: 08 95 ret + +000043f4 <__mulsi3>: + 43f4: 62 9f mul r22, r18 + 43f6: d0 01 movw r26, r0 + 43f8: 73 9f mul r23, r19 + 43fa: f0 01 movw r30, r0 + 43fc: 82 9f mul r24, r18 + 43fe: e0 0d add r30, r0 + 4400: f1 1d adc r31, r1 + 4402: 64 9f mul r22, r20 + 4404: e0 0d add r30, r0 + 4406: f1 1d adc r31, r1 + 4408: 92 9f mul r25, r18 + 440a: f0 0d add r31, r0 + 440c: 83 9f mul r24, r19 + 440e: f0 0d add r31, r0 + 4410: 74 9f mul r23, r20 + 4412: f0 0d add r31, r0 + 4414: 65 9f mul r22, r21 + 4416: f0 0d add r31, r0 + 4418: 99 27 eor r25, r25 + 441a: 72 9f mul r23, r18 + 441c: b0 0d add r27, r0 + 441e: e1 1d adc r30, r1 + 4420: f9 1f adc r31, r25 + 4422: 63 9f mul r22, r19 + 4424: b0 0d add r27, r0 + 4426: e1 1d adc r30, r1 + 4428: f9 1f adc r31, r25 + 442a: bd 01 movw r22, r26 + 442c: cf 01 movw r24, r30 + 442e: 11 24 eor r1, r1 + 4430: 08 95 ret + +00004432 <__divmodhi4>: + 4432: 97 fb bst r25, 7 + 4434: 09 2e mov r0, r25 + 4436: 07 26 eor r0, r23 + 4438: 0a d0 rcall .+20 ; 0x444e <__divmodhi4_neg1> + 443a: 77 fd sbrc r23, 7 + 443c: 04 d0 rcall .+8 ; 0x4446 <__divmodhi4_neg2> + 443e: 49 d0 rcall .+146 ; 0x44d2 <__udivmodhi4> + 4440: 06 d0 rcall .+12 ; 0x444e <__divmodhi4_neg1> + 4442: 00 20 and r0, r0 + 4444: 1a f4 brpl .+6 ; 0x444c <__divmodhi4_exit> + +00004446 <__divmodhi4_neg2>: + 4446: 70 95 com r23 + 4448: 61 95 neg r22 + 444a: 7f 4f sbci r23, 0xFF ; 255 + +0000444c <__divmodhi4_exit>: + 444c: 08 95 ret + +0000444e <__divmodhi4_neg1>: + 444e: f6 f7 brtc .-4 ; 0x444c <__divmodhi4_exit> + 4450: 90 95 com r25 + 4452: 81 95 neg r24 + 4454: 9f 4f sbci r25, 0xFF ; 255 + 4456: 08 95 ret + +00004458 <__udivmodsi4>: + 4458: a1 e2 ldi r26, 0x21 ; 33 + 445a: 1a 2e mov r1, r26 + 445c: aa 1b sub r26, r26 + 445e: bb 1b sub r27, r27 + 4460: fd 01 movw r30, r26 + 4462: 0d c0 rjmp .+26 ; 0x447e <__udivmodsi4_ep> + +00004464 <__udivmodsi4_loop>: + 4464: aa 1f adc r26, r26 + 4466: bb 1f adc r27, r27 + 4468: ee 1f adc r30, r30 + 446a: ff 1f adc r31, r31 + 446c: a2 17 cp r26, r18 + 446e: b3 07 cpc r27, r19 + 4470: e4 07 cpc r30, r20 + 4472: f5 07 cpc r31, r21 + 4474: 20 f0 brcs .+8 ; 0x447e <__udivmodsi4_ep> + 4476: a2 1b sub r26, r18 + 4478: b3 0b sbc r27, r19 + 447a: e4 0b sbc r30, r20 + 447c: f5 0b sbc r31, r21 + +0000447e <__udivmodsi4_ep>: + 447e: 66 1f adc r22, r22 + 4480: 77 1f adc r23, r23 + 4482: 88 1f adc r24, r24 + 4484: 99 1f adc r25, r25 + 4486: 1a 94 dec r1 + 4488: 69 f7 brne .-38 ; 0x4464 <__udivmodsi4_loop> + 448a: 60 95 com r22 + 448c: 70 95 com r23 + 448e: 80 95 com r24 + 4490: 90 95 com r25 + 4492: 9b 01 movw r18, r22 + 4494: ac 01 movw r20, r24 + 4496: bd 01 movw r22, r26 + 4498: cf 01 movw r24, r30 + 449a: 08 95 ret + +0000449c <__divmodsi4>: + 449c: 97 fb bst r25, 7 + 449e: 09 2e mov r0, r25 + 44a0: 05 26 eor r0, r21 + 44a2: 0e d0 rcall .+28 ; 0x44c0 <__divmodsi4_neg1> + 44a4: 57 fd sbrc r21, 7 + 44a6: 04 d0 rcall .+8 ; 0x44b0 <__divmodsi4_neg2> + 44a8: d7 df rcall .-82 ; 0x4458 <__udivmodsi4> + 44aa: 0a d0 rcall .+20 ; 0x44c0 <__divmodsi4_neg1> + 44ac: 00 1c adc r0, r0 + 44ae: 38 f4 brcc .+14 ; 0x44be <__divmodsi4_exit> + +000044b0 <__divmodsi4_neg2>: + 44b0: 50 95 com r21 + 44b2: 40 95 com r20 + 44b4: 30 95 com r19 + 44b6: 21 95 neg r18 + 44b8: 3f 4f sbci r19, 0xFF ; 255 + 44ba: 4f 4f sbci r20, 0xFF ; 255 + 44bc: 5f 4f sbci r21, 0xFF ; 255 + +000044be <__divmodsi4_exit>: + 44be: 08 95 ret + +000044c0 <__divmodsi4_neg1>: + 44c0: f6 f7 brtc .-4 ; 0x44be <__divmodsi4_exit> + 44c2: 90 95 com r25 + 44c4: 80 95 com r24 + 44c6: 70 95 com r23 + 44c8: 61 95 neg r22 + 44ca: 7f 4f sbci r23, 0xFF ; 255 + 44cc: 8f 4f sbci r24, 0xFF ; 255 + 44ce: 9f 4f sbci r25, 0xFF ; 255 + 44d0: 08 95 ret + +000044d2 <__udivmodhi4>: + 44d2: aa 1b sub r26, r26 + 44d4: bb 1b sub r27, r27 + 44d6: 51 e1 ldi r21, 0x11 ; 17 + 44d8: 07 c0 rjmp .+14 ; 0x44e8 <__udivmodhi4_ep> + +000044da <__udivmodhi4_loop>: + 44da: aa 1f adc r26, r26 + 44dc: bb 1f adc r27, r27 + 44de: a6 17 cp r26, r22 + 44e0: b7 07 cpc r27, r23 + 44e2: 10 f0 brcs .+4 ; 0x44e8 <__udivmodhi4_ep> + 44e4: a6 1b sub r26, r22 + 44e6: b7 0b sbc r27, r23 + +000044e8 <__udivmodhi4_ep>: + 44e8: 88 1f adc r24, r24 + 44ea: 99 1f adc r25, r25 + 44ec: 5a 95 dec r21 + 44ee: a9 f7 brne .-22 ; 0x44da <__udivmodhi4_loop> + 44f0: 80 95 com r24 + 44f2: 90 95 com r25 + 44f4: bc 01 movw r22, r24 + 44f6: cd 01 movw r24, r26 + 44f8: 08 95 ret + +000044fa <__prologue_saves__>: + 44fa: 2f 92 push r2 + 44fc: 3f 92 push r3 + 44fe: 4f 92 push r4 + 4500: 5f 92 push r5 + 4502: 6f 92 push r6 + 4504: 7f 92 push r7 + 4506: 8f 92 push r8 + 4508: 9f 92 push r9 + 450a: af 92 push r10 + 450c: bf 92 push r11 + 450e: cf 92 push r12 + 4510: df 92 push r13 + 4512: ef 92 push r14 + 4514: ff 92 push r15 + 4516: 0f 93 push r16 + 4518: 1f 93 push r17 + 451a: cf 93 push r28 + 451c: df 93 push r29 + 451e: cd b7 in r28, 0x3d ; 61 + 4520: de b7 in r29, 0x3e ; 62 + 4522: ca 1b sub r28, r26 + 4524: db 0b sbc r29, r27 + 4526: 0f b6 in r0, 0x3f ; 63 + 4528: f8 94 cli + 452a: de bf out 0x3e, r29 ; 62 + 452c: 0f be out 0x3f, r0 ; 63 + 452e: cd bf out 0x3d, r28 ; 61 + 4530: 09 94 ijmp + +00004532 <__epilogue_restores__>: + 4532: 2a 88 ldd r2, Y+18 ; 0x12 + 4534: 39 88 ldd r3, Y+17 ; 0x11 + 4536: 48 88 ldd r4, Y+16 ; 0x10 + 4538: 5f 84 ldd r5, Y+15 ; 0x0f + 453a: 6e 84 ldd r6, Y+14 ; 0x0e + 453c: 7d 84 ldd r7, Y+13 ; 0x0d + 453e: 8c 84 ldd r8, Y+12 ; 0x0c + 4540: 9b 84 ldd r9, Y+11 ; 0x0b + 4542: aa 84 ldd r10, Y+10 ; 0x0a + 4544: b9 84 ldd r11, Y+9 ; 0x09 + 4546: c8 84 ldd r12, Y+8 ; 0x08 + 4548: df 80 ldd r13, Y+7 ; 0x07 + 454a: ee 80 ldd r14, Y+6 ; 0x06 + 454c: fd 80 ldd r15, Y+5 ; 0x05 + 454e: 0c 81 ldd r16, Y+4 ; 0x04 + 4550: 1b 81 ldd r17, Y+3 ; 0x03 + 4552: aa 81 ldd r26, Y+2 ; 0x02 + 4554: b9 81 ldd r27, Y+1 ; 0x01 + 4556: ce 0f add r28, r30 + 4558: d1 1d adc r29, r1 + 455a: 0f b6 in r0, 0x3f ; 63 + 455c: f8 94 cli + 455e: de bf out 0x3e, r29 ; 62 + 4560: 0f be out 0x3f, r0 ; 63 + 4562: cd bf out 0x3d, r28 ; 61 + 4564: ed 01 movw r28, r26 + 4566: 08 95 ret + +00004568 <__tablejump2__>: + 4568: ee 0f add r30, r30 + 456a: ff 1f adc r31, r31 + +0000456c <__tablejump__>: + 456c: 05 90 lpm r0, Z+ + 456e: f4 91 lpm r31, Z+ + 4570: e0 2d mov r30, r0 + 4572: 09 94 ijmp + +00004574 <malloc>: + 4574: cf 93 push r28 + 4576: df 93 push r29 + 4578: 82 30 cpi r24, 0x02 ; 2 + 457a: 91 05 cpc r25, r1 + 457c: 10 f4 brcc .+4 ; 0x4582 <malloc+0xe> + 457e: 82 e0 ldi r24, 0x02 ; 2 + 4580: 90 e0 ldi r25, 0x00 ; 0 + 4582: e0 91 ac 03 lds r30, 0x03AC + 4586: f0 91 ad 03 lds r31, 0x03AD + 458a: 40 e0 ldi r20, 0x00 ; 0 + 458c: 50 e0 ldi r21, 0x00 ; 0 + 458e: 20 e0 ldi r18, 0x00 ; 0 + 4590: 30 e0 ldi r19, 0x00 ; 0 + 4592: 26 c0 rjmp .+76 ; 0x45e0 <malloc+0x6c> + 4594: 60 81 ld r22, Z + 4596: 71 81 ldd r23, Z+1 ; 0x01 + 4598: 68 17 cp r22, r24 + 459a: 79 07 cpc r23, r25 + 459c: e0 f0 brcs .+56 ; 0x45d6 <malloc+0x62> + 459e: 68 17 cp r22, r24 + 45a0: 79 07 cpc r23, r25 + 45a2: 81 f4 brne .+32 ; 0x45c4 <malloc+0x50> + 45a4: 82 81 ldd r24, Z+2 ; 0x02 + 45a6: 93 81 ldd r25, Z+3 ; 0x03 + 45a8: 21 15 cp r18, r1 + 45aa: 31 05 cpc r19, r1 + 45ac: 31 f0 breq .+12 ; 0x45ba <malloc+0x46> + 45ae: d9 01 movw r26, r18 + 45b0: 13 96 adiw r26, 0x03 ; 3 + 45b2: 9c 93 st X, r25 + 45b4: 8e 93 st -X, r24 + 45b6: 12 97 sbiw r26, 0x02 ; 2 + 45b8: 2b c0 rjmp .+86 ; 0x4610 <malloc+0x9c> + 45ba: 90 93 ad 03 sts 0x03AD, r25 + 45be: 80 93 ac 03 sts 0x03AC, r24 + 45c2: 26 c0 rjmp .+76 ; 0x4610 <malloc+0x9c> + 45c4: 41 15 cp r20, r1 + 45c6: 51 05 cpc r21, r1 + 45c8: 19 f0 breq .+6 ; 0x45d0 <malloc+0x5c> + 45ca: 64 17 cp r22, r20 + 45cc: 75 07 cpc r23, r21 + 45ce: 18 f4 brcc .+6 ; 0x45d6 <malloc+0x62> + 45d0: ab 01 movw r20, r22 + 45d2: e9 01 movw r28, r18 + 45d4: df 01 movw r26, r30 + 45d6: 9f 01 movw r18, r30 + 45d8: 72 81 ldd r23, Z+2 ; 0x02 + 45da: 63 81 ldd r22, Z+3 ; 0x03 + 45dc: e7 2f mov r30, r23 + 45de: f6 2f mov r31, r22 + 45e0: 30 97 sbiw r30, 0x00 ; 0 + 45e2: c1 f6 brne .-80 ; 0x4594 <malloc+0x20> + 45e4: 41 15 cp r20, r1 + 45e6: 51 05 cpc r21, r1 + 45e8: 01 f1 breq .+64 ; 0x462a <malloc+0xb6> + 45ea: 48 1b sub r20, r24 + 45ec: 59 0b sbc r21, r25 + 45ee: 44 30 cpi r20, 0x04 ; 4 + 45f0: 51 05 cpc r21, r1 + 45f2: 80 f4 brcc .+32 ; 0x4614 <malloc+0xa0> + 45f4: 12 96 adiw r26, 0x02 ; 2 + 45f6: 8d 91 ld r24, X+ + 45f8: 9c 91 ld r25, X + 45fa: 13 97 sbiw r26, 0x03 ; 3 + 45fc: 20 97 sbiw r28, 0x00 ; 0 + 45fe: 19 f0 breq .+6 ; 0x4606 <malloc+0x92> + 4600: 9b 83 std Y+3, r25 ; 0x03 + 4602: 8a 83 std Y+2, r24 ; 0x02 + 4604: 04 c0 rjmp .+8 ; 0x460e <malloc+0x9a> + 4606: 90 93 ad 03 sts 0x03AD, r25 + 460a: 80 93 ac 03 sts 0x03AC, r24 + 460e: fd 01 movw r30, r26 + 4610: 32 96 adiw r30, 0x02 ; 2 + 4612: 46 c0 rjmp .+140 ; 0x46a0 <malloc+0x12c> + 4614: fd 01 movw r30, r26 + 4616: e4 0f add r30, r20 + 4618: f5 1f adc r31, r21 + 461a: 81 93 st Z+, r24 + 461c: 91 93 st Z+, r25 + 461e: 42 50 subi r20, 0x02 ; 2 + 4620: 50 40 sbci r21, 0x00 ; 0 + 4622: 11 96 adiw r26, 0x01 ; 1 + 4624: 5c 93 st X, r21 + 4626: 4e 93 st -X, r20 + 4628: 3b c0 rjmp .+118 ; 0x46a0 <malloc+0x12c> + 462a: 20 91 aa 03 lds r18, 0x03AA + 462e: 30 91 ab 03 lds r19, 0x03AB + 4632: 21 15 cp r18, r1 + 4634: 31 05 cpc r19, r1 + 4636: 41 f4 brne .+16 ; 0x4648 <malloc+0xd4> + 4638: 20 91 b8 02 lds r18, 0x02B8 + 463c: 30 91 b9 02 lds r19, 0x02B9 + 4640: 30 93 ab 03 sts 0x03AB, r19 + 4644: 20 93 aa 03 sts 0x03AA, r18 + 4648: 20 91 ba 02 lds r18, 0x02BA + 464c: 30 91 bb 02 lds r19, 0x02BB + 4650: 21 15 cp r18, r1 + 4652: 31 05 cpc r19, r1 + 4654: 41 f4 brne .+16 ; 0x4666 <malloc+0xf2> + 4656: 2d b7 in r18, 0x3d ; 61 + 4658: 3e b7 in r19, 0x3e ; 62 + 465a: 40 91 b6 02 lds r20, 0x02B6 + 465e: 50 91 b7 02 lds r21, 0x02B7 + 4662: 24 1b sub r18, r20 + 4664: 35 0b sbc r19, r21 + 4666: e0 91 aa 03 lds r30, 0x03AA + 466a: f0 91 ab 03 lds r31, 0x03AB + 466e: e2 17 cp r30, r18 + 4670: f3 07 cpc r31, r19 + 4672: a0 f4 brcc .+40 ; 0x469c <malloc+0x128> + 4674: 2e 1b sub r18, r30 + 4676: 3f 0b sbc r19, r31 + 4678: 28 17 cp r18, r24 + 467a: 39 07 cpc r19, r25 + 467c: 78 f0 brcs .+30 ; 0x469c <malloc+0x128> + 467e: ac 01 movw r20, r24 + 4680: 4e 5f subi r20, 0xFE ; 254 + 4682: 5f 4f sbci r21, 0xFF ; 255 + 4684: 24 17 cp r18, r20 + 4686: 35 07 cpc r19, r21 + 4688: 48 f0 brcs .+18 ; 0x469c <malloc+0x128> + 468a: 4e 0f add r20, r30 + 468c: 5f 1f adc r21, r31 + 468e: 50 93 ab 03 sts 0x03AB, r21 + 4692: 40 93 aa 03 sts 0x03AA, r20 + 4696: 81 93 st Z+, r24 + 4698: 91 93 st Z+, r25 + 469a: 02 c0 rjmp .+4 ; 0x46a0 <malloc+0x12c> + 469c: e0 e0 ldi r30, 0x00 ; 0 + 469e: f0 e0 ldi r31, 0x00 ; 0 + 46a0: cf 01 movw r24, r30 + 46a2: df 91 pop r29 + 46a4: cf 91 pop r28 + 46a6: 08 95 ret + +000046a8 <free>: + 46a8: cf 93 push r28 + 46aa: df 93 push r29 + 46ac: 00 97 sbiw r24, 0x00 ; 0 + 46ae: 09 f4 brne .+2 ; 0x46b2 <free+0xa> + 46b0: 91 c0 rjmp .+290 ; 0x47d4 <free+0x12c> + 46b2: fc 01 movw r30, r24 + 46b4: 32 97 sbiw r30, 0x02 ; 2 + 46b6: 13 82 std Z+3, r1 ; 0x03 + 46b8: 12 82 std Z+2, r1 ; 0x02 + 46ba: 60 91 ac 03 lds r22, 0x03AC + 46be: 70 91 ad 03 lds r23, 0x03AD + 46c2: 61 15 cp r22, r1 + 46c4: 71 05 cpc r23, r1 + 46c6: 81 f4 brne .+32 ; 0x46e8 <free+0x40> + 46c8: 20 81 ld r18, Z + 46ca: 31 81 ldd r19, Z+1 ; 0x01 + 46cc: 28 0f add r18, r24 + 46ce: 39 1f adc r19, r25 + 46d0: 80 91 aa 03 lds r24, 0x03AA + 46d4: 90 91 ab 03 lds r25, 0x03AB + 46d8: 82 17 cp r24, r18 + 46da: 93 07 cpc r25, r19 + 46dc: 99 f5 brne .+102 ; 0x4744 <free+0x9c> + 46de: f0 93 ab 03 sts 0x03AB, r31 + 46e2: e0 93 aa 03 sts 0x03AA, r30 + 46e6: 76 c0 rjmp .+236 ; 0x47d4 <free+0x12c> + 46e8: db 01 movw r26, r22 + 46ea: 80 e0 ldi r24, 0x00 ; 0 + 46ec: 90 e0 ldi r25, 0x00 ; 0 + 46ee: 02 c0 rjmp .+4 ; 0x46f4 <free+0x4c> + 46f0: cd 01 movw r24, r26 + 46f2: d9 01 movw r26, r18 + 46f4: ae 17 cp r26, r30 + 46f6: bf 07 cpc r27, r31 + 46f8: 48 f4 brcc .+18 ; 0x470c <free+0x64> + 46fa: 12 96 adiw r26, 0x02 ; 2 + 46fc: 2d 91 ld r18, X+ + 46fe: 3c 91 ld r19, X + 4700: 13 97 sbiw r26, 0x03 ; 3 + 4702: 21 15 cp r18, r1 + 4704: 31 05 cpc r19, r1 + 4706: a1 f7 brne .-24 ; 0x46f0 <free+0x48> + 4708: cd 01 movw r24, r26 + 470a: 21 c0 rjmp .+66 ; 0x474e <free+0xa6> + 470c: b3 83 std Z+3, r27 ; 0x03 + 470e: a2 83 std Z+2, r26 ; 0x02 + 4710: ef 01 movw r28, r30 + 4712: 49 91 ld r20, Y+ + 4714: 59 91 ld r21, Y+ + 4716: 9e 01 movw r18, r28 + 4718: 24 0f add r18, r20 + 471a: 35 1f adc r19, r21 + 471c: a2 17 cp r26, r18 + 471e: b3 07 cpc r27, r19 + 4720: 79 f4 brne .+30 ; 0x4740 <free+0x98> + 4722: 2d 91 ld r18, X+ + 4724: 3c 91 ld r19, X + 4726: 11 97 sbiw r26, 0x01 ; 1 + 4728: 24 0f add r18, r20 + 472a: 35 1f adc r19, r21 + 472c: 2e 5f subi r18, 0xFE ; 254 + 472e: 3f 4f sbci r19, 0xFF ; 255 + 4730: 31 83 std Z+1, r19 ; 0x01 + 4732: 20 83 st Z, r18 + 4734: 12 96 adiw r26, 0x02 ; 2 + 4736: 2d 91 ld r18, X+ + 4738: 3c 91 ld r19, X + 473a: 13 97 sbiw r26, 0x03 ; 3 + 473c: 33 83 std Z+3, r19 ; 0x03 + 473e: 22 83 std Z+2, r18 ; 0x02 + 4740: 00 97 sbiw r24, 0x00 ; 0 + 4742: 29 f4 brne .+10 ; 0x474e <free+0xa6> + 4744: f0 93 ad 03 sts 0x03AD, r31 + 4748: e0 93 ac 03 sts 0x03AC, r30 + 474c: 43 c0 rjmp .+134 ; 0x47d4 <free+0x12c> + 474e: dc 01 movw r26, r24 + 4750: 13 96 adiw r26, 0x03 ; 3 + 4752: fc 93 st X, r31 + 4754: ee 93 st -X, r30 + 4756: 12 97 sbiw r26, 0x02 ; 2 + 4758: 4d 91 ld r20, X+ + 475a: 5d 91 ld r21, X+ + 475c: a4 0f add r26, r20 + 475e: b5 1f adc r27, r21 + 4760: ea 17 cp r30, r26 + 4762: fb 07 cpc r31, r27 + 4764: 69 f4 brne .+26 ; 0x4780 <free+0xd8> + 4766: 20 81 ld r18, Z + 4768: 31 81 ldd r19, Z+1 ; 0x01 + 476a: 24 0f add r18, r20 + 476c: 35 1f adc r19, r21 + 476e: 2e 5f subi r18, 0xFE ; 254 + 4770: 3f 4f sbci r19, 0xFF ; 255 + 4772: ec 01 movw r28, r24 + 4774: 39 83 std Y+1, r19 ; 0x01 + 4776: 28 83 st Y, r18 + 4778: 22 81 ldd r18, Z+2 ; 0x02 + 477a: 33 81 ldd r19, Z+3 ; 0x03 + 477c: 3b 83 std Y+3, r19 ; 0x03 + 477e: 2a 83 std Y+2, r18 ; 0x02 + 4780: e0 e0 ldi r30, 0x00 ; 0 + 4782: f0 e0 ldi r31, 0x00 ; 0 + 4784: 02 c0 rjmp .+4 ; 0x478a <free+0xe2> + 4786: fb 01 movw r30, r22 + 4788: bc 01 movw r22, r24 + 478a: db 01 movw r26, r22 + 478c: 12 96 adiw r26, 0x02 ; 2 + 478e: 8d 91 ld r24, X+ + 4790: 9c 91 ld r25, X + 4792: 13 97 sbiw r26, 0x03 ; 3 + 4794: 00 97 sbiw r24, 0x00 ; 0 + 4796: b9 f7 brne .-18 ; 0x4786 <free+0xde> + 4798: 9b 01 movw r18, r22 + 479a: 2e 5f subi r18, 0xFE ; 254 + 479c: 3f 4f sbci r19, 0xFF ; 255 + 479e: 8d 91 ld r24, X+ + 47a0: 9c 91 ld r25, X + 47a2: 11 97 sbiw r26, 0x01 ; 1 + 47a4: 82 0f add r24, r18 + 47a6: 93 1f adc r25, r19 + 47a8: 40 91 aa 03 lds r20, 0x03AA + 47ac: 50 91 ab 03 lds r21, 0x03AB + 47b0: 48 17 cp r20, r24 + 47b2: 59 07 cpc r21, r25 + 47b4: 79 f4 brne .+30 ; 0x47d4 <free+0x12c> + 47b6: 30 97 sbiw r30, 0x00 ; 0 + 47b8: 29 f4 brne .+10 ; 0x47c4 <free+0x11c> + 47ba: 10 92 ad 03 sts 0x03AD, r1 + 47be: 10 92 ac 03 sts 0x03AC, r1 + 47c2: 02 c0 rjmp .+4 ; 0x47c8 <free+0x120> + 47c4: 13 82 std Z+3, r1 ; 0x03 + 47c6: 12 82 std Z+2, r1 ; 0x02 + 47c8: 22 50 subi r18, 0x02 ; 2 + 47ca: 30 40 sbci r19, 0x00 ; 0 + 47cc: 30 93 ab 03 sts 0x03AB, r19 + 47d0: 20 93 aa 03 sts 0x03AA, r18 + 47d4: df 91 pop r29 + 47d6: cf 91 pop r28 + 47d8: 08 95 ret + +000047da <do_random>: + 47da: a0 e0 ldi r26, 0x00 ; 0 + 47dc: b0 e0 ldi r27, 0x00 ; 0 + 47de: e3 ef ldi r30, 0xF3 ; 243 + 47e0: f3 e2 ldi r31, 0x23 ; 35 + 47e2: 0c 94 85 22 jmp 0x450a ; 0x450a <__prologue_saves__+0x10> + 47e6: ec 01 movw r28, r24 + 47e8: 68 81 ld r22, Y + 47ea: 79 81 ldd r23, Y+1 ; 0x01 + 47ec: 8a 81 ldd r24, Y+2 ; 0x02 + 47ee: 9b 81 ldd r25, Y+3 ; 0x03 + 47f0: 61 15 cp r22, r1 + 47f2: 71 05 cpc r23, r1 + 47f4: 81 05 cpc r24, r1 + 47f6: 91 05 cpc r25, r1 + 47f8: 21 f4 brne .+8 ; 0x4802 <do_random+0x28> + 47fa: 64 e2 ldi r22, 0x24 ; 36 + 47fc: 79 ed ldi r23, 0xD9 ; 217 + 47fe: 8b e5 ldi r24, 0x5B ; 91 + 4800: 97 e0 ldi r25, 0x07 ; 7 + 4802: 2d e1 ldi r18, 0x1D ; 29 + 4804: 33 ef ldi r19, 0xF3 ; 243 + 4806: 41 e0 ldi r20, 0x01 ; 1 + 4808: 50 e0 ldi r21, 0x00 ; 0 + 480a: 0e 94 4e 22 call 0x449c ; 0x449c <__divmodsi4> + 480e: 79 01 movw r14, r18 + 4810: 8a 01 movw r16, r20 + 4812: 27 ea ldi r18, 0xA7 ; 167 + 4814: 31 e4 ldi r19, 0x41 ; 65 + 4816: 40 e0 ldi r20, 0x00 ; 0 + 4818: 50 e0 ldi r21, 0x00 ; 0 + 481a: 0e 94 fa 21 call 0x43f4 ; 0x43f4 <__mulsi3> + 481e: 5b 01 movw r10, r22 + 4820: 6c 01 movw r12, r24 + 4822: c8 01 movw r24, r16 + 4824: b7 01 movw r22, r14 + 4826: 2c ee ldi r18, 0xEC ; 236 + 4828: 34 ef ldi r19, 0xF4 ; 244 + 482a: 4f ef ldi r20, 0xFF ; 255 + 482c: 5f ef ldi r21, 0xFF ; 255 + 482e: 0e 94 fa 21 call 0x43f4 ; 0x43f4 <__mulsi3> + 4832: 9b 01 movw r18, r22 + 4834: ac 01 movw r20, r24 + 4836: 2a 0d add r18, r10 + 4838: 3b 1d adc r19, r11 + 483a: 4c 1d adc r20, r12 + 483c: 5d 1d adc r21, r13 + 483e: 57 ff sbrs r21, 7 + 4840: 04 c0 rjmp .+8 ; 0x484a <do_random+0x70> + 4842: 21 50 subi r18, 0x01 ; 1 + 4844: 30 40 sbci r19, 0x00 ; 0 + 4846: 40 40 sbci r20, 0x00 ; 0 + 4848: 50 48 sbci r21, 0x80 ; 128 + 484a: 28 83 st Y, r18 + 484c: 39 83 std Y+1, r19 ; 0x01 + 484e: 4a 83 std Y+2, r20 ; 0x02 + 4850: 5b 83 std Y+3, r21 ; 0x03 + 4852: 5f 77 andi r21, 0x7F ; 127 + 4854: b9 01 movw r22, r18 + 4856: ca 01 movw r24, r20 + 4858: cd b7 in r28, 0x3d ; 61 + 485a: de b7 in r29, 0x3e ; 62 + 485c: ea e0 ldi r30, 0x0A ; 10 + 485e: 0c 94 a1 22 jmp 0x4542 ; 0x4542 <__epilogue_restores__+0x10> + +00004862 <random_r>: + 4862: 0e 94 ed 23 call 0x47da ; 0x47da <do_random> + 4866: 08 95 ret + +00004868 <random>: + 4868: 8c eb ldi r24, 0xBC ; 188 + 486a: 92 e0 ldi r25, 0x02 ; 2 + 486c: 0e 94 ed 23 call 0x47da ; 0x47da <do_random> + 4870: 08 95 ret + +00004872 <srandom>: + 4872: 60 93 bc 02 sts 0x02BC, r22 + 4876: 70 93 bd 02 sts 0x02BD, r23 + 487a: 80 93 be 02 sts 0x02BE, r24 + 487e: 90 93 bf 02 sts 0x02BF, r25 + 4882: 08 95 ret + +00004884 <realloc>: + 4884: a0 e0 ldi r26, 0x00 ; 0 + 4886: b0 e0 ldi r27, 0x00 ; 0 + 4888: e8 e4 ldi r30, 0x48 ; 72 + 488a: f4 e2 ldi r31, 0x24 ; 36 + 488c: 0c 94 83 22 jmp 0x4506 ; 0x4506 <__prologue_saves__+0xc> + 4890: 8c 01 movw r16, r24 + 4892: cb 01 movw r24, r22 + 4894: 01 15 cp r16, r1 + 4896: 11 05 cpc r17, r1 + 4898: 29 f4 brne .+10 ; 0x48a4 <realloc+0x20> + 489a: 0e 94 ba 22 call 0x4574 ; 0x4574 <malloc> + 489e: 08 2f mov r16, r24 + 48a0: 19 2f mov r17, r25 + 48a2: b5 c0 rjmp .+362 ; 0x4a0e <realloc+0x18a> + 48a4: d8 01 movw r26, r16 + 48a6: 12 97 sbiw r26, 0x02 ; 2 + 48a8: 98 01 movw r18, r16 + 48aa: 26 0f add r18, r22 + 48ac: 37 1f adc r19, r23 + 48ae: 2a 17 cp r18, r26 + 48b0: 3b 07 cpc r19, r27 + 48b2: 08 f4 brcc .+2 ; 0x48b6 <realloc+0x32> + 48b4: aa c0 rjmp .+340 ; 0x4a0a <realloc+0x186> + 48b6: ed 90 ld r14, X+ + 48b8: fc 90 ld r15, X + 48ba: 11 97 sbiw r26, 0x01 ; 1 + 48bc: e6 16 cp r14, r22 + 48be: f7 06 cpc r15, r23 + 48c0: d0 f0 brcs .+52 ; 0x48f6 <realloc+0x72> + 48c2: 45 e0 ldi r20, 0x05 ; 5 + 48c4: e4 16 cp r14, r20 + 48c6: f1 04 cpc r15, r1 + 48c8: 08 f4 brcc .+2 ; 0x48cc <realloc+0x48> + 48ca: a1 c0 rjmp .+322 ; 0x4a0e <realloc+0x18a> + 48cc: a7 01 movw r20, r14 + 48ce: 44 50 subi r20, 0x04 ; 4 + 48d0: 50 40 sbci r21, 0x00 ; 0 + 48d2: 46 17 cp r20, r22 + 48d4: 57 07 cpc r21, r23 + 48d6: 08 f4 brcc .+2 ; 0x48da <realloc+0x56> + 48d8: 9a c0 rjmp .+308 ; 0x4a0e <realloc+0x18a> + 48da: a7 01 movw r20, r14 + 48dc: 42 50 subi r20, 0x02 ; 2 + 48de: 50 40 sbci r21, 0x00 ; 0 + 48e0: 46 1b sub r20, r22 + 48e2: 57 0b sbc r21, r23 + 48e4: f9 01 movw r30, r18 + 48e6: 41 93 st Z+, r20 + 48e8: 51 93 st Z+, r21 + 48ea: 6d 93 st X+, r22 + 48ec: 7c 93 st X, r23 + 48ee: cf 01 movw r24, r30 + 48f0: 0e 94 54 23 call 0x46a8 ; 0x46a8 <free> + 48f4: 8c c0 rjmp .+280 ; 0x4a0e <realloc+0x18a> + 48f6: 5b 01 movw r10, r22 + 48f8: ae 18 sub r10, r14 + 48fa: bf 08 sbc r11, r15 + 48fc: 48 01 movw r8, r16 + 48fe: 8e 0c add r8, r14 + 4900: 9f 1c adc r9, r15 + 4902: e0 91 ac 03 lds r30, 0x03AC + 4906: f0 91 ad 03 lds r31, 0x03AD + 490a: cc 24 eor r12, r12 + 490c: dd 24 eor r13, r13 + 490e: c0 e0 ldi r28, 0x00 ; 0 + 4910: d0 e0 ldi r29, 0x00 ; 0 + 4912: 41 c0 rjmp .+130 ; 0x4996 <realloc+0x112> + 4914: e8 15 cp r30, r8 + 4916: f9 05 cpc r31, r9 + 4918: 99 f5 brne .+102 ; 0x4980 <realloc+0xfc> + 491a: 60 81 ld r22, Z + 491c: 71 81 ldd r23, Z+1 ; 0x01 + 491e: ab 01 movw r20, r22 + 4920: 4e 5f subi r20, 0xFE ; 254 + 4922: 5f 4f sbci r21, 0xFF ; 255 + 4924: 4a 15 cp r20, r10 + 4926: 5b 05 cpc r21, r11 + 4928: 58 f1 brcs .+86 ; 0x4980 <realloc+0xfc> + 492a: ab 01 movw r20, r22 + 492c: 4a 19 sub r20, r10 + 492e: 5b 09 sbc r21, r11 + 4930: cc 24 eor r12, r12 + 4932: dd 24 eor r13, r13 + 4934: 68 94 set + 4936: c1 f8 bld r12, 1 + 4938: c4 0e add r12, r20 + 493a: d5 1e adc r13, r21 + 493c: 82 80 ldd r8, Z+2 ; 0x02 + 493e: a3 80 ldd r10, Z+3 ; 0x03 + 4940: e5 e0 ldi r30, 0x05 ; 5 + 4942: ce 16 cp r12, r30 + 4944: d1 04 cpc r13, r1 + 4946: 48 f0 brcs .+18 ; 0x495a <realloc+0xd6> + 4948: f9 01 movw r30, r18 + 494a: 82 82 std Z+2, r8 ; 0x02 + 494c: a3 82 std Z+3, r10 ; 0x03 + 494e: 51 83 std Z+1, r21 ; 0x01 + 4950: 40 83 st Z, r20 + 4952: 11 96 adiw r26, 0x01 ; 1 + 4954: 9c 93 st X, r25 + 4956: 8e 93 st -X, r24 + 4958: 09 c0 rjmp .+18 ; 0x496c <realloc+0xe8> + 495a: c7 01 movw r24, r14 + 495c: 02 96 adiw r24, 0x02 ; 2 + 495e: 86 0f add r24, r22 + 4960: 97 1f adc r25, r23 + 4962: 11 96 adiw r26, 0x01 ; 1 + 4964: 9c 93 st X, r25 + 4966: 8e 93 st -X, r24 + 4968: e8 2d mov r30, r8 + 496a: fa 2d mov r31, r10 + 496c: 20 97 sbiw r28, 0x00 ; 0 + 496e: 19 f0 breq .+6 ; 0x4976 <realloc+0xf2> + 4970: fb 83 std Y+3, r31 ; 0x03 + 4972: ea 83 std Y+2, r30 ; 0x02 + 4974: 4c c0 rjmp .+152 ; 0x4a0e <realloc+0x18a> + 4976: f0 93 ad 03 sts 0x03AD, r31 + 497a: e0 93 ac 03 sts 0x03AC, r30 + 497e: 47 c0 rjmp .+142 ; 0x4a0e <realloc+0x18a> + 4980: 40 81 ld r20, Z + 4982: 51 81 ldd r21, Z+1 ; 0x01 + 4984: c4 16 cp r12, r20 + 4986: d5 06 cpc r13, r21 + 4988: 08 f4 brcc .+2 ; 0x498c <realloc+0x108> + 498a: 6a 01 movw r12, r20 + 498c: ef 01 movw r28, r30 + 498e: 52 81 ldd r21, Z+2 ; 0x02 + 4990: 43 81 ldd r20, Z+3 ; 0x03 + 4992: e5 2f mov r30, r21 + 4994: f4 2f mov r31, r20 + 4996: 30 97 sbiw r30, 0x00 ; 0 + 4998: 09 f0 breq .+2 ; 0x499c <realloc+0x118> + 499a: bc cf rjmp .-136 ; 0x4914 <realloc+0x90> + 499c: 40 91 aa 03 lds r20, 0x03AA + 49a0: 50 91 ab 03 lds r21, 0x03AB + 49a4: 48 15 cp r20, r8 + 49a6: 59 05 cpc r21, r9 + 49a8: e9 f4 brne .+58 ; 0x49e4 <realloc+0x160> + 49aa: c8 16 cp r12, r24 + 49ac: d9 06 cpc r13, r25 + 49ae: d0 f4 brcc .+52 ; 0x49e4 <realloc+0x160> + 49b0: 40 91 ba 02 lds r20, 0x02BA + 49b4: 50 91 bb 02 lds r21, 0x02BB + 49b8: 41 15 cp r20, r1 + 49ba: 51 05 cpc r21, r1 + 49bc: 41 f4 brne .+16 ; 0x49ce <realloc+0x14a> + 49be: 4d b7 in r20, 0x3d ; 61 + 49c0: 5e b7 in r21, 0x3e ; 62 + 49c2: 60 91 b6 02 lds r22, 0x02B6 + 49c6: 70 91 b7 02 lds r23, 0x02B7 + 49ca: 46 1b sub r20, r22 + 49cc: 57 0b sbc r21, r23 + 49ce: 24 17 cp r18, r20 + 49d0: 35 07 cpc r19, r21 + 49d2: d8 f4 brcc .+54 ; 0x4a0a <realloc+0x186> + 49d4: 30 93 ab 03 sts 0x03AB, r19 + 49d8: 20 93 aa 03 sts 0x03AA, r18 + 49dc: 11 96 adiw r26, 0x01 ; 1 + 49de: 9c 93 st X, r25 + 49e0: 8e 93 st -X, r24 + 49e2: 15 c0 rjmp .+42 ; 0x4a0e <realloc+0x18a> + 49e4: 0e 94 ba 22 call 0x4574 ; 0x4574 <malloc> + 49e8: c8 2e mov r12, r24 + 49ea: e6 01 movw r28, r12 + 49ec: 6e 01 movw r12, r28 + 49ee: d9 2e mov r13, r25 + 49f0: e6 01 movw r28, r12 + 49f2: 20 97 sbiw r28, 0x00 ; 0 + 49f4: 51 f0 breq .+20 ; 0x4a0a <realloc+0x186> + 49f6: 8c 2d mov r24, r12 + 49f8: b8 01 movw r22, r16 + 49fa: a7 01 movw r20, r14 + 49fc: 0e 94 59 25 call 0x4ab2 ; 0x4ab2 <memcpy> + 4a00: c8 01 movw r24, r16 + 4a02: 0e 94 54 23 call 0x46a8 ; 0x46a8 <free> + 4a06: 86 01 movw r16, r12 + 4a08: 02 c0 rjmp .+4 ; 0x4a0e <realloc+0x18a> + 4a0a: 00 e0 ldi r16, 0x00 ; 0 + 4a0c: 10 e0 ldi r17, 0x00 ; 0 + 4a0e: c8 01 movw r24, r16 + 4a10: cd b7 in r28, 0x3d ; 61 + 4a12: de b7 in r29, 0x3e ; 62 + 4a14: ec e0 ldi r30, 0x0C ; 12 + 4a16: 0c 94 9f 22 jmp 0x453e ; 0x453e <__epilogue_restores__+0xc> + +00004a1a <atol>: + 4a1a: 1f 93 push r17 + 4a1c: fc 01 movw r30, r24 + 4a1e: 99 27 eor r25, r25 + 4a20: 88 27 eor r24, r24 + 4a22: bc 01 movw r22, r24 + 4a24: e8 94 clt + 4a26: 11 91 ld r17, Z+ + 4a28: 10 32 cpi r17, 0x20 ; 32 + 4a2a: e9 f3 breq .-6 ; 0x4a26 <atol+0xc> + 4a2c: 19 30 cpi r17, 0x09 ; 9 + 4a2e: 10 f0 brcs .+4 ; 0x4a34 <atol+0x1a> + 4a30: 1e 30 cpi r17, 0x0E ; 14 + 4a32: c8 f3 brcs .-14 ; 0x4a26 <atol+0xc> + 4a34: 1b 32 cpi r17, 0x2B ; 43 + 4a36: 51 f0 breq .+20 ; 0x4a4c <atol+0x32> + 4a38: 1d 32 cpi r17, 0x2D ; 45 + 4a3a: 49 f4 brne .+18 ; 0x4a4e <atol+0x34> + 4a3c: 68 94 set + 4a3e: 06 c0 rjmp .+12 ; 0x4a4c <atol+0x32> + 4a40: 0e 94 26 26 call 0x4c4c ; 0x4c4c <__mulsi_const_10> + 4a44: 61 0f add r22, r17 + 4a46: 71 1d adc r23, r1 + 4a48: 81 1d adc r24, r1 + 4a4a: 91 1d adc r25, r1 + 4a4c: 11 91 ld r17, Z+ + 4a4e: 10 53 subi r17, 0x30 ; 48 + 4a50: 1a 30 cpi r17, 0x0A ; 10 + 4a52: b0 f3 brcs .-20 ; 0x4a40 <atol+0x26> + 4a54: 3e f4 brtc .+14 ; 0x4a64 <atol+0x4a> + 4a56: 90 95 com r25 + 4a58: 80 95 com r24 + 4a5a: 70 95 com r23 + 4a5c: 61 95 neg r22 + 4a5e: 7f 4f sbci r23, 0xFF ; 255 + 4a60: 8f 4f sbci r24, 0xFF ; 255 + 4a62: 9f 4f sbci r25, 0xFF ; 255 + 4a64: 1f 91 pop r17 + 4a66: 08 95 ret + +00004a68 <isspace>: + 4a68: 91 11 cpse r25, r1 + 4a6a: 40 c1 rjmp .+640 ; 0x4cec <__ctype_isfalse> + 4a6c: 80 32 cpi r24, 0x20 ; 32 + 4a6e: 19 f0 breq .+6 ; 0x4a76 <isspace+0xe> + 4a70: 89 50 subi r24, 0x09 ; 9 + 4a72: 85 50 subi r24, 0x05 ; 5 + 4a74: d0 f7 brcc .-12 ; 0x4a6a <isspace+0x2> + 4a76: 08 95 ret + +00004a78 <tolower>: + 4a78: 91 11 cpse r25, r1 + 4a7a: 08 95 ret + 4a7c: 81 54 subi r24, 0x41 ; 65 + 4a7e: 8a 51 subi r24, 0x1A ; 26 + 4a80: 08 f4 brcc .+2 ; 0x4a84 <tolower+0xc> + 4a82: 80 5e subi r24, 0xE0 ; 224 + 4a84: 85 5a subi r24, 0xA5 ; 165 + 4a86: 08 95 ret + +00004a88 <toupper>: + 4a88: 91 11 cpse r25, r1 + 4a8a: 08 95 ret + 4a8c: 81 56 subi r24, 0x61 ; 97 + 4a8e: 8a 51 subi r24, 0x1A ; 26 + 4a90: 08 f4 brcc .+2 ; 0x4a94 <toupper+0xc> + 4a92: 80 52 subi r24, 0x20 ; 32 + 4a94: 85 58 subi r24, 0x85 ; 133 + 4a96: 08 95 ret + +00004a98 <memcmp>: + 4a98: fb 01 movw r30, r22 + 4a9a: dc 01 movw r26, r24 + 4a9c: 04 c0 rjmp .+8 ; 0x4aa6 <memcmp+0xe> + 4a9e: 8d 91 ld r24, X+ + 4aa0: 01 90 ld r0, Z+ + 4aa2: 80 19 sub r24, r0 + 4aa4: 21 f4 brne .+8 ; 0x4aae <memcmp+0x16> + 4aa6: 41 50 subi r20, 0x01 ; 1 + 4aa8: 50 40 sbci r21, 0x00 ; 0 + 4aaa: c8 f7 brcc .-14 ; 0x4a9e <memcmp+0x6> + 4aac: 88 1b sub r24, r24 + 4aae: 99 0b sbc r25, r25 + 4ab0: 08 95 ret + +00004ab2 <memcpy>: + 4ab2: fb 01 movw r30, r22 + 4ab4: dc 01 movw r26, r24 + 4ab6: 02 c0 rjmp .+4 ; 0x4abc <memcpy+0xa> + 4ab8: 01 90 ld r0, Z+ + 4aba: 0d 92 st X+, r0 + 4abc: 41 50 subi r20, 0x01 ; 1 + 4abe: 50 40 sbci r21, 0x00 ; 0 + 4ac0: d8 f7 brcc .-10 ; 0x4ab8 <memcpy+0x6> + 4ac2: 08 95 ret + +00004ac4 <memmove>: + 4ac4: 68 17 cp r22, r24 + 4ac6: 79 07 cpc r23, r25 + 4ac8: 68 f4 brcc .+26 ; 0x4ae4 <memmove+0x20> + 4aca: fb 01 movw r30, r22 + 4acc: dc 01 movw r26, r24 + 4ace: e4 0f add r30, r20 + 4ad0: f5 1f adc r31, r21 + 4ad2: a4 0f add r26, r20 + 4ad4: b5 1f adc r27, r21 + 4ad6: 02 c0 rjmp .+4 ; 0x4adc <memmove+0x18> + 4ad8: 02 90 ld r0, -Z + 4ada: 0e 92 st -X, r0 + 4adc: 41 50 subi r20, 0x01 ; 1 + 4ade: 50 40 sbci r21, 0x00 ; 0 + 4ae0: d8 f7 brcc .-10 ; 0x4ad8 <memmove+0x14> + 4ae2: 08 95 ret + 4ae4: 0c 94 59 25 jmp 0x4ab2 ; 0x4ab2 <memcpy> + +00004ae8 <strchr>: + 4ae8: fc 01 movw r30, r24 + 4aea: 81 91 ld r24, Z+ + 4aec: 86 17 cp r24, r22 + 4aee: 21 f0 breq .+8 ; 0x4af8 <strchr+0x10> + 4af0: 88 23 and r24, r24 + 4af2: d9 f7 brne .-10 ; 0x4aea <strchr+0x2> + 4af4: 99 27 eor r25, r25 + 4af6: 08 95 ret + 4af8: 31 97 sbiw r30, 0x01 ; 1 + 4afa: cf 01 movw r24, r30 + 4afc: 08 95 ret + +00004afe <strcmp>: + 4afe: fb 01 movw r30, r22 + 4b00: dc 01 movw r26, r24 + 4b02: 8d 91 ld r24, X+ + 4b04: 01 90 ld r0, Z+ + 4b06: 80 19 sub r24, r0 + 4b08: 01 10 cpse r0, r1 + 4b0a: d9 f3 breq .-10 ; 0x4b02 <strcmp+0x4> + 4b0c: 99 0b sbc r25, r25 + 4b0e: 08 95 ret + +00004b10 <strcpy>: + 4b10: fb 01 movw r30, r22 + 4b12: dc 01 movw r26, r24 + 4b14: 01 90 ld r0, Z+ + 4b16: 0d 92 st X+, r0 + 4b18: 00 20 and r0, r0 + 4b1a: e1 f7 brne .-8 ; 0x4b14 <strcpy+0x4> + 4b1c: 08 95 ret + +00004b1e <strncmp>: + 4b1e: fb 01 movw r30, r22 + 4b20: dc 01 movw r26, r24 + 4b22: 41 50 subi r20, 0x01 ; 1 + 4b24: 50 40 sbci r21, 0x00 ; 0 + 4b26: 30 f0 brcs .+12 ; 0x4b34 <strncmp+0x16> + 4b28: 8d 91 ld r24, X+ + 4b2a: 01 90 ld r0, Z+ + 4b2c: 80 19 sub r24, r0 + 4b2e: 19 f4 brne .+6 ; 0x4b36 <strncmp+0x18> + 4b30: 00 20 and r0, r0 + 4b32: b9 f7 brne .-18 ; 0x4b22 <strncmp+0x4> + 4b34: 88 1b sub r24, r24 + 4b36: 99 0b sbc r25, r25 + 4b38: 08 95 ret + +00004b3a <strncpy>: + 4b3a: fb 01 movw r30, r22 + 4b3c: dc 01 movw r26, r24 + 4b3e: 41 50 subi r20, 0x01 ; 1 + 4b40: 50 40 sbci r21, 0x00 ; 0 + 4b42: 48 f0 brcs .+18 ; 0x4b56 <strncpy+0x1c> + 4b44: 01 90 ld r0, Z+ + 4b46: 0d 92 st X+, r0 + 4b48: 00 20 and r0, r0 + 4b4a: c9 f7 brne .-14 ; 0x4b3e <strncpy+0x4> + 4b4c: 01 c0 rjmp .+2 ; 0x4b50 <strncpy+0x16> + 4b4e: 1d 92 st X+, r1 + 4b50: 41 50 subi r20, 0x01 ; 1 + 4b52: 50 40 sbci r21, 0x00 ; 0 + 4b54: e0 f7 brcc .-8 ; 0x4b4e <strncpy+0x14> + 4b56: 08 95 ret + +00004b58 <strrchr>: + 4b58: fc 01 movw r30, r24 + 4b5a: 81 e0 ldi r24, 0x01 ; 1 + 4b5c: 90 e0 ldi r25, 0x00 ; 0 + 4b5e: 01 90 ld r0, Z+ + 4b60: 06 16 cp r0, r22 + 4b62: 09 f4 brne .+2 ; 0x4b66 <strrchr+0xe> + 4b64: cf 01 movw r24, r30 + 4b66: 00 20 and r0, r0 + 4b68: d1 f7 brne .-12 ; 0x4b5e <strrchr+0x6> + 4b6a: 01 97 sbiw r24, 0x01 ; 1 + 4b6c: 08 95 ret + +00004b6e <strstr>: + 4b6e: fb 01 movw r30, r22 + 4b70: 51 91 ld r21, Z+ + 4b72: 55 23 and r21, r21 + 4b74: a9 f0 breq .+42 ; 0x4ba0 <strstr+0x32> + 4b76: bf 01 movw r22, r30 + 4b78: dc 01 movw r26, r24 + 4b7a: 4d 91 ld r20, X+ + 4b7c: 45 17 cp r20, r21 + 4b7e: 41 11 cpse r20, r1 + 4b80: e1 f7 brne .-8 ; 0x4b7a <strstr+0xc> + 4b82: 59 f4 brne .+22 ; 0x4b9a <strstr+0x2c> + 4b84: cd 01 movw r24, r26 + 4b86: 01 90 ld r0, Z+ + 4b88: 00 20 and r0, r0 + 4b8a: 49 f0 breq .+18 ; 0x4b9e <strstr+0x30> + 4b8c: 4d 91 ld r20, X+ + 4b8e: 40 15 cp r20, r0 + 4b90: 41 11 cpse r20, r1 + 4b92: c9 f3 breq .-14 ; 0x4b86 <strstr+0x18> + 4b94: fb 01 movw r30, r22 + 4b96: 41 11 cpse r20, r1 + 4b98: ef cf rjmp .-34 ; 0x4b78 <strstr+0xa> + 4b9a: 81 e0 ldi r24, 0x01 ; 1 + 4b9c: 90 e0 ldi r25, 0x00 ; 0 + 4b9e: 01 97 sbiw r24, 0x01 ; 1 + 4ba0: 08 95 ret + +00004ba2 <itoa>: + 4ba2: fb 01 movw r30, r22 + 4ba4: 9f 01 movw r18, r30 + 4ba6: e8 94 clt + 4ba8: 42 30 cpi r20, 0x02 ; 2 + 4baa: c4 f0 brlt .+48 ; 0x4bdc <itoa+0x3a> + 4bac: 45 32 cpi r20, 0x25 ; 37 + 4bae: b4 f4 brge .+44 ; 0x4bdc <itoa+0x3a> + 4bb0: 4a 30 cpi r20, 0x0A ; 10 + 4bb2: 29 f4 brne .+10 ; 0x4bbe <itoa+0x1c> + 4bb4: 97 fb bst r25, 7 + 4bb6: 1e f4 brtc .+6 ; 0x4bbe <itoa+0x1c> + 4bb8: 90 95 com r25 + 4bba: 81 95 neg r24 + 4bbc: 9f 4f sbci r25, 0xFF ; 255 + 4bbe: 64 2f mov r22, r20 + 4bc0: 77 27 eor r23, r23 + 4bc2: 0e 94 69 22 call 0x44d2 ; 0x44d2 <__udivmodhi4> + 4bc6: 80 5d subi r24, 0xD0 ; 208 + 4bc8: 8a 33 cpi r24, 0x3A ; 58 + 4bca: 0c f0 brlt .+2 ; 0x4bce <itoa+0x2c> + 4bcc: 89 5d subi r24, 0xD9 ; 217 + 4bce: 81 93 st Z+, r24 + 4bd0: cb 01 movw r24, r22 + 4bd2: 00 97 sbiw r24, 0x00 ; 0 + 4bd4: a1 f7 brne .-24 ; 0x4bbe <itoa+0x1c> + 4bd6: 16 f4 brtc .+4 ; 0x4bdc <itoa+0x3a> + 4bd8: 5d e2 ldi r21, 0x2D ; 45 + 4bda: 51 93 st Z+, r21 + 4bdc: 10 82 st Z, r1 + 4bde: c9 01 movw r24, r18 + 4be0: 0c 94 79 26 jmp 0x4cf2 ; 0x4cf2 <strrev> + +00004be4 <ltoa>: + 4be4: fa 01 movw r30, r20 + 4be6: cf 93 push r28 + 4be8: ff 93 push r31 + 4bea: ef 93 push r30 + 4bec: 22 30 cpi r18, 0x02 ; 2 + 4bee: 44 f1 brlt .+80 ; 0x4c40 <ltoa+0x5c> + 4bf0: 25 32 cpi r18, 0x25 ; 37 + 4bf2: 34 f5 brge .+76 ; 0x4c40 <ltoa+0x5c> + 4bf4: c2 2f mov r28, r18 + 4bf6: e8 94 clt + 4bf8: ca 30 cpi r28, 0x0A ; 10 + 4bfa: 49 f4 brne .+18 ; 0x4c0e <ltoa+0x2a> + 4bfc: 97 fb bst r25, 7 + 4bfe: 3e f4 brtc .+14 ; 0x4c0e <ltoa+0x2a> + 4c00: 90 95 com r25 + 4c02: 80 95 com r24 + 4c04: 70 95 com r23 + 4c06: 61 95 neg r22 + 4c08: 7f 4f sbci r23, 0xFF ; 255 + 4c0a: 8f 4f sbci r24, 0xFF ; 255 + 4c0c: 9f 4f sbci r25, 0xFF ; 255 + 4c0e: 2c 2f mov r18, r28 + 4c10: 33 27 eor r19, r19 + 4c12: 44 27 eor r20, r20 + 4c14: 55 27 eor r21, r21 + 4c16: ff 93 push r31 + 4c18: ef 93 push r30 + 4c1a: 0e 94 2c 22 call 0x4458 ; 0x4458 <__udivmodsi4> + 4c1e: ef 91 pop r30 + 4c20: ff 91 pop r31 + 4c22: 60 5d subi r22, 0xD0 ; 208 + 4c24: 6a 33 cpi r22, 0x3A ; 58 + 4c26: 0c f0 brlt .+2 ; 0x4c2a <ltoa+0x46> + 4c28: 69 5d subi r22, 0xD9 ; 217 + 4c2a: 61 93 st Z+, r22 + 4c2c: b9 01 movw r22, r18 + 4c2e: ca 01 movw r24, r20 + 4c30: 60 50 subi r22, 0x00 ; 0 + 4c32: 70 40 sbci r23, 0x00 ; 0 + 4c34: 80 40 sbci r24, 0x00 ; 0 + 4c36: 90 40 sbci r25, 0x00 ; 0 + 4c38: 51 f7 brne .-44 ; 0x4c0e <ltoa+0x2a> + 4c3a: 16 f4 brtc .+4 ; 0x4c40 <ltoa+0x5c> + 4c3c: cd e2 ldi r28, 0x2D ; 45 + 4c3e: c1 93 st Z+, r28 + 4c40: 10 82 st Z, r1 + 4c42: 8f 91 pop r24 + 4c44: 9f 91 pop r25 + 4c46: cf 91 pop r28 + 4c48: 0c 94 79 26 jmp 0x4cf2 ; 0x4cf2 <strrev> + +00004c4c <__mulsi_const_10>: + 4c4c: 59 2f mov r21, r25 + 4c4e: 48 2f mov r20, r24 + 4c50: 37 2f mov r19, r23 + 4c52: 26 2f mov r18, r22 + 4c54: 66 0f add r22, r22 + 4c56: 77 1f adc r23, r23 + 4c58: 88 1f adc r24, r24 + 4c5a: 99 1f adc r25, r25 + 4c5c: 66 0f add r22, r22 + 4c5e: 77 1f adc r23, r23 + 4c60: 88 1f adc r24, r24 + 4c62: 99 1f adc r25, r25 + 4c64: 62 0f add r22, r18 + 4c66: 73 1f adc r23, r19 + 4c68: 84 1f adc r24, r20 + 4c6a: 95 1f adc r25, r21 + 4c6c: 66 0f add r22, r22 + 4c6e: 77 1f adc r23, r23 + 4c70: 88 1f adc r24, r24 + 4c72: 99 1f adc r25, r25 + 4c74: 08 95 ret + +00004c76 <ultoa>: + 4c76: fa 01 movw r30, r20 + 4c78: cf 93 push r28 + 4c7a: ff 93 push r31 + 4c7c: ef 93 push r30 + 4c7e: 22 30 cpi r18, 0x02 ; 2 + 4c80: cc f0 brlt .+50 ; 0x4cb4 <ultoa+0x3e> + 4c82: 25 32 cpi r18, 0x25 ; 37 + 4c84: bc f4 brge .+46 ; 0x4cb4 <ultoa+0x3e> + 4c86: c2 2f mov r28, r18 + 4c88: 2c 2f mov r18, r28 + 4c8a: 33 27 eor r19, r19 + 4c8c: 44 27 eor r20, r20 + 4c8e: 55 27 eor r21, r21 + 4c90: ff 93 push r31 + 4c92: ef 93 push r30 + 4c94: 0e 94 2c 22 call 0x4458 ; 0x4458 <__udivmodsi4> + 4c98: ef 91 pop r30 + 4c9a: ff 91 pop r31 + 4c9c: 60 5d subi r22, 0xD0 ; 208 + 4c9e: 6a 33 cpi r22, 0x3A ; 58 + 4ca0: 0c f0 brlt .+2 ; 0x4ca4 <ultoa+0x2e> + 4ca2: 69 5d subi r22, 0xD9 ; 217 + 4ca4: 61 93 st Z+, r22 + 4ca6: b9 01 movw r22, r18 + 4ca8: ca 01 movw r24, r20 + 4caa: 60 50 subi r22, 0x00 ; 0 + 4cac: 70 40 sbci r23, 0x00 ; 0 + 4cae: 80 40 sbci r24, 0x00 ; 0 + 4cb0: 90 40 sbci r25, 0x00 ; 0 + 4cb2: 51 f7 brne .-44 ; 0x4c88 <ultoa+0x12> + 4cb4: 10 82 st Z, r1 + 4cb6: 8f 91 pop r24 + 4cb8: 9f 91 pop r25 + 4cba: cf 91 pop r28 + 4cbc: 0c 94 79 26 jmp 0x4cf2 ; 0x4cf2 <strrev> + +00004cc0 <utoa>: + 4cc0: fb 01 movw r30, r22 + 4cc2: 9f 01 movw r18, r30 + 4cc4: 42 30 cpi r20, 0x02 ; 2 + 4cc6: 74 f0 brlt .+28 ; 0x4ce4 <utoa+0x24> + 4cc8: 45 32 cpi r20, 0x25 ; 37 + 4cca: 64 f4 brge .+24 ; 0x4ce4 <utoa+0x24> + 4ccc: 64 2f mov r22, r20 + 4cce: 77 27 eor r23, r23 + 4cd0: 0e 94 69 22 call 0x44d2 ; 0x44d2 <__udivmodhi4> + 4cd4: 80 5d subi r24, 0xD0 ; 208 + 4cd6: 8a 33 cpi r24, 0x3A ; 58 + 4cd8: 0c f0 brlt .+2 ; 0x4cdc <utoa+0x1c> + 4cda: 89 5d subi r24, 0xD9 ; 217 + 4cdc: 81 93 st Z+, r24 + 4cde: cb 01 movw r24, r22 + 4ce0: 00 97 sbiw r24, 0x00 ; 0 + 4ce2: a1 f7 brne .-24 ; 0x4ccc <utoa+0xc> + 4ce4: 10 82 st Z, r1 + 4ce6: c9 01 movw r24, r18 + 4ce8: 0c 94 79 26 jmp 0x4cf2 ; 0x4cf2 <strrev> + +00004cec <__ctype_isfalse>: + 4cec: 99 27 eor r25, r25 + 4cee: 88 27 eor r24, r24 + +00004cf0 <__ctype_istrue>: + 4cf0: 08 95 ret + +00004cf2 <strrev>: + 4cf2: dc 01 movw r26, r24 + 4cf4: fc 01 movw r30, r24 + 4cf6: 67 2f mov r22, r23 + 4cf8: 71 91 ld r23, Z+ + 4cfa: 77 23 and r23, r23 + 4cfc: e1 f7 brne .-8 ; 0x4cf6 <strrev+0x4> + 4cfe: 32 97 sbiw r30, 0x02 ; 2 + 4d00: 04 c0 rjmp .+8 ; 0x4d0a <strrev+0x18> + 4d02: 7c 91 ld r23, X + 4d04: 6d 93 st X+, r22 + 4d06: 70 83 st Z, r23 + 4d08: 62 91 ld r22, -Z + 4d0a: ae 17 cp r26, r30 + 4d0c: bf 07 cpc r27, r31 + 4d0e: c8 f3 brcs .-14 ; 0x4d02 <strrev+0x10> + 4d10: 08 95 ret + +00004d12 <_exit>: + 4d12: f8 94 cli + +00004d14 <__stop_program>: + 4d14: ff cf rjmp .-2 ; 0x4d14 <__stop_program> diff --git a/ESS1995test_328p/bin/Release/ESS1995test_328p.elf.map b/ESS1995test_328p/bin/Release/ESS1995test_328p.elf.map new file mode 100644 index 0000000..5ba9975 --- /dev/null +++ b/ESS1995test_328p/bin/Release/ESS1995test_328p.elf.map @@ -0,0 +1,1584 @@ +Archive member included because of file (symbol) + +/usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_mulsi3.o) + obj/Release/arduinoSrc1_0/Stream.o (__mulsi3) +/usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_divmodhi4.o) + obj/Release/arduinoSrc1_0/HardwareSerial.o (__divmodhi4) +/usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_udivmodsi4.o) + obj/Release/arduinoSrc1_0/HardwareSerial.o (__udivmodsi4) +/usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_divmodsi4.o) + obj/Release/arduinoSrc1_0/WMath.o (__divmodsi4) +/usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_exit.o) + /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/crtm328p.o (exit) +/usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_copy_data.o) + obj/Release/adapticsBT.o (__do_copy_data) +/usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_clear_bss.o) + obj/Release/main.o (__do_clear_bss) +/usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_ctors.o) + obj/Release/arduinoSrc1_0/HardwareSerial.o (__do_global_ctors) +/usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_fixunssfsi.o) + obj/Release/arduinoSrc1_0/Print.o (__fixunssfsi) +/usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_addsub_sf.o) + obj/Release/arduinoSrc1_0/Print.o (__addsf3) +/usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_mul_sf.o) + obj/Release/arduinoSrc1_0/Print.o (__mulsf3) +/usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_div_sf.o) + obj/Release/arduinoSrc1_0/Print.o (__divsf3) +/usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_ge_sf.o) + /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_fixunssfsi.o) (__gesf2) +/usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_lt_sf.o) + obj/Release/arduinoSrc1_0/Print.o (__ltsf2) +/usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_si_to_sf.o) + obj/Release/arduinoSrc1_0/Print.o (__floatsisf) +/usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_sf_to_si.o) + obj/Release/arduinoSrc1_0/Print.o (__fixsfsi) +/usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_thenan_sf.o) + /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_addsub_sf.o) (__thenan_sf) +/usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_usi_to_sf.o) + obj/Release/arduinoSrc1_0/Print.o (__floatunsisf) +/usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_udivmodhi4.o) + /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_divmodhi4.o) (__udivmodhi4) +/usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_prologue.o) + /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_addsub_sf.o) (__prologue_saves__) +/usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_epilogue.o) + /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_addsub_sf.o) (__epilogue_restores__) +/usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_tablejump.o) + /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_ctors.o) (__tablejump__) +/usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_clzsi2.o) + /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_si_to_sf.o) (__clzsi2) +/usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_pack_sf.o) + /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_addsub_sf.o) (__pack_f) +/usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_unpack_sf.o) + /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_addsub_sf.o) (__unpack_f) +/usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_fpcmp_parts_sf.o) + /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_ge_sf.o) (__fpcmp_parts_f) +/usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_clz.o) + /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_clzsi2.o) (__clz_tab) +/usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(malloc.o) + obj/Release/arduinoSrc1_0/new.o (malloc) +/usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(random.o) + obj/Release/arduinoSrc1_0/WMath.o (random) +/usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(realloc.o) + obj/Release/arduinoSrc1_0/WString.o (realloc) +/usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(atol.o) + obj/Release/arduinoSrc1_0/WString.o (atol) +/usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(isspace.o) + obj/Release/arduinoSrc1_0/WString.o (isspace) +/usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(tolower.o) + obj/Release/arduinoSrc1_0/WString.o (tolower) +/usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(toupper.o) + obj/Release/arduinoSrc1_0/WString.o (toupper) +/usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(memcmp.o) + obj/Release/arduinoSrc1_0/IPAddress.o (memcmp) +/usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(memcpy.o) + obj/Release/arduinoSrc1_0/WString.o (memcpy) +/usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(memmove.o) + obj/Release/arduinoSrc1_0/WString.o (memmove) +/usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(strchr.o) + obj/Release/arduinoSrc1_0/WString.o (strchr) +/usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(strcmp.o) + obj/Release/arduinoSrc1_0/WString.o (strcmp) +/usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(strcpy.o) + obj/Release/arduinoSrc1_0/WString.o (strcpy) +/usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(strncmp.o) + obj/Release/arduinoSrc1_0/WString.o (strncmp) +/usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(strncpy.o) + obj/Release/arduinoSrc1_0/WString.o (strncpy) +/usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(strrchr.o) + obj/Release/arduinoSrc1_0/WString.o (strrchr) +/usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(strstr.o) + obj/Release/arduinoSrc1_0/WString.o (strstr) +/usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(itoa.o) + obj/Release/arduinoSrc1_0/WString.o (itoa) +/usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(ltoa.o) + obj/Release/arduinoSrc1_0/WString.o (ltoa) +/usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(mulsi10.o) + /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(atol.o) (__mulsi_const_10) +/usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(ultoa.o) + obj/Release/arduinoSrc1_0/WString.o (ultoa) +/usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(utoa.o) + obj/Release/arduinoSrc1_0/WString.o (utoa) +/usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(cty_isfalse.o) + /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(isspace.o) (__ctype_isfalse) +/usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(strrev.o) + /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(itoa.o) (strrev) + +Allocating common symbols +Common symbol size file + +__brkval 0x2 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(malloc.o) +__flp 0x2 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(malloc.o) + +Memory Configuration + +Name Origin Length Attributes +text 0x00000000 0x00020000 xr +data 0x00800060 0x0000ffa0 rw !x +eeprom 0x00810000 0x00010000 rw !x +fuse 0x00820000 0x00000400 rw !x +lock 0x00830000 0x00000400 rw !x +signature 0x00840000 0x00000400 rw !x +*default* 0x00000000 0xffffffff + +Linker script and memory map + +Address of section .data set to 0x800100 +LOAD /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/crtm328p.o +LOAD obj/Release/adapticsBT.o +LOAD obj/Release/main.o +LOAD obj/Release/arduinoSrc1_0/CDC.o +LOAD obj/Release/arduinoSrc1_0/HID.o +LOAD obj/Release/arduinoSrc1_0/HardwareSerial.o +LOAD obj/Release/arduinoSrc1_0/IPAddress.o +LOAD obj/Release/arduinoSrc1_0/Print.o +LOAD obj/Release/arduinoSrc1_0/Stream.o +LOAD obj/Release/arduinoSrc1_0/Tone.o +LOAD obj/Release/arduinoSrc1_0/USBCore.o +LOAD obj/Release/arduinoSrc1_0/WInterrupts.o +LOAD obj/Release/arduinoSrc1_0/WMath.o +LOAD obj/Release/arduinoSrc1_0/WString.o +LOAD obj/Release/arduinoSrc1_0/new.o +LOAD obj/Release/arduinoSrc1_0/wiring.o +LOAD obj/Release/arduinoSrc1_0/wiring_analog.o +LOAD obj/Release/arduinoSrc1_0/wiring_digital.o +LOAD obj/Release/arduinoSrc1_0/wiring_pulse.o +LOAD obj/Release/arduinoSrc1_0/wiring_shift.o +LOAD /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a +LOAD /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libm.a +LOAD /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a +LOAD /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a +LOAD /usr/lib/gcc/avr/4.5.3/avr5/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 0x00000000 0x4d16 + *(.vectors) + .vectors 0x00000000 0x68 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/crtm328p.o + 0x00000000 __vectors + 0x00000000 __vector_default + *(.vectors) + *(.progmem.gcc*) + *(.progmem*) + .progmem.data 0x00000068 0x1 obj/Release/arduinoSrc1_0/Tone.o + .progmem.data 0x00000069 0x5a obj/Release/arduinoSrc1_0/wiring_digital.o + 0x00000069 port_to_mode_PGM + 0x00000073 port_to_output_PGM + 0x0000007d port_to_input_PGM + 0x00000087 digital_pin_to_port_PGM + 0x0000009b digital_pin_to_bit_mask_PGM + 0x000000af digital_pin_to_timer_PGM + 0x000000c4 . = ALIGN (0x2) + *fill* 0x000000c3 0x1 00 + 0x000000c4 __trampolines_start = . + *(.trampolines) + .trampolines 0x000000c4 0x0 linker stubs + *(.trampolines*) + 0x000000c4 __trampolines_end = . + *(.jumptables) + *(.jumptables*) + *(.lowtext) + *(.lowtext*) + 0x000000c4 __ctors_start = . + *(.ctors) + .ctors 0x000000c4 0x2 obj/Release/arduinoSrc1_0/HardwareSerial.o + .ctors 0x000000c6 0x2 obj/Release/arduinoSrc1_0/IPAddress.o + 0x000000c8 __ctors_end = . + 0x000000c8 __dtors_start = . + *(.dtors) + 0x000000c8 __dtors_end = . + SORT(*)(.ctors) + SORT(*)(.dtors) + *(.init0) + .init0 0x000000c8 0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/crtm328p.o + 0x000000c8 __init + *(.init0) + *(.init1) + *(.init1) + *(.init2) + .init2 0x000000c8 0xc /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/crtm328p.o + *(.init2) + *(.init3) + *(.init3) + *(.init4) + .init4 0x000000d4 0x16 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_copy_data.o) + 0x000000d4 __do_copy_data + .init4 0x000000ea 0x10 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_clear_bss.o) + 0x000000ea __do_clear_bss + *(.init4) + *(.init5) + *(.init5) + *(.init6) + .init6 0x000000fa 0x16 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_ctors.o) + 0x000000fa __do_global_ctors + *(.init6) + *(.init7) + *(.init7) + *(.init8) + *(.init8) + *(.init9) + .init9 0x00000110 0x8 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/crtm328p.o + *(.init9) + *(.text) + .text 0x00000118 0x4 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/crtm328p.o + 0x00000118 __vector_22 + 0x00000118 __vector_24 + 0x00000118 __vector_12 + 0x00000118 __bad_interrupt + 0x00000118 __vector_6 + 0x00000118 __vector_3 + 0x00000118 __vector_23 + 0x00000118 __vector_25 + 0x00000118 __vector_11 + 0x00000118 __vector_13 + 0x00000118 __vector_17 + 0x00000118 __vector_5 + 0x00000118 __vector_4 + 0x00000118 __vector_9 + 0x00000118 __vector_21 + 0x00000118 __vector_15 + 0x00000118 __vector_8 + 0x00000118 __vector_14 + 0x00000118 __vector_10 + 0x00000118 __vector_20 + .text 0x0000011c 0x9a obj/Release/adapticsBT.o + 0x0000011c _Z9advertisev + 0x00000152 _Z14setupBlueToothv + .text 0x000001b6 0x470 obj/Release/main.o + 0x000001b6 _Z10startWritev + 0x000001c8 _Z9startReadv + 0x000001da _Z11SCLKcycle_Wv + 0x00000204 _Z11SCLKcycle_Rv + 0x0000022e _Z9writeByteh + 0x0000026c _Z12writeStopBitv + 0x00000296 _Z13writeStartBitv + 0x000002d0 _Z8readBytev + 0x00000314 _Z8writeDMMv + 0x000003de main + .text 0x00000626 0x0 obj/Release/arduinoSrc1_0/CDC.o + .text 0x00000626 0x0 obj/Release/arduinoSrc1_0/HID.o + .text 0x00000626 0x526 obj/Release/arduinoSrc1_0/HardwareSerial.o + 0x00000626 _ZN14HardwareSerial9availableEv + 0x0000064c _ZN14HardwareSerial4peekEv + 0x00000684 _ZN14HardwareSerial4readEv + 0x000006c8 _ZN14HardwareSerial5flushEv + 0x000006f0 _ZN14HardwareSerial5writeEh + 0x00000762 _Z10store_charhP11ring_buffer + 0x00000796 _Z11serialEventv + 0x00000798 __vector_18 + 0x000007e8 _Z14serialEventRunv + 0x000007fa __vector_19 + 0x00000888 _ZN14HardwareSerialC2EP11ring_bufferS1_PVhS3_S3_S3_S3_hhhhh + 0x00000888 _ZN14HardwareSerialC1EP11ring_bufferS1_PVhS3_S3_S3_S3_hhhhh + 0x00000906 _ZN14HardwareSerial5beginEm + 0x00000a24 _ZN14HardwareSerial3endEv + .text 0x00000b4c 0x150 obj/Release/arduinoSrc1_0/IPAddress.o + 0x00000b4c _ZNK9IPAddress7printToER5Print + 0x00000bd2 _ZN9IPAddressC2Ev + 0x00000bd2 _ZN9IPAddressC1Ev + 0x00000be6 _ZN9IPAddressC1Ehhhh + 0x00000be6 _ZN9IPAddressC2Ehhhh + 0x00000bfe _ZN9IPAddressC2Em + 0x00000bfe _ZN9IPAddressC1Em + 0x00000c12 _ZN9IPAddressC1EPKh + 0x00000c12 _ZN9IPAddressC2EPKh + 0x00000c32 _ZN9IPAddressaSEPKh + 0x00000c52 _ZN9IPAddressaSEm + 0x00000c5e _ZN9IPAddresseqEPKh + .text 0x00000c9c 0x628 obj/Release/arduinoSrc1_0/Print.o + 0x00000c9c _ZN5Print5writeEPKhj + 0x00000cf0 _ZN5Print5writeEPKc + 0x00000d12 _ZN5Print5printEPK19__FlashStringHelper + 0x00000d58 _ZN5Print5printERK6String + 0x00000dbe _ZN5Print5printEPKc + 0x00000dc4 _ZN5Print5printEc + 0x00000dd4 _ZN5Print5printERK9Printable + 0x00000dea _ZN5Print7printlnEv + 0x00000e14 _ZN5Print7printlnEPK19__FlashStringHelper + 0x00000e3a _ZN5Print7printlnERK6String + 0x00000e60 _ZN5Print7printlnEPKc + 0x00000e86 _ZN5Print7printlnEc + 0x00000eac _ZN5Print7printlnERK9Printable + 0x00000ed2 _ZN5Print11printNumberEmh + 0x00000f86 _ZN5Print5printEmi + 0x00000fa4 _ZN5Print7printlnEmi + 0x00000fca _ZN5Print5printEji + 0x00000fd8 _ZN5Print7printlnEji + 0x00001006 _ZN5Print5printEhi + 0x00001016 _ZN5Print7printlnEhi + 0x00001046 _ZN5Print5printEli + 0x000010bc _ZN5Print7printlnEli + 0x000010e2 _ZN5Print5printEii + 0x000010f6 _ZN5Print7printlnEii + 0x0000112c _ZN5Print10printFloatEdh + 0x00001298 _ZN5Print5printEdi + 0x0000129e _ZN5Print7printlnEdi + .text 0x000012c4 0x4ee obj/Release/arduinoSrc1_0/Stream.o + 0x000012c4 _ZN6Stream9timedReadEv + 0x0000131c _ZN6Stream9timedPeekEv + 0x00001374 _ZN6Stream13peekNextDigitEv + 0x000013ac _ZN6Stream10setTimeoutEm + 0x000013b8 _ZN6Stream9findUntilEPcjS0_j + 0x0000146e _ZN6Stream9findUntilEPcS0_ + 0x000014a8 _ZN6Stream4findEPc + 0x000014b2 _ZN6Stream4findEPcj + 0x000014c8 _ZN6Stream8parseIntEc + 0x000015aa _ZN6Stream8parseIntEv + 0x000015b2 _ZN6Stream10parseFloatEc + 0x000016fc _ZN6Stream10parseFloatEv + 0x00001704 _ZN6Stream9readBytesEPcj + 0x0000174a _ZN6Stream14readBytesUntilEcPcj + .text 0x000017b2 0x544 obj/Release/arduinoSrc1_0/Tone.o + 0x000017b2 _Z4tonehjm + 0x00001bd0 _Z12disableTimerh + 0x00001c12 _Z6noToneh + 0x00001c3e __vector_7 + .text 0x00001cf6 0x0 obj/Release/arduinoSrc1_0/USBCore.o + .text 0x00001cf6 0x114 obj/Release/arduinoSrc1_0/WInterrupts.o + 0x00001cf6 attachInterrupt + 0x00001d36 detachInterrupt + 0x00001d56 __vector_1 + 0x00001db0 __vector_2 + .text 0x00001e0a 0x12a obj/Release/arduinoSrc1_0/WMath.o + 0x00001e0a _Z10randomSeedj + 0x00001e1a _Z6randoml + 0x00001e56 _Z6randomll + 0x00001e92 _Z3maplllll + 0x00001f24 _Z8makeWordj + 0x00001f26 _Z8makeWordhh + .text 0x00001f34 0x1024 obj/Release/arduinoSrc1_0/WString.o + 0x00001f34 _ZN6StringD1Ev + 0x00001f34 _ZN6StringD2Ev + 0x00001f40 _ZN6String10invalidateEv + 0x00001f64 _ZN6String12changeBufferEj + 0x00001f98 _ZN6String7reserveEj + 0x00001fd6 _ZN6String4copyEPKcj + 0x00002018 _ZN6StringC1EPKc + 0x00002018 _ZN6StringC2EPKc + 0x0000204e _ZN6StringaSERKS_ + 0x00002084 _ZN6StringC1ERKS_ + 0x00002084 _ZN6StringC2ERKS_ + 0x0000209a _ZN6StringaSEPKc + 0x000020ca _ZN6StringC2Emh + 0x000020ca _ZN6StringC1Emh + 0x0000212c _ZN6StringC1Elh + 0x0000212c _ZN6StringC2Elh + 0x0000218e _ZN6StringC2Ejh + 0x0000218e _ZN6StringC1Ejh + 0x000021ee _ZN6StringC1Eih + 0x000021ee _ZN6StringC2Eih + 0x0000224e _ZN6StringC1Ehh + 0x0000224e _ZN6StringC2Ehh + 0x000022b0 _ZN6StringC2Ec + 0x000022b0 _ZN6StringC1Ec + 0x000022e2 _ZN6String6concatEPKcj + 0x0000233a _ZN6String6concatERKS_ + 0x0000234a _ZN6String6concatEPKc + 0x0000236c _ZN6String6concatEc + 0x00002392 _ZN6String6concatEh + 0x000023ec _ZN6String6concatEi + 0x00002450 _ZN6String6concatEj + 0x000024ae _ZN6String6concatEl + 0x00002514 _ZN6String6concatEm + 0x0000257a _ZplRK15StringSumHelperRK6String + 0x000025a0 _ZplRK15StringSumHelperPKc + 0x000025d4 _ZplRK15StringSumHelperc + 0x000025f0 _ZplRK15StringSumHelperh + 0x0000260c _ZplRK15StringSumHelperi + 0x00002628 _ZplRK15StringSumHelperj + 0x00002644 _ZplRK15StringSumHelperl + 0x00002660 _ZplRK15StringSumHelperm + 0x0000267c _ZNK6String9compareToERKS_ + 0x000026e8 _ZNK6String6equalsERKS_ + 0x0000270a _ZNK6String6equalsEPKc + 0x00002750 _ZNK6StringltERKS_ + 0x0000275e _ZNK6StringgtERKS_ + 0x00002770 _ZNK6StringleERKS_ + 0x00002782 _ZNK6StringgeERKS_ + 0x00002792 _ZNK6String16equalsIgnoreCaseERKS_ + 0x00002806 _ZNK6String10startsWithERKS_j + 0x00002852 _ZNK6String10startsWithERKS_ + 0x00002872 _ZNK6String8endsWithERKS_ + 0x000028bc _ZN6String9setCharAtEjc + 0x000028d6 _ZN6StringixEj + 0x000028fc _ZNK6StringixEj + 0x00002922 _ZNK6String6charAtEj + 0x00002928 _ZNK6String8getBytesEPhjj + 0x00002980 _ZNK6String7indexOfEcj + 0x000029bc _ZNK6String7indexOfEc + 0x000029c6 _ZNK6String7indexOfERKS_j + 0x00002a02 _ZNK6String7indexOfERKS_ + 0x00002a0c _ZNK6String11lastIndexOfEcj + 0x00002a7a _ZNK6String11lastIndexOfEc + 0x00002a8a _ZNK6String11lastIndexOfERKS_j + 0x00002b24 _ZNK6String11lastIndexOfERKS_ + 0x00002b3a _ZNK6String9substringEjj + 0x00002bdc _ZNK6String9substringEj + 0x00002bf4 _ZN6String7replaceEcc + 0x00002c12 _ZN6String7replaceERKS_S1_ + 0x00002e26 _ZN6String11toLowerCaseEv + 0x00002e4e _ZN6String11toUpperCaseEv + 0x00002e76 _ZN6String4trimEv + 0x00002f38 _ZNK6String5toIntEv + .text 0x00002f58 0x2c obj/Release/arduinoSrc1_0/new.o + 0x00002f58 _Znwj + 0x00002f5e _ZdlPv + 0x00002f64 __cxa_guard_acquire + 0x00002f78 __cxa_guard_release + 0x00002f80 __cxa_guard_abort + 0x00002f82 __cxa_pure_virtual + .text 0x00002f84 0x1e8 obj/Release/arduinoSrc1_0/wiring.o + 0x00002f84 __vector_16 + 0x0000302c millis + 0x00003048 micros + 0x00003094 delay + 0x000030e2 delayMicroseconds + 0x000030f6 init + .text 0x0000316c 0x108 obj/Release/arduinoSrc1_0/wiring_analog.o + 0x0000316c analogReference + 0x00003172 analogRead + 0x000031b4 analogWrite + .text 0x00003274 0x166 obj/Release/arduinoSrc1_0/wiring_digital.o + 0x000032ce pinMode + 0x00003316 digitalWrite + 0x00003386 digitalRead + .text 0x000033da 0x130 obj/Release/arduinoSrc1_0/wiring_pulse.o + 0x000033da pulseIn + .text 0x0000350a 0x10a obj/Release/arduinoSrc1_0/wiring_shift.o + 0x0000350a shiftIn + 0x0000358e shiftOut + .text 0x00003614 0x0 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_mulsi3.o) + .text 0x00003614 0x0 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_divmodhi4.o) + .text 0x00003614 0x0 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_udivmodsi4.o) + .text 0x00003614 0x0 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_divmodsi4.o) + .text 0x00003614 0x0 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_exit.o) + .text 0x00003614 0x0 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_copy_data.o) + .text 0x00003614 0x0 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_clear_bss.o) + .text 0x00003614 0x0 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_ctors.o) + .text 0x00003614 0x58 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_fixunssfsi.o) + 0x00003614 __fixunssfsi + .text 0x0000366c 0x350 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_addsub_sf.o) + 0x00003900 __addsf3 + 0x0000395a __subsf3 + .text 0x000039bc 0x1f4 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_mul_sf.o) + 0x000039bc __mulsf3 + .text 0x00003bb0 0x15c /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_div_sf.o) + 0x00003bb0 __divsf3 + .text 0x00003d0c 0x60 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_ge_sf.o) + 0x00003d0c __gesf2 + .text 0x00003d6c 0x60 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_lt_sf.o) + 0x00003d6c __ltsf2 + .text 0x00003dcc 0xc0 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_si_to_sf.o) + 0x00003dcc __floatsisf + .text 0x00003e8c 0xa4 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_sf_to_si.o) + 0x00003e8c __fixsfsi + .text 0x00003f30 0x0 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_thenan_sf.o) + .text 0x00003f30 0xf0 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_usi_to_sf.o) + 0x00003f30 __floatunsisf + .text 0x00004020 0x0 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_udivmodhi4.o) + .text 0x00004020 0x0 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_prologue.o) + .text 0x00004020 0x0 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_epilogue.o) + .text 0x00004020 0x0 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_tablejump.o) + .text 0x00004020 0xb4 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_clzsi2.o) + 0x00004020 __clzsi2 + .text 0x000040d4 0x19c /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_pack_sf.o) + 0x000040d4 __pack_f + .text 0x00004270 0xd2 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_unpack_sf.o) + 0x00004270 __unpack_f + .text 0x00004342 0xb2 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_fpcmp_parts_sf.o) + 0x00004342 __fpcmp_parts_f + .text 0x000043f4 0x0 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_clz.o) + .text 0x000043f4 0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(malloc.o) + .text 0x000043f4 0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(random.o) + .text 0x000043f4 0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(realloc.o) + .text 0x000043f4 0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(atol.o) + .text 0x000043f4 0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(isspace.o) + .text 0x000043f4 0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(tolower.o) + .text 0x000043f4 0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(toupper.o) + .text 0x000043f4 0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(memcmp.o) + .text 0x000043f4 0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(memcpy.o) + .text 0x000043f4 0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(memmove.o) + .text 0x000043f4 0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(strchr.o) + .text 0x000043f4 0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(strcmp.o) + .text 0x000043f4 0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(strcpy.o) + .text 0x000043f4 0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(strncmp.o) + .text 0x000043f4 0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(strncpy.o) + .text 0x000043f4 0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(strrchr.o) + .text 0x000043f4 0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(strstr.o) + .text 0x000043f4 0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(itoa.o) + .text 0x000043f4 0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(ltoa.o) + .text 0x000043f4 0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(mulsi10.o) + .text 0x000043f4 0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(ultoa.o) + .text 0x000043f4 0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(utoa.o) + .text 0x000043f4 0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(cty_isfalse.o) + .text 0x000043f4 0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(strrev.o) + 0x000043f4 . = ALIGN (0x2) + *(.text.*) + .text.libgcc 0x000043f4 0x3e /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_mulsi3.o) + 0x000043f4 __mulsi3 + .text.libgcc 0x00004432 0x26 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_divmodhi4.o) + 0x00004432 __divmodhi4 + 0x00004432 _div + .text.libgcc 0x00004458 0x44 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_udivmodsi4.o) + 0x00004458 __udivmodsi4 + .text.libgcc 0x0000449c 0x36 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_divmodsi4.o) + 0x0000449c __divmodsi4 + .text.libgcc 0x000044d2 0x0 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_exit.o) + .text.libgcc 0x000044d2 0x0 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_copy_data.o) + .text.libgcc 0x000044d2 0x0 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_clear_bss.o) + .text.libgcc 0x000044d2 0x0 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_ctors.o) + .text.libgcc 0x000044d2 0x28 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_udivmodhi4.o) + 0x000044d2 __udivmodhi4 + .text.libgcc 0x000044fa 0x38 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_prologue.o) + 0x000044fa __prologue_saves__ + .text.libgcc 0x00004532 0x36 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_epilogue.o) + 0x00004532 __epilogue_restores__ + .text.libgcc 0x00004568 0xc /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_tablejump.o) + 0x00004568 __tablejump2__ + 0x0000456c __tablejump__ + .text.avr-libc + 0x00004574 0x266 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(malloc.o) + 0x00004574 malloc + 0x000046a8 free + .text.avr-libc + 0x000047da 0xaa /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(random.o) + 0x00004862 random_r + 0x00004868 random + 0x00004872 srandom + .text.avr-libc + 0x00004884 0x196 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(realloc.o) + 0x00004884 realloc + .text.avr-libc + 0x00004a1a 0x4e /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(atol.o) + 0x00004a1a atol + .text.avr-libc + 0x00004a68 0x10 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(isspace.o) + 0x00004a68 isspace + .text.avr-libc + 0x00004a78 0x10 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(tolower.o) + 0x00004a78 tolower + .text.avr-libc + 0x00004a88 0x10 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(toupper.o) + 0x00004a88 toupper + .text.avr-libc + 0x00004a98 0x1a /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(memcmp.o) + 0x00004a98 memcmp + .text.avr-libc + 0x00004ab2 0x12 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(memcpy.o) + 0x00004ab2 memcpy + .text.avr-libc + 0x00004ac4 0x24 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(memmove.o) + 0x00004ac4 memmove + .text.avr-libc + 0x00004ae8 0x16 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(strchr.o) + 0x00004ae8 strchr + .text.avr-libc + 0x00004afe 0x12 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(strcmp.o) + 0x00004afe strcmp + .text.avr-libc + 0x00004b10 0xe /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(strcpy.o) + 0x00004b10 strcpy + .text.avr-libc + 0x00004b1e 0x1c /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(strncmp.o) + 0x00004b1e strncmp + .text.avr-libc + 0x00004b3a 0x1e /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(strncpy.o) + 0x00004b3a strncpy + .text.avr-libc + 0x00004b58 0x16 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(strrchr.o) + 0x00004b58 strrchr + .text.avr-libc + 0x00004b6e 0x34 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(strstr.o) + 0x00004b6e strstr + .text.avr-libc + 0x00004ba2 0x42 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(itoa.o) + 0x00004ba2 itoa + .text.avr-libc + 0x00004be4 0x68 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(ltoa.o) + 0x00004be4 ltoa + .text.avr-libc + 0x00004c4c 0x2a /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(mulsi10.o) + 0x00004c4c __mulsi_const_10 + .text.avr-libc + 0x00004c76 0x4a /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(ultoa.o) + 0x00004c76 ultoa + .text.avr-libc + 0x00004cc0 0x2c /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(utoa.o) + 0x00004cc0 utoa + .text.avr-libc + 0x00004cec 0x6 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(cty_isfalse.o) + 0x00004cec __ctype_isfalse + 0x00004cf0 __ctype_istrue + .text.avr-libc + 0x00004cf2 0x20 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(strrev.o) + 0x00004cf2 strrev + 0x00004d12 . = ALIGN (0x2) + *(.fini9) + .fini9 0x00004d12 0x0 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_exit.o) + 0x00004d12 exit + 0x00004d12 _exit + *(.fini9) + *(.fini8) + *(.fini8) + *(.fini7) + *(.fini7) + *(.fini6) + *(.fini6) + *(.fini5) + *(.fini5) + *(.fini4) + *(.fini4) + *(.fini3) + *(.fini3) + *(.fini2) + *(.fini2) + *(.fini1) + *(.fini1) + *(.fini0) + .fini0 0x00004d12 0x4 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_exit.o) + *(.fini0) + 0x00004d16 _etext = . + +.data 0x00800100 0x1c0 load address 0x00004d16 + 0x00800100 PROVIDE (__data_start, .) + *(.data) + .data 0x00800100 0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/crtm328p.o + .data 0x00800100 0x72 obj/Release/adapticsBT.o + .data 0x00800172 0x3 obj/Release/main.o + 0x00800172 packetSize + .data 0x00800175 0x0 obj/Release/arduinoSrc1_0/CDC.o + .data 0x00800175 0x0 obj/Release/arduinoSrc1_0/HID.o + .data 0x00800175 0x20 obj/Release/arduinoSrc1_0/HardwareSerial.o + 0x00800175 _ZTV14HardwareSerial + 0x00800185 _ZTV6Stream + .data 0x00800195 0xc obj/Release/arduinoSrc1_0/IPAddress.o + 0x00800195 _ZTV9IPAddress + 0x0080019b _ZTV9Printable + .data 0x008001a1 0xa obj/Release/arduinoSrc1_0/Print.o + 0x008001a3 _ZTV5Print + .data 0x008001ab 0x0 obj/Release/arduinoSrc1_0/Stream.o + .data 0x008001ab 0x1 obj/Release/arduinoSrc1_0/Tone.o + .data 0x008001ac 0x0 obj/Release/arduinoSrc1_0/USBCore.o + .data 0x008001ac 0x0 obj/Release/arduinoSrc1_0/WInterrupts.o + .data 0x008001ac 0x0 obj/Release/arduinoSrc1_0/WMath.o + .data 0x008001ac 0x1 obj/Release/arduinoSrc1_0/WString.o + .data 0x008001ad 0x0 obj/Release/arduinoSrc1_0/new.o + .data 0x008001ad 0x0 obj/Release/arduinoSrc1_0/wiring.o + .data 0x008001ad 0x1 obj/Release/arduinoSrc1_0/wiring_analog.o + 0x008001ad analog_reference + .data 0x008001ae 0x0 obj/Release/arduinoSrc1_0/wiring_digital.o + .data 0x008001ae 0x0 obj/Release/arduinoSrc1_0/wiring_pulse.o + .data 0x008001ae 0x0 obj/Release/arduinoSrc1_0/wiring_shift.o + .data 0x008001ae 0x0 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_mulsi3.o) + .data 0x008001ae 0x0 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_divmodhi4.o) + .data 0x008001ae 0x0 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_udivmodsi4.o) + .data 0x008001ae 0x0 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_divmodsi4.o) + .data 0x008001ae 0x0 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_exit.o) + .data 0x008001ae 0x0 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_copy_data.o) + .data 0x008001ae 0x0 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_clear_bss.o) + .data 0x008001ae 0x0 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_ctors.o) + .data 0x008001ae 0x0 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_fixunssfsi.o) + .data 0x008001ae 0x0 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_addsub_sf.o) + .data 0x008001ae 0x0 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_mul_sf.o) + .data 0x008001ae 0x0 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_div_sf.o) + .data 0x008001ae 0x0 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_ge_sf.o) + .data 0x008001ae 0x0 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_lt_sf.o) + .data 0x008001ae 0x0 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_si_to_sf.o) + .data 0x008001ae 0x0 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_sf_to_si.o) + .data 0x008001ae 0x8 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_thenan_sf.o) + 0x008001ae __thenan_sf + .data 0x008001b6 0x0 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_usi_to_sf.o) + .data 0x008001b6 0x0 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_udivmodhi4.o) + .data 0x008001b6 0x0 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_prologue.o) + .data 0x008001b6 0x0 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_epilogue.o) + .data 0x008001b6 0x0 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_tablejump.o) + .data 0x008001b6 0x0 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_clzsi2.o) + .data 0x008001b6 0x0 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_pack_sf.o) + .data 0x008001b6 0x0 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_unpack_sf.o) + .data 0x008001b6 0x0 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_fpcmp_parts_sf.o) + .data 0x008001b6 0x100 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_clz.o) + 0x008001b6 __clz_tab + .data 0x008002b6 0x6 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(malloc.o) + 0x008002b6 __malloc_margin + 0x008002b8 __malloc_heap_start + 0x008002ba __malloc_heap_end + .data 0x008002bc 0x4 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(random.o) + .data 0x008002c0 0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(realloc.o) + .data 0x008002c0 0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(atol.o) + .data 0x008002c0 0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(isspace.o) + .data 0x008002c0 0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(tolower.o) + .data 0x008002c0 0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(toupper.o) + .data 0x008002c0 0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(memcmp.o) + .data 0x008002c0 0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(memcpy.o) + .data 0x008002c0 0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(memmove.o) + .data 0x008002c0 0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(strchr.o) + .data 0x008002c0 0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(strcmp.o) + .data 0x008002c0 0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(strcpy.o) + .data 0x008002c0 0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(strncmp.o) + .data 0x008002c0 0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(strncpy.o) + .data 0x008002c0 0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(strrchr.o) + .data 0x008002c0 0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(strstr.o) + .data 0x008002c0 0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(itoa.o) + .data 0x008002c0 0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(ltoa.o) + .data 0x008002c0 0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(mulsi10.o) + .data 0x008002c0 0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(ultoa.o) + .data 0x008002c0 0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(utoa.o) + .data 0x008002c0 0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(cty_isfalse.o) + .data 0x008002c0 0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(strrev.o) + *(.data*) + *(.rodata) + *(.rodata*) + *(.gnu.linkonce.d*) + 0x008002c0 . = ALIGN (0x2) + 0x008002c0 _edata = . + 0x008002c0 PROVIDE (__data_end, .) + +.bss 0x008002c0 0xee + 0x008002c0 PROVIDE (__bss_start, .) + *(.bss) + .bss 0x008002c0 0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/crtm328p.o + .bss 0x008002c0 0x0 obj/Release/adapticsBT.o + .bss 0x008002c0 0x1a obj/Release/main.o + 0x008002c0 connected + 0x008002c1 data + 0x008002cb CB_SHBP + 0x008002cc CB_function + 0x008002cd CB_VARCrange + 0x008002ce CB_FREQrange + 0x008002cf CB_BUZfreq + 0x008002d0 CB_ADCrate + 0x008002d1 CB_ACmode + 0x008002d2 CB_PEAKmode + 0x008002d3 CB_PCALmode + 0x008002d4 CB_LPFbw + 0x008002d5 CB_EXTdiode + 0x008002d6 CB_OPconf + 0x008002d7 CB_FREQinprest + 0x008002d8 CB_ADPext + 0x008002d9 CB_DCfs + .bss 0x008002da 0x0 obj/Release/arduinoSrc1_0/CDC.o + .bss 0x008002da 0x0 obj/Release/arduinoSrc1_0/HID.o + .bss 0x008002da 0xa7 obj/Release/arduinoSrc1_0/HardwareSerial.o + 0x008002da rx_buffer + 0x0080031e tx_buffer + 0x00800362 Serial + .bss 0x00800381 0x6 obj/Release/arduinoSrc1_0/IPAddress.o + .bss 0x00800387 0x0 obj/Release/arduinoSrc1_0/Print.o + .bss 0x00800387 0x0 obj/Release/arduinoSrc1_0/Stream.o + .bss 0x00800387 0x15 obj/Release/arduinoSrc1_0/Tone.o + 0x00800387 timer0_toggle_count + 0x0080038b timer0_pin_port + 0x0080038d timer0_pin_mask + 0x0080038e timer1_toggle_count + 0x00800392 timer1_pin_port + 0x00800394 timer1_pin_mask + 0x00800395 timer2_toggle_count + 0x00800399 timer2_pin_port + 0x0080039b timer2_pin_mask + .bss 0x0080039c 0x0 obj/Release/arduinoSrc1_0/USBCore.o + .bss 0x0080039c 0x4 obj/Release/arduinoSrc1_0/WInterrupts.o + .bss 0x008003a0 0x0 obj/Release/arduinoSrc1_0/WMath.o + .bss 0x008003a0 0x1 obj/Release/arduinoSrc1_0/WString.o + .bss 0x008003a1 0x0 obj/Release/arduinoSrc1_0/new.o + .bss 0x008003a1 0x9 obj/Release/arduinoSrc1_0/wiring.o + 0x008003a1 timer0_overflow_count + 0x008003a5 timer0_millis + .bss 0x008003aa 0x0 obj/Release/arduinoSrc1_0/wiring_analog.o + .bss 0x008003aa 0x0 obj/Release/arduinoSrc1_0/wiring_digital.o + .bss 0x008003aa 0x0 obj/Release/arduinoSrc1_0/wiring_pulse.o + .bss 0x008003aa 0x0 obj/Release/arduinoSrc1_0/wiring_shift.o + .bss 0x008003aa 0x0 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_mulsi3.o) + .bss 0x008003aa 0x0 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_divmodhi4.o) + .bss 0x008003aa 0x0 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_udivmodsi4.o) + .bss 0x008003aa 0x0 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_divmodsi4.o) + .bss 0x008003aa 0x0 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_exit.o) + .bss 0x008003aa 0x0 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_copy_data.o) + .bss 0x008003aa 0x0 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_clear_bss.o) + .bss 0x008003aa 0x0 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_ctors.o) + .bss 0x008003aa 0x0 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_fixunssfsi.o) + .bss 0x008003aa 0x0 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_addsub_sf.o) + .bss 0x008003aa 0x0 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_mul_sf.o) + .bss 0x008003aa 0x0 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_div_sf.o) + .bss 0x008003aa 0x0 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_ge_sf.o) + .bss 0x008003aa 0x0 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_lt_sf.o) + .bss 0x008003aa 0x0 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_si_to_sf.o) + .bss 0x008003aa 0x0 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_sf_to_si.o) + .bss 0x008003aa 0x0 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_thenan_sf.o) + .bss 0x008003aa 0x0 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_usi_to_sf.o) + .bss 0x008003aa 0x0 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_udivmodhi4.o) + .bss 0x008003aa 0x0 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_prologue.o) + .bss 0x008003aa 0x0 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_epilogue.o) + .bss 0x008003aa 0x0 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_tablejump.o) + .bss 0x008003aa 0x0 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_clzsi2.o) + .bss 0x008003aa 0x0 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_pack_sf.o) + .bss 0x008003aa 0x0 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_unpack_sf.o) + .bss 0x008003aa 0x0 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_fpcmp_parts_sf.o) + .bss 0x008003aa 0x0 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_clz.o) + .bss 0x008003aa 0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(malloc.o) + .bss 0x008003aa 0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(random.o) + .bss 0x008003aa 0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(realloc.o) + .bss 0x008003aa 0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(atol.o) + .bss 0x008003aa 0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(isspace.o) + .bss 0x008003aa 0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(tolower.o) + .bss 0x008003aa 0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(toupper.o) + .bss 0x008003aa 0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(memcmp.o) + .bss 0x008003aa 0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(memcpy.o) + .bss 0x008003aa 0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(memmove.o) + .bss 0x008003aa 0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(strchr.o) + .bss 0x008003aa 0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(strcmp.o) + .bss 0x008003aa 0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(strcpy.o) + .bss 0x008003aa 0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(strncmp.o) + .bss 0x008003aa 0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(strncpy.o) + .bss 0x008003aa 0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(strrchr.o) + .bss 0x008003aa 0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(strstr.o) + .bss 0x008003aa 0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(itoa.o) + .bss 0x008003aa 0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(ltoa.o) + .bss 0x008003aa 0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(mulsi10.o) + .bss 0x008003aa 0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(ultoa.o) + .bss 0x008003aa 0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(utoa.o) + .bss 0x008003aa 0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(cty_isfalse.o) + .bss 0x008003aa 0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(strrev.o) + *(.bss*) + *(COMMON) + COMMON 0x008003aa 0x4 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(malloc.o) + 0x008003aa __brkval + 0x008003ac __flp + 0x008003ae PROVIDE (__bss_end, .) + 0x00004d16 __data_load_start = LOADADDR (.data) + 0x00004ed6 __data_load_end = (__data_load_start + SIZEOF (.data)) + +.noinit 0x008003ae 0x0 + 0x008003ae PROVIDE (__noinit_start, .) + *(.noinit*) + 0x008003ae PROVIDE (__noinit_end, .) + 0x008003ae _end = . + 0x008003ae PROVIDE (__heap_start, .) + +.eeprom 0x00810000 0x0 + *(.eeprom*) + 0x00810000 __eeprom_end = . + +.fuse + *(.fuse) + *(.lfuse) + *(.hfuse) + *(.efuse) + +.lock + *(.lock*) + +.signature + *(.signature*) + +.stab 0x00000000 0x2928 + *(.stab) + .stab 0x00000000 0x6cc /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/crtm328p.o + .stab 0x000006cc 0x750 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(malloc.o) + 0x75c (size before relaxing) + .stab 0x00000e1c 0x2d0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(random.o) + 0x330 (size before relaxing) + .stab 0x000010ec 0x3cc /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(realloc.o) + 0x5c4 (size before relaxing) + .stab 0x000014b8 0x1e0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(atol.o) + 0x1ec (size before relaxing) + .stab 0x00001698 0x9c /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(isspace.o) + 0xa8 (size before relaxing) + .stab 0x00001734 0x9c /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(tolower.o) + 0xa8 (size before relaxing) + .stab 0x000017d0 0x9c /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(toupper.o) + 0xa8 (size before relaxing) + .stab 0x0000186c 0xb4 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(memcmp.o) + 0xc0 (size before relaxing) + .stab 0x00001920 0x84 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(memcpy.o) + 0x90 (size before relaxing) + .stab 0x000019a4 0xe4 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(memmove.o) + 0xf0 (size before relaxing) + .stab 0x00001a88 0x9c /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(strchr.o) + 0xa8 (size before relaxing) + .stab 0x00001b24 0x84 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(strcmp.o) + 0x90 (size before relaxing) + .stab 0x00001ba8 0x6c /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(strcpy.o) + 0x78 (size before relaxing) + .stab 0x00001c14 0xc0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(strncmp.o) + 0xcc (size before relaxing) + .stab 0x00001cd4 0xcc /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(strncpy.o) + 0xd8 (size before relaxing) + .stab 0x00001da0 0x9c /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(strrchr.o) + 0xa8 (size before relaxing) + .stab 0x00001e3c 0x150 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(strstr.o) + 0x15c (size before relaxing) + .stab 0x00001f8c 0x1b0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(itoa.o) + 0x1bc (size before relaxing) + .stab 0x0000213c 0x294 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(ltoa.o) + 0x2a0 (size before relaxing) + .stab 0x000023d0 0x114 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(mulsi10.o) + 0x120 (size before relaxing) + .stab 0x000024e4 0x1e0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(ultoa.o) + 0x1ec (size before relaxing) + .stab 0x000026c4 0x12c /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(utoa.o) + 0x138 (size before relaxing) + .stab 0x000027f0 0x60 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(cty_isfalse.o) + 0x6c (size before relaxing) + .stab 0x00002850 0xd8 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(strrev.o) + 0xe4 (size before relaxing) + +.stabstr 0x00000000 0xd28 + *(.stabstr) + .stabstr 0x00000000 0xd28 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/crtm328p.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(bin/Release/ESS1995test_328p.elf elf32-avr) +LOAD linker stubs + +Cross Reference Table + +Symbol File +CB_ACmode obj/Release/main.o +CB_ADCrate obj/Release/main.o +CB_ADPext obj/Release/main.o +CB_BUZfreq obj/Release/main.o +CB_DCfs obj/Release/main.o +CB_EXTdiode obj/Release/main.o +CB_FREQinprest obj/Release/main.o +CB_FREQrange obj/Release/main.o +CB_LPFbw obj/Release/main.o +CB_OPconf obj/Release/main.o +CB_PCALmode obj/Release/main.o +CB_PEAKmode obj/Release/main.o +CB_SHBP obj/Release/main.o +CB_VARCrange obj/Release/main.o +CB_function obj/Release/main.o +HardwareSerial::HardwareSerial(ring_buffer*, ring_buffer*, unsigned char volatile*, unsigned char volatile*, unsigned char volatile*, unsigned char volatile*, unsigned char volatile*, unsigned char, unsigned char, unsigned char, unsigned char, unsigned char) obj/Release/arduinoSrc1_0/HardwareSerial.o +HardwareSerial::HardwareSerial(ring_buffer*, ring_buffer*, unsigned char volatile*, unsigned char volatile*, unsigned char volatile*, unsigned char volatile*, unsigned char volatile*, unsigned char, unsigned char, unsigned char, unsigned char, unsigned char) obj/Release/arduinoSrc1_0/HardwareSerial.o +HardwareSerial::available() obj/Release/arduinoSrc1_0/HardwareSerial.o + obj/Release/main.o +HardwareSerial::begin(unsigned long) obj/Release/arduinoSrc1_0/HardwareSerial.o + obj/Release/adapticsBT.o +HardwareSerial::end() obj/Release/arduinoSrc1_0/HardwareSerial.o +HardwareSerial::flush() obj/Release/arduinoSrc1_0/HardwareSerial.o + obj/Release/adapticsBT.o +HardwareSerial::peek() obj/Release/arduinoSrc1_0/HardwareSerial.o +HardwareSerial::read() obj/Release/arduinoSrc1_0/HardwareSerial.o + obj/Release/main.o +HardwareSerial::write(unsigned char) obj/Release/arduinoSrc1_0/HardwareSerial.o +IPAddress::IPAddress() obj/Release/arduinoSrc1_0/IPAddress.o +IPAddress::IPAddress() obj/Release/arduinoSrc1_0/IPAddress.o +IPAddress::IPAddress(unsigned char const*) obj/Release/arduinoSrc1_0/IPAddress.o +IPAddress::IPAddress(unsigned char const*) obj/Release/arduinoSrc1_0/IPAddress.o +IPAddress::IPAddress(unsigned char, unsigned char, unsigned char, unsigned char) obj/Release/arduinoSrc1_0/IPAddress.o +IPAddress::IPAddress(unsigned char, unsigned char, unsigned char, unsigned char) obj/Release/arduinoSrc1_0/IPAddress.o +IPAddress::IPAddress(unsigned long) obj/Release/arduinoSrc1_0/IPAddress.o +IPAddress::IPAddress(unsigned long) obj/Release/arduinoSrc1_0/IPAddress.o +IPAddress::operator=(unsigned char const*) obj/Release/arduinoSrc1_0/IPAddress.o +IPAddress::operator=(unsigned long) obj/Release/arduinoSrc1_0/IPAddress.o +IPAddress::operator==(unsigned char const*) obj/Release/arduinoSrc1_0/IPAddress.o +IPAddress::printTo(Print&) const obj/Release/arduinoSrc1_0/IPAddress.o +Print::print(Printable const&) obj/Release/arduinoSrc1_0/Print.o +Print::print(String const&) obj/Release/arduinoSrc1_0/Print.o +Print::print(__FlashStringHelper const*) obj/Release/arduinoSrc1_0/Print.o +Print::print(char const*) obj/Release/arduinoSrc1_0/Print.o + obj/Release/adapticsBT.o +Print::print(char) obj/Release/arduinoSrc1_0/Print.o + obj/Release/arduinoSrc1_0/IPAddress.o +Print::print(double, int) obj/Release/arduinoSrc1_0/Print.o +Print::print(int, int) obj/Release/arduinoSrc1_0/Print.o +Print::print(long, int) obj/Release/arduinoSrc1_0/Print.o +Print::print(unsigned char, int) obj/Release/arduinoSrc1_0/Print.o + obj/Release/arduinoSrc1_0/IPAddress.o +Print::print(unsigned int, int) obj/Release/arduinoSrc1_0/Print.o +Print::print(unsigned long, int) obj/Release/arduinoSrc1_0/Print.o +Print::printFloat(double, unsigned char) obj/Release/arduinoSrc1_0/Print.o +Print::printNumber(unsigned long, unsigned char) obj/Release/arduinoSrc1_0/Print.o +Print::println() obj/Release/arduinoSrc1_0/Print.o +Print::println(Printable const&) obj/Release/arduinoSrc1_0/Print.o +Print::println(String const&) obj/Release/arduinoSrc1_0/Print.o +Print::println(__FlashStringHelper const*) obj/Release/arduinoSrc1_0/Print.o +Print::println(char const*) obj/Release/arduinoSrc1_0/Print.o +Print::println(char) obj/Release/arduinoSrc1_0/Print.o +Print::println(double, int) obj/Release/arduinoSrc1_0/Print.o +Print::println(int, int) obj/Release/arduinoSrc1_0/Print.o +Print::println(long, int) obj/Release/arduinoSrc1_0/Print.o +Print::println(unsigned char, int) obj/Release/arduinoSrc1_0/Print.o +Print::println(unsigned int, int) obj/Release/arduinoSrc1_0/Print.o +Print::println(unsigned long, int) obj/Release/arduinoSrc1_0/Print.o +Print::write(char const*) obj/Release/arduinoSrc1_0/Print.o +Print::write(unsigned char const*, unsigned int) obj/Release/arduinoSrc1_0/Print.o + obj/Release/arduinoSrc1_0/HardwareSerial.o + obj/Release/main.o +SCLKcycle_R() obj/Release/main.o +SCLKcycle_W() obj/Release/main.o +Serial obj/Release/arduinoSrc1_0/HardwareSerial.o + obj/Release/main.o + obj/Release/adapticsBT.o +Stream::find(char*) obj/Release/arduinoSrc1_0/Stream.o +Stream::find(char*, unsigned int) obj/Release/arduinoSrc1_0/Stream.o +Stream::findUntil(char*, char*) obj/Release/arduinoSrc1_0/Stream.o +Stream::findUntil(char*, unsigned int, char*, unsigned int) obj/Release/arduinoSrc1_0/Stream.o +Stream::parseFloat() obj/Release/arduinoSrc1_0/Stream.o +Stream::parseFloat(char) obj/Release/arduinoSrc1_0/Stream.o +Stream::parseInt() obj/Release/arduinoSrc1_0/Stream.o +Stream::parseInt(char) obj/Release/arduinoSrc1_0/Stream.o +Stream::peekNextDigit() obj/Release/arduinoSrc1_0/Stream.o +Stream::readBytes(char*, unsigned int) obj/Release/arduinoSrc1_0/Stream.o +Stream::readBytesUntil(char, char*, unsigned int) obj/Release/arduinoSrc1_0/Stream.o +Stream::setTimeout(unsigned long) obj/Release/arduinoSrc1_0/Stream.o +Stream::timedPeek() obj/Release/arduinoSrc1_0/Stream.o +Stream::timedRead() obj/Release/arduinoSrc1_0/Stream.o +String::String(String const&) obj/Release/arduinoSrc1_0/WString.o +String::String(String const&) obj/Release/arduinoSrc1_0/WString.o +String::String(char const*) obj/Release/arduinoSrc1_0/WString.o +String::String(char const*) obj/Release/arduinoSrc1_0/WString.o +String::String(char) obj/Release/arduinoSrc1_0/WString.o +String::String(char) obj/Release/arduinoSrc1_0/WString.o +String::String(int, unsigned char) obj/Release/arduinoSrc1_0/WString.o +String::String(int, unsigned char) obj/Release/arduinoSrc1_0/WString.o +String::String(long, unsigned char) obj/Release/arduinoSrc1_0/WString.o +String::String(long, unsigned char) obj/Release/arduinoSrc1_0/WString.o +String::String(unsigned char, unsigned char) obj/Release/arduinoSrc1_0/WString.o +String::String(unsigned char, unsigned char) obj/Release/arduinoSrc1_0/WString.o +String::String(unsigned int, unsigned char) obj/Release/arduinoSrc1_0/WString.o +String::String(unsigned int, unsigned char) obj/Release/arduinoSrc1_0/WString.o +String::String(unsigned long, unsigned char) obj/Release/arduinoSrc1_0/WString.o +String::String(unsigned long, unsigned char) obj/Release/arduinoSrc1_0/WString.o +String::changeBuffer(unsigned int) obj/Release/arduinoSrc1_0/WString.o +String::charAt(unsigned int) const obj/Release/arduinoSrc1_0/WString.o +String::compareTo(String const&) const obj/Release/arduinoSrc1_0/WString.o +String::concat(String const&) obj/Release/arduinoSrc1_0/WString.o +String::concat(char const*) obj/Release/arduinoSrc1_0/WString.o +String::concat(char const*, unsigned int) obj/Release/arduinoSrc1_0/WString.o +String::concat(char) obj/Release/arduinoSrc1_0/WString.o +String::concat(int) obj/Release/arduinoSrc1_0/WString.o +String::concat(long) obj/Release/arduinoSrc1_0/WString.o +String::concat(unsigned char) obj/Release/arduinoSrc1_0/WString.o +String::concat(unsigned int) obj/Release/arduinoSrc1_0/WString.o +String::concat(unsigned long) obj/Release/arduinoSrc1_0/WString.o +String::copy(char const*, unsigned int) obj/Release/arduinoSrc1_0/WString.o +String::endsWith(String const&) const obj/Release/arduinoSrc1_0/WString.o +String::equals(String const&) const obj/Release/arduinoSrc1_0/WString.o +String::equals(char const*) const obj/Release/arduinoSrc1_0/WString.o +String::equalsIgnoreCase(String const&) const obj/Release/arduinoSrc1_0/WString.o +String::getBytes(unsigned char*, unsigned int, unsigned int) const obj/Release/arduinoSrc1_0/WString.o +String::indexOf(String const&) const obj/Release/arduinoSrc1_0/WString.o +String::indexOf(String const&, unsigned int) const obj/Release/arduinoSrc1_0/WString.o +String::indexOf(char) const obj/Release/arduinoSrc1_0/WString.o +String::indexOf(char, unsigned int) const obj/Release/arduinoSrc1_0/WString.o +String::invalidate() obj/Release/arduinoSrc1_0/WString.o +String::lastIndexOf(String const&) const obj/Release/arduinoSrc1_0/WString.o +String::lastIndexOf(String const&, unsigned int) const obj/Release/arduinoSrc1_0/WString.o +String::lastIndexOf(char) const obj/Release/arduinoSrc1_0/WString.o +String::lastIndexOf(char, unsigned int) const obj/Release/arduinoSrc1_0/WString.o +String::operator<(String const&) const obj/Release/arduinoSrc1_0/WString.o +String::operator<=(String const&) const obj/Release/arduinoSrc1_0/WString.o +String::operator=(String const&) obj/Release/arduinoSrc1_0/WString.o +String::operator=(char const*) obj/Release/arduinoSrc1_0/WString.o +String::operator>(String const&) const obj/Release/arduinoSrc1_0/WString.o +String::operator>=(String const&) const obj/Release/arduinoSrc1_0/WString.o +String::operator[](unsigned int) obj/Release/arduinoSrc1_0/WString.o +String::operator[](unsigned int) const obj/Release/arduinoSrc1_0/WString.o + obj/Release/arduinoSrc1_0/Print.o +String::replace(String const&, String const&) obj/Release/arduinoSrc1_0/WString.o +String::replace(char, char) obj/Release/arduinoSrc1_0/WString.o +String::reserve(unsigned int) obj/Release/arduinoSrc1_0/WString.o +String::setCharAt(unsigned int, char) obj/Release/arduinoSrc1_0/WString.o +String::startsWith(String const&) const obj/Release/arduinoSrc1_0/WString.o +String::startsWith(String const&, unsigned int) const obj/Release/arduinoSrc1_0/WString.o +String::substring(unsigned int) const obj/Release/arduinoSrc1_0/WString.o +String::substring(unsigned int, unsigned int) const obj/Release/arduinoSrc1_0/WString.o +String::toInt() const obj/Release/arduinoSrc1_0/WString.o +String::toLowerCase() obj/Release/arduinoSrc1_0/WString.o +String::toUpperCase() obj/Release/arduinoSrc1_0/WString.o +String::trim() obj/Release/arduinoSrc1_0/WString.o +String::~String() obj/Release/arduinoSrc1_0/WString.o +String::~String() obj/Release/arduinoSrc1_0/WString.o +__addsf3 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_addsub_sf.o) + obj/Release/arduinoSrc1_0/Print.o +__bad_interrupt /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/crtm328p.o +__brkval /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(realloc.o) + /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(malloc.o) +__bss_end /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_clear_bss.o) +__bss_start /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_clear_bss.o) +__clz_tab /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_clz.o) + /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_clzsi2.o) +__clzsi2 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_clzsi2.o) + /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_usi_to_sf.o) + /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_si_to_sf.o) +__ctors_end /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_ctors.o) +__ctors_start /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_ctors.o) +__ctype_isfalse /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(cty_isfalse.o) + /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(isspace.o) +__ctype_istrue /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(cty_isfalse.o) +__cxa_guard_abort obj/Release/arduinoSrc1_0/new.o +__cxa_guard_acquire obj/Release/arduinoSrc1_0/new.o +__cxa_guard_release obj/Release/arduinoSrc1_0/new.o +__cxa_pure_virtual obj/Release/arduinoSrc1_0/new.o + obj/Release/arduinoSrc1_0/Print.o + obj/Release/arduinoSrc1_0/IPAddress.o + obj/Release/arduinoSrc1_0/HardwareSerial.o +__data_end /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_copy_data.o) +__data_load_start /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_copy_data.o) +__data_start /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_copy_data.o) +__divmodhi4 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_divmodhi4.o) + obj/Release/arduinoSrc1_0/HardwareSerial.o +__divmodsi4 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_divmodsi4.o) + /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(random.o) + obj/Release/arduinoSrc1_0/WMath.o +__divsf3 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_div_sf.o) + obj/Release/arduinoSrc1_0/Print.o +__do_clear_bss /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_clear_bss.o) + /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(malloc.o) + obj/Release/arduinoSrc1_0/wiring.o + obj/Release/arduinoSrc1_0/WString.o + obj/Release/arduinoSrc1_0/WInterrupts.o + obj/Release/arduinoSrc1_0/Tone.o + obj/Release/arduinoSrc1_0/IPAddress.o + obj/Release/arduinoSrc1_0/HardwareSerial.o + obj/Release/main.o +__do_copy_data /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_copy_data.o) + /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(random.o) + /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(malloc.o) + /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_clz.o) + /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_thenan_sf.o) + obj/Release/arduinoSrc1_0/wiring_analog.o + obj/Release/arduinoSrc1_0/WString.o + obj/Release/arduinoSrc1_0/Tone.o + obj/Release/arduinoSrc1_0/Print.o + obj/Release/arduinoSrc1_0/IPAddress.o + obj/Release/arduinoSrc1_0/HardwareSerial.o + obj/Release/main.o + obj/Release/adapticsBT.o +__do_global_ctors /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_ctors.o) + obj/Release/arduinoSrc1_0/IPAddress.o + obj/Release/arduinoSrc1_0/HardwareSerial.o +__epilogue_restores__ /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_epilogue.o) + /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(realloc.o) + /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(random.o) + /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_pack_sf.o) + /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_usi_to_sf.o) + /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_sf_to_si.o) + /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_si_to_sf.o) + /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_lt_sf.o) + /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_ge_sf.o) + /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_div_sf.o) + /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_mul_sf.o) + /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_addsub_sf.o) +__fixsfsi /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_sf_to_si.o) + /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_fixunssfsi.o) + obj/Release/arduinoSrc1_0/Print.o +__fixunssfsi /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_fixunssfsi.o) + obj/Release/arduinoSrc1_0/Print.o +__floatsisf /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_si_to_sf.o) + obj/Release/arduinoSrc1_0/Stream.o + obj/Release/arduinoSrc1_0/Print.o +__floatunsisf /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_usi_to_sf.o) + obj/Release/arduinoSrc1_0/Print.o +__flp /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(realloc.o) + /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(malloc.o) +__fpcmp_parts_f /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_fpcmp_parts_sf.o) + /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_lt_sf.o) + /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_ge_sf.o) +__gesf2 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_ge_sf.o) + /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_fixunssfsi.o) +__heap_end /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/crtm328p.o + /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(malloc.o) +__heap_start /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(malloc.o) +__init /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/crtm328p.o +__ltsf2 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_lt_sf.o) + obj/Release/arduinoSrc1_0/Print.o +__malloc_heap_end /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(malloc.o) + /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(realloc.o) +__malloc_heap_start /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(malloc.o) +__malloc_margin /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(malloc.o) + /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(realloc.o) +__mulsf3 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_mul_sf.o) + obj/Release/arduinoSrc1_0/Stream.o + obj/Release/arduinoSrc1_0/Print.o +__mulsi3 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_mulsi3.o) + /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(random.o) + obj/Release/arduinoSrc1_0/wiring_pulse.o + obj/Release/arduinoSrc1_0/WMath.o + obj/Release/arduinoSrc1_0/Tone.o + obj/Release/arduinoSrc1_0/Stream.o +__mulsi_const_10 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(mulsi10.o) + /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(atol.o) +__pack_f /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_pack_sf.o) + /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_usi_to_sf.o) + /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_si_to_sf.o) + /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_div_sf.o) + /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_mul_sf.o) + /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_addsub_sf.o) +__prologue_saves__ /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_prologue.o) + /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(realloc.o) + /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(random.o) + /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_usi_to_sf.o) + /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_sf_to_si.o) + /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_si_to_sf.o) + /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_lt_sf.o) + /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_ge_sf.o) + /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_div_sf.o) + /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_mul_sf.o) + /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_addsub_sf.o) +__stack /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/crtm328p.o +__subsf3 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_addsub_sf.o) + /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_fixunssfsi.o) + obj/Release/arduinoSrc1_0/Print.o +__tablejump2__ /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_tablejump.o) +__tablejump__ /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_tablejump.o) + /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_ctors.o) +__thenan_sf /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_thenan_sf.o) + /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_div_sf.o) + /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_mul_sf.o) + /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_addsub_sf.o) +__udivmodhi4 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_udivmodhi4.o) + /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(utoa.o) + /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(itoa.o) + /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_divmodhi4.o) +__udivmodsi4 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_udivmodsi4.o) + /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(ultoa.o) + /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(ltoa.o) + /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_divmodsi4.o) + obj/Release/arduinoSrc1_0/wiring_pulse.o + obj/Release/arduinoSrc1_0/Tone.o + obj/Release/arduinoSrc1_0/Print.o + obj/Release/arduinoSrc1_0/HardwareSerial.o +__unpack_f /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_unpack_sf.o) + /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_sf_to_si.o) + /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_lt_sf.o) + /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_ge_sf.o) + /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_div_sf.o) + /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_mul_sf.o) + /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_addsub_sf.o) +__vector_1 obj/Release/arduinoSrc1_0/WInterrupts.o + /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/crtm328p.o +__vector_10 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/crtm328p.o +__vector_11 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/crtm328p.o +__vector_12 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/crtm328p.o +__vector_13 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/crtm328p.o +__vector_14 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/crtm328p.o +__vector_15 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/crtm328p.o +__vector_16 obj/Release/arduinoSrc1_0/wiring.o + /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/crtm328p.o +__vector_17 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/crtm328p.o +__vector_18 obj/Release/arduinoSrc1_0/HardwareSerial.o + /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/crtm328p.o +__vector_19 obj/Release/arduinoSrc1_0/HardwareSerial.o + /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/crtm328p.o +__vector_2 obj/Release/arduinoSrc1_0/WInterrupts.o + /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/crtm328p.o +__vector_20 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/crtm328p.o +__vector_21 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/crtm328p.o +__vector_22 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/crtm328p.o +__vector_23 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/crtm328p.o +__vector_24 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/crtm328p.o +__vector_25 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/crtm328p.o +__vector_3 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/crtm328p.o +__vector_4 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/crtm328p.o +__vector_5 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/crtm328p.o +__vector_6 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/crtm328p.o +__vector_7 obj/Release/arduinoSrc1_0/Tone.o + /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/crtm328p.o +__vector_8 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/crtm328p.o +__vector_9 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/crtm328p.o +__vector_default /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/crtm328p.o +__vectors /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/crtm328p.o +_div /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_divmodhi4.o) +_exit /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_exit.o) +advertise() obj/Release/adapticsBT.o + obj/Release/main.o +analogRead obj/Release/arduinoSrc1_0/wiring_analog.o +analogReference obj/Release/arduinoSrc1_0/wiring_analog.o +analogWrite obj/Release/arduinoSrc1_0/wiring_analog.o +analog_reference obj/Release/arduinoSrc1_0/wiring_analog.o +atol /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(atol.o) + obj/Release/arduinoSrc1_0/WString.o +attachInterrupt obj/Release/arduinoSrc1_0/WInterrupts.o +connected obj/Release/main.o +data obj/Release/main.o +delay obj/Release/arduinoSrc1_0/wiring.o + obj/Release/main.o + obj/Release/adapticsBT.o +delayMicroseconds obj/Release/arduinoSrc1_0/wiring.o + obj/Release/main.o +detachInterrupt obj/Release/arduinoSrc1_0/WInterrupts.o +digitalRead obj/Release/arduinoSrc1_0/wiring_digital.o + obj/Release/arduinoSrc1_0/wiring_shift.o + obj/Release/main.o +digitalWrite obj/Release/arduinoSrc1_0/wiring_digital.o + obj/Release/arduinoSrc1_0/wiring_shift.o + obj/Release/arduinoSrc1_0/wiring_analog.o + obj/Release/arduinoSrc1_0/Tone.o + obj/Release/main.o +digital_pin_to_bit_mask_PGM obj/Release/arduinoSrc1_0/wiring_digital.o + obj/Release/arduinoSrc1_0/wiring_pulse.o + obj/Release/arduinoSrc1_0/Tone.o +digital_pin_to_port_PGM obj/Release/arduinoSrc1_0/wiring_digital.o + obj/Release/arduinoSrc1_0/wiring_pulse.o + obj/Release/arduinoSrc1_0/Tone.o +digital_pin_to_timer_PGM obj/Release/arduinoSrc1_0/wiring_digital.o + obj/Release/arduinoSrc1_0/wiring_analog.o +disableTimer(unsigned char) obj/Release/arduinoSrc1_0/Tone.o +exit /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_exit.o) + /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/crtm328p.o +free /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(malloc.o) + /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(realloc.o) + obj/Release/arduinoSrc1_0/new.o + obj/Release/arduinoSrc1_0/WString.o +init obj/Release/arduinoSrc1_0/wiring.o + obj/Release/main.o +isspace /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(isspace.o) + obj/Release/arduinoSrc1_0/WString.o +itoa /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(itoa.o) + obj/Release/arduinoSrc1_0/WString.o +ltoa /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(ltoa.o) + obj/Release/arduinoSrc1_0/WString.o +main obj/Release/main.o + /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/crtm328p.o +makeWord(unsigned char, unsigned char) obj/Release/arduinoSrc1_0/WMath.o +makeWord(unsigned int) obj/Release/arduinoSrc1_0/WMath.o +malloc /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(malloc.o) + /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(realloc.o) + obj/Release/arduinoSrc1_0/new.o +map(long, long, long, long, long) obj/Release/arduinoSrc1_0/WMath.o +memcmp /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(memcmp.o) + obj/Release/arduinoSrc1_0/IPAddress.o +memcpy /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(memcpy.o) + /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(memmove.o) + /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(realloc.o) + obj/Release/arduinoSrc1_0/WString.o +memmove /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(memmove.o) + obj/Release/arduinoSrc1_0/WString.o +micros obj/Release/arduinoSrc1_0/wiring.o +millis obj/Release/arduinoSrc1_0/wiring.o + obj/Release/arduinoSrc1_0/Stream.o +noTone(unsigned char) obj/Release/arduinoSrc1_0/Tone.o +operator delete(void*) obj/Release/arduinoSrc1_0/new.o +operator new(unsigned int) obj/Release/arduinoSrc1_0/new.o +operator+(StringSumHelper const&, String const&) obj/Release/arduinoSrc1_0/WString.o +operator+(StringSumHelper const&, char const*) obj/Release/arduinoSrc1_0/WString.o +operator+(StringSumHelper const&, char) obj/Release/arduinoSrc1_0/WString.o +operator+(StringSumHelper const&, int) obj/Release/arduinoSrc1_0/WString.o +operator+(StringSumHelper const&, long) obj/Release/arduinoSrc1_0/WString.o +operator+(StringSumHelper const&, unsigned char) obj/Release/arduinoSrc1_0/WString.o +operator+(StringSumHelper const&, unsigned int) obj/Release/arduinoSrc1_0/WString.o +operator+(StringSumHelper const&, unsigned long) obj/Release/arduinoSrc1_0/WString.o +packetSize obj/Release/main.o +pinMode obj/Release/arduinoSrc1_0/wiring_digital.o + obj/Release/arduinoSrc1_0/wiring_analog.o + obj/Release/arduinoSrc1_0/Tone.o + obj/Release/main.o + obj/Release/adapticsBT.o +port_to_input_PGM obj/Release/arduinoSrc1_0/wiring_digital.o + obj/Release/arduinoSrc1_0/wiring_pulse.o +port_to_mode_PGM obj/Release/arduinoSrc1_0/wiring_digital.o +port_to_output_PGM obj/Release/arduinoSrc1_0/wiring_digital.o + obj/Release/arduinoSrc1_0/Tone.o +pulseIn obj/Release/arduinoSrc1_0/wiring_pulse.o +random /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(random.o) + obj/Release/arduinoSrc1_0/WMath.o +random(long) obj/Release/arduinoSrc1_0/WMath.o +random(long, long) obj/Release/arduinoSrc1_0/WMath.o +randomSeed(unsigned int) obj/Release/arduinoSrc1_0/WMath.o +random_r /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(random.o) +readByte() obj/Release/main.o +realloc /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(realloc.o) + obj/Release/arduinoSrc1_0/WString.o +rx_buffer obj/Release/arduinoSrc1_0/HardwareSerial.o +serialEvent() obj/Release/arduinoSrc1_0/HardwareSerial.o +serialEventRun() obj/Release/arduinoSrc1_0/HardwareSerial.o +setupBlueTooth() obj/Release/adapticsBT.o + obj/Release/main.o +shiftIn obj/Release/arduinoSrc1_0/wiring_shift.o +shiftOut obj/Release/arduinoSrc1_0/wiring_shift.o +srandom /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(random.o) + obj/Release/arduinoSrc1_0/WMath.o +startRead() obj/Release/main.o +startWrite() obj/Release/main.o +store_char(unsigned char, ring_buffer*) obj/Release/arduinoSrc1_0/HardwareSerial.o +strchr /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(strchr.o) + obj/Release/arduinoSrc1_0/WString.o +strcmp /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(strcmp.o) + obj/Release/arduinoSrc1_0/WString.o +strcpy /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(strcpy.o) + obj/Release/arduinoSrc1_0/WString.o +strncmp /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(strncmp.o) + obj/Release/arduinoSrc1_0/WString.o +strncpy /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(strncpy.o) + obj/Release/arduinoSrc1_0/WString.o +strrchr /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(strrchr.o) + obj/Release/arduinoSrc1_0/WString.o +strrev /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(strrev.o) + /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(utoa.o) + /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(ultoa.o) + /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(ltoa.o) + /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(itoa.o) +strstr /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(strstr.o) + obj/Release/arduinoSrc1_0/WString.o +timer0_millis obj/Release/arduinoSrc1_0/wiring.o +timer0_overflow_count obj/Release/arduinoSrc1_0/wiring.o +timer0_pin_mask obj/Release/arduinoSrc1_0/Tone.o +timer0_pin_port obj/Release/arduinoSrc1_0/Tone.o +timer0_toggle_count obj/Release/arduinoSrc1_0/Tone.o +timer1_pin_mask obj/Release/arduinoSrc1_0/Tone.o +timer1_pin_port obj/Release/arduinoSrc1_0/Tone.o +timer1_toggle_count obj/Release/arduinoSrc1_0/Tone.o +timer2_pin_mask obj/Release/arduinoSrc1_0/Tone.o +timer2_pin_port obj/Release/arduinoSrc1_0/Tone.o +timer2_toggle_count obj/Release/arduinoSrc1_0/Tone.o +tolower /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(tolower.o) + obj/Release/arduinoSrc1_0/WString.o +tone(unsigned char, unsigned int, unsigned long) obj/Release/arduinoSrc1_0/Tone.o +toupper /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(toupper.o) + obj/Release/arduinoSrc1_0/WString.o +tx_buffer obj/Release/arduinoSrc1_0/HardwareSerial.o +ultoa /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(ultoa.o) + obj/Release/arduinoSrc1_0/WString.o +utoa /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(utoa.o) + obj/Release/arduinoSrc1_0/WString.o +vtable for HardwareSerial obj/Release/arduinoSrc1_0/HardwareSerial.o +vtable for IPAddress obj/Release/arduinoSrc1_0/IPAddress.o +vtable for Print obj/Release/arduinoSrc1_0/Print.o +vtable for Printable obj/Release/arduinoSrc1_0/IPAddress.o +vtable for Stream obj/Release/arduinoSrc1_0/HardwareSerial.o +writeByte(unsigned char) obj/Release/main.o +writeDMM() obj/Release/main.o +writeStartBit() obj/Release/main.o +writeStopBit() obj/Release/main.o diff --git a/ESS1995test_328p/electic.h b/ESS1995test_328p/electic.h index 326f900..6fcaf73 100644 --- a/ESS1995test_328p/electic.h +++ b/ESS1995test_328p/electic.h @@ -14,7 +14,7 @@ */ -#include <WProgram.h> //main Arduino header file +#include <Arduino.h> //main Arduino header file #include "adapticsBT.h" #define DATA_NEW 2 diff --git a/ESS1995test_328p/main.cpp b/ESS1995test_328p/main.cpp index 66dd792..1494a05 100644 --- a/ESS1995test_328p/main.cpp +++ b/ESS1995test_328p/main.cpp @@ -9,11 +9,13 @@ #include "electic.h" +/* extern "C" void __cxa_pure_virtual() { cli(); for (;;); } +*/ int main(){ diff --git a/ESS1995test_328p/obj/Release/adapticsBT.o b/ESS1995test_328p/obj/Release/adapticsBT.o Binary files differnew file mode 100644 index 0000000..3af99a1 --- /dev/null +++ b/ESS1995test_328p/obj/Release/adapticsBT.o diff --git a/ESS1995test_328p/obj/Release/arduinoSrc1_0/CDC.o b/ESS1995test_328p/obj/Release/arduinoSrc1_0/CDC.o Binary files differnew file mode 100644 index 0000000..982717d --- /dev/null +++ b/ESS1995test_328p/obj/Release/arduinoSrc1_0/CDC.o diff --git a/ESS1995test_328p/obj/Release/arduinoSrc1_0/HID.o b/ESS1995test_328p/obj/Release/arduinoSrc1_0/HID.o Binary files differnew file mode 100644 index 0000000..8f80213 --- /dev/null +++ b/ESS1995test_328p/obj/Release/arduinoSrc1_0/HID.o diff --git a/ESS1995test_328p/obj/Release/arduinoSrc1_0/HardwareSerial.o b/ESS1995test_328p/obj/Release/arduinoSrc1_0/HardwareSerial.o Binary files differnew file mode 100644 index 0000000..d21ffd0 --- /dev/null +++ b/ESS1995test_328p/obj/Release/arduinoSrc1_0/HardwareSerial.o diff --git a/ESS1995test_328p/obj/Release/arduinoSrc1_0/IPAddress.o b/ESS1995test_328p/obj/Release/arduinoSrc1_0/IPAddress.o Binary files differnew file mode 100644 index 0000000..1f5d4b0 --- /dev/null +++ b/ESS1995test_328p/obj/Release/arduinoSrc1_0/IPAddress.o diff --git a/ESS1995test_328p/obj/Release/arduinoSrc1_0/Print.o b/ESS1995test_328p/obj/Release/arduinoSrc1_0/Print.o Binary files differnew file mode 100644 index 0000000..d4a6ed2 --- /dev/null +++ b/ESS1995test_328p/obj/Release/arduinoSrc1_0/Print.o diff --git a/ESS1995test_328p/obj/Release/arduinoSrc1_0/Stream.o b/ESS1995test_328p/obj/Release/arduinoSrc1_0/Stream.o Binary files differnew file mode 100644 index 0000000..ccbdb47 --- /dev/null +++ b/ESS1995test_328p/obj/Release/arduinoSrc1_0/Stream.o diff --git a/ESS1995test_328p/obj/Release/arduinoSrc1_0/Tone.o b/ESS1995test_328p/obj/Release/arduinoSrc1_0/Tone.o Binary files differnew file mode 100644 index 0000000..ee4ec93 --- /dev/null +++ b/ESS1995test_328p/obj/Release/arduinoSrc1_0/Tone.o diff --git a/ESS1995test_328p/obj/Release/arduinoSrc1_0/USBCore.o b/ESS1995test_328p/obj/Release/arduinoSrc1_0/USBCore.o Binary files differnew file mode 100644 index 0000000..58809be --- /dev/null +++ b/ESS1995test_328p/obj/Release/arduinoSrc1_0/USBCore.o diff --git a/ESS1995test_328p/obj/Release/arduinoSrc1_0/WInterrupts.o b/ESS1995test_328p/obj/Release/arduinoSrc1_0/WInterrupts.o Binary files differnew file mode 100644 index 0000000..106d971 --- /dev/null +++ b/ESS1995test_328p/obj/Release/arduinoSrc1_0/WInterrupts.o diff --git a/ESS1995test_328p/obj/Release/arduinoSrc1_0/WMath.o b/ESS1995test_328p/obj/Release/arduinoSrc1_0/WMath.o Binary files differnew file mode 100644 index 0000000..3de47b2 --- /dev/null +++ b/ESS1995test_328p/obj/Release/arduinoSrc1_0/WMath.o diff --git a/ESS1995test_328p/obj/Release/arduinoSrc1_0/WString.o b/ESS1995test_328p/obj/Release/arduinoSrc1_0/WString.o Binary files differnew file mode 100644 index 0000000..9a4a73b --- /dev/null +++ b/ESS1995test_328p/obj/Release/arduinoSrc1_0/WString.o diff --git a/ESS1995test_328p/obj/Release/arduinoSrc1_0/new.o b/ESS1995test_328p/obj/Release/arduinoSrc1_0/new.o Binary files differnew file mode 100644 index 0000000..fdeab58 --- /dev/null +++ b/ESS1995test_328p/obj/Release/arduinoSrc1_0/new.o diff --git a/ESS1995test_328p/obj/Release/arduinoSrc1_0/wiring.o b/ESS1995test_328p/obj/Release/arduinoSrc1_0/wiring.o Binary files differnew file mode 100644 index 0000000..8b01327 --- /dev/null +++ b/ESS1995test_328p/obj/Release/arduinoSrc1_0/wiring.o diff --git a/ESS1995test_328p/obj/Release/arduinoSrc1_0/wiring_analog.o b/ESS1995test_328p/obj/Release/arduinoSrc1_0/wiring_analog.o Binary files differnew file mode 100644 index 0000000..3057391 --- /dev/null +++ b/ESS1995test_328p/obj/Release/arduinoSrc1_0/wiring_analog.o diff --git a/ESS1995test_328p/obj/Release/arduinoSrc1_0/wiring_digital.o b/ESS1995test_328p/obj/Release/arduinoSrc1_0/wiring_digital.o Binary files differnew file mode 100644 index 0000000..77cb9a1 --- /dev/null +++ b/ESS1995test_328p/obj/Release/arduinoSrc1_0/wiring_digital.o diff --git a/ESS1995test_328p/obj/Release/arduinoSrc1_0/wiring_pulse.o b/ESS1995test_328p/obj/Release/arduinoSrc1_0/wiring_pulse.o Binary files differnew file mode 100644 index 0000000..6f918b7 --- /dev/null +++ b/ESS1995test_328p/obj/Release/arduinoSrc1_0/wiring_pulse.o diff --git a/ESS1995test_328p/obj/Release/arduinoSrc1_0/wiring_shift.o b/ESS1995test_328p/obj/Release/arduinoSrc1_0/wiring_shift.o Binary files differnew file mode 100644 index 0000000..6cdc3ac --- /dev/null +++ b/ESS1995test_328p/obj/Release/arduinoSrc1_0/wiring_shift.o diff --git a/ESS1995test_328p/obj/Release/main.o b/ESS1995test_328p/obj/Release/main.o Binary files differnew file mode 100644 index 0000000..95b174a --- /dev/null +++ b/ESS1995test_328p/obj/Release/main.o diff --git a/arduinoSrc1_0/Arduino.h b/arduinoSrc1_0/Arduino.h new file mode 100644 index 0000000..ebd374a --- /dev/null +++ b/arduinoSrc1_0/Arduino.h @@ -0,0 +1,214 @@ +#ifndef Arduino_h +#define Arduino_h + +#include <stdlib.h> +#include <string.h> +#include <math.h> + +#include <avr/pgmspace.h> +#include <avr/io.h> +#include <avr/interrupt.h> + +#include "binary.h" + +#ifdef __cplusplus +extern "C"{ +#endif + +#define HIGH 0x1 +#define LOW 0x0 + +#define INPUT 0x0 +#define OUTPUT 0x1 + +#define true 0x1 +#define false 0x0 + +#define PI 3.1415926535897932384626433832795 +#define HALF_PI 1.5707963267948966192313216916398 +#define TWO_PI 6.283185307179586476925286766559 +#define DEG_TO_RAD 0.017453292519943295769236907684886 +#define RAD_TO_DEG 57.295779513082320876798154814105 + +#define SERIAL 0x0 +#define DISPLAY 0x1 + +#define LSBFIRST 0 +#define MSBFIRST 1 + +#define CHANGE 1 +#define FALLING 2 +#define RISING 3 + +#if defined(__AVR_ATtiny24__) || defined(__AVR_ATtiny44__) || defined(__AVR_ATtiny84__) || defined(__AVR_ATtiny25__) || defined(__AVR_ATtiny45__) || defined(__AVR_ATtiny85__) +#define DEFAULT 0 +#define EXTERNAL 1 +#define INTERNAL 2 +#else +#if defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__) +#define INTERNAL1V1 2 +#define INTERNAL2V56 3 +#else +#define INTERNAL 3 +#endif +#define DEFAULT 1 +#define EXTERNAL 0 +#endif + +// undefine stdlib's abs if encountered +#ifdef abs +#undef abs +#endif + +#define min(a,b) ((a)<(b)?(a):(b)) +#define max(a,b) ((a)>(b)?(a):(b)) +#define abs(x) ((x)>0?(x):-(x)) +#define constrain(amt,low,high) ((amt)<(low)?(low):((amt)>(high)?(high):(amt))) +#define round(x) ((x)>=0?(long)((x)+0.5):(long)((x)-0.5)) +#define radians(deg) ((deg)*DEG_TO_RAD) +#define degrees(rad) ((rad)*RAD_TO_DEG) +#define sq(x) ((x)*(x)) + +#define interrupts() sei() +#define noInterrupts() cli() + +#define clockCyclesPerMicrosecond() ( F_CPU / 1000000L ) +#define clockCyclesToMicroseconds(a) ( ((a) * 1000L) / (F_CPU / 1000L) ) +#define microsecondsToClockCycles(a) ( ((a) * (F_CPU / 1000L)) / 1000L ) + +#define lowByte(w) ((uint8_t) ((w) & 0xff)) +#define highByte(w) ((uint8_t) ((w) >> 8)) + +#define bitRead(value, bit) (((value) >> (bit)) & 0x01) +#define bitSet(value, bit) ((value) |= (1UL << (bit))) +#define bitClear(value, bit) ((value) &= ~(1UL << (bit))) +#define bitWrite(value, bit, bitvalue) (bitvalue ? bitSet(value, bit) : bitClear(value, bit)) + + +typedef unsigned int word; + +#define bit(b) (1UL << (b)) + +typedef uint8_t boolean; +typedef uint8_t byte; + +void init(void); + +void pinMode(uint8_t, uint8_t); +void digitalWrite(uint8_t, uint8_t); +int digitalRead(uint8_t); +int analogRead(uint8_t); +void analogReference(uint8_t mode); +void analogWrite(uint8_t, int); + +unsigned long millis(void); +unsigned long micros(void); +void delay(unsigned long); +void delayMicroseconds(unsigned int us); +unsigned long pulseIn(uint8_t pin, uint8_t state, unsigned long timeout); + +void shiftOut(uint8_t dataPin, uint8_t clockPin, uint8_t bitOrder, uint8_t val); +uint8_t shiftIn(uint8_t dataPin, uint8_t clockPin, uint8_t bitOrder); + +void attachInterrupt(uint8_t, void (*)(void), int mode); +void detachInterrupt(uint8_t); + +void setup(void); +void loop(void); + +// Get the bit location within the hardware port of the given virtual pin. +// This comes from the pins_*.c file for the active board configuration. + +#define analogInPinToBit(P) (P) + +// On the ATmega1280, the addresses of some of the port registers are +// greater than 255, so we can't store them in uint8_t's. +extern const uint16_t PROGMEM port_to_mode_PGM[]; +extern const uint16_t PROGMEM port_to_input_PGM[]; +extern const uint16_t PROGMEM port_to_output_PGM[]; + +extern const uint8_t PROGMEM digital_pin_to_port_PGM[]; +// extern const uint8_t PROGMEM digital_pin_to_bit_PGM[]; +extern const uint8_t PROGMEM digital_pin_to_bit_mask_PGM[]; +extern const uint8_t PROGMEM digital_pin_to_timer_PGM[]; + +// Get the bit location within the hardware port of the given virtual pin. +// This comes from the pins_*.c file for the active board configuration. +// +// These perform slightly better as macros compared to inline functions +// +#define digitalPinToPort(P) ( pgm_read_byte( digital_pin_to_port_PGM + (P) ) ) +#define digitalPinToBitMask(P) ( pgm_read_byte( digital_pin_to_bit_mask_PGM + (P) ) ) +#define digitalPinToTimer(P) ( pgm_read_byte( digital_pin_to_timer_PGM + (P) ) ) +#define analogInPinToBit(P) (P) +#define portOutputRegister(P) ( (volatile uint8_t *)( pgm_read_word( port_to_output_PGM + (P))) ) +#define portInputRegister(P) ( (volatile uint8_t *)( pgm_read_word( port_to_input_PGM + (P))) ) +#define portModeRegister(P) ( (volatile uint8_t *)( pgm_read_word( port_to_mode_PGM + (P))) ) + +#define NOT_A_PIN 0 +#define NOT_A_PORT 0 + +#ifdef ARDUINO_MAIN +#define PA 1 +#define PB 2 +#define PC 3 +#define PD 4 +#define PE 5 +#define PF 6 +#define PG 7 +#define PH 8 +#define PJ 10 +#define PK 11 +#define PL 12 +#endif + +#define NOT_ON_TIMER 0 +#define TIMER0A 1 +#define TIMER0B 2 +#define TIMER1A 3 +#define TIMER1B 4 +#define TIMER2 5 +#define TIMER2A 6 +#define TIMER2B 7 + +#define TIMER3A 8 +#define TIMER3B 9 +#define TIMER3C 10 +#define TIMER4A 11 +#define TIMER4B 12 +#define TIMER4C 13 +#define TIMER4D 14 +#define TIMER5A 15 +#define TIMER5B 16 +#define TIMER5C 17 + +#ifdef __cplusplus +} // extern "C" +#endif + +#ifdef __cplusplus +#include "WCharacter.h" +#include "WString.h" +#include "HardwareSerial.h" + +uint16_t makeWord(uint16_t w); +uint16_t makeWord(byte h, byte l); + +#define word(...) makeWord(__VA_ARGS__) + +unsigned long pulseIn(uint8_t pin, uint8_t state, unsigned long timeout = 1000000L); + +void tone(uint8_t _pin, unsigned int frequency, unsigned long duration = 0); +void noTone(uint8_t _pin); + +// WMath prototypes +long random(long); +long random(long, long); +void randomSeed(unsigned int); +long map(long, long, long, long, long); + +#endif + +#include "pins_arduino.h" + +#endif
\ No newline at end of file diff --git a/arduinoSrc1_0/CDC.cpp b/arduinoSrc1_0/CDC.cpp new file mode 100644 index 0000000..14a0eae --- /dev/null +++ b/arduinoSrc1_0/CDC.cpp @@ -0,0 +1,175 @@ + + +/* Copyright (c) 2011, Peter Barrett +** +** Permission to use, copy, modify, and/or distribute this software for +** any purpose with or without fee is hereby granted, provided that the +** above copyright notice and this permission notice appear in all copies. +** +** THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL +** WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED +** WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR +** BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES +** OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, +** WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, +** ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS +** SOFTWARE. +*/ + +#include "Platform.h" +#include "USBAPI.h" +#include <avr/wdt.h> + +#if defined(USBCON) +#ifdef CDC_ENABLED + +void Reboot() +{ + USB.detach(); + cli(); + asm volatile("jmp 0x7800"); // jump to bootloader - DiskLoader takes up last 2 kB +} + +typedef struct +{ + u32 dwDTERate; + u8 bCharFormat; + u8 bParityType; + u8 bDataBits; + u8 lineState; +} LineInfo; + +static volatile LineInfo _usbLineInfo = { 57600, 0x00, 0x00, 0x00, 0x00 }; + +#define WEAK __attribute__ ((weak)) + +extern const CDCDescriptor _cdcInterface PROGMEM; +const CDCDescriptor _cdcInterface = +{ + D_IAD(0,2,CDC_COMMUNICATION_INTERFACE_CLASS,CDC_ABSTRACT_CONTROL_MODEL,1), + + // CDC communication interface + D_INTERFACE(CDC_ACM_INTERFACE,1,CDC_COMMUNICATION_INTERFACE_CLASS,CDC_ABSTRACT_CONTROL_MODEL,0), + D_CDCCS(CDC_HEADER,0x10,0x01), // Header (1.10 bcd) + D_CDCCS(CDC_CALL_MANAGEMENT,1,1), // Device handles call management (not) + D_CDCCS4(CDC_ABSTRACT_CONTROL_MANAGEMENT,6), // SET_LINE_CODING, GET_LINE_CODING, SET_CONTROL_LINE_STATE supported + D_CDCCS(CDC_UNION,CDC_ACM_INTERFACE,CDC_DATA_INTERFACE), // Communication interface is master, data interface is slave 0 + D_ENDPOINT(USB_ENDPOINT_IN (CDC_ENDPOINT_ACM),USB_ENDPOINT_TYPE_INTERRUPT,0x10,0x40), + + // CDC data interface + D_INTERFACE(CDC_DATA_INTERFACE,2,CDC_DATA_INTERFACE_CLASS,0,0), + D_ENDPOINT(USB_ENDPOINT_OUT(CDC_ENDPOINT_OUT),USB_ENDPOINT_TYPE_BULK,0x40,0), + D_ENDPOINT(USB_ENDPOINT_IN (CDC_ENDPOINT_IN ),USB_ENDPOINT_TYPE_BULK,0x40,0) +}; + +int WEAK CDC_GetInterface(u8* interfaceNum) +{ + interfaceNum[0] += 2; // uses 2 + return USB_SendControl(TRANSFER_PGM,&_cdcInterface,sizeof(_cdcInterface)); +} + +bool WEAK CDC_Setup(Setup& setup) +{ + u8 r = setup.bRequest; + u8 requestType = setup.bmRequestType; + + if (REQUEST_DEVICETOHOST_CLASS_INTERFACE == requestType) + { + if (CDC_GET_LINE_CODING == r) + { + USB_SendControl(0,(void*)&_usbLineInfo,7); + return true; + } + } + + if (REQUEST_HOSTTODEVICE_CLASS_INTERFACE == requestType) + { + if (CDC_SET_LINE_CODING == r) + { + USB_RecvControl((void*)&_usbLineInfo,7); + return true; + } + + if (CDC_SET_CONTROL_LINE_STATE == r) + { + if (0 != _usbLineInfo.lineState && 1200 == _usbLineInfo.dwDTERate) // auto-reset is triggered when the port, already open at 1200 bps, is closed + Reboot(); + _usbLineInfo.lineState = setup.wValueL; + return true; + } + } + return false; +} + + +int _serialPeek = -1; +void Serial_::begin(uint16_t baud_count) +{ +} + +void Serial_::end(void) +{ +} + +int Serial_::available(void) +{ + u8 avail = USB_Available(CDC_RX); + if (_serialPeek != -1) + avail++; + return avail; +} + +// peek is nasty +int Serial_::peek(void) +{ + if (_serialPeek == -1) + _serialPeek = read(); + return _serialPeek; +} + +int Serial_::read(void) +{ + int c; + if (_serialPeek != -1) + { + c = _serialPeek; + _serialPeek = -1; + } else { + c = USB_Recv(CDC_RX); + } + return c; +} + +void Serial_::flush(void) +{ + USB_Flush(CDC_TX); +} + +size_t Serial_::write(uint8_t c) +{ + /* only try to send bytes if the high-level CDC connection itself + is open (not just the pipe) - the OS should set lineState when the port + is opened and clear lineState when the port is closed. + bytes sent before the user opens the connection or after + the connection is closed are lost - just like with a UART. */ + + // TODO - ZE - check behavior on different OSes and test what happens if an + // open connection isn't broken cleanly (cable is yanked out, host dies + // or locks up, or host virtual serial port hangs) + if (_usbLineInfo.lineState > 0) { + int r = USB_Send(CDC_TX,&c,1); + if (r > 0) { + return r; + } else { + setWriteError(); + return 0; + } + } + setWriteError(); + return 0; +} + +Serial_ Serial; + +#endif +#endif /* if defined(USBCON) */
\ No newline at end of file diff --git a/arduinoSrc1_0/Client.h b/arduinoSrc1_0/Client.h new file mode 100644 index 0000000..ea13483 --- /dev/null +++ b/arduinoSrc1_0/Client.h @@ -0,0 +1,26 @@ +#ifndef client_h +#define client_h +#include "Print.h" +#include "Stream.h" +#include "IPAddress.h" + +class Client : public Stream { + +public: + virtual int connect(IPAddress ip, uint16_t port) =0; + virtual int connect(const char *host, uint16_t port) =0; + virtual size_t write(uint8_t) =0; + virtual size_t write(const uint8_t *buf, size_t size) =0; + virtual int available() = 0; + virtual int read() = 0; + virtual int read(uint8_t *buf, size_t size) = 0; + virtual int peek() = 0; + virtual void flush() = 0; + virtual void stop() = 0; + virtual uint8_t connected() = 0; + virtual operator bool() = 0; +protected: + uint8_t* rawIPAddress(IPAddress& addr) { return addr.raw_address(); }; +}; + +#endif diff --git a/arduinoSrc1_0/HID.cpp b/arduinoSrc1_0/HID.cpp new file mode 100644 index 0000000..8ed1566 --- /dev/null +++ b/arduinoSrc1_0/HID.cpp @@ -0,0 +1,446 @@ + + +/* Copyright (c) 2011, Peter Barrett +** +** Permission to use, copy, modify, and/or distribute this software for +** any purpose with or without fee is hereby granted, provided that the +** above copyright notice and this permission notice appear in all copies. +** +** THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL +** WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED +** WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR +** BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES +** OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, +** WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, +** ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS +** SOFTWARE. +*/ + +#include "Platform.h" +#include "USBAPI.h" +#include "USBDesc.h" + +#if defined(USBCON) +#ifdef HID_ENABLED + +//#define RAWHID_ENABLED + +// Singletons for mouse and keyboard + +Mouse_ Mouse; +Keyboard_ Keyboard; + +//================================================================================ +//================================================================================ + +// HID report descriptor + +#define LSB(_x) ((_x) & 0xFF) +#define MSB(_x) ((_x) >> 8) + +#define RAWHID_USAGE_PAGE 0xFFC0 +#define RAWHID_USAGE 0x0C00 +#define RAWHID_TX_SIZE 64 +#define RAWHID_RX_SIZE 64 + +extern const u8 _hidReportDescriptor[] PROGMEM; +const u8 _hidReportDescriptor[] = { + + // Mouse + 0x05, 0x01, // USAGE_PAGE (Generic Desktop) // 54 + 0x09, 0x02, // USAGE (Mouse) + 0xa1, 0x01, // COLLECTION (Application) + 0x09, 0x01, // USAGE (Pointer) + 0xa1, 0x00, // COLLECTION (Physical) + 0x85, 0x01, // REPORT_ID (1) + 0x05, 0x09, // USAGE_PAGE (Button) + 0x19, 0x01, // USAGE_MINIMUM (Button 1) + 0x29, 0x03, // USAGE_MAXIMUM (Button 3) + 0x15, 0x00, // LOGICAL_MINIMUM (0) + 0x25, 0x01, // LOGICAL_MAXIMUM (1) + 0x95, 0x03, // REPORT_COUNT (3) + 0x75, 0x01, // REPORT_SIZE (1) + 0x81, 0x02, // INPUT (Data,Var,Abs) + 0x95, 0x01, // REPORT_COUNT (1) + 0x75, 0x05, // REPORT_SIZE (5) + 0x81, 0x03, // INPUT (Cnst,Var,Abs) + 0x05, 0x01, // USAGE_PAGE (Generic Desktop) + 0x09, 0x30, // USAGE (X) + 0x09, 0x31, // USAGE (Y) + 0x09, 0x38, // USAGE (Wheel) + 0x15, 0x81, // LOGICAL_MINIMUM (-127) + 0x25, 0x7f, // LOGICAL_MAXIMUM (127) + 0x75, 0x08, // REPORT_SIZE (8) + 0x95, 0x03, // REPORT_COUNT (3) + 0x81, 0x06, // INPUT (Data,Var,Rel) + 0xc0, // END_COLLECTION + 0xc0, // END_COLLECTION + + // Keyboard + 0x05, 0x01, // USAGE_PAGE (Generic Desktop) // 47 + 0x09, 0x06, // USAGE (Keyboard) + 0xa1, 0x01, // COLLECTION (Application) + 0x85, 0x02, // REPORT_ID (2) + 0x05, 0x07, // USAGE_PAGE (Keyboard) + + 0x19, 0xe0, // USAGE_MINIMUM (Keyboard LeftControl) + 0x29, 0xe7, // USAGE_MAXIMUM (Keyboard Right GUI) + 0x15, 0x00, // LOGICAL_MINIMUM (0) + 0x25, 0x01, // LOGICAL_MAXIMUM (1) + 0x75, 0x01, // REPORT_SIZE (1) + + 0x95, 0x08, // REPORT_COUNT (8) + 0x81, 0x02, // INPUT (Data,Var,Abs) + 0x95, 0x01, // REPORT_COUNT (1) + 0x75, 0x08, // REPORT_SIZE (8) + 0x81, 0x03, // INPUT (Cnst,Var,Abs) + + 0x95, 0x06, // REPORT_COUNT (6) + 0x75, 0x08, // REPORT_SIZE (8) + 0x15, 0x00, // LOGICAL_MINIMUM (0) + 0x25, 0x65, // LOGICAL_MAXIMUM (101) + 0x05, 0x07, // USAGE_PAGE (Keyboard) + + 0x19, 0x00, // USAGE_MINIMUM (Reserved (no event indicated)) + 0x29, 0x65, // USAGE_MAXIMUM (Keyboard Application) + 0x81, 0x00, // INPUT (Data,Ary,Abs) + 0xc0, // END_COLLECTION + +#if RAWHID_ENABLED + // RAW HID + 0x06, LSB(RAWHID_USAGE_PAGE), MSB(RAWHID_USAGE_PAGE), // 30 + 0x0A, LSB(RAWHID_USAGE), MSB(RAWHID_USAGE), + + 0xA1, 0x01, // Collection 0x01 + 0x85, 0x03, // REPORT_ID (3) + 0x75, 0x08, // report size = 8 bits + 0x15, 0x00, // logical minimum = 0 + 0x26, 0xFF, 0x00, // logical maximum = 255 + + 0x95, 64, // report count TX + 0x09, 0x01, // usage + 0x81, 0x02, // Input (array) + + 0x95, 64, // report count RX + 0x09, 0x02, // usage + 0x91, 0x02, // Output (array) + 0xC0 // end collection +#endif +}; + +extern const HIDDescriptor _hidInterface PROGMEM; +const HIDDescriptor _hidInterface = +{ + D_INTERFACE(HID_INTERFACE,1,3,0,0), + D_HIDREPORT(sizeof(_hidReportDescriptor)), + D_ENDPOINT(USB_ENDPOINT_IN (HID_ENDPOINT_INT),USB_ENDPOINT_TYPE_INTERRUPT,0x40,0x01) +}; + +//================================================================================ +//================================================================================ +// Driver + +u8 _hid_protocol = 1; +u8 _hid_idle = 1; + +#define WEAK __attribute__ ((weak)) +#define WEAK + +int WEAK HID_GetInterface(u8* interfaceNum) +{ + interfaceNum[0] += 1; // uses 1 + return USB_SendControl(TRANSFER_PGM,&_hidInterface,sizeof(_hidInterface)); +} + +int WEAK HID_GetDescriptor(int i) +{ + return USB_SendControl(TRANSFER_PGM,_hidReportDescriptor,sizeof(_hidReportDescriptor)); +} + +void WEAK HID_SendReport(u8 id, const void* data, int len) +{ + USB_Send(HID_TX, &id, 1); + USB_Send(HID_TX | TRANSFER_RELEASE,data,len); +} + +bool WEAK HID_Setup(Setup& setup) +{ + u8 r = setup.bRequest; + u8 requestType = setup.bmRequestType; + if (REQUEST_DEVICETOHOST_CLASS_INTERFACE == requestType) + { + if (HID_GET_REPORT == r) + { + //HID_GetReport(); + return true; + } + if (HID_GET_PROTOCOL == r) + { + //Send8(_hid_protocol); // TODO + return true; + } + } + + if (REQUEST_HOSTTODEVICE_CLASS_INTERFACE == requestType) + { + if (HID_SET_PROTOCOL == r) + { + _hid_protocol = setup.wValueL; + return true; + } + + if (HID_SET_IDLE == r) + { + _hid_idle = setup.wValueL; + return true; + } + } + return false; +} + +//================================================================================ +//================================================================================ +// Mouse + +Mouse_::Mouse_() : _buttons(0) +{ +} + +void Mouse_::click(uint8_t b) +{ + _buttons = b; + move(0,0,0); + _buttons = 0; + move(0,0,0); +} + +void Mouse_::move(signed char x, signed char y, signed char wheel) +{ + u8 m[4]; + m[0] = _buttons; + m[1] = x; + m[2] = y; + m[3] = wheel; + HID_SendReport(1,m,4); +} + +void Mouse_::buttons(uint8_t b) +{ + if (b != _buttons) + { + _buttons = b; + move(0,0,0); + } +} + +void Mouse_::press(uint8_t b) +{ + buttons(_buttons | b); +} + +void Mouse_::release(uint8_t b) +{ + buttons(_buttons & ~b); +} + +bool Mouse_::isPressed(uint8_t b) +{ + if (b & _buttons > 0) + return true; + return false; +} + +//================================================================================ +//================================================================================ +// Keyboard + +Keyboard_::Keyboard_() : _keyMap(0) +{ +} + +void Keyboard_::sendReport(KeyReport* keys) +{ + HID_SendReport(2,keys,sizeof(KeyReport)); +} + +void Keyboard_::setKeyMap(KeyMap* keyMap) +{ + _keyMap = keyMap; +} + +extern +const uint8_t _asciimap[128] PROGMEM; + +#define SHIFT 0x80 +const uint8_t _asciimap[128] = +{ + 0x00, // NUL + 0x00, // SOH + 0x00, // STX + 0x00, // ETX + 0x00, // EOT + 0x00, // ENQ + 0x00, // ACK + 0x00, // BEL + 0x2a, // BS Backspace + 0x2b, // TAB Tab + 0x28, // LF Enter + 0x00, // VT + 0x00, // FF + 0x00, // CR + 0x00, // SO + 0x00, // SI + 0x00, // DEL + 0x00, // DC1 + 0x00, // DC2 + 0x00, // DC3 + 0x00, // DC4 + 0x00, // NAK + 0x00, // SYN + 0x00, // ETB + 0x00, // CAN + 0x00, // EM + 0x00, // SUB + 0x00, // ESC + 0x00, // FS + 0x00, // GS + 0x00, // RS + 0x00, // US + + 0x2c, // ' ' + 0x1e|SHIFT, // ! + 0x34|SHIFT, // " + 0x20|SHIFT, // # + 0x21|SHIFT, // $ + 0x22|SHIFT, // % + 0x24|SHIFT, // & + 0x34, // ' + 0x26|SHIFT, // ( + 0x27|SHIFT, // ) + 0x25|SHIFT, // * + 0x2e|SHIFT, // + + 0x36, // , + 0x2d, // - + 0x37, // . + 0x38, // / + 0x27, // 0 + 0x1e, // 1 + 0x1f, // 2 + 0x20, // 3 + 0x21, // 4 + 0x22, // 5 + 0x23, // 6 + 0x24, // 7 + 0x25, // 8 + 0x26, // 9 + 0x33|SHIFT, // : + 0x33, // ; + 0x36|SHIFT, // < + 0x2e, // = + 0x37|SHIFT, // > + 0x38|SHIFT, // ? + 0x1f|SHIFT, // @ + 0x04|SHIFT, // A + 0x05|SHIFT, // B + 0x06|SHIFT, // C + 0x07|SHIFT, // D + 0x08|SHIFT, // E + 0x09|SHIFT, // F + 0x0a|SHIFT, // G + 0x0b|SHIFT, // H + 0x0c|SHIFT, // I + 0x0d|SHIFT, // J + 0x0e|SHIFT, // K + 0x0f|SHIFT, // L + 0x10|SHIFT, // M + 0x11|SHIFT, // N + 0x12|SHIFT, // O + 0x13|SHIFT, // P + 0x14|SHIFT, // Q + 0x15|SHIFT, // R + 0x16|SHIFT, // S + 0x17|SHIFT, // T + 0x18|SHIFT, // U + 0x19|SHIFT, // V + 0x1a|SHIFT, // W + 0x1b|SHIFT, // X + 0x1c|SHIFT, // Y + 0x1d|SHIFT, // Z + 0x2f, // [ + 0x31, // bslash + 0x30, // ] + 0x23|SHIFT, // ^ + 0x2d|SHIFT, // _ + 0x35, // ` + 0x04, // a + 0x05, // b + 0x06, // c + 0x07, // d + 0x08, // e + 0x09, // f + 0x0a, // g + 0x0b, // h + 0x0c, // i + 0x0d, // j + 0x0e, // k + 0x0f, // l + 0x10, // m + 0x11, // n + 0x12, // o + 0x13, // p + 0x14, // q + 0x15, // r + 0x16, // s + 0x17, // t + 0x18, // u + 0x19, // v + 0x1a, // w + 0x1b, // x + 0x1c, // y + 0x1d, // z + 0x2f|SHIFT, // + 0x31|SHIFT, // | + 0x30|SHIFT, // } + 0x35|SHIFT, // ~ + 0 // DEL +}; + +uint8_t USBPutChar(uint8_t c); +size_t Keyboard_::write(uint8_t c) +{ + // Keydown + { + KeyReport keys = {0}; + if (_keyMap) + _keyMap->charToKey(c,&keys); + else + { + if (c >= 128) { + setWriteError(); + return 0; + } + c = pgm_read_byte(_asciimap + c); + if (!c) { + setWriteError(); + return 0; + } + if (c & 0x80) + { + keys.modifiers |= KEY_MODIFIER_LEFT_SHIFT; + c &= 0x7F; + } + keys.keys[0] = c; + } + sendReport(&keys); + } + // Keyup + { + KeyReport keys = {0}; + sendReport(&keys); + } + return 1; +} + +#endif + +#endif /* if defined(USBCON) */
\ No newline at end of file diff --git a/arduinoSrc1_0/HardwareSerial.cpp b/arduinoSrc1_0/HardwareSerial.cpp new file mode 100644 index 0000000..1b1fa71 --- /dev/null +++ b/arduinoSrc1_0/HardwareSerial.cpp @@ -0,0 +1,424 @@ +/* + HardwareSerial.cpp - Hardware serial library for Wiring + Copyright (c) 2006 Nicholas Zambetti. All right reserved. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + Modified 23 November 2006 by David A. Mellis + Modified 28 September 2010 by Mark Sproul +*/ + +#include <stdlib.h> +#include <stdio.h> +#include <string.h> +#include <inttypes.h> +#include "Arduino.h" +#include "wiring_private.h" + +// this next line disables the entire HardwareSerial.cpp, +// this is so I can support Attiny series and any other chip without a uart +#if defined(UBRRH) || defined(UBRR0H) || defined(UBRR1H) || defined(UBRR2H) || defined(UBRR3H) + +#include "HardwareSerial.h" + +// Define constants and variables for buffering incoming serial data. We're +// using a ring buffer (I think), in which head is the index of the location +// to which to write the next incoming character and tail is the index of the +// location from which to read. +#if (RAMEND < 1000) + #define SERIAL_BUFFER_SIZE 16 +#else + #define SERIAL_BUFFER_SIZE 64 +#endif + +struct ring_buffer +{ + unsigned char buffer[SERIAL_BUFFER_SIZE]; + volatile int head; + volatile int tail; +}; + +#if defined(USBCON) + ring_buffer rx_buffer = { { 0 }, 0, 0}; + ring_buffer tx_buffer = { { 0 }, 0, 0}; +#endif +#if defined(UBRRH) || defined(UBRR0H) + ring_buffer rx_buffer = { { 0 }, 0, 0 }; + ring_buffer tx_buffer = { { 0 }, 0, 0 }; +#endif +#if defined(UBRR1H) + ring_buffer rx_buffer1 = { { 0 }, 0, 0 }; + ring_buffer tx_buffer1 = { { 0 }, 0, 0 }; +#endif +#if defined(UBRR2H) + ring_buffer rx_buffer2 = { { 0 }, 0, 0 }; + ring_buffer tx_buffer2 = { { 0 }, 0, 0 }; +#endif +#if defined(UBRR3H) + ring_buffer rx_buffer3 = { { 0 }, 0, 0 }; + ring_buffer tx_buffer3 = { { 0 }, 0, 0 }; +#endif + +inline void store_char(unsigned char c, ring_buffer *buffer) +{ + int i = (unsigned int)(buffer->head + 1) % SERIAL_BUFFER_SIZE; + + // if we should be storing the received character into the location + // just before the tail (meaning that the head would advance to the + // current location of the tail), we're about to overflow the buffer + // and so we don't write the character or advance the head. + if (i != buffer->tail) { + buffer->buffer[buffer->head] = c; + buffer->head = i; + } +} + +#if !defined(USART0_RX_vect) && defined(USART1_RX_vect) +// do nothing - on the 32u4 the first USART is USART1 +#else +#if !defined(USART_RX_vect) && !defined(SIG_USART0_RECV) && \ + !defined(SIG_UART0_RECV) && !defined(USART0_RX_vect) && \ + !defined(SIG_UART_RECV) + #error "Don't know what the Data Received vector is called for the first UART" +#else + void serialEvent() __attribute__((weak)); + void serialEvent() {} + #define serialEvent_implemented +#if defined(USART_RX_vect) + SIGNAL(USART_RX_vect) +#elif defined(SIG_USART0_RECV) + SIGNAL(SIG_USART0_RECV) +#elif defined(SIG_UART0_RECV) + SIGNAL(SIG_UART0_RECV) +#elif defined(USART0_RX_vect) + SIGNAL(USART0_RX_vect) +#elif defined(SIG_UART_RECV) + SIGNAL(SIG_UART_RECV) +#endif + { + #if defined(UDR0) + unsigned char c = UDR0; + #elif defined(UDR) + unsigned char c = UDR; + #else + #error UDR not defined + #endif + store_char(c, &rx_buffer); + } +#endif +#endif + +#if defined(USART1_RX_vect) + void serialEvent1() __attribute__((weak)); + void serialEvent1() {} + #define serialEvent1_implemented + SIGNAL(USART1_RX_vect) + { + unsigned char c = UDR1; + store_char(c, &rx_buffer1); + } +#elif defined(SIG_USART1_RECV) + #error SIG_USART1_RECV +#endif + +#if defined(USART2_RX_vect) && defined(UDR2) + void serialEvent2() __attribute__((weak)); + void serialEvent2() {} + #define serialEvent2_implemented + SIGNAL(USART2_RX_vect) + { + unsigned char c = UDR2; + store_char(c, &rx_buffer2); + } +#elif defined(SIG_USART2_RECV) + #error SIG_USART2_RECV +#endif + +#if defined(USART3_RX_vect) && defined(UDR3) + void serialEvent3() __attribute__((weak)); + void serialEvent3() {} + #define serialEvent3_implemented + SIGNAL(USART3_RX_vect) + { + unsigned char c = UDR3; + store_char(c, &rx_buffer3); + } +#elif defined(SIG_USART3_RECV) + #error SIG_USART3_RECV +#endif + +void serialEventRun(void) +{ +#ifdef serialEvent_implemented + if (Serial.available()) serialEvent(); +#endif +#ifdef serialEvent1_implemented + if (Serial1.available()) serialEvent1(); +#endif +#ifdef serialEvent2_implemented + if (Serial2.available()) serialEvent2(); +#endif +#ifdef serialEvent3_implemented + if (Serial3.available()) serialEvent3(); +#endif +} + + +#if !defined(USART0_UDRE_vect) && defined(USART1_UDRE_vect) +// do nothing - on the 32u4 the first USART is USART1 +#else +#if !defined(UART0_UDRE_vect) && !defined(UART_UDRE_vect) && !defined(USART0_UDRE_vect) && !defined(USART_UDRE_vect) + #error "Don't know what the Data Register Empty vector is called for the first UART" +#else +#if defined(UART0_UDRE_vect) +ISR(UART0_UDRE_vect) +#elif defined(UART_UDRE_vect) +ISR(UART_UDRE_vect) +#elif defined(USART0_UDRE_vect) +ISR(USART0_UDRE_vect) +#elif defined(USART_UDRE_vect) +ISR(USART_UDRE_vect) +#endif +{ + if (tx_buffer.head == tx_buffer.tail) { + // Buffer empty, so disable interrupts +#if defined(UCSR0B) + cbi(UCSR0B, UDRIE0); +#else + cbi(UCSRB, UDRIE); +#endif + } + else { + // There is more data in the output buffer. Send the next byte + unsigned char c = tx_buffer.buffer[tx_buffer.tail]; + tx_buffer.tail = (tx_buffer.tail + 1) % SERIAL_BUFFER_SIZE; + + #if defined(UDR0) + UDR0 = c; + #elif defined(UDR) + UDR = c; + #else + #error UDR not defined + #endif + } +} +#endif +#endif + +#ifdef USART1_UDRE_vect +ISR(USART1_UDRE_vect) +{ + if (tx_buffer1.head == tx_buffer1.tail) { + // Buffer empty, so disable interrupts + cbi(UCSR1B, UDRIE1); + } + else { + // There is more data in the output buffer. Send the next byte + unsigned char c = tx_buffer1.buffer[tx_buffer1.tail]; + tx_buffer1.tail = (tx_buffer1.tail + 1) % SERIAL_BUFFER_SIZE; + + UDR1 = c; + } +} +#endif + +#ifdef USART2_UDRE_vect +ISR(USART2_UDRE_vect) +{ + if (tx_buffer2.head == tx_buffer2.tail) { + // Buffer empty, so disable interrupts + cbi(UCSR2B, UDRIE2); + } + else { + // There is more data in the output buffer. Send the next byte + unsigned char c = tx_buffer2.buffer[tx_buffer2.tail]; + tx_buffer2.tail = (tx_buffer2.tail + 1) % SERIAL_BUFFER_SIZE; + + UDR2 = c; + } +} +#endif + +#ifdef USART3_UDRE_vect +ISR(USART3_UDRE_vect) +{ + if (tx_buffer3.head == tx_buffer3.tail) { + // Buffer empty, so disable interrupts + cbi(UCSR3B, UDRIE3); + } + else { + // There is more data in the output buffer. Send the next byte + unsigned char c = tx_buffer3.buffer[tx_buffer3.tail]; + tx_buffer3.tail = (tx_buffer3.tail + 1) % SERIAL_BUFFER_SIZE; + + UDR3 = c; + } +} +#endif + + +// Constructors //////////////////////////////////////////////////////////////// + +HardwareSerial::HardwareSerial(ring_buffer *rx_buffer, ring_buffer *tx_buffer, + volatile uint8_t *ubrrh, volatile uint8_t *ubrrl, + volatile uint8_t *ucsra, volatile uint8_t *ucsrb, + volatile uint8_t *udr, + uint8_t rxen, uint8_t txen, uint8_t rxcie, uint8_t udrie, uint8_t u2x) +{ + _rx_buffer = rx_buffer; + _tx_buffer = tx_buffer; + _ubrrh = ubrrh; + _ubrrl = ubrrl; + _ucsra = ucsra; + _ucsrb = ucsrb; + _udr = udr; + _rxen = rxen; + _txen = txen; + _rxcie = rxcie; + _udrie = udrie; + _u2x = u2x; +} + +// Public Methods ////////////////////////////////////////////////////////////// + +void HardwareSerial::begin(unsigned long baud) +{ + uint16_t baud_setting; + bool use_u2x = true; + +#if F_CPU == 16000000UL + // hardcoded exception for compatibility with the bootloader shipped + // with the Duemilanove and previous boards and the firmware on the 8U2 + // on the Uno and Mega 2560. + if (baud == 57600) { + use_u2x = false; + } +#endif + +try_again: + + if (use_u2x) { + *_ucsra = 1 << _u2x; + baud_setting = (F_CPU / 4 / baud - 1) / 2; + } else { + *_ucsra = 0; + baud_setting = (F_CPU / 8 / baud - 1) / 2; + } + + if ((baud_setting > 4095) && use_u2x) + { + use_u2x = false; + goto try_again; + } + + // assign the baud_setting, a.k.a. ubbr (USART Baud Rate Register) + *_ubrrh = baud_setting >> 8; + *_ubrrl = baud_setting; + + sbi(*_ucsrb, _rxen); + sbi(*_ucsrb, _txen); + sbi(*_ucsrb, _rxcie); + cbi(*_ucsrb, _udrie); +} + +void HardwareSerial::end() +{ + // wait for transmission of outgoing data + while (_tx_buffer->head != _tx_buffer->tail) + ; + + cbi(*_ucsrb, _rxen); + cbi(*_ucsrb, _txen); + cbi(*_ucsrb, _rxcie); + cbi(*_ucsrb, _udrie); + + // clear any received data + _rx_buffer->head = _rx_buffer->tail; +} + +int HardwareSerial::available(void) +{ + return (unsigned int)(SERIAL_BUFFER_SIZE + _rx_buffer->head - _rx_buffer->tail) % SERIAL_BUFFER_SIZE; +} + +int HardwareSerial::peek(void) +{ + if (_rx_buffer->head == _rx_buffer->tail) { + return -1; + } else { + return _rx_buffer->buffer[_rx_buffer->tail]; + } +} + +int HardwareSerial::read(void) +{ + // if the head isn't ahead of the tail, we don't have any characters + if (_rx_buffer->head == _rx_buffer->tail) { + return -1; + } else { + unsigned char c = _rx_buffer->buffer[_rx_buffer->tail]; + _rx_buffer->tail = (unsigned int)(_rx_buffer->tail + 1) % SERIAL_BUFFER_SIZE; + return c; + } +} + +void HardwareSerial::flush() +{ + while (_tx_buffer->head != _tx_buffer->tail) + ; +} + +size_t HardwareSerial::write(uint8_t c) +{ + int i = (_tx_buffer->head + 1) % SERIAL_BUFFER_SIZE; + + // If the output buffer is full, there's nothing for it other than to + // wait for the interrupt handler to empty it a bit + // ???: return 0 here instead? + while (i == _tx_buffer->tail) + ; + + _tx_buffer->buffer[_tx_buffer->head] = c; + _tx_buffer->head = i; + + sbi(*_ucsrb, _udrie); + + return 1; +} + +// Preinstantiate Objects ////////////////////////////////////////////////////// + +#if defined(UBRRH) && defined(UBRRL) + HardwareSerial Serial(&rx_buffer, &tx_buffer, &UBRRH, &UBRRL, &UCSRA, &UCSRB, &UDR, RXEN, TXEN, RXCIE, UDRIE, U2X); +#elif defined(UBRR0H) && defined(UBRR0L) + HardwareSerial Serial(&rx_buffer, &tx_buffer, &UBRR0H, &UBRR0L, &UCSR0A, &UCSR0B, &UDR0, RXEN0, TXEN0, RXCIE0, UDRIE0, U2X0); +#elif defined(USBCON) + // do nothing - Serial object and buffers are initialized in CDC code +#else + #error no serial port defined (port 0) +#endif + +#if defined(UBRR1H) + HardwareSerial Serial1(&rx_buffer1, &tx_buffer1, &UBRR1H, &UBRR1L, &UCSR1A, &UCSR1B, &UDR1, RXEN1, TXEN1, RXCIE1, UDRIE1, U2X1); +#endif +#if defined(UBRR2H) + HardwareSerial Serial2(&rx_buffer2, &tx_buffer2, &UBRR2H, &UBRR2L, &UCSR2A, &UCSR2B, &UDR2, RXEN2, TXEN2, RXCIE2, UDRIE2, U2X2); +#endif +#if defined(UBRR3H) + HardwareSerial Serial3(&rx_buffer3, &tx_buffer3, &UBRR3H, &UBRR3L, &UCSR3A, &UCSR3B, &UDR3, RXEN3, TXEN3, RXCIE3, UDRIE3, U2X3); +#endif + +#endif // whole file + diff --git a/arduinoSrc1_0/HardwareSerial.h b/arduinoSrc1_0/HardwareSerial.h new file mode 100644 index 0000000..176abe1 --- /dev/null +++ b/arduinoSrc1_0/HardwareSerial.h @@ -0,0 +1,80 @@ +/* + HardwareSerial.h - Hardware serial library for Wiring + Copyright (c) 2006 Nicholas Zambetti. All right reserved. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + Modified 28 September 2010 by Mark Sproul +*/ + +#ifndef HardwareSerial_h +#define HardwareSerial_h + +#include <inttypes.h> + +#include "Stream.h" + +struct ring_buffer; + +class HardwareSerial : public Stream +{ + private: + ring_buffer *_rx_buffer; + ring_buffer *_tx_buffer; + volatile uint8_t *_ubrrh; + volatile uint8_t *_ubrrl; + volatile uint8_t *_ucsra; + volatile uint8_t *_ucsrb; + volatile uint8_t *_udr; + uint8_t _rxen; + uint8_t _txen; + uint8_t _rxcie; + uint8_t _udrie; + uint8_t _u2x; + public: + HardwareSerial(ring_buffer *rx_buffer, ring_buffer *tx_buffer, + volatile uint8_t *ubrrh, volatile uint8_t *ubrrl, + volatile uint8_t *ucsra, volatile uint8_t *ucsrb, + volatile uint8_t *udr, + uint8_t rxen, uint8_t txen, uint8_t rxcie, uint8_t udrie, uint8_t u2x); + void begin(unsigned long); + void end(); + virtual int available(void); + virtual int peek(void); + virtual int read(void); + virtual void flush(void); + virtual size_t write(uint8_t); + using Print::write; // pull in write(str) and write(buf, size) from Print +}; + +#if defined(UBRRH) || defined(UBRR0H) + extern HardwareSerial Serial; +#elif defined(USBCON) + #include "USBAPI.h" +// extern HardwareSerial Serial_; +#endif +#if defined(UBRR1H) + extern HardwareSerial Serial1; +#endif +#if defined(UBRR2H) + extern HardwareSerial Serial2; +#endif +#if defined(UBRR3H) + extern HardwareSerial Serial3; +#endif + +extern void serialEventRun(void) __attribute__((weak)); + +#endif diff --git a/arduinoSrc1_0/IPAddress.cpp b/arduinoSrc1_0/IPAddress.cpp new file mode 100644 index 0000000..fe3deb7 --- /dev/null +++ b/arduinoSrc1_0/IPAddress.cpp @@ -0,0 +1,56 @@ + +#include <Arduino.h> +#include <IPAddress.h> + +IPAddress::IPAddress() +{ + memset(_address, 0, sizeof(_address)); +} + +IPAddress::IPAddress(uint8_t first_octet, uint8_t second_octet, uint8_t third_octet, uint8_t fourth_octet) +{ + _address[0] = first_octet; + _address[1] = second_octet; + _address[2] = third_octet; + _address[3] = fourth_octet; +} + +IPAddress::IPAddress(uint32_t address) +{ + memcpy(_address, &address, sizeof(_address)); +} + +IPAddress::IPAddress(const uint8_t *address) +{ + memcpy(_address, address, sizeof(_address)); +} + +IPAddress& IPAddress::operator=(const uint8_t *address) +{ + memcpy(_address, address, sizeof(_address)); + return *this; +} + +IPAddress& IPAddress::operator=(uint32_t address) +{ + memcpy(_address, (const uint8_t *)&address, sizeof(_address)); + return *this; +} + +bool IPAddress::operator==(const uint8_t* addr) +{ + return memcmp(addr, _address, sizeof(_address)) == 0; +} + +size_t IPAddress::printTo(Print& p) const +{ + size_t n = 0; + for (int i =0; i < 3; i++) + { + n += p.print(_address[i], DEC); + n += p.print('.'); + } + n += p.print(_address[3], DEC); + return n; +} + diff --git a/arduinoSrc1_0/IPAddress.h b/arduinoSrc1_0/IPAddress.h new file mode 100644 index 0000000..2585aec --- /dev/null +++ b/arduinoSrc1_0/IPAddress.h @@ -0,0 +1,76 @@ +/* + * + * MIT License: + * Copyright (c) 2011 Adrian McEwen + * 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. + * + * adrianm@mcqn.com 1/1/2011 + */ + +#ifndef IPAddress_h +#define IPAddress_h + +#include <Printable.h> + +// A class to make it easier to handle and pass around IP addresses + +class IPAddress : public Printable { +private: + uint8_t _address[4]; // IPv4 address + // Access the raw byte array containing the address. Because this returns a pointer + // to the internal structure rather than a copy of the address this function should only + // be used when you know that the usage of the returned uint8_t* will be transient and not + // stored. + uint8_t* raw_address() { return _address; }; + +public: + // Constructors + IPAddress(); + IPAddress(uint8_t first_octet, uint8_t second_octet, uint8_t third_octet, uint8_t fourth_octet); + IPAddress(uint32_t address); + IPAddress(const uint8_t *address); + + // Overloaded cast operator to allow IPAddress objects to be used where a pointer + // to a four-byte uint8_t array is expected + operator uint32_t() { return *((uint32_t*)_address); }; + bool operator==(const IPAddress& addr) { return (*((uint32_t*)_address)) == (*((uint32_t*)addr._address)); }; + bool operator==(const uint8_t* addr); + + // Overloaded index operator to allow getting and setting individual octets of the address + uint8_t operator[](int index) const { return _address[index]; }; + uint8_t& operator[](int index) { return _address[index]; }; + + // Overloaded copy operators to allow initialisation of IPAddress objects from other types + IPAddress& operator=(const uint8_t *address); + IPAddress& operator=(uint32_t address); + + virtual size_t printTo(Print& p) const; + + friend class EthernetClass; + friend class UDP; + friend class Client; + friend class Server; + friend class DhcpClass; + friend class DNSClient; +}; + +const IPAddress INADDR_NONE(0,0,0,0); + + +#endif diff --git a/arduinoSrc1_0/Platform.h b/arduinoSrc1_0/Platform.h new file mode 100644 index 0000000..8b8f742 --- /dev/null +++ b/arduinoSrc1_0/Platform.h @@ -0,0 +1,23 @@ + +#ifndef __PLATFORM_H__ +#define __PLATFORM_H__ + +#include <inttypes.h> +#include <avr/pgmspace.h> +#include <avr/eeprom.h> +#include <avr/interrupt.h> +#include <util/delay.h> + +typedef unsigned char u8; +typedef unsigned short u16; +typedef unsigned long u32; + +#include "Arduino.h" + +#if defined(USBCON) + #include "USBDesc.h" + #include "USBCore.h" + #include "USBAPI.h" +#endif /* if defined(USBCON) */ + +#endif diff --git a/arduinoSrc1_0/Print.cpp b/arduinoSrc1_0/Print.cpp new file mode 100644 index 0000000..ff9b154 --- /dev/null +++ b/arduinoSrc1_0/Print.cpp @@ -0,0 +1,263 @@ +/* + Print.cpp - Base class that provides print() and println() + Copyright (c) 2008 David A. Mellis. All right reserved. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + Modified 23 November 2006 by David A. Mellis + */ + +#include <stdlib.h> +#include <stdio.h> +#include <string.h> +#include <math.h> +#include "Arduino.h" + +#include "Print.h" + +// Public Methods ////////////////////////////////////////////////////////////// + +/* default implementation: may be overridden */ +size_t Print::write(const uint8_t *buffer, size_t size) +{ + size_t n = 0; + while (size--) { + n += write(*buffer++); + } + return n; +} + +size_t Print::print(const __FlashStringHelper *ifsh) +{ + const prog_char *p = (const prog_char *)ifsh; + size_t n = 0; + while (1) { + unsigned char c = pgm_read_byte(p++); + if (c == 0) break; + n += write(c); + } + return n; +} + +size_t Print::print(const String &s) +{ + size_t n = 0; + for (uint16_t i = 0; i < s.length(); i++) { + n += write(s[i]); + } + return n; +} + +size_t Print::print(const char str[]) +{ + return write(str); +} + +size_t Print::print(char c) +{ + return write(c); +} + +size_t Print::print(unsigned char b, int base) +{ + return print((unsigned long) b, base); +} + +size_t Print::print(int n, int base) +{ + return print((long) n, base); +} + +size_t Print::print(unsigned int n, int base) +{ + return print((unsigned long) n, base); +} + +size_t Print::print(long n, int base) +{ + if (base == 0) { + return write(n); + } else if (base == 10) { + if (n < 0) { + int t = print('-'); + n = -n; + return printNumber(n, 10) + t; + } + return printNumber(n, 10); + } else { + return printNumber(n, base); + } +} + +size_t Print::print(unsigned long n, int base) +{ + if (base == 0) return write(n); + else return printNumber(n, base); +} + +size_t Print::print(double n, int digits) +{ + return printFloat(n, digits); +} + +size_t Print::println(const __FlashStringHelper *ifsh) +{ + size_t n = print(ifsh); + n += println(); + return n; +} + +size_t Print::print(const Printable& x) +{ + return x.printTo(*this); +} + +size_t Print::println(void) +{ + size_t n = print('\r'); + n += print('\n'); + return n; +} + +size_t Print::println(const String &s) +{ + size_t n = print(s); + n += println(); + return n; +} + +size_t Print::println(const char c[]) +{ + size_t n = print(c); + n += println(); + return n; +} + +size_t Print::println(char c) +{ + size_t n = print(c); + n += println(); + return n; +} + +size_t Print::println(unsigned char b, int base) +{ + size_t n = print(b, base); + n += println(); + return n; +} + +size_t Print::println(int num, int base) +{ + size_t n = print(num, base); + n += println(); + return n; +} + +size_t Print::println(unsigned int num, int base) +{ + size_t n = print(num, base); + n += println(); + return n; +} + +size_t Print::println(long num, int base) +{ + size_t n = print(num, base); + n += println(); + return n; +} + +size_t Print::println(unsigned long num, int base) +{ + size_t n = print(num, base); + n += println(); + return n; +} + +size_t Print::println(double num, int digits) +{ + size_t n = print(num, digits); + n += println(); + return n; +} + +size_t Print::println(const Printable& x) +{ + size_t n = print(x); + n += println(); + return n; +} + +// Private Methods ///////////////////////////////////////////////////////////// + +size_t Print::printNumber(unsigned long n, uint8_t base) { + char buf[8 * sizeof(long) + 1]; // Assumes 8-bit chars plus zero byte. + char *str = &buf[sizeof(buf) - 1]; + + *str = '\0'; + + // prevent crash if called with base == 1 + if (base < 2) base = 10; + + do { + unsigned long m = n; + n /= base; + char c = m - base * n; + *--str = c < 10 ? c + '0' : c + 'A' - 10; + } while(n); + + return write(str); +} + +size_t Print::printFloat(double number, uint8_t digits) +{ + size_t n = 0; + + // Handle negative numbers + if (number < 0.0) + { + n += print('-'); + number = -number; + } + + // Round correctly so that print(1.999, 2) prints as "2.00" + double rounding = 0.5; + for (uint8_t i=0; i<digits; ++i) + rounding /= 10.0; + + number += rounding; + + // Extract the integer part of the number and print it + unsigned long int_part = (unsigned long)number; + double remainder = number - (double)int_part; + n += print(int_part); + + // Print the decimal point, but only if there are digits beyond + if (digits > 0) { + n += print("."); + } + + // Extract digits from the remainder one at a time + while (digits-- > 0) + { + remainder *= 10.0; + int toPrint = int(remainder); + n += print(toPrint); + remainder -= toPrint; + } + + return n; +} diff --git a/arduinoSrc1_0/Print.h b/arduinoSrc1_0/Print.h new file mode 100644 index 0000000..1af6b72 --- /dev/null +++ b/arduinoSrc1_0/Print.h @@ -0,0 +1,78 @@ +/* + Print.h - Base class that provides print() and println() + Copyright (c) 2008 David A. Mellis. All right reserved. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +*/ + +#ifndef Print_h +#define Print_h + +#include <inttypes.h> +#include <stdio.h> // for size_t + +#include "WString.h" +#include "Printable.h" + +#define DEC 10 +#define HEX 16 +#define OCT 8 +#define BIN 2 + +class Print +{ + private: + int write_error; + size_t printNumber(unsigned long, uint8_t); + size_t printFloat(double, uint8_t); + protected: + void setWriteError(int err = 1) { write_error = err; } + public: + Print() : write_error(0) {} + + int getWriteError() { return write_error; } + void clearWriteError() { setWriteError(0); } + + virtual size_t write(uint8_t) = 0; + size_t write(const char *str) { return write((const uint8_t *)str, strlen(str)); } + virtual size_t write(const uint8_t *buffer, size_t size); + + size_t print(const __FlashStringHelper *); + size_t print(const String &); + size_t print(const char[]); + size_t print(char); + size_t print(unsigned char, int = DEC); + size_t print(int, int = DEC); + size_t print(unsigned int, int = DEC); + size_t print(long, int = DEC); + size_t print(unsigned long, int = DEC); + size_t print(double, int = 2); + size_t print(const Printable&); + + size_t println(const __FlashStringHelper *); + size_t println(const String &s); + size_t println(const char[]); + size_t println(char); + size_t println(unsigned char, int = DEC); + size_t println(int, int = DEC); + size_t println(unsigned int, int = DEC); + size_t println(long, int = DEC); + size_t println(unsigned long, int = DEC); + size_t println(double, int = 2); + size_t println(const Printable&); + size_t println(void); +}; + +#endif diff --git a/arduinoSrc1_0/Printable.h b/arduinoSrc1_0/Printable.h new file mode 100644 index 0000000..d03c9af --- /dev/null +++ b/arduinoSrc1_0/Printable.h @@ -0,0 +1,40 @@ +/* + Printable.h - Interface class that allows printing of complex types + Copyright (c) 2011 Adrian McEwen. All right reserved. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +*/ + +#ifndef Printable_h +#define Printable_h + +#include <new.h> + +class Print; + +/** The Printable class provides a way for new classes to allow themselves to be printed. + By deriving from Printable and implementing the printTo method, it will then be possible + for users to print out instances of this class by passing them into the usual + Print::print and Print::println methods. +*/ + +class Printable +{ + public: + virtual size_t printTo(Print& p) const = 0; +}; + +#endif + diff --git a/arduinoSrc1_0/Server.h b/arduinoSrc1_0/Server.h new file mode 100644 index 0000000..9674c76 --- /dev/null +++ b/arduinoSrc1_0/Server.h @@ -0,0 +1,9 @@ +#ifndef server_h +#define server_h + +class Server : public Print { +public: + virtual void begin() =0; +}; + +#endif diff --git a/arduinoSrc1_0/Stream.cpp b/arduinoSrc1_0/Stream.cpp new file mode 100644 index 0000000..5fad8dd --- /dev/null +++ b/arduinoSrc1_0/Stream.cpp @@ -0,0 +1,244 @@ +/* + Stream.cpp - adds parsing methods to Stream class + Copyright (c) 2008 David A. Mellis. All right reserved. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + Created July 2011 + parsing functions based on TextFinder library by Michael Margolis + */ + +#include "Arduino.h" +#include "Stream.h" + +#define PARSE_TIMEOUT 1000 // default number of milli-seconds to wait +#define NO_SKIP_CHAR 1 // a magic char not found in a valid ASCII numeric field + +// private method to read stream with timeout +int Stream::timedRead() +{ + int c; + _startMillis = millis(); + do { + c = read(); + if (c >= 0) return c; + } while(millis() - _startMillis < _timeout); + return -1; // -1 indicates timeout +} + +// private method to peek stream with timeout +int Stream::timedPeek() +{ + int c; + _startMillis = millis(); + do { + c = peek(); + if (c >= 0) return c; + } while(millis() - _startMillis < _timeout); + return -1; // -1 indicates timeout +} + +// returns peek of the next digit in the stream or -1 if timeout +// discards non-numeric characters +int Stream::peekNextDigit() +{ + int c; + while (1) { + c = timedPeek(); + if (c < 0) return c; // timeout + if (c == '-') return c; + if (c >= '0' && c <= '9') return c; + read(); // discard non-numeric + } +} + +// Public Methods +////////////////////////////////////////////////////////////// + +void Stream::setTimeout(unsigned long timeout) // sets the maximum number of milliseconds to wait +{ + _timeout = timeout; +} + + // find returns true if the target string is found +bool Stream::find(char *target) +{ + return findUntil(target, NULL); +} + +// reads data from the stream until the target string of given length is found +// returns true if target string is found, false if timed out +bool Stream::find(char *target, size_t length) +{ + return findUntil(target, length, NULL, 0); +} + +// as find but search ends if the terminator string is found +bool Stream::findUntil(char *target, char *terminator) +{ + return findUntil(target, strlen(target), terminator, strlen(terminator)); +} + +// reads data from the stream until the target string of the given length is found +// search terminated if the terminator string is found +// returns true if target string is found, false if terminated or timed out +bool Stream::findUntil(char *target, size_t targetLen, char *terminator, size_t termLen) +{ + size_t index = 0; // maximum target string length is 64k bytes! + size_t termIndex = 0; + int c; + + if( *target == 0) + return true; // return true if target is a null string + while( (c = timedRead()) > 0){ + if( c == target[index]){ + //////Serial.print("found "); Serial.write(c); Serial.print("index now"); Serial.println(index+1); + if(++index >= targetLen){ // return true if all chars in the target match + return true; + } + } + else{ + index = 0; // reset index if any char does not match + } + if(termLen > 0 && c == terminator[termIndex]){ + if(++termIndex >= termLen) + return false; // return false if terminate string found before target string + } + else + termIndex = 0; + } + return false; +} + + +// returns the first valid (long) integer value from the current position. +// initial characters that are not digits (or the minus sign) are skipped +// function is terminated by the first character that is not a digit. +long Stream::parseInt() +{ + return parseInt(NO_SKIP_CHAR); // terminate on first non-digit character (or timeout) +} + +// as above but a given skipChar is ignored +// this allows format characters (typically commas) in values to be ignored +long Stream::parseInt(char skipChar) +{ + boolean isNegative = false; + long value = 0; + int c; + + c = peekNextDigit(); + // ignore non numeric leading characters + if(c < 0) + return 0; // zero returned if timeout + + do{ + if(c == skipChar) + ; // ignore this charactor + else if(c == '-') + isNegative = true; + else if(c >= '0' && c <= '9') // is c a digit? + value = value * 10 + c - '0'; + read(); // consume the character we got with peek + c = timedPeek(); + } + while( (c >= '0' && c <= '9') || c == skipChar ); + + if(isNegative) + value = -value; + return value; +} + + +// as parseInt but returns a floating point value +float Stream::parseFloat() +{ + return parseFloat(NO_SKIP_CHAR); +} + +// as above but the given skipChar is ignored +// this allows format characters (typically commas) in values to be ignored +float Stream::parseFloat(char skipChar){ + boolean isNegative = false; + boolean isFraction = false; + long value = 0; + char c; + float fraction = 1.0; + + c = peekNextDigit(); + // ignore non numeric leading characters + if(c < 0) + return 0; // zero returned if timeout + + do{ + if(c == skipChar) + ; // ignore + else if(c == '-') + isNegative = true; + else if (c == '.') + isFraction = true; + else if(c >= '0' && c <= '9') { // is c a digit? + value = value * 10 + c - '0'; + if(isFraction) + fraction *= 0.1; + } + read(); // consume the character we got with peek + c = timedPeek(); + } + while( (c >= '0' && c <= '9') || c == '.' || c == skipChar ); + + if(isNegative) + value = -value; + if(isFraction) + return value * fraction; + else + return value; +} + +// read characters from stream into buffer +// terminates if length characters have been read, or timeout (see setTimeout) +// returns the number of characters placed in the buffer +// the buffer is NOT null terminated. +// +size_t Stream::readBytes(char *buffer, size_t length) +{ + size_t count = 0; + while (count < length) { + int c = timedRead(); + if (c < 0) break; + *buffer++ = (char)c; + count++; + } + return count; +} + + +// as readBytes with terminator character +// terminates if length characters have been read, timeout, or if the terminator character detected +// returns the number of characters placed in the buffer (0 means no valid data found) + +size_t Stream::readBytesUntil(char terminator, char *buffer, size_t length) +{ + if (length < 1) return 0; + size_t index = 0; + while (index < length) { + int c = timedRead(); + if (c < 0 || c == terminator) break; + *buffer++ = (char)c; + index++; + } + return index; // return number of characters, not including null terminator +} + diff --git a/arduinoSrc1_0/Stream.h b/arduinoSrc1_0/Stream.h new file mode 100644 index 0000000..13f11be --- /dev/null +++ b/arduinoSrc1_0/Stream.h @@ -0,0 +1,94 @@ +/* + Stream.h - base class for character-based streams. + Copyright (c) 2010 David A. Mellis. All right reserved. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + parsing functions based on TextFinder library by Michael Margolis +*/ + +#ifndef Stream_h +#define Stream_h + +#include <inttypes.h> +#include "Print.h" + +// compatability macros for testing +/* +#define getInt() parseInt() +#define getInt(skipChar) parseInt(skipchar) +#define getFloat() parseFloat() +#define getFloat(skipChar) parseFloat(skipChar) +#define getString( pre_string, post_string, buffer, length) +readBytesBetween( pre_string, terminator, buffer, length) +*/ + +class Stream : public Print +{ + private: + unsigned long _timeout; // number of milliseconds to wait for the next char before aborting timed read + unsigned long _startMillis; // used for timeout measurement + int timedRead(); // private method to read stream with timeout + int timedPeek(); // private method to peek stream with timeout + int peekNextDigit(); // returns the next numeric digit in the stream or -1 if timeout + + public: + virtual int available() = 0; + virtual int read() = 0; + virtual int peek() = 0; + virtual void flush() = 0; + + Stream() {_timeout=1000;} + +// parsing methods + + void setTimeout(unsigned long timeout); // sets maximum milliseconds to wait for stream data, default is 1 second + + bool find(char *target); // reads data from the stream until the target string is found + // returns true if target string is found, false if timed out (see setTimeout) + + bool find(char *target, size_t length); // reads data from the stream until the target string of given length is found + // returns true if target string is found, false if timed out + + bool findUntil(char *target, char *terminator); // as find but search ends if the terminator string is found + + bool findUntil(char *target, size_t targetLen, char *terminate, size_t termLen); // as above but search ends if the terminate string is found + + + long parseInt(); // returns the first valid (long) integer value from the current position. + // initial characters that are not digits (or the minus sign) are skipped + // integer is terminated by the first character that is not a digit. + + float parseFloat(); // float version of parseInt + + size_t readBytes( char *buffer, size_t length); // read chars from stream into buffer + // terminates if length characters have been read or timeout (see setTimeout) + // returns the number of characters placed in the buffer (0 means no valid data found) + + size_t readBytesUntil( char terminator, char *buffer, size_t length); // as readBytes with terminator character + // terminates if length characters have been read, timeout, or if the terminator character detected + // returns the number of characters placed in the buffer (0 means no valid data found) + + // Arduino String functions to be added here + + protected: + long parseInt(char skipChar); // as above but the given skipChar is ignored + // as above but the given skipChar is ignored + // this allows format characters (typically commas) in values to be ignored + + float parseFloat(char skipChar); // as above but the given skipChar is ignored +}; + +#endif diff --git a/arduinoSrc1_0/Tone.cpp b/arduinoSrc1_0/Tone.cpp new file mode 100644 index 0000000..20eed3f --- /dev/null +++ b/arduinoSrc1_0/Tone.cpp @@ -0,0 +1,601 @@ +/* Tone.cpp + + A Tone Generator Library + + Written by Brett Hagman + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +Version Modified By Date Comments +------- ----------- -------- -------- +0001 B Hagman 09/08/02 Initial coding +0002 B Hagman 09/08/18 Multiple pins +0003 B Hagman 09/08/18 Moved initialization from constructor to begin() +0004 B Hagman 09/09/26 Fixed problems with ATmega8 +0005 B Hagman 09/11/23 Scanned prescalars for best fit on 8 bit timers + 09/11/25 Changed pin toggle method to XOR + 09/11/25 Fixed timer0 from being excluded +0006 D Mellis 09/12/29 Replaced objects with functions +0007 M Sproul 10/08/29 Changed #ifdefs from cpu to register +*************************************************/ + +#include <avr/interrupt.h> +#include <avr/pgmspace.h> +#include "Arduino.h" +#include "pins_arduino.h" + +#if defined(__AVR_ATmega8__) || defined(__AVR_ATmega128__) +#define TCCR2A TCCR2 +#define TCCR2B TCCR2 +#define COM2A1 COM21 +#define COM2A0 COM20 +#define OCR2A OCR2 +#define TIMSK2 TIMSK +#define OCIE2A OCIE2 +#define TIMER2_COMPA_vect TIMER2_COMP_vect +#define TIMSK1 TIMSK +#endif + +// timerx_toggle_count: +// > 0 - duration specified +// = 0 - stopped +// < 0 - infinitely (until stop() method called, or new play() called) + +#if !defined(__AVR_ATmega8__) +volatile long timer0_toggle_count; +volatile uint8_t *timer0_pin_port; +volatile uint8_t timer0_pin_mask; +#endif + +volatile long timer1_toggle_count; +volatile uint8_t *timer1_pin_port; +volatile uint8_t timer1_pin_mask; +volatile long timer2_toggle_count; +volatile uint8_t *timer2_pin_port; +volatile uint8_t timer2_pin_mask; + +#if defined(TIMSK3) +volatile long timer3_toggle_count; +volatile uint8_t *timer3_pin_port; +volatile uint8_t timer3_pin_mask; +#endif + +#if defined(TIMSK4) +volatile long timer4_toggle_count; +volatile uint8_t *timer4_pin_port; +volatile uint8_t timer4_pin_mask; +#endif + +#if defined(TIMSK5) +volatile long timer5_toggle_count; +volatile uint8_t *timer5_pin_port; +volatile uint8_t timer5_pin_mask; +#endif + + +// MLS: This does not make sense, the 3 options are the same +#if defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__) + +#define AVAILABLE_TONE_PINS 1 + +const uint8_t PROGMEM tone_pin_to_timer_PGM[] = { 2 /*, 3, 4, 5, 1, 0 */ }; +static uint8_t tone_pins[AVAILABLE_TONE_PINS] = { 255 /*, 255, 255, 255, 255, 255 */ }; + +#elif defined(__AVR_ATmega8__) + +#define AVAILABLE_TONE_PINS 1 + +const uint8_t PROGMEM tone_pin_to_timer_PGM[] = { 2 /*, 1 */ }; +static uint8_t tone_pins[AVAILABLE_TONE_PINS] = { 255 /*, 255 */ }; + +#else + +#define AVAILABLE_TONE_PINS 1 + +// Leave timer 0 to last. +const uint8_t PROGMEM tone_pin_to_timer_PGM[] = { 2 /*, 1, 0 */ }; +static uint8_t tone_pins[AVAILABLE_TONE_PINS] = { 255 /*, 255, 255 */ }; + +#endif + + + +static int8_t toneBegin(uint8_t _pin) +{ + int8_t _timer = -1; + + // if we're already using the pin, the timer should be configured. + for (int i = 0; i < AVAILABLE_TONE_PINS; i++) { + if (tone_pins[i] == _pin) { + return pgm_read_byte(tone_pin_to_timer_PGM + i); + } + } + + // search for an unused timer. + for (int i = 0; i < AVAILABLE_TONE_PINS; i++) { + if (tone_pins[i] == 255) { + tone_pins[i] = _pin; + _timer = pgm_read_byte(tone_pin_to_timer_PGM + i); + break; + } + } + + if (_timer != -1) + { + // Set timer specific stuff + // All timers in CTC mode + // 8 bit timers will require changing prescalar values, + // whereas 16 bit timers are set to either ck/1 or ck/64 prescalar + switch (_timer) + { + #if defined(TCCR0A) && defined(TCCR0B) + case 0: + // 8 bit timer + TCCR0A = 0; + TCCR0B = 0; + bitWrite(TCCR0A, WGM01, 1); + bitWrite(TCCR0B, CS00, 1); + timer0_pin_port = portOutputRegister(digitalPinToPort(_pin)); + timer0_pin_mask = digitalPinToBitMask(_pin); + break; + #endif + + #if defined(TCCR1A) && defined(TCCR1B) && defined(WGM12) + case 1: + // 16 bit timer + TCCR1A = 0; + TCCR1B = 0; + bitWrite(TCCR1B, WGM12, 1); + bitWrite(TCCR1B, CS10, 1); + timer1_pin_port = portOutputRegister(digitalPinToPort(_pin)); + timer1_pin_mask = digitalPinToBitMask(_pin); + break; + #endif + + #if defined(TCCR2A) && defined(TCCR2B) + case 2: + // 8 bit timer + TCCR2A = 0; + TCCR2B = 0; + bitWrite(TCCR2A, WGM21, 1); + bitWrite(TCCR2B, CS20, 1); + timer2_pin_port = portOutputRegister(digitalPinToPort(_pin)); + timer2_pin_mask = digitalPinToBitMask(_pin); + break; + #endif + + #if defined(TCCR3A) && defined(TCCR3B) && defined(TIMSK3) + case 3: + // 16 bit timer + TCCR3A = 0; + TCCR3B = 0; + bitWrite(TCCR3B, WGM32, 1); + bitWrite(TCCR3B, CS30, 1); + timer3_pin_port = portOutputRegister(digitalPinToPort(_pin)); + timer3_pin_mask = digitalPinToBitMask(_pin); + break; + #endif + + #if defined(TCCR4A) && defined(TCCR4B) && defined(TIMSK4) + case 4: + // 16 bit timer + TCCR4A = 0; + TCCR4B = 0; + #if defined(WGM42) + bitWrite(TCCR4B, WGM42, 1); + #elif defined(CS43) + #warning this may not be correct + // atmega32u4 + bitWrite(TCCR4B, CS43, 1); + #endif + bitWrite(TCCR4B, CS40, 1); + timer4_pin_port = portOutputRegister(digitalPinToPort(_pin)); + timer4_pin_mask = digitalPinToBitMask(_pin); + break; + #endif + + #if defined(TCCR5A) && defined(TCCR5B) && defined(TIMSK5) + case 5: + // 16 bit timer + TCCR5A = 0; + TCCR5B = 0; + bitWrite(TCCR5B, WGM52, 1); + bitWrite(TCCR5B, CS50, 1); + timer5_pin_port = portOutputRegister(digitalPinToPort(_pin)); + timer5_pin_mask = digitalPinToBitMask(_pin); + break; + #endif + } + } + + return _timer; +} + + + +// frequency (in hertz) and duration (in milliseconds). + +void tone(uint8_t _pin, unsigned int frequency, unsigned long duration) +{ + uint8_t prescalarbits = 0b001; + long toggle_count = 0; + uint32_t ocr = 0; + int8_t _timer; + + _timer = toneBegin(_pin); + + if (_timer >= 0) + { + // Set the pinMode as OUTPUT + pinMode(_pin, OUTPUT); + + // if we are using an 8 bit timer, scan through prescalars to find the best fit + if (_timer == 0 || _timer == 2) + { + ocr = F_CPU / frequency / 2 - 1; + prescalarbits = 0b001; // ck/1: same for both timers + if (ocr > 255) + { + ocr = F_CPU / frequency / 2 / 8 - 1; + prescalarbits = 0b010; // ck/8: same for both timers + + if (_timer == 2 && ocr > 255) + { + ocr = F_CPU / frequency / 2 / 32 - 1; + prescalarbits = 0b011; + } + + if (ocr > 255) + { + ocr = F_CPU / frequency / 2 / 64 - 1; + prescalarbits = _timer == 0 ? 0b011 : 0b100; + + if (_timer == 2 && ocr > 255) + { + ocr = F_CPU / frequency / 2 / 128 - 1; + prescalarbits = 0b101; + } + + if (ocr > 255) + { + ocr = F_CPU / frequency / 2 / 256 - 1; + prescalarbits = _timer == 0 ? 0b100 : 0b110; + if (ocr > 255) + { + // can't do any better than /1024 + ocr = F_CPU / frequency / 2 / 1024 - 1; + prescalarbits = _timer == 0 ? 0b101 : 0b111; + } + } + } + } + +#if defined(TCCR0B) + if (_timer == 0) + { + TCCR0B = prescalarbits; + } + else +#endif +#if defined(TCCR2B) + { + TCCR2B = prescalarbits; + } +#else + { + // dummy place holder to make the above ifdefs work + } +#endif + } + else + { + // two choices for the 16 bit timers: ck/1 or ck/64 + ocr = F_CPU / frequency / 2 - 1; + + prescalarbits = 0b001; + if (ocr > 0xffff) + { + ocr = F_CPU / frequency / 2 / 64 - 1; + prescalarbits = 0b011; + } + + if (_timer == 1) + { +#if defined(TCCR1B) + TCCR1B = (TCCR1B & 0b11111000) | prescalarbits; +#endif + } +#if defined(TCCR3B) + else if (_timer == 3) + TCCR3B = (TCCR3B & 0b11111000) | prescalarbits; +#endif +#if defined(TCCR4B) + else if (_timer == 4) + TCCR4B = (TCCR4B & 0b11111000) | prescalarbits; +#endif +#if defined(TCCR5B) + else if (_timer == 5) + TCCR5B = (TCCR5B & 0b11111000) | prescalarbits; +#endif + + } + + + // Calculate the toggle count + if (duration > 0) + { + toggle_count = 2 * frequency * duration / 1000; + } + else + { + toggle_count = -1; + } + + // Set the OCR for the given timer, + // set the toggle count, + // then turn on the interrupts + switch (_timer) + { + +#if defined(OCR0A) && defined(TIMSK0) && defined(OCIE0A) + case 0: + OCR0A = ocr; + timer0_toggle_count = toggle_count; + bitWrite(TIMSK0, OCIE0A, 1); + break; +#endif + + case 1: +#if defined(OCR1A) && defined(TIMSK1) && defined(OCIE1A) + OCR1A = ocr; + timer1_toggle_count = toggle_count; + bitWrite(TIMSK1, OCIE1A, 1); +#elif defined(OCR1A) && defined(TIMSK) && defined(OCIE1A) + // this combination is for at least the ATmega32 + OCR1A = ocr; + timer1_toggle_count = toggle_count; + bitWrite(TIMSK, OCIE1A, 1); +#endif + break; + +#if defined(OCR2A) && defined(TIMSK2) && defined(OCIE2A) + case 2: + OCR2A = ocr; + timer2_toggle_count = toggle_count; + bitWrite(TIMSK2, OCIE2A, 1); + break; +#endif + +#if defined(TIMSK3) + case 3: + OCR3A = ocr; + timer3_toggle_count = toggle_count; + bitWrite(TIMSK3, OCIE3A, 1); + break; +#endif + +#if defined(TIMSK4) + case 4: + OCR4A = ocr; + timer4_toggle_count = toggle_count; + bitWrite(TIMSK4, OCIE4A, 1); + break; +#endif + +#if defined(OCR5A) && defined(TIMSK5) && defined(OCIE5A) + case 5: + OCR5A = ocr; + timer5_toggle_count = toggle_count; + bitWrite(TIMSK5, OCIE5A, 1); + break; +#endif + + } + } +} + + +// XXX: this function only works properly for timer 2 (the only one we use +// currently). for the others, it should end the tone, but won't restore +// proper PWM functionality for the timer. +void disableTimer(uint8_t _timer) +{ + switch (_timer) + { + case 0: + #if defined(TIMSK0) + TIMSK0 = 0; + #elif defined(TIMSK) + TIMSK = 0; // atmega32 + #endif + break; + +#if defined(TIMSK1) && defined(OCIE1A) + case 1: + bitWrite(TIMSK1, OCIE1A, 0); + break; +#endif + + case 2: + #if defined(TIMSK2) && defined(OCIE2A) + bitWrite(TIMSK2, OCIE2A, 0); // disable interrupt + #endif + #if defined(TCCR2A) && defined(WGM20) + TCCR2A = (1 << WGM20); + #endif + #if defined(TCCR2B) && defined(CS22) + TCCR2B = (TCCR2B & 0b11111000) | (1 << CS22); + #endif + #if defined(OCR2A) + OCR2A = 0; + #endif + break; + +#if defined(TIMSK3) + case 3: + TIMSK3 = 0; + break; +#endif + +#if defined(TIMSK4) + case 4: + TIMSK4 = 0; + break; +#endif + +#if defined(TIMSK5) + case 5: + TIMSK5 = 0; + break; +#endif + } +} + + +void noTone(uint8_t _pin) +{ + int8_t _timer = -1; + + for (int i = 0; i < AVAILABLE_TONE_PINS; i++) { + if (tone_pins[i] == _pin) { + _timer = pgm_read_byte(tone_pin_to_timer_PGM + i); + tone_pins[i] = 255; + } + } + + disableTimer(_timer); + + digitalWrite(_pin, 0); +} + +#if 0 +#if !defined(__AVR_ATmega8__) +ISR(TIMER0_COMPA_vect) +{ + if (timer0_toggle_count != 0) + { + // toggle the pin + *timer0_pin_port ^= timer0_pin_mask; + + if (timer0_toggle_count > 0) + timer0_toggle_count--; + } + else + { + disableTimer(0); + *timer0_pin_port &= ~(timer0_pin_mask); // keep pin low after stop + } +} +#endif + + +ISR(TIMER1_COMPA_vect) +{ + if (timer1_toggle_count != 0) + { + // toggle the pin + *timer1_pin_port ^= timer1_pin_mask; + + if (timer1_toggle_count > 0) + timer1_toggle_count--; + } + else + { + disableTimer(1); + *timer1_pin_port &= ~(timer1_pin_mask); // keep pin low after stop + } +} +#endif + + +ISR(TIMER2_COMPA_vect) +{ + + if (timer2_toggle_count != 0) + { + // toggle the pin + *timer2_pin_port ^= timer2_pin_mask; + + if (timer2_toggle_count > 0) + timer2_toggle_count--; + } + else + { + // need to call noTone() so that the tone_pins[] entry is reset, so the + // timer gets initialized next time we call tone(). + // XXX: this assumes timer 2 is always the first one used. + noTone(tone_pins[0]); +// disableTimer(2); +// *timer2_pin_port &= ~(timer2_pin_mask); // keep pin low after stop + } +} + + + +//#if defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__) +#if 0 + +ISR(TIMER3_COMPA_vect) +{ + if (timer3_toggle_count != 0) + { + // toggle the pin + *timer3_pin_port ^= timer3_pin_mask; + + if (timer3_toggle_count > 0) + timer3_toggle_count--; + } + else + { + disableTimer(3); + *timer3_pin_port &= ~(timer3_pin_mask); // keep pin low after stop + } +} + +ISR(TIMER4_COMPA_vect) +{ + if (timer4_toggle_count != 0) + { + // toggle the pin + *timer4_pin_port ^= timer4_pin_mask; + + if (timer4_toggle_count > 0) + timer4_toggle_count--; + } + else + { + disableTimer(4); + *timer4_pin_port &= ~(timer4_pin_mask); // keep pin low after stop + } +} + +ISR(TIMER5_COMPA_vect) +{ + if (timer5_toggle_count != 0) + { + // toggle the pin + *timer5_pin_port ^= timer5_pin_mask; + + if (timer5_toggle_count > 0) + timer5_toggle_count--; + } + else + { + disableTimer(5); + *timer5_pin_port &= ~(timer5_pin_mask); // keep pin low after stop + } +} + +#endif diff --git a/arduinoSrc1_0/USBAPI.h b/arduinoSrc1_0/USBAPI.h new file mode 100644 index 0000000..26a2032 --- /dev/null +++ b/arduinoSrc1_0/USBAPI.h @@ -0,0 +1,166 @@ + + +#ifndef __USBAPI__ +#define __USBAPI__ + +#if defined(USBCON) + +//================================================================================ +//================================================================================ +// USB + +class USB_ +{ +public: + USB_(); + bool configured(); + + void attach(); + void detach(); // Serial port goes down too... + void poll(); +}; +extern USB_ USB; + +//================================================================================ +//================================================================================ +// Serial over CDC (Serial1 is the physical port) + +class Serial_ : public Stream +{ +public: + void begin(uint16_t baud_count); + void end(void); + + virtual int available(void); + virtual int peek(void); + virtual int read(void); + virtual void flush(void); + virtual size_t write(uint8_t); +}; +extern Serial_ Serial; + +//================================================================================ +//================================================================================ +// Mouse + +#define MOUSE_LEFT 1 +#define MOUSE_RIGHT 2 +#define MOUSE_MIDDLE 4 +#define MOUSE_ALL (MOUSE_LEFT | MOUSE_RIGHT | MOUSE_MIDDLE) + +class Mouse_ +{ +private: + uint8_t _buttons; + void buttons(uint8_t b); +public: + Mouse_(); + void click(uint8_t b = MOUSE_LEFT); + void move(signed char x, signed char y, signed char wheel = 0); + void press(uint8_t b = MOUSE_LEFT); // press LEFT by default + void release(uint8_t b = MOUSE_LEFT); // release LEFT by default + bool isPressed(uint8_t b = MOUSE_ALL); // check all buttons by default +}; +extern Mouse_ Mouse; + +//================================================================================ +//================================================================================ +// Keyboard + +#define KEY_MODIFIER_LEFT_CTRL 0x01 +#define KEY_MODIFIER_LEFT_SHIFT 0x02 +#define KEY_MODIFIER_LEFT_ALT 0x04 +#define KEY_MODIFIER_LEFT_GUI 0x08 +#define KEY_MODIFIER_RIGHT_CTRL 0x010 +#define KEY_MODIFIER_RIGHT_SHIFT 0x020 +#define KEY_MODIFIER_RIGHT_ALT 0x040 +#define KEY_MODIFIER_RIGHT_GUI 0x080 + +// Low level key report: up to 6 keys and shift, ctrl etc at once +typedef struct +{ + uint8_t modifiers; + uint8_t reserved; + uint8_t keys[6]; +} KeyReport; + +// Map a character into a key report +// Called from Print to map text to keycodes +class KeyMap +{ +public: + virtual void charToKey(int c, KeyReport* keyReport) = 0; +}; + +// +class Keyboard_ : public Print +{ +private: + KeyMap* _keyMap; + void sendReport(KeyReport* keys); + void setKeyMap(KeyMap* keyMap); +public: + Keyboard_(); + virtual size_t write(uint8_t); +}; +extern Keyboard_ Keyboard; + +//================================================================================ +//================================================================================ +// Low level API + +typedef struct +{ + uint8_t bmRequestType; + uint8_t bRequest; + uint8_t wValueL; + uint8_t wValueH; + uint16_t wIndex; + uint16_t wLength; +} Setup; + +//================================================================================ +//================================================================================ +// HID 'Driver' + +int HID_GetInterface(uint8_t* interfaceNum); +int HID_GetDescriptor(int i); +bool HID_Setup(Setup& setup); +void HID_SendReport(uint8_t id, const void* data, int len); + +//================================================================================ +//================================================================================ +// MSC 'Driver' + +int MSC_GetInterface(uint8_t* interfaceNum); +int MSC_GetDescriptor(int i); +bool MSC_Setup(Setup& setup); +bool MSC_Data(uint8_t rx,uint8_t tx); + +//================================================================================ +//================================================================================ +// CSC 'Driver' + +int CDC_GetInterface(uint8_t* interfaceNum); +int CDC_GetDescriptor(int i); +bool CDC_Setup(Setup& setup); + +//================================================================================ +//================================================================================ + +#define TRANSFER_PGM 0x80 +#define TRANSFER_RELEASE 0x40 +#define TRANSFER_ZERO 0x20 + +int USB_SendControl(uint8_t flags, const void* d, int len); +int USB_RecvControl(void* d, int len); + +uint8_t USB_Available(uint8_t ep); +int USB_Send(uint8_t ep, const void* data, int len); // blocking +int USB_Recv(uint8_t ep, void* data, int len); // non-blocking +int USB_Recv(uint8_t ep); // non-blocking +void USB_Flush(uint8_t ep); + +#endif + +#endif /* if defined(USBCON) */
\ No newline at end of file diff --git a/arduinoSrc1_0/USBCore.cpp b/arduinoSrc1_0/USBCore.cpp new file mode 100644 index 0000000..398bc73 --- /dev/null +++ b/arduinoSrc1_0/USBCore.cpp @@ -0,0 +1,660 @@ + + +/* Copyright (c) 2010, Peter Barrett +** +** Permission to use, copy, modify, and/or distribute this software for +** any purpose with or without fee is hereby granted, provided that the +** above copyright notice and this permission notice appear in all copies. +** +** THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL +** WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED +** WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR +** BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES +** OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, +** WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, +** ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS +** SOFTWARE. +*/ + +#include "Platform.h" +#include "USBAPI.h" +#include "USBDesc.h" + +#if defined(USBCON) + +#define EP_TYPE_CONTROL 0x00 +#define EP_TYPE_BULK_IN 0x81 +#define EP_TYPE_BULK_OUT 0x80 +#define EP_TYPE_INTERRUPT_IN 0xC1 +#define EP_TYPE_INTERRUPT_OUT 0xC0 +#define EP_TYPE_ISOCHRONOUS_IN 0x41 +#define EP_TYPE_ISOCHRONOUS_OUT 0x40 + +/** Pulse generation counters to keep track of the number of milliseconds remaining for each pulse type */ +#define TX_RX_LED_PULSE_MS 100 +volatile u8 TxLEDPulse; /**< Milliseconds remaining for data Tx LED pulse */ +volatile u8 RxLEDPulse; /**< Milliseconds remaining for data Rx LED pulse */ + +//================================================================== +//================================================================== + +extern const u16 STRING_LANGUAGE[] PROGMEM; +extern const u16 STRING_IPRODUCT[] PROGMEM; +extern const u16 STRING_IMANUFACTURER[] PROGMEM; +extern const DeviceDescriptor USB_DeviceDescriptor PROGMEM; +extern const DeviceDescriptor USB_DeviceDescriptorA PROGMEM; + +const u16 STRING_LANGUAGE[2] = { + (3<<8) | (2+2), + 0x0409 // English +}; + +const u16 STRING_IPRODUCT[17] = { + (3<<8) | (2+2*16), +#if USB_PID == USB_PID_LEONARDO + 'A','r','d','u','i','n','o',' ','L','e','o','n','a','r','d','o' +#elif USB_PID == USB_PID_MICRO + 'A','r','d','u','i','n','o',' ','M','i','c','r','o',' ',' ',' ' +#endif +}; + +const u16 STRING_IMANUFACTURER[12] = { + (3<<8) | (2+2*11), + 'A','r','d','u','i','n','o',' ','L','L','C' +}; + +#ifdef CDC_ENABLED +#define DEVICE_CLASS 0x02 +#else +#define DEVICE_CLASS 0x00 +#endif + +// DEVICE DESCRIPTOR +const DeviceDescriptor USB_DeviceDescriptor = + D_DEVICE(0x00,0x00,0x00,64,USB_VID,USB_PID,0x100,IMANUFACTURER,IPRODUCT,0,1); + +const DeviceDescriptor USB_DeviceDescriptorA = + D_DEVICE(DEVICE_CLASS,0x00,0x00,64,USB_VID,USB_PID,0x100,IMANUFACTURER,IPRODUCT,0,1); + +//================================================================== +//================================================================== + +volatile u8 _usbConfiguration = 0; + +static inline void WaitIN(void) +{ + while (!(UEINTX & (1<<TXINI))); +} + +static inline void ClearIN(void) +{ + UEINTX = ~(1<<TXINI); +} + +static inline void WaitOUT(void) +{ + while (!(UEINTX & (1<<RXOUTI))) + ; +} + +static inline u8 WaitForINOrOUT() +{ + while (!(UEINTX & ((1<<TXINI)|(1<<RXOUTI)))) + ; + return (UEINTX & (1<<RXOUTI)) == 0; +} + +static inline void ClearOUT(void) +{ + UEINTX = ~(1<<RXOUTI); +} + +void Recv(volatile u8* data, u8 count) +{ + while (count--) + *data++ = UEDATX; + + RXLED1; // light the RX LED + RxLEDPulse = TX_RX_LED_PULSE_MS; +} + +static inline u8 Recv8() +{ + RXLED1; // light the RX LED + RxLEDPulse = TX_RX_LED_PULSE_MS; + + return UEDATX; +} + +static inline void Send8(u8 d) +{ + UEDATX = d; +} + +static inline void SetEP(u8 ep) +{ + UENUM = ep; +} + +static inline u8 FifoByteCount() +{ + return UEBCLX; +} + +static inline u8 ReceivedSetupInt() +{ + return UEINTX & (1<<RXSTPI); +} + +static inline void ClearSetupInt() +{ + UEINTX = ~((1<<RXSTPI) | (1<<RXOUTI) | (1<<TXINI)); +} + +static inline void Stall() +{ + UECONX = (1<<STALLRQ) | (1<<EPEN); +} + +static inline u8 ReadWriteAllowed() +{ + return UEINTX & (1<<RWAL); +} + +static inline u8 Stalled() +{ + return UEINTX & (1<<STALLEDI); +} + +static inline u8 FifoFree() +{ + return UEINTX & (1<<FIFOCON); +} + +static inline void ReleaseRX() +{ + UEINTX = 0x6B; // FIFOCON=0 NAKINI=1 RWAL=1 NAKOUTI=0 RXSTPI=1 RXOUTI=0 STALLEDI=1 TXINI=1 +} + +static inline void ReleaseTX() +{ + UEINTX = 0x3A; // FIFOCON=0 NAKINI=0 RWAL=1 NAKOUTI=1 RXSTPI=1 RXOUTI=0 STALLEDI=1 TXINI=0 +} + +static inline u8 FrameNumber() +{ + return UDFNUML; +} + +//================================================================== +//================================================================== + +u8 USBGetConfiguration(void) +{ + return _usbConfiguration; +} + +#define USB_RECV_TIMEOUT +class LockEP +{ + u8 _sreg; +public: + LockEP(u8 ep) : _sreg(SREG) + { + cli(); + SetEP(ep & 7); + } + ~LockEP() + { + SREG = _sreg; + } +}; + +// Number of bytes, assumes a rx endpoint +u8 USB_Available(u8 ep) +{ + LockEP lock(ep); + return FifoByteCount(); +} + +// Non Blocking receive +// Return number of bytes read +int USB_Recv(u8 ep, void* d, int len) +{ + if (!_usbConfiguration || len < 0) + return -1; + + LockEP lock(ep); + u8 n = FifoByteCount(); + len = min(n,len); + n = len; + u8* dst = (u8*)d; + while (n--) + *dst++ = Recv8(); + if (len && !FifoByteCount()) // release empty buffer + ReleaseRX(); + + return len; +} + +// Recv 1 byte if ready +int USB_Recv(u8 ep) +{ + u8 c; + if (USB_Recv(ep,&c,1) != 1) + return -1; + return c; +} + +// Space in send EP +u8 USB_SendSpace(u8 ep) +{ + LockEP lock(ep); + if (!ReadWriteAllowed()) + return 0; + return 64 - FifoByteCount(); +} + +// Blocking Send of data to an endpoint +int USB_Send(u8 ep, const void* d, int len) +{ + if (!_usbConfiguration) + return -1; + + int r = len; + const u8* data = (const u8*)d; + u8 zero = ep & TRANSFER_ZERO; + u8 timeout = 250; // 250ms timeout on send? TODO + while (len) + { + u8 n = USB_SendSpace(ep); + if (n == 0) + { + if (!(--timeout)) + return -1; + delay(1); + continue; + } + + if (n > len) + n = len; + len -= n; + { + LockEP lock(ep); + if (ep & TRANSFER_ZERO) + { + while (n--) + Send8(0); + } + else if (ep & TRANSFER_PGM) + { + while (n--) + Send8(pgm_read_byte(data++)); + } + else + { + while (n--) + Send8(*data++); + } + if (!ReadWriteAllowed() || ((len == 0) && (ep & TRANSFER_RELEASE))) // Release full buffer + ReleaseTX(); + } + } + TXLED1; // light the TX LED + TxLEDPulse = TX_RX_LED_PULSE_MS; + return r; +} + +extern const u8 _initEndpoints[] PROGMEM; +const u8 _initEndpoints[] = +{ + 0, + +#ifdef CDC_ENABLED + EP_TYPE_INTERRUPT_IN, // CDC_ENDPOINT_ACM + EP_TYPE_BULK_OUT, // CDC_ENDPOINT_OUT + EP_TYPE_BULK_IN, // CDC_ENDPOINT_IN +#endif + +#ifdef HID_ENABLED + EP_TYPE_INTERRUPT_IN // HID_ENDPOINT_INT +#endif +}; + +#define EP_SINGLE_64 0x32 // EP0 +#define EP_DOUBLE_64 0x36 // Other endpoints + +static +void InitEP(u8 index, u8 type, u8 size) +{ + UENUM = index; + UECONX = 1; + UECFG0X = type; + UECFG1X = size; +} + +static +void InitEndpoints() +{ + for (u8 i = 1; i < sizeof(_initEndpoints); i++) + { + UENUM = i; + UECONX = 1; + UECFG0X = pgm_read_byte(_initEndpoints+i); + UECFG1X = EP_DOUBLE_64; + } + UERST = 0x7E; // And reset them + UERST = 0; +} + +// Handle CLASS_INTERFACE requests +static +bool ClassInterfaceRequest(Setup& setup) +{ + u8 i = setup.wIndex; + +#ifdef CDC_ENABLED + if (CDC_ACM_INTERFACE == i) + return CDC_Setup(setup); +#endif + +#ifdef HID_ENABLED + if (HID_INTERFACE == i) + return HID_Setup(setup); +#endif + return false; +} + +int _cmark; +int _cend; +void InitControl(int end) +{ + SetEP(0); + _cmark = 0; + _cend = end; +} + +static +bool SendControl(u8 d) +{ + if (_cmark < _cend) + { + if (!WaitForINOrOUT()) + return false; + Send8(d); + if (!((_cmark + 1) & 0x3F)) + ClearIN(); // Fifo is full, release this packet + } + _cmark++; + return true; +}; + +// Clipped by _cmark/_cend +int USB_SendControl(u8 flags, const void* d, int len) +{ + int sent = len; + const u8* data = (const u8*)d; + bool pgm = flags & TRANSFER_PGM; + while (len--) + { + u8 c = pgm ? pgm_read_byte(data++) : *data++; + if (!SendControl(c)) + return -1; + } + return sent; +} + +// Does not timeout or cross fifo boundaries +// Will only work for transfers <= 64 bytes +// TODO +int USB_RecvControl(void* d, int len) +{ + WaitOUT(); + Recv((u8*)d,len); + ClearOUT(); + return len; +} + +int SendInterfaces() +{ + int total = 0; + u8 interfaces = 0; + +#ifdef CDC_ENABLED + total = CDC_GetInterface(&interfaces); +#endif + +#ifdef HID_ENABLED + total += HID_GetInterface(&interfaces); +#endif + + return interfaces; +} + +// Construct a dynamic configuration descriptor +// This really needs dynamic endpoint allocation etc +// TODO +static +bool SendConfiguration(int maxlen) +{ + // Count and measure interfaces + InitControl(0); + int interfaces = SendInterfaces(); + ConfigDescriptor config = D_CONFIG(_cmark + sizeof(ConfigDescriptor),interfaces); + + // Now send them + InitControl(maxlen); + USB_SendControl(0,&config,sizeof(ConfigDescriptor)); + SendInterfaces(); + return true; +} + +u8 _cdcComposite = 0; + +static +bool SendDescriptor(Setup& setup) +{ + u8 t = setup.wValueH; + if (USB_CONFIGURATION_DESCRIPTOR_TYPE == t) + return SendConfiguration(setup.wLength); + + InitControl(setup.wLength); +#ifdef HID_ENABLED + if (HID_REPORT_DESCRIPTOR_TYPE == t) + return HID_GetDescriptor(t); +#endif + + u8 desc_length = 0; + const u8* desc_addr = 0; + if (USB_DEVICE_DESCRIPTOR_TYPE == t) + { + if (setup.wLength == 8) + _cdcComposite = 1; + desc_addr = _cdcComposite ? (const u8*)&USB_DeviceDescriptorA : (const u8*)&USB_DeviceDescriptor; + } + else if (USB_STRING_DESCRIPTOR_TYPE == t) + { + if (setup.wValueL == 0) + desc_addr = (const u8*)&STRING_LANGUAGE; + else if (setup.wValueL == IPRODUCT) + desc_addr = (const u8*)&STRING_IPRODUCT; + else if (setup.wValueL == IMANUFACTURER) + desc_addr = (const u8*)&STRING_IMANUFACTURER; + else + return false; + } + + if (desc_addr == 0) + return false; + if (desc_length == 0) + desc_length = pgm_read_byte(desc_addr); + + USB_SendControl(TRANSFER_PGM,desc_addr,desc_length); + return true; +} + +// Endpoint 0 interrupt +ISR(USB_COM_vect) +{ + SetEP(0); + if (!ReceivedSetupInt()) + return; + + Setup setup; + Recv((u8*)&setup,8); + ClearSetupInt(); + + u8 requestType = setup.bmRequestType; + if (requestType & REQUEST_DEVICETOHOST) + WaitIN(); + else + ClearIN(); + + bool ok = true; + if (REQUEST_STANDARD == (requestType & REQUEST_TYPE)) + { + // Standard Requests + u8 r = setup.bRequest; + if (GET_STATUS == r) + { + Send8(0); // TODO + Send8(0); + } + else if (CLEAR_FEATURE == r) + { + } + else if (SET_FEATURE == r) + { + } + else if (SET_ADDRESS == r) + { + WaitIN(); + UDADDR = setup.wValueL | (1<<ADDEN); + } + else if (GET_DESCRIPTOR == r) + { + ok = SendDescriptor(setup); + } + else if (SET_DESCRIPTOR == r) + { + ok = false; + } + else if (GET_CONFIGURATION == r) + { + Send8(1); + } + else if (SET_CONFIGURATION == r) + { + if (REQUEST_DEVICE == (requestType & REQUEST_RECIPIENT)) + { + InitEndpoints(); + _usbConfiguration = setup.wValueL; + } else + ok = false; + } + else if (GET_INTERFACE == r) + { + } + else if (SET_INTERFACE == r) + { + } + } + else + { + InitControl(setup.wLength); // Max length of transfer + ok = ClassInterfaceRequest(setup); + } + + if (ok) + ClearIN(); + else + { + Stall(); + } +} + +void USB_Flush(u8 ep) +{ + SetEP(ep); + if (FifoByteCount()) + ReleaseTX(); +} + +// General interrupt +ISR(USB_GEN_vect) +{ + u8 udint = UDINT; + UDINT = 0; + + // End of Reset + if (udint & (1<<EORSTI)) + { + InitEP(0,EP_TYPE_CONTROL,EP_SINGLE_64); // init ep0 + _usbConfiguration = 0; // not configured yet + UEIENX = 1 << RXSTPE; // Enable interrupts for ep0 + } + + // Start of Frame - happens every millisecond so we use it for TX and RX LED one-shot timing, too + if (udint & (1<<SOFI)) + { +#ifdef CDC_ENABLED + USB_Flush(CDC_TX); // Send a tx frame if found +#endif + + // check whether the one-shot period has elapsed. if so, turn off the LED + if (TxLEDPulse && !(--TxLEDPulse)) + TXLED0; + if (RxLEDPulse && !(--RxLEDPulse)) + RXLED0; + } +} + +// VBUS or counting frames +// Any frame counting? +u8 USBConnected() +{ + u8 f = UDFNUML; + delay(3); + return f != UDFNUML; +} + +//======================================================================= +//======================================================================= + +USB_ USB; + +USB_::USB_() +{ +} + +void USB_::attach() +{ + _usbConfiguration = 0; + UHWCON = 0x01; // power internal reg + USBCON = (1<<USBE)|(1<<FRZCLK); // clock frozen, usb enabled + PLLCSR = 0x12; // Need 16 MHz xtal + while (!(PLLCSR & (1<<PLOCK))) // wait for lock pll + ; + USBCON = ((1<<USBE)|(1<<OTGPADE)); // start USB clock + UDIEN = (1<<EORSTE)|(1<<SOFE); // Enable interrupts for EOR (End of Reset) and SOF (start of frame) + UDCON = 0; // enable attach resistor + + TX_RX_LED_INIT; +} + +void USB_::detach() +{ +} + +// Check for interrupts +// TODO: VBUS detection +bool USB_::configured() +{ + return _usbConfiguration; +} + +void USB_::poll() +{ +} + +#endif /* if defined(USBCON) */
\ No newline at end of file diff --git a/arduinoSrc1_0/USBCore.h b/arduinoSrc1_0/USBCore.h new file mode 100644 index 0000000..8d13806 --- /dev/null +++ b/arduinoSrc1_0/USBCore.h @@ -0,0 +1,303 @@ + +// Copyright (c) 2010, Peter Barrett +/* +** Permission to use, copy, modify, and/or distribute this software for +** any purpose with or without fee is hereby granted, provided that the +** above copyright notice and this permission notice appear in all copies. +** +** THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL +** WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED +** WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR +** BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES +** OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, +** WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, +** ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS +** SOFTWARE. +*/ + +#ifndef __USBCORE_H__ +#define __USBCORE_H__ + +// Standard requests +#define GET_STATUS 0 +#define CLEAR_FEATURE 1 +#define SET_FEATURE 3 +#define SET_ADDRESS 5 +#define GET_DESCRIPTOR 6 +#define SET_DESCRIPTOR 7 +#define GET_CONFIGURATION 8 +#define SET_CONFIGURATION 9 +#define GET_INTERFACE 10 +#define SET_INTERFACE 11 + + +// bmRequestType +#define REQUEST_HOSTTODEVICE 0x00 +#define REQUEST_DEVICETOHOST 0x80 +#define REQUEST_DIRECTION 0x80 + +#define REQUEST_STANDARD 0x00 +#define REQUEST_CLASS 0x20 +#define REQUEST_VENDOR 0x40 +#define REQUEST_TYPE 0x60 + +#define REQUEST_DEVICE 0x00 +#define REQUEST_INTERFACE 0x01 +#define REQUEST_ENDPOINT 0x02 +#define REQUEST_OTHER 0x03 +#define REQUEST_RECIPIENT 0x03 + +#define REQUEST_DEVICETOHOST_CLASS_INTERFACE (REQUEST_DEVICETOHOST + REQUEST_CLASS + REQUEST_INTERFACE) +#define REQUEST_HOSTTODEVICE_CLASS_INTERFACE (REQUEST_HOSTTODEVICE + REQUEST_CLASS + REQUEST_INTERFACE) + +// Class requests + +#define CDC_SET_LINE_CODING 0x20 +#define CDC_GET_LINE_CODING 0x21 +#define CDC_SET_CONTROL_LINE_STATE 0x22 + +#define MSC_RESET 0xFF +#define MSC_GET_MAX_LUN 0xFE + +#define HID_GET_REPORT 0x01 +#define HID_GET_IDLE 0x02 +#define HID_GET_PROTOCOL 0x03 +#define HID_SET_REPORT 0x09 +#define HID_SET_IDLE 0x0A +#define HID_SET_PROTOCOL 0x0B + +// Descriptors + +#define USB_DEVICE_DESC_SIZE 18 +#define USB_CONFIGUARTION_DESC_SIZE 9 +#define USB_INTERFACE_DESC_SIZE 9 +#define USB_ENDPOINT_DESC_SIZE 7 + +#define USB_DEVICE_DESCRIPTOR_TYPE 1 +#define USB_CONFIGURATION_DESCRIPTOR_TYPE 2 +#define USB_STRING_DESCRIPTOR_TYPE 3 +#define USB_INTERFACE_DESCRIPTOR_TYPE 4 +#define USB_ENDPOINT_DESCRIPTOR_TYPE 5 + +#define USB_DEVICE_CLASS_COMMUNICATIONS 0x02 +#define USB_DEVICE_CLASS_HUMAN_INTERFACE 0x03 +#define USB_DEVICE_CLASS_STORAGE 0x08 +#define USB_DEVICE_CLASS_VENDOR_SPECIFIC 0xFF + +#define USB_CONFIG_POWERED_MASK 0x40 +#define USB_CONFIG_BUS_POWERED 0x80 +#define USB_CONFIG_SELF_POWERED 0xC0 +#define USB_CONFIG_REMOTE_WAKEUP 0x20 + +// bMaxPower in Configuration Descriptor +#define USB_CONFIG_POWER_MA(mA) ((mA)/2) + +// bEndpointAddress in Endpoint Descriptor +#define USB_ENDPOINT_DIRECTION_MASK 0x80 +#define USB_ENDPOINT_OUT(addr) ((addr) | 0x00) +#define USB_ENDPOINT_IN(addr) ((addr) | 0x80) + +#define USB_ENDPOINT_TYPE_MASK 0x03 +#define USB_ENDPOINT_TYPE_CONTROL 0x00 +#define USB_ENDPOINT_TYPE_ISOCHRONOUS 0x01 +#define USB_ENDPOINT_TYPE_BULK 0x02 +#define USB_ENDPOINT_TYPE_INTERRUPT 0x03 + +#define TOBYTES(x) ((x) & 0xFF),(((x) >> 8) & 0xFF) + +#define CDC_V1_10 0x0110 +#define CDC_COMMUNICATION_INTERFACE_CLASS 0x02 + +#define CDC_CALL_MANAGEMENT 0x01 +#define CDC_ABSTRACT_CONTROL_MODEL 0x02 +#define CDC_HEADER 0x00 +#define CDC_ABSTRACT_CONTROL_MANAGEMENT 0x02 +#define CDC_UNION 0x06 +#define CDC_CS_INTERFACE 0x24 +#define CDC_CS_ENDPOINT 0x25 +#define CDC_DATA_INTERFACE_CLASS 0x0A + +#define MSC_SUBCLASS_SCSI 0x06 +#define MSC_PROTOCOL_BULK_ONLY 0x50 + +#define HID_HID_DESCRIPTOR_TYPE 0x21 +#define HID_REPORT_DESCRIPTOR_TYPE 0x22 +#define HID_PHYSICAL_DESCRIPTOR_TYPE 0x23 + + +// Device +typedef struct { + u8 len; // 18 + u8 dtype; // 1 USB_DEVICE_DESCRIPTOR_TYPE + u16 usbVersion; // 0x200 + u8 deviceClass; + u8 deviceSubClass; + u8 deviceProtocol; + u8 packetSize0; // Packet 0 + u16 idVendor; + u16 idProduct; + u16 deviceVersion; // 0x100 + u8 iManufacturer; + u8 iProduct; + u8 iSerialNumber; + u8 bNumConfigurations; +} DeviceDescriptor; + +// Config +typedef struct { + u8 len; // 9 + u8 dtype; // 2 + u16 clen; // total length + u8 numInterfaces; + u8 config; + u8 iconfig; + u8 attributes; + u8 maxPower; +} ConfigDescriptor; + +// String + +// Interface +typedef struct +{ + u8 len; // 9 + u8 dtype; // 4 + u8 number; + u8 alternate; + u8 numEndpoints; + u8 interfaceClass; + u8 interfaceSubClass; + u8 protocol; + u8 iInterface; +} InterfaceDescriptor; + +// Endpoint +typedef struct +{ + u8 len; // 7 + u8 dtype; // 5 + u8 addr; + u8 attr; + u16 packetSize; + u8 interval; +} EndpointDescriptor; + +// Interface Association Descriptor +// Used to bind 2 interfaces together in CDC compostite device +typedef struct +{ + u8 len; // 8 + u8 dtype; // 11 + u8 firstInterface; + u8 interfaceCount; + u8 functionClass; + u8 funtionSubClass; + u8 functionProtocol; + u8 iInterface; +} IADDescriptor; + +// CDC CS interface descriptor +typedef struct +{ + u8 len; // 5 + u8 dtype; // 0x24 + u8 subtype; + u8 d0; + u8 d1; +} CDCCSInterfaceDescriptor; + +typedef struct +{ + u8 len; // 4 + u8 dtype; // 0x24 + u8 subtype; + u8 d0; +} CDCCSInterfaceDescriptor4; + +typedef struct +{ + u8 len; + u8 dtype; // 0x24 + u8 subtype; // 1 + u8 bmCapabilities; + u8 bDataInterface; +} CMFunctionalDescriptor; + +typedef struct +{ + u8 len; + u8 dtype; // 0x24 + u8 subtype; // 1 + u8 bmCapabilities; +} ACMFunctionalDescriptor; + +typedef struct +{ + // IAD + IADDescriptor iad; // Only needed on compound device + + // Control + InterfaceDescriptor cif; // + CDCCSInterfaceDescriptor header; + CMFunctionalDescriptor callManagement; // Call Management + ACMFunctionalDescriptor controlManagement; // ACM + CDCCSInterfaceDescriptor functionalDescriptor; // CDC_UNION + EndpointDescriptor cifin; + + // Data + InterfaceDescriptor dif; + EndpointDescriptor in; + EndpointDescriptor out; +} CDCDescriptor; + +typedef struct +{ + InterfaceDescriptor msc; + EndpointDescriptor in; + EndpointDescriptor out; +} MSCDescriptor; + +typedef struct +{ + u8 len; // 9 + u8 dtype; // 0x21 + u8 addr; + u8 versionL; // 0x101 + u8 versionH; // 0x101 + u8 country; + u8 desctype; // 0x22 report + u8 descLenL; + u8 descLenH; +} HIDDescDescriptor; + +typedef struct +{ + InterfaceDescriptor hid; + HIDDescDescriptor desc; + EndpointDescriptor in; +} HIDDescriptor; + + +#define D_DEVICE(_class,_subClass,_proto,_packetSize0,_vid,_pid,_version,_im,_ip,_is,_configs) \ + { 18, 1, 0x200, _class,_subClass,_proto,_packetSize0,_vid,_pid,_version,_im,_ip,_is,_configs } + +#define D_CONFIG(_totalLength,_interfaces) \ + { 9, 2, _totalLength,_interfaces, 1, 0, USB_CONFIG_BUS_POWERED, USB_CONFIG_POWER_MA(500) } + +#define D_INTERFACE(_n,_numEndpoints,_class,_subClass,_protocol) \ + { 9, 4, _n, 0, _numEndpoints, _class,_subClass, _protocol, 0 } + +#define D_ENDPOINT(_addr,_attr,_packetSize, _interval) \ + { 7, 5, _addr,_attr,_packetSize, _interval } + +#define D_IAD(_firstInterface, _count, _class, _subClass, _protocol) \ + { 8, 11, _firstInterface, _count, _class, _subClass, _protocol, 0 } + +#define D_HIDREPORT(_descriptorLength) \ + { 9, 0x21, 0x1, 0x1, 0, 1, 0x22, _descriptorLength, 0 } + +#define D_CDCCS(_subtype,_d0,_d1) { 5, 0x24, _subtype, _d0, _d1 } +#define D_CDCCS4(_subtype,_d0) { 4, 0x24, _subtype, _d0 } + + +#endif
\ No newline at end of file diff --git a/arduinoSrc1_0/USBDesc.h b/arduinoSrc1_0/USBDesc.h new file mode 100644 index 0000000..549ed9e --- /dev/null +++ b/arduinoSrc1_0/USBDesc.h @@ -0,0 +1,67 @@ + + +/* Copyright (c) 2011, Peter Barrett +** +** Permission to use, copy, modify, and/or distribute this software for +** any purpose with or without fee is hereby granted, provided that the +** above copyright notice and this permission notice appear in all copies. +** +** THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL +** WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED +** WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR +** BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES +** OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, +** WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, +** ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS +** SOFTWARE. +*/ + +#define CDC_ENABLED +#define HID_ENABLED + + +#ifdef CDC_ENABLED +#define CDC_INTERFACE_COUNT 2 +#define CDC_ENPOINT_COUNT 3 +#else +#define CDC_INTERFACE_COUNT 0 +#define CDC_ENPOINT_COUNT 0 +#endif + +#ifdef HID_ENABLED +#define HID_INTERFACE_COUNT 1 +#define HID_ENPOINT_COUNT 1 +#else +#define HID_INTERFACE_COUNT 0 +#define HID_ENPOINT_COUNT 0 +#endif + +#define CDC_ACM_INTERFACE 0 // CDC ACM +#define CDC_DATA_INTERFACE 1 // CDC Data +#define CDC_FIRST_ENDPOINT 1 +#define CDC_ENDPOINT_ACM (CDC_FIRST_ENDPOINT) // CDC First +#define CDC_ENDPOINT_OUT (CDC_FIRST_ENDPOINT+1) +#define CDC_ENDPOINT_IN (CDC_FIRST_ENDPOINT+2) + +#define HID_INTERFACE (CDC_ACM_INTERFACE + CDC_INTERFACE_COUNT) // HID Interface +#define HID_FIRST_ENDPOINT (CDC_FIRST_ENDPOINT + CDC_ENPOINT_COUNT) +#define HID_ENDPOINT_INT (HID_FIRST_ENDPOINT) + +#define INTERFACE_COUNT (MSC_INTERFACE + MSC_INTERFACE_COUNT) + +#ifdef CDC_ENABLED +#define CDC_RX CDC_ENDPOINT_OUT +#define CDC_TX CDC_ENDPOINT_IN +#endif + +#ifdef HID_ENABLED +#define HID_TX HID_ENDPOINT_INT +#endif + +#define IMANUFACTURER 1 +#define IPRODUCT 2 +#define USB_PID_LEONARDO 0x0034 +#define USB_PID_MICRO 0x0035 +#define USB_VID 0x2341 // arduino LLC vid +#define USB_PID ARDUINO_MODEL_USB_PID + diff --git a/arduinoSrc1_0/Udp.h b/arduinoSrc1_0/Udp.h new file mode 100644 index 0000000..dc5644b --- /dev/null +++ b/arduinoSrc1_0/Udp.h @@ -0,0 +1,88 @@ +/* + * Udp.cpp: Library to send/receive UDP packets. + * + * NOTE: UDP is fast, but has some important limitations (thanks to Warren Gray for mentioning these) + * 1) UDP does not guarantee the order in which assembled UDP packets are received. This + * might not happen often in practice, but in larger network topologies, a UDP + * packet can be received out of sequence. + * 2) UDP does not guard against lost packets - so packets *can* disappear without the sender being + * aware of it. Again, this may not be a concern in practice on small local networks. + * For more information, see http://www.cafeaulait.org/course/week12/35.html + * + * MIT License: + * Copyright (c) 2008 Bjoern Hartmann + * 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. + * + * bjoern@cs.stanford.edu 12/30/2008 + */ + +#ifndef udp_h +#define udp_h + +#include <Stream.h> +#include <IPAddress.h> + +class UDP : public Stream { + +public: + virtual uint8_t begin(uint16_t) =0; // initialize, start listening on specified port. Returns 1 if successful, 0 if there are no sockets available to use + virtual void stop() =0; // Finish with the UDP socket + + // Sending UDP packets + + // Start building up a packet to send to the remote host specific in ip and port + // Returns 1 if successful, 0 if there was a problem with the supplied IP address or port + virtual int beginPacket(IPAddress ip, uint16_t port) =0; + // Start building up a packet to send to the remote host specific in host and port + // Returns 1 if successful, 0 if there was a problem resolving the hostname or port + virtual int beginPacket(const char *host, uint16_t port) =0; + // Finish off this packet and send it + // Returns 1 if the packet was sent successfully, 0 if there was an error + virtual int endPacket() =0; + // Write a single byte into the packet + virtual size_t write(uint8_t) =0; + // Write size bytes from buffer into the packet + virtual size_t write(const uint8_t *buffer, size_t size) =0; + + // Start processing the next available incoming packet + // Returns the size of the packet in bytes, or 0 if no packets are available + virtual int parsePacket() =0; + // Number of bytes remaining in the current packet + virtual int available() =0; + // Read a single byte from the current packet + virtual int read() =0; + // Read up to len bytes from the current packet and place them into buffer + // Returns the number of bytes read, or 0 if none are available + virtual int read(unsigned char* buffer, size_t len) =0; + // Read up to len characters from the current packet and place them into buffer + // Returns the number of characters read, or 0 if none are available + virtual int read(char* buffer, size_t len) =0; + // Return the next byte from the current packet without moving on to the next byte + virtual int peek() =0; + virtual void flush() =0; // Finish reading the current packet + + // Return the IP address of the host who sent the current incoming packet + virtual IPAddress remoteIP() =0; + // Return the port of the host who sent the current incoming packet + virtual uint16_t remotePort() =0; +protected: + uint8_t* rawIPAddress(IPAddress& addr) { return addr.raw_address(); }; +}; + +#endif diff --git a/arduinoSrc1_0/WCharacter.h b/arduinoSrc1_0/WCharacter.h new file mode 100644 index 0000000..79733b5 --- /dev/null +++ b/arduinoSrc1_0/WCharacter.h @@ -0,0 +1,168 @@ +/* + WCharacter.h - Character utility functions for Wiring & Arduino + Copyright (c) 2010 Hernando Barragan. All right reserved. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifndef Character_h +#define Character_h + +#include <ctype.h> + +// WCharacter.h prototypes +inline boolean isAlphaNumeric(int c) __attribute__((always_inline)); +inline boolean isAlpha(int c) __attribute__((always_inline)); +inline boolean isAscii(int c) __attribute__((always_inline)); +inline boolean isWhitespace(int c) __attribute__((always_inline)); +inline boolean isControl(int c) __attribute__((always_inline)); +inline boolean isDigit(int c) __attribute__((always_inline)); +inline boolean isGraph(int c) __attribute__((always_inline)); +inline boolean isLowerCase(int c) __attribute__((always_inline)); +inline boolean isPrintable(int c) __attribute__((always_inline)); +inline boolean isPunct(int c) __attribute__((always_inline)); +inline boolean isSpace(int c) __attribute__((always_inline)); +inline boolean isUpperCase(int c) __attribute__((always_inline)); +inline boolean isHexadecimalDigit(int c) __attribute__((always_inline)); +inline int toAscii(int c) __attribute__((always_inline)); +inline int toLowerCase(int c) __attribute__((always_inline)); +inline int toUpperCase(int c)__attribute__((always_inline)); + + +// Checks for an alphanumeric character. +// It is equivalent to (isalpha(c) || isdigit(c)). +inline boolean isAlphaNumeric(int c) +{ + return ( isalnum(c) == 0 ? false : true); +} + + +// Checks for an alphabetic character. +// It is equivalent to (isupper(c) || islower(c)). +inline boolean isAlpha(int c) +{ + return ( isalpha(c) == 0 ? false : true); +} + + +// Checks whether c is a 7-bit unsigned char value +// that fits into the ASCII character set. +inline boolean isAscii(int c) +{ + return ( isascii (c) == 0 ? false : true); +} + + +// Checks for a blank character, that is, a space or a tab. +inline boolean isWhitespace(int c) +{ + return ( isblank (c) == 0 ? false : true); +} + + +// Checks for a control character. +inline boolean isControl(int c) +{ + return ( iscntrl (c) == 0 ? false : true); +} + + +// Checks for a digit (0 through 9). +inline boolean isDigit(int c) +{ + return ( isdigit (c) == 0 ? false : true); +} + + +// Checks for any printable character except space. +inline boolean isGraph(int c) +{ + return ( isgraph (c) == 0 ? false : true); +} + + +// Checks for a lower-case character. +inline boolean isLowerCase(int c) +{ + return (islower (c) == 0 ? false : true); +} + + +// Checks for any printable character including space. +inline boolean isPrintable(int c) +{ + return ( isprint (c) == 0 ? false : true); +} + + +// Checks for any printable character which is not a space +// or an alphanumeric character. +inline boolean isPunct(int c) +{ + return ( ispunct (c) == 0 ? false : true); +} + + +// Checks for white-space characters. For the avr-libc library, +// these are: space, formfeed ('\f'), newline ('\n'), carriage +// return ('\r'), horizontal tab ('\t'), and vertical tab ('\v'). +inline boolean isSpace(int c) +{ + return ( isspace (c) == 0 ? false : true); +} + + +// Checks for an uppercase letter. +inline boolean isUpperCase(int c) +{ + return ( isupper (c) == 0 ? false : true); +} + + +// Checks for a hexadecimal digits, i.e. one of 0 1 2 3 4 5 6 7 +// 8 9 a b c d e f A B C D E F. +inline boolean isHexadecimalDigit(int c) +{ + return ( isxdigit (c) == 0 ? false : true); +} + + +// Converts c to a 7-bit unsigned char value that fits into the +// ASCII character set, by clearing the high-order bits. +inline int toAscii(int c) +{ + return toascii (c); +} + + +// Warning: +// Many people will be unhappy if you use this function. +// This function will convert accented letters into random +// characters. + +// Converts the letter c to lower case, if possible. +inline int toLowerCase(int c) +{ + return tolower (c); +} + + +// Converts the letter c to upper case, if possible. +inline int toUpperCase(int c) +{ + return toupper (c); +} + +#endif
\ No newline at end of file diff --git a/arduinoSrc1_0/WInterrupts.c b/arduinoSrc1_0/WInterrupts.c new file mode 100644 index 0000000..75c713b --- /dev/null +++ b/arduinoSrc1_0/WInterrupts.c @@ -0,0 +1,248 @@ +/* -*- mode: jde; c-basic-offset: 2; indent-tabs-mode: nil -*- */ + +/* + Part of the Wiring project - http://wiring.uniandes.edu.co + + Copyright (c) 2004-05 Hernando Barragan + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General + Public License along with this library; if not, write to the + Free Software Foundation, Inc., 59 Temple Place, Suite 330, + Boston, MA 02111-1307 USA + + Modified 24 November 2006 by David A. Mellis + Modified 1 August 2010 by Mark Sproul +*/ + +#include <inttypes.h> +#include <avr/io.h> +#include <avr/interrupt.h> +#include <avr/pgmspace.h> +#include <stdio.h> + +#include "wiring_private.h" + +volatile static voidFuncPtr intFunc[EXTERNAL_NUM_INTERRUPTS]; +// volatile static voidFuncPtr twiIntFunc; + +void attachInterrupt(uint8_t interruptNum, void (*userFunc)(void), int mode) { + if(interruptNum < EXTERNAL_NUM_INTERRUPTS) { + intFunc[interruptNum] = userFunc; + + // Configure the interrupt mode (trigger on low input, any change, rising + // edge, or falling edge). The mode constants were chosen to correspond + // to the configuration bits in the hardware register, so we simply shift + // the mode into place. + + // Enable the interrupt. + + switch (interruptNum) { +#if defined(EICRA) && defined(EICRB) && defined(EIMSK) + case 2: + EICRA = (EICRA & ~((1 << ISC00) | (1 << ISC01))) | (mode << ISC00); + EIMSK |= (1 << INT0); + break; + case 3: + EICRA = (EICRA & ~((1 << ISC10) | (1 << ISC11))) | (mode << ISC10); + EIMSK |= (1 << INT1); + break; + case 4: + EICRA = (EICRA & ~((1 << ISC20) | (1 << ISC21))) | (mode << ISC20); + EIMSK |= (1 << INT2); + break; + case 5: + EICRA = (EICRA & ~((1 << ISC30) | (1 << ISC31))) | (mode << ISC30); + EIMSK |= (1 << INT3); + break; + case 0: + EICRB = (EICRB & ~((1 << ISC40) | (1 << ISC41))) | (mode << ISC40); + EIMSK |= (1 << INT4); + break; + case 1: + EICRB = (EICRB & ~((1 << ISC50) | (1 << ISC51))) | (mode << ISC50); + EIMSK |= (1 << INT5); + break; + case 6: + EICRB = (EICRB & ~((1 << ISC60) | (1 << ISC61))) | (mode << ISC60); + EIMSK |= (1 << INT6); + break; + case 7: + EICRB = (EICRB & ~((1 << ISC70) | (1 << ISC71))) | (mode << ISC70); + EIMSK |= (1 << INT7); + break; +#else + case 0: + #if defined(EICRA) && defined(ISC00) && defined(EIMSK) + EICRA = (EICRA & ~((1 << ISC00) | (1 << ISC01))) | (mode << ISC00); + EIMSK |= (1 << INT0); + #elif defined(MCUCR) && defined(ISC00) && defined(GICR) + MCUCR = (MCUCR & ~((1 << ISC00) | (1 << ISC01))) | (mode << ISC00); + GICR |= (1 << INT0); + #elif defined(MCUCR) && defined(ISC00) && defined(GIMSK) + MCUCR = (MCUCR & ~((1 << ISC00) | (1 << ISC01))) | (mode << ISC00); + GIMSK |= (1 << INT0); + #else + #error attachInterrupt not finished for this CPU (case 0) + #endif + break; + + case 1: + #if defined(EICRA) && defined(ISC10) && defined(ISC11) && defined(EIMSK) + EICRA = (EICRA & ~((1 << ISC10) | (1 << ISC11))) | (mode << ISC10); + EIMSK |= (1 << INT1); + #elif defined(MCUCR) && defined(ISC10) && defined(ISC11) && defined(GICR) + MCUCR = (MCUCR & ~((1 << ISC10) | (1 << ISC11))) | (mode << ISC10); + GICR |= (1 << INT1); + #elif defined(MCUCR) && defined(ISC10) && defined(GIMSK) && defined(GIMSK) + MCUCR = (MCUCR & ~((1 << ISC10) | (1 << ISC11))) | (mode << ISC10); + GIMSK |= (1 << INT1); + #else + #warning attachInterrupt may need some more work for this cpu (case 1) + #endif + break; +#endif + } + } +} + +void detachInterrupt(uint8_t interruptNum) { + if(interruptNum < EXTERNAL_NUM_INTERRUPTS) { + // Disable the interrupt. (We can't assume that interruptNum is equal + // to the number of the EIMSK bit to clear, as this isn't true on the + // ATmega8. There, INT0 is 6 and INT1 is 7.) + switch (interruptNum) { +#if defined(EICRA) && defined(EICRB) && defined(EIMSK) + case 2: + EIMSK &= ~(1 << INT0); + break; + case 3: + EIMSK &= ~(1 << INT1); + break; + case 4: + EIMSK &= ~(1 << INT2); + break; + case 5: + EIMSK &= ~(1 << INT3); + break; + case 0: + EIMSK &= ~(1 << INT4); + break; + case 1: + EIMSK &= ~(1 << INT5); + break; + case 6: + EIMSK &= ~(1 << INT6); + break; + case 7: + EIMSK &= ~(1 << INT7); + break; +#else + case 0: + #if defined(EIMSK) && defined(INT0) + EIMSK &= ~(1 << INT0); + #elif defined(GICR) && defined(ISC00) + GICR &= ~(1 << INT0); // atmega32 + #elif defined(GIMSK) && defined(INT0) + GIMSK &= ~(1 << INT0); + #else + #error detachInterrupt not finished for this cpu + #endif + break; + + case 1: + #if defined(EIMSK) && defined(INT1) + EIMSK &= ~(1 << INT1); + #elif defined(GICR) && defined(INT1) + GICR &= ~(1 << INT1); // atmega32 + #elif defined(GIMSK) && defined(INT1) + GIMSK &= ~(1 << INT1); + #else + #warning detachInterrupt may need some more work for this cpu (case 1) + #endif + break; +#endif + } + + intFunc[interruptNum] = 0; + } +} + +/* +void attachInterruptTwi(void (*userFunc)(void) ) { + twiIntFunc = userFunc; +} +*/ + +#if defined(EICRA) && defined(EICRB) + +SIGNAL(INT0_vect) { + if(intFunc[EXTERNAL_INT_2]) + intFunc[EXTERNAL_INT_2](); +} + +SIGNAL(INT1_vect) { + if(intFunc[EXTERNAL_INT_3]) + intFunc[EXTERNAL_INT_3](); +} + +SIGNAL(INT2_vect) { + if(intFunc[EXTERNAL_INT_4]) + intFunc[EXTERNAL_INT_4](); +} + +SIGNAL(INT3_vect) { + if(intFunc[EXTERNAL_INT_5]) + intFunc[EXTERNAL_INT_5](); +} + +SIGNAL(INT4_vect) { + if(intFunc[EXTERNAL_INT_0]) + intFunc[EXTERNAL_INT_0](); +} + +SIGNAL(INT5_vect) { + if(intFunc[EXTERNAL_INT_1]) + intFunc[EXTERNAL_INT_1](); +} + +SIGNAL(INT6_vect) { + if(intFunc[EXTERNAL_INT_6]) + intFunc[EXTERNAL_INT_6](); +} + +SIGNAL(INT7_vect) { + if(intFunc[EXTERNAL_INT_7]) + intFunc[EXTERNAL_INT_7](); +} + +#else + +SIGNAL(INT0_vect) { + if(intFunc[EXTERNAL_INT_0]) + intFunc[EXTERNAL_INT_0](); +} + +SIGNAL(INT1_vect) { + if(intFunc[EXTERNAL_INT_1]) + intFunc[EXTERNAL_INT_1](); +} + +#endif + +/* +SIGNAL(SIG_2WIRE_SERIAL) { + if(twiIntFunc) + twiIntFunc(); +} +*/ + diff --git a/arduinoSrc1_0/WMath.cpp b/arduinoSrc1_0/WMath.cpp new file mode 100644 index 0000000..2120c4c --- /dev/null +++ b/arduinoSrc1_0/WMath.cpp @@ -0,0 +1,60 @@ +/* -*- mode: jde; c-basic-offset: 2; indent-tabs-mode: nil -*- */ + +/* + Part of the Wiring project - http://wiring.org.co + Copyright (c) 2004-06 Hernando Barragan + Modified 13 August 2006, David A. Mellis for Arduino - http://www.arduino.cc/ + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General + Public License along with this library; if not, write to the + Free Software Foundation, Inc., 59 Temple Place, Suite 330, + Boston, MA 02111-1307 USA + + $Id$ +*/ + +extern "C" { + #include "stdlib.h" +} + +void randomSeed(unsigned int seed) +{ + if (seed != 0) { + srandom(seed); + } +} + +long random(long howbig) +{ + if (howbig == 0) { + return 0; + } + return random() % howbig; +} + +long random(long howsmall, long howbig) +{ + if (howsmall >= howbig) { + return howsmall; + } + long diff = howbig - howsmall; + return random(diff) + howsmall; +} + +long map(long x, long in_min, long in_max, long out_min, long out_max) +{ + return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min; +} + +unsigned int makeWord(unsigned int w) { return w; } +unsigned int makeWord(unsigned char h, unsigned char l) { return (h << 8) | l; }
\ No newline at end of file diff --git a/arduinoSrc1_0/WString.cpp b/arduinoSrc1_0/WString.cpp new file mode 100644 index 0000000..3e81331 --- /dev/null +++ b/arduinoSrc1_0/WString.cpp @@ -0,0 +1,645 @@ +/* + WString.cpp - String library for Wiring & Arduino + ...mostly rewritten by Paul Stoffregen... + Copyright (c) 2009-10 Hernando Barragan. All rights reserved. + Copyright 2011, Paul Stoffregen, paul@pjrc.com + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +*/ + +#include "WString.h" + + +/*********************************************/ +/* Constructors */ +/*********************************************/ + +String::String(const char *cstr) +{ + init(); + if (cstr) copy(cstr, strlen(cstr)); +} + +String::String(const String &value) +{ + init(); + *this = value; +} + +#ifdef __GXX_EXPERIMENTAL_CXX0X__ +String::String(String &&rval) +{ + init(); + move(rval); +} +String::String(StringSumHelper &&rval) +{ + init(); + move(rval); +} +#endif + +String::String(char c) +{ + init(); + char buf[2]; + buf[0] = c; + buf[1] = 0; + *this = buf; +} + +String::String(unsigned char value, unsigned char base) +{ + init(); + char buf[9]; + utoa(value, buf, base); + *this = buf; +} + +String::String(int value, unsigned char base) +{ + init(); + char buf[18]; + itoa(value, buf, base); + *this = buf; +} + +String::String(unsigned int value, unsigned char base) +{ + init(); + char buf[17]; + utoa(value, buf, base); + *this = buf; +} + +String::String(long value, unsigned char base) +{ + init(); + char buf[34]; + ltoa(value, buf, base); + *this = buf; +} + +String::String(unsigned long value, unsigned char base) +{ + init(); + char buf[33]; + ultoa(value, buf, base); + *this = buf; +} + +String::~String() +{ + free(buffer); +} + +/*********************************************/ +/* Memory Management */ +/*********************************************/ + +inline void String::init(void) +{ + buffer = NULL; + capacity = 0; + len = 0; + flags = 0; +} + +void String::invalidate(void) +{ + if (buffer) free(buffer); + buffer = NULL; + capacity = len = 0; +} + +unsigned char String::reserve(unsigned int size) +{ + if (buffer && capacity >= size) return 1; + if (changeBuffer(size)) { + if (len == 0) buffer[0] = 0; + return 1; + } + return 0; +} + +unsigned char String::changeBuffer(unsigned int maxStrLen) +{ + char *newbuffer = (char *)realloc(buffer, maxStrLen + 1); + if (newbuffer) { + buffer = newbuffer; + capacity = maxStrLen; + return 1; + } + return 0; +} + +/*********************************************/ +/* Copy and Move */ +/*********************************************/ + +String & String::copy(const char *cstr, unsigned int length) +{ + if (!reserve(length)) { + invalidate(); + return *this; + } + len = length; + strcpy(buffer, cstr); + return *this; +} + +#ifdef __GXX_EXPERIMENTAL_CXX0X__ +void String::move(String &rhs) +{ + if (buffer) { + if (capacity >= rhs.len) { + strcpy(buffer, rhs.buffer); + len = rhs.len; + rhs.len = 0; + return; + } else { + free(buffer); + } + } + buffer = rhs.buffer; + capacity = rhs.capacity; + len = rhs.len; + rhs.buffer = NULL; + rhs.capacity = 0; + rhs.len = 0; +} +#endif + +String & String::operator = (const String &rhs) +{ + if (this == &rhs) return *this; + + if (rhs.buffer) copy(rhs.buffer, rhs.len); + else invalidate(); + + return *this; +} + +#ifdef __GXX_EXPERIMENTAL_CXX0X__ +String & String::operator = (String &&rval) +{ + if (this != &rval) move(rval); + return *this; +} + +String & String::operator = (StringSumHelper &&rval) +{ + if (this != &rval) move(rval); + return *this; +} +#endif + +String & String::operator = (const char *cstr) +{ + if (cstr) copy(cstr, strlen(cstr)); + else invalidate(); + + return *this; +} + +/*********************************************/ +/* concat */ +/*********************************************/ + +unsigned char String::concat(const String &s) +{ + return concat(s.buffer, s.len); +} + +unsigned char String::concat(const char *cstr, unsigned int length) +{ + unsigned int newlen = len + length; + if (!cstr) return 0; + if (length == 0) return 1; + if (!reserve(newlen)) return 0; + strcpy(buffer + len, cstr); + len = newlen; + return 1; +} + +unsigned char String::concat(const char *cstr) +{ + if (!cstr) return 0; + return concat(cstr, strlen(cstr)); +} + +unsigned char String::concat(char c) +{ + char buf[2]; + buf[0] = c; + buf[1] = 0; + return concat(buf, 1); +} + +unsigned char String::concat(unsigned char num) +{ + char buf[4]; + itoa(num, buf, 10); + return concat(buf, strlen(buf)); +} + +unsigned char String::concat(int num) +{ + char buf[7]; + itoa(num, buf, 10); + return concat(buf, strlen(buf)); +} + +unsigned char String::concat(unsigned int num) +{ + char buf[6]; + utoa(num, buf, 10); + return concat(buf, strlen(buf)); +} + +unsigned char String::concat(long num) +{ + char buf[12]; + ltoa(num, buf, 10); + return concat(buf, strlen(buf)); +} + +unsigned char String::concat(unsigned long num) +{ + char buf[11]; + ultoa(num, buf, 10); + return concat(buf, strlen(buf)); +} + +/*********************************************/ +/* Concatenate */ +/*********************************************/ + +StringSumHelper & operator + (const StringSumHelper &lhs, const String &rhs) +{ + StringSumHelper &a = const_cast<StringSumHelper&>(lhs); + if (!a.concat(rhs.buffer, rhs.len)) a.invalidate(); + return a; +} + +StringSumHelper & operator + (const StringSumHelper &lhs, const char *cstr) +{ + StringSumHelper &a = const_cast<StringSumHelper&>(lhs); + if (!cstr || !a.concat(cstr, strlen(cstr))) a.invalidate(); + return a; +} + +StringSumHelper & operator + (const StringSumHelper &lhs, char c) +{ + StringSumHelper &a = const_cast<StringSumHelper&>(lhs); + if (!a.concat(c)) a.invalidate(); + return a; +} + +StringSumHelper & operator + (const StringSumHelper &lhs, unsigned char num) +{ + StringSumHelper &a = const_cast<StringSumHelper&>(lhs); + if (!a.concat(num)) a.invalidate(); + return a; +} + +StringSumHelper & operator + (const StringSumHelper &lhs, int num) +{ + StringSumHelper &a = const_cast<StringSumHelper&>(lhs); + if (!a.concat(num)) a.invalidate(); + return a; +} + +StringSumHelper & operator + (const StringSumHelper &lhs, unsigned int num) +{ + StringSumHelper &a = const_cast<StringSumHelper&>(lhs); + if (!a.concat(num)) a.invalidate(); + return a; +} + +StringSumHelper & operator + (const StringSumHelper &lhs, long num) +{ + StringSumHelper &a = const_cast<StringSumHelper&>(lhs); + if (!a.concat(num)) a.invalidate(); + return a; +} + +StringSumHelper & operator + (const StringSumHelper &lhs, unsigned long num) +{ + StringSumHelper &a = const_cast<StringSumHelper&>(lhs); + if (!a.concat(num)) a.invalidate(); + return a; +} + +/*********************************************/ +/* Comparison */ +/*********************************************/ + +int String::compareTo(const String &s) const +{ + if (!buffer || !s.buffer) { + if (s.buffer && s.len > 0) return 0 - *(unsigned char *)s.buffer; + if (buffer && len > 0) return *(unsigned char *)buffer; + return 0; + } + return strcmp(buffer, s.buffer); +} + +unsigned char String::equals(const String &s2) const +{ + return (len == s2.len && compareTo(s2) == 0); +} + +unsigned char String::equals(const char *cstr) const +{ + if (len == 0) return (cstr == NULL || *cstr == 0); + if (cstr == NULL) return buffer[0] == 0; + return strcmp(buffer, cstr) == 0; +} + +unsigned char String::operator<(const String &rhs) const +{ + return compareTo(rhs) < 0; +} + +unsigned char String::operator>(const String &rhs) const +{ + return compareTo(rhs) > 0; +} + +unsigned char String::operator<=(const String &rhs) const +{ + return compareTo(rhs) <= 0; +} + +unsigned char String::operator>=(const String &rhs) const +{ + return compareTo(rhs) >= 0; +} + +unsigned char String::equalsIgnoreCase( const String &s2 ) const +{ + if (this == &s2) return 1; + if (len != s2.len) return 0; + if (len == 0) return 1; + const char *p1 = buffer; + const char *p2 = s2.buffer; + while (*p1) { + if (tolower(*p1++) != tolower(*p2++)) return 0; + } + return 1; +} + +unsigned char String::startsWith( const String &s2 ) const +{ + if (len < s2.len) return 0; + return startsWith(s2, 0); +} + +unsigned char String::startsWith( const String &s2, unsigned int offset ) const +{ + if (offset > len - s2.len || !buffer || !s2.buffer) return 0; + return strncmp( &buffer[offset], s2.buffer, s2.len ) == 0; +} + +unsigned char String::endsWith( const String &s2 ) const +{ + if ( len < s2.len || !buffer || !s2.buffer) return 0; + return strcmp(&buffer[len - s2.len], s2.buffer) == 0; +} + +/*********************************************/ +/* Character Access */ +/*********************************************/ + +char String::charAt(unsigned int loc) const +{ + return operator[](loc); +} + +void String::setCharAt(unsigned int loc, char c) +{ + if (loc < len) buffer[loc] = c; +} + +char & String::operator[](unsigned int index) +{ + static char dummy_writable_char; + if (index >= len || !buffer) { + dummy_writable_char = 0; + return dummy_writable_char; + } + return buffer[index]; +} + +char String::operator[]( unsigned int index ) const +{ + if (index >= len || !buffer) return 0; + return buffer[index]; +} + +void String::getBytes(unsigned char *buf, unsigned int bufsize, unsigned int index) const +{ + if (!bufsize || !buf) return; + if (index >= len) { + buf[0] = 0; + return; + } + unsigned int n = bufsize - 1; + if (n > len - index) n = len - index; + strncpy((char *)buf, buffer + index, n); + buf[n] = 0; +} + +/*********************************************/ +/* Search */ +/*********************************************/ + +int String::indexOf(char c) const +{ + return indexOf(c, 0); +} + +int String::indexOf( char ch, unsigned int fromIndex ) const +{ + if (fromIndex >= len) return -1; + const char* temp = strchr(buffer + fromIndex, ch); + if (temp == NULL) return -1; + return temp - buffer; +} + +int String::indexOf(const String &s2) const +{ + return indexOf(s2, 0); +} + +int String::indexOf(const String &s2, unsigned int fromIndex) const +{ + if (fromIndex >= len) return -1; + const char *found = strstr(buffer + fromIndex, s2.buffer); + if (found == NULL) return -1; + return found - buffer; +} + +int String::lastIndexOf( char theChar ) const +{ + return lastIndexOf(theChar, len - 1); +} + +int String::lastIndexOf(char ch, unsigned int fromIndex) const +{ + if (fromIndex >= len || fromIndex < 0) return -1; + char tempchar = buffer[fromIndex + 1]; + buffer[fromIndex + 1] = '\0'; + char* temp = strrchr( buffer, ch ); + buffer[fromIndex + 1] = tempchar; + if (temp == NULL) return -1; + return temp - buffer; +} + +int String::lastIndexOf(const String &s2) const +{ + return lastIndexOf(s2, len - s2.len); +} + +int String::lastIndexOf(const String &s2, unsigned int fromIndex) const +{ + if (s2.len == 0 || len == 0 || s2.len > len || fromIndex < 0) return -1; + if (fromIndex >= len) fromIndex = len - 1; + int found = -1; + for (char *p = buffer; p <= buffer + fromIndex; p++) { + p = strstr(p, s2.buffer); + if (!p) break; + if ((unsigned int)(p - buffer) <= fromIndex) found = p - buffer; + } + return found; +} + +String String::substring( unsigned int left ) const +{ + return substring(left, len); +} + +String String::substring(unsigned int left, unsigned int right) const +{ + if (left > right) { + unsigned int temp = right; + right = left; + left = temp; + } + String out; + if (left > len) return out; + if (right > len) right = len; + char temp = buffer[right]; // save the replaced character + buffer[right] = '\0'; + out = buffer + left; // pointer arithmetic + buffer[right] = temp; //restore character + return out; +} + +/*********************************************/ +/* Modification */ +/*********************************************/ + +void String::replace(char find, char replace) +{ + if (!buffer) return; + for (char *p = buffer; *p; p++) { + if (*p == find) *p = replace; + } +} + +void String::replace(const String& find, const String& replace) +{ + if (len == 0 || find.len == 0) return; + int diff = replace.len - find.len; + char *readFrom = buffer; + char *foundAt; + if (diff == 0) { + while ((foundAt = strstr(readFrom, find.buffer)) != NULL) { + memcpy(foundAt, replace.buffer, replace.len); + readFrom = foundAt + replace.len; + } + } else if (diff < 0) { + char *writeTo = buffer; + while ((foundAt = strstr(readFrom, find.buffer)) != NULL) { + unsigned int n = foundAt - readFrom; + memcpy(writeTo, readFrom, n); + writeTo += n; + memcpy(writeTo, replace.buffer, replace.len); + writeTo += replace.len; + readFrom = foundAt + find.len; + len += diff; + } + strcpy(writeTo, readFrom); + } else { + unsigned int size = len; // compute size needed for result + while ((foundAt = strstr(readFrom, find.buffer)) != NULL) { + readFrom = foundAt + find.len; + size += diff; + } + if (size == len) return; + if (size > capacity && !changeBuffer(size)) return; // XXX: tell user! + int index = len - 1; + while (index >= 0 && (index = lastIndexOf(find, index)) >= 0) { + readFrom = buffer + index + find.len; + memmove(readFrom + diff, readFrom, len - (readFrom - buffer)); + len += diff; + buffer[len] = 0; + memcpy(buffer + index, replace.buffer, replace.len); + index--; + } + } +} + +void String::toLowerCase(void) +{ + if (!buffer) return; + for (char *p = buffer; *p; p++) { + *p = tolower(*p); + } +} + +void String::toUpperCase(void) +{ + if (!buffer) return; + for (char *p = buffer; *p; p++) { + *p = toupper(*p); + } +} + +void String::trim(void) +{ + if (!buffer || len == 0) return; + char *begin = buffer; + while (isspace(*begin)) begin++; + char *end = buffer + len - 1; + while (isspace(*end) && end >= begin) end--; + len = end + 1 - begin; + if (begin > buffer) memcpy(buffer, begin, len); + buffer[len] = 0; +} + +/*********************************************/ +/* Parsing / Conversion */ +/*********************************************/ + +long String::toInt(void) const +{ + if (buffer) return atol(buffer); + return 0; +} + + diff --git a/arduinoSrc1_0/WString.h b/arduinoSrc1_0/WString.h new file mode 100644 index 0000000..d76d2a3 --- /dev/null +++ b/arduinoSrc1_0/WString.h @@ -0,0 +1,205 @@ +/* + WString.h - String library for Wiring & Arduino + ...mostly rewritten by Paul Stoffregen... + Copyright (c) 2009-10 Hernando Barragan. All right reserved. + Copyright 2011, Paul Stoffregen, paul@pjrc.com + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +*/ + +#ifndef String_class_h +#define String_class_h +#ifdef __cplusplus + +#include <stdlib.h> +#include <string.h> +#include <ctype.h> +#include <avr/pgmspace.h> + +// When compiling programs with this class, the following gcc parameters +// dramatically increase performance and memory (RAM) efficiency, typically +// with little or no increase in code size. +// -felide-constructors +// -std=c++0x + +class __FlashStringHelper; +#define F(string_literal) (reinterpret_cast<__FlashStringHelper *>(PSTR(string_literal))) + +// An inherited class for holding the result of a concatenation. These +// result objects are assumed to be writable by subsequent concatenations. +class StringSumHelper; + +// The string class +class String +{ + // use a function pointer to allow for "if (s)" without the + // complications of an operator bool(). for more information, see: + // http://www.artima.com/cppsource/safebool.html + typedef void (String::*StringIfHelperType)() const; + void StringIfHelper() const {} + +public: + // constructors + // creates a copy of the initial value. + // if the initial value is null or invalid, or if memory allocation + // fails, the string will be marked as invalid (i.e. "if (s)" will + // be false). + String(const char *cstr = ""); + String(const String &str); + #ifdef __GXX_EXPERIMENTAL_CXX0X__ + String(String &&rval); + String(StringSumHelper &&rval); + #endif + explicit String(char c); + explicit String(unsigned char, unsigned char base=10); + explicit String(int, unsigned char base=10); + explicit String(unsigned int, unsigned char base=10); + explicit String(long, unsigned char base=10); + explicit String(unsigned long, unsigned char base=10); + ~String(void); + + // memory management + // return true on success, false on failure (in which case, the string + // is left unchanged). reserve(0), if successful, will validate an + // invalid string (i.e., "if (s)" will be true afterwards) + unsigned char reserve(unsigned int size); + inline unsigned int length(void) const {return len;} + + // creates a copy of the assigned value. if the value is null or + // invalid, or if the memory allocation fails, the string will be + // marked as invalid ("if (s)" will be false). + String & operator = (const String &rhs); + String & operator = (const char *cstr); + #ifdef __GXX_EXPERIMENTAL_CXX0X__ + String & operator = (String &&rval); + String & operator = (StringSumHelper &&rval); + #endif + + // concatenate (works w/ built-in types) + + // returns true on success, false on failure (in which case, the string + // is left unchanged). if the argument is null or invalid, the + // concatenation is considered unsucessful. + unsigned char concat(const String &str); + unsigned char concat(const char *cstr); + unsigned char concat(char c); + unsigned char concat(unsigned char c); + unsigned char concat(int num); + unsigned char concat(unsigned int num); + unsigned char concat(long num); + unsigned char concat(unsigned long num); + + // if there's not enough memory for the concatenated value, the string + // will be left unchanged (but this isn't signalled in any way) + String & operator += (const String &rhs) {concat(rhs); return (*this);} + String & operator += (const char *cstr) {concat(cstr); return (*this);} + String & operator += (char c) {concat(c); return (*this);} + String & operator += (unsigned char num) {concat(num); return (*this);} + String & operator += (int num) {concat(num); return (*this);} + String & operator += (unsigned int num) {concat(num); return (*this);} + String & operator += (long num) {concat(num); return (*this);} + String & operator += (unsigned long num) {concat(num); return (*this);} + + friend StringSumHelper & operator + (const StringSumHelper &lhs, const String &rhs); + friend StringSumHelper & operator + (const StringSumHelper &lhs, const char *cstr); + friend StringSumHelper & operator + (const StringSumHelper &lhs, char c); + friend StringSumHelper & operator + (const StringSumHelper &lhs, unsigned char num); + friend StringSumHelper & operator + (const StringSumHelper &lhs, int num); + friend StringSumHelper & operator + (const StringSumHelper &lhs, unsigned int num); + friend StringSumHelper & operator + (const StringSumHelper &lhs, long num); + friend StringSumHelper & operator + (const StringSumHelper &lhs, unsigned long num); + + // comparison (only works w/ Strings and "strings") + operator StringIfHelperType() const { return buffer ? &String::StringIfHelper : 0; } + int compareTo(const String &s) const; + unsigned char equals(const String &s) const; + unsigned char equals(const char *cstr) const; + unsigned char operator == (const String &rhs) const {return equals(rhs);} + unsigned char operator == (const char *cstr) const {return equals(cstr);} + unsigned char operator != (const String &rhs) const {return !equals(rhs);} + unsigned char operator != (const char *cstr) const {return !equals(cstr);} + unsigned char operator < (const String &rhs) const; + unsigned char operator > (const String &rhs) const; + unsigned char operator <= (const String &rhs) const; + unsigned char operator >= (const String &rhs) const; + unsigned char equalsIgnoreCase(const String &s) const; + unsigned char startsWith( const String &prefix) const; + unsigned char startsWith(const String &prefix, unsigned int offset) const; + unsigned char endsWith(const String &suffix) const; + + // character acccess + char charAt(unsigned int index) const; + void setCharAt(unsigned int index, char c); + char operator [] (unsigned int index) const; + char& operator [] (unsigned int index); + void getBytes(unsigned char *buf, unsigned int bufsize, unsigned int index=0) const; + void toCharArray(char *buf, unsigned int bufsize, unsigned int index=0) const + {getBytes((unsigned char *)buf, bufsize, index);} + + // search + int indexOf( char ch ) const; + int indexOf( char ch, unsigned int fromIndex ) const; + int indexOf( const String &str ) const; + int indexOf( const String &str, unsigned int fromIndex ) const; + int lastIndexOf( char ch ) const; + int lastIndexOf( char ch, unsigned int fromIndex ) const; + int lastIndexOf( const String &str ) const; + int lastIndexOf( const String &str, unsigned int fromIndex ) const; + String substring( unsigned int beginIndex ) const; + String substring( unsigned int beginIndex, unsigned int endIndex ) const; + + // modification + void replace(char find, char replace); + void replace(const String& find, const String& replace); + void toLowerCase(void); + void toUpperCase(void); + void trim(void); + + // parsing/conversion + long toInt(void) const; + +protected: + char *buffer; // the actual char array + unsigned int capacity; // the array length minus one (for the '\0') + unsigned int len; // the String length (not counting the '\0') + unsigned char flags; // unused, for future features +protected: + void init(void); + void invalidate(void); + unsigned char changeBuffer(unsigned int maxStrLen); + unsigned char concat(const char *cstr, unsigned int length); + + // copy and move + String & copy(const char *cstr, unsigned int length); + #ifdef __GXX_EXPERIMENTAL_CXX0X__ + void move(String &rhs); + #endif +}; + +class StringSumHelper : public String +{ +public: + StringSumHelper(const String &s) : String(s) {} + StringSumHelper(const char *p) : String(p) {} + StringSumHelper(char c) : String(c) {} + StringSumHelper(unsigned char num) : String(num) {} + StringSumHelper(int num) : String(num) {} + StringSumHelper(unsigned int num) : String(num) {} + StringSumHelper(long num) : String(num) {} + StringSumHelper(unsigned long num) : String(num) {} +}; + +#endif // __cplusplus +#endif // String_class_h diff --git a/arduinoSrc1_0/binary.h b/arduinoSrc1_0/binary.h new file mode 100644 index 0000000..af14980 --- /dev/null +++ b/arduinoSrc1_0/binary.h @@ -0,0 +1,515 @@ +#ifndef Binary_h +#define Binary_h + +#define B0 0 +#define B00 0 +#define B000 0 +#define B0000 0 +#define B00000 0 +#define B000000 0 +#define B0000000 0 +#define B00000000 0 +#define B1 1 +#define B01 1 +#define B001 1 +#define B0001 1 +#define B00001 1 +#define B000001 1 +#define B0000001 1 +#define B00000001 1 +#define B10 2 +#define B010 2 +#define B0010 2 +#define B00010 2 +#define B000010 2 +#define B0000010 2 +#define B00000010 2 +#define B11 3 +#define B011 3 +#define B0011 3 +#define B00011 3 +#define B000011 3 +#define B0000011 3 +#define B00000011 3 +#define B100 4 +#define B0100 4 +#define B00100 4 +#define B000100 4 +#define B0000100 4 +#define B00000100 4 +#define B101 5 +#define B0101 5 +#define B00101 5 +#define B000101 5 +#define B0000101 5 +#define B00000101 5 +#define B110 6 +#define B0110 6 +#define B00110 6 +#define B000110 6 +#define B0000110 6 +#define B00000110 6 +#define B111 7 +#define B0111 7 +#define B00111 7 +#define B000111 7 +#define B0000111 7 +#define B00000111 7 +#define B1000 8 +#define B01000 8 +#define B001000 8 +#define B0001000 8 +#define B00001000 8 +#define B1001 9 +#define B01001 9 +#define B001001 9 +#define B0001001 9 +#define B00001001 9 +#define B1010 10 +#define B01010 10 +#define B001010 10 +#define B0001010 10 +#define B00001010 10 +#define B1011 11 +#define B01011 11 +#define B001011 11 +#define B0001011 11 +#define B00001011 11 +#define B1100 12 +#define B01100 12 +#define B001100 12 +#define B0001100 12 +#define B00001100 12 +#define B1101 13 +#define B01101 13 +#define B001101 13 +#define B0001101 13 +#define B00001101 13 +#define B1110 14 +#define B01110 14 +#define B001110 14 +#define B0001110 14 +#define B00001110 14 +#define B1111 15 +#define B01111 15 +#define B001111 15 +#define B0001111 15 +#define B00001111 15 +#define B10000 16 +#define B010000 16 +#define B0010000 16 +#define B00010000 16 +#define B10001 17 +#define B010001 17 +#define B0010001 17 +#define B00010001 17 +#define B10010 18 +#define B010010 18 +#define B0010010 18 +#define B00010010 18 +#define B10011 19 +#define B010011 19 +#define B0010011 19 +#define B00010011 19 +#define B10100 20 +#define B010100 20 +#define B0010100 20 +#define B00010100 20 +#define B10101 21 +#define B010101 21 +#define B0010101 21 +#define B00010101 21 +#define B10110 22 +#define B010110 22 +#define B0010110 22 +#define B00010110 22 +#define B10111 23 +#define B010111 23 +#define B0010111 23 +#define B00010111 23 +#define B11000 24 +#define B011000 24 +#define B0011000 24 +#define B00011000 24 +#define B11001 25 +#define B011001 25 +#define B0011001 25 +#define B00011001 25 +#define B11010 26 +#define B011010 26 +#define B0011010 26 +#define B00011010 26 +#define B11011 27 +#define B011011 27 +#define B0011011 27 +#define B00011011 27 +#define B11100 28 +#define B011100 28 +#define B0011100 28 +#define B00011100 28 +#define B11101 29 +#define B011101 29 +#define B0011101 29 +#define B00011101 29 +#define B11110 30 +#define B011110 30 +#define B0011110 30 +#define B00011110 30 +#define B11111 31 +#define B011111 31 +#define B0011111 31 +#define B00011111 31 +#define B100000 32 +#define B0100000 32 +#define B00100000 32 +#define B100001 33 +#define B0100001 33 +#define B00100001 33 +#define B100010 34 +#define B0100010 34 +#define B00100010 34 +#define B100011 35 +#define B0100011 35 +#define B00100011 35 +#define B100100 36 +#define B0100100 36 +#define B00100100 36 +#define B100101 37 +#define B0100101 37 +#define B00100101 37 +#define B100110 38 +#define B0100110 38 +#define B00100110 38 +#define B100111 39 +#define B0100111 39 +#define B00100111 39 +#define B101000 40 +#define B0101000 40 +#define B00101000 40 +#define B101001 41 +#define B0101001 41 +#define B00101001 41 +#define B101010 42 +#define B0101010 42 +#define B00101010 42 +#define B101011 43 +#define B0101011 43 +#define B00101011 43 +#define B101100 44 +#define B0101100 44 +#define B00101100 44 +#define B101101 45 +#define B0101101 45 +#define B00101101 45 +#define B101110 46 +#define B0101110 46 +#define B00101110 46 +#define B101111 47 +#define B0101111 47 +#define B00101111 47 +#define B110000 48 +#define B0110000 48 +#define B00110000 48 +#define B110001 49 +#define B0110001 49 +#define B00110001 49 +#define B110010 50 +#define B0110010 50 +#define B00110010 50 +#define B110011 51 +#define B0110011 51 +#define B00110011 51 +#define B110100 52 +#define B0110100 52 +#define B00110100 52 +#define B110101 53 +#define B0110101 53 +#define B00110101 53 +#define B110110 54 +#define B0110110 54 +#define B00110110 54 +#define B110111 55 +#define B0110111 55 +#define B00110111 55 +#define B111000 56 +#define B0111000 56 +#define B00111000 56 +#define B111001 57 +#define B0111001 57 +#define B00111001 57 +#define B111010 58 +#define B0111010 58 +#define B00111010 58 +#define B111011 59 +#define B0111011 59 +#define B00111011 59 +#define B111100 60 +#define B0111100 60 +#define B00111100 60 +#define B111101 61 +#define B0111101 61 +#define B00111101 61 +#define B111110 62 +#define B0111110 62 +#define B00111110 62 +#define B111111 63 +#define B0111111 63 +#define B00111111 63 +#define B1000000 64 +#define B01000000 64 +#define B1000001 65 +#define B01000001 65 +#define B1000010 66 +#define B01000010 66 +#define B1000011 67 +#define B01000011 67 +#define B1000100 68 +#define B01000100 68 +#define B1000101 69 +#define B01000101 69 +#define B1000110 70 +#define B01000110 70 +#define B1000111 71 +#define B01000111 71 +#define B1001000 72 +#define B01001000 72 +#define B1001001 73 +#define B01001001 73 +#define B1001010 74 +#define B01001010 74 +#define B1001011 75 +#define B01001011 75 +#define B1001100 76 +#define B01001100 76 +#define B1001101 77 +#define B01001101 77 +#define B1001110 78 +#define B01001110 78 +#define B1001111 79 +#define B01001111 79 +#define B1010000 80 +#define B01010000 80 +#define B1010001 81 +#define B01010001 81 +#define B1010010 82 +#define B01010010 82 +#define B1010011 83 +#define B01010011 83 +#define B1010100 84 +#define B01010100 84 +#define B1010101 85 +#define B01010101 85 +#define B1010110 86 +#define B01010110 86 +#define B1010111 87 +#define B01010111 87 +#define B1011000 88 +#define B01011000 88 +#define B1011001 89 +#define B01011001 89 +#define B1011010 90 +#define B01011010 90 +#define B1011011 91 +#define B01011011 91 +#define B1011100 92 +#define B01011100 92 +#define B1011101 93 +#define B01011101 93 +#define B1011110 94 +#define B01011110 94 +#define B1011111 95 +#define B01011111 95 +#define B1100000 96 +#define B01100000 96 +#define B1100001 97 +#define B01100001 97 +#define B1100010 98 +#define B01100010 98 +#define B1100011 99 +#define B01100011 99 +#define B1100100 100 +#define B01100100 100 +#define B1100101 101 +#define B01100101 101 +#define B1100110 102 +#define B01100110 102 +#define B1100111 103 +#define B01100111 103 +#define B1101000 104 +#define B01101000 104 +#define B1101001 105 +#define B01101001 105 +#define B1101010 106 +#define B01101010 106 +#define B1101011 107 +#define B01101011 107 +#define B1101100 108 +#define B01101100 108 +#define B1101101 109 +#define B01101101 109 +#define B1101110 110 +#define B01101110 110 +#define B1101111 111 +#define B01101111 111 +#define B1110000 112 +#define B01110000 112 +#define B1110001 113 +#define B01110001 113 +#define B1110010 114 +#define B01110010 114 +#define B1110011 115 +#define B01110011 115 +#define B1110100 116 +#define B01110100 116 +#define B1110101 117 +#define B01110101 117 +#define B1110110 118 +#define B01110110 118 +#define B1110111 119 +#define B01110111 119 +#define B1111000 120 +#define B01111000 120 +#define B1111001 121 +#define B01111001 121 +#define B1111010 122 +#define B01111010 122 +#define B1111011 123 +#define B01111011 123 +#define B1111100 124 +#define B01111100 124 +#define B1111101 125 +#define B01111101 125 +#define B1111110 126 +#define B01111110 126 +#define B1111111 127 +#define B01111111 127 +#define B10000000 128 +#define B10000001 129 +#define B10000010 130 +#define B10000011 131 +#define B10000100 132 +#define B10000101 133 +#define B10000110 134 +#define B10000111 135 +#define B10001000 136 +#define B10001001 137 +#define B10001010 138 +#define B10001011 139 +#define B10001100 140 +#define B10001101 141 +#define B10001110 142 +#define B10001111 143 +#define B10010000 144 +#define B10010001 145 +#define B10010010 146 +#define B10010011 147 +#define B10010100 148 +#define B10010101 149 +#define B10010110 150 +#define B10010111 151 +#define B10011000 152 +#define B10011001 153 +#define B10011010 154 +#define B10011011 155 +#define B10011100 156 +#define B10011101 157 +#define B10011110 158 +#define B10011111 159 +#define B10100000 160 +#define B10100001 161 +#define B10100010 162 +#define B10100011 163 +#define B10100100 164 +#define B10100101 165 +#define B10100110 166 +#define B10100111 167 +#define B10101000 168 +#define B10101001 169 +#define B10101010 170 +#define B10101011 171 +#define B10101100 172 +#define B10101101 173 +#define B10101110 174 +#define B10101111 175 +#define B10110000 176 +#define B10110001 177 +#define B10110010 178 +#define B10110011 179 +#define B10110100 180 +#define B10110101 181 +#define B10110110 182 +#define B10110111 183 +#define B10111000 184 +#define B10111001 185 +#define B10111010 186 +#define B10111011 187 +#define B10111100 188 +#define B10111101 189 +#define B10111110 190 +#define B10111111 191 +#define B11000000 192 +#define B11000001 193 +#define B11000010 194 +#define B11000011 195 +#define B11000100 196 +#define B11000101 197 +#define B11000110 198 +#define B11000111 199 +#define B11001000 200 +#define B11001001 201 +#define B11001010 202 +#define B11001011 203 +#define B11001100 204 +#define B11001101 205 +#define B11001110 206 +#define B11001111 207 +#define B11010000 208 +#define B11010001 209 +#define B11010010 210 +#define B11010011 211 +#define B11010100 212 +#define B11010101 213 +#define B11010110 214 +#define B11010111 215 +#define B11011000 216 +#define B11011001 217 +#define B11011010 218 +#define B11011011 219 +#define B11011100 220 +#define B11011101 221 +#define B11011110 222 +#define B11011111 223 +#define B11100000 224 +#define B11100001 225 +#define B11100010 226 +#define B11100011 227 +#define B11100100 228 +#define B11100101 229 +#define B11100110 230 +#define B11100111 231 +#define B11101000 232 +#define B11101001 233 +#define B11101010 234 +#define B11101011 235 +#define B11101100 236 +#define B11101101 237 +#define B11101110 238 +#define B11101111 239 +#define B11110000 240 +#define B11110001 241 +#define B11110010 242 +#define B11110011 243 +#define B11110100 244 +#define B11110101 245 +#define B11110110 246 +#define B11110111 247 +#define B11111000 248 +#define B11111001 249 +#define B11111010 250 +#define B11111011 251 +#define B11111100 252 +#define B11111101 253 +#define B11111110 254 +#define B11111111 255 + +#endif diff --git a/arduinoSrc1_0/main.cpp b/arduinoSrc1_0/main.cpp new file mode 100644 index 0000000..34450f4 --- /dev/null +++ b/arduinoSrc1_0/main.cpp @@ -0,0 +1,20 @@ +#include <Arduino.h> + +int main(void) +{ + init(); + +#if defined(USBCON) + USB.attach(); +#endif + + setup(); + + for (;;) { + loop(); + if (serialEventRun) serialEventRun(); + } + + return 0; +} + diff --git a/arduinoSrc1_0/new.cpp b/arduinoSrc1_0/new.cpp new file mode 100644 index 0000000..0f6d422 --- /dev/null +++ b/arduinoSrc1_0/new.cpp @@ -0,0 +1,18 @@ +#include <new.h> + +void * operator new(size_t size) +{ + return malloc(size); +} + +void operator delete(void * ptr) +{ + free(ptr); +} + +int __cxa_guard_acquire(__guard *g) {return !*(char *)(g);}; +void __cxa_guard_release (__guard *g) {*(char *)g = 1;}; +void __cxa_guard_abort (__guard *) {}; + +void __cxa_pure_virtual(void) {}; + diff --git a/arduinoSrc1_0/new.h b/arduinoSrc1_0/new.h new file mode 100644 index 0000000..cd940ce --- /dev/null +++ b/arduinoSrc1_0/new.h @@ -0,0 +1,22 @@ +/* Header to define new/delete operators as they aren't provided by avr-gcc by default + Taken from http://www.avrfreaks.net/index.php?name=PNphpBB2&file=viewtopic&t=59453 + */ + +#ifndef NEW_H +#define NEW_H + +#include <stdlib.h> + +void * operator new(size_t size); +void operator delete(void * ptr); + +__extension__ typedef int __guard __attribute__((mode (__DI__))); + +extern "C" int __cxa_guard_acquire(__guard *); +extern "C" void __cxa_guard_release (__guard *); +extern "C" void __cxa_guard_abort (__guard *); + +extern "C" void __cxa_pure_virtual(void); + +#endif + diff --git a/arduinoSrc1_0/wiring.c b/arduinoSrc1_0/wiring.c new file mode 100644 index 0000000..bc01949 --- /dev/null +++ b/arduinoSrc1_0/wiring.c @@ -0,0 +1,297 @@ +/* + wiring.c - Partial implementation of the Wiring API for the ATmega8. + Part of Arduino - http://www.arduino.cc/ + + Copyright (c) 2005-2006 David A. Mellis + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General + Public License along with this library; if not, write to the + Free Software Foundation, Inc., 59 Temple Place, Suite 330, + Boston, MA 02111-1307 USA + + $Id$ +*/ + +#include "wiring_private.h" + +// the prescaler is set so that timer0 ticks every 64 clock cycles, and the +// the overflow handler is called every 256 ticks. +#define MICROSECONDS_PER_TIMER0_OVERFLOW (clockCyclesToMicroseconds(64 * 256)) + +// the whole number of milliseconds per timer0 overflow +#define MILLIS_INC (MICROSECONDS_PER_TIMER0_OVERFLOW / 1000) + +// the fractional number of milliseconds per timer0 overflow. we shift right +// by three to fit these numbers into a byte. (for the clock speeds we care +// about - 8 and 16 MHz - this doesn't lose precision.) +#define FRACT_INC ((MICROSECONDS_PER_TIMER0_OVERFLOW % 1000) >> 3) +#define FRACT_MAX (1000 >> 3) + +volatile unsigned long timer0_overflow_count = 0; +volatile unsigned long timer0_millis = 0; +static unsigned char timer0_fract = 0; + +#if defined(__AVR_ATtiny24__) || defined(__AVR_ATtiny44__) || defined(__AVR_ATtiny84__) +SIGNAL(TIM0_OVF_vect) +#else +SIGNAL(TIMER0_OVF_vect) +#endif +{ + // copy these to local variables so they can be stored in registers + // (volatile variables must be read from memory on every access) + unsigned long m = timer0_millis; + unsigned char f = timer0_fract; + + m += MILLIS_INC; + f += FRACT_INC; + if (f >= FRACT_MAX) { + f -= FRACT_MAX; + m += 1; + } + + timer0_fract = f; + timer0_millis = m; + timer0_overflow_count++; +} + +unsigned long millis() +{ + unsigned long m; + uint8_t oldSREG = SREG; + + // disable interrupts while we read timer0_millis or we might get an + // inconsistent value (e.g. in the middle of a write to timer0_millis) + cli(); + m = timer0_millis; + SREG = oldSREG; + + return m; +} + +unsigned long micros() { + unsigned long m; + uint8_t oldSREG = SREG, t; + + cli(); + m = timer0_overflow_count; +#if defined(TCNT0) + t = TCNT0; +#elif defined(TCNT0L) + t = TCNT0L; +#else + #error TIMER 0 not defined +#endif + + +#ifdef TIFR0 + if ((TIFR0 & _BV(TOV0)) && (t < 255)) + m++; +#else + if ((TIFR & _BV(TOV0)) && (t < 255)) + m++; +#endif + + SREG = oldSREG; + + return ((m << 8) + t) * (64 / clockCyclesPerMicrosecond()); +} + +void delay(unsigned long ms) +{ + uint16_t start = (uint16_t)micros(); + + while (ms > 0) { + if (((uint16_t)micros() - start) >= 1000) { + ms--; + start += 1000; + } + } +} + +/* Delay for the given number of microseconds. Assumes a 8 or 16 MHz clock. */ +void delayMicroseconds(unsigned int us) +{ + // calling avrlib's delay_us() function with low values (e.g. 1 or + // 2 microseconds) gives delays longer than desired. + //delay_us(us); + +#if F_CPU >= 16000000L + // for the 16 MHz clock on most Arduino boards + + // for a one-microsecond delay, simply return. the overhead + // of the function call yields a delay of approximately 1 1/8 us. + if (--us == 0) + return; + + // the following loop takes a quarter of a microsecond (4 cycles) + // per iteration, so execute it four times for each microsecond of + // delay requested. + us <<= 2; + + // account for the time taken in the preceeding commands. + us -= 2; +#else + // for the 8 MHz internal clock on the ATmega168 + + // for a one- or two-microsecond delay, simply return. the overhead of + // the function calls takes more than two microseconds. can't just + // subtract two, since us is unsigned; we'd overflow. + if (--us == 0) + return; + if (--us == 0) + return; + + // the following loop takes half of a microsecond (4 cycles) + // per iteration, so execute it twice for each microsecond of + // delay requested. + us <<= 1; + + // partially compensate for the time taken by the preceeding commands. + // we can't subtract any more than this or we'd overflow w/ small delays. + us--; +#endif + + // busy wait + __asm__ __volatile__ ( + "1: sbiw %0,1" "\n\t" // 2 cycles + "brne 1b" : "=w" (us) : "0" (us) // 2 cycles + ); +} + +void init() +{ + // this needs to be called before setup() or some functions won't + // work there + sei(); + + // on the ATmega168, timer 0 is also used for fast hardware pwm + // (using phase-correct PWM would mean that timer 0 overflowed half as often + // resulting in different millis() behavior on the ATmega8 and ATmega168) +#if defined(TCCR0A) && defined(WGM01) + sbi(TCCR0A, WGM01); + sbi(TCCR0A, WGM00); +#endif + + // set timer 0 prescale factor to 64 +#if defined(__AVR_ATmega128__) + // CPU specific: different values for the ATmega128 + sbi(TCCR0, CS02); +#elif defined(TCCR0) && defined(CS01) && defined(CS00) + // this combination is for the standard atmega8 + sbi(TCCR0, CS01); + sbi(TCCR0, CS00); +#elif defined(TCCR0B) && defined(CS01) && defined(CS00) + // this combination is for the standard 168/328/1280/2560 + sbi(TCCR0B, CS01); + sbi(TCCR0B, CS00); +#elif defined(TCCR0A) && defined(CS01) && defined(CS00) + // this combination is for the __AVR_ATmega645__ series + sbi(TCCR0A, CS01); + sbi(TCCR0A, CS00); +#else + #error Timer 0 prescale factor 64 not set correctly +#endif + + // enable timer 0 overflow interrupt +#if defined(TIMSK) && defined(TOIE0) + sbi(TIMSK, TOIE0); +#elif defined(TIMSK0) && defined(TOIE0) + sbi(TIMSK0, TOIE0); +#else + #error Timer 0 overflow interrupt not set correctly +#endif + + // timers 1 and 2 are used for phase-correct hardware pwm + // this is better for motors as it ensures an even waveform + // note, however, that fast pwm mode can achieve a frequency of up + // 8 MHz (with a 16 MHz clock) at 50% duty cycle + +#if defined(TCCR1B) && defined(CS11) && defined(CS10) + TCCR1B = 0; + + // set timer 1 prescale factor to 64 + sbi(TCCR1B, CS11); +#if F_CPU >= 8000000L + sbi(TCCR1B, CS10); +#endif +#elif defined(TCCR1) && defined(CS11) && defined(CS10) + sbi(TCCR1, CS11); +#if F_CPU >= 8000000L + sbi(TCCR1, CS10); +#endif +#endif + // put timer 1 in 8-bit phase correct pwm mode +#if defined(TCCR1A) && defined(WGM10) + sbi(TCCR1A, WGM10); +#elif defined(TCCR1) + #warning this needs to be finished +#endif + + // set timer 2 prescale factor to 64 +#if defined(TCCR2) && defined(CS22) + sbi(TCCR2, CS22); +#elif defined(TCCR2B) && defined(CS22) + sbi(TCCR2B, CS22); +#else + #warning Timer 2 not finished (may not be present on this CPU) +#endif + + // configure timer 2 for phase correct pwm (8-bit) +#if defined(TCCR2) && defined(WGM20) + sbi(TCCR2, WGM20); +#elif defined(TCCR2A) && defined(WGM20) + sbi(TCCR2A, WGM20); +#else + #warning Timer 2 not finished (may not be present on this CPU) +#endif + +#if defined(TCCR3B) && defined(CS31) && defined(WGM30) + sbi(TCCR3B, CS31); // set timer 3 prescale factor to 64 + sbi(TCCR3B, CS30); + sbi(TCCR3A, WGM30); // put timer 3 in 8-bit phase correct pwm mode +#endif + +#if defined(TCCR4B) && defined(CS41) && defined(WGM40) + sbi(TCCR4B, CS41); // set timer 4 prescale factor to 64 + sbi(TCCR4B, CS40); + sbi(TCCR4A, WGM40); // put timer 4 in 8-bit phase correct pwm mode +#endif + +#if defined(TCCR5B) && defined(CS51) && defined(WGM50) + sbi(TCCR5B, CS51); // set timer 5 prescale factor to 64 + sbi(TCCR5B, CS50); + sbi(TCCR5A, WGM50); // put timer 5 in 8-bit phase correct pwm mode +#endif + +#if defined(ADCSRA) + // set a2d prescale factor to 128 + // 16 MHz / 128 = 125 KHz, inside the desired 50-200 KHz range. + // XXX: this will not work properly for other clock speeds, and + // this code should use F_CPU to determine the prescale factor. + sbi(ADCSRA, ADPS2); + sbi(ADCSRA, ADPS1); + sbi(ADCSRA, ADPS0); + + // enable a2d conversions + sbi(ADCSRA, ADEN); +#endif + + // the bootloader connects pins 0 and 1 to the USART; disconnect them + // here so they can be used as normal digital i/o; they will be + // reconnected in Serial.begin() +#if defined(UCSRB) + UCSRB = 0; +#elif defined(UCSR0B) + UCSR0B = 0; +#endif +} diff --git a/arduinoSrc1_0/wiring_analog.c b/arduinoSrc1_0/wiring_analog.c new file mode 100644 index 0000000..902b153 --- /dev/null +++ b/arduinoSrc1_0/wiring_analog.c @@ -0,0 +1,272 @@ +/* + wiring_analog.c - analog input and output + Part of Arduino - http://www.arduino.cc/ + + Copyright (c) 2005-2006 David A. Mellis + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General + Public License along with this library; if not, write to the + Free Software Foundation, Inc., 59 Temple Place, Suite 330, + Boston, MA 02111-1307 USA + + Modified 28 September 2010 by Mark Sproul + + $Id: wiring.c 248 2007-02-03 15:36:30Z mellis $ +*/ + +#include "wiring_private.h" +#include "pins_arduino.h" + +uint8_t analog_reference = DEFAULT; + +void analogReference(uint8_t mode) +{ + // can't actually set the register here because the default setting + // will connect AVCC and the AREF pin, which would cause a short if + // there's something connected to AREF. + analog_reference = mode; +} + +int analogRead(uint8_t pin) +{ + uint8_t low, high; + +#if defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__) + if (pin >= 54) pin -= 54; // allow for channel or pin numbers +#elif defined(__AVR_ATmega32U4__) + if (pin >= 18) pin -= 18; // allow for channel or pin numbers +#else + if (pin >= 14) pin -= 14; // allow for channel or pin numbers +#endif + +#if defined(__AVR_ATmega32U4__) + pin = analogPinToChannel(pin); + ADCSRB = (ADCSRB & ~(1 << MUX5)) | (((pin >> 3) & 0x01) << MUX5); +#elif defined(ADCSRB) && defined(MUX5) + // the MUX5 bit of ADCSRB selects whether we're reading from channels + // 0 to 7 (MUX5 low) or 8 to 15 (MUX5 high). + ADCSRB = (ADCSRB & ~(1 << MUX5)) | (((pin >> 3) & 0x01) << MUX5); +#endif + + // set the analog reference (high two bits of ADMUX) and select the + // channel (low 4 bits). this also sets ADLAR (left-adjust result) + // to 0 (the default). +#if defined(ADMUX) + ADMUX = (analog_reference << 6) | (pin & 0x07); +#endif + + // without a delay, we seem to read from the wrong channel + //delay(1); + +#if defined(ADCSRA) && defined(ADCL) + // start the conversion + sbi(ADCSRA, ADSC); + + // ADSC is cleared when the conversion finishes + while (bit_is_set(ADCSRA, ADSC)); + + // we have to read ADCL first; doing so locks both ADCL + // and ADCH until ADCH is read. reading ADCL second would + // cause the results of each conversion to be discarded, + // as ADCL and ADCH would be locked when it completed. + low = ADCL; + high = ADCH; +#else + // we dont have an ADC, return 0 + low = 0; + high = 0; +#endif + + // combine the two bytes + return (high << 8) | low; +} + +// Right now, PWM output only works on the pins with +// hardware support. These are defined in the appropriate +// pins_*.c file. For the rest of the pins, we default +// to digital output. +void analogWrite(uint8_t pin, int val) +{ + // We need to make sure the PWM output is enabled for those pins + // that support it, as we turn it off when digitally reading or + // writing with them. Also, make sure the pin is in output mode + // for consistenty with Wiring, which doesn't require a pinMode + // call for the analog output pins. + pinMode(pin, OUTPUT); + if (val == 0) + { + digitalWrite(pin, LOW); + } + else if (val == 255) + { + digitalWrite(pin, HIGH); + } + else + { + switch(digitalPinToTimer(pin)) + { + // XXX fix needed for atmega8 + #if defined(TCCR0) && defined(COM00) && !defined(__AVR_ATmega8__) + case TIMER0A: + // connect pwm to pin on timer 0 + sbi(TCCR0, COM00); + OCR0 = val; // set pwm duty + break; + #endif + + #if defined(TCCR0A) && defined(COM0A1) + case TIMER0A: + // connect pwm to pin on timer 0, channel A + sbi(TCCR0A, COM0A1); + OCR0A = val; // set pwm duty + break; + #endif + + #if defined(TCCR0A) && defined(COM0B1) + case TIMER0B: + // connect pwm to pin on timer 0, channel B + sbi(TCCR0A, COM0B1); + OCR0B = val; // set pwm duty + break; + #endif + + #if defined(TCCR1A) && defined(COM1A1) + case TIMER1A: + // connect pwm to pin on timer 1, channel A + sbi(TCCR1A, COM1A1); + OCR1A = val; // set pwm duty + break; + #endif + + #if defined(TCCR1A) && defined(COM1B1) + case TIMER1B: + // connect pwm to pin on timer 1, channel B + sbi(TCCR1A, COM1B1); + OCR1B = val; // set pwm duty + break; + #endif + + #if defined(TCCR2) && defined(COM21) + case TIMER2: + // connect pwm to pin on timer 2 + sbi(TCCR2, COM21); + OCR2 = val; // set pwm duty + break; + #endif + + #if defined(TCCR2A) && defined(COM2A1) + case TIMER2A: + // connect pwm to pin on timer 2, channel A + sbi(TCCR2A, COM2A1); + OCR2A = val; // set pwm duty + break; + #endif + + #if defined(TCCR2A) && defined(COM2B1) + case TIMER2B: + // connect pwm to pin on timer 2, channel B + sbi(TCCR2A, COM2B1); + OCR2B = val; // set pwm duty + break; + #endif + + #if defined(TCCR3A) && defined(COM3A1) + case TIMER3A: + // connect pwm to pin on timer 3, channel A + sbi(TCCR3A, COM3A1); + OCR3A = val; // set pwm duty + break; + #endif + + #if defined(TCCR3A) && defined(COM3B1) + case TIMER3B: + // connect pwm to pin on timer 3, channel B + sbi(TCCR3A, COM3B1); + OCR3B = val; // set pwm duty + break; + #endif + + #if defined(TCCR3A) && defined(COM3C1) + case TIMER3C: + // connect pwm to pin on timer 3, channel C + sbi(TCCR3A, COM3C1); + OCR3C = val; // set pwm duty + break; + #endif + + #if defined(TCCR4A) && defined(COM4A1) + case TIMER4A: + // connect pwm to pin on timer 4, channel A + sbi(TCCR4A, COM4A1); + OCR4A = val; // set pwm duty + break; + #endif + + #if defined(TCCR4A) && defined(COM4B1) + case TIMER4B: + // connect pwm to pin on timer 4, channel B + sbi(TCCR4A, COM4B1); + OCR4B = val; // set pwm duty + break; + #endif + + #if defined(TCCR4A) && defined(COM4C1) + case TIMER4C: + // connect pwm to pin on timer 4, channel C + sbi(TCCR4A, COM4C1); + OCR4C = val; // set pwm duty + break; + #endif + + #if defined(TCCR4A) && defined(COM4D1) + case TIMER4D: + // connect pwm to pin on timer 4, channel D + sbi(TCCR4A, COM4D1); + OCR4D = val; // set pwm duty + break; + #endif + + #if defined(TCCR5A) && defined(COM5A1) + case TIMER5A: + // connect pwm to pin on timer 5, channel A + sbi(TCCR5A, COM5A1); + OCR5A = val; // set pwm duty + break; + #endif + + #if defined(TCCR5A) && defined(COM5B1) + case TIMER5B: + // connect pwm to pin on timer 5, channel B + sbi(TCCR5A, COM5B1); + OCR5B = val; // set pwm duty + break; + #endif + + #if defined(TCCR5A) && defined(COM5C1) + case TIMER5C: + // connect pwm to pin on timer 5, channel C + sbi(TCCR5A, COM5C1); + OCR5C = val; // set pwm duty + break; + #endif + + case NOT_ON_TIMER: + default: + if (val < 128) { + digitalWrite(pin, LOW); + } else { + digitalWrite(pin, HIGH); + } + } + } +} diff --git a/arduinoSrc1_0/wiring_digital.c b/arduinoSrc1_0/wiring_digital.c new file mode 100644 index 0000000..97ef134 --- /dev/null +++ b/arduinoSrc1_0/wiring_digital.c @@ -0,0 +1,166 @@ +/* + wiring_digital.c - digital input and output functions + Part of Arduino - http://www.arduino.cc/ + + Copyright (c) 2005-2006 David A. Mellis + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General + Public License along with this library; if not, write to the + Free Software Foundation, Inc., 59 Temple Place, Suite 330, + Boston, MA 02111-1307 USA + + Modified 28 September 2010 by Mark Sproul + + $Id: wiring.c 248 2007-02-03 15:36:30Z mellis $ +*/ + +#define ARDUINO_MAIN +#include "wiring_private.h" +#include "pins_arduino.h" + +void pinMode(uint8_t pin, uint8_t mode) +{ + uint8_t bit = digitalPinToBitMask(pin); + uint8_t port = digitalPinToPort(pin); + volatile uint8_t *reg; + + if (port == NOT_A_PIN) return; + + // JWS: can I let the optimizer do this? + reg = portModeRegister(port); + + if (mode == INPUT) { + uint8_t oldSREG = SREG; + cli(); + *reg &= ~bit; + SREG = oldSREG; + } else { + uint8_t oldSREG = SREG; + cli(); + *reg |= bit; + SREG = oldSREG; + } +} + +// Forcing this inline keeps the callers from having to push their own stuff +// on the stack. It is a good performance win and only takes 1 more byte per +// user than calling. (It will take more bytes on the 168.) +// +// But shouldn't this be moved into pinMode? Seems silly to check and do on +// each digitalread or write. +// +// Mark Sproul: +// - Removed inline. Save 170 bytes on atmega1280 +// - changed to a switch statment; added 32 bytes but much easier to read and maintain. +// - Added more #ifdefs, now compiles for atmega645 +// +//static inline void turnOffPWM(uint8_t timer) __attribute__ ((always_inline)); +//static inline void turnOffPWM(uint8_t timer) +static void turnOffPWM(uint8_t timer) +{ + switch (timer) + { + #if defined(TCCR1A) && defined(COM1A1) + case TIMER1A: cbi(TCCR1A, COM1A1); break; + #endif + #if defined(TCCR1A) && defined(COM1B1) + case TIMER1B: cbi(TCCR1A, COM1B1); break; + #endif + + #if defined(TCCR2) && defined(COM21) + case TIMER2: cbi(TCCR2, COM21); break; + #endif + + #if defined(TCCR0A) && defined(COM0A1) + case TIMER0A: cbi(TCCR0A, COM0A1); break; + #endif + + #if defined(TIMER0B) && defined(COM0B1) + case TIMER0B: cbi(TCCR0A, COM0B1); break; + #endif + #if defined(TCCR2A) && defined(COM2A1) + case TIMER2A: cbi(TCCR2A, COM2A1); break; + #endif + #if defined(TCCR2A) && defined(COM2B1) + case TIMER2B: cbi(TCCR2A, COM2B1); break; + #endif + + #if defined(TCCR3A) && defined(COM3A1) + case TIMER3A: cbi(TCCR3A, COM3A1); break; + #endif + #if defined(TCCR3A) && defined(COM3B1) + case TIMER3B: cbi(TCCR3A, COM3B1); break; + #endif + #if defined(TCCR3A) && defined(COM3C1) + case TIMER3C: cbi(TCCR3A, COM3C1); break; + #endif + + #if defined(TCCR4A) && defined(COM4A1) + case TIMER4A: cbi(TCCR4A, COM4A1); break; + #endif + #if defined(TCCR4A) && defined(COM4B1) + case TIMER4B: cbi(TCCR4A, COM4B1); break; + #endif + #if defined(TCCR4A) && defined(COM4C1) + case TIMER4C: cbi(TCCR4A, COM4C1); break; + #endif + #if defined(TCCR5A) + case TIMER5A: cbi(TCCR5A, COM5A1); break; + case TIMER5B: cbi(TCCR5A, COM5B1); break; + case TIMER5C: cbi(TCCR5A, COM5C1); break; + #endif + } +} + +void digitalWrite(uint8_t pin, uint8_t val) +{ + uint8_t timer = digitalPinToTimer(pin); + uint8_t bit = digitalPinToBitMask(pin); + uint8_t port = digitalPinToPort(pin); + volatile uint8_t *out; + + if (port == NOT_A_PIN) return; + + // If the pin that support PWM output, we need to turn it off + // before doing a digital write. + if (timer != NOT_ON_TIMER) turnOffPWM(timer); + + out = portOutputRegister(port); + + uint8_t oldSREG = SREG; + cli(); + + if (val == LOW) { + *out &= ~bit; + } else { + *out |= bit; + } + + SREG = oldSREG; +} + +int digitalRead(uint8_t pin) +{ + uint8_t timer = digitalPinToTimer(pin); + uint8_t bit = digitalPinToBitMask(pin); + uint8_t port = digitalPinToPort(pin); + + if (port == NOT_A_PIN) return LOW; + + // If the pin that support PWM output, we need to turn it off + // before getting a digital reading. + if (timer != NOT_ON_TIMER) turnOffPWM(timer); + + if (*portInputRegister(port) & bit) return HIGH; + return LOW; +} diff --git a/arduinoSrc1_0/wiring_private.h b/arduinoSrc1_0/wiring_private.h new file mode 100644 index 0000000..41d1d40 --- /dev/null +++ b/arduinoSrc1_0/wiring_private.h @@ -0,0 +1,67 @@ +/* + wiring_private.h - Internal header file. + Part of Arduino - http://www.arduino.cc/ + + Copyright (c) 2005-2006 David A. Mellis + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General + Public License along with this library; if not, write to the + Free Software Foundation, Inc., 59 Temple Place, Suite 330, + Boston, MA 02111-1307 USA + + $Id: wiring.h 239 2007-01-12 17:58:39Z mellis $ +*/ + +#ifndef WiringPrivate_h +#define WiringPrivate_h + +#include <avr/io.h> +#include <avr/interrupt.h> +#include <stdio.h> +#include <stdarg.h> + +#include "Arduino.h" + +#ifdef __cplusplus +extern "C"{ +#endif + +#ifndef cbi +#define cbi(sfr, bit) (_SFR_BYTE(sfr) &= ~_BV(bit)) +#endif +#ifndef sbi +#define sbi(sfr, bit) (_SFR_BYTE(sfr) |= _BV(bit)) +#endif + +#define EXTERNAL_INT_0 0 +#define EXTERNAL_INT_1 1 +#define EXTERNAL_INT_2 2 +#define EXTERNAL_INT_3 3 +#define EXTERNAL_INT_4 4 +#define EXTERNAL_INT_5 5 +#define EXTERNAL_INT_6 6 +#define EXTERNAL_INT_7 7 + +#if defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__) +#define EXTERNAL_NUM_INTERRUPTS 8 +#else +#define EXTERNAL_NUM_INTERRUPTS 2 +#endif + +typedef void (*voidFuncPtr)(void); + +#ifdef __cplusplus +} // extern "C" +#endif + +#endif diff --git a/arduinoSrc1_0/wiring_pulse.c b/arduinoSrc1_0/wiring_pulse.c new file mode 100644 index 0000000..0d96886 --- /dev/null +++ b/arduinoSrc1_0/wiring_pulse.c @@ -0,0 +1,69 @@ +/* + wiring_pulse.c - pulseIn() function + Part of Arduino - http://www.arduino.cc/ + + Copyright (c) 2005-2006 David A. Mellis + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General + Public License along with this library; if not, write to the + Free Software Foundation, Inc., 59 Temple Place, Suite 330, + Boston, MA 02111-1307 USA + + $Id: wiring.c 248 2007-02-03 15:36:30Z mellis $ +*/ + +#include "wiring_private.h" +#include "pins_arduino.h" + +/* Measures the length (in microseconds) of a pulse on the pin; state is HIGH + * or LOW, the type of pulse to measure. Works on pulses from 2-3 microseconds + * to 3 minutes in length, but must be called at least a few dozen microseconds + * before the start of the pulse. */ +unsigned long pulseIn(uint8_t pin, uint8_t state, unsigned long timeout) +{ + // cache the port and bit of the pin in order to speed up the + // pulse width measuring loop and achieve finer resolution. calling + // digitalRead() instead yields much coarser resolution. + uint8_t bit = digitalPinToBitMask(pin); + uint8_t port = digitalPinToPort(pin); + uint8_t stateMask = (state ? bit : 0); + unsigned long width = 0; // keep initialization out of time critical area + + // convert the timeout from microseconds to a number of times through + // the initial loop; it takes 16 clock cycles per iteration. + unsigned long numloops = 0; + unsigned long maxloops = microsecondsToClockCycles(timeout) / 16; + + // wait for any previous pulse to end + while ((*portInputRegister(port) & bit) == stateMask) + if (numloops++ == maxloops) + return 0; + + // wait for the pulse to start + while ((*portInputRegister(port) & bit) != stateMask) + if (numloops++ == maxloops) + return 0; + + // wait for the pulse to stop + while ((*portInputRegister(port) & bit) == stateMask) { + if (numloops++ == maxloops) + return 0; + width++; + } + + // convert the reading to microseconds. The loop has been determined + // to be 20 clock cycles long and have about 16 clocks between the edge + // and the start of the loop. There will be some error introduced by + // the interrupt handlers. + return clockCyclesToMicroseconds(width * 21 + 16); +} diff --git a/arduinoSrc1_0/wiring_shift.c b/arduinoSrc1_0/wiring_shift.c new file mode 100644 index 0000000..cfe7867 --- /dev/null +++ b/arduinoSrc1_0/wiring_shift.c @@ -0,0 +1,55 @@ +/* + wiring_shift.c - shiftOut() function + Part of Arduino - http://www.arduino.cc/ + + Copyright (c) 2005-2006 David A. Mellis + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General + Public License along with this library; if not, write to the + Free Software Foundation, Inc., 59 Temple Place, Suite 330, + Boston, MA 02111-1307 USA + + $Id: wiring.c 248 2007-02-03 15:36:30Z mellis $ +*/ + +#include "wiring_private.h" + +uint8_t shiftIn(uint8_t dataPin, uint8_t clockPin, uint8_t bitOrder) { + uint8_t value = 0; + uint8_t i; + + for (i = 0; i < 8; ++i) { + digitalWrite(clockPin, HIGH); + if (bitOrder == LSBFIRST) + value |= digitalRead(dataPin) << i; + else + value |= digitalRead(dataPin) << (7 - i); + digitalWrite(clockPin, LOW); + } + return value; +} + +void shiftOut(uint8_t dataPin, uint8_t clockPin, uint8_t bitOrder, uint8_t val) +{ + uint8_t i; + + for (i = 0; i < 8; i++) { + if (bitOrder == LSBFIRST) + digitalWrite(dataPin, !!(val & (1 << i))); + else + digitalWrite(dataPin, !!(val & (1 << (7 - i)))); + + digitalWrite(clockPin, HIGH); + digitalWrite(clockPin, LOW); + } +} diff --git a/arduino_libs/ArduinoSerialManager.zip b/arduino_libs_0022/ArduinoSerialManager.zip Binary files differindex 7693b72..7693b72 100644 --- a/arduino_libs/ArduinoSerialManager.zip +++ b/arduino_libs_0022/ArduinoSerialManager.zip diff --git a/arduino_libs/ByteBuffer/.svn/all-wcprops b/arduino_libs_0022/ByteBuffer/.svn/all-wcprops index de5c62d..de5c62d 100755 --- a/arduino_libs/ByteBuffer/.svn/all-wcprops +++ b/arduino_libs_0022/ByteBuffer/.svn/all-wcprops diff --git a/arduino_libs/ByteBuffer/.svn/entries b/arduino_libs_0022/ByteBuffer/.svn/entries index 4c4a628..4c4a628 100755 --- a/arduino_libs/ByteBuffer/.svn/entries +++ b/arduino_libs_0022/ByteBuffer/.svn/entries diff --git a/arduino_libs/ByteBuffer/.svn/text-base/ByteBuffer.cpp.svn-base b/arduino_libs_0022/ByteBuffer/.svn/text-base/ByteBuffer.cpp.svn-base index b91a586..b91a586 100755 --- a/arduino_libs/ByteBuffer/.svn/text-base/ByteBuffer.cpp.svn-base +++ b/arduino_libs_0022/ByteBuffer/.svn/text-base/ByteBuffer.cpp.svn-base diff --git a/arduino_libs/ByteBuffer/.svn/text-base/ByteBuffer.h.svn-base b/arduino_libs_0022/ByteBuffer/.svn/text-base/ByteBuffer.h.svn-base index b100c2f..b100c2f 100755 --- a/arduino_libs/ByteBuffer/.svn/text-base/ByteBuffer.h.svn-base +++ b/arduino_libs_0022/ByteBuffer/.svn/text-base/ByteBuffer.h.svn-base diff --git a/arduino_libs/ByteBuffer/ByteBuffer.cpp b/arduino_libs_0022/ByteBuffer/ByteBuffer.cpp index b151cef..b151cef 100755 --- a/arduino_libs/ByteBuffer/ByteBuffer.cpp +++ b/arduino_libs_0022/ByteBuffer/ByteBuffer.cpp diff --git a/arduino_libs/ByteBuffer/ByteBuffer.h b/arduino_libs_0022/ByteBuffer/ByteBuffer.h index f6b4e48..f6b4e48 100755 --- a/arduino_libs/ByteBuffer/ByteBuffer.h +++ b/arduino_libs_0022/ByteBuffer/ByteBuffer.h diff --git a/arduino_libs/NewSoftSerial/Examples/NewSoftSerialTest/NewSoftSerialTest.pde b/arduino_libs_0022/NewSoftSerial/Examples/NewSoftSerialTest/NewSoftSerialTest.pde index 0d9e815..0d9e815 100644 --- a/arduino_libs/NewSoftSerial/Examples/NewSoftSerialTest/NewSoftSerialTest.pde +++ b/arduino_libs_0022/NewSoftSerial/Examples/NewSoftSerialTest/NewSoftSerialTest.pde diff --git a/arduino_libs/NewSoftSerial/Examples/TwoNSSTest/TwoNSSTest.pde b/arduino_libs_0022/NewSoftSerial/Examples/TwoNSSTest/TwoNSSTest.pde index 73aa991..73aa991 100644 --- a/arduino_libs/NewSoftSerial/Examples/TwoNSSTest/TwoNSSTest.pde +++ b/arduino_libs_0022/NewSoftSerial/Examples/TwoNSSTest/TwoNSSTest.pde diff --git a/arduino_libs/NewSoftSerial/NewSoftSerial.cpp b/arduino_libs_0022/NewSoftSerial/NewSoftSerial.cpp index 463ab01..463ab01 100644 --- a/arduino_libs/NewSoftSerial/NewSoftSerial.cpp +++ b/arduino_libs_0022/NewSoftSerial/NewSoftSerial.cpp diff --git a/arduino_libs/NewSoftSerial/NewSoftSerial.h b/arduino_libs_0022/NewSoftSerial/NewSoftSerial.h index 1e39201..1e39201 100644 --- a/arduino_libs/NewSoftSerial/NewSoftSerial.h +++ b/arduino_libs_0022/NewSoftSerial/NewSoftSerial.h diff --git a/arduino_libs/NewSoftSerial/keywords.txt b/arduino_libs_0022/NewSoftSerial/keywords.txt index 0a39bea..0a39bea 100644 --- a/arduino_libs/NewSoftSerial/keywords.txt +++ b/arduino_libs_0022/NewSoftSerial/keywords.txt diff --git a/arduino_libs/SerialManager/.DS_Store b/arduino_libs_0022/SerialManager/.DS_Store Binary files differindex 5008ddf..5008ddf 100755 --- a/arduino_libs/SerialManager/.DS_Store +++ b/arduino_libs_0022/SerialManager/.DS_Store diff --git a/arduino_libs/SerialManager/.svn/all-wcprops b/arduino_libs_0022/SerialManager/.svn/all-wcprops index e920984..e920984 100755 --- a/arduino_libs/SerialManager/.svn/all-wcprops +++ b/arduino_libs_0022/SerialManager/.svn/all-wcprops diff --git a/arduino_libs/SerialManager/.svn/entries b/arduino_libs_0022/SerialManager/.svn/entries index a965507..a965507 100755 --- a/arduino_libs/SerialManager/.svn/entries +++ b/arduino_libs_0022/SerialManager/.svn/entries diff --git a/arduino_libs/SerialManager/.svn/text-base/SerialManager.cpp.svn-base b/arduino_libs_0022/SerialManager/.svn/text-base/SerialManager.cpp.svn-base index ed06dbc..ed06dbc 100755 --- a/arduino_libs/SerialManager/.svn/text-base/SerialManager.cpp.svn-base +++ b/arduino_libs_0022/SerialManager/.svn/text-base/SerialManager.cpp.svn-base diff --git a/arduino_libs/SerialManager/.svn/text-base/SerialManager.h.svn-base b/arduino_libs_0022/SerialManager/.svn/text-base/SerialManager.h.svn-base index dcbdba6..dcbdba6 100755 --- a/arduino_libs/SerialManager/.svn/text-base/SerialManager.h.svn-base +++ b/arduino_libs_0022/SerialManager/.svn/text-base/SerialManager.h.svn-base diff --git a/arduino_libs/SerialManager/SerialManager.cpp b/arduino_libs_0022/SerialManager/SerialManager.cpp index 2e2d306..2e2d306 100755 --- a/arduino_libs/SerialManager/SerialManager.cpp +++ b/arduino_libs_0022/SerialManager/SerialManager.cpp diff --git a/arduino_libs/SerialManager/SerialManager.h b/arduino_libs_0022/SerialManager/SerialManager.h index f1474c5..f1474c5 100755 --- a/arduino_libs/SerialManager/SerialManager.h +++ b/arduino_libs_0022/SerialManager/SerialManager.h diff --git a/arduino_libs_0022/Wire/Wire.cpp b/arduino_libs_0022/Wire/Wire.cpp new file mode 100644 index 0000000..849439b --- /dev/null +++ b/arduino_libs_0022/Wire/Wire.cpp @@ -0,0 +1,261 @@ +/* + TwoWire.cpp - TWI/I2C library for Wiring & Arduino + Copyright (c) 2006 Nicholas Zambetti. All right reserved. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +*/ + +extern "C" { + #include <stdlib.h> + #include <string.h> + #include <inttypes.h> + #include "twi.h" +} + +#include "Wire.h" + +// Initialize Class Variables ////////////////////////////////////////////////// + +uint8_t TwoWire::rxBuffer[BUFFER_LENGTH]; +uint8_t TwoWire::rxBufferIndex = 0; +uint8_t TwoWire::rxBufferLength = 0; + +uint8_t TwoWire::txAddress = 0; +uint8_t TwoWire::txBuffer[BUFFER_LENGTH]; +uint8_t TwoWire::txBufferIndex = 0; +uint8_t TwoWire::txBufferLength = 0; + +uint8_t TwoWire::transmitting = 0; +void (*TwoWire::user_onRequest)(void); +void (*TwoWire::user_onReceive)(int); + +// Constructors //////////////////////////////////////////////////////////////// + +TwoWire::TwoWire() +{ +} + +// Public Methods ////////////////////////////////////////////////////////////// + +void TwoWire::begin(void) +{ + rxBufferIndex = 0; + rxBufferLength = 0; + + txBufferIndex = 0; + txBufferLength = 0; + + twi_init(); +} + +void TwoWire::begin(uint8_t address) +{ + twi_setAddress(address); + twi_attachSlaveTxEvent(onRequestService); + twi_attachSlaveRxEvent(onReceiveService); + begin(); +} + +void TwoWire::begin(int address) +{ + begin((uint8_t)address); +} + +uint8_t TwoWire::requestFrom(uint8_t address, uint8_t quantity) +{ + // clamp to buffer length + if(quantity > BUFFER_LENGTH){ + quantity = BUFFER_LENGTH; + } + // perform blocking read into buffer + uint8_t read = twi_readFrom(address, rxBuffer, quantity); + // set rx buffer iterator vars + rxBufferIndex = 0; + rxBufferLength = read; + + return read; +} + +uint8_t TwoWire::requestFrom(int address, int quantity) +{ + return requestFrom((uint8_t)address, (uint8_t)quantity); +} + +void TwoWire::beginTransmission(uint8_t address) +{ + // indicate that we are transmitting + transmitting = 1; + // set address of targeted slave + txAddress = address; + // reset tx buffer iterator vars + txBufferIndex = 0; + txBufferLength = 0; +} + +void TwoWire::beginTransmission(int address) +{ + beginTransmission((uint8_t)address); +} + +uint8_t TwoWire::endTransmission(void) +{ + // transmit buffer (blocking) + int8_t ret = twi_writeTo(txAddress, txBuffer, txBufferLength, 1); + // reset tx buffer iterator vars + txBufferIndex = 0; + txBufferLength = 0; + // indicate that we are done transmitting + transmitting = 0; + return ret; +} + +// must be called in: +// slave tx event callback +// or after beginTransmission(address) +void TwoWire::send(uint8_t data) +{ + if(transmitting){ + // in master transmitter mode + // don't bother if buffer is full + if(txBufferLength >= BUFFER_LENGTH){ + return; + } + // put byte in tx buffer + txBuffer[txBufferIndex] = data; + ++txBufferIndex; + // update amount in buffer + txBufferLength = txBufferIndex; + }else{ + // in slave send mode + // reply to master + twi_transmit(&data, 1); + } +} + +// must be called in: +// slave tx event callback +// or after beginTransmission(address) +void TwoWire::send(uint8_t* data, uint8_t quantity) +{ + if(transmitting){ + // in master transmitter mode + for(uint8_t i = 0; i < quantity; ++i){ + send(data[i]); + } + }else{ + // in slave send mode + // reply to master + twi_transmit(data, quantity); + } +} + +// must be called in: +// slave tx event callback +// or after beginTransmission(address) +void TwoWire::send(char* data) +{ + send((uint8_t*)data, strlen(data)); +} + +// must be called in: +// slave tx event callback +// or after beginTransmission(address) +void TwoWire::send(int data) +{ + send((uint8_t)data); +} + +// must be called in: +// slave rx event callback +// or after requestFrom(address, numBytes) +uint8_t TwoWire::available(void) +{ + return rxBufferLength - rxBufferIndex; +} + +// must be called in: +// slave rx event callback +// or after requestFrom(address, numBytes) +uint8_t TwoWire::receive(void) +{ + // default to returning null char + // for people using with char strings + uint8_t value = '\0'; + + // get each successive byte on each call + if(rxBufferIndex < rxBufferLength){ + value = rxBuffer[rxBufferIndex]; + ++rxBufferIndex; + } + + return value; +} + +// behind the scenes function that is called when data is received +void TwoWire::onReceiveService(uint8_t* inBytes, int numBytes) +{ + // don't bother if user hasn't registered a callback + if(!user_onReceive){ + return; + } + // don't bother if rx buffer is in use by a master requestFrom() op + // i know this drops data, but it allows for slight stupidity + // meaning, they may not have read all the master requestFrom() data yet + if(rxBufferIndex < rxBufferLength){ + return; + } + // copy twi rx buffer into local read buffer + // this enables new reads to happen in parallel + for(uint8_t i = 0; i < numBytes; ++i){ + rxBuffer[i] = inBytes[i]; + } + // set rx iterator vars + rxBufferIndex = 0; + rxBufferLength = numBytes; + // alert user program + user_onReceive(numBytes); +} + +// behind the scenes function that is called when data is requested +void TwoWire::onRequestService(void) +{ + // don't bother if user hasn't registered a callback + if(!user_onRequest){ + return; + } + // reset tx buffer iterator vars + // !!! this will kill any pending pre-master sendTo() activity + txBufferIndex = 0; + txBufferLength = 0; + // alert user program + user_onRequest(); +} + +// sets function called on slave write +void TwoWire::onReceive( void (*function)(int) ) +{ + user_onReceive = function; +} + +// sets function called on slave read +void TwoWire::onRequest( void (*function)(void) ) +{ + user_onRequest = function; +} + +// Preinstantiate Objects ////////////////////////////////////////////////////// + +TwoWire Wire = TwoWire(); + diff --git a/arduino_libs_0022/Wire/Wire.h b/arduino_libs_0022/Wire/Wire.h new file mode 100644 index 0000000..a6c29c4 --- /dev/null +++ b/arduino_libs_0022/Wire/Wire.h @@ -0,0 +1,67 @@ +/* + TwoWire.h - TWI/I2C library for Arduino & Wiring + Copyright (c) 2006 Nicholas Zambetti. All right reserved. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +*/ + +#ifndef TwoWire_h +#define TwoWire_h + +#include <inttypes.h> + +#define BUFFER_LENGTH 32 + +class TwoWire +{ + private: + static uint8_t rxBuffer[]; + static uint8_t rxBufferIndex; + static uint8_t rxBufferLength; + + static uint8_t txAddress; + static uint8_t txBuffer[]; + static uint8_t txBufferIndex; + static uint8_t txBufferLength; + + static uint8_t transmitting; + static void (*user_onRequest)(void); + static void (*user_onReceive)(int); + static void onRequestService(void); + static void onReceiveService(uint8_t*, int); + public: + TwoWire(); + void begin(); + void begin(uint8_t); + void begin(int); + void beginTransmission(uint8_t); + void beginTransmission(int); + uint8_t endTransmission(void); + uint8_t requestFrom(uint8_t, uint8_t); + uint8_t requestFrom(int, int); + void send(uint8_t); + void send(uint8_t*, uint8_t); + void send(int); + void send(char*); + uint8_t available(void); + uint8_t receive(void); + void onReceive( void (*)(int) ); + void onRequest( void (*)(void) ); +}; + +extern TwoWire Wire; + +#endif + diff --git a/arduino_libs_0022/Wire/keywords.txt b/arduino_libs_0022/Wire/keywords.txt new file mode 100644 index 0000000..12f129b --- /dev/null +++ b/arduino_libs_0022/Wire/keywords.txt @@ -0,0 +1,31 @@ +####################################### +# Syntax Coloring Map For Wire +####################################### + +####################################### +# Datatypes (KEYWORD1) +####################################### + +####################################### +# Methods and Functions (KEYWORD2) +####################################### + +begin KEYWORD2 +beginTransmission KEYWORD2 +endTransmission KEYWORD2 +requestFrom KEYWORD2 +send KEYWORD2 +receive KEYWORD2 +onReceive KEYWORD2 +onRequest KEYWORD2 + +####################################### +# Instances (KEYWORD2) +####################################### + +Wire KEYWORD2 + +####################################### +# Constants (LITERAL1) +####################################### + diff --git a/arduino_libs_0022/Wire/utility/twi.c b/arduino_libs_0022/Wire/utility/twi.c new file mode 100644 index 0000000..236878c --- /dev/null +++ b/arduino_libs_0022/Wire/utility/twi.c @@ -0,0 +1,476 @@ +/* + twi.c - TWI/I2C library for Wiring & Arduino + Copyright (c) 2006 Nicholas Zambetti. All right reserved. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +*/ + +#include <math.h> +#include <stdlib.h> +#include <inttypes.h> +#include <avr/io.h> +#include <avr/interrupt.h> +#include <compat/twi.h> + +#ifndef cbi +#define cbi(sfr, bit) (_SFR_BYTE(sfr) &= ~_BV(bit)) +#endif + +#ifndef sbi +#define sbi(sfr, bit) (_SFR_BYTE(sfr) |= _BV(bit)) +#endif + +#include "twi.h" + +static volatile uint8_t twi_state; +static uint8_t twi_slarw; + +static void (*twi_onSlaveTransmit)(void); +static void (*twi_onSlaveReceive)(uint8_t*, int); + +static uint8_t twi_masterBuffer[TWI_BUFFER_LENGTH]; +static volatile uint8_t twi_masterBufferIndex; +static uint8_t twi_masterBufferLength; + +static uint8_t twi_txBuffer[TWI_BUFFER_LENGTH]; +static volatile uint8_t twi_txBufferIndex; +static volatile uint8_t twi_txBufferLength; + +static uint8_t twi_rxBuffer[TWI_BUFFER_LENGTH]; +static volatile uint8_t twi_rxBufferIndex; + +static volatile uint8_t twi_error; + +/* + * Function twi_init + * Desc readys twi pins and sets twi bitrate + * Input none + * Output none + */ +void twi_init(void) +{ + // initialize state + twi_state = TWI_READY; + + #if defined(__AVR_ATmega168__) || defined(__AVR_ATmega8__) || defined(__AVR_ATmega328P__) + // activate internal pull-ups for twi + // as per note from atmega8 manual pg167 + sbi(PORTC, 4); + sbi(PORTC, 5); + #else + // activate internal pull-ups for twi + // as per note from atmega128 manual pg204 + sbi(PORTD, 0); + sbi(PORTD, 1); + #endif + + // initialize twi prescaler and bit rate + cbi(TWSR, TWPS0); + cbi(TWSR, TWPS1); + TWBR = ((CPU_FREQ / TWI_FREQ) - 16) / 2; + + /* twi bit rate formula from atmega128 manual pg 204 + SCL Frequency = CPU Clock Frequency / (16 + (2 * TWBR)) + note: TWBR should be 10 or higher for master mode + It is 72 for a 16mhz Wiring board with 100kHz TWI */ + + // enable twi module, acks, and twi interrupt + TWCR = _BV(TWEN) | _BV(TWIE) | _BV(TWEA); +} + +/* + * Function twi_slaveInit + * Desc sets slave address and enables interrupt + * Input none + * Output none + */ +void twi_setAddress(uint8_t address) +{ + // set twi slave address (skip over TWGCE bit) + TWAR = address << 1; +} + +/* + * Function twi_readFrom + * Desc attempts to become twi bus master and read a + * series of bytes from a device on the bus + * Input address: 7bit i2c device address + * data: pointer to byte array + * length: number of bytes to read into array + * Output number of bytes read + */ +uint8_t twi_readFrom(uint8_t address, uint8_t* data, uint8_t length) +{ + uint8_t i; + + // ensure data will fit into buffer + if(TWI_BUFFER_LENGTH < length){ + return 0; + } + + // wait until twi is ready, become master receiver + while(TWI_READY != twi_state){ + continue; + } + twi_state = TWI_MRX; + // reset error state (0xFF.. no error occured) + twi_error = 0xFF; + + // initialize buffer iteration vars + twi_masterBufferIndex = 0; + twi_masterBufferLength = length-1; // This is not intuitive, read on... + // On receive, the previously configured ACK/NACK setting is transmitted in + // response to the received byte before the interrupt is signalled. + // Therefor we must actually set NACK when the _next_ to last byte is + // received, causing that NACK to be sent in response to receiving the last + // expected byte of data. + + // build sla+w, slave device address + w bit + twi_slarw = TW_READ; + twi_slarw |= address << 1; + + // send start condition + TWCR = _BV(TWEN) | _BV(TWIE) | _BV(TWEA) | _BV(TWINT) | _BV(TWSTA); + + // wait for read operation to complete + while(TWI_MRX == twi_state){ + continue; + } + + if (twi_masterBufferIndex < length) + length = twi_masterBufferIndex; + + // copy twi buffer to data + for(i = 0; i < length; ++i){ + data[i] = twi_masterBuffer[i]; + } + + return length; +} + +/* + * Function twi_writeTo + * Desc attempts to become twi bus master and write a + * series of bytes to a device on the bus + * Input address: 7bit i2c device address + * data: pointer to byte array + * length: number of bytes in array + * wait: boolean indicating to wait for write or not + * Output 0 .. success + * 1 .. length to long for buffer + * 2 .. address send, NACK received + * 3 .. data send, NACK received + * 4 .. other twi error (lost bus arbitration, bus error, ..) + */ +uint8_t twi_writeTo(uint8_t address, uint8_t* data, uint8_t length, uint8_t wait) +{ + uint8_t i; + + // ensure data will fit into buffer + if(TWI_BUFFER_LENGTH < length){ + return 1; + } + + // wait until twi is ready, become master transmitter + while(TWI_READY != twi_state){ + continue; + } + twi_state = TWI_MTX; + // reset error state (0xFF.. no error occured) + twi_error = 0xFF; + + // initialize buffer iteration vars + twi_masterBufferIndex = 0; + twi_masterBufferLength = length; + + // copy data to twi buffer + for(i = 0; i < length; ++i){ + twi_masterBuffer[i] = data[i]; + } + + // build sla+w, slave device address + w bit + twi_slarw = TW_WRITE; + twi_slarw |= address << 1; + + // send start condition + TWCR = _BV(TWEN) | _BV(TWIE) | _BV(TWEA) | _BV(TWINT) | _BV(TWSTA); + + // wait for write operation to complete + while(wait && (TWI_MTX == twi_state)){ + continue; + } + + if (twi_error == 0xFF) + return 0; // success + else if (twi_error == TW_MT_SLA_NACK) + return 2; // error: address send, nack received + else if (twi_error == TW_MT_DATA_NACK) + return 3; // error: data send, nack received + else + return 4; // other twi error +} + +/* + * Function twi_transmit + * Desc fills slave tx buffer with data + * must be called in slave tx event callback + * Input data: pointer to byte array + * length: number of bytes in array + * Output 1 length too long for buffer + * 2 not slave transmitter + * 0 ok + */ +uint8_t twi_transmit(uint8_t* data, uint8_t length) +{ + uint8_t i; + + // ensure data will fit into buffer + if(TWI_BUFFER_LENGTH < length){ + return 1; + } + + // ensure we are currently a slave transmitter + if(TWI_STX != twi_state){ + return 2; + } + + // set length and copy data into tx buffer + twi_txBufferLength = length; + for(i = 0; i < length; ++i){ + twi_txBuffer[i] = data[i]; + } + + return 0; +} + +/* + * Function twi_attachSlaveRxEvent + * Desc sets function called before a slave read operation + * Input function: callback function to use + * Output none + */ +void twi_attachSlaveRxEvent( void (*function)(uint8_t*, int) ) +{ + twi_onSlaveReceive = function; +} + +/* + * Function twi_attachSlaveTxEvent + * Desc sets function called before a slave write operation + * Input function: callback function to use + * Output none + */ +void twi_attachSlaveTxEvent( void (*function)(void) ) +{ + twi_onSlaveTransmit = function; +} + +/* + * Function twi_reply + * Desc sends byte or readys receive line + * Input ack: byte indicating to ack or to nack + * Output none + */ +void twi_reply(uint8_t ack) +{ + // transmit master read ready signal, with or without ack + if(ack){ + TWCR = _BV(TWEN) | _BV(TWIE) | _BV(TWINT) | _BV(TWEA); + }else{ + TWCR = _BV(TWEN) | _BV(TWIE) | _BV(TWINT); + } +} + +/* + * Function twi_stop + * Desc relinquishes bus master status + * Input none + * Output none + */ +void twi_stop(void) +{ + // send stop condition + TWCR = _BV(TWEN) | _BV(TWIE) | _BV(TWEA) | _BV(TWINT) | _BV(TWSTO); + + // wait for stop condition to be exectued on bus + // TWINT is not set after a stop condition! + while(TWCR & _BV(TWSTO)){ + continue; + } + + // update twi state + twi_state = TWI_READY; +} + +/* + * Function twi_releaseBus + * Desc releases bus control + * Input none + * Output none + */ +void twi_releaseBus(void) +{ + // release bus + TWCR = _BV(TWEN) | _BV(TWIE) | _BV(TWEA) | _BV(TWINT); + + // update twi state + twi_state = TWI_READY; +} + +SIGNAL(TWI_vect) +{ + switch(TW_STATUS){ + // All Master + case TW_START: // sent start condition + case TW_REP_START: // sent repeated start condition + // copy device address and r/w bit to output register and ack + TWDR = twi_slarw; + twi_reply(1); + break; + + // Master Transmitter + case TW_MT_SLA_ACK: // slave receiver acked address + case TW_MT_DATA_ACK: // slave receiver acked data + // if there is data to send, send it, otherwise stop + if(twi_masterBufferIndex < twi_masterBufferLength){ + // copy data to output register and ack + TWDR = twi_masterBuffer[twi_masterBufferIndex++]; + twi_reply(1); + }else{ + twi_stop(); + } + break; + case TW_MT_SLA_NACK: // address sent, nack received + twi_error = TW_MT_SLA_NACK; + twi_stop(); + break; + case TW_MT_DATA_NACK: // data sent, nack received + twi_error = TW_MT_DATA_NACK; + twi_stop(); + break; + case TW_MT_ARB_LOST: // lost bus arbitration + twi_error = TW_MT_ARB_LOST; + twi_releaseBus(); + break; + + // Master Receiver + case TW_MR_DATA_ACK: // data received, ack sent + // put byte into buffer + twi_masterBuffer[twi_masterBufferIndex++] = TWDR; + case TW_MR_SLA_ACK: // address sent, ack received + // ack if more bytes are expected, otherwise nack + if(twi_masterBufferIndex < twi_masterBufferLength){ + twi_reply(1); + }else{ + twi_reply(0); + } + break; + case TW_MR_DATA_NACK: // data received, nack sent + // put final byte into buffer + twi_masterBuffer[twi_masterBufferIndex++] = TWDR; + case TW_MR_SLA_NACK: // address sent, nack received + twi_stop(); + break; + // TW_MR_ARB_LOST handled by TW_MT_ARB_LOST case + + // Slave Receiver + case TW_SR_SLA_ACK: // addressed, returned ack + case TW_SR_GCALL_ACK: // addressed generally, returned ack + case TW_SR_ARB_LOST_SLA_ACK: // lost arbitration, returned ack + case TW_SR_ARB_LOST_GCALL_ACK: // lost arbitration, returned ack + // enter slave receiver mode + twi_state = TWI_SRX; + // indicate that rx buffer can be overwritten and ack + twi_rxBufferIndex = 0; + twi_reply(1); + break; + case TW_SR_DATA_ACK: // data received, returned ack + case TW_SR_GCALL_DATA_ACK: // data received generally, returned ack + // if there is still room in the rx buffer + if(twi_rxBufferIndex < TWI_BUFFER_LENGTH){ + // put byte in buffer and ack + twi_rxBuffer[twi_rxBufferIndex++] = TWDR; + twi_reply(1); + }else{ + // otherwise nack + twi_reply(0); + } + break; + case TW_SR_STOP: // stop or repeated start condition received + // put a null char after data if there's room + if(twi_rxBufferIndex < TWI_BUFFER_LENGTH){ + twi_rxBuffer[twi_rxBufferIndex] = '\0'; + } + // sends ack and stops interface for clock stretching + twi_stop(); + // callback to user defined callback + twi_onSlaveReceive(twi_rxBuffer, twi_rxBufferIndex); + // since we submit rx buffer to "wire" library, we can reset it + twi_rxBufferIndex = 0; + // ack future responses and leave slave receiver state + twi_releaseBus(); + break; + case TW_SR_DATA_NACK: // data received, returned nack + case TW_SR_GCALL_DATA_NACK: // data received generally, returned nack + // nack back at master + twi_reply(0); + break; + + // Slave Transmitter + case TW_ST_SLA_ACK: // addressed, returned ack + case TW_ST_ARB_LOST_SLA_ACK: // arbitration lost, returned ack + // enter slave transmitter mode + twi_state = TWI_STX; + // ready the tx buffer index for iteration + twi_txBufferIndex = 0; + // set tx buffer length to be zero, to verify if user changes it + twi_txBufferLength = 0; + // request for txBuffer to be filled and length to be set + // note: user must call twi_transmit(bytes, length) to do this + twi_onSlaveTransmit(); + // if they didn't change buffer & length, initialize it + if(0 == twi_txBufferLength){ + twi_txBufferLength = 1; + twi_txBuffer[0] = 0x00; + } + // transmit first byte from buffer, fall + case TW_ST_DATA_ACK: // byte sent, ack returned + // copy data to output register + TWDR = twi_txBuffer[twi_txBufferIndex++]; + // if there is more to send, ack, otherwise nack + if(twi_txBufferIndex < twi_txBufferLength){ + twi_reply(1); + }else{ + twi_reply(0); + } + break; + case TW_ST_DATA_NACK: // received nack, we are done + case TW_ST_LAST_DATA: // received ack, but we are done already! + // ack future responses + twi_reply(1); + // leave slave receiver state + twi_state = TWI_READY; + break; + + // All + case TW_NO_INFO: // no state information + break; + case TW_BUS_ERROR: // bus error, illegal stop/start + twi_error = TW_BUS_ERROR; + twi_stop(); + break; + } +} + diff --git a/arduino_libs_0022/Wire/utility/twi.h b/arduino_libs_0022/Wire/utility/twi.h new file mode 100644 index 0000000..1258d8d --- /dev/null +++ b/arduino_libs_0022/Wire/utility/twi.h @@ -0,0 +1,57 @@ +/* + twi.h - TWI/I2C library for Wiring & Arduino + Copyright (c) 2006 Nicholas Zambetti. All right reserved. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +*/ + +#ifndef twi_h +#define twi_h + + #include <inttypes.h> + + //#define ATMEGA8 + + #ifndef CPU_FREQ + #define CPU_FREQ 16000000L + #endif + + #ifndef TWI_FREQ + #define TWI_FREQ 100000L + #endif + + #ifndef TWI_BUFFER_LENGTH + #define TWI_BUFFER_LENGTH 32 + #endif + + #define TWI_READY 0 + #define TWI_MRX 1 + #define TWI_MTX 2 + #define TWI_SRX 3 + #define TWI_STX 4 + + void twi_init(void); + void twi_setAddress(uint8_t); + uint8_t twi_readFrom(uint8_t, uint8_t*, uint8_t); + uint8_t twi_writeTo(uint8_t, uint8_t*, uint8_t, uint8_t); + uint8_t twi_transmit(uint8_t*, uint8_t); + void twi_attachSlaveRxEvent( void (*)(uint8_t*, int) ); + void twi_attachSlaveTxEvent( void (*)(void) ); + void twi_reply(uint8_t); + void twi_stop(void); + void twi_releaseBus(void); + +#endif + diff --git a/arduino_libs/core0022_2560.a b/arduino_libs_0022/core0022_2560.a Binary files differindex 39936f0..39936f0 100644 --- a/arduino_libs/core0022_2560.a +++ b/arduino_libs_0022/core0022_2560.a diff --git a/arduino_libs/core0022_328p.a b/arduino_libs_0022/core0022_328p.a Binary files differindex 0141d8c..0141d8c 100644 --- a/arduino_libs/core0022_328p.a +++ b/arduino_libs_0022/core0022_328p.a diff --git a/arduino_libs_1_0/I2C/I2C.cpp b/arduino_libs_1_0/I2C/I2C.cpp new file mode 100644 index 0000000..ca08759 --- /dev/null +++ b/arduino_libs_1_0/I2C/I2C.cpp @@ -0,0 +1,744 @@ +/*
+ I2C.cpp - I2C library
+ Copyright (c) 2011-2012 Wayne Truchsess. All right reserved.
+ Rev 4.0 - January 14th, 2012
+ - Updated to make compatible with 8MHz clock frequency
+ Rev 3.0 - January 9th, 2012
+ - Modified library to be compatible with Arduino 1.0
+ - Changed argument type from boolean to uint8_t in pullUp(),
+ setSpeed() and receiveByte() functions for 1.0 compatability
+ - Modified return values for timeout feature to report
+ back where in the transmission the timeout occured.
+ - added function scan() to perform a bus scan to find devices
+ attached to the I2C bus. Similar to work done by Todbot
+ and Nick Gammon
+ Rev 2.0 - September 19th, 2011
+ - Added support for timeout function to prevent
+ and recover from bus lockup (thanks to PaulS
+ and CrossRoads on the Arduino forum)
+ - Changed return type for stop() from void to
+ uint8_t to handle timeOut function
+ Rev 1.0 - August 8th, 2011
+
+ This is a modified version of the Arduino Wire/TWI
+ library. Functions were rewritten to provide more functionality
+ and also the use of Repeated Start. Some I2C devices will not
+ function correctly without the use of a Repeated Start. The
+ initial version of this library only supports the Master.
+
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with this library; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+*/
+
+#if(ARDUINO >= 100)
+#include <Arduino.h>
+#else
+#include <WProgram.h>
+#endif
+
+#include <inttypes.h>
+#include "I2C.h"
+
+
+
+uint8_t I2C::bytesAvailable = 0;
+uint8_t I2C::bufferIndex = 0;
+uint8_t I2C::totalBytes = 0;
+uint16_t I2C::timeOutDelay = 0;
+
+I2C::I2C()
+{
+}
+
+
+////////////// Public Methods ////////////////////////////////////////
+
+
+
+void I2C::begin()
+{
+ #if defined(__AVR_ATmega168__) || defined(__AVR_ATmega8__) || defined(__AVR_ATmega328P__)
+ // activate internal pull-ups for twi
+ // as per note from atmega8 manual pg167
+ sbi(PORTC, 4);
+ sbi(PORTC, 5);
+ #else
+ // activate internal pull-ups for twi
+ // as per note from atmega128 manual pg204
+ sbi(PORTD, 0);
+ sbi(PORTD, 1);
+ #endif
+ // initialize twi prescaler and bit rate
+ cbi(TWSR, TWPS0);
+ cbi(TWSR, TWPS1);
+ TWBR = ((F_CPU / 100000) - 16) / 2;
+ // enable twi module, acks, and twi interrupt
+ TWCR = _BV(TWEN) | _BV(TWIE) | _BV(TWEA);
+}
+
+void I2C::end()
+{
+ TWCR = 0;
+}
+
+void I2C::timeOut(uint16_t _timeOut)
+{
+ timeOutDelay = _timeOut;
+}
+
+void I2C::setSpeed(uint8_t _fast)
+{
+ if(!_fast)
+ {
+ TWBR = ((F_CPU / 100000) - 16) / 2;
+ }
+ else
+ {
+ TWBR = ((F_CPU / 400000) - 16) / 2;
+ }
+}
+
+void I2C::pullup(uint8_t activate)
+{
+ if(activate)
+ {
+ #if defined(__AVR_ATmega168__) || defined(__AVR_ATmega8__) || defined(__AVR_ATmega328P__)
+ // activate internal pull-ups for twi
+ // as per note from atmega8 manual pg167
+ sbi(PORTC, 4);
+ sbi(PORTC, 5);
+ #else
+ // activate internal pull-ups for twi
+ // as per note from atmega128 manual pg204
+ sbi(PORTD, 0);
+ sbi(PORTD, 1);
+ #endif
+ }
+ else
+ {
+ #if defined(__AVR_ATmega168__) || defined(__AVR_ATmega8__) || defined(__AVR_ATmega328P__)
+ // deactivate internal pull-ups for twi
+ // as per note from atmega8 manual pg167
+ cbi(PORTC, 4);
+ cbi(PORTC, 5);
+ #else
+ // deactivate internal pull-ups for twi
+ // as per note from atmega128 manual pg204
+ cbi(PORTD, 0);
+ cbi(PORTD, 1);
+ #endif
+ }
+}
+
+void I2C::scan()
+{
+ timeOut(80);
+ uint8_t totalDevicesFound = 0;
+ Serial.println("Scanning for devices...please wait");
+ Serial.println();
+ for(uint8_t s = 8; s <= 0x77; s++)
+ {
+ returnStatus = 0;
+ returnStatus = start();
+ if(!returnStatus)
+ {
+ returnStatus = sendAddress(SLA_W(s));
+ }
+ if(returnStatus)
+ {
+ if(returnStatus == 1)
+ {
+ Serial.println("There is a problem with the bus, could not complete scan");
+ return;
+ }
+ }
+ else
+ {
+ Serial.print("Found device at address - ");
+ Serial.print(" 0x");
+ Serial.println(s,HEX);
+ totalDevicesFound++;
+ }
+ stop();
+ }
+ if(!totalDevicesFound){Serial.println("No devices found");}
+}
+
+
+
+
+/////////////carry over from Wire library ///////////
+
+uint8_t I2C::beginTransmission(uint8_t address)
+{
+ returnStatusWire = 0;
+ returnStatus = 0;
+ returnStatus = start();
+ returnStatusWire = returnStatus;
+ if(returnStatus){return(returnStatus);}
+ returnStatus = sendAddress(SLA_W(address));
+ returnStatusWire = returnStatus;
+ return(returnStatus);
+}
+
+uint8_t I2C::beginTransmission(int address)
+{
+ return(beginTransmission((uint8_t) address));
+}
+
+uint8_t I2C::send(uint8_t data)
+{
+ if(returnStatusWire)
+ {
+ return(returnStatusWire);
+ }
+ returnStatus = 0;
+ returnStatus = sendByte(data);
+ returnStatusWire = returnStatus;
+ return(returnStatus);
+}
+
+uint8_t I2C::send(int data)
+{
+ return(send((uint8_t) data));
+}
+
+uint8_t I2C::endTransmission()
+{
+ stop();
+ return(returnStatusWire);
+}
+
+uint8_t I2C::requestFrom(int address, int numberBytes)
+{
+ return(requestFrom((uint8_t) address, (uint8_t) numberBytes));
+}
+
+uint8_t I2C::requestFrom(uint8_t address, uint8_t numberBytes)
+{
+ returnStatus = 0;
+ returnStatus = read(address,numberBytes);
+ if(!returnStatus)
+ {
+ return(numberBytes);
+ }
+ return(0);
+}
+
+uint8_t I2C::available()
+{
+ return(bytesAvailable);
+}
+
+uint8_t I2C::receive()
+{
+ bufferIndex = totalBytes - bytesAvailable;
+ if(!bytesAvailable)
+ {
+ bufferIndex = 0;
+ return(0);
+ }
+ bytesAvailable--;
+ return(data[bufferIndex]);
+}
+
+
+/*return values for new functions that use the timeOut feature
+ will now return at what point in the transmission the timeout
+ occurred. Looking at a full communication sequence between a
+ master and slave (transmit data and then readback data) there
+ a total of 7 points in the sequence where a timeout can occur.
+ These are listed below and correspond to the returned value:
+ 1 - Waiting for successful completion of a Start bit
+ 2 - Waiting for ACK/NACK while addressing slave in transmit mode (MT)
+ 3 - Waiting for ACK/NACK while sending data to the slave
+ 4 - Waiting for successful completion of a Repeated Start
+ 5 - Waiting for ACK/NACK while addressing slave in receiver mode (MR)
+ 6 - Waiting for ACK/NACK while receiving data from the slave
+ 7 - Waiting for successful completion of the Stop bit
+
+ All possible return values:
+ 0: Function executed with no errors
+ 1 - 7: Timeout occurred, see above list
+ 8 - 0xFF See datasheet for exact meaning */
+
+
+/////////////////////////////////////////////////////
+
+uint8_t I2C::write(uint8_t address, uint8_t registerAddress)
+{
+ returnStatus = 0;
+ returnStatus = start();
+ if(returnStatus){return(returnStatus);}
+ returnStatus = sendAddress(SLA_W(address));
+ if(returnStatus)
+ {
+ if(returnStatus == 1){return(2);}
+ return(returnStatus);
+ }
+ returnStatus = sendByte(registerAddress);
+ if(returnStatus)
+ {
+ if(returnStatus == 1){return(3);}
+ return(returnStatus);
+ }
+ returnStatus = stop();
+ if(returnStatus)
+ {
+ if(returnStatus == 1){return(7);}
+ return(returnStatus);
+ }
+ return(returnStatus);
+}
+
+uint8_t I2C::write(int address, int registerAddress)
+{
+ return(write((uint8_t) address, (uint8_t) registerAddress));
+}
+
+uint8_t I2C::write(uint8_t address, uint8_t registerAddress, uint8_t data)
+{
+ returnStatus = 0;
+ returnStatus = start();
+ if(returnStatus){return(returnStatus);}
+ returnStatus = sendAddress(SLA_W(address));
+ if(returnStatus)
+ {
+ if(returnStatus == 1){return(2);}
+ return(returnStatus);
+ }
+ returnStatus = sendByte(registerAddress);
+ if(returnStatus)
+ {
+ if(returnStatus == 1){return(3);}
+ return(returnStatus);
+ }
+ returnStatus = sendByte(data);
+ if(returnStatus)
+ {
+ if(returnStatus == 1){return(3);}
+ return(returnStatus);
+ }
+ returnStatus = stop();
+ if(returnStatus)
+ {
+ if(returnStatus == 1){return(7);}
+ return(returnStatus);
+ }
+ return(returnStatus);
+}
+
+uint8_t I2C::write(int address, int registerAddress, int data)
+{
+ return(write((uint8_t) address, (uint8_t) registerAddress, (uint8_t) data));
+}
+
+uint8_t I2C::write(uint8_t address, uint8_t registerAddress, char *data)
+{
+ uint8_t bufferLength = strlen(data);
+ returnStatus = 0;
+ returnStatus = write(address, registerAddress, (uint8_t*)data, bufferLength);
+ return(returnStatus);
+}
+
+uint8_t I2C::write(uint8_t address, uint8_t registerAddress, uint8_t *data, uint8_t numberBytes)
+{
+ returnStatus = 0;
+ returnStatus = start();
+ if(returnStatus){return(returnStatus);}
+ returnStatus = sendAddress(SLA_W(address));
+ if(returnStatus)
+ {
+ if(returnStatus == 1){return(2);}
+ return(returnStatus);
+ }
+ returnStatus = sendByte(registerAddress);
+ if(returnStatus)
+ {
+ if(returnStatus == 1){return(3);}
+ return(returnStatus);
+ }
+ for (uint8_t i = 0; i < numberBytes; i++)
+ {
+ returnStatus = sendByte(data[i]);
+ if(returnStatus)
+ {
+ if(returnStatus == 1){return(3);}
+ return(returnStatus);
+ }
+ }
+ returnStatus = stop();
+ if(returnStatus)
+ {
+ if(returnStatus == 1){return(7);}
+ return(returnStatus);
+ }
+ return(returnStatus);
+}
+
+uint8_t I2C::read(int address, int numberBytes)
+{
+ return(read((uint8_t) address, (uint8_t) numberBytes));
+}
+
+uint8_t I2C::read(uint8_t address, uint8_t numberBytes)
+{
+ bytesAvailable = 0;
+ bufferIndex = 0;
+ if(numberBytes == 0){numberBytes++;}
+ nack = numberBytes - 1;
+ returnStatus = 0;
+ returnStatus = start();
+ if(returnStatus){return(returnStatus);}
+ returnStatus = sendAddress(SLA_R(address));
+ if(returnStatus)
+ {
+ if(returnStatus == 1){return(5);}
+ return(returnStatus);
+ }
+ for(uint8_t i = 0; i < numberBytes; i++)
+ {
+ if( i == nack )
+ {
+ returnStatus = receiveByte(0);
+ if(returnStatus == 1){return(6);}
+
+ if(returnStatus != MR_DATA_NACK){return(returnStatus);}
+ }
+ else
+ {
+ returnStatus = receiveByte(1);
+ if(returnStatus == 1){return(6);}
+ if(returnStatus != MR_DATA_ACK){return(returnStatus);}
+ }
+ data[i] = TWDR;
+ bytesAvailable = i+1;
+ totalBytes = i+1;
+ }
+ returnStatus = stop();
+ if(returnStatus)
+ {
+ if(returnStatus == 1){return(7);}
+ return(returnStatus);
+ }
+ return(returnStatus);
+}
+
+uint8_t I2C::read(int address, int registerAddress, int numberBytes)
+{
+ return(read((uint8_t) address, (uint8_t) registerAddress, (uint8_t) numberBytes));
+}
+
+uint8_t I2C::read(uint8_t address, uint8_t registerAddress, uint8_t numberBytes)
+{
+ bytesAvailable = 0;
+ bufferIndex = 0;
+ if(numberBytes == 0){numberBytes++;}
+ nack = numberBytes - 1;
+ returnStatus = 0;
+ returnStatus = start();
+ if(returnStatus){return(returnStatus);}
+ returnStatus = sendAddress(SLA_W(address));
+ if(returnStatus)
+ {
+ if(returnStatus == 1){return(2);}
+ return(returnStatus);
+ }
+ returnStatus = sendByte(registerAddress);
+ if(returnStatus)
+ {
+ if(returnStatus == 1){return(3);}
+ return(returnStatus);
+ }
+ returnStatus = start();
+ if(returnStatus)
+ {
+ if(returnStatus == 1){return(4);}
+ return(returnStatus);
+ }
+ returnStatus = sendAddress(SLA_R(address));
+ if(returnStatus)
+ {
+ if(returnStatus == 1){return(5);}
+ return(returnStatus);
+ }
+ for(uint8_t i = 0; i < numberBytes; i++)
+ {
+ if( i == nack )
+ {
+ returnStatus = receiveByte(0);
+ if(returnStatus == 1){return(6);}
+ if(returnStatus != MR_DATA_NACK){return(returnStatus);}
+ }
+ else
+ {
+ returnStatus = receiveByte(1);
+ if(returnStatus == 1){return(6);}
+ if(returnStatus != MR_DATA_ACK){return(returnStatus);}
+ }
+ data[i] = TWDR;
+ bytesAvailable = i+1;
+ totalBytes = i+1;
+ }
+ returnStatus = stop();
+ if(returnStatus)
+ {
+ if(returnStatus == 1){return(7);}
+ return(returnStatus);
+ }
+ return(returnStatus);
+}
+
+uint8_t I2C::read(uint8_t address, uint8_t numberBytes, uint8_t *dataBuffer)
+{
+ bytesAvailable = 0;
+ bufferIndex = 0;
+ if(numberBytes == 0){numberBytes++;}
+ nack = numberBytes - 1;
+ returnStatus = 0;
+ returnStatus = start();
+ if(returnStatus){return(returnStatus);}
+ returnStatus = sendAddress(SLA_R(address));
+ if(returnStatus)
+ {
+ if(returnStatus == 1){return(5);}
+ return(returnStatus);
+ }
+ for(uint8_t i = 0; i < numberBytes; i++)
+ {
+ if( i == nack )
+ {
+ returnStatus = receiveByte(0);
+ if(returnStatus == 1){return(6);}
+ if(returnStatus != MR_DATA_NACK){return(returnStatus);}
+ }
+ else
+ {
+ returnStatus = receiveByte(1);
+ if(returnStatus == 1){return(6);}
+ if(returnStatus != MR_DATA_ACK){return(returnStatus);}
+ }
+ dataBuffer[i] = TWDR;
+ bytesAvailable = i+1;
+ totalBytes = i+1;
+ }
+ returnStatus = stop();
+ if(returnStatus)
+ {
+ if(returnStatus == 1){return(7);}
+ return(returnStatus);
+ }
+ return(returnStatus);
+}
+
+uint8_t I2C::read(uint8_t address, uint8_t registerAddress, uint8_t numberBytes, uint8_t *dataBuffer)
+{
+ bytesAvailable = 0;
+ bufferIndex = 0;
+ if(numberBytes == 0){numberBytes++;}
+ nack = numberBytes - 1;
+ returnStatus = 0;
+ returnStatus = start();
+ if(returnStatus){return(returnStatus);}
+ returnStatus = sendAddress(SLA_W(address));
+ if(returnStatus)
+ {
+ if(returnStatus == 1){return(2);}
+ return(returnStatus);
+ }
+ returnStatus = sendByte(registerAddress);
+ if(returnStatus)
+ {
+ if(returnStatus == 1){return(3);}
+ return(returnStatus);
+ }
+ returnStatus = start();
+ if(returnStatus)
+ {
+ if(returnStatus == 1){return(4);}
+ return(returnStatus);
+ }
+ returnStatus = sendAddress(SLA_R(address));
+ if(returnStatus)
+ {
+ if(returnStatus == 1){return(5);}
+ return(returnStatus);
+ }
+ for(uint8_t i = 0; i < numberBytes; i++)
+ {
+ if( i == nack )
+ {
+ returnStatus = receiveByte(0);
+ if(returnStatus == 1){return(6);}
+ if(returnStatus != MR_DATA_NACK){return(returnStatus);}
+ }
+ else
+ {
+ returnStatus = receiveByte(1);
+ if(returnStatus == 1){return(6);}
+ if(returnStatus != MR_DATA_ACK){return(returnStatus);}
+ }
+ dataBuffer[i] = TWDR;
+ bytesAvailable = i+1;
+ totalBytes = i+1;
+ }
+ returnStatus = stop();
+ if(returnStatus)
+ {
+ if(returnStatus == 1){return(7);}
+ return(returnStatus);
+ }
+ return(returnStatus);
+}
+
+
+/////////////// Private Methods ////////////////////////////////////////
+
+
+uint8_t I2C::start()
+{
+ unsigned long startingTime = millis();
+ TWCR = (1<<TWINT)|(1<<TWSTA)|(1<<TWEN);
+ while (!(TWCR & (1<<TWINT)))
+ {
+ if(!timeOutDelay){continue;}
+ if((millis() - startingTime) >= timeOutDelay)
+ {
+ lockUp();
+ return(1);
+ }
+
+ }
+ if ((TWI_STATUS == START) || (TWI_STATUS == REPEATED_START))
+ {
+ return(0);
+ }
+ return(TWI_STATUS);
+}
+
+uint8_t I2C::sendAddress(uint8_t i2cAddress)
+{
+ TWDR = i2cAddress;
+ unsigned long startingTime = millis();
+ TWCR = (1<<TWINT) | (1<<TWEN);
+ while (!(TWCR & (1<<TWINT)))
+ {
+ if(!timeOutDelay){continue;}
+ if((millis() - startingTime) >= timeOutDelay)
+ {
+ lockUp();
+ return(1);
+ }
+
+ }
+ if ((TWI_STATUS == MT_SLA_ACK) || (TWI_STATUS == MR_SLA_ACK))
+ {
+ return(0);
+ }
+ return(TWI_STATUS);
+}
+
+uint8_t I2C::sendByte(uint8_t i2cData)
+{
+ TWDR = i2cData;
+ unsigned long startingTime = millis();
+ TWCR = (1<<TWINT) | (1<<TWEN);
+ while (!(TWCR & (1<<TWINT)))
+ {
+ if(!timeOutDelay){continue;}
+ if((millis() - startingTime) >= timeOutDelay)
+ {
+ lockUp();
+ return(1);
+ }
+
+ }
+ if (TWI_STATUS == MT_DATA_ACK)
+ {
+ return(0);
+ }
+ return(TWI_STATUS);
+}
+
+uint8_t I2C::receiveByte(uint8_t ack)
+{
+ unsigned long startingTime = millis();
+ if(ack)
+ {
+ TWCR = (1<<TWINT) | (1<<TWEN) | (1<<TWEA);
+
+ }
+ else
+ {
+ TWCR = (1<<TWINT) | (1<<TWEN);
+ }
+ while (!(TWCR & (1<<TWINT)))
+ {
+ if(!timeOutDelay){continue;}
+ if((millis() - startingTime) >= timeOutDelay)
+ {
+ lockUp();
+ return(1);
+ }
+
+ }
+ return(TWI_STATUS);
+}
+
+uint8_t I2C::stop()
+{
+ unsigned long startingTime = millis();
+ TWCR = (1<<TWINT)|(1<<TWEN)| (1<<TWSTO);
+ while ((TWCR & (1<<TWSTO)))
+ {
+ if(!timeOutDelay){continue;}
+ if((millis() - startingTime) >= timeOutDelay)
+ {
+ lockUp();
+ return(1);
+ }
+
+ }
+ return(0);
+}
+
+void I2C::lockUp()
+{
+ TWCR = 0; //releases SDA and SCL lines to high impedance
+ TWCR = _BV(TWEN) | _BV(TWIE) | _BV(TWEA); //reinitialize TWI
+}
+
+SIGNAL(TWI_vect)
+{
+ switch(TWI_STATUS){
+ case 0x20:
+ case 0x30:
+//break;
+ case 0x48:
+ TWCR = (1<<TWINT)|(1<<TWEN)| (1<<TWSTO); // send a stop
+ break;
+ case 0x38:
+ case 0x68:
+ case 0x78:
+ case 0xB0:
+ TWCR = 0; //releases SDA and SCL lines to high impedance
+ TWCR = _BV(TWEN) | _BV(TWIE) | _BV(TWEA); //reinitialize TWI
+ break;
+ }
+}
+
+
+I2C I2c = I2C();
+
diff --git a/arduino_libs_1_0/I2C/I2C.h b/arduino_libs_1_0/I2C/I2C.h new file mode 100644 index 0000000..988e773 --- /dev/null +++ b/arduino_libs_1_0/I2C/I2C.h @@ -0,0 +1,129 @@ +/*
+ I2C.cpp - I2C library
+ Copyright (c) 2011-2012 Wayne Truchsess. All right reserved.
+ Rev 4.0 - January 14th, 2012
+ - Updated to make compatible with 8MHz clock frequency
+ Rev 3.0 - January 9th, 2012
+ - Modified library to be compatible with Arduino 1.0
+ - Changed argument type from boolean to uint8_t in pullUp(),
+ setSpeed() and receiveByte() functions for 1.0 compatability
+ - Modified return values for timeout feature to report
+ back where in the transmission the timeout occured.
+ - added function scan() to perform a bus scan to find devices
+ attached to the I2C bus. Similar to work done by Todbot
+ and Nick Gammon
+ Rev 2.0 - September 19th, 2011
+ - Added support for timeout function to prevent
+ and recover from bus lockup (thanks to PaulS
+ and CrossRoads on the Arduino forum)
+ - Changed return type for stop() from void to
+ uint8_t to handle timeOut function
+ Rev 1.0 - August 8th, 2011
+
+ This is a modified version of the Arduino Wire/TWI
+ library. Functions were rewritten to provide more functionality
+ and also the use of Repeated Start. Some I2C devices will not
+ function correctly without the use of a Repeated Start. The
+ initial version of this library only supports the Master.
+
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with this library; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+*/
+
+#if(ARDUINO >= 100)
+#include <Arduino.h>
+#else
+#include <WProgram.h>
+#endif
+
+#include <inttypes.h>
+
+#ifndef I2C_h
+#define I2C_h
+
+
+#define START 0x08
+#define REPEATED_START 0x10
+#define MT_SLA_ACK 0x18
+#define MT_DATA_ACK 0x28
+#define MR_SLA_ACK 0x40
+#define MR_DATA_ACK 0x50
+#define MR_DATA_NACK 0x58
+#define TWI_STATUS (TWSR & 0xF8)
+#define SLA_W(address) (address << 1)
+#define SLA_R(address) ((address << 1) + 0x01)
+#define cbi(sfr, bit) (_SFR_BYTE(sfr) &= ~_BV(bit))
+#define sbi(sfr, bit) (_SFR_BYTE(sfr) |= _BV(bit))
+
+#define MAX_BUFFER_SIZE 32
+
+
+
+
+class I2C
+{
+ public:
+ I2C();
+ void begin();
+ void end();
+ void timeOut(uint16_t);
+ void setSpeed(uint8_t);
+ void pullup(uint8_t);
+ void scan();
+ ///////carry over from Wire library////////
+ uint8_t returnStatusWire;
+ uint8_t beginTransmission(uint8_t);
+ uint8_t beginTransmission(int);
+ uint8_t send(uint8_t);
+ uint8_t send(int);
+ uint8_t endTransmission();
+ uint8_t requestFrom(uint8_t, uint8_t);
+ uint8_t requestFrom(int, int);
+ uint8_t available();
+ ///////////////////////////////////////////
+ uint8_t write(uint8_t, uint8_t);
+ uint8_t write(int, int);
+ uint8_t write(uint8_t, uint8_t, uint8_t);
+ uint8_t write(int, int, int);
+ uint8_t write(uint8_t, uint8_t, char*);
+ uint8_t write(uint8_t, uint8_t, uint8_t*, uint8_t);
+ uint8_t read(uint8_t, uint8_t);
+ uint8_t read(int, int);
+ uint8_t read(uint8_t, uint8_t, uint8_t);
+ uint8_t read(int, int, int);
+ uint8_t read(uint8_t, uint8_t, uint8_t*);
+ uint8_t read(uint8_t, uint8_t, uint8_t, uint8_t*);
+ uint8_t receive();
+
+ private:
+ uint8_t start();
+ uint8_t sendAddress(uint8_t);
+ uint8_t sendByte(uint8_t);
+ uint8_t receiveByte(uint8_t);
+ uint8_t stop();
+ void lockUp();
+ uint8_t returnStatus;
+ uint8_t nack;
+ uint8_t data[MAX_BUFFER_SIZE];
+ static uint8_t bytesAvailable;
+ static uint8_t bufferIndex;
+ static uint8_t totalBytes;
+ static uint16_t timeOutDelay;
+
+};
+
+extern I2C I2c;
+
+#endif
diff --git a/arduino_libs_1_0/I2C/examples/HMC5883L/HMC5883L.pde b/arduino_libs_1_0/I2C/examples/HMC5883L/HMC5883L.pde new file mode 100644 index 0000000..806e749 --- /dev/null +++ b/arduino_libs_1_0/I2C/examples/HMC5883L/HMC5883L.pde @@ -0,0 +1,70 @@ +/******************************************* + Sample sketch that configures an HMC5883L 3 axis + magnetometer to continuous mode and reads back + the three axis of data. + Code compiles to a size of 1500 bytes + Equivalent Wire Library code compiles to 2032 bytes + *******************************************/ + +#include <I2C.h> + +#define HMC5883L 0x1E + +int x = 0; +int y = 0; +int z = 0; + + +void setup() +{ + I2c.begin(); + I2c.write(HMC5883L,0x02,0x00); //configure device for continuous mode +} + +void loop() +{ + I2c.read(HMC5883L,0x03,6); //read 6 bytes (x,y,z) from the device + x = I2c.receive() << 8; + x |= I2c.receive(); + y = I2c.receive() << 8; + y |= I2c.receive(); + z = I2c.receive() << 8; + z |= I2c.receive(); +} + + +/* Wire library equivalent would be this + +//#include <Wire.h> + +#define HMC5883L 0x1E + +int x = 0; +int y = 0; +int z = 0; + + +void setup() +{ + Wire.begin(); + Wire.beginTransmission(HMC5883L); + Wire.send(0x02); + Wire.send(0x00); + Wire.endTransmission(); +} + +void loop() +{ + Wire.beginTransmission(HMC5883L); + Wire.send(0x03); + Wire.endTransmission(); + Wire.requestFrom(HMC5883L,6); + x = Wire.receive() << 8; + x |= Wire.receive(); + y = Wire.receive() << 8; + y |= Wire.receive(); + z = Wire.receive() << 8; + z |= Wire.receive(); +} + +********************************************/
diff --git a/arduino_libs_1_0/I2C/keywords.txt b/arduino_libs_1_0/I2C/keywords.txt new file mode 100644 index 0000000..5482799 --- /dev/null +++ b/arduino_libs_1_0/I2C/keywords.txt @@ -0,0 +1,37 @@ +#######################################
+# Syntax Coloring Map For I2C
+#######################################
+
+#######################################
+# Datatypes (KEYWORD1)
+#######################################
+
+
+#######################################
+# Methods and Functions (KEYWORD2)
+#######################################
+
+begin KEYWORD2
+end KEYWORD2
+timeOut KEYWORD2
+setSpeed KEYWORD2
+pullup KEYWORD2
+scan KEYWORD2
+write KEYWORD2
+read KEYWORD2
+beginTransmission KEYWORD2
+send KEYWORD2
+endTransmission KEYWORD2
+requestFrom KEYWORD2
+available KEYWORD2
+receive KEYWORD2
+
+#######################################
+# Instances (KEYWORD2)
+#######################################
+
+I2c KEYWORD2
+
+#######################################
+# Constants (LITERAL1)
+#######################################
\ No newline at end of file diff --git a/arduino_libs_1_0/I2C/notes.txt b/arduino_libs_1_0/I2C/notes.txt new file mode 100644 index 0000000..83b61ac --- /dev/null +++ b/arduino_libs_1_0/I2C/notes.txt @@ -0,0 +1 @@ +http://dsscircuits.com/articles/arduino-i2c-master-library.html diff --git a/arduino_libs_1_0/Wire/Wire.cpp b/arduino_libs_1_0/Wire/Wire.cpp new file mode 100644 index 0000000..d83f478 --- /dev/null +++ b/arduino_libs_1_0/Wire/Wire.cpp @@ -0,0 +1,265 @@ +/* + TwoWire.cpp - TWI/I2C library for Wiring & Arduino + Copyright (c) 2006 Nicholas Zambetti. All right reserved. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +*/ + +extern "C" { + #include <stdlib.h> + #include <string.h> + #include <inttypes.h> + #include "twi.h" +} + +#include "Wire.h" + +// Initialize Class Variables ////////////////////////////////////////////////// + +uint8_t TwoWire::rxBuffer[BUFFER_LENGTH]; +uint8_t TwoWire::rxBufferIndex = 0; +uint8_t TwoWire::rxBufferLength = 0; + +uint8_t TwoWire::txAddress = 0; +uint8_t TwoWire::txBuffer[BUFFER_LENGTH]; +uint8_t TwoWire::txBufferIndex = 0; +uint8_t TwoWire::txBufferLength = 0; + +uint8_t TwoWire::transmitting = 0; +void (*TwoWire::user_onRequest)(void); +void (*TwoWire::user_onReceive)(int); + +// Constructors //////////////////////////////////////////////////////////////// + +TwoWire::TwoWire() +{ +} + +// Public Methods ////////////////////////////////////////////////////////////// + +void TwoWire::begin(void) +{ + rxBufferIndex = 0; + rxBufferLength = 0; + + txBufferIndex = 0; + txBufferLength = 0; + + twi_init(); +} + +void TwoWire::begin(uint8_t address) +{ + twi_setAddress(address); + twi_attachSlaveTxEvent(onRequestService); + twi_attachSlaveRxEvent(onReceiveService); + begin(); +} + +void TwoWire::begin(int address) +{ + begin((uint8_t)address); +} + +uint8_t TwoWire::requestFrom(uint8_t address, uint8_t quantity) +{ + // clamp to buffer length + if(quantity > BUFFER_LENGTH){ + quantity = BUFFER_LENGTH; + } + // perform blocking read into buffer + uint8_t read = twi_readFrom(address, rxBuffer, quantity); + // set rx buffer iterator vars + rxBufferIndex = 0; + rxBufferLength = read; + + return read; +} + +uint8_t TwoWire::requestFrom(int address, int quantity) +{ + return requestFrom((uint8_t)address, (uint8_t)quantity); +} + +void TwoWire::beginTransmission(uint8_t address) +{ + // indicate that we are transmitting + transmitting = 1; + // set address of targeted slave + txAddress = address; + // reset tx buffer iterator vars + txBufferIndex = 0; + txBufferLength = 0; +} + +void TwoWire::beginTransmission(int address) +{ + beginTransmission((uint8_t)address); +} + +uint8_t TwoWire::endTransmission(void) +{ + // transmit buffer (blocking) + int8_t ret = twi_writeTo(txAddress, txBuffer, txBufferLength, 1); + // reset tx buffer iterator vars + txBufferIndex = 0; + txBufferLength = 0; + // indicate that we are done transmitting + transmitting = 0; + return ret; +} + +// must be called in: +// slave tx event callback +// or after beginTransmission(address) +size_t TwoWire::write(uint8_t data) +{ + if(transmitting){ + // in master transmitter mode + // don't bother if buffer is full + if(txBufferLength >= BUFFER_LENGTH){ + setWriteError(); + return 0; + } + // put byte in tx buffer + txBuffer[txBufferIndex] = data; + ++txBufferIndex; + // update amount in buffer + txBufferLength = txBufferIndex; + }else{ + // in slave send mode + // reply to master + twi_transmit(&data, 1); + } + return 1; +} + +// must be called in: +// slave tx event callback +// or after beginTransmission(address) +size_t TwoWire::write(const uint8_t *data, size_t quantity) +{ + if(transmitting){ + // in master transmitter mode + for(size_t i = 0; i < quantity; ++i){ + write(data[i]); + } + }else{ + // in slave send mode + // reply to master + twi_transmit(data, quantity); + } + return quantity; +} + +// must be called in: +// slave rx event callback +// or after requestFrom(address, numBytes) +int TwoWire::available(void) +{ + return rxBufferLength - rxBufferIndex; +} + +// must be called in: +// slave rx event callback +// or after requestFrom(address, numBytes) +int TwoWire::read(void) +{ + int value = -1; + + // get each successive byte on each call + if(rxBufferIndex < rxBufferLength){ + value = rxBuffer[rxBufferIndex]; + ++rxBufferIndex; + } + + return value; +} + +// must be called in: +// slave rx event callback +// or after requestFrom(address, numBytes) +int TwoWire::peek(void) +{ + int value = -1; + + if(rxBufferIndex < rxBufferLength){ + value = rxBuffer[rxBufferIndex]; + } + + return value; +} + +void TwoWire::flush(void) +{ + // XXX: to be implemented. +} + +// behind the scenes function that is called when data is received +void TwoWire::onReceiveService(uint8_t* inBytes, int numBytes) +{ + // don't bother if user hasn't registered a callback + if(!user_onReceive){ + return; + } + // don't bother if rx buffer is in use by a master requestFrom() op + // i know this drops data, but it allows for slight stupidity + // meaning, they may not have read all the master requestFrom() data yet + if(rxBufferIndex < rxBufferLength){ + return; + } + // copy twi rx buffer into local read buffer + // this enables new reads to happen in parallel + for(uint8_t i = 0; i < numBytes; ++i){ + rxBuffer[i] = inBytes[i]; + } + // set rx iterator vars + rxBufferIndex = 0; + rxBufferLength = numBytes; + // alert user program + user_onReceive(numBytes); +} + +// behind the scenes function that is called when data is requested +void TwoWire::onRequestService(void) +{ + // don't bother if user hasn't registered a callback + if(!user_onRequest){ + return; + } + // reset tx buffer iterator vars + // !!! this will kill any pending pre-master sendTo() activity + txBufferIndex = 0; + txBufferLength = 0; + // alert user program + user_onRequest(); +} + +// sets function called on slave write +void TwoWire::onReceive( void (*function)(int) ) +{ + user_onReceive = function; +} + +// sets function called on slave read +void TwoWire::onRequest( void (*function)(void) ) +{ + user_onRequest = function; +} + +// Preinstantiate Objects ////////////////////////////////////////////////////// + +TwoWire Wire = TwoWire(); + diff --git a/arduino_libs_1_0/Wire/Wire.h b/arduino_libs_1_0/Wire/Wire.h new file mode 100644 index 0000000..23d466c --- /dev/null +++ b/arduino_libs_1_0/Wire/Wire.h @@ -0,0 +1,70 @@ +/* + TwoWire.h - TWI/I2C library for Arduino & Wiring + Copyright (c) 2006 Nicholas Zambetti. All right reserved. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +*/ + +#ifndef TwoWire_h +#define TwoWire_h + +#include <inttypes.h> +#include "Stream.h" + +#define BUFFER_LENGTH 32 + +class TwoWire : public Stream +{ + private: + static uint8_t rxBuffer[]; + static uint8_t rxBufferIndex; + static uint8_t rxBufferLength; + + static uint8_t txAddress; + static uint8_t txBuffer[]; + static uint8_t txBufferIndex; + static uint8_t txBufferLength; + + static uint8_t transmitting; + static void (*user_onRequest)(void); + static void (*user_onReceive)(int); + static void onRequestService(void); + static void onReceiveService(uint8_t*, int); + public: + TwoWire(); + void begin(); + void begin(uint8_t); + void begin(int); + void beginTransmission(uint8_t); + void beginTransmission(int); + uint8_t endTransmission(void); + uint8_t requestFrom(uint8_t, uint8_t); + uint8_t requestFrom(int, int); + virtual size_t write(uint8_t); + virtual size_t write(const uint8_t *, size_t); + virtual int available(void); + virtual int read(void); + virtual int peek(void); + virtual void flush(void); + void onReceive( void (*)(int) ); + void onRequest( void (*)(void) ); + + using Print::write; +}; + +extern TwoWire Wire; + +#endif + diff --git a/arduino_libs_1_0/Wire/examples/SFRRanger_reader/SFRRanger_reader.ino b/arduino_libs_1_0/Wire/examples/SFRRanger_reader/SFRRanger_reader.ino new file mode 100644 index 0000000..9c41c18 --- /dev/null +++ b/arduino_libs_1_0/Wire/examples/SFRRanger_reader/SFRRanger_reader.ino @@ -0,0 +1,87 @@ +// I2C SRF10 or SRF08 Devantech Ultrasonic Ranger Finder +// by Nicholas Zambetti <http://www.zambetti.com> +// and James Tichenor <http://www.jamestichenor.net> + +// Demonstrates use of the Wire library reading data from the +// Devantech Utrasonic Rangers SFR08 and SFR10 + +// Created 29 April 2006 + +// This example code is in the public domain. + + +#include <Wire.h> + +void setup() +{ + Wire.begin(); // join i2c bus (address optional for master) + Serial.begin(9600); // start serial communication at 9600bps +} + +int reading = 0; + +void loop() +{ + // step 1: instruct sensor to read echoes + Wire.beginTransmission(112); // transmit to device #112 (0x70) + // the address specified in the datasheet is 224 (0xE0) + // but i2c adressing uses the high 7 bits so it's 112 + Wire.write(byte(0x00)); // sets register pointer to the command register (0x00) + Wire.write(byte(0x50)); // command sensor to measure in "inches" (0x50) + // use 0x51 for centimeters + // use 0x52 for ping microseconds + Wire.endTransmission(); // stop transmitting + + // step 2: wait for readings to happen + delay(70); // datasheet suggests at least 65 milliseconds + + // step 3: instruct sensor to return a particular echo reading + Wire.beginTransmission(112); // transmit to device #112 + Wire.write(byte(0x02)); // sets register pointer to echo #1 register (0x02) + Wire.endTransmission(); // stop transmitting + + // step 4: request reading from sensor + Wire.requestFrom(112, 2); // request 2 bytes from slave device #112 + + // step 5: receive reading from sensor + if(2 <= Wire.available()) // if two bytes were received + { + reading = Wire.read(); // receive high byte (overwrites previous reading) + reading = reading << 8; // shift high byte to be high 8 bits + reading |= Wire.read(); // receive low byte as lower 8 bits + Serial.println(reading); // print the reading + } + + delay(250); // wait a bit since people have to read the output :) +} + + +/* + +// The following code changes the address of a Devantech Ultrasonic Range Finder (SRF10 or SRF08) +// usage: changeAddress(0x70, 0xE6); + +void changeAddress(byte oldAddress, byte newAddress) +{ + Wire.beginTransmission(oldAddress); + Wire.write(byte(0x00)); + Wire.write(byte(0xA0)); + Wire.endTransmission(); + + Wire.beginTransmission(oldAddress); + Wire.write(byte(0x00)); + Wire.write(byte(0xAA)); + Wire.endTransmission(); + + Wire.beginTransmission(oldAddress); + Wire.write(byte(0x00)); + Wire.write(byte(0xA5)); + Wire.endTransmission(); + + Wire.beginTransmission(oldAddress); + Wire.write(byte(0x00)); + Wire.write(newAddress); + Wire.endTransmission(); +} + +*/ diff --git a/arduino_libs_1_0/Wire/examples/digital_potentiometer/digital_potentiometer.ino b/arduino_libs_1_0/Wire/examples/digital_potentiometer/digital_potentiometer.ino new file mode 100644 index 0000000..38da1c5 --- /dev/null +++ b/arduino_libs_1_0/Wire/examples/digital_potentiometer/digital_potentiometer.ino @@ -0,0 +1,39 @@ +// I2C Digital Potentiometer +// by Nicholas Zambetti <http://www.zambetti.com> +// and Shawn Bonkowski <http://people.interaction-ivrea.it/s.bonkowski/> + +// Demonstrates use of the Wire library +// Controls AD5171 digital potentiometer via I2C/TWI + +// Created 31 March 2006 + +// This example code is in the public domain. + +// This example code is in the public domain. + + +#include <Wire.h> + +void setup() +{ + Wire.begin(); // join i2c bus (address optional for master) +} + +byte val = 0; + +void loop() +{ + Wire.beginTransmission(44); // transmit to device #44 (0x2c) + // device address is specified in datasheet + Wire.write(byte(0x00)); // sends instruction byte + Wire.write(val); // sends potentiometer value byte + Wire.endTransmission(); // stop transmitting + + val++; // increment value + if(val == 64) // if reached 64th position (max) + { + val = 0; // start over from lowest value + } + delay(500); +} + diff --git a/arduino_libs_1_0/Wire/examples/master_reader/master_reader.ino b/arduino_libs_1_0/Wire/examples/master_reader/master_reader.ino new file mode 100644 index 0000000..4124d7d --- /dev/null +++ b/arduino_libs_1_0/Wire/examples/master_reader/master_reader.ino @@ -0,0 +1,32 @@ +// Wire Master Reader +// by Nicholas Zambetti <http://www.zambetti.com> + +// Demonstrates use of the Wire library +// Reads data from an I2C/TWI slave device +// Refer to the "Wire Slave Sender" example for use with this + +// Created 29 March 2006 + +// This example code is in the public domain. + + +#include <Wire.h> + +void setup() +{ + Wire.begin(); // join i2c bus (address optional for master) + Serial.begin(9600); // start serial for output +} + +void loop() +{ + Wire.requestFrom(2, 6); // request 6 bytes from slave device #2 + + while(Wire.available()) // slave may send less than requested + { + char c = Wire.read(); // receive a byte as character + Serial.print(c); // print the character + } + + delay(500); +} diff --git a/arduino_libs_1_0/Wire/examples/master_writer/master_writer.ino b/arduino_libs_1_0/Wire/examples/master_writer/master_writer.ino new file mode 100644 index 0000000..ccaa036 --- /dev/null +++ b/arduino_libs_1_0/Wire/examples/master_writer/master_writer.ino @@ -0,0 +1,31 @@ +// Wire Master Writer +// by Nicholas Zambetti <http://www.zambetti.com> + +// Demonstrates use of the Wire library +// Writes data to an I2C/TWI slave device +// Refer to the "Wire Slave Receiver" example for use with this + +// Created 29 March 2006 + +// This example code is in the public domain. + + +#include <Wire.h> + +void setup() +{ + Wire.begin(); // join i2c bus (address optional for master) +} + +byte x = 0; + +void loop() +{ + Wire.beginTransmission(4); // transmit to device #4 + Wire.write("x is "); // sends five bytes + Wire.write(x); // sends one byte + Wire.endTransmission(); // stop transmitting + + x++; + delay(500); +} diff --git a/arduino_libs_1_0/Wire/examples/slave_receiver/slave_receiver.ino b/arduino_libs_1_0/Wire/examples/slave_receiver/slave_receiver.ino new file mode 100644 index 0000000..60dd4bd --- /dev/null +++ b/arduino_libs_1_0/Wire/examples/slave_receiver/slave_receiver.ino @@ -0,0 +1,38 @@ +// Wire Slave Receiver +// by Nicholas Zambetti <http://www.zambetti.com> + +// Demonstrates use of the Wire library +// Receives data as an I2C/TWI slave device +// Refer to the "Wire Master Writer" example for use with this + +// Created 29 March 2006 + +// This example code is in the public domain. + + +#include <Wire.h> + +void setup() +{ + Wire.begin(4); // join i2c bus with address #4 + Wire.onReceive(receiveEvent); // register event + Serial.begin(9600); // start serial for output +} + +void loop() +{ + delay(100); +} + +// function that executes whenever data is received from master +// this function is registered as an event, see setup() +void receiveEvent(int howMany) +{ + while(1 < Wire.available()) // loop through all but the last + { + char c = Wire.read(); // receive byte as a character + Serial.print(c); // print the character + } + int x = Wire.read(); // receive byte as an integer + Serial.println(x); // print the integer +} diff --git a/arduino_libs_1_0/Wire/examples/slave_sender/slave_sender.ino b/arduino_libs_1_0/Wire/examples/slave_sender/slave_sender.ino new file mode 100644 index 0000000..d3b238a --- /dev/null +++ b/arduino_libs_1_0/Wire/examples/slave_sender/slave_sender.ino @@ -0,0 +1,32 @@ +// Wire Slave Sender +// by Nicholas Zambetti <http://www.zambetti.com> + +// Demonstrates use of the Wire library +// Sends data as an I2C/TWI slave device +// Refer to the "Wire Master Reader" example for use with this + +// Created 29 March 2006 + +// This example code is in the public domain. + + +#include <Wire.h> + +void setup() +{ + Wire.begin(2); // join i2c bus with address #2 + Wire.onRequest(requestEvent); // register event +} + +void loop() +{ + delay(100); +} + +// function that executes whenever data is requested by master +// this function is registered as an event, see setup() +void requestEvent() +{ + Wire.write("hello "); // respond with message of 6 bytes + // as expected by master +} diff --git a/arduino_libs_1_0/Wire/keywords.txt b/arduino_libs_1_0/Wire/keywords.txt new file mode 100644 index 0000000..12f129b --- /dev/null +++ b/arduino_libs_1_0/Wire/keywords.txt @@ -0,0 +1,31 @@ +####################################### +# Syntax Coloring Map For Wire +####################################### + +####################################### +# Datatypes (KEYWORD1) +####################################### + +####################################### +# Methods and Functions (KEYWORD2) +####################################### + +begin KEYWORD2 +beginTransmission KEYWORD2 +endTransmission KEYWORD2 +requestFrom KEYWORD2 +send KEYWORD2 +receive KEYWORD2 +onReceive KEYWORD2 +onRequest KEYWORD2 + +####################################### +# Instances (KEYWORD2) +####################################### + +Wire KEYWORD2 + +####################################### +# Constants (LITERAL1) +####################################### + diff --git a/arduino_libs_1_0/Wire/utility/twi.c b/arduino_libs_1_0/Wire/utility/twi.c new file mode 100644 index 0000000..d80114b --- /dev/null +++ b/arduino_libs_1_0/Wire/utility/twi.c @@ -0,0 +1,470 @@ +/* + twi.c - TWI/I2C library for Wiring & Arduino + Copyright (c) 2006 Nicholas Zambetti. All right reserved. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +*/ + +#include <math.h> +#include <stdlib.h> +#include <inttypes.h> +#include <avr/io.h> +#include <avr/interrupt.h> +#include <compat/twi.h> +#include "Arduino.h" // for digitalWrite + +#ifndef cbi +#define cbi(sfr, bit) (_SFR_BYTE(sfr) &= ~_BV(bit)) +#endif + +#ifndef sbi +#define sbi(sfr, bit) (_SFR_BYTE(sfr) |= _BV(bit)) +#endif + +#include "pins_arduino.h" +#include "twi.h" + +static volatile uint8_t twi_state; +static uint8_t twi_slarw; + +static void (*twi_onSlaveTransmit)(void); +static void (*twi_onSlaveReceive)(uint8_t*, int); + +static uint8_t twi_masterBuffer[TWI_BUFFER_LENGTH]; +static volatile uint8_t twi_masterBufferIndex; +static uint8_t twi_masterBufferLength; + +static uint8_t twi_txBuffer[TWI_BUFFER_LENGTH]; +static volatile uint8_t twi_txBufferIndex; +static volatile uint8_t twi_txBufferLength; + +static uint8_t twi_rxBuffer[TWI_BUFFER_LENGTH]; +static volatile uint8_t twi_rxBufferIndex; + +static volatile uint8_t twi_error; + +/* + * Function twi_init + * Desc readys twi pins and sets twi bitrate + * Input none + * Output none + */ +void twi_init(void) +{ + // initialize state + twi_state = TWI_READY; + + // activate internal pullups for twi. + digitalWrite(SDA, 1); + digitalWrite(SCL, 1); + + // initialize twi prescaler and bit rate + cbi(TWSR, TWPS0); + cbi(TWSR, TWPS1); + TWBR = ((F_CPU / TWI_FREQ) - 16) / 2; + + /* twi bit rate formula from atmega128 manual pg 204 + SCL Frequency = CPU Clock Frequency / (16 + (2 * TWBR)) + note: TWBR should be 10 or higher for master mode + It is 72 for a 16mhz Wiring board with 100kHz TWI */ + + // enable twi module, acks, and twi interrupt + TWCR = _BV(TWEN) | _BV(TWIE) | _BV(TWEA); +} + +/* + * Function twi_slaveInit + * Desc sets slave address and enables interrupt + * Input none + * Output none + */ +void twi_setAddress(uint8_t address) +{ + // set twi slave address (skip over TWGCE bit) + TWAR = address << 1; +} + +/* + * Function twi_readFrom + * Desc attempts to become twi bus master and read a + * series of bytes from a device on the bus + * Input address: 7bit i2c device address + * data: pointer to byte array + * length: number of bytes to read into array + * Output number of bytes read + */ +uint8_t twi_readFrom(uint8_t address, uint8_t* data, uint8_t length) +{ + uint8_t i; + + // ensure data will fit into buffer + if(TWI_BUFFER_LENGTH < length){ + return 0; + } + + // wait until twi is ready, become master receiver + while(TWI_READY != twi_state){ + continue; + } + twi_state = TWI_MRX; + // reset error state (0xFF.. no error occured) + twi_error = 0xFF; + + // initialize buffer iteration vars + twi_masterBufferIndex = 0; + twi_masterBufferLength = length-1; // This is not intuitive, read on... + // On receive, the previously configured ACK/NACK setting is transmitted in + // response to the received byte before the interrupt is signalled. + // Therefor we must actually set NACK when the _next_ to last byte is + // received, causing that NACK to be sent in response to receiving the last + // expected byte of data. + + // build sla+w, slave device address + w bit + twi_slarw = TW_READ; + twi_slarw |= address << 1; + + // send start condition + TWCR = _BV(TWEN) | _BV(TWIE) | _BV(TWEA) | _BV(TWINT) | _BV(TWSTA); + + // wait for read operation to complete + while(TWI_MRX == twi_state){ + continue; + } + + if (twi_masterBufferIndex < length) + length = twi_masterBufferIndex; + + // copy twi buffer to data + for(i = 0; i < length; ++i){ + data[i] = twi_masterBuffer[i]; + } + + return length; +} + +/* + * Function twi_writeTo + * Desc attempts to become twi bus master and write a + * series of bytes to a device on the bus + * Input address: 7bit i2c device address + * data: pointer to byte array + * length: number of bytes in array + * wait: boolean indicating to wait for write or not + * Output 0 .. success + * 1 .. length to long for buffer + * 2 .. address send, NACK received + * 3 .. data send, NACK received + * 4 .. other twi error (lost bus arbitration, bus error, ..) + */ +uint8_t twi_writeTo(uint8_t address, uint8_t* data, uint8_t length, uint8_t wait) +{ + uint8_t i; + + // ensure data will fit into buffer + if(TWI_BUFFER_LENGTH < length){ + return 1; + } + + // wait until twi is ready, become master transmitter + while(TWI_READY != twi_state){ + continue; + } + twi_state = TWI_MTX; + // reset error state (0xFF.. no error occured) + twi_error = 0xFF; + + // initialize buffer iteration vars + twi_masterBufferIndex = 0; + twi_masterBufferLength = length; + + // copy data to twi buffer + for(i = 0; i < length; ++i){ + twi_masterBuffer[i] = data[i]; + } + + // build sla+w, slave device address + w bit + twi_slarw = TW_WRITE; + twi_slarw |= address << 1; + + // send start condition + TWCR = _BV(TWEN) | _BV(TWIE) | _BV(TWEA) | _BV(TWINT) | _BV(TWSTA); + + // wait for write operation to complete + while(wait && (TWI_MTX == twi_state)){ + continue; + } + + if (twi_error == 0xFF) + return 0; // success + else if (twi_error == TW_MT_SLA_NACK) + return 2; // error: address send, nack received + else if (twi_error == TW_MT_DATA_NACK) + return 3; // error: data send, nack received + else + return 4; // other twi error +} + +/* + * Function twi_transmit + * Desc fills slave tx buffer with data + * must be called in slave tx event callback + * Input data: pointer to byte array + * length: number of bytes in array + * Output 1 length too long for buffer + * 2 not slave transmitter + * 0 ok + */ +uint8_t twi_transmit(const uint8_t* data, uint8_t length) +{ + uint8_t i; + + // ensure data will fit into buffer + if(TWI_BUFFER_LENGTH < length){ + return 1; + } + + // ensure we are currently a slave transmitter + if(TWI_STX != twi_state){ + return 2; + } + + // set length and copy data into tx buffer + twi_txBufferLength = length; + for(i = 0; i < length; ++i){ + twi_txBuffer[i] = data[i]; + } + + return 0; +} + +/* + * Function twi_attachSlaveRxEvent + * Desc sets function called before a slave read operation + * Input function: callback function to use + * Output none + */ +void twi_attachSlaveRxEvent( void (*function)(uint8_t*, int) ) +{ + twi_onSlaveReceive = function; +} + +/* + * Function twi_attachSlaveTxEvent + * Desc sets function called before a slave write operation + * Input function: callback function to use + * Output none + */ +void twi_attachSlaveTxEvent( void (*function)(void) ) +{ + twi_onSlaveTransmit = function; +} + +/* + * Function twi_reply + * Desc sends byte or readys receive line + * Input ack: byte indicating to ack or to nack + * Output none + */ +void twi_reply(uint8_t ack) +{ + // transmit master read ready signal, with or without ack + if(ack){ + TWCR = _BV(TWEN) | _BV(TWIE) | _BV(TWINT) | _BV(TWEA); + }else{ + TWCR = _BV(TWEN) | _BV(TWIE) | _BV(TWINT); + } +} + +/* + * Function twi_stop + * Desc relinquishes bus master status + * Input none + * Output none + */ +void twi_stop(void) +{ + // send stop condition + TWCR = _BV(TWEN) | _BV(TWIE) | _BV(TWEA) | _BV(TWINT) | _BV(TWSTO); + + // wait for stop condition to be exectued on bus + // TWINT is not set after a stop condition! + while(TWCR & _BV(TWSTO)){ + continue; + } + + // update twi state + twi_state = TWI_READY; +} + +/* + * Function twi_releaseBus + * Desc releases bus control + * Input none + * Output none + */ +void twi_releaseBus(void) +{ + // release bus + TWCR = _BV(TWEN) | _BV(TWIE) | _BV(TWEA) | _BV(TWINT); + + // update twi state + twi_state = TWI_READY; +} + +SIGNAL(TWI_vect) +{ + switch(TW_STATUS){ + // All Master + case TW_START: // sent start condition + case TW_REP_START: // sent repeated start condition + // copy device address and r/w bit to output register and ack + TWDR = twi_slarw; + twi_reply(1); + break; + + // Master Transmitter + case TW_MT_SLA_ACK: // slave receiver acked address + case TW_MT_DATA_ACK: // slave receiver acked data + // if there is data to send, send it, otherwise stop + if(twi_masterBufferIndex < twi_masterBufferLength){ + // copy data to output register and ack + TWDR = twi_masterBuffer[twi_masterBufferIndex++]; + twi_reply(1); + }else{ + twi_stop(); + } + break; + case TW_MT_SLA_NACK: // address sent, nack received + twi_error = TW_MT_SLA_NACK; + twi_stop(); + break; + case TW_MT_DATA_NACK: // data sent, nack received + twi_error = TW_MT_DATA_NACK; + twi_stop(); + break; + case TW_MT_ARB_LOST: // lost bus arbitration + twi_error = TW_MT_ARB_LOST; + twi_releaseBus(); + break; + + // Master Receiver + case TW_MR_DATA_ACK: // data received, ack sent + // put byte into buffer + twi_masterBuffer[twi_masterBufferIndex++] = TWDR; + case TW_MR_SLA_ACK: // address sent, ack received + // ack if more bytes are expected, otherwise nack + if(twi_masterBufferIndex < twi_masterBufferLength){ + twi_reply(1); + }else{ + twi_reply(0); + } + break; + case TW_MR_DATA_NACK: // data received, nack sent + // put final byte into buffer + twi_masterBuffer[twi_masterBufferIndex++] = TWDR; + case TW_MR_SLA_NACK: // address sent, nack received + twi_stop(); + break; + // TW_MR_ARB_LOST handled by TW_MT_ARB_LOST case + + // Slave Receiver + case TW_SR_SLA_ACK: // addressed, returned ack + case TW_SR_GCALL_ACK: // addressed generally, returned ack + case TW_SR_ARB_LOST_SLA_ACK: // lost arbitration, returned ack + case TW_SR_ARB_LOST_GCALL_ACK: // lost arbitration, returned ack + // enter slave receiver mode + twi_state = TWI_SRX; + // indicate that rx buffer can be overwritten and ack + twi_rxBufferIndex = 0; + twi_reply(1); + break; + case TW_SR_DATA_ACK: // data received, returned ack + case TW_SR_GCALL_DATA_ACK: // data received generally, returned ack + // if there is still room in the rx buffer + if(twi_rxBufferIndex < TWI_BUFFER_LENGTH){ + // put byte in buffer and ack + twi_rxBuffer[twi_rxBufferIndex++] = TWDR; + twi_reply(1); + }else{ + // otherwise nack + twi_reply(0); + } + break; + case TW_SR_STOP: // stop or repeated start condition received + // put a null char after data if there's room + if(twi_rxBufferIndex < TWI_BUFFER_LENGTH){ + twi_rxBuffer[twi_rxBufferIndex] = '\0'; + } + // sends ack and stops interface for clock stretching + twi_stop(); + // callback to user defined callback + twi_onSlaveReceive(twi_rxBuffer, twi_rxBufferIndex); + // since we submit rx buffer to "wire" library, we can reset it + twi_rxBufferIndex = 0; + // ack future responses and leave slave receiver state + twi_releaseBus(); + break; + case TW_SR_DATA_NACK: // data received, returned nack + case TW_SR_GCALL_DATA_NACK: // data received generally, returned nack + // nack back at master + twi_reply(0); + break; + + // Slave Transmitter + case TW_ST_SLA_ACK: // addressed, returned ack + case TW_ST_ARB_LOST_SLA_ACK: // arbitration lost, returned ack + // enter slave transmitter mode + twi_state = TWI_STX; + // ready the tx buffer index for iteration + twi_txBufferIndex = 0; + // set tx buffer length to be zero, to verify if user changes it + twi_txBufferLength = 0; + // request for txBuffer to be filled and length to be set + // note: user must call twi_transmit(bytes, length) to do this + twi_onSlaveTransmit(); + // if they didn't change buffer & length, initialize it + if(0 == twi_txBufferLength){ + twi_txBufferLength = 1; + twi_txBuffer[0] = 0x00; + } + // transmit first byte from buffer, fall + case TW_ST_DATA_ACK: // byte sent, ack returned + // copy data to output register + TWDR = twi_txBuffer[twi_txBufferIndex++]; + // if there is more to send, ack, otherwise nack + if(twi_txBufferIndex < twi_txBufferLength){ + twi_reply(1); + }else{ + twi_reply(0); + } + break; + case TW_ST_DATA_NACK: // received nack, we are done + case TW_ST_LAST_DATA: // received ack, but we are done already! + // ack future responses + twi_reply(1); + // leave slave receiver state + twi_state = TWI_READY; + break; + + // All + case TW_NO_INFO: // no state information + break; + case TW_BUS_ERROR: // bus error, illegal stop/start + twi_error = TW_BUS_ERROR; + twi_stop(); + break; + } +} + diff --git a/arduino_libs_1_0/Wire/utility/twi.h b/arduino_libs_1_0/Wire/utility/twi.h new file mode 100644 index 0000000..831b928 --- /dev/null +++ b/arduino_libs_1_0/Wire/utility/twi.h @@ -0,0 +1,53 @@ +/* + twi.h - TWI/I2C library for Wiring & Arduino + Copyright (c) 2006 Nicholas Zambetti. All right reserved. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +*/ + +#ifndef twi_h +#define twi_h + + #include <inttypes.h> + + //#define ATMEGA8 + + #ifndef TWI_FREQ + #define TWI_FREQ 100000L + #endif + + #ifndef TWI_BUFFER_LENGTH + #define TWI_BUFFER_LENGTH 32 + #endif + + #define TWI_READY 0 + #define TWI_MRX 1 + #define TWI_MTX 2 + #define TWI_SRX 3 + #define TWI_STX 4 + + void twi_init(void); + void twi_setAddress(uint8_t); + uint8_t twi_readFrom(uint8_t, uint8_t*, uint8_t); + uint8_t twi_writeTo(uint8_t, uint8_t*, uint8_t, uint8_t); + uint8_t twi_transmit(const uint8_t*, uint8_t); + void twi_attachSlaveRxEvent( void (*)(uint8_t*, int) ); + void twi_attachSlaveTxEvent( void (*)(void) ); + void twi_reply(uint8_t); + void twi_stop(void); + void twi_releaseBus(void); + +#endif + diff --git a/electicAndroid_001.tar b/electicAndroid_001.tar Binary files differnew file mode 100644 index 0000000..09cc667 --- /dev/null +++ b/electicAndroid_001.tar diff --git a/electicAndroid_002.tar b/electicAndroid_002.tar Binary files differnew file mode 100644 index 0000000..543a908 --- /dev/null +++ b/electicAndroid_002.tar diff --git a/electicAndroid_003.tar b/electicAndroid_003.tar Binary files differnew file mode 100644 index 0000000..4d7bde8 --- /dev/null +++ b/electicAndroid_003.tar diff --git a/electic_streaming328p/bin/Debug/electic_streaming.elf b/electic_streaming328p/bin/Debug/electic_streaming.elf Binary files differnew file mode 100755 index 0000000..56120ff --- /dev/null +++ b/electic_streaming328p/bin/Debug/electic_streaming.elf diff --git a/electic_streaming328p/bin/Debug/electic_streaming.elf.eep.hex b/electic_streaming328p/bin/Debug/electic_streaming.elf.eep.hex new file mode 100644 index 0000000..1996e8f --- /dev/null +++ b/electic_streaming328p/bin/Debug/electic_streaming.elf.eep.hex @@ -0,0 +1 @@ +:00000001FF
diff --git a/electic_streaming328p/bin/Debug/electic_streaming.elf.hex b/electic_streaming328p/bin/Debug/electic_streaming.elf.hex new file mode 100644 index 0000000..235f9d2 --- /dev/null +++ b/electic_streaming328p/bin/Debug/electic_streaming.elf.hex @@ -0,0 +1,364 @@ +:100000000C9444000C946C000C946C000C946C00E8
+:100010000C946C000C946C000C946C000C946C00B0
+:100020000C946C000C946C000C946C000C946701A4
+:100030000C946C000C946C000C946C000C946C0090
+:100040000C946C000C946C000C94F0030C946C00F9
+:100050000C946C000C946C000C946C000C946C0070
+:100060000C946C000C946C0005A84CCDB2D44EB925
+:100070003836A9020C50B9918688083CA6AAAA2A4B
+:10008000BE000000803FCE0111241FBECFEFD8E09C
+:10009000DEBFCDBF11E0A0E0B1E0ECE7F6E102C0C9
+:1000A00005900D92AA32B107D9F713E0AAE2B1E0A8
+:1000B00001C01D92A43BB107E1F710E0C8E8D0E011
+:1000C00004C02297FE010E94A309C638D107C9F7D0
+:1000D0000E94FE000C943C0B0C940000DF93CF9325
+:1000E000CDB7DEB764970FB6F894DEBF0FBECDBFB5
+:1000F00088ED9FE0A9E4B0E48F839887A987BA8749
+:1001000080E090E0DC0189839A83AB83BC832F81FC
+:10011000388549855A85CA01B9010E947705DC01F5
+:10012000CB01BC01CD0120E030E040E054E40E946E
+:10013000CF06DC01CB018B879C87AD87BE871E82F3
+:100140001D8248C089819A81AB81BC81BC01CD01EF
+:100150000E94A709DC01CB01BC01CD0120E030E009
+:100160004EEF52E40E94D505DC01CB018F87988BBE
+:10017000A98BBA8B69817A818B819C812B853C8587
+:100180004D855E850E947705DC01CB0189839A83CA
+:10019000AB83BC836F85788989899A8920E030E0B8
+:1001A00040E053E40E947705DC01CB01BC01CD01A6
+:1001B0000E947D07DC01CB019C8B8B8B2B898D8171
+:1001C0009E81865D9E4FFC0120838D819E810196DC
+:1001D0009E838D8321E08D819E81F2E080309F0798
+:1001E0000CF020E0222309F0ADCF64960FB6F8940E
+:1001F000DEBF0FBECDBFCF91DF910895DF93CF93C8
+:100200000F92CDB7DEB70E946E008EE293E040E021
+:1002100052EC61E070E00E94E20184E290E024E2AE
+:1002200030E0F90120812062FC01208385E290E02A
+:1002300020E2FC01208381E890E021E830E0F90130
+:1002400020812860FC0120838FE690E02FE630E0DB
+:10025000F90120812260FC01208388E890E026E8F3
+:1002600031E0FC0131832083789403C0000001C099
+:1002700000008EE293E00E94DF0121E018161906CB
+:100280000CF020E0222391F385E290E025E230E0BB
+:10029000F901308120E22327FC0120838EE293E0E4
+:1002A0000E94DC0189838981813611F78EE293E017
+:1002B00020E031E0B9010E94360281E890E021E8B7
+:1002C00030E0F90120812560FC012083D2CF1F920C
+:1002D0000F920FB60F9211242F933F934F935F937A
+:1002E0006F937F938F939F93AF93BF93EF93FF93FE
+:1002F000DF93CF9300D0CDB7DEB785E290E025E263
+:1003000030E0F901308120E22327FC0120831A82AA
+:10031000198220C080912C0390912D03865D9E4F01
+:10032000FC0120818EE293E0622F0E94D501809132
+:100330002C0390912D03019620E032E0B9010E9438
+:10034000060990932D0380932C0389819A8101964D
+:100350009A83898321E089819A81F1E080349F0723
+:100360000CF020E02223B1F68EE293E060E00E94E0
+:10037000D5010F900F90CF91DF91FF91EF91BF9139
+:10038000AF919F918F917F916F915F914F913F912D
+:100390002F910F900FBE0F901F9018958FE191E055
+:1003A00090932F0380932E030895862F0E94AF030E
+:1003B00008950E94E70308950E94C80308950E94CB
+:1003C000B7030895CB01BA010E9476030895DC01BA
+:1003D000ED91FC910190F081E02D09950895DC01EB
+:1003E000ED91FC910190F081E02D099508950F9316
+:1003F0001F93CF93DF938C01EB0109C02196D801A5
+:10040000ED91FC910190F081E02DC8010995688182
+:100410006623A1F7DF91CF911F910F9108950F935C
+:100420001F938C01DC01ED91FC910190F081E02D96
+:100430006DE00995D801ED91FC910190F081E02DDE
+:100440006AE0C80109951F910F9108950F931F93BA
+:100450008C01DC01ED91FC910190F081E02D09957A
+:10046000C8010E940F021F910F9108950F931F93CF
+:100470008C010E94F701C8010E940F021F910F9189
+:1004800008950F931F938C01DC01ED91FC91019075
+:10049000F081E02D0995C8010E940F021F910F9174
+:1004A00008952F923F924F925F926F927F928F9218
+:1004B0009F92AF92BF92CF92DF92EF92FF920F93F3
+:1004C0001F93DF93CF93CDB7DEB7A0970FB6F89405
+:1004D000DEBF0FBECDBF1C016A017B014115510576
+:1004E0006105710549F4DC01ED91FC910190F08109
+:1004F000E02D60E3099554C0882499245401422ECC
+:1005000055246624772401E010E00C0F1D1F080D10
+:10051000191DC701B601A30192010E941909F80132
+:1005200060830894811C911CA11CB11CC701B601F9
+:10053000A30192010E941909C901DA016C017D0130
+:10054000C114D104E104F104F1F681E0E82EF12CAC
+:10055000EC0EFD1EE80CF91C3E010894611C711C98
+:10056000D501C4010197A109B1096C01C818D908C6
+:1005700014C0F601EE0DFF1D60816A3010F4605D5D
+:1005800001C0695CD101ED91FC910190F081E02DF9
+:10059000C10109950894E108F1086E147F0449F738
+:1005A000A0960FB6F894DEBF0FBECDBFCF91DF91FE
+:1005B0001F910F91FF90EF90DF90CF90BF90AF9081
+:1005C0009F908F907F906F905F904F903F902F9073
+:1005D00008952AE00E94510208950F931F938C0101
+:1005E0000E94E902C8010E940F021F910F91089515
+:1005F000AB0160E070E00E94E90208950F931F9341
+:100600008C01AB0160E070E00E94E902C8010E9429
+:100610000F021F910F910895EF92FF920F931F9376
+:10062000CF93DF93EC017A018B0177FF0FC0E88154
+:10063000F9810190F081E02D6DE20995109500950A
+:10064000F094E094E11CF11C011D111D2AE0B80199
+:10065000A701CE010E945102DF91CF911F910F910E
+:10066000FF90EF9008950F931F938C010E940C034D
+:10067000C8010E940F021F910F910895AB016627D8
+:1006800057FD6095762F0E940C0308950F931F93DA
+:100690008C01AB01662757FD6095762F0E940C03F5
+:1006A000C8010E940F021F910F910895DC012115CE
+:1006B000310541F4ED91FC910190F081E02D642F22
+:1006C000099508952A30310519F40E940C03089504
+:1006D0000E94510208950F931F938C010E945603AC
+:1006E000C8010E940F021F910F910895EF92FF928F
+:1006F0000F931F937B018C0122E030E040E050E03B
+:100700000E943B09205C3D4B404F5F4FCA01B9013D
+:10071000A80197010E943B09C901DA010197A109CB
+:10072000B109292F3A2F4B2F552747FD5A9501968E
+:10073000A11DB11D2093C50081508093C400E1EC40
+:10074000F0E0808180618083808188608083808107
+:10075000806880831F910F91FF90EF900895982FEC
+:100760008091C00085FFFCCF9093C60008958091D2
+:1007700030039091310380589F4F20913203309184
+:100780003303821B930B60E870E00E940609089512
+:1007900040913203509133038091300390913103A3
+:1007A0008417950719F42FEF3FEF0FC0FA01EC5CA7
+:1007B000FC4F2081CA01019660E870E00E940609A2
+:1007C000909333038093320330E0C9010895809100
+:1007D0003203909133039093310380933003089553
+:1007E0001F920F920FB60F9211242F933F934F93A6
+:1007F0005F936F937F938F939F93AF93BF93EF9389
+:10080000FF934091C600E0913003F0913103CF0196
+:10081000019660E870E00E9406099C018091320315
+:10082000909133032817390739F0EC5CFC4F408373
+:100830003093310320933003FF91EF91BF91AF913B
+:100840009F918F917F916F915F914F913F912F91E8
+:100850000F900FBE0F901F901895A0E0B0E0E3E35B
+:10086000F4E00C946E09FC01EA018081823008F406
+:1008700038C1DB019C91923008F430C1843059F4C6
+:10088000943009F02EC1918111968C91119798178F
+:1008900009F021C126C1943009F420C19230B1F48D
+:1008A000823009F01EC1CA01AF0128E0DA010D90C3
+:1008B000AD01DC010D92CD012150C1F7DB01119694
+:1008C0008C9111979181892389830AC1823009F41F
+:1008D00005C1C280D380DB0112966D907C90139786
+:1008E00024813581468157811496ED90FD900D91BC
+:1008F0001C911797C601861997095C0197FF04C0E0
+:10090000AA24BB24A81AB90AB0E2AB16B1040CF0B1
+:1009100061C0181619066CF5370148010A2C04C08D
+:1009200096948794779467940A94D2F781E090E044
+:10093000A0E0B0E00A2C04C0880F991FAA1FBB1FBB
+:100940000A94D2F70197A109B1098E219F21A02312
+:10095000B123EE24FF248701E3940097A105B1059C
+:1009600019F4EE24FF248701E628F728082919291D
+:100970003CC00097D1F1CA0CDB1C39014A010A2C9A
+:1009800004C096948794779467940A94D2F781E090
+:1009900090E0A0E0B0E00A2C04C0880F991FAA1FC5
+:1009A000BB1F0A94D2F70197A109B10982239323AF
+:1009B000A423B52321E030E040E050E00097A105FA
+:1009C000B10519F420E030E0A9012629372948298A
+:1009D00059290BC06C147D0424F4EE24FF248701F4
+:1009E00004C0630120E030E0A9018181FB01918115
+:1009F000891709F445C0882349F0D801C701821B33
+:100A0000930BA40BB50B9C01AD0104C02E193F093B
+:100A1000400B510B57FD04C01982DB82CA820BC008
+:100A200081E08983DB82CA8250954095309521957B
+:100A30003F4F4F4F5F4F2C833D834E835F830DC0ED
+:100A4000880F991FAA1FBB1F8C839D83AE83BF8312
+:100A50008A819B8101979B838A838C819D81AE8152
+:100A6000BF819C01AD0121503040404050402F3F9C
+:100A7000EFEF3E07EFEF4E07EFE35E0708F30BC023
+:100A80008983DB82CA822E0D3F1D401F511F2C839C
+:100A90003D834E835F8383E088832C813D814E813B
+:100AA0005F8157FF1DC0DA01C90181709070A0708D
+:100AB000B0705695479537952795822B932BA42B8D
+:100AC000B52B8C839D83AE83BF838A819B810196E6
+:100AD0009B838A8305C0E1E2F1E003C0FB0101C012
+:100AE000FE01CF01CDB7DEB7EEE00C948A09A0E29B
+:100AF000B0E0EDE7F5E00C94760969837A838B83A7
+:100B00009C832D833E834F83588789E0E82EF12C08
+:100B1000EC0EFD1ECE010196B7010E949D088E01CC
+:100B20000F5E1F4FCE010596B8010E949D08C701B8
+:100B3000B801AE01475E5F4F0E942D040E94CF07AF
+:100B4000A096E6E00C949209A0E2B0E0EAEAF5E0B3
+:100B50000C94760969837A838B839C832D833E83EF
+:100B60004F8358878E01075F1F4FCE010196B80152
+:100B70000E949D0891E1E92EF12CEC0EFD1ECE01A4
+:100B80000596B7010E949D088A8991E089278A8B82
+:100B9000C801B701AE01475E5F4F0E942D040E945D
+:100BA000CF07A096E6E00C949209A0E2B0E0EBED4E
+:100BB000F5E00C946A0969837A838B839C832D8387
+:100BC0003E834F835887CE010196BE01675F7F4FFA
+:100BD0000E949D08CE010596BE016F5E7F4F0E9468
+:100BE0009D089985923078F089898230C0F09430E0
+:100BF00019F4823041F4CBC0843019F4923079F486
+:100C0000C6C0923051F481E02A859A89291709F4E7
+:100C100080E08A87CE010996BCC0823051F481E021
+:100C20002A859A89291709F480E08A8BCE0141969A
+:100C3000B0C06D847E848F849888ED88FE880F898B
+:100C4000188DE0E2F0E080E090E0DC01AA24BB2413
+:100C5000650120E030E0A901B30161707070611599
+:100C60007105D1F02E0D3F1D401F511F15012601AA
+:100C7000280E391E4A1E5B1E81E090E0A0E0B0E025
+:100C80002E153F054007510718F080E090E0DC0189
+:100C9000820D931DA41DB51DAA0CBB1CCC1CDD1C14
+:100CA00017FF09C061E0262E312C412C512CA228BF
+:100CB000B328C428D528319749F0EE0CFF1C001F3B
+:100CC000111F9694879477946794C6CF6B897C891B
+:100CD000EB85FC856E0F7F1F6E5F7F4F7C8F6B8F68
+:100CE00061E0EA857A89E71709F460E06A8F6B8D25
+:100CF0007C8D10C0FC01E170F070309729F05695A2
+:100D00004795379527955068B695A79597958795F8
+:100D10006F5F7F4FB7FDEECF0CC0880F991FAA1FE2
+:100D2000BB1F57FD8160220F331F441F551F6150A9
+:100D300070408030E0E09E07E0E0AE07E0E4BE07F0
+:100D400060F36B8F7C8F6FE7E62EF12C012D112D58
+:100D5000E822F9220A231B2360E4E616F1040105C8
+:100D6000110561F487FD0AC02115310541055105C2
+:100D700029F0805C9F4FAF4FBF4F80788D8F9E8F43
+:100D8000AF8FB8A383E0898FCE01499602C081E27C
+:100D900091E00E94CF07A096E2E10C948609A8E1B9
+:100DA000B0E0E5EDF6E00C94720969837A838B83F9
+:100DB0009C832D833E834F8358878E01075F1F4F8F
+:100DC000CE010196B8010E949D0881E1E82EF12C28
+:100DD000EC0EFD1ECE010596B7010E949D08998577
+:100DE000923008F483C08989823008F47BC02A8558
+:100DF0003A8923272A87943011F0923021F49817EA
+:100E000009F06CC071C0843039F41D861E861F86BF
+:100E1000188A1C861B866AC0823019F484E0898790
+:100E200065C08B859C852B893C89821B930B9C8795
+:100E30008B872D853E854F855889ED88FE880F89E3
+:100E4000188D2E153F054007510738F4220F331F28
+:100E5000441F551F01979C878B876FE170E0A12C81
+:100E6000B12CC12CA0E4DA2E80E090E0DC012E153C
+:100E70003F054007510740F08A299B29AC29BD292D
+:100E80002E193F09400B510BD694C794B794A794E1
+:100E9000220F331F441F551F6150704041F76FE709
+:100EA000E62EF12C012D112DE822F9220A231B2315
+:100EB00060E4E616F1040105110561F487FD0AC03E
+:100EC000211531054105510529F0805C9F4FAF4F39
+:100ED000BF4F80788D879E87AF87B88B8E01075F65
+:100EE0001F4F04C0870102C001E211E0C8010E9447
+:100EF000CF076896EAE00C948E09ACE0B0E0E3E836
+:100F0000F7E00C947A0969837A838B839C83CE0102
+:100F10000196BE016B5F7F4F0E949D088D818230DC
+:100F200081F1823070F1843021F48E81882369F15F
+:100F30000AC02F81388537FD24C06E812F313105DD
+:100F40003CF0662311F120E030E040E050E821C0A1
+:100F50008EE190E0821B930B29853A854B855C8559
+:100F600004C056954795379527958A95D2F76623FD
+:100F700081F050954095309521953F4F4F4F5F4FF1
+:100F800008C020E030E0A90104C02FEF3FEF4FEF91
+:100F90005FE7B901CA012C96E2E00C949609EF9242
+:100FA000FF920F931F93CF93DF93FC012481358130
+:100FB0004681578161818081823020F44061EFEF6A
+:100FC000F0E0A3C0843009F49BC0823009F492C0E1
+:100FD000211531054105510509F48FC00280F381C7
+:100FE000E02D8FEFE238F8070CF05AC0C2E8DFEFCF
+:100FF000CE1BDF0BCA31D1056CF579018A010C2EAD
+:1010000004C016950795F794E7940A94D2F781E007
+:1010100090E0A0E0B0E00C2E04C0880F991FAA1F3A
+:10102000BB1F0A94D2F70197A109B1098223932328
+:10103000A423B52321E030E040E050E00097A10573
+:10104000B10519F420E030E0A9012E293F29402BF9
+:10105000512B03C020E030E0A901DA01C9018F77EC
+:101060009070A070B07080349105A105B10539F47D
+:1010700027FF09C0205C3F4F4F4F5F4F04C0215CEA
+:101080003F4F4F4F5F4FE1E0F0E0203080E0380706
+:1010900080E0480780E4580728F5E0E0F0E022C04F
+:1010A000E038F1056CF5E158FF4FDA01C9018F779F
+:1010B0009070A070B07080349105A105B10539F42D
+:1010C00027FF09C0205C3F4F4F4F5F4F04C0215C9A
+:1010D0003F4F4F4F5F4F57FF05C056954795379588
+:1010E0002795319687E056954795379527958A95A8
+:1010F000D1F70BC0E0E0F0E005C0E0E0F0E005C0B3
+:10110000EFEFF0E020E030E0A9018E2F87958827EF
+:101110008795942F9F77679566276795E695E22ECA
+:10112000A92FA82BFE2FF62B622F732F8A2F9F2F0C
+:10113000CDB7DEB7E6E00C949209DC01FB012C91FF
+:1011400011963C91119712968C911297482F4F77D8
+:1011500050E0982F991F9927991F13966C91139718
+:10116000862F880F892B90E0661F6627661F618394
+:10117000009739F5211531054105510511F482E03B
+:1011800029C082E89FEF9383828367E0220F331F99
+:10119000441F551F6A95D1F783E0808309C0220F51
+:1011A000331F441F551F828193810197938382834C
+:1011B000203080E0380780E0480780E4580778F363
+:1011C00020C08F3F910579F4211531054105510566
+:1011D00019F484E08083089544FF03C081E0808394
+:1011E00010C010820EC08F5790409383828383E09B
+:1011F000808387E0220F331F441F551F8A95D1F744
+:1012000050642483358346835783089597FB092EC2
+:1012100007260AD077FD04D049D006D000201AF462
+:10122000709561957F4F0895F6F7909581959F4F42
+:101230000895A1E21A2EAA1BBB1BFD010DC0AA1F17
+:10124000BB1FEE1FFF1FA217B307E407F50720F02F
+:10125000A21BB30BE40BF50B661F771F881F991FAA
+:101260001A9469F760957095809590959B01AC01F3
+:10127000BD01CF01089597FB092E05260ED057FD1D
+:1012800004D0D7DF0AD0001C38F450954095309533
+:1012900021953F4F4F4F5F4F0895F6F790958095FA
+:1012A000709561957F4F8F4F9F4F0895AA1BBB1B71
+:1012B00051E107C0AA1FBB1FA617B70710F0A61B56
+:1012C000B70B881F991F5A95A9F780959095BC0177
+:1012D000CD0108952F923F924F925F926F927F922D
+:1012E0008F929F92AF92BF92CF92DF92EF92FF9236
+:1012F0000F931F93CF93DF93CDB7DEB7CA1BDB0BE2
+:101300000FB6F894DEBF0FBECDBF09942A88398886
+:1013100048885F846E847D848C849B84AA84B9848D
+:10132000C884DF80EE80FD800C811B81AA81B98199
+:10133000CE0FD11D0FB6F894DEBF0FBECDBFED01AD
+:101340000895EE0FFF1F0590F491E02D09949F93EF
+:1013500005D00F9007FCEE5F28C0CEC03FD0E8F369
+:10136000E894E0E0BB279F57F0F02AED3FE049EC1E
+:1013700006C0EE0FBB0F661F771F881F28F0B23A1A
+:1013800062077307840728F0B25A620B730B840B51
+:10139000E3959A9572F7803830F49A95BB0F661FE3
+:1013A000771F881FD2F790489BC0EF93E0FF06C0DD
+:1013B000A2EA2AED3FE049EC5FEB37D0BFD00F90B7
+:1013C000039401FC9058E8E6F0E099C057FD90586E
+:1013D000440F551F59F05F3F71F04795880F97FBF9
+:1013E000991F61F09F3F79F08795089512161306B3
+:1013F0001406551FF2CF4695F1DF08C016161706E2
+:101400001806991FF1CF8695710561050894089516
+:1014100087D030F08CD020F031F49F3F11F41EF4CF
+:101420006BC00EF4E095E7FB53C0E92FCFDF80F3EC
+:10143000BA17620773078407950718F071F49EF5D1
+:101440008EC00EF4E0950B2EBA2FA02D0B01B90122
+:1014500090010C01CA01A0011124FF27591B99F02A
+:10146000593F50F4503E68F11A16F040A22F232F36
+:10147000342F4427585FF3CF469537952795A79586
+:10148000F0405395C9F77EF41F16BA0B620B730B2D
+:10149000840BBAF09150A1F0FF0FBB1F661F771F9E
+:1014A000881FC2F70EC0BA0F621F731F841F48F453
+:1014B000879577956795B795F7959E3F08F0B3CFD9
+:1014C0009395880F08F09927EE0F979587950895C3
+:1014D00097F99F6780E870E060E008959F3F31F0E2
+:1014E000915020F4879577956795B795880F911D52
+:1014F0009695879597F908959FEF80EC08959F93AF
+:101500008F937F936F93FF93EF939B01AC014DDB20
+:10151000EF91FF912BD02F913F914F915F9145CB50
+:1015200000240A94161617061806090608950024C2
+:101530000A9412161306140605060895092E03943C
+:10154000000C11F4882352F0BB0F40F4BF2B11F4B0
+:1015500060FF04C06F5F7F4F8F4F9F4F0895E894E7
+:10156000BB2766277727CB0197F90895DF93CF93A1
+:101570001F930F93FF92EF92DF927B018C0168948F
+:1015800005C0DA2EEF0121D0FE01E894A591259146
+:10159000359145915591AEF3EF0147DFFE0197017B
+:1015A000A801DA9479F7DF90EF90FF900F911F91E7
+:1015B000CF91DF910895B4DF28F0B9DF18F09523BB
+:1015C00009F086CF99CF1124CBCF00DFA0F3959FF0
+:1015D000D1F3950F50E0551F629FF001729FBB271A
+:1015E000F00DB11D639FAA27F00DB11DAA1F649FC6
+:1015F0006627B00DA11D661F829F2227B00DA11D79
+:10160000621F739FB00DA11D621F839FA00D611DFE
+:10161000221F749F3327A00D611D231F849F600D1F
+:10162000211D822F762F6A2F11249F5750408AF058
+:10163000E1F088234AF0EE0FFF1FBB1F661F771FE4
+:10164000881F91505040A9F79E3F510570F040CF40
+:1016500087CF5F3FECF3983EDCF3869577956795EF
+:10166000B795F795E7959F5FC1F7FE2B880F911D02
+:0C1670009695879597F90895F894FFCFA0
+:10167C0057656C636F6D6520746F20656C65637462
+:10168C006963000E0F10111213141500000000D521
+:0A169C000100000000000000000043
+:00000001FF
diff --git a/electic_streaming328p/bin/Debug/electic_streaming.elf.lss b/electic_streaming328p/bin/Debug/electic_streaming.elf.lss new file mode 100644 index 0000000..0b8f18c --- /dev/null +++ b/electic_streaming328p/bin/Debug/electic_streaming.elf.lss @@ -0,0 +1,3033 @@ + +bin/Debug/electic_streaming.elf: file format elf32-avr + +Sections: +Idx Name Size VMA LMA File off Algn + 0 .data 0000002a 00800100 0000167c 00001710 2**0 + CONTENTS, ALLOC, LOAD, DATA + 1 .text 0000167c 00000000 00000000 00000094 2**1 + CONTENTS, ALLOC, LOAD, READONLY, CODE + 2 .bss 0000028a 0080012a 0080012a 0000173a 2**0 + ALLOC + 3 .stab 00002418 00000000 00000000 0000173c 2**2 + CONTENTS, READONLY, DEBUGGING + 4 .stabstr 00001c43 00000000 00000000 00003b54 2**0 + CONTENTS, READONLY, DEBUGGING + 5 .debug_aranges 00000060 00000000 00000000 00005797 2**0 + CONTENTS, READONLY, DEBUGGING + 6 .debug_pubnames 000002a7 00000000 00000000 000057f7 2**0 + CONTENTS, READONLY, DEBUGGING + 7 .debug_info 00000d0b 00000000 00000000 00005a9e 2**0 + CONTENTS, READONLY, DEBUGGING + 8 .debug_abbrev 000003f7 00000000 00000000 000067a9 2**0 + CONTENTS, READONLY, DEBUGGING + 9 .debug_line 00000689 00000000 00000000 00006ba0 2**0 + CONTENTS, READONLY, DEBUGGING + 10 .debug_frame 00000210 00000000 00000000 0000722c 2**2 + CONTENTS, READONLY, DEBUGGING + 11 .debug_str 00000420 00000000 00000000 0000743c 2**0 + CONTENTS, READONLY, DEBUGGING + 12 .debug_loc 0000075a 00000000 00000000 0000785c 2**0 + CONTENTS, READONLY, DEBUGGING + +Disassembly of section .text: + +00000000 <__vectors>: + 0: 0c 94 44 00 jmp 0x88 ; 0x88 <__ctors_end> + 4: 0c 94 6c 00 jmp 0xd8 ; 0xd8 <__bad_interrupt> + 8: 0c 94 6c 00 jmp 0xd8 ; 0xd8 <__bad_interrupt> + c: 0c 94 6c 00 jmp 0xd8 ; 0xd8 <__bad_interrupt> + 10: 0c 94 6c 00 jmp 0xd8 ; 0xd8 <__bad_interrupt> + 14: 0c 94 6c 00 jmp 0xd8 ; 0xd8 <__bad_interrupt> + 18: 0c 94 6c 00 jmp 0xd8 ; 0xd8 <__bad_interrupt> + 1c: 0c 94 6c 00 jmp 0xd8 ; 0xd8 <__bad_interrupt> + 20: 0c 94 6c 00 jmp 0xd8 ; 0xd8 <__bad_interrupt> + 24: 0c 94 6c 00 jmp 0xd8 ; 0xd8 <__bad_interrupt> + 28: 0c 94 6c 00 jmp 0xd8 ; 0xd8 <__bad_interrupt> + 2c: 0c 94 67 01 jmp 0x2ce ; 0x2ce <__vector_11> + 30: 0c 94 6c 00 jmp 0xd8 ; 0xd8 <__bad_interrupt> + 34: 0c 94 6c 00 jmp 0xd8 ; 0xd8 <__bad_interrupt> + 38: 0c 94 6c 00 jmp 0xd8 ; 0xd8 <__bad_interrupt> + 3c: 0c 94 6c 00 jmp 0xd8 ; 0xd8 <__bad_interrupt> + 40: 0c 94 6c 00 jmp 0xd8 ; 0xd8 <__bad_interrupt> + 44: 0c 94 6c 00 jmp 0xd8 ; 0xd8 <__bad_interrupt> + 48: 0c 94 f0 03 jmp 0x7e0 ; 0x7e0 <__vector_18> + 4c: 0c 94 6c 00 jmp 0xd8 ; 0xd8 <__bad_interrupt> + 50: 0c 94 6c 00 jmp 0xd8 ; 0xd8 <__bad_interrupt> + 54: 0c 94 6c 00 jmp 0xd8 ; 0xd8 <__bad_interrupt> + 58: 0c 94 6c 00 jmp 0xd8 ; 0xd8 <__bad_interrupt> + 5c: 0c 94 6c 00 jmp 0xd8 ; 0xd8 <__bad_interrupt> + 60: 0c 94 6c 00 jmp 0xd8 ; 0xd8 <__bad_interrupt> + 64: 0c 94 6c 00 jmp 0xd8 ; 0xd8 <__bad_interrupt> + 68: 05 a8 ldd r0, Z+53 ; 0x35 + 6a: 4c cd rjmp .-1384 ; 0xfffffb04 <__eeprom_end+0xff7efb04> + 6c: b2 d4 rcall .+2404 ; 0x9d2 <__stack+0xd3> + 6e: 4e b9 out 0x0e, r20 ; 14 + 70: 38 36 cpi r19, 0x68 ; 104 + 72: a9 02 muls r26, r25 + 74: 0c 50 subi r16, 0x0C ; 12 + 76: b9 91 ld r27, Y+ + 78: 86 88 ldd r8, Z+22 ; 0x16 + 7a: 08 3c cpi r16, 0xC8 ; 200 + 7c: a6 aa std Z+54, r10 ; 0x36 + 7e: aa 2a or r10, r26 + 80: be 00 .word 0x00be ; ???? + 82: 00 00 nop + 84: 80 3f cpi r24, 0xF0 ; 240 + +00000086 <__ctors_start>: + 86: ce 01 movw r24, r28 + +00000088 <__ctors_end>: + 88: 11 24 eor r1, r1 + 8a: 1f be out 0x3f, r1 ; 63 + 8c: cf ef ldi r28, 0xFF ; 255 + 8e: d8 e0 ldi r29, 0x08 ; 8 + 90: de bf out 0x3e, r29 ; 62 + 92: cd bf out 0x3d, r28 ; 61 + +00000094 <__do_copy_data>: + 94: 11 e0 ldi r17, 0x01 ; 1 + 96: a0 e0 ldi r26, 0x00 ; 0 + 98: b1 e0 ldi r27, 0x01 ; 1 + 9a: ec e7 ldi r30, 0x7C ; 124 + 9c: f6 e1 ldi r31, 0x16 ; 22 + 9e: 02 c0 rjmp .+4 ; 0xa4 <__do_copy_data+0x10> + a0: 05 90 lpm r0, Z+ + a2: 0d 92 st X+, r0 + a4: aa 32 cpi r26, 0x2A ; 42 + a6: b1 07 cpc r27, r17 + a8: d9 f7 brne .-10 ; 0xa0 <__do_copy_data+0xc> + +000000aa <__do_clear_bss>: + aa: 13 e0 ldi r17, 0x03 ; 3 + ac: aa e2 ldi r26, 0x2A ; 42 + ae: b1 e0 ldi r27, 0x01 ; 1 + b0: 01 c0 rjmp .+2 ; 0xb4 <.do_clear_bss_start> + +000000b2 <.do_clear_bss_loop>: + b2: 1d 92 st X+, r1 + +000000b4 <.do_clear_bss_start>: + b4: a4 3b cpi r26, 0xB4 ; 180 + b6: b1 07 cpc r27, r17 + b8: e1 f7 brne .-8 ; 0xb2 <.do_clear_bss_loop> + +000000ba <__do_global_ctors>: + ba: 10 e0 ldi r17, 0x00 ; 0 + bc: c8 e8 ldi r28, 0x88 ; 136 + be: d0 e0 ldi r29, 0x00 ; 0 + c0: 04 c0 rjmp .+8 ; 0xca <__do_global_ctors+0x10> + c2: 22 97 sbiw r28, 0x02 ; 2 + c4: fe 01 movw r30, r28 + c6: 0e 94 a3 09 call 0x1346 ; 0x1346 <__tablejump__> + ca: c6 38 cpi r28, 0x86 ; 134 + cc: d1 07 cpc r29, r17 + ce: c9 f7 brne .-14 ; 0xc2 <__do_global_ctors+0x8> + d0: 0e 94 fe 00 call 0x1fc ; 0x1fc <main> + d4: 0c 94 3c 0b jmp 0x1678 ; 0x1678 <_exit> + +000000d8 <__bad_interrupt>: + d8: 0c 94 00 00 jmp 0 ; 0x0 <__vectors> + +000000dc <_Z13fill_sinewavev>: + +byte dd[SAMPLES]; // ram buffer +int loopCount=0; +int sample=0; + +void fill_sinewave(){ + dc: df 93 push r29 + de: cf 93 push r28 + e0: cd b7 in r28, 0x3d ; 61 + e2: de b7 in r29, 0x3e ; 62 + e4: 64 97 sbiw r28, 0x14 ; 20 + e6: 0f b6 in r0, 0x3f ; 63 + e8: f8 94 cli + ea: de bf out 0x3e, r29 ; 62 + ec: 0f be out 0x3f, r0 ; 63 + ee: cd bf out 0x3d, r28 ; 61 + sample data to stream + the vital thing is that its possible to distinguish the end of a packet + + here the data is in the range 1-255 and a 0 denotes the end of the packet + */ + float pi = 3.141592; + f0: 88 ed ldi r24, 0xD8 ; 216 + f2: 9f e0 ldi r25, 0x0F ; 15 + f4: a9 e4 ldi r26, 0x49 ; 73 + f6: b0 e4 ldi r27, 0x40 ; 64 + f8: 8f 83 std Y+7, r24 ; 0x07 + fa: 98 87 std Y+8, r25 ; 0x08 + fc: a9 87 std Y+9, r26 ; 0x09 + fe: ba 87 std Y+10, r27 ; 0x0a + float fcnt=0; + 100: 80 e0 ldi r24, 0x00 ; 0 + 102: 90 e0 ldi r25, 0x00 ; 0 + 104: dc 01 movw r26, r24 + 106: 89 83 std Y+1, r24 ; 0x01 + 108: 9a 83 std Y+2, r25 ; 0x02 + 10a: ab 83 std Y+3, r26 ; 0x03 + 10c: bc 83 std Y+4, r27 ; 0x04 + float fd; + float dx=2 * pi / SAMPLES; // fill the 512 byte bufferarry + 10e: 2f 81 ldd r18, Y+7 ; 0x07 + 110: 38 85 ldd r19, Y+8 ; 0x08 + 112: 49 85 ldd r20, Y+9 ; 0x09 + 114: 5a 85 ldd r21, Y+10 ; 0x0a + 116: ca 01 movw r24, r20 + 118: b9 01 movw r22, r18 + 11a: 0e 94 77 05 call 0xaee ; 0xaee <__addsf3> + 11e: dc 01 movw r26, r24 + 120: cb 01 movw r24, r22 + 122: bc 01 movw r22, r24 + 124: cd 01 movw r24, r26 + 126: 20 e0 ldi r18, 0x00 ; 0 + 128: 30 e0 ldi r19, 0x00 ; 0 + 12a: 40 e0 ldi r20, 0x00 ; 0 + 12c: 54 e4 ldi r21, 0x44 ; 68 + 12e: 0e 94 cf 06 call 0xd9e ; 0xd9e <__divsf3> + 132: dc 01 movw r26, r24 + 134: cb 01 movw r24, r22 + 136: 8b 87 std Y+11, r24 ; 0x0b + 138: 9c 87 std Y+12, r25 ; 0x0c + 13a: ad 87 std Y+13, r26 ; 0x0d + 13c: be 87 std Y+14, r27 ; 0x0e + int bb; + for (int i = 0; i <SAMPLES ; i++){ // with 50 periods sinewawe + 13e: 1e 82 std Y+6, r1 ; 0x06 + 140: 1d 82 std Y+5, r1 ; 0x05 + 142: 48 c0 rjmp .+144 ; 0x1d4 <_Z13fill_sinewavev+0xf8> + fd= 127*sin(fcnt); // fundamental tone + 144: 89 81 ldd r24, Y+1 ; 0x01 + 146: 9a 81 ldd r25, Y+2 ; 0x02 + 148: ab 81 ldd r26, Y+3 ; 0x03 + 14a: bc 81 ldd r27, Y+4 ; 0x04 + 14c: bc 01 movw r22, r24 + 14e: cd 01 movw r24, r26 + 150: 0e 94 a7 09 call 0x134e ; 0x134e <sin> + 154: dc 01 movw r26, r24 + 156: cb 01 movw r24, r22 + 158: bc 01 movw r22, r24 + 15a: cd 01 movw r24, r26 + 15c: 20 e0 ldi r18, 0x00 ; 0 + 15e: 30 e0 ldi r19, 0x00 ; 0 + 160: 4e ef ldi r20, 0xFE ; 254 + 162: 52 e4 ldi r21, 0x42 ; 66 + 164: 0e 94 d5 05 call 0xbaa ; 0xbaa <__mulsf3> + 168: dc 01 movw r26, r24 + 16a: cb 01 movw r24, r22 + 16c: 8f 87 std Y+15, r24 ; 0x0f + 16e: 98 8b std Y+16, r25 ; 0x10 + 170: a9 8b std Y+17, r26 ; 0x11 + 172: ba 8b std Y+18, r27 ; 0x12 + fcnt=fcnt+dx; // in the range of 0 to 2xpi and 1/512 increments + 174: 69 81 ldd r22, Y+1 ; 0x01 + 176: 7a 81 ldd r23, Y+2 ; 0x02 + 178: 8b 81 ldd r24, Y+3 ; 0x03 + 17a: 9c 81 ldd r25, Y+4 ; 0x04 + 17c: 2b 85 ldd r18, Y+11 ; 0x0b + 17e: 3c 85 ldd r19, Y+12 ; 0x0c + 180: 4d 85 ldd r20, Y+13 ; 0x0d + 182: 5e 85 ldd r21, Y+14 ; 0x0e + 184: 0e 94 77 05 call 0xaee ; 0xaee <__addsf3> + 188: dc 01 movw r26, r24 + 18a: cb 01 movw r24, r22 + 18c: 89 83 std Y+1, r24 ; 0x01 + 18e: 9a 83 std Y+2, r25 ; 0x02 + 190: ab 83 std Y+3, r26 ; 0x03 + 192: bc 83 std Y+4, r27 ; 0x04 + bb=128+fd; // add dc offset to sinewawe + 194: 6f 85 ldd r22, Y+15 ; 0x0f + 196: 78 89 ldd r23, Y+16 ; 0x10 + 198: 89 89 ldd r24, Y+17 ; 0x11 + 19a: 9a 89 ldd r25, Y+18 ; 0x12 + 19c: 20 e0 ldi r18, 0x00 ; 0 + 19e: 30 e0 ldi r19, 0x00 ; 0 + 1a0: 40 e0 ldi r20, 0x00 ; 0 + 1a2: 53 e4 ldi r21, 0x43 ; 67 + 1a4: 0e 94 77 05 call 0xaee ; 0xaee <__addsf3> + 1a8: dc 01 movw r26, r24 + 1aa: cb 01 movw r24, r22 + 1ac: bc 01 movw r22, r24 + 1ae: cd 01 movw r24, r26 + 1b0: 0e 94 7d 07 call 0xefa ; 0xefa <__fixsfsi> + 1b4: dc 01 movw r26, r24 + 1b6: cb 01 movw r24, r22 + 1b8: 9c 8b std Y+20, r25 ; 0x14 + 1ba: 8b 8b std Y+19, r24 ; 0x13 + dd[i]=bb; // write value into array + 1bc: 2b 89 ldd r18, Y+19 ; 0x13 + 1be: 8d 81 ldd r24, Y+5 ; 0x05 + 1c0: 9e 81 ldd r25, Y+6 ; 0x06 + 1c2: 86 5d subi r24, 0xD6 ; 214 + 1c4: 9e 4f sbci r25, 0xFE ; 254 + 1c6: fc 01 movw r30, r24 + 1c8: 20 83 st Z, r18 + float pi = 3.141592; + float fcnt=0; + float fd; + float dx=2 * pi / SAMPLES; // fill the 512 byte bufferarry + int bb; + for (int i = 0; i <SAMPLES ; i++){ // with 50 periods sinewawe + 1ca: 8d 81 ldd r24, Y+5 ; 0x05 + 1cc: 9e 81 ldd r25, Y+6 ; 0x06 + 1ce: 01 96 adiw r24, 0x01 ; 1 + 1d0: 9e 83 std Y+6, r25 ; 0x06 + 1d2: 8d 83 std Y+5, r24 ; 0x05 + 1d4: 21 e0 ldi r18, 0x01 ; 1 + 1d6: 8d 81 ldd r24, Y+5 ; 0x05 + 1d8: 9e 81 ldd r25, Y+6 ; 0x06 + 1da: f2 e0 ldi r31, 0x02 ; 2 + 1dc: 80 30 cpi r24, 0x00 ; 0 + 1de: 9f 07 cpc r25, r31 + 1e0: 0c f0 brlt .+2 ; 0x1e4 <_Z13fill_sinewavev+0x108> + 1e2: 20 e0 ldi r18, 0x00 ; 0 + 1e4: 22 23 and r18, r18 + 1e6: 09 f0 breq .+2 ; 0x1ea <_Z13fill_sinewavev+0x10e> + 1e8: ad cf rjmp .-166 ; 0x144 <_Z13fill_sinewavev+0x68> + fd= 127*sin(fcnt); // fundamental tone + fcnt=fcnt+dx; // in the range of 0 to 2xpi and 1/512 increments + bb=128+fd; // add dc offset to sinewawe + dd[i]=bb; // write value into array + } +} + 1ea: 64 96 adiw r28, 0x14 ; 20 + 1ec: 0f b6 in r0, 0x3f ; 63 + 1ee: f8 94 cli + 1f0: de bf out 0x3e, r29 ; 62 + 1f2: 0f be out 0x3f, r0 ; 63 + 1f4: cd bf out 0x3d, r28 ; 61 + 1f6: cf 91 pop r28 + 1f8: df 91 pop r29 + 1fa: 08 95 ret + +000001fc <main>: + +int main(){ + 1fc: df 93 push r29 + 1fe: cf 93 push r28 + 200: 0f 92 push r0 + 202: cd b7 in r28, 0x3d ; 61 + 204: de b7 in r29, 0x3e ; 62 + + //init(); -- init Arduino library - delay, PWM setup messes with timers, millis(), micros() etc don't work without it + fill_sinewave(); + 206: 0e 94 6e 00 call 0xdc ; 0xdc <_Z13fill_sinewavev> + Serial.begin(115200); + 20a: 8e e2 ldi r24, 0x2E ; 46 + 20c: 93 e0 ldi r25, 0x03 ; 3 + 20e: 40 e0 ldi r20, 0x00 ; 0 + 210: 52 ec ldi r21, 0xC2 ; 194 + 212: 61 e0 ldi r22, 0x01 ; 1 + 214: 70 e0 ldi r23, 0x00 ; 0 + 216: 0e 94 e2 01 call 0x3c4 ; 0x3c4 <_ZN14HardwareSerial5beginEl> + + DDRB |= (1 << 5); // port B bit 6 = arduino pin 13 + 21a: 84 e2 ldi r24, 0x24 ; 36 + 21c: 90 e0 ldi r25, 0x00 ; 0 + 21e: 24 e2 ldi r18, 0x24 ; 36 + 220: 30 e0 ldi r19, 0x00 ; 0 + 222: f9 01 movw r30, r18 + 224: 20 81 ld r18, Z + 226: 20 62 ori r18, 0x20 ; 32 + 228: fc 01 movw r30, r24 + 22a: 20 83 st Z, r18 + PORTB = (1 << 5); //turn on to start + 22c: 85 e2 ldi r24, 0x25 ; 37 + 22e: 90 e0 ldi r25, 0x00 ; 0 + 230: 20 e2 ldi r18, 0x20 ; 32 + 232: fc 01 movw r30, r24 + 234: 20 83 st Z, r18 + TCCR1B |= (1 << WGM12); // Configure timer 1 for CTC mode + 236: 81 e8 ldi r24, 0x81 ; 129 + 238: 90 e0 ldi r25, 0x00 ; 0 + 23a: 21 e8 ldi r18, 0x81 ; 129 + 23c: 30 e0 ldi r19, 0x00 ; 0 + 23e: f9 01 movw r30, r18 + 240: 20 81 ld r18, Z + 242: 28 60 ori r18, 0x08 ; 8 + 244: fc 01 movw r30, r24 + 246: 20 83 st Z, r18 + TIMSK1 |= (1 << OCIE1A); // Enable CTC interrupt + 248: 8f e6 ldi r24, 0x6F ; 111 + 24a: 90 e0 ldi r25, 0x00 ; 0 + 24c: 2f e6 ldi r18, 0x6F ; 111 + 24e: 30 e0 ldi r19, 0x00 ; 0 + 250: f9 01 movw r30, r18 + 252: 20 81 ld r18, Z + 254: 22 60 ori r18, 0x02 ; 2 + 256: fc 01 movw r30, r24 + 258: 20 83 st Z, r18 + OCR1A = 390; // Set CTC compare value: final speed = CPU clocks / prescaler / CTC 15625=1Hz + 25a: 88 e8 ldi r24, 0x88 ; 136 + 25c: 90 e0 ldi r25, 0x00 ; 0 + 25e: 26 e8 ldi r18, 0x86 ; 134 + 260: 31 e0 ldi r19, 0x01 ; 1 + 262: fc 01 movw r30, r24 + 264: 31 83 std Z+1, r19 ; 0x01 + 266: 20 83 st Z, r18 + sei(); // Enable global interrupts + 268: 78 94 sei + 26a: 03 c0 rjmp .+6 ; 0x272 <main+0x76> + + while(1) { + 26c: 00 00 nop + 26e: 01 c0 rjmp .+2 ; 0x272 <main+0x76> + 270: 00 00 nop + if (Serial.available() > 0) { + 272: 8e e2 ldi r24, 0x2E ; 46 + 274: 93 e0 ldi r25, 0x03 ; 3 + 276: 0e 94 df 01 call 0x3be ; 0x3be <_ZN14HardwareSerial9availableEv> + 27a: 21 e0 ldi r18, 0x01 ; 1 + 27c: 18 16 cp r1, r24 + 27e: 19 06 cpc r1, r25 + 280: 0c f0 brlt .+2 ; 0x284 <main+0x88> + 282: 20 e0 ldi r18, 0x00 ; 0 + 284: 22 23 and r18, r18 + 286: 91 f3 breq .-28 ; 0x26c <main+0x70> + PORTB ^= (1 << 5); + 288: 85 e2 ldi r24, 0x25 ; 37 + 28a: 90 e0 ldi r25, 0x00 ; 0 + 28c: 25 e2 ldi r18, 0x25 ; 37 + 28e: 30 e0 ldi r19, 0x00 ; 0 + 290: f9 01 movw r30, r18 + 292: 30 81 ld r19, Z + 294: 20 e2 ldi r18, 0x20 ; 32 + 296: 23 27 eor r18, r19 + 298: fc 01 movw r30, r24 + 29a: 20 83 st Z, r18 + byte in=Serial.read(); + 29c: 8e e2 ldi r24, 0x2E ; 46 + 29e: 93 e0 ldi r25, 0x03 ; 3 + 2a0: 0e 94 dc 01 call 0x3b8 ; 0x3b8 <_ZN14HardwareSerial4readEv> + 2a4: 89 83 std Y+1, r24 ; 0x01 + if (in=='a') { + 2a6: 89 81 ldd r24, Y+1 ; 0x01 + 2a8: 81 36 cpi r24, 0x61 ; 97 + 2aa: 11 f7 brne .-60 ; 0x270 <main+0x74> + Serial.println("Welcome to electic"); + 2ac: 8e e2 ldi r24, 0x2E ; 46 + 2ae: 93 e0 ldi r25, 0x03 ; 3 + 2b0: 20 e0 ldi r18, 0x00 ; 0 + 2b2: 31 e0 ldi r19, 0x01 ; 1 + 2b4: b9 01 movw r22, r18 + 2b6: 0e 94 36 02 call 0x46c ; 0x46c <_ZN5Print7printlnEPKc> + TCCR1B |= ((1<<CS10)|(1 << CS12)); // Set up timer at Fcpu/1024 + 2ba: 81 e8 ldi r24, 0x81 ; 129 + 2bc: 90 e0 ldi r25, 0x00 ; 0 + 2be: 21 e8 ldi r18, 0x81 ; 129 + 2c0: 30 e0 ldi r19, 0x00 ; 0 + 2c2: f9 01 movw r30, r18 + 2c4: 20 81 ld r18, Z + 2c6: 25 60 ori r18, 0x05 ; 5 + 2c8: fc 01 movw r30, r24 + 2ca: 20 83 st Z, r18 + TCCR1B |= (1 << WGM12); // Configure timer 1 for CTC mode + TIMSK1 |= (1 << OCIE1A); // Enable CTC interrupt + OCR1A = 390; // Set CTC compare value: final speed = CPU clocks / prescaler / CTC 15625=1Hz + sei(); // Enable global interrupts + + while(1) { + 2cc: d2 cf rjmp .-92 ; 0x272 <main+0x76> + +000002ce <__vector_11>: + } + } +} + +ISR(TIMER1_COMPA_vect) +{ + 2ce: 1f 92 push r1 + 2d0: 0f 92 push r0 + 2d2: 0f b6 in r0, 0x3f ; 63 + 2d4: 0f 92 push r0 + 2d6: 11 24 eor r1, r1 + 2d8: 2f 93 push r18 + 2da: 3f 93 push r19 + 2dc: 4f 93 push r20 + 2de: 5f 93 push r21 + 2e0: 6f 93 push r22 + 2e2: 7f 93 push r23 + 2e4: 8f 93 push r24 + 2e6: 9f 93 push r25 + 2e8: af 93 push r26 + 2ea: bf 93 push r27 + 2ec: ef 93 push r30 + 2ee: ff 93 push r31 + 2f0: df 93 push r29 + 2f2: cf 93 push r28 + 2f4: 00 d0 rcall .+0 ; 0x2f6 <__vector_11+0x28> + 2f6: cd b7 in r28, 0x3d ; 61 + 2f8: de b7 in r29, 0x3e ; 62 + //if (enabled) + PORTB ^= (1 << 5); + 2fa: 85 e2 ldi r24, 0x25 ; 37 + 2fc: 90 e0 ldi r25, 0x00 ; 0 + 2fe: 25 e2 ldi r18, 0x25 ; 37 + 300: 30 e0 ldi r19, 0x00 ; 0 + 302: f9 01 movw r30, r18 + 304: 30 81 ld r19, Z + 306: 20 e2 ldi r18, 0x20 ; 32 + 308: 23 27 eor r18, r19 + 30a: fc 01 movw r30, r24 + 30c: 20 83 st Z, r18 + for (int i=0;i<PACKETSIZE;i++) { + 30e: 1a 82 std Y+2, r1 ; 0x02 + 310: 19 82 std Y+1, r1 ; 0x01 + 312: 20 c0 rjmp .+64 ; 0x354 <__vector_11+0x86> + Serial.write(dd[sample]); + 314: 80 91 2c 03 lds r24, 0x032C + 318: 90 91 2d 03 lds r25, 0x032D + 31c: 86 5d subi r24, 0xD6 ; 214 + 31e: 9e 4f sbci r25, 0xFE ; 254 + 320: fc 01 movw r30, r24 + 322: 20 81 ld r18, Z + 324: 8e e2 ldi r24, 0x2E ; 46 + 326: 93 e0 ldi r25, 0x03 ; 3 + 328: 62 2f mov r22, r18 + 32a: 0e 94 d5 01 call 0x3aa ; 0x3aa <_ZN14HardwareSerial5writeEh> + sample=(sample+1)%SAMPLES; + 32e: 80 91 2c 03 lds r24, 0x032C + 332: 90 91 2d 03 lds r25, 0x032D + 336: 01 96 adiw r24, 0x01 ; 1 + 338: 20 e0 ldi r18, 0x00 ; 0 + 33a: 32 e0 ldi r19, 0x02 ; 2 + 33c: b9 01 movw r22, r18 + 33e: 0e 94 06 09 call 0x120c ; 0x120c <__divmodhi4> + 342: 90 93 2d 03 sts 0x032D, r25 + 346: 80 93 2c 03 sts 0x032C, r24 + +ISR(TIMER1_COMPA_vect) +{ + //if (enabled) + PORTB ^= (1 << 5); + for (int i=0;i<PACKETSIZE;i++) { + 34a: 89 81 ldd r24, Y+1 ; 0x01 + 34c: 9a 81 ldd r25, Y+2 ; 0x02 + 34e: 01 96 adiw r24, 0x01 ; 1 + 350: 9a 83 std Y+2, r25 ; 0x02 + 352: 89 83 std Y+1, r24 ; 0x01 + 354: 21 e0 ldi r18, 0x01 ; 1 + 356: 89 81 ldd r24, Y+1 ; 0x01 + 358: 9a 81 ldd r25, Y+2 ; 0x02 + 35a: f1 e0 ldi r31, 0x01 ; 1 + 35c: 80 34 cpi r24, 0x40 ; 64 + 35e: 9f 07 cpc r25, r31 + 360: 0c f0 brlt .+2 ; 0x364 <__vector_11+0x96> + 362: 20 e0 ldi r18, 0x00 ; 0 + 364: 22 23 and r18, r18 + 366: b1 f6 brne .-84 ; 0x314 <__vector_11+0x46> + Serial.write(dd[sample]); + sample=(sample+1)%SAMPLES; + } + Serial.write((byte)0); + 368: 8e e2 ldi r24, 0x2E ; 46 + 36a: 93 e0 ldi r25, 0x03 ; 3 + 36c: 60 e0 ldi r22, 0x00 ; 0 + 36e: 0e 94 d5 01 call 0x3aa ; 0x3aa <_ZN14HardwareSerial5writeEh> +} + 372: 0f 90 pop r0 + 374: 0f 90 pop r0 + 376: cf 91 pop r28 + 378: df 91 pop r29 + 37a: ff 91 pop r31 + 37c: ef 91 pop r30 + 37e: bf 91 pop r27 + 380: af 91 pop r26 + 382: 9f 91 pop r25 + 384: 8f 91 pop r24 + 386: 7f 91 pop r23 + 388: 6f 91 pop r22 + 38a: 5f 91 pop r21 + 38c: 4f 91 pop r20 + 38e: 3f 91 pop r19 + 390: 2f 91 pop r18 + 392: 0f 90 pop r0 + 394: 0f be out 0x3f, r0 ; 63 + 396: 0f 90 pop r0 + 398: 1f 90 pop r1 + 39a: 18 95 reti + +0000039c <_GLOBAL__I__ZN14HardwareSerial5beginEl>: + 39c: 8f e1 ldi r24, 0x1F ; 31 + 39e: 91 e0 ldi r25, 0x01 ; 1 + 3a0: 90 93 2f 03 sts 0x032F, r25 + 3a4: 80 93 2e 03 sts 0x032E, r24 + 3a8: 08 95 ret + +000003aa <_ZN14HardwareSerial5writeEh>: + 3aa: 86 2f mov r24, r22 + 3ac: 0e 94 af 03 call 0x75e ; 0x75e <serialWrite> + 3b0: 08 95 ret + +000003b2 <_ZN14HardwareSerial5flushEv>: + 3b2: 0e 94 e7 03 call 0x7ce ; 0x7ce <serialFlush> + 3b6: 08 95 ret + +000003b8 <_ZN14HardwareSerial4readEv>: + 3b8: 0e 94 c8 03 call 0x790 ; 0x790 <serialRead> + 3bc: 08 95 ret + +000003be <_ZN14HardwareSerial9availableEv>: + 3be: 0e 94 b7 03 call 0x76e ; 0x76e <serialAvailable> + 3c2: 08 95 ret + +000003c4 <_ZN14HardwareSerial5beginEl>: + 3c4: cb 01 movw r24, r22 + 3c6: ba 01 movw r22, r20 + 3c8: 0e 94 76 03 call 0x6ec ; 0x6ec <beginSerial> + 3cc: 08 95 ret + +000003ce <_ZN5Print5printEh>: + 3ce: dc 01 movw r26, r24 + 3d0: ed 91 ld r30, X+ + 3d2: fc 91 ld r31, X + 3d4: 01 90 ld r0, Z+ + 3d6: f0 81 ld r31, Z + 3d8: e0 2d mov r30, r0 + 3da: 09 95 icall + 3dc: 08 95 ret + +000003de <_ZN5Print5printEc>: + 3de: dc 01 movw r26, r24 + 3e0: ed 91 ld r30, X+ + 3e2: fc 91 ld r31, X + 3e4: 01 90 ld r0, Z+ + 3e6: f0 81 ld r31, Z + 3e8: e0 2d mov r30, r0 + 3ea: 09 95 icall + 3ec: 08 95 ret + +000003ee <_ZN5Print5printEPKc>: + 3ee: 0f 93 push r16 + 3f0: 1f 93 push r17 + 3f2: cf 93 push r28 + 3f4: df 93 push r29 + 3f6: 8c 01 movw r16, r24 + 3f8: eb 01 movw r28, r22 + 3fa: 09 c0 rjmp .+18 ; 0x40e <_ZN5Print5printEPKc+0x20> + 3fc: 21 96 adiw r28, 0x01 ; 1 + 3fe: d8 01 movw r26, r16 + 400: ed 91 ld r30, X+ + 402: fc 91 ld r31, X + 404: 01 90 ld r0, Z+ + 406: f0 81 ld r31, Z + 408: e0 2d mov r30, r0 + 40a: c8 01 movw r24, r16 + 40c: 09 95 icall + 40e: 68 81 ld r22, Y + 410: 66 23 and r22, r22 + 412: a1 f7 brne .-24 ; 0x3fc <_ZN5Print5printEPKc+0xe> + 414: df 91 pop r29 + 416: cf 91 pop r28 + 418: 1f 91 pop r17 + 41a: 0f 91 pop r16 + 41c: 08 95 ret + +0000041e <_ZN5Print7printlnEv>: + 41e: 0f 93 push r16 + 420: 1f 93 push r17 + 422: 8c 01 movw r16, r24 + 424: dc 01 movw r26, r24 + 426: ed 91 ld r30, X+ + 428: fc 91 ld r31, X + 42a: 01 90 ld r0, Z+ + 42c: f0 81 ld r31, Z + 42e: e0 2d mov r30, r0 + 430: 6d e0 ldi r22, 0x0D ; 13 + 432: 09 95 icall + 434: d8 01 movw r26, r16 + 436: ed 91 ld r30, X+ + 438: fc 91 ld r31, X + 43a: 01 90 ld r0, Z+ + 43c: f0 81 ld r31, Z + 43e: e0 2d mov r30, r0 + 440: 6a e0 ldi r22, 0x0A ; 10 + 442: c8 01 movw r24, r16 + 444: 09 95 icall + 446: 1f 91 pop r17 + 448: 0f 91 pop r16 + 44a: 08 95 ret + +0000044c <_ZN5Print7printlnEc>: + 44c: 0f 93 push r16 + 44e: 1f 93 push r17 + 450: 8c 01 movw r16, r24 + 452: dc 01 movw r26, r24 + 454: ed 91 ld r30, X+ + 456: fc 91 ld r31, X + 458: 01 90 ld r0, Z+ + 45a: f0 81 ld r31, Z + 45c: e0 2d mov r30, r0 + 45e: 09 95 icall + 460: c8 01 movw r24, r16 + 462: 0e 94 0f 02 call 0x41e ; 0x41e <_ZN5Print7printlnEv> + 466: 1f 91 pop r17 + 468: 0f 91 pop r16 + 46a: 08 95 ret + +0000046c <_ZN5Print7printlnEPKc>: + 46c: 0f 93 push r16 + 46e: 1f 93 push r17 + 470: 8c 01 movw r16, r24 + 472: 0e 94 f7 01 call 0x3ee ; 0x3ee <_ZN5Print5printEPKc> + 476: c8 01 movw r24, r16 + 478: 0e 94 0f 02 call 0x41e ; 0x41e <_ZN5Print7printlnEv> + 47c: 1f 91 pop r17 + 47e: 0f 91 pop r16 + 480: 08 95 ret + +00000482 <_ZN5Print7printlnEh>: + 482: 0f 93 push r16 + 484: 1f 93 push r17 + 486: 8c 01 movw r16, r24 + 488: dc 01 movw r26, r24 + 48a: ed 91 ld r30, X+ + 48c: fc 91 ld r31, X + 48e: 01 90 ld r0, Z+ + 490: f0 81 ld r31, Z + 492: e0 2d mov r30, r0 + 494: 09 95 icall + 496: c8 01 movw r24, r16 + 498: 0e 94 0f 02 call 0x41e ; 0x41e <_ZN5Print7printlnEv> + 49c: 1f 91 pop r17 + 49e: 0f 91 pop r16 + 4a0: 08 95 ret + +000004a2 <_ZN5Print11printNumberEmh>: + 4a2: 2f 92 push r2 + 4a4: 3f 92 push r3 + 4a6: 4f 92 push r4 + 4a8: 5f 92 push r5 + 4aa: 6f 92 push r6 + 4ac: 7f 92 push r7 + 4ae: 8f 92 push r8 + 4b0: 9f 92 push r9 + 4b2: af 92 push r10 + 4b4: bf 92 push r11 + 4b6: cf 92 push r12 + 4b8: df 92 push r13 + 4ba: ef 92 push r14 + 4bc: ff 92 push r15 + 4be: 0f 93 push r16 + 4c0: 1f 93 push r17 + 4c2: df 93 push r29 + 4c4: cf 93 push r28 + 4c6: cd b7 in r28, 0x3d ; 61 + 4c8: de b7 in r29, 0x3e ; 62 + 4ca: a0 97 sbiw r28, 0x20 ; 32 + 4cc: 0f b6 in r0, 0x3f ; 63 + 4ce: f8 94 cli + 4d0: de bf out 0x3e, r29 ; 62 + 4d2: 0f be out 0x3f, r0 ; 63 + 4d4: cd bf out 0x3d, r28 ; 61 + 4d6: 1c 01 movw r2, r24 + 4d8: 6a 01 movw r12, r20 + 4da: 7b 01 movw r14, r22 + 4dc: 41 15 cp r20, r1 + 4de: 51 05 cpc r21, r1 + 4e0: 61 05 cpc r22, r1 + 4e2: 71 05 cpc r23, r1 + 4e4: 49 f4 brne .+18 ; 0x4f8 <_ZN5Print11printNumberEmh+0x56> + 4e6: dc 01 movw r26, r24 + 4e8: ed 91 ld r30, X+ + 4ea: fc 91 ld r31, X + 4ec: 01 90 ld r0, Z+ + 4ee: f0 81 ld r31, Z + 4f0: e0 2d mov r30, r0 + 4f2: 60 e3 ldi r22, 0x30 ; 48 + 4f4: 09 95 icall + 4f6: 54 c0 rjmp .+168 ; 0x5a0 <_ZN5Print11printNumberEmh+0xfe> + 4f8: 88 24 eor r8, r8 + 4fa: 99 24 eor r9, r9 + 4fc: 54 01 movw r10, r8 + 4fe: 42 2e mov r4, r18 + 500: 55 24 eor r5, r5 + 502: 66 24 eor r6, r6 + 504: 77 24 eor r7, r7 + 506: 01 e0 ldi r16, 0x01 ; 1 + 508: 10 e0 ldi r17, 0x00 ; 0 + 50a: 0c 0f add r16, r28 + 50c: 1d 1f adc r17, r29 + 50e: 08 0d add r16, r8 + 510: 19 1d adc r17, r9 + 512: c7 01 movw r24, r14 + 514: b6 01 movw r22, r12 + 516: a3 01 movw r20, r6 + 518: 92 01 movw r18, r4 + 51a: 0e 94 19 09 call 0x1232 ; 0x1232 <__udivmodsi4> + 51e: f8 01 movw r30, r16 + 520: 60 83 st Z, r22 + 522: 08 94 sec + 524: 81 1c adc r8, r1 + 526: 91 1c adc r9, r1 + 528: a1 1c adc r10, r1 + 52a: b1 1c adc r11, r1 + 52c: c7 01 movw r24, r14 + 52e: b6 01 movw r22, r12 + 530: a3 01 movw r20, r6 + 532: 92 01 movw r18, r4 + 534: 0e 94 19 09 call 0x1232 ; 0x1232 <__udivmodsi4> + 538: c9 01 movw r24, r18 + 53a: da 01 movw r26, r20 + 53c: 6c 01 movw r12, r24 + 53e: 7d 01 movw r14, r26 + 540: c1 14 cp r12, r1 + 542: d1 04 cpc r13, r1 + 544: e1 04 cpc r14, r1 + 546: f1 04 cpc r15, r1 + 548: f1 f6 brne .-68 ; 0x506 <_ZN5Print11printNumberEmh+0x64> + 54a: 81 e0 ldi r24, 0x01 ; 1 + 54c: e8 2e mov r14, r24 + 54e: f1 2c mov r15, r1 + 550: ec 0e add r14, r28 + 552: fd 1e adc r15, r29 + 554: e8 0c add r14, r8 + 556: f9 1c adc r15, r9 + 558: 3e 01 movw r6, r28 + 55a: 08 94 sec + 55c: 61 1c adc r6, r1 + 55e: 71 1c adc r7, r1 + 560: d5 01 movw r26, r10 + 562: c4 01 movw r24, r8 + 564: 01 97 sbiw r24, 0x01 ; 1 + 566: a1 09 sbc r26, r1 + 568: b1 09 sbc r27, r1 + 56a: 6c 01 movw r12, r24 + 56c: c8 18 sub r12, r8 + 56e: d9 08 sbc r13, r9 + 570: 14 c0 rjmp .+40 ; 0x59a <_ZN5Print11printNumberEmh+0xf8> + 572: f6 01 movw r30, r12 + 574: ee 0d add r30, r14 + 576: ff 1d adc r31, r15 + 578: 60 81 ld r22, Z + 57a: 6a 30 cpi r22, 0x0A ; 10 + 57c: 10 f4 brcc .+4 ; 0x582 <_ZN5Print11printNumberEmh+0xe0> + 57e: 60 5d subi r22, 0xD0 ; 208 + 580: 01 c0 rjmp .+2 ; 0x584 <_ZN5Print11printNumberEmh+0xe2> + 582: 69 5c subi r22, 0xC9 ; 201 + 584: d1 01 movw r26, r2 + 586: ed 91 ld r30, X+ + 588: fc 91 ld r31, X + 58a: 01 90 ld r0, Z+ + 58c: f0 81 ld r31, Z + 58e: e0 2d mov r30, r0 + 590: c1 01 movw r24, r2 + 592: 09 95 icall + 594: 08 94 sec + 596: e1 08 sbc r14, r1 + 598: f1 08 sbc r15, r1 + 59a: 6e 14 cp r6, r14 + 59c: 7f 04 cpc r7, r15 + 59e: 49 f7 brne .-46 ; 0x572 <_ZN5Print11printNumberEmh+0xd0> + 5a0: a0 96 adiw r28, 0x20 ; 32 + 5a2: 0f b6 in r0, 0x3f ; 63 + 5a4: f8 94 cli + 5a6: de bf out 0x3e, r29 ; 62 + 5a8: 0f be out 0x3f, r0 ; 63 + 5aa: cd bf out 0x3d, r28 ; 61 + 5ac: cf 91 pop r28 + 5ae: df 91 pop r29 + 5b0: 1f 91 pop r17 + 5b2: 0f 91 pop r16 + 5b4: ff 90 pop r15 + 5b6: ef 90 pop r14 + 5b8: df 90 pop r13 + 5ba: cf 90 pop r12 + 5bc: bf 90 pop r11 + 5be: af 90 pop r10 + 5c0: 9f 90 pop r9 + 5c2: 8f 90 pop r8 + 5c4: 7f 90 pop r7 + 5c6: 6f 90 pop r6 + 5c8: 5f 90 pop r5 + 5ca: 4f 90 pop r4 + 5cc: 3f 90 pop r3 + 5ce: 2f 90 pop r2 + 5d0: 08 95 ret + +000005d2 <_ZN5Print5printEm>: + 5d2: 2a e0 ldi r18, 0x0A ; 10 + 5d4: 0e 94 51 02 call 0x4a2 ; 0x4a2 <_ZN5Print11printNumberEmh> + 5d8: 08 95 ret + +000005da <_ZN5Print7printlnEm>: + 5da: 0f 93 push r16 + 5dc: 1f 93 push r17 + 5de: 8c 01 movw r16, r24 + 5e0: 0e 94 e9 02 call 0x5d2 ; 0x5d2 <_ZN5Print5printEm> + 5e4: c8 01 movw r24, r16 + 5e6: 0e 94 0f 02 call 0x41e ; 0x41e <_ZN5Print7printlnEv> + 5ea: 1f 91 pop r17 + 5ec: 0f 91 pop r16 + 5ee: 08 95 ret + +000005f0 <_ZN5Print5printEj>: + 5f0: ab 01 movw r20, r22 + 5f2: 60 e0 ldi r22, 0x00 ; 0 + 5f4: 70 e0 ldi r23, 0x00 ; 0 + 5f6: 0e 94 e9 02 call 0x5d2 ; 0x5d2 <_ZN5Print5printEm> + 5fa: 08 95 ret + +000005fc <_ZN5Print7printlnEj>: + 5fc: 0f 93 push r16 + 5fe: 1f 93 push r17 + 600: 8c 01 movw r16, r24 + 602: ab 01 movw r20, r22 + 604: 60 e0 ldi r22, 0x00 ; 0 + 606: 70 e0 ldi r23, 0x00 ; 0 + 608: 0e 94 e9 02 call 0x5d2 ; 0x5d2 <_ZN5Print5printEm> + 60c: c8 01 movw r24, r16 + 60e: 0e 94 0f 02 call 0x41e ; 0x41e <_ZN5Print7printlnEv> + 612: 1f 91 pop r17 + 614: 0f 91 pop r16 + 616: 08 95 ret + +00000618 <_ZN5Print5printEl>: + 618: ef 92 push r14 + 61a: ff 92 push r15 + 61c: 0f 93 push r16 + 61e: 1f 93 push r17 + 620: cf 93 push r28 + 622: df 93 push r29 + 624: ec 01 movw r28, r24 + 626: 7a 01 movw r14, r20 + 628: 8b 01 movw r16, r22 + 62a: 77 ff sbrs r23, 7 + 62c: 0f c0 rjmp .+30 ; 0x64c <_ZN5Print5printEl+0x34> + 62e: e8 81 ld r30, Y + 630: f9 81 ldd r31, Y+1 ; 0x01 + 632: 01 90 ld r0, Z+ + 634: f0 81 ld r31, Z + 636: e0 2d mov r30, r0 + 638: 6d e2 ldi r22, 0x2D ; 45 + 63a: 09 95 icall + 63c: 10 95 com r17 + 63e: 00 95 com r16 + 640: f0 94 com r15 + 642: e0 94 com r14 + 644: e1 1c adc r14, r1 + 646: f1 1c adc r15, r1 + 648: 01 1d adc r16, r1 + 64a: 11 1d adc r17, r1 + 64c: 2a e0 ldi r18, 0x0A ; 10 + 64e: b8 01 movw r22, r16 + 650: a7 01 movw r20, r14 + 652: ce 01 movw r24, r28 + 654: 0e 94 51 02 call 0x4a2 ; 0x4a2 <_ZN5Print11printNumberEmh> + 658: df 91 pop r29 + 65a: cf 91 pop r28 + 65c: 1f 91 pop r17 + 65e: 0f 91 pop r16 + 660: ff 90 pop r15 + 662: ef 90 pop r14 + 664: 08 95 ret + +00000666 <_ZN5Print7printlnEl>: + 666: 0f 93 push r16 + 668: 1f 93 push r17 + 66a: 8c 01 movw r16, r24 + 66c: 0e 94 0c 03 call 0x618 ; 0x618 <_ZN5Print5printEl> + 670: c8 01 movw r24, r16 + 672: 0e 94 0f 02 call 0x41e ; 0x41e <_ZN5Print7printlnEv> + 676: 1f 91 pop r17 + 678: 0f 91 pop r16 + 67a: 08 95 ret + +0000067c <_ZN5Print5printEi>: + 67c: ab 01 movw r20, r22 + 67e: 66 27 eor r22, r22 + 680: 57 fd sbrc r21, 7 + 682: 60 95 com r22 + 684: 76 2f mov r23, r22 + 686: 0e 94 0c 03 call 0x618 ; 0x618 <_ZN5Print5printEl> + 68a: 08 95 ret + +0000068c <_ZN5Print7printlnEi>: + 68c: 0f 93 push r16 + 68e: 1f 93 push r17 + 690: 8c 01 movw r16, r24 + 692: ab 01 movw r20, r22 + 694: 66 27 eor r22, r22 + 696: 57 fd sbrc r21, 7 + 698: 60 95 com r22 + 69a: 76 2f mov r23, r22 + 69c: 0e 94 0c 03 call 0x618 ; 0x618 <_ZN5Print5printEl> + 6a0: c8 01 movw r24, r16 + 6a2: 0e 94 0f 02 call 0x41e ; 0x41e <_ZN5Print7printlnEv> + 6a6: 1f 91 pop r17 + 6a8: 0f 91 pop r16 + 6aa: 08 95 ret + +000006ac <_ZN5Print5printEli>: + 6ac: dc 01 movw r26, r24 + 6ae: 21 15 cp r18, r1 + 6b0: 31 05 cpc r19, r1 + 6b2: 41 f4 brne .+16 ; 0x6c4 <_ZN5Print5printEli+0x18> + 6b4: ed 91 ld r30, X+ + 6b6: fc 91 ld r31, X + 6b8: 01 90 ld r0, Z+ + 6ba: f0 81 ld r31, Z + 6bc: e0 2d mov r30, r0 + 6be: 64 2f mov r22, r20 + 6c0: 09 95 icall + 6c2: 08 95 ret + 6c4: 2a 30 cpi r18, 0x0A ; 10 + 6c6: 31 05 cpc r19, r1 + 6c8: 19 f4 brne .+6 ; 0x6d0 <_ZN5Print5printEli+0x24> + 6ca: 0e 94 0c 03 call 0x618 ; 0x618 <_ZN5Print5printEl> + 6ce: 08 95 ret + 6d0: 0e 94 51 02 call 0x4a2 ; 0x4a2 <_ZN5Print11printNumberEmh> + 6d4: 08 95 ret + +000006d6 <_ZN5Print7printlnEli>: + 6d6: 0f 93 push r16 + 6d8: 1f 93 push r17 + 6da: 8c 01 movw r16, r24 + 6dc: 0e 94 56 03 call 0x6ac ; 0x6ac <_ZN5Print5printEli> + 6e0: c8 01 movw r24, r16 + 6e2: 0e 94 0f 02 call 0x41e ; 0x41e <_ZN5Print7printlnEv> + 6e6: 1f 91 pop r17 + 6e8: 0f 91 pop r16 + 6ea: 08 95 ret + +000006ec <beginSerial>: + 6ec: ef 92 push r14 + 6ee: ff 92 push r15 + 6f0: 0f 93 push r16 + 6f2: 1f 93 push r17 + 6f4: 7b 01 movw r14, r22 + 6f6: 8c 01 movw r16, r24 + 6f8: 22 e0 ldi r18, 0x02 ; 2 + 6fa: 30 e0 ldi r19, 0x00 ; 0 + 6fc: 40 e0 ldi r20, 0x00 ; 0 + 6fe: 50 e0 ldi r21, 0x00 ; 0 + 700: 0e 94 3b 09 call 0x1276 ; 0x1276 <__divmodsi4> + 704: 20 5c subi r18, 0xC0 ; 192 + 706: 3d 4b sbci r19, 0xBD ; 189 + 708: 40 4f sbci r20, 0xF0 ; 240 + 70a: 5f 4f sbci r21, 0xFF ; 255 + 70c: ca 01 movw r24, r20 + 70e: b9 01 movw r22, r18 + 710: a8 01 movw r20, r16 + 712: 97 01 movw r18, r14 + 714: 0e 94 3b 09 call 0x1276 ; 0x1276 <__divmodsi4> + 718: c9 01 movw r24, r18 + 71a: da 01 movw r26, r20 + 71c: 01 97 sbiw r24, 0x01 ; 1 + 71e: a1 09 sbc r26, r1 + 720: b1 09 sbc r27, r1 + 722: 29 2f mov r18, r25 + 724: 3a 2f mov r19, r26 + 726: 4b 2f mov r20, r27 + 728: 55 27 eor r21, r21 + 72a: 47 fd sbrc r20, 7 + 72c: 5a 95 dec r21 + 72e: 01 96 adiw r24, 0x01 ; 1 + 730: a1 1d adc r26, r1 + 732: b1 1d adc r27, r1 + 734: 20 93 c5 00 sts 0x00C5, r18 + 738: 81 50 subi r24, 0x01 ; 1 + 73a: 80 93 c4 00 sts 0x00C4, r24 + 73e: e1 ec ldi r30, 0xC1 ; 193 + 740: f0 e0 ldi r31, 0x00 ; 0 + 742: 80 81 ld r24, Z + 744: 80 61 ori r24, 0x10 ; 16 + 746: 80 83 st Z, r24 + 748: 80 81 ld r24, Z + 74a: 88 60 ori r24, 0x08 ; 8 + 74c: 80 83 st Z, r24 + 74e: 80 81 ld r24, Z + 750: 80 68 ori r24, 0x80 ; 128 + 752: 80 83 st Z, r24 + 754: 1f 91 pop r17 + 756: 0f 91 pop r16 + 758: ff 90 pop r15 + 75a: ef 90 pop r14 + 75c: 08 95 ret + +0000075e <serialWrite>: + 75e: 98 2f mov r25, r24 + 760: 80 91 c0 00 lds r24, 0x00C0 + 764: 85 ff sbrs r24, 5 + 766: fc cf rjmp .-8 ; 0x760 <serialWrite+0x2> + 768: 90 93 c6 00 sts 0x00C6, r25 + 76c: 08 95 ret + +0000076e <serialAvailable>: + 76e: 80 91 30 03 lds r24, 0x0330 + 772: 90 91 31 03 lds r25, 0x0331 + 776: 80 58 subi r24, 0x80 ; 128 + 778: 9f 4f sbci r25, 0xFF ; 255 + 77a: 20 91 32 03 lds r18, 0x0332 + 77e: 30 91 33 03 lds r19, 0x0333 + 782: 82 1b sub r24, r18 + 784: 93 0b sbc r25, r19 + 786: 60 e8 ldi r22, 0x80 ; 128 + 788: 70 e0 ldi r23, 0x00 ; 0 + 78a: 0e 94 06 09 call 0x120c ; 0x120c <__divmodhi4> + 78e: 08 95 ret + +00000790 <serialRead>: + 790: 40 91 32 03 lds r20, 0x0332 + 794: 50 91 33 03 lds r21, 0x0333 + 798: 80 91 30 03 lds r24, 0x0330 + 79c: 90 91 31 03 lds r25, 0x0331 + 7a0: 84 17 cp r24, r20 + 7a2: 95 07 cpc r25, r21 + 7a4: 19 f4 brne .+6 ; 0x7ac <serialRead+0x1c> + 7a6: 2f ef ldi r18, 0xFF ; 255 + 7a8: 3f ef ldi r19, 0xFF ; 255 + 7aa: 0f c0 rjmp .+30 ; 0x7ca <serialRead+0x3a> + 7ac: fa 01 movw r30, r20 + 7ae: ec 5c subi r30, 0xCC ; 204 + 7b0: fc 4f sbci r31, 0xFC ; 252 + 7b2: 20 81 ld r18, Z + 7b4: ca 01 movw r24, r20 + 7b6: 01 96 adiw r24, 0x01 ; 1 + 7b8: 60 e8 ldi r22, 0x80 ; 128 + 7ba: 70 e0 ldi r23, 0x00 ; 0 + 7bc: 0e 94 06 09 call 0x120c ; 0x120c <__divmodhi4> + 7c0: 90 93 33 03 sts 0x0333, r25 + 7c4: 80 93 32 03 sts 0x0332, r24 + 7c8: 30 e0 ldi r19, 0x00 ; 0 + 7ca: c9 01 movw r24, r18 + 7cc: 08 95 ret + +000007ce <serialFlush>: + 7ce: 80 91 32 03 lds r24, 0x0332 + 7d2: 90 91 33 03 lds r25, 0x0333 + 7d6: 90 93 31 03 sts 0x0331, r25 + 7da: 80 93 30 03 sts 0x0330, r24 + 7de: 08 95 ret + +000007e0 <__vector_18>: + 7e0: 1f 92 push r1 + 7e2: 0f 92 push r0 + 7e4: 0f b6 in r0, 0x3f ; 63 + 7e6: 0f 92 push r0 + 7e8: 11 24 eor r1, r1 + 7ea: 2f 93 push r18 + 7ec: 3f 93 push r19 + 7ee: 4f 93 push r20 + 7f0: 5f 93 push r21 + 7f2: 6f 93 push r22 + 7f4: 7f 93 push r23 + 7f6: 8f 93 push r24 + 7f8: 9f 93 push r25 + 7fa: af 93 push r26 + 7fc: bf 93 push r27 + 7fe: ef 93 push r30 + 800: ff 93 push r31 + 802: 40 91 c6 00 lds r20, 0x00C6 + 806: e0 91 30 03 lds r30, 0x0330 + 80a: f0 91 31 03 lds r31, 0x0331 + 80e: cf 01 movw r24, r30 + 810: 01 96 adiw r24, 0x01 ; 1 + 812: 60 e8 ldi r22, 0x80 ; 128 + 814: 70 e0 ldi r23, 0x00 ; 0 + 816: 0e 94 06 09 call 0x120c ; 0x120c <__divmodhi4> + 81a: 9c 01 movw r18, r24 + 81c: 80 91 32 03 lds r24, 0x0332 + 820: 90 91 33 03 lds r25, 0x0333 + 824: 28 17 cp r18, r24 + 826: 39 07 cpc r19, r25 + 828: 39 f0 breq .+14 ; 0x838 <__vector_18+0x58> + 82a: ec 5c subi r30, 0xCC ; 204 + 82c: fc 4f sbci r31, 0xFC ; 252 + 82e: 40 83 st Z, r20 + 830: 30 93 31 03 sts 0x0331, r19 + 834: 20 93 30 03 sts 0x0330, r18 + 838: ff 91 pop r31 + 83a: ef 91 pop r30 + 83c: bf 91 pop r27 + 83e: af 91 pop r26 + 840: 9f 91 pop r25 + 842: 8f 91 pop r24 + 844: 7f 91 pop r23 + 846: 6f 91 pop r22 + 848: 5f 91 pop r21 + 84a: 4f 91 pop r20 + 84c: 3f 91 pop r19 + 84e: 2f 91 pop r18 + 850: 0f 90 pop r0 + 852: 0f be out 0x3f, r0 ; 63 + 854: 0f 90 pop r0 + 856: 1f 90 pop r1 + 858: 18 95 reti + +0000085a <_fpadd_parts>: + 85a: a0 e0 ldi r26, 0x00 ; 0 + 85c: b0 e0 ldi r27, 0x00 ; 0 + 85e: e3 e3 ldi r30, 0x33 ; 51 + 860: f4 e0 ldi r31, 0x04 ; 4 + 862: 0c 94 6e 09 jmp 0x12dc ; 0x12dc <__prologue_saves__+0x8> + 866: fc 01 movw r30, r24 + 868: ea 01 movw r28, r20 + 86a: 80 81 ld r24, Z + 86c: 82 30 cpi r24, 0x02 ; 2 + 86e: 08 f4 brcc .+2 ; 0x872 <_fpadd_parts+0x18> + 870: 38 c1 rjmp .+624 ; 0xae2 <__stack+0x1e3> + 872: db 01 movw r26, r22 + 874: 9c 91 ld r25, X + 876: 92 30 cpi r25, 0x02 ; 2 + 878: 08 f4 brcc .+2 ; 0x87c <_fpadd_parts+0x22> + 87a: 30 c1 rjmp .+608 ; 0xadc <__stack+0x1dd> + 87c: 84 30 cpi r24, 0x04 ; 4 + 87e: 59 f4 brne .+22 ; 0x896 <_fpadd_parts+0x3c> + 880: 94 30 cpi r25, 0x04 ; 4 + 882: 09 f0 breq .+2 ; 0x886 <_fpadd_parts+0x2c> + 884: 2e c1 rjmp .+604 ; 0xae2 <__stack+0x1e3> + 886: 91 81 ldd r25, Z+1 ; 0x01 + 888: 11 96 adiw r26, 0x01 ; 1 + 88a: 8c 91 ld r24, X + 88c: 11 97 sbiw r26, 0x01 ; 1 + 88e: 98 17 cp r25, r24 + 890: 09 f0 breq .+2 ; 0x894 <_fpadd_parts+0x3a> + 892: 21 c1 rjmp .+578 ; 0xad6 <__stack+0x1d7> + 894: 26 c1 rjmp .+588 ; 0xae2 <__stack+0x1e3> + 896: 94 30 cpi r25, 0x04 ; 4 + 898: 09 f4 brne .+2 ; 0x89c <_fpadd_parts+0x42> + 89a: 20 c1 rjmp .+576 ; 0xadc <__stack+0x1dd> + 89c: 92 30 cpi r25, 0x02 ; 2 + 89e: b1 f4 brne .+44 ; 0x8cc <_fpadd_parts+0x72> + 8a0: 82 30 cpi r24, 0x02 ; 2 + 8a2: 09 f0 breq .+2 ; 0x8a6 <_fpadd_parts+0x4c> + 8a4: 1e c1 rjmp .+572 ; 0xae2 <__stack+0x1e3> + 8a6: ca 01 movw r24, r20 + 8a8: af 01 movw r20, r30 + 8aa: 28 e0 ldi r18, 0x08 ; 8 + 8ac: da 01 movw r26, r20 + 8ae: 0d 90 ld r0, X+ + 8b0: ad 01 movw r20, r26 + 8b2: dc 01 movw r26, r24 + 8b4: 0d 92 st X+, r0 + 8b6: cd 01 movw r24, r26 + 8b8: 21 50 subi r18, 0x01 ; 1 + 8ba: c1 f7 brne .-16 ; 0x8ac <_fpadd_parts+0x52> + 8bc: db 01 movw r26, r22 + 8be: 11 96 adiw r26, 0x01 ; 1 + 8c0: 8c 91 ld r24, X + 8c2: 11 97 sbiw r26, 0x01 ; 1 + 8c4: 91 81 ldd r25, Z+1 ; 0x01 + 8c6: 89 23 and r24, r25 + 8c8: 89 83 std Y+1, r24 ; 0x01 + 8ca: 0a c1 rjmp .+532 ; 0xae0 <__stack+0x1e1> + 8cc: 82 30 cpi r24, 0x02 ; 2 + 8ce: 09 f4 brne .+2 ; 0x8d2 <_fpadd_parts+0x78> + 8d0: 05 c1 rjmp .+522 ; 0xadc <__stack+0x1dd> + 8d2: c2 80 ldd r12, Z+2 ; 0x02 + 8d4: d3 80 ldd r13, Z+3 ; 0x03 + 8d6: db 01 movw r26, r22 + 8d8: 12 96 adiw r26, 0x02 ; 2 + 8da: 6d 90 ld r6, X+ + 8dc: 7c 90 ld r7, X + 8de: 13 97 sbiw r26, 0x03 ; 3 + 8e0: 24 81 ldd r18, Z+4 ; 0x04 + 8e2: 35 81 ldd r19, Z+5 ; 0x05 + 8e4: 46 81 ldd r20, Z+6 ; 0x06 + 8e6: 57 81 ldd r21, Z+7 ; 0x07 + 8e8: 14 96 adiw r26, 0x04 ; 4 + 8ea: ed 90 ld r14, X+ + 8ec: fd 90 ld r15, X+ + 8ee: 0d 91 ld r16, X+ + 8f0: 1c 91 ld r17, X + 8f2: 17 97 sbiw r26, 0x07 ; 7 + 8f4: c6 01 movw r24, r12 + 8f6: 86 19 sub r24, r6 + 8f8: 97 09 sbc r25, r7 + 8fa: 5c 01 movw r10, r24 + 8fc: 97 ff sbrs r25, 7 + 8fe: 04 c0 rjmp .+8 ; 0x908 <__stack+0x9> + 900: aa 24 eor r10, r10 + 902: bb 24 eor r11, r11 + 904: a8 1a sub r10, r24 + 906: b9 0a sbc r11, r25 + 908: b0 e2 ldi r27, 0x20 ; 32 + 90a: ab 16 cp r10, r27 + 90c: b1 04 cpc r11, r1 + 90e: 0c f0 brlt .+2 ; 0x912 <__stack+0x13> + 910: 61 c0 rjmp .+194 ; 0x9d4 <__stack+0xd5> + 912: 18 16 cp r1, r24 + 914: 19 06 cpc r1, r25 + 916: 6c f5 brge .+90 ; 0x972 <__stack+0x73> + 918: 37 01 movw r6, r14 + 91a: 48 01 movw r8, r16 + 91c: 0a 2c mov r0, r10 + 91e: 04 c0 rjmp .+8 ; 0x928 <__stack+0x29> + 920: 96 94 lsr r9 + 922: 87 94 ror r8 + 924: 77 94 ror r7 + 926: 67 94 ror r6 + 928: 0a 94 dec r0 + 92a: d2 f7 brpl .-12 ; 0x920 <__stack+0x21> + 92c: 81 e0 ldi r24, 0x01 ; 1 + 92e: 90 e0 ldi r25, 0x00 ; 0 + 930: a0 e0 ldi r26, 0x00 ; 0 + 932: b0 e0 ldi r27, 0x00 ; 0 + 934: 0a 2c mov r0, r10 + 936: 04 c0 rjmp .+8 ; 0x940 <__stack+0x41> + 938: 88 0f add r24, r24 + 93a: 99 1f adc r25, r25 + 93c: aa 1f adc r26, r26 + 93e: bb 1f adc r27, r27 + 940: 0a 94 dec r0 + 942: d2 f7 brpl .-12 ; 0x938 <__stack+0x39> + 944: 01 97 sbiw r24, 0x01 ; 1 + 946: a1 09 sbc r26, r1 + 948: b1 09 sbc r27, r1 + 94a: 8e 21 and r24, r14 + 94c: 9f 21 and r25, r15 + 94e: a0 23 and r26, r16 + 950: b1 23 and r27, r17 + 952: ee 24 eor r14, r14 + 954: ff 24 eor r15, r15 + 956: 87 01 movw r16, r14 + 958: e3 94 inc r14 + 95a: 00 97 sbiw r24, 0x00 ; 0 + 95c: a1 05 cpc r26, r1 + 95e: b1 05 cpc r27, r1 + 960: 19 f4 brne .+6 ; 0x968 <__stack+0x69> + 962: ee 24 eor r14, r14 + 964: ff 24 eor r15, r15 + 966: 87 01 movw r16, r14 + 968: e6 28 or r14, r6 + 96a: f7 28 or r15, r7 + 96c: 08 29 or r16, r8 + 96e: 19 29 or r17, r9 + 970: 3c c0 rjmp .+120 ; 0x9ea <__stack+0xeb> + 972: 00 97 sbiw r24, 0x00 ; 0 + 974: d1 f1 breq .+116 ; 0x9ea <__stack+0xeb> + 976: ca 0c add r12, r10 + 978: db 1c adc r13, r11 + 97a: 39 01 movw r6, r18 + 97c: 4a 01 movw r8, r20 + 97e: 0a 2c mov r0, r10 + 980: 04 c0 rjmp .+8 ; 0x98a <__stack+0x8b> + 982: 96 94 lsr r9 + 984: 87 94 ror r8 + 986: 77 94 ror r7 + 988: 67 94 ror r6 + 98a: 0a 94 dec r0 + 98c: d2 f7 brpl .-12 ; 0x982 <__stack+0x83> + 98e: 81 e0 ldi r24, 0x01 ; 1 + 990: 90 e0 ldi r25, 0x00 ; 0 + 992: a0 e0 ldi r26, 0x00 ; 0 + 994: b0 e0 ldi r27, 0x00 ; 0 + 996: 0a 2c mov r0, r10 + 998: 04 c0 rjmp .+8 ; 0x9a2 <__stack+0xa3> + 99a: 88 0f add r24, r24 + 99c: 99 1f adc r25, r25 + 99e: aa 1f adc r26, r26 + 9a0: bb 1f adc r27, r27 + 9a2: 0a 94 dec r0 + 9a4: d2 f7 brpl .-12 ; 0x99a <__stack+0x9b> + 9a6: 01 97 sbiw r24, 0x01 ; 1 + 9a8: a1 09 sbc r26, r1 + 9aa: b1 09 sbc r27, r1 + 9ac: 82 23 and r24, r18 + 9ae: 93 23 and r25, r19 + 9b0: a4 23 and r26, r20 + 9b2: b5 23 and r27, r21 + 9b4: 21 e0 ldi r18, 0x01 ; 1 + 9b6: 30 e0 ldi r19, 0x00 ; 0 + 9b8: 40 e0 ldi r20, 0x00 ; 0 + 9ba: 50 e0 ldi r21, 0x00 ; 0 + 9bc: 00 97 sbiw r24, 0x00 ; 0 + 9be: a1 05 cpc r26, r1 + 9c0: b1 05 cpc r27, r1 + 9c2: 19 f4 brne .+6 ; 0x9ca <__stack+0xcb> + 9c4: 20 e0 ldi r18, 0x00 ; 0 + 9c6: 30 e0 ldi r19, 0x00 ; 0 + 9c8: a9 01 movw r20, r18 + 9ca: 26 29 or r18, r6 + 9cc: 37 29 or r19, r7 + 9ce: 48 29 or r20, r8 + 9d0: 59 29 or r21, r9 + 9d2: 0b c0 rjmp .+22 ; 0x9ea <__stack+0xeb> + 9d4: 6c 14 cp r6, r12 + 9d6: 7d 04 cpc r7, r13 + 9d8: 24 f4 brge .+8 ; 0x9e2 <__stack+0xe3> + 9da: ee 24 eor r14, r14 + 9dc: ff 24 eor r15, r15 + 9de: 87 01 movw r16, r14 + 9e0: 04 c0 rjmp .+8 ; 0x9ea <__stack+0xeb> + 9e2: 63 01 movw r12, r6 + 9e4: 20 e0 ldi r18, 0x00 ; 0 + 9e6: 30 e0 ldi r19, 0x00 ; 0 + 9e8: a9 01 movw r20, r18 + 9ea: 81 81 ldd r24, Z+1 ; 0x01 + 9ec: fb 01 movw r30, r22 + 9ee: 91 81 ldd r25, Z+1 ; 0x01 + 9f0: 89 17 cp r24, r25 + 9f2: 09 f4 brne .+2 ; 0x9f6 <__stack+0xf7> + 9f4: 45 c0 rjmp .+138 ; 0xa80 <__stack+0x181> + 9f6: 88 23 and r24, r24 + 9f8: 49 f0 breq .+18 ; 0xa0c <__stack+0x10d> + 9fa: d8 01 movw r26, r16 + 9fc: c7 01 movw r24, r14 + 9fe: 82 1b sub r24, r18 + a00: 93 0b sbc r25, r19 + a02: a4 0b sbc r26, r20 + a04: b5 0b sbc r27, r21 + a06: 9c 01 movw r18, r24 + a08: ad 01 movw r20, r26 + a0a: 04 c0 rjmp .+8 ; 0xa14 <__stack+0x115> + a0c: 2e 19 sub r18, r14 + a0e: 3f 09 sbc r19, r15 + a10: 40 0b sbc r20, r16 + a12: 51 0b sbc r21, r17 + a14: 57 fd sbrc r21, 7 + a16: 04 c0 rjmp .+8 ; 0xa20 <__stack+0x121> + a18: 19 82 std Y+1, r1 ; 0x01 + a1a: db 82 std Y+3, r13 ; 0x03 + a1c: ca 82 std Y+2, r12 ; 0x02 + a1e: 0b c0 rjmp .+22 ; 0xa36 <__stack+0x137> + a20: 81 e0 ldi r24, 0x01 ; 1 + a22: 89 83 std Y+1, r24 ; 0x01 + a24: db 82 std Y+3, r13 ; 0x03 + a26: ca 82 std Y+2, r12 ; 0x02 + a28: 50 95 com r21 + a2a: 40 95 com r20 + a2c: 30 95 com r19 + a2e: 21 95 neg r18 + a30: 3f 4f sbci r19, 0xFF ; 255 + a32: 4f 4f sbci r20, 0xFF ; 255 + a34: 5f 4f sbci r21, 0xFF ; 255 + a36: 2c 83 std Y+4, r18 ; 0x04 + a38: 3d 83 std Y+5, r19 ; 0x05 + a3a: 4e 83 std Y+6, r20 ; 0x06 + a3c: 5f 83 std Y+7, r21 ; 0x07 + a3e: 0d c0 rjmp .+26 ; 0xa5a <__stack+0x15b> + a40: 88 0f add r24, r24 + a42: 99 1f adc r25, r25 + a44: aa 1f adc r26, r26 + a46: bb 1f adc r27, r27 + a48: 8c 83 std Y+4, r24 ; 0x04 + a4a: 9d 83 std Y+5, r25 ; 0x05 + a4c: ae 83 std Y+6, r26 ; 0x06 + a4e: bf 83 std Y+7, r27 ; 0x07 + a50: 8a 81 ldd r24, Y+2 ; 0x02 + a52: 9b 81 ldd r25, Y+3 ; 0x03 + a54: 01 97 sbiw r24, 0x01 ; 1 + a56: 9b 83 std Y+3, r25 ; 0x03 + a58: 8a 83 std Y+2, r24 ; 0x02 + a5a: 8c 81 ldd r24, Y+4 ; 0x04 + a5c: 9d 81 ldd r25, Y+5 ; 0x05 + a5e: ae 81 ldd r26, Y+6 ; 0x06 + a60: bf 81 ldd r27, Y+7 ; 0x07 + a62: 9c 01 movw r18, r24 + a64: ad 01 movw r20, r26 + a66: 21 50 subi r18, 0x01 ; 1 + a68: 30 40 sbci r19, 0x00 ; 0 + a6a: 40 40 sbci r20, 0x00 ; 0 + a6c: 50 40 sbci r21, 0x00 ; 0 + a6e: 2f 3f cpi r18, 0xFF ; 255 + a70: ef ef ldi r30, 0xFF ; 255 + a72: 3e 07 cpc r19, r30 + a74: ef ef ldi r30, 0xFF ; 255 + a76: 4e 07 cpc r20, r30 + a78: ef e3 ldi r30, 0x3F ; 63 + a7a: 5e 07 cpc r21, r30 + a7c: 08 f3 brcs .-62 ; 0xa40 <__stack+0x141> + a7e: 0b c0 rjmp .+22 ; 0xa96 <__stack+0x197> + a80: 89 83 std Y+1, r24 ; 0x01 + a82: db 82 std Y+3, r13 ; 0x03 + a84: ca 82 std Y+2, r12 ; 0x02 + a86: 2e 0d add r18, r14 + a88: 3f 1d adc r19, r15 + a8a: 40 1f adc r20, r16 + a8c: 51 1f adc r21, r17 + a8e: 2c 83 std Y+4, r18 ; 0x04 + a90: 3d 83 std Y+5, r19 ; 0x05 + a92: 4e 83 std Y+6, r20 ; 0x06 + a94: 5f 83 std Y+7, r21 ; 0x07 + a96: 83 e0 ldi r24, 0x03 ; 3 + a98: 88 83 st Y, r24 + a9a: 2c 81 ldd r18, Y+4 ; 0x04 + a9c: 3d 81 ldd r19, Y+5 ; 0x05 + a9e: 4e 81 ldd r20, Y+6 ; 0x06 + aa0: 5f 81 ldd r21, Y+7 ; 0x07 + aa2: 57 ff sbrs r21, 7 + aa4: 1d c0 rjmp .+58 ; 0xae0 <__stack+0x1e1> + aa6: da 01 movw r26, r20 + aa8: c9 01 movw r24, r18 + aaa: 81 70 andi r24, 0x01 ; 1 + aac: 90 70 andi r25, 0x00 ; 0 + aae: a0 70 andi r26, 0x00 ; 0 + ab0: b0 70 andi r27, 0x00 ; 0 + ab2: 56 95 lsr r21 + ab4: 47 95 ror r20 + ab6: 37 95 ror r19 + ab8: 27 95 ror r18 + aba: 82 2b or r24, r18 + abc: 93 2b or r25, r19 + abe: a4 2b or r26, r20 + ac0: b5 2b or r27, r21 + ac2: 8c 83 std Y+4, r24 ; 0x04 + ac4: 9d 83 std Y+5, r25 ; 0x05 + ac6: ae 83 std Y+6, r26 ; 0x06 + ac8: bf 83 std Y+7, r27 ; 0x07 + aca: 8a 81 ldd r24, Y+2 ; 0x02 + acc: 9b 81 ldd r25, Y+3 ; 0x03 + ace: 01 96 adiw r24, 0x01 ; 1 + ad0: 9b 83 std Y+3, r25 ; 0x03 + ad2: 8a 83 std Y+2, r24 ; 0x02 + ad4: 05 c0 rjmp .+10 ; 0xae0 <__stack+0x1e1> + ad6: e1 e2 ldi r30, 0x21 ; 33 + ad8: f1 e0 ldi r31, 0x01 ; 1 + ada: 03 c0 rjmp .+6 ; 0xae2 <__stack+0x1e3> + adc: fb 01 movw r30, r22 + ade: 01 c0 rjmp .+2 ; 0xae2 <__stack+0x1e3> + ae0: fe 01 movw r30, r28 + ae2: cf 01 movw r24, r30 + ae4: cd b7 in r28, 0x3d ; 61 + ae6: de b7 in r29, 0x3e ; 62 + ae8: ee e0 ldi r30, 0x0E ; 14 + aea: 0c 94 8a 09 jmp 0x1314 ; 0x1314 <__epilogue_restores__+0x8> + +00000aee <__addsf3>: + aee: a0 e2 ldi r26, 0x20 ; 32 + af0: b0 e0 ldi r27, 0x00 ; 0 + af2: ed e7 ldi r30, 0x7D ; 125 + af4: f5 e0 ldi r31, 0x05 ; 5 + af6: 0c 94 76 09 jmp 0x12ec ; 0x12ec <__prologue_saves__+0x18> + afa: 69 83 std Y+1, r22 ; 0x01 + afc: 7a 83 std Y+2, r23 ; 0x02 + afe: 8b 83 std Y+3, r24 ; 0x03 + b00: 9c 83 std Y+4, r25 ; 0x04 + b02: 2d 83 std Y+5, r18 ; 0x05 + b04: 3e 83 std Y+6, r19 ; 0x06 + b06: 4f 83 std Y+7, r20 ; 0x07 + b08: 58 87 std Y+8, r21 ; 0x08 + b0a: 89 e0 ldi r24, 0x09 ; 9 + b0c: e8 2e mov r14, r24 + b0e: f1 2c mov r15, r1 + b10: ec 0e add r14, r28 + b12: fd 1e adc r15, r29 + b14: ce 01 movw r24, r28 + b16: 01 96 adiw r24, 0x01 ; 1 + b18: b7 01 movw r22, r14 + b1a: 0e 94 9d 08 call 0x113a ; 0x113a <__unpack_f> + b1e: 8e 01 movw r16, r28 + b20: 0f 5e subi r16, 0xEF ; 239 + b22: 1f 4f sbci r17, 0xFF ; 255 + b24: ce 01 movw r24, r28 + b26: 05 96 adiw r24, 0x05 ; 5 + b28: b8 01 movw r22, r16 + b2a: 0e 94 9d 08 call 0x113a ; 0x113a <__unpack_f> + b2e: c7 01 movw r24, r14 + b30: b8 01 movw r22, r16 + b32: ae 01 movw r20, r28 + b34: 47 5e subi r20, 0xE7 ; 231 + b36: 5f 4f sbci r21, 0xFF ; 255 + b38: 0e 94 2d 04 call 0x85a ; 0x85a <_fpadd_parts> + b3c: 0e 94 cf 07 call 0xf9e ; 0xf9e <__pack_f> + b40: a0 96 adiw r28, 0x20 ; 32 + b42: e6 e0 ldi r30, 0x06 ; 6 + b44: 0c 94 92 09 jmp 0x1324 ; 0x1324 <__epilogue_restores__+0x18> + +00000b48 <__subsf3>: + b48: a0 e2 ldi r26, 0x20 ; 32 + b4a: b0 e0 ldi r27, 0x00 ; 0 + b4c: ea ea ldi r30, 0xAA ; 170 + b4e: f5 e0 ldi r31, 0x05 ; 5 + b50: 0c 94 76 09 jmp 0x12ec ; 0x12ec <__prologue_saves__+0x18> + b54: 69 83 std Y+1, r22 ; 0x01 + b56: 7a 83 std Y+2, r23 ; 0x02 + b58: 8b 83 std Y+3, r24 ; 0x03 + b5a: 9c 83 std Y+4, r25 ; 0x04 + b5c: 2d 83 std Y+5, r18 ; 0x05 + b5e: 3e 83 std Y+6, r19 ; 0x06 + b60: 4f 83 std Y+7, r20 ; 0x07 + b62: 58 87 std Y+8, r21 ; 0x08 + b64: 8e 01 movw r16, r28 + b66: 07 5f subi r16, 0xF7 ; 247 + b68: 1f 4f sbci r17, 0xFF ; 255 + b6a: ce 01 movw r24, r28 + b6c: 01 96 adiw r24, 0x01 ; 1 + b6e: b8 01 movw r22, r16 + b70: 0e 94 9d 08 call 0x113a ; 0x113a <__unpack_f> + b74: 91 e1 ldi r25, 0x11 ; 17 + b76: e9 2e mov r14, r25 + b78: f1 2c mov r15, r1 + b7a: ec 0e add r14, r28 + b7c: fd 1e adc r15, r29 + b7e: ce 01 movw r24, r28 + b80: 05 96 adiw r24, 0x05 ; 5 + b82: b7 01 movw r22, r14 + b84: 0e 94 9d 08 call 0x113a ; 0x113a <__unpack_f> + b88: 8a 89 ldd r24, Y+18 ; 0x12 + b8a: 91 e0 ldi r25, 0x01 ; 1 + b8c: 89 27 eor r24, r25 + b8e: 8a 8b std Y+18, r24 ; 0x12 + b90: c8 01 movw r24, r16 + b92: b7 01 movw r22, r14 + b94: ae 01 movw r20, r28 + b96: 47 5e subi r20, 0xE7 ; 231 + b98: 5f 4f sbci r21, 0xFF ; 255 + b9a: 0e 94 2d 04 call 0x85a ; 0x85a <_fpadd_parts> + b9e: 0e 94 cf 07 call 0xf9e ; 0xf9e <__pack_f> + ba2: a0 96 adiw r28, 0x20 ; 32 + ba4: e6 e0 ldi r30, 0x06 ; 6 + ba6: 0c 94 92 09 jmp 0x1324 ; 0x1324 <__epilogue_restores__+0x18> + +00000baa <__mulsf3>: + baa: a0 e2 ldi r26, 0x20 ; 32 + bac: b0 e0 ldi r27, 0x00 ; 0 + bae: eb ed ldi r30, 0xDB ; 219 + bb0: f5 e0 ldi r31, 0x05 ; 5 + bb2: 0c 94 6a 09 jmp 0x12d4 ; 0x12d4 <__prologue_saves__> + bb6: 69 83 std Y+1, r22 ; 0x01 + bb8: 7a 83 std Y+2, r23 ; 0x02 + bba: 8b 83 std Y+3, r24 ; 0x03 + bbc: 9c 83 std Y+4, r25 ; 0x04 + bbe: 2d 83 std Y+5, r18 ; 0x05 + bc0: 3e 83 std Y+6, r19 ; 0x06 + bc2: 4f 83 std Y+7, r20 ; 0x07 + bc4: 58 87 std Y+8, r21 ; 0x08 + bc6: ce 01 movw r24, r28 + bc8: 01 96 adiw r24, 0x01 ; 1 + bca: be 01 movw r22, r28 + bcc: 67 5f subi r22, 0xF7 ; 247 + bce: 7f 4f sbci r23, 0xFF ; 255 + bd0: 0e 94 9d 08 call 0x113a ; 0x113a <__unpack_f> + bd4: ce 01 movw r24, r28 + bd6: 05 96 adiw r24, 0x05 ; 5 + bd8: be 01 movw r22, r28 + bda: 6f 5e subi r22, 0xEF ; 239 + bdc: 7f 4f sbci r23, 0xFF ; 255 + bde: 0e 94 9d 08 call 0x113a ; 0x113a <__unpack_f> + be2: 99 85 ldd r25, Y+9 ; 0x09 + be4: 92 30 cpi r25, 0x02 ; 2 + be6: 78 f0 brcs .+30 ; 0xc06 <__mulsf3+0x5c> + be8: 89 89 ldd r24, Y+17 ; 0x11 + bea: 82 30 cpi r24, 0x02 ; 2 + bec: c0 f0 brcs .+48 ; 0xc1e <__mulsf3+0x74> + bee: 94 30 cpi r25, 0x04 ; 4 + bf0: 19 f4 brne .+6 ; 0xbf8 <__mulsf3+0x4e> + bf2: 82 30 cpi r24, 0x02 ; 2 + bf4: 41 f4 brne .+16 ; 0xc06 <__mulsf3+0x5c> + bf6: cb c0 rjmp .+406 ; 0xd8e <__mulsf3+0x1e4> + bf8: 84 30 cpi r24, 0x04 ; 4 + bfa: 19 f4 brne .+6 ; 0xc02 <__mulsf3+0x58> + bfc: 92 30 cpi r25, 0x02 ; 2 + bfe: 79 f4 brne .+30 ; 0xc1e <__mulsf3+0x74> + c00: c6 c0 rjmp .+396 ; 0xd8e <__mulsf3+0x1e4> + c02: 92 30 cpi r25, 0x02 ; 2 + c04: 51 f4 brne .+20 ; 0xc1a <__mulsf3+0x70> + c06: 81 e0 ldi r24, 0x01 ; 1 + c08: 2a 85 ldd r18, Y+10 ; 0x0a + c0a: 9a 89 ldd r25, Y+18 ; 0x12 + c0c: 29 17 cp r18, r25 + c0e: 09 f4 brne .+2 ; 0xc12 <__mulsf3+0x68> + c10: 80 e0 ldi r24, 0x00 ; 0 + c12: 8a 87 std Y+10, r24 ; 0x0a + c14: ce 01 movw r24, r28 + c16: 09 96 adiw r24, 0x09 ; 9 + c18: bc c0 rjmp .+376 ; 0xd92 <__mulsf3+0x1e8> + c1a: 82 30 cpi r24, 0x02 ; 2 + c1c: 51 f4 brne .+20 ; 0xc32 <__mulsf3+0x88> + c1e: 81 e0 ldi r24, 0x01 ; 1 + c20: 2a 85 ldd r18, Y+10 ; 0x0a + c22: 9a 89 ldd r25, Y+18 ; 0x12 + c24: 29 17 cp r18, r25 + c26: 09 f4 brne .+2 ; 0xc2a <__mulsf3+0x80> + c28: 80 e0 ldi r24, 0x00 ; 0 + c2a: 8a 8b std Y+18, r24 ; 0x12 + c2c: ce 01 movw r24, r28 + c2e: 41 96 adiw r24, 0x11 ; 17 + c30: b0 c0 rjmp .+352 ; 0xd92 <__mulsf3+0x1e8> + c32: 6d 84 ldd r6, Y+13 ; 0x0d + c34: 7e 84 ldd r7, Y+14 ; 0x0e + c36: 8f 84 ldd r8, Y+15 ; 0x0f + c38: 98 88 ldd r9, Y+16 ; 0x10 + c3a: ed 88 ldd r14, Y+21 ; 0x15 + c3c: fe 88 ldd r15, Y+22 ; 0x16 + c3e: 0f 89 ldd r16, Y+23 ; 0x17 + c40: 18 8d ldd r17, Y+24 ; 0x18 + c42: e0 e2 ldi r30, 0x20 ; 32 + c44: f0 e0 ldi r31, 0x00 ; 0 + c46: 80 e0 ldi r24, 0x00 ; 0 + c48: 90 e0 ldi r25, 0x00 ; 0 + c4a: dc 01 movw r26, r24 + c4c: aa 24 eor r10, r10 + c4e: bb 24 eor r11, r11 + c50: 65 01 movw r12, r10 + c52: 20 e0 ldi r18, 0x00 ; 0 + c54: 30 e0 ldi r19, 0x00 ; 0 + c56: a9 01 movw r20, r18 + c58: b3 01 movw r22, r6 + c5a: 61 70 andi r22, 0x01 ; 1 + c5c: 70 70 andi r23, 0x00 ; 0 + c5e: 61 15 cp r22, r1 + c60: 71 05 cpc r23, r1 + c62: d1 f0 breq .+52 ; 0xc98 <__mulsf3+0xee> + c64: 2e 0d add r18, r14 + c66: 3f 1d adc r19, r15 + c68: 40 1f adc r20, r16 + c6a: 51 1f adc r21, r17 + c6c: 15 01 movw r2, r10 + c6e: 26 01 movw r4, r12 + c70: 28 0e add r2, r24 + c72: 39 1e adc r3, r25 + c74: 4a 1e adc r4, r26 + c76: 5b 1e adc r5, r27 + c78: 81 e0 ldi r24, 0x01 ; 1 + c7a: 90 e0 ldi r25, 0x00 ; 0 + c7c: a0 e0 ldi r26, 0x00 ; 0 + c7e: b0 e0 ldi r27, 0x00 ; 0 + c80: 2e 15 cp r18, r14 + c82: 3f 05 cpc r19, r15 + c84: 40 07 cpc r20, r16 + c86: 51 07 cpc r21, r17 + c88: 18 f0 brcs .+6 ; 0xc90 <__mulsf3+0xe6> + c8a: 80 e0 ldi r24, 0x00 ; 0 + c8c: 90 e0 ldi r25, 0x00 ; 0 + c8e: dc 01 movw r26, r24 + c90: 82 0d add r24, r2 + c92: 93 1d adc r25, r3 + c94: a4 1d adc r26, r4 + c96: b5 1d adc r27, r5 + c98: aa 0c add r10, r10 + c9a: bb 1c adc r11, r11 + c9c: cc 1c adc r12, r12 + c9e: dd 1c adc r13, r13 + ca0: 17 ff sbrs r17, 7 + ca2: 09 c0 rjmp .+18 ; 0xcb6 <__mulsf3+0x10c> + ca4: 61 e0 ldi r22, 0x01 ; 1 + ca6: 26 2e mov r2, r22 + ca8: 31 2c mov r3, r1 + caa: 41 2c mov r4, r1 + cac: 51 2c mov r5, r1 + cae: a2 28 or r10, r2 + cb0: b3 28 or r11, r3 + cb2: c4 28 or r12, r4 + cb4: d5 28 or r13, r5 + cb6: 31 97 sbiw r30, 0x01 ; 1 + cb8: 49 f0 breq .+18 ; 0xccc <__mulsf3+0x122> + cba: ee 0c add r14, r14 + cbc: ff 1c adc r15, r15 + cbe: 00 1f adc r16, r16 + cc0: 11 1f adc r17, r17 + cc2: 96 94 lsr r9 + cc4: 87 94 ror r8 + cc6: 77 94 ror r7 + cc8: 67 94 ror r6 + cca: c6 cf rjmp .-116 ; 0xc58 <__mulsf3+0xae> + ccc: 6b 89 ldd r22, Y+19 ; 0x13 + cce: 7c 89 ldd r23, Y+20 ; 0x14 + cd0: eb 85 ldd r30, Y+11 ; 0x0b + cd2: fc 85 ldd r31, Y+12 ; 0x0c + cd4: 6e 0f add r22, r30 + cd6: 7f 1f adc r23, r31 + cd8: 6e 5f subi r22, 0xFE ; 254 + cda: 7f 4f sbci r23, 0xFF ; 255 + cdc: 7c 8f std Y+28, r23 ; 0x1c + cde: 6b 8f std Y+27, r22 ; 0x1b + ce0: 61 e0 ldi r22, 0x01 ; 1 + ce2: ea 85 ldd r30, Y+10 ; 0x0a + ce4: 7a 89 ldd r23, Y+18 ; 0x12 + ce6: e7 17 cp r30, r23 + ce8: 09 f4 brne .+2 ; 0xcec <__mulsf3+0x142> + cea: 60 e0 ldi r22, 0x00 ; 0 + cec: 6a 8f std Y+26, r22 ; 0x1a + cee: 6b 8d ldd r22, Y+27 ; 0x1b + cf0: 7c 8d ldd r23, Y+28 ; 0x1c + cf2: 10 c0 rjmp .+32 ; 0xd14 <__mulsf3+0x16a> + cf4: fc 01 movw r30, r24 + cf6: e1 70 andi r30, 0x01 ; 1 + cf8: f0 70 andi r31, 0x00 ; 0 + cfa: 30 97 sbiw r30, 0x00 ; 0 + cfc: 29 f0 breq .+10 ; 0xd08 <__mulsf3+0x15e> + cfe: 56 95 lsr r21 + d00: 47 95 ror r20 + d02: 37 95 ror r19 + d04: 27 95 ror r18 + d06: 50 68 ori r21, 0x80 ; 128 + d08: b6 95 lsr r27 + d0a: a7 95 ror r26 + d0c: 97 95 ror r25 + d0e: 87 95 ror r24 + d10: 6f 5f subi r22, 0xFF ; 255 + d12: 7f 4f sbci r23, 0xFF ; 255 + d14: b7 fd sbrc r27, 7 + d16: ee cf rjmp .-36 ; 0xcf4 <__mulsf3+0x14a> + d18: 0c c0 rjmp .+24 ; 0xd32 <__mulsf3+0x188> + d1a: 88 0f add r24, r24 + d1c: 99 1f adc r25, r25 + d1e: aa 1f adc r26, r26 + d20: bb 1f adc r27, r27 + d22: 57 fd sbrc r21, 7 + d24: 81 60 ori r24, 0x01 ; 1 + d26: 22 0f add r18, r18 + d28: 33 1f adc r19, r19 + d2a: 44 1f adc r20, r20 + d2c: 55 1f adc r21, r21 + d2e: 61 50 subi r22, 0x01 ; 1 + d30: 70 40 sbci r23, 0x00 ; 0 + d32: 80 30 cpi r24, 0x00 ; 0 + d34: e0 e0 ldi r30, 0x00 ; 0 + d36: 9e 07 cpc r25, r30 + d38: e0 e0 ldi r30, 0x00 ; 0 + d3a: ae 07 cpc r26, r30 + d3c: e0 e4 ldi r30, 0x40 ; 64 + d3e: be 07 cpc r27, r30 + d40: 60 f3 brcs .-40 ; 0xd1a <__mulsf3+0x170> + d42: 6b 8f std Y+27, r22 ; 0x1b + d44: 7c 8f std Y+28, r23 ; 0x1c + d46: 6f e7 ldi r22, 0x7F ; 127 + d48: e6 2e mov r14, r22 + d4a: f1 2c mov r15, r1 + d4c: 01 2d mov r16, r1 + d4e: 11 2d mov r17, r1 + d50: e8 22 and r14, r24 + d52: f9 22 and r15, r25 + d54: 0a 23 and r16, r26 + d56: 1b 23 and r17, r27 + d58: 60 e4 ldi r22, 0x40 ; 64 + d5a: e6 16 cp r14, r22 + d5c: f1 04 cpc r15, r1 + d5e: 01 05 cpc r16, r1 + d60: 11 05 cpc r17, r1 + d62: 61 f4 brne .+24 ; 0xd7c <__mulsf3+0x1d2> + d64: 87 fd sbrc r24, 7 + d66: 0a c0 rjmp .+20 ; 0xd7c <__mulsf3+0x1d2> + d68: 21 15 cp r18, r1 + d6a: 31 05 cpc r19, r1 + d6c: 41 05 cpc r20, r1 + d6e: 51 05 cpc r21, r1 + d70: 29 f0 breq .+10 ; 0xd7c <__mulsf3+0x1d2> + d72: 80 5c subi r24, 0xC0 ; 192 + d74: 9f 4f sbci r25, 0xFF ; 255 + d76: af 4f sbci r26, 0xFF ; 255 + d78: bf 4f sbci r27, 0xFF ; 255 + d7a: 80 78 andi r24, 0x80 ; 128 + d7c: 8d 8f std Y+29, r24 ; 0x1d + d7e: 9e 8f std Y+30, r25 ; 0x1e + d80: af 8f std Y+31, r26 ; 0x1f + d82: b8 a3 std Y+32, r27 ; 0x20 + d84: 83 e0 ldi r24, 0x03 ; 3 + d86: 89 8f std Y+25, r24 ; 0x19 + d88: ce 01 movw r24, r28 + d8a: 49 96 adiw r24, 0x19 ; 25 + d8c: 02 c0 rjmp .+4 ; 0xd92 <__mulsf3+0x1e8> + d8e: 81 e2 ldi r24, 0x21 ; 33 + d90: 91 e0 ldi r25, 0x01 ; 1 + d92: 0e 94 cf 07 call 0xf9e ; 0xf9e <__pack_f> + d96: a0 96 adiw r28, 0x20 ; 32 + d98: e2 e1 ldi r30, 0x12 ; 18 + d9a: 0c 94 86 09 jmp 0x130c ; 0x130c <__epilogue_restores__> + +00000d9e <__divsf3>: + d9e: a8 e1 ldi r26, 0x18 ; 24 + da0: b0 e0 ldi r27, 0x00 ; 0 + da2: e5 ed ldi r30, 0xD5 ; 213 + da4: f6 e0 ldi r31, 0x06 ; 6 + da6: 0c 94 72 09 jmp 0x12e4 ; 0x12e4 <__prologue_saves__+0x10> + daa: 69 83 std Y+1, r22 ; 0x01 + dac: 7a 83 std Y+2, r23 ; 0x02 + dae: 8b 83 std Y+3, r24 ; 0x03 + db0: 9c 83 std Y+4, r25 ; 0x04 + db2: 2d 83 std Y+5, r18 ; 0x05 + db4: 3e 83 std Y+6, r19 ; 0x06 + db6: 4f 83 std Y+7, r20 ; 0x07 + db8: 58 87 std Y+8, r21 ; 0x08 + dba: 8e 01 movw r16, r28 + dbc: 07 5f subi r16, 0xF7 ; 247 + dbe: 1f 4f sbci r17, 0xFF ; 255 + dc0: ce 01 movw r24, r28 + dc2: 01 96 adiw r24, 0x01 ; 1 + dc4: b8 01 movw r22, r16 + dc6: 0e 94 9d 08 call 0x113a ; 0x113a <__unpack_f> + dca: 81 e1 ldi r24, 0x11 ; 17 + dcc: e8 2e mov r14, r24 + dce: f1 2c mov r15, r1 + dd0: ec 0e add r14, r28 + dd2: fd 1e adc r15, r29 + dd4: ce 01 movw r24, r28 + dd6: 05 96 adiw r24, 0x05 ; 5 + dd8: b7 01 movw r22, r14 + dda: 0e 94 9d 08 call 0x113a ; 0x113a <__unpack_f> + dde: 99 85 ldd r25, Y+9 ; 0x09 + de0: 92 30 cpi r25, 0x02 ; 2 + de2: 08 f4 brcc .+2 ; 0xde6 <__divsf3+0x48> + de4: 83 c0 rjmp .+262 ; 0xeec <__divsf3+0x14e> + de6: 89 89 ldd r24, Y+17 ; 0x11 + de8: 82 30 cpi r24, 0x02 ; 2 + dea: 08 f4 brcc .+2 ; 0xdee <__divsf3+0x50> + dec: 7b c0 rjmp .+246 ; 0xee4 <__divsf3+0x146> + dee: 2a 85 ldd r18, Y+10 ; 0x0a + df0: 3a 89 ldd r19, Y+18 ; 0x12 + df2: 23 27 eor r18, r19 + df4: 2a 87 std Y+10, r18 ; 0x0a + df6: 94 30 cpi r25, 0x04 ; 4 + df8: 11 f0 breq .+4 ; 0xdfe <__divsf3+0x60> + dfa: 92 30 cpi r25, 0x02 ; 2 + dfc: 21 f4 brne .+8 ; 0xe06 <__divsf3+0x68> + dfe: 98 17 cp r25, r24 + e00: 09 f0 breq .+2 ; 0xe04 <__divsf3+0x66> + e02: 6c c0 rjmp .+216 ; 0xedc <__divsf3+0x13e> + e04: 71 c0 rjmp .+226 ; 0xee8 <__divsf3+0x14a> + e06: 84 30 cpi r24, 0x04 ; 4 + e08: 39 f4 brne .+14 ; 0xe18 <__divsf3+0x7a> + e0a: 1d 86 std Y+13, r1 ; 0x0d + e0c: 1e 86 std Y+14, r1 ; 0x0e + e0e: 1f 86 std Y+15, r1 ; 0x0f + e10: 18 8a std Y+16, r1 ; 0x10 + e12: 1c 86 std Y+12, r1 ; 0x0c + e14: 1b 86 std Y+11, r1 ; 0x0b + e16: 6a c0 rjmp .+212 ; 0xeec <__divsf3+0x14e> + e18: 82 30 cpi r24, 0x02 ; 2 + e1a: 19 f4 brne .+6 ; 0xe22 <__divsf3+0x84> + e1c: 84 e0 ldi r24, 0x04 ; 4 + e1e: 89 87 std Y+9, r24 ; 0x09 + e20: 65 c0 rjmp .+202 ; 0xeec <__divsf3+0x14e> + e22: 8b 85 ldd r24, Y+11 ; 0x0b + e24: 9c 85 ldd r25, Y+12 ; 0x0c + e26: 2b 89 ldd r18, Y+19 ; 0x13 + e28: 3c 89 ldd r19, Y+20 ; 0x14 + e2a: 82 1b sub r24, r18 + e2c: 93 0b sbc r25, r19 + e2e: 9c 87 std Y+12, r25 ; 0x0c + e30: 8b 87 std Y+11, r24 ; 0x0b + e32: 2d 85 ldd r18, Y+13 ; 0x0d + e34: 3e 85 ldd r19, Y+14 ; 0x0e + e36: 4f 85 ldd r20, Y+15 ; 0x0f + e38: 58 89 ldd r21, Y+16 ; 0x10 + e3a: ed 88 ldd r14, Y+21 ; 0x15 + e3c: fe 88 ldd r15, Y+22 ; 0x16 + e3e: 0f 89 ldd r16, Y+23 ; 0x17 + e40: 18 8d ldd r17, Y+24 ; 0x18 + e42: 2e 15 cp r18, r14 + e44: 3f 05 cpc r19, r15 + e46: 40 07 cpc r20, r16 + e48: 51 07 cpc r21, r17 + e4a: 38 f4 brcc .+14 ; 0xe5a <__divsf3+0xbc> + e4c: 22 0f add r18, r18 + e4e: 33 1f adc r19, r19 + e50: 44 1f adc r20, r20 + e52: 55 1f adc r21, r21 + e54: 01 97 sbiw r24, 0x01 ; 1 + e56: 9c 87 std Y+12, r25 ; 0x0c + e58: 8b 87 std Y+11, r24 ; 0x0b + e5a: 6f e1 ldi r22, 0x1F ; 31 + e5c: 70 e0 ldi r23, 0x00 ; 0 + e5e: a1 2c mov r10, r1 + e60: b1 2c mov r11, r1 + e62: c1 2c mov r12, r1 + e64: a0 e4 ldi r26, 0x40 ; 64 + e66: da 2e mov r13, r26 + e68: 80 e0 ldi r24, 0x00 ; 0 + e6a: 90 e0 ldi r25, 0x00 ; 0 + e6c: dc 01 movw r26, r24 + e6e: 2e 15 cp r18, r14 + e70: 3f 05 cpc r19, r15 + e72: 40 07 cpc r20, r16 + e74: 51 07 cpc r21, r17 + e76: 40 f0 brcs .+16 ; 0xe88 <__divsf3+0xea> + e78: 8a 29 or r24, r10 + e7a: 9b 29 or r25, r11 + e7c: ac 29 or r26, r12 + e7e: bd 29 or r27, r13 + e80: 2e 19 sub r18, r14 + e82: 3f 09 sbc r19, r15 + e84: 40 0b sbc r20, r16 + e86: 51 0b sbc r21, r17 + e88: d6 94 lsr r13 + e8a: c7 94 ror r12 + e8c: b7 94 ror r11 + e8e: a7 94 ror r10 + e90: 22 0f add r18, r18 + e92: 33 1f adc r19, r19 + e94: 44 1f adc r20, r20 + e96: 55 1f adc r21, r21 + e98: 61 50 subi r22, 0x01 ; 1 + e9a: 70 40 sbci r23, 0x00 ; 0 + e9c: 41 f7 brne .-48 ; 0xe6e <__divsf3+0xd0> + e9e: 6f e7 ldi r22, 0x7F ; 127 + ea0: e6 2e mov r14, r22 + ea2: f1 2c mov r15, r1 + ea4: 01 2d mov r16, r1 + ea6: 11 2d mov r17, r1 + ea8: e8 22 and r14, r24 + eaa: f9 22 and r15, r25 + eac: 0a 23 and r16, r26 + eae: 1b 23 and r17, r27 + eb0: 60 e4 ldi r22, 0x40 ; 64 + eb2: e6 16 cp r14, r22 + eb4: f1 04 cpc r15, r1 + eb6: 01 05 cpc r16, r1 + eb8: 11 05 cpc r17, r1 + eba: 61 f4 brne .+24 ; 0xed4 <__divsf3+0x136> + ebc: 87 fd sbrc r24, 7 + ebe: 0a c0 rjmp .+20 ; 0xed4 <__divsf3+0x136> + ec0: 21 15 cp r18, r1 + ec2: 31 05 cpc r19, r1 + ec4: 41 05 cpc r20, r1 + ec6: 51 05 cpc r21, r1 + ec8: 29 f0 breq .+10 ; 0xed4 <__divsf3+0x136> + eca: 80 5c subi r24, 0xC0 ; 192 + ecc: 9f 4f sbci r25, 0xFF ; 255 + ece: af 4f sbci r26, 0xFF ; 255 + ed0: bf 4f sbci r27, 0xFF ; 255 + ed2: 80 78 andi r24, 0x80 ; 128 + ed4: 8d 87 std Y+13, r24 ; 0x0d + ed6: 9e 87 std Y+14, r25 ; 0x0e + ed8: af 87 std Y+15, r26 ; 0x0f + eda: b8 8b std Y+16, r27 ; 0x10 + edc: 8e 01 movw r16, r28 + ede: 07 5f subi r16, 0xF7 ; 247 + ee0: 1f 4f sbci r17, 0xFF ; 255 + ee2: 04 c0 rjmp .+8 ; 0xeec <__divsf3+0x14e> + ee4: 87 01 movw r16, r14 + ee6: 02 c0 rjmp .+4 ; 0xeec <__divsf3+0x14e> + ee8: 01 e2 ldi r16, 0x21 ; 33 + eea: 11 e0 ldi r17, 0x01 ; 1 + eec: c8 01 movw r24, r16 + eee: 0e 94 cf 07 call 0xf9e ; 0xf9e <__pack_f> + ef2: 68 96 adiw r28, 0x18 ; 24 + ef4: ea e0 ldi r30, 0x0A ; 10 + ef6: 0c 94 8e 09 jmp 0x131c ; 0x131c <__epilogue_restores__+0x10> + +00000efa <__fixsfsi>: + efa: ac e0 ldi r26, 0x0C ; 12 + efc: b0 e0 ldi r27, 0x00 ; 0 + efe: e3 e8 ldi r30, 0x83 ; 131 + f00: f7 e0 ldi r31, 0x07 ; 7 + f02: 0c 94 7a 09 jmp 0x12f4 ; 0x12f4 <__prologue_saves__+0x20> + f06: 69 83 std Y+1, r22 ; 0x01 + f08: 7a 83 std Y+2, r23 ; 0x02 + f0a: 8b 83 std Y+3, r24 ; 0x03 + f0c: 9c 83 std Y+4, r25 ; 0x04 + f0e: ce 01 movw r24, r28 + f10: 01 96 adiw r24, 0x01 ; 1 + f12: be 01 movw r22, r28 + f14: 6b 5f subi r22, 0xFB ; 251 + f16: 7f 4f sbci r23, 0xFF ; 255 + f18: 0e 94 9d 08 call 0x113a ; 0x113a <__unpack_f> + f1c: 8d 81 ldd r24, Y+5 ; 0x05 + f1e: 82 30 cpi r24, 0x02 ; 2 + f20: 81 f1 breq .+96 ; 0xf82 <__fixsfsi+0x88> + f22: 82 30 cpi r24, 0x02 ; 2 + f24: 70 f1 brcs .+92 ; 0xf82 <__fixsfsi+0x88> + f26: 84 30 cpi r24, 0x04 ; 4 + f28: 21 f4 brne .+8 ; 0xf32 <__fixsfsi+0x38> + f2a: 8e 81 ldd r24, Y+6 ; 0x06 + f2c: 88 23 and r24, r24 + f2e: 69 f1 breq .+90 ; 0xf8a <__fixsfsi+0x90> + f30: 0a c0 rjmp .+20 ; 0xf46 <__fixsfsi+0x4c> + f32: 2f 81 ldd r18, Y+7 ; 0x07 + f34: 38 85 ldd r19, Y+8 ; 0x08 + f36: 37 fd sbrc r19, 7 + f38: 24 c0 rjmp .+72 ; 0xf82 <__fixsfsi+0x88> + f3a: 6e 81 ldd r22, Y+6 ; 0x06 + f3c: 2f 31 cpi r18, 0x1F ; 31 + f3e: 31 05 cpc r19, r1 + f40: 3c f0 brlt .+14 ; 0xf50 <__fixsfsi+0x56> + f42: 66 23 and r22, r22 + f44: 11 f1 breq .+68 ; 0xf8a <__fixsfsi+0x90> + f46: 20 e0 ldi r18, 0x00 ; 0 + f48: 30 e0 ldi r19, 0x00 ; 0 + f4a: 40 e0 ldi r20, 0x00 ; 0 + f4c: 50 e8 ldi r21, 0x80 ; 128 + f4e: 21 c0 rjmp .+66 ; 0xf92 <__fixsfsi+0x98> + f50: 8e e1 ldi r24, 0x1E ; 30 + f52: 90 e0 ldi r25, 0x00 ; 0 + f54: 82 1b sub r24, r18 + f56: 93 0b sbc r25, r19 + f58: 29 85 ldd r18, Y+9 ; 0x09 + f5a: 3a 85 ldd r19, Y+10 ; 0x0a + f5c: 4b 85 ldd r20, Y+11 ; 0x0b + f5e: 5c 85 ldd r21, Y+12 ; 0x0c + f60: 04 c0 rjmp .+8 ; 0xf6a <__fixsfsi+0x70> + f62: 56 95 lsr r21 + f64: 47 95 ror r20 + f66: 37 95 ror r19 + f68: 27 95 ror r18 + f6a: 8a 95 dec r24 + f6c: d2 f7 brpl .-12 ; 0xf62 <__fixsfsi+0x68> + f6e: 66 23 and r22, r22 + f70: 81 f0 breq .+32 ; 0xf92 <__fixsfsi+0x98> + f72: 50 95 com r21 + f74: 40 95 com r20 + f76: 30 95 com r19 + f78: 21 95 neg r18 + f7a: 3f 4f sbci r19, 0xFF ; 255 + f7c: 4f 4f sbci r20, 0xFF ; 255 + f7e: 5f 4f sbci r21, 0xFF ; 255 + f80: 08 c0 rjmp .+16 ; 0xf92 <__fixsfsi+0x98> + f82: 20 e0 ldi r18, 0x00 ; 0 + f84: 30 e0 ldi r19, 0x00 ; 0 + f86: a9 01 movw r20, r18 + f88: 04 c0 rjmp .+8 ; 0xf92 <__fixsfsi+0x98> + f8a: 2f ef ldi r18, 0xFF ; 255 + f8c: 3f ef ldi r19, 0xFF ; 255 + f8e: 4f ef ldi r20, 0xFF ; 255 + f90: 5f e7 ldi r21, 0x7F ; 127 + f92: b9 01 movw r22, r18 + f94: ca 01 movw r24, r20 + f96: 2c 96 adiw r28, 0x0c ; 12 + f98: e2 e0 ldi r30, 0x02 ; 2 + f9a: 0c 94 96 09 jmp 0x132c ; 0x132c <__epilogue_restores__+0x20> + +00000f9e <__pack_f>: + f9e: ef 92 push r14 + fa0: ff 92 push r15 + fa2: 0f 93 push r16 + fa4: 1f 93 push r17 + fa6: cf 93 push r28 + fa8: df 93 push r29 + faa: fc 01 movw r30, r24 + fac: 24 81 ldd r18, Z+4 ; 0x04 + fae: 35 81 ldd r19, Z+5 ; 0x05 + fb0: 46 81 ldd r20, Z+6 ; 0x06 + fb2: 57 81 ldd r21, Z+7 ; 0x07 + fb4: 61 81 ldd r22, Z+1 ; 0x01 + fb6: 80 81 ld r24, Z + fb8: 82 30 cpi r24, 0x02 ; 2 + fba: 20 f4 brcc .+8 ; 0xfc4 <__pack_f+0x26> + fbc: 40 61 ori r20, 0x10 ; 16 + fbe: ef ef ldi r30, 0xFF ; 255 + fc0: f0 e0 ldi r31, 0x00 ; 0 + fc2: a3 c0 rjmp .+326 ; 0x110a <__pack_f+0x16c> + fc4: 84 30 cpi r24, 0x04 ; 4 + fc6: 09 f4 brne .+2 ; 0xfca <__pack_f+0x2c> + fc8: 9b c0 rjmp .+310 ; 0x1100 <__pack_f+0x162> + fca: 82 30 cpi r24, 0x02 ; 2 + fcc: 09 f4 brne .+2 ; 0xfd0 <__pack_f+0x32> + fce: 92 c0 rjmp .+292 ; 0x10f4 <__pack_f+0x156> + fd0: 21 15 cp r18, r1 + fd2: 31 05 cpc r19, r1 + fd4: 41 05 cpc r20, r1 + fd6: 51 05 cpc r21, r1 + fd8: 09 f4 brne .+2 ; 0xfdc <__pack_f+0x3e> + fda: 8f c0 rjmp .+286 ; 0x10fa <__pack_f+0x15c> + fdc: 02 80 ldd r0, Z+2 ; 0x02 + fde: f3 81 ldd r31, Z+3 ; 0x03 + fe0: e0 2d mov r30, r0 + fe2: 8f ef ldi r24, 0xFF ; 255 + fe4: e2 38 cpi r30, 0x82 ; 130 + fe6: f8 07 cpc r31, r24 + fe8: 0c f0 brlt .+2 ; 0xfec <__pack_f+0x4e> + fea: 5a c0 rjmp .+180 ; 0x10a0 <__pack_f+0x102> + fec: c2 e8 ldi r28, 0x82 ; 130 + fee: df ef ldi r29, 0xFF ; 255 + ff0: ce 1b sub r28, r30 + ff2: df 0b sbc r29, r31 + ff4: ca 31 cpi r28, 0x1A ; 26 + ff6: d1 05 cpc r29, r1 + ff8: 6c f5 brge .+90 ; 0x1054 <__pack_f+0xb6> + ffa: 79 01 movw r14, r18 + ffc: 8a 01 movw r16, r20 + ffe: 0c 2e mov r0, r28 + 1000: 04 c0 rjmp .+8 ; 0x100a <__pack_f+0x6c> + 1002: 16 95 lsr r17 + 1004: 07 95 ror r16 + 1006: f7 94 ror r15 + 1008: e7 94 ror r14 + 100a: 0a 94 dec r0 + 100c: d2 f7 brpl .-12 ; 0x1002 <__pack_f+0x64> + 100e: 81 e0 ldi r24, 0x01 ; 1 + 1010: 90 e0 ldi r25, 0x00 ; 0 + 1012: a0 e0 ldi r26, 0x00 ; 0 + 1014: b0 e0 ldi r27, 0x00 ; 0 + 1016: 0c 2e mov r0, r28 + 1018: 04 c0 rjmp .+8 ; 0x1022 <__pack_f+0x84> + 101a: 88 0f add r24, r24 + 101c: 99 1f adc r25, r25 + 101e: aa 1f adc r26, r26 + 1020: bb 1f adc r27, r27 + 1022: 0a 94 dec r0 + 1024: d2 f7 brpl .-12 ; 0x101a <__pack_f+0x7c> + 1026: 01 97 sbiw r24, 0x01 ; 1 + 1028: a1 09 sbc r26, r1 + 102a: b1 09 sbc r27, r1 + 102c: 82 23 and r24, r18 + 102e: 93 23 and r25, r19 + 1030: a4 23 and r26, r20 + 1032: b5 23 and r27, r21 + 1034: 21 e0 ldi r18, 0x01 ; 1 + 1036: 30 e0 ldi r19, 0x00 ; 0 + 1038: 40 e0 ldi r20, 0x00 ; 0 + 103a: 50 e0 ldi r21, 0x00 ; 0 + 103c: 00 97 sbiw r24, 0x00 ; 0 + 103e: a1 05 cpc r26, r1 + 1040: b1 05 cpc r27, r1 + 1042: 19 f4 brne .+6 ; 0x104a <__pack_f+0xac> + 1044: 20 e0 ldi r18, 0x00 ; 0 + 1046: 30 e0 ldi r19, 0x00 ; 0 + 1048: a9 01 movw r20, r18 + 104a: 2e 29 or r18, r14 + 104c: 3f 29 or r19, r15 + 104e: 40 2b or r20, r16 + 1050: 51 2b or r21, r17 + 1052: 03 c0 rjmp .+6 ; 0x105a <__pack_f+0xbc> + 1054: 20 e0 ldi r18, 0x00 ; 0 + 1056: 30 e0 ldi r19, 0x00 ; 0 + 1058: a9 01 movw r20, r18 + 105a: da 01 movw r26, r20 + 105c: c9 01 movw r24, r18 + 105e: 8f 77 andi r24, 0x7F ; 127 + 1060: 90 70 andi r25, 0x00 ; 0 + 1062: a0 70 andi r26, 0x00 ; 0 + 1064: b0 70 andi r27, 0x00 ; 0 + 1066: 80 34 cpi r24, 0x40 ; 64 + 1068: 91 05 cpc r25, r1 + 106a: a1 05 cpc r26, r1 + 106c: b1 05 cpc r27, r1 + 106e: 39 f4 brne .+14 ; 0x107e <__pack_f+0xe0> + 1070: 27 ff sbrs r18, 7 + 1072: 09 c0 rjmp .+18 ; 0x1086 <__pack_f+0xe8> + 1074: 20 5c subi r18, 0xC0 ; 192 + 1076: 3f 4f sbci r19, 0xFF ; 255 + 1078: 4f 4f sbci r20, 0xFF ; 255 + 107a: 5f 4f sbci r21, 0xFF ; 255 + 107c: 04 c0 rjmp .+8 ; 0x1086 <__pack_f+0xe8> + 107e: 21 5c subi r18, 0xC1 ; 193 + 1080: 3f 4f sbci r19, 0xFF ; 255 + 1082: 4f 4f sbci r20, 0xFF ; 255 + 1084: 5f 4f sbci r21, 0xFF ; 255 + 1086: e1 e0 ldi r30, 0x01 ; 1 + 1088: f0 e0 ldi r31, 0x00 ; 0 + 108a: 20 30 cpi r18, 0x00 ; 0 + 108c: 80 e0 ldi r24, 0x00 ; 0 + 108e: 38 07 cpc r19, r24 + 1090: 80 e0 ldi r24, 0x00 ; 0 + 1092: 48 07 cpc r20, r24 + 1094: 80 e4 ldi r24, 0x40 ; 64 + 1096: 58 07 cpc r21, r24 + 1098: 28 f5 brcc .+74 ; 0x10e4 <__pack_f+0x146> + 109a: e0 e0 ldi r30, 0x00 ; 0 + 109c: f0 e0 ldi r31, 0x00 ; 0 + 109e: 22 c0 rjmp .+68 ; 0x10e4 <__pack_f+0x146> + 10a0: e0 38 cpi r30, 0x80 ; 128 + 10a2: f1 05 cpc r31, r1 + 10a4: 6c f5 brge .+90 ; 0x1100 <__pack_f+0x162> + 10a6: e1 58 subi r30, 0x81 ; 129 + 10a8: ff 4f sbci r31, 0xFF ; 255 + 10aa: da 01 movw r26, r20 + 10ac: c9 01 movw r24, r18 + 10ae: 8f 77 andi r24, 0x7F ; 127 + 10b0: 90 70 andi r25, 0x00 ; 0 + 10b2: a0 70 andi r26, 0x00 ; 0 + 10b4: b0 70 andi r27, 0x00 ; 0 + 10b6: 80 34 cpi r24, 0x40 ; 64 + 10b8: 91 05 cpc r25, r1 + 10ba: a1 05 cpc r26, r1 + 10bc: b1 05 cpc r27, r1 + 10be: 39 f4 brne .+14 ; 0x10ce <__pack_f+0x130> + 10c0: 27 ff sbrs r18, 7 + 10c2: 09 c0 rjmp .+18 ; 0x10d6 <__pack_f+0x138> + 10c4: 20 5c subi r18, 0xC0 ; 192 + 10c6: 3f 4f sbci r19, 0xFF ; 255 + 10c8: 4f 4f sbci r20, 0xFF ; 255 + 10ca: 5f 4f sbci r21, 0xFF ; 255 + 10cc: 04 c0 rjmp .+8 ; 0x10d6 <__pack_f+0x138> + 10ce: 21 5c subi r18, 0xC1 ; 193 + 10d0: 3f 4f sbci r19, 0xFF ; 255 + 10d2: 4f 4f sbci r20, 0xFF ; 255 + 10d4: 5f 4f sbci r21, 0xFF ; 255 + 10d6: 57 ff sbrs r21, 7 + 10d8: 05 c0 rjmp .+10 ; 0x10e4 <__pack_f+0x146> + 10da: 56 95 lsr r21 + 10dc: 47 95 ror r20 + 10de: 37 95 ror r19 + 10e0: 27 95 ror r18 + 10e2: 31 96 adiw r30, 0x01 ; 1 + 10e4: 87 e0 ldi r24, 0x07 ; 7 + 10e6: 56 95 lsr r21 + 10e8: 47 95 ror r20 + 10ea: 37 95 ror r19 + 10ec: 27 95 ror r18 + 10ee: 8a 95 dec r24 + 10f0: d1 f7 brne .-12 ; 0x10e6 <__pack_f+0x148> + 10f2: 0b c0 rjmp .+22 ; 0x110a <__pack_f+0x16c> + 10f4: e0 e0 ldi r30, 0x00 ; 0 + 10f6: f0 e0 ldi r31, 0x00 ; 0 + 10f8: 05 c0 rjmp .+10 ; 0x1104 <__pack_f+0x166> + 10fa: e0 e0 ldi r30, 0x00 ; 0 + 10fc: f0 e0 ldi r31, 0x00 ; 0 + 10fe: 05 c0 rjmp .+10 ; 0x110a <__pack_f+0x16c> + 1100: ef ef ldi r30, 0xFF ; 255 + 1102: f0 e0 ldi r31, 0x00 ; 0 + 1104: 20 e0 ldi r18, 0x00 ; 0 + 1106: 30 e0 ldi r19, 0x00 ; 0 + 1108: a9 01 movw r20, r18 + 110a: 8e 2f mov r24, r30 + 110c: 87 95 ror r24 + 110e: 88 27 eor r24, r24 + 1110: 87 95 ror r24 + 1112: 94 2f mov r25, r20 + 1114: 9f 77 andi r25, 0x7F ; 127 + 1116: 67 95 ror r22 + 1118: 66 27 eor r22, r22 + 111a: 67 95 ror r22 + 111c: e6 95 lsr r30 + 111e: e2 2e mov r14, r18 + 1120: a9 2f mov r26, r25 + 1122: a8 2b or r26, r24 + 1124: fe 2f mov r31, r30 + 1126: f6 2b or r31, r22 + 1128: 62 2f mov r22, r18 + 112a: 73 2f mov r23, r19 + 112c: 8a 2f mov r24, r26 + 112e: 9f 2f mov r25, r31 + 1130: cd b7 in r28, 0x3d ; 61 + 1132: de b7 in r29, 0x3e ; 62 + 1134: e6 e0 ldi r30, 0x06 ; 6 + 1136: 0c 94 92 09 jmp 0x1324 ; 0x1324 <__epilogue_restores__+0x18> + +0000113a <__unpack_f>: + 113a: dc 01 movw r26, r24 + 113c: fb 01 movw r30, r22 + 113e: 2c 91 ld r18, X + 1140: 11 96 adiw r26, 0x01 ; 1 + 1142: 3c 91 ld r19, X + 1144: 11 97 sbiw r26, 0x01 ; 1 + 1146: 12 96 adiw r26, 0x02 ; 2 + 1148: 8c 91 ld r24, X + 114a: 12 97 sbiw r26, 0x02 ; 2 + 114c: 48 2f mov r20, r24 + 114e: 4f 77 andi r20, 0x7F ; 127 + 1150: 50 e0 ldi r21, 0x00 ; 0 + 1152: 98 2f mov r25, r24 + 1154: 99 1f adc r25, r25 + 1156: 99 27 eor r25, r25 + 1158: 99 1f adc r25, r25 + 115a: 13 96 adiw r26, 0x03 ; 3 + 115c: 6c 91 ld r22, X + 115e: 13 97 sbiw r26, 0x03 ; 3 + 1160: 86 2f mov r24, r22 + 1162: 88 0f add r24, r24 + 1164: 89 2b or r24, r25 + 1166: 90 e0 ldi r25, 0x00 ; 0 + 1168: 66 1f adc r22, r22 + 116a: 66 27 eor r22, r22 + 116c: 66 1f adc r22, r22 + 116e: 61 83 std Z+1, r22 ; 0x01 + 1170: 00 97 sbiw r24, 0x00 ; 0 + 1172: 39 f5 brne .+78 ; 0x11c2 <__unpack_f+0x88> + 1174: 21 15 cp r18, r1 + 1176: 31 05 cpc r19, r1 + 1178: 41 05 cpc r20, r1 + 117a: 51 05 cpc r21, r1 + 117c: 11 f4 brne .+4 ; 0x1182 <__unpack_f+0x48> + 117e: 82 e0 ldi r24, 0x02 ; 2 + 1180: 29 c0 rjmp .+82 ; 0x11d4 <__unpack_f+0x9a> + 1182: 82 e8 ldi r24, 0x82 ; 130 + 1184: 9f ef ldi r25, 0xFF ; 255 + 1186: 93 83 std Z+3, r25 ; 0x03 + 1188: 82 83 std Z+2, r24 ; 0x02 + 118a: 67 e0 ldi r22, 0x07 ; 7 + 118c: 22 0f add r18, r18 + 118e: 33 1f adc r19, r19 + 1190: 44 1f adc r20, r20 + 1192: 55 1f adc r21, r21 + 1194: 6a 95 dec r22 + 1196: d1 f7 brne .-12 ; 0x118c <__unpack_f+0x52> + 1198: 83 e0 ldi r24, 0x03 ; 3 + 119a: 80 83 st Z, r24 + 119c: 09 c0 rjmp .+18 ; 0x11b0 <__unpack_f+0x76> + 119e: 22 0f add r18, r18 + 11a0: 33 1f adc r19, r19 + 11a2: 44 1f adc r20, r20 + 11a4: 55 1f adc r21, r21 + 11a6: 82 81 ldd r24, Z+2 ; 0x02 + 11a8: 93 81 ldd r25, Z+3 ; 0x03 + 11aa: 01 97 sbiw r24, 0x01 ; 1 + 11ac: 93 83 std Z+3, r25 ; 0x03 + 11ae: 82 83 std Z+2, r24 ; 0x02 + 11b0: 20 30 cpi r18, 0x00 ; 0 + 11b2: 80 e0 ldi r24, 0x00 ; 0 + 11b4: 38 07 cpc r19, r24 + 11b6: 80 e0 ldi r24, 0x00 ; 0 + 11b8: 48 07 cpc r20, r24 + 11ba: 80 e4 ldi r24, 0x40 ; 64 + 11bc: 58 07 cpc r21, r24 + 11be: 78 f3 brcs .-34 ; 0x119e <__unpack_f+0x64> + 11c0: 20 c0 rjmp .+64 ; 0x1202 <__unpack_f+0xc8> + 11c2: 8f 3f cpi r24, 0xFF ; 255 + 11c4: 91 05 cpc r25, r1 + 11c6: 79 f4 brne .+30 ; 0x11e6 <__unpack_f+0xac> + 11c8: 21 15 cp r18, r1 + 11ca: 31 05 cpc r19, r1 + 11cc: 41 05 cpc r20, r1 + 11ce: 51 05 cpc r21, r1 + 11d0: 19 f4 brne .+6 ; 0x11d8 <__unpack_f+0x9e> + 11d2: 84 e0 ldi r24, 0x04 ; 4 + 11d4: 80 83 st Z, r24 + 11d6: 08 95 ret + 11d8: 44 ff sbrs r20, 4 + 11da: 03 c0 rjmp .+6 ; 0x11e2 <__unpack_f+0xa8> + 11dc: 81 e0 ldi r24, 0x01 ; 1 + 11de: 80 83 st Z, r24 + 11e0: 10 c0 rjmp .+32 ; 0x1202 <__unpack_f+0xc8> + 11e2: 10 82 st Z, r1 + 11e4: 0e c0 rjmp .+28 ; 0x1202 <__unpack_f+0xc8> + 11e6: 8f 57 subi r24, 0x7F ; 127 + 11e8: 90 40 sbci r25, 0x00 ; 0 + 11ea: 93 83 std Z+3, r25 ; 0x03 + 11ec: 82 83 std Z+2, r24 ; 0x02 + 11ee: 83 e0 ldi r24, 0x03 ; 3 + 11f0: 80 83 st Z, r24 + 11f2: 87 e0 ldi r24, 0x07 ; 7 + 11f4: 22 0f add r18, r18 + 11f6: 33 1f adc r19, r19 + 11f8: 44 1f adc r20, r20 + 11fa: 55 1f adc r21, r21 + 11fc: 8a 95 dec r24 + 11fe: d1 f7 brne .-12 ; 0x11f4 <__unpack_f+0xba> + 1200: 50 64 ori r21, 0x40 ; 64 + 1202: 24 83 std Z+4, r18 ; 0x04 + 1204: 35 83 std Z+5, r19 ; 0x05 + 1206: 46 83 std Z+6, r20 ; 0x06 + 1208: 57 83 std Z+7, r21 ; 0x07 + 120a: 08 95 ret + +0000120c <__divmodhi4>: + 120c: 97 fb bst r25, 7 + 120e: 09 2e mov r0, r25 + 1210: 07 26 eor r0, r23 + 1212: 0a d0 rcall .+20 ; 0x1228 <__divmodhi4_neg1> + 1214: 77 fd sbrc r23, 7 + 1216: 04 d0 rcall .+8 ; 0x1220 <__divmodhi4_neg2> + 1218: 49 d0 rcall .+146 ; 0x12ac <__udivmodhi4> + 121a: 06 d0 rcall .+12 ; 0x1228 <__divmodhi4_neg1> + 121c: 00 20 and r0, r0 + 121e: 1a f4 brpl .+6 ; 0x1226 <__divmodhi4_exit> + +00001220 <__divmodhi4_neg2>: + 1220: 70 95 com r23 + 1222: 61 95 neg r22 + 1224: 7f 4f sbci r23, 0xFF ; 255 + +00001226 <__divmodhi4_exit>: + 1226: 08 95 ret + +00001228 <__divmodhi4_neg1>: + 1228: f6 f7 brtc .-4 ; 0x1226 <__divmodhi4_exit> + 122a: 90 95 com r25 + 122c: 81 95 neg r24 + 122e: 9f 4f sbci r25, 0xFF ; 255 + 1230: 08 95 ret + +00001232 <__udivmodsi4>: + 1232: a1 e2 ldi r26, 0x21 ; 33 + 1234: 1a 2e mov r1, r26 + 1236: aa 1b sub r26, r26 + 1238: bb 1b sub r27, r27 + 123a: fd 01 movw r30, r26 + 123c: 0d c0 rjmp .+26 ; 0x1258 <__udivmodsi4_ep> + +0000123e <__udivmodsi4_loop>: + 123e: aa 1f adc r26, r26 + 1240: bb 1f adc r27, r27 + 1242: ee 1f adc r30, r30 + 1244: ff 1f adc r31, r31 + 1246: a2 17 cp r26, r18 + 1248: b3 07 cpc r27, r19 + 124a: e4 07 cpc r30, r20 + 124c: f5 07 cpc r31, r21 + 124e: 20 f0 brcs .+8 ; 0x1258 <__udivmodsi4_ep> + 1250: a2 1b sub r26, r18 + 1252: b3 0b sbc r27, r19 + 1254: e4 0b sbc r30, r20 + 1256: f5 0b sbc r31, r21 + +00001258 <__udivmodsi4_ep>: + 1258: 66 1f adc r22, r22 + 125a: 77 1f adc r23, r23 + 125c: 88 1f adc r24, r24 + 125e: 99 1f adc r25, r25 + 1260: 1a 94 dec r1 + 1262: 69 f7 brne .-38 ; 0x123e <__udivmodsi4_loop> + 1264: 60 95 com r22 + 1266: 70 95 com r23 + 1268: 80 95 com r24 + 126a: 90 95 com r25 + 126c: 9b 01 movw r18, r22 + 126e: ac 01 movw r20, r24 + 1270: bd 01 movw r22, r26 + 1272: cf 01 movw r24, r30 + 1274: 08 95 ret + +00001276 <__divmodsi4>: + 1276: 97 fb bst r25, 7 + 1278: 09 2e mov r0, r25 + 127a: 05 26 eor r0, r21 + 127c: 0e d0 rcall .+28 ; 0x129a <__divmodsi4_neg1> + 127e: 57 fd sbrc r21, 7 + 1280: 04 d0 rcall .+8 ; 0x128a <__divmodsi4_neg2> + 1282: d7 df rcall .-82 ; 0x1232 <__udivmodsi4> + 1284: 0a d0 rcall .+20 ; 0x129a <__divmodsi4_neg1> + 1286: 00 1c adc r0, r0 + 1288: 38 f4 brcc .+14 ; 0x1298 <__divmodsi4_exit> + +0000128a <__divmodsi4_neg2>: + 128a: 50 95 com r21 + 128c: 40 95 com r20 + 128e: 30 95 com r19 + 1290: 21 95 neg r18 + 1292: 3f 4f sbci r19, 0xFF ; 255 + 1294: 4f 4f sbci r20, 0xFF ; 255 + 1296: 5f 4f sbci r21, 0xFF ; 255 + +00001298 <__divmodsi4_exit>: + 1298: 08 95 ret + +0000129a <__divmodsi4_neg1>: + 129a: f6 f7 brtc .-4 ; 0x1298 <__divmodsi4_exit> + 129c: 90 95 com r25 + 129e: 80 95 com r24 + 12a0: 70 95 com r23 + 12a2: 61 95 neg r22 + 12a4: 7f 4f sbci r23, 0xFF ; 255 + 12a6: 8f 4f sbci r24, 0xFF ; 255 + 12a8: 9f 4f sbci r25, 0xFF ; 255 + 12aa: 08 95 ret + +000012ac <__udivmodhi4>: + 12ac: aa 1b sub r26, r26 + 12ae: bb 1b sub r27, r27 + 12b0: 51 e1 ldi r21, 0x11 ; 17 + 12b2: 07 c0 rjmp .+14 ; 0x12c2 <__udivmodhi4_ep> + +000012b4 <__udivmodhi4_loop>: + 12b4: aa 1f adc r26, r26 + 12b6: bb 1f adc r27, r27 + 12b8: a6 17 cp r26, r22 + 12ba: b7 07 cpc r27, r23 + 12bc: 10 f0 brcs .+4 ; 0x12c2 <__udivmodhi4_ep> + 12be: a6 1b sub r26, r22 + 12c0: b7 0b sbc r27, r23 + +000012c2 <__udivmodhi4_ep>: + 12c2: 88 1f adc r24, r24 + 12c4: 99 1f adc r25, r25 + 12c6: 5a 95 dec r21 + 12c8: a9 f7 brne .-22 ; 0x12b4 <__udivmodhi4_loop> + 12ca: 80 95 com r24 + 12cc: 90 95 com r25 + 12ce: bc 01 movw r22, r24 + 12d0: cd 01 movw r24, r26 + 12d2: 08 95 ret + +000012d4 <__prologue_saves__>: + 12d4: 2f 92 push r2 + 12d6: 3f 92 push r3 + 12d8: 4f 92 push r4 + 12da: 5f 92 push r5 + 12dc: 6f 92 push r6 + 12de: 7f 92 push r7 + 12e0: 8f 92 push r8 + 12e2: 9f 92 push r9 + 12e4: af 92 push r10 + 12e6: bf 92 push r11 + 12e8: cf 92 push r12 + 12ea: df 92 push r13 + 12ec: ef 92 push r14 + 12ee: ff 92 push r15 + 12f0: 0f 93 push r16 + 12f2: 1f 93 push r17 + 12f4: cf 93 push r28 + 12f6: df 93 push r29 + 12f8: cd b7 in r28, 0x3d ; 61 + 12fa: de b7 in r29, 0x3e ; 62 + 12fc: ca 1b sub r28, r26 + 12fe: db 0b sbc r29, r27 + 1300: 0f b6 in r0, 0x3f ; 63 + 1302: f8 94 cli + 1304: de bf out 0x3e, r29 ; 62 + 1306: 0f be out 0x3f, r0 ; 63 + 1308: cd bf out 0x3d, r28 ; 61 + 130a: 09 94 ijmp + +0000130c <__epilogue_restores__>: + 130c: 2a 88 ldd r2, Y+18 ; 0x12 + 130e: 39 88 ldd r3, Y+17 ; 0x11 + 1310: 48 88 ldd r4, Y+16 ; 0x10 + 1312: 5f 84 ldd r5, Y+15 ; 0x0f + 1314: 6e 84 ldd r6, Y+14 ; 0x0e + 1316: 7d 84 ldd r7, Y+13 ; 0x0d + 1318: 8c 84 ldd r8, Y+12 ; 0x0c + 131a: 9b 84 ldd r9, Y+11 ; 0x0b + 131c: aa 84 ldd r10, Y+10 ; 0x0a + 131e: b9 84 ldd r11, Y+9 ; 0x09 + 1320: c8 84 ldd r12, Y+8 ; 0x08 + 1322: df 80 ldd r13, Y+7 ; 0x07 + 1324: ee 80 ldd r14, Y+6 ; 0x06 + 1326: fd 80 ldd r15, Y+5 ; 0x05 + 1328: 0c 81 ldd r16, Y+4 ; 0x04 + 132a: 1b 81 ldd r17, Y+3 ; 0x03 + 132c: aa 81 ldd r26, Y+2 ; 0x02 + 132e: b9 81 ldd r27, Y+1 ; 0x01 + 1330: ce 0f add r28, r30 + 1332: d1 1d adc r29, r1 + 1334: 0f b6 in r0, 0x3f ; 63 + 1336: f8 94 cli + 1338: de bf out 0x3e, r29 ; 62 + 133a: 0f be out 0x3f, r0 ; 63 + 133c: cd bf out 0x3d, r28 ; 61 + 133e: ed 01 movw r28, r26 + 1340: 08 95 ret + +00001342 <__tablejump2__>: + 1342: ee 0f add r30, r30 + 1344: ff 1f adc r31, r31 + +00001346 <__tablejump__>: + 1346: 05 90 lpm r0, Z+ + 1348: f4 91 lpm r31, Z+ + 134a: e0 2d mov r30, r0 + 134c: 09 94 ijmp + +0000134e <sin>: + 134e: 9f 93 push r25 + 1350: 05 d0 rcall .+10 ; 0x135c <__fp_rempio2> + 1352: 0f 90 pop r0 + 1354: 07 fc sbrc r0, 7 + 1356: ee 5f subi r30, 0xFE ; 254 + 1358: 28 c0 rjmp .+80 ; 0x13aa <__fp_sinus> + 135a: ce c0 rjmp .+412 ; 0x14f8 <__fp_nan> + +0000135c <__fp_rempio2>: + 135c: 3f d0 rcall .+126 ; 0x13dc <__fp_splitA> + 135e: e8 f3 brcs .-6 ; 0x135a <sin+0xc> + 1360: e8 94 clt + 1362: e0 e0 ldi r30, 0x00 ; 0 + 1364: bb 27 eor r27, r27 + 1366: 9f 57 subi r25, 0x7F ; 127 + 1368: f0 f0 brcs .+60 ; 0x13a6 <__fp_rempio2+0x4a> + 136a: 2a ed ldi r18, 0xDA ; 218 + 136c: 3f e0 ldi r19, 0x0F ; 15 + 136e: 49 ec ldi r20, 0xC9 ; 201 + 1370: 06 c0 rjmp .+12 ; 0x137e <__fp_rempio2+0x22> + 1372: ee 0f add r30, r30 + 1374: bb 0f add r27, r27 + 1376: 66 1f adc r22, r22 + 1378: 77 1f adc r23, r23 + 137a: 88 1f adc r24, r24 + 137c: 28 f0 brcs .+10 ; 0x1388 <__fp_rempio2+0x2c> + 137e: b2 3a cpi r27, 0xA2 ; 162 + 1380: 62 07 cpc r22, r18 + 1382: 73 07 cpc r23, r19 + 1384: 84 07 cpc r24, r20 + 1386: 28 f0 brcs .+10 ; 0x1392 <__fp_rempio2+0x36> + 1388: b2 5a subi r27, 0xA2 ; 162 + 138a: 62 0b sbc r22, r18 + 138c: 73 0b sbc r23, r19 + 138e: 84 0b sbc r24, r20 + 1390: e3 95 inc r30 + 1392: 9a 95 dec r25 + 1394: 72 f7 brpl .-36 ; 0x1372 <__fp_rempio2+0x16> + 1396: 80 38 cpi r24, 0x80 ; 128 + 1398: 30 f4 brcc .+12 ; 0x13a6 <__fp_rempio2+0x4a> + 139a: 9a 95 dec r25 + 139c: bb 0f add r27, r27 + 139e: 66 1f adc r22, r22 + 13a0: 77 1f adc r23, r23 + 13a2: 88 1f adc r24, r24 + 13a4: d2 f7 brpl .-12 ; 0x139a <__fp_rempio2+0x3e> + 13a6: 90 48 sbci r25, 0x80 ; 128 + 13a8: 9b c0 rjmp .+310 ; 0x14e0 <__fp_mpack_finite> + +000013aa <__fp_sinus>: + 13aa: ef 93 push r30 + 13ac: e0 ff sbrs r30, 0 + 13ae: 06 c0 rjmp .+12 ; 0x13bc <__fp_sinus+0x12> + 13b0: a2 ea ldi r26, 0xA2 ; 162 + 13b2: 2a ed ldi r18, 0xDA ; 218 + 13b4: 3f e0 ldi r19, 0x0F ; 15 + 13b6: 49 ec ldi r20, 0xC9 ; 201 + 13b8: 5f eb ldi r21, 0xBF ; 191 + 13ba: 37 d0 rcall .+110 ; 0x142a <__addsf3x> + 13bc: bf d0 rcall .+382 ; 0x153c <__fp_round> + 13be: 0f 90 pop r0 + 13c0: 03 94 inc r0 + 13c2: 01 fc sbrc r0, 1 + 13c4: 90 58 subi r25, 0x80 ; 128 + 13c6: e8 e6 ldi r30, 0x68 ; 104 + 13c8: f0 e0 ldi r31, 0x00 ; 0 + 13ca: 99 c0 rjmp .+306 ; 0x14fe <__fp_powsodd> + +000013cc <__fp_split3>: + 13cc: 57 fd sbrc r21, 7 + 13ce: 90 58 subi r25, 0x80 ; 128 + 13d0: 44 0f add r20, r20 + 13d2: 55 1f adc r21, r21 + 13d4: 59 f0 breq .+22 ; 0x13ec <__fp_splitA+0x10> + 13d6: 5f 3f cpi r21, 0xFF ; 255 + 13d8: 71 f0 breq .+28 ; 0x13f6 <__fp_splitA+0x1a> + 13da: 47 95 ror r20 + +000013dc <__fp_splitA>: + 13dc: 88 0f add r24, r24 + 13de: 97 fb bst r25, 7 + 13e0: 99 1f adc r25, r25 + 13e2: 61 f0 breq .+24 ; 0x13fc <__fp_splitA+0x20> + 13e4: 9f 3f cpi r25, 0xFF ; 255 + 13e6: 79 f0 breq .+30 ; 0x1406 <__fp_splitA+0x2a> + 13e8: 87 95 ror r24 + 13ea: 08 95 ret + 13ec: 12 16 cp r1, r18 + 13ee: 13 06 cpc r1, r19 + 13f0: 14 06 cpc r1, r20 + 13f2: 55 1f adc r21, r21 + 13f4: f2 cf rjmp .-28 ; 0x13da <__fp_split3+0xe> + 13f6: 46 95 lsr r20 + 13f8: f1 df rcall .-30 ; 0x13dc <__fp_splitA> + 13fa: 08 c0 rjmp .+16 ; 0x140c <__fp_splitA+0x30> + 13fc: 16 16 cp r1, r22 + 13fe: 17 06 cpc r1, r23 + 1400: 18 06 cpc r1, r24 + 1402: 99 1f adc r25, r25 + 1404: f1 cf rjmp .-30 ; 0x13e8 <__fp_splitA+0xc> + 1406: 86 95 lsr r24 + 1408: 71 05 cpc r23, r1 + 140a: 61 05 cpc r22, r1 + 140c: 08 94 sec + 140e: 08 95 ret + 1410: 87 d0 rcall .+270 ; 0x1520 <__fp_pscA> + 1412: 30 f0 brcs .+12 ; 0x1420 <__fp_splitA+0x44> + 1414: 8c d0 rcall .+280 ; 0x152e <__fp_pscB> + 1416: 20 f0 brcs .+8 ; 0x1420 <__fp_splitA+0x44> + 1418: 31 f4 brne .+12 ; 0x1426 <__fp_splitA+0x4a> + 141a: 9f 3f cpi r25, 0xFF ; 255 + 141c: 11 f4 brne .+4 ; 0x1422 <__fp_splitA+0x46> + 141e: 1e f4 brtc .+6 ; 0x1426 <__fp_splitA+0x4a> + 1420: 6b c0 rjmp .+214 ; 0x14f8 <__fp_nan> + 1422: 0e f4 brtc .+2 ; 0x1426 <__fp_splitA+0x4a> + 1424: e0 95 com r30 + 1426: e7 fb bst r30, 7 + 1428: 53 c0 rjmp .+166 ; 0x14d0 <__fp_inf> + +0000142a <__addsf3x>: + 142a: e9 2f mov r30, r25 + 142c: cf df rcall .-98 ; 0x13cc <__fp_split3> + 142e: 80 f3 brcs .-32 ; 0x1410 <__fp_splitA+0x34> + 1430: ba 17 cp r27, r26 + 1432: 62 07 cpc r22, r18 + 1434: 73 07 cpc r23, r19 + 1436: 84 07 cpc r24, r20 + 1438: 95 07 cpc r25, r21 + 143a: 18 f0 brcs .+6 ; 0x1442 <__addsf3x+0x18> + 143c: 71 f4 brne .+28 ; 0x145a <__addsf3x+0x30> + 143e: 9e f5 brtc .+102 ; 0x14a6 <__addsf3x+0x7c> + 1440: 8e c0 rjmp .+284 ; 0x155e <__fp_zero> + 1442: 0e f4 brtc .+2 ; 0x1446 <__addsf3x+0x1c> + 1444: e0 95 com r30 + 1446: 0b 2e mov r0, r27 + 1448: ba 2f mov r27, r26 + 144a: a0 2d mov r26, r0 + 144c: 0b 01 movw r0, r22 + 144e: b9 01 movw r22, r18 + 1450: 90 01 movw r18, r0 + 1452: 0c 01 movw r0, r24 + 1454: ca 01 movw r24, r20 + 1456: a0 01 movw r20, r0 + 1458: 11 24 eor r1, r1 + 145a: ff 27 eor r31, r31 + 145c: 59 1b sub r21, r25 + 145e: 99 f0 breq .+38 ; 0x1486 <__addsf3x+0x5c> + 1460: 59 3f cpi r21, 0xF9 ; 249 + 1462: 50 f4 brcc .+20 ; 0x1478 <__addsf3x+0x4e> + 1464: 50 3e cpi r21, 0xE0 ; 224 + 1466: 68 f1 brcs .+90 ; 0x14c2 <__addsf3x+0x98> + 1468: 1a 16 cp r1, r26 + 146a: f0 40 sbci r31, 0x00 ; 0 + 146c: a2 2f mov r26, r18 + 146e: 23 2f mov r18, r19 + 1470: 34 2f mov r19, r20 + 1472: 44 27 eor r20, r20 + 1474: 58 5f subi r21, 0xF8 ; 248 + 1476: f3 cf rjmp .-26 ; 0x145e <__addsf3x+0x34> + 1478: 46 95 lsr r20 + 147a: 37 95 ror r19 + 147c: 27 95 ror r18 + 147e: a7 95 ror r26 + 1480: f0 40 sbci r31, 0x00 ; 0 + 1482: 53 95 inc r21 + 1484: c9 f7 brne .-14 ; 0x1478 <__addsf3x+0x4e> + 1486: 7e f4 brtc .+30 ; 0x14a6 <__addsf3x+0x7c> + 1488: 1f 16 cp r1, r31 + 148a: ba 0b sbc r27, r26 + 148c: 62 0b sbc r22, r18 + 148e: 73 0b sbc r23, r19 + 1490: 84 0b sbc r24, r20 + 1492: ba f0 brmi .+46 ; 0x14c2 <__addsf3x+0x98> + 1494: 91 50 subi r25, 0x01 ; 1 + 1496: a1 f0 breq .+40 ; 0x14c0 <__addsf3x+0x96> + 1498: ff 0f add r31, r31 + 149a: bb 1f adc r27, r27 + 149c: 66 1f adc r22, r22 + 149e: 77 1f adc r23, r23 + 14a0: 88 1f adc r24, r24 + 14a2: c2 f7 brpl .-16 ; 0x1494 <__addsf3x+0x6a> + 14a4: 0e c0 rjmp .+28 ; 0x14c2 <__addsf3x+0x98> + 14a6: ba 0f add r27, r26 + 14a8: 62 1f adc r22, r18 + 14aa: 73 1f adc r23, r19 + 14ac: 84 1f adc r24, r20 + 14ae: 48 f4 brcc .+18 ; 0x14c2 <__addsf3x+0x98> + 14b0: 87 95 ror r24 + 14b2: 77 95 ror r23 + 14b4: 67 95 ror r22 + 14b6: b7 95 ror r27 + 14b8: f7 95 ror r31 + 14ba: 9e 3f cpi r25, 0xFE ; 254 + 14bc: 08 f0 brcs .+2 ; 0x14c0 <__addsf3x+0x96> + 14be: b3 cf rjmp .-154 ; 0x1426 <__fp_splitA+0x4a> + 14c0: 93 95 inc r25 + 14c2: 88 0f add r24, r24 + 14c4: 08 f0 brcs .+2 ; 0x14c8 <__addsf3x+0x9e> + 14c6: 99 27 eor r25, r25 + 14c8: ee 0f add r30, r30 + 14ca: 97 95 ror r25 + 14cc: 87 95 ror r24 + 14ce: 08 95 ret + +000014d0 <__fp_inf>: + 14d0: 97 f9 bld r25, 7 + 14d2: 9f 67 ori r25, 0x7F ; 127 + 14d4: 80 e8 ldi r24, 0x80 ; 128 + 14d6: 70 e0 ldi r23, 0x00 ; 0 + 14d8: 60 e0 ldi r22, 0x00 ; 0 + 14da: 08 95 ret + +000014dc <__fp_mpack>: + 14dc: 9f 3f cpi r25, 0xFF ; 255 + 14de: 31 f0 breq .+12 ; 0x14ec <__fp_mpack_finite+0xc> + +000014e0 <__fp_mpack_finite>: + 14e0: 91 50 subi r25, 0x01 ; 1 + 14e2: 20 f4 brcc .+8 ; 0x14ec <__fp_mpack_finite+0xc> + 14e4: 87 95 ror r24 + 14e6: 77 95 ror r23 + 14e8: 67 95 ror r22 + 14ea: b7 95 ror r27 + 14ec: 88 0f add r24, r24 + 14ee: 91 1d adc r25, r1 + 14f0: 96 95 lsr r25 + 14f2: 87 95 ror r24 + 14f4: 97 f9 bld r25, 7 + 14f6: 08 95 ret + +000014f8 <__fp_nan>: + 14f8: 9f ef ldi r25, 0xFF ; 255 + 14fa: 80 ec ldi r24, 0xC0 ; 192 + 14fc: 08 95 ret + +000014fe <__fp_powsodd>: + 14fe: 9f 93 push r25 + 1500: 8f 93 push r24 + 1502: 7f 93 push r23 + 1504: 6f 93 push r22 + 1506: ff 93 push r31 + 1508: ef 93 push r30 + 150a: 9b 01 movw r18, r22 + 150c: ac 01 movw r20, r24 + 150e: 4d db rcall .-2406 ; 0xbaa <__mulsf3> + 1510: ef 91 pop r30 + 1512: ff 91 pop r31 + 1514: 2b d0 rcall .+86 ; 0x156c <__fp_powser> + 1516: 2f 91 pop r18 + 1518: 3f 91 pop r19 + 151a: 4f 91 pop r20 + 151c: 5f 91 pop r21 + 151e: 45 cb rjmp .-2422 ; 0xbaa <__mulsf3> + +00001520 <__fp_pscA>: + 1520: 00 24 eor r0, r0 + 1522: 0a 94 dec r0 + 1524: 16 16 cp r1, r22 + 1526: 17 06 cpc r1, r23 + 1528: 18 06 cpc r1, r24 + 152a: 09 06 cpc r0, r25 + 152c: 08 95 ret + +0000152e <__fp_pscB>: + 152e: 00 24 eor r0, r0 + 1530: 0a 94 dec r0 + 1532: 12 16 cp r1, r18 + 1534: 13 06 cpc r1, r19 + 1536: 14 06 cpc r1, r20 + 1538: 05 06 cpc r0, r21 + 153a: 08 95 ret + +0000153c <__fp_round>: + 153c: 09 2e mov r0, r25 + 153e: 03 94 inc r0 + 1540: 00 0c add r0, r0 + 1542: 11 f4 brne .+4 ; 0x1548 <__fp_round+0xc> + 1544: 88 23 and r24, r24 + 1546: 52 f0 brmi .+20 ; 0x155c <__fp_round+0x20> + 1548: bb 0f add r27, r27 + 154a: 40 f4 brcc .+16 ; 0x155c <__fp_round+0x20> + 154c: bf 2b or r27, r31 + 154e: 11 f4 brne .+4 ; 0x1554 <__fp_round+0x18> + 1550: 60 ff sbrs r22, 0 + 1552: 04 c0 rjmp .+8 ; 0x155c <__fp_round+0x20> + 1554: 6f 5f subi r22, 0xFF ; 255 + 1556: 7f 4f sbci r23, 0xFF ; 255 + 1558: 8f 4f sbci r24, 0xFF ; 255 + 155a: 9f 4f sbci r25, 0xFF ; 255 + 155c: 08 95 ret + +0000155e <__fp_zero>: + 155e: e8 94 clt + +00001560 <__fp_szero>: + 1560: bb 27 eor r27, r27 + 1562: 66 27 eor r22, r22 + 1564: 77 27 eor r23, r23 + 1566: cb 01 movw r24, r22 + 1568: 97 f9 bld r25, 7 + 156a: 08 95 ret + +0000156c <__fp_powser>: + 156c: df 93 push r29 + 156e: cf 93 push r28 + 1570: 1f 93 push r17 + 1572: 0f 93 push r16 + 1574: ff 92 push r15 + 1576: ef 92 push r14 + 1578: df 92 push r13 + 157a: 7b 01 movw r14, r22 + 157c: 8c 01 movw r16, r24 + 157e: 68 94 set + 1580: 05 c0 rjmp .+10 ; 0x158c <__fp_powser+0x20> + 1582: da 2e mov r13, r26 + 1584: ef 01 movw r28, r30 + 1586: 21 d0 rcall .+66 ; 0x15ca <__mulsf3x> + 1588: fe 01 movw r30, r28 + 158a: e8 94 clt + 158c: a5 91 lpm r26, Z+ + 158e: 25 91 lpm r18, Z+ + 1590: 35 91 lpm r19, Z+ + 1592: 45 91 lpm r20, Z+ + 1594: 55 91 lpm r21, Z+ + 1596: ae f3 brts .-22 ; 0x1582 <__fp_powser+0x16> + 1598: ef 01 movw r28, r30 + 159a: 47 df rcall .-370 ; 0x142a <__addsf3x> + 159c: fe 01 movw r30, r28 + 159e: 97 01 movw r18, r14 + 15a0: a8 01 movw r20, r16 + 15a2: da 94 dec r13 + 15a4: 79 f7 brne .-34 ; 0x1584 <__fp_powser+0x18> + 15a6: df 90 pop r13 + 15a8: ef 90 pop r14 + 15aa: ff 90 pop r15 + 15ac: 0f 91 pop r16 + 15ae: 1f 91 pop r17 + 15b0: cf 91 pop r28 + 15b2: df 91 pop r29 + 15b4: 08 95 ret + 15b6: b4 df rcall .-152 ; 0x1520 <__fp_pscA> + 15b8: 28 f0 brcs .+10 ; 0x15c4 <__fp_powser+0x58> + 15ba: b9 df rcall .-142 ; 0x152e <__fp_pscB> + 15bc: 18 f0 brcs .+6 ; 0x15c4 <__fp_powser+0x58> + 15be: 95 23 and r25, r21 + 15c0: 09 f0 breq .+2 ; 0x15c4 <__fp_powser+0x58> + 15c2: 86 cf rjmp .-244 ; 0x14d0 <__fp_inf> + 15c4: 99 cf rjmp .-206 ; 0x14f8 <__fp_nan> + 15c6: 11 24 eor r1, r1 + 15c8: cb cf rjmp .-106 ; 0x1560 <__fp_szero> + +000015ca <__mulsf3x>: + 15ca: 00 df rcall .-512 ; 0x13cc <__fp_split3> + 15cc: a0 f3 brcs .-24 ; 0x15b6 <__fp_powser+0x4a> + +000015ce <__mulsf3_pse>: + 15ce: 95 9f mul r25, r21 + 15d0: d1 f3 breq .-12 ; 0x15c6 <__fp_powser+0x5a> + 15d2: 95 0f add r25, r21 + 15d4: 50 e0 ldi r21, 0x00 ; 0 + 15d6: 55 1f adc r21, r21 + 15d8: 62 9f mul r22, r18 + 15da: f0 01 movw r30, r0 + 15dc: 72 9f mul r23, r18 + 15de: bb 27 eor r27, r27 + 15e0: f0 0d add r31, r0 + 15e2: b1 1d adc r27, r1 + 15e4: 63 9f mul r22, r19 + 15e6: aa 27 eor r26, r26 + 15e8: f0 0d add r31, r0 + 15ea: b1 1d adc r27, r1 + 15ec: aa 1f adc r26, r26 + 15ee: 64 9f mul r22, r20 + 15f0: 66 27 eor r22, r22 + 15f2: b0 0d add r27, r0 + 15f4: a1 1d adc r26, r1 + 15f6: 66 1f adc r22, r22 + 15f8: 82 9f mul r24, r18 + 15fa: 22 27 eor r18, r18 + 15fc: b0 0d add r27, r0 + 15fe: a1 1d adc r26, r1 + 1600: 62 1f adc r22, r18 + 1602: 73 9f mul r23, r19 + 1604: b0 0d add r27, r0 + 1606: a1 1d adc r26, r1 + 1608: 62 1f adc r22, r18 + 160a: 83 9f mul r24, r19 + 160c: a0 0d add r26, r0 + 160e: 61 1d adc r22, r1 + 1610: 22 1f adc r18, r18 + 1612: 74 9f mul r23, r20 + 1614: 33 27 eor r19, r19 + 1616: a0 0d add r26, r0 + 1618: 61 1d adc r22, r1 + 161a: 23 1f adc r18, r19 + 161c: 84 9f mul r24, r20 + 161e: 60 0d add r22, r0 + 1620: 21 1d adc r18, r1 + 1622: 82 2f mov r24, r18 + 1624: 76 2f mov r23, r22 + 1626: 6a 2f mov r22, r26 + 1628: 11 24 eor r1, r1 + 162a: 9f 57 subi r25, 0x7F ; 127 + 162c: 50 40 sbci r21, 0x00 ; 0 + 162e: 8a f0 brmi .+34 ; 0x1652 <__mulsf3_pse+0x84> + 1630: e1 f0 breq .+56 ; 0x166a <__mulsf3_pse+0x9c> + 1632: 88 23 and r24, r24 + 1634: 4a f0 brmi .+18 ; 0x1648 <__mulsf3_pse+0x7a> + 1636: ee 0f add r30, r30 + 1638: ff 1f adc r31, r31 + 163a: bb 1f adc r27, r27 + 163c: 66 1f adc r22, r22 + 163e: 77 1f adc r23, r23 + 1640: 88 1f adc r24, r24 + 1642: 91 50 subi r25, 0x01 ; 1 + 1644: 50 40 sbci r21, 0x00 ; 0 + 1646: a9 f7 brne .-22 ; 0x1632 <__mulsf3_pse+0x64> + 1648: 9e 3f cpi r25, 0xFE ; 254 + 164a: 51 05 cpc r21, r1 + 164c: 70 f0 brcs .+28 ; 0x166a <__mulsf3_pse+0x9c> + 164e: 40 cf rjmp .-384 ; 0x14d0 <__fp_inf> + 1650: 87 cf rjmp .-242 ; 0x1560 <__fp_szero> + 1652: 5f 3f cpi r21, 0xFF ; 255 + 1654: ec f3 brlt .-6 ; 0x1650 <__mulsf3_pse+0x82> + 1656: 98 3e cpi r25, 0xE8 ; 232 + 1658: dc f3 brlt .-10 ; 0x1650 <__mulsf3_pse+0x82> + 165a: 86 95 lsr r24 + 165c: 77 95 ror r23 + 165e: 67 95 ror r22 + 1660: b7 95 ror r27 + 1662: f7 95 ror r31 + 1664: e7 95 ror r30 + 1666: 9f 5f subi r25, 0xFF ; 255 + 1668: c1 f7 brne .-16 ; 0x165a <__mulsf3_pse+0x8c> + 166a: fe 2b or r31, r30 + 166c: 88 0f add r24, r24 + 166e: 91 1d adc r25, r1 + 1670: 96 95 lsr r25 + 1672: 87 95 ror r24 + 1674: 97 f9 bld r25, 7 + 1676: 08 95 ret + +00001678 <_exit>: + 1678: f8 94 cli + +0000167a <__stop_program>: + 167a: ff cf rjmp .-2 ; 0x167a <__stop_program> diff --git a/electic_streaming328p/bin/Debug/electic_streaming.elf.map b/electic_streaming328p/bin/Debug/electic_streaming.elf.map new file mode 100644 index 0000000..e2bdc40 --- /dev/null +++ b/electic_streaming328p/bin/Debug/electic_streaming.elf.map @@ -0,0 +1,913 @@ +Archive member included because of file (symbol) + +../arduino_libs/core0022_328p.a(HardwareSerial.cpp.o) + obj/Debug/main.o (Serial) +../arduino_libs/core0022_328p.a(Print.cpp.o) + obj/Debug/main.o (_ZN5Print7printlnEPKc) +../arduino_libs/core0022_328p.a(wiring_serial.c.o) + ../arduino_libs/core0022_328p.a(HardwareSerial.cpp.o) (beginSerial) +/usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_divmodhi4.o) + obj/Debug/main.o (__divmodhi4) +/usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_udivmodsi4.o) + ../arduino_libs/core0022_328p.a(Print.cpp.o) (__udivmodsi4) +/usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_divmodsi4.o) + ../arduino_libs/core0022_328p.a(wiring_serial.c.o) (__divmodsi4) +/usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_exit.o) + /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/crtm328p.o (exit) +/usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_copy_data.o) + obj/Debug/main.o (__do_copy_data) +/usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_clear_bss.o) + obj/Debug/main.o (__do_clear_bss) +/usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_ctors.o) + ../arduino_libs/core0022_328p.a(HardwareSerial.cpp.o) (__do_global_ctors) +/usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_addsub_sf.o) + obj/Debug/main.o (__addsf3) +/usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_mul_sf.o) + obj/Debug/main.o (__mulsf3) +/usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_div_sf.o) + obj/Debug/main.o (__divsf3) +/usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_sf_to_si.o) + obj/Debug/main.o (__fixsfsi) +/usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_thenan_sf.o) + /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_addsub_sf.o) (__thenan_sf) +/usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_udivmodhi4.o) + /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_divmodhi4.o) (__udivmodhi4) +/usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_prologue.o) + /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_addsub_sf.o) (__prologue_saves__) +/usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_epilogue.o) + /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_addsub_sf.o) (__epilogue_restores__) +/usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_tablejump.o) + /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_ctors.o) (__tablejump__) +/usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_pack_sf.o) + /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_addsub_sf.o) (__pack_f) +/usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_unpack_sf.o) + /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_addsub_sf.o) (__unpack_f) +/usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libm.a(sin.o) + obj/Debug/main.o (sin) +/usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libm.a(fp_rempio2.o) + /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libm.a(sin.o) (__fp_rempio2) +/usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libm.a(fp_sinus.o) + /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libm.a(sin.o) (__fp_sinus) +/usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libm.a(fp_split3.o) + /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libm.a(fp_rempio2.o) (__fp_splitA) +/usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libm.a(addsf3x.o) + /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libm.a(fp_sinus.o) (__addsf3x) +/usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libm.a(fp_inf.o) + /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libm.a(addsf3x.o) (__fp_inf) +/usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libm.a(fp_mpack.o) + /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libm.a(fp_rempio2.o) (__fp_mpack_finite) +/usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libm.a(fp_nan.o) + /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libm.a(fp_rempio2.o) (__fp_nan) +/usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libm.a(fp_powsodd.o) + /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libm.a(fp_sinus.o) (__fp_powsodd) +/usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libm.a(fp_pscA.o) + /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libm.a(addsf3x.o) (__fp_pscA) +/usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libm.a(fp_pscB.o) + /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libm.a(addsf3x.o) (__fp_pscB) +/usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libm.a(fp_round.o) + /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libm.a(fp_sinus.o) (__fp_round) +/usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libm.a(fp_zero.o) + /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libm.a(addsf3x.o) (__fp_zero) +/usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libm.a(fp_powser.o) + /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libm.a(fp_powsodd.o) (__fp_powser) +/usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libm.a(mulsf3x.o) + /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libm.a(fp_powser.o) (__mulsf3x) + +Allocating common symbols +Common symbol size file + +rx_buffer 0x80 ../arduino_libs/core0022_328p.a(wiring_serial.c.o) + +Memory Configuration + +Name Origin Length Attributes +text 0x00000000 0x00020000 xr +data 0x00800060 0x0000ffa0 rw !x +eeprom 0x00810000 0x00010000 rw !x +fuse 0x00820000 0x00000400 rw !x +lock 0x00830000 0x00000400 rw !x +signature 0x00840000 0x00000400 rw !x +*default* 0x00000000 0xffffffff + +Linker script and memory map + +Address of section .data set to 0x800100 +LOAD /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/crtm328p.o +LOAD obj/Debug/main.o +LOAD ../arduino_libs/core0022_328p.a +LOAD /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a +LOAD /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libm.a +LOAD /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a +LOAD /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a +LOAD /usr/lib/gcc/avr/4.5.3/avr5/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 0x00000000 0x167c + *(.vectors) + .vectors 0x00000000 0x68 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/crtm328p.o + 0x00000000 __vectors + 0x00000000 __vector_default + *(.vectors) + *(.progmem.gcc*) + .progmem.gcc_fplib + 0x00000068 0x1e /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libm.a(fp_sinus.o) + *(.progmem*) + 0x00000086 . = ALIGN (0x2) + 0x00000086 __trampolines_start = . + *(.trampolines) + .trampolines 0x00000086 0x0 linker stubs + *(.trampolines*) + 0x00000086 __trampolines_end = . + *(.jumptables) + *(.jumptables*) + *(.lowtext) + *(.lowtext*) + 0x00000086 __ctors_start = . + *(.ctors) + .ctors 0x00000086 0x2 ../arduino_libs/core0022_328p.a(HardwareSerial.cpp.o) + 0x00000088 __ctors_end = . + 0x00000088 __dtors_start = . + *(.dtors) + 0x00000088 __dtors_end = . + SORT(*)(.ctors) + SORT(*)(.dtors) + *(.init0) + .init0 0x00000088 0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/crtm328p.o + 0x00000088 __init + *(.init0) + *(.init1) + *(.init1) + *(.init2) + .init2 0x00000088 0xc /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/crtm328p.o + *(.init2) + *(.init3) + *(.init3) + *(.init4) + .init4 0x00000094 0x16 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_copy_data.o) + 0x00000094 __do_copy_data + .init4 0x000000aa 0x10 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_clear_bss.o) + 0x000000aa __do_clear_bss + *(.init4) + *(.init5) + *(.init5) + *(.init6) + .init6 0x000000ba 0x16 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_ctors.o) + 0x000000ba __do_global_ctors + *(.init6) + *(.init7) + *(.init7) + *(.init8) + *(.init8) + *(.init9) + .init9 0x000000d0 0x8 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/crtm328p.o + *(.init9) + *(.text) + .text 0x000000d8 0x4 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/crtm328p.o + 0x000000d8 __vector_22 + 0x000000d8 __vector_1 + 0x000000d8 __vector_24 + 0x000000d8 __vector_12 + 0x000000d8 __bad_interrupt + 0x000000d8 __vector_6 + 0x000000d8 __vector_3 + 0x000000d8 __vector_23 + 0x000000d8 __vector_25 + 0x000000d8 __vector_13 + 0x000000d8 __vector_17 + 0x000000d8 __vector_19 + 0x000000d8 __vector_7 + 0x000000d8 __vector_5 + 0x000000d8 __vector_4 + 0x000000d8 __vector_9 + 0x000000d8 __vector_2 + 0x000000d8 __vector_21 + 0x000000d8 __vector_15 + 0x000000d8 __vector_8 + 0x000000d8 __vector_14 + 0x000000d8 __vector_10 + 0x000000d8 __vector_16 + 0x000000d8 __vector_20 + .text 0x000000dc 0x2c0 obj/Debug/main.o + 0x000000dc _Z13fill_sinewavev + 0x000001fc main + 0x000002ce __vector_11 + .text 0x0000039c 0x32 ../arduino_libs/core0022_328p.a(HardwareSerial.cpp.o) + 0x000003aa _ZN14HardwareSerial5writeEh + 0x000003b2 _ZN14HardwareSerial5flushEv + 0x000003b8 _ZN14HardwareSerial4readEv + 0x000003be _ZN14HardwareSerial9availableEv + 0x000003c4 _ZN14HardwareSerial5beginEl + .text 0x000003ce 0x31e ../arduino_libs/core0022_328p.a(Print.cpp.o) + 0x000003ce _ZN5Print5printEh + 0x000003de _ZN5Print5printEc + 0x000003ee _ZN5Print5printEPKc + 0x0000041e _ZN5Print7printlnEv + 0x0000044c _ZN5Print7printlnEc + 0x0000046c _ZN5Print7printlnEPKc + 0x00000482 _ZN5Print7printlnEh + 0x000004a2 _ZN5Print11printNumberEmh + 0x000005d2 _ZN5Print5printEm + 0x000005da _ZN5Print7printlnEm + 0x000005f0 _ZN5Print5printEj + 0x000005fc _ZN5Print7printlnEj + 0x00000618 _ZN5Print5printEl + 0x00000666 _ZN5Print7printlnEl + 0x0000067c _ZN5Print5printEi + 0x0000068c _ZN5Print7printlnEi + 0x000006ac _ZN5Print5printEli + 0x000006d6 _ZN5Print7printlnEli + .text 0x000006ec 0x16e ../arduino_libs/core0022_328p.a(wiring_serial.c.o) + 0x000006ec beginSerial + 0x0000075e serialWrite + 0x0000076e serialAvailable + 0x00000790 serialRead + 0x000007ce serialFlush + 0x000007e0 __vector_18 + .text 0x0000085a 0x0 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_divmodhi4.o) + .text 0x0000085a 0x0 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_udivmodsi4.o) + .text 0x0000085a 0x0 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_divmodsi4.o) + .text 0x0000085a 0x0 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_exit.o) + .text 0x0000085a 0x0 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_copy_data.o) + .text 0x0000085a 0x0 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_clear_bss.o) + .text 0x0000085a 0x0 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_ctors.o) + .text 0x0000085a 0x350 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_addsub_sf.o) + 0x00000aee __addsf3 + 0x00000b48 __subsf3 + .text 0x00000baa 0x1f4 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_mul_sf.o) + 0x00000baa __mulsf3 + .text 0x00000d9e 0x15c /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_div_sf.o) + 0x00000d9e __divsf3 + .text 0x00000efa 0xa4 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_sf_to_si.o) + 0x00000efa __fixsfsi + .text 0x00000f9e 0x0 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_thenan_sf.o) + .text 0x00000f9e 0x0 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_udivmodhi4.o) + .text 0x00000f9e 0x0 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_prologue.o) + .text 0x00000f9e 0x0 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_epilogue.o) + .text 0x00000f9e 0x0 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_tablejump.o) + .text 0x00000f9e 0x19c /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_pack_sf.o) + 0x00000f9e __pack_f + .text 0x0000113a 0xd2 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_unpack_sf.o) + 0x0000113a __unpack_f + .text 0x0000120c 0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libm.a(sin.o) + .text 0x0000120c 0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libm.a(fp_rempio2.o) + .text 0x0000120c 0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libm.a(fp_sinus.o) + .text 0x0000120c 0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libm.a(fp_split3.o) + .text 0x0000120c 0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libm.a(addsf3x.o) + .text 0x0000120c 0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libm.a(fp_inf.o) + .text 0x0000120c 0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libm.a(fp_mpack.o) + .text 0x0000120c 0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libm.a(fp_nan.o) + .text 0x0000120c 0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libm.a(fp_powsodd.o) + .text 0x0000120c 0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libm.a(fp_pscA.o) + .text 0x0000120c 0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libm.a(fp_pscB.o) + .text 0x0000120c 0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libm.a(fp_round.o) + .text 0x0000120c 0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libm.a(fp_zero.o) + .text 0x0000120c 0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libm.a(fp_powser.o) + .text 0x0000120c 0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libm.a(mulsf3x.o) + 0x0000120c . = ALIGN (0x2) + *(.text.*) + .text.libgcc 0x0000120c 0x26 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_divmodhi4.o) + 0x0000120c __divmodhi4 + 0x0000120c _div + .text.libgcc 0x00001232 0x44 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_udivmodsi4.o) + 0x00001232 __udivmodsi4 + .text.libgcc 0x00001276 0x36 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_divmodsi4.o) + 0x00001276 __divmodsi4 + .text.libgcc 0x000012ac 0x0 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_exit.o) + .text.libgcc 0x000012ac 0x0 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_copy_data.o) + .text.libgcc 0x000012ac 0x0 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_clear_bss.o) + .text.libgcc 0x000012ac 0x0 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_ctors.o) + .text.libgcc 0x000012ac 0x28 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_udivmodhi4.o) + 0x000012ac __udivmodhi4 + .text.libgcc 0x000012d4 0x38 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_prologue.o) + 0x000012d4 __prologue_saves__ + .text.libgcc 0x0000130c 0x36 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_epilogue.o) + 0x0000130c __epilogue_restores__ + .text.libgcc 0x00001342 0xc /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_tablejump.o) + 0x00001342 __tablejump2__ + 0x00001346 __tablejump__ + .text.avr-libc.fplib + 0x0000134e 0xc /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libm.a(sin.o) + 0x0000134e sin + .text.avr-libc.fplib + 0x0000135a 0x50 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libm.a(fp_rempio2.o) + 0x0000135c __fp_rempio2 + .text.avr-libc.fplib + 0x000013aa 0x22 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libm.a(fp_sinus.o) + 0x000013aa __fp_sinus + .text.avr-libc.fplib + 0x000013cc 0x44 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libm.a(fp_split3.o) + 0x000013cc __fp_split3 + 0x000013dc __fp_splitA + .text.avr-libc.fplib + 0x00001410 0xc0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libm.a(addsf3x.o) + 0x0000142a __addsf3x + .text.avr-libc.fplib + 0x000014d0 0xc /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libm.a(fp_inf.o) + 0x000014d0 __fp_inf + .text.avr-libc.fplib + 0x000014dc 0x1c /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libm.a(fp_mpack.o) + 0x000014dc __fp_mpack + 0x000014e0 __fp_mpack_finite + .text.avr-libc.fplib + 0x000014f8 0x6 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libm.a(fp_nan.o) + 0x000014f8 __fp_nan + .text.avr-libc.fplib + 0x000014fe 0x22 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libm.a(fp_powsodd.o) + 0x000014fe __fp_powsodd + .text.avr-libc.fplib + 0x00001520 0xe /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libm.a(fp_pscA.o) + 0x00001520 __fp_pscA + .text.avr-libc.fplib + 0x0000152e 0xe /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libm.a(fp_pscB.o) + 0x0000152e __fp_pscB + .text.avr-libc.fplib + 0x0000153c 0x22 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libm.a(fp_round.o) + 0x0000153c __fp_round + .text.avr-libc.fplib + 0x0000155e 0xe /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libm.a(fp_zero.o) + 0x0000155e __fp_zero + 0x00001560 __fp_szero + .text.avr-libc.fplib + 0x0000156c 0x4a /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libm.a(fp_powser.o) + 0x0000156c __fp_powser + .text.avr-libc.fplib + 0x000015b6 0xc2 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libm.a(mulsf3x.o) + 0x000015ca __mulsf3x + 0x000015ce __mulsf3_pse + 0x00001678 . = ALIGN (0x2) + *(.fini9) + .fini9 0x00001678 0x0 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_exit.o) + 0x00001678 exit + 0x00001678 _exit + *(.fini9) + *(.fini8) + *(.fini8) + *(.fini7) + *(.fini7) + *(.fini6) + *(.fini6) + *(.fini5) + *(.fini5) + *(.fini4) + *(.fini4) + *(.fini3) + *(.fini3) + *(.fini2) + *(.fini2) + *(.fini1) + *(.fini1) + *(.fini0) + .fini0 0x00001678 0x4 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_exit.o) + *(.fini0) + 0x0000167c _etext = . + +.data 0x00800100 0x2a load address 0x0000167c + 0x00800100 PROVIDE (__data_start, .) + *(.data) + .data 0x00800100 0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/crtm328p.o + .data 0x00800100 0x1b obj/Debug/main.o + .data 0x0080011b 0x6 ../arduino_libs/core0022_328p.a(HardwareSerial.cpp.o) + 0x0080011b _ZTV14HardwareSerial + .data 0x00800121 0x0 ../arduino_libs/core0022_328p.a(Print.cpp.o) + .data 0x00800121 0x0 ../arduino_libs/core0022_328p.a(wiring_serial.c.o) + .data 0x00800121 0x0 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_divmodhi4.o) + .data 0x00800121 0x0 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_udivmodsi4.o) + .data 0x00800121 0x0 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_divmodsi4.o) + .data 0x00800121 0x0 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_exit.o) + .data 0x00800121 0x0 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_copy_data.o) + .data 0x00800121 0x0 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_clear_bss.o) + .data 0x00800121 0x0 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_ctors.o) + .data 0x00800121 0x0 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_addsub_sf.o) + .data 0x00800121 0x0 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_mul_sf.o) + .data 0x00800121 0x0 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_div_sf.o) + .data 0x00800121 0x0 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_sf_to_si.o) + .data 0x00800121 0x8 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_thenan_sf.o) + 0x00800121 __thenan_sf + .data 0x00800129 0x0 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_udivmodhi4.o) + .data 0x00800129 0x0 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_prologue.o) + .data 0x00800129 0x0 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_epilogue.o) + .data 0x00800129 0x0 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_tablejump.o) + .data 0x00800129 0x0 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_pack_sf.o) + .data 0x00800129 0x0 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_unpack_sf.o) + .data 0x00800129 0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libm.a(sin.o) + .data 0x00800129 0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libm.a(fp_rempio2.o) + .data 0x00800129 0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libm.a(fp_sinus.o) + .data 0x00800129 0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libm.a(fp_split3.o) + .data 0x00800129 0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libm.a(addsf3x.o) + .data 0x00800129 0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libm.a(fp_inf.o) + .data 0x00800129 0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libm.a(fp_mpack.o) + .data 0x00800129 0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libm.a(fp_nan.o) + .data 0x00800129 0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libm.a(fp_powsodd.o) + .data 0x00800129 0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libm.a(fp_pscA.o) + .data 0x00800129 0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libm.a(fp_pscB.o) + .data 0x00800129 0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libm.a(fp_round.o) + .data 0x00800129 0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libm.a(fp_zero.o) + .data 0x00800129 0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libm.a(fp_powser.o) + .data 0x00800129 0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libm.a(mulsf3x.o) + *(.data*) + *(.rodata) + *(.rodata*) + *(.gnu.linkonce.d*) + 0x0080012a . = ALIGN (0x2) + *fill* 0x00800129 0x1 00 + 0x0080012a _edata = . + 0x0080012a PROVIDE (__data_end, .) + +.bss 0x0080012a 0x28a + 0x0080012a PROVIDE (__bss_start, .) + *(.bss) + .bss 0x0080012a 0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/crtm328p.o + .bss 0x0080012a 0x204 obj/Debug/main.o + 0x0080012a dd + 0x0080032a loopCount + 0x0080032c sample + .bss 0x0080032e 0x2 ../arduino_libs/core0022_328p.a(HardwareSerial.cpp.o) + 0x0080032e Serial + .bss 0x00800330 0x0 ../arduino_libs/core0022_328p.a(Print.cpp.o) + .bss 0x00800330 0x4 ../arduino_libs/core0022_328p.a(wiring_serial.c.o) + 0x00800330 rx_buffer_head + 0x00800332 rx_buffer_tail + .bss 0x00800334 0x0 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_divmodhi4.o) + .bss 0x00800334 0x0 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_udivmodsi4.o) + .bss 0x00800334 0x0 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_divmodsi4.o) + .bss 0x00800334 0x0 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_exit.o) + .bss 0x00800334 0x0 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_copy_data.o) + .bss 0x00800334 0x0 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_clear_bss.o) + .bss 0x00800334 0x0 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_ctors.o) + .bss 0x00800334 0x0 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_addsub_sf.o) + .bss 0x00800334 0x0 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_mul_sf.o) + .bss 0x00800334 0x0 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_div_sf.o) + .bss 0x00800334 0x0 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_sf_to_si.o) + .bss 0x00800334 0x0 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_thenan_sf.o) + .bss 0x00800334 0x0 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_udivmodhi4.o) + .bss 0x00800334 0x0 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_prologue.o) + .bss 0x00800334 0x0 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_epilogue.o) + .bss 0x00800334 0x0 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_tablejump.o) + .bss 0x00800334 0x0 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_pack_sf.o) + .bss 0x00800334 0x0 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_unpack_sf.o) + .bss 0x00800334 0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libm.a(sin.o) + .bss 0x00800334 0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libm.a(fp_rempio2.o) + .bss 0x00800334 0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libm.a(fp_sinus.o) + .bss 0x00800334 0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libm.a(fp_split3.o) + .bss 0x00800334 0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libm.a(addsf3x.o) + .bss 0x00800334 0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libm.a(fp_inf.o) + .bss 0x00800334 0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libm.a(fp_mpack.o) + .bss 0x00800334 0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libm.a(fp_nan.o) + .bss 0x00800334 0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libm.a(fp_powsodd.o) + .bss 0x00800334 0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libm.a(fp_pscA.o) + .bss 0x00800334 0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libm.a(fp_pscB.o) + .bss 0x00800334 0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libm.a(fp_round.o) + .bss 0x00800334 0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libm.a(fp_zero.o) + .bss 0x00800334 0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libm.a(fp_powser.o) + .bss 0x00800334 0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libm.a(mulsf3x.o) + *(.bss*) + *(COMMON) + COMMON 0x00800334 0x80 ../arduino_libs/core0022_328p.a(wiring_serial.c.o) + 0x00800334 rx_buffer + 0x008003b4 PROVIDE (__bss_end, .) + 0x0000167c __data_load_start = LOADADDR (.data) + 0x000016a6 __data_load_end = (__data_load_start + SIZEOF (.data)) + +.noinit 0x008003b4 0x0 + 0x008003b4 PROVIDE (__noinit_start, .) + *(.noinit*) + 0x008003b4 PROVIDE (__noinit_end, .) + 0x008003b4 _end = . + 0x008003b4 PROVIDE (__heap_start, .) + +.eeprom 0x00810000 0x0 + *(.eeprom*) + 0x00810000 __eeprom_end = . + +.fuse + *(.fuse) + *(.lfuse) + *(.hfuse) + *(.efuse) + +.lock + *(.lock*) + +.signature + *(.signature*) + +.stab 0x00000000 0x2418 + *(.stab) + .stab 0x00000000 0x6cc /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/crtm328p.o + .stab 0x000006cc 0x72c obj/Debug/main.o + 0x738 (size before relaxing) + .stab 0x00000df8 0x78 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libm.a(sin.o) + 0x84 (size before relaxing) + .stab 0x00000e70 0x21c /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libm.a(fp_rempio2.o) + 0x228 (size before relaxing) + .stab 0x0000108c 0xfc /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libm.a(fp_sinus.o) + 0x108 (size before relaxing) + .stab 0x00001188 0x1d4 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libm.a(fp_split3.o) + 0x1e0 (size before relaxing) + .stab 0x0000135c 0x4bc /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libm.a(addsf3x.o) + 0x4c8 (size before relaxing) + .stab 0x00001818 0x78 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libm.a(fp_inf.o) + 0x84 (size before relaxing) + .stab 0x00001890 0xe4 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libm.a(fp_mpack.o) + 0xf0 (size before relaxing) + .stab 0x00001974 0x54 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libm.a(fp_nan.o) + 0x60 (size before relaxing) + .stab 0x000019c8 0xfc /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libm.a(fp_powsodd.o) + 0x108 (size before relaxing) + .stab 0x00001ac4 0x84 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libm.a(fp_pscA.o) + 0x90 (size before relaxing) + .stab 0x00001b48 0x84 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libm.a(fp_pscB.o) + 0x90 (size before relaxing) + .stab 0x00001bcc 0xfc /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libm.a(fp_round.o) + 0x108 (size before relaxing) + .stab 0x00001cc8 0x90 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libm.a(fp_zero.o) + 0x9c (size before relaxing) + .stab 0x00001d58 0x1ec /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libm.a(fp_powser.o) + 0x1f8 (size before relaxing) + .stab 0x00001f44 0x4d4 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libm.a(mulsf3x.o) + 0x4e0 (size before relaxing) + +.stabstr 0x00000000 0x1c43 + *(.stabstr) + .stabstr 0x00000000 0x1c43 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/crtm328p.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 0x00000000 0x60 + *(.debug_aranges) + .debug_aranges + 0x00000000 0x20 ../arduino_libs/core0022_328p.a(HardwareSerial.cpp.o) + .debug_aranges + 0x00000020 0x20 ../arduino_libs/core0022_328p.a(Print.cpp.o) + .debug_aranges + 0x00000040 0x20 ../arduino_libs/core0022_328p.a(wiring_serial.c.o) + +.debug_pubnames + 0x00000000 0x2a7 + *(.debug_pubnames) + .debug_pubnames + 0x00000000 0xa2 ../arduino_libs/core0022_328p.a(HardwareSerial.cpp.o) + .debug_pubnames + 0x000000a2 0x15c ../arduino_libs/core0022_328p.a(Print.cpp.o) + .debug_pubnames + 0x000001fe 0xa9 ../arduino_libs/core0022_328p.a(wiring_serial.c.o) + +.debug_info 0x00000000 0xd0b + *(.debug_info) + .debug_info 0x00000000 0x2f0 ../arduino_libs/core0022_328p.a(HardwareSerial.cpp.o) + .debug_info 0x000002f0 0x890 ../arduino_libs/core0022_328p.a(Print.cpp.o) + .debug_info 0x00000b80 0x18b ../arduino_libs/core0022_328p.a(wiring_serial.c.o) + *(.gnu.linkonce.wi.*) + +.debug_abbrev 0x00000000 0x3f7 + *(.debug_abbrev) + .debug_abbrev 0x00000000 0x18e ../arduino_libs/core0022_328p.a(HardwareSerial.cpp.o) + .debug_abbrev 0x0000018e 0x183 ../arduino_libs/core0022_328p.a(Print.cpp.o) + .debug_abbrev 0x00000311 0xe6 ../arduino_libs/core0022_328p.a(wiring_serial.c.o) + +.debug_line 0x00000000 0x689 + *(.debug_line) + .debug_line 0x00000000 0x1b5 ../arduino_libs/core0022_328p.a(HardwareSerial.cpp.o) + .debug_line 0x000001b5 0x364 ../arduino_libs/core0022_328p.a(Print.cpp.o) + .debug_line 0x00000519 0x170 ../arduino_libs/core0022_328p.a(wiring_serial.c.o) + +.debug_frame 0x00000000 0x210 + *(.debug_frame) + .debug_frame 0x00000000 0x70 ../arduino_libs/core0022_328p.a(HardwareSerial.cpp.o) + .debug_frame 0x00000070 0x130 ../arduino_libs/core0022_328p.a(Print.cpp.o) + .debug_frame 0x000001a0 0x70 ../arduino_libs/core0022_328p.a(wiring_serial.c.o) + +.debug_str 0x00000000 0x420 + *(.debug_str) + .debug_str 0x00000000 0x1a7 ../arduino_libs/core0022_328p.a(HardwareSerial.cpp.o) + 0x203 (size before relaxing) + .debug_str 0x000001a7 0x1b9 ../arduino_libs/core0022_328p.a(Print.cpp.o) + 0x246 (size before relaxing) + .debug_str 0x00000360 0xc0 ../arduino_libs/core0022_328p.a(wiring_serial.c.o) + 0x12c (size before relaxing) + +.debug_loc 0x00000000 0x75a + *(.debug_loc) + .debug_loc 0x00000000 0xa9 ../arduino_libs/core0022_328p.a(HardwareSerial.cpp.o) + .debug_loc 0x000000a9 0x621 ../arduino_libs/core0022_328p.a(Print.cpp.o) + .debug_loc 0x000006ca 0x90 ../arduino_libs/core0022_328p.a(wiring_serial.c.o) + +.debug_macinfo + *(.debug_macinfo) +OUTPUT(bin/Debug/electic_streaming.elf elf32-avr) +LOAD linker stubs + +Cross Reference Table + +Symbol File +HardwareSerial::available() ../arduino_libs/core0022_328p.a(HardwareSerial.cpp.o) + obj/Debug/main.o +HardwareSerial::begin(long) ../arduino_libs/core0022_328p.a(HardwareSerial.cpp.o) + obj/Debug/main.o +HardwareSerial::flush() ../arduino_libs/core0022_328p.a(HardwareSerial.cpp.o) +HardwareSerial::read() ../arduino_libs/core0022_328p.a(HardwareSerial.cpp.o) + obj/Debug/main.o +HardwareSerial::write(unsigned char) ../arduino_libs/core0022_328p.a(HardwareSerial.cpp.o) + obj/Debug/main.o +Print::print(char const*) ../arduino_libs/core0022_328p.a(Print.cpp.o) +Print::print(char) ../arduino_libs/core0022_328p.a(Print.cpp.o) +Print::print(int) ../arduino_libs/core0022_328p.a(Print.cpp.o) +Print::print(long) ../arduino_libs/core0022_328p.a(Print.cpp.o) +Print::print(long, int) ../arduino_libs/core0022_328p.a(Print.cpp.o) +Print::print(unsigned char) ../arduino_libs/core0022_328p.a(Print.cpp.o) +Print::print(unsigned int) ../arduino_libs/core0022_328p.a(Print.cpp.o) +Print::print(unsigned long) ../arduino_libs/core0022_328p.a(Print.cpp.o) +Print::printNumber(unsigned long, unsigned char) ../arduino_libs/core0022_328p.a(Print.cpp.o) +Print::println() ../arduino_libs/core0022_328p.a(Print.cpp.o) +Print::println(char const*) ../arduino_libs/core0022_328p.a(Print.cpp.o) + obj/Debug/main.o +Print::println(char) ../arduino_libs/core0022_328p.a(Print.cpp.o) +Print::println(int) ../arduino_libs/core0022_328p.a(Print.cpp.o) +Print::println(long) ../arduino_libs/core0022_328p.a(Print.cpp.o) +Print::println(long, int) ../arduino_libs/core0022_328p.a(Print.cpp.o) +Print::println(unsigned char) ../arduino_libs/core0022_328p.a(Print.cpp.o) +Print::println(unsigned int) ../arduino_libs/core0022_328p.a(Print.cpp.o) +Print::println(unsigned long) ../arduino_libs/core0022_328p.a(Print.cpp.o) +Serial ../arduino_libs/core0022_328p.a(HardwareSerial.cpp.o) + obj/Debug/main.o +__addsf3 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_addsub_sf.o) + obj/Debug/main.o +__addsf3x /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libm.a(addsf3x.o) + /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libm.a(fp_powser.o) + /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libm.a(fp_sinus.o) +__bad_interrupt /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/crtm328p.o +__bss_end /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_clear_bss.o) +__bss_start /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_clear_bss.o) +__ctors_end /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_ctors.o) +__ctors_start /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_ctors.o) +__data_end /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_copy_data.o) +__data_load_start /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_copy_data.o) +__data_start /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_copy_data.o) +__divmodhi4 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_divmodhi4.o) + ../arduino_libs/core0022_328p.a(wiring_serial.c.o) + obj/Debug/main.o +__divmodsi4 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_divmodsi4.o) + ../arduino_libs/core0022_328p.a(wiring_serial.c.o) +__divsf3 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_div_sf.o) + obj/Debug/main.o +__do_clear_bss /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_clear_bss.o) + ../arduino_libs/core0022_328p.a(wiring_serial.c.o) + ../arduino_libs/core0022_328p.a(Print.cpp.o) + ../arduino_libs/core0022_328p.a(HardwareSerial.cpp.o) + obj/Debug/main.o +__do_copy_data /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_copy_data.o) + /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_thenan_sf.o) + ../arduino_libs/core0022_328p.a(wiring_serial.c.o) + ../arduino_libs/core0022_328p.a(Print.cpp.o) + ../arduino_libs/core0022_328p.a(HardwareSerial.cpp.o) + obj/Debug/main.o +__do_global_ctors /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_ctors.o) + ../arduino_libs/core0022_328p.a(HardwareSerial.cpp.o) +__epilogue_restores__ /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_epilogue.o) + /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_pack_sf.o) + /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_sf_to_si.o) + /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_div_sf.o) + /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_mul_sf.o) + /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_addsub_sf.o) +__fixsfsi /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_sf_to_si.o) + obj/Debug/main.o +__fp_inf /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libm.a(fp_inf.o) + /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libm.a(mulsf3x.o) + /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libm.a(addsf3x.o) +__fp_mpack /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libm.a(fp_mpack.o) +__fp_mpack_finite /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libm.a(fp_mpack.o) + /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libm.a(fp_rempio2.o) +__fp_nan /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libm.a(fp_nan.o) + /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libm.a(mulsf3x.o) + /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libm.a(addsf3x.o) + /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libm.a(fp_rempio2.o) +__fp_powser /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libm.a(fp_powser.o) + /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libm.a(fp_powsodd.o) +__fp_powsodd /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libm.a(fp_powsodd.o) + /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libm.a(fp_sinus.o) +__fp_pscA /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libm.a(fp_pscA.o) + /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libm.a(mulsf3x.o) + /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libm.a(addsf3x.o) +__fp_pscB /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libm.a(fp_pscB.o) + /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libm.a(mulsf3x.o) + /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libm.a(addsf3x.o) +__fp_rempio2 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libm.a(fp_rempio2.o) + /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libm.a(sin.o) +__fp_round /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libm.a(fp_round.o) + /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libm.a(fp_sinus.o) +__fp_sinus /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libm.a(fp_sinus.o) + /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libm.a(sin.o) +__fp_split3 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libm.a(fp_split3.o) + /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libm.a(mulsf3x.o) + /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libm.a(addsf3x.o) +__fp_splitA /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libm.a(fp_split3.o) + /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libm.a(fp_rempio2.o) +__fp_szero /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libm.a(fp_zero.o) + /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libm.a(mulsf3x.o) +__fp_zero /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libm.a(fp_zero.o) + /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libm.a(addsf3x.o) +__heap_end /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/crtm328p.o +__init /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/crtm328p.o +__mulsf3 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_mul_sf.o) + /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libm.a(fp_powsodd.o) + obj/Debug/main.o +__mulsf3_pse /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libm.a(mulsf3x.o) +__mulsf3x /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libm.a(mulsf3x.o) + /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libm.a(fp_powser.o) +__pack_f /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_pack_sf.o) + /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_div_sf.o) + /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_mul_sf.o) + /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_addsub_sf.o) +__prologue_saves__ /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_prologue.o) + /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_sf_to_si.o) + /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_div_sf.o) + /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_mul_sf.o) + /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_addsub_sf.o) +__stack /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/crtm328p.o +__subsf3 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_addsub_sf.o) +__tablejump2__ /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_tablejump.o) +__tablejump__ /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_tablejump.o) + /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_ctors.o) +__thenan_sf /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_thenan_sf.o) + /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_div_sf.o) + /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_mul_sf.o) + /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_addsub_sf.o) +__udivmodhi4 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_udivmodhi4.o) + /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_divmodhi4.o) +__udivmodsi4 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_udivmodsi4.o) + /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_divmodsi4.o) + ../arduino_libs/core0022_328p.a(Print.cpp.o) +__unpack_f /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_unpack_sf.o) + /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_sf_to_si.o) + /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_div_sf.o) + /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_mul_sf.o) + /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_addsub_sf.o) +__vector_1 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/crtm328p.o +__vector_10 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/crtm328p.o +__vector_11 obj/Debug/main.o + /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/crtm328p.o +__vector_12 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/crtm328p.o +__vector_13 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/crtm328p.o +__vector_14 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/crtm328p.o +__vector_15 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/crtm328p.o +__vector_16 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/crtm328p.o +__vector_17 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/crtm328p.o +__vector_18 ../arduino_libs/core0022_328p.a(wiring_serial.c.o) + /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/crtm328p.o +__vector_19 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/crtm328p.o +__vector_2 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/crtm328p.o +__vector_20 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/crtm328p.o +__vector_21 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/crtm328p.o +__vector_22 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/crtm328p.o +__vector_23 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/crtm328p.o +__vector_24 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/crtm328p.o +__vector_25 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/crtm328p.o +__vector_3 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/crtm328p.o +__vector_4 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/crtm328p.o +__vector_5 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/crtm328p.o +__vector_6 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/crtm328p.o +__vector_7 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/crtm328p.o +__vector_8 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/crtm328p.o +__vector_9 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/crtm328p.o +__vector_default /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/crtm328p.o +__vectors /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/crtm328p.o +_div /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_divmodhi4.o) +_exit /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_exit.o) +beginSerial ../arduino_libs/core0022_328p.a(wiring_serial.c.o) + ../arduino_libs/core0022_328p.a(HardwareSerial.cpp.o) +dd obj/Debug/main.o +exit /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_exit.o) + /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/crtm328p.o +fill_sinewave() obj/Debug/main.o +loopCount obj/Debug/main.o +main obj/Debug/main.o + /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/crtm328p.o +rx_buffer ../arduino_libs/core0022_328p.a(wiring_serial.c.o) +rx_buffer_head ../arduino_libs/core0022_328p.a(wiring_serial.c.o) +rx_buffer_tail ../arduino_libs/core0022_328p.a(wiring_serial.c.o) +sample obj/Debug/main.o +serialAvailable ../arduino_libs/core0022_328p.a(wiring_serial.c.o) + ../arduino_libs/core0022_328p.a(HardwareSerial.cpp.o) +serialFlush ../arduino_libs/core0022_328p.a(wiring_serial.c.o) + ../arduino_libs/core0022_328p.a(HardwareSerial.cpp.o) +serialRead ../arduino_libs/core0022_328p.a(wiring_serial.c.o) + ../arduino_libs/core0022_328p.a(HardwareSerial.cpp.o) +serialWrite ../arduino_libs/core0022_328p.a(wiring_serial.c.o) + ../arduino_libs/core0022_328p.a(HardwareSerial.cpp.o) +sin /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libm.a(sin.o) + obj/Debug/main.o +vtable for HardwareSerial ../arduino_libs/core0022_328p.a(HardwareSerial.cpp.o) diff --git a/electic_streaming328p/electic_streaming328p.layout b/electic_streaming328p/electic_streaming328p.layout index bfa6289..7f7e0e5 100644 --- a/electic_streaming328p/electic_streaming328p.layout +++ b/electic_streaming328p/electic_streaming328p.layout @@ -2,6 +2,6 @@ <CodeBlocks_layout_file> <ActiveTarget name="Debug" /> <File name="main.cpp" open="1" top="1" tabpos="0"> - <Cursor position="442" topLine="44" /> + <Cursor position="442" topLine="0" /> </File> </CodeBlocks_layout_file> diff --git a/electic_streaming328p/obj/Debug/main.o b/electic_streaming328p/obj/Debug/main.o Binary files differnew file mode 100644 index 0000000..e753470 --- /dev/null +++ b/electic_streaming328p/obj/Debug/main.o diff --git a/hardwarevariants_1_0/eightanaloginputs/pins_arduino.h b/hardwarevariants_1_0/eightanaloginputs/pins_arduino.h new file mode 100644 index 0000000..52b37ef --- /dev/null +++ b/hardwarevariants_1_0/eightanaloginputs/pins_arduino.h @@ -0,0 +1,27 @@ +/* + pins_arduino.h - Pin definition functions for Arduino + Part of Arduino - http://www.arduino.cc/ + + Copyright (c) 2007 David A. Mellis + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General + Public License along with this library; if not, write to the + Free Software Foundation, Inc., 59 Temple Place, Suite 330, + Boston, MA 02111-1307 USA + + $Id: wiring.h 249 2007-02-03 16:52:51Z mellis $ +*/ + +#include "../standard/pins_arduino.h" +#undef NUM_ANALOG_INPUTS +#define NUM_ANALOG_INPUTS 8 diff --git a/hardwarevariants_1_0/leonardo/pins_arduino.h b/hardwarevariants_1_0/leonardo/pins_arduino.h new file mode 100644 index 0000000..15afb4e --- /dev/null +++ b/hardwarevariants_1_0/leonardo/pins_arduino.h @@ -0,0 +1,253 @@ +/* + pins_arduino.h - Pin definition functions for Arduino + Part of Arduino - http://www.arduino.cc/ + + Copyright (c) 2007 David A. Mellis + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General + Public License along with this library; if not, write to the + Free Software Foundation, Inc., 59 Temple Place, Suite 330, + Boston, MA 02111-1307 USA + + $Id: wiring.h 249 2007-02-03 16:52:51Z mellis $ +*/ + +#ifndef Pins_Arduino_h +#define Pins_Arduino_h + +#include <avr/pgmspace.h> + +#define ARDUINO_MODEL_USB_PID 0x0034 + +#define TX_RX_LED_INIT DDRD |= (1<<5), DDRB |= (1<<0) +#define TXLED0 PORTD |= (1<<5) +#define TXLED1 PORTD &= ~(1<<5) +#define RXLED0 PORTB |= (1<<0) +#define RXLED1 PORTB &= ~(1<<0) + +const static uint8_t SDA = 2; +const static uint8_t SCL = 3; + +// Map SPI port to 'new' pins D14..D17 +const static uint8_t SS = 17; +const static uint8_t MOSI = 16; +const static uint8_t MISO = 14; +const static uint8_t SCK = 15; + +// Mapping of analog pins as digital I/O +// A6-A11 share with digital pins +const static uint8_t A0 = 18; +const static uint8_t A1 = 19; +const static uint8_t A2 = 20; +const static uint8_t A3 = 21; +const static uint8_t A4 = 22; +const static uint8_t A5 = 23; +const static uint8_t A6 = 24; // D4 +const static uint8_t A7 = 25; // D6 +const static uint8_t A8 = 26; // D8 +const static uint8_t A9 = 27; // D9 +const static uint8_t A10 = 28; // D10 +const static uint8_t A11 = 29; // D12 + +// __AVR_ATmega32U4__ has an unusual mapping of pins to channels +extern const uint8_t PROGMEM analog_pin_to_channel_PGM[]; +#define analogPinToChannel(P) ( pgm_read_byte( analog_pin_to_channel_PGM + (P) ) ) + +#ifdef ARDUINO_MAIN + +// On the Arduino board, digital pins are also used +// for the analog output (software PWM). Analog input +// pins are a separate set. + +// ATMEL ATMEGA32U4 / ARDUINO LEONARDO +// +// D0 PD2 RXD1/INT2 +// D1 PD3 TXD1/INT3 +// D2 PD1 SDA SDA/INT1 +// D3# PD0 PWM8/SCL OC0B/SCL/INT0 +// D4 A6 PD4 ADC8 +// D5# PC6 ??? OC3A/#OC4A +// D6# A7 PD7 FastPWM #OC4D/ADC10 +// D7 PE6 INT6/AIN0 +// +// D8 A8 PB4 ADC11/PCINT4 +// D9# A9 PB5 PWM16 OC1A/#OC4B/ADC12/PCINT5 +// D10# A10 PB6 PWM16 OC1B/0c4B/ADC13/PCINT6 +// D11# PB7 PWM8/16 0C0A/OC1C/#RTS/PCINT7 +// D12 A11 PD6 T1/#OC4D/ADC9 +// D13# PC7 PWM10 CLK0/OC4A +// +// A0 D18 PF7 ADC7 +// A1 D19 PF6 ADC6 +// A2 D20 PF5 ADC5 +// A3 D21 PF4 ADC4 +// A4 D22 PF1 ADC1 +// A5 D23 PF0 ADC0 +// +// New pins D14..D17 to map SPI port to digital pins +// +// MISO D14 PB3 MISO,PCINT3 +// SCK D15 PB1 SCK,PCINT1 +// MOSI D16 PB2 MOSI,PCINT2 +// SS D17 PB0 RXLED,SS/PCINT0 +// +// TXLED PD5 +// RXLED PB0 +// HWB PE2 HWB + +// these arrays map port names (e.g. port B) to the +// appropriate addresses for various functions (e.g. reading +// and writing) +const uint16_t PROGMEM port_to_mode_PGM[] = { + NOT_A_PORT, + NOT_A_PORT, + (uint16_t) &DDRB, + (uint16_t) &DDRC, + (uint16_t) &DDRD, + (uint16_t) &DDRE, + (uint16_t) &DDRF, +}; + +const uint16_t PROGMEM port_to_output_PGM[] = { + NOT_A_PORT, + NOT_A_PORT, + (uint16_t) &PORTB, + (uint16_t) &PORTC, + (uint16_t) &PORTD, + (uint16_t) &PORTE, + (uint16_t) &PORTF, +}; + +const uint16_t PROGMEM port_to_input_PGM[] = { + NOT_A_PORT, + NOT_A_PORT, + (uint16_t) &PINB, + (uint16_t) &PINC, + (uint16_t) &PIND, + (uint16_t) &PINE, + (uint16_t) &PINF, +}; + +const uint8_t PROGMEM digital_pin_to_port_PGM[30] = { + PD, // D0 - PD2 + PD, // D1 - PD3 + PD, // D2 - PD1 + PD, // D3 - PD0 + PD, // D4 - PD4 + PC, // D5 - PC6 + PD, // D6 - PD7 + PE, // D7 - PE6 + + PB, // D8 - PB4 + PB, // D9 - PB5 + PB, // D10 - PB6 + PB, // D11 - PB7 + PD, // D12 - PD6 + PC, // D13 - PC7 + + PB, // D14 - MISO - PB3 + PB, // D15 - SCK - PB1 + PB, // D16 - MOSI - PB2 + PB, // D17 - SS - PB0 + + PF, // D18 - A0 - PF7 + PF, // D19 - A1 - PF6 + PF, // D20 - A2 - PF5 + PF, // D21 - A3 - PF4 + PF, // D22 - A4 - PF1 + PF, // D23 - A5 - PF0 + + PD, // D24 / D4 - A6 - PD4 + PD, // D25 / D6 - A7 - PD7 + PB, // D26 / D8 - A8 - PB4 + PB, // D27 / D9 - A9 - PB5 + PB, // D28 / D10 - A10 - PB6 + PD, // D29 / D12 - A11 - PD6 +}; + +const uint8_t PROGMEM digital_pin_to_bit_mask_PGM[30] = { + _BV(2), // D0 - PD2 + _BV(3), // D1 - PD3 + _BV(1), // D2 - PD1 + _BV(0), // D3 - PD0 + _BV(4), // D4 - PD4 + _BV(6), // D5 - PC6 + _BV(7), // D6 - PD7 + _BV(6), // D7 - PE6 + + _BV(4), // D8 - PB4 + _BV(5), // D9 - PB5 + _BV(6), // D10 - PB6 + _BV(7), // D11 - PB7 + _BV(6), // D12 - PD6 + _BV(7), // D13 - PC7 + + _BV(3), // D14 - MISO - PB3 + _BV(1), // D15 - SCK - PB1 + _BV(2), // D16 - MOSI - PB2 + _BV(0), // D17 - SS - PB0 + + _BV(7), // D18 - A0 - PF7 + _BV(6), // D19 - A1 - PF6 + _BV(5), // D20 - A2 - PF5 + _BV(4), // D21 - A3 - PF4 + _BV(1), // D22 - A4 - PF1 + _BV(0), // D23 - A5 - PF0 + + _BV(4), // D24 / D4 - A6 - PD4 + _BV(7), // D25 / D6 - A7 - PD7 + _BV(4), // D26 / D8 - A8 - PB4 + _BV(5), // D27 / D9 - A9 - PB5 + _BV(6), // D28 / D10 - A10 - PB6 + _BV(6), // D29 / D12 - A11 - PD6 +}; + +const uint8_t PROGMEM digital_pin_to_timer_PGM[18] = { + NOT_ON_TIMER, + NOT_ON_TIMER, + NOT_ON_TIMER, + TIMER0B, /* 3 */ + NOT_ON_TIMER, + TIMER3A, /* 5 */ + TIMER4D, /* 6 */ + NOT_ON_TIMER, + + NOT_ON_TIMER, + TIMER1A, /* 9 */ + TIMER1B, /* 10 */ + TIMER0A, /* 11 */ + + NOT_ON_TIMER, + TIMER4A, /* 13 */ + + NOT_ON_TIMER, + NOT_ON_TIMER, +}; + +const uint8_t PROGMEM analog_pin_to_channel_PGM[12] = { + 7, // A0 PF7 ADC7 + 6, // A1 PF6 ADC6 + 5, // A2 PF5 ADC5 + 4, // A3 PF4 ADC4 + 1, // A4 PF1 ADC1 + 0, // A5 PF0 ADC0 + 8, // A6 D4 PD4 ADC8 + 10, // A7 D6 PD7 ADC10 + 11, // A8 D8 PB4 ADC11 + 12, // A9 D9 PB5 ADC12 + 13, // A10 D10 PB6 ADC13 + 9 // A11 D12 PD6 ADC9 +}; + +#endif /* ARDUINO_MAIN */ +#endif /* Pins_Arduino_h */ diff --git a/hardwarevariants_1_0/mega/pins_arduino.h b/hardwarevariants_1_0/mega/pins_arduino.h new file mode 100644 index 0000000..57ec97f --- /dev/null +++ b/hardwarevariants_1_0/mega/pins_arduino.h @@ -0,0 +1,363 @@ +/* + pins_arduino.h - Pin definition functions for Arduino + Part of Arduino - http://www.arduino.cc/ + + Copyright (c) 2007 David A. Mellis + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General + Public License along with this library; if not, write to the + Free Software Foundation, Inc., 59 Temple Place, Suite 330, + Boston, MA 02111-1307 USA + + $Id: wiring.h 249 2007-02-03 16:52:51Z mellis $ +*/ + +#ifndef Pins_Arduino_h +#define Pins_Arduino_h + +#include <avr/pgmspace.h> + +#define NUM_DIGITAL_PINS 70 +#define NUM_ANALOG_INPUTS 16 +#define analogInputToDigitalPin(p) ((p < 16) ? (p) + 54 : -1) +#define digitalPinHasPWM(p) (((p) >= 2 && (p) <= 13) || ((p) >= 44 && (p)<= 46)) + +const static uint8_t SS = 53; +const static uint8_t MOSI = 51; +const static uint8_t MISO = 50; +const static uint8_t SCK = 52; + +const static uint8_t SDA = 20; +const static uint8_t SCL = 21; +const static uint8_t LED_BUILTIN = 13; + +const static uint8_t A0 = 54; +const static uint8_t A1 = 55; +const static uint8_t A2 = 56; +const static uint8_t A3 = 57; +const static uint8_t A4 = 58; +const static uint8_t A5 = 59; +const static uint8_t A6 = 60; +const static uint8_t A7 = 61; +const static uint8_t A8 = 62; +const static uint8_t A9 = 63; +const static uint8_t A10 = 64; +const static uint8_t A11 = 65; +const static uint8_t A12 = 66; +const static uint8_t A13 = 67; +const static uint8_t A14 = 68; +const static uint8_t A15 = 69; + +// A majority of the pins are NOT PCINTs, SO BE WARNED (i.e. you cannot use them as receive pins) +// Only pins available for RECEIVE (TRANSMIT can be on any pin): +// (I've deliberately left out pin mapping to the Hardware USARTs - seems senseless to me) +// Pins: 10, 11, 12, 13, 50, 51, 52, 53, 62, 63, 64, 65, 66, 67, 68, 69 + +#define digitalPinToPCICR(p) ( (((p) >= 10) && ((p) <= 13)) || \ + (((p) >= 50) && ((p) <= 53)) || \ + (((p) >= 62) && ((p) <= 69)) ? (&PCICR) : ((uint8_t *)0) ) + +#define digitalPinToPCICRbit(p) ( (((p) >= 10) && ((p) <= 13)) || (((p) >= 50) && ((p) <= 53)) ? 0 : \ + ( (((p) >= 62) && ((p) <= 69)) ? 2 : \ + 0 ) ) + +#define digitalPinToPCMSK(p) ( (((p) >= 10) && ((p) <= 13)) || (((p) >= 50) && ((p) <= 53)) ? (&PCMSK0) : \ + ( (((p) >= 62) && ((p) <= 69)) ? (&PCMSK2) : \ + ((uint8_t *)0) ) ) + +#define digitalPinToPCMSKbit(p) ( (((p) >= 10) && ((p) <= 13)) ? ((p) - 6) : \ + ( ((p) == 50) ? 3 : \ + ( ((p) == 51) ? 2 : \ + ( ((p) == 52) ? 1 : \ + ( ((p) == 53) ? 0 : \ + ( (((p) >= 62) && ((p) <= 69)) ? ((p) - 62) : \ + 0 ) ) ) ) ) ) + +#ifdef ARDUINO_MAIN + +const uint16_t PROGMEM port_to_mode_PGM[] = { + NOT_A_PORT, + (uint16_t) &DDRA, + (uint16_t) &DDRB, + (uint16_t) &DDRC, + (uint16_t) &DDRD, + (uint16_t) &DDRE, + (uint16_t) &DDRF, + (uint16_t) &DDRG, + (uint16_t) &DDRH, + NOT_A_PORT, + (uint16_t) &DDRJ, + (uint16_t) &DDRK, + (uint16_t) &DDRL, +}; + +const uint16_t PROGMEM port_to_output_PGM[] = { + NOT_A_PORT, + (uint16_t) &PORTA, + (uint16_t) &PORTB, + (uint16_t) &PORTC, + (uint16_t) &PORTD, + (uint16_t) &PORTE, + (uint16_t) &PORTF, + (uint16_t) &PORTG, + (uint16_t) &PORTH, + NOT_A_PORT, + (uint16_t) &PORTJ, + (uint16_t) &PORTK, + (uint16_t) &PORTL, +}; + +const uint16_t PROGMEM port_to_input_PGM[] = { + NOT_A_PIN, + (uint16_t) &PINA, + (uint16_t) &PINB, + (uint16_t) &PINC, + (uint16_t) &PIND, + (uint16_t) &PINE, + (uint16_t) &PINF, + (uint16_t) &PING, + (uint16_t) &PINH, + NOT_A_PIN, + (uint16_t) &PINJ, + (uint16_t) &PINK, + (uint16_t) &PINL, +}; + +const uint8_t PROGMEM digital_pin_to_port_PGM[] = { + // PORTLIST + // ------------------------------------------- + PE , // PE 0 ** 0 ** USART0_RX + PE , // PE 1 ** 1 ** USART0_TX + PE , // PE 4 ** 2 ** PWM2 + PE , // PE 5 ** 3 ** PWM3 + PG , // PG 5 ** 4 ** PWM4 + PE , // PE 3 ** 5 ** PWM5 + PH , // PH 3 ** 6 ** PWM6 + PH , // PH 4 ** 7 ** PWM7 + PH , // PH 5 ** 8 ** PWM8 + PH , // PH 6 ** 9 ** PWM9 + PB , // PB 4 ** 10 ** PWM10 + PB , // PB 5 ** 11 ** PWM11 + PB , // PB 6 ** 12 ** PWM12 + PB , // PB 7 ** 13 ** PWM13 + PJ , // PJ 1 ** 14 ** USART3_TX + PJ , // PJ 0 ** 15 ** USART3_RX + PH , // PH 1 ** 16 ** USART2_TX + PH , // PH 0 ** 17 ** USART2_RX + PD , // PD 3 ** 18 ** USART1_TX + PD , // PD 2 ** 19 ** USART1_RX + PD , // PD 1 ** 20 ** I2C_SDA + PD , // PD 0 ** 21 ** I2C_SCL + PA , // PA 0 ** 22 ** D22 + PA , // PA 1 ** 23 ** D23 + PA , // PA 2 ** 24 ** D24 + PA , // PA 3 ** 25 ** D25 + PA , // PA 4 ** 26 ** D26 + PA , // PA 5 ** 27 ** D27 + PA , // PA 6 ** 28 ** D28 + PA , // PA 7 ** 29 ** D29 + PC , // PC 7 ** 30 ** D30 + PC , // PC 6 ** 31 ** D31 + PC , // PC 5 ** 32 ** D32 + PC , // PC 4 ** 33 ** D33 + PC , // PC 3 ** 34 ** D34 + PC , // PC 2 ** 35 ** D35 + PC , // PC 1 ** 36 ** D36 + PC , // PC 0 ** 37 ** D37 + PD , // PD 7 ** 38 ** D38 + PG , // PG 2 ** 39 ** D39 + PG , // PG 1 ** 40 ** D40 + PG , // PG 0 ** 41 ** D41 + PL , // PL 7 ** 42 ** D42 + PL , // PL 6 ** 43 ** D43 + PL , // PL 5 ** 44 ** D44 + PL , // PL 4 ** 45 ** D45 + PL , // PL 3 ** 46 ** D46 + PL , // PL 2 ** 47 ** D47 + PL , // PL 1 ** 48 ** D48 + PL , // PL 0 ** 49 ** D49 + PB , // PB 3 ** 50 ** SPI_MISO + PB , // PB 2 ** 51 ** SPI_MOSI + PB , // PB 1 ** 52 ** SPI_SCK + PB , // PB 0 ** 53 ** SPI_SS + PF , // PF 0 ** 54 ** A0 + PF , // PF 1 ** 55 ** A1 + PF , // PF 2 ** 56 ** A2 + PF , // PF 3 ** 57 ** A3 + PF , // PF 4 ** 58 ** A4 + PF , // PF 5 ** 59 ** A5 + PF , // PF 6 ** 60 ** A6 + PF , // PF 7 ** 61 ** A7 + PK , // PK 0 ** 62 ** A8 + PK , // PK 1 ** 63 ** A9 + PK , // PK 2 ** 64 ** A10 + PK , // PK 3 ** 65 ** A11 + PK , // PK 4 ** 66 ** A12 + PK , // PK 5 ** 67 ** A13 + PK , // PK 6 ** 68 ** A14 + PK , // PK 7 ** 69 ** A15 +}; + +const uint8_t PROGMEM digital_pin_to_bit_mask_PGM[] = { + // PIN IN PORT + // ------------------------------------------- + _BV( 0 ) , // PE 0 ** 0 ** USART0_RX + _BV( 1 ) , // PE 1 ** 1 ** USART0_TX + _BV( 4 ) , // PE 4 ** 2 ** PWM2 + _BV( 5 ) , // PE 5 ** 3 ** PWM3 + _BV( 5 ) , // PG 5 ** 4 ** PWM4 + _BV( 3 ) , // PE 3 ** 5 ** PWM5 + _BV( 3 ) , // PH 3 ** 6 ** PWM6 + _BV( 4 ) , // PH 4 ** 7 ** PWM7 + _BV( 5 ) , // PH 5 ** 8 ** PWM8 + _BV( 6 ) , // PH 6 ** 9 ** PWM9 + _BV( 4 ) , // PB 4 ** 10 ** PWM10 + _BV( 5 ) , // PB 5 ** 11 ** PWM11 + _BV( 6 ) , // PB 6 ** 12 ** PWM12 + _BV( 7 ) , // PB 7 ** 13 ** PWM13 + _BV( 1 ) , // PJ 1 ** 14 ** USART3_TX + _BV( 0 ) , // PJ 0 ** 15 ** USART3_RX + _BV( 1 ) , // PH 1 ** 16 ** USART2_TX + _BV( 0 ) , // PH 0 ** 17 ** USART2_RX + _BV( 3 ) , // PD 3 ** 18 ** USART1_TX + _BV( 2 ) , // PD 2 ** 19 ** USART1_RX + _BV( 1 ) , // PD 1 ** 20 ** I2C_SDA + _BV( 0 ) , // PD 0 ** 21 ** I2C_SCL + _BV( 0 ) , // PA 0 ** 22 ** D22 + _BV( 1 ) , // PA 1 ** 23 ** D23 + _BV( 2 ) , // PA 2 ** 24 ** D24 + _BV( 3 ) , // PA 3 ** 25 ** D25 + _BV( 4 ) , // PA 4 ** 26 ** D26 + _BV( 5 ) , // PA 5 ** 27 ** D27 + _BV( 6 ) , // PA 6 ** 28 ** D28 + _BV( 7 ) , // PA 7 ** 29 ** D29 + _BV( 7 ) , // PC 7 ** 30 ** D30 + _BV( 6 ) , // PC 6 ** 31 ** D31 + _BV( 5 ) , // PC 5 ** 32 ** D32 + _BV( 4 ) , // PC 4 ** 33 ** D33 + _BV( 3 ) , // PC 3 ** 34 ** D34 + _BV( 2 ) , // PC 2 ** 35 ** D35 + _BV( 1 ) , // PC 1 ** 36 ** D36 + _BV( 0 ) , // PC 0 ** 37 ** D37 + _BV( 7 ) , // PD 7 ** 38 ** D38 + _BV( 2 ) , // PG 2 ** 39 ** D39 + _BV( 1 ) , // PG 1 ** 40 ** D40 + _BV( 0 ) , // PG 0 ** 41 ** D41 + _BV( 7 ) , // PL 7 ** 42 ** D42 + _BV( 6 ) , // PL 6 ** 43 ** D43 + _BV( 5 ) , // PL 5 ** 44 ** D44 + _BV( 4 ) , // PL 4 ** 45 ** D45 + _BV( 3 ) , // PL 3 ** 46 ** D46 + _BV( 2 ) , // PL 2 ** 47 ** D47 + _BV( 1 ) , // PL 1 ** 48 ** D48 + _BV( 0 ) , // PL 0 ** 49 ** D49 + _BV( 3 ) , // PB 3 ** 50 ** SPI_MISO + _BV( 2 ) , // PB 2 ** 51 ** SPI_MOSI + _BV( 1 ) , // PB 1 ** 52 ** SPI_SCK + _BV( 0 ) , // PB 0 ** 53 ** SPI_SS + _BV( 0 ) , // PF 0 ** 54 ** A0 + _BV( 1 ) , // PF 1 ** 55 ** A1 + _BV( 2 ) , // PF 2 ** 56 ** A2 + _BV( 3 ) , // PF 3 ** 57 ** A3 + _BV( 4 ) , // PF 4 ** 58 ** A4 + _BV( 5 ) , // PF 5 ** 59 ** A5 + _BV( 6 ) , // PF 6 ** 60 ** A6 + _BV( 7 ) , // PF 7 ** 61 ** A7 + _BV( 0 ) , // PK 0 ** 62 ** A8 + _BV( 1 ) , // PK 1 ** 63 ** A9 + _BV( 2 ) , // PK 2 ** 64 ** A10 + _BV( 3 ) , // PK 3 ** 65 ** A11 + _BV( 4 ) , // PK 4 ** 66 ** A12 + _BV( 5 ) , // PK 5 ** 67 ** A13 + _BV( 6 ) , // PK 6 ** 68 ** A14 + _BV( 7 ) , // PK 7 ** 69 ** A15 +}; + +const uint8_t PROGMEM digital_pin_to_timer_PGM[] = { + // TIMERS + // ------------------------------------------- + NOT_ON_TIMER , // PE 0 ** 0 ** USART0_RX + NOT_ON_TIMER , // PE 1 ** 1 ** USART0_TX + TIMER3B , // PE 4 ** 2 ** PWM2 + TIMER3C , // PE 5 ** 3 ** PWM3 + TIMER0B , // PG 5 ** 4 ** PWM4 + TIMER3A , // PE 3 ** 5 ** PWM5 + TIMER4A , // PH 3 ** 6 ** PWM6 + TIMER4B , // PH 4 ** 7 ** PWM7 + TIMER4C , // PH 5 ** 8 ** PWM8 + TIMER2B , // PH 6 ** 9 ** PWM9 + TIMER2A , // PB 4 ** 10 ** PWM10 + TIMER1A , // PB 5 ** 11 ** PWM11 + TIMER1B , // PB 6 ** 12 ** PWM12 + TIMER0A , // PB 7 ** 13 ** PWM13 + NOT_ON_TIMER , // PJ 1 ** 14 ** USART3_TX + NOT_ON_TIMER , // PJ 0 ** 15 ** USART3_RX + NOT_ON_TIMER , // PH 1 ** 16 ** USART2_TX + NOT_ON_TIMER , // PH 0 ** 17 ** USART2_RX + NOT_ON_TIMER , // PD 3 ** 18 ** USART1_TX + NOT_ON_TIMER , // PD 2 ** 19 ** USART1_RX + NOT_ON_TIMER , // PD 1 ** 20 ** I2C_SDA + NOT_ON_TIMER , // PD 0 ** 21 ** I2C_SCL + NOT_ON_TIMER , // PA 0 ** 22 ** D22 + NOT_ON_TIMER , // PA 1 ** 23 ** D23 + NOT_ON_TIMER , // PA 2 ** 24 ** D24 + NOT_ON_TIMER , // PA 3 ** 25 ** D25 + NOT_ON_TIMER , // PA 4 ** 26 ** D26 + NOT_ON_TIMER , // PA 5 ** 27 ** D27 + NOT_ON_TIMER , // PA 6 ** 28 ** D28 + NOT_ON_TIMER , // PA 7 ** 29 ** D29 + NOT_ON_TIMER , // PC 7 ** 30 ** D30 + NOT_ON_TIMER , // PC 6 ** 31 ** D31 + NOT_ON_TIMER , // PC 5 ** 32 ** D32 + NOT_ON_TIMER , // PC 4 ** 33 ** D33 + NOT_ON_TIMER , // PC 3 ** 34 ** D34 + NOT_ON_TIMER , // PC 2 ** 35 ** D35 + NOT_ON_TIMER , // PC 1 ** 36 ** D36 + NOT_ON_TIMER , // PC 0 ** 37 ** D37 + NOT_ON_TIMER , // PD 7 ** 38 ** D38 + NOT_ON_TIMER , // PG 2 ** 39 ** D39 + NOT_ON_TIMER , // PG 1 ** 40 ** D40 + NOT_ON_TIMER , // PG 0 ** 41 ** D41 + NOT_ON_TIMER , // PL 7 ** 42 ** D42 + NOT_ON_TIMER , // PL 6 ** 43 ** D43 + TIMER5C , // PL 5 ** 44 ** D44 + TIMER5B , // PL 4 ** 45 ** D45 + TIMER5A , // PL 3 ** 46 ** D46 + NOT_ON_TIMER , // PL 2 ** 47 ** D47 + NOT_ON_TIMER , // PL 1 ** 48 ** D48 + NOT_ON_TIMER , // PL 0 ** 49 ** D49 + NOT_ON_TIMER , // PB 3 ** 50 ** SPI_MISO + NOT_ON_TIMER , // PB 2 ** 51 ** SPI_MOSI + NOT_ON_TIMER , // PB 1 ** 52 ** SPI_SCK + NOT_ON_TIMER , // PB 0 ** 53 ** SPI_SS + NOT_ON_TIMER , // PF 0 ** 54 ** A0 + NOT_ON_TIMER , // PF 1 ** 55 ** A1 + NOT_ON_TIMER , // PF 2 ** 56 ** A2 + NOT_ON_TIMER , // PF 3 ** 57 ** A3 + NOT_ON_TIMER , // PF 4 ** 58 ** A4 + NOT_ON_TIMER , // PF 5 ** 59 ** A5 + NOT_ON_TIMER , // PF 6 ** 60 ** A6 + NOT_ON_TIMER , // PF 7 ** 61 ** A7 + NOT_ON_TIMER , // PK 0 ** 62 ** A8 + NOT_ON_TIMER , // PK 1 ** 63 ** A9 + NOT_ON_TIMER , // PK 2 ** 64 ** A10 + NOT_ON_TIMER , // PK 3 ** 65 ** A11 + NOT_ON_TIMER , // PK 4 ** 66 ** A12 + NOT_ON_TIMER , // PK 5 ** 67 ** A13 + NOT_ON_TIMER , // PK 6 ** 68 ** A14 + NOT_ON_TIMER , // PK 7 ** 69 ** A15 +}; + +#endif + +#endif
\ No newline at end of file diff --git a/hardwarevariants_1_0/micro/pins_arduino.h b/hardwarevariants_1_0/micro/pins_arduino.h new file mode 100644 index 0000000..c9f25eb --- /dev/null +++ b/hardwarevariants_1_0/micro/pins_arduino.h @@ -0,0 +1,27 @@ +/* + pins_arduino.h - Pin definition functions for Arduino + Part of Arduino - http://www.arduino.cc/ + + Copyright (c) 2007 David A. Mellis + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General + Public License along with this library; if not, write to the + Free Software Foundation, Inc., 59 Temple Place, Suite 330, + Boston, MA 02111-1307 USA + + $Id: wiring.h 249 2007-02-03 16:52:51Z mellis $ +*/ + +#include "../leonardo/pins_arduino.h" +#undef ARDUINO_MODEL_USB_PID +#define ARDUINO_MODEL_USB_PID 0x0035
\ No newline at end of file diff --git a/hardwarevariants_1_0/standard/pins_arduino.h b/hardwarevariants_1_0/standard/pins_arduino.h new file mode 100644 index 0000000..6e774d4 --- /dev/null +++ b/hardwarevariants_1_0/standard/pins_arduino.h @@ -0,0 +1,218 @@ +/* + pins_arduino.h - Pin definition functions for Arduino + Part of Arduino - http://www.arduino.cc/ + + Copyright (c) 2007 David A. Mellis + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General + Public License along with this library; if not, write to the + Free Software Foundation, Inc., 59 Temple Place, Suite 330, + Boston, MA 02111-1307 USA + + $Id: wiring.h 249 2007-02-03 16:52:51Z mellis $ +*/ + +#ifndef Pins_Arduino_h +#define Pins_Arduino_h + +#include <avr/pgmspace.h> + +#define NUM_DIGITAL_PINS 20 +#define NUM_ANALOG_INPUTS 6 +#define analogInputToDigitalPin(p) ((p < 6) ? (p) + 14 : -1) + +#if defined(__AVR_ATmega8__) +#define digitalPinHasPWM(p) ((p) == 9 || (p) == 10 || (p) == 11) +#else +#define digitalPinHasPWM(p) ((p) == 3 || (p) == 5 || (p) == 6 || (p) == 9 || (p) == 10 || (p) == 11) +#endif + +const static uint8_t SS = 10; +const static uint8_t MOSI = 11; +const static uint8_t MISO = 12; +const static uint8_t SCK = 13; + +const static uint8_t SDA = 18; +const static uint8_t SCL = 19; +const static uint8_t LED_BUILTIN = 13; + +const static uint8_t A0 = 14; +const static uint8_t A1 = 15; +const static uint8_t A2 = 16; +const static uint8_t A3 = 17; +const static uint8_t A4 = 18; +const static uint8_t A5 = 19; +const static uint8_t A6 = 20; +const static uint8_t A7 = 21; + +#define digitalPinToPCICR(p) (((p) >= 0 && (p) <= 21) ? (&PCICR) : ((uint8_t *)0)) +#define digitalPinToPCICRbit(p) (((p) <= 7) ? 2 : (((p) <= 13) ? 0 : 1)) +#define digitalPinToPCMSK(p) (((p) <= 7) ? (&PCMSK2) : (((p) <= 13) ? (&PCMSK0) : (((p) <= 21) ? (&PCMSK1) : ((uint8_t *)0)))) +#define digitalPinToPCMSKbit(p) (((p) <= 7) ? (p) : (((p) <= 13) ? ((p) - 8) : ((p) - 14))) + +#ifdef ARDUINO_MAIN + +// On the Arduino board, digital pins are also used +// for the analog output (software PWM). Analog input +// pins are a separate set. + +// ATMEL ATMEGA8 & 168 / ARDUINO +// +// +-\/-+ +// PC6 1| |28 PC5 (AI 5) +// (D 0) PD0 2| |27 PC4 (AI 4) +// (D 1) PD1 3| |26 PC3 (AI 3) +// (D 2) PD2 4| |25 PC2 (AI 2) +// PWM+ (D 3) PD3 5| |24 PC1 (AI 1) +// (D 4) PD4 6| |23 PC0 (AI 0) +// VCC 7| |22 GND +// GND 8| |21 AREF +// PB6 9| |20 AVCC +// PB7 10| |19 PB5 (D 13) +// PWM+ (D 5) PD5 11| |18 PB4 (D 12) +// PWM+ (D 6) PD6 12| |17 PB3 (D 11) PWM +// (D 7) PD7 13| |16 PB2 (D 10) PWM +// (D 8) PB0 14| |15 PB1 (D 9) PWM +// +----+ +// +// (PWM+ indicates the additional PWM pins on the ATmega168.) + +// ATMEL ATMEGA1280 / ARDUINO +// +// 0-7 PE0-PE7 works +// 8-13 PB0-PB5 works +// 14-21 PA0-PA7 works +// 22-29 PH0-PH7 works +// 30-35 PG5-PG0 works +// 36-43 PC7-PC0 works +// 44-51 PJ7-PJ0 works +// 52-59 PL7-PL0 works +// 60-67 PD7-PD0 works +// A0-A7 PF0-PF7 +// A8-A15 PK0-PK7 + + +// these arrays map port names (e.g. port B) to the +// appropriate addresses for various functions (e.g. reading +// and writing) +const uint16_t PROGMEM port_to_mode_PGM[] = { + NOT_A_PORT, + NOT_A_PORT, + (uint16_t) &DDRB, + (uint16_t) &DDRC, + (uint16_t) &DDRD, +}; + +const uint16_t PROGMEM port_to_output_PGM[] = { + NOT_A_PORT, + NOT_A_PORT, + (uint16_t) &PORTB, + (uint16_t) &PORTC, + (uint16_t) &PORTD, +}; + +const uint16_t PROGMEM port_to_input_PGM[] = { + NOT_A_PORT, + NOT_A_PORT, + (uint16_t) &PINB, + (uint16_t) &PINC, + (uint16_t) &PIND, +}; + +const uint8_t PROGMEM digital_pin_to_port_PGM[] = { + PD, /* 0 */ + PD, + PD, + PD, + PD, + PD, + PD, + PD, + PB, /* 8 */ + PB, + PB, + PB, + PB, + PB, + PC, /* 14 */ + PC, + PC, + PC, + PC, + PC, +}; + +const uint8_t PROGMEM digital_pin_to_bit_mask_PGM[] = { + _BV(0), /* 0, port D */ + _BV(1), + _BV(2), + _BV(3), + _BV(4), + _BV(5), + _BV(6), + _BV(7), + _BV(0), /* 8, port B */ + _BV(1), + _BV(2), + _BV(3), + _BV(4), + _BV(5), + _BV(0), /* 14, port C */ + _BV(1), + _BV(2), + _BV(3), + _BV(4), + _BV(5), +}; + +const uint8_t PROGMEM digital_pin_to_timer_PGM[] = { + NOT_ON_TIMER, /* 0 - port D */ + NOT_ON_TIMER, + NOT_ON_TIMER, + // on the ATmega168, digital pin 3 has hardware pwm +#if defined(__AVR_ATmega8__) + NOT_ON_TIMER, +#else + TIMER2B, +#endif + NOT_ON_TIMER, + // on the ATmega168, digital pins 5 and 6 have hardware pwm +#if defined(__AVR_ATmega8__) + NOT_ON_TIMER, + NOT_ON_TIMER, +#else + TIMER0B, + TIMER0A, +#endif + NOT_ON_TIMER, + NOT_ON_TIMER, /* 8 - port B */ + TIMER1A, + TIMER1B, +#if defined(__AVR_ATmega8__) + TIMER2, +#else + TIMER2A, +#endif + NOT_ON_TIMER, + NOT_ON_TIMER, + NOT_ON_TIMER, + NOT_ON_TIMER, /* 14 - port C */ + NOT_ON_TIMER, + NOT_ON_TIMER, + NOT_ON_TIMER, + NOT_ON_TIMER, +}; + +#endif + +#endif
\ No newline at end of file |
