]> jspc29.x-matter.uni-frankfurt.de Git - coral.git/commitdiff
cnc working with touchpad and usb interface, which is not perfect yet, no global...
authorMichael Wiebusch <stratomaster@gmx.net>
Sun, 20 Oct 2013 13:36:57 +0000 (15:36 +0200)
committerMichael Wiebusch <stratomaster@gmx.net>
Sun, 20 Oct 2013 13:36:57 +0000 (15:36 +0200)
firmware/USBtoSerial.c
firmware/USBtoSerial.c~
firmware/USBtoSerial.elf
firmware/USBtoSerial.hex
firmware/USBtoSerial.lss
firmware/USBtoSerial.map
firmware/USBtoSerial.o
firmware/USBtoSerial.sym
firmware/pins.h~

index 43d162025c00bd39c7501e9d66d52ae2374240ee..e5b74513a154cf9dfc49ecdaaae079717342f2cd 100644 (file)
  */\r
 #define F_CPU 16e6\r
 \r
+#include <avr/io.h> \r
+#include <stdlib.h>\r
 #include "USBtoSerial.h"\r
 #include <util/delay.h>\r
 #include "TM1001A.c"\r
 // #include "rfm70.c"\r
 #include "pins.h"\r
 \r
+int16_t plate_pos_x = 0,plate_pos_y = 0;\r
+char stringbuffer[16];\r
+\r
 /** Circular buffer to hold data from the host before it is sent to the device via the serial port. */\r
 static RingBuffer_t USBtoUSART_Buffer;\r
 \r
@@ -130,11 +135,11 @@ void Usb2SerialTask(void) {
     }\r
 \r
     /* Load the next byte from the USART transmit buffer into the USART */\r
-    if (!(RingBuffer_IsEmpty(&USBtoUSART_Buffer))) {\r
-      Serial_SendByte(RingBuffer_Remove(&USBtoUSART_Buffer));\r
+//     if (!(RingBuffer_IsEmpty(&USBtoUSART_Buffer))) {\r
+//       Serial_SendByte(RingBuffer_Remove(&USBtoUSART_Buffer));\r
 //      dummy = RingBuffer_Remove(&USBtoUSART_Buffer);\r
 //      sendPayload(&dummy,1,0);\r
-    }\r
+//     }\r
     CDC_Device_USBTask(&VirtualSerial_CDC_Interface);\r
     USB_USBTask();\r
   \r
@@ -280,6 +285,28 @@ void my_uitoa(uint32_t zahl, char* string, uint8_t no_digits) {
 \r
 }\r
 \r
+int8_t sign(int16_t x) {\r
+  return (x > 0) - (x < 0);\r
+}\r
+\r
+\r
+void uart_print_number(uint32_t zahl, uint8_t no_digits) {\r
+  my_uitoa(abs(zahl),stringbuffer,no_digits);\r
+  uart_puts(stringbuffer);\r
+  \r
+}\r
+void uart_print_signed_number(uint32_t zahl, uint8_t no_digits) {\r
+  my_uitoa(abs(zahl),stringbuffer,no_digits);\r
+  if (sign(zahl) < 0) {\r
+    uart_putc('-');\r
+  } else {\r
+    uart_putc('+');\r
+  }\r
+  uart_puts(stringbuffer);\r
+  \r
+}\r
+\r
+\r
 /** Main program entry point. This routine contains the overall program flow, including initial\r
  *  setup of all components and the main program loop.\r
  */\r
@@ -359,29 +386,207 @@ uint8_t motor_step(uint8_t motor, int8_t direction) { // motor: M1 or M2, direct
 \r
 }\r
 \r
-int8_t sign(int16_t x) {\r
-  return (x > 0) - (x < 0);\r
+\r
+uint32_t times_ten_pow(uint8_t exponent) {\r
+  uint32_t val = 1;\r
+  for (uint8_t i = 1; i <= exponent; i++) {\r
+    val *= 10;\r
+  }\r
+  return val;\r
 }\r
 \r
-void move_plate(int16_t dx, int16_t dy){\r
+\r
+\r
+uint8_t move_plate(int16_t dx, int16_t dy){\r
   static int16_t todo_x,todo_y = 0;\r
   int8_t signum;\r
+  uint8_t returnval = 0;\r
   todo_x += dx;\r
   todo_y += dy;\r
   \r
   signum = sign(todo_x);\r
+  if(signum != 0) {\r
+    returnval++;\r
+  }\r
   motor_step(X,signum);\r
   todo_x -= signum;\r
   \r
   signum = sign(todo_y);\r
+  if(signum != 0) {\r
+    returnval++;\r
+  }\r
   motor_step(Y,signum);\r
   todo_y -= signum;\r
   \r
+  return returnval; // busy\r
   \r
 }\r
   \r
   \r
+void pos_report(void){ \r
+    uart_puts("x_pos: ");\r
+    uart_print_signed_number(plate_pos_x,6);\r
+//     my_uitoa(plate_pos_x, stringbuffer, 6);\r
+//     uart_puts(stringbuffer);\r
+    uart_puts("  y_pos: ");\r
+    uart_print_signed_number(plate_pos_y,6);\r
+    uart_puts("\r");\r
+}\r
 \r
+#define POSITION 0\r
+#define GOTO 1\r
+#define MOVEREL 2\r
+#define SETZERO 3\r
+\r
+void parse_command(void){\r
+  \r
+  \r
+  static char cmdbuffer[16];\r
+  static char numbuffer[16];\r
+  static uint16_t predot = 0,postdot = 0;\r
+  static uint8_t cmdPos, curCmdLen, num_start = 0, nums_found = 0;\r
+  uint8_t action=0,axis=0;\r
+  int8_t num_sign = 1;\r
+  char byte;\r
+  \r
+  /* Load the next byte from the USART transmit buffer into the USART */\r
+  if (!(RingBuffer_IsEmpty(&USBtoUSART_Buffer))) {\r
+    byte = RingBuffer_Remove(&USBtoUSART_Buffer);\r
+    \r
+    if (byte == '\r' || byte == '\n') {// end of command, evaluate cemmand!\r
+      uart_puts("\r\n");\r
+      cmdbuffer[cmdPos] = '\0'; // terminate new command string\r
+      curCmdLen = cmdPos;\r
+      cmdPos = 0;\r
+      \r
+      \r
+      if (cmdbuffer[0] == 'g' || cmdbuffer[0] == 'G') { // goto command\r
+        action = GOTO;\r
+      } else if ( cmdbuffer[0] == 'm' || cmdbuffer[0] == 'M') {\r
+        action = MOVEREL;\r
+      } else if ( cmdbuffer[0] == 'z' || cmdbuffer[0] == 'Z' ) {\r
+        action = SETZERO;\r
+      } else {\r
+        action = POSITION;\r
+      }\r
+      \r
+      if (cmdbuffer[1] == 'x' || cmdbuffer[1] == 'X') {\r
+        axis = X;\r
+      } else if (cmdbuffer[1] == 'y' || cmdbuffer[1] == 'Y') {\r
+        axis = Y;\r
+      }\r
+      \r
+      // if you expect coordinate, parse number!\r
+      if (action == GOTO || action == MOVEREL){\r
+\r
+        predot = 0;\r
+        postdot = 0;\r
+        num_sign = 1;\r
+        num_start = 0;\r
+        nums_found = 0;\r
+        \r
+        for (uint8_t i=2; i<=curCmdLen; i++) {\r
+           if ( num_start == 0 && cmdbuffer[i] == '-' ) { // if you find a minus before\r
+            // you find a digit, it's a negative number\r
+             num_sign = -1;\r
+           }\r
+           \r
+           if ( cmdbuffer[i] >= 48 && cmdbuffer[i] <= 57 ){ // is it a number?\r
+             if ( num_start == 0) { // this is the first digit in the string\r
+               num_start = i;\r
+             }\r
+           } else { // no digit!\r
+             if ( num_start != 0) { // digits have been found before\r
+                strncpy(numbuffer,cmdbuffer+num_start,i-num_start); // copy number found to\r
+                // numbuffer\r
+                numbuffer[i-num_start] = '\0'; // make sure it's always a terminated string\r
+                nums_found++;\r
+                if(nums_found == 1) { // its the predot digits\r
+                  predot = atoi(numbuffer);\r
+                } else { // its the postdot digits\r
+                  uint8_t postdotlen = i-num_start;\r
+                  if (postdotlen < 3){ // if too small ,fill with zeros\r
+                    for( uint8_t j = postdotlen; j <=2; j++) {\r
+                      numbuffer[j] = '0';\r
+                    }\r
+                  }\r
+                  // crop the number to three post dot digits\r
+                  numbuffer[3] = '\0';\r
+                  \r
+                  postdot = atoi(numbuffer);\r
+                }\r
+                num_start = 0;\r
+             }\r
+           }\r
+        }\r
+        \r
+      }\r
+      \r
+      int16_t steps = 0,dest=0;\r
+      \r
+      switch (action) {\r
+        case GOTO:\r
+          uart_puts("GOTO ");\r
+          uart_putc(88+axis);// x or y\r
+          uart_print_signed_number(predot*num_sign,3);\r
+          uart_putc('.');\r
+          uart_print_number(postdot,3);\r
+          uart_puts("\r\n"); \r
+          \r
+          dest = num_sign *( predot*24 +(postdot*10)/416);\r
+          \r
+          if (axis == X) {\r
+            steps = dest - plate_pos_x;\r
+            move_plate(steps,0);\r
+            plate_pos_x += steps;\r
+          } else if (axis == Y) {\r
+            steps = dest - plate_pos_y;\r
+            move_plate(0,steps);\r
+            plate_pos_y += steps;\r
+          }\r
+          pos_report();\r
+          \r
+          break;\r
+        case MOVEREL:\r
+          uart_puts("MOVE ");\r
+          uart_putc(88+axis);// x or y\r
+          uart_print_signed_number(predot*num_sign,3);\r
+          uart_putc('.');\r
+          uart_print_number(postdot,3);\r
+          uart_puts("\r\n"); \r
+          \r
+          steps = num_sign *( predot*24 +(postdot*10)/416);\r
+          \r
+          if (axis == X) {\r
+            move_plate(steps,0);\r
+            plate_pos_x += steps;\r
+          } else if (axis == Y) {\r
+            move_plate(0,steps);\r
+            plate_pos_y += steps;\r
+          }\r
+          pos_report();\r
+          break;\r
+          \r
+        case SETZERO:\r
+          plate_pos_x = 0;\r
+          plate_pos_y = 0;\r
+          pos_report();\r
+          break;\r
+          \r
+        case POSITION:\r
+          pos_report();\r
+          break;\r
+        \r
+      }\r
+      \r
+      \r
+      \r
+    } else { // queue command\r
+      cmdbuffer[cmdPos++] = byte;\r
+      uart_putc(byte);\r
+    }\r
+  }\r
+}\r
 \r
 int main(void)\r
 {\r
@@ -405,55 +610,18 @@ int main(void)
   sei();\r
 \r
 \r
-// setup rfm70 transceiver\r
-\r
-//  Begin();\r
-// \r
-//  setMode(0);// set mode t\r
-//  setChannel(8);\r
-//  _delay_ms(1000);\r
-//  sendPayload("eins",4, 0);\r
-//  _delay_ms(1000);\r
-\r
 \r
-// end\r
   \r
   uint16_t loopcounter=0;\r
 \r
-  char stringbuffer[16];\r
-\r
-  touchpad_set_abs_mode();// tell the touchpad you want to use it in the "absolute mode"\r
-  while (1) {\r
-    break; // goto next mode\r
-    Usb2SerialTask();\r
-    loopcounter++;\r
-    if(loopcounter< 2000) {\r
-      continue;\r
-    }\r
-    loopcounter=0;\r
 \r
-    touchpad_read(); // read data from the touchpad\r
-    uart_puts("x_pos: ");\r
-    my_uitoa(x_abs(),stringbuffer,4);// x_abs returns current x position of your finger\r
-    uart_puts(stringbuffer);\r
-    uart_puts("   y_pos: ");\r
-    my_uitoa(y_abs(),stringbuffer,4);// y_abs returns current y position of your finger\r
-    uart_puts(stringbuffer);\r
-    uart_puts("   z_pressure: ");// z_pressure returns current "pressure" (contact area) of your finger\r
-    my_uitoa(z_pressure(),stringbuffer,4);\r
-    uart_puts(stringbuffer);\r
-    uart_puts("\r");\r
 \r
-  }\r
-  // end of absolute mode demo block \r
-// \r
-// #elif DEMO_MODE == RELATIVE_MODE\r
-//   begin of relative mode demo block\r
   uart_puts("you selected the relative position demo modus:\n\r");\r
   touchpad_set_rel_mode_100dpi();// use touchpad in relative mode\r
 //  touchpad_set_rel_mode_200dpi(); // uncomment this line if you want double resolution\r
-  uint8_t x, y = 0;\r
+  int16_t x, y = 0;\r
   int8_t dx, dy = 0;\r
+  uint8_t busy = 0, last_busy = 0;\r
 \r
   while (1) {\r
 \r
@@ -463,40 +631,27 @@ int main(void)
 //       continue;\r
 //     }\r
 //     loopcounter=0;\r
-\r
+    parse_command(); // read data from virtual comport\r
     touchpad_read(); // read data from touchpad\r
 \r
     dx = delta_x();// returns the amount your finger has moved in x direction since last readout\r
     dy = delta_y();// returns the amount your finger has moved in y direction since last readout\r
 \r
     // increment/decrement some dummy variables with the\r
-    if (x + dx > 255) {\r
-      x = 255;\r
-    } else if (x + dx < 0) {\r
-      x = 0;\r
-    } else {\r
-      x = (x + dx);\r
-    }\r
 \r
-    if (y + dy > 255) {\r
-      y = 255;\r
-    } else if (y + dy < 0) {\r
-      y = 0;\r
-    } else {\r
-      y = (y + dy);\r
+    plate_pos_x += dx;\r
+    plate_pos_y += dy;\r
+    \r
+    \r
+    last_busy = busy;\r
+    busy = move_plate(dx,dy);\r
+    \r
+    \r
+    if (last_busy && !(busy)){\r
+      pos_report();\r
     }\r
-\r
-    uart_puts("x_pos: ");\r
-    my_uitoa(x, stringbuffer, 4);\r
-    uart_puts(stringbuffer);\r
-    uart_puts("  y_pos: ");\r
-    my_uitoa(y, stringbuffer, 4);\r
-    uart_puts(stringbuffer);\r
-    uart_puts("\r");\r
     \r
     _delay_ms(10);\r
-    move_plate(dx>>0,dy>>0);\r
-\r
 \r
   }\r
   // end of relative mode demo block\r
index 43d162025c00bd39c7501e9d66d52ae2374240ee..cd90034d3486c86092fc00ce1936c52ac02c49cc 100644 (file)
  */\r
 #define F_CPU 16e6\r
 \r
+#include <avr/io.h> \r
+#include <stdlib.h>\r
 #include "USBtoSerial.h"\r
 #include <util/delay.h>\r
 #include "TM1001A.c"\r
 // #include "rfm70.c"\r
 #include "pins.h"\r
 \r
+int16_t plate_pos_x = 0,plate_pos_y = 0;\r
+char stringbuffer[16];\r
+\r
 /** Circular buffer to hold data from the host before it is sent to the device via the serial port. */\r
 static RingBuffer_t USBtoUSART_Buffer;\r
 \r
@@ -130,11 +135,11 @@ void Usb2SerialTask(void) {
     }\r
 \r
     /* Load the next byte from the USART transmit buffer into the USART */\r
-    if (!(RingBuffer_IsEmpty(&USBtoUSART_Buffer))) {\r
-      Serial_SendByte(RingBuffer_Remove(&USBtoUSART_Buffer));\r
+//     if (!(RingBuffer_IsEmpty(&USBtoUSART_Buffer))) {\r
+//       Serial_SendByte(RingBuffer_Remove(&USBtoUSART_Buffer));\r
 //      dummy = RingBuffer_Remove(&USBtoUSART_Buffer);\r
 //      sendPayload(&dummy,1,0);\r
-    }\r
+//     }\r
     CDC_Device_USBTask(&VirtualSerial_CDC_Interface);\r
     USB_USBTask();\r
   \r
@@ -280,6 +285,28 @@ void my_uitoa(uint32_t zahl, char* string, uint8_t no_digits) {
 \r
 }\r
 \r
+int8_t sign(int16_t x) {\r
+  return (x > 0) - (x < 0);\r
+}\r
+\r
+\r
+void uart_print_number(uint32_t zahl, uint8_t no_digits) {\r
+  my_uitoa(abs(zahl),stringbuffer,no_digits);\r
+  uart_puts(stringbuffer);\r
+  \r
+}\r
+void uart_print_signed_number(uint32_t zahl, uint8_t no_digits) {\r
+  my_uitoa(abs(zahl),stringbuffer,no_digits);\r
+  if (sign(zahl) < 0) {\r
+    uart_putc('-');\r
+  } else {\r
+    uart_putc('+');\r
+  }\r
+  uart_puts(stringbuffer);\r
+  \r
+}\r
+\r
+\r
 /** Main program entry point. This routine contains the overall program flow, including initial\r
  *  setup of all components and the main program loop.\r
  */\r
@@ -359,29 +386,205 @@ uint8_t motor_step(uint8_t motor, int8_t direction) { // motor: M1 or M2, direct
 \r
 }\r
 \r
-int8_t sign(int16_t x) {\r
-  return (x > 0) - (x < 0);\r
+\r
+uint32_t times_ten_pow(uint8_t exponent) {\r
+  uint32_t val = 1;\r
+  for (uint8_t i = 1; i <= exponent; i++) {\r
+    val *= 10;\r
+  }\r
+  return val;\r
 }\r
 \r
-void move_plate(int16_t dx, int16_t dy){\r
+\r
+\r
+uint8_t move_plate(int16_t dx, int16_t dy){\r
   static int16_t todo_x,todo_y = 0;\r
   int8_t signum;\r
+  uint8_t returnval = 0;\r
   todo_x += dx;\r
   todo_y += dy;\r
   \r
   signum = sign(todo_x);\r
+  if(signum != 0) {\r
+    returnval++;\r
+  }\r
   motor_step(X,signum);\r
   todo_x -= signum;\r
   \r
   signum = sign(todo_y);\r
+  if(signum != 0) {\r
+    returnval++;\r
+  }\r
   motor_step(Y,signum);\r
   todo_y -= signum;\r
   \r
+  return returnval; // busy\r
   \r
 }\r
   \r
   \r
+void pos_report(void){ \r
+    uart_puts("x_pos: ");\r
+    uart_print_signed_number(plate_pos_x,6);\r
+//     my_uitoa(plate_pos_x, stringbuffer, 6);\r
+//     uart_puts(stringbuffer);\r
+    uart_puts("  y_pos: ");\r
+    uart_print_signed_number(plate_pos_y,6);\r
+    uart_puts("\r");\r
+}\r
 \r
+#define POSITION 0\r
+#define GOTO 1\r
+#define MOVEREL 2\r
+#define SETZERO 3\r
+\r
+void parse_command(void){\r
+  \r
+  \r
+  static char cmdbuffer[16];\r
+  static char numbuffer[16];\r
+  static uint16_t predot = 0,postdot = 0;\r
+  static uint8_t cmdPos, curCmdLen, num_start = 0, nums_found = 0;\r
+  uint8_t action=0,axis=0;\r
+  int8_t num_sign = 1;\r
+  char byte;\r
+  \r
+  /* Load the next byte from the USART transmit buffer into the USART */\r
+  if (!(RingBuffer_IsEmpty(&USBtoUSART_Buffer))) {\r
+    byte = RingBuffer_Remove(&USBtoUSART_Buffer);\r
+    \r
+    if (byte == '\r' || byte == '\n') {// end of command, evaluate cemmand!\r
+      uart_puts("\r\n");\r
+      cmdbuffer[cmdPos] = '\0'; // terminate new command string\r
+      curCmdLen = cmdPos;\r
+      cmdPos = 0;\r
+      \r
+      \r
+      if (cmdbuffer[0] == 'g' || cmdbuffer[0] == 'G') { // goto command\r
+        action = GOTO;\r
+      } else if ( cmdbuffer[0] == 'm' || cmdbuffer[0] == 'M') {\r
+        action = MOVEREL;\r
+      } else if ( cmdbuffer[0] == 'z' || cmdbuffer[0] == 'Z' ) {\r
+        action = SETZERO;\r
+      } else {\r
+        action = POSITION;\r
+      }\r
+      \r
+      if (cmdbuffer[1] == 'x' || cmdbuffer[1] == 'X') {\r
+        axis = X;\r
+      } else if (cmdbuffer[1] == 'y' || cmdbuffer[1] == 'Y') {\r
+        axis = Y;\r
+      }\r
+      \r
+      // if you expect coordinate, parse number!\r
+      if (action == GOTO || action == MOVEREL){\r
+\r
+        predot = 0;\r
+        postdot = 0;\r
+        num_sign = 1;\r
+        num_start = 0;\r
+        nums_found = 0;\r
+        \r
+        for (uint8_t i=2; i<=curCmdLen; i++) {\r
+           if ( num_start == 0 && cmdbuffer[i] == '-' ) { // if you find a minus before\r
+            // you find a digit, it's a negative number\r
+             num_sign = -1;\r
+           }\r
+           \r
+           if ( cmdbuffer[i] >= 48 && cmdbuffer[i] <= 57 ){ // is it a number?\r
+             if ( num_start == 0) { // this is the first digit in the string\r
+               num_start = i;\r
+             }\r
+           } else { // no digit!\r
+             if ( num_start != 0) { // digits have been found before\r
+                strncpy(numbuffer,cmdbuffer+num_start,i-num_start); // copy number found to\r
+                // numbuffer\r
+                numbuffer[i-num_start] = '\0'; // make sure it's always a terminated string\r
+                nums_found++;\r
+                if(nums_found == 1) { // its the predot digits\r
+                  predot = atoi(numbuffer);\r
+                } else { // its the postdot digits\r
+                  uint8_t postdotlen = i-num_start;\r
+                  if (postdotlen < 3){ // if too small ,fill with zeros\r
+                    for( uint8_t j = postdotlen; j <=2; j++) {\r
+                      numbuffer[j] = '0';\r
+                    }\r
+                  }\r
+                  // crop the number to three post dot digits\r
+                  numbuffer[3] = '\0';\r
+                  \r
+                  postdot = atoi(numbuffer);\r
+                }\r
+                num_start = 0;\r
+             }\r
+           }\r
+        }\r
+        \r
+      }\r
+      \r
+      int16_t steps = 0,dest=0;\r
+      \r
+      switch (action) {\r
+        case GOTO:\r
+          uart_puts("GOTO ");\r
+          uart_putc(88+axis);// x or y\r
+          uart_print_signed_number(predot*num_sign,3);\r
+          uart_putc('.');\r
+          uart_print_number(postdot,3);\r
+          uart_puts("\r\n"); \r
+          \r
+          dest = num_sign *( predot*24 +(postdot*10)/416);\r
+          \r
+          if (axis == X) {\r
+            steps = dest - plate_pos_x;\r
+            move_plate(steps,0);\r
+            plate_pos_x += steps;\r
+          } else if (axis == Y) {\r
+            steps = dest - plate_pos_y;\r
+            move_plate(0,steps);\r
+            plate_pos_y += steps;\r
+          }\r
+          \r
+          break;\r
+        case MOVEREL:\r
+          uart_puts("MOVE ");\r
+          uart_putc(88+axis);// x or y\r
+          uart_print_signed_number(predot*num_sign,3);\r
+          uart_putc('.');\r
+          uart_print_number(postdot,3);\r
+          uart_puts("\r\n"); \r
+          \r
+          steps = num_sign *( predot*24 +(postdot*10)/416);\r
+          \r
+          if (axis == X) {\r
+            move_plate(steps,0);\r
+            plate_pos_x += steps;\r
+          } else if (axis == Y) {\r
+            move_plate(0,steps);\r
+            plate_pos_y += steps;\r
+          }\r
+          break;\r
+          \r
+        case SETZERO:\r
+          plate_pos_x = 0;\r
+          plate_pos_y = 0;\r
+          pos_report();\r
+          break;\r
+          \r
+        case POSITION:\r
+          pos_report();\r
+          break;\r
+        \r
+      }\r
+      \r
+      \r
+      \r
+    } else { // queue command\r
+      cmdbuffer[cmdPos++] = byte;\r
+      uart_putc(byte);\r
+    }\r
+  }\r
+}\r
 \r
 int main(void)\r
 {\r
@@ -405,55 +608,18 @@ int main(void)
   sei();\r
 \r
 \r
-// setup rfm70 transceiver\r
-\r
-//  Begin();\r
-// \r
-//  setMode(0);// set mode t\r
-//  setChannel(8);\r
-//  _delay_ms(1000);\r
-//  sendPayload("eins",4, 0);\r
-//  _delay_ms(1000);\r
-\r
 \r
-// end\r
   \r
   uint16_t loopcounter=0;\r
 \r
-  char stringbuffer[16];\r
-\r
-  touchpad_set_abs_mode();// tell the touchpad you want to use it in the "absolute mode"\r
-  while (1) {\r
-    break; // goto next mode\r
-    Usb2SerialTask();\r
-    loopcounter++;\r
-    if(loopcounter< 2000) {\r
-      continue;\r
-    }\r
-    loopcounter=0;\r
 \r
-    touchpad_read(); // read data from the touchpad\r
-    uart_puts("x_pos: ");\r
-    my_uitoa(x_abs(),stringbuffer,4);// x_abs returns current x position of your finger\r
-    uart_puts(stringbuffer);\r
-    uart_puts("   y_pos: ");\r
-    my_uitoa(y_abs(),stringbuffer,4);// y_abs returns current y position of your finger\r
-    uart_puts(stringbuffer);\r
-    uart_puts("   z_pressure: ");// z_pressure returns current "pressure" (contact area) of your finger\r
-    my_uitoa(z_pressure(),stringbuffer,4);\r
-    uart_puts(stringbuffer);\r
-    uart_puts("\r");\r
 \r
-  }\r
-  // end of absolute mode demo block \r
-// \r
-// #elif DEMO_MODE == RELATIVE_MODE\r
-//   begin of relative mode demo block\r
   uart_puts("you selected the relative position demo modus:\n\r");\r
   touchpad_set_rel_mode_100dpi();// use touchpad in relative mode\r
 //  touchpad_set_rel_mode_200dpi(); // uncomment this line if you want double resolution\r
-  uint8_t x, y = 0;\r
+  int16_t x, y = 0;\r
   int8_t dx, dy = 0;\r
+  uint8_t busy = 0, last_busy = 0;\r
 \r
   while (1) {\r
 \r
@@ -463,40 +629,27 @@ int main(void)
 //       continue;\r
 //     }\r
 //     loopcounter=0;\r
-\r
+    parse_command(); // read data from virtual comport\r
     touchpad_read(); // read data from touchpad\r
 \r
     dx = delta_x();// returns the amount your finger has moved in x direction since last readout\r
     dy = delta_y();// returns the amount your finger has moved in y direction since last readout\r
 \r
     // increment/decrement some dummy variables with the\r
-    if (x + dx > 255) {\r
-      x = 255;\r
-    } else if (x + dx < 0) {\r
-      x = 0;\r
-    } else {\r
-      x = (x + dx);\r
-    }\r
 \r
-    if (y + dy > 255) {\r
-      y = 255;\r
-    } else if (y + dy < 0) {\r
-      y = 0;\r
-    } else {\r
-      y = (y + dy);\r
+    plate_pos_x += dx;\r
+    plate_pos_y += dy;\r
+    \r
+    \r
+    last_busy = busy;\r
+    busy = move_plate(dx,dy);\r
+    \r
+    \r
+    if (last_busy && !(busy)){\r
+      pos_report();\r
     }\r
-\r
-    uart_puts("x_pos: ");\r
-    my_uitoa(x, stringbuffer, 4);\r
-    uart_puts(stringbuffer);\r
-    uart_puts("  y_pos: ");\r
-    my_uitoa(y, stringbuffer, 4);\r
-    uart_puts(stringbuffer);\r
-    uart_puts("\r");\r
     \r
     _delay_ms(10);\r
-    move_plate(dx>>0,dy>>0);\r
-\r
 \r
   }\r
   // end of relative mode demo block\r
index 09b7903c6b6248be900443d5505a2311a2e85585..e7a1412859885515cb474c14940e3287651080f8 100755 (executable)
Binary files a/firmware/USBtoSerial.elf and b/firmware/USBtoSerial.elf differ
index b3036b3aa87475f9a89858331d5a95878c635648..8edcda6a6ea04f251a438b8d9703bf52d03fa023 100644 (file)
@@ -1,9 +1,9 @@
 :100000009AC00000B4C00000B2C00000B0C0000040\r
 :10001000AEC00000ACC00000AAC00000A8C0000034\r
-:10002000A6C00000A4C00000A2C000007CC7000061\r
-:100030000C9437089CC000009AC0000098C00000D3\r
+:10002000A6C00000A4C00000A2C000000C943109CA\r
+:100030000C94D5099CC000009AC0000098C0000034\r
 :1000400096C0000094C0000092C0000090C0000064\r
-:100050008EC000004BC100008AC000004EC30000EB\r
+:100050008EC000004BC100008AC0000023C3000016\r
 :1000600086C0000084C0000082C0000080C0000084\r
 :100070007EC000007CC000007AC0000078C0000094\r
 :1000800076C0000074C0000072C0000070C00000A4\r
@@ -18,9 +18,9 @@
 :1001100020005500530042002D00520053003200D1\r
 :100120003300320020004100640061007000740060\r
 :1001300065007200000011241FBECFEFD4E0DEBFC7\r
-:10014000CDBF11E0A0E0B1E0E8EBFAE102C005901C\r
-:100150000D92AA36B107D9F712E0AAE6B1E001C0C4\r
-:100160001D92A43AB107E1F765D40C945A0D48CF1B\r
+:10014000CDBF11E0A0E0B1E0E8E8FEE102C005901B\r
+:100150000D92AA37B107D9F712E0AAE7B1E001C0C2\r
+:100160001D92A03FB107E1F72FD60C94420F48CF64\r
 :10017000FC01A081B1816C93808191810196918372\r
 :100180008083268137818217930721F484819581AA\r
 :10019000918380832FB7F894828593850196938706\r
 :1002C0000895FC012FB7F894718360837383628370\r
 :1002D0007583648360587F4F7783668380E890E0FE\r
 :1002E00091878087138612862FBF08951F920F92E1\r
-:1002F0000FB60F9211248F93809196028F5F809397\r
-:1003000096028F910F900FBE0F901F90189586B593\r
-:100310003091960220E0280F311DC901089516BCC6\r
-:10032000109296020895DF92EF92FF920F931F931F\r
+:1002F0000FB60F9211248F938091E2028F5F80934B\r
+:10030000E2028F910F900FBE0F901F90189586B547\r
+:100310003091E20220E0280F311DC901089516BC7A\r
+:100320001092E2020895DF92EF92FF920F931F93D3\r
 :10033000CF93DF9383E085BDF2DF509A5898E7DFD3\r
-:10034000BC0180E090E00E945B0C20E030E84EE0D1\r
-:1003500053E40E94C30B87FDF2CF82E085BDDD240C\r
+:10034000BC0180E090E00E94FB0D20E030E84EE030\r
+:1003500053E40E94630D87FDF2CF82E085BDDD246A\r
 :10036000D39410E0DCDF509A5898D1DFBC0180E0D4\r
-:1003700090E00E945B0C20E030E04CE852E40E94E8\r
-:10038000C30B87FDF2CF5098589AC1DFBC0180E0C3\r
-:1003900090E00E945B0C20E030E048E453E40E94CF\r
-:1003A000C30B87FDF2CF41C0C8E0D0E000E8E12EEA\r
-:1003B000FF248DE892E0E80EF91EB1DF509A5898BC\r
+:1003700090E00E94FB0D20E030E04CE852E40E9447\r
+:10038000630D87FDF2CF5098589AC1DFBC0180E021\r
+:1003900090E00E94FB0D20E030E048E453E40E942E\r
+:1003A000630D87FDF2CF41C0C8E0D0E000E8E12E48\r
+:1003B000FF2489EC92E0E80EF91EB1DF509A5898BC\r
 :1003C000F7018081802379F0A2DFBC0180E090E01A\r
-:1003D0000E945B0C20E030E04CE852E40E94C30B2A\r
+:1003D0000E94FB0D20E030E04CE852E40E94630DE7\r
 :1003E00087FDF2CF0EC093DFBC0180E090E00E9459\r
-:1003F0005B0C20E030E042E053E40E94C30B87FD39\r
+:1003F000FB0D20E030E042E053E40E94630D87FDF6\r
 :10040000F2CF5098589A83DFBC0180E090E00E94C0\r
-:100410005B0C20E030E048E453E40E94C30B87FD0E\r
+:10041000FB0D20E030E048E453E40E94630D87FDCB\r
 :10042000F2CF0695219749F61F5F1D1508F4BCCF42\r
 :1004300076DF509A58986BDFBC0180E090E00E9414\r
-:100440005B0C20E030E042E053E40E94C30B87FDE8\r
+:10044000FB0D20E030E042E053E40E94630D87FDA5\r
 :10045000F2CF5098589A5BDFBC0180E090E00E9498\r
-:100460005B0C20E030E048E453E40E94C30B87FDBE\r
-:10047000F2CF80918D028B3329F0893341F409E06A\r
+:10046000FB0D20E030E048E453E40E94630D87FD7B\r
+:10047000F2CF8091C9028B3329F0893341F409E02E\r
 :10048000D02E02C0B3E0DB2E113009F46BCF47DF72\r
-:100490003EDFBC0180E090E00E945B0C20E030E099\r
-:1004A0004AEF53E40E940D0D18160CF442C048990F\r
-:1004B000EFCF489BFECFCEE8D2E011E001C0182F6D\r
+:100490003EDFBC0180E090E00E94FB0D20E030E0F8\r
+:1004A0004AEF53E40E94AD0E18160CF442C048996E\r
+:1004B000EFCF489BFECFCAECD2E011E001C0182F6D\r
 :1004C0001882A8E0EA2EF12C00E829DF20DFBC0129\r
-:1004D00080E090E00E945B0C20E030E048E453E4D0\r
-:1004E0000E940D0D181614F4115024C04899EECF37\r
+:1004D00080E090E00E94FB0D20E030E048E453E42F\r
+:1004E0000E94AD0E181614F4115024C04899EECF96\r
 :1004F00016DF489BFECF0BDFBC0180E090E00E943E\r
-:100500005B0C20E030E048EC52E40E94C30B87FF14\r
+:10050000FB0D20E030E048EC52E40E94630D87FFD1\r
 :1005100003C08881800F888306950894E108F1085C\r
 :10052000E114F10491F6812F8F5F2196893039F61D\r
 :1005300001C010E0812FDF91CF911F910F91FF90AB\r
 :10054000EF90DF9008955098589AEEE6F0E08081A1\r
-:100550008160808308958CE380938D02E4DE809334\r
-:1005600097028091970208958BE380938D0283E632\r
-:1005700080938E0284E080938F02D5DE8DE380939A\r
-:100580008D02D1DE89E380938D0210929402CBDE3E\r
-:100590008FEF91EEA4E081509040A040E1F700C0C1\r
-:1005A000000008958BE380938D0283E680938E0292\r
-:1005B00081E080938F02B7DE8FEF91EEA4E081504F\r
-:1005C0009040A040E1F700C000000895809197029C\r
-:1005D000882351F080918E0286FF04C081958F732D\r
-:1005E000819508958F73089580E008958091970212\r
-:1005F000882351F080918F0286FF04C081958F730C\r
-:10060000819508958F73089580E008951F938FB7A3\r
-:10061000F89420917401309175018FBF809172011F\r
-:10062000909173012817390751F085E491E00E94F9\r
-:10063000300BBC0197FD03C08AE691E099DD2FB72E\r
-:10064000F89480910002909101022FBF009701F170\r
-:10065000209146012F702093E9002091E80020FFAF\r
-:1006600017C08031910510F08FE090E0182F0EC078\r
-:10067000E091F801F091F90185E491E060817FD784\r
-:100680001150882329F486EF91E08DDD112381F745\r
-:100690002FB7F89480917401909175012FBF009746\r
-:1006A00049F08AE691E07FDD9091C80095FFFCCF8C\r
-:1006B0008093CE0085E491E0BCD776D61F91089553\r
-:1006C00084B7877F84BF88E10FB6F8948093600079\r
-:1006D000109260000FBE90E080E80FB6F89480930F\r
-:1006E0006100909361000FBE0FC40895089585E4E2\r
-:1006F00091E021C785E491E072C61F920F920FB678\r
-:100700000F9211242F933F934F935F936F937F9397\r
-:100710008F939F93AF93BF93EF93FF936091CE001E\r
-:100720008EB3843019F486EF91E022DDFF91EF91D2\r
-:10073000BF91AF919F918F917F916F915F914F91F9\r
-:100740003F912F910F900FBE0F901F9018958F9291\r
-:100750009F92AF92BF92CF92DF92EF92FF921F9340\r
-:10076000FC01A18DA150A23028F4B0E0AC59BE4FDD\r
-:100770001C9101C010E0808D823009F41860828DD8\r
-:10078000873031F0883031F0863029F4126003C0B0\r
-:10079000146001C016601092C9001092C800109237\r
-:1007A000CA00C488D588E688F788C701B60196953F\r
-:1007B0008795779567950E945B0C20E034E244EFC3\r
-:1007C00059E47DD74B015C01C701B6010E945B0C67\r
-:1007D0009B01AC01C501B401DAD720E030E040E86C\r
-:1007E0005FE36CD70E942F0C7093CD006093CC0018\r
-:1007F0001093CA0082E08093C80088E98093C90002\r
-:100800001F91FF90EF90DF90CF90BF90AF909F909F\r
-:100810008F900895682F8EB3843019F486EF91E09D\r
-:10082000A7CC0895EF92FF92CF93DF93E82EE701D4\r
-:100830007E01F92EE70101C0EDDF89918823E1F700\r
-:10084000DF91CF91FF90EF9008952F923F924F92BA\r
-:100850005F926F927F928F929F92AF92BF92CF9250\r
-:10086000DF92EF92FF920F931F93CF93DF937B0161\r
-:100870008C01822F90E0FA01E80FF91F1082D22E2E\r
-:10088000DA944D2C552447FC5094EA01C40DD51D33\r
-:10089000AA24BB24AAE06A2E712C812C912C1C0165\r
-:1008A000089421083108F0E2CF2E22C0E114F104AF\r
-:1008B0000105110541F4C501840D951D82159305AF\r
-:1008C00014F4C88208C0C801B701A40193010E94B2\r
-:1008D000380D605D6883C801B701A40193010E94CF\r
-:1008E000380D79018A01DA9421970894A108B1089A\r
-:1008F000D7FEDCCFDF91CF911F910F91FF90EF904A\r
-:10090000DF90CF90BF90AF909F908F907F906F902F\r
-:100910005F904F903F902F90089580E05DDC80E0E5\r
-:1009200096DC229A239A249A259A279A269A3F9A05\r
-:100930003E9A08950F931F93162F823050F4A82FDC\r
-:10094000B0E0AA0FBB1FAA59BE4F2D913C91119741\r
-:1009500002C02CEE30E0E82FF0E0812F992787FDD0\r
-:1009600090950496EA57FD4F4081840F911D64E0F5\r
-:1009700070E00E94250D8083E82FF0E0E05AFE4FE2\r
-:100980000081112311F0802F01C080E0F901099549\r
-:10099000802F1F910F91089521E0181619060CF071\r
-:1009A00020E0892F881F8827881F281B822F089501\r
-:1009B0001F932091840230918502280F391F3093B4\r
-:1009C0008502209384028091820290918302860F97\r
-:1009D000971F9093830280938202C901DDDF182F55\r
-:1009E00080E0612FA7DF812F992787FD90952091C7\r
-:1009F000840230918502281B390B309385022093A5\r
-:100A000084028091820290918302C6DF182F81E0D8\r
-:100A1000612F90DF812F992787FD90952091820289\r
-:100A200030918302281B390B30938302209382027A\r
-:100A30001F910895AF92BF92CF92DF92EF92FF92F3\r
-:100A40000F931F93DF93CF93CDB7DEB760970FB6A9\r
-:100A5000F894DEBF0FBECDBF60DF32DE8AE691E0E4\r
-:100A600066E771E02EDC86EF91E062E072E029DC5F\r
-:100A7000789469DD8FEF99E6A8E181509040A0401D\r
-:100A8000E1F700C0000078946FDD80E091E0CADEFD\r
-:100A900089DDDD248E010F5F1F4FB8DD5CDDA6DD33\r
-:100AA000A82E94DDEA2CFF24E7FCF09497012C0D8E\r
-:100AB000311D2F3F310509F024F437FD05C0CA0C64\r
-:100AC00004C0CC24CA9401C0CC24A82EBB24A7FC0B\r
-:100AD000B09495012D0D311D2F3F310509F024F4FF\r
-:100AE00037FD05C0D80E04C0DD24DA9401C0DD2432\r
-:100AF00081E391E097DE6C2D70E080E090E0A8014A\r
-:100B000024E0A3DEC8018EDE89E391E08BDE6D2D4B\r
-:100B100070E080E090E0A80124E097DEC80182DE6A\r
-:100B200083E491E07FDEAFE3BCE91197F1F700C009\r
-:100B30000000C701B5013CDFB0CF923029F09330FF\r
-:100B400041F09130E9F417C02EE330E0EAEAF0E03A\r
-:100B50001BC0813041F0813018F0823089F406C02A\r
-:100B6000E8EEF0E005C0ECEEF0E002C0E6E0F1E017\r
-:100B7000249130E009C022E130E0E8E9F0E004C06F\r
-:100B800020E030E0E0E0F0E0DA011196FC93EE9333\r
-:100B9000C9010895282F392FF9018091A20290915F\r
-:100BA000A3028617970718F4BC0120E034C0611532\r
-:100BB0007105D9F78091E8008E778093E800F5CF32\r
-:100BC0008EB38823E9F18530B9F18091E80083FD87\r
-:100BD00035C08091E80082FD29C08091E80080FF47\r
-:100BE0001AC08091F20090E006C021912093F1009C\r
-:100BF0006150704001966115710519F088309105BA\r
-:100C0000A0F321E08830910509F020E08091E80010\r
-:100C10008E778093E8006115710591F6222381F6A5\r
-:100C200005C08EB3882361F0853061F08091E800C3\r
-:100C300082FFF7CF80E0089583E0089581E0089572\r
-:100C400082E0089583E00895E82FF92F8091A202B1\r
-:100C50009091A3028617970718F4BC0120E036C0D4\r
-:100C600061157105D9F78091E8008E778093E800CF\r
-:100C7000F5CF8EB3882309F43EC08530C1F1809151\r
-:100C8000E80083FD36C08091E80082FD2AC0809193\r
-:100C9000E80080FF1BC08091F20090E007C0249123\r
-:100CA0002093F100319661507040019661157105F5\r
-:100CB00019F08830910598F321E08830910509F00A\r
-:100CC00020E08091E8008E778093E800611571053F\r
-:100CD00081F6222371F605C08EB3882361F085303A\r
-:100CE00061F08091E80082FFF7CF80E0089583E013\r
-:100CF000089581E0089582E0089583E00895982F93\r
-:100D00002CC0292F2F702093E900981739F070918B\r
-:100D1000EC002091ED005091F00003C0242F762FBD\r
-:100D200050E021FF19C03091EB003E7F3093EB0083\r
-:100D30003091ED003D7F3093ED003091EB0031605C\r
-:100D40003093EB007093EC002093ED005093F00093\r
-:100D50002091EE0027FF08C09F5F953090F28F70C2\r
-:100D60008093E90081E0089580E00895EF92FF927A\r
-:100D70000F931F93CF93DF93162FE82EE7017E0189\r
-:100D8000F92EE70100E02AC09881992329F16B81AF\r
-:100D9000E981FA812C81892F8F70853018F5629551\r
-:100DA000660F660F607C991F9927991F692B223067\r
-:100DB00010F096E001C092E028E030E040E003C08F\r
-:100DC0004F5F220F331F2E173F07D0F34295407F0E\r
-:100DD000492B95DF882331F00F5F25960117A0F28C\r
-:100DE00081E001C080E0DF91CF911F910F91FF90D2\r
-:100DF000EF90089580919C0287FF11C003C08EB3CD\r
-:100E00008823B1F08091E80082FFF9CF8091E8005B\r
-:100E10008B778093E80008958EB3882349F0809102\r
-:100E2000E80080FFF9CF8091E8008E778093E8009A\r
-:100E300008958091E4009091E50044E62091EC0053\r
-:100E400020FF25C02091E80020FD15C02EB32223ED\r
-:100E5000A1F02530A1F02091EB0025FD12C02091DA\r
-:100E6000E4003091E5002817390741F3442359F095\r
-:100E70004150C901E3CF80E0089582E0089583E006\r
-:100E8000089581E0089584E0089580E00895209118\r
-:100E9000E80022FFDBCFF9CF40D042D08091D800CC\r
-:100EA0008F778093D8008091D80080688093D80095\r
-:100EB0008091D8008F7D8093D80084E089BD86E042\r
-:100EC00089BD09B400FEFDCF1EBA1092980210929F\r
-:100ED0009A021092990280E060E042E010DF809177\r
-:100EE000E1008E7F8093E1008091E2008160809339\r
-:100EF000E2008091E20088608093E2008091E0004F\r
-:100F00008E7F8093E0000895E3E6F0E080818E7F9D\r
-:100F1000808381E080939B02BFCF1092E20008950E\r
-:100F20001092E10008951F920F920FB60F921124B4\r
-:100F30002F933F934F935F936F937F938F939F93E1\r
-:100F4000AF93BF93EF93FF938091E10082FF0AC0BC\r
-:100F50008091E20082FF06C08091E1008B7F809348\r
-:100F6000E10021D28091E10080FF16C08091E20073\r
-:100F700080FF12C08091E2008E7F8093E20080911A\r
-:100F8000E20080618093E2008091D80080628093CB\r
-:100F9000D80019BC1EBAAADB8091E10084FF2CC0E6\r
-:100FA0008091E20084FF28C084E089BD86E089BD8D\r
-:100FB00009B400FEFDCF8091D8008F7D8093D800CA\r
-:100FC0008091E1008F7E8093E1008091E2008F7E2E\r
-:100FD0008093E2008091E20081608093E200809142\r
-:100FE0009802882321F48091E30087FF02C084E007\r
-:100FF00001C081E08EBB79DB8091E10083FF26C0D8\r
-:101000008091E20083FF22C08091E100877F80937E\r
-:10101000E10082E08EBB109298028091E1008E7F09\r
-:101020008093E1008091E2008E7F8093E2008091C6\r
-:10103000E20080618093E20080E060E042E05FDEF9\r
-:101040008091F00088608093F000ADD1FF91EF9126\r
-:10105000BF91AF919F918F917F916F915F914F91D0\r
-:101060003F912F910F900FBE0F901F9018951F92D8\r
-:101070000F920FB60F9211241F932F933F934F930C\r
-:101080005F936F937F938F939F93AF93BF93EF93F0\r
-:10109000FF931091E9001F708091EC001092E9001D\r
-:1010A0008091F000877F8093F00078941BD010929D\r
-:1010B000E9008091F00088608093F0001093E900CF\r
-:1010C000FF91EF91BF91AF919F918F917F916F9120\r
-:1010D0005F914F913F912F911F910F900FBE0F90F5\r
-:1010E0001F9018951F93DF93CF93CDB7DEB7AC97C2\r
-:1010F0000FB6F894DEBF0FBECDBFECE9F2E08091F1\r
-:10110000F100819322E0E43AF207C9F7F3DA809123\r
-:10111000E80083FF30C180919C0220919D02253020\r
-:1011200009F484C0263040F42130A1F1213070F060\r
-:10113000233009F020C12EC0283009F4EFC0293037\r
-:1011400009F4FEC0263009F016C192C0803821F0A3\r
-:10115000823809F010C108C08091990290919A02DA\r
-:10116000992371F082600CC08091A0028F708093EF\r
-:10117000E9009091EB0081E095FF80E01092E9009A\r
-:101180009091E800977F9093E8008093F10010928F\r
-:10119000F100CFC0882319F0823009F0ECC090E054\r
-:1011A0008F719070009729F08230910509F0E3C0AB\r
-:1011B0000BC080919E02813009F0DDC0233009F020\r
-:1011C00080E080939A022CC080919E02882341F592\r
-:1011D0002091A0022F7009F4CEC02093E9008091E5\r
-:1011E000EB0080FF1DC080919D02833021F480912F\r
-:1011F000EB00806213C08091EB0080618093EB0074\r
-:1012000081E090E002C0880F991F2A95E2F7809351\r
-:10121000EA001092EA008091EB0088608093EB0076\r
-:101220001092E9008091E800877F86C0882309F04A\r
-:10123000A2C010919E021F778091E3008078812BDD\r
-:101240008093E3008091E800877F8093E800D2DDFF\r
-:101250008091E80080FFFCCF8091E300806880935C\r
-:10126000E300112311F083E001C082E08EBB83C054\r
-:101270008058823008F07FC080919E0290919F023A\r
-:1012800023E08C3D920791F583E08C838AE28B8387\r
-:101290005FB7F894DE01159680E090E04EE061E2E1\r
-:1012A000E42FF0E060935700E49180FF03C0E295E3\r
-:1012B000EF704F5FEF702E2F30E0EA3018F0295CAE\r
-:1012C0003F4F02C0205D3F4F2D933D9301968431E7\r
-:1012D000910531F75FBF8091E800877F8093E80038\r
-:1012E000CE0103966AE270E055DC12C06091A00264\r
-:1012F000AE014F5F5F4F21DCBC01009709F43BC09A\r
-:101300008091E800877F8093E80089819A819CDC46\r
-:101310008091E8008B778093E8002DC0803859F5E4\r
-:101320008091E800877F8093E80080919802809305\r
-:10133000F1008091E8008E778093E8005BDD1BC0B0\r
-:101340008823C9F490919E029230A8F48091E8001D\r
-:10135000877F8093E800909398024CDD80919802FB\r
-:10136000882321F48091E30087FF02C084E001C05C\r
-:1013700081E08EBBBCD98091E80083FF0AC08091D8\r
-:10138000E800877F8093E8008091EB008062809383\r
-:10139000EB00AC960FB6F894DEBF0FBECDBFCF9179\r
-:1013A000DF911F91089508951F938EB38823A9F0AC\r
-:1013B0008091E9008F709091EC0090FF02C010E8DE\r
-:1013C00001C010E0182B1092E9008091E80083FF23\r
-:1013D00001C088DE1F701093E9001F910895CF931C\r
-:1013E000DF93EC018091E80083FFA2C0888190E048\r
-:1013F0002091A0023091A1022817390709F098C066\r
-:1014000080919D02813269F0823220F4803209F0AD\r
-:101410008FC03CC0823209F46AC0833209F088C0B0\r
-:1014200079C080919C02813A09F082C08091E800E5\r
-:10143000877F8093E8008091E80080FFFCCF8C8953\r
-:101440009D89AE89BF898093F100292F3A2F4B2FB8\r
-:1014500055272093F1009D01442755272093F10043\r
-:101460008B2F9927AA27BB278093F100888D809323\r
-:10147000F100898D8093F1008A8D8093F100809135\r
-:10148000E8008E778093E800B5DC52C080919C0222\r
-:10149000813209F04DC08091E800877F8093E80099\r
-:1014A00004C08EB3882309F443C08091E80082FF12\r
-:1014B000F8CF3091F1002091F1009091F1008091EE\r
-:1014C000F1003C8B2D8B9E8B8F8B8091F100888F50\r
-:1014D0008091F100898F8091F1008A8F8091E800DE\r
-:1014E0008B778093E80086DCCE0131D921C08091D2\r
-:1014F0009C028132E9F48091E800877F8093E800C4\r
-:1015000079DC80919E0290919F02998B888BCE010D\r
-:10151000D4D00EC080919C02813251F48091E800B9\r
-:10152000877F8093E80066DCCE0160919E02C5D083\r
-:10153000DF91CF910895CF93DF93EC014096FC01AA\r
-:101540008BE0DF011D928A95E9F782E08C83898721\r
-:1015500083E08E87CE01019661E008DC882359F094\r
-:10156000CE01069661E002DC882329F0CE010B96BD\r
-:1015700061E0FCDB01C080E0DF91CF910895DF9353\r
-:10158000CF930F92CDB7DEB7FC018EB38430F9F460\r
-:101590002489358946895789211531054105510529\r
-:1015A000B1F081818F708093E9008091E80085FD22\r
-:1015B0000AC08091E8008E778093E800698339DC67\r
-:1015C0006981882329F46093F10080E001C082E002\r
-:1015D0000F90CF91DF910895FC018EB3843019F5FF\r
-:1015E00024893589468957892115310541055105D9\r
-:1015F000D1F081818F708093E9008091F20088237F\r
-:10160000A1F09091E8008091E8008E778093E80047\r
-:1016100095FD0DC00EDC882359F49091E8009E776B\r
-:101620009093E800089582E0089580E0089580E0B6\r
-:1016300008952EB3243099F4FC0124893589468914\r
-:101640005789211531054105510549F021812F7038\r
-:101650002093E9002091E80020FF01C0BDCF08954C\r
-:10166000FC018EB3843029F5248935894689578950\r
-:101670002115310541055105E1F086818F70809378\r
-:10168000E9008091E80082FF14C08091F200882375\r
-:1016900021F02091F10030E002C02FEF3FEF809168\r
-:1016A000F200882341F48091E8008B778093E80072\r
-:1016B00002C02FEF3FEFC901089508955058BB278E\r
-:1016C000AA270ED070C161D130F066D120F031F47C\r
-:1016D0009F3F11F41EF456C10EF4E095E7FB4CC198\r
-:1016E000E92F72D180F3BA17620773078407950751\r
-:1016F00018F071F49EF58AC10EF4E0950B2EBA2F06\r
-:10170000A02D0B01B90190010C01CA01A001112407\r
-:10171000FF27591B99F0593F50F4503E68F11A16B3\r
-:10172000F040A22F232F342F4427585FF3CF469544\r
-:1017300037952795A795F0405395C9F77EF41F1666\r
-:10174000BA0B620B730B840BBAF09150A1F0FF0F30\r
-:10175000BB1F661F771F881FC2F70EC0BA0F621F1C\r
-:10176000731F841F48F4879577956795B795F7950C\r
-:101770009E3F08F0B3CF9395880F08F09927EE0F9E\r
-:10178000979587950895D4D008F481E008950CD0FA\r
-:101790000AC102D140F0F9D030F021F45F3F19F0D6\r
-:1017A000EBC0511134C1EEC00FD198F39923C9F3A6\r
-:1017B0005523B1F3951B550BBB27AA276217730757\r
-:1017C000840738F09F5F5F4F220F331F441FAA1F0B\r
-:1017D000A9F333D00E2E3AF0E0E830D091505040CB\r
-:1017E000E695001CCAF729D0FE2F27D0660F771F79\r
-:1017F000881FBB1F261737074807AB07B0E809F05B\r
-:10180000BB0B802DBF01FF2793585F4F2AF09E3FEF\r
-:10181000510568F0B1C0FBC05F3FECF3983EDCF3CC\r
-:10182000869577956795B795F7959F5FC9F7880F68\r
-:10183000911D9695879597F90895E1E0660F771FBA\r
-:10184000881FBB1F621773078407BA0720F0621B4B\r
-:10185000730B840BBA0BEE1F88F7E0950895BCD08C\r
-:1018600088F09F5790F0B92F9927B751A0F0D1F089\r
-:10187000660F771F881F991F1AF0BA95C9F712C013\r
-:10188000B13081F0C3D0B1E00895C0C0672F782F88\r
-:101890008827B85F39F0B93FCCF38695779567957F\r
-:1018A000B395D9F73EF490958095709561957F4FEB\r
-:1018B0008F4F9F4F0895E89409C097FB3EF4909591\r
-:1018C0008095709561957F4F8F4F9F4F9923A9F019\r
-:1018D000F92F96E9BB279395F695879577956795A8\r
-:1018E000B795F111F8CFFAF4BB0F11F460FF1BC0EC\r
-:1018F0006F5F7F4F8F4F9F4F16C0882311F096E97F\r
-:1019000011C0772321F09EE8872F762F05C066232C\r
-:1019100071F096E8862F70E060E02AF09A95660FE5\r
-:10192000771F881FDAF7880F9695879597F908959E\r
-:10193000990F0008550FAA0BE0E8FEEF16161706E0\r
-:10194000E807F907C0F012161306E407F50798F048\r
-:10195000621B730B840B950B39F40A2661F0232B61\r
-:10196000242B252B21F408950A2609F4A140A695DD\r
-:101970008FEF811D811D089597F99F6780E870E0C2\r
-:1019800060E008959FEF80EC089500240A941616F5\r
-:10199000170618060906089500240A94121613065D\r
-:1019A000140605060895092E0394000C11F48823EB\r
-:1019B00052F0BB0F40F4BF2B11F460FF04C06F5F07\r
-:1019C0007F4F8F4F9F4F089557FD9058440F551FDD\r
-:1019D00059F05F3F71F04795880F97FB991F61F0B1\r
-:1019E0009F3F79F087950895121613061406551F28\r
-:1019F000F2CF4695F1DF08C0161617061806991F94\r
-:101A0000F1CF86957105610508940895E894BB2788\r
-:101A100066277727CB0197F908958ADF08F48FEFBF\r
-:101A20000895AA1BBB1B51E107C0AA1FBB1FA61725\r
-:101A3000B70710F0A61BB70B881F991F5A95A9F777\r
-:101A400080959095BC01CD01089597FB092E07263E\r
-:101A50000AD077FD04D0E5DF06D000201AF4709597\r
-:101A600061957F4F0895F6F7909581959F4F089562\r
-:101A7000A1E21A2EAA1BBB1BFD010DC0AA1FBB1F92\r
-:101A8000EE1FFF1FA217B307E407F50720F0A21B04\r
-:101A9000B30BE40BF50B661F771F881F991F1A9471\r
-:101AA00069F760957095809590959B01AC01BD019B\r
-:081AB000CF010895F894FFCF67\r
-:101AB800796F752073656C656374656420746865F7\r
-:101AC8002072656C617469766520706F73697469DA\r
-:101AD8006F6E2064656D6F206D6F6475733A0A0DC3\r
-:101AE80000785F706F733A20002020795F706F7301\r
-:101AF8003A20000D000083100000010410000001CE\r
-:101B08008208000001000000000000000000000042\r
-:0A1B18000A0905063020EC00270141\r
+:100550008160808308958CE38093C902E4DE8093F8\r
+:10056000E3028091E30208958BE38093C90283E65E\r
+:100570008093CA0281E08093CB02D5DE8FEF91EEAB\r
+:10058000A4E081509040A040E1F700C00000089531\r
+:100590008091E302882351F08091CA0286FF04C053\r
+:1005A00081958F73819508958F73089580E00895E4\r
+:1005B0008091E302882351F08091CB0286FF04C032\r
+:1005C00081958F73819508958F73089580E00895C4\r
+:1005D0001F938FB7F89420918801309189018FBFC4\r
+:1005E00080918601909187012817390751F084E5A1\r
+:1005F00091E00E94D00CBC0197FD03C08EE791E012\r
+:10060000B7DD2FB7F89480911402909115022FBF97\r
+:10061000009709F1209155012F702093E900209156\r
+:10062000E80020FF18C08031910510F08FE090E0C5\r
+:10063000182F0FC0E0910C02F0910D0284E591E0BB\r
+:1006400060810E945F0C1150882329F48AE092E0B7\r
+:10065000AADD112379F784E591E00E94B90C0E948C\r
+:10066000730B1F91089584B7877F84BF88E10FB60D\r
+:10067000F89480936000109260000FBE90E080E8D4\r
+:100680000FB6F89480936100909361000FBEDAC5B5\r
+:100690000895089584E591E00C943B0C84E591E085\r
+:1006A0000C948E0B1F920F920FB60F9211242F9362\r
+:1006B0003F934F935F936F937F938F939F93AF93EA\r
+:1006C000BF93EF93FF936091CE008EB3843019F403\r
+:1006D0008AE092E04DDDFF91EF91BF91AF919F9144\r
+:1006E0008F917F916F915F914F913F912F910F90DB\r
+:1006F0000FBE0F901F9018958F929F92AF92BF924E\r
+:10070000CF92DF92EF92FF921F93FC01A18DA15037\r
+:10071000A23028F4B0E0AD58BE4F1C9101C010E0EB\r
+:10072000808D823009F41860828D873031F08830F6\r
+:1007300031F0863029F4126003C0146001C01660E5\r
+:100740001092C9001092C8001092CA00C488D588BF\r
+:10075000E688F788C701B6019695879577956795DE\r
+:100760000E94FB0D20E034E244EF59E40E94FF0CAC\r
+:100770004B015C01C701B6010E94FB0D9B01AC015E\r
+:10078000C501B4010E94670D20E030E040E85FE35E\r
+:100790000E94FE0C0E94CF0D7093CD006093CC00A0\r
+:1007A0001093CA0082E08093C80088E98093C90052\r
+:1007B0001F91FF90EF90DF90CF90BF90AF909F90F0\r
+:1007C0008F900895682F8EB3843019F48AE092E0F8\r
+:1007D000CFCC0895EF92FF92CF93DF93E82EE701FD\r
+:1007E0007E01F92EE70101C0EDDF89918823E1F751\r
+:1007F000DF91CF91FF90EF9008952F923F924F920B\r
+:100800005F926F927F928F929F92AF92BF92CF92A0\r
+:10081000DF92EF92FF920F931F93CF93DF937B01B1\r
+:100820008C01822F90E0FA01E80FF91F1082D22E7E\r
+:10083000DA944D2C552447FC5094EA01C40DD51D83\r
+:10084000AA24BB24AAE06A2E712C812C912C1C01B5\r
+:10085000089421083108F0E2CF2E22C0E114F104FF\r
+:100860000105110541F4C501840D951D82159305FF\r
+:1008700014F4C88208C0C801B701A40193010E9402\r
+:10088000EA0E605D6883C801B701A40193010E946C\r
+:10089000EA0E79018A01DA9421970894A108B10837\r
+:1008A000D7FEDCCFDF91CF911F910F91FF90EF909A\r
+:1008B000DF90CF90BF90AF909F908F907F906F9080\r
+:1008C0005F904F903F902F90089521E018161906E1\r
+:1008D0000CF020E0892F881F8827881F281B822F73\r
+:1008E0000895242F77FF03C0709561957F4F882767\r
+:1008F00077FD8095982F42ED52E07FDF82ED92E008\r
+:1009000069CF0F931F93242F8B0177FF03C070953E\r
+:1009100061957F4F882777FD8095982F42ED52E0B3\r
+:100920006CDFC801D2DF87FF02C08DE201C08BE21D\r
+:1009300049DF82ED92E04EDF1F910F91089580E034\r
+:100940004BDC80E084DC229A239A249A259A279A09\r
+:10095000269A3F9A3E9A08950F931F93162F82303E\r
+:1009600050F4A82FB0E0AA0FBB1FAB58BE4F2D917B\r
+:100970003C91119702C02CEE30E0E82FF0E0812F7F\r
+:10098000992787FD90950496EE53FD4F4081840F83\r
+:10099000911D64E070E00E94D70E8083E82FF0E0A4\r
+:1009A000E159FE4F0081112311F0802F01C080E03A\r
+:1009B000F9010995802F1F910F9108950F931F93AF\r
+:1009C0002091C0023091C102280F391F3093C1021B\r
+:1009D0002093C0028091BE029091BF02860F971FA4\r
+:1009E0009093BF028093BE02C9016FDF082F11E010\r
+:1009F000882309F410E080E0602FAEDF602F7727B6\r
+:100A000067FD70952091C0023091C102261B370B03\r
+:100A10003093C1022093C0028091BE029091BF0228\r
+:100A200054DF082F81111F5F81E0602F95DF602F59\r
+:100A3000772767FD70952091BE023091BF02261B7B\r
+:100A4000370B3093BF022093BE02812F1F910F916D\r
+:100A5000089580E091E0BEDE60917A0170917B01A3\r
+:100A6000882777FD8095982F46E04BDF88E091E05E\r
+:100A7000B1DE60917C0170917D01882777FD8095C2\r
+:100A8000982F46E03EDF82E191E0A4CECF92DF9244\r
+:100A9000EF92FF920F931F93CF93DF932FB7F894AA\r
+:100AA00080918801909189012FBF009709F483C13B\r
+:100AB0008EE791E078DB8D3019F08A3009F070C153\r
+:100AC00084E191E087DE80919902E82FF0E0E25521\r
+:100AD000FD4F108280939802109299028091AE028D\r
+:100AE000873659F0873449F08D3649F08D3439F026\r
+:100AF0008A3739F08A3539F404C001E005C002E0D4\r
+:100B000003C003E001C000E08091AF02883739F0F4\r
+:100B1000883529F0893729F011E0893519F010E07E\r
+:100B200001C011E0802F8150823008F06DC010921A\r
+:100B30009D0210929C0210929B0210929A021092B7\r
+:100B400097021092960292E0F92EDD24D39480E36E\r
+:100B5000C82E54C0E0909702EE2049F4EF2DF0E04B\r
+:100B6000E255FD4F80818D3211F4DD24DA94CF2DD2\r
+:100B7000D0E0FE01E255FD4F808180538A3028F499\r
+:100B8000EE20D9F5F092970238C0EE20B1F16E2D2B\r
+:100B900070E0C61BD70B62557D4F8EE992E0AE0127\r
+:100BA0000E94290FC256DD4F1882809196028F5FF6\r
+:100BB00080939602813049F48EE992E00E940C0FF6\r
+:100BC00090939D0280939C0216C08F2D8E198330C6\r
+:100BD00040F4E82FF0E0E256FD4FC0828F5F833093\r
+:100BE000C1F71092A1028EE992E00E940C0F90933F\r
+:100BF0009B0280939A0210929702F394809198023C\r
+:100C00008F1508F0A7CF02C0DD24D394023009F479\r
+:100C10005FC0033009F4BAC0013009F0BFC087E1FA\r
+:100C200091E0D8DD812F885ACDDDCD2DDD27C7FDA0\r
+:100C3000D09560919C0270919D02CE010E94B10EF0\r
+:100C4000BC0180E090E043E05CDE8EE2BBDD6091C1\r
+:100C50009A0270919B0280E090E043E042DE84E1E2\r
+:100C600091E0B8DD80919A0290919B026AE070E079\r
+:100C70000E94B10E60EA71E00E94C30E9B01809158\r
+:100C80009C0290919D0268E170E00E94B10E280FD5\r
+:100C9000391FCE01B9010E94B10E112369F42091D0\r
+:100CA0007A0130917B01E82EE7017E01F92EE70100\r
+:100CB000C21BD30BCE014DC020917C0130917D0130\r
+:100CC000E82EE7017E01F92EE701C21BD30B4FC0CE\r
+:100CD0008DE191E07FDD812F885A74DDCD2DDD27F8\r
+:100CE000C7FDD09560919C0270919D02CE010E943B\r
+:100CF000B10EBC0180E090E043E003DE8EE262DDF5\r
+:100D000060919A0270919B0280E090E043E0E9DDFF\r
+:100D100084E191E05FDD80919A0290919B026AE00C\r
+:100D200070E00E94B10E60EA71E00E94C30E9B0168\r
+:100D300080919C0290919D0268E170E00E94B10E4A\r
+:100D4000280F391FCE01B9010E94B10EEC01112309\r
+:100D500071F460E070E032DE80917A0190917B0165\r
+:100D60008C0F9D1F90937B0180937A0117C080E0C8\r
+:100D700090E0BE0123DE80917C0190917D018C0F7B\r
+:100D80009D1F90937D0180937C0108C010927B0190\r
+:100D900010927A0110927D0110927C015ADE0BC0F4\r
+:100DA00090919902E92FF0E0E255FD4F80839F5F1B\r
+:100DB0009093990207DDDF91CF911F910F91FF90E2\r
+:100DC000EF90DF90CF9008950F931F93DF93CF9311\r
+:100DD0000F92CDB7DEB7B3DD46DC8EE791E06AE86F\r
+:100DE00071E06FDA8AE092E066E172E06ADA7894A4\r
+:100DF000AADB8FEF99E6A8E181509040A040E1F78F\r
+:100E000000C00000789483E291E0E4DCADDB10E008\r
+:100E1000DFDB3CDEA0DBCCDB082FBADB402F552725\r
+:100E200047FD509520917A0130917B01240F351FA9\r
+:100E300030937B0120937A01682F772767FD7095A7\r
+:100E400080917C0190917D01860F971F90937D0189\r
+:100E500080937C01CA01B2DD112329F0882319F4A3\r
+:100E60008983F7DD8981AFE3BCE91197F1F700C011\r
+:100E70000000182FCDCF923029F0933041F09130FF\r
+:100E8000E9F417C02EE330E0EAEAF0E01BC081305D\r
+:100E900041F0813018F0823089F406C0E8EEF0E0CD\r
+:100EA00005C0ECEEF0E002C0E6E0F1E0249130E0B5\r
+:100EB00009C022E130E0E8E9F0E004C020E030E0E1\r
+:100EC000E0E0F0E0DA011196FC93EE93C901089599\r
+:100ED000282F392FF9018091EE029091EF028617A9\r
+:100EE000970718F4BC0120E034C061157105D9F7EB\r
+:100EF0008091E8008E778093E800F5CF8EB3882349\r
+:100F0000E9F18530B9F18091E80083FD35C0809129\r
+:100F1000E80082FD29C08091E80080FF1AC080911E\r
+:100F2000F20090E006C021912093F10061507040E2\r
+:100F300001966115710519F088309105A0F321E043\r
+:100F40008830910509F020E08091E8008E77809349\r
+:100F5000E8006115710591F6222381F605C08EB374\r
+:100F6000882361F0853061F08091E80082FFF7CF3F\r
+:100F700080E0089583E0089581E0089582E0089577\r
+:100F800083E00895E82FF92F8091EE029091EF020F\r
+:100F90008617970718F4BC0120E036C0611571056B\r
+:100FA000D9F78091E8008E778093E800F5CF8EB373\r
+:100FB000882309F43EC08530C1F18091E80083FDAB\r
+:100FC00036C08091E80082FD2AC08091E80080FF51\r
+:100FD0001BC08091F20090E007C024912093F100A3\r
+:100FE00031966150704001966115710519F0883095\r
+:100FF000910598F321E08830910509F020E0809177\r
+:10100000E8008E778093E8006115710581F6222350\r
+:1010100071F605C08EB3882361F0853061F0809150\r
+:10102000E80082FFF7CF80E0089583E0089581E033\r
+:10103000089582E0089583E00895982F2CC0292F09\r
+:101040002F702093E900981739F07091EC002091EF\r
+:10105000ED005091F00003C0242F762F50E021FFC7\r
+:1010600019C03091EB003E7F3093EB003091ED00E2\r
+:101070003D7F3093ED003091EB0031603093EB0019\r
+:101080007093EC002093ED005093F0002091EE005F\r
+:1010900027FF08C09F5F953090F28F708093E90022\r
+:1010A00081E0089580E00895EF92FF920F931F93DF\r
+:1010B000CF93DF93162FE82EE7017E01F92EE7018B\r
+:1010C00000E02AC09881992329F16B81E981FA8196\r
+:1010D0002C81892F8F70853018F56295660F660F09\r
+:1010E000607C991F9927991F692B223010F096E098\r
+:1010F00001C092E028E030E040E003C04F5F220FE3\r
+:10110000331F2E173F07D0F34295407F492B95DFC1\r
+:10111000882331F00F5F25960117A0F281E001C00E\r
+:1011200080E0DF91CF911F910F91FF90EF90089594\r
+:101130008091E80287FF11C003C08EB38823B1F00D\r
+:101140008091E80082FFF9CF8091E8008B7780934F\r
+:10115000E80008958EB3882349F08091E80080FF6D\r
+:10116000F9CF8091E8008E778093E8000895809110\r
+:10117000E4009091E50044E62091EC0020FF25C0BA\r
+:101180002091E80020FD15C02EB32223A1F02530C8\r
+:10119000A1F02091EB0025FD12C02091E4003091D8\r
+:1011A000E5002817390741F3442359F04150C9019C\r
+:1011B000E3CF80E0089582E0089583E0089581E020\r
+:1011C000089584E0089580E008952091E80022FFCA\r
+:1011D000DBCFF9CF40D042D08091D8008F77809379\r
+:1011E000D8008091D80080688093D8008091D80082\r
+:1011F0008F7D8093D80084E089BD86E089BD09B4E5\r
+:1012000000FEFDCF1EBA1092E4021092E602109288\r
+:10121000E50280E060E042E010DF8091E1008E7F37\r
+:101220008093E1008091E20081608093E2008091F0\r
+:10123000E20088608093E2008091E0008E7F8093DE\r
+:10124000E0000895E3E6F0E080818E7F808381E016\r
+:101250008093E702BFCF1092E20008951092E10060\r
+:1012600008951F920F920FB60F9211242F933F9360\r
+:101270004F935F936F937F938F939F93AF93BF939E\r
+:10128000EF93FF938091E10082FF0AC08091E2001A\r
+:1012900082FF06C08091E1008B7F8093E10022D223\r
+:1012A0008091E10080FF16C08091E20080FF12C0B3\r
+:1012B0008091E2008E7F8093E2008091E200806165\r
+:1012C0008093E2008091D80080628093D80019BC9E\r
+:1012D0001EBADFD98091E10084FF2CC08091E2002A\r
+:1012E00084FF28C084E089BD86E089BD09B400FE82\r
+:1012F000FDCF8091D8008F7D8093D8008091E10050\r
+:101300008F7E8093E1008091E2008F7E8093E200E7\r
+:101310008091E20081608093E2008091E402882362\r
+:1013200021F48091E30087FF02C084E001C081E0E6\r
+:101330008EBBAED98091E10083FF26C08091E20090\r
+:1013400083FF22C08091E100877F8093E10082E0EB\r
+:101350008EBB1092E4028091E1008E7F8093E100C9\r
+:101360008091E2008E7F8093E2008091E2008061B4\r
+:101370008093E20080E060E042E05FDE8091F00078\r
+:1013800088608093F000AED1FF91EF91BF91AF9153\r
+:101390009F918F917F916F915F914F913F912F918D\r
+:1013A0000F900FBE0F901F9018951F920F920FB6BF\r
+:1013B0000F9211241F932F933F934F935F936F933B\r
+:1013C0007F938F939F93AF93BF93EF93FF9310916E\r
+:1013D000E9001F708091EC001092E9008091F0000C\r
+:1013E000877F8093F00078941BD01092E900809161\r
+:1013F000F00088608093F0001093E900FF91EF9176\r
+:10140000BF91AF919F918F917F916F915F914F911C\r
+:101410003F912F911F910F900FBE0F901F90189525\r
+:101420001F93DF93CF93CDB7DEB7AC970FB6F89489\r
+:10143000DEBF0FBECDBFE8EEF2E08091F1008193F8\r
+:1014400022E0E03FF207C9F729D98091E80083FF45\r
+:1014500031C18091E8022091E902253009F484C06D\r
+:10146000263040F42130A1F1213070F0233009F012\r
+:1014700021C12EC0283009F4EFC0293009F4FEC084\r
+:10148000263009F017C192C0803821F0823809F067\r
+:1014900011C108C08091E5029091E602992371F094\r
+:1014A00082600CC08091EC028F708093E900909173\r
+:1014B000EB0081E095FF80E01092E9009091E80058\r
+:1014C000977F9093E8008093F1001092F100CFC0D5\r
+:1014D000882319F0823009F0EDC090E08F71907090\r
+:1014E000009729F08230910509F0E4C00BC080918B\r
+:1014F000EA02813009F0DEC0233009F080E08093F9\r
+:10150000E6022CC08091EA02882341F52091EC028A\r
+:101510002F7009F4CFC02093E9008091EB0080FF89\r
+:101520001DC08091E902833021F48091EB0080623C\r
+:1015300013C08091EB0080618093EB0081E090E02C\r
+:1015400002C0880F991F2A95E2F78093EA00109253\r
+:10155000EA008091EB0088608093EB001092E90034\r
+:101560008091E800877F86C0882309F0A3C010918E\r
+:10157000EA021F778091E3008078812B8093E3005B\r
+:101580008091E800877F8093E800D2DD8091E800B9\r
+:1015900080FFFCCF8091E30080688093E3001123FB\r
+:1015A00011F083E001C082E08EBB84C0805882309D\r
+:1015B00008F080C08091EA029091EB0223E08C3D1C\r
+:1015C000920791F583E08C838AE28B835FB7F8946E\r
+:1015D000DE01159680E090E04EE061E2E42FF0E05D\r
+:1015E00060935700E49180FF03C0E295EF704F5F76\r
+:1015F000EF702E2F30E0EA3018F0295C3F4F02C028\r
+:10160000205D3F4F2D933D9301968431910531F735\r
+:101610005FBF8091E800877F8093E800CE0103964A\r
+:101620006AE270E055DC12C06091EC02AE014F5FDF\r
+:101630005F4F21DCBC01009709F43CC08091E800B9\r
+:10164000877F8093E80089819A819CDC8091E80003\r
+:101650008B778093E8002EC0803861F58091E80098\r
+:10166000877F8093E8008091E4028093F10080916D\r
+:10167000E8008E778093E8005BDD1CC08823D1F4FE\r
+:101680009091EA029230B0F48091E800877F8093D5\r
+:10169000E8009093E4024CDD8091E402882321F479\r
+:1016A0008091E30087FF02C084E001C081E08EBB2F\r
+:1016B0000E944A038091E80083FF0AC08091E800FD\r
+:1016C000877F8093E8008091EB0080628093EB003D\r
+:1016D000AC960FB6F894DEBF0FBECDBFCF91DF91B1\r
+:1016E0001F91089508951F938EB38823A9F08091C8\r
+:1016F000E9008F709091EC0090FF02C010E801C0EB\r
+:1017000010E0182B1092E9008091E80083FF01C0DF\r
+:1017100087DE1F701093E9001F910895CF93DF9328\r
+:10172000EC018091E80083FFA3C0888190E02091C4\r
+:10173000EC023091ED022817390709F099C0809129\r
+:10174000E902813269F0823220F4803209F090C0DF\r
+:101750003CC0823209F46BC0833209F089C07AC080\r
+:101760008091E802813A09F083C08091E800877F88\r
+:101770008093E8008091E80080FFFCCF8C899D89F0\r
+:10178000AE89BF898093F100292F3A2F4B2F55271F\r
+:101790002093F1009D01442755272093F1008B2FC2\r
+:1017A0009927AA27BB278093F100888D8093F100A9\r
+:1017B000898D8093F1008A8D8093F1008091E800FB\r
+:1017C0008E778093E800B4DC53C08091E8028132C8\r
+:1017D00009F04EC08091E800877F8093E80004C044\r
+:1017E0008EB3882309F444C08091E80082FFF8CFCB\r
+:1017F0003091F1002091F1009091F1008091F10081\r
+:101800003C8B2D8B9E8B8F8B8091F100888F8091EC\r
+:10181000F100898F8091F1008A8F8091E8008B77A9\r
+:101820008093E80085DCCE010E947C0321C080917A\r
+:10183000E8028132E9F48091E800877F8093E80034\r
+:1018400077DC8091EA029091EB02998B888BCE0134\r
+:10185000D4D00EC08091E802813251F48091E8002A\r
+:10186000877F8093E80064DCCE016091EA02C5D0F6\r
+:10187000DF91CF910895CF93DF93EC014096FC0167\r
+:101880008BE0DF011D928A95E9F782E08C838987DE\r
+:1018900083E08E87CE01019661E006DC882359F053\r
+:1018A000CE01069661E000DC882329F0CE010B967C\r
+:1018B00061E0FADB01C080E0DF91CF910895DF9312\r
+:1018C000CF930F92CDB7DEB7FC018EB38430F9F41D\r
+:1018D00024893589468957892115310541055105E6\r
+:1018E000B1F081818F708093E9008091E80085FDDF\r
+:1018F0000AC08091E8008E778093E800698337DC26\r
+:101900006981882329F46093F10080E001C082E0BE\r
+:101910000F90CF91DF910895FC018EB3843019F5BB\r
+:101920002489358946895789211531054105510595\r
+:10193000D1F081818F708093E9008091F20088233B\r
+:10194000A1F09091E8008091E8008E778093E80004\r
+:1019500095FD0DC00CDC882359F49091E8009E772A\r
+:101960009093E800089582E0089580E0089580E073\r
+:1019700008952EB3243099F4FC01248935894689D1\r
+:101980005789211531054105510549F021812F70F5\r
+:101990002093E9002091E80020FF01C0BDCF089509\r
+:1019A000FC018EB3843029F524893589468957890D\r
+:1019B0002115310541055105E1F086818F70809335\r
+:1019C000E9008091E80082FF14C08091F200882332\r
+:1019D00021F02091F10030E002C02FEF3FEF809125\r
+:1019E000F200882341F48091E8008B778093E8002F\r
+:1019F00002C02FEF3FEFC901089508955058BB274B\r
+:101A0000AA270ED070C161D130F066D120F031F438\r
+:101A10009F3F11F41EF456C10EF4E095E7FB4CC154\r
+:101A2000E92F72D180F3BA1762077307840795070D\r
+:101A300018F071F49EF58AC10EF4E0950B2EBA2FC2\r
+:101A4000A02D0B01B90190010C01CA01A0011124C4\r
+:101A5000FF27591B99F0593F50F4503E68F11A1670\r
+:101A6000F040A22F232F342F4427585FF3CF469501\r
+:101A700037952795A795F0405395C9F77EF41F1623\r
+:101A8000BA0B620B730B840BBAF09150A1F0FF0FED\r
+:101A9000BB1F661F771F881FC2F70EC0BA0F621FD9\r
+:101AA000731F841F48F4879577956795B795F795C9\r
+:101AB0009E3F08F0B3CF9395880F08F09927EE0F5B\r
+:101AC000979587950895D4D008F481E008950CD0B7\r
+:101AD0000AC102D140F0F9D030F021F45F3F19F093\r
+:101AE000EBC0511134C1EEC00FD198F39923C9F363\r
+:101AF0005523B1F3951B550BBB27AA276217730714\r
+:101B0000840738F09F5F5F4F220F331F441FAA1FC7\r
+:101B1000A9F333D00E2E3AF0E0E830D09150504087\r
+:101B2000E695001CCAF729D0FE2F27D0660F771F35\r
+:101B3000881FBB1F261737074807AB07B0E809F017\r
+:101B4000BB0B802DBF01FF2793585F4F2AF09E3FAC\r
+:101B5000510568F0B1C0FBC05F3FECF3983EDCF389\r
+:101B6000869577956795B795F7959F5FC9F7880F25\r
+:101B7000911D9695879597F90895E1E0660F771F77\r
+:101B8000881FBB1F621773078407BA0720F0621B08\r
+:101B9000730B840BBA0BEE1F88F7E0950895BCD049\r
+:101BA00088F09F5790F0B92F9927B751A0F0D1F046\r
+:101BB000660F771F881F991F1AF0BA95C9F712C0D0\r
+:101BC000B13081F0C3D0B1E00895C0C0672F782F45\r
+:101BD0008827B85F39F0B93FCCF38695779567953C\r
+:101BE000B395D9F73EF490958095709561957F4FA8\r
+:101BF0008F4F9F4F0895E89409C097FB3EF490954E\r
+:101C00008095709561957F4F8F4F9F4F9923A9F0D5\r
+:101C1000F92F96E9BB279395F69587957795679564\r
+:101C2000B795F111F8CFFAF4BB0F11F460FF1BC0A8\r
+:101C30006F5F7F4F8F4F9F4F16C0882311F096E93B\r
+:101C400011C0772321F09EE8872F762F05C06623E9\r
+:101C500071F096E8862F70E060E02AF09A95660FA2\r
+:101C6000771F881FDAF7880F9695879597F908955B\r
+:101C7000990F0008550FAA0BE0E8FEEF161617069D\r
+:101C8000E807F907C0F012161306E407F50798F005\r
+:101C9000621B730B840B950B39F40A2661F0232B1E\r
+:101CA000242B252B21F408950A2609F4A140A6959A\r
+:101CB0008FEF811D811D089597F99F6780E870E07F\r
+:101CC00060E008959FEF80EC089500240A941616B2\r
+:101CD000170618060906089500240A94121613061A\r
+:101CE000140605060895092E0394000C11F48823A8\r
+:101CF00052F0BB0F40F4BF2B11F460FF04C06F5FC4\r
+:101D00007F4F8F4F9F4F089557FD9058440F551F99\r
+:101D100059F05F3F71F04795880F97FB991F61F06D\r
+:101D20009F3F79F087950895121613061406551FE4\r
+:101D3000F2CF4695F1DF08C0161617061806991F50\r
+:101D4000F1CF86957105610508940895E894BB2745\r
+:101D500066277727CB0197F908958ADF08F48FEF7C\r
+:101D600008955527002480FF02C0060E571F660FF6\r
+:101D7000771F6115710521F096958795009799F762\r
+:101D8000952F802D0895AA1BBB1B51E107C0AA1FE8\r
+:101D9000BB1FA617B70710F0A61BB70B881F991F0C\r
+:101DA0005A95A9F780959095BC01CD01089597FBB0\r
+:101DB000092E07260AD077FD04D0E5DF06D00020E3\r
+:101DC0001AF4709561957F4F0895F6F79095819577\r
+:101DD0009F4F0895A1E21A2EAA1BBB1BFD010DC047\r
+:101DE000AA1FBB1FEE1FFF1FA217B307E407F507CB\r
+:101DF00020F0A21BB30BE40BF50B661F771F881FA7\r
+:101E0000991F1A9469F760957095809590959B013C\r
+:101E1000AC01BD01CF010895FC0188279927E89402\r
+:101E200021912032E9F3293010F02E30C8F32B3203\r
+:101E300039F02D3231F4689403C01AD0820F911D0D\r
+:101E4000219120532A30C8F31EF4909581959F4F1D\r
+:101E50000895FB01DC014150504048F001900D9283\r
+:101E60000020C9F701C01D9241505040E0F708958D\r
+:101E7000BC01880F991F880F991F860F971F880F25\r
+:081E8000991F0895F894FFCFAB\r
+:101E8800785F706F733A20002020795F706F733A23\r
+:101E980020000D000D0A00474F544F20004D4F56AB\r
+:101EA800452000796F752073656C656374656420DF\r
+:101EB8007468652072656C617469766520706F73EB\r
+:101EC8006974696F6E2064656D6F206D6F647573DA\r
+:101ED8003A0A0D000083100000010410000001827E\r
+:101EE8000800000100000000000000000000000AD7\r
+:0A1EF8000905063020EC0027010068\r
 :00000001FF\r
index a1312b91ec6a32201311efc16ee852ae3551c101..4d9bd91530131826a6417fdfe4d44acc1edbb0df 100644 (file)
@@ -3,35 +3,35 @@ USBtoSerial.elf:     file format elf32-avr
 
 Sections:
 Idx Name          Size      VMA       LMA       File off  Algn
-  0 .data         0000006a  00800100  00001ab8  00001b4c  2**0
+  0 .data         0000007a  00800100  00001e88  00001f1c  2**0
                   CONTENTS, ALLOC, LOAD, DATA
-  1 .text         00001ab8  00000000  00000000  00000094  2**1
+  1 .text         00001e88  00000000  00000000  00000094  2**1
                   CONTENTS, ALLOC, LOAD, READONLY, CODE
-  2 .bss          0000013a  0080016a  0080016a  00001bb6  2**0
+  2 .bss          00000176  0080017a  0080017a  00001f96  2**0
                   ALLOC
-  3 .stab         0000228c  00000000  00000000  00001bb8  2**2
+  3 .stab         0000255c  00000000  00000000  00001f98  2**2
                   CONTENTS, READONLY, DEBUGGING
-  4 .stabstr      0000044f  00000000  00000000  00003e44  2**0
+  4 .stabstr      000004d5  00000000  00000000  000044f4  2**0
                   CONTENTS, READONLY, DEBUGGING
-  5 .debug_aranges 00000568  00000000  00000000  00004293  2**0
+  5 .debug_aranges 00000590  00000000  00000000  000049c9  2**0
                   CONTENTS, READONLY, DEBUGGING
-  6 .debug_pubnames 00000e6e  00000000  00000000  000047fb  2**0
+  6 .debug_pubnames 00000f05  00000000  00000000  00004f59  2**0
                   CONTENTS, READONLY, DEBUGGING
-  7 .debug_info   00008f87  00000000  00000000  00005669  2**0
+  7 .debug_info   00009207  00000000  00000000  00005e5e  2**0
                   CONTENTS, READONLY, DEBUGGING
-  8 .debug_abbrev 000021f5  00000000  00000000  0000e5f0  2**0
+  8 .debug_abbrev 0000220b  00000000  00000000  0000f065  2**0
                   CONTENTS, READONLY, DEBUGGING
-  9 .debug_line   0000781c  00000000  00000000  000107e5  2**0
+  9 .debug_line   00007b46  00000000  00000000  00011270  2**0
                   CONTENTS, READONLY, DEBUGGING
- 10 .debug_frame  00000890  00000000  00000000  00018004  2**2
+ 10 .debug_frame  000008e0  00000000  00000000  00018db8  2**2
                   CONTENTS, READONLY, DEBUGGING
- 11 .debug_str    00003c87  00000000  00000000  00018894  2**0
+ 11 .debug_str    00003d5d  00000000  00000000  00019698  2**0
                   CONTENTS, READONLY, DEBUGGING
- 12 .debug_loc    00004764  00000000  00000000  0001c51b  2**0
+ 12 .debug_loc    00004a7a  00000000  00000000  0001d3f5  2**0
                   CONTENTS, READONLY, DEBUGGING
- 13 .debug_pubtypes 00001111  00000000  00000000  00020c7f  2**0
+ 13 .debug_pubtypes 00001111  00000000  00000000  00021e6f  2**0
                   CONTENTS, READONLY, DEBUGGING
- 14 .debug_ranges 000007c0  00000000  00000000  00021d90  2**0
+ 14 .debug_ranges 00000818  00000000  00000000  00022f80  2**0
                   CONTENTS, READONLY, DEBUGGING
 
 Disassembly of section .text:
@@ -71,9 +71,8 @@ Disassembly of section .text:
       26:      00 00           nop
       28:      a2 c0           rjmp    .+324           ; 0x16e <__bad_interrupt>
       2a:      00 00           nop
-      2c:      7c c7           rjmp    .+3832          ; 0xf26 <__vector_11>
-      2e:      00 00           nop
-      30:      0c 94 37 08     jmp     0x106e  ; 0x106e <__vector_12>
+      2c:      0c 94 31 09     jmp     0x1262  ; 0x1262 <__vector_11>
+      30:      0c 94 d5 09     jmp     0x13aa  ; 0x13aa <__vector_12>
       34:      9c c0           rjmp    .+312           ; 0x16e <__bad_interrupt>
       36:      00 00           nop
       38:      9a c0           rjmp    .+308           ; 0x16e <__bad_interrupt>
@@ -94,7 +93,7 @@ Disassembly of section .text:
       56:      00 00           nop
       58:      8a c0           rjmp    .+276           ; 0x16e <__bad_interrupt>
       5a:      00 00           nop
-      5c:      4e c3           rjmp    .+1692          ; 0x6fa <__vector_23>
+      5c:      23 c3           rjmp    .+1606          ; 0x6a4 <__vector_23>
       5e:      00 00           nop
       60:      86 c0           rjmp    .+268           ; 0x16e <__bad_interrupt>
       62:      00 00           nop
@@ -159,18 +158,18 @@ Disassembly of section .text:
      142:      11 e0           ldi     r17, 0x01       ; 1
      144:      a0 e0           ldi     r26, 0x00       ; 0
      146:      b1 e0           ldi     r27, 0x01       ; 1
-     148:      e8 eb           ldi     r30, 0xB8       ; 184
-     14a:      fa e1           ldi     r31, 0x1A       ; 26
+     148:      e8 e8           ldi     r30, 0x88       ; 136
+     14a:      fe e1           ldi     r31, 0x1E       ; 30
      14c:      02 c0           rjmp    .+4             ; 0x152 <__do_copy_data+0x10>
      14e:      05 90           lpm     r0, Z+
      150:      0d 92           st      X+, r0
-     152:      aa 36           cpi     r26, 0x6A       ; 106
+     152:      aa 37           cpi     r26, 0x7A       ; 122
      154:      b1 07           cpc     r27, r17
      156:      d9 f7           brne    .-10            ; 0x14e <__do_copy_data+0xc>
 
 00000158 <__do_clear_bss>:
      158:      12 e0           ldi     r17, 0x02       ; 2
-     15a:      aa e6           ldi     r26, 0x6A       ; 106
+     15a:      aa e7           ldi     r26, 0x7A       ; 122
      15c:      b1 e0           ldi     r27, 0x01       ; 1
      15e:      01 c0           rjmp    .+2             ; 0x162 <.do_clear_bss_start>
 
@@ -178,11 +177,11 @@ Disassembly of section .text:
      160:      1d 92           st      X+, r1
 
 00000162 <.do_clear_bss_start>:
-     162:      a4 3a           cpi     r26, 0xA4       ; 164
+     162:      a0 3f           cpi     r26, 0xF0       ; 240
      164:      b1 07           cpc     r27, r17
      166:      e1 f7           brne    .-8             ; 0x160 <.do_clear_bss_loop>
-     168:      65 d4           rcall   .+2250          ; 0xa34 <main>
-     16a:      0c 94 5a 0d     jmp     0x1ab4  ; 0x1ab4 <_exit>
+     168:      2f d6           rcall   .+3166          ; 0xdc8 <main>
+     16a:      0c 94 42 0f     jmp     0x1e84  ; 0x1e84 <_exit>
 
 0000016e <__bad_interrupt>:
      16e:      48 cf           rjmp    .-368           ; 0x0 <__vectors>
@@ -541,9 +540,9 @@ ISR( TIMER0_OVF_vect) {
      2f4:      11 24           eor     r1, r1
      2f6:      8f 93           push    r24
        t0ovfcount++;
-     2f8:      80 91 96 02     lds     r24, 0x0296
+     2f8:      80 91 e2 02     lds     r24, 0x02E2
      2fc:      8f 5f           subi    r24, 0xFF       ; 255
-     2fe:      80 93 96 02     sts     0x0296, r24
+     2fe:      80 93 e2 02     sts     0x02E2, r24
 }
      302:      8f 91           pop     r24
      304:      0f 90           pop     r0
@@ -557,7 +556,7 @@ ISR( TIMER0_OVF_vect) {
 uint16_t t0ext(void) {
        return (t0ovfcount * 256 + (u16) TCNT0); // return current counter value
      30e:      86 b5           in      r24, 0x26       ; 38
-     310:      30 91 96 02     lds     r19, 0x0296
+     310:      30 91 e2 02     lds     r19, 0x02E2
      314:      20 e0           ldi     r18, 0x00       ; 0
      316:      28 0f           add     r18, r24
      318:      31 1d           adc     r19, r1
@@ -572,7 +571,7 @@ void t0rst(void) {
        TCNT0 = 0; // set counter to zero
      31e:      16 bc           out     0x26, r1        ; 38
        t0ovfcount = 0; // set overflow counter to zero
-     320:      10 92 96 02     sts     0x0296, r1
+     320:      10 92 e2 02     sts     0x02E2, r1
 
 }
      324:      08 95           ret
@@ -610,12 +609,12 @@ u08 adb(void) {
      340:      bc 01           movw    r22, r24
      342:      80 e0           ldi     r24, 0x00       ; 0
      344:      90 e0           ldi     r25, 0x00       ; 0
-     346:      0e 94 5b 0c     call    0x18b6  ; 0x18b6 <__floatunsisf>
+     346:      0e 94 fb 0d     call    0x1bf6  ; 0x1bf6 <__floatunsisf>
      34a:      20 e0           ldi     r18, 0x00       ; 0
      34c:      30 e8           ldi     r19, 0x80       ; 128
      34e:      4e e0           ldi     r20, 0x0E       ; 14
      350:      53 e4           ldi     r21, 0x43       ; 67
-     352:      0e 94 c3 0b     call    0x1786  ; 0x1786 <__cmpsf2>
+     352:      0e 94 63 0d     call    0x1ac6  ; 0x1ac6 <__cmpsf2>
      356:      87 fd           sbrc    r24, 7
      358:      f2 cf           rjmp    .-28            ; 0x33e <adb+0x18>
                ; // Warteschleife
@@ -642,12 +641,12 @@ u08 adb(void) {
      36c:      bc 01           movw    r22, r24
      36e:      80 e0           ldi     r24, 0x00       ; 0
      370:      90 e0           ldi     r25, 0x00       ; 0
-     372:      0e 94 5b 0c     call    0x18b6  ; 0x18b6 <__floatunsisf>
+     372:      0e 94 fb 0d     call    0x1bf6  ; 0x1bf6 <__floatunsisf>
      376:      20 e0           ldi     r18, 0x00       ; 0
      378:      30 e0           ldi     r19, 0x00       ; 0
      37a:      4c e8           ldi     r20, 0x8C       ; 140
      37c:      52 e4           ldi     r21, 0x42       ; 66
-     37e:      0e 94 c3 0b     call    0x1786  ; 0x1786 <__cmpsf2>
+     37e:      0e 94 63 0d     call    0x1ac6  ; 0x1ac6 <__cmpsf2>
      382:      87 fd           sbrc    r24, 7
      384:      f2 cf           rjmp    .-28            ; 0x36a <adb+0x44>
                        ;
@@ -660,12 +659,12 @@ u08 adb(void) {
      38c:      bc 01           movw    r22, r24
      38e:      80 e0           ldi     r24, 0x00       ; 0
      390:      90 e0           ldi     r25, 0x00       ; 0
-     392:      0e 94 5b 0c     call    0x18b6  ; 0x18b6 <__floatunsisf>
+     392:      0e 94 fb 0d     call    0x1bf6  ; 0x1bf6 <__floatunsisf>
      396:      20 e0           ldi     r18, 0x00       ; 0
      398:      30 e0           ldi     r19, 0x00       ; 0
      39a:      48 e4           ldi     r20, 0x48       ; 72
      39c:      53 e4           ldi     r21, 0x43       ; 67
-     39e:      0e 94 c3 0b     call    0x1786  ; 0x1786 <__cmpsf2>
+     39e:      0e 94 63 0d     call    0x1ac6  ; 0x1ac6 <__cmpsf2>
      3a2:      87 fd           sbrc    r24, 7
      3a4:      f2 cf           rjmp    .-28            ; 0x38a <adb+0x64>
      3a6:      41 c0           rjmp    .+130           ; 0x42a <adb+0x104>
@@ -682,7 +681,7 @@ u08 adb(void) {
                                if (adb_werte[z_byte] & bitpos)
      3ae:      e1 2e           mov     r14, r17
      3b0:      ff 24           eor     r15, r15
-     3b2:      8d e8           ldi     r24, 0x8D       ; 141
+     3b2:      89 ec           ldi     r24, 0xC9       ; 201
      3b4:      92 e0           ldi     r25, 0x02       ; 2
      3b6:      e8 0e           add     r14, r24
      3b8:      f9 1e           adc     r15, r25
@@ -707,12 +706,12 @@ u08 adb(void) {
      3ca:      bc 01           movw    r22, r24
      3cc:      80 e0           ldi     r24, 0x00       ; 0
      3ce:      90 e0           ldi     r25, 0x00       ; 0
-     3d0:      0e 94 5b 0c     call    0x18b6  ; 0x18b6 <__floatunsisf>
+     3d0:      0e 94 fb 0d     call    0x1bf6  ; 0x1bf6 <__floatunsisf>
      3d4:      20 e0           ldi     r18, 0x00       ; 0
      3d6:      30 e0           ldi     r19, 0x00       ; 0
      3d8:      4c e8           ldi     r20, 0x8C       ; 140
      3da:      52 e4           ldi     r21, 0x42       ; 66
-     3dc:      0e 94 c3 0b     call    0x1786  ; 0x1786 <__cmpsf2>
+     3dc:      0e 94 63 0d     call    0x1ac6  ; 0x1ac6 <__cmpsf2>
      3e0:      87 fd           sbrc    r24, 7
      3e2:      f2 cf           rjmp    .-28            ; 0x3c8 <adb+0xa2>
      3e4:      0e c0           rjmp    .+28            ; 0x402 <adb+0xdc>
@@ -723,12 +722,12 @@ u08 adb(void) {
      3e8:      bc 01           movw    r22, r24
      3ea:      80 e0           ldi     r24, 0x00       ; 0
      3ec:      90 e0           ldi     r25, 0x00       ; 0
-     3ee:      0e 94 5b 0c     call    0x18b6  ; 0x18b6 <__floatunsisf>
+     3ee:      0e 94 fb 0d     call    0x1bf6  ; 0x1bf6 <__floatunsisf>
      3f2:      20 e0           ldi     r18, 0x00       ; 0
      3f4:      30 e0           ldi     r19, 0x00       ; 0
      3f6:      42 e0           ldi     r20, 0x02       ; 2
      3f8:      53 e4           ldi     r21, 0x43       ; 67
-     3fa:      0e 94 c3 0b     call    0x1786  ; 0x1786 <__cmpsf2>
+     3fa:      0e 94 63 0d     call    0x1ac6  ; 0x1ac6 <__cmpsf2>
      3fe:      87 fd           sbrc    r24, 7
      400:      f2 cf           rjmp    .-28            ; 0x3e6 <adb+0xc0>
                                                ;
@@ -741,12 +740,12 @@ u08 adb(void) {
      408:      bc 01           movw    r22, r24
      40a:      80 e0           ldi     r24, 0x00       ; 0
      40c:      90 e0           ldi     r25, 0x00       ; 0
-     40e:      0e 94 5b 0c     call    0x18b6  ; 0x18b6 <__floatunsisf>
+     40e:      0e 94 fb 0d     call    0x1bf6  ; 0x1bf6 <__floatunsisf>
      412:      20 e0           ldi     r18, 0x00       ; 0
      414:      30 e0           ldi     r19, 0x00       ; 0
      416:      48 e4           ldi     r20, 0x48       ; 72
      418:      53 e4           ldi     r21, 0x43       ; 67
-     41a:      0e 94 c3 0b     call    0x1786  ; 0x1786 <__cmpsf2>
+     41a:      0e 94 63 0d     call    0x1ac6  ; 0x1ac6 <__cmpsf2>
      41e:      87 fd           sbrc    r24, 7
      420:      f2 cf           rjmp    .-28            ; 0x406 <adb+0xe0>
                ADB_POUT |= ADB_BIT;
@@ -784,12 +783,12 @@ u08 adb(void) {
      438:      bc 01           movw    r22, r24
      43a:      80 e0           ldi     r24, 0x00       ; 0
      43c:      90 e0           ldi     r25, 0x00       ; 0
-     43e:      0e 94 5b 0c     call    0x18b6  ; 0x18b6 <__floatunsisf>
+     43e:      0e 94 fb 0d     call    0x1bf6  ; 0x1bf6 <__floatunsisf>
      442:      20 e0           ldi     r18, 0x00       ; 0
      444:      30 e0           ldi     r19, 0x00       ; 0
      446:      42 e0           ldi     r20, 0x02       ; 2
      448:      53 e4           ldi     r21, 0x43       ; 67
-     44a:      0e 94 c3 0b     call    0x1786  ; 0x1786 <__cmpsf2>
+     44a:      0e 94 63 0d     call    0x1ac6  ; 0x1ac6 <__cmpsf2>
      44e:      87 fd           sbrc    r24, 7
      450:      f2 cf           rjmp    .-28            ; 0x436 <adb+0x110>
                        ;
@@ -802,19 +801,19 @@ u08 adb(void) {
      458:      bc 01           movw    r22, r24
      45a:      80 e0           ldi     r24, 0x00       ; 0
      45c:      90 e0           ldi     r25, 0x00       ; 0
-     45e:      0e 94 5b 0c     call    0x18b6  ; 0x18b6 <__floatunsisf>
+     45e:      0e 94 fb 0d     call    0x1bf6  ; 0x1bf6 <__floatunsisf>
      462:      20 e0           ldi     r18, 0x00       ; 0
      464:      30 e0           ldi     r19, 0x00       ; 0
      466:      48 e4           ldi     r20, 0x48       ; 72
      468:      53 e4           ldi     r21, 0x43       ; 67
-     46a:      0e 94 c3 0b     call    0x1786  ; 0x1786 <__cmpsf2>
+     46a:      0e 94 63 0d     call    0x1ac6  ; 0x1ac6 <__cmpsf2>
      46e:      87 fd           sbrc    r24, 7
      470:      f2 cf           rjmp    .-28            ; 0x456 <adb+0x130>
                        ;
 
                // Entscheidung, ob noch weitere Daten Ã¼bertragen werden
                if (adb_werte[0] == COM_LISTEN3)
-     472:      80 91 8d 02     lds     r24, 0x028D
+     472:      80 91 c9 02     lds     r24, 0x02C9
      476:      8b 33           cpi     r24, 0x3B       ; 59
      478:      29 f0           breq    .+10            ; 0x484 <adb+0x15e>
                        anzahl_out = 2 + 1;
@@ -853,12 +852,12 @@ u08 adb(void) {
      492:      bc 01           movw    r22, r24
      494:      80 e0           ldi     r24, 0x00       ; 0
      496:      90 e0           ldi     r25, 0x00       ; 0
-     498:      0e 94 5b 0c     call    0x18b6  ; 0x18b6 <__floatunsisf>
+     498:      0e 94 fb 0d     call    0x1bf6  ; 0x1bf6 <__floatunsisf>
      49c:      20 e0           ldi     r18, 0x00       ; 0
      49e:      30 e0           ldi     r19, 0x00       ; 0
      4a0:      4a ef           ldi     r20, 0xFA       ; 250
      4a2:      53 e4           ldi     r21, 0x43       ; 67
-     4a4:      0e 94 0d 0d     call    0x1a1a  ; 0x1a1a <__gesf2>
+     4a4:      0e 94 ad 0e     call    0x1d5a  ; 0x1d5a <__gesf2>
      4a8:      18 16           cp      r1, r24
      4aa:      0c f4           brge    .+2             ; 0x4ae <adb+0x188>
      4ac:      42 c0           rjmp    .+132           ; 0x532 <__stack+0x33>
@@ -870,7 +869,7 @@ u08 adb(void) {
        while (!(ADB_PIN & ADB_BIT))
      4b2:      48 9b           sbis    0x09, 0 ; 9
      4b4:      fe cf           rjmp    .-4             ; 0x4b2 <adb+0x18c>
-     4b6:      ce e8           ldi     r28, 0x8E       ; 142
+     4b6:      ca ec           ldi     r28, 0xCA       ; 202
      4b8:      d2 e0           ldi     r29, 0x02       ; 2
      4ba:      11 e0           ldi     r17, 0x01       ; 1
      4bc:      01 c0           rjmp    .+2             ; 0x4c0 <adb+0x19a>
@@ -903,12 +902,12 @@ u08 adb(void) {
      4ce:      bc 01           movw    r22, r24
      4d0:      80 e0           ldi     r24, 0x00       ; 0
      4d2:      90 e0           ldi     r25, 0x00       ; 0
-     4d4:      0e 94 5b 0c     call    0x18b6  ; 0x18b6 <__floatunsisf>
+     4d4:      0e 94 fb 0d     call    0x1bf6  ; 0x1bf6 <__floatunsisf>
      4d8:      20 e0           ldi     r18, 0x00       ; 0
      4da:      30 e0           ldi     r19, 0x00       ; 0
      4dc:      48 e4           ldi     r20, 0x48       ; 72
      4de:      53 e4           ldi     r21, 0x43       ; 67
-     4e0:      0e 94 0d 0d     call    0x1a1a  ; 0x1a1a <__gesf2>
+     4e0:      0e 94 ad 0e     call    0x1d5a  ; 0x1d5a <__gesf2>
      4e4:      18 16           cp      r1, r24
      4e6:      14 f4           brge    .+4             ; 0x4ec <adb+0x1c6>
                                        return (z_byte - 1);
@@ -929,12 +928,12 @@ u08 adb(void) {
      4f8:      bc 01           movw    r22, r24
      4fa:      80 e0           ldi     r24, 0x00       ; 0
      4fc:      90 e0           ldi     r25, 0x00       ; 0
-     4fe:      0e 94 5b 0c     call    0x18b6  ; 0x18b6 <__floatunsisf>
+     4fe:      0e 94 fb 0d     call    0x1bf6  ; 0x1bf6 <__floatunsisf>
      502:      20 e0           ldi     r18, 0x00       ; 0
      504:      30 e0           ldi     r19, 0x00       ; 0
      506:      48 ec           ldi     r20, 0xC8       ; 200
      508:      52 e4           ldi     r21, 0x42       ; 66
-     50a:      0e 94 c3 0b     call    0x1786  ; 0x1786 <__cmpsf2>
+     50a:      0e 94 63 0d     call    0x1ac6  ; 0x1ac6 <__cmpsf2>
      50e:      87 ff           sbrs    r24, 7
      510:      03 c0           rjmp    .+6             ; 0x518 <__stack+0x19>
                                adb_werte[z_byte] += bitpos;
@@ -1021,5175 +1020,5774 @@ void touchpad_init(void) {
 uint8_t touchpad_read(void) {
        adb_werte[0] = COM_TALK0;
      556:      8c e3           ldi     r24, 0x3C       ; 60
-     558:      80 93 8d 02     sts     0x028D, r24
+     558:      80 93 c9 02     sts     0x02C9, r24
        adb_data_length = adb();
      55c:      e4 de           rcall   .-568           ; 0x326 <adb>
-     55e:      80 93 97 02     sts     0x0297, r24
+     55e:      80 93 e3 02     sts     0x02E3, r24
        return adb_data_length;
-     562:      80 91 97 02     lds     r24, 0x0297
+     562:      80 91 e3 02     lds     r24, 0x02E3
 }
      566:      08 95           ret
 
-00000568 <touchpad_set_abs_mode>:
+00000568 <touchpad_set_rel_mode_100dpi>:
+  _delay_ms(100);
+}
 
-void touchpad_set_abs_mode(void) {
-       // Auf Absolutmodus umschalten
+void touchpad_set_rel_mode_100dpi(void) {
+       // Auf Relativmodus umschalten
        adb_werte[0] = COM_LISTEN3;
      568:      8b e3           ldi     r24, 0x3B       ; 59
-     56a:      80 93 8d 02     sts     0x028D, r24
+     56a:      80 93 c9 02     sts     0x02C9, r24
        adb_werte[1] = BITS(0110,0011);
      56e:      83 e6           ldi     r24, 0x63       ; 99
-     570:      80 93 8e 02     sts     0x028E, r24
-       adb_werte[2] = 4; //CDM Modus
-     574:      84 e0           ldi     r24, 0x04       ; 4
-     576:      80 93 8f 02     sts     0x028F, r24
+     570:      80 93 ca 02     sts     0x02CA, r24
+       adb_werte[2] = 1; //default modus: 100 dpi mouse
+     574:      81 e0           ldi     r24, 0x01       ; 1
+     576:      80 93 cb 02     sts     0x02CB, r24
        adb();
      57a:      d5 de           rcall   .-598           ; 0x326 <adb>
-
-       adb_werte[0] = COM_TALK1;
-     57c:      8d e3           ldi     r24, 0x3D       ; 61
-     57e:      80 93 8d 02     sts     0x028D, r24
-       adb(); // Werte holen
-     582:      d1 de           rcall   .-606           ; 0x326 <adb>
-
-       adb_werte[0] = COM_LISTEN1;
-     584:      89 e3           ldi     r24, 0x39       ; 57
-     586:      80 93 8d 02     sts     0x028D, r24
-       adb_werte[7] = 0x00; //Absolutmodus
-     58a:      10 92 94 02     sts     0x0294, r1
-       adb();
-     58e:      cb de           rcall   .-618           ; 0x326 <adb>
        #else
                //round up by default
                __ticks_dc = (uint32_t)(ceil(fabs(__tmp)));
        #endif
 
        __builtin_avr_delay_cycles(__ticks_dc);
-     590:      8f ef           ldi     r24, 0xFF       ; 255
-     592:      91 ee           ldi     r25, 0xE1       ; 225
-     594:      a4 e0           ldi     r26, 0x04       ; 4
-     596:      81 50           subi    r24, 0x01       ; 1
-     598:      90 40           sbci    r25, 0x00       ; 0
-     59a:      a0 40           sbci    r26, 0x00       ; 0
-     59c:      e1 f7           brne    .-8             ; 0x596 <touchpad_set_abs_mode+0x2e>
-     59e:      00 c0           rjmp    .+0             ; 0x5a0 <touchpad_set_abs_mode+0x38>
-     5a0:      00 00           nop
-  _delay_ms(100);
-}
-     5a2:      08 95           ret
-
-000005a4 <touchpad_set_rel_mode_100dpi>:
-
-void touchpad_set_rel_mode_100dpi(void) {
-       // Auf Relativmodus umschalten
-       adb_werte[0] = COM_LISTEN3;
-     5a4:      8b e3           ldi     r24, 0x3B       ; 59
-     5a6:      80 93 8d 02     sts     0x028D, r24
-       adb_werte[1] = BITS(0110,0011);
-     5aa:      83 e6           ldi     r24, 0x63       ; 99
-     5ac:      80 93 8e 02     sts     0x028E, r24
-       adb_werte[2] = 1; //default modus: 100 dpi mouse
-     5b0:      81 e0           ldi     r24, 0x01       ; 1
-     5b2:      80 93 8f 02     sts     0x028F, r24
-       adb();
-     5b6:      b7 de           rcall   .-658           ; 0x326 <adb>
-     5b8:      8f ef           ldi     r24, 0xFF       ; 255
-     5ba:      91 ee           ldi     r25, 0xE1       ; 225
-     5bc:      a4 e0           ldi     r26, 0x04       ; 4
-     5be:      81 50           subi    r24, 0x01       ; 1
-     5c0:      90 40           sbci    r25, 0x00       ; 0
-     5c2:      a0 40           sbci    r26, 0x00       ; 0
-     5c4:      e1 f7           brne    .-8             ; 0x5be <touchpad_set_rel_mode_100dpi+0x1a>
-     5c6:      00 c0           rjmp    .+0             ; 0x5c8 <touchpad_set_rel_mode_100dpi+0x24>
-     5c8:      00 00           nop
+     57c:      8f ef           ldi     r24, 0xFF       ; 255
+     57e:      91 ee           ldi     r25, 0xE1       ; 225
+     580:      a4 e0           ldi     r26, 0x04       ; 4
+     582:      81 50           subi    r24, 0x01       ; 1
+     584:      90 40           sbci    r25, 0x00       ; 0
+     586:      a0 40           sbci    r26, 0x00       ; 0
+     588:      e1 f7           brne    .-8             ; 0x582 <touchpad_set_rel_mode_100dpi+0x1a>
+     58a:      00 c0           rjmp    .+0             ; 0x58c <touchpad_set_rel_mode_100dpi+0x24>
+     58c:      00 00           nop
   _delay_ms(100);
 
 }
-     5ca:      08 95           ret
+     58e:      08 95           ret
 
-000005cc <delta_y>:
+00000590 <delta_y>:
        return ((adb_werte[4] & 0b01110000) << 6)
                        | ((adb_werte[3] & 0b01110000) << 3) | (adb_werte[1] & 0b01111111);
 }
 
 int8_t delta_y(void) {
        if(adb_data_length ==0) {
-     5cc:      80 91 97 02     lds     r24, 0x0297
-     5d0:      88 23           and     r24, r24
-     5d2:      51 f0           breq    .+20            ; 0x5e8 <delta_y+0x1c>
+     590:      80 91 e3 02     lds     r24, 0x02E3
+     594:      88 23           and     r24, r24
+     596:      51 f0           breq    .+20            ; 0x5ac <delta_y+0x1c>
                return 0;
        }
        if (adb_werte[1] & 0b01000000) {
-     5d4:      80 91 8e 02     lds     r24, 0x028E
-     5d8:      86 ff           sbrs    r24, 6
-     5da:      04 c0           rjmp    .+8             ; 0x5e4 <delta_y+0x18>
+     598:      80 91 ca 02     lds     r24, 0x02CA
+     59c:      86 ff           sbrs    r24, 6
+     59e:      04 c0           rjmp    .+8             ; 0x5a8 <delta_y+0x18>
                return -((128 - adb_werte[1]) & 0b00111111);
-     5dc:      81 95           neg     r24
-     5de:      8f 73           andi    r24, 0x3F       ; 63
-     5e0:      81 95           neg     r24
-     5e2:      08 95           ret
+     5a0:      81 95           neg     r24
+     5a2:      8f 73           andi    r24, 0x3F       ; 63
+     5a4:      81 95           neg     r24
+     5a6:      08 95           ret
        } else {
                return adb_werte[1] & 0b00111111;
-     5e4:      8f 73           andi    r24, 0x3F       ; 63
-     5e6:      08 95           ret
+     5a8:      8f 73           andi    r24, 0x3F       ; 63
+     5aa:      08 95           ret
                        | ((adb_werte[3] & 0b01110000) << 3) | (adb_werte[1] & 0b01111111);
 }
 
 int8_t delta_y(void) {
        if(adb_data_length ==0) {
                return 0;
-     5e8:      80 e0           ldi     r24, 0x00       ; 0
+     5ac:      80 e0           ldi     r24, 0x00       ; 0
        if (adb_werte[1] & 0b01000000) {
                return -((128 - adb_werte[1]) & 0b00111111);
        } else {
                return adb_werte[1] & 0b00111111;
        }
 }
-     5ea:      08 95           ret
+     5ae:      08 95           ret
 
-000005ec <delta_x>:
+000005b0 <delta_x>:
 
 int8_t delta_x(void) {
        if(adb_data_length ==0) {
-     5ec:      80 91 97 02     lds     r24, 0x0297
-     5f0:      88 23           and     r24, r24
-     5f2:      51 f0           breq    .+20            ; 0x608 <delta_x+0x1c>
+     5b0:      80 91 e3 02     lds     r24, 0x02E3
+     5b4:      88 23           and     r24, r24
+     5b6:      51 f0           breq    .+20            ; 0x5cc <delta_x+0x1c>
                return 0;
        }
        if (adb_werte[2] & 0b01000000) {
-     5f4:      80 91 8f 02     lds     r24, 0x028F
-     5f8:      86 ff           sbrs    r24, 6
-     5fa:      04 c0           rjmp    .+8             ; 0x604 <delta_x+0x18>
+     5b8:      80 91 cb 02     lds     r24, 0x02CB
+     5bc:      86 ff           sbrs    r24, 6
+     5be:      04 c0           rjmp    .+8             ; 0x5c8 <delta_x+0x18>
                return -((128 - adb_werte[2]) & 0b00111111);
-     5fc:      81 95           neg     r24
-     5fe:      8f 73           andi    r24, 0x3F       ; 63
-     600:      81 95           neg     r24
-     602:      08 95           ret
+     5c0:      81 95           neg     r24
+     5c2:      8f 73           andi    r24, 0x3F       ; 63
+     5c4:      81 95           neg     r24
+     5c6:      08 95           ret
        } else {
                return adb_werte[2] & 0b00111111;
-     604:      8f 73           andi    r24, 0x3F       ; 63
-     606:      08 95           ret
+     5c8:      8f 73           andi    r24, 0x3F       ; 63
+     5ca:      08 95           ret
        }
 }
 
 int8_t delta_x(void) {
        if(adb_data_length ==0) {
                return 0;
-     608:      80 e0           ldi     r24, 0x00       ; 0
+     5cc:      80 e0           ldi     r24, 0x00       ; 0
        if (adb_werte[2] & 0b01000000) {
                return -((128 - adb_werte[2]) & 0b00111111);
        } else {
                return adb_werte[2] & 0b00111111;
        }
 }
-     60a:      08 95           ret
+     5ce:      08 95           ret
 
-0000060c <Usb2SerialTask>:
+000005d0 <Usb2SerialTask>:
 
 
 
 
 
 void Usb2SerialTask(void) {
-     60c:      1f 93           push    r17
+     5d0:      1f 93           push    r17
                        static inline uint_reg_t GetGlobalInterruptMask(void)
                        {
                                GCC_MEMORY_BARRIER();
 
                                #if (ARCH == ARCH_AVR8)
                                return SREG;
-     60e:      8f b7           in      r24, 0x3f       ; 63
+     5d2:      8f b7           in      r24, 0x3f       ; 63
                        static inline void GlobalInterruptDisable(void)
                        {
                                GCC_MEMORY_BARRIER();
 
                                #if (ARCH == ARCH_AVR8)
                                cli();
-     610:      f8 94           cli
+     5d4:      f8 94           cli
                        uint16_t Count;
 
                        uint_reg_t CurrentGlobalInt = GetGlobalInterruptMask();
                        GlobalInterruptDisable();
 
                        Count = Buffer->Count;
-     612:      20 91 74 01     lds     r18, 0x0174
-     616:      30 91 75 01     lds     r19, 0x0175
+     5d6:      20 91 88 01     lds     r18, 0x0188
+     5da:      30 91 89 01     lds     r19, 0x0189
                        static inline void SetGlobalInterruptMask(const uint_reg_t GlobalIntState)
                        {
                                GCC_MEMORY_BARRIER();
 
                                #if (ARCH == ARCH_AVR8)
                                SREG = GlobalIntState;
-     61a:      8f bf           out     0x3f, r24       ; 63
+     5de:      8f bf           out     0x3f, r24       ; 63
   
     /* Only try to read in bytes from the CDC interface if the transmit buffer is not full */
     if (!(RingBuffer_IsFull(&USBtoUSART_Buffer)))
-     61c:      80 91 72 01     lds     r24, 0x0172
-     620:      90 91 73 01     lds     r25, 0x0173
-     624:      28 17           cp      r18, r24
-     626:      39 07           cpc     r19, r25
-     628:      51 f0           breq    .+20            ; 0x63e <Usb2SerialTask+0x32>
+     5e0:      80 91 86 01     lds     r24, 0x0186
+     5e4:      90 91 87 01     lds     r25, 0x0187
+     5e8:      28 17           cp      r18, r24
+     5ea:      39 07           cpc     r19, r25
+     5ec:      51 f0           breq    .+20            ; 0x602 <Usb2SerialTask+0x32>
     {
       int16_t ReceivedByte = CDC_Device_ReceiveByte(&VirtualSerial_CDC_Interface);
-     62a:      85 e4           ldi     r24, 0x45       ; 69
-     62c:      91 e0           ldi     r25, 0x01       ; 1
-     62e:      0e 94 30 0b     call    0x1660  ; 0x1660 <CDC_Device_ReceiveByte>
-     632:      bc 01           movw    r22, r24
+     5ee:      84 e5           ldi     r24, 0x54       ; 84
+     5f0:      91 e0           ldi     r25, 0x01       ; 1
+     5f2:      0e 94 d0 0c     call    0x19a0  ; 0x19a0 <CDC_Device_ReceiveByte>
+     5f6:      bc 01           movw    r22, r24
 
       /* Read bytes from the USB OUT endpoint into the USART transmit buffer */
       if (!(ReceivedByte < 0))
-     634:      97 fd           sbrc    r25, 7
-     636:      03 c0           rjmp    .+6             ; 0x63e <Usb2SerialTask+0x32>
+     5f8:      97 fd           sbrc    r25, 7
+     5fa:      03 c0           rjmp    .+6             ; 0x602 <Usb2SerialTask+0x32>
         RingBuffer_Insert(&USBtoUSART_Buffer, ReceivedByte);
-     638:      8a e6           ldi     r24, 0x6A       ; 106
-     63a:      91 e0           ldi     r25, 0x01       ; 1
-     63c:      99 dd           rcall   .-1230          ; 0x170 <RingBuffer_Insert>
+     5fc:      8e e7           ldi     r24, 0x7E       ; 126
+     5fe:      91 e0           ldi     r25, 0x01       ; 1
+     600:      b7 dd           rcall   .-1170          ; 0x170 <RingBuffer_Insert>
                        static inline uint_reg_t GetGlobalInterruptMask(void)
                        {
                                GCC_MEMORY_BARRIER();
 
                                #if (ARCH == ARCH_AVR8)
                                return SREG;
-     63e:      2f b7           in      r18, 0x3f       ; 63
+     602:      2f b7           in      r18, 0x3f       ; 63
                        static inline void GlobalInterruptDisable(void)
                        {
                                GCC_MEMORY_BARRIER();
 
                                #if (ARCH == ARCH_AVR8)
                                cli();
-     640:      f8 94           cli
-     642:      80 91 00 02     lds     r24, 0x0200
-     646:      90 91 01 02     lds     r25, 0x0201
+     604:      f8 94           cli
+     606:      80 91 14 02     lds     r24, 0x0214
+     60a:      90 91 15 02     lds     r25, 0x0215
                        static inline void SetGlobalInterruptMask(const uint_reg_t GlobalIntState)
                        {
                                GCC_MEMORY_BARRIER();
 
                                #if (ARCH == ARCH_AVR8)
                                SREG = GlobalIntState;
-     64a:      2f bf           out     0x3f, r18       ; 63
+     60e:      2f bf           out     0x3f, r18       ; 63
     }
 
     /* Check if the UART receive buffer flush timer has expired or the buffer is nearly full */
     uint16_t BufferCount = RingBuffer_GetCount(&USARTtoUSB_Buffer);
     if (BufferCount)
-     64c:      00 97           sbiw    r24, 0x00       ; 0
-     64e:      01 f1           breq    .+64            ; 0x690 <Usb2SerialTask+0x84>
+     610:      00 97           sbiw    r24, 0x00       ; 0
+     612:      09 f1           breq    .+66            ; 0x656 <Usb2SerialTask+0x86>
                         */
                        static inline void Endpoint_SelectEndpoint(const uint8_t Address) ATTR_ALWAYS_INLINE;
                        static inline void Endpoint_SelectEndpoint(const uint8_t Address)
                        {
                                #if !defined(CONTROL_ONLY_DEVICE)
                                        UENUM = (Address & ENDPOINT_EPNUM_MASK);
-     650:      20 91 46 01     lds     r18, 0x0146
-     654:      2f 70           andi    r18, 0x0F       ; 15
-     656:      20 93 e9 00     sts     0x00E9, r18
+     614:      20 91 55 01     lds     r18, 0x0155
+     618:      2f 70           andi    r18, 0x0F       ; 15
+     61a:      20 93 e9 00     sts     0x00E9, r18
                         *  \return Boolean \c true if the current endpoint is ready for an IN packet, \c false otherwise.
                         */
                        static inline bool Endpoint_IsINReady(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;
                        static inline bool Endpoint_IsINReady(void)
                        {
                                return ((UEINTX & (1 << TXINI)) ? true : false);
-     65a:      20 91 e8 00     lds     r18, 0x00E8
+     61e:      20 91 e8 00     lds     r18, 0x00E8
     {
       Endpoint_SelectEndpoint(VirtualSerial_CDC_Interface.Config.DataINEndpoint.Address);
 
       /* Check if a packet is already enqueued to the host - if so, we shouldn't try to send more data
        * until it completes as there is a chance nothing is listening and a lengthy timeout could occur */
       if (Endpoint_IsINReady())
-     65e:      20 ff           sbrs    r18, 0
-     660:      17 c0           rjmp    .+46            ; 0x690 <Usb2SerialTask+0x84>
+     622:      20 ff           sbrs    r18, 0
+     624:      18 c0           rjmp    .+48            ; 0x656 <Usb2SerialTask+0x86>
       {
         /* Never send more than one bank size less one byte to the host at a time, so that we don't block
          * while a Zero Length Packet (ZLP) to terminate the transfer is sent if the host isn't listening */
         uint8_t BytesToSend = MIN(BufferCount, (CDC_TXRX_EPSIZE - 1));
-     662:      80 31           cpi     r24, 0x10       ; 16
-     664:      91 05           cpc     r25, r1
-     666:      10 f0           brcs    .+4             ; 0x66c <Usb2SerialTask+0x60>
-     668:      8f e0           ldi     r24, 0x0F       ; 15
-     66a:      90 e0           ldi     r25, 0x00       ; 0
-     66c:      18 2f           mov     r17, r24
+     626:      80 31           cpi     r24, 0x10       ; 16
+     628:      91 05           cpc     r25, r1
+     62a:      10 f0           brcs    .+4             ; 0x630 <Usb2SerialTask+0x60>
+     62c:      8f e0           ldi     r24, 0x0F       ; 15
+     62e:      90 e0           ldi     r25, 0x00       ; 0
+     630:      18 2f           mov     r17, r24
 
         /* Read bytes from the USART receive buffer into the USB IN endpoint */
         while (BytesToSend--)
-     66e:      0e c0           rjmp    .+28            ; 0x68c <Usb2SerialTask+0x80>
+     632:      0f c0           rjmp    .+30            ; 0x652 <Usb2SerialTask+0x82>
                 *  \return Next data element stored in the buffer.
                 */
                static inline uint8_t RingBuffer_Peek(RingBuffer_t* const Buffer) ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(1);
                static inline uint8_t RingBuffer_Peek(RingBuffer_t* const Buffer)
                {
                        return *Buffer->Out;
-     670:      e0 91 f8 01     lds     r30, 0x01F8
-     674:      f0 91 f9 01     lds     r31, 0x01F9
+     634:      e0 91 0c 02     lds     r30, 0x020C
+     638:      f0 91 0d 02     lds     r31, 0x020D
         {
           /* Try to send the next byte of data to the host, abort if there is an error without dequeuing */
           if (CDC_Device_SendByte(&VirtualSerial_CDC_Interface,
-     678:      85 e4           ldi     r24, 0x45       ; 69
-     67a:      91 e0           ldi     r25, 0x01       ; 1
-     67c:      60 81           ld      r22, Z
-     67e:      7f d7           rcall   .+3838          ; 0x157e <CDC_Device_SendByte>
-     680:      11 50           subi    r17, 0x01       ; 1
-     682:      88 23           and     r24, r24
-     684:      29 f4           brne    .+10            ; 0x690 <Usb2SerialTask+0x84>
+     63c:      84 e5           ldi     r24, 0x54       ; 84
+     63e:      91 e0           ldi     r25, 0x01       ; 1
+     640:      60 81           ld      r22, Z
+     642:      0e 94 5f 0c     call    0x18be  ; 0x18be <CDC_Device_SendByte>
+     646:      11 50           subi    r17, 0x01       ; 1
+     648:      88 23           and     r24, r24
+     64a:      29 f4           brne    .+10            ; 0x656 <Usb2SerialTask+0x86>
           {
             break;
           }
 
           /* Dequeue the already sent byte from the buffer now we have confirmed that no transmission error occurred */
           RingBuffer_Remove(&USARTtoUSB_Buffer);
-     686:      86 ef           ldi     r24, 0xF6       ; 246
-     688:      91 e0           ldi     r25, 0x01       ; 1
-     68a:      8d dd           rcall   .-1254          ; 0x1a6 <RingBuffer_Remove>
+     64c:      8a e0           ldi     r24, 0x0A       ; 10
+     64e:      92 e0           ldi     r25, 0x02       ; 2
+     650:      aa dd           rcall   .-1196          ; 0x1a6 <RingBuffer_Remove>
         /* Never send more than one bank size less one byte to the host at a time, so that we don't block
          * while a Zero Length Packet (ZLP) to terminate the transfer is sent if the host isn't listening */
         uint8_t BytesToSend = MIN(BufferCount, (CDC_TXRX_EPSIZE - 1));
 
         /* Read bytes from the USART receive buffer into the USB IN endpoint */
         while (BytesToSend--)
-     68c:      11 23           and     r17, r17
-     68e:      81 f7           brne    .-32            ; 0x670 <Usb2SerialTask+0x64>
-                       static inline uint_reg_t GetGlobalInterruptMask(void)
-                       {
-                               GCC_MEMORY_BARRIER();
-
-                               #if (ARCH == ARCH_AVR8)
-                               return SREG;
-     690:      2f b7           in      r18, 0x3f       ; 63
-                       static inline void GlobalInterruptDisable(void)
-                       {
-                               GCC_MEMORY_BARRIER();
-
-                               #if (ARCH == ARCH_AVR8)
-                               cli();
-     692:      f8 94           cli
-                       uint16_t Count;
-
-                       uint_reg_t CurrentGlobalInt = GetGlobalInterruptMask();
-                       GlobalInterruptDisable();
-
-                       Count = Buffer->Count;
-     694:      80 91 74 01     lds     r24, 0x0174
-     698:      90 91 75 01     lds     r25, 0x0175
-                       static inline void SetGlobalInterruptMask(const uint_reg_t GlobalIntState)
-                       {
-                               GCC_MEMORY_BARRIER();
-
-                               #if (ARCH == ARCH_AVR8)
-                               SREG = GlobalIntState;
-     69c:      2f bf           out     0x3f, r18       ; 63
-        }
-      }
-    }
-
-    /* Load the next byte from the USART transmit buffer into the USART */
-    if (!(RingBuffer_IsEmpty(&USBtoUSART_Buffer))) {
-     69e:      00 97           sbiw    r24, 0x00       ; 0
-     6a0:      49 f0           breq    .+18            ; 0x6b4 <Usb2SerialTask+0xa8>
-      Serial_SendByte(RingBuffer_Remove(&USBtoUSART_Buffer));
-     6a2:      8a e6           ldi     r24, 0x6A       ; 106
-     6a4:      91 e0           ldi     r25, 0x01       ; 1
-     6a6:      7f dd           rcall   .-1282          ; 0x1a6 <RingBuffer_Remove>
-                        *  \param[in] DataByte  Byte to transmit through the USART.
-                        */
-                       static inline void Serial_SendByte(const char DataByte) ATTR_ALWAYS_INLINE;
-                       static inline void Serial_SendByte(const char DataByte)
-                       {
-                               while (!(UCSR1A & (1 << UDRE1)));
-     6a8:      90 91 c8 00     lds     r25, 0x00C8
-     6ac:      95 ff           sbrs    r25, 5
-     6ae:      fc cf           rjmp    .-8             ; 0x6a8 <Usb2SerialTask+0x9c>
-                               UDR1 = DataByte;
-     6b0:      80 93 ce 00     sts     0x00CE, r24
+     652:      11 23           and     r17, r17
+     654:      79 f7           brne    .-34            ; 0x634 <Usb2SerialTask+0x64>
+//     if (!(RingBuffer_IsEmpty(&USBtoUSART_Buffer))) {
+//       Serial_SendByte(RingBuffer_Remove(&USBtoUSART_Buffer));
 //      dummy = RingBuffer_Remove(&USBtoUSART_Buffer);
 //      sendPayload(&dummy,1,0);
-    }
+//     }
     CDC_Device_USBTask(&VirtualSerial_CDC_Interface);
-     6b4:      85 e4           ldi     r24, 0x45       ; 69
-     6b6:      91 e0           ldi     r25, 0x01       ; 1
-     6b8:      bc d7           rcall   .+3960          ; 0x1632 <CDC_Device_USBTask>
+     656:      84 e5           ldi     r24, 0x54       ; 84
+     658:      91 e0           ldi     r25, 0x01       ; 1
+     65a:      0e 94 b9 0c     call    0x1972  ; 0x1972 <CDC_Device_USBTask>
     USB_USBTask();
-     6ba:      76 d6           rcall   .+3308          ; 0x13a8 <USB_USBTask>
+     65e:      0e 94 73 0b     call    0x16e6  ; 0x16e6 <USB_USBTask>
   
 }
-     6bc:      1f 91           pop     r17
-     6be:      08 95           ret
+     662:      1f 91           pop     r17
+     664:      08 95           ret
 
-000006c0 <SetupHardware>:
+00000666 <SetupHardware>:
 
 /** Configures the board hardware and chip peripherals for the demo's functionality. */
 void SetupHardware(void)
 {
        /* Disable watchdog if enabled by bootloader/fuses */
        MCUSR &= ~(1 << WDRF);
-     6c0:      84 b7           in      r24, 0x34       ; 52
-     6c2:      87 7f           andi    r24, 0xF7       ; 247
-     6c4:      84 bf           out     0x34, r24       ; 52
+     666:      84 b7           in      r24, 0x34       ; 52
+     668:      87 7f           andi    r24, 0xF7       ; 247
+     66a:      84 bf           out     0x34, r24       ; 52
        wdt_disable();
-     6c6:      88 e1           ldi     r24, 0x18       ; 24
-     6c8:      0f b6           in      r0, 0x3f        ; 63
-     6ca:      f8 94           cli
-     6cc:      80 93 60 00     sts     0x0060, r24
-     6d0:      10 92 60 00     sts     0x0060, r1
-     6d4:      0f be           out     0x3f, r0        ; 63
+     66c:      88 e1           ldi     r24, 0x18       ; 24
+     66e:      0f b6           in      r0, 0x3f        ; 63
+     670:      f8 94           cli
+     672:      80 93 60 00     sts     0x0060, r24
+     676:      10 92 60 00     sts     0x0060, r1
+     67a:      0f be           out     0x3f, r0        ; 63
 The type of x is clock_div_t.
 */
 void clock_prescale_set(clock_div_t __x)
 {
     uint8_t __tmp = _BV(CLKPCE);
     __asm__ __volatile__ (
-     6d6:      90 e0           ldi     r25, 0x00       ; 0
-     6d8:      80 e8           ldi     r24, 0x80       ; 128
-     6da:      0f b6           in      r0, 0x3f        ; 63
-     6dc:      f8 94           cli
-     6de:      80 93 61 00     sts     0x0061, r24
-     6e2:      90 93 61 00     sts     0x0061, r25
-     6e6:      0f be           out     0x3f, r0        ; 63
+     67c:      90 e0           ldi     r25, 0x00       ; 0
+     67e:      80 e8           ldi     r24, 0x80       ; 128
+     680:      0f b6           in      r0, 0x3f        ; 63
+     682:      f8 94           cli
+     684:      80 93 61 00     sts     0x0061, r24
+     688:      90 93 61 00     sts     0x0061, r25
+     68c:      0f be           out     0x3f, r0        ; 63
        clock_prescale_set(clock_div_1);
 
        /* Hardware Initialization */
 //     LEDs_Init();
        USB_Init();
 }
-     6e8:      0f c4           rjmp    .+2078          ; 0xf08 <USB_Init>
+     68e:      da c5           rjmp    .+2996          ; 0x1244 <USB_Init>
 
-000006ea <EVENT_USB_Device_Connect>:
+00000690 <EVENT_USB_Device_Connect>:
 
 /** Event handler for the library USB Connection event. */
 void EVENT_USB_Device_Connect(void)
 {
 //     LEDs_SetAllLEDs(LEDMASK_USB_ENUMERATING);
 }
-     6ea:      08 95           ret
+     690:      08 95           ret
 
-000006ec <EVENT_USB_Device_Disconnect>:
+00000692 <EVENT_USB_Device_Disconnect>:
 
 /** Event handler for the library USB Disconnection event. */
 void EVENT_USB_Device_Disconnect(void)
 {
 //     LEDs_SetAllLEDs(LEDMASK_USB_NOTREADY);
 }
-     6ec:      08 95           ret
+     692:      08 95           ret
 
-000006ee <EVENT_USB_Device_ConfigurationChanged>:
+00000694 <EVENT_USB_Device_ConfigurationChanged>:
 /** Event handler for the library USB Configuration Changed event. */
 void EVENT_USB_Device_ConfigurationChanged(void)
 {
        bool ConfigSuccess = true;
 
        ConfigSuccess &= CDC_Device_ConfigureEndpoints(&VirtualSerial_CDC_Interface);
-     6ee:      85 e4           ldi     r24, 0x45       ; 69
-     6f0:      91 e0           ldi     r25, 0x01       ; 1
+     694:      84 e5           ldi     r24, 0x54       ; 84
+     696:      91 e0           ldi     r25, 0x01       ; 1
+     698:      0c 94 3b 0c     jmp     0x1876  ; 0x1876 <CDC_Device_ConfigureEndpoints>
 
-//     LEDs_SetAllLEDs(ConfigSuccess ? LEDMASK_USB_READY : LEDMASK_USB_ERROR);
+0000069c <EVENT_USB_Device_ControlRequest>:
 }
-     6f2:      21 c7           rjmp    .+3650          ; 0x1536 <CDC_Device_ConfigureEndpoints>
-
-000006f4 <EVENT_USB_Device_ControlRequest>:
 
 /** Event handler for the library USB Control Request reception event. */
 void EVENT_USB_Device_ControlRequest(void)
 {
        CDC_Device_ProcessControlRequest(&VirtualSerial_CDC_Interface);
-     6f4:      85 e4           ldi     r24, 0x45       ; 69
-     6f6:      91 e0           ldi     r25, 0x01       ; 1
-}
-     6f8:      72 c6           rjmp    .+3300          ; 0x13de <CDC_Device_ProcessControlRequest>
+     69c:      84 e5           ldi     r24, 0x54       ; 84
+     69e:      91 e0           ldi     r25, 0x01       ; 1
+     6a0:      0c 94 8e 0b     jmp     0x171c  ; 0x171c <CDC_Device_ProcessControlRequest>
 
-000006fa <__vector_23>:
+000006a4 <__vector_23>:
 
 /** ISR to manage the reception of data from the serial port, placing received bytes into a circular buffer
  *  for later transmission to the host.
  */
 ISR(USART1_RX_vect, ISR_BLOCK)
 {
-     6fa:      1f 92           push    r1
-     6fc:      0f 92           push    r0
-     6fe:      0f b6           in      r0, 0x3f        ; 63
-     700:      0f 92           push    r0
-     702:      11 24           eor     r1, r1
-     704:      2f 93           push    r18
-     706:      3f 93           push    r19
-     708:      4f 93           push    r20
-     70a:      5f 93           push    r21
-     70c:      6f 93           push    r22
-     70e:      7f 93           push    r23
-     710:      8f 93           push    r24
-     712:      9f 93           push    r25
-     714:      af 93           push    r26
-     716:      bf 93           push    r27
-     718:      ef 93           push    r30
-     71a:      ff 93           push    r31
+     6a4:      1f 92           push    r1
+     6a6:      0f 92           push    r0
+     6a8:      0f b6           in      r0, 0x3f        ; 63
+     6aa:      0f 92           push    r0
+     6ac:      11 24           eor     r1, r1
+     6ae:      2f 93           push    r18
+     6b0:      3f 93           push    r19
+     6b2:      4f 93           push    r20
+     6b4:      5f 93           push    r21
+     6b6:      6f 93           push    r22
+     6b8:      7f 93           push    r23
+     6ba:      8f 93           push    r24
+     6bc:      9f 93           push    r25
+     6be:      af 93           push    r26
+     6c0:      bf 93           push    r27
+     6c2:      ef 93           push    r30
+     6c4:      ff 93           push    r31
        uint8_t ReceivedByte = UDR1;
-     71c:      60 91 ce 00     lds     r22, 0x00CE
+     6c6:      60 91 ce 00     lds     r22, 0x00CE
 
        if (USB_DeviceState == DEVICE_STATE_Configured)
-     720:      8e b3           in      r24, 0x1e       ; 30
-     722:      84 30           cpi     r24, 0x04       ; 4
-     724:      19 f4           brne    .+6             ; 0x72c <__vector_23+0x32>
+     6ca:      8e b3           in      r24, 0x1e       ; 30
+     6cc:      84 30           cpi     r24, 0x04       ; 4
+     6ce:      19 f4           brne    .+6             ; 0x6d6 <__vector_23+0x32>
          RingBuffer_Insert(&USARTtoUSB_Buffer, ReceivedByte);
-     726:      86 ef           ldi     r24, 0xF6       ; 246
-     728:      91 e0           ldi     r25, 0x01       ; 1
-     72a:      22 dd           rcall   .-1468          ; 0x170 <RingBuffer_Insert>
+     6d0:      8a e0           ldi     r24, 0x0A       ; 10
+     6d2:      92 e0           ldi     r25, 0x02       ; 2
+     6d4:      4d dd           rcall   .-1382          ; 0x170 <RingBuffer_Insert>
 }
-     72c:      ff 91           pop     r31
-     72e:      ef 91           pop     r30
-     730:      bf 91           pop     r27
-     732:      af 91           pop     r26
-     734:      9f 91           pop     r25
-     736:      8f 91           pop     r24
-     738:      7f 91           pop     r23
-     73a:      6f 91           pop     r22
-     73c:      5f 91           pop     r21
-     73e:      4f 91           pop     r20
-     740:      3f 91           pop     r19
-     742:      2f 91           pop     r18
-     744:      0f 90           pop     r0
-     746:      0f be           out     0x3f, r0        ; 63
-     748:      0f 90           pop     r0
-     74a:      1f 90           pop     r1
-     74c:      18 95           reti
-
-0000074e <EVENT_CDC_Device_LineEncodingChanged>:
+     6d6:      ff 91           pop     r31
+     6d8:      ef 91           pop     r30
+     6da:      bf 91           pop     r27
+     6dc:      af 91           pop     r26
+     6de:      9f 91           pop     r25
+     6e0:      8f 91           pop     r24
+     6e2:      7f 91           pop     r23
+     6e4:      6f 91           pop     r22
+     6e6:      5f 91           pop     r21
+     6e8:      4f 91           pop     r20
+     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 <EVENT_CDC_Device_LineEncodingChanged>:
 /** Event handler for the CDC Class driver Line Encoding Changed event.
  *
  *  \param[in] CDCInterfaceInfo  Pointer to the CDC class interface configuration structure being referenced
  */
 void EVENT_CDC_Device_LineEncodingChanged(USB_ClassInfo_CDC_Device_t* const CDCInterfaceInfo)
 {
-     74e:      8f 92           push    r8
-     750:      9f 92           push    r9
-     752:      af 92           push    r10
-     754:      bf 92           push    r11
-     756:      cf 92           push    r12
-     758:      df 92           push    r13
-     75a:      ef 92           push    r14
-     75c:      ff 92           push    r15
-     75e:      1f 93           push    r17
-     760:      fc 01           movw    r30, r24
+     6f8:      8f 92           push    r8
+     6fa:      9f 92           push    r9
+     6fc:      af 92           push    r10
+     6fe:      bf 92           push    r11
+     700:      cf 92           push    r12
+     702:      df 92           push    r13
+     704:      ef 92           push    r14
+     706:      ff 92           push    r15
+     708:      1f 93           push    r17
+     70a:      fc 01           movw    r30, r24
        uint8_t ConfigMask = 0;
 
        switch (CDCInterfaceInfo->State.LineEncoding.ParityType)
-     762:      a1 8d           ldd     r26, Z+25       ; 0x19
-     764:      a1 50           subi    r26, 0x01       ; 1
-     766:      a2 30           cpi     r26, 0x02       ; 2
-     768:      28 f4           brcc    .+10            ; 0x774 <EVENT_CDC_Device_LineEncodingChanged+0x26>
-     76a:      b0 e0           ldi     r27, 0x00       ; 0
-     76c:      ac 59           subi    r26, 0x9C       ; 156
-     76e:      be 4f           sbci    r27, 0xFE       ; 254
-     770:      1c 91           ld      r17, X
-     772:      01 c0           rjmp    .+2             ; 0x776 <EVENT_CDC_Device_LineEncodingChanged+0x28>
-     774:      10 e0           ldi     r17, 0x00       ; 0
+     70c:      a1 8d           ldd     r26, Z+25       ; 0x19
+     70e:      a1 50           subi    r26, 0x01       ; 1
+     710:      a2 30           cpi     r26, 0x02       ; 2
+     712:      28 f4           brcc    .+10            ; 0x71e <EVENT_CDC_Device_LineEncodingChanged+0x26>
+     714:      b0 e0           ldi     r27, 0x00       ; 0
+     716:      ad 58           subi    r26, 0x8D       ; 141
+     718:      be 4f           sbci    r27, 0xFE       ; 254
+     71a:      1c 91           ld      r17, X
+     71c:      01 c0           rjmp    .+2             ; 0x720 <EVENT_CDC_Device_LineEncodingChanged+0x28>
+     71e:      10 e0           ldi     r17, 0x00       ; 0
                case CDC_PARITY_Even:
                        ConfigMask = (1 << UPM11);
                        break;
        }
 
        if (CDCInterfaceInfo->State.LineEncoding.CharFormat == CDC_LINEENCODING_TwoStopBits)
-     776:      80 8d           ldd     r24, Z+24       ; 0x18
-     778:      82 30           cpi     r24, 0x02       ; 2
-     77a:      09 f4           brne    .+2             ; 0x77e <EVENT_CDC_Device_LineEncodingChanged+0x30>
+     720:      80 8d           ldd     r24, Z+24       ; 0x18
+     722:      82 30           cpi     r24, 0x02       ; 2
+     724:      09 f4           brne    .+2             ; 0x728 <EVENT_CDC_Device_LineEncodingChanged+0x30>
          ConfigMask |= (1 << USBS1);
-     77c:      18 60           ori     r17, 0x08       ; 8
+     726:      18 60           ori     r17, 0x08       ; 8
 
        switch (CDCInterfaceInfo->State.LineEncoding.DataBits)
-     77e:      82 8d           ldd     r24, Z+26       ; 0x1a
-     780:      87 30           cpi     r24, 0x07       ; 7
-     782:      31 f0           breq    .+12            ; 0x790 <EVENT_CDC_Device_LineEncodingChanged+0x42>
-     784:      88 30           cpi     r24, 0x08       ; 8
-     786:      31 f0           breq    .+12            ; 0x794 <EVENT_CDC_Device_LineEncodingChanged+0x46>
-     788:      86 30           cpi     r24, 0x06       ; 6
-     78a:      29 f4           brne    .+10            ; 0x796 <EVENT_CDC_Device_LineEncodingChanged+0x48>
+     728:      82 8d           ldd     r24, Z+26       ; 0x1a
+     72a:      87 30           cpi     r24, 0x07       ; 7
+     72c:      31 f0           breq    .+12            ; 0x73a <EVENT_CDC_Device_LineEncodingChanged+0x42>
+     72e:      88 30           cpi     r24, 0x08       ; 8
+     730:      31 f0           breq    .+12            ; 0x73e <EVENT_CDC_Device_LineEncodingChanged+0x46>
+     732:      86 30           cpi     r24, 0x06       ; 6
+     734:      29 f4           brne    .+10            ; 0x740 <EVENT_CDC_Device_LineEncodingChanged+0x48>
        {
                case 6:
                        ConfigMask |= (1 << UCSZ10);
-     78c:      12 60           ori     r17, 0x02       ; 2
+     736:      12 60           ori     r17, 0x02       ; 2
                        break;
-     78e:      03 c0           rjmp    .+6             ; 0x796 <EVENT_CDC_Device_LineEncodingChanged+0x48>
+     738:      03 c0           rjmp    .+6             ; 0x740 <EVENT_CDC_Device_LineEncodingChanged+0x48>
                case 7:
                        ConfigMask |= (1 << UCSZ11);
-     790:      14 60           ori     r17, 0x04       ; 4
+     73a:      14 60           ori     r17, 0x04       ; 4
                        break;
-     792:      01 c0           rjmp    .+2             ; 0x796 <EVENT_CDC_Device_LineEncodingChanged+0x48>
+     73c:      01 c0           rjmp    .+2             ; 0x740 <EVENT_CDC_Device_LineEncodingChanged+0x48>
                case 8:
                        ConfigMask |= ((1 << UCSZ11) | (1 << UCSZ10));
-     794:      16 60           ori     r17, 0x06       ; 6
+     73e:      16 60           ori     r17, 0x06       ; 6
                        break;
        }
 
        /* Must turn off USART before reconfiguring it, otherwise incorrect operation may occur */
        UCSR1B = 0;
-     796:      10 92 c9 00     sts     0x00C9, r1
+     740:      10 92 c9 00     sts     0x00C9, r1
        UCSR1A = 0;
-     79a:      10 92 c8 00     sts     0x00C8, r1
+     744:      10 92 c8 00     sts     0x00C8, r1
        UCSR1C = 0;
-     79e:      10 92 ca 00     sts     0x00CA, r1
+     748:      10 92 ca 00     sts     0x00CA, r1
 
        /* Set the new baud rate before configuring the USART */
        UBRR1  = SERIAL_2X_UBBRVAL(CDCInterfaceInfo->State.LineEncoding.BaudRateBPS);
-     7a2:      c4 88           ldd     r12, Z+20       ; 0x14
-     7a4:      d5 88           ldd     r13, Z+21       ; 0x15
-     7a6:      e6 88           ldd     r14, Z+22       ; 0x16
-     7a8:      f7 88           ldd     r15, Z+23       ; 0x17
-     7aa:      c7 01           movw    r24, r14
-     7ac:      b6 01           movw    r22, r12
-     7ae:      96 95           lsr     r25
-     7b0:      87 95           ror     r24
-     7b2:      77 95           ror     r23
-     7b4:      67 95           ror     r22
-     7b6:      0e 94 5b 0c     call    0x18b6  ; 0x18b6 <__floatunsisf>
-     7ba:      20 e0           ldi     r18, 0x00       ; 0
-     7bc:      34 e2           ldi     r19, 0x24       ; 36
-     7be:      44 ef           ldi     r20, 0xF4       ; 244
-     7c0:      59 e4           ldi     r21, 0x49       ; 73
-     7c2:      7d d7           rcall   .+3834          ; 0x16be <__addsf3>
-     7c4:      4b 01           movw    r8, r22
-     7c6:      5c 01           movw    r10, r24
-     7c8:      c7 01           movw    r24, r14
-     7ca:      b6 01           movw    r22, r12
-     7cc:      0e 94 5b 0c     call    0x18b6  ; 0x18b6 <__floatunsisf>
-     7d0:      9b 01           movw    r18, r22
-     7d2:      ac 01           movw    r20, r24
-     7d4:      c5 01           movw    r24, r10
-     7d6:      b4 01           movw    r22, r8
-     7d8:      da d7           rcall   .+4020          ; 0x178e <__divsf3>
-     7da:      20 e0           ldi     r18, 0x00       ; 0
-     7dc:      30 e0           ldi     r19, 0x00       ; 0
-     7de:      40 e8           ldi     r20, 0x80       ; 128
-     7e0:      5f e3           ldi     r21, 0x3F       ; 63
-     7e2:      6c d7           rcall   .+3800          ; 0x16bc <__subsf3>
-     7e4:      0e 94 2f 0c     call    0x185e  ; 0x185e <__fixunssfsi>
-     7e8:      70 93 cd 00     sts     0x00CD, r23
-     7ec:      60 93 cc 00     sts     0x00CC, r22
+     74c:      c4 88           ldd     r12, Z+20       ; 0x14
+     74e:      d5 88           ldd     r13, Z+21       ; 0x15
+     750:      e6 88           ldd     r14, Z+22       ; 0x16
+     752:      f7 88           ldd     r15, Z+23       ; 0x17
+     754:      c7 01           movw    r24, r14
+     756:      b6 01           movw    r22, r12
+     758:      96 95           lsr     r25
+     75a:      87 95           ror     r24
+     75c:      77 95           ror     r23
+     75e:      67 95           ror     r22
+     760:      0e 94 fb 0d     call    0x1bf6  ; 0x1bf6 <__floatunsisf>
+     764:      20 e0           ldi     r18, 0x00       ; 0
+     766:      34 e2           ldi     r19, 0x24       ; 36
+     768:      44 ef           ldi     r20, 0xF4       ; 244
+     76a:      59 e4           ldi     r21, 0x49       ; 73
+     76c:      0e 94 ff 0c     call    0x19fe  ; 0x19fe <__addsf3>
+     770:      4b 01           movw    r8, r22
+     772:      5c 01           movw    r10, r24
+     774:      c7 01           movw    r24, r14
+     776:      b6 01           movw    r22, r12
+     778:      0e 94 fb 0d     call    0x1bf6  ; 0x1bf6 <__floatunsisf>
+     77c:      9b 01           movw    r18, r22
+     77e:      ac 01           movw    r20, r24
+     780:      c5 01           movw    r24, r10
+     782:      b4 01           movw    r22, r8
+     784:      0e 94 67 0d     call    0x1ace  ; 0x1ace <__divsf3>
+     788:      20 e0           ldi     r18, 0x00       ; 0
+     78a:      30 e0           ldi     r19, 0x00       ; 0
+     78c:      40 e8           ldi     r20, 0x80       ; 128
+     78e:      5f e3           ldi     r21, 0x3F       ; 63
+     790:      0e 94 fe 0c     call    0x19fc  ; 0x19fc <__subsf3>
+     794:      0e 94 cf 0d     call    0x1b9e  ; 0x1b9e <__fixunssfsi>
+     798:      70 93 cd 00     sts     0x00CD, r23
+     79c:      60 93 cc 00     sts     0x00CC, r22
 
        /* Reconfigure the USART in double speed mode for a wider baud rate range at the expense of accuracy */
        UCSR1C = ConfigMask;
-     7f0:      10 93 ca 00     sts     0x00CA, r17
+     7a0:      10 93 ca 00     sts     0x00CA, r17
        UCSR1A = (1 << U2X1);
-     7f4:      82 e0           ldi     r24, 0x02       ; 2
-     7f6:      80 93 c8 00     sts     0x00C8, r24
+     7a4:      82 e0           ldi     r24, 0x02       ; 2
+     7a6:      80 93 c8 00     sts     0x00C8, r24
        UCSR1B = ((1 << RXCIE1) | (1 << TXEN1) | (1 << RXEN1));
-     7fa:      88 e9           ldi     r24, 0x98       ; 152
-     7fc:      80 93 c9 00     sts     0x00C9, r24
+     7aa:      88 e9           ldi     r24, 0x98       ; 152
+     7ac:      80 93 c9 00     sts     0x00C9, r24
 }
-     800:      1f 91           pop     r17
-     802:      ff 90           pop     r15
-     804:      ef 90           pop     r14
-     806:      df 90           pop     r13
-     808:      cf 90           pop     r12
-     80a:      bf 90           pop     r11
-     80c:      af 90           pop     r10
-     80e:      9f 90           pop     r9
-     810:      8f 90           pop     r8
-     812:      08 95           ret
+     7b0:      1f 91           pop     r17
+     7b2:      ff 90           pop     r15
+     7b4:      ef 90           pop     r14
+     7b6:      df 90           pop     r13
+     7b8:      cf 90           pop     r12
+     7ba:      bf 90           pop     r11
+     7bc:      af 90           pop     r10
+     7be:      9f 90           pop     r9
+     7c0:      8f 90           pop     r8
+     7c2:      08 95           ret
 
-00000814 <uart_putc>:
+000007c4 <uart_putc>:
 
 
 
 
 void uart_putc(unsigned char data)
 {
-     814:      68 2f           mov     r22, r24
+     7c4:      68 2f           mov     r22, r24
 
       if (USB_DeviceState == DEVICE_STATE_Configured){
-     816:      8e b3           in      r24, 0x1e       ; 30
-     818:      84 30           cpi     r24, 0x04       ; 4
-     81a:      19 f4           brne    .+6             ; 0x822 <uart_putc+0xe>
+     7c6:      8e b3           in      r24, 0x1e       ; 30
+     7c8:      84 30           cpi     r24, 0x04       ; 4
+     7ca:      19 f4           brne    .+6             ; 0x7d2 <uart_putc+0xe>
         RingBuffer_Insert(&USARTtoUSB_Buffer, data);
-     81c:      86 ef           ldi     r24, 0xF6       ; 246
-     81e:      91 e0           ldi     r25, 0x01       ; 1
-     820:      a7 cc           rjmp    .-1714          ; 0x170 <RingBuffer_Insert>
-     822:      08 95           ret
+     7cc:      8a e0           ldi     r24, 0x0A       ; 10
+     7ce:      92 e0           ldi     r25, 0x02       ; 2
+     7d0:      cf cc           rjmp    .-1634          ; 0x170 <RingBuffer_Insert>
+     7d2:      08 95           ret
 
-00000824 <uart_puts>:
+000007d4 <uart_puts>:
       }
   
 }
 
 void uart_puts(const char *s )
 {
-     824:      ef 92           push    r14
-     826:      ff 92           push    r15
-     828:      cf 93           push    r28
-     82a:      df 93           push    r29
-     82c:      e8 2e           mov     r14, r24
-     82e:      e7 01           movw    r28, r14
-     830:      7e 01           movw    r14, r28
-     832:      f9 2e           mov     r15, r25
-     834:      e7 01           movw    r28, r14
+     7d4:      ef 92           push    r14
+     7d6:      ff 92           push    r15
+     7d8:      cf 93           push    r28
+     7da:      df 93           push    r29
+     7dc:      e8 2e           mov     r14, r24
+     7de:      e7 01           movw    r28, r14
+     7e0:      7e 01           movw    r14, r28
+     7e2:      f9 2e           mov     r15, r25
+     7e4:      e7 01           movw    r28, r14
     while (*s) 
-     836:      01 c0           rjmp    .+2             ; 0x83a <uart_puts+0x16>
+     7e6:      01 c0           rjmp    .+2             ; 0x7ea <uart_puts+0x16>
       uart_putc(*s++);
-     838:      ed df           rcall   .-38            ; 0x814 <uart_putc>
+     7e8:      ed df           rcall   .-38            ; 0x7c4 <uart_putc>
   
 }
 
 void uart_puts(const char *s )
 {
     while (*s) 
-     83a:      89 91           ld      r24, Y+
-     83c:      88 23           and     r24, r24
-     83e:      e1 f7           brne    .-8             ; 0x838 <uart_puts+0x14>
+     7ea:      89 91           ld      r24, Y+
+     7ec:      88 23           and     r24, r24
+     7ee:      e1 f7           brne    .-8             ; 0x7e8 <uart_puts+0x14>
       uart_putc(*s++);
 
 }/* uart_puts */
-     840:      df 91           pop     r29
-     842:      cf 91           pop     r28
-     844:      ff 90           pop     r15
-     846:      ef 90           pop     r14
-     848:      08 95           ret
+     7f0:      df 91           pop     r29
+     7f2:      cf 91           pop     r28
+     7f4:      ff 90           pop     r15
+     7f6:      ef 90           pop     r14
+     7f8:      08 95           ret
 
-0000084a <my_uitoa>:
+000007fa <my_uitoa>:
 
 
 // convert an unsigned integer to string
 void my_uitoa(uint32_t zahl, char* string, uint8_t no_digits) {
-     84a:      2f 92           push    r2
-     84c:      3f 92           push    r3
-     84e:      4f 92           push    r4
-     850:      5f 92           push    r5
-     852:      6f 92           push    r6
-     854:      7f 92           push    r7
-     856:      8f 92           push    r8
-     858:      9f 92           push    r9
-     85a:      af 92           push    r10
-     85c:      bf 92           push    r11
-     85e:      cf 92           push    r12
-     860:      df 92           push    r13
-     862:      ef 92           push    r14
-     864:      ff 92           push    r15
-     866:      0f 93           push    r16
-     868:      1f 93           push    r17
-     86a:      cf 93           push    r28
-     86c:      df 93           push    r29
-     86e:      7b 01           movw    r14, r22
-     870:      8c 01           movw    r16, r24
+     7fa:      2f 92           push    r2
+     7fc:      3f 92           push    r3
+     7fe:      4f 92           push    r4
+     800:      5f 92           push    r5
+     802:      6f 92           push    r6
+     804:      7f 92           push    r7
+     806:      8f 92           push    r8
+     808:      9f 92           push    r9
+     80a:      af 92           push    r10
+     80c:      bf 92           push    r11
+     80e:      cf 92           push    r12
+     810:      df 92           push    r13
+     812:      ef 92           push    r14
+     814:      ff 92           push    r15
+     816:      0f 93           push    r16
+     818:      1f 93           push    r17
+     81a:      cf 93           push    r28
+     81c:      df 93           push    r29
+     81e:      7b 01           movw    r14, r22
+     820:      8c 01           movw    r16, r24
   int8_t i; // schleifenzähler
 
   string[no_digits] = '\0'; // String Terminator
-     872:      82 2f           mov     r24, r18
-     874:      90 e0           ldi     r25, 0x00       ; 0
-     876:      fa 01           movw    r30, r20
-     878:      e8 0f           add     r30, r24
-     87a:      f9 1f           adc     r31, r25
-     87c:      10 82           st      Z, r1
+     822:      82 2f           mov     r24, r18
+     824:      90 e0           ldi     r25, 0x00       ; 0
+     826:      fa 01           movw    r30, r20
+     828:      e8 0f           add     r30, r24
+     82a:      f9 1f           adc     r31, r25
+     82c:      10 82           st      Z, r1
   for (i = (no_digits - 1); i >= 0; i--) {
-     87e:      d2 2e           mov     r13, r18
-     880:      da 94           dec     r13
+     82e:      d2 2e           mov     r13, r18
+     830:      da 94           dec     r13
 
 }/* uart_puts */
 
 
 // convert an unsigned integer to string
 void my_uitoa(uint32_t zahl, char* string, uint8_t no_digits) {
-     882:      4d 2c           mov     r4, r13
-     884:      55 24           eor     r5, r5
-     886:      47 fc           sbrc    r4, 7
-     888:      50 94           com     r5
-     88a:      ea 01           movw    r28, r20
-     88c:      c4 0d           add     r28, r4
-     88e:      d5 1d           adc     r29, r5
+     832:      4d 2c           mov     r4, r13
+     834:      55 24           eor     r5, r5
+     836:      47 fc           sbrc    r4, 7
+     838:      50 94           com     r5
+     83a:      ea 01           movw    r28, r20
+     83c:      c4 0d           add     r28, r4
+     83e:      d5 1d           adc     r29, r5
   int8_t i; // schleifenzähler
 
   string[no_digits] = '\0'; // String Terminator
   for (i = (no_digits - 1); i >= 0; i--) {
-     890:      aa 24           eor     r10, r10
-     892:      bb 24           eor     r11, r11
+     840:      aa 24           eor     r10, r10
+     842:      bb 24           eor     r11, r11
     if (zahl == 0 && i < (no_digits - 1)) {
       string[i] = ' ';
     } else {
       string[i] = (zahl % 10) + '0';
-     894:      aa e0           ldi     r26, 0x0A       ; 10
-     896:      6a 2e           mov     r6, r26
-     898:      71 2c           mov     r7, r1
-     89a:      81 2c           mov     r8, r1
-     89c:      91 2c           mov     r9, r1
+     844:      aa e0           ldi     r26, 0x0A       ; 10
+     846:      6a 2e           mov     r6, r26
+     848:      71 2c           mov     r7, r1
+     84a:      81 2c           mov     r8, r1
+     84c:      91 2c           mov     r9, r1
 void my_uitoa(uint32_t zahl, char* string, uint8_t no_digits) {
   int8_t i; // schleifenzähler
 
   string[no_digits] = '\0'; // String Terminator
   for (i = (no_digits - 1); i >= 0; i--) {
     if (zahl == 0 && i < (no_digits - 1)) {
-     89e:      1c 01           movw    r2, r24
-     8a0:      08 94           sec
-     8a2:      21 08           sbc     r2, r1
-     8a4:      31 08           sbc     r3, r1
+     84e:      1c 01           movw    r2, r24
+     850:      08 94           sec
+     852:      21 08           sbc     r2, r1
+     854:      31 08           sbc     r3, r1
       string[i] = ' ';
-     8a6:      f0 e2           ldi     r31, 0x20       ; 32
-     8a8:      cf 2e           mov     r12, r31
+     856:      f0 e2           ldi     r31, 0x20       ; 32
+     858:      cf 2e           mov     r12, r31
 // convert an unsigned integer to string
 void my_uitoa(uint32_t zahl, char* string, uint8_t no_digits) {
   int8_t i; // schleifenzähler
 
   string[no_digits] = '\0'; // String Terminator
   for (i = (no_digits - 1); i >= 0; i--) {
-     8aa:      22 c0           rjmp    .+68            ; 0x8f0 <my_uitoa+0xa6>
+     85a:      22 c0           rjmp    .+68            ; 0x8a0 <my_uitoa+0xa6>
     if (zahl == 0 && i < (no_digits - 1)) {
-     8ac:      e1 14           cp      r14, r1
-     8ae:      f1 04           cpc     r15, r1
-     8b0:      01 05           cpc     r16, r1
-     8b2:      11 05           cpc     r17, r1
-     8b4:      41 f4           brne    .+16            ; 0x8c6 <my_uitoa+0x7c>
+     85c:      e1 14           cp      r14, r1
+     85e:      f1 04           cpc     r15, r1
+     860:      01 05           cpc     r16, r1
+     862:      11 05           cpc     r17, r1
+     864:      41 f4           brne    .+16            ; 0x876 <my_uitoa+0x7c>
 
 }/* uart_puts */
 
 
 // convert an unsigned integer to string
 void my_uitoa(uint32_t zahl, char* string, uint8_t no_digits) {
-     8b6:      c5 01           movw    r24, r10
-     8b8:      84 0d           add     r24, r4
-     8ba:      95 1d           adc     r25, r5
+     866:      c5 01           movw    r24, r10
+     868:      84 0d           add     r24, r4
+     86a:      95 1d           adc     r25, r5
   int8_t i; // schleifenzähler
 
   string[no_digits] = '\0'; // String Terminator
   for (i = (no_digits - 1); i >= 0; i--) {
     if (zahl == 0 && i < (no_digits - 1)) {
-     8bc:      82 15           cp      r24, r2
-     8be:      93 05           cpc     r25, r3
-     8c0:      14 f4           brge    .+4             ; 0x8c6 <my_uitoa+0x7c>
+     86c:      82 15           cp      r24, r2
+     86e:      93 05           cpc     r25, r3
+     870:      14 f4           brge    .+4             ; 0x876 <my_uitoa+0x7c>
       string[i] = ' ';
-     8c2:      c8 82           st      Y, r12
-     8c4:      08 c0           rjmp    .+16            ; 0x8d6 <my_uitoa+0x8c>
+     872:      c8 82           st      Y, r12
+     874:      08 c0           rjmp    .+16            ; 0x886 <my_uitoa+0x8c>
     } else {
       string[i] = (zahl % 10) + '0';
-     8c6:      c8 01           movw    r24, r16
-     8c8:      b7 01           movw    r22, r14
-     8ca:      a4 01           movw    r20, r8
-     8cc:      93 01           movw    r18, r6
-     8ce:      0e 94 38 0d     call    0x1a70  ; 0x1a70 <__udivmodsi4>
-     8d2:      60 5d           subi    r22, 0xD0       ; 208
-     8d4:      68 83           st      Y, r22
+     876:      c8 01           movw    r24, r16
+     878:      b7 01           movw    r22, r14
+     87a:      a4 01           movw    r20, r8
+     87c:      93 01           movw    r18, r6
+     87e:      0e 94 ea 0e     call    0x1dd4  ; 0x1dd4 <__udivmodsi4>
+     882:      60 5d           subi    r22, 0xD0       ; 208
+     884:      68 83           st      Y, r22
     } // Modulo rechnen, dann den ASCII-Code von '0' addieren
     zahl /= 10;
-     8d6:      c8 01           movw    r24, r16
-     8d8:      b7 01           movw    r22, r14
-     8da:      a4 01           movw    r20, r8
-     8dc:      93 01           movw    r18, r6
-     8de:      0e 94 38 0d     call    0x1a70  ; 0x1a70 <__udivmodsi4>
-     8e2:      79 01           movw    r14, r18
-     8e4:      8a 01           movw    r16, r20
+     886:      c8 01           movw    r24, r16
+     888:      b7 01           movw    r22, r14
+     88a:      a4 01           movw    r20, r8
+     88c:      93 01           movw    r18, r6
+     88e:      0e 94 ea 0e     call    0x1dd4  ; 0x1dd4 <__udivmodsi4>
+     892:      79 01           movw    r14, r18
+     894:      8a 01           movw    r16, r20
 // convert an unsigned integer to string
 void my_uitoa(uint32_t zahl, char* string, uint8_t no_digits) {
   int8_t i; // schleifenzähler
 
   string[no_digits] = '\0'; // String Terminator
   for (i = (no_digits - 1); i >= 0; i--) {
-     8e6:      da 94           dec     r13
-     8e8:      21 97           sbiw    r28, 0x01       ; 1
-     8ea:      08 94           sec
-     8ec:      a1 08           sbc     r10, r1
-     8ee:      b1 08           sbc     r11, r1
-     8f0:      d7 fe           sbrs    r13, 7
-     8f2:      dc cf           rjmp    .-72            ; 0x8ac <my_uitoa+0x62>
+     896:      da 94           dec     r13
+     898:      21 97           sbiw    r28, 0x01       ; 1
+     89a:      08 94           sec
+     89c:      a1 08           sbc     r10, r1
+     89e:      b1 08           sbc     r11, r1
+     8a0:      d7 fe           sbrs    r13, 7
+     8a2:      dc cf           rjmp    .-72            ; 0x85c <my_uitoa+0x62>
       string[i] = (zahl % 10) + '0';
     } // Modulo rechnen, dann den ASCII-Code von '0' addieren
     zahl /= 10;
   }
 
 }
-     8f4:      df 91           pop     r29
-     8f6:      cf 91           pop     r28
-     8f8:      1f 91           pop     r17
-     8fa:      0f 91           pop     r16
-     8fc:      ff 90           pop     r15
-     8fe:      ef 90           pop     r14
-     900:      df 90           pop     r13
-     902:      cf 90           pop     r12
-     904:      bf 90           pop     r11
-     906:      af 90           pop     r10
-     908:      9f 90           pop     r9
-     90a:      8f 90           pop     r8
-     90c:      7f 90           pop     r7
-     90e:      6f 90           pop     r6
-     910:      5f 90           pop     r5
-     912:      4f 90           pop     r4
-     914:      3f 90           pop     r3
-     916:      2f 90           pop     r2
-     918:      08 95           ret
-
-0000091a <init_motors>:
+     8a4:      df 91           pop     r29
+     8a6:      cf 91           pop     r28
+     8a8:      1f 91           pop     r17
+     8aa:      0f 91           pop     r16
+     8ac:      ff 90           pop     r15
+     8ae:      ef 90           pop     r14
+     8b0:      df 90           pop     r13
+     8b2:      cf 90           pop     r12
+     8b4:      bf 90           pop     r11
+     8b6:      af 90           pop     r10
+     8b8:      9f 90           pop     r9
+     8ba:      8f 90           pop     r8
+     8bc:      7f 90           pop     r7
+     8be:      6f 90           pop     r6
+     8c0:      5f 90           pop     r5
+     8c2:      4f 90           pop     r4
+     8c4:      3f 90           pop     r3
+     8c6:      2f 90           pop     r2
+     8c8:      08 95           ret
+
+000008ca <sign>:
+
+int8_t sign(int16_t x) {
+  return (x > 0) - (x < 0);
+     8ca:      21 e0           ldi     r18, 0x01       ; 1
+     8cc:      18 16           cp      r1, r24
+     8ce:      19 06           cpc     r1, r25
+     8d0:      0c f0           brlt    .+2             ; 0x8d4 <sign+0xa>
+     8d2:      20 e0           ldi     r18, 0x00       ; 0
+     8d4:      89 2f           mov     r24, r25
+     8d6:      88 1f           adc     r24, r24
+     8d8:      88 27           eor     r24, r24
+     8da:      88 1f           adc     r24, r24
+}
+     8dc:      28 1b           sub     r18, r24
+     8de:      82 2f           mov     r24, r18
+     8e0:      08 95           ret
+
+000008e2 <uart_print_number>:
+
+
+void uart_print_number(uint32_t zahl, uint8_t no_digits) {
+     8e2:      24 2f           mov     r18, r20
+  my_uitoa(abs(zahl),stringbuffer,no_digits);
+     8e4:      77 ff           sbrs    r23, 7
+     8e6:      03 c0           rjmp    .+6             ; 0x8ee <uart_print_number+0xc>
+     8e8:      70 95           com     r23
+     8ea:      61 95           neg     r22
+     8ec:      7f 4f           sbci    r23, 0xFF       ; 255
+     8ee:      88 27           eor     r24, r24
+     8f0:      77 fd           sbrc    r23, 7
+     8f2:      80 95           com     r24
+     8f4:      98 2f           mov     r25, r24
+     8f6:      42 ed           ldi     r20, 0xD2       ; 210
+     8f8:      52 e0           ldi     r21, 0x02       ; 2
+     8fa:      7f df           rcall   .-258           ; 0x7fa <my_uitoa>
+  uart_puts(stringbuffer);
+     8fc:      82 ed           ldi     r24, 0xD2       ; 210
+     8fe:      92 e0           ldi     r25, 0x02       ; 2
+  
+}
+     900:      69 cf           rjmp    .-302           ; 0x7d4 <uart_puts>
+
+00000902 <uart_print_signed_number>:
+void uart_print_signed_number(uint32_t zahl, uint8_t no_digits) {
+     902:      0f 93           push    r16
+     904:      1f 93           push    r17
+     906:      24 2f           mov     r18, r20
+  my_uitoa(abs(zahl),stringbuffer,no_digits);
+     908:      8b 01           movw    r16, r22
+     90a:      77 ff           sbrs    r23, 7
+     90c:      03 c0           rjmp    .+6             ; 0x914 <uart_print_signed_number+0x12>
+     90e:      70 95           com     r23
+     910:      61 95           neg     r22
+     912:      7f 4f           sbci    r23, 0xFF       ; 255
+     914:      88 27           eor     r24, r24
+     916:      77 fd           sbrc    r23, 7
+     918:      80 95           com     r24
+     91a:      98 2f           mov     r25, r24
+     91c:      42 ed           ldi     r20, 0xD2       ; 210
+     91e:      52 e0           ldi     r21, 0x02       ; 2
+     920:      6c df           rcall   .-296           ; 0x7fa <my_uitoa>
+  if (sign(zahl) < 0) {
+     922:      c8 01           movw    r24, r16
+     924:      d2 df           rcall   .-92            ; 0x8ca <sign>
+     926:      87 ff           sbrs    r24, 7
+     928:      02 c0           rjmp    .+4             ; 0x92e <uart_print_signed_number+0x2c>
+    uart_putc('-');
+     92a:      8d e2           ldi     r24, 0x2D       ; 45
+     92c:      01 c0           rjmp    .+2             ; 0x930 <uart_print_signed_number+0x2e>
+  } else {
+    uart_putc('+');
+     92e:      8b e2           ldi     r24, 0x2B       ; 43
+     930:      49 df           rcall   .-366           ; 0x7c4 <uart_putc>
+  }
+  uart_puts(stringbuffer);
+     932:      82 ed           ldi     r24, 0xD2       ; 210
+     934:      92 e0           ldi     r25, 0x02       ; 2
+     936:      4e df           rcall   .-356           ; 0x7d4 <uart_puts>
+  
+}
+     938:      1f 91           pop     r17
+     93a:      0f 91           pop     r16
+     93c:      08 95           ret
+
+0000093e <init_motors>:
   PORTY2 |= ((byte & (1<<2))>>2)<<Y2;
   PORTY3 |= ((byte & (1<<3))>>3)<<Y3;
 }
 
 void init_motors(void){
   set_x(0);
-     91a:      80 e0           ldi     r24, 0x00       ; 0
-     91c:      5d dc           rcall   .-1862          ; 0x1d8 <set_x>
+     93e:      80 e0           ldi     r24, 0x00       ; 0
+     940:      4b dc           rcall   .-1898          ; 0x1d8 <set_x>
   set_y(0);
-     91e:      80 e0           ldi     r24, 0x00       ; 0
-     920:      96 dc           rcall   .-1748          ; 0x24e <set_y>
+     942:      80 e0           ldi     r24, 0x00       ; 0
+     944:      84 dc           rcall   .-1784          ; 0x24e <set_y>
   DDRX0 |= (1<<X0);
-     922:      22 9a           sbi     0x04, 2 ; 4
+     946:      22 9a           sbi     0x04, 2 ; 4
   DDRX1 |= (1<<X1);
-     924:      23 9a           sbi     0x04, 3 ; 4
+     948:      23 9a           sbi     0x04, 3 ; 4
   DDRX2 |= (1<<X2);
-     926:      24 9a           sbi     0x04, 4 ; 4
+     94a:      24 9a           sbi     0x04, 4 ; 4
   DDRX3 |= (1<<X3);
-     928:      25 9a           sbi     0x04, 5 ; 4
+     94c:      25 9a           sbi     0x04, 5 ; 4
   DDRY0 |= (1<<Y0);
-     92a:      27 9a           sbi     0x04, 7 ; 4
+     94e:      27 9a           sbi     0x04, 7 ; 4
   DDRY1 |= (1<<Y1);
-     92c:      26 9a           sbi     0x04, 6 ; 4
+     950:      26 9a           sbi     0x04, 6 ; 4
   DDRY2 |= (1<<Y2);
-     92e:      3f 9a           sbi     0x07, 7 ; 7
+     952:      3f 9a           sbi     0x07, 7 ; 7
   DDRY3 |= (1<<Y3);
-     930:      3e 9a           sbi     0x07, 6 ; 7
+     954:      3e 9a           sbi     0x07, 6 ; 7
 }
-     932:      08 95           ret
+     956:      08 95           ret
 
-00000934 <motor_step>:
+00000958 <motor_step>:
 
 
 
 uint8_t motor_step(uint8_t motor, int8_t direction) { // motor: M1 or M2, direction +1 or -1, 0 for coil deactivation
-     934:      0f 93           push    r16
-     936:      1f 93           push    r17
-     938:      16 2f           mov     r17, r22
-     93a:      82 30           cpi     r24, 0x02       ; 2
-     93c:      50 f4           brcc    .+20            ; 0x952 <motor_step+0x1e>
-     93e:      a8 2f           mov     r26, r24
-     940:      b0 e0           ldi     r27, 0x00       ; 0
-     942:      aa 0f           add     r26, r26
-     944:      bb 1f           adc     r27, r27
-     946:      aa 59           subi    r26, 0x9A       ; 154
-     948:      be 4f           sbci    r27, 0xFE       ; 254
-     94a:      2d 91           ld      r18, X+
-     94c:      3c 91           ld      r19, X
-     94e:      11 97           sbiw    r26, 0x01       ; 1
-     950:      02 c0           rjmp    .+4             ; 0x956 <motor_step+0x22>
-     952:      2c ee           ldi     r18, 0xEC       ; 236
-     954:      30 e0           ldi     r19, 0x00       ; 0
+     958:      0f 93           push    r16
+     95a:      1f 93           push    r17
+     95c:      16 2f           mov     r17, r22
+     95e:      82 30           cpi     r24, 0x02       ; 2
+     960:      50 f4           brcc    .+20            ; 0x976 <motor_step+0x1e>
+     962:      a8 2f           mov     r26, r24
+     964:      b0 e0           ldi     r27, 0x00       ; 0
+     966:      aa 0f           add     r26, r26
+     968:      bb 1f           adc     r27, r27
+     96a:      ab 58           subi    r26, 0x8B       ; 139
+     96c:      be 4f           sbci    r27, 0xFE       ; 254
+     96e:      2d 91           ld      r18, X+
+     970:      3c 91           ld      r19, X
+     972:      11 97           sbiw    r26, 0x01       ; 1
+     974:      02 c0           rjmp    .+4             ; 0x97a <motor_step+0x22>
+     976:      2c ee           ldi     r18, 0xEC       ; 236
+     978:      30 e0           ldi     r19, 0x00       ; 0
     case Y:
       setport = &set_y;
       break;
   }
 
   next_phase = (phase_memory[motor] + 4 + direction) % 4;
-     956:      e8 2f           mov     r30, r24
-     958:      f0 e0           ldi     r31, 0x00       ; 0
-     95a:      81 2f           mov     r24, r17
-     95c:      99 27           eor     r25, r25
-     95e:      87 fd           sbrc    r24, 7
-     960:      90 95           com     r25
-     962:      04 96           adiw    r24, 0x04       ; 4
-     964:      ea 57           subi    r30, 0x7A       ; 122
-     966:      fd 4f           sbci    r31, 0xFD       ; 253
-     968:      40 81           ld      r20, Z
-     96a:      84 0f           add     r24, r20
-     96c:      91 1d           adc     r25, r1
-     96e:      64 e0           ldi     r22, 0x04       ; 4
-     970:      70 e0           ldi     r23, 0x00       ; 0
-     972:      0e 94 25 0d     call    0x1a4a  ; 0x1a4a <__divmodhi4>
+     97a:      e8 2f           mov     r30, r24
+     97c:      f0 e0           ldi     r31, 0x00       ; 0
+     97e:      81 2f           mov     r24, r17
+     980:      99 27           eor     r25, r25
+     982:      87 fd           sbrc    r24, 7
+     984:      90 95           com     r25
+     986:      04 96           adiw    r24, 0x04       ; 4
+     988:      ee 53           subi    r30, 0x3E       ; 62
+     98a:      fd 4f           sbci    r31, 0xFD       ; 253
+     98c:      40 81           ld      r20, Z
+     98e:      84 0f           add     r24, r20
+     990:      91 1d           adc     r25, r1
+     992:      64 e0           ldi     r22, 0x04       ; 4
+     994:      70 e0           ldi     r23, 0x00       ; 0
+     996:      0e 94 d7 0e     call    0x1dae  ; 0x1dae <__divmodhi4>
   phase_memory[motor] = next_phase;
-     976:      80 83           st      Z, r24
+     99a:      80 83           st      Z, r24
   
 
   next_pattern = phase_pattern[next_phase];
-     978:      e8 2f           mov     r30, r24
-     97a:      f0 e0           ldi     r31, 0x00       ; 0
-     97c:      e0 5a           subi    r30, 0xA0       ; 160
-     97e:      fe 4f           sbci    r31, 0xFE       ; 254
-     980:      00 81           ld      r16, Z
+     99c:      e8 2f           mov     r30, r24
+     99e:      f0 e0           ldi     r31, 0x00       ; 0
+     9a0:      e1 59           subi    r30, 0x91       ; 145
+     9a2:      fe 4f           sbci    r31, 0xFE       ; 254
+     9a4:      00 81           ld      r16, Z
   if (direction != 0) {
-     982:      11 23           and     r17, r17
-     984:      11 f0           breq    .+4             ; 0x98a <motor_step+0x56>
+     9a6:      11 23           and     r17, r17
+     9a8:      11 f0           breq    .+4             ; 0x9ae <motor_step+0x56>
       (*setport)(next_pattern);
-     986:      80 2f           mov     r24, r16
-     988:      01 c0           rjmp    .+2             ; 0x98c <motor_step+0x58>
+     9aa:      80 2f           mov     r24, r16
+     9ac:      01 c0           rjmp    .+2             ; 0x9b0 <motor_step+0x58>
   } else {
       (*setport)(0);
-     98a:      80 e0           ldi     r24, 0x00       ; 0
-     98c:      f9 01           movw    r30, r18
-     98e:      09 95           icall
+     9ae:      80 e0           ldi     r24, 0x00       ; 0
+     9b0:      f9 01           movw    r30, r18
+     9b2:      09 95           icall
   }
 
   return next_pattern;
 
 }
-     990:      80 2f           mov     r24, r16
-     992:      1f 91           pop     r17
-     994:      0f 91           pop     r16
-     996:      08 95           ret
-
-00000998 <sign>:
+     9b4:      80 2f           mov     r24, r16
+     9b6:      1f 91           pop     r17
+     9b8:      0f 91           pop     r16
+     9ba:      08 95           ret
 
-int8_t sign(int16_t x) {
-  return (x > 0) - (x < 0);
-     998:      21 e0           ldi     r18, 0x01       ; 1
-     99a:      18 16           cp      r1, r24
-     99c:      19 06           cpc     r1, r25
-     99e:      0c f0           brlt    .+2             ; 0x9a2 <sign+0xa>
-     9a0:      20 e0           ldi     r18, 0x00       ; 0
-     9a2:      89 2f           mov     r24, r25
-     9a4:      88 1f           adc     r24, r24
-     9a6:      88 27           eor     r24, r24
-     9a8:      88 1f           adc     r24, r24
+000009bc <move_plate>:
+  return val;
 }
-     9aa:      28 1b           sub     r18, r24
-     9ac:      82 2f           mov     r24, r18
-     9ae:      08 95           ret
 
-000009b0 <move_plate>:
 
-void move_plate(int16_t dx, int16_t dy){
-     9b0:      1f 93           push    r17
+
+uint8_t move_plate(int16_t dx, int16_t dy){
+     9bc:      0f 93           push    r16
+     9be:      1f 93           push    r17
   static int16_t todo_x,todo_y = 0;
   int8_t signum;
+  uint8_t returnval = 0;
   todo_x += dx;
-     9b2:      20 91 84 02     lds     r18, 0x0284
-     9b6:      30 91 85 02     lds     r19, 0x0285
-     9ba:      28 0f           add     r18, r24
-     9bc:      39 1f           adc     r19, r25
-     9be:      30 93 85 02     sts     0x0285, r19
-     9c2:      20 93 84 02     sts     0x0284, r18
+     9c0:      20 91 c0 02     lds     r18, 0x02C0
+     9c4:      30 91 c1 02     lds     r19, 0x02C1
+     9c8:      28 0f           add     r18, r24
+     9ca:      39 1f           adc     r19, r25
+     9cc:      30 93 c1 02     sts     0x02C1, r19
+     9d0:      20 93 c0 02     sts     0x02C0, r18
   todo_y += dy;
-     9c6:      80 91 82 02     lds     r24, 0x0282
-     9ca:      90 91 83 02     lds     r25, 0x0283
-     9ce:      86 0f           add     r24, r22
-     9d0:      97 1f           adc     r25, r23
-     9d2:      90 93 83 02     sts     0x0283, r25
-     9d6:      80 93 82 02     sts     0x0282, r24
+     9d4:      80 91 be 02     lds     r24, 0x02BE
+     9d8:      90 91 bf 02     lds     r25, 0x02BF
+     9dc:      86 0f           add     r24, r22
+     9de:      97 1f           adc     r25, r23
+     9e0:      90 93 bf 02     sts     0x02BF, r25
+     9e4:      80 93 be 02     sts     0x02BE, r24
   
   signum = sign(todo_x);
-     9da:      c9 01           movw    r24, r18
-     9dc:      dd df           rcall   .-70            ; 0x998 <sign>
-     9de:      18 2f           mov     r17, r24
+     9e8:      c9 01           movw    r24, r18
+     9ea:      6f df           rcall   .-290           ; 0x8ca <sign>
+     9ec:      08 2f           mov     r16, r24
+
+
+uint8_t move_plate(int16_t dx, int16_t dy){
+  static int16_t todo_x,todo_y = 0;
+  int8_t signum;
+  uint8_t returnval = 0;
+     9ee:      11 e0           ldi     r17, 0x01       ; 1
+     9f0:      88 23           and     r24, r24
+     9f2:      09 f4           brne    .+2             ; 0x9f6 <move_plate+0x3a>
+     9f4:      10 e0           ldi     r17, 0x00       ; 0
+  
+  signum = sign(todo_x);
+  if(signum != 0) {
+    returnval++;
+  }
   motor_step(X,signum);
-     9e0:      80 e0           ldi     r24, 0x00       ; 0
-     9e2:      61 2f           mov     r22, r17
-     9e4:      a7 df           rcall   .-178           ; 0x934 <motor_step>
+     9f6:      80 e0           ldi     r24, 0x00       ; 0
+     9f8:      60 2f           mov     r22, r16
+     9fa:      ae df           rcall   .-164           ; 0x958 <motor_step>
   todo_x -= signum;
-     9e6:      81 2f           mov     r24, r17
-     9e8:      99 27           eor     r25, r25
-     9ea:      87 fd           sbrc    r24, 7
-     9ec:      90 95           com     r25
-     9ee:      20 91 84 02     lds     r18, 0x0284
-     9f2:      30 91 85 02     lds     r19, 0x0285
-     9f6:      28 1b           sub     r18, r24
-     9f8:      39 0b           sbc     r19, r25
-     9fa:      30 93 85 02     sts     0x0285, r19
-     9fe:      20 93 84 02     sts     0x0284, r18
+     9fc:      60 2f           mov     r22, r16
+     9fe:      77 27           eor     r23, r23
+     a00:      67 fd           sbrc    r22, 7
+     a02:      70 95           com     r23
+     a04:      20 91 c0 02     lds     r18, 0x02C0
+     a08:      30 91 c1 02     lds     r19, 0x02C1
+     a0c:      26 1b           sub     r18, r22
+     a0e:      37 0b           sbc     r19, r23
+     a10:      30 93 c1 02     sts     0x02C1, r19
+     a14:      20 93 c0 02     sts     0x02C0, r18
   
   signum = sign(todo_y);
-     a02:      80 91 82 02     lds     r24, 0x0282
-     a06:      90 91 83 02     lds     r25, 0x0283
-     a0a:      c6 df           rcall   .-116           ; 0x998 <sign>
-     a0c:      18 2f           mov     r17, r24
+     a18:      80 91 be 02     lds     r24, 0x02BE
+     a1c:      90 91 bf 02     lds     r25, 0x02BF
+     a20:      54 df           rcall   .-344           ; 0x8ca <sign>
+     a22:      08 2f           mov     r16, r24
+  if(signum != 0) {
+     a24:      81 11           cpse    r24, r1
+    returnval++;
+     a26:      1f 5f           subi    r17, 0xFF       ; 255
+  }
   motor_step(Y,signum);
-     a0e:      81 e0           ldi     r24, 0x01       ; 1
-     a10:      61 2f           mov     r22, r17
-     a12:      90 df           rcall   .-224           ; 0x934 <motor_step>
+     a28:      81 e0           ldi     r24, 0x01       ; 1
+     a2a:      60 2f           mov     r22, r16
+     a2c:      95 df           rcall   .-214           ; 0x958 <motor_step>
   todo_y -= signum;
-     a14:      81 2f           mov     r24, r17
-     a16:      99 27           eor     r25, r25
-     a18:      87 fd           sbrc    r24, 7
-     a1a:      90 95           com     r25
-     a1c:      20 91 82 02     lds     r18, 0x0282
-     a20:      30 91 83 02     lds     r19, 0x0283
-     a24:      28 1b           sub     r18, r24
-     a26:      39 0b           sbc     r19, r25
-     a28:      30 93 83 02     sts     0x0283, r19
-     a2c:      20 93 82 02     sts     0x0282, r18
+     a2e:      60 2f           mov     r22, r16
+     a30:      77 27           eor     r23, r23
+     a32:      67 fd           sbrc    r22, 7
+     a34:      70 95           com     r23
+     a36:      20 91 be 02     lds     r18, 0x02BE
+     a3a:      30 91 bf 02     lds     r19, 0x02BF
+     a3e:      26 1b           sub     r18, r22
+     a40:      37 0b           sbc     r19, r23
+     a42:      30 93 bf 02     sts     0x02BF, r19
+     a46:      20 93 be 02     sts     0x02BE, r18
   
+  return returnval; // busy
   
 }
-     a30:      1f 91           pop     r17
-     a32:      08 95           ret
+     a4a:      81 2f           mov     r24, r17
+     a4c:      1f 91           pop     r17
+     a4e:      0f 91           pop     r16
+     a50:      08 95           ret
 
-00000a34 <main>:
+00000a52 <pos_report>:
   
   
+void pos_report(void){ 
+    uart_puts("x_pos: ");
+     a52:      80 e0           ldi     r24, 0x00       ; 0
+     a54:      91 e0           ldi     r25, 0x01       ; 1
+     a56:      be de           rcall   .-644           ; 0x7d4 <uart_puts>
+    uart_print_signed_number(plate_pos_x,6);
+     a58:      60 91 7a 01     lds     r22, 0x017A
+     a5c:      70 91 7b 01     lds     r23, 0x017B
+     a60:      88 27           eor     r24, r24
+     a62:      77 fd           sbrc    r23, 7
+     a64:      80 95           com     r24
+     a66:      98 2f           mov     r25, r24
+     a68:      46 e0           ldi     r20, 0x06       ; 6
+     a6a:      4b df           rcall   .-362           ; 0x902 <uart_print_signed_number>
+//     my_uitoa(plate_pos_x, stringbuffer, 6);
+//     uart_puts(stringbuffer);
+    uart_puts("  y_pos: ");
+     a6c:      88 e0           ldi     r24, 0x08       ; 8
+     a6e:      91 e0           ldi     r25, 0x01       ; 1
+     a70:      b1 de           rcall   .-670           ; 0x7d4 <uart_puts>
+    uart_print_signed_number(plate_pos_y,6);
+     a72:      60 91 7c 01     lds     r22, 0x017C
+     a76:      70 91 7d 01     lds     r23, 0x017D
+     a7a:      88 27           eor     r24, r24
+     a7c:      77 fd           sbrc    r23, 7
+     a7e:      80 95           com     r24
+     a80:      98 2f           mov     r25, r24
+     a82:      46 e0           ldi     r20, 0x06       ; 6
+     a84:      3e df           rcall   .-388           ; 0x902 <uart_print_signed_number>
+    uart_puts("\r");
+     a86:      82 e1           ldi     r24, 0x12       ; 18
+     a88:      91 e0           ldi     r25, 0x01       ; 1
+}
+     a8a:      a4 ce           rjmp    .-696           ; 0x7d4 <uart_puts>
+
+00000a8c <parse_command>:
+#define POSITION 0
+#define GOTO 1
+#define MOVEREL 2
+#define SETZERO 3
+
+void parse_command(void){
+     a8c:      cf 92           push    r12
+     a8e:      df 92           push    r13
+     a90:      ef 92           push    r14
+     a92:      ff 92           push    r15
+     a94:      0f 93           push    r16
+     a96:      1f 93           push    r17
+     a98:      cf 93           push    r28
+     a9a:      df 93           push    r29
+                       static inline uint_reg_t GetGlobalInterruptMask(void)
+                       {
+                               GCC_MEMORY_BARRIER();
 
+                               #if (ARCH == ARCH_AVR8)
+                               return SREG;
+     a9c:      2f b7           in      r18, 0x3f       ; 63
+                       static inline void GlobalInterruptDisable(void)
+                       {
+                               GCC_MEMORY_BARRIER();
+
+                               #if (ARCH == ARCH_AVR8)
+                               cli();
+     a9e:      f8 94           cli
+                       uint16_t Count;
+
+                       uint_reg_t CurrentGlobalInt = GetGlobalInterruptMask();
+                       GlobalInterruptDisable();
+
+                       Count = Buffer->Count;
+     aa0:      80 91 88 01     lds     r24, 0x0188
+     aa4:      90 91 89 01     lds     r25, 0x0189
+                       static inline void SetGlobalInterruptMask(const uint_reg_t GlobalIntState)
+                       {
+                               GCC_MEMORY_BARRIER();
+
+                               #if (ARCH == ARCH_AVR8)
+                               SREG = GlobalIntState;
+     aa8:      2f bf           out     0x3f, r18       ; 63
+  uint8_t action=0,axis=0;
+  int8_t num_sign = 1;
+  char byte;
+  
+  /* Load the next byte from the USART transmit buffer into the USART */
+  if (!(RingBuffer_IsEmpty(&USBtoUSART_Buffer))) {
+     aaa:      00 97           sbiw    r24, 0x00       ; 0
+     aac:      09 f4           brne    .+2             ; 0xab0 <parse_command+0x24>
+     aae:      83 c1           rjmp    .+774           ; 0xdb6 <parse_command+0x32a>
+    byte = RingBuffer_Remove(&USBtoUSART_Buffer);
+     ab0:      8e e7           ldi     r24, 0x7E       ; 126
+     ab2:      91 e0           ldi     r25, 0x01       ; 1
+     ab4:      78 db           rcall   .-2320          ; 0x1a6 <RingBuffer_Remove>
+    
+    if (byte == '\r' || byte == '\n') {// end of command, evaluate cemmand!
+     ab6:      8d 30           cpi     r24, 0x0D       ; 13
+     ab8:      19 f0           breq    .+6             ; 0xac0 <parse_command+0x34>
+     aba:      8a 30           cpi     r24, 0x0A       ; 10
+     abc:      09 f0           breq    .+2             ; 0xac0 <parse_command+0x34>
+     abe:      70 c1           rjmp    .+736           ; 0xda0 <parse_command+0x314>
+      uart_puts("\r\n");
+     ac0:      84 e1           ldi     r24, 0x14       ; 20
+     ac2:      91 e0           ldi     r25, 0x01       ; 1
+     ac4:      87 de           rcall   .-754           ; 0x7d4 <uart_puts>
+      cmdbuffer[cmdPos] = '\0'; // terminate new command string
+     ac6:      80 91 99 02     lds     r24, 0x0299
+     aca:      e8 2f           mov     r30, r24
+     acc:      f0 e0           ldi     r31, 0x00       ; 0
+     ace:      e2 55           subi    r30, 0x52       ; 82
+     ad0:      fd 4f           sbci    r31, 0xFD       ; 253
+     ad2:      10 82           st      Z, r1
+      curCmdLen = cmdPos;
+     ad4:      80 93 98 02     sts     0x0298, r24
+      cmdPos = 0;
+     ad8:      10 92 99 02     sts     0x0299, r1
+      
+      
+      if (cmdbuffer[0] == 'g' || cmdbuffer[0] == 'G') { // goto command
+     adc:      80 91 ae 02     lds     r24, 0x02AE
+     ae0:      87 36           cpi     r24, 0x67       ; 103
+     ae2:      59 f0           breq    .+22            ; 0xafa <parse_command+0x6e>
+     ae4:      87 34           cpi     r24, 0x47       ; 71
+     ae6:      49 f0           breq    .+18            ; 0xafa <parse_command+0x6e>
+        action = GOTO;
+      } else if ( cmdbuffer[0] == 'm' || cmdbuffer[0] == 'M') {
+     ae8:      8d 36           cpi     r24, 0x6D       ; 109
+     aea:      49 f0           breq    .+18            ; 0xafe <parse_command+0x72>
+     aec:      8d 34           cpi     r24, 0x4D       ; 77
+     aee:      39 f0           breq    .+14            ; 0xafe <parse_command+0x72>
+        action = MOVEREL;
+      } else if ( cmdbuffer[0] == 'z' || cmdbuffer[0] == 'Z' ) {
+     af0:      8a 37           cpi     r24, 0x7A       ; 122
+     af2:      39 f0           breq    .+14            ; 0xb02 <parse_command+0x76>
+     af4:      8a 35           cpi     r24, 0x5A       ; 90
+     af6:      39 f4           brne    .+14            ; 0xb06 <parse_command+0x7a>
+     af8:      04 c0           rjmp    .+8             ; 0xb02 <parse_command+0x76>
+      curCmdLen = cmdPos;
+      cmdPos = 0;
+      
+      
+      if (cmdbuffer[0] == 'g' || cmdbuffer[0] == 'G') { // goto command
+        action = GOTO;
+     afa:      01 e0           ldi     r16, 0x01       ; 1
+     afc:      05 c0           rjmp    .+10            ; 0xb08 <parse_command+0x7c>
+      } else if ( cmdbuffer[0] == 'm' || cmdbuffer[0] == 'M') {
+        action = MOVEREL;
+     afe:      02 e0           ldi     r16, 0x02       ; 2
+     b00:      03 c0           rjmp    .+6             ; 0xb08 <parse_command+0x7c>
+      } else if ( cmdbuffer[0] == 'z' || cmdbuffer[0] == 'Z' ) {
+        action = SETZERO;
+     b02:      03 e0           ldi     r16, 0x03       ; 3
+     b04:      01 c0           rjmp    .+2             ; 0xb08 <parse_command+0x7c>
+      } else {
+        action = POSITION;
+     b06:      00 e0           ldi     r16, 0x00       ; 0
+      }
+      
+      if (cmdbuffer[1] == 'x' || cmdbuffer[1] == 'X') {
+     b08:      80 91 af 02     lds     r24, 0x02AF
+     b0c:      88 37           cpi     r24, 0x78       ; 120
+     b0e:      39 f0           breq    .+14            ; 0xb1e <parse_command+0x92>
+     b10:      88 35           cpi     r24, 0x58       ; 88
+     b12:      29 f0           breq    .+10            ; 0xb1e <parse_command+0x92>
+        axis = X;
+      } else if (cmdbuffer[1] == 'y' || cmdbuffer[1] == 'Y') {
+     b14:      89 37           cpi     r24, 0x79       ; 121
+     b16:      29 f0           breq    .+10            ; 0xb22 <parse_command+0x96>
+#define POSITION 0
+#define GOTO 1
+#define MOVEREL 2
+#define SETZERO 3
+
+void parse_command(void){
+     b18:      11 e0           ldi     r17, 0x01       ; 1
+     b1a:      89 35           cpi     r24, 0x59       ; 89
+     b1c:      19 f0           breq    .+6             ; 0xb24 <parse_command+0x98>
+      } else {
+        action = POSITION;
+      }
+      
+      if (cmdbuffer[1] == 'x' || cmdbuffer[1] == 'X') {
+        axis = X;
+     b1e:      10 e0           ldi     r17, 0x00       ; 0
+     b20:      01 c0           rjmp    .+2             ; 0xb24 <parse_command+0x98>
+      } else if (cmdbuffer[1] == 'y' || cmdbuffer[1] == 'Y') {
+        axis = Y;
+     b22:      11 e0           ldi     r17, 0x01       ; 1
+      }
+      
+      // if you expect coordinate, parse number!
+      if (action == GOTO || action == MOVEREL){
+     b24:      80 2f           mov     r24, r16
+     b26:      81 50           subi    r24, 0x01       ; 1
+     b28:      82 30           cpi     r24, 0x02       ; 2
+     b2a:      08 f0           brcs    .+2             ; 0xb2e <parse_command+0xa2>
+     b2c:      6d c0           rjmp    .+218           ; 0xc08 <parse_command+0x17c>
+
+        predot = 0;
+     b2e:      10 92 9d 02     sts     0x029D, r1
+     b32:      10 92 9c 02     sts     0x029C, r1
+        postdot = 0;
+     b36:      10 92 9b 02     sts     0x029B, r1
+     b3a:      10 92 9a 02     sts     0x029A, r1
+        num_sign = 1;
+        num_start = 0;
+     b3e:      10 92 97 02     sts     0x0297, r1
+        nums_found = 0;
+     b42:      10 92 96 02     sts     0x0296, r1
+        
+        for (uint8_t i=2; i<=curCmdLen; i++) {
+     b46:      92 e0           ldi     r25, 0x02       ; 2
+     b48:      f9 2e           mov     r15, r25
+      // if you expect coordinate, parse number!
+      if (action == GOTO || action == MOVEREL){
+
+        predot = 0;
+        postdot = 0;
+        num_sign = 1;
+     b4a:      dd 24           eor     r13, r13
+     b4c:      d3 94           inc     r13
+                  predot = atoi(numbuffer);
+                } else { // its the postdot digits
+                  uint8_t postdotlen = i-num_start;
+                  if (postdotlen < 3){ // if too small ,fill with zeros
+                    for( uint8_t j = postdotlen; j <=2; j++) {
+                      numbuffer[j] = '0';
+     b4e:      80 e3           ldi     r24, 0x30       ; 48
+     b50:      c8 2e           mov     r12, r24
+        postdot = 0;
+        num_sign = 1;
+        num_start = 0;
+        nums_found = 0;
+        
+        for (uint8_t i=2; i<=curCmdLen; i++) {
+     b52:      54 c0           rjmp    .+168           ; 0xbfc <parse_command+0x170>
+           if ( num_start == 0 && cmdbuffer[i] == '-' ) { // if you find a minus before
+     b54:      e0 90 97 02     lds     r14, 0x0297
+     b58:      ee 20           and     r14, r14
+     b5a:      49 f4           brne    .+18            ; 0xb6e <parse_command+0xe2>
+     b5c:      ef 2d           mov     r30, r15
+     b5e:      f0 e0           ldi     r31, 0x00       ; 0
+     b60:      e2 55           subi    r30, 0x52       ; 82
+     b62:      fd 4f           sbci    r31, 0xFD       ; 253
+     b64:      80 81           ld      r24, Z
+     b66:      8d 32           cpi     r24, 0x2D       ; 45
+     b68:      11 f4           brne    .+4             ; 0xb6e <parse_command+0xe2>
+            // you find a digit, it's a negative number
+             num_sign = -1;
+     b6a:      dd 24           eor     r13, r13
+     b6c:      da 94           dec     r13
+           }
+           
+           if ( cmdbuffer[i] >= 48 && cmdbuffer[i] <= 57 ){ // is it a number?
+     b6e:      cf 2d           mov     r28, r15
+     b70:      d0 e0           ldi     r29, 0x00       ; 0
+     b72:      fe 01           movw    r30, r28
+     b74:      e2 55           subi    r30, 0x52       ; 82
+     b76:      fd 4f           sbci    r31, 0xFD       ; 253
+     b78:      80 81           ld      r24, Z
+     b7a:      80 53           subi    r24, 0x30       ; 48
+     b7c:      8a 30           cpi     r24, 0x0A       ; 10
+     b7e:      28 f4           brcc    .+10            ; 0xb8a <parse_command+0xfe>
+             if ( num_start == 0) { // this is the first digit in the string
+     b80:      ee 20           and     r14, r14
+     b82:      d9 f5           brne    .+118           ; 0xbfa <parse_command+0x16e>
+               num_start = i;
+     b84:      f0 92 97 02     sts     0x0297, r15
+     b88:      38 c0           rjmp    .+112           ; 0xbfa <parse_command+0x16e>
+             }
+           } else { // no digit!
+             if ( num_start != 0) { // digits have been found before
+     b8a:      ee 20           and     r14, r14
+     b8c:      b1 f1           breq    .+108           ; 0xbfa <parse_command+0x16e>
+                strncpy(numbuffer,cmdbuffer+num_start,i-num_start); // copy number found to
+     b8e:      6e 2d           mov     r22, r14
+     b90:      70 e0           ldi     r23, 0x00       ; 0
+     b92:      c6 1b           sub     r28, r22
+     b94:      d7 0b           sbc     r29, r23
+     b96:      62 55           subi    r22, 0x52       ; 82
+     b98:      7d 4f           sbci    r23, 0xFD       ; 253
+     b9a:      8e e9           ldi     r24, 0x9E       ; 158
+     b9c:      92 e0           ldi     r25, 0x02       ; 2
+     b9e:      ae 01           movw    r20, r28
+     ba0:      0e 94 29 0f     call    0x1e52  ; 0x1e52 <strncpy>
+                // numbuffer
+                numbuffer[i-num_start] = '\0'; // make sure it's always a terminated string
+     ba4:      c2 56           subi    r28, 0x62       ; 98
+     ba6:      dd 4f           sbci    r29, 0xFD       ; 253
+     ba8:      18 82           st      Y, r1
+                nums_found++;
+     baa:      80 91 96 02     lds     r24, 0x0296
+     bae:      8f 5f           subi    r24, 0xFF       ; 255
+     bb0:      80 93 96 02     sts     0x0296, r24
+                if(nums_found == 1) { // its the predot digits
+     bb4:      81 30           cpi     r24, 0x01       ; 1
+     bb6:      49 f4           brne    .+18            ; 0xbca <parse_command+0x13e>
+                  predot = atoi(numbuffer);
+     bb8:      8e e9           ldi     r24, 0x9E       ; 158
+     bba:      92 e0           ldi     r25, 0x02       ; 2
+     bbc:      0e 94 0c 0f     call    0x1e18  ; 0x1e18 <atoi>
+     bc0:      90 93 9d 02     sts     0x029D, r25
+     bc4:      80 93 9c 02     sts     0x029C, r24
+     bc8:      16 c0           rjmp    .+44            ; 0xbf6 <parse_command+0x16a>
+                } else { // its the postdot digits
+                  uint8_t postdotlen = i-num_start;
+     bca:      8f 2d           mov     r24, r15
+     bcc:      8e 19           sub     r24, r14
+                  if (postdotlen < 3){ // if too small ,fill with zeros
+     bce:      83 30           cpi     r24, 0x03       ; 3
+     bd0:      40 f4           brcc    .+16            ; 0xbe2 <parse_command+0x156>
+                    for( uint8_t j = postdotlen; j <=2; j++) {
+                      numbuffer[j] = '0';
+     bd2:      e8 2f           mov     r30, r24
+     bd4:      f0 e0           ldi     r31, 0x00       ; 0
+     bd6:      e2 56           subi    r30, 0x62       ; 98
+     bd8:      fd 4f           sbci    r31, 0xFD       ; 253
+     bda:      c0 82           st      Z, r12
+                if(nums_found == 1) { // its the predot digits
+                  predot = atoi(numbuffer);
+                } else { // its the postdot digits
+                  uint8_t postdotlen = i-num_start;
+                  if (postdotlen < 3){ // if too small ,fill with zeros
+                    for( uint8_t j = postdotlen; j <=2; j++) {
+     bdc:      8f 5f           subi    r24, 0xFF       ; 255
+     bde:      83 30           cpi     r24, 0x03       ; 3
+     be0:      c1 f7           brne    .-16            ; 0xbd2 <parse_command+0x146>
+                      numbuffer[j] = '0';
+                    }
+                  }
+                  // crop the number to three post dot digits
+                  numbuffer[3] = '\0';
+     be2:      10 92 a1 02     sts     0x02A1, r1
+                  
+                  postdot = atoi(numbuffer);
+     be6:      8e e9           ldi     r24, 0x9E       ; 158
+     be8:      92 e0           ldi     r25, 0x02       ; 2
+     bea:      0e 94 0c 0f     call    0x1e18  ; 0x1e18 <atoi>
+     bee:      90 93 9b 02     sts     0x029B, r25
+     bf2:      80 93 9a 02     sts     0x029A, r24
+                }
+                num_start = 0;
+     bf6:      10 92 97 02     sts     0x0297, r1
+        postdot = 0;
+        num_sign = 1;
+        num_start = 0;
+        nums_found = 0;
+        
+        for (uint8_t i=2; i<=curCmdLen; i++) {
+     bfa:      f3 94           inc     r15
+     bfc:      80 91 98 02     lds     r24, 0x0298
+     c00:      8f 15           cp      r24, r15
+     c02:      08 f0           brcs    .+2             ; 0xc06 <parse_command+0x17a>
+     c04:      a7 cf           rjmp    .-178           ; 0xb54 <parse_command+0xc8>
+     c06:      02 c0           rjmp    .+4             ; 0xc0c <parse_command+0x180>
+  static char cmdbuffer[16];
+  static char numbuffer[16];
+  static uint16_t predot = 0,postdot = 0;
+  static uint8_t cmdPos, curCmdLen, num_start = 0, nums_found = 0;
+  uint8_t action=0,axis=0;
+  int8_t num_sign = 1;
+     c08:      dd 24           eor     r13, r13
+     c0a:      d3 94           inc     r13
+        
+      }
+      
+      int16_t steps = 0,dest=0;
+      
+      switch (action) {
+     c0c:      02 30           cpi     r16, 0x02       ; 2
+     c0e:      09 f4           brne    .+2             ; 0xc12 <parse_command+0x186>
+     c10:      5f c0           rjmp    .+190           ; 0xcd0 <parse_command+0x244>
+     c12:      03 30           cpi     r16, 0x03       ; 3
+     c14:      09 f4           brne    .+2             ; 0xc18 <parse_command+0x18c>
+     c16:      ba c0           rjmp    .+372           ; 0xd8c <parse_command+0x300>
+     c18:      01 30           cpi     r16, 0x01       ; 1
+     c1a:      09 f0           breq    .+2             ; 0xc1e <parse_command+0x192>
+     c1c:      bf c0           rjmp    .+382           ; 0xd9c <parse_command+0x310>
+        case GOTO:
+          uart_puts("GOTO ");
+     c1e:      87 e1           ldi     r24, 0x17       ; 23
+     c20:      91 e0           ldi     r25, 0x01       ; 1
+     c22:      d8 dd           rcall   .-1104          ; 0x7d4 <uart_puts>
+          uart_putc(88+axis);// x or y
+     c24:      81 2f           mov     r24, r17
+     c26:      88 5a           subi    r24, 0xA8       ; 168
+     c28:      cd dd           rcall   .-1126          ; 0x7c4 <uart_putc>
+          uart_print_signed_number(predot*num_sign,3);
+     c2a:      cd 2d           mov     r28, r13
+     c2c:      dd 27           eor     r29, r29
+     c2e:      c7 fd           sbrc    r28, 7
+     c30:      d0 95           com     r29
+     c32:      60 91 9c 02     lds     r22, 0x029C
+     c36:      70 91 9d 02     lds     r23, 0x029D
+     c3a:      ce 01           movw    r24, r28
+     c3c:      0e 94 b1 0e     call    0x1d62  ; 0x1d62 <__mulhi3>
+     c40:      bc 01           movw    r22, r24
+     c42:      80 e0           ldi     r24, 0x00       ; 0
+     c44:      90 e0           ldi     r25, 0x00       ; 0
+     c46:      43 e0           ldi     r20, 0x03       ; 3
+     c48:      5c de           rcall   .-840           ; 0x902 <uart_print_signed_number>
+          uart_putc('.');
+     c4a:      8e e2           ldi     r24, 0x2E       ; 46
+     c4c:      bb dd           rcall   .-1162          ; 0x7c4 <uart_putc>
+          uart_print_number(postdot,3);
+     c4e:      60 91 9a 02     lds     r22, 0x029A
+     c52:      70 91 9b 02     lds     r23, 0x029B
+     c56:      80 e0           ldi     r24, 0x00       ; 0
+     c58:      90 e0           ldi     r25, 0x00       ; 0
+     c5a:      43 e0           ldi     r20, 0x03       ; 3
+     c5c:      42 de           rcall   .-892           ; 0x8e2 <uart_print_number>
+          uart_puts("\r\n"); 
+     c5e:      84 e1           ldi     r24, 0x14       ; 20
+     c60:      91 e0           ldi     r25, 0x01       ; 1
+     c62:      b8 dd           rcall   .-1168          ; 0x7d4 <uart_puts>
+          
+          dest = num_sign *( predot*24 +(postdot*10)/416);
+     c64:      80 91 9a 02     lds     r24, 0x029A
+     c68:      90 91 9b 02     lds     r25, 0x029B
+     c6c:      6a e0           ldi     r22, 0x0A       ; 10
+     c6e:      70 e0           ldi     r23, 0x00       ; 0
+     c70:      0e 94 b1 0e     call    0x1d62  ; 0x1d62 <__mulhi3>
+     c74:      60 ea           ldi     r22, 0xA0       ; 160
+     c76:      71 e0           ldi     r23, 0x01       ; 1
+     c78:      0e 94 c3 0e     call    0x1d86  ; 0x1d86 <__udivmodhi4>
+     c7c:      9b 01           movw    r18, r22
+     c7e:      80 91 9c 02     lds     r24, 0x029C
+     c82:      90 91 9d 02     lds     r25, 0x029D
+     c86:      68 e1           ldi     r22, 0x18       ; 24
+     c88:      70 e0           ldi     r23, 0x00       ; 0
+     c8a:      0e 94 b1 0e     call    0x1d62  ; 0x1d62 <__mulhi3>
+     c8e:      28 0f           add     r18, r24
+     c90:      39 1f           adc     r19, r25
+     c92:      ce 01           movw    r24, r28
+     c94:      b9 01           movw    r22, r18
+     c96:      0e 94 b1 0e     call    0x1d62  ; 0x1d62 <__mulhi3>
+          
+          if (axis == X) {
+     c9a:      11 23           and     r17, r17
+     c9c:      69 f4           brne    .+26            ; 0xcb8 <parse_command+0x22c>
+            steps = dest - plate_pos_x;
+     c9e:      20 91 7a 01     lds     r18, 0x017A
+     ca2:      30 91 7b 01     lds     r19, 0x017B
+     ca6:      e8 2e           mov     r14, r24
+     ca8:      e7 01           movw    r28, r14
+     caa:      7e 01           movw    r14, r28
+     cac:      f9 2e           mov     r15, r25
+     cae:      e7 01           movw    r28, r14
+     cb0:      c2 1b           sub     r28, r18
+     cb2:      d3 0b           sbc     r29, r19
+            move_plate(steps,0);
+     cb4:      ce 01           movw    r24, r28
+     cb6:      4d c0           rjmp    .+154           ; 0xd52 <parse_command+0x2c6>
+            plate_pos_x += steps;
+          } else if (axis == Y) {
+            steps = dest - plate_pos_y;
+     cb8:      20 91 7c 01     lds     r18, 0x017C
+     cbc:      30 91 7d 01     lds     r19, 0x017D
+     cc0:      e8 2e           mov     r14, r24
+     cc2:      e7 01           movw    r28, r14
+     cc4:      7e 01           movw    r14, r28
+     cc6:      f9 2e           mov     r15, r25
+     cc8:      e7 01           movw    r28, r14
+     cca:      c2 1b           sub     r28, r18
+     ccc:      d3 0b           sbc     r29, r19
+     cce:      4f c0           rjmp    .+158           ; 0xd6e <parse_command+0x2e2>
+          }
+          pos_report();
+          
+          break;
+        case MOVEREL:
+          uart_puts("MOVE ");
+     cd0:      8d e1           ldi     r24, 0x1D       ; 29
+     cd2:      91 e0           ldi     r25, 0x01       ; 1
+     cd4:      7f dd           rcall   .-1282          ; 0x7d4 <uart_puts>
+          uart_putc(88+axis);// x or y
+     cd6:      81 2f           mov     r24, r17
+     cd8:      88 5a           subi    r24, 0xA8       ; 168
+     cda:      74 dd           rcall   .-1304          ; 0x7c4 <uart_putc>
+          uart_print_signed_number(predot*num_sign,3);
+     cdc:      cd 2d           mov     r28, r13
+     cde:      dd 27           eor     r29, r29
+     ce0:      c7 fd           sbrc    r28, 7
+     ce2:      d0 95           com     r29
+     ce4:      60 91 9c 02     lds     r22, 0x029C
+     ce8:      70 91 9d 02     lds     r23, 0x029D
+     cec:      ce 01           movw    r24, r28
+     cee:      0e 94 b1 0e     call    0x1d62  ; 0x1d62 <__mulhi3>
+     cf2:      bc 01           movw    r22, r24
+     cf4:      80 e0           ldi     r24, 0x00       ; 0
+     cf6:      90 e0           ldi     r25, 0x00       ; 0
+     cf8:      43 e0           ldi     r20, 0x03       ; 3
+     cfa:      03 de           rcall   .-1018          ; 0x902 <uart_print_signed_number>
+          uart_putc('.');
+     cfc:      8e e2           ldi     r24, 0x2E       ; 46
+     cfe:      62 dd           rcall   .-1340          ; 0x7c4 <uart_putc>
+          uart_print_number(postdot,3);
+     d00:      60 91 9a 02     lds     r22, 0x029A
+     d04:      70 91 9b 02     lds     r23, 0x029B
+     d08:      80 e0           ldi     r24, 0x00       ; 0
+     d0a:      90 e0           ldi     r25, 0x00       ; 0
+     d0c:      43 e0           ldi     r20, 0x03       ; 3
+     d0e:      e9 dd           rcall   .-1070          ; 0x8e2 <uart_print_number>
+          uart_puts("\r\n"); 
+     d10:      84 e1           ldi     r24, 0x14       ; 20
+     d12:      91 e0           ldi     r25, 0x01       ; 1
+     d14:      5f dd           rcall   .-1346          ; 0x7d4 <uart_puts>
+          
+          steps = num_sign *( predot*24 +(postdot*10)/416);
+     d16:      80 91 9a 02     lds     r24, 0x029A
+     d1a:      90 91 9b 02     lds     r25, 0x029B
+     d1e:      6a e0           ldi     r22, 0x0A       ; 10
+     d20:      70 e0           ldi     r23, 0x00       ; 0
+     d22:      0e 94 b1 0e     call    0x1d62  ; 0x1d62 <__mulhi3>
+     d26:      60 ea           ldi     r22, 0xA0       ; 160
+     d28:      71 e0           ldi     r23, 0x01       ; 1
+     d2a:      0e 94 c3 0e     call    0x1d86  ; 0x1d86 <__udivmodhi4>
+     d2e:      9b 01           movw    r18, r22
+     d30:      80 91 9c 02     lds     r24, 0x029C
+     d34:      90 91 9d 02     lds     r25, 0x029D
+     d38:      68 e1           ldi     r22, 0x18       ; 24
+     d3a:      70 e0           ldi     r23, 0x00       ; 0
+     d3c:      0e 94 b1 0e     call    0x1d62  ; 0x1d62 <__mulhi3>
+     d40:      28 0f           add     r18, r24
+     d42:      39 1f           adc     r19, r25
+     d44:      ce 01           movw    r24, r28
+     d46:      b9 01           movw    r22, r18
+     d48:      0e 94 b1 0e     call    0x1d62  ; 0x1d62 <__mulhi3>
+     d4c:      ec 01           movw    r28, r24
+          
+          if (axis == X) {
+     d4e:      11 23           and     r17, r17
+     d50:      71 f4           brne    .+28            ; 0xd6e <parse_command+0x2e2>
+            move_plate(steps,0);
+     d52:      60 e0           ldi     r22, 0x00       ; 0
+     d54:      70 e0           ldi     r23, 0x00       ; 0
+     d56:      32 de           rcall   .-924           ; 0x9bc <move_plate>
+            plate_pos_x += steps;
+     d58:      80 91 7a 01     lds     r24, 0x017A
+     d5c:      90 91 7b 01     lds     r25, 0x017B
+     d60:      8c 0f           add     r24, r28
+     d62:      9d 1f           adc     r25, r29
+     d64:      90 93 7b 01     sts     0x017B, r25
+     d68:      80 93 7a 01     sts     0x017A, r24
+     d6c:      17 c0           rjmp    .+46            ; 0xd9c <parse_command+0x310>
+          } else if (axis == Y) {
+            move_plate(0,steps);
+     d6e:      80 e0           ldi     r24, 0x00       ; 0
+     d70:      90 e0           ldi     r25, 0x00       ; 0
+     d72:      be 01           movw    r22, r28
+     d74:      23 de           rcall   .-954           ; 0x9bc <move_plate>
+            plate_pos_y += steps;
+     d76:      80 91 7c 01     lds     r24, 0x017C
+     d7a:      90 91 7d 01     lds     r25, 0x017D
+     d7e:      8c 0f           add     r24, r28
+     d80:      9d 1f           adc     r25, r29
+     d82:      90 93 7d 01     sts     0x017D, r25
+     d86:      80 93 7c 01     sts     0x017C, r24
+     d8a:      08 c0           rjmp    .+16            ; 0xd9c <parse_command+0x310>
+          }
+          pos_report();
+          break;
+          
+        case SETZERO:
+          plate_pos_x = 0;
+     d8c:      10 92 7b 01     sts     0x017B, r1
+     d90:      10 92 7a 01     sts     0x017A, r1
+          plate_pos_y = 0;
+     d94:      10 92 7d 01     sts     0x017D, r1
+     d98:      10 92 7c 01     sts     0x017C, r1
+          pos_report();
+          break;
+          
+        case POSITION:
+          pos_report();
+     d9c:      5a de           rcall   .-844           ; 0xa52 <pos_report>
+          break;
+     d9e:      0b c0           rjmp    .+22            ; 0xdb6 <parse_command+0x32a>
+      }
+      
+      
+      
+    } else { // queue command
+      cmdbuffer[cmdPos++] = byte;
+     da0:      90 91 99 02     lds     r25, 0x0299
+     da4:      e9 2f           mov     r30, r25
+     da6:      f0 e0           ldi     r31, 0x00       ; 0
+     da8:      e2 55           subi    r30, 0x52       ; 82
+     daa:      fd 4f           sbci    r31, 0xFD       ; 253
+     dac:      80 83           st      Z, r24
+     dae:      9f 5f           subi    r25, 0xFF       ; 255
+     db0:      90 93 99 02     sts     0x0299, r25
+      uart_putc(byte);
+     db4:      07 dd           rcall   .-1522          ; 0x7c4 <uart_putc>
+    }
+  }
+}
+     db6:      df 91           pop     r29
+     db8:      cf 91           pop     r28
+     dba:      1f 91           pop     r17
+     dbc:      0f 91           pop     r16
+     dbe:      ff 90           pop     r15
+     dc0:      ef 90           pop     r14
+     dc2:      df 90           pop     r13
+     dc4:      cf 90           pop     r12
+     dc6:      08 95           ret
+
+00000dc8 <main>:
 
 int main(void)
 {
-     a34:      af 92           push    r10
-     a36:      bf 92           push    r11
-     a38:      cf 92           push    r12
-     a3a:      df 92           push    r13
-     a3c:      ef 92           push    r14
-     a3e:      ff 92           push    r15
-     a40:      0f 93           push    r16
-     a42:      1f 93           push    r17
-     a44:      df 93           push    r29
-     a46:      cf 93           push    r28
-     a48:      cd b7           in      r28, 0x3d       ; 61
-     a4a:      de b7           in      r29, 0x3e       ; 62
-     a4c:      60 97           sbiw    r28, 0x10       ; 16
-     a4e:      0f b6           in      r0, 0x3f        ; 63
-     a50:      f8 94           cli
-     a52:      de bf           out     0x3e, r29       ; 62
-     a54:      0f be           out     0x3f, r0        ; 63
-     a56:      cd bf           out     0x3d, r28       ; 61
+     dc8:      0f 93           push    r16
+     dca:      1f 93           push    r17
+     dcc:      df 93           push    r29
+     dce:      cf 93           push    r28
+     dd0:      0f 92           push    r0
+     dd2:      cd b7           in      r28, 0x3d       ; 61
+     dd4:      de b7           in      r29, 0x3e       ; 62
  
   init_motors();
-     a58:      60 df           rcall   .-320           ; 0x91a <init_motors>
+     dd6:      b3 dd           rcall   .-1178          ; 0x93e <init_motors>
   
   char dummy;
   uint8_t field_val = 0;
   SetupHardware();
-     a5a:      32 de           rcall   .-924           ; 0x6c0 <SetupHardware>
+     dd8:      46 dc           rcall   .-1908          ; 0x666 <SetupHardware>
 
 
 
   RingBuffer_InitBuffer(&USBtoUSART_Buffer, USBtoUSART_Buffer_Data, sizeof(USBtoUSART_Buffer_Data));
-     a5c:      8a e6           ldi     r24, 0x6A       ; 106
-     a5e:      91 e0           ldi     r25, 0x01       ; 1
-     a60:      66 e7           ldi     r22, 0x76       ; 118
-     a62:      71 e0           ldi     r23, 0x01       ; 1
-     a64:      2e dc           rcall   .-1956          ; 0x2c2 <RingBuffer_InitBuffer.clone.0>
+     dda:      8e e7           ldi     r24, 0x7E       ; 126
+     ddc:      91 e0           ldi     r25, 0x01       ; 1
+     dde:      6a e8           ldi     r22, 0x8A       ; 138
+     de0:      71 e0           ldi     r23, 0x01       ; 1
+     de2:      6f da           rcall   .-2850          ; 0x2c2 <RingBuffer_InitBuffer.clone.0>
   RingBuffer_InitBuffer(&USARTtoUSB_Buffer, USARTtoUSB_Buffer_Data, sizeof(USARTtoUSB_Buffer_Data));
-     a66:      86 ef           ldi     r24, 0xF6       ; 246
-     a68:      91 e0           ldi     r25, 0x01       ; 1
-     a6a:      62 e0           ldi     r22, 0x02       ; 2
-     a6c:      72 e0           ldi     r23, 0x02       ; 2
-     a6e:      29 dc           rcall   .-1966          ; 0x2c2 <RingBuffer_InitBuffer.clone.0>
+     de4:      8a e0           ldi     r24, 0x0A       ; 10
+     de6:      92 e0           ldi     r25, 0x02       ; 2
+     de8:      66 e1           ldi     r22, 0x16       ; 22
+     dea:      72 e0           ldi     r23, 0x02       ; 2
+     dec:      6a da           rcall   .-2860          ; 0x2c2 <RingBuffer_InitBuffer.clone.0>
                        static inline void GlobalInterruptEnable(void)
                        {
                                GCC_MEMORY_BARRIER();
 
                                #if (ARCH == ARCH_AVR8)
                                sei();
-     a70:      78 94           sei
+     dee:      78 94           sei
 
 //   LEDs_SetAllLEDs(LEDMASK_USB_NOTREADY);
   GlobalInterruptEnable();
 
   touchpad_init(); // you need to call this to setup the I/O pin!
-     a72:      69 dd           rcall   .-1326          ; 0x546 <touchpad_init>
-     a74:      8f ef           ldi     r24, 0xFF       ; 255
-     a76:      99 e6           ldi     r25, 0x69       ; 105
-     a78:      a8 e1           ldi     r26, 0x18       ; 24
-     a7a:      81 50           subi    r24, 0x01       ; 1
-     a7c:      90 40           sbci    r25, 0x00       ; 0
-     a7e:      a0 40           sbci    r26, 0x00       ; 0
-     a80:      e1 f7           brne    .-8             ; 0xa7a <main+0x46>
-     a82:      00 c0           rjmp    .+0             ; 0xa84 <main+0x50>
-     a84:      00 00           nop
+     df0:      aa db           rcall   .-2220          ; 0x546 <touchpad_init>
+     df2:      8f ef           ldi     r24, 0xFF       ; 255
+     df4:      99 e6           ldi     r25, 0x69       ; 105
+     df6:      a8 e1           ldi     r26, 0x18       ; 24
+     df8:      81 50           subi    r24, 0x01       ; 1
+     dfa:      90 40           sbci    r25, 0x00       ; 0
+     dfc:      a0 40           sbci    r26, 0x00       ; 0
+     dfe:      e1 f7           brne    .-8             ; 0xdf8 <main+0x30>
+     e00:      00 c0           rjmp    .+0             ; 0xe02 <main+0x3a>
+     e02:      00 00           nop
   _delay_ms(500);
   sei();
-     a86:      78 94           sei
+     e04:      78 94           sei
   
   uint16_t loopcounter=0;
 
-  char stringbuffer[16];
 
-  touchpad_set_abs_mode();// tell the touchpad you want to use it in the "absolute mode"
-     a88:      6f dd           rcall   .-1314          ; 0x568 <touchpad_set_abs_mode>
-  }
-  // end of absolute mode demo block 
-// 
-// #elif DEMO_MODE == RELATIVE_MODE
-//   begin of relative mode demo block
+
   uart_puts("you selected the relative position demo modus:\n\r");
-     a8a:      80 e0           ldi     r24, 0x00       ; 0
-     a8c:      91 e0           ldi     r25, 0x01       ; 1
-     a8e:      ca de           rcall   .-620           ; 0x824 <uart_puts>
+     e06:      83 e2           ldi     r24, 0x23       ; 35
+     e08:      91 e0           ldi     r25, 0x01       ; 1
+     e0a:      e4 dc           rcall   .-1592          ; 0x7d4 <uart_puts>
   touchpad_set_rel_mode_100dpi();// use touchpad in relative mode
-     a90:      89 dd           rcall   .-1262          ; 0x5a4 <touchpad_set_rel_mode_100dpi>
+     e0c:      ad db           rcall   .-2214          ; 0x568 <touchpad_set_rel_mode_100dpi>
 //  touchpad_set_rel_mode_200dpi(); // uncomment this line if you want double resolution
-  uint8_t x, y = 0;
-     a92:      dd 24           eor     r13, r13
-    } else {
-      y = (y + dy);
-    }
-
-    uart_puts("x_pos: ");
-    my_uitoa(x, stringbuffer, 4);
-     a94:      8e 01           movw    r16, r28
-     a96:      0f 5f           subi    r16, 0xFF       ; 255
-     a98:      1f 4f           sbci    r17, 0xFF       ; 255
-  uint8_t x, y = 0;
+  int16_t x, y = 0;
   int8_t dx, dy = 0;
+  uint8_t busy = 0, last_busy = 0;
+     e0e:      10 e0           ldi     r17, 0x00       ; 0
 
   while (1) {
 
     Usb2SerialTask();
-     a9a:      b8 dd           rcall   .-1168          ; 0x60c <Usb2SerialTask>
+     e10:      df db           rcall   .-2114          ; 0x5d0 <Usb2SerialTask>
+//     loopcounter++;
 //     if(loopcounter<2000) {
 //       continue;
 //     }
 //     loopcounter=0;
-
+    parse_command(); // read data from virtual comport
+     e12:      3c de           rcall   .-904           ; 0xa8c <parse_command>
     touchpad_read(); // read data from touchpad
-     a9c:      5c dd           rcall   .-1352          ; 0x556 <touchpad_read>
+     e14:      a0 db           rcall   .-2240          ; 0x556 <touchpad_read>
 
     dx = delta_x();// returns the amount your finger has moved in x direction since last readout
-     a9e:      a6 dd           rcall   .-1204          ; 0x5ec <delta_x>
-     aa0:      a8 2e           mov     r10, r24
+     e16:      cc db           rcall   .-2152          ; 0x5b0 <delta_x>
+     e18:      08 2f           mov     r16, r24
     dy = delta_y();// returns the amount your finger has moved in y direction since last readout
-     aa2:      94 dd           rcall   .-1240          ; 0x5cc <delta_y>
+     e1a:      ba db           rcall   .-2188          ; 0x590 <delta_y>
 
     // increment/decrement some dummy variables with the
-    if (x + dx > 255) {
-     aa4:      ea 2c           mov     r14, r10
-     aa6:      ff 24           eor     r15, r15
-     aa8:      e7 fc           sbrc    r14, 7
-     aaa:      f0 94           com     r15
-     aac:      97 01           movw    r18, r14
-     aae:      2c 0d           add     r18, r12
-     ab0:      31 1d           adc     r19, r1
-     ab2:      2f 3f           cpi     r18, 0xFF       ; 255
-     ab4:      31 05           cpc     r19, r1
-     ab6:      09 f0           breq    .+2             ; 0xaba <main+0x86>
-     ab8:      24 f4           brge    .+8             ; 0xac2 <main+0x8e>
-      x = 255;
-    } else if (x + dx < 0) {
-     aba:      37 fd           sbrc    r19, 7
-     abc:      05 c0           rjmp    .+10            ; 0xac8 <main+0x94>
-      x = 0;
-    } else {
-      x = (x + dx);
-     abe:      ca 0c           add     r12, r10
-     ac0:      04 c0           rjmp    .+8             ; 0xaca <main+0x96>
-    dx = delta_x();// returns the amount your finger has moved in x direction since last readout
-    dy = delta_y();// returns the amount your finger has moved in y direction since last readout
-
-    // increment/decrement some dummy variables with the
-    if (x + dx > 255) {
-      x = 255;
-     ac2:      cc 24           eor     r12, r12
-     ac4:      ca 94           dec     r12
-     ac6:      01 c0           rjmp    .+2             ; 0xaca <main+0x96>
-    } else if (x + dx < 0) {
-      x = 0;
-     ac8:      cc 24           eor     r12, r12
-    } else {
-      x = (x + dx);
-    }
-
-    if (y + dy > 255) {
-     aca:      a8 2e           mov     r10, r24
-     acc:      bb 24           eor     r11, r11
-     ace:      a7 fc           sbrc    r10, 7
-     ad0:      b0 94           com     r11
-     ad2:      95 01           movw    r18, r10
-     ad4:      2d 0d           add     r18, r13
-     ad6:      31 1d           adc     r19, r1
-     ad8:      2f 3f           cpi     r18, 0xFF       ; 255
-     ada:      31 05           cpc     r19, r1
-     adc:      09 f0           breq    .+2             ; 0xae0 <main+0xac>
-     ade:      24 f4           brge    .+8             ; 0xae8 <main+0xb4>
-      y = 255;
-    } else if (y + dy < 0) {
-     ae0:      37 fd           sbrc    r19, 7
-     ae2:      05 c0           rjmp    .+10            ; 0xaee <main+0xba>
-      y = 0;
-    } else {
-      y = (y + dy);
-     ae4:      d8 0e           add     r13, r24
-     ae6:      04 c0           rjmp    .+8             ; 0xaf0 <main+0xbc>
-    } else {
-      x = (x + dx);
-    }
-
-    if (y + dy > 255) {
-      y = 255;
-     ae8:      dd 24           eor     r13, r13
-     aea:      da 94           dec     r13
-     aec:      01 c0           rjmp    .+2             ; 0xaf0 <main+0xbc>
-    } else if (y + dy < 0) {
-      y = 0;
-     aee:      dd 24           eor     r13, r13
-    } else {
-      y = (y + dy);
-    }
 
-    uart_puts("x_pos: ");
-     af0:      81 e3           ldi     r24, 0x31       ; 49
-     af2:      91 e0           ldi     r25, 0x01       ; 1
-     af4:      97 de           rcall   .-722           ; 0x824 <uart_puts>
-    my_uitoa(x, stringbuffer, 4);
-     af6:      6c 2d           mov     r22, r12
-     af8:      70 e0           ldi     r23, 0x00       ; 0
-     afa:      80 e0           ldi     r24, 0x00       ; 0
-     afc:      90 e0           ldi     r25, 0x00       ; 0
-     afe:      a8 01           movw    r20, r16
-     b00:      24 e0           ldi     r18, 0x04       ; 4
-     b02:      a3 de           rcall   .-698           ; 0x84a <my_uitoa>
-    uart_puts(stringbuffer);
-     b04:      c8 01           movw    r24, r16
-     b06:      8e de           rcall   .-740           ; 0x824 <uart_puts>
-    uart_puts("  y_pos: ");
-     b08:      89 e3           ldi     r24, 0x39       ; 57
-     b0a:      91 e0           ldi     r25, 0x01       ; 1
-     b0c:      8b de           rcall   .-746           ; 0x824 <uart_puts>
-    my_uitoa(y, stringbuffer, 4);
-     b0e:      6d 2d           mov     r22, r13
-     b10:      70 e0           ldi     r23, 0x00       ; 0
-     b12:      80 e0           ldi     r24, 0x00       ; 0
-     b14:      90 e0           ldi     r25, 0x00       ; 0
-     b16:      a8 01           movw    r20, r16
-     b18:      24 e0           ldi     r18, 0x04       ; 4
-     b1a:      97 de           rcall   .-722           ; 0x84a <my_uitoa>
-    uart_puts(stringbuffer);
-     b1c:      c8 01           movw    r24, r16
-     b1e:      82 de           rcall   .-764           ; 0x824 <uart_puts>
-    uart_puts("\r");
-     b20:      83 e4           ldi     r24, 0x43       ; 67
-     b22:      91 e0           ldi     r25, 0x01       ; 1
-     b24:      7f de           rcall   .-770           ; 0x824 <uart_puts>
-     b26:      af e3           ldi     r26, 0x3F       ; 63
-     b28:      bc e9           ldi     r27, 0x9C       ; 156
-     b2a:      11 97           sbiw    r26, 0x01       ; 1
-     b2c:      f1 f7           brne    .-4             ; 0xb2a <main+0xf6>
-     b2e:      00 c0           rjmp    .+0             ; 0xb30 <main+0xfc>
-     b30:      00 00           nop
+    plate_pos_x += dx;
+     e1c:      40 2f           mov     r20, r16
+     e1e:      55 27           eor     r21, r21
+     e20:      47 fd           sbrc    r20, 7
+     e22:      50 95           com     r21
+     e24:      20 91 7a 01     lds     r18, 0x017A
+     e28:      30 91 7b 01     lds     r19, 0x017B
+     e2c:      24 0f           add     r18, r20
+     e2e:      35 1f           adc     r19, r21
+     e30:      30 93 7b 01     sts     0x017B, r19
+     e34:      20 93 7a 01     sts     0x017A, r18
+    plate_pos_y += dy;
+     e38:      68 2f           mov     r22, r24
+     e3a:      77 27           eor     r23, r23
+     e3c:      67 fd           sbrc    r22, 7
+     e3e:      70 95           com     r23
+     e40:      80 91 7c 01     lds     r24, 0x017C
+     e44:      90 91 7d 01     lds     r25, 0x017D
+     e48:      86 0f           add     r24, r22
+     e4a:      97 1f           adc     r25, r23
+     e4c:      90 93 7d 01     sts     0x017D, r25
+     e50:      80 93 7c 01     sts     0x017C, r24
     
-    _delay_ms(10);
-    move_plate(dx>>0,dy>>0);
-     b32:      c7 01           movw    r24, r14
-     b34:      b5 01           movw    r22, r10
-     b36:      3c df           rcall   .-392           ; 0x9b0 <move_plate>
-
-
-  }
-     b38:      b0 cf           rjmp    .-160           ; 0xa9a <main+0x66>
+    
+    last_busy = busy;
+    busy = move_plate(dx,dy);
+     e54:      ca 01           movw    r24, r20
+     e56:      b2 dd           rcall   .-1180          ; 0x9bc <move_plate>
+    
+    
+    if (last_busy && !(busy)){
+     e58:      11 23           and     r17, r17
+     e5a:      29 f0           breq    .+10            ; 0xe66 <main+0x9e>
+     e5c:      88 23           and     r24, r24
+     e5e:      19 f4           brne    .+6             ; 0xe66 <main+0x9e>
+      pos_report();
+     e60:      89 83           std     Y+1, r24        ; 0x01
+     e62:      f7 dd           rcall   .-1042          ; 0xa52 <pos_report>
+     e64:      89 81           ldd     r24, Y+1        ; 0x01
+     e66:      af e3           ldi     r26, 0x3F       ; 63
+     e68:      bc e9           ldi     r27, 0x9C       ; 156
+     e6a:      11 97           sbiw    r26, 0x01       ; 1
+     e6c:      f1 f7           brne    .-4             ; 0xe6a <main+0xa2>
+     e6e:      00 c0           rjmp    .+0             ; 0xe70 <main+0xa8>
+     e70:      00 00           nop
+    plate_pos_x += dx;
+    plate_pos_y += dy;
+    
+    
+    last_busy = busy;
+    busy = move_plate(dx,dy);
+     e72:      18 2f           mov     r17, r24
+     e74:      cd cf           rjmp    .-102           ; 0xe10 <main+0x48>
 
-00000b3a <CALLBACK_USB_GetDescriptor>:
+00000e76 <CALLBACK_USB_GetDescriptor>:
        const uint8_t  DescriptorNumber = (wValue & 0xFF);
 
        const void* Address = NULL;
        uint16_t    Size    = NO_DESCRIPTOR;
 
        switch (DescriptorType)
-     b3a:      92 30           cpi     r25, 0x02       ; 2
-     b3c:      29 f0           breq    .+10            ; 0xb48 <CALLBACK_USB_GetDescriptor+0xe>
-     b3e:      93 30           cpi     r25, 0x03       ; 3
-     b40:      41 f0           breq    .+16            ; 0xb52 <CALLBACK_USB_GetDescriptor+0x18>
-     b42:      91 30           cpi     r25, 0x01       ; 1
-     b44:      e9 f4           brne    .+58            ; 0xb80 <CALLBACK_USB_GetDescriptor+0x46>
-     b46:      17 c0           rjmp    .+46            ; 0xb76 <CALLBACK_USB_GetDescriptor+0x3c>
+     e76:      92 30           cpi     r25, 0x02       ; 2
+     e78:      29 f0           breq    .+10            ; 0xe84 <CALLBACK_USB_GetDescriptor+0xe>
+     e7a:      93 30           cpi     r25, 0x03       ; 3
+     e7c:      41 f0           breq    .+16            ; 0xe8e <CALLBACK_USB_GetDescriptor+0x18>
+     e7e:      91 30           cpi     r25, 0x01       ; 1
+     e80:      e9 f4           brne    .+58            ; 0xebc <CALLBACK_USB_GetDescriptor+0x46>
+     e82:      17 c0           rjmp    .+46            ; 0xeb2 <CALLBACK_USB_GetDescriptor+0x3c>
                        Address = &DeviceDescriptor;
                        Size    = sizeof(USB_Descriptor_Device_t);
                        break;
                case DTYPE_Configuration:
                        Address = &ConfigurationDescriptor;
                        Size    = sizeof(USB_Descriptor_Configuration_t);
-     b48:      2e e3           ldi     r18, 0x3E       ; 62
-     b4a:      30 e0           ldi     r19, 0x00       ; 0
+     e84:      2e e3           ldi     r18, 0x3E       ; 62
+     e86:      30 e0           ldi     r19, 0x00       ; 0
                case DTYPE_Device:
                        Address = &DeviceDescriptor;
                        Size    = sizeof(USB_Descriptor_Device_t);
                        break;
                case DTYPE_Configuration:
                        Address = &ConfigurationDescriptor;
-     b4c:      ea ea           ldi     r30, 0xAA       ; 170
-     b4e:      f0 e0           ldi     r31, 0x00       ; 0
+     e88:      ea ea           ldi     r30, 0xAA       ; 170
+     e8a:      f0 e0           ldi     r31, 0x00       ; 0
                        Size    = sizeof(USB_Descriptor_Configuration_t);
                        break;
-     b50:      1b c0           rjmp    .+54            ; 0xb88 <CALLBACK_USB_GetDescriptor+0x4e>
+     e8c:      1b c0           rjmp    .+54            ; 0xec4 <CALLBACK_USB_GetDescriptor+0x4e>
                case DTYPE_String:
                        switch (DescriptorNumber)
-     b52:      81 30           cpi     r24, 0x01       ; 1
-     b54:      41 f0           breq    .+16            ; 0xb66 <CALLBACK_USB_GetDescriptor+0x2c>
-     b56:      81 30           cpi     r24, 0x01       ; 1
-     b58:      18 f0           brcs    .+6             ; 0xb60 <CALLBACK_USB_GetDescriptor+0x26>
-     b5a:      82 30           cpi     r24, 0x02       ; 2
-     b5c:      89 f4           brne    .+34            ; 0xb80 <CALLBACK_USB_GetDescriptor+0x46>
-     b5e:      06 c0           rjmp    .+12            ; 0xb6c <CALLBACK_USB_GetDescriptor+0x32>
+     e8e:      81 30           cpi     r24, 0x01       ; 1
+     e90:      41 f0           breq    .+16            ; 0xea2 <CALLBACK_USB_GetDescriptor+0x2c>
+     e92:      81 30           cpi     r24, 0x01       ; 1
+     e94:      18 f0           brcs    .+6             ; 0xe9c <CALLBACK_USB_GetDescriptor+0x26>
+     e96:      82 30           cpi     r24, 0x02       ; 2
+     e98:      89 f4           brne    .+34            ; 0xebc <CALLBACK_USB_GetDescriptor+0x46>
+     e9a:      06 c0           rjmp    .+12            ; 0xea8 <CALLBACK_USB_GetDescriptor+0x32>
                        {
                                case 0x00:
                                        Address = &LanguageString;
                                        Size    = pgm_read_byte(&LanguageString.Header.Size);
-     b60:      e8 ee           ldi     r30, 0xE8       ; 232
-     b62:      f0 e0           ldi     r31, 0x00       ; 0
-     b64:      05 c0           rjmp    .+10            ; 0xb70 <CALLBACK_USB_GetDescriptor+0x36>
+     e9c:      e8 ee           ldi     r30, 0xE8       ; 232
+     e9e:      f0 e0           ldi     r31, 0x00       ; 0
+     ea0:      05 c0           rjmp    .+10            ; 0xeac <CALLBACK_USB_GetDescriptor+0x36>
                                        break;
                                case 0x01:
                                        Address = &ManufacturerString;
                                        Size    = pgm_read_byte(&ManufacturerString.Header.Size);
-     b66:      ec ee           ldi     r30, 0xEC       ; 236
-     b68:      f0 e0           ldi     r31, 0x00       ; 0
-     b6a:      02 c0           rjmp    .+4             ; 0xb70 <CALLBACK_USB_GetDescriptor+0x36>
+     ea2:      ec ee           ldi     r30, 0xEC       ; 236
+     ea4:      f0 e0           ldi     r31, 0x00       ; 0
+     ea6:      02 c0           rjmp    .+4             ; 0xeac <CALLBACK_USB_GetDescriptor+0x36>
                                        break;
                                case 0x02:
                                        Address = &ProductString;
                                        Size    = pgm_read_byte(&ProductString.Header.Size);
-     b6c:      e6 e0           ldi     r30, 0x06       ; 6
-     b6e:      f1 e0           ldi     r31, 0x01       ; 1
-     b70:      24 91           lpm     r18, Z+
-     b72:      30 e0           ldi     r19, 0x00       ; 0
+     ea8:      e6 e0           ldi     r30, 0x06       ; 6
+     eaa:      f1 e0           ldi     r31, 0x01       ; 1
+     eac:      24 91           lpm     r18, Z+
+     eae:      30 e0           ldi     r19, 0x00       ; 0
                                        break;
-     b74:      09 c0           rjmp    .+18            ; 0xb88 <CALLBACK_USB_GetDescriptor+0x4e>
+     eb0:      09 c0           rjmp    .+18            ; 0xec4 <CALLBACK_USB_GetDescriptor+0x4e>
 
        switch (DescriptorType)
        {
                case DTYPE_Device:
                        Address = &DeviceDescriptor;
                        Size    = sizeof(USB_Descriptor_Device_t);
-     b76:      22 e1           ldi     r18, 0x12       ; 18
-     b78:      30 e0           ldi     r19, 0x00       ; 0
+     eb2:      22 e1           ldi     r18, 0x12       ; 18
+     eb4:      30 e0           ldi     r19, 0x00       ; 0
        uint16_t    Size    = NO_DESCRIPTOR;
 
        switch (DescriptorType)
        {
                case DTYPE_Device:
                        Address = &DeviceDescriptor;
-     b7a:      e8 e9           ldi     r30, 0x98       ; 152
-     b7c:      f0 e0           ldi     r31, 0x00       ; 0
-     b7e:      04 c0           rjmp    .+8             ; 0xb88 <CALLBACK_USB_GetDescriptor+0x4e>
+     eb6:      e8 e9           ldi     r30, 0x98       ; 152
+     eb8:      f0 e0           ldi     r31, 0x00       ; 0
+     eba:      04 c0           rjmp    .+8             ; 0xec4 <CALLBACK_USB_GetDescriptor+0x4e>
 {
        const uint8_t  DescriptorType   = (wValue >> 8);
        const uint8_t  DescriptorNumber = (wValue & 0xFF);
 
        const void* Address = NULL;
        uint16_t    Size    = NO_DESCRIPTOR;
-     b80:      20 e0           ldi     r18, 0x00       ; 0
-     b82:      30 e0           ldi     r19, 0x00       ; 0
+     ebc:      20 e0           ldi     r18, 0x00       ; 0
+     ebe:      30 e0           ldi     r19, 0x00       ; 0
                                     const void** const DescriptorAddress)
 {
        const uint8_t  DescriptorType   = (wValue >> 8);
        const uint8_t  DescriptorNumber = (wValue & 0xFF);
 
        const void* Address = NULL;
-     b84:      e0 e0           ldi     r30, 0x00       ; 0
-     b86:      f0 e0           ldi     r31, 0x00       ; 0
+     ec0:      e0 e0           ldi     r30, 0x00       ; 0
+     ec2:      f0 e0           ldi     r31, 0x00       ; 0
                        }
 
                        break;
        }
 
        *DescriptorAddress = Address;
-     b88:      da 01           movw    r26, r20
-     b8a:      11 96           adiw    r26, 0x01       ; 1
-     b8c:      fc 93           st      X, r31
-     b8e:      ee 93           st      -X, r30
+     ec4:      da 01           movw    r26, r20
+     ec6:      11 96           adiw    r26, 0x01       ; 1
+     ec8:      fc 93           st      X, r31
+     eca:      ee 93           st      -X, r30
        return Size;
 }
-     b90:      c9 01           movw    r24, r18
-     b92:      08 95           ret
+     ecc:      c9 01           movw    r24, r18
+     ece:      08 95           ret
 
-00000b94 <Endpoint_Write_Control_Stream_LE>:
+00000ed0 <Endpoint_Write_Control_Stream_LE>:
 #if defined(TEMPLATE_FUNC_NAME)
 
 uint8_t TEMPLATE_FUNC_NAME (const void* const Buffer,
                             uint16_t Length)
 {
        uint8_t* DataStream     = ((uint8_t*)Buffer + TEMPLATE_BUFFER_OFFSET(Length));
-     b94:      28 2f           mov     r18, r24
-     b96:      39 2f           mov     r19, r25
-     b98:      f9 01           movw    r30, r18
+     ed0:      28 2f           mov     r18, r24
+     ed2:      39 2f           mov     r19, r25
+     ed4:      f9 01           movw    r30, r18
        bool     LastPacketFull = false;
 
        if (Length > USB_ControlRequest.wLength)
-     b9a:      80 91 a2 02     lds     r24, 0x02A2
-     b9e:      90 91 a3 02     lds     r25, 0x02A3
-     ba2:      86 17           cp      r24, r22
-     ba4:      97 07           cpc     r25, r23
-     ba6:      18 f4           brcc    .+6             ; 0xbae <Endpoint_Write_Control_Stream_LE+0x1a>
-     ba8:      bc 01           movw    r22, r24
-     baa:      20 e0           ldi     r18, 0x00       ; 0
-     bac:      34 c0           rjmp    .+104           ; 0xc16 <Endpoint_Write_Control_Stream_LE+0x82>
+     ed6:      80 91 ee 02     lds     r24, 0x02EE
+     eda:      90 91 ef 02     lds     r25, 0x02EF
+     ede:      86 17           cp      r24, r22
+     ee0:      97 07           cpc     r25, r23
+     ee2:      18 f4           brcc    .+6             ; 0xeea <Endpoint_Write_Control_Stream_LE+0x1a>
+     ee4:      bc 01           movw    r22, r24
+     ee6:      20 e0           ldi     r18, 0x00       ; 0
+     ee8:      34 c0           rjmp    .+104           ; 0xf52 <Endpoint_Write_Control_Stream_LE+0x82>
          Length = USB_ControlRequest.wLength;
        else if (!(Length))
-     bae:      61 15           cp      r22, r1
-     bb0:      71 05           cpc     r23, r1
-     bb2:      d9 f7           brne    .-10            ; 0xbaa <Endpoint_Write_Control_Stream_LE+0x16>
+     eea:      61 15           cp      r22, r1
+     eec:      71 05           cpc     r23, r1
+     eee:      d9 f7           brne    .-10            ; 0xee6 <Endpoint_Write_Control_Stream_LE+0x16>
                         */
                        static inline void Endpoint_ClearIN(void) ATTR_ALWAYS_INLINE;
                        static inline void Endpoint_ClearIN(void)
                        {
                                #if !defined(CONTROL_ONLY_DEVICE)
                                        UEINTX &= ~((1 << TXINI) | (1 << FIFOCON));
-     bb4:      80 91 e8 00     lds     r24, 0x00E8
-     bb8:      8e 77           andi    r24, 0x7E       ; 126
-     bba:      80 93 e8 00     sts     0x00E8, r24
-     bbe:      f5 cf           rjmp    .-22            ; 0xbaa <Endpoint_Write_Control_Stream_LE+0x16>
+     ef0:      80 91 e8 00     lds     r24, 0x00E8
+     ef4:      8e 77           andi    r24, 0x7E       ; 126
+     ef6:      80 93 e8 00     sts     0x00E8, r24
+     efa:      f5 cf           rjmp    .-22            ; 0xee6 <Endpoint_Write_Control_Stream_LE+0x16>
          Endpoint_ClearIN();
 
        while (Length || LastPacketFull)
        {
                uint8_t USB_DeviceState_LCL = USB_DeviceState;
-     bc0:      8e b3           in      r24, 0x1e       ; 30
+     efc:      8e b3           in      r24, 0x1e       ; 30
 
                if (USB_DeviceState_LCL == DEVICE_STATE_Unattached)
-     bc2:      88 23           and     r24, r24
-     bc4:      e9 f1           breq    .+122           ; 0xc40 <Endpoint_Write_Control_Stream_LE+0xac>
+     efe:      88 23           and     r24, r24
+     f00:      e9 f1           breq    .+122           ; 0xf7c <Endpoint_Write_Control_Stream_LE+0xac>
                  return ENDPOINT_RWCSTREAM_DeviceDisconnected;
                else if (USB_DeviceState_LCL == DEVICE_STATE_Suspended)
-     bc6:      85 30           cpi     r24, 0x05       ; 5
-     bc8:      b9 f1           breq    .+110           ; 0xc38 <Endpoint_Write_Control_Stream_LE+0xa4>
+     f02:      85 30           cpi     r24, 0x05       ; 5
+     f04:      b9 f1           breq    .+110           ; 0xf74 <Endpoint_Write_Control_Stream_LE+0xa4>
                         *  \return Boolean \c true if the selected endpoint has received a SETUP packet, \c false otherwise.
                         */
                        static inline bool Endpoint_IsSETUPReceived(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;
                        static inline bool Endpoint_IsSETUPReceived(void)
                        {
                                return ((UEINTX & (1 << RXSTPI)) ? true : false);
-     bca:      80 91 e8 00     lds     r24, 0x00E8
+     f06:      80 91 e8 00     lds     r24, 0x00E8
                  return ENDPOINT_RWCSTREAM_BusSuspended;
                else if (Endpoint_IsSETUPReceived())
-     bce:      83 fd           sbrc    r24, 3
-     bd0:      35 c0           rjmp    .+106           ; 0xc3c <Endpoint_Write_Control_Stream_LE+0xa8>
+     f0a:      83 fd           sbrc    r24, 3
+     f0c:      35 c0           rjmp    .+106           ; 0xf78 <Endpoint_Write_Control_Stream_LE+0xa8>
                         *  \return Boolean \c true if current endpoint is has received an OUT packet, \c false otherwise.
                         */
                        static inline bool Endpoint_IsOUTReceived(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;
                        static inline bool Endpoint_IsOUTReceived(void)
                        {
                                return ((UEINTX & (1 << RXOUTI)) ? true : false);
-     bd2:      80 91 e8 00     lds     r24, 0x00E8
+     f0e:      80 91 e8 00     lds     r24, 0x00E8
                  return ENDPOINT_RWCSTREAM_HostAborted;
                else if (Endpoint_IsOUTReceived())
-     bd6:      82 fd           sbrc    r24, 2
-     bd8:      29 c0           rjmp    .+82            ; 0xc2c <Endpoint_Write_Control_Stream_LE+0x98>
+     f12:      82 fd           sbrc    r24, 2
+     f14:      29 c0           rjmp    .+82            ; 0xf68 <Endpoint_Write_Control_Stream_LE+0x98>
                         *  \return Boolean \c true if the current endpoint is ready for an IN packet, \c false otherwise.
                         */
                        static inline bool Endpoint_IsINReady(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;
                        static inline bool Endpoint_IsINReady(void)
                        {
                                return ((UEINTX & (1 << TXINI)) ? true : false);
-     bda:      80 91 e8 00     lds     r24, 0x00E8
+     f16:      80 91 e8 00     lds     r24, 0x00E8
                  break;
 
                if (Endpoint_IsINReady())
-     bde:      80 ff           sbrs    r24, 0
-     be0:      1a c0           rjmp    .+52            ; 0xc16 <Endpoint_Write_Control_Stream_LE+0x82>
+     f1a:      80 ff           sbrs    r24, 0
+     f1c:      1a c0           rjmp    .+52            ; 0xf52 <Endpoint_Write_Control_Stream_LE+0x82>
                                #if (defined(USB_SERIES_6_AVR) || defined(USB_SERIES_7_AVR))
                                        return UEBCX;
                                #elif defined(USB_SERIES_4_AVR)
                                        return (((uint16_t)UEBCHX << 8) | UEBCLX);
                                #elif defined(USB_SERIES_2_AVR)
                                        return UEBCLX;
-     be2:      80 91 f2 00     lds     r24, 0x00F2
-     be6:      90 e0           ldi     r25, 0x00       ; 0
+     f1e:      80 91 f2 00     lds     r24, 0x00F2
+     f22:      90 e0           ldi     r25, 0x00       ; 0
                {
                        uint16_t BytesInEndpoint = Endpoint_BytesInEndpoint();
 
                        while (Length && (BytesInEndpoint < USB_Device_ControlEndpointSize))
-     be8:      06 c0           rjmp    .+12            ; 0xbf6 <Endpoint_Write_Control_Stream_LE+0x62>
+     f24:      06 c0           rjmp    .+12            ; 0xf32 <Endpoint_Write_Control_Stream_LE+0x62>
                        {
                                TEMPLATE_TRANSFER_BYTE(DataStream);
-     bea:      21 91           ld      r18, Z+
+     f26:      21 91           ld      r18, Z+
                         *  \param[in] Data  Data to write into the the currently selected endpoint's FIFO buffer.
                         */
                        static inline void Endpoint_Write_8(const uint8_t Data) ATTR_ALWAYS_INLINE;
                        static inline void Endpoint_Write_8(const uint8_t Data)
                        {
                                UEDATX = Data;
-     bec:      20 93 f1 00     sts     0x00F1, r18
+     f28:      20 93 f1 00     sts     0x00F1, r18
                                TEMPLATE_BUFFER_MOVE(DataStream, 1);
                                Length--;
-     bf0:      61 50           subi    r22, 0x01       ; 1
-     bf2:      70 40           sbci    r23, 0x00       ; 0
+     f2c:      61 50           subi    r22, 0x01       ; 1
+     f2e:      70 40           sbci    r23, 0x00       ; 0
                                BytesInEndpoint++;
-     bf4:      01 96           adiw    r24, 0x01       ; 1
+     f30:      01 96           adiw    r24, 0x01       ; 1
 
                if (Endpoint_IsINReady())
                {
                        uint16_t BytesInEndpoint = Endpoint_BytesInEndpoint();
 
                        while (Length && (BytesInEndpoint < USB_Device_ControlEndpointSize))
-     bf6:      61 15           cp      r22, r1
-     bf8:      71 05           cpc     r23, r1
-     bfa:      19 f0           breq    .+6             ; 0xc02 <Endpoint_Write_Control_Stream_LE+0x6e>
-     bfc:      88 30           cpi     r24, 0x08       ; 8
-     bfe:      91 05           cpc     r25, r1
-     c00:      a0 f3           brcs    .-24            ; 0xbea <Endpoint_Write_Control_Stream_LE+0x56>
+     f32:      61 15           cp      r22, r1
+     f34:      71 05           cpc     r23, r1
+     f36:      19 f0           breq    .+6             ; 0xf3e <Endpoint_Write_Control_Stream_LE+0x6e>
+     f38:      88 30           cpi     r24, 0x08       ; 8
+     f3a:      91 05           cpc     r25, r1
+     f3c:      a0 f3           brcs    .-24            ; 0xf26 <Endpoint_Write_Control_Stream_LE+0x56>
                                TEMPLATE_BUFFER_MOVE(DataStream, 1);
                                Length--;
                                BytesInEndpoint++;
                        }
 
                        LastPacketFull = (BytesInEndpoint == USB_Device_ControlEndpointSize);
-     c02:      21 e0           ldi     r18, 0x01       ; 1
-     c04:      88 30           cpi     r24, 0x08       ; 8
-     c06:      91 05           cpc     r25, r1
-     c08:      09 f0           breq    .+2             ; 0xc0c <Endpoint_Write_Control_Stream_LE+0x78>
-     c0a:      20 e0           ldi     r18, 0x00       ; 0
+     f3e:      21 e0           ldi     r18, 0x01       ; 1
+     f40:      88 30           cpi     r24, 0x08       ; 8
+     f42:      91 05           cpc     r25, r1
+     f44:      09 f0           breq    .+2             ; 0xf48 <Endpoint_Write_Control_Stream_LE+0x78>
+     f46:      20 e0           ldi     r18, 0x00       ; 0
                         */
                        static inline void Endpoint_ClearIN(void) ATTR_ALWAYS_INLINE;
                        static inline void Endpoint_ClearIN(void)
                        {
                                #if !defined(CONTROL_ONLY_DEVICE)
                                        UEINTX &= ~((1 << TXINI) | (1 << FIFOCON));
-     c0c:      80 91 e8 00     lds     r24, 0x00E8
-     c10:      8e 77           andi    r24, 0x7E       ; 126
-     c12:      80 93 e8 00     sts     0x00E8, r24
+     f48:      80 91 e8 00     lds     r24, 0x00E8
+     f4c:      8e 77           andi    r24, 0x7E       ; 126
+     f4e:      80 93 e8 00     sts     0x00E8, r24
        if (Length > USB_ControlRequest.wLength)
          Length = USB_ControlRequest.wLength;
        else if (!(Length))
          Endpoint_ClearIN();
 
        while (Length || LastPacketFull)
-     c16:      61 15           cp      r22, r1
-     c18:      71 05           cpc     r23, r1
-     c1a:      91 f6           brne    .-92            ; 0xbc0 <Endpoint_Write_Control_Stream_LE+0x2c>
-     c1c:      22 23           and     r18, r18
-     c1e:      81 f6           brne    .-96            ; 0xbc0 <Endpoint_Write_Control_Stream_LE+0x2c>
-     c20:      05 c0           rjmp    .+10            ; 0xc2c <Endpoint_Write_Control_Stream_LE+0x98>
+     f52:      61 15           cp      r22, r1
+     f54:      71 05           cpc     r23, r1
+     f56:      91 f6           brne    .-92            ; 0xefc <Endpoint_Write_Control_Stream_LE+0x2c>
+     f58:      22 23           and     r18, r18
+     f5a:      81 f6           brne    .-96            ; 0xefc <Endpoint_Write_Control_Stream_LE+0x2c>
+     f5c:      05 c0           rjmp    .+10            ; 0xf68 <Endpoint_Write_Control_Stream_LE+0x98>
                }
        }
 
        while (!(Endpoint_IsOUTReceived()))
        {
                uint8_t USB_DeviceState_LCL = USB_DeviceState;
-     c22:      8e b3           in      r24, 0x1e       ; 30
+     f5e:      8e b3           in      r24, 0x1e       ; 30
 
                if (USB_DeviceState_LCL == DEVICE_STATE_Unattached)
-     c24:      88 23           and     r24, r24
-     c26:      61 f0           breq    .+24            ; 0xc40 <Endpoint_Write_Control_Stream_LE+0xac>
+     f60:      88 23           and     r24, r24
+     f62:      61 f0           breq    .+24            ; 0xf7c <Endpoint_Write_Control_Stream_LE+0xac>
                  return ENDPOINT_RWCSTREAM_DeviceDisconnected;
                else if (USB_DeviceState_LCL == DEVICE_STATE_Suspended)
-     c28:      85 30           cpi     r24, 0x05       ; 5
-     c2a:      61 f0           breq    .+24            ; 0xc44 <Endpoint_Write_Control_Stream_LE+0xb0>
+     f64:      85 30           cpi     r24, 0x05       ; 5
+     f66:      61 f0           breq    .+24            ; 0xf80 <Endpoint_Write_Control_Stream_LE+0xb0>
                         *  \return Boolean \c true if current endpoint is has received an OUT packet, \c false otherwise.
                         */
                        static inline bool Endpoint_IsOUTReceived(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;
                        static inline bool Endpoint_IsOUTReceived(void)
                        {
                                return ((UEINTX & (1 << RXOUTI)) ? true : false);
-     c2c:      80 91 e8 00     lds     r24, 0x00E8
+     f68:      80 91 e8 00     lds     r24, 0x00E8
                        LastPacketFull = (BytesInEndpoint == USB_Device_ControlEndpointSize);
                        Endpoint_ClearIN();
                }
        }
 
        while (!(Endpoint_IsOUTReceived()))
-     c30:      82 ff           sbrs    r24, 2
-     c32:      f7 cf           rjmp    .-18            ; 0xc22 <Endpoint_Write_Control_Stream_LE+0x8e>
+     f6c:      82 ff           sbrs    r24, 2
+     f6e:      f7 cf           rjmp    .-18            ; 0xf5e <Endpoint_Write_Control_Stream_LE+0x8e>
                  return ENDPOINT_RWCSTREAM_DeviceDisconnected;
                else if (USB_DeviceState_LCL == DEVICE_STATE_Suspended)
                  return ENDPOINT_RWCSTREAM_BusSuspended;
        }
 
        return ENDPOINT_RWCSTREAM_NoError;
-     c34:      80 e0           ldi     r24, 0x00       ; 0
-     c36:      08 95           ret
+     f70:      80 e0           ldi     r24, 0x00       ; 0
+     f72:      08 95           ret
                uint8_t USB_DeviceState_LCL = USB_DeviceState;
 
                if (USB_DeviceState_LCL == DEVICE_STATE_Unattached)
                  return ENDPOINT_RWCSTREAM_DeviceDisconnected;
                else if (USB_DeviceState_LCL == DEVICE_STATE_Suspended)
                  return ENDPOINT_RWCSTREAM_BusSuspended;
-     c38:      83 e0           ldi     r24, 0x03       ; 3
-     c3a:      08 95           ret
+     f74:      83 e0           ldi     r24, 0x03       ; 3
+     f76:      08 95           ret
                else if (Endpoint_IsSETUPReceived())
                  return ENDPOINT_RWCSTREAM_HostAborted;
-     c3c:      81 e0           ldi     r24, 0x01       ; 1
-     c3e:      08 95           ret
+     f78:      81 e0           ldi     r24, 0x01       ; 1
+     f7a:      08 95           ret
        while (!(Endpoint_IsOUTReceived()))
        {
                uint8_t USB_DeviceState_LCL = USB_DeviceState;
 
                if (USB_DeviceState_LCL == DEVICE_STATE_Unattached)
                  return ENDPOINT_RWCSTREAM_DeviceDisconnected;
-     c40:      82 e0           ldi     r24, 0x02       ; 2
-     c42:      08 95           ret
+     f7c:      82 e0           ldi     r24, 0x02       ; 2
+     f7e:      08 95           ret
                else if (USB_DeviceState_LCL == DEVICE_STATE_Suspended)
                  return ENDPOINT_RWCSTREAM_BusSuspended;
-     c44:      83 e0           ldi     r24, 0x03       ; 3
+     f80:      83 e0           ldi     r24, 0x03       ; 3
        }
 
        return ENDPOINT_RWCSTREAM_NoError;
 }
-     c46:      08 95           ret
+     f82:      08 95           ret
 
-00000c48 <Endpoint_Write_Control_PStream_LE>:
+00000f84 <Endpoint_Write_Control_PStream_LE>:
 #if defined(TEMPLATE_FUNC_NAME)
 
 uint8_t TEMPLATE_FUNC_NAME (const void* const Buffer,
                             uint16_t Length)
 {
        uint8_t* DataStream     = ((uint8_t*)Buffer + TEMPLATE_BUFFER_OFFSET(Length));
-     c48:      e8 2f           mov     r30, r24
-     c4a:      f9 2f           mov     r31, r25
+     f84:      e8 2f           mov     r30, r24
+     f86:      f9 2f           mov     r31, r25
        bool     LastPacketFull = false;
 
        if (Length > USB_ControlRequest.wLength)
-     c4c:      80 91 a2 02     lds     r24, 0x02A2
-     c50:      90 91 a3 02     lds     r25, 0x02A3
-     c54:      86 17           cp      r24, r22
-     c56:      97 07           cpc     r25, r23
-     c58:      18 f4           brcc    .+6             ; 0xc60 <Endpoint_Write_Control_PStream_LE+0x18>
-     c5a:      bc 01           movw    r22, r24
-     c5c:      20 e0           ldi     r18, 0x00       ; 0
-     c5e:      36 c0           rjmp    .+108           ; 0xccc <Endpoint_Write_Control_PStream_LE+0x84>
+     f88:      80 91 ee 02     lds     r24, 0x02EE
+     f8c:      90 91 ef 02     lds     r25, 0x02EF
+     f90:      86 17           cp      r24, r22
+     f92:      97 07           cpc     r25, r23
+     f94:      18 f4           brcc    .+6             ; 0xf9c <Endpoint_Write_Control_PStream_LE+0x18>
+     f96:      bc 01           movw    r22, r24
+     f98:      20 e0           ldi     r18, 0x00       ; 0
+     f9a:      36 c0           rjmp    .+108           ; 0x1008 <Endpoint_Write_Control_PStream_LE+0x84>
          Length = USB_ControlRequest.wLength;
        else if (!(Length))
-     c60:      61 15           cp      r22, r1
-     c62:      71 05           cpc     r23, r1
-     c64:      d9 f7           brne    .-10            ; 0xc5c <Endpoint_Write_Control_PStream_LE+0x14>
+     f9c:      61 15           cp      r22, r1
+     f9e:      71 05           cpc     r23, r1
+     fa0:      d9 f7           brne    .-10            ; 0xf98 <Endpoint_Write_Control_PStream_LE+0x14>
                         */
                        static inline void Endpoint_ClearIN(void) ATTR_ALWAYS_INLINE;
                        static inline void Endpoint_ClearIN(void)
                        {
                                #if !defined(CONTROL_ONLY_DEVICE)
                                        UEINTX &= ~((1 << TXINI) | (1 << FIFOCON));
-     c66:      80 91 e8 00     lds     r24, 0x00E8
-     c6a:      8e 77           andi    r24, 0x7E       ; 126
-     c6c:      80 93 e8 00     sts     0x00E8, r24
-     c70:      f5 cf           rjmp    .-22            ; 0xc5c <Endpoint_Write_Control_PStream_LE+0x14>
+     fa2:      80 91 e8 00     lds     r24, 0x00E8
+     fa6:      8e 77           andi    r24, 0x7E       ; 126
+     fa8:      80 93 e8 00     sts     0x00E8, r24
+     fac:      f5 cf           rjmp    .-22            ; 0xf98 <Endpoint_Write_Control_PStream_LE+0x14>
          Endpoint_ClearIN();
 
        while (Length || LastPacketFull)
        {
                uint8_t USB_DeviceState_LCL = USB_DeviceState;
-     c72:      8e b3           in      r24, 0x1e       ; 30
+     fae:      8e b3           in      r24, 0x1e       ; 30
 
                if (USB_DeviceState_LCL == DEVICE_STATE_Unattached)
-     c74:      88 23           and     r24, r24
-     c76:      09 f4           brne    .+2             ; 0xc7a <Endpoint_Write_Control_PStream_LE+0x32>
-     c78:      3e c0           rjmp    .+124           ; 0xcf6 <Endpoint_Write_Control_PStream_LE+0xae>
+     fb0:      88 23           and     r24, r24
+     fb2:      09 f4           brne    .+2             ; 0xfb6 <Endpoint_Write_Control_PStream_LE+0x32>
+     fb4:      3e c0           rjmp    .+124           ; 0x1032 <Endpoint_Write_Control_PStream_LE+0xae>
                  return ENDPOINT_RWCSTREAM_DeviceDisconnected;
                else if (USB_DeviceState_LCL == DEVICE_STATE_Suspended)
-     c7a:      85 30           cpi     r24, 0x05       ; 5
-     c7c:      c1 f1           breq    .+112           ; 0xcee <Endpoint_Write_Control_PStream_LE+0xa6>
+     fb6:      85 30           cpi     r24, 0x05       ; 5
+     fb8:      c1 f1           breq    .+112           ; 0x102a <Endpoint_Write_Control_PStream_LE+0xa6>
                         *  \return Boolean \c true if the selected endpoint has received a SETUP packet, \c false otherwise.
                         */
                        static inline bool Endpoint_IsSETUPReceived(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;
                        static inline bool Endpoint_IsSETUPReceived(void)
                        {
                                return ((UEINTX & (1 << RXSTPI)) ? true : false);
-     c7e:      80 91 e8 00     lds     r24, 0x00E8
+     fba:      80 91 e8 00     lds     r24, 0x00E8
                  return ENDPOINT_RWCSTREAM_BusSuspended;
                else if (Endpoint_IsSETUPReceived())
-     c82:      83 fd           sbrc    r24, 3
-     c84:      36 c0           rjmp    .+108           ; 0xcf2 <Endpoint_Write_Control_PStream_LE+0xaa>
+     fbe:      83 fd           sbrc    r24, 3
+     fc0:      36 c0           rjmp    .+108           ; 0x102e <Endpoint_Write_Control_PStream_LE+0xaa>
                         *  \return Boolean \c true if current endpoint is has received an OUT packet, \c false otherwise.
                         */
                        static inline bool Endpoint_IsOUTReceived(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;
                        static inline bool Endpoint_IsOUTReceived(void)
                        {
                                return ((UEINTX & (1 << RXOUTI)) ? true : false);
-     c86:      80 91 e8 00     lds     r24, 0x00E8
+     fc2:      80 91 e8 00     lds     r24, 0x00E8
                  return ENDPOINT_RWCSTREAM_HostAborted;
                else if (Endpoint_IsOUTReceived())
-     c8a:      82 fd           sbrc    r24, 2
-     c8c:      2a c0           rjmp    .+84            ; 0xce2 <Endpoint_Write_Control_PStream_LE+0x9a>
+     fc6:      82 fd           sbrc    r24, 2
+     fc8:      2a c0           rjmp    .+84            ; 0x101e <Endpoint_Write_Control_PStream_LE+0x9a>
                         *  \return Boolean \c true if the current endpoint is ready for an IN packet, \c false otherwise.
                         */
                        static inline bool Endpoint_IsINReady(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;
                        static inline bool Endpoint_IsINReady(void)
                        {
                                return ((UEINTX & (1 << TXINI)) ? true : false);
-     c8e:      80 91 e8 00     lds     r24, 0x00E8
+     fca:      80 91 e8 00     lds     r24, 0x00E8
                  break;
 
                if (Endpoint_IsINReady())
-     c92:      80 ff           sbrs    r24, 0
-     c94:      1b c0           rjmp    .+54            ; 0xccc <Endpoint_Write_Control_PStream_LE+0x84>
+     fce:      80 ff           sbrs    r24, 0
+     fd0:      1b c0           rjmp    .+54            ; 0x1008 <Endpoint_Write_Control_PStream_LE+0x84>
                                #if (defined(USB_SERIES_6_AVR) || defined(USB_SERIES_7_AVR))
                                        return UEBCX;
                                #elif defined(USB_SERIES_4_AVR)
                                        return (((uint16_t)UEBCHX << 8) | UEBCLX);
                                #elif defined(USB_SERIES_2_AVR)
                                        return UEBCLX;
-     c96:      80 91 f2 00     lds     r24, 0x00F2
-     c9a:      90 e0           ldi     r25, 0x00       ; 0
+     fd2:      80 91 f2 00     lds     r24, 0x00F2
+     fd6:      90 e0           ldi     r25, 0x00       ; 0
                {
                        uint16_t BytesInEndpoint = Endpoint_BytesInEndpoint();
 
                        while (Length && (BytesInEndpoint < USB_Device_ControlEndpointSize))
-     c9c:      07 c0           rjmp    .+14            ; 0xcac <Endpoint_Write_Control_PStream_LE+0x64>
+     fd8:      07 c0           rjmp    .+14            ; 0xfe8 <Endpoint_Write_Control_PStream_LE+0x64>
                        {
                                TEMPLATE_TRANSFER_BYTE(DataStream);
-     c9e:      24 91           lpm     r18, Z+
+     fda:      24 91           lpm     r18, Z+
                         *  \param[in] Data  Data to write into the the currently selected endpoint's FIFO buffer.
                         */
                        static inline void Endpoint_Write_8(const uint8_t Data) ATTR_ALWAYS_INLINE;
                        static inline void Endpoint_Write_8(const uint8_t Data)
                        {
                                UEDATX = Data;
-     ca0:      20 93 f1 00     sts     0x00F1, r18
+     fdc:      20 93 f1 00     sts     0x00F1, r18
                                TEMPLATE_BUFFER_MOVE(DataStream, 1);
-     ca4:      31 96           adiw    r30, 0x01       ; 1
+     fe0:      31 96           adiw    r30, 0x01       ; 1
                                Length--;
-     ca6:      61 50           subi    r22, 0x01       ; 1
-     ca8:      70 40           sbci    r23, 0x00       ; 0
+     fe2:      61 50           subi    r22, 0x01       ; 1
+     fe4:      70 40           sbci    r23, 0x00       ; 0
                                BytesInEndpoint++;
-     caa:      01 96           adiw    r24, 0x01       ; 1
+     fe6:      01 96           adiw    r24, 0x01       ; 1
 
                if (Endpoint_IsINReady())
                {
                        uint16_t BytesInEndpoint = Endpoint_BytesInEndpoint();
 
                        while (Length && (BytesInEndpoint < USB_Device_ControlEndpointSize))
-     cac:      61 15           cp      r22, r1
-     cae:      71 05           cpc     r23, r1
-     cb0:      19 f0           breq    .+6             ; 0xcb8 <Endpoint_Write_Control_PStream_LE+0x70>
-     cb2:      88 30           cpi     r24, 0x08       ; 8
-     cb4:      91 05           cpc     r25, r1
-     cb6:      98 f3           brcs    .-26            ; 0xc9e <Endpoint_Write_Control_PStream_LE+0x56>
+     fe8:      61 15           cp      r22, r1
+     fea:      71 05           cpc     r23, r1
+     fec:      19 f0           breq    .+6             ; 0xff4 <Endpoint_Write_Control_PStream_LE+0x70>
+     fee:      88 30           cpi     r24, 0x08       ; 8
+     ff0:      91 05           cpc     r25, r1
+     ff2:      98 f3           brcs    .-26            ; 0xfda <Endpoint_Write_Control_PStream_LE+0x56>
                                TEMPLATE_BUFFER_MOVE(DataStream, 1);
                                Length--;
                                BytesInEndpoint++;
                        }
 
                        LastPacketFull = (BytesInEndpoint == USB_Device_ControlEndpointSize);
-     cb8:      21 e0           ldi     r18, 0x01       ; 1
-     cba:      88 30           cpi     r24, 0x08       ; 8
-     cbc:      91 05           cpc     r25, r1
-     cbe:      09 f0           breq    .+2             ; 0xcc2 <Endpoint_Write_Control_PStream_LE+0x7a>
-     cc0:      20 e0           ldi     r18, 0x00       ; 0
+     ff4:      21 e0           ldi     r18, 0x01       ; 1
+     ff6:      88 30           cpi     r24, 0x08       ; 8
+     ff8:      91 05           cpc     r25, r1
+     ffa:      09 f0           breq    .+2             ; 0xffe <Endpoint_Write_Control_PStream_LE+0x7a>
+     ffc:      20 e0           ldi     r18, 0x00       ; 0
                         */
                        static inline void Endpoint_ClearIN(void) ATTR_ALWAYS_INLINE;
                        static inline void Endpoint_ClearIN(void)
                        {
                                #if !defined(CONTROL_ONLY_DEVICE)
                                        UEINTX &= ~((1 << TXINI) | (1 << FIFOCON));
-     cc2:      80 91 e8 00     lds     r24, 0x00E8
-     cc6:      8e 77           andi    r24, 0x7E       ; 126
-     cc8:      80 93 e8 00     sts     0x00E8, r24
+     ffe:      80 91 e8 00     lds     r24, 0x00E8
+    1002:      8e 77           andi    r24, 0x7E       ; 126
+    1004:      80 93 e8 00     sts     0x00E8, r24
        if (Length > USB_ControlRequest.wLength)
          Length = USB_ControlRequest.wLength;
        else if (!(Length))
          Endpoint_ClearIN();
 
        while (Length || LastPacketFull)
-     ccc:      61 15           cp      r22, r1
-     cce:      71 05           cpc     r23, r1
-     cd0:      81 f6           brne    .-96            ; 0xc72 <Endpoint_Write_Control_PStream_LE+0x2a>
-     cd2:      22 23           and     r18, r18
-     cd4:      71 f6           brne    .-100           ; 0xc72 <Endpoint_Write_Control_PStream_LE+0x2a>
-     cd6:      05 c0           rjmp    .+10            ; 0xce2 <Endpoint_Write_Control_PStream_LE+0x9a>
+    1008:      61 15           cp      r22, r1
+    100a:      71 05           cpc     r23, r1
+    100c:      81 f6           brne    .-96            ; 0xfae <Endpoint_Write_Control_PStream_LE+0x2a>
+    100e:      22 23           and     r18, r18
+    1010:      71 f6           brne    .-100           ; 0xfae <Endpoint_Write_Control_PStream_LE+0x2a>
+    1012:      05 c0           rjmp    .+10            ; 0x101e <Endpoint_Write_Control_PStream_LE+0x9a>
                }
        }
 
        while (!(Endpoint_IsOUTReceived()))
        {
                uint8_t USB_DeviceState_LCL = USB_DeviceState;
-     cd8:      8e b3           in      r24, 0x1e       ; 30
+    1014:      8e b3           in      r24, 0x1e       ; 30
 
                if (USB_DeviceState_LCL == DEVICE_STATE_Unattached)
-     cda:      88 23           and     r24, r24
-     cdc:      61 f0           breq    .+24            ; 0xcf6 <Endpoint_Write_Control_PStream_LE+0xae>
+    1016:      88 23           and     r24, r24
+    1018:      61 f0           breq    .+24            ; 0x1032 <Endpoint_Write_Control_PStream_LE+0xae>
                  return ENDPOINT_RWCSTREAM_DeviceDisconnected;
                else if (USB_DeviceState_LCL == DEVICE_STATE_Suspended)
-     cde:      85 30           cpi     r24, 0x05       ; 5
-     ce0:      61 f0           breq    .+24            ; 0xcfa <Endpoint_Write_Control_PStream_LE+0xb2>
+    101a:      85 30           cpi     r24, 0x05       ; 5
+    101c:      61 f0           breq    .+24            ; 0x1036 <Endpoint_Write_Control_PStream_LE+0xb2>
                         *  \return Boolean \c true if current endpoint is has received an OUT packet, \c false otherwise.
                         */
                        static inline bool Endpoint_IsOUTReceived(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;
                        static inline bool Endpoint_IsOUTReceived(void)
                        {
                                return ((UEINTX & (1 << RXOUTI)) ? true : false);
-     ce2:      80 91 e8 00     lds     r24, 0x00E8
+    101e:      80 91 e8 00     lds     r24, 0x00E8
                        LastPacketFull = (BytesInEndpoint == USB_Device_ControlEndpointSize);
                        Endpoint_ClearIN();
                }
        }
 
        while (!(Endpoint_IsOUTReceived()))
-     ce6:      82 ff           sbrs    r24, 2
-     ce8:      f7 cf           rjmp    .-18            ; 0xcd8 <Endpoint_Write_Control_PStream_LE+0x90>
+    1022:      82 ff           sbrs    r24, 2
+    1024:      f7 cf           rjmp    .-18            ; 0x1014 <Endpoint_Write_Control_PStream_LE+0x90>
                  return ENDPOINT_RWCSTREAM_DeviceDisconnected;
                else if (USB_DeviceState_LCL == DEVICE_STATE_Suspended)
                  return ENDPOINT_RWCSTREAM_BusSuspended;
        }
 
        return ENDPOINT_RWCSTREAM_NoError;
-     cea:      80 e0           ldi     r24, 0x00       ; 0
-     cec:      08 95           ret
+    1026:      80 e0           ldi     r24, 0x00       ; 0
+    1028:      08 95           ret
                uint8_t USB_DeviceState_LCL = USB_DeviceState;
 
                if (USB_DeviceState_LCL == DEVICE_STATE_Unattached)
                  return ENDPOINT_RWCSTREAM_DeviceDisconnected;
                else if (USB_DeviceState_LCL == DEVICE_STATE_Suspended)
                  return ENDPOINT_RWCSTREAM_BusSuspended;
-     cee:      83 e0           ldi     r24, 0x03       ; 3
-     cf0:      08 95           ret
+    102a:      83 e0           ldi     r24, 0x03       ; 3
+    102c:      08 95           ret
                else if (Endpoint_IsSETUPReceived())
                  return ENDPOINT_RWCSTREAM_HostAborted;
-     cf2:      81 e0           ldi     r24, 0x01       ; 1
-     cf4:      08 95           ret
+    102e:      81 e0           ldi     r24, 0x01       ; 1
+    1030:      08 95           ret
        while (!(Endpoint_IsOUTReceived()))
        {
                uint8_t USB_DeviceState_LCL = USB_DeviceState;
 
                if (USB_DeviceState_LCL == DEVICE_STATE_Unattached)
                  return ENDPOINT_RWCSTREAM_DeviceDisconnected;
-     cf6:      82 e0           ldi     r24, 0x02       ; 2
-     cf8:      08 95           ret
+    1032:      82 e0           ldi     r24, 0x02       ; 2
+    1034:      08 95           ret
                else if (USB_DeviceState_LCL == DEVICE_STATE_Suspended)
                  return ENDPOINT_RWCSTREAM_BusSuspended;
-     cfa:      83 e0           ldi     r24, 0x03       ; 3
+    1036:      83 e0           ldi     r24, 0x03       ; 3
        }
 
        return ENDPOINT_RWCSTREAM_NoError;
 }
-     cfc:      08 95           ret
+    1038:      08 95           ret
 
-00000cfe <Endpoint_ConfigureEndpoint_Prv>:
+0000103a <Endpoint_ConfigureEndpoint_Prv>:
        UECFG0X = UECFG0XData;
        UECFG1X = UECFG1XData;
 
        return Endpoint_IsConfigured();
 #else
        for (uint8_t EPNum = Number; EPNum < ENDPOINT_TOTAL_ENDPOINTS; EPNum++)
-     cfe:      98 2f           mov     r25, r24
-     d00:      2c c0           rjmp    .+88            ; 0xd5a <Endpoint_ConfigureEndpoint_Prv+0x5c>
+    103a:      98 2f           mov     r25, r24
+    103c:      2c c0           rjmp    .+88            ; 0x1096 <Endpoint_ConfigureEndpoint_Prv+0x5c>
                         */
                        static inline void Endpoint_SelectEndpoint(const uint8_t Address) ATTR_ALWAYS_INLINE;
                        static inline void Endpoint_SelectEndpoint(const uint8_t Address)
                        {
                                #if !defined(CONTROL_ONLY_DEVICE)
                                        UENUM = (Address & ENDPOINT_EPNUM_MASK);
-     d02:      29 2f           mov     r18, r25
-     d04:      2f 70           andi    r18, 0x0F       ; 15
-     d06:      20 93 e9 00     sts     0x00E9, r18
+    103e:      29 2f           mov     r18, r25
+    1040:      2f 70           andi    r18, 0x0F       ; 15
+    1042:      20 93 e9 00     sts     0x00E9, r18
                uint8_t UECFG1XTemp;
                uint8_t UEIENXTemp;
 
                Endpoint_SelectEndpoint(EPNum);
 
                if (EPNum == Number)
-     d0a:      98 17           cp      r25, r24
-     d0c:      39 f0           breq    .+14            ; 0xd1c <Endpoint_ConfigureEndpoint_Prv+0x1e>
+    1046:      98 17           cp      r25, r24
+    1048:      39 f0           breq    .+14            ; 0x1058 <Endpoint_ConfigureEndpoint_Prv+0x1e>
                        UECFG1XTemp = UECFG1XData;
                        UEIENXTemp  = 0;
                }
                else
                {
                        UECFG0XTemp = UECFG0X;
-     d0e:      70 91 ec 00     lds     r23, 0x00EC
+    104a:      70 91 ec 00     lds     r23, 0x00EC
                        UECFG1XTemp = UECFG1X;
-     d12:      20 91 ed 00     lds     r18, 0x00ED
+    104e:      20 91 ed 00     lds     r18, 0x00ED
                        UEIENXTemp  = UEIENX;
-     d16:      50 91 f0 00     lds     r21, 0x00F0
-     d1a:      03 c0           rjmp    .+6             ; 0xd22 <Endpoint_ConfigureEndpoint_Prv+0x24>
+    1052:      50 91 f0 00     lds     r21, 0x00F0
+    1056:      03 c0           rjmp    .+6             ; 0x105e <Endpoint_ConfigureEndpoint_Prv+0x24>
                Endpoint_SelectEndpoint(EPNum);
 
                if (EPNum == Number)
                {
                        UECFG0XTemp = UECFG0XData;
                        UECFG1XTemp = UECFG1XData;
-     d1c:      24 2f           mov     r18, r20
+    1058:      24 2f           mov     r18, r20
 
                Endpoint_SelectEndpoint(EPNum);
 
                if (EPNum == Number)
                {
                        UECFG0XTemp = UECFG0XData;
-     d1e:      76 2f           mov     r23, r22
+    105a:      76 2f           mov     r23, r22
                        UECFG1XTemp = UECFG1XData;
                        UEIENXTemp  = 0;
-     d20:      50 e0           ldi     r21, 0x00       ; 0
+    105c:      50 e0           ldi     r21, 0x00       ; 0
                        UECFG0XTemp = UECFG0X;
                        UECFG1XTemp = UECFG1X;
                        UEIENXTemp  = UEIENX;
                }
 
                if (!(UECFG1XTemp & (1 << ALLOC)))
-     d22:      21 ff           sbrs    r18, 1
-     d24:      19 c0           rjmp    .+50            ; 0xd58 <Endpoint_ConfigureEndpoint_Prv+0x5a>
+    105e:      21 ff           sbrs    r18, 1
+    1060:      19 c0           rjmp    .+50            ; 0x1094 <Endpoint_ConfigureEndpoint_Prv+0x5a>
                         *  to and from a host.
                         */
                        static inline void Endpoint_DisableEndpoint(void) ATTR_ALWAYS_INLINE;
                        static inline void Endpoint_DisableEndpoint(void)
                        {
                                UECONX &= ~(1 << EPEN);
-     d26:      30 91 eb 00     lds     r19, 0x00EB
-     d2a:      3e 7f           andi    r19, 0xFE       ; 254
-     d2c:      30 93 eb 00     sts     0x00EB, r19
+    1062:      30 91 eb 00     lds     r19, 0x00EB
+    1066:      3e 7f           andi    r19, 0xFE       ; 254
+    1068:      30 93 eb 00     sts     0x00EB, r19
                  continue;
 
                Endpoint_DisableEndpoint();
                UECFG1X &= ~(1 << ALLOC);
-     d30:      30 91 ed 00     lds     r19, 0x00ED
-     d34:      3d 7f           andi    r19, 0xFD       ; 253
-     d36:      30 93 ed 00     sts     0x00ED, r19
+    106c:      30 91 ed 00     lds     r19, 0x00ED
+    1070:      3d 7f           andi    r19, 0xFD       ; 253
+    1072:      30 93 ed 00     sts     0x00ED, r19
                         *  \note Endpoints must first be configured properly via \ref Endpoint_ConfigureEndpoint().
                         */
                        static inline void Endpoint_EnableEndpoint(void) ATTR_ALWAYS_INLINE;
                        static inline void Endpoint_EnableEndpoint(void)
                        {
                                UECONX |= (1 << EPEN);
-     d3a:      30 91 eb 00     lds     r19, 0x00EB
-     d3e:      31 60           ori     r19, 0x01       ; 1
-     d40:      30 93 eb 00     sts     0x00EB, r19
+    1076:      30 91 eb 00     lds     r19, 0x00EB
+    107a:      31 60           ori     r19, 0x01       ; 1
+    107c:      30 93 eb 00     sts     0x00EB, r19
 
                Endpoint_EnableEndpoint();
                UECFG0X = UECFG0XTemp;
-     d44:      70 93 ec 00     sts     0x00EC, r23
+    1080:      70 93 ec 00     sts     0x00EC, r23
                UECFG1X = UECFG1XTemp;
-     d48:      20 93 ed 00     sts     0x00ED, r18
+    1084:      20 93 ed 00     sts     0x00ED, r18
                UEIENX  = UEIENXTemp;
-     d4c:      50 93 f0 00     sts     0x00F0, r21
+    1088:      50 93 f0 00     sts     0x00F0, r21
                         *  \return Boolean \c true if the currently selected endpoint has been configured, \c false otherwise.
                         */
                        static inline bool Endpoint_IsConfigured(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;
                        static inline bool Endpoint_IsConfigured(void)
                        {
                                return ((UESTA0X & (1 << CFGOK)) ? true : false);
-     d50:      20 91 ee 00     lds     r18, 0x00EE
+    108c:      20 91 ee 00     lds     r18, 0x00EE
 
                if (!(Endpoint_IsConfigured()))
-     d54:      27 ff           sbrs    r18, 7
-     d56:      08 c0           rjmp    .+16            ; 0xd68 <Endpoint_ConfigureEndpoint_Prv+0x6a>
+    1090:      27 ff           sbrs    r18, 7
+    1092:      08 c0           rjmp    .+16            ; 0x10a4 <Endpoint_ConfigureEndpoint_Prv+0x6a>
        UECFG0X = UECFG0XData;
        UECFG1X = UECFG1XData;
 
        return Endpoint_IsConfigured();
 #else
        for (uint8_t EPNum = Number; EPNum < ENDPOINT_TOTAL_ENDPOINTS; EPNum++)
-     d58:      9f 5f           subi    r25, 0xFF       ; 255
-     d5a:      95 30           cpi     r25, 0x05       ; 5
-     d5c:      90 f2           brcs    .-92            ; 0xd02 <Endpoint_ConfigureEndpoint_Prv+0x4>
+    1094:      9f 5f           subi    r25, 0xFF       ; 255
+    1096:      95 30           cpi     r25, 0x05       ; 5
+    1098:      90 f2           brcs    .-92            ; 0x103e <Endpoint_ConfigureEndpoint_Prv+0x4>
                         */
                        static inline void Endpoint_SelectEndpoint(const uint8_t Address) ATTR_ALWAYS_INLINE;
                        static inline void Endpoint_SelectEndpoint(const uint8_t Address)
                        {
                                #if !defined(CONTROL_ONLY_DEVICE)
                                        UENUM = (Address & ENDPOINT_EPNUM_MASK);
-     d5e:      8f 70           andi    r24, 0x0F       ; 15
-     d60:      80 93 e9 00     sts     0x00E9, r24
+    109a:      8f 70           andi    r24, 0x0F       ; 15
+    109c:      80 93 e9 00     sts     0x00E9, r24
                if (!(Endpoint_IsConfigured()))
                  return false;
        }
 
        Endpoint_SelectEndpoint(Number);
        return true;
-     d64:      81 e0           ldi     r24, 0x01       ; 1
-     d66:      08 95           ret
+    10a0:      81 e0           ldi     r24, 0x01       ; 1
+    10a2:      08 95           ret
                UECFG0X = UECFG0XTemp;
                UECFG1X = UECFG1XTemp;
                UEIENX  = UEIENXTemp;
 
                if (!(Endpoint_IsConfigured()))
                  return false;
-     d68:      80 e0           ldi     r24, 0x00       ; 0
+    10a4:      80 e0           ldi     r24, 0x00       ; 0
        }
 
        Endpoint_SelectEndpoint(Number);
        return true;
 #endif
 }
-     d6a:      08 95           ret
+    10a6:      08 95           ret
 
-00000d6c <Endpoint_ConfigureEndpointTable>:
+000010a8 <Endpoint_ConfigureEndpointTable>:
 uint8_t USB_Device_ControlEndpointSize = ENDPOINT_CONTROLEP_DEFAULT_SIZE;
 #endif
 
 bool Endpoint_ConfigureEndpointTable(const USB_Endpoint_Table_t* const Table,
                                      const uint8_t Entries)
 {
-     d6c:      ef 92           push    r14
-     d6e:      ff 92           push    r15
-     d70:      0f 93           push    r16
-     d72:      1f 93           push    r17
-     d74:      cf 93           push    r28
-     d76:      df 93           push    r29
-     d78:      16 2f           mov     r17, r22
+    10a8:      ef 92           push    r14
+    10aa:      ff 92           push    r15
+    10ac:      0f 93           push    r16
+    10ae:      1f 93           push    r17
+    10b0:      cf 93           push    r28
+    10b2:      df 93           push    r29
+    10b4:      16 2f           mov     r17, r22
        {
                if (!(Table[i].Address))
                  continue;
        
                if (!(Endpoint_ConfigureEndpoint(Table[i].Address, Table[i].Type, Table[i].Size, Table[i].Banks)))
                  return false;
-     d7a:      e8 2e           mov     r14, r24
-     d7c:      e7 01           movw    r28, r14
-     d7e:      7e 01           movw    r14, r28
-     d80:      f9 2e           mov     r15, r25
-     d82:      e7 01           movw    r28, r14
+    10b6:      e8 2e           mov     r14, r24
+    10b8:      e7 01           movw    r28, r14
+    10ba:      7e 01           movw    r14, r28
+    10bc:      f9 2e           mov     r15, r25
+    10be:      e7 01           movw    r28, r14
 #endif
 
 bool Endpoint_ConfigureEndpointTable(const USB_Endpoint_Table_t* const Table,
                                      const uint8_t Entries)
 {
        for (uint8_t i = 0; i < Entries; i++)
-     d84:      00 e0           ldi     r16, 0x00       ; 0
-     d86:      2a c0           rjmp    .+84            ; 0xddc <Endpoint_ConfigureEndpointTable+0x70>
+    10c0:      00 e0           ldi     r16, 0x00       ; 0
+    10c2:      2a c0           rjmp    .+84            ; 0x1118 <Endpoint_ConfigureEndpointTable+0x70>
        {
                if (!(Table[i].Address))
-     d88:      98 81           ld      r25, Y
-     d8a:      99 23           and     r25, r25
-     d8c:      29 f1           breq    .+74            ; 0xdd8 <Endpoint_ConfigureEndpointTable+0x6c>
+    10c4:      98 81           ld      r25, Y
+    10c6:      99 23           and     r25, r25
+    10c8:      29 f1           breq    .+74            ; 0x1114 <Endpoint_ConfigureEndpointTable+0x6c>
                  continue;
        
                if (!(Endpoint_ConfigureEndpoint(Table[i].Address, Table[i].Type, Table[i].Size, Table[i].Banks)))
-     d8e:      6b 81           ldd     r22, Y+3        ; 0x03
-     d90:      e9 81           ldd     r30, Y+1        ; 0x01
-     d92:      fa 81           ldd     r31, Y+2        ; 0x02
-     d94:      2c 81           ldd     r18, Y+4        ; 0x04
+    10ca:      6b 81           ldd     r22, Y+3        ; 0x03
+    10cc:      e9 81           ldd     r30, Y+1        ; 0x01
+    10ce:      fa 81           ldd     r31, Y+2        ; 0x02
+    10d0:      2c 81           ldd     r18, Y+4        ; 0x04
                        static inline bool Endpoint_ConfigureEndpoint(const uint8_t Address,
                                                                      const uint8_t Type,
                                                                      const uint16_t Size,
                                                                      const uint8_t Banks)
                        {
                                uint8_t Number = (Address & ENDPOINT_EPNUM_MASK);
-     d96:      89 2f           mov     r24, r25
-     d98:      8f 70           andi    r24, 0x0F       ; 15
+    10d2:      89 2f           mov     r24, r25
+    10d4:      8f 70           andi    r24, 0x0F       ; 15
 
                                if (Number >= ENDPOINT_TOTAL_ENDPOINTS)
-     d9a:      85 30           cpi     r24, 0x05       ; 5
-     d9c:      18 f5           brcc    .+70            ; 0xde4 <Endpoint_ConfigureEndpointTable+0x78>
+    10d6:      85 30           cpi     r24, 0x05       ; 5
+    10d8:      18 f5           brcc    .+70            ; 0x1120 <Endpoint_ConfigureEndpointTable+0x78>
                                  return false;
 
                                return Endpoint_ConfigureEndpoint_Prv(Number,
                                                                      ((Type << EPTYPE0) | ((Address & ENDPOINT_DIR_IN) ? (1 << EPDIR) : 0)),
-     d9e:      62 95           swap    r22
-     da0:      66 0f           add     r22, r22
-     da2:      66 0f           add     r22, r22
-     da4:      60 7c           andi    r22, 0xC0       ; 192
-     da6:      99 1f           adc     r25, r25
-     da8:      99 27           eor     r25, r25
-     daa:      99 1f           adc     r25, r25
+    10da:      62 95           swap    r22
+    10dc:      66 0f           add     r22, r22
+    10de:      66 0f           add     r22, r22
+    10e0:      60 7c           andi    r22, 0xC0       ; 192
+    10e2:      99 1f           adc     r25, r25
+    10e4:      99 27           eor     r25, r25
+    10e6:      99 1f           adc     r25, r25
                                uint8_t Number = (Address & ENDPOINT_EPNUM_MASK);
 
                                if (Number >= ENDPOINT_TOTAL_ENDPOINTS)
                                  return false;
 
                                return Endpoint_ConfigureEndpoint_Prv(Number,
-     dac:      69 2b           or      r22, r25
-     dae:      22 30           cpi     r18, 0x02       ; 2
-     db0:      10 f0           brcs    .+4             ; 0xdb6 <Endpoint_ConfigureEndpointTable+0x4a>
-     db2:      96 e0           ldi     r25, 0x06       ; 6
-     db4:      01 c0           rjmp    .+2             ; 0xdb8 <Endpoint_ConfigureEndpointTable+0x4c>
-     db6:      92 e0           ldi     r25, 0x02       ; 2
+    10e8:      69 2b           or      r22, r25
+    10ea:      22 30           cpi     r18, 0x02       ; 2
+    10ec:      10 f0           brcs    .+4             ; 0x10f2 <Endpoint_ConfigureEndpointTable+0x4a>
+    10ee:      96 e0           ldi     r25, 0x06       ; 6
+    10f0:      01 c0           rjmp    .+2             ; 0x10f4 <Endpoint_ConfigureEndpointTable+0x4c>
+    10f2:      92 e0           ldi     r25, 0x02       ; 2
                        static inline uint8_t Endpoint_BytesToEPSizeMask(const uint16_t Bytes) ATTR_WARN_UNUSED_RESULT ATTR_CONST
                                                                                               ATTR_ALWAYS_INLINE;
                        static inline uint8_t Endpoint_BytesToEPSizeMask(const uint16_t Bytes)
                        {
                                uint8_t  MaskVal    = 0;
                                uint16_t CheckBytes = 8;
-     db8:      28 e0           ldi     r18, 0x08       ; 8
-     dba:      30 e0           ldi     r19, 0x00       ; 0
+    10f4:      28 e0           ldi     r18, 0x08       ; 8
+    10f6:      30 e0           ldi     r19, 0x00       ; 0
                /* Inline Functions: */
                        static inline uint8_t Endpoint_BytesToEPSizeMask(const uint16_t Bytes) ATTR_WARN_UNUSED_RESULT ATTR_CONST
                                                                                               ATTR_ALWAYS_INLINE;
                        static inline uint8_t Endpoint_BytesToEPSizeMask(const uint16_t Bytes)
                        {
                                uint8_t  MaskVal    = 0;
-     dbc:      40 e0           ldi     r20, 0x00       ; 0
-     dbe:      03 c0           rjmp    .+6             ; 0xdc6 <Endpoint_ConfigureEndpointTable+0x5a>
+    10f8:      40 e0           ldi     r20, 0x00       ; 0
+    10fa:      03 c0           rjmp    .+6             ; 0x1102 <Endpoint_ConfigureEndpointTable+0x5a>
                                uint16_t CheckBytes = 8;
 
                                while (CheckBytes < Bytes)
                                {
                                        MaskVal++;
-     dc0:      4f 5f           subi    r20, 0xFF       ; 255
+    10fc:      4f 5f           subi    r20, 0xFF       ; 255
                                        CheckBytes <<= 1;
-     dc2:      22 0f           add     r18, r18
-     dc4:      33 1f           adc     r19, r19
+    10fe:      22 0f           add     r18, r18
+    1100:      33 1f           adc     r19, r19
                        static inline uint8_t Endpoint_BytesToEPSizeMask(const uint16_t Bytes)
                        {
                                uint8_t  MaskVal    = 0;
                                uint16_t CheckBytes = 8;
 
                                while (CheckBytes < Bytes)
-     dc6:      2e 17           cp      r18, r30
-     dc8:      3f 07           cpc     r19, r31
-     dca:      d0 f3           brcs    .-12            ; 0xdc0 <Endpoint_ConfigureEndpointTable+0x54>
+    1102:      2e 17           cp      r18, r30
+    1104:      3f 07           cpc     r19, r31
+    1106:      d0 f3           brcs    .-12            ; 0x10fc <Endpoint_ConfigureEndpointTable+0x54>
                                {
                                        MaskVal++;
                                        CheckBytes <<= 1;
                                }
 
                                return (MaskVal << EPSIZE0);
-     dcc:      42 95           swap    r20
-     dce:      40 7f           andi    r20, 0xF0       ; 240
+    1108:      42 95           swap    r20
+    110a:      40 7f           andi    r20, 0xF0       ; 240
                                uint8_t Number = (Address & ENDPOINT_EPNUM_MASK);
 
                                if (Number >= ENDPOINT_TOTAL_ENDPOINTS)
                                  return false;
 
                                return Endpoint_ConfigureEndpoint_Prv(Number,
-     dd0:      49 2b           or      r20, r25
-     dd2:      95 df           rcall   .-214           ; 0xcfe <Endpoint_ConfigureEndpoint_Prv>
-     dd4:      88 23           and     r24, r24
-     dd6:      31 f0           breq    .+12            ; 0xde4 <Endpoint_ConfigureEndpointTable+0x78>
+    110c:      49 2b           or      r20, r25
+    110e:      95 df           rcall   .-214           ; 0x103a <Endpoint_ConfigureEndpoint_Prv>
+    1110:      88 23           and     r24, r24
+    1112:      31 f0           breq    .+12            ; 0x1120 <Endpoint_ConfigureEndpointTable+0x78>
 #endif
 
 bool Endpoint_ConfigureEndpointTable(const USB_Endpoint_Table_t* const Table,
                                      const uint8_t Entries)
 {
        for (uint8_t i = 0; i < Entries; i++)
-     dd8:      0f 5f           subi    r16, 0xFF       ; 255
-     dda:      25 96           adiw    r28, 0x05       ; 5
-     ddc:      01 17           cp      r16, r17
-     dde:      a0 f2           brcs    .-88            ; 0xd88 <Endpoint_ConfigureEndpointTable+0x1c>
+    1114:      0f 5f           subi    r16, 0xFF       ; 255
+    1116:      25 96           adiw    r28, 0x05       ; 5
+    1118:      01 17           cp      r16, r17
+    111a:      a0 f2           brcs    .-88            ; 0x10c4 <Endpoint_ConfigureEndpointTable+0x1c>
        
                if (!(Endpoint_ConfigureEndpoint(Table[i].Address, Table[i].Type, Table[i].Size, Table[i].Banks)))
                  return false;
        }
        
        return true;
-     de0:      81 e0           ldi     r24, 0x01       ; 1
-     de2:      01 c0           rjmp    .+2             ; 0xde6 <Endpoint_ConfigureEndpointTable+0x7a>
+    111c:      81 e0           ldi     r24, 0x01       ; 1
+    111e:      01 c0           rjmp    .+2             ; 0x1122 <Endpoint_ConfigureEndpointTable+0x7a>
        {
                if (!(Table[i].Address))
                  continue;
        
                if (!(Endpoint_ConfigureEndpoint(Table[i].Address, Table[i].Type, Table[i].Size, Table[i].Banks)))
                  return false;
-     de4:      80 e0           ldi     r24, 0x00       ; 0
+    1120:      80 e0           ldi     r24, 0x00       ; 0
        }
        
        return true;
 }
-     de6:      df 91           pop     r29
-     de8:      cf 91           pop     r28
-     dea:      1f 91           pop     r17
-     dec:      0f 91           pop     r16
-     dee:      ff 90           pop     r15
-     df0:      ef 90           pop     r14
-     df2:      08 95           ret
-
-00000df4 <Endpoint_ClearStatusStage>:
+    1122:      df 91           pop     r29
+    1124:      cf 91           pop     r28
+    1126:      1f 91           pop     r17
+    1128:      0f 91           pop     r16
+    112a:      ff 90           pop     r15
+    112c:      ef 90           pop     r14
+    112e:      08 95           ret
+
+00001130 <Endpoint_ClearStatusStage>:
        }
 }
 
 void Endpoint_ClearStatusStage(void)
 {
        if (USB_ControlRequest.bmRequestType & REQDIR_DEVICETOHOST)
-     df4:      80 91 9c 02     lds     r24, 0x029C
-     df8:      87 ff           sbrs    r24, 7
-     dfa:      11 c0           rjmp    .+34            ; 0xe1e <Endpoint_ClearStatusStage+0x2a>
-     dfc:      03 c0           rjmp    .+6             ; 0xe04 <Endpoint_ClearStatusStage+0x10>
+    1130:      80 91 e8 02     lds     r24, 0x02E8
+    1134:      87 ff           sbrs    r24, 7
+    1136:      11 c0           rjmp    .+34            ; 0x115a <Endpoint_ClearStatusStage+0x2a>
+    1138:      03 c0           rjmp    .+6             ; 0x1140 <Endpoint_ClearStatusStage+0x10>
        {
                while (!(Endpoint_IsOUTReceived()))
                {
                        if (USB_DeviceState == DEVICE_STATE_Unattached)
-     dfe:      8e b3           in      r24, 0x1e       ; 30
-     e00:      88 23           and     r24, r24
-     e02:      b1 f0           breq    .+44            ; 0xe30 <Endpoint_ClearStatusStage+0x3c>
+    113a:      8e b3           in      r24, 0x1e       ; 30
+    113c:      88 23           and     r24, r24
+    113e:      b1 f0           breq    .+44            ; 0x116c <Endpoint_ClearStatusStage+0x3c>
                         *  \return Boolean \c true if current endpoint is has received an OUT packet, \c false otherwise.
                         */
                        static inline bool Endpoint_IsOUTReceived(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;
                        static inline bool Endpoint_IsOUTReceived(void)
                        {
                                return ((UEINTX & (1 << RXOUTI)) ? true : false);
-     e04:      80 91 e8 00     lds     r24, 0x00E8
+    1140:      80 91 e8 00     lds     r24, 0x00E8
 
 void Endpoint_ClearStatusStage(void)
 {
        if (USB_ControlRequest.bmRequestType & REQDIR_DEVICETOHOST)
        {
                while (!(Endpoint_IsOUTReceived()))
-     e08:      82 ff           sbrs    r24, 2
-     e0a:      f9 cf           rjmp    .-14            ; 0xdfe <Endpoint_ClearStatusStage+0xa>
+    1144:      82 ff           sbrs    r24, 2
+    1146:      f9 cf           rjmp    .-14            ; 0x113a <Endpoint_ClearStatusStage+0xa>
                         */
                        static inline void Endpoint_ClearOUT(void) ATTR_ALWAYS_INLINE;
                        static inline void Endpoint_ClearOUT(void)
                        {
                                #if !defined(CONTROL_ONLY_DEVICE)
                                        UEINTX &= ~((1 << RXOUTI) | (1 << FIFOCON));
-     e0c:      80 91 e8 00     lds     r24, 0x00E8
-     e10:      8b 77           andi    r24, 0x7B       ; 123
-     e12:      80 93 e8 00     sts     0x00E8, r24
-     e16:      08 95           ret
+    1148:      80 91 e8 00     lds     r24, 0x00E8
+    114c:      8b 77           andi    r24, 0x7B       ; 123
+    114e:      80 93 e8 00     sts     0x00E8, r24
+    1152:      08 95           ret
        }
        else
        {
                while (!(Endpoint_IsINReady()))
                {
                        if (USB_DeviceState == DEVICE_STATE_Unattached)
-     e18:      8e b3           in      r24, 0x1e       ; 30
-     e1a:      88 23           and     r24, r24
-     e1c:      49 f0           breq    .+18            ; 0xe30 <Endpoint_ClearStatusStage+0x3c>
+    1154:      8e b3           in      r24, 0x1e       ; 30
+    1156:      88 23           and     r24, r24
+    1158:      49 f0           breq    .+18            ; 0x116c <Endpoint_ClearStatusStage+0x3c>
                         *  \return Boolean \c true if the current endpoint is ready for an IN packet, \c false otherwise.
                         */
                        static inline bool Endpoint_IsINReady(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;
                        static inline bool Endpoint_IsINReady(void)
                        {
                                return ((UEINTX & (1 << TXINI)) ? true : false);
-     e1e:      80 91 e8 00     lds     r24, 0x00E8
+    115a:      80 91 e8 00     lds     r24, 0x00E8
 
                Endpoint_ClearOUT();
        }
        else
        {
                while (!(Endpoint_IsINReady()))
-     e22:      80 ff           sbrs    r24, 0
-     e24:      f9 cf           rjmp    .-14            ; 0xe18 <Endpoint_ClearStatusStage+0x24>
+    115e:      80 ff           sbrs    r24, 0
+    1160:      f9 cf           rjmp    .-14            ; 0x1154 <Endpoint_ClearStatusStage+0x24>
                         */
                        static inline void Endpoint_ClearIN(void) ATTR_ALWAYS_INLINE;
                        static inline void Endpoint_ClearIN(void)
                        {
                                #if !defined(CONTROL_ONLY_DEVICE)
                                        UEINTX &= ~((1 << TXINI) | (1 << FIFOCON));
-     e26:      80 91 e8 00     lds     r24, 0x00E8
-     e2a:      8e 77           andi    r24, 0x7E       ; 126
-     e2c:      80 93 e8 00     sts     0x00E8, r24
-     e30:      08 95           ret
+    1162:      80 91 e8 00     lds     r24, 0x00E8
+    1166:      8e 77           andi    r24, 0x7E       ; 126
+    1168:      80 93 e8 00     sts     0x00E8, r24
+    116c:      08 95           ret
 
-00000e32 <Endpoint_WaitUntilReady>:
+0000116e <Endpoint_WaitUntilReady>:
                         *  \return Current USB frame number from the USB controller.
                         */
                        static inline uint16_t USB_Device_GetFrameNumber(void) ATTR_ALWAYS_INLINE ATTR_WARN_UNUSED_RESULT;
                        static inline uint16_t USB_Device_GetFrameNumber(void)
                        {
                                return UDFNUM;
-     e32:      80 91 e4 00     lds     r24, 0x00E4
-     e36:      90 91 e5 00     lds     r25, 0x00E5
+    116e:      80 91 e4 00     lds     r24, 0x00E4
+    1172:      90 91 e5 00     lds     r25, 0x00E5
 
 #if !defined(CONTROL_ONLY_DEVICE)
 uint8_t Endpoint_WaitUntilReady(void)
 {
        #if (USB_STREAM_TIMEOUT_MS < 0xFF)
        uint8_t  TimeoutMSRem = USB_STREAM_TIMEOUT_MS;
-     e3a:      44 e6           ldi     r20, 0x64       ; 100
+    1176:      44 e6           ldi     r20, 0x64       ; 100
                         *  \return The currently selected endpoint's direction, as a \c ENDPOINT_DIR_* mask.
                         */
                        static inline uint8_t Endpoint_GetEndpointDirection(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;
                        static inline uint8_t Endpoint_GetEndpointDirection(void)
                        {
                                return (UECFG0X & (1 << EPDIR)) ? ENDPOINT_DIR_IN : ENDPOINT_DIR_OUT;
-     e3c:      20 91 ec 00     lds     r18, 0x00EC
-     e40:      20 ff           sbrs    r18, 0
-     e42:      25 c0           rjmp    .+74            ; 0xe8e <Endpoint_WaitUntilReady+0x5c>
+    1178:      20 91 ec 00     lds     r18, 0x00EC
+    117c:      20 ff           sbrs    r18, 0
+    117e:      25 c0           rjmp    .+74            ; 0x11ca <Endpoint_WaitUntilReady+0x5c>
                         *  \return Boolean \c true if the current endpoint is ready for an IN packet, \c false otherwise.
                         */
                        static inline bool Endpoint_IsINReady(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;
                        static inline bool Endpoint_IsINReady(void)
                        {
                                return ((UEINTX & (1 << TXINI)) ? true : false);
-     e44:      20 91 e8 00     lds     r18, 0x00E8
+    1180:      20 91 e8 00     lds     r18, 0x00E8
 
        for (;;)
        {
                if (Endpoint_GetEndpointDirection() == ENDPOINT_DIR_IN)
                {
                        if (Endpoint_IsINReady())
-     e48:      20 fd           sbrc    r18, 0
-     e4a:      15 c0           rjmp    .+42            ; 0xe76 <Endpoint_WaitUntilReady+0x44>
+    1184:      20 fd           sbrc    r18, 0
+    1186:      15 c0           rjmp    .+42            ; 0x11b2 <Endpoint_WaitUntilReady+0x44>
                {
                        if (Endpoint_IsOUTReceived())
                          return ENDPOINT_READYWAIT_NoError;
                }
 
                uint8_t USB_DeviceState_LCL = USB_DeviceState;
-     e4c:      2e b3           in      r18, 0x1e       ; 30
+    1188:      2e b3           in      r18, 0x1e       ; 30
 
                if (USB_DeviceState_LCL == DEVICE_STATE_Unattached)
-     e4e:      22 23           and     r18, r18
-     e50:      a1 f0           breq    .+40            ; 0xe7a <Endpoint_WaitUntilReady+0x48>
+    118a:      22 23           and     r18, r18
+    118c:      a1 f0           breq    .+40            ; 0x11b6 <Endpoint_WaitUntilReady+0x48>
                  return ENDPOINT_READYWAIT_DeviceDisconnected;
                else if (USB_DeviceState_LCL == DEVICE_STATE_Suspended)
-     e52:      25 30           cpi     r18, 0x05       ; 5
-     e54:      a1 f0           breq    .+40            ; 0xe7e <Endpoint_WaitUntilReady+0x4c>
+    118e:      25 30           cpi     r18, 0x05       ; 5
+    1190:      a1 f0           breq    .+40            ; 0x11ba <Endpoint_WaitUntilReady+0x4c>
                         *  \return Boolean \c true if the currently selected endpoint is stalled, \c false otherwise.
                         */
                        static inline bool Endpoint_IsStalled(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;
                        static inline bool Endpoint_IsStalled(void)
                        {
                                return ((UECONX & (1 << STALLRQ)) ? true : false);
-     e56:      20 91 eb 00     lds     r18, 0x00EB
+    1192:      20 91 eb 00     lds     r18, 0x00EB
                  return ENDPOINT_READYWAIT_BusSuspended;
                else if (Endpoint_IsStalled())
-     e5a:      25 fd           sbrc    r18, 5
-     e5c:      12 c0           rjmp    .+36            ; 0xe82 <Endpoint_WaitUntilReady+0x50>
-     e5e:      20 91 e4 00     lds     r18, 0x00E4
-     e62:      30 91 e5 00     lds     r19, 0x00E5
+    1196:      25 fd           sbrc    r18, 5
+    1198:      12 c0           rjmp    .+36            ; 0x11be <Endpoint_WaitUntilReady+0x50>
+    119a:      20 91 e4 00     lds     r18, 0x00E4
+    119e:      30 91 e5 00     lds     r19, 0x00E5
                  return ENDPOINT_READYWAIT_EndpointStalled;
 
                uint16_t CurrentFrameNumber = USB_Device_GetFrameNumber();
 
                if (CurrentFrameNumber != PreviousFrameNumber)
-     e66:      28 17           cp      r18, r24
-     e68:      39 07           cpc     r19, r25
-     e6a:      41 f3           breq    .-48            ; 0xe3c <Endpoint_WaitUntilReady+0xa>
+    11a2:      28 17           cp      r18, r24
+    11a4:      39 07           cpc     r19, r25
+    11a6:      41 f3           breq    .-48            ; 0x1178 <Endpoint_WaitUntilReady+0xa>
                {
                        PreviousFrameNumber = CurrentFrameNumber;
 
                        if (!(TimeoutMSRem--))
-     e6c:      44 23           and     r20, r20
-     e6e:      59 f0           breq    .+22            ; 0xe86 <Endpoint_WaitUntilReady+0x54>
-     e70:      41 50           subi    r20, 0x01       ; 1
-     e72:      c9 01           movw    r24, r18
-     e74:      e3 cf           rjmp    .-58            ; 0xe3c <Endpoint_WaitUntilReady+0xa>
+    11a8:      44 23           and     r20, r20
+    11aa:      59 f0           breq    .+22            ; 0x11c2 <Endpoint_WaitUntilReady+0x54>
+    11ac:      41 50           subi    r20, 0x01       ; 1
+    11ae:      c9 01           movw    r24, r18
+    11b0:      e3 cf           rjmp    .-58            ; 0x1178 <Endpoint_WaitUntilReady+0xa>
        for (;;)
        {
                if (Endpoint_GetEndpointDirection() == ENDPOINT_DIR_IN)
                {
                        if (Endpoint_IsINReady())
                          return ENDPOINT_READYWAIT_NoError;
-     e76:      80 e0           ldi     r24, 0x00       ; 0
-     e78:      08 95           ret
+    11b2:      80 e0           ldi     r24, 0x00       ; 0
+    11b4:      08 95           ret
                }
 
                uint8_t USB_DeviceState_LCL = USB_DeviceState;
 
                if (USB_DeviceState_LCL == DEVICE_STATE_Unattached)
                  return ENDPOINT_READYWAIT_DeviceDisconnected;
-     e7a:      82 e0           ldi     r24, 0x02       ; 2
-     e7c:      08 95           ret
+    11b6:      82 e0           ldi     r24, 0x02       ; 2
+    11b8:      08 95           ret
                else if (USB_DeviceState_LCL == DEVICE_STATE_Suspended)
                  return ENDPOINT_READYWAIT_BusSuspended;
-     e7e:      83 e0           ldi     r24, 0x03       ; 3
-     e80:      08 95           ret
+    11ba:      83 e0           ldi     r24, 0x03       ; 3
+    11bc:      08 95           ret
                else if (Endpoint_IsStalled())
                  return ENDPOINT_READYWAIT_EndpointStalled;
-     e82:      81 e0           ldi     r24, 0x01       ; 1
-     e84:      08 95           ret
+    11be:      81 e0           ldi     r24, 0x01       ; 1
+    11c0:      08 95           ret
                if (CurrentFrameNumber != PreviousFrameNumber)
                {
                        PreviousFrameNumber = CurrentFrameNumber;
 
                        if (!(TimeoutMSRem--))
                          return ENDPOINT_READYWAIT_Timeout;
-     e86:      84 e0           ldi     r24, 0x04       ; 4
-     e88:      08 95           ret
+    11c2:      84 e0           ldi     r24, 0x04       ; 4
+    11c4:      08 95           ret
                          return ENDPOINT_READYWAIT_NoError;
                }
                else
                {
                        if (Endpoint_IsOUTReceived())
                          return ENDPOINT_READYWAIT_NoError;
-     e8a:      80 e0           ldi     r24, 0x00       ; 0
+    11c6:      80 e0           ldi     r24, 0x00       ; 0
 
                        if (!(TimeoutMSRem--))
                          return ENDPOINT_READYWAIT_Timeout;
                }
        }
 }
-     e8c:      08 95           ret
+    11c8:      08 95           ret
                         *  \return Boolean \c true if current endpoint is has received an OUT packet, \c false otherwise.
                         */
                        static inline bool Endpoint_IsOUTReceived(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;
                        static inline bool Endpoint_IsOUTReceived(void)
                        {
                                return ((UEINTX & (1 << RXOUTI)) ? true : false);
-     e8e:      20 91 e8 00     lds     r18, 0x00E8
+    11ca:      20 91 e8 00     lds     r18, 0x00E8
                        if (Endpoint_IsINReady())
                          return ENDPOINT_READYWAIT_NoError;
                }
                else
                {
                        if (Endpoint_IsOUTReceived())
-     e92:      22 ff           sbrs    r18, 2
-     e94:      db cf           rjmp    .-74            ; 0xe4c <Endpoint_WaitUntilReady+0x1a>
-     e96:      f9 cf           rjmp    .-14            ; 0xe8a <Endpoint_WaitUntilReady+0x58>
+    11ce:      22 ff           sbrs    r18, 2
+    11d0:      db cf           rjmp    .-74            ; 0x1188 <Endpoint_WaitUntilReady+0x1a>
+    11d2:      f9 cf           rjmp    .-14            ; 0x11c6 <Endpoint_WaitUntilReady+0x58>
 
-00000e98 <USB_ResetInterface>:
+000011d4 <USB_ResetInterface>:
 {
        #if defined(USB_CAN_BE_BOTH)
        bool UIDModeSelectEnabled = ((UHWCON & (1 << UIDE)) != 0);
        #endif
 
        USB_INT_DisableAllInterrupts();
-     e98:      40 d0           rcall   .+128           ; 0xf1a <USB_INT_DisableAllInterrupts>
+    11d4:      40 d0           rcall   .+128           ; 0x1256 <USB_INT_DisableAllInterrupts>
        USB_INT_ClearAllInterrupts();
-     e9a:      42 d0           rcall   .+132           ; 0xf20 <USB_INT_ClearAllInterrupts>
+    11d6:      42 d0           rcall   .+132           ; 0x125c <USB_INT_ClearAllInterrupts>
                        }
 
                        static inline void USB_Controller_Reset(void) ATTR_ALWAYS_INLINE;
                        static inline void USB_Controller_Reset(void)
                        {
                                USBCON &= ~(1 << USBE);
-     e9c:      80 91 d8 00     lds     r24, 0x00D8
-     ea0:      8f 77           andi    r24, 0x7F       ; 127
-     ea2:      80 93 d8 00     sts     0x00D8, r24
+    11d8:      80 91 d8 00     lds     r24, 0x00D8
+    11dc:      8f 77           andi    r24, 0x7F       ; 127
+    11de:      80 93 d8 00     sts     0x00D8, r24
                                USBCON |=  (1 << USBE);
-     ea6:      80 91 d8 00     lds     r24, 0x00D8
-     eaa:      80 68           ori     r24, 0x80       ; 128
-     eac:      80 93 d8 00     sts     0x00D8, r24
+    11e2:      80 91 d8 00     lds     r24, 0x00D8
+    11e6:      80 68           ori     r24, 0x80       ; 128
+    11e8:      80 93 d8 00     sts     0x00D8, r24
                        }
 
                        static inline void USB_CLK_Unfreeze(void) ATTR_ALWAYS_INLINE;
                        static inline void USB_CLK_Unfreeze(void)
                        {
                                USBCON &= ~(1 << FRZCLK);
-     eb0:      80 91 d8 00     lds     r24, 0x00D8
-     eb4:      8f 7d           andi    r24, 0xDF       ; 223
-     eb6:      80 93 d8 00     sts     0x00D8, r24
+    11ec:      80 91 d8 00     lds     r24, 0x00D8
+    11f0:      8f 7d           andi    r24, 0xDF       ; 223
+    11f2:      80 93 d8 00     sts     0x00D8, r24
 
                /* Inline Functions: */
                        static inline void USB_PLL_On(void) ATTR_ALWAYS_INLINE;
                        static inline void USB_PLL_On(void)
                        {
                                PLLCSR = USB_PLL_PSC;
-     eba:      84 e0           ldi     r24, 0x04       ; 4
-     ebc:      89 bd           out     0x29, r24       ; 41
+    11f6:      84 e0           ldi     r24, 0x04       ; 4
+    11f8:      89 bd           out     0x29, r24       ; 41
                                PLLCSR = (USB_PLL_PSC | (1 << PLLE));
-     ebe:      86 e0           ldi     r24, 0x06       ; 6
-     ec0:      89 bd           out     0x29, r24       ; 41
+    11fa:      86 e0           ldi     r24, 0x06       ; 6
+    11fc:      89 bd           out     0x29, r24       ; 41
 
                if (!(USB_Options & USB_OPT_MANUAL_PLL))
                {
                        #if defined(USB_SERIES_2_AVR)
                        USB_PLL_On();
                        while (!(USB_PLL_IsReady()));
-     ec2:      09 b4           in      r0, 0x29        ; 41
-     ec4:      00 fe           sbrs    r0, 0
-     ec6:      fd cf           rjmp    .-6             ; 0xec2 <USB_ResetInterface+0x2a>
+    11fe:      09 b4           in      r0, 0x29        ; 41
+    1200:      00 fe           sbrs    r0, 0
+    1202:      fd cf           rjmp    .-6             ; 0x11fe <USB_ResetInterface+0x2a>
 }
 
 #if defined(USB_CAN_BE_DEVICE)
 static void USB_Init_Device(void)
 {
        USB_DeviceState                 = DEVICE_STATE_Unattached;
-     ec8:      1e ba           out     0x1e, r1        ; 30
+    1204:      1e ba           out     0x1e, r1        ; 30
        USB_Device_ConfigurationNumber  = 0;
-     eca:      10 92 98 02     sts     0x0298, r1
+    1206:      10 92 e4 02     sts     0x02E4, r1
 
        #if !defined(NO_DEVICE_REMOTE_WAKEUP)
        USB_Device_RemoteWakeupEnabled  = false;
-     ece:      10 92 9a 02     sts     0x029A, r1
+    120a:      10 92 e6 02     sts     0x02E6, r1
        #endif
 
        #if !defined(NO_DEVICE_SELF_POWER)
        USB_Device_CurrentlySelfPowered = false;
-     ed2:      10 92 99 02     sts     0x0299, r1
+    120e:      10 92 e5 02     sts     0x02E5, r1
                                uint8_t Number = (Address & ENDPOINT_EPNUM_MASK);
 
                                if (Number >= ENDPOINT_TOTAL_ENDPOINTS)
                                  return false;
 
                                return Endpoint_ConfigureEndpoint_Prv(Number,
-     ed6:      80 e0           ldi     r24, 0x00       ; 0
-     ed8:      60 e0           ldi     r22, 0x00       ; 0
-     eda:      42 e0           ldi     r20, 0x02       ; 2
-     edc:      10 df           rcall   .-480           ; 0xcfe <Endpoint_ConfigureEndpoint_Prv>
+    1212:      80 e0           ldi     r24, 0x00       ; 0
+    1214:      60 e0           ldi     r22, 0x00       ; 0
+    1216:      42 e0           ldi     r20, 0x02       ; 2
+    1218:      10 df           rcall   .-480           ; 0x103a <Endpoint_ConfigureEndpoint_Prv>
                                        #if defined(USB_CAN_BE_DEVICE)
                                        case USB_INT_WAKEUPI:
                                                UDINT  &= ~(1 << WAKEUPI);
                                                break;
                                        case USB_INT_SUSPI:
                                                UDINT  &= ~(1 << SUSPI);
-     ede:      80 91 e1 00     lds     r24, 0x00E1
-     ee2:      8e 7f           andi    r24, 0xFE       ; 254
-     ee4:      80 93 e1 00     sts     0x00E1, r24
+    121a:      80 91 e1 00     lds     r24, 0x00E1
+    121e:      8e 7f           andi    r24, 0xFE       ; 254
+    1220:      80 93 e1 00     sts     0x00E1, r24
                                        #if defined(USB_CAN_BE_DEVICE)
                                        case USB_INT_WAKEUPI:
                                                UDIEN  |= (1 << WAKEUPE);
                                                break;
                                        case USB_INT_SUSPI:
                                                UDIEN  |= (1 << SUSPE);
-     ee8:      80 91 e2 00     lds     r24, 0x00E2
-     eec:      81 60           ori     r24, 0x01       ; 1
-     eee:      80 93 e2 00     sts     0x00E2, r24
+    1224:      80 91 e2 00     lds     r24, 0x00E2
+    1228:      81 60           ori     r24, 0x01       ; 1
+    122a:      80 93 e2 00     sts     0x00E2, r24
                                                break;
                                        case USB_INT_EORSTI:
                                                UDIEN  |= (1 << EORSTE);
-     ef2:      80 91 e2 00     lds     r24, 0x00E2
-     ef6:      88 60           ori     r24, 0x08       ; 8
-     ef8:      80 93 e2 00     sts     0x00E2, r24
+    122e:      80 91 e2 00     lds     r24, 0x00E2
+    1232:      88 60           ori     r24, 0x08       ; 8
+    1234:      80 93 e2 00     sts     0x00E2, r24
                         *  register and despite the datasheet making no mention of its requirement in host mode.
                         */
                        static inline void USB_Attach(void) ATTR_ALWAYS_INLINE;
                        static inline void USB_Attach(void)
                        {
                                UDCON  &= ~(1 << DETACH);
-     efc:      80 91 e0 00     lds     r24, 0x00E0
-     f00:      8e 7f           andi    r24, 0xFE       ; 254
-     f02:      80 93 e0 00     sts     0x00E0, r24
+    1238:      80 91 e0 00     lds     r24, 0x00E0
+    123c:      8e 7f           andi    r24, 0xFE       ; 254
+    123e:      80 93 e0 00     sts     0x00E0, r24
        }
 
        #if (defined(USB_SERIES_4_AVR) || defined(USB_SERIES_6_AVR) || defined(USB_SERIES_7_AVR))
        USB_OTGPAD_On();
        #endif
 }
-     f06:      08 95           ret
+    1242:      08 95           ret
 
-00000f08 <USB_Init>:
+00001244 <USB_Init>:
                        static inline void USB_REG_On(void)
                        {
                        #if defined(USB_SERIES_4_AVR) || defined(USB_SERIES_6_AVR) || defined(USB_SERIES_7_AVR)
                                UHWCON |=  (1 << UVREGE);
                        #else
                                REGCR  &= ~(1 << REGDIS);
-     f08:      e3 e6           ldi     r30, 0x63       ; 99
-     f0a:      f0 e0           ldi     r31, 0x00       ; 0
-     f0c:      80 81           ld      r24, Z
-     f0e:      8e 7f           andi    r24, 0xFE       ; 254
-     f10:      80 83           st      Z, r24
+    1244:      e3 e6           ldi     r30, 0x63       ; 99
+    1246:      f0 e0           ldi     r31, 0x00       ; 0
+    1248:      80 81           ld      r24, Z
+    124a:      8e 7f           andi    r24, 0xFE       ; 254
+    124c:      80 83           st      Z, r24
                UHWCON &= ~(1 << UIDE);
                USB_CurrentMode = Mode;
        }
        #endif
 
        USB_IsInitialized = true;
-     f12:      81 e0           ldi     r24, 0x01       ; 1
-     f14:      80 93 9b 02     sts     0x029B, r24
+    124e:      81 e0           ldi     r24, 0x01       ; 1
+    1250:      80 93 e7 02     sts     0x02E7, r24
 
        USB_ResetInterface();
 }
-     f18:      bf cf           rjmp    .-130           ; 0xe98 <USB_ResetInterface>
+    1254:      bf cf           rjmp    .-130           ; 0x11d4 <USB_ResetInterface>
 
-00000f1a <USB_INT_DisableAllInterrupts>:
+00001256 <USB_INT_DisableAllInterrupts>:
        #if defined(USB_CAN_BE_HOST)
        UHIEN   = 0;
        #endif
 
        #if defined(USB_CAN_BE_DEVICE)
        UDIEN   = 0;
-     f1a:      10 92 e2 00     sts     0x00E2, r1
+    1256:      10 92 e2 00     sts     0x00E2, r1
        #endif
 }
-     f1e:      08 95           ret
+    125a:      08 95           ret
 
-00000f20 <USB_INT_ClearAllInterrupts>:
+0000125c <USB_INT_ClearAllInterrupts>:
        #if defined(USB_CAN_BE_HOST)
        UHINT  = 0;
        #endif
 
        #if defined(USB_CAN_BE_DEVICE)
        UDINT  = 0;
-     f20:      10 92 e1 00     sts     0x00E1, r1
+    125c:      10 92 e1 00     sts     0x00E1, r1
        #endif
 }
-     f24:      08 95           ret
+    1260:      08 95           ret
 
-00000f26 <__vector_11>:
+00001262 <__vector_11>:
 
 ISR(USB_GEN_vect, ISR_BLOCK)
 {
-     f26:      1f 92           push    r1
-     f28:      0f 92           push    r0
-     f2a:      0f b6           in      r0, 0x3f        ; 63
-     f2c:      0f 92           push    r0
-     f2e:      11 24           eor     r1, r1
-     f30:      2f 93           push    r18
-     f32:      3f 93           push    r19
-     f34:      4f 93           push    r20
-     f36:      5f 93           push    r21
-     f38:      6f 93           push    r22
-     f3a:      7f 93           push    r23
-     f3c:      8f 93           push    r24
-     f3e:      9f 93           push    r25
-     f40:      af 93           push    r26
-     f42:      bf 93           push    r27
-     f44:      ef 93           push    r30
-     f46:      ff 93           push    r31
+    1262:      1f 92           push    r1
+    1264:      0f 92           push    r0
+    1266:      0f b6           in      r0, 0x3f        ; 63
+    1268:      0f 92           push    r0
+    126a:      11 24           eor     r1, r1
+    126c:      2f 93           push    r18
+    126e:      3f 93           push    r19
+    1270:      4f 93           push    r20
+    1272:      5f 93           push    r21
+    1274:      6f 93           push    r22
+    1276:      7f 93           push    r23
+    1278:      8f 93           push    r24
+    127a:      9f 93           push    r25
+    127c:      af 93           push    r26
+    127e:      bf 93           push    r27
+    1280:      ef 93           push    r30
+    1282:      ff 93           push    r31
                                        case USB_INT_SUSPI:
                                                return (UDINT  & (1 << SUSPI));
                                        case USB_INT_EORSTI:
                                                return (UDINT  & (1 << EORSTI));
                                        case USB_INT_SOFI:
                                                return (UDINT  & (1 << SOFI));
-     f48:      80 91 e1 00     lds     r24, 0x00E1
+    1284:      80 91 e1 00     lds     r24, 0x00E1
        #if defined(USB_CAN_BE_DEVICE)
        #if !defined(NO_SOF_EVENTS)
        if (USB_INT_HasOccurred(USB_INT_SOFI) && USB_INT_IsEnabled(USB_INT_SOFI))
-     f4c:      82 ff           sbrs    r24, 2
-     f4e:      0a c0           rjmp    .+20            ; 0xf64 <__vector_11+0x3e>
+    1288:      82 ff           sbrs    r24, 2
+    128a:      0a c0           rjmp    .+20            ; 0x12a0 <__vector_11+0x3e>
                                        case USB_INT_SUSPI:
                                                return (UDIEN  & (1 << SUSPE));
                                        case USB_INT_EORSTI:
                                                return (UDIEN  & (1 << EORSTE));
                                        case USB_INT_SOFI:
                                                return (UDIEN  & (1 << SOFE));
-     f50:      80 91 e2 00     lds     r24, 0x00E2
-     f54:      82 ff           sbrs    r24, 2
-     f56:      06 c0           rjmp    .+12            ; 0xf64 <__vector_11+0x3e>
+    128c:      80 91 e2 00     lds     r24, 0x00E2
+    1290:      82 ff           sbrs    r24, 2
+    1292:      06 c0           rjmp    .+12            ; 0x12a0 <__vector_11+0x3e>
                                                break;
                                        case USB_INT_EORSTI:
                                                UDINT  &= ~(1 << EORSTI);
                                                break;
                                        case USB_INT_SOFI:
                                                UDINT  &= ~(1 << SOFI);
-     f58:      80 91 e1 00     lds     r24, 0x00E1
-     f5c:      8b 7f           andi    r24, 0xFB       ; 251
-     f5e:      80 93 e1 00     sts     0x00E1, r24
+    1294:      80 91 e1 00     lds     r24, 0x00E1
+    1298:      8b 7f           andi    r24, 0xFB       ; 251
+    129a:      80 93 e1 00     sts     0x00E1, r24
        {
                USB_INT_Clear(USB_INT_SOFI);
 
                EVENT_USB_Device_StartOfFrame();
-     f62:      21 d2           rcall   .+1090          ; 0x13a6 <USB_Event_Stub>
+    129e:      22 d2           rcall   .+1092          ; 0x16e4 <USB_Event_Stub>
                                        #endif
                                        #if defined(USB_CAN_BE_DEVICE)
                                        case USB_INT_WAKEUPI:
                                                return (UDINT  & (1 << WAKEUPI));
                                        case USB_INT_SUSPI:
                                                return (UDINT  & (1 << SUSPI));
-     f64:      80 91 e1 00     lds     r24, 0x00E1
+    12a0:      80 91 e1 00     lds     r24, 0x00E1
                        EVENT_USB_Device_Disconnect();
                }
        }
        #endif
 
        if (USB_INT_HasOccurred(USB_INT_SUSPI) && USB_INT_IsEnabled(USB_INT_SUSPI))
-     f68:      80 ff           sbrs    r24, 0
-     f6a:      16 c0           rjmp    .+44            ; 0xf98 <__vector_11+0x72>
+    12a4:      80 ff           sbrs    r24, 0
+    12a6:      16 c0           rjmp    .+44            ; 0x12d4 <__vector_11+0x72>
                                        #endif
                                        #if defined(USB_CAN_BE_DEVICE)
                                        case USB_INT_WAKEUPI:
                                                return (UDIEN  & (1 << WAKEUPE));
                                        case USB_INT_SUSPI:
                                                return (UDIEN  & (1 << SUSPE));
-     f6c:      80 91 e2 00     lds     r24, 0x00E2
-     f70:      80 ff           sbrs    r24, 0
-     f72:      12 c0           rjmp    .+36            ; 0xf98 <__vector_11+0x72>
+    12a8:      80 91 e2 00     lds     r24, 0x00E2
+    12ac:      80 ff           sbrs    r24, 0
+    12ae:      12 c0           rjmp    .+36            ; 0x12d4 <__vector_11+0x72>
                                        #if defined(USB_CAN_BE_DEVICE)
                                        case USB_INT_WAKEUPI:
                                                UDIEN  &= ~(1 << WAKEUPE);
                                                break;
                                        case USB_INT_SUSPI:
                                                UDIEN  &= ~(1 << SUSPE);
-     f74:      80 91 e2 00     lds     r24, 0x00E2
-     f78:      8e 7f           andi    r24, 0xFE       ; 254
-     f7a:      80 93 e2 00     sts     0x00E2, r24
+    12b0:      80 91 e2 00     lds     r24, 0x00E2
+    12b4:      8e 7f           andi    r24, 0xFE       ; 254
+    12b6:      80 93 e2 00     sts     0x00E2, r24
                                                USBCON |= (1 << IDTE);
                                                break;
                                        #endif
                                        #if defined(USB_CAN_BE_DEVICE)
                                        case USB_INT_WAKEUPI:
                                                UDIEN  |= (1 << WAKEUPE);
-     f7e:      80 91 e2 00     lds     r24, 0x00E2
-     f82:      80 61           ori     r24, 0x10       ; 16
-     f84:      80 93 e2 00     sts     0x00E2, r24
+    12ba:      80 91 e2 00     lds     r24, 0x00E2
+    12be:      80 61           ori     r24, 0x10       ; 16
+    12c0:      80 93 e2 00     sts     0x00E2, r24
                        #endif
 
                        static inline void USB_CLK_Freeze(void) ATTR_ALWAYS_INLINE;
                        static inline void USB_CLK_Freeze(void)
                        {
                                USBCON |=  (1 << FRZCLK);
-     f88:      80 91 d8 00     lds     r24, 0x00D8
-     f8c:      80 62           ori     r24, 0x20       ; 32
-     f8e:      80 93 d8 00     sts     0x00D8, r24
+    12c4:      80 91 d8 00     lds     r24, 0x00D8
+    12c8:      80 62           ori     r24, 0x20       ; 32
+    12ca:      80 93 d8 00     sts     0x00D8, r24
                        }
 
                        static inline void USB_PLL_Off(void) ATTR_ALWAYS_INLINE;
                        static inline void USB_PLL_Off(void)
                        {
                                PLLCSR = 0;
-     f92:      19 bc           out     0x29, r1        ; 41
+    12ce:      19 bc           out     0x29, r1        ; 41
 
                if (!(USB_Options & USB_OPT_MANUAL_PLL))
                  USB_PLL_Off();
 
                #if defined(USB_SERIES_2_AVR) && !defined(NO_LIMITED_CONTROLLER_CONNECT)
                USB_DeviceState = DEVICE_STATE_Unattached;
-     f94:      1e ba           out     0x1e, r1        ; 30
+    12d0:      1e ba           out     0x1e, r1        ; 30
                EVENT_USB_Device_Disconnect();
-     f96:      aa db           rcall   .-2220          ; 0x6ec <EVENT_USB_Device_Disconnect>
+    12d2:      df d9           rcall   .-3138          ; 0x692 <EVENT_USB_Device_Disconnect>
                                        case USB_INT_IDTI:
                                                return (USBINT & (1 << IDTI));
                                        #endif
                                        #if defined(USB_CAN_BE_DEVICE)
                                        case USB_INT_WAKEUPI:
                                                return (UDINT  & (1 << WAKEUPI));
-     f98:      80 91 e1 00     lds     r24, 0x00E1
+    12d4:      80 91 e1 00     lds     r24, 0x00E1
                USB_DeviceState = DEVICE_STATE_Suspended;
                EVENT_USB_Device_Suspend();
                #endif
        }
 
        if (USB_INT_HasOccurred(USB_INT_WAKEUPI) && USB_INT_IsEnabled(USB_INT_WAKEUPI))
-     f9c:      84 ff           sbrs    r24, 4
-     f9e:      2c c0           rjmp    .+88            ; 0xff8 <__vector_11+0xd2>
+    12d8:      84 ff           sbrs    r24, 4
+    12da:      2c c0           rjmp    .+88            ; 0x1334 <__vector_11+0xd2>
                                        case USB_INT_IDTI:
                                                return (USBCON & (1 << IDTE));
                                        #endif
                                        #if defined(USB_CAN_BE_DEVICE)
                                        case USB_INT_WAKEUPI:
                                                return (UDIEN  & (1 << WAKEUPE));
-     fa0:      80 91 e2 00     lds     r24, 0x00E2
-     fa4:      84 ff           sbrs    r24, 4
-     fa6:      28 c0           rjmp    .+80            ; 0xff8 <__vector_11+0xd2>
+    12dc:      80 91 e2 00     lds     r24, 0x00E2
+    12e0:      84 ff           sbrs    r24, 4
+    12e2:      28 c0           rjmp    .+80            ; 0x1334 <__vector_11+0xd2>
 
                /* Inline Functions: */
                        static inline void USB_PLL_On(void) ATTR_ALWAYS_INLINE;
                        static inline void USB_PLL_On(void)
                        {
                                PLLCSR = USB_PLL_PSC;
-     fa8:      84 e0           ldi     r24, 0x04       ; 4
-     faa:      89 bd           out     0x29, r24       ; 41
+    12e4:      84 e0           ldi     r24, 0x04       ; 4
+    12e6:      89 bd           out     0x29, r24       ; 41
                                PLLCSR = (USB_PLL_PSC | (1 << PLLE));
-     fac:      86 e0           ldi     r24, 0x06       ; 6
-     fae:      89 bd           out     0x29, r24       ; 41
+    12e8:      86 e0           ldi     r24, 0x06       ; 6
+    12ea:      89 bd           out     0x29, r24       ; 41
        {
                if (!(USB_Options & USB_OPT_MANUAL_PLL))
                {
                        USB_PLL_On();
                        while (!(USB_PLL_IsReady()));
-     fb0:      09 b4           in      r0, 0x29        ; 41
-     fb2:      00 fe           sbrs    r0, 0
-     fb4:      fd cf           rjmp    .-6             ; 0xfb0 <__vector_11+0x8a>
+    12ec:      09 b4           in      r0, 0x29        ; 41
+    12ee:      00 fe           sbrs    r0, 0
+    12f0:      fd cf           rjmp    .-6             ; 0x12ec <__vector_11+0x8a>
                        }
 
                        static inline void USB_CLK_Unfreeze(void) ATTR_ALWAYS_INLINE;
                        static inline void USB_CLK_Unfreeze(void)
                        {
                                USBCON &= ~(1 << FRZCLK);
-     fb6:      80 91 d8 00     lds     r24, 0x00D8
-     fba:      8f 7d           andi    r24, 0xDF       ; 223
-     fbc:      80 93 d8 00     sts     0x00D8, r24
+    12f2:      80 91 d8 00     lds     r24, 0x00D8
+    12f6:      8f 7d           andi    r24, 0xDF       ; 223
+    12f8:      80 93 d8 00     sts     0x00D8, r24
                                                USBINT &= ~(1 << IDTI);
                                                break;
                                        #endif
                                        #if defined(USB_CAN_BE_DEVICE)
                                        case USB_INT_WAKEUPI:
                                                UDINT  &= ~(1 << WAKEUPI);
-     fc0:      80 91 e1 00     lds     r24, 0x00E1
-     fc4:      8f 7e           andi    r24, 0xEF       ; 239
-     fc6:      80 93 e1 00     sts     0x00E1, r24
+    12fc:      80 91 e1 00     lds     r24, 0x00E1
+    1300:      8f 7e           andi    r24, 0xEF       ; 239
+    1302:      80 93 e1 00     sts     0x00E1, r24
                                                USBCON &= ~(1 << IDTE);
                                                break;
                                        #endif
                                        #if defined(USB_CAN_BE_DEVICE)
                                        case USB_INT_WAKEUPI:
                                                UDIEN  &= ~(1 << WAKEUPE);
-     fca:      80 91 e2 00     lds     r24, 0x00E2
-     fce:      8f 7e           andi    r24, 0xEF       ; 239
-     fd0:      80 93 e2 00     sts     0x00E2, r24
+    1306:      80 91 e2 00     lds     r24, 0x00E2
+    130a:      8f 7e           andi    r24, 0xEF       ; 239
+    130c:      80 93 e2 00     sts     0x00E2, r24
                                        #if defined(USB_CAN_BE_DEVICE)
                                        case USB_INT_WAKEUPI:
                                                UDIEN  |= (1 << WAKEUPE);
                                                break;
                                        case USB_INT_SUSPI:
                                                UDIEN  |= (1 << SUSPE);
-     fd4:      80 91 e2 00     lds     r24, 0x00E2
-     fd8:      81 60           ori     r24, 0x01       ; 1
-     fda:      80 93 e2 00     sts     0x00E2, r24
+    1310:      80 91 e2 00     lds     r24, 0x00E2
+    1314:      81 60           ori     r24, 0x01       ; 1
+    1316:      80 93 e2 00     sts     0x00E2, r24
                USB_INT_Clear(USB_INT_WAKEUPI);
 
                USB_INT_Disable(USB_INT_WAKEUPI);
                USB_INT_Enable(USB_INT_SUSPI);
 
                if (USB_Device_ConfigurationNumber)
-     fde:      80 91 98 02     lds     r24, 0x0298
-     fe2:      88 23           and     r24, r24
-     fe4:      21 f4           brne    .+8             ; 0xfee <__vector_11+0xc8>
+    131a:      80 91 e4 02     lds     r24, 0x02E4
+    131e:      88 23           and     r24, r24
+    1320:      21 f4           brne    .+8             ; 0x132a <__vector_11+0xc8>
                        }
 
                        static inline bool USB_Device_IsAddressSet(void) ATTR_ALWAYS_INLINE ATTR_WARN_UNUSED_RESULT;
                        static inline bool USB_Device_IsAddressSet(void)
                        {
                                return (UDADDR & (1 << ADDEN));
-     fe6:      80 91 e3 00     lds     r24, 0x00E3
+    1322:      80 91 e3 00     lds     r24, 0x00E3
                  USB_DeviceState = DEVICE_STATE_Configured;
                else
                  USB_DeviceState = (USB_Device_IsAddressSet()) ? DEVICE_STATE_Configured : DEVICE_STATE_Powered;
-     fea:      87 ff           sbrs    r24, 7
-     fec:      02 c0           rjmp    .+4             ; 0xff2 <__vector_11+0xcc>
-     fee:      84 e0           ldi     r24, 0x04       ; 4
-     ff0:      01 c0           rjmp    .+2             ; 0xff4 <__vector_11+0xce>
-     ff2:      81 e0           ldi     r24, 0x01       ; 1
-     ff4:      8e bb           out     0x1e, r24       ; 30
+    1326:      87 ff           sbrs    r24, 7
+    1328:      02 c0           rjmp    .+4             ; 0x132e <__vector_11+0xcc>
+    132a:      84 e0           ldi     r24, 0x04       ; 4
+    132c:      01 c0           rjmp    .+2             ; 0x1330 <__vector_11+0xce>
+    132e:      81 e0           ldi     r24, 0x01       ; 1
+    1330:      8e bb           out     0x1e, r24       ; 30
 
                #if defined(USB_SERIES_2_AVR) && !defined(NO_LIMITED_CONTROLLER_CONNECT)
                EVENT_USB_Device_Connect();
-     ff6:      79 db           rcall   .-2318          ; 0x6ea <EVENT_USB_Device_Connect>
+    1332:      ae d9           rcall   .-3236          ; 0x690 <EVENT_USB_Device_Connect>
                                        case USB_INT_WAKEUPI:
                                                return (UDINT  & (1 << WAKEUPI));
                                        case USB_INT_SUSPI:
                                                return (UDINT  & (1 << SUSPI));
                                        case USB_INT_EORSTI:
                                                return (UDINT  & (1 << EORSTI));
-     ff8:      80 91 e1 00     lds     r24, 0x00E1
+    1334:      80 91 e1 00     lds     r24, 0x00E1
                #else
                EVENT_USB_Device_WakeUp();
                #endif
        }
 
        if (USB_INT_HasOccurred(USB_INT_EORSTI) && USB_INT_IsEnabled(USB_INT_EORSTI))
-     ffc:      83 ff           sbrs    r24, 3
-     ffe:      26 c0           rjmp    .+76            ; 0x104c <__vector_11+0x126>
+    1338:      83 ff           sbrs    r24, 3
+    133a:      26 c0           rjmp    .+76            ; 0x1388 <__vector_11+0x126>
                                        case USB_INT_WAKEUPI:
                                                return (UDIEN  & (1 << WAKEUPE));
                                        case USB_INT_SUSPI:
                                                return (UDIEN  & (1 << SUSPE));
                                        case USB_INT_EORSTI:
                                                return (UDIEN  & (1 << EORSTE));
-    1000:      80 91 e2 00     lds     r24, 0x00E2
-    1004:      83 ff           sbrs    r24, 3
-    1006:      22 c0           rjmp    .+68            ; 0x104c <__vector_11+0x126>
+    133c:      80 91 e2 00     lds     r24, 0x00E2
+    1340:      83 ff           sbrs    r24, 3
+    1342:      22 c0           rjmp    .+68            ; 0x1388 <__vector_11+0x126>
                                                break;
                                        case USB_INT_SUSPI:
                                                UDINT  &= ~(1 << SUSPI);
                                                break;
                                        case USB_INT_EORSTI:
                                                UDINT  &= ~(1 << EORSTI);
-    1008:      80 91 e1 00     lds     r24, 0x00E1
-    100c:      87 7f           andi    r24, 0xF7       ; 247
-    100e:      80 93 e1 00     sts     0x00E1, r24
+    1344:      80 91 e1 00     lds     r24, 0x00E1
+    1348:      87 7f           andi    r24, 0xF7       ; 247
+    134a:      80 93 e1 00     sts     0x00E1, r24
        {
                USB_INT_Clear(USB_INT_EORSTI);
 
                USB_DeviceState                = DEVICE_STATE_Default;
-    1012:      82 e0           ldi     r24, 0x02       ; 2
-    1014:      8e bb           out     0x1e, r24       ; 30
+    134e:      82 e0           ldi     r24, 0x02       ; 2
+    1350:      8e bb           out     0x1e, r24       ; 30
                USB_Device_ConfigurationNumber = 0;
-    1016:      10 92 98 02     sts     0x0298, r1
+    1352:      10 92 e4 02     sts     0x02E4, r1
                                        #if defined(USB_CAN_BE_DEVICE)
                                        case USB_INT_WAKEUPI:
                                                UDINT  &= ~(1 << WAKEUPI);
                                                break;
                                        case USB_INT_SUSPI:
                                                UDINT  &= ~(1 << SUSPI);
-    101a:      80 91 e1 00     lds     r24, 0x00E1
-    101e:      8e 7f           andi    r24, 0xFE       ; 254
-    1020:      80 93 e1 00     sts     0x00E1, r24
+    1356:      80 91 e1 00     lds     r24, 0x00E1
+    135a:      8e 7f           andi    r24, 0xFE       ; 254
+    135c:      80 93 e1 00     sts     0x00E1, r24
                                        #if defined(USB_CAN_BE_DEVICE)
                                        case USB_INT_WAKEUPI:
                                                UDIEN  &= ~(1 << WAKEUPE);
                                                break;
                                        case USB_INT_SUSPI:
                                                UDIEN  &= ~(1 << SUSPE);
-    1024:      80 91 e2 00     lds     r24, 0x00E2
-    1028:      8e 7f           andi    r24, 0xFE       ; 254
-    102a:      80 93 e2 00     sts     0x00E2, r24
+    1360:      80 91 e2 00     lds     r24, 0x00E2
+    1364:      8e 7f           andi    r24, 0xFE       ; 254
+    1366:      80 93 e2 00     sts     0x00E2, r24
                                                USBCON |= (1 << IDTE);
                                                break;
                                        #endif
                                        #if defined(USB_CAN_BE_DEVICE)
                                        case USB_INT_WAKEUPI:
                                                UDIEN  |= (1 << WAKEUPE);
-    102e:      80 91 e2 00     lds     r24, 0x00E2
-    1032:      80 61           ori     r24, 0x10       ; 16
-    1034:      80 93 e2 00     sts     0x00E2, r24
+    136a:      80 91 e2 00     lds     r24, 0x00E2
+    136e:      80 61           ori     r24, 0x10       ; 16
+    1370:      80 93 e2 00     sts     0x00E2, r24
                                uint8_t Number = (Address & ENDPOINT_EPNUM_MASK);
 
                                if (Number >= ENDPOINT_TOTAL_ENDPOINTS)
                                  return false;
 
                                return Endpoint_ConfigureEndpoint_Prv(Number,
-    1038:      80 e0           ldi     r24, 0x00       ; 0
-    103a:      60 e0           ldi     r22, 0x00       ; 0
-    103c:      42 e0           ldi     r20, 0x02       ; 2
-    103e:      5f de           rcall   .-834           ; 0xcfe <Endpoint_ConfigureEndpoint_Prv>
+    1374:      80 e0           ldi     r24, 0x00       ; 0
+    1376:      60 e0           ldi     r22, 0x00       ; 0
+    1378:      42 e0           ldi     r20, 0x02       ; 2
+    137a:      5f de           rcall   .-834           ; 0x103a <Endpoint_ConfigureEndpoint_Prv>
                                                break;
                                        case USB_INT_SOFI:
                                                UDIEN  |= (1 << SOFE);
                                                break;
                                        case USB_INT_RXSTPI:
                                                UEIENX |= (1 << RXSTPE);
-    1040:      80 91 f0 00     lds     r24, 0x00F0
-    1044:      88 60           ori     r24, 0x08       ; 8
-    1046:      80 93 f0 00     sts     0x00F0, r24
+    137c:      80 91 f0 00     lds     r24, 0x00F0
+    1380:      88 60           ori     r24, 0x08       ; 8
+    1382:      80 93 f0 00     sts     0x00F0, r24
 
                #if defined(INTERRUPT_CONTROL_ENDPOINT)
                USB_INT_Enable(USB_INT_RXSTPI);
                #endif
 
                EVENT_USB_Device_Reset();
-    104a:      ad d1           rcall   .+858           ; 0x13a6 <USB_Event_Stub>
+    1386:      ae d1           rcall   .+860           ; 0x16e4 <USB_Event_Stub>
                USB_ResetInterface();
 
                EVENT_USB_UIDChange();
        }
        #endif
 }
-    104c:      ff 91           pop     r31
-    104e:      ef 91           pop     r30
-    1050:      bf 91           pop     r27
-    1052:      af 91           pop     r26
-    1054:      9f 91           pop     r25
-    1056:      8f 91           pop     r24
-    1058:      7f 91           pop     r23
-    105a:      6f 91           pop     r22
-    105c:      5f 91           pop     r21
-    105e:      4f 91           pop     r20
-    1060:      3f 91           pop     r19
-    1062:      2f 91           pop     r18
-    1064:      0f 90           pop     r0
-    1066:      0f be           out     0x3f, r0        ; 63
-    1068:      0f 90           pop     r0
-    106a:      1f 90           pop     r1
-    106c:      18 95           reti
-
-0000106e <__vector_12>:
+    1388:      ff 91           pop     r31
+    138a:      ef 91           pop     r30
+    138c:      bf 91           pop     r27
+    138e:      af 91           pop     r26
+    1390:      9f 91           pop     r25
+    1392:      8f 91           pop     r24
+    1394:      7f 91           pop     r23
+    1396:      6f 91           pop     r22
+    1398:      5f 91           pop     r21
+    139a:      4f 91           pop     r20
+    139c:      3f 91           pop     r19
+    139e:      2f 91           pop     r18
+    13a0:      0f 90           pop     r0
+    13a2:      0f be           out     0x3f, r0        ; 63
+    13a4:      0f 90           pop     r0
+    13a6:      1f 90           pop     r1
+    13a8:      18 95           reti
+
+000013aa <__vector_12>:
 
 #if defined(INTERRUPT_CONTROL_ENDPOINT) && defined(USB_CAN_BE_DEVICE)
 ISR(USB_COM_vect, ISR_BLOCK)
 {
-    106e:      1f 92           push    r1
-    1070:      0f 92           push    r0
-    1072:      0f b6           in      r0, 0x3f        ; 63
-    1074:      0f 92           push    r0
-    1076:      11 24           eor     r1, r1
-    1078:      1f 93           push    r17
-    107a:      2f 93           push    r18
-    107c:      3f 93           push    r19
-    107e:      4f 93           push    r20
-    1080:      5f 93           push    r21
-    1082:      6f 93           push    r22
-    1084:      7f 93           push    r23
-    1086:      8f 93           push    r24
-    1088:      9f 93           push    r25
-    108a:      af 93           push    r26
-    108c:      bf 93           push    r27
-    108e:      ef 93           push    r30
-    1090:      ff 93           push    r31
+    13aa:      1f 92           push    r1
+    13ac:      0f 92           push    r0
+    13ae:      0f b6           in      r0, 0x3f        ; 63
+    13b0:      0f 92           push    r0
+    13b2:      11 24           eor     r1, r1
+    13b4:      1f 93           push    r17
+    13b6:      2f 93           push    r18
+    13b8:      3f 93           push    r19
+    13ba:      4f 93           push    r20
+    13bc:      5f 93           push    r21
+    13be:      6f 93           push    r22
+    13c0:      7f 93           push    r23
+    13c2:      8f 93           push    r24
+    13c4:      9f 93           push    r25
+    13c6:      af 93           push    r26
+    13c8:      bf 93           push    r27
+    13ca:      ef 93           push    r30
+    13cc:      ff 93           push    r31
                         */
                        static inline uint8_t Endpoint_GetCurrentEndpoint(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;
                        static inline uint8_t Endpoint_GetCurrentEndpoint(void)
                        {
                                #if !defined(CONTROL_ONLY_DEVICE)
                                        return ((UENUM & ENDPOINT_EPNUM_MASK) | Endpoint_GetEndpointDirection());
-    1092:      10 91 e9 00     lds     r17, 0x00E9
-    1096:      1f 70           andi    r17, 0x0F       ; 15
+    13ce:      10 91 e9 00     lds     r17, 0x00E9
+    13d2:      1f 70           andi    r17, 0x0F       ; 15
                         *  \return The currently selected endpoint's direction, as a \c ENDPOINT_DIR_* mask.
                         */
                        static inline uint8_t Endpoint_GetEndpointDirection(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;
                        static inline uint8_t Endpoint_GetEndpointDirection(void)
                        {
                                return (UECFG0X & (1 << EPDIR)) ? ENDPOINT_DIR_IN : ENDPOINT_DIR_OUT;
-    1098:      80 91 ec 00     lds     r24, 0x00EC
+    13d4:      80 91 ec 00     lds     r24, 0x00EC
                         */
                        static inline void Endpoint_SelectEndpoint(const uint8_t Address) ATTR_ALWAYS_INLINE;
                        static inline void Endpoint_SelectEndpoint(const uint8_t Address)
                        {
                                #if !defined(CONTROL_ONLY_DEVICE)
                                        UENUM = (Address & ENDPOINT_EPNUM_MASK);
-    109c:      10 92 e9 00     sts     0x00E9, r1
+    13d8:      10 92 e9 00     sts     0x00E9, r1
                                                break;
                                        case USB_INT_SOFI:
                                                UDIEN  &= ~(1 << SOFE);
                                                break;
                                        case USB_INT_RXSTPI:
                                                UEIENX &= ~(1 << RXSTPE);
-    10a0:      80 91 f0 00     lds     r24, 0x00F0
-    10a4:      87 7f           andi    r24, 0xF7       ; 247
-    10a6:      80 93 f0 00     sts     0x00F0, r24
+    13dc:      80 91 f0 00     lds     r24, 0x00F0
+    13e0:      87 7f           andi    r24, 0xF7       ; 247
+    13e2:      80 93 f0 00     sts     0x00F0, r24
                        static inline void GlobalInterruptEnable(void)
                        {
                                GCC_MEMORY_BARRIER();
 
                                #if (ARCH == ARCH_AVR8)
                                sei();
-    10aa:      78 94           sei
+    13e6:      78 94           sei
        Endpoint_SelectEndpoint(ENDPOINT_CONTROLEP);
        USB_INT_Disable(USB_INT_RXSTPI);
 
        GlobalInterruptEnable();
 
        USB_Device_ProcessControlRequest();
-    10ac:      1b d0           rcall   .+54            ; 0x10e4 <USB_Device_ProcessControlRequest>
-    10ae:      10 92 e9 00     sts     0x00E9, r1
+    13e8:      1b d0           rcall   .+54            ; 0x1420 <USB_Device_ProcessControlRequest>
+    13ea:      10 92 e9 00     sts     0x00E9, r1
                                                break;
                                        case USB_INT_SOFI:
                                                UDIEN  |= (1 << SOFE);
                                                break;
                                        case USB_INT_RXSTPI:
                                                UEIENX |= (1 << RXSTPE);
-    10b2:      80 91 f0 00     lds     r24, 0x00F0
-    10b6:      88 60           ori     r24, 0x08       ; 8
-    10b8:      80 93 f0 00     sts     0x00F0, r24
-    10bc:      10 93 e9 00     sts     0x00E9, r17
+    13ee:      80 91 f0 00     lds     r24, 0x00F0
+    13f2:      88 60           ori     r24, 0x08       ; 8
+    13f4:      80 93 f0 00     sts     0x00F0, r24
+    13f8:      10 93 e9 00     sts     0x00E9, r17
 
        Endpoint_SelectEndpoint(ENDPOINT_CONTROLEP);
        USB_INT_Enable(USB_INT_RXSTPI);
        Endpoint_SelectEndpoint(PrevSelectedEndpoint);
 }
-    10c0:      ff 91           pop     r31
-    10c2:      ef 91           pop     r30
-    10c4:      bf 91           pop     r27
-    10c6:      af 91           pop     r26
-    10c8:      9f 91           pop     r25
-    10ca:      8f 91           pop     r24
-    10cc:      7f 91           pop     r23
-    10ce:      6f 91           pop     r22
-    10d0:      5f 91           pop     r21
-    10d2:      4f 91           pop     r20
-    10d4:      3f 91           pop     r19
-    10d6:      2f 91           pop     r18
-    10d8:      1f 91           pop     r17
-    10da:      0f 90           pop     r0
-    10dc:      0f be           out     0x3f, r0        ; 63
-    10de:      0f 90           pop     r0
-    10e0:      1f 90           pop     r1
-    10e2:      18 95           reti
-
-000010e4 <USB_Device_ProcessControlRequest>:
+    13fc:      ff 91           pop     r31
+    13fe:      ef 91           pop     r30
+    1400:      bf 91           pop     r27
+    1402:      af 91           pop     r26
+    1404:      9f 91           pop     r25
+    1406:      8f 91           pop     r24
+    1408:      7f 91           pop     r23
+    140a:      6f 91           pop     r22
+    140c:      5f 91           pop     r21
+    140e:      4f 91           pop     r20
+    1410:      3f 91           pop     r19
+    1412:      2f 91           pop     r18
+    1414:      1f 91           pop     r17
+    1416:      0f 90           pop     r0
+    1418:      0f be           out     0x3f, r0        ; 63
+    141a:      0f 90           pop     r0
+    141c:      1f 90           pop     r1
+    141e:      18 95           reti
+
+00001420 <USB_Device_ProcessControlRequest>:
 #if !defined(NO_DEVICE_REMOTE_WAKEUP)
 bool    USB_Device_RemoteWakeupEnabled;
 #endif
 
 void USB_Device_ProcessControlRequest(void)
 {
-    10e4:      1f 93           push    r17
-    10e6:      df 93           push    r29
-    10e8:      cf 93           push    r28
-    10ea:      cd b7           in      r28, 0x3d       ; 61
-    10ec:      de b7           in      r29, 0x3e       ; 62
-    10ee:      ac 97           sbiw    r28, 0x2c       ; 44
-    10f0:      0f b6           in      r0, 0x3f        ; 63
-    10f2:      f8 94           cli
-    10f4:      de bf           out     0x3e, r29       ; 62
-    10f6:      0f be           out     0x3f, r0        ; 63
-    10f8:      cd bf           out     0x3d, r28       ; 61
+    1420:      1f 93           push    r17
+    1422:      df 93           push    r29
+    1424:      cf 93           push    r28
+    1426:      cd b7           in      r28, 0x3d       ; 61
+    1428:      de b7           in      r29, 0x3e       ; 62
+    142a:      ac 97           sbiw    r28, 0x2c       ; 44
+    142c:      0f b6           in      r0, 0x3f        ; 63
+    142e:      f8 94           cli
+    1430:      de bf           out     0x3e, r29       ; 62
+    1432:      0f be           out     0x3f, r0        ; 63
+    1434:      cd bf           out     0x3d, r28       ; 61
        USB_ControlRequest.bRequest      = Endpoint_Read_8();
        USB_ControlRequest.wValue        = Endpoint_Read_16_LE();
        USB_ControlRequest.wIndex        = Endpoint_Read_16_LE();
        USB_ControlRequest.wLength       = Endpoint_Read_16_LE();
        #else
        uint8_t* RequestHeader = (uint8_t*)&USB_ControlRequest;
-    10fa:      ec e9           ldi     r30, 0x9C       ; 156
-    10fc:      f2 e0           ldi     r31, 0x02       ; 2
+    1436:      e8 ee           ldi     r30, 0xE8       ; 232
+    1438:      f2 e0           ldi     r31, 0x02       ; 2
                         *  \return Next byte in the currently selected endpoint's FIFO buffer.
                         */
                        static inline uint8_t Endpoint_Read_8(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;
                        static inline uint8_t Endpoint_Read_8(void)
                        {
                                return UEDATX;
-    10fe:      80 91 f1 00     lds     r24, 0x00F1
+    143a:      80 91 f1 00     lds     r24, 0x00F1
 
        for (uint8_t RequestHeaderByte = 0; RequestHeaderByte < sizeof(USB_Request_Header_t); RequestHeaderByte++)
          *(RequestHeader++) = Endpoint_Read_8();
-    1102:      81 93           st      Z+, r24
+    143e:      81 93           st      Z+, r24
        USB_ControlRequest.wIndex        = Endpoint_Read_16_LE();
        USB_ControlRequest.wLength       = Endpoint_Read_16_LE();
        #else
        uint8_t* RequestHeader = (uint8_t*)&USB_ControlRequest;
 
        for (uint8_t RequestHeaderByte = 0; RequestHeaderByte < sizeof(USB_Request_Header_t); RequestHeaderByte++)
-    1104:      22 e0           ldi     r18, 0x02       ; 2
-    1106:      e4 3a           cpi     r30, 0xA4       ; 164
-    1108:      f2 07           cpc     r31, r18
-    110a:      c9 f7           brne    .-14            ; 0x10fe <USB_Device_ProcessControlRequest+0x1a>
+    1440:      22 e0           ldi     r18, 0x02       ; 2
+    1442:      e0 3f           cpi     r30, 0xF0       ; 240
+    1444:      f2 07           cpc     r31, r18
+    1446:      c9 f7           brne    .-14            ; 0x143a <USB_Device_ProcessControlRequest+0x1a>
          *(RequestHeader++) = Endpoint_Read_8();
        #endif
 
        EVENT_USB_Device_ControlRequest();
-    110c:      f3 da           rcall   .-2586          ; 0x6f4 <EVENT_USB_Device_ControlRequest>
+    1448:      29 d9           rcall   .-3502          ; 0x69c <EVENT_USB_Device_ControlRequest>
                         *  \return Boolean \c true if the selected endpoint has received a SETUP packet, \c false otherwise.
                         */
                        static inline bool Endpoint_IsSETUPReceived(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;
                        static inline bool Endpoint_IsSETUPReceived(void)
                        {
                                return ((UEINTX & (1 << RXSTPI)) ? true : false);
-    110e:      80 91 e8 00     lds     r24, 0x00E8
+    144a:      80 91 e8 00     lds     r24, 0x00E8
 
        if (Endpoint_IsSETUPReceived())
-    1112:      83 ff           sbrs    r24, 3
-    1114:      30 c1           rjmp    .+608           ; 0x1376 <USB_Device_ProcessControlRequest+0x292>
+    144e:      83 ff           sbrs    r24, 3
+    1450:      31 c1           rjmp    .+610           ; 0x16b4 <USB_Device_ProcessControlRequest+0x294>
        {
                uint8_t bmRequestType = USB_ControlRequest.bmRequestType;
-    1116:      80 91 9c 02     lds     r24, 0x029C
+    1452:      80 91 e8 02     lds     r24, 0x02E8
 
                switch (USB_ControlRequest.bRequest)
-    111a:      20 91 9d 02     lds     r18, 0x029D
-    111e:      25 30           cpi     r18, 0x05       ; 5
-    1120:      09 f4           brne    .+2             ; 0x1124 <USB_Device_ProcessControlRequest+0x40>
-    1122:      84 c0           rjmp    .+264           ; 0x122c <USB_Device_ProcessControlRequest+0x148>
-    1124:      26 30           cpi     r18, 0x06       ; 6
-    1126:      40 f4           brcc    .+16            ; 0x1138 <USB_Device_ProcessControlRequest+0x54>
-    1128:      21 30           cpi     r18, 0x01       ; 1
-    112a:      a1 f1           breq    .+104           ; 0x1194 <USB_Device_ProcessControlRequest+0xb0>
-    112c:      21 30           cpi     r18, 0x01       ; 1
-    112e:      70 f0           brcs    .+28            ; 0x114c <USB_Device_ProcessControlRequest+0x68>
-    1130:      23 30           cpi     r18, 0x03       ; 3
-    1132:      09 f0           breq    .+2             ; 0x1136 <USB_Device_ProcessControlRequest+0x52>
-    1134:      20 c1           rjmp    .+576           ; 0x1376 <USB_Device_ProcessControlRequest+0x292>
-    1136:      2e c0           rjmp    .+92            ; 0x1194 <USB_Device_ProcessControlRequest+0xb0>
-    1138:      28 30           cpi     r18, 0x08       ; 8
-    113a:      09 f4           brne    .+2             ; 0x113e <USB_Device_ProcessControlRequest+0x5a>
-    113c:      ef c0           rjmp    .+478           ; 0x131c <USB_Device_ProcessControlRequest+0x238>
-    113e:      29 30           cpi     r18, 0x09       ; 9
-    1140:      09 f4           brne    .+2             ; 0x1144 <USB_Device_ProcessControlRequest+0x60>
-    1142:      fe c0           rjmp    .+508           ; 0x1340 <USB_Device_ProcessControlRequest+0x25c>
-    1144:      26 30           cpi     r18, 0x06       ; 6
-    1146:      09 f0           breq    .+2             ; 0x114a <USB_Device_ProcessControlRequest+0x66>
-    1148:      16 c1           rjmp    .+556           ; 0x1376 <USB_Device_ProcessControlRequest+0x292>
-    114a:      92 c0           rjmp    .+292           ; 0x1270 <USB_Device_ProcessControlRequest+0x18c>
+    1456:      20 91 e9 02     lds     r18, 0x02E9
+    145a:      25 30           cpi     r18, 0x05       ; 5
+    145c:      09 f4           brne    .+2             ; 0x1460 <USB_Device_ProcessControlRequest+0x40>
+    145e:      84 c0           rjmp    .+264           ; 0x1568 <USB_Device_ProcessControlRequest+0x148>
+    1460:      26 30           cpi     r18, 0x06       ; 6
+    1462:      40 f4           brcc    .+16            ; 0x1474 <USB_Device_ProcessControlRequest+0x54>
+    1464:      21 30           cpi     r18, 0x01       ; 1
+    1466:      a1 f1           breq    .+104           ; 0x14d0 <USB_Device_ProcessControlRequest+0xb0>
+    1468:      21 30           cpi     r18, 0x01       ; 1
+    146a:      70 f0           brcs    .+28            ; 0x1488 <USB_Device_ProcessControlRequest+0x68>
+    146c:      23 30           cpi     r18, 0x03       ; 3
+    146e:      09 f0           breq    .+2             ; 0x1472 <USB_Device_ProcessControlRequest+0x52>
+    1470:      21 c1           rjmp    .+578           ; 0x16b4 <USB_Device_ProcessControlRequest+0x294>
+    1472:      2e c0           rjmp    .+92            ; 0x14d0 <USB_Device_ProcessControlRequest+0xb0>
+    1474:      28 30           cpi     r18, 0x08       ; 8
+    1476:      09 f4           brne    .+2             ; 0x147a <USB_Device_ProcessControlRequest+0x5a>
+    1478:      ef c0           rjmp    .+478           ; 0x1658 <USB_Device_ProcessControlRequest+0x238>
+    147a:      29 30           cpi     r18, 0x09       ; 9
+    147c:      09 f4           brne    .+2             ; 0x1480 <USB_Device_ProcessControlRequest+0x60>
+    147e:      fe c0           rjmp    .+508           ; 0x167c <USB_Device_ProcessControlRequest+0x25c>
+    1480:      26 30           cpi     r18, 0x06       ; 6
+    1482:      09 f0           breq    .+2             ; 0x1486 <USB_Device_ProcessControlRequest+0x66>
+    1484:      17 c1           rjmp    .+558           ; 0x16b4 <USB_Device_ProcessControlRequest+0x294>
+    1486:      92 c0           rjmp    .+292           ; 0x15ac <USB_Device_ProcessControlRequest+0x18c>
                {
                        case REQ_GetStatus:
                                if ((bmRequestType == (REQDIR_DEVICETOHOST | REQTYPE_STANDARD | REQREC_DEVICE)) ||
-    114c:      80 38           cpi     r24, 0x80       ; 128
-    114e:      21 f0           breq    .+8             ; 0x1158 <USB_Device_ProcessControlRequest+0x74>
-    1150:      82 38           cpi     r24, 0x82       ; 130
-    1152:      09 f0           breq    .+2             ; 0x1156 <USB_Device_ProcessControlRequest+0x72>
-    1154:      10 c1           rjmp    .+544           ; 0x1376 <USB_Device_ProcessControlRequest+0x292>
-    1156:      08 c0           rjmp    .+16            ; 0x1168 <USB_Device_ProcessControlRequest+0x84>
+    1488:      80 38           cpi     r24, 0x80       ; 128
+    148a:      21 f0           breq    .+8             ; 0x1494 <USB_Device_ProcessControlRequest+0x74>
+    148c:      82 38           cpi     r24, 0x82       ; 130
+    148e:      09 f0           breq    .+2             ; 0x1492 <USB_Device_ProcessControlRequest+0x72>
+    1490:      11 c1           rjmp    .+546           ; 0x16b4 <USB_Device_ProcessControlRequest+0x294>
+    1492:      08 c0           rjmp    .+16            ; 0x14a4 <USB_Device_ProcessControlRequest+0x84>
        Endpoint_ClearOUT();
 }
 
 static void USB_Device_GetStatus(void)
 {
        uint8_t CurrentStatus = 0;
-    1158:      80 91 99 02     lds     r24, 0x0299
+    1494:      80 91 e5 02     lds     r24, 0x02E5
                        if (USB_Device_CurrentlySelfPowered)
                          CurrentStatus |= FEATURE_SELFPOWERED_ENABLED;
                        #endif
 
                        #if !defined(NO_DEVICE_REMOTE_WAKEUP)
                        if (USB_Device_RemoteWakeupEnabled)
-    115c:      90 91 9a 02     lds     r25, 0x029A
-    1160:      99 23           and     r25, r25
-    1162:      71 f0           breq    .+28            ; 0x1180 <USB_Device_ProcessControlRequest+0x9c>
+    1498:      90 91 e6 02     lds     r25, 0x02E6
+    149c:      99 23           and     r25, r25
+    149e:      71 f0           breq    .+28            ; 0x14bc <USB_Device_ProcessControlRequest+0x9c>
                          CurrentStatus |= FEATURE_REMOTE_WAKEUP_ENABLED;
-    1164:      82 60           ori     r24, 0x02       ; 2
-    1166:      0c c0           rjmp    .+24            ; 0x1180 <USB_Device_ProcessControlRequest+0x9c>
+    14a0:      82 60           ori     r24, 0x02       ; 2
+    14a2:      0c c0           rjmp    .+24            ; 0x14bc <USB_Device_ProcessControlRequest+0x9c>
                         */
                        static inline void Endpoint_SelectEndpoint(const uint8_t Address) ATTR_ALWAYS_INLINE;
                        static inline void Endpoint_SelectEndpoint(const uint8_t Address)
                        {
                                #if !defined(CONTROL_ONLY_DEVICE)
                                        UENUM = (Address & ENDPOINT_EPNUM_MASK);
-    1168:      80 91 a0 02     lds     r24, 0x02A0
-    116c:      8f 70           andi    r24, 0x0F       ; 15
-    116e:      80 93 e9 00     sts     0x00E9, r24
+    14a4:      80 91 ec 02     lds     r24, 0x02EC
+    14a8:      8f 70           andi    r24, 0x0F       ; 15
+    14aa:      80 93 e9 00     sts     0x00E9, r24
                         *  \return Boolean \c true if the currently selected endpoint is stalled, \c false otherwise.
                         */
                        static inline bool Endpoint_IsStalled(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;
                        static inline bool Endpoint_IsStalled(void)
                        {
                                return ((UECONX & (1 << STALLRQ)) ? true : false);
-    1172:      90 91 eb 00     lds     r25, 0x00EB
+    14ae:      90 91 eb 00     lds     r25, 0x00EB
                        break;
                case (REQDIR_DEVICETOHOST | REQTYPE_STANDARD | REQREC_ENDPOINT):
                        #if !defined(CONTROL_ONLY_DEVICE)
                        Endpoint_SelectEndpoint((uint8_t)USB_ControlRequest.wIndex & ENDPOINT_EPNUM_MASK);
 
                        CurrentStatus = Endpoint_IsStalled();
-    1176:      81 e0           ldi     r24, 0x01       ; 1
-    1178:      95 ff           sbrs    r25, 5
-    117a:      80 e0           ldi     r24, 0x00       ; 0
+    14b2:      81 e0           ldi     r24, 0x01       ; 1
+    14b4:      95 ff           sbrs    r25, 5
+    14b6:      80 e0           ldi     r24, 0x00       ; 0
                         */
                        static inline void Endpoint_SelectEndpoint(const uint8_t Address) ATTR_ALWAYS_INLINE;
                        static inline void Endpoint_SelectEndpoint(const uint8_t Address)
                        {
                                #if !defined(CONTROL_ONLY_DEVICE)
                                        UENUM = (Address & ENDPOINT_EPNUM_MASK);
-    117c:      10 92 e9 00     sts     0x00E9, r1
+    14b8:      10 92 e9 00     sts     0x00E9, r1
                         *  \note This is not applicable for non CONTROL type endpoints.
                         */
                        static inline void Endpoint_ClearSETUP(void) ATTR_ALWAYS_INLINE;
                        static inline void Endpoint_ClearSETUP(void)
                        {
                                UEINTX &= ~(1 << RXSTPI);
-    1180:      90 91 e8 00     lds     r25, 0x00E8
-    1184:      97 7f           andi    r25, 0xF7       ; 247
-    1186:      90 93 e8 00     sts     0x00E8, r25
+    14bc:      90 91 e8 00     lds     r25, 0x00E8
+    14c0:      97 7f           andi    r25, 0xF7       ; 247
+    14c2:      90 93 e8 00     sts     0x00E8, r25
                         *  \param[in] Data  Data to write to the currently selected endpoint's FIFO buffer.
                         */
                        static inline void Endpoint_Write_16_LE(const uint16_t Data) ATTR_ALWAYS_INLINE;
                        static inline void Endpoint_Write_16_LE(const uint16_t Data)
                        {
                                UEDATX = (Data & 0xFF);
-    118a:      80 93 f1 00     sts     0x00F1, r24
+    14c6:      80 93 f1 00     sts     0x00F1, r24
                                UEDATX = (Data >> 8);
-    118e:      10 92 f1 00     sts     0x00F1, r1
-    1192:      cf c0           rjmp    .+414           ; 0x1332 <USB_Device_ProcessControlRequest+0x24e>
+    14ca:      10 92 f1 00     sts     0x00F1, r1
+    14ce:      cf c0           rjmp    .+414           ; 0x166e <USB_Device_ProcessControlRequest+0x24e>
                                }
 
                                break;
                        case REQ_ClearFeature:
                        case REQ_SetFeature:
                                if ((bmRequestType == (REQDIR_HOSTTODEVICE | REQTYPE_STANDARD | REQREC_DEVICE)) ||
-    1194:      88 23           and     r24, r24
-    1196:      19 f0           breq    .+6             ; 0x119e <USB_Device_ProcessControlRequest+0xba>
-    1198:      82 30           cpi     r24, 0x02       ; 2
-    119a:      09 f0           breq    .+2             ; 0x119e <USB_Device_ProcessControlRequest+0xba>
-    119c:      ec c0           rjmp    .+472           ; 0x1376 <USB_Device_ProcessControlRequest+0x292>
+    14d0:      88 23           and     r24, r24
+    14d2:      19 f0           breq    .+6             ; 0x14da <USB_Device_ProcessControlRequest+0xba>
+    14d4:      82 30           cpi     r24, 0x02       ; 2
+    14d6:      09 f0           breq    .+2             ; 0x14da <USB_Device_ProcessControlRequest+0xba>
+    14d8:      ed c0           rjmp    .+474           ; 0x16b4 <USB_Device_ProcessControlRequest+0x294>
        Endpoint_ClearStatusStage();
 }
 
 static void USB_Device_ClearSetFeature(void)
 {
        switch (USB_ControlRequest.bmRequestType & CONTROL_REQTYPE_RECIPIENT)
-    119e:      90 e0           ldi     r25, 0x00       ; 0
-    11a0:      8f 71           andi    r24, 0x1F       ; 31
-    11a2:      90 70           andi    r25, 0x00       ; 0
-    11a4:      00 97           sbiw    r24, 0x00       ; 0
-    11a6:      29 f0           breq    .+10            ; 0x11b2 <USB_Device_ProcessControlRequest+0xce>
-    11a8:      82 30           cpi     r24, 0x02       ; 2
-    11aa:      91 05           cpc     r25, r1
-    11ac:      09 f0           breq    .+2             ; 0x11b0 <USB_Device_ProcessControlRequest+0xcc>
-    11ae:      e3 c0           rjmp    .+454           ; 0x1376 <USB_Device_ProcessControlRequest+0x292>
-    11b0:      0b c0           rjmp    .+22            ; 0x11c8 <USB_Device_ProcessControlRequest+0xe4>
+    14da:      90 e0           ldi     r25, 0x00       ; 0
+    14dc:      8f 71           andi    r24, 0x1F       ; 31
+    14de:      90 70           andi    r25, 0x00       ; 0
+    14e0:      00 97           sbiw    r24, 0x00       ; 0
+    14e2:      29 f0           breq    .+10            ; 0x14ee <USB_Device_ProcessControlRequest+0xce>
+    14e4:      82 30           cpi     r24, 0x02       ; 2
+    14e6:      91 05           cpc     r25, r1
+    14e8:      09 f0           breq    .+2             ; 0x14ec <USB_Device_ProcessControlRequest+0xcc>
+    14ea:      e4 c0           rjmp    .+456           ; 0x16b4 <USB_Device_ProcessControlRequest+0x294>
+    14ec:      0b c0           rjmp    .+22            ; 0x1504 <USB_Device_ProcessControlRequest+0xe4>
        {
                #if !defined(NO_DEVICE_REMOTE_WAKEUP)
                case REQREC_DEVICE:
                        if ((uint8_t)USB_ControlRequest.wValue == FEATURE_SEL_DeviceRemoteWakeup)
-    11b2:      80 91 9e 02     lds     r24, 0x029E
-    11b6:      81 30           cpi     r24, 0x01       ; 1
-    11b8:      09 f0           breq    .+2             ; 0x11bc <USB_Device_ProcessControlRequest+0xd8>
-    11ba:      dd c0           rjmp    .+442           ; 0x1376 <USB_Device_ProcessControlRequest+0x292>
+    14ee:      80 91 ea 02     lds     r24, 0x02EA
+    14f2:      81 30           cpi     r24, 0x01       ; 1
+    14f4:      09 f0           breq    .+2             ; 0x14f8 <USB_Device_ProcessControlRequest+0xd8>
+    14f6:      de c0           rjmp    .+444           ; 0x16b4 <USB_Device_ProcessControlRequest+0x294>
                          USB_Device_RemoteWakeupEnabled = (USB_ControlRequest.bRequest == REQ_SetFeature);
-    11bc:      23 30           cpi     r18, 0x03       ; 3
-    11be:      09 f0           breq    .+2             ; 0x11c2 <USB_Device_ProcessControlRequest+0xde>
-    11c0:      80 e0           ldi     r24, 0x00       ; 0
-    11c2:      80 93 9a 02     sts     0x029A, r24
-    11c6:      2c c0           rjmp    .+88            ; 0x1220 <USB_Device_ProcessControlRequest+0x13c>
+    14f8:      23 30           cpi     r18, 0x03       ; 3
+    14fa:      09 f0           breq    .+2             ; 0x14fe <USB_Device_ProcessControlRequest+0xde>
+    14fc:      80 e0           ldi     r24, 0x00       ; 0
+    14fe:      80 93 e6 02     sts     0x02E6, r24
+    1502:      2c c0           rjmp    .+88            ; 0x155c <USB_Device_ProcessControlRequest+0x13c>
 
                        break;
                #endif
                #if !defined(CONTROL_ONLY_DEVICE)
                case REQREC_ENDPOINT:
                        if ((uint8_t)USB_ControlRequest.wValue == FEATURE_SEL_EndpointHalt)
-    11c8:      80 91 9e 02     lds     r24, 0x029E
-    11cc:      88 23           and     r24, r24
-    11ce:      41 f5           brne    .+80            ; 0x1220 <USB_Device_ProcessControlRequest+0x13c>
+    1504:      80 91 ea 02     lds     r24, 0x02EA
+    1508:      88 23           and     r24, r24
+    150a:      41 f5           brne    .+80            ; 0x155c <USB_Device_ProcessControlRequest+0x13c>
                        {
                                uint8_t EndpointIndex = ((uint8_t)USB_ControlRequest.wIndex & ENDPOINT_EPNUM_MASK);
-    11d0:      20 91 a0 02     lds     r18, 0x02A0
-    11d4:      2f 70           andi    r18, 0x0F       ; 15
+    150c:      20 91 ec 02     lds     r18, 0x02EC
+    1510:      2f 70           andi    r18, 0x0F       ; 15
 
                                if (EndpointIndex == ENDPOINT_CONTROLEP)
-    11d6:      09 f4           brne    .+2             ; 0x11da <USB_Device_ProcessControlRequest+0xf6>
-    11d8:      ce c0           rjmp    .+412           ; 0x1376 <USB_Device_ProcessControlRequest+0x292>
+    1512:      09 f4           brne    .+2             ; 0x1516 <USB_Device_ProcessControlRequest+0xf6>
+    1514:      cf c0           rjmp    .+414           ; 0x16b4 <USB_Device_ProcessControlRequest+0x294>
                         */
                        static inline void Endpoint_SelectEndpoint(const uint8_t Address) ATTR_ALWAYS_INLINE;
                        static inline void Endpoint_SelectEndpoint(const uint8_t Address)
                        {
                                #if !defined(CONTROL_ONLY_DEVICE)
                                        UENUM = (Address & ENDPOINT_EPNUM_MASK);
-    11da:      20 93 e9 00     sts     0x00E9, r18
+    1516:      20 93 e9 00     sts     0x00E9, r18
                         * \return Boolean \c true if the currently selected endpoint is enabled, \c false otherwise.
                         */
                        static inline bool Endpoint_IsEnabled(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;
                        static inline bool Endpoint_IsEnabled(void)
                        {
                                return ((UECONX & (1 << EPEN)) ? true : false);
-    11de:      80 91 eb 00     lds     r24, 0x00EB
+    151a:      80 91 eb 00     lds     r24, 0x00EB
                                  return;
 
                                Endpoint_SelectEndpoint(EndpointIndex);
 
                                if (Endpoint_IsEnabled())
-    11e2:      80 ff           sbrs    r24, 0
-    11e4:      1d c0           rjmp    .+58            ; 0x1220 <USB_Device_ProcessControlRequest+0x13c>
+    151e:      80 ff           sbrs    r24, 0
+    1520:      1d c0           rjmp    .+58            ; 0x155c <USB_Device_ProcessControlRequest+0x13c>
                                {
                                        if (USB_ControlRequest.bRequest == REQ_SetFeature)
-    11e6:      80 91 9d 02     lds     r24, 0x029D
-    11ea:      83 30           cpi     r24, 0x03       ; 3
-    11ec:      21 f4           brne    .+8             ; 0x11f6 <USB_Device_ProcessControlRequest+0x112>
+    1522:      80 91 e9 02     lds     r24, 0x02E9
+    1526:      83 30           cpi     r24, 0x03       ; 3
+    1528:      21 f4           brne    .+8             ; 0x1532 <USB_Device_ProcessControlRequest+0x112>
                         *  \ingroup Group_EndpointPacketManagement_AVR8
                         */
                        static inline void Endpoint_StallTransaction(void) ATTR_ALWAYS_INLINE;
                        static inline void Endpoint_StallTransaction(void)
                        {
                                UECONX |= (1 << STALLRQ);
-    11ee:      80 91 eb 00     lds     r24, 0x00EB
-    11f2:      80 62           ori     r24, 0x20       ; 32
-    11f4:      13 c0           rjmp    .+38            ; 0x121c <USB_Device_ProcessControlRequest+0x138>
+    152a:      80 91 eb 00     lds     r24, 0x00EB
+    152e:      80 62           ori     r24, 0x20       ; 32
+    1530:      13 c0           rjmp    .+38            ; 0x1558 <USB_Device_ProcessControlRequest+0x138>
                         *  \ingroup Group_EndpointPacketManagement_AVR8
                         */
                        static inline void Endpoint_ClearStall(void) ATTR_ALWAYS_INLINE;
                        static inline void Endpoint_ClearStall(void)
                        {
                                UECONX |= (1 << STALLRQC);
-    11f6:      80 91 eb 00     lds     r24, 0x00EB
-    11fa:      80 61           ori     r24, 0x10       ; 16
-    11fc:      80 93 eb 00     sts     0x00EB, r24
+    1532:      80 91 eb 00     lds     r24, 0x00EB
+    1536:      80 61           ori     r24, 0x10       ; 16
+    1538:      80 93 eb 00     sts     0x00EB, r24
                         *  \param[in] Address  Endpoint address whose FIFO buffers are to be reset.
                         */
                        static inline void Endpoint_ResetEndpoint(const uint8_t Address) ATTR_ALWAYS_INLINE;
                        static inline void Endpoint_ResetEndpoint(const uint8_t Address)
                        {
                                UERST = (1 << (Address & ENDPOINT_EPNUM_MASK));
-    1200:      81 e0           ldi     r24, 0x01       ; 1
-    1202:      90 e0           ldi     r25, 0x00       ; 0
-    1204:      02 c0           rjmp    .+4             ; 0x120a <USB_Device_ProcessControlRequest+0x126>
-    1206:      88 0f           add     r24, r24
-    1208:      99 1f           adc     r25, r25
-    120a:      2a 95           dec     r18
-    120c:      e2 f7           brpl    .-8             ; 0x1206 <USB_Device_ProcessControlRequest+0x122>
-    120e:      80 93 ea 00     sts     0x00EA, r24
+    153c:      81 e0           ldi     r24, 0x01       ; 1
+    153e:      90 e0           ldi     r25, 0x00       ; 0
+    1540:      02 c0           rjmp    .+4             ; 0x1546 <USB_Device_ProcessControlRequest+0x126>
+    1542:      88 0f           add     r24, r24
+    1544:      99 1f           adc     r25, r25
+    1546:      2a 95           dec     r18
+    1548:      e2 f7           brpl    .-8             ; 0x1542 <USB_Device_ProcessControlRequest+0x122>
+    154a:      80 93 ea 00     sts     0x00EA, r24
                                UERST = 0;
-    1212:      10 92 ea 00     sts     0x00EA, r1
+    154e:      10 92 ea 00     sts     0x00EA, r1
 
                        /** Resets the data toggle of the currently selected endpoint. */
                        static inline void Endpoint_ResetDataToggle(void) ATTR_ALWAYS_INLINE;
                        static inline void Endpoint_ResetDataToggle(void)
                        {
                                UECONX |= (1 << RSTDT);
-    1216:      80 91 eb 00     lds     r24, 0x00EB
-    121a:      88 60           ori     r24, 0x08       ; 8
-    121c:      80 93 eb 00     sts     0x00EB, r24
+    1552:      80 91 eb 00     lds     r24, 0x00EB
+    1556:      88 60           ori     r24, 0x08       ; 8
+    1558:      80 93 eb 00     sts     0x00EB, r24
                         */
                        static inline void Endpoint_SelectEndpoint(const uint8_t Address) ATTR_ALWAYS_INLINE;
                        static inline void Endpoint_SelectEndpoint(const uint8_t Address)
                        {
                                #if !defined(CONTROL_ONLY_DEVICE)
                                        UENUM = (Address & ENDPOINT_EPNUM_MASK);
-    1220:      10 92 e9 00     sts     0x00E9, r1
+    155c:      10 92 e9 00     sts     0x00E9, r1
                         *  \note This is not applicable for non CONTROL type endpoints.
                         */
                        static inline void Endpoint_ClearSETUP(void) ATTR_ALWAYS_INLINE;
                        static inline void Endpoint_ClearSETUP(void)
                        {
                                UEINTX &= ~(1 << RXSTPI);
-    1224:      80 91 e8 00     lds     r24, 0x00E8
-    1228:      87 7f           andi    r24, 0xF7       ; 247
-    122a:      86 c0           rjmp    .+268           ; 0x1338 <USB_Device_ProcessControlRequest+0x254>
+    1560:      80 91 e8 00     lds     r24, 0x00E8
+    1564:      87 7f           andi    r24, 0xF7       ; 247
+    1566:      86 c0           rjmp    .+268           ; 0x1674 <USB_Device_ProcessControlRequest+0x254>
                                        USB_Device_ClearSetFeature();
                                }
 
                                break;
                        case REQ_SetAddress:
                                if (bmRequestType == (REQDIR_HOSTTODEVICE | REQTYPE_STANDARD | REQREC_DEVICE))
-    122c:      88 23           and     r24, r24
-    122e:      09 f0           breq    .+2             ; 0x1232 <USB_Device_ProcessControlRequest+0x14e>
-    1230:      a2 c0           rjmp    .+324           ; 0x1376 <USB_Device_ProcessControlRequest+0x292>
+    1568:      88 23           and     r24, r24
+    156a:      09 f0           breq    .+2             ; 0x156e <USB_Device_ProcessControlRequest+0x14e>
+    156c:      a3 c0           rjmp    .+326           ; 0x16b4 <USB_Device_ProcessControlRequest+0x294>
        }
 }
 
 static void USB_Device_SetAddress(void)
 {
        uint8_t DeviceAddress = (USB_ControlRequest.wValue & 0x7F);
-    1232:      10 91 9e 02     lds     r17, 0x029E
-    1236:      1f 77           andi    r17, 0x7F       ; 127
+    156e:      10 91 ea 02     lds     r17, 0x02EA
+    1572:      1f 77           andi    r17, 0x7F       ; 127
                        #endif
 
                        static inline void USB_Device_SetDeviceAddress(const uint8_t Address) ATTR_ALWAYS_INLINE;
                        static inline void USB_Device_SetDeviceAddress(const uint8_t Address)
                        {
                                UDADDR = (UDADDR & (1 << ADDEN)) | (Address & 0x7F);
-    1238:      80 91 e3 00     lds     r24, 0x00E3
-    123c:      80 78           andi    r24, 0x80       ; 128
-    123e:      81 2b           or      r24, r17
-    1240:      80 93 e3 00     sts     0x00E3, r24
-    1244:      80 91 e8 00     lds     r24, 0x00E8
-    1248:      87 7f           andi    r24, 0xF7       ; 247
-    124a:      80 93 e8 00     sts     0x00E8, r24
+    1574:      80 91 e3 00     lds     r24, 0x00E3
+    1578:      80 78           andi    r24, 0x80       ; 128
+    157a:      81 2b           or      r24, r17
+    157c:      80 93 e3 00     sts     0x00E3, r24
+    1580:      80 91 e8 00     lds     r24, 0x00E8
+    1584:      87 7f           andi    r24, 0xF7       ; 247
+    1586:      80 93 e8 00     sts     0x00E8, r24
 
        USB_Device_SetDeviceAddress(DeviceAddress);
 
        Endpoint_ClearSETUP();
 
        Endpoint_ClearStatusStage();
-    124e:      d2 dd           rcall   .-1116          ; 0xdf4 <Endpoint_ClearStatusStage>
+    158a:      d2 dd           rcall   .-1116          ; 0x1130 <Endpoint_ClearStatusStage>
                         *  \return Boolean \c true if the current endpoint is ready for an IN packet, \c false otherwise.
                         */
                        static inline bool Endpoint_IsINReady(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;
                        static inline bool Endpoint_IsINReady(void)
                        {
                                return ((UEINTX & (1 << TXINI)) ? true : false);
-    1250:      80 91 e8 00     lds     r24, 0x00E8
+    158c:      80 91 e8 00     lds     r24, 0x00E8
 
        while (!(Endpoint_IsINReady()));
-    1254:      80 ff           sbrs    r24, 0
-    1256:      fc cf           rjmp    .-8             ; 0x1250 <USB_Device_ProcessControlRequest+0x16c>
+    1590:      80 ff           sbrs    r24, 0
+    1592:      fc cf           rjmp    .-8             ; 0x158c <USB_Device_ProcessControlRequest+0x16c>
                        static inline void USB_Device_EnableDeviceAddress(const uint8_t Address) ATTR_ALWAYS_INLINE;
                        static inline void USB_Device_EnableDeviceAddress(const uint8_t Address)
                        {
                                (void)Address;
                                
                                UDADDR |= (1 << ADDEN);
-    1258:      80 91 e3 00     lds     r24, 0x00E3
-    125c:      80 68           ori     r24, 0x80       ; 128
-    125e:      80 93 e3 00     sts     0x00E3, r24
+    1594:      80 91 e3 00     lds     r24, 0x00E3
+    1598:      80 68           ori     r24, 0x80       ; 128
+    159a:      80 93 e3 00     sts     0x00E3, r24
 
        USB_Device_EnableDeviceAddress(DeviceAddress);
 
        USB_DeviceState = (DeviceAddress) ? DEVICE_STATE_Addressed : DEVICE_STATE_Default;
-    1262:      11 23           and     r17, r17
-    1264:      11 f0           breq    .+4             ; 0x126a <USB_Device_ProcessControlRequest+0x186>
-    1266:      83 e0           ldi     r24, 0x03       ; 3
-    1268:      01 c0           rjmp    .+2             ; 0x126c <USB_Device_ProcessControlRequest+0x188>
-    126a:      82 e0           ldi     r24, 0x02       ; 2
-    126c:      8e bb           out     0x1e, r24       ; 30
-    126e:      83 c0           rjmp    .+262           ; 0x1376 <USB_Device_ProcessControlRequest+0x292>
+    159e:      11 23           and     r17, r17
+    15a0:      11 f0           breq    .+4             ; 0x15a6 <USB_Device_ProcessControlRequest+0x186>
+    15a2:      83 e0           ldi     r24, 0x03       ; 3
+    15a4:      01 c0           rjmp    .+2             ; 0x15a8 <USB_Device_ProcessControlRequest+0x188>
+    15a6:      82 e0           ldi     r24, 0x02       ; 2
+    15a8:      8e bb           out     0x1e, r24       ; 30
+    15aa:      84 c0           rjmp    .+264           ; 0x16b4 <USB_Device_ProcessControlRequest+0x294>
                                if (bmRequestType == (REQDIR_HOSTTODEVICE | REQTYPE_STANDARD | REQREC_DEVICE))
                                  USB_Device_SetAddress();
 
                                break;
                        case REQ_GetDescriptor:
                                if ((bmRequestType == (REQDIR_DEVICETOHOST | REQTYPE_STANDARD | REQREC_DEVICE)) ||
-    1270:      80 58           subi    r24, 0x80       ; 128
-    1272:      82 30           cpi     r24, 0x02       ; 2
-    1274:      08 f0           brcs    .+2             ; 0x1278 <USB_Device_ProcessControlRequest+0x194>
-    1276:      7f c0           rjmp    .+254           ; 0x1376 <USB_Device_ProcessControlRequest+0x292>
+    15ac:      80 58           subi    r24, 0x80       ; 128
+    15ae:      82 30           cpi     r24, 0x02       ; 2
+    15b0:      08 f0           brcs    .+2             ; 0x15b4 <USB_Device_ProcessControlRequest+0x194>
+    15b2:      80 c0           rjmp    .+256           ; 0x16b4 <USB_Device_ProcessControlRequest+0x294>
            !(defined(USE_FLASH_DESCRIPTORS) || defined(USE_EEPROM_DESCRIPTORS) || defined(USE_RAM_DESCRIPTORS))
        uint8_t DescriptorAddressSpace;
        #endif
 
        #if !defined(NO_INTERNAL_SERIAL) && (USE_INTERNAL_SERIAL != NO_DESCRIPTOR)
        if (USB_ControlRequest.wValue == ((DTYPE_String << 8) | USE_INTERNAL_SERIAL))
-    1278:      80 91 9e 02     lds     r24, 0x029E
-    127c:      90 91 9f 02     lds     r25, 0x029F
-    1280:      23 e0           ldi     r18, 0x03       ; 3
-    1282:      8c 3d           cpi     r24, 0xDC       ; 220
-    1284:      92 07           cpc     r25, r18
-    1286:      91 f5           brne    .+100           ; 0x12ec <USB_Device_ProcessControlRequest+0x208>
+    15b4:      80 91 ea 02     lds     r24, 0x02EA
+    15b8:      90 91 eb 02     lds     r25, 0x02EB
+    15bc:      23 e0           ldi     r18, 0x03       ; 3
+    15be:      8c 3d           cpi     r24, 0xDC       ; 220
+    15c0:      92 07           cpc     r25, r18
+    15c2:      91 f5           brne    .+100           ; 0x1628 <USB_Device_ProcessControlRequest+0x208>
        {
                USB_Descriptor_Header_t Header;
                uint16_t                UnicodeString[INTERNAL_SERIAL_LENGTH_BITS / 4];
        } SignatureDescriptor;
 
        SignatureDescriptor.Header.Type = DTYPE_String;
-    1288:      83 e0           ldi     r24, 0x03       ; 3
-    128a:      8c 83           std     Y+4, r24        ; 0x04
+    15c4:      83 e0           ldi     r24, 0x03       ; 3
+    15c6:      8c 83           std     Y+4, r24        ; 0x04
        SignatureDescriptor.Header.Size = USB_STRING_LEN(INTERNAL_SERIAL_LENGTH_BITS / 4);
-    128c:      8a e2           ldi     r24, 0x2A       ; 42
-    128e:      8b 83           std     Y+3, r24        ; 0x03
+    15c8:      8a e2           ldi     r24, 0x2A       ; 42
+    15ca:      8b 83           std     Y+3, r24        ; 0x03
                        static inline uint_reg_t GetGlobalInterruptMask(void)
                        {
                                GCC_MEMORY_BARRIER();
 
                                #if (ARCH == ARCH_AVR8)
                                return SREG;
-    1290:      5f b7           in      r21, 0x3f       ; 63
+    15cc:      5f b7           in      r21, 0x3f       ; 63
                        static inline void GlobalInterruptDisable(void)
                        {
                                GCC_MEMORY_BARRIER();
 
                                #if (ARCH == ARCH_AVR8)
                                cli();
-    1292:      f8 94           cli
+    15ce:      f8 94           cli
                                __builtin_ssrf(AVR32_SR_GM_OFFSET);
                                #elif (ARCH == ARCH_XMEGA)
                                cli();
                                #endif
 
                                GCC_MEMORY_BARRIER();
-    1294:      de 01           movw    r26, r28
-    1296:      15 96           adiw    r26, 0x05       ; 5
-    1298:      80 e0           ldi     r24, 0x00       ; 0
-    129a:      90 e0           ldi     r25, 0x00       ; 0
+    15d0:      de 01           movw    r26, r28
+    15d2:      15 96           adiw    r26, 0x05       ; 5
+    15d4:      80 e0           ldi     r24, 0x00       ; 0
+    15d6:      90 e0           ldi     r25, 0x00       ; 0
                        static inline void USB_Device_GetSerialString(uint16_t* const UnicodeString)
                        {
                                uint_reg_t CurrentGlobalInt = GetGlobalInterruptMask();
                                GlobalInterruptDisable();
 
                                uint8_t SigReadAddress = INTERNAL_SERIAL_START_ADDRESS;
-    129c:      4e e0           ldi     r20, 0x0E       ; 14
+    15d8:      4e e0           ldi     r20, 0x0E       ; 14
 
                                for (uint8_t SerialCharNum = 0; SerialCharNum < (INTERNAL_SERIAL_LENGTH_BITS / 4); SerialCharNum++)
                                {
                                        uint8_t SerialByte = boot_signature_byte_get(SigReadAddress);
-    129e:      61 e2           ldi     r22, 0x21       ; 33
-    12a0:      e4 2f           mov     r30, r20
-    12a2:      f0 e0           ldi     r31, 0x00       ; 0
-    12a4:      60 93 57 00     sts     0x0057, r22
-    12a8:      e4 91           lpm     r30, Z+
+    15da:      61 e2           ldi     r22, 0x21       ; 33
+    15dc:      e4 2f           mov     r30, r20
+    15de:      f0 e0           ldi     r31, 0x00       ; 0
+    15e0:      60 93 57 00     sts     0x0057, r22
+    15e4:      e4 91           lpm     r30, Z+
 
                                        if (SerialCharNum & 0x01)
-    12aa:      80 ff           sbrs    r24, 0
-    12ac:      03 c0           rjmp    .+6             ; 0x12b4 <USB_Device_ProcessControlRequest+0x1d0>
+    15e6:      80 ff           sbrs    r24, 0
+    15e8:      03 c0           rjmp    .+6             ; 0x15f0 <USB_Device_ProcessControlRequest+0x1d0>
                                        {
                                                SerialByte >>= 4;
-    12ae:      e2 95           swap    r30
-    12b0:      ef 70           andi    r30, 0x0F       ; 15
+    15ea:      e2 95           swap    r30
+    15ec:      ef 70           andi    r30, 0x0F       ; 15
                                                SigReadAddress++;
-    12b2:      4f 5f           subi    r20, 0xFF       ; 255
+    15ee:      4f 5f           subi    r20, 0xFF       ; 255
                                        }
 
                                        SerialByte &= 0x0F;
-    12b4:      ef 70           andi    r30, 0x0F       ; 15
-    12b6:      2e 2f           mov     r18, r30
-    12b8:      30 e0           ldi     r19, 0x00       ; 0
+    15f0:      ef 70           andi    r30, 0x0F       ; 15
+    15f2:      2e 2f           mov     r18, r30
+    15f4:      30 e0           ldi     r19, 0x00       ; 0
 
                                        UnicodeString[SerialCharNum] = cpu_to_le16((SerialByte >= 10) ?
-    12ba:      ea 30           cpi     r30, 0x0A       ; 10
-    12bc:      18 f0           brcs    .+6             ; 0x12c4 <USB_Device_ProcessControlRequest+0x1e0>
-    12be:      29 5c           subi    r18, 0xC9       ; 201
-    12c0:      3f 4f           sbci    r19, 0xFF       ; 255
-    12c2:      02 c0           rjmp    .+4             ; 0x12c8 <USB_Device_ProcessControlRequest+0x1e4>
-    12c4:      20 5d           subi    r18, 0xD0       ; 208
-    12c6:      3f 4f           sbci    r19, 0xFF       ; 255
-    12c8:      2d 93           st      X+, r18
-    12ca:      3d 93           st      X+, r19
-    12cc:      01 96           adiw    r24, 0x01       ; 1
+    15f6:      ea 30           cpi     r30, 0x0A       ; 10
+    15f8:      18 f0           brcs    .+6             ; 0x1600 <USB_Device_ProcessControlRequest+0x1e0>
+    15fa:      29 5c           subi    r18, 0xC9       ; 201
+    15fc:      3f 4f           sbci    r19, 0xFF       ; 255
+    15fe:      02 c0           rjmp    .+4             ; 0x1604 <USB_Device_ProcessControlRequest+0x1e4>
+    1600:      20 5d           subi    r18, 0xD0       ; 208
+    1602:      3f 4f           sbci    r19, 0xFF       ; 255
+    1604:      2d 93           st      X+, r18
+    1606:      3d 93           st      X+, r19
+    1608:      01 96           adiw    r24, 0x01       ; 1
                                uint_reg_t CurrentGlobalInt = GetGlobalInterruptMask();
                                GlobalInterruptDisable();
 
                                uint8_t SigReadAddress = INTERNAL_SERIAL_START_ADDRESS;
 
                                for (uint8_t SerialCharNum = 0; SerialCharNum < (INTERNAL_SERIAL_LENGTH_BITS / 4); SerialCharNum++)
-    12ce:      84 31           cpi     r24, 0x14       ; 20
-    12d0:      91 05           cpc     r25, r1
-    12d2:      31 f7           brne    .-52            ; 0x12a0 <USB_Device_ProcessControlRequest+0x1bc>
+    160a:      84 31           cpi     r24, 0x14       ; 20
+    160c:      91 05           cpc     r25, r1
+    160e:      31 f7           brne    .-52            ; 0x15dc <USB_Device_ProcessControlRequest+0x1bc>
                        static inline void SetGlobalInterruptMask(const uint_reg_t GlobalIntState)
                        {
                                GCC_MEMORY_BARRIER();
 
                                #if (ARCH == ARCH_AVR8)
                                SREG = GlobalIntState;
-    12d4:      5f bf           out     0x3f, r21       ; 63
+    1610:      5f bf           out     0x3f, r21       ; 63
                         *  \note This is not applicable for non CONTROL type endpoints.
                         */
                        static inline void Endpoint_ClearSETUP(void) ATTR_ALWAYS_INLINE;
                        static inline void Endpoint_ClearSETUP(void)
                        {
                                UEINTX &= ~(1 << RXSTPI);
-    12d6:      80 91 e8 00     lds     r24, 0x00E8
-    12da:      87 7f           andi    r24, 0xF7       ; 247
-    12dc:      80 93 e8 00     sts     0x00E8, r24
+    1612:      80 91 e8 00     lds     r24, 0x00E8
+    1616:      87 7f           andi    r24, 0xF7       ; 247
+    1618:      80 93 e8 00     sts     0x00E8, r24
 
        USB_Device_GetSerialString(SignatureDescriptor.UnicodeString);
 
        Endpoint_ClearSETUP();
 
        Endpoint_Write_Control_Stream_LE(&SignatureDescriptor, sizeof(SignatureDescriptor));
-    12e0:      ce 01           movw    r24, r28
-    12e2:      03 96           adiw    r24, 0x03       ; 3
-    12e4:      6a e2           ldi     r22, 0x2A       ; 42
-    12e6:      70 e0           ldi     r23, 0x00       ; 0
-    12e8:      55 dc           rcall   .-1878          ; 0xb94 <Endpoint_Write_Control_Stream_LE>
-    12ea:      12 c0           rjmp    .+36            ; 0x1310 <USB_Device_ProcessControlRequest+0x22c>
+    161c:      ce 01           movw    r24, r28
+    161e:      03 96           adiw    r24, 0x03       ; 3
+    1620:      6a e2           ldi     r22, 0x2A       ; 42
+    1622:      70 e0           ldi     r23, 0x00       ; 0
+    1624:      55 dc           rcall   .-1878          ; 0xed0 <Endpoint_Write_Control_Stream_LE>
+    1626:      12 c0           rjmp    .+36            ; 0x164c <USB_Device_ProcessControlRequest+0x22c>
                USB_Device_GetInternalSerialDescriptor();
                return;
        }
        #endif
 
        if ((DescriptorSize = CALLBACK_USB_GetDescriptor(USB_ControlRequest.wValue, USB_ControlRequest.wIndex,
-    12ec:      60 91 a0 02     lds     r22, 0x02A0
-    12f0:      ae 01           movw    r20, r28
-    12f2:      4f 5f           subi    r20, 0xFF       ; 255
-    12f4:      5f 4f           sbci    r21, 0xFF       ; 255
-    12f6:      21 dc           rcall   .-1982          ; 0xb3a <CALLBACK_USB_GetDescriptor>
-    12f8:      bc 01           movw    r22, r24
-    12fa:      00 97           sbiw    r24, 0x00       ; 0
-    12fc:      09 f4           brne    .+2             ; 0x1300 <USB_Device_ProcessControlRequest+0x21c>
-    12fe:      3b c0           rjmp    .+118           ; 0x1376 <USB_Device_ProcessControlRequest+0x292>
-    1300:      80 91 e8 00     lds     r24, 0x00E8
-    1304:      87 7f           andi    r24, 0xF7       ; 247
-    1306:      80 93 e8 00     sts     0x00E8, r24
+    1628:      60 91 ec 02     lds     r22, 0x02EC
+    162c:      ae 01           movw    r20, r28
+    162e:      4f 5f           subi    r20, 0xFF       ; 255
+    1630:      5f 4f           sbci    r21, 0xFF       ; 255
+    1632:      21 dc           rcall   .-1982          ; 0xe76 <CALLBACK_USB_GetDescriptor>
+    1634:      bc 01           movw    r22, r24
+    1636:      00 97           sbiw    r24, 0x00       ; 0
+    1638:      09 f4           brne    .+2             ; 0x163c <USB_Device_ProcessControlRequest+0x21c>
+    163a:      3c c0           rjmp    .+120           ; 0x16b4 <USB_Device_ProcessControlRequest+0x294>
+    163c:      80 91 e8 00     lds     r24, 0x00E8
+    1640:      87 7f           andi    r24, 0xF7       ; 247
+    1642:      80 93 e8 00     sts     0x00E8, r24
        #if defined(USE_RAM_DESCRIPTORS) || !defined(ARCH_HAS_MULTI_ADDRESS_SPACE)
        Endpoint_Write_Control_Stream_LE(DescriptorPointer, DescriptorSize);
        #elif defined(USE_EEPROM_DESCRIPTORS)
        Endpoint_Write_Control_EStream_LE(DescriptorPointer, DescriptorSize);
        #elif defined(USE_FLASH_DESCRIPTORS)
        Endpoint_Write_Control_PStream_LE(DescriptorPointer, DescriptorSize);
-    130a:      89 81           ldd     r24, Y+1        ; 0x01
-    130c:      9a 81           ldd     r25, Y+2        ; 0x02
-    130e:      9c dc           rcall   .-1736          ; 0xc48 <Endpoint_Write_Control_PStream_LE>
+    1646:      89 81           ldd     r24, Y+1        ; 0x01
+    1648:      9a 81           ldd     r25, Y+2        ; 0x02
+    164a:      9c dc           rcall   .-1736          ; 0xf84 <Endpoint_Write_Control_PStream_LE>
                         */
                        static inline void Endpoint_ClearOUT(void) ATTR_ALWAYS_INLINE;
                        static inline void Endpoint_ClearOUT(void)
                        {
                                #if !defined(CONTROL_ONLY_DEVICE)
                                        UEINTX &= ~((1 << RXOUTI) | (1 << FIFOCON));
-    1310:      80 91 e8 00     lds     r24, 0x00E8
-    1314:      8b 77           andi    r24, 0x7B       ; 123
-    1316:      80 93 e8 00     sts     0x00E8, r24
-    131a:      2d c0           rjmp    .+90            ; 0x1376 <USB_Device_ProcessControlRequest+0x292>
+    164c:      80 91 e8 00     lds     r24, 0x00E8
+    1650:      8b 77           andi    r24, 0x7B       ; 123
+    1652:      80 93 e8 00     sts     0x00E8, r24
+    1656:      2e c0           rjmp    .+92            ; 0x16b4 <USB_Device_ProcessControlRequest+0x294>
                                        USB_Device_GetDescriptor();
                                }
 
                                break;
                        case REQ_GetConfiguration:
                                if (bmRequestType == (REQDIR_DEVICETOHOST | REQTYPE_STANDARD | REQREC_DEVICE))
-    131c:      80 38           cpi     r24, 0x80       ; 128
-    131e:      59 f5           brne    .+86            ; 0x1376 <USB_Device_ProcessControlRequest+0x292>
+    1658:      80 38           cpi     r24, 0x80       ; 128
+    165a:      61 f5           brne    .+88            ; 0x16b4 <USB_Device_ProcessControlRequest+0x294>
                         *  \note This is not applicable for non CONTROL type endpoints.
                         */
                        static inline void Endpoint_ClearSETUP(void) ATTR_ALWAYS_INLINE;
                        static inline void Endpoint_ClearSETUP(void)
                        {
                                UEINTX &= ~(1 << RXSTPI);
-    1320:      80 91 e8 00     lds     r24, 0x00E8
-    1324:      87 7f           andi    r24, 0xF7       ; 247
-    1326:      80 93 e8 00     sts     0x00E8, r24
+    165c:      80 91 e8 00     lds     r24, 0x00E8
+    1660:      87 7f           andi    r24, 0xF7       ; 247
+    1662:      80 93 e8 00     sts     0x00E8, r24
 
 static void USB_Device_GetConfiguration(void)
 {
        Endpoint_ClearSETUP();
 
        Endpoint_Write_8(USB_Device_ConfigurationNumber);
-    132a:      80 91 98 02     lds     r24, 0x0298
+    1666:      80 91 e4 02     lds     r24, 0x02E4
                         *  \param[in] Data  Data to write into the the currently selected endpoint's FIFO buffer.
                         */
                        static inline void Endpoint_Write_8(const uint8_t Data) ATTR_ALWAYS_INLINE;
                        static inline void Endpoint_Write_8(const uint8_t Data)
                        {
                                UEDATX = Data;
-    132e:      80 93 f1 00     sts     0x00F1, r24
+    166a:      80 93 f1 00     sts     0x00F1, r24
                         */
                        static inline void Endpoint_ClearIN(void) ATTR_ALWAYS_INLINE;
                        static inline void Endpoint_ClearIN(void)
                        {
                                #if !defined(CONTROL_ONLY_DEVICE)
                                        UEINTX &= ~((1 << TXINI) | (1 << FIFOCON));
-    1332:      80 91 e8 00     lds     r24, 0x00E8
-    1336:      8e 77           andi    r24, 0x7E       ; 126
-    1338:      80 93 e8 00     sts     0x00E8, r24
+    166e:      80 91 e8 00     lds     r24, 0x00E8
+    1672:      8e 77           andi    r24, 0x7E       ; 126
+    1674:      80 93 e8 00     sts     0x00E8, r24
        Endpoint_ClearIN();
 
        Endpoint_ClearStatusStage();
-    133c:      5b dd           rcall   .-1354          ; 0xdf4 <Endpoint_ClearStatusStage>
-    133e:      1b c0           rjmp    .+54            ; 0x1376 <USB_Device_ProcessControlRequest+0x292>
+    1678:      5b dd           rcall   .-1354          ; 0x1130 <Endpoint_ClearStatusStage>
+    167a:      1c c0           rjmp    .+56            ; 0x16b4 <USB_Device_ProcessControlRequest+0x294>
                                if (bmRequestType == (REQDIR_DEVICETOHOST | REQTYPE_STANDARD | REQREC_DEVICE))
                                  USB_Device_GetConfiguration();
 
                                break;
                        case REQ_SetConfiguration:
                                if (bmRequestType == (REQDIR_HOSTTODEVICE | REQTYPE_STANDARD | REQREC_DEVICE))
-    1340:      88 23           and     r24, r24
-    1342:      c9 f4           brne    .+50            ; 0x1376 <USB_Device_ProcessControlRequest+0x292>
+    167c:      88 23           and     r24, r24
+    167e:      d1 f4           brne    .+52            ; 0x16b4 <USB_Device_ProcessControlRequest+0x294>
 }
 
 static void USB_Device_SetConfiguration(void)
 {
        #if defined(FIXED_NUM_CONFIGURATIONS)
        if ((uint8_t)USB_ControlRequest.wValue > FIXED_NUM_CONFIGURATIONS)
-    1344:      90 91 9e 02     lds     r25, 0x029E
-    1348:      92 30           cpi     r25, 0x02       ; 2
-    134a:      a8 f4           brcc    .+42            ; 0x1376 <USB_Device_ProcessControlRequest+0x292>
+    1680:      90 91 ea 02     lds     r25, 0x02EA
+    1684:      92 30           cpi     r25, 0x02       ; 2
+    1686:      b0 f4           brcc    .+44            ; 0x16b4 <USB_Device_ProcessControlRequest+0x294>
                         *  \note This is not applicable for non CONTROL type endpoints.
                         */
                        static inline void Endpoint_ClearSETUP(void) ATTR_ALWAYS_INLINE;
                        static inline void Endpoint_ClearSETUP(void)
                        {
                                UEINTX &= ~(1 << RXSTPI);
-    134c:      80 91 e8 00     lds     r24, 0x00E8
-    1350:      87 7f           andi    r24, 0xF7       ; 247
-    1352:      80 93 e8 00     sts     0x00E8, r24
+    1688:      80 91 e8 00     lds     r24, 0x00E8
+    168c:      87 7f           andi    r24, 0xF7       ; 247
+    168e:      80 93 e8 00     sts     0x00E8, r24
        #endif
        #endif
 
        Endpoint_ClearSETUP();
 
        USB_Device_ConfigurationNumber = (uint8_t)USB_ControlRequest.wValue;
-    1356:      90 93 98 02     sts     0x0298, r25
+    1692:      90 93 e4 02     sts     0x02E4, r25
 
        Endpoint_ClearStatusStage();
-    135a:      4c dd           rcall   .-1384          ; 0xdf4 <Endpoint_ClearStatusStage>
+    1696:      4c dd           rcall   .-1384          ; 0x1130 <Endpoint_ClearStatusStage>
 
        if (USB_Device_ConfigurationNumber)
-    135c:      80 91 98 02     lds     r24, 0x0298
-    1360:      88 23           and     r24, r24
-    1362:      21 f4           brne    .+8             ; 0x136c <USB_Device_ProcessControlRequest+0x288>
+    1698:      80 91 e4 02     lds     r24, 0x02E4
+    169c:      88 23           and     r24, r24
+    169e:      21 f4           brne    .+8             ; 0x16a8 <USB_Device_ProcessControlRequest+0x288>
                        }
 
                        static inline bool USB_Device_IsAddressSet(void) ATTR_ALWAYS_INLINE ATTR_WARN_UNUSED_RESULT;
                        static inline bool USB_Device_IsAddressSet(void)
                        {
                                return (UDADDR & (1 << ADDEN));
-    1364:      80 91 e3 00     lds     r24, 0x00E3
+    16a0:      80 91 e3 00     lds     r24, 0x00E3
          USB_DeviceState = DEVICE_STATE_Configured;
        else
          USB_DeviceState = (USB_Device_IsAddressSet()) ? DEVICE_STATE_Configured : DEVICE_STATE_Powered;
-    1368:      87 ff           sbrs    r24, 7
-    136a:      02 c0           rjmp    .+4             ; 0x1370 <USB_Device_ProcessControlRequest+0x28c>
-    136c:      84 e0           ldi     r24, 0x04       ; 4
-    136e:      01 c0           rjmp    .+2             ; 0x1372 <USB_Device_ProcessControlRequest+0x28e>
-    1370:      81 e0           ldi     r24, 0x01       ; 1
-    1372:      8e bb           out     0x1e, r24       ; 30
+    16a4:      87 ff           sbrs    r24, 7
+    16a6:      02 c0           rjmp    .+4             ; 0x16ac <USB_Device_ProcessControlRequest+0x28c>
+    16a8:      84 e0           ldi     r24, 0x04       ; 4
+    16aa:      01 c0           rjmp    .+2             ; 0x16ae <USB_Device_ProcessControlRequest+0x28e>
+    16ac:      81 e0           ldi     r24, 0x01       ; 1
+    16ae:      8e bb           out     0x1e, r24       ; 30
 
        EVENT_USB_Device_ConfigurationChanged();
-    1374:      bc d9           rcall   .-3208          ; 0x6ee <EVENT_USB_Device_ConfigurationChanged>
+    16b0:      0e 94 4a 03     call    0x694   ; 0x694 <EVENT_USB_Device_ConfigurationChanged>
                         *  \return Boolean \c true if the selected endpoint has received a SETUP packet, \c false otherwise.
                         */
                        static inline bool Endpoint_IsSETUPReceived(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;
                        static inline bool Endpoint_IsSETUPReceived(void)
                        {
                                return ((UEINTX & (1 << RXSTPI)) ? true : false);
-    1376:      80 91 e8 00     lds     r24, 0x00E8
+    16b4:      80 91 e8 00     lds     r24, 0x00E8
                        default:
                                break;
                }
        }
 
        if (Endpoint_IsSETUPReceived())
-    137a:      83 ff           sbrs    r24, 3
-    137c:      0a c0           rjmp    .+20            ; 0x1392 <USB_Device_ProcessControlRequest+0x2ae>
+    16b8:      83 ff           sbrs    r24, 3
+    16ba:      0a c0           rjmp    .+20            ; 0x16d0 <USB_Device_ProcessControlRequest+0x2b0>
                         *  \note This is not applicable for non CONTROL type endpoints.
                         */
                        static inline void Endpoint_ClearSETUP(void) ATTR_ALWAYS_INLINE;
                        static inline void Endpoint_ClearSETUP(void)
                        {
                                UEINTX &= ~(1 << RXSTPI);
-    137e:      80 91 e8 00     lds     r24, 0x00E8
-    1382:      87 7f           andi    r24, 0xF7       ; 247
-    1384:      80 93 e8 00     sts     0x00E8, r24
+    16bc:      80 91 e8 00     lds     r24, 0x00E8
+    16c0:      87 7f           andi    r24, 0xF7       ; 247
+    16c2:      80 93 e8 00     sts     0x00E8, r24
                         *  \ingroup Group_EndpointPacketManagement_AVR8
                         */
                        static inline void Endpoint_StallTransaction(void) ATTR_ALWAYS_INLINE;
                        static inline void Endpoint_StallTransaction(void)
                        {
                                UECONX |= (1 << STALLRQ);
-    1388:      80 91 eb 00     lds     r24, 0x00EB
-    138c:      80 62           ori     r24, 0x20       ; 32
-    138e:      80 93 eb 00     sts     0x00EB, r24
+    16c6:      80 91 eb 00     lds     r24, 0x00EB
+    16ca:      80 62           ori     r24, 0x20       ; 32
+    16cc:      80 93 eb 00     sts     0x00EB, r24
        {
                Endpoint_ClearSETUP();
                Endpoint_StallTransaction();
        }
 }
-    1392:      ac 96           adiw    r28, 0x2c       ; 44
-    1394:      0f b6           in      r0, 0x3f        ; 63
-    1396:      f8 94           cli
-    1398:      de bf           out     0x3e, r29       ; 62
-    139a:      0f be           out     0x3f, r0        ; 63
-    139c:      cd bf           out     0x3d, r28       ; 61
-    139e:      cf 91           pop     r28
-    13a0:      df 91           pop     r29
-    13a2:      1f 91           pop     r17
-    13a4:      08 95           ret
-
-000013a6 <USB_Event_Stub>:
+    16d0:      ac 96           adiw    r28, 0x2c       ; 44
+    16d2:      0f b6           in      r0, 0x3f        ; 63
+    16d4:      f8 94           cli
+    16d6:      de bf           out     0x3e, r29       ; 62
+    16d8:      0f be           out     0x3f, r0        ; 63
+    16da:      cd bf           out     0x3d, r28       ; 61
+    16dc:      cf 91           pop     r28
+    16de:      df 91           pop     r29
+    16e0:      1f 91           pop     r17
+    16e2:      08 95           ret
+
+000016e4 <USB_Event_Stub>:
 #include "Events.h"
 
 void USB_Event_Stub(void)
 {
 
 }
-    13a6:      08 95           ret
+    16e4:      08 95           ret
 
-000013a8 <USB_USBTask>:
+000016e6 <USB_USBTask>:
 #if defined(USB_CAN_BE_DEVICE) && !defined(DEVICE_STATE_AS_GPIOR)
 volatile uint8_t     USB_DeviceState;
 #endif
 
 void USB_USBTask(void)
 {
-    13a8:      1f 93           push    r17
+    16e6:      1f 93           push    r17
 }
 
 #if defined(USB_CAN_BE_DEVICE)
 static void USB_DeviceTask(void)
 {
        if (USB_DeviceState == DEVICE_STATE_Unattached)
-    13aa:      8e b3           in      r24, 0x1e       ; 30
-    13ac:      88 23           and     r24, r24
-    13ae:      a9 f0           breq    .+42            ; 0x13da <USB_USBTask+0x32>
+    16e8:      8e b3           in      r24, 0x1e       ; 30
+    16ea:      88 23           and     r24, r24
+    16ec:      a9 f0           breq    .+42            ; 0x1718 <USB_USBTask+0x32>
                         */
                        static inline uint8_t Endpoint_GetCurrentEndpoint(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;
                        static inline uint8_t Endpoint_GetCurrentEndpoint(void)
                        {
                                #if !defined(CONTROL_ONLY_DEVICE)
                                        return ((UENUM & ENDPOINT_EPNUM_MASK) | Endpoint_GetEndpointDirection());
-    13b0:      80 91 e9 00     lds     r24, 0x00E9
-    13b4:      8f 70           andi    r24, 0x0F       ; 15
+    16ee:      80 91 e9 00     lds     r24, 0x00E9
+    16f2:      8f 70           andi    r24, 0x0F       ; 15
                         *  \return The currently selected endpoint's direction, as a \c ENDPOINT_DIR_* mask.
                         */
                        static inline uint8_t Endpoint_GetEndpointDirection(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;
                        static inline uint8_t Endpoint_GetEndpointDirection(void)
                        {
                                return (UECFG0X & (1 << EPDIR)) ? ENDPOINT_DIR_IN : ENDPOINT_DIR_OUT;
-    13b6:      90 91 ec 00     lds     r25, 0x00EC
-    13ba:      90 ff           sbrs    r25, 0
-    13bc:      02 c0           rjmp    .+4             ; 0x13c2 <USB_USBTask+0x1a>
-    13be:      10 e8           ldi     r17, 0x80       ; 128
-    13c0:      01 c0           rjmp    .+2             ; 0x13c4 <USB_USBTask+0x1c>
-    13c2:      10 e0           ldi     r17, 0x00       ; 0
+    16f4:      90 91 ec 00     lds     r25, 0x00EC
+    16f8:      90 ff           sbrs    r25, 0
+    16fa:      02 c0           rjmp    .+4             ; 0x1700 <USB_USBTask+0x1a>
+    16fc:      10 e8           ldi     r17, 0x80       ; 128
+    16fe:      01 c0           rjmp    .+2             ; 0x1702 <USB_USBTask+0x1c>
+    1700:      10 e0           ldi     r17, 0x00       ; 0
                         */
                        static inline uint8_t Endpoint_GetCurrentEndpoint(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;
                        static inline uint8_t Endpoint_GetCurrentEndpoint(void)
                        {
                                #if !defined(CONTROL_ONLY_DEVICE)
                                        return ((UENUM & ENDPOINT_EPNUM_MASK) | Endpoint_GetEndpointDirection());
-    13c4:      18 2b           or      r17, r24
+    1702:      18 2b           or      r17, r24
                         */
                        static inline void Endpoint_SelectEndpoint(const uint8_t Address) ATTR_ALWAYS_INLINE;
                        static inline void Endpoint_SelectEndpoint(const uint8_t Address)
                        {
                                #if !defined(CONTROL_ONLY_DEVICE)
                                        UENUM = (Address & ENDPOINT_EPNUM_MASK);
-    13c6:      10 92 e9 00     sts     0x00E9, r1
+    1704:      10 92 e9 00     sts     0x00E9, r1
                         *  \return Boolean \c true if the selected endpoint has received a SETUP packet, \c false otherwise.
                         */
                        static inline bool Endpoint_IsSETUPReceived(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;
                        static inline bool Endpoint_IsSETUPReceived(void)
                        {
                                return ((UEINTX & (1 << RXSTPI)) ? true : false);
-    13ca:      80 91 e8 00     lds     r24, 0x00E8
+    1708:      80 91 e8 00     lds     r24, 0x00E8
 
        uint8_t PrevEndpoint = Endpoint_GetCurrentEndpoint();
 
        Endpoint_SelectEndpoint(ENDPOINT_CONTROLEP);
 
        if (Endpoint_IsSETUPReceived())
-    13ce:      83 ff           sbrs    r24, 3
-    13d0:      01 c0           rjmp    .+2             ; 0x13d4 <USB_USBTask+0x2c>
+    170c:      83 ff           sbrs    r24, 3
+    170e:      01 c0           rjmp    .+2             ; 0x1712 <USB_USBTask+0x2c>
          USB_Device_ProcessControlRequest();
-    13d2:      88 de           rcall   .-752           ; 0x10e4 <USB_Device_ProcessControlRequest>
+    1710:      87 de           rcall   .-754           ; 0x1420 <USB_Device_ProcessControlRequest>
                         */
                        static inline void Endpoint_SelectEndpoint(const uint8_t Address) ATTR_ALWAYS_INLINE;
                        static inline void Endpoint_SelectEndpoint(const uint8_t Address)
                        {
                                #if !defined(CONTROL_ONLY_DEVICE)
                                        UENUM = (Address & ENDPOINT_EPNUM_MASK);
-    13d4:      1f 70           andi    r17, 0x0F       ; 15
-    13d6:      10 93 e9 00     sts     0x00E9, r17
+    1712:      1f 70           andi    r17, 0x0F       ; 15
+    1714:      10 93 e9 00     sts     0x00E9, r17
        #elif defined(USB_CAN_BE_HOST)
                USB_HostTask();
        #elif defined(USB_CAN_BE_DEVICE)
                USB_DeviceTask();
        #endif
 }
-    13da:      1f 91           pop     r17
-    13dc:      08 95           ret
+    1718:      1f 91           pop     r17
+    171a:      08 95           ret
 
-000013de <CDC_Device_ProcessControlRequest>:
+0000171c <CDC_Device_ProcessControlRequest>:
 #define  __INCLUDE_FROM_CDC_DRIVER
 #define  __INCLUDE_FROM_CDC_DEVICE_C
 #include "CDCClassDevice.h"
 
 void CDC_Device_ProcessControlRequest(USB_ClassInfo_CDC_Device_t* const CDCInterfaceInfo)
 {
-    13de:      cf 93           push    r28
-    13e0:      df 93           push    r29
-    13e2:      ec 01           movw    r28, r24
+    171c:      cf 93           push    r28
+    171e:      df 93           push    r29
+    1720:      ec 01           movw    r28, r24
                         *  \return Boolean \c true if the selected endpoint has received a SETUP packet, \c false otherwise.
                         */
                        static inline bool Endpoint_IsSETUPReceived(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;
                        static inline bool Endpoint_IsSETUPReceived(void)
                        {
                                return ((UEINTX & (1 << RXSTPI)) ? true : false);
-    13e4:      80 91 e8 00     lds     r24, 0x00E8
+    1722:      80 91 e8 00     lds     r24, 0x00E8
        if (!(Endpoint_IsSETUPReceived()))
-    13e8:      83 ff           sbrs    r24, 3
-    13ea:      a2 c0           rjmp    .+324           ; 0x1530 <CDC_Device_ProcessControlRequest+0x152>
+    1726:      83 ff           sbrs    r24, 3
+    1728:      a3 c0           rjmp    .+326           ; 0x1870 <CDC_Device_ProcessControlRequest+0x154>
          return;
 
        if (USB_ControlRequest.wIndex != CDCInterfaceInfo->Config.ControlInterfaceNumber)
-    13ec:      88 81           ld      r24, Y
-    13ee:      90 e0           ldi     r25, 0x00       ; 0
-    13f0:      20 91 a0 02     lds     r18, 0x02A0
-    13f4:      30 91 a1 02     lds     r19, 0x02A1
-    13f8:      28 17           cp      r18, r24
-    13fa:      39 07           cpc     r19, r25
-    13fc:      09 f0           breq    .+2             ; 0x1400 <CDC_Device_ProcessControlRequest+0x22>
-    13fe:      98 c0           rjmp    .+304           ; 0x1530 <CDC_Device_ProcessControlRequest+0x152>
+    172a:      88 81           ld      r24, Y
+    172c:      90 e0           ldi     r25, 0x00       ; 0
+    172e:      20 91 ec 02     lds     r18, 0x02EC
+    1732:      30 91 ed 02     lds     r19, 0x02ED
+    1736:      28 17           cp      r18, r24
+    1738:      39 07           cpc     r19, r25
+    173a:      09 f0           breq    .+2             ; 0x173e <CDC_Device_ProcessControlRequest+0x22>
+    173c:      99 c0           rjmp    .+306           ; 0x1870 <CDC_Device_ProcessControlRequest+0x154>
          return;
 
        switch (USB_ControlRequest.bRequest)
-    1400:      80 91 9d 02     lds     r24, 0x029D
-    1404:      81 32           cpi     r24, 0x21       ; 33
-    1406:      69 f0           breq    .+26            ; 0x1422 <CDC_Device_ProcessControlRequest+0x44>
-    1408:      82 32           cpi     r24, 0x22       ; 34
-    140a:      20 f4           brcc    .+8             ; 0x1414 <CDC_Device_ProcessControlRequest+0x36>
-    140c:      80 32           cpi     r24, 0x20       ; 32
-    140e:      09 f0           breq    .+2             ; 0x1412 <CDC_Device_ProcessControlRequest+0x34>
-    1410:      8f c0           rjmp    .+286           ; 0x1530 <CDC_Device_ProcessControlRequest+0x152>
-    1412:      3c c0           rjmp    .+120           ; 0x148c <CDC_Device_ProcessControlRequest+0xae>
-    1414:      82 32           cpi     r24, 0x22       ; 34
-    1416:      09 f4           brne    .+2             ; 0x141a <CDC_Device_ProcessControlRequest+0x3c>
-    1418:      6a c0           rjmp    .+212           ; 0x14ee <CDC_Device_ProcessControlRequest+0x110>
-    141a:      83 32           cpi     r24, 0x23       ; 35
-    141c:      09 f0           breq    .+2             ; 0x1420 <CDC_Device_ProcessControlRequest+0x42>
-    141e:      88 c0           rjmp    .+272           ; 0x1530 <CDC_Device_ProcessControlRequest+0x152>
-    1420:      79 c0           rjmp    .+242           ; 0x1514 <CDC_Device_ProcessControlRequest+0x136>
+    173e:      80 91 e9 02     lds     r24, 0x02E9
+    1742:      81 32           cpi     r24, 0x21       ; 33
+    1744:      69 f0           breq    .+26            ; 0x1760 <CDC_Device_ProcessControlRequest+0x44>
+    1746:      82 32           cpi     r24, 0x22       ; 34
+    1748:      20 f4           brcc    .+8             ; 0x1752 <CDC_Device_ProcessControlRequest+0x36>
+    174a:      80 32           cpi     r24, 0x20       ; 32
+    174c:      09 f0           breq    .+2             ; 0x1750 <CDC_Device_ProcessControlRequest+0x34>
+    174e:      90 c0           rjmp    .+288           ; 0x1870 <CDC_Device_ProcessControlRequest+0x154>
+    1750:      3c c0           rjmp    .+120           ; 0x17ca <CDC_Device_ProcessControlRequest+0xae>
+    1752:      82 32           cpi     r24, 0x22       ; 34
+    1754:      09 f4           brne    .+2             ; 0x1758 <CDC_Device_ProcessControlRequest+0x3c>
+    1756:      6b c0           rjmp    .+214           ; 0x182e <CDC_Device_ProcessControlRequest+0x112>
+    1758:      83 32           cpi     r24, 0x23       ; 35
+    175a:      09 f0           breq    .+2             ; 0x175e <CDC_Device_ProcessControlRequest+0x42>
+    175c:      89 c0           rjmp    .+274           ; 0x1870 <CDC_Device_ProcessControlRequest+0x154>
+    175e:      7a c0           rjmp    .+244           ; 0x1854 <CDC_Device_ProcessControlRequest+0x138>
        {
                case CDC_REQ_GetLineEncoding:
                        if (USB_ControlRequest.bmRequestType == (REQDIR_DEVICETOHOST | REQTYPE_CLASS | REQREC_INTERFACE))
-    1422:      80 91 9c 02     lds     r24, 0x029C
-    1426:      81 3a           cpi     r24, 0xA1       ; 161
-    1428:      09 f0           breq    .+2             ; 0x142c <CDC_Device_ProcessControlRequest+0x4e>
-    142a:      82 c0           rjmp    .+260           ; 0x1530 <CDC_Device_ProcessControlRequest+0x152>
+    1760:      80 91 e8 02     lds     r24, 0x02E8
+    1764:      81 3a           cpi     r24, 0xA1       ; 161
+    1766:      09 f0           breq    .+2             ; 0x176a <CDC_Device_ProcessControlRequest+0x4e>
+    1768:      83 c0           rjmp    .+262           ; 0x1870 <CDC_Device_ProcessControlRequest+0x154>
                         *  \note This is not applicable for non CONTROL type endpoints.
                         */
                        static inline void Endpoint_ClearSETUP(void) ATTR_ALWAYS_INLINE;
                        static inline void Endpoint_ClearSETUP(void)
                        {
                                UEINTX &= ~(1 << RXSTPI);
-    142c:      80 91 e8 00     lds     r24, 0x00E8
-    1430:      87 7f           andi    r24, 0xF7       ; 247
-    1432:      80 93 e8 00     sts     0x00E8, r24
+    176a:      80 91 e8 00     lds     r24, 0x00E8
+    176e:      87 7f           andi    r24, 0xF7       ; 247
+    1770:      80 93 e8 00     sts     0x00E8, r24
                         *  \return Boolean \c true if the current endpoint is ready for an IN packet, \c false otherwise.
                         */
                        static inline bool Endpoint_IsINReady(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;
                        static inline bool Endpoint_IsINReady(void)
                        {
                                return ((UEINTX & (1 << TXINI)) ? true : false);
-    1436:      80 91 e8 00     lds     r24, 0x00E8
+    1774:      80 91 e8 00     lds     r24, 0x00E8
                        {
                                Endpoint_ClearSETUP();
 
                                while (!(Endpoint_IsINReady()));
-    143a:      80 ff           sbrs    r24, 0
-    143c:      fc cf           rjmp    .-8             ; 0x1436 <CDC_Device_ProcessControlRequest+0x58>
+    1778:      80 ff           sbrs    r24, 0
+    177a:      fc cf           rjmp    .-8             ; 0x1774 <CDC_Device_ProcessControlRequest+0x58>
 
                                Endpoint_Write_32_LE(CDCInterfaceInfo->State.LineEncoding.BaudRateBPS);
-    143e:      8c 89           ldd     r24, Y+20       ; 0x14
-    1440:      9d 89           ldd     r25, Y+21       ; 0x15
-    1442:      ae 89           ldd     r26, Y+22       ; 0x16
-    1444:      bf 89           ldd     r27, Y+23       ; 0x17
+    177c:      8c 89           ldd     r24, Y+20       ; 0x14
+    177e:      9d 89           ldd     r25, Y+21       ; 0x15
+    1780:      ae 89           ldd     r26, Y+22       ; 0x16
+    1782:      bf 89           ldd     r27, Y+23       ; 0x17
                         *  \param[in] Data  Data to write to the currently selected endpoint's FIFO buffer.
                         */
                        static inline void Endpoint_Write_32_LE(const uint32_t Data) ATTR_ALWAYS_INLINE;
                        static inline void Endpoint_Write_32_LE(const uint32_t Data)
                        {
                                UEDATX = (Data &  0xFF);
-    1446:      80 93 f1 00     sts     0x00F1, r24
+    1784:      80 93 f1 00     sts     0x00F1, r24
                                UEDATX = (Data >> 8);
-    144a:      29 2f           mov     r18, r25
-    144c:      3a 2f           mov     r19, r26
-    144e:      4b 2f           mov     r20, r27
-    1450:      55 27           eor     r21, r21
-    1452:      20 93 f1 00     sts     0x00F1, r18
+    1788:      29 2f           mov     r18, r25
+    178a:      3a 2f           mov     r19, r26
+    178c:      4b 2f           mov     r20, r27
+    178e:      55 27           eor     r21, r21
+    1790:      20 93 f1 00     sts     0x00F1, r18
                                UEDATX = (Data >> 16);
-    1456:      9d 01           movw    r18, r26
-    1458:      44 27           eor     r20, r20
-    145a:      55 27           eor     r21, r21
-    145c:      20 93 f1 00     sts     0x00F1, r18
+    1794:      9d 01           movw    r18, r26
+    1796:      44 27           eor     r20, r20
+    1798:      55 27           eor     r21, r21
+    179a:      20 93 f1 00     sts     0x00F1, r18
                                UEDATX = (Data >> 24);
-    1460:      8b 2f           mov     r24, r27
-    1462:      99 27           eor     r25, r25
-    1464:      aa 27           eor     r26, r26
-    1466:      bb 27           eor     r27, r27
-    1468:      80 93 f1 00     sts     0x00F1, r24
+    179e:      8b 2f           mov     r24, r27
+    17a0:      99 27           eor     r25, r25
+    17a2:      aa 27           eor     r26, r26
+    17a4:      bb 27           eor     r27, r27
+    17a6:      80 93 f1 00     sts     0x00F1, r24
                                Endpoint_Write_8(CDCInterfaceInfo->State.LineEncoding.CharFormat);
-    146c:      88 8d           ldd     r24, Y+24       ; 0x18
+    17aa:      88 8d           ldd     r24, Y+24       ; 0x18
                         *  \param[in] Data  Data to write into the the currently selected endpoint's FIFO buffer.
                         */
                        static inline void Endpoint_Write_8(const uint8_t Data) ATTR_ALWAYS_INLINE;
                        static inline void Endpoint_Write_8(const uint8_t Data)
                        {
                                UEDATX = Data;
-    146e:      80 93 f1 00     sts     0x00F1, r24
+    17ac:      80 93 f1 00     sts     0x00F1, r24
                                Endpoint_Write_8(CDCInterfaceInfo->State.LineEncoding.ParityType);
-    1472:      89 8d           ldd     r24, Y+25       ; 0x19
-    1474:      80 93 f1 00     sts     0x00F1, r24
+    17b0:      89 8d           ldd     r24, Y+25       ; 0x19
+    17b2:      80 93 f1 00     sts     0x00F1, r24
                                Endpoint_Write_8(CDCInterfaceInfo->State.LineEncoding.DataBits);
-    1478:      8a 8d           ldd     r24, Y+26       ; 0x1a
-    147a:      80 93 f1 00     sts     0x00F1, r24
+    17b6:      8a 8d           ldd     r24, Y+26       ; 0x1a
+    17b8:      80 93 f1 00     sts     0x00F1, r24
                         */
                        static inline void Endpoint_ClearIN(void) ATTR_ALWAYS_INLINE;
                        static inline void Endpoint_ClearIN(void)
                        {
                                #if !defined(CONTROL_ONLY_DEVICE)
                                        UEINTX &= ~((1 << TXINI) | (1 << FIFOCON));
-    147e:      80 91 e8 00     lds     r24, 0x00E8
-    1482:      8e 77           andi    r24, 0x7E       ; 126
-    1484:      80 93 e8 00     sts     0x00E8, r24
+    17bc:      80 91 e8 00     lds     r24, 0x00E8
+    17c0:      8e 77           andi    r24, 0x7E       ; 126
+    17c2:      80 93 e8 00     sts     0x00E8, r24
 
                                Endpoint_ClearIN();
                                Endpoint_ClearStatusStage();
-    1488:      b5 dc           rcall   .-1686          ; 0xdf4 <Endpoint_ClearStatusStage>
-    148a:      52 c0           rjmp    .+164           ; 0x1530 <CDC_Device_ProcessControlRequest+0x152>
+    17c6:      b4 dc           rcall   .-1688          ; 0x1130 <Endpoint_ClearStatusStage>
+    17c8:      53 c0           rjmp    .+166           ; 0x1870 <CDC_Device_ProcessControlRequest+0x154>
                        }
 
                        break;
                case CDC_REQ_SetLineEncoding:
                        if (USB_ControlRequest.bmRequestType == (REQDIR_HOSTTODEVICE | REQTYPE_CLASS | REQREC_INTERFACE))
-    148c:      80 91 9c 02     lds     r24, 0x029C
-    1490:      81 32           cpi     r24, 0x21       ; 33
-    1492:      09 f0           breq    .+2             ; 0x1496 <CDC_Device_ProcessControlRequest+0xb8>
-    1494:      4d c0           rjmp    .+154           ; 0x1530 <CDC_Device_ProcessControlRequest+0x152>
+    17ca:      80 91 e8 02     lds     r24, 0x02E8
+    17ce:      81 32           cpi     r24, 0x21       ; 33
+    17d0:      09 f0           breq    .+2             ; 0x17d4 <CDC_Device_ProcessControlRequest+0xb8>
+    17d2:      4e c0           rjmp    .+156           ; 0x1870 <CDC_Device_ProcessControlRequest+0x154>
                         *  \note This is not applicable for non CONTROL type endpoints.
                         */
                        static inline void Endpoint_ClearSETUP(void) ATTR_ALWAYS_INLINE;
                        static inline void Endpoint_ClearSETUP(void)
                        {
                                UEINTX &= ~(1 << RXSTPI);
-    1496:      80 91 e8 00     lds     r24, 0x00E8
-    149a:      87 7f           andi    r24, 0xF7       ; 247
-    149c:      80 93 e8 00     sts     0x00E8, r24
+    17d4:      80 91 e8 00     lds     r24, 0x00E8
+    17d8:      87 7f           andi    r24, 0xF7       ; 247
+    17da:      80 93 e8 00     sts     0x00E8, r24
                        {
                                Endpoint_ClearSETUP();
 
                                while (!(Endpoint_IsOUTReceived()))
-    14a0:      04 c0           rjmp    .+8             ; 0x14aa <CDC_Device_ProcessControlRequest+0xcc>
+    17de:      04 c0           rjmp    .+8             ; 0x17e8 <CDC_Device_ProcessControlRequest+0xcc>
                                {
                                        if (USB_DeviceState == DEVICE_STATE_Unattached)
-    14a2:      8e b3           in      r24, 0x1e       ; 30
-    14a4:      88 23           and     r24, r24
-    14a6:      09 f4           brne    .+2             ; 0x14aa <CDC_Device_ProcessControlRequest+0xcc>
-    14a8:      43 c0           rjmp    .+134           ; 0x1530 <CDC_Device_ProcessControlRequest+0x152>
+    17e0:      8e b3           in      r24, 0x1e       ; 30
+    17e2:      88 23           and     r24, r24
+    17e4:      09 f4           brne    .+2             ; 0x17e8 <CDC_Device_ProcessControlRequest+0xcc>
+    17e6:      44 c0           rjmp    .+136           ; 0x1870 <CDC_Device_ProcessControlRequest+0x154>
                         *  \return Boolean \c true if current endpoint is has received an OUT packet, \c false otherwise.
                         */
                        static inline bool Endpoint_IsOUTReceived(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;
                        static inline bool Endpoint_IsOUTReceived(void)
                        {
                                return ((UEINTX & (1 << RXOUTI)) ? true : false);
-    14aa:      80 91 e8 00     lds     r24, 0x00E8
+    17e8:      80 91 e8 00     lds     r24, 0x00E8
                case CDC_REQ_SetLineEncoding:
                        if (USB_ControlRequest.bmRequestType == (REQDIR_HOSTTODEVICE | REQTYPE_CLASS | REQREC_INTERFACE))
                        {
                                Endpoint_ClearSETUP();
 
                                while (!(Endpoint_IsOUTReceived()))
-    14ae:      82 ff           sbrs    r24, 2
-    14b0:      f8 cf           rjmp    .-16            ; 0x14a2 <CDC_Device_ProcessControlRequest+0xc4>
+    17ec:      82 ff           sbrs    r24, 2
+    17ee:      f8 cf           rjmp    .-16            ; 0x17e0 <CDC_Device_ProcessControlRequest+0xc4>
                                {
                                        uint32_t Value;
                                        uint8_t  Bytes[4];
                                } Data;
 
                                Data.Bytes[0] = UEDATX;
-    14b2:      30 91 f1 00     lds     r19, 0x00F1
+    17f0:      30 91 f1 00     lds     r19, 0x00F1
                                Data.Bytes[1] = UEDATX;
-    14b6:      20 91 f1 00     lds     r18, 0x00F1
+    17f4:      20 91 f1 00     lds     r18, 0x00F1
                                Data.Bytes[2] = UEDATX;
-    14ba:      90 91 f1 00     lds     r25, 0x00F1
+    17f8:      90 91 f1 00     lds     r25, 0x00F1
                                Data.Bytes[3] = UEDATX;
-    14be:      80 91 f1 00     lds     r24, 0x00F1
+    17fc:      80 91 f1 00     lds     r24, 0x00F1
                                {
                                        if (USB_DeviceState == DEVICE_STATE_Unattached)
                                          return;
                                }
 
                                CDCInterfaceInfo->State.LineEncoding.BaudRateBPS = Endpoint_Read_32_LE();
-    14c2:      3c 8b           std     Y+20, r19       ; 0x14
-    14c4:      2d 8b           std     Y+21, r18       ; 0x15
-    14c6:      9e 8b           std     Y+22, r25       ; 0x16
-    14c8:      8f 8b           std     Y+23, r24       ; 0x17
+    1800:      3c 8b           std     Y+20, r19       ; 0x14
+    1802:      2d 8b           std     Y+21, r18       ; 0x15
+    1804:      9e 8b           std     Y+22, r25       ; 0x16
+    1806:      8f 8b           std     Y+23, r24       ; 0x17
                         *  \return Next byte in the currently selected endpoint's FIFO buffer.
                         */
                        static inline uint8_t Endpoint_Read_8(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;
                        static inline uint8_t Endpoint_Read_8(void)
                        {
                                return UEDATX;
-    14ca:      80 91 f1 00     lds     r24, 0x00F1
+    1808:      80 91 f1 00     lds     r24, 0x00F1
                                CDCInterfaceInfo->State.LineEncoding.CharFormat  = Endpoint_Read_8();
-    14ce:      88 8f           std     Y+24, r24       ; 0x18
-    14d0:      80 91 f1 00     lds     r24, 0x00F1
+    180c:      88 8f           std     Y+24, r24       ; 0x18
+    180e:      80 91 f1 00     lds     r24, 0x00F1
                                CDCInterfaceInfo->State.LineEncoding.ParityType  = Endpoint_Read_8();
-    14d4:      89 8f           std     Y+25, r24       ; 0x19
-    14d6:      80 91 f1 00     lds     r24, 0x00F1
+    1812:      89 8f           std     Y+25, r24       ; 0x19
+    1814:      80 91 f1 00     lds     r24, 0x00F1
                                CDCInterfaceInfo->State.LineEncoding.DataBits    = Endpoint_Read_8();
-    14da:      8a 8f           std     Y+26, r24       ; 0x1a
+    1818:      8a 8f           std     Y+26, r24       ; 0x1a
                         */
                        static inline void Endpoint_ClearOUT(void) ATTR_ALWAYS_INLINE;
                        static inline void Endpoint_ClearOUT(void)
                        {
                                #if !defined(CONTROL_ONLY_DEVICE)
                                        UEINTX &= ~((1 << RXOUTI) | (1 << FIFOCON));
-    14dc:      80 91 e8 00     lds     r24, 0x00E8
-    14e0:      8b 77           andi    r24, 0x7B       ; 123
-    14e2:      80 93 e8 00     sts     0x00E8, r24
+    181a:      80 91 e8 00     lds     r24, 0x00E8
+    181e:      8b 77           andi    r24, 0x7B       ; 123
+    1820:      80 93 e8 00     sts     0x00E8, r24
 
                                Endpoint_ClearOUT();
                                Endpoint_ClearStatusStage();
-    14e6:      86 dc           rcall   .-1780          ; 0xdf4 <Endpoint_ClearStatusStage>
+    1824:      85 dc           rcall   .-1782          ; 0x1130 <Endpoint_ClearStatusStage>
 
                                EVENT_CDC_Device_LineEncodingChanged(CDCInterfaceInfo);
-    14e8:      ce 01           movw    r24, r28
-    14ea:      31 d9           rcall   .-3486          ; 0x74e <EVENT_CDC_Device_LineEncodingChanged>
-    14ec:      21 c0           rjmp    .+66            ; 0x1530 <CDC_Device_ProcessControlRequest+0x152>
+    1826:      ce 01           movw    r24, r28
+    1828:      0e 94 7c 03     call    0x6f8   ; 0x6f8 <EVENT_CDC_Device_LineEncodingChanged>
+    182c:      21 c0           rjmp    .+66            ; 0x1870 <CDC_Device_ProcessControlRequest+0x154>
                        }
 
                        break;
                case CDC_REQ_SetControlLineState:
                        if (USB_ControlRequest.bmRequestType == (REQDIR_HOSTTODEVICE | REQTYPE_CLASS | REQREC_INTERFACE))
-    14ee:      80 91 9c 02     lds     r24, 0x029C
-    14f2:      81 32           cpi     r24, 0x21       ; 33
-    14f4:      e9 f4           brne    .+58            ; 0x1530 <CDC_Device_ProcessControlRequest+0x152>
+    182e:      80 91 e8 02     lds     r24, 0x02E8
+    1832:      81 32           cpi     r24, 0x21       ; 33
+    1834:      e9 f4           brne    .+58            ; 0x1870 <CDC_Device_ProcessControlRequest+0x154>
                         *  \note This is not applicable for non CONTROL type endpoints.
                         */
                        static inline void Endpoint_ClearSETUP(void) ATTR_ALWAYS_INLINE;
                        static inline void Endpoint_ClearSETUP(void)
                        {
                                UEINTX &= ~(1 << RXSTPI);
-    14f6:      80 91 e8 00     lds     r24, 0x00E8
-    14fa:      87 7f           andi    r24, 0xF7       ; 247
-    14fc:      80 93 e8 00     sts     0x00E8, r24
+    1836:      80 91 e8 00     lds     r24, 0x00E8
+    183a:      87 7f           andi    r24, 0xF7       ; 247
+    183c:      80 93 e8 00     sts     0x00E8, r24
                        {
                                Endpoint_ClearSETUP();
                                Endpoint_ClearStatusStage();
-    1500:      79 dc           rcall   .-1806          ; 0xdf4 <Endpoint_ClearStatusStage>
+    1840:      77 dc           rcall   .-1810          ; 0x1130 <Endpoint_ClearStatusStage>
 
                                CDCInterfaceInfo->State.ControlLineStates.HostToDevice = USB_ControlRequest.wValue;
-    1502:      80 91 9e 02     lds     r24, 0x029E
-    1506:      90 91 9f 02     lds     r25, 0x029F
-    150a:      99 8b           std     Y+17, r25       ; 0x11
-    150c:      88 8b           std     Y+16, r24       ; 0x10
+    1842:      80 91 ea 02     lds     r24, 0x02EA
+    1846:      90 91 eb 02     lds     r25, 0x02EB
+    184a:      99 8b           std     Y+17, r25       ; 0x11
+    184c:      88 8b           std     Y+16, r24       ; 0x10
 
                                EVENT_CDC_Device_ControLineStateChanged(CDCInterfaceInfo);
-    150e:      ce 01           movw    r24, r28
-    1510:      d4 d0           rcall   .+424           ; 0x16ba <CDC_Device_Event_Stub>
-    1512:      0e c0           rjmp    .+28            ; 0x1530 <CDC_Device_ProcessControlRequest+0x152>
+    184e:      ce 01           movw    r24, r28
+    1850:      d4 d0           rcall   .+424           ; 0x19fa <CDC_Device_Event_Stub>
+    1852:      0e c0           rjmp    .+28            ; 0x1870 <CDC_Device_ProcessControlRequest+0x154>
                        }
 
                        break;
                case CDC_REQ_SendBreak:
                        if (USB_ControlRequest.bmRequestType == (REQDIR_HOSTTODEVICE | REQTYPE_CLASS | REQREC_INTERFACE))
-    1514:      80 91 9c 02     lds     r24, 0x029C
-    1518:      81 32           cpi     r24, 0x21       ; 33
-    151a:      51 f4           brne    .+20            ; 0x1530 <CDC_Device_ProcessControlRequest+0x152>
-    151c:      80 91 e8 00     lds     r24, 0x00E8
-    1520:      87 7f           andi    r24, 0xF7       ; 247
-    1522:      80 93 e8 00     sts     0x00E8, r24
+    1854:      80 91 e8 02     lds     r24, 0x02E8
+    1858:      81 32           cpi     r24, 0x21       ; 33
+    185a:      51 f4           brne    .+20            ; 0x1870 <CDC_Device_ProcessControlRequest+0x154>
+    185c:      80 91 e8 00     lds     r24, 0x00E8
+    1860:      87 7f           andi    r24, 0xF7       ; 247
+    1862:      80 93 e8 00     sts     0x00E8, r24
                        {
                                Endpoint_ClearSETUP();
                                Endpoint_ClearStatusStage();
-    1526:      66 dc           rcall   .-1844          ; 0xdf4 <Endpoint_ClearStatusStage>
+    1866:      64 dc           rcall   .-1848          ; 0x1130 <Endpoint_ClearStatusStage>
 
                                EVENT_CDC_Device_BreakSent(CDCInterfaceInfo, (uint8_t)USB_ControlRequest.wValue);
-    1528:      ce 01           movw    r24, r28
-    152a:      60 91 9e 02     lds     r22, 0x029E
-    152e:      c5 d0           rcall   .+394           ; 0x16ba <CDC_Device_Event_Stub>
+    1868:      ce 01           movw    r24, r28
+    186a:      60 91 ea 02     lds     r22, 0x02EA
+    186e:      c5 d0           rcall   .+394           ; 0x19fa <CDC_Device_Event_Stub>
                        }
 
                        break;
        }
 }
-    1530:      df 91           pop     r29
-    1532:      cf 91           pop     r28
-    1534:      08 95           ret
+    1870:      df 91           pop     r29
+    1872:      cf 91           pop     r28
+    1874:      08 95           ret
 
-00001536 <CDC_Device_ConfigureEndpoints>:
+00001876 <CDC_Device_ConfigureEndpoints>:
 
 bool CDC_Device_ConfigureEndpoints(USB_ClassInfo_CDC_Device_t* const CDCInterfaceInfo)
 {
-    1536:      cf 93           push    r28
-    1538:      df 93           push    r29
-    153a:      ec 01           movw    r28, r24
+    1876:      cf 93           push    r28
+    1878:      df 93           push    r29
+    187a:      ec 01           movw    r28, r24
        memset(&CDCInterfaceInfo->State, 0x00, sizeof(CDCInterfaceInfo->State));
-    153c:      40 96           adiw    r24, 0x10       ; 16
-    153e:      fc 01           movw    r30, r24
-    1540:      8b e0           ldi     r24, 0x0B       ; 11
-    1542:      df 01           movw    r26, r30
-    1544:      1d 92           st      X+, r1
-    1546:      8a 95           dec     r24
-    1548:      e9 f7           brne    .-6             ; 0x1544 <CDC_Device_ConfigureEndpoints+0xe>
+    187c:      40 96           adiw    r24, 0x10       ; 16
+    187e:      fc 01           movw    r30, r24
+    1880:      8b e0           ldi     r24, 0x0B       ; 11
+    1882:      df 01           movw    r26, r30
+    1884:      1d 92           st      X+, r1
+    1886:      8a 95           dec     r24
+    1888:      e9 f7           brne    .-6             ; 0x1884 <CDC_Device_ConfigureEndpoints+0xe>
 
        CDCInterfaceInfo->Config.DataINEndpoint.Type       = EP_TYPE_BULK;
-    154a:      82 e0           ldi     r24, 0x02       ; 2
-    154c:      8c 83           std     Y+4, r24        ; 0x04
+    188a:      82 e0           ldi     r24, 0x02       ; 2
+    188c:      8c 83           std     Y+4, r24        ; 0x04
        CDCInterfaceInfo->Config.DataOUTEndpoint.Type      = EP_TYPE_BULK;
-    154e:      89 87           std     Y+9, r24        ; 0x09
+    188e:      89 87           std     Y+9, r24        ; 0x09
        CDCInterfaceInfo->Config.NotificationEndpoint.Type = EP_TYPE_INTERRUPT;
-    1550:      83 e0           ldi     r24, 0x03       ; 3
-    1552:      8e 87           std     Y+14, r24       ; 0x0e
+    1890:      83 e0           ldi     r24, 0x03       ; 3
+    1892:      8e 87           std     Y+14, r24       ; 0x0e
 
        if (!(Endpoint_ConfigureEndpointTable(&CDCInterfaceInfo->Config.DataINEndpoint, 1)))
-    1554:      ce 01           movw    r24, r28
-    1556:      01 96           adiw    r24, 0x01       ; 1
-    1558:      61 e0           ldi     r22, 0x01       ; 1
-    155a:      08 dc           rcall   .-2032          ; 0xd6c <Endpoint_ConfigureEndpointTable>
-    155c:      88 23           and     r24, r24
-    155e:      59 f0           breq    .+22            ; 0x1576 <CDC_Device_ConfigureEndpoints+0x40>
+    1894:      ce 01           movw    r24, r28
+    1896:      01 96           adiw    r24, 0x01       ; 1
+    1898:      61 e0           ldi     r22, 0x01       ; 1
+    189a:      06 dc           rcall   .-2036          ; 0x10a8 <Endpoint_ConfigureEndpointTable>
+    189c:      88 23           and     r24, r24
+    189e:      59 f0           breq    .+22            ; 0x18b6 <CDC_Device_ConfigureEndpoints+0x40>
          return false;
 
        if (!(Endpoint_ConfigureEndpointTable(&CDCInterfaceInfo->Config.DataOUTEndpoint, 1)))
-    1560:      ce 01           movw    r24, r28
-    1562:      06 96           adiw    r24, 0x06       ; 6
-    1564:      61 e0           ldi     r22, 0x01       ; 1
-    1566:      02 dc           rcall   .-2044          ; 0xd6c <Endpoint_ConfigureEndpointTable>
-    1568:      88 23           and     r24, r24
-    156a:      29 f0           breq    .+10            ; 0x1576 <CDC_Device_ConfigureEndpoints+0x40>
+    18a0:      ce 01           movw    r24, r28
+    18a2:      06 96           adiw    r24, 0x06       ; 6
+    18a4:      61 e0           ldi     r22, 0x01       ; 1
+    18a6:      00 dc           rcall   .-2048          ; 0x10a8 <Endpoint_ConfigureEndpointTable>
+    18a8:      88 23           and     r24, r24
+    18aa:      29 f0           breq    .+10            ; 0x18b6 <CDC_Device_ConfigureEndpoints+0x40>
          return false;
 
        if (!(Endpoint_ConfigureEndpointTable(&CDCInterfaceInfo->Config.NotificationEndpoint, 1)))
-    156c:      ce 01           movw    r24, r28
-    156e:      0b 96           adiw    r24, 0x0b       ; 11
-    1570:      61 e0           ldi     r22, 0x01       ; 1
-    1572:      fc db           rcall   .-2056          ; 0xd6c <Endpoint_ConfigureEndpointTable>
-    1574:      01 c0           rjmp    .+2             ; 0x1578 <CDC_Device_ConfigureEndpoints+0x42>
+    18ac:      ce 01           movw    r24, r28
+    18ae:      0b 96           adiw    r24, 0x0b       ; 11
+    18b0:      61 e0           ldi     r22, 0x01       ; 1
+    18b2:      fa db           rcall   .-2060          ; 0x10a8 <Endpoint_ConfigureEndpointTable>
+    18b4:      01 c0           rjmp    .+2             ; 0x18b8 <CDC_Device_ConfigureEndpoints+0x42>
 
        if (!(Endpoint_ConfigureEndpointTable(&CDCInterfaceInfo->Config.DataINEndpoint, 1)))
          return false;
 
        if (!(Endpoint_ConfigureEndpointTable(&CDCInterfaceInfo->Config.DataOUTEndpoint, 1)))
          return false;
-    1576:      80 e0           ldi     r24, 0x00       ; 0
+    18b6:      80 e0           ldi     r24, 0x00       ; 0
 
        if (!(Endpoint_ConfigureEndpointTable(&CDCInterfaceInfo->Config.NotificationEndpoint, 1)))
          return false;
 
        return true;
 }
-    1578:      df 91           pop     r29
-    157a:      cf 91           pop     r28
-    157c:      08 95           ret
+    18b8:      df 91           pop     r29
+    18ba:      cf 91           pop     r28
+    18bc:      08 95           ret
 
-0000157e <CDC_Device_SendByte>:
+000018be <CDC_Device_SendByte>:
        return Endpoint_Write_Stream_LE(Buffer, Length, NULL);
 }
 
 uint8_t CDC_Device_SendByte(USB_ClassInfo_CDC_Device_t* const CDCInterfaceInfo,
                             const uint8_t Data)
 {
-    157e:      df 93           push    r29
-    1580:      cf 93           push    r28
-    1582:      0f 92           push    r0
-    1584:      cd b7           in      r28, 0x3d       ; 61
-    1586:      de b7           in      r29, 0x3e       ; 62
-    1588:      fc 01           movw    r30, r24
+    18be:      df 93           push    r29
+    18c0:      cf 93           push    r28
+    18c2:      0f 92           push    r0
+    18c4:      cd b7           in      r28, 0x3d       ; 61
+    18c6:      de b7           in      r29, 0x3e       ; 62
+    18c8:      fc 01           movw    r30, r24
        if ((USB_DeviceState != DEVICE_STATE_Configured) || !(CDCInterfaceInfo->State.LineEncoding.BaudRateBPS))
-    158a:      8e b3           in      r24, 0x1e       ; 30
-    158c:      84 30           cpi     r24, 0x04       ; 4
-    158e:      f9 f4           brne    .+62            ; 0x15ce <CDC_Device_SendByte+0x50>
-    1590:      24 89           ldd     r18, Z+20       ; 0x14
-    1592:      35 89           ldd     r19, Z+21       ; 0x15
-    1594:      46 89           ldd     r20, Z+22       ; 0x16
-    1596:      57 89           ldd     r21, Z+23       ; 0x17
-    1598:      21 15           cp      r18, r1
-    159a:      31 05           cpc     r19, r1
-    159c:      41 05           cpc     r20, r1
-    159e:      51 05           cpc     r21, r1
-    15a0:      b1 f0           breq    .+44            ; 0x15ce <CDC_Device_SendByte+0x50>
+    18ca:      8e b3           in      r24, 0x1e       ; 30
+    18cc:      84 30           cpi     r24, 0x04       ; 4
+    18ce:      f9 f4           brne    .+62            ; 0x190e <CDC_Device_SendByte+0x50>
+    18d0:      24 89           ldd     r18, Z+20       ; 0x14
+    18d2:      35 89           ldd     r19, Z+21       ; 0x15
+    18d4:      46 89           ldd     r20, Z+22       ; 0x16
+    18d6:      57 89           ldd     r21, Z+23       ; 0x17
+    18d8:      21 15           cp      r18, r1
+    18da:      31 05           cpc     r19, r1
+    18dc:      41 05           cpc     r20, r1
+    18de:      51 05           cpc     r21, r1
+    18e0:      b1 f0           breq    .+44            ; 0x190e <CDC_Device_SendByte+0x50>
                         */
                        static inline void Endpoint_SelectEndpoint(const uint8_t Address) ATTR_ALWAYS_INLINE;
                        static inline void Endpoint_SelectEndpoint(const uint8_t Address)
                        {
                                #if !defined(CONTROL_ONLY_DEVICE)
                                        UENUM = (Address & ENDPOINT_EPNUM_MASK);
-    15a2:      81 81           ldd     r24, Z+1        ; 0x01
-    15a4:      8f 70           andi    r24, 0x0F       ; 15
-    15a6:      80 93 e9 00     sts     0x00E9, r24
+    18e2:      81 81           ldd     r24, Z+1        ; 0x01
+    18e4:      8f 70           andi    r24, 0x0F       ; 15
+    18e6:      80 93 e9 00     sts     0x00E9, r24
                         *          on its direction.
                         */
                        static inline bool Endpoint_IsReadWriteAllowed(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;
                        static inline bool Endpoint_IsReadWriteAllowed(void)
                        {
                                return ((UEINTX & (1 << RWAL)) ? true : false);
-    15aa:      80 91 e8 00     lds     r24, 0x00E8
+    18ea:      80 91 e8 00     lds     r24, 0x00E8
          return ENDPOINT_RWSTREAM_DeviceDisconnected;
 
        Endpoint_SelectEndpoint(CDCInterfaceInfo->Config.DataINEndpoint.Address);
 
        if (!(Endpoint_IsReadWriteAllowed()))
-    15ae:      85 fd           sbrc    r24, 5
-    15b0:      0a c0           rjmp    .+20            ; 0x15c6 <CDC_Device_SendByte+0x48>
+    18ee:      85 fd           sbrc    r24, 5
+    18f0:      0a c0           rjmp    .+20            ; 0x1906 <CDC_Device_SendByte+0x48>
                         */
                        static inline void Endpoint_ClearIN(void) ATTR_ALWAYS_INLINE;
                        static inline void Endpoint_ClearIN(void)
                        {
                                #if !defined(CONTROL_ONLY_DEVICE)
                                        UEINTX &= ~((1 << TXINI) | (1 << FIFOCON));
-    15b2:      80 91 e8 00     lds     r24, 0x00E8
-    15b6:      8e 77           andi    r24, 0x7E       ; 126
-    15b8:      80 93 e8 00     sts     0x00E8, r24
+    18f2:      80 91 e8 00     lds     r24, 0x00E8
+    18f6:      8e 77           andi    r24, 0x7E       ; 126
+    18f8:      80 93 e8 00     sts     0x00E8, r24
        {
                Endpoint_ClearIN();
 
                uint8_t ErrorCode;
 
                if ((ErrorCode = Endpoint_WaitUntilReady()) != ENDPOINT_READYWAIT_NoError)
-    15bc:      69 83           std     Y+1, r22        ; 0x01
-    15be:      39 dc           rcall   .-1934          ; 0xe32 <Endpoint_WaitUntilReady>
-    15c0:      69 81           ldd     r22, Y+1        ; 0x01
-    15c2:      88 23           and     r24, r24
-    15c4:      29 f4           brne    .+10            ; 0x15d0 <CDC_Device_SendByte+0x52>
+    18fc:      69 83           std     Y+1, r22        ; 0x01
+    18fe:      37 dc           rcall   .-1938          ; 0x116e <Endpoint_WaitUntilReady>
+    1900:      69 81           ldd     r22, Y+1        ; 0x01
+    1902:      88 23           and     r24, r24
+    1904:      29 f4           brne    .+10            ; 0x1910 <CDC_Device_SendByte+0x52>
                         *  \param[in] Data  Data to write into the the currently selected endpoint's FIFO buffer.
                         */
                        static inline void Endpoint_Write_8(const uint8_t Data) ATTR_ALWAYS_INLINE;
                        static inline void Endpoint_Write_8(const uint8_t Data)
                        {
                                UEDATX = Data;
-    15c6:      60 93 f1 00     sts     0x00F1, r22
+    1906:      60 93 f1 00     sts     0x00F1, r22
                  return ErrorCode;
        }
 
        Endpoint_Write_8(Data);
        return ENDPOINT_READYWAIT_NoError;
-    15ca:      80 e0           ldi     r24, 0x00       ; 0
-    15cc:      01 c0           rjmp    .+2             ; 0x15d0 <CDC_Device_SendByte+0x52>
+    190a:      80 e0           ldi     r24, 0x00       ; 0
+    190c:      01 c0           rjmp    .+2             ; 0x1910 <CDC_Device_SendByte+0x52>
 
 uint8_t CDC_Device_SendByte(USB_ClassInfo_CDC_Device_t* const CDCInterfaceInfo,
                             const uint8_t Data)
 {
        if ((USB_DeviceState != DEVICE_STATE_Configured) || !(CDCInterfaceInfo->State.LineEncoding.BaudRateBPS))
          return ENDPOINT_RWSTREAM_DeviceDisconnected;
-    15ce:      82 e0           ldi     r24, 0x02       ; 2
+    190e:      82 e0           ldi     r24, 0x02       ; 2
                  return ErrorCode;
        }
 
        Endpoint_Write_8(Data);
        return ENDPOINT_READYWAIT_NoError;
 }
-    15d0:      0f 90           pop     r0
-    15d2:      cf 91           pop     r28
-    15d4:      df 91           pop     r29
-    15d6:      08 95           ret
+    1910:      0f 90           pop     r0
+    1912:      cf 91           pop     r28
+    1914:      df 91           pop     r29
+    1916:      08 95           ret
 
-000015d8 <CDC_Device_Flush>:
+00001918 <CDC_Device_Flush>:
 
 uint8_t CDC_Device_Flush(USB_ClassInfo_CDC_Device_t* const CDCInterfaceInfo)
 {
-    15d8:      fc 01           movw    r30, r24
+    1918:      fc 01           movw    r30, r24
        if ((USB_DeviceState != DEVICE_STATE_Configured) || !(CDCInterfaceInfo->State.LineEncoding.BaudRateBPS))
-    15da:      8e b3           in      r24, 0x1e       ; 30
-    15dc:      84 30           cpi     r24, 0x04       ; 4
-    15de:      19 f5           brne    .+70            ; 0x1626 <CDC_Device_Flush+0x4e>
-    15e0:      24 89           ldd     r18, Z+20       ; 0x14
-    15e2:      35 89           ldd     r19, Z+21       ; 0x15
-    15e4:      46 89           ldd     r20, Z+22       ; 0x16
-    15e6:      57 89           ldd     r21, Z+23       ; 0x17
-    15e8:      21 15           cp      r18, r1
-    15ea:      31 05           cpc     r19, r1
-    15ec:      41 05           cpc     r20, r1
-    15ee:      51 05           cpc     r21, r1
-    15f0:      d1 f0           breq    .+52            ; 0x1626 <CDC_Device_Flush+0x4e>
+    191a:      8e b3           in      r24, 0x1e       ; 30
+    191c:      84 30           cpi     r24, 0x04       ; 4
+    191e:      19 f5           brne    .+70            ; 0x1966 <CDC_Device_Flush+0x4e>
+    1920:      24 89           ldd     r18, Z+20       ; 0x14
+    1922:      35 89           ldd     r19, Z+21       ; 0x15
+    1924:      46 89           ldd     r20, Z+22       ; 0x16
+    1926:      57 89           ldd     r21, Z+23       ; 0x17
+    1928:      21 15           cp      r18, r1
+    192a:      31 05           cpc     r19, r1
+    192c:      41 05           cpc     r20, r1
+    192e:      51 05           cpc     r21, r1
+    1930:      d1 f0           breq    .+52            ; 0x1966 <CDC_Device_Flush+0x4e>
                         */
                        static inline void Endpoint_SelectEndpoint(const uint8_t Address) ATTR_ALWAYS_INLINE;
                        static inline void Endpoint_SelectEndpoint(const uint8_t Address)
                        {
                                #if !defined(CONTROL_ONLY_DEVICE)
                                        UENUM = (Address & ENDPOINT_EPNUM_MASK);
-    15f2:      81 81           ldd     r24, Z+1        ; 0x01
-    15f4:      8f 70           andi    r24, 0x0F       ; 15
-    15f6:      80 93 e9 00     sts     0x00E9, r24
+    1932:      81 81           ldd     r24, Z+1        ; 0x01
+    1934:      8f 70           andi    r24, 0x0F       ; 15
+    1936:      80 93 e9 00     sts     0x00E9, r24
                                #if (defined(USB_SERIES_6_AVR) || defined(USB_SERIES_7_AVR))
                                        return UEBCX;
                                #elif defined(USB_SERIES_4_AVR)
                                        return (((uint16_t)UEBCHX << 8) | UEBCLX);
                                #elif defined(USB_SERIES_2_AVR)
                                        return UEBCLX;
-    15fa:      80 91 f2 00     lds     r24, 0x00F2
+    193a:      80 91 f2 00     lds     r24, 0x00F2
 
        uint8_t ErrorCode;
 
        Endpoint_SelectEndpoint(CDCInterfaceInfo->Config.DataINEndpoint.Address);
 
        if (!(Endpoint_BytesInEndpoint()))
-    15fe:      88 23           and     r24, r24
-    1600:      a1 f0           breq    .+40            ; 0x162a <CDC_Device_Flush+0x52>
+    193e:      88 23           and     r24, r24
+    1940:      a1 f0           breq    .+40            ; 0x196a <CDC_Device_Flush+0x52>
                         *          on its direction.
                         */
                        static inline bool Endpoint_IsReadWriteAllowed(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;
                        static inline bool Endpoint_IsReadWriteAllowed(void)
                        {
                                return ((UEINTX & (1 << RWAL)) ? true : false);
-    1602:      90 91 e8 00     lds     r25, 0x00E8
+    1942:      90 91 e8 00     lds     r25, 0x00E8
                         */
                        static inline void Endpoint_ClearIN(void) ATTR_ALWAYS_INLINE;
                        static inline void Endpoint_ClearIN(void)
                        {
                                #if !defined(CONTROL_ONLY_DEVICE)
                                        UEINTX &= ~((1 << TXINI) | (1 << FIFOCON));
-    1606:      80 91 e8 00     lds     r24, 0x00E8
-    160a:      8e 77           andi    r24, 0x7E       ; 126
-    160c:      80 93 e8 00     sts     0x00E8, r24
+    1946:      80 91 e8 00     lds     r24, 0x00E8
+    194a:      8e 77           andi    r24, 0x7E       ; 126
+    194c:      80 93 e8 00     sts     0x00E8, r24
 
        bool BankFull = !(Endpoint_IsReadWriteAllowed());
 
        Endpoint_ClearIN();
 
        if (BankFull)
-    1610:      95 fd           sbrc    r25, 5
-    1612:      0d c0           rjmp    .+26            ; 0x162e <CDC_Device_Flush+0x56>
+    1950:      95 fd           sbrc    r25, 5
+    1952:      0d c0           rjmp    .+26            ; 0x196e <CDC_Device_Flush+0x56>
        {
                if ((ErrorCode = Endpoint_WaitUntilReady()) != ENDPOINT_READYWAIT_NoError)
-    1614:      0e dc           rcall   .-2020          ; 0xe32 <Endpoint_WaitUntilReady>
-    1616:      88 23           and     r24, r24
-    1618:      59 f4           brne    .+22            ; 0x1630 <CDC_Device_Flush+0x58>
-    161a:      90 91 e8 00     lds     r25, 0x00E8
-    161e:      9e 77           andi    r25, 0x7E       ; 126
-    1620:      90 93 e8 00     sts     0x00E8, r25
-    1624:      08 95           ret
+    1954:      0c dc           rcall   .-2024          ; 0x116e <Endpoint_WaitUntilReady>
+    1956:      88 23           and     r24, r24
+    1958:      59 f4           brne    .+22            ; 0x1970 <CDC_Device_Flush+0x58>
+    195a:      90 91 e8 00     lds     r25, 0x00E8
+    195e:      9e 77           andi    r25, 0x7E       ; 126
+    1960:      90 93 e8 00     sts     0x00E8, r25
+    1964:      08 95           ret
 }
 
 uint8_t CDC_Device_Flush(USB_ClassInfo_CDC_Device_t* const CDCInterfaceInfo)
 {
        if ((USB_DeviceState != DEVICE_STATE_Configured) || !(CDCInterfaceInfo->State.LineEncoding.BaudRateBPS))
          return ENDPOINT_RWSTREAM_DeviceDisconnected;
-    1626:      82 e0           ldi     r24, 0x02       ; 2
-    1628:      08 95           ret
+    1966:      82 e0           ldi     r24, 0x02       ; 2
+    1968:      08 95           ret
        uint8_t ErrorCode;
 
        Endpoint_SelectEndpoint(CDCInterfaceInfo->Config.DataINEndpoint.Address);
 
        if (!(Endpoint_BytesInEndpoint()))
          return ENDPOINT_READYWAIT_NoError;
-    162a:      80 e0           ldi     r24, 0x00       ; 0
-    162c:      08 95           ret
+    196a:      80 e0           ldi     r24, 0x00       ; 0
+    196c:      08 95           ret
                  return ErrorCode;
 
                Endpoint_ClearIN();
        }
 
        return ENDPOINT_READYWAIT_NoError;
-    162e:      80 e0           ldi     r24, 0x00       ; 0
+    196e:      80 e0           ldi     r24, 0x00       ; 0
 }
-    1630:      08 95           ret
+    1970:      08 95           ret
 
-00001632 <CDC_Device_USBTask>:
+00001972 <CDC_Device_USBTask>:
        return true;
 }
 
 void CDC_Device_USBTask(USB_ClassInfo_CDC_Device_t* const CDCInterfaceInfo)
 {
        if ((USB_DeviceState != DEVICE_STATE_Configured) || !(CDCInterfaceInfo->State.LineEncoding.BaudRateBPS))
-    1632:      2e b3           in      r18, 0x1e       ; 30
-    1634:      24 30           cpi     r18, 0x04       ; 4
-    1636:      99 f4           brne    .+38            ; 0x165e <CDC_Device_USBTask+0x2c>
-    1638:      fc 01           movw    r30, r24
-    163a:      24 89           ldd     r18, Z+20       ; 0x14
-    163c:      35 89           ldd     r19, Z+21       ; 0x15
-    163e:      46 89           ldd     r20, Z+22       ; 0x16
-    1640:      57 89           ldd     r21, Z+23       ; 0x17
-    1642:      21 15           cp      r18, r1
-    1644:      31 05           cpc     r19, r1
-    1646:      41 05           cpc     r20, r1
-    1648:      51 05           cpc     r21, r1
-    164a:      49 f0           breq    .+18            ; 0x165e <CDC_Device_USBTask+0x2c>
+    1972:      2e b3           in      r18, 0x1e       ; 30
+    1974:      24 30           cpi     r18, 0x04       ; 4
+    1976:      99 f4           brne    .+38            ; 0x199e <CDC_Device_USBTask+0x2c>
+    1978:      fc 01           movw    r30, r24
+    197a:      24 89           ldd     r18, Z+20       ; 0x14
+    197c:      35 89           ldd     r19, Z+21       ; 0x15
+    197e:      46 89           ldd     r20, Z+22       ; 0x16
+    1980:      57 89           ldd     r21, Z+23       ; 0x17
+    1982:      21 15           cp      r18, r1
+    1984:      31 05           cpc     r19, r1
+    1986:      41 05           cpc     r20, r1
+    1988:      51 05           cpc     r21, r1
+    198a:      49 f0           breq    .+18            ; 0x199e <CDC_Device_USBTask+0x2c>
                         */
                        static inline void Endpoint_SelectEndpoint(const uint8_t Address) ATTR_ALWAYS_INLINE;
                        static inline void Endpoint_SelectEndpoint(const uint8_t Address)
                        {
                                #if !defined(CONTROL_ONLY_DEVICE)
                                        UENUM = (Address & ENDPOINT_EPNUM_MASK);
-    164c:      21 81           ldd     r18, Z+1        ; 0x01
-    164e:      2f 70           andi    r18, 0x0F       ; 15
-    1650:      20 93 e9 00     sts     0x00E9, r18
+    198c:      21 81           ldd     r18, Z+1        ; 0x01
+    198e:      2f 70           andi    r18, 0x0F       ; 15
+    1990:      20 93 e9 00     sts     0x00E9, r18
                         *  \return Boolean \c true if the current endpoint is ready for an IN packet, \c false otherwise.
                         */
                        static inline bool Endpoint_IsINReady(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;
                        static inline bool Endpoint_IsINReady(void)
                        {
                                return ((UEINTX & (1 << TXINI)) ? true : false);
-    1654:      20 91 e8 00     lds     r18, 0x00E8
+    1994:      20 91 e8 00     lds     r18, 0x00E8
          return;
 
        #if !defined(NO_CLASS_DRIVER_AUTOFLUSH)
        Endpoint_SelectEndpoint(CDCInterfaceInfo->Config.DataINEndpoint.Address);
 
        if (Endpoint_IsINReady())
-    1658:      20 ff           sbrs    r18, 0
-    165a:      01 c0           rjmp    .+2             ; 0x165e <CDC_Device_USBTask+0x2c>
+    1998:      20 ff           sbrs    r18, 0
+    199a:      01 c0           rjmp    .+2             ; 0x199e <CDC_Device_USBTask+0x2c>
          CDC_Device_Flush(CDCInterfaceInfo);
-    165c:      bd cf           rjmp    .-134           ; 0x15d8 <CDC_Device_Flush>
-    165e:      08 95           ret
+    199c:      bd cf           rjmp    .-134           ; 0x1918 <CDC_Device_Flush>
+    199e:      08 95           ret
 
-00001660 <CDC_Device_ReceiveByte>:
+000019a0 <CDC_Device_ReceiveByte>:
                return 0;
        }
 }
 
 int16_t CDC_Device_ReceiveByte(USB_ClassInfo_CDC_Device_t* const CDCInterfaceInfo)
 {
-    1660:      fc 01           movw    r30, r24
+    19a0:      fc 01           movw    r30, r24
        if ((USB_DeviceState != DEVICE_STATE_Configured) || !(CDCInterfaceInfo->State.LineEncoding.BaudRateBPS))
-    1662:      8e b3           in      r24, 0x1e       ; 30
-    1664:      84 30           cpi     r24, 0x04       ; 4
-    1666:      29 f5           brne    .+74            ; 0x16b2 <CDC_Device_ReceiveByte+0x52>
-    1668:      24 89           ldd     r18, Z+20       ; 0x14
-    166a:      35 89           ldd     r19, Z+21       ; 0x15
-    166c:      46 89           ldd     r20, Z+22       ; 0x16
-    166e:      57 89           ldd     r21, Z+23       ; 0x17
-    1670:      21 15           cp      r18, r1
-    1672:      31 05           cpc     r19, r1
-    1674:      41 05           cpc     r20, r1
-    1676:      51 05           cpc     r21, r1
-    1678:      e1 f0           breq    .+56            ; 0x16b2 <CDC_Device_ReceiveByte+0x52>
+    19a2:      8e b3           in      r24, 0x1e       ; 30
+    19a4:      84 30           cpi     r24, 0x04       ; 4
+    19a6:      29 f5           brne    .+74            ; 0x19f2 <CDC_Device_ReceiveByte+0x52>
+    19a8:      24 89           ldd     r18, Z+20       ; 0x14
+    19aa:      35 89           ldd     r19, Z+21       ; 0x15
+    19ac:      46 89           ldd     r20, Z+22       ; 0x16
+    19ae:      57 89           ldd     r21, Z+23       ; 0x17
+    19b0:      21 15           cp      r18, r1
+    19b2:      31 05           cpc     r19, r1
+    19b4:      41 05           cpc     r20, r1
+    19b6:      51 05           cpc     r21, r1
+    19b8:      e1 f0           breq    .+56            ; 0x19f2 <CDC_Device_ReceiveByte+0x52>
                         */
                        static inline void Endpoint_SelectEndpoint(const uint8_t Address) ATTR_ALWAYS_INLINE;
                        static inline void Endpoint_SelectEndpoint(const uint8_t Address)
                        {
                                #if !defined(CONTROL_ONLY_DEVICE)
                                        UENUM = (Address & ENDPOINT_EPNUM_MASK);
-    167a:      86 81           ldd     r24, Z+6        ; 0x06
-    167c:      8f 70           andi    r24, 0x0F       ; 15
-    167e:      80 93 e9 00     sts     0x00E9, r24
+    19ba:      86 81           ldd     r24, Z+6        ; 0x06
+    19bc:      8f 70           andi    r24, 0x0F       ; 15
+    19be:      80 93 e9 00     sts     0x00E9, r24
                         *  \return Boolean \c true if current endpoint is has received an OUT packet, \c false otherwise.
                         */
                        static inline bool Endpoint_IsOUTReceived(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;
                        static inline bool Endpoint_IsOUTReceived(void)
                        {
                                return ((UEINTX & (1 << RXOUTI)) ? true : false);
-    1682:      80 91 e8 00     lds     r24, 0x00E8
+    19c2:      80 91 e8 00     lds     r24, 0x00E8
 
        int16_t ReceivedByte = -1;
 
        Endpoint_SelectEndpoint(CDCInterfaceInfo->Config.DataOUTEndpoint.Address);
 
        if (Endpoint_IsOUTReceived())
-    1686:      82 ff           sbrs    r24, 2
-    1688:      14 c0           rjmp    .+40            ; 0x16b2 <CDC_Device_ReceiveByte+0x52>
+    19c6:      82 ff           sbrs    r24, 2
+    19c8:      14 c0           rjmp    .+40            ; 0x19f2 <CDC_Device_ReceiveByte+0x52>
                                #if (defined(USB_SERIES_6_AVR) || defined(USB_SERIES_7_AVR))
                                        return UEBCX;
                                #elif defined(USB_SERIES_4_AVR)
                                        return (((uint16_t)UEBCHX << 8) | UEBCLX);
                                #elif defined(USB_SERIES_2_AVR)
                                        return UEBCLX;
-    168a:      80 91 f2 00     lds     r24, 0x00F2
+    19ca:      80 91 f2 00     lds     r24, 0x00F2
        {
                if (Endpoint_BytesInEndpoint())
-    168e:      88 23           and     r24, r24
-    1690:      21 f0           breq    .+8             ; 0x169a <CDC_Device_ReceiveByte+0x3a>
+    19ce:      88 23           and     r24, r24
+    19d0:      21 f0           breq    .+8             ; 0x19da <CDC_Device_ReceiveByte+0x3a>
                         *  \return Next byte in the currently selected endpoint's FIFO buffer.
                         */
                        static inline uint8_t Endpoint_Read_8(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;
                        static inline uint8_t Endpoint_Read_8(void)
                        {
                                return UEDATX;
-    1692:      20 91 f1 00     lds     r18, 0x00F1
+    19d2:      20 91 f1 00     lds     r18, 0x00F1
                  ReceivedByte = Endpoint_Read_8();
-    1696:      30 e0           ldi     r19, 0x00       ; 0
-    1698:      02 c0           rjmp    .+4             ; 0x169e <CDC_Device_ReceiveByte+0x3e>
+    19d6:      30 e0           ldi     r19, 0x00       ; 0
+    19d8:      02 c0           rjmp    .+4             ; 0x19de <CDC_Device_ReceiveByte+0x3e>
 int16_t CDC_Device_ReceiveByte(USB_ClassInfo_CDC_Device_t* const CDCInterfaceInfo)
 {
        if ((USB_DeviceState != DEVICE_STATE_Configured) || !(CDCInterfaceInfo->State.LineEncoding.BaudRateBPS))
          return -1;
 
        int16_t ReceivedByte = -1;
-    169a:      2f ef           ldi     r18, 0xFF       ; 255
-    169c:      3f ef           ldi     r19, 0xFF       ; 255
+    19da:      2f ef           ldi     r18, 0xFF       ; 255
+    19dc:      3f ef           ldi     r19, 0xFF       ; 255
                                #if (defined(USB_SERIES_6_AVR) || defined(USB_SERIES_7_AVR))
                                        return UEBCX;
                                #elif defined(USB_SERIES_4_AVR)
                                        return (((uint16_t)UEBCHX << 8) | UEBCLX);
                                #elif defined(USB_SERIES_2_AVR)
                                        return UEBCLX;
-    169e:      80 91 f2 00     lds     r24, 0x00F2
+    19de:      80 91 f2 00     lds     r24, 0x00F2
        if (Endpoint_IsOUTReceived())
        {
                if (Endpoint_BytesInEndpoint())
                  ReceivedByte = Endpoint_Read_8();
 
                if (!(Endpoint_BytesInEndpoint()))
-    16a2:      88 23           and     r24, r24
-    16a4:      41 f4           brne    .+16            ; 0x16b6 <CDC_Device_ReceiveByte+0x56>
+    19e2:      88 23           and     r24, r24
+    19e4:      41 f4           brne    .+16            ; 0x19f6 <CDC_Device_ReceiveByte+0x56>
                         */
                        static inline void Endpoint_ClearOUT(void) ATTR_ALWAYS_INLINE;
                        static inline void Endpoint_ClearOUT(void)
                        {
                                #if !defined(CONTROL_ONLY_DEVICE)
                                        UEINTX &= ~((1 << RXOUTI) | (1 << FIFOCON));
-    16a6:      80 91 e8 00     lds     r24, 0x00E8
-    16aa:      8b 77           andi    r24, 0x7B       ; 123
-    16ac:      80 93 e8 00     sts     0x00E8, r24
-    16b0:      02 c0           rjmp    .+4             ; 0x16b6 <CDC_Device_ReceiveByte+0x56>
+    19e6:      80 91 e8 00     lds     r24, 0x00E8
+    19ea:      8b 77           andi    r24, 0x7B       ; 123
+    19ec:      80 93 e8 00     sts     0x00E8, r24
+    19f0:      02 c0           rjmp    .+4             ; 0x19f6 <CDC_Device_ReceiveByte+0x56>
 int16_t CDC_Device_ReceiveByte(USB_ClassInfo_CDC_Device_t* const CDCInterfaceInfo)
 {
        if ((USB_DeviceState != DEVICE_STATE_Configured) || !(CDCInterfaceInfo->State.LineEncoding.BaudRateBPS))
          return -1;
 
        int16_t ReceivedByte = -1;
-    16b2:      2f ef           ldi     r18, 0xFF       ; 255
-    16b4:      3f ef           ldi     r19, 0xFF       ; 255
+    19f2:      2f ef           ldi     r18, 0xFF       ; 255
+    19f4:      3f ef           ldi     r19, 0xFF       ; 255
                if (!(Endpoint_BytesInEndpoint()))
                  Endpoint_ClearOUT();
        }
 
        return ReceivedByte;
 }
-    16b6:      c9 01           movw    r24, r18
-    16b8:      08 95           ret
+    19f6:      c9 01           movw    r24, r18
+    19f8:      08 95           ret
 
-000016ba <CDC_Device_Event_Stub>:
+000019fa <CDC_Device_Event_Stub>:
 #endif
 
 void CDC_Device_Event_Stub(void)
 {
 
 }
-    16ba:      08 95           ret
-
-000016bc <__subsf3>:
-    16bc:      50 58           subi    r21, 0x80       ; 128
-
-000016be <__addsf3>:
-    16be:      bb 27           eor     r27, r27
-    16c0:      aa 27           eor     r26, r26
-    16c2:      0e d0           rcall   .+28            ; 0x16e0 <__addsf3x>
-    16c4:      70 c1           rjmp    .+736           ; 0x19a6 <__fp_round>
-    16c6:      61 d1           rcall   .+706           ; 0x198a <__fp_pscA>
-    16c8:      30 f0           brcs    .+12            ; 0x16d6 <__addsf3+0x18>
-    16ca:      66 d1           rcall   .+716           ; 0x1998 <__fp_pscB>
-    16cc:      20 f0           brcs    .+8             ; 0x16d6 <__addsf3+0x18>
-    16ce:      31 f4           brne    .+12            ; 0x16dc <__addsf3+0x1e>
-    16d0:      9f 3f           cpi     r25, 0xFF       ; 255
-    16d2:      11 f4           brne    .+4             ; 0x16d8 <__addsf3+0x1a>
-    16d4:      1e f4           brtc    .+6             ; 0x16dc <__addsf3+0x1e>
-    16d6:      56 c1           rjmp    .+684           ; 0x1984 <__fp_nan>
-    16d8:      0e f4           brtc    .+2             ; 0x16dc <__addsf3+0x1e>
-    16da:      e0 95           com     r30
-    16dc:      e7 fb           bst     r30, 7
-    16de:      4c c1           rjmp    .+664           ; 0x1978 <__fp_inf>
-
-000016e0 <__addsf3x>:
-    16e0:      e9 2f           mov     r30, r25
-    16e2:      72 d1           rcall   .+740           ; 0x19c8 <__fp_split3>
-    16e4:      80 f3           brcs    .-32            ; 0x16c6 <__addsf3+0x8>
-    16e6:      ba 17           cp      r27, r26
-    16e8:      62 07           cpc     r22, r18
-    16ea:      73 07           cpc     r23, r19
-    16ec:      84 07           cpc     r24, r20
-    16ee:      95 07           cpc     r25, r21
-    16f0:      18 f0           brcs    .+6             ; 0x16f8 <__addsf3x+0x18>
-    16f2:      71 f4           brne    .+28            ; 0x1710 <__addsf3x+0x30>
-    16f4:      9e f5           brtc    .+102           ; 0x175c <__addsf3x+0x7c>
-    16f6:      8a c1           rjmp    .+788           ; 0x1a0c <__fp_zero>
-    16f8:      0e f4           brtc    .+2             ; 0x16fc <__addsf3x+0x1c>
-    16fa:      e0 95           com     r30
-    16fc:      0b 2e           mov     r0, r27
-    16fe:      ba 2f           mov     r27, r26
-    1700:      a0 2d           mov     r26, r0
-    1702:      0b 01           movw    r0, r22
-    1704:      b9 01           movw    r22, r18
-    1706:      90 01           movw    r18, r0
-    1708:      0c 01           movw    r0, r24
-    170a:      ca 01           movw    r24, r20
-    170c:      a0 01           movw    r20, r0
-    170e:      11 24           eor     r1, r1
-    1710:      ff 27           eor     r31, r31
-    1712:      59 1b           sub     r21, r25
-    1714:      99 f0           breq    .+38            ; 0x173c <__addsf3x+0x5c>
-    1716:      59 3f           cpi     r21, 0xF9       ; 249
-    1718:      50 f4           brcc    .+20            ; 0x172e <__addsf3x+0x4e>
-    171a:      50 3e           cpi     r21, 0xE0       ; 224
-    171c:      68 f1           brcs    .+90            ; 0x1778 <__addsf3x+0x98>
-    171e:      1a 16           cp      r1, r26
-    1720:      f0 40           sbci    r31, 0x00       ; 0
-    1722:      a2 2f           mov     r26, r18
-    1724:      23 2f           mov     r18, r19
-    1726:      34 2f           mov     r19, r20
-    1728:      44 27           eor     r20, r20
-    172a:      58 5f           subi    r21, 0xF8       ; 248
-    172c:      f3 cf           rjmp    .-26            ; 0x1714 <__addsf3x+0x34>
-    172e:      46 95           lsr     r20
-    1730:      37 95           ror     r19
-    1732:      27 95           ror     r18
-    1734:      a7 95           ror     r26
-    1736:      f0 40           sbci    r31, 0x00       ; 0
-    1738:      53 95           inc     r21
-    173a:      c9 f7           brne    .-14            ; 0x172e <__addsf3x+0x4e>
-    173c:      7e f4           brtc    .+30            ; 0x175c <__addsf3x+0x7c>
-    173e:      1f 16           cp      r1, r31
-    1740:      ba 0b           sbc     r27, r26
-    1742:      62 0b           sbc     r22, r18
-    1744:      73 0b           sbc     r23, r19
-    1746:      84 0b           sbc     r24, r20
-    1748:      ba f0           brmi    .+46            ; 0x1778 <__addsf3x+0x98>
-    174a:      91 50           subi    r25, 0x01       ; 1
-    174c:      a1 f0           breq    .+40            ; 0x1776 <__addsf3x+0x96>
-    174e:      ff 0f           add     r31, r31
-    1750:      bb 1f           adc     r27, r27
-    1752:      66 1f           adc     r22, r22
-    1754:      77 1f           adc     r23, r23
-    1756:      88 1f           adc     r24, r24
-    1758:      c2 f7           brpl    .-16            ; 0x174a <__addsf3x+0x6a>
-    175a:      0e c0           rjmp    .+28            ; 0x1778 <__addsf3x+0x98>
-    175c:      ba 0f           add     r27, r26
-    175e:      62 1f           adc     r22, r18
-    1760:      73 1f           adc     r23, r19
-    1762:      84 1f           adc     r24, r20
-    1764:      48 f4           brcc    .+18            ; 0x1778 <__addsf3x+0x98>
-    1766:      87 95           ror     r24
-    1768:      77 95           ror     r23
-    176a:      67 95           ror     r22
-    176c:      b7 95           ror     r27
-    176e:      f7 95           ror     r31
-    1770:      9e 3f           cpi     r25, 0xFE       ; 254
-    1772:      08 f0           brcs    .+2             ; 0x1776 <__addsf3x+0x96>
-    1774:      b3 cf           rjmp    .-154           ; 0x16dc <__addsf3+0x1e>
-    1776:      93 95           inc     r25
-    1778:      88 0f           add     r24, r24
-    177a:      08 f0           brcs    .+2             ; 0x177e <__addsf3x+0x9e>
-    177c:      99 27           eor     r25, r25
-    177e:      ee 0f           add     r30, r30
-    1780:      97 95           ror     r25
-    1782:      87 95           ror     r24
-    1784:      08 95           ret
-
-00001786 <__cmpsf2>:
-    1786:      d4 d0           rcall   .+424           ; 0x1930 <__fp_cmp>
-    1788:      08 f4           brcc    .+2             ; 0x178c <__cmpsf2+0x6>
-    178a:      81 e0           ldi     r24, 0x01       ; 1
-    178c:      08 95           ret
-
-0000178e <__divsf3>:
-    178e:      0c d0           rcall   .+24            ; 0x17a8 <__divsf3x>
-    1790:      0a c1           rjmp    .+532           ; 0x19a6 <__fp_round>
-    1792:      02 d1           rcall   .+516           ; 0x1998 <__fp_pscB>
-    1794:      40 f0           brcs    .+16            ; 0x17a6 <__divsf3+0x18>
-    1796:      f9 d0           rcall   .+498           ; 0x198a <__fp_pscA>
-    1798:      30 f0           brcs    .+12            ; 0x17a6 <__divsf3+0x18>
-    179a:      21 f4           brne    .+8             ; 0x17a4 <__divsf3+0x16>
-    179c:      5f 3f           cpi     r21, 0xFF       ; 255
-    179e:      19 f0           breq    .+6             ; 0x17a6 <__divsf3+0x18>
-    17a0:      eb c0           rjmp    .+470           ; 0x1978 <__fp_inf>
-    17a2:      51 11           cpse    r21, r1
-    17a4:      34 c1           rjmp    .+616           ; 0x1a0e <__fp_szero>
-    17a6:      ee c0           rjmp    .+476           ; 0x1984 <__fp_nan>
-
-000017a8 <__divsf3x>:
-    17a8:      0f d1           rcall   .+542           ; 0x19c8 <__fp_split3>
-    17aa:      98 f3           brcs    .-26            ; 0x1792 <__divsf3+0x4>
-
-000017ac <__divsf3_pse>:
-    17ac:      99 23           and     r25, r25
-    17ae:      c9 f3           breq    .-14            ; 0x17a2 <__divsf3+0x14>
-    17b0:      55 23           and     r21, r21
-    17b2:      b1 f3           breq    .-20            ; 0x17a0 <__divsf3+0x12>
-    17b4:      95 1b           sub     r25, r21
-    17b6:      55 0b           sbc     r21, r21
-    17b8:      bb 27           eor     r27, r27
-    17ba:      aa 27           eor     r26, r26
-    17bc:      62 17           cp      r22, r18
-    17be:      73 07           cpc     r23, r19
-    17c0:      84 07           cpc     r24, r20
-    17c2:      38 f0           brcs    .+14            ; 0x17d2 <__divsf3_pse+0x26>
-    17c4:      9f 5f           subi    r25, 0xFF       ; 255
-    17c6:      5f 4f           sbci    r21, 0xFF       ; 255
-    17c8:      22 0f           add     r18, r18
-    17ca:      33 1f           adc     r19, r19
-    17cc:      44 1f           adc     r20, r20
-    17ce:      aa 1f           adc     r26, r26
-    17d0:      a9 f3           breq    .-22            ; 0x17bc <__divsf3_pse+0x10>
-    17d2:      33 d0           rcall   .+102           ; 0x183a <__divsf3_pse+0x8e>
-    17d4:      0e 2e           mov     r0, r30
-    17d6:      3a f0           brmi    .+14            ; 0x17e6 <__divsf3_pse+0x3a>
-    17d8:      e0 e8           ldi     r30, 0x80       ; 128
-    17da:      30 d0           rcall   .+96            ; 0x183c <__divsf3_pse+0x90>
-    17dc:      91 50           subi    r25, 0x01       ; 1
-    17de:      50 40           sbci    r21, 0x00       ; 0
-    17e0:      e6 95           lsr     r30
-    17e2:      00 1c           adc     r0, r0
-    17e4:      ca f7           brpl    .-14            ; 0x17d8 <__divsf3_pse+0x2c>
-    17e6:      29 d0           rcall   .+82            ; 0x183a <__divsf3_pse+0x8e>
-    17e8:      fe 2f           mov     r31, r30
-    17ea:      27 d0           rcall   .+78            ; 0x183a <__divsf3_pse+0x8e>
-    17ec:      66 0f           add     r22, r22
-    17ee:      77 1f           adc     r23, r23
-    17f0:      88 1f           adc     r24, r24
-    17f2:      bb 1f           adc     r27, r27
-    17f4:      26 17           cp      r18, r22
-    17f6:      37 07           cpc     r19, r23
-    17f8:      48 07           cpc     r20, r24
-    17fa:      ab 07           cpc     r26, r27
-    17fc:      b0 e8           ldi     r27, 0x80       ; 128
-    17fe:      09 f0           breq    .+2             ; 0x1802 <__divsf3_pse+0x56>
-    1800:      bb 0b           sbc     r27, r27
-    1802:      80 2d           mov     r24, r0
-    1804:      bf 01           movw    r22, r30
-    1806:      ff 27           eor     r31, r31
-    1808:      93 58           subi    r25, 0x83       ; 131
-    180a:      5f 4f           sbci    r21, 0xFF       ; 255
-    180c:      2a f0           brmi    .+10            ; 0x1818 <__divsf3_pse+0x6c>
-    180e:      9e 3f           cpi     r25, 0xFE       ; 254
-    1810:      51 05           cpc     r21, r1
-    1812:      68 f0           brcs    .+26            ; 0x182e <__divsf3_pse+0x82>
-    1814:      b1 c0           rjmp    .+354           ; 0x1978 <__fp_inf>
-    1816:      fb c0           rjmp    .+502           ; 0x1a0e <__fp_szero>
-    1818:      5f 3f           cpi     r21, 0xFF       ; 255
-    181a:      ec f3           brlt    .-6             ; 0x1816 <__divsf3_pse+0x6a>
-    181c:      98 3e           cpi     r25, 0xE8       ; 232
-    181e:      dc f3           brlt    .-10            ; 0x1816 <__divsf3_pse+0x6a>
-    1820:      86 95           lsr     r24
-    1822:      77 95           ror     r23
-    1824:      67 95           ror     r22
-    1826:      b7 95           ror     r27
-    1828:      f7 95           ror     r31
-    182a:      9f 5f           subi    r25, 0xFF       ; 255
-    182c:      c9 f7           brne    .-14            ; 0x1820 <__divsf3_pse+0x74>
-    182e:      88 0f           add     r24, r24
-    1830:      91 1d           adc     r25, r1
-    1832:      96 95           lsr     r25
-    1834:      87 95           ror     r24
-    1836:      97 f9           bld     r25, 7
-    1838:      08 95           ret
-    183a:      e1 e0           ldi     r30, 0x01       ; 1
-    183c:      66 0f           add     r22, r22
-    183e:      77 1f           adc     r23, r23
-    1840:      88 1f           adc     r24, r24
-    1842:      bb 1f           adc     r27, r27
-    1844:      62 17           cp      r22, r18
-    1846:      73 07           cpc     r23, r19
-    1848:      84 07           cpc     r24, r20
-    184a:      ba 07           cpc     r27, r26
-    184c:      20 f0           brcs    .+8             ; 0x1856 <__divsf3_pse+0xaa>
-    184e:      62 1b           sub     r22, r18
-    1850:      73 0b           sbc     r23, r19
-    1852:      84 0b           sbc     r24, r20
-    1854:      ba 0b           sbc     r27, r26
-    1856:      ee 1f           adc     r30, r30
-    1858:      88 f7           brcc    .-30            ; 0x183c <__divsf3_pse+0x90>
-    185a:      e0 95           com     r30
-    185c:      08 95           ret
-
-0000185e <__fixunssfsi>:
-    185e:      bc d0           rcall   .+376           ; 0x19d8 <__fp_splitA>
-    1860:      88 f0           brcs    .+34            ; 0x1884 <__fixunssfsi+0x26>
-    1862:      9f 57           subi    r25, 0x7F       ; 127
-    1864:      90 f0           brcs    .+36            ; 0x188a <__fixunssfsi+0x2c>
-    1866:      b9 2f           mov     r27, r25
-    1868:      99 27           eor     r25, r25
-    186a:      b7 51           subi    r27, 0x17       ; 23
-    186c:      a0 f0           brcs    .+40            ; 0x1896 <__fixunssfsi+0x38>
-    186e:      d1 f0           breq    .+52            ; 0x18a4 <__fixunssfsi+0x46>
-    1870:      66 0f           add     r22, r22
-    1872:      77 1f           adc     r23, r23
-    1874:      88 1f           adc     r24, r24
-    1876:      99 1f           adc     r25, r25
-    1878:      1a f0           brmi    .+6             ; 0x1880 <__fixunssfsi+0x22>
-    187a:      ba 95           dec     r27
-    187c:      c9 f7           brne    .-14            ; 0x1870 <__fixunssfsi+0x12>
-    187e:      12 c0           rjmp    .+36            ; 0x18a4 <__fixunssfsi+0x46>
-    1880:      b1 30           cpi     r27, 0x01       ; 1
-    1882:      81 f0           breq    .+32            ; 0x18a4 <__fixunssfsi+0x46>
-    1884:      c3 d0           rcall   .+390           ; 0x1a0c <__fp_zero>
-    1886:      b1 e0           ldi     r27, 0x01       ; 1
-    1888:      08 95           ret
-    188a:      c0 c0           rjmp    .+384           ; 0x1a0c <__fp_zero>
-    188c:      67 2f           mov     r22, r23
-    188e:      78 2f           mov     r23, r24
-    1890:      88 27           eor     r24, r24
-    1892:      b8 5f           subi    r27, 0xF8       ; 248
-    1894:      39 f0           breq    .+14            ; 0x18a4 <__fixunssfsi+0x46>
-    1896:      b9 3f           cpi     r27, 0xF9       ; 249
-    1898:      cc f3           brlt    .-14            ; 0x188c <__fixunssfsi+0x2e>
-    189a:      86 95           lsr     r24
-    189c:      77 95           ror     r23
-    189e:      67 95           ror     r22
-    18a0:      b3 95           inc     r27
-    18a2:      d9 f7           brne    .-10            ; 0x189a <__fixunssfsi+0x3c>
-    18a4:      3e f4           brtc    .+14            ; 0x18b4 <__fixunssfsi+0x56>
-    18a6:      90 95           com     r25
-    18a8:      80 95           com     r24
-    18aa:      70 95           com     r23
-    18ac:      61 95           neg     r22
-    18ae:      7f 4f           sbci    r23, 0xFF       ; 255
-    18b0:      8f 4f           sbci    r24, 0xFF       ; 255
-    18b2:      9f 4f           sbci    r25, 0xFF       ; 255
-    18b4:      08 95           ret
-
-000018b6 <__floatunsisf>:
-    18b6:      e8 94           clt
-    18b8:      09 c0           rjmp    .+18            ; 0x18cc <__floatsisf+0x12>
-
-000018ba <__floatsisf>:
-    18ba:      97 fb           bst     r25, 7
-    18bc:      3e f4           brtc    .+14            ; 0x18cc <__floatsisf+0x12>
-    18be:      90 95           com     r25
-    18c0:      80 95           com     r24
-    18c2:      70 95           com     r23
-    18c4:      61 95           neg     r22
-    18c6:      7f 4f           sbci    r23, 0xFF       ; 255
-    18c8:      8f 4f           sbci    r24, 0xFF       ; 255
-    18ca:      9f 4f           sbci    r25, 0xFF       ; 255
-    18cc:      99 23           and     r25, r25
-    18ce:      a9 f0           breq    .+42            ; 0x18fa <__floatsisf+0x40>
-    18d0:      f9 2f           mov     r31, r25
-    18d2:      96 e9           ldi     r25, 0x96       ; 150
-    18d4:      bb 27           eor     r27, r27
-    18d6:      93 95           inc     r25
-    18d8:      f6 95           lsr     r31
-    18da:      87 95           ror     r24
-    18dc:      77 95           ror     r23
-    18de:      67 95           ror     r22
-    18e0:      b7 95           ror     r27
-    18e2:      f1 11           cpse    r31, r1
-    18e4:      f8 cf           rjmp    .-16            ; 0x18d6 <__floatsisf+0x1c>
-    18e6:      fa f4           brpl    .+62            ; 0x1926 <__floatsisf+0x6c>
-    18e8:      bb 0f           add     r27, r27
-    18ea:      11 f4           brne    .+4             ; 0x18f0 <__floatsisf+0x36>
-    18ec:      60 ff           sbrs    r22, 0
-    18ee:      1b c0           rjmp    .+54            ; 0x1926 <__floatsisf+0x6c>
-    18f0:      6f 5f           subi    r22, 0xFF       ; 255
-    18f2:      7f 4f           sbci    r23, 0xFF       ; 255
-    18f4:      8f 4f           sbci    r24, 0xFF       ; 255
-    18f6:      9f 4f           sbci    r25, 0xFF       ; 255
-    18f8:      16 c0           rjmp    .+44            ; 0x1926 <__floatsisf+0x6c>
-    18fa:      88 23           and     r24, r24
-    18fc:      11 f0           breq    .+4             ; 0x1902 <__floatsisf+0x48>
-    18fe:      96 e9           ldi     r25, 0x96       ; 150
-    1900:      11 c0           rjmp    .+34            ; 0x1924 <__floatsisf+0x6a>
-    1902:      77 23           and     r23, r23
-    1904:      21 f0           breq    .+8             ; 0x190e <__floatsisf+0x54>
-    1906:      9e e8           ldi     r25, 0x8E       ; 142
-    1908:      87 2f           mov     r24, r23
-    190a:      76 2f           mov     r23, r22
-    190c:      05 c0           rjmp    .+10            ; 0x1918 <__floatsisf+0x5e>
-    190e:      66 23           and     r22, r22
-    1910:      71 f0           breq    .+28            ; 0x192e <__floatsisf+0x74>
-    1912:      96 e8           ldi     r25, 0x86       ; 134
-    1914:      86 2f           mov     r24, r22
-    1916:      70 e0           ldi     r23, 0x00       ; 0
-    1918:      60 e0           ldi     r22, 0x00       ; 0
-    191a:      2a f0           brmi    .+10            ; 0x1926 <__floatsisf+0x6c>
-    191c:      9a 95           dec     r25
-    191e:      66 0f           add     r22, r22
-    1920:      77 1f           adc     r23, r23
-    1922:      88 1f           adc     r24, r24
-    1924:      da f7           brpl    .-10            ; 0x191c <__floatsisf+0x62>
-    1926:      88 0f           add     r24, r24
-    1928:      96 95           lsr     r25
-    192a:      87 95           ror     r24
-    192c:      97 f9           bld     r25, 7
-    192e:      08 95           ret
-
-00001930 <__fp_cmp>:
-    1930:      99 0f           add     r25, r25
-    1932:      00 08           sbc     r0, r0
-    1934:      55 0f           add     r21, r21
-    1936:      aa 0b           sbc     r26, r26
-    1938:      e0 e8           ldi     r30, 0x80       ; 128
-    193a:      fe ef           ldi     r31, 0xFE       ; 254
-    193c:      16 16           cp      r1, r22
-    193e:      17 06           cpc     r1, r23
-    1940:      e8 07           cpc     r30, r24
-    1942:      f9 07           cpc     r31, r25
-    1944:      c0 f0           brcs    .+48            ; 0x1976 <__fp_cmp+0x46>
-    1946:      12 16           cp      r1, r18
-    1948:      13 06           cpc     r1, r19
-    194a:      e4 07           cpc     r30, r20
-    194c:      f5 07           cpc     r31, r21
-    194e:      98 f0           brcs    .+38            ; 0x1976 <__fp_cmp+0x46>
-    1950:      62 1b           sub     r22, r18
-    1952:      73 0b           sbc     r23, r19
-    1954:      84 0b           sbc     r24, r20
-    1956:      95 0b           sbc     r25, r21
-    1958:      39 f4           brne    .+14            ; 0x1968 <__fp_cmp+0x38>
-    195a:      0a 26           eor     r0, r26
-    195c:      61 f0           breq    .+24            ; 0x1976 <__fp_cmp+0x46>
-    195e:      23 2b           or      r18, r19
-    1960:      24 2b           or      r18, r20
-    1962:      25 2b           or      r18, r21
-    1964:      21 f4           brne    .+8             ; 0x196e <__fp_cmp+0x3e>
-    1966:      08 95           ret
-    1968:      0a 26           eor     r0, r26
-    196a:      09 f4           brne    .+2             ; 0x196e <__fp_cmp+0x3e>
-    196c:      a1 40           sbci    r26, 0x01       ; 1
-    196e:      a6 95           lsr     r26
-    1970:      8f ef           ldi     r24, 0xFF       ; 255
-    1972:      81 1d           adc     r24, r1
-    1974:      81 1d           adc     r24, r1
-    1976:      08 95           ret
-
-00001978 <__fp_inf>:
-    1978:      97 f9           bld     r25, 7
-    197a:      9f 67           ori     r25, 0x7F       ; 127
-    197c:      80 e8           ldi     r24, 0x80       ; 128
-    197e:      70 e0           ldi     r23, 0x00       ; 0
-    1980:      60 e0           ldi     r22, 0x00       ; 0
-    1982:      08 95           ret
-
-00001984 <__fp_nan>:
-    1984:      9f ef           ldi     r25, 0xFF       ; 255
-    1986:      80 ec           ldi     r24, 0xC0       ; 192
-    1988:      08 95           ret
-
-0000198a <__fp_pscA>:
-    198a:      00 24           eor     r0, r0
-    198c:      0a 94           dec     r0
-    198e:      16 16           cp      r1, r22
-    1990:      17 06           cpc     r1, r23
-    1992:      18 06           cpc     r1, r24
-    1994:      09 06           cpc     r0, r25
-    1996:      08 95           ret
-
-00001998 <__fp_pscB>:
-    1998:      00 24           eor     r0, r0
-    199a:      0a 94           dec     r0
-    199c:      12 16           cp      r1, r18
-    199e:      13 06           cpc     r1, r19
-    19a0:      14 06           cpc     r1, r20
-    19a2:      05 06           cpc     r0, r21
-    19a4:      08 95           ret
-
-000019a6 <__fp_round>:
-    19a6:      09 2e           mov     r0, r25
-    19a8:      03 94           inc     r0
-    19aa:      00 0c           add     r0, r0
-    19ac:      11 f4           brne    .+4             ; 0x19b2 <__fp_round+0xc>
-    19ae:      88 23           and     r24, r24
-    19b0:      52 f0           brmi    .+20            ; 0x19c6 <__fp_round+0x20>
-    19b2:      bb 0f           add     r27, r27
-    19b4:      40 f4           brcc    .+16            ; 0x19c6 <__fp_round+0x20>
-    19b6:      bf 2b           or      r27, r31
-    19b8:      11 f4           brne    .+4             ; 0x19be <__fp_round+0x18>
-    19ba:      60 ff           sbrs    r22, 0
-    19bc:      04 c0           rjmp    .+8             ; 0x19c6 <__fp_round+0x20>
-    19be:      6f 5f           subi    r22, 0xFF       ; 255
-    19c0:      7f 4f           sbci    r23, 0xFF       ; 255
-    19c2:      8f 4f           sbci    r24, 0xFF       ; 255
-    19c4:      9f 4f           sbci    r25, 0xFF       ; 255
-    19c6:      08 95           ret
-
-000019c8 <__fp_split3>:
-    19c8:      57 fd           sbrc    r21, 7
-    19ca:      90 58           subi    r25, 0x80       ; 128
-    19cc:      44 0f           add     r20, r20
-    19ce:      55 1f           adc     r21, r21
-    19d0:      59 f0           breq    .+22            ; 0x19e8 <__fp_splitA+0x10>
-    19d2:      5f 3f           cpi     r21, 0xFF       ; 255
-    19d4:      71 f0           breq    .+28            ; 0x19f2 <__fp_splitA+0x1a>
-    19d6:      47 95           ror     r20
-
-000019d8 <__fp_splitA>:
-    19d8:      88 0f           add     r24, r24
-    19da:      97 fb           bst     r25, 7
-    19dc:      99 1f           adc     r25, r25
-    19de:      61 f0           breq    .+24            ; 0x19f8 <__fp_splitA+0x20>
-    19e0:      9f 3f           cpi     r25, 0xFF       ; 255
-    19e2:      79 f0           breq    .+30            ; 0x1a02 <__fp_splitA+0x2a>
-    19e4:      87 95           ror     r24
-    19e6:      08 95           ret
-    19e8:      12 16           cp      r1, r18
-    19ea:      13 06           cpc     r1, r19
-    19ec:      14 06           cpc     r1, r20
-    19ee:      55 1f           adc     r21, r21
-    19f0:      f2 cf           rjmp    .-28            ; 0x19d6 <__fp_split3+0xe>
-    19f2:      46 95           lsr     r20
-    19f4:      f1 df           rcall   .-30            ; 0x19d8 <__fp_splitA>
-    19f6:      08 c0           rjmp    .+16            ; 0x1a08 <__fp_splitA+0x30>
-    19f8:      16 16           cp      r1, r22
-    19fa:      17 06           cpc     r1, r23
-    19fc:      18 06           cpc     r1, r24
-    19fe:      99 1f           adc     r25, r25
-    1a00:      f1 cf           rjmp    .-30            ; 0x19e4 <__fp_splitA+0xc>
-    1a02:      86 95           lsr     r24
-    1a04:      71 05           cpc     r23, r1
-    1a06:      61 05           cpc     r22, r1
-    1a08:      08 94           sec
-    1a0a:      08 95           ret
-
-00001a0c <__fp_zero>:
-    1a0c:      e8 94           clt
-
-00001a0e <__fp_szero>:
-    1a0e:      bb 27           eor     r27, r27
-    1a10:      66 27           eor     r22, r22
-    1a12:      77 27           eor     r23, r23
-    1a14:      cb 01           movw    r24, r22
-    1a16:      97 f9           bld     r25, 7
-    1a18:      08 95           ret
-
-00001a1a <__gesf2>:
-    1a1a:      8a df           rcall   .-236           ; 0x1930 <__fp_cmp>
-    1a1c:      08 f4           brcc    .+2             ; 0x1a20 <__gesf2+0x6>
-    1a1e:      8f ef           ldi     r24, 0xFF       ; 255
-    1a20:      08 95           ret
-
-00001a22 <__udivmodhi4>:
-    1a22:      aa 1b           sub     r26, r26
-    1a24:      bb 1b           sub     r27, r27
-    1a26:      51 e1           ldi     r21, 0x11       ; 17
-    1a28:      07 c0           rjmp    .+14            ; 0x1a38 <__udivmodhi4_ep>
-
-00001a2a <__udivmodhi4_loop>:
-    1a2a:      aa 1f           adc     r26, r26
-    1a2c:      bb 1f           adc     r27, r27
-    1a2e:      a6 17           cp      r26, r22
-    1a30:      b7 07           cpc     r27, r23
-    1a32:      10 f0           brcs    .+4             ; 0x1a38 <__udivmodhi4_ep>
-    1a34:      a6 1b           sub     r26, r22
-    1a36:      b7 0b           sbc     r27, r23
-
-00001a38 <__udivmodhi4_ep>:
-    1a38:      88 1f           adc     r24, r24
-    1a3a:      99 1f           adc     r25, r25
-    1a3c:      5a 95           dec     r21
-    1a3e:      a9 f7           brne    .-22            ; 0x1a2a <__udivmodhi4_loop>
-    1a40:      80 95           com     r24
-    1a42:      90 95           com     r25
-    1a44:      bc 01           movw    r22, r24
-    1a46:      cd 01           movw    r24, r26
-    1a48:      08 95           ret
-
-00001a4a <__divmodhi4>:
-    1a4a:      97 fb           bst     r25, 7
-    1a4c:      09 2e           mov     r0, r25
-    1a4e:      07 26           eor     r0, r23
-    1a50:      0a d0           rcall   .+20            ; 0x1a66 <__divmodhi4_neg1>
-    1a52:      77 fd           sbrc    r23, 7
-    1a54:      04 d0           rcall   .+8             ; 0x1a5e <__divmodhi4_neg2>
-    1a56:      e5 df           rcall   .-54            ; 0x1a22 <__udivmodhi4>
-    1a58:      06 d0           rcall   .+12            ; 0x1a66 <__divmodhi4_neg1>
-    1a5a:      00 20           and     r0, r0
-    1a5c:      1a f4           brpl    .+6             ; 0x1a64 <__divmodhi4_exit>
-
-00001a5e <__divmodhi4_neg2>:
-    1a5e:      70 95           com     r23
-    1a60:      61 95           neg     r22
-    1a62:      7f 4f           sbci    r23, 0xFF       ; 255
-
-00001a64 <__divmodhi4_exit>:
-    1a64:      08 95           ret
-
-00001a66 <__divmodhi4_neg1>:
-    1a66:      f6 f7           brtc    .-4             ; 0x1a64 <__divmodhi4_exit>
-    1a68:      90 95           com     r25
-    1a6a:      81 95           neg     r24
-    1a6c:      9f 4f           sbci    r25, 0xFF       ; 255
-    1a6e:      08 95           ret
-
-00001a70 <__udivmodsi4>:
-    1a70:      a1 e2           ldi     r26, 0x21       ; 33
-    1a72:      1a 2e           mov     r1, r26
-    1a74:      aa 1b           sub     r26, r26
-    1a76:      bb 1b           sub     r27, r27
-    1a78:      fd 01           movw    r30, r26
-    1a7a:      0d c0           rjmp    .+26            ; 0x1a96 <__udivmodsi4_ep>
-
-00001a7c <__udivmodsi4_loop>:
-    1a7c:      aa 1f           adc     r26, r26
-    1a7e:      bb 1f           adc     r27, r27
-    1a80:      ee 1f           adc     r30, r30
-    1a82:      ff 1f           adc     r31, r31
-    1a84:      a2 17           cp      r26, r18
-    1a86:      b3 07           cpc     r27, r19
-    1a88:      e4 07           cpc     r30, r20
-    1a8a:      f5 07           cpc     r31, r21
-    1a8c:      20 f0           brcs    .+8             ; 0x1a96 <__udivmodsi4_ep>
-    1a8e:      a2 1b           sub     r26, r18
-    1a90:      b3 0b           sbc     r27, r19
-    1a92:      e4 0b           sbc     r30, r20
-    1a94:      f5 0b           sbc     r31, r21
-
-00001a96 <__udivmodsi4_ep>:
-    1a96:      66 1f           adc     r22, r22
-    1a98:      77 1f           adc     r23, r23
-    1a9a:      88 1f           adc     r24, r24
-    1a9c:      99 1f           adc     r25, r25
-    1a9e:      1a 94           dec     r1
-    1aa0:      69 f7           brne    .-38            ; 0x1a7c <__udivmodsi4_loop>
-    1aa2:      60 95           com     r22
-    1aa4:      70 95           com     r23
-    1aa6:      80 95           com     r24
-    1aa8:      90 95           com     r25
-    1aaa:      9b 01           movw    r18, r22
-    1aac:      ac 01           movw    r20, r24
-    1aae:      bd 01           movw    r22, r26
-    1ab0:      cf 01           movw    r24, r30
-    1ab2:      08 95           ret
-
-00001ab4 <_exit>:
-    1ab4:      f8 94           cli
-
-00001ab6 <__stop_program>:
-    1ab6:      ff cf           rjmp    .-2             ; 0x1ab6 <__stop_program>
+    19fa:      08 95           ret
+
+000019fc <__subsf3>:
+    19fc:      50 58           subi    r21, 0x80       ; 128
+
+000019fe <__addsf3>:
+    19fe:      bb 27           eor     r27, r27
+    1a00:      aa 27           eor     r26, r26
+    1a02:      0e d0           rcall   .+28            ; 0x1a20 <__addsf3x>
+    1a04:      70 c1           rjmp    .+736           ; 0x1ce6 <__fp_round>
+    1a06:      61 d1           rcall   .+706           ; 0x1cca <__fp_pscA>
+    1a08:      30 f0           brcs    .+12            ; 0x1a16 <__addsf3+0x18>
+    1a0a:      66 d1           rcall   .+716           ; 0x1cd8 <__fp_pscB>
+    1a0c:      20 f0           brcs    .+8             ; 0x1a16 <__addsf3+0x18>
+    1a0e:      31 f4           brne    .+12            ; 0x1a1c <__addsf3+0x1e>
+    1a10:      9f 3f           cpi     r25, 0xFF       ; 255
+    1a12:      11 f4           brne    .+4             ; 0x1a18 <__addsf3+0x1a>
+    1a14:      1e f4           brtc    .+6             ; 0x1a1c <__addsf3+0x1e>
+    1a16:      56 c1           rjmp    .+684           ; 0x1cc4 <__fp_nan>
+    1a18:      0e f4           brtc    .+2             ; 0x1a1c <__addsf3+0x1e>
+    1a1a:      e0 95           com     r30
+    1a1c:      e7 fb           bst     r30, 7
+    1a1e:      4c c1           rjmp    .+664           ; 0x1cb8 <__fp_inf>
+
+00001a20 <__addsf3x>:
+    1a20:      e9 2f           mov     r30, r25
+    1a22:      72 d1           rcall   .+740           ; 0x1d08 <__fp_split3>
+    1a24:      80 f3           brcs    .-32            ; 0x1a06 <__addsf3+0x8>
+    1a26:      ba 17           cp      r27, r26
+    1a28:      62 07           cpc     r22, r18
+    1a2a:      73 07           cpc     r23, r19
+    1a2c:      84 07           cpc     r24, r20
+    1a2e:      95 07           cpc     r25, r21
+    1a30:      18 f0           brcs    .+6             ; 0x1a38 <__addsf3x+0x18>
+    1a32:      71 f4           brne    .+28            ; 0x1a50 <__addsf3x+0x30>
+    1a34:      9e f5           brtc    .+102           ; 0x1a9c <__addsf3x+0x7c>
+    1a36:      8a c1           rjmp    .+788           ; 0x1d4c <__fp_zero>
+    1a38:      0e f4           brtc    .+2             ; 0x1a3c <__addsf3x+0x1c>
+    1a3a:      e0 95           com     r30
+    1a3c:      0b 2e           mov     r0, r27
+    1a3e:      ba 2f           mov     r27, r26
+    1a40:      a0 2d           mov     r26, r0
+    1a42:      0b 01           movw    r0, r22
+    1a44:      b9 01           movw    r22, r18
+    1a46:      90 01           movw    r18, r0
+    1a48:      0c 01           movw    r0, r24
+    1a4a:      ca 01           movw    r24, r20
+    1a4c:      a0 01           movw    r20, r0
+    1a4e:      11 24           eor     r1, r1
+    1a50:      ff 27           eor     r31, r31
+    1a52:      59 1b           sub     r21, r25
+    1a54:      99 f0           breq    .+38            ; 0x1a7c <__addsf3x+0x5c>
+    1a56:      59 3f           cpi     r21, 0xF9       ; 249
+    1a58:      50 f4           brcc    .+20            ; 0x1a6e <__addsf3x+0x4e>
+    1a5a:      50 3e           cpi     r21, 0xE0       ; 224
+    1a5c:      68 f1           brcs    .+90            ; 0x1ab8 <__addsf3x+0x98>
+    1a5e:      1a 16           cp      r1, r26
+    1a60:      f0 40           sbci    r31, 0x00       ; 0
+    1a62:      a2 2f           mov     r26, r18
+    1a64:      23 2f           mov     r18, r19
+    1a66:      34 2f           mov     r19, r20
+    1a68:      44 27           eor     r20, r20
+    1a6a:      58 5f           subi    r21, 0xF8       ; 248
+    1a6c:      f3 cf           rjmp    .-26            ; 0x1a54 <__addsf3x+0x34>
+    1a6e:      46 95           lsr     r20
+    1a70:      37 95           ror     r19
+    1a72:      27 95           ror     r18
+    1a74:      a7 95           ror     r26
+    1a76:      f0 40           sbci    r31, 0x00       ; 0
+    1a78:      53 95           inc     r21
+    1a7a:      c9 f7           brne    .-14            ; 0x1a6e <__addsf3x+0x4e>
+    1a7c:      7e f4           brtc    .+30            ; 0x1a9c <__addsf3x+0x7c>
+    1a7e:      1f 16           cp      r1, r31
+    1a80:      ba 0b           sbc     r27, r26
+    1a82:      62 0b           sbc     r22, r18
+    1a84:      73 0b           sbc     r23, r19
+    1a86:      84 0b           sbc     r24, r20
+    1a88:      ba f0           brmi    .+46            ; 0x1ab8 <__addsf3x+0x98>
+    1a8a:      91 50           subi    r25, 0x01       ; 1
+    1a8c:      a1 f0           breq    .+40            ; 0x1ab6 <__addsf3x+0x96>
+    1a8e:      ff 0f           add     r31, r31
+    1a90:      bb 1f           adc     r27, r27
+    1a92:      66 1f           adc     r22, r22
+    1a94:      77 1f           adc     r23, r23
+    1a96:      88 1f           adc     r24, r24
+    1a98:      c2 f7           brpl    .-16            ; 0x1a8a <__addsf3x+0x6a>
+    1a9a:      0e c0           rjmp    .+28            ; 0x1ab8 <__addsf3x+0x98>
+    1a9c:      ba 0f           add     r27, r26
+    1a9e:      62 1f           adc     r22, r18
+    1aa0:      73 1f           adc     r23, r19
+    1aa2:      84 1f           adc     r24, r20
+    1aa4:      48 f4           brcc    .+18            ; 0x1ab8 <__addsf3x+0x98>
+    1aa6:      87 95           ror     r24
+    1aa8:      77 95           ror     r23
+    1aaa:      67 95           ror     r22
+    1aac:      b7 95           ror     r27
+    1aae:      f7 95           ror     r31
+    1ab0:      9e 3f           cpi     r25, 0xFE       ; 254
+    1ab2:      08 f0           brcs    .+2             ; 0x1ab6 <__addsf3x+0x96>
+    1ab4:      b3 cf           rjmp    .-154           ; 0x1a1c <__addsf3+0x1e>
+    1ab6:      93 95           inc     r25
+    1ab8:      88 0f           add     r24, r24
+    1aba:      08 f0           brcs    .+2             ; 0x1abe <__addsf3x+0x9e>
+    1abc:      99 27           eor     r25, r25
+    1abe:      ee 0f           add     r30, r30
+    1ac0:      97 95           ror     r25
+    1ac2:      87 95           ror     r24
+    1ac4:      08 95           ret
+
+00001ac6 <__cmpsf2>:
+    1ac6:      d4 d0           rcall   .+424           ; 0x1c70 <__fp_cmp>
+    1ac8:      08 f4           brcc    .+2             ; 0x1acc <__cmpsf2+0x6>
+    1aca:      81 e0           ldi     r24, 0x01       ; 1
+    1acc:      08 95           ret
+
+00001ace <__divsf3>:
+    1ace:      0c d0           rcall   .+24            ; 0x1ae8 <__divsf3x>
+    1ad0:      0a c1           rjmp    .+532           ; 0x1ce6 <__fp_round>
+    1ad2:      02 d1           rcall   .+516           ; 0x1cd8 <__fp_pscB>
+    1ad4:      40 f0           brcs    .+16            ; 0x1ae6 <__divsf3+0x18>
+    1ad6:      f9 d0           rcall   .+498           ; 0x1cca <__fp_pscA>
+    1ad8:      30 f0           brcs    .+12            ; 0x1ae6 <__divsf3+0x18>
+    1ada:      21 f4           brne    .+8             ; 0x1ae4 <__divsf3+0x16>
+    1adc:      5f 3f           cpi     r21, 0xFF       ; 255
+    1ade:      19 f0           breq    .+6             ; 0x1ae6 <__divsf3+0x18>
+    1ae0:      eb c0           rjmp    .+470           ; 0x1cb8 <__fp_inf>
+    1ae2:      51 11           cpse    r21, r1
+    1ae4:      34 c1           rjmp    .+616           ; 0x1d4e <__fp_szero>
+    1ae6:      ee c0           rjmp    .+476           ; 0x1cc4 <__fp_nan>
+
+00001ae8 <__divsf3x>:
+    1ae8:      0f d1           rcall   .+542           ; 0x1d08 <__fp_split3>
+    1aea:      98 f3           brcs    .-26            ; 0x1ad2 <__divsf3+0x4>
+
+00001aec <__divsf3_pse>:
+    1aec:      99 23           and     r25, r25
+    1aee:      c9 f3           breq    .-14            ; 0x1ae2 <__divsf3+0x14>
+    1af0:      55 23           and     r21, r21
+    1af2:      b1 f3           breq    .-20            ; 0x1ae0 <__divsf3+0x12>
+    1af4:      95 1b           sub     r25, r21
+    1af6:      55 0b           sbc     r21, r21
+    1af8:      bb 27           eor     r27, r27
+    1afa:      aa 27           eor     r26, r26
+    1afc:      62 17           cp      r22, r18
+    1afe:      73 07           cpc     r23, r19
+    1b00:      84 07           cpc     r24, r20
+    1b02:      38 f0           brcs    .+14            ; 0x1b12 <__divsf3_pse+0x26>
+    1b04:      9f 5f           subi    r25, 0xFF       ; 255
+    1b06:      5f 4f           sbci    r21, 0xFF       ; 255
+    1b08:      22 0f           add     r18, r18
+    1b0a:      33 1f           adc     r19, r19
+    1b0c:      44 1f           adc     r20, r20
+    1b0e:      aa 1f           adc     r26, r26
+    1b10:      a9 f3           breq    .-22            ; 0x1afc <__divsf3_pse+0x10>
+    1b12:      33 d0           rcall   .+102           ; 0x1b7a <__divsf3_pse+0x8e>
+    1b14:      0e 2e           mov     r0, r30
+    1b16:      3a f0           brmi    .+14            ; 0x1b26 <__divsf3_pse+0x3a>
+    1b18:      e0 e8           ldi     r30, 0x80       ; 128
+    1b1a:      30 d0           rcall   .+96            ; 0x1b7c <__divsf3_pse+0x90>
+    1b1c:      91 50           subi    r25, 0x01       ; 1
+    1b1e:      50 40           sbci    r21, 0x00       ; 0
+    1b20:      e6 95           lsr     r30
+    1b22:      00 1c           adc     r0, r0
+    1b24:      ca f7           brpl    .-14            ; 0x1b18 <__divsf3_pse+0x2c>
+    1b26:      29 d0           rcall   .+82            ; 0x1b7a <__divsf3_pse+0x8e>
+    1b28:      fe 2f           mov     r31, r30
+    1b2a:      27 d0           rcall   .+78            ; 0x1b7a <__divsf3_pse+0x8e>
+    1b2c:      66 0f           add     r22, r22
+    1b2e:      77 1f           adc     r23, r23
+    1b30:      88 1f           adc     r24, r24
+    1b32:      bb 1f           adc     r27, r27
+    1b34:      26 17           cp      r18, r22
+    1b36:      37 07           cpc     r19, r23
+    1b38:      48 07           cpc     r20, r24
+    1b3a:      ab 07           cpc     r26, r27
+    1b3c:      b0 e8           ldi     r27, 0x80       ; 128
+    1b3e:      09 f0           breq    .+2             ; 0x1b42 <__divsf3_pse+0x56>
+    1b40:      bb 0b           sbc     r27, r27
+    1b42:      80 2d           mov     r24, r0
+    1b44:      bf 01           movw    r22, r30
+    1b46:      ff 27           eor     r31, r31
+    1b48:      93 58           subi    r25, 0x83       ; 131
+    1b4a:      5f 4f           sbci    r21, 0xFF       ; 255
+    1b4c:      2a f0           brmi    .+10            ; 0x1b58 <__divsf3_pse+0x6c>
+    1b4e:      9e 3f           cpi     r25, 0xFE       ; 254
+    1b50:      51 05           cpc     r21, r1
+    1b52:      68 f0           brcs    .+26            ; 0x1b6e <__divsf3_pse+0x82>
+    1b54:      b1 c0           rjmp    .+354           ; 0x1cb8 <__fp_inf>
+    1b56:      fb c0           rjmp    .+502           ; 0x1d4e <__fp_szero>
+    1b58:      5f 3f           cpi     r21, 0xFF       ; 255
+    1b5a:      ec f3           brlt    .-6             ; 0x1b56 <__divsf3_pse+0x6a>
+    1b5c:      98 3e           cpi     r25, 0xE8       ; 232
+    1b5e:      dc f3           brlt    .-10            ; 0x1b56 <__divsf3_pse+0x6a>
+    1b60:      86 95           lsr     r24
+    1b62:      77 95           ror     r23
+    1b64:      67 95           ror     r22
+    1b66:      b7 95           ror     r27
+    1b68:      f7 95           ror     r31
+    1b6a:      9f 5f           subi    r25, 0xFF       ; 255
+    1b6c:      c9 f7           brne    .-14            ; 0x1b60 <__divsf3_pse+0x74>
+    1b6e:      88 0f           add     r24, r24
+    1b70:      91 1d           adc     r25, r1
+    1b72:      96 95           lsr     r25
+    1b74:      87 95           ror     r24
+    1b76:      97 f9           bld     r25, 7
+    1b78:      08 95           ret
+    1b7a:      e1 e0           ldi     r30, 0x01       ; 1
+    1b7c:      66 0f           add     r22, r22
+    1b7e:      77 1f           adc     r23, r23
+    1b80:      88 1f           adc     r24, r24
+    1b82:      bb 1f           adc     r27, r27
+    1b84:      62 17           cp      r22, r18
+    1b86:      73 07           cpc     r23, r19
+    1b88:      84 07           cpc     r24, r20
+    1b8a:      ba 07           cpc     r27, r26
+    1b8c:      20 f0           brcs    .+8             ; 0x1b96 <__divsf3_pse+0xaa>
+    1b8e:      62 1b           sub     r22, r18
+    1b90:      73 0b           sbc     r23, r19
+    1b92:      84 0b           sbc     r24, r20
+    1b94:      ba 0b           sbc     r27, r26
+    1b96:      ee 1f           adc     r30, r30
+    1b98:      88 f7           brcc    .-30            ; 0x1b7c <__divsf3_pse+0x90>
+    1b9a:      e0 95           com     r30
+    1b9c:      08 95           ret
+
+00001b9e <__fixunssfsi>:
+    1b9e:      bc d0           rcall   .+376           ; 0x1d18 <__fp_splitA>
+    1ba0:      88 f0           brcs    .+34            ; 0x1bc4 <__fixunssfsi+0x26>
+    1ba2:      9f 57           subi    r25, 0x7F       ; 127
+    1ba4:      90 f0           brcs    .+36            ; 0x1bca <__fixunssfsi+0x2c>
+    1ba6:      b9 2f           mov     r27, r25
+    1ba8:      99 27           eor     r25, r25
+    1baa:      b7 51           subi    r27, 0x17       ; 23
+    1bac:      a0 f0           brcs    .+40            ; 0x1bd6 <__fixunssfsi+0x38>
+    1bae:      d1 f0           breq    .+52            ; 0x1be4 <__fixunssfsi+0x46>
+    1bb0:      66 0f           add     r22, r22
+    1bb2:      77 1f           adc     r23, r23
+    1bb4:      88 1f           adc     r24, r24
+    1bb6:      99 1f           adc     r25, r25
+    1bb8:      1a f0           brmi    .+6             ; 0x1bc0 <__fixunssfsi+0x22>
+    1bba:      ba 95           dec     r27
+    1bbc:      c9 f7           brne    .-14            ; 0x1bb0 <__fixunssfsi+0x12>
+    1bbe:      12 c0           rjmp    .+36            ; 0x1be4 <__fixunssfsi+0x46>
+    1bc0:      b1 30           cpi     r27, 0x01       ; 1
+    1bc2:      81 f0           breq    .+32            ; 0x1be4 <__fixunssfsi+0x46>
+    1bc4:      c3 d0           rcall   .+390           ; 0x1d4c <__fp_zero>
+    1bc6:      b1 e0           ldi     r27, 0x01       ; 1
+    1bc8:      08 95           ret
+    1bca:      c0 c0           rjmp    .+384           ; 0x1d4c <__fp_zero>
+    1bcc:      67 2f           mov     r22, r23
+    1bce:      78 2f           mov     r23, r24
+    1bd0:      88 27           eor     r24, r24
+    1bd2:      b8 5f           subi    r27, 0xF8       ; 248
+    1bd4:      39 f0           breq    .+14            ; 0x1be4 <__fixunssfsi+0x46>
+    1bd6:      b9 3f           cpi     r27, 0xF9       ; 249
+    1bd8:      cc f3           brlt    .-14            ; 0x1bcc <__fixunssfsi+0x2e>
+    1bda:      86 95           lsr     r24
+    1bdc:      77 95           ror     r23
+    1bde:      67 95           ror     r22
+    1be0:      b3 95           inc     r27
+    1be2:      d9 f7           brne    .-10            ; 0x1bda <__fixunssfsi+0x3c>
+    1be4:      3e f4           brtc    .+14            ; 0x1bf4 <__fixunssfsi+0x56>
+    1be6:      90 95           com     r25
+    1be8:      80 95           com     r24
+    1bea:      70 95           com     r23
+    1bec:      61 95           neg     r22
+    1bee:      7f 4f           sbci    r23, 0xFF       ; 255
+    1bf0:      8f 4f           sbci    r24, 0xFF       ; 255
+    1bf2:      9f 4f           sbci    r25, 0xFF       ; 255
+    1bf4:      08 95           ret
+
+00001bf6 <__floatunsisf>:
+    1bf6:      e8 94           clt
+    1bf8:      09 c0           rjmp    .+18            ; 0x1c0c <__floatsisf+0x12>
+
+00001bfa <__floatsisf>:
+    1bfa:      97 fb           bst     r25, 7
+    1bfc:      3e f4           brtc    .+14            ; 0x1c0c <__floatsisf+0x12>
+    1bfe:      90 95           com     r25
+    1c00:      80 95           com     r24
+    1c02:      70 95           com     r23
+    1c04:      61 95           neg     r22
+    1c06:      7f 4f           sbci    r23, 0xFF       ; 255
+    1c08:      8f 4f           sbci    r24, 0xFF       ; 255
+    1c0a:      9f 4f           sbci    r25, 0xFF       ; 255
+    1c0c:      99 23           and     r25, r25
+    1c0e:      a9 f0           breq    .+42            ; 0x1c3a <__floatsisf+0x40>
+    1c10:      f9 2f           mov     r31, r25
+    1c12:      96 e9           ldi     r25, 0x96       ; 150
+    1c14:      bb 27           eor     r27, r27
+    1c16:      93 95           inc     r25
+    1c18:      f6 95           lsr     r31
+    1c1a:      87 95           ror     r24
+    1c1c:      77 95           ror     r23
+    1c1e:      67 95           ror     r22
+    1c20:      b7 95           ror     r27
+    1c22:      f1 11           cpse    r31, r1
+    1c24:      f8 cf           rjmp    .-16            ; 0x1c16 <__floatsisf+0x1c>
+    1c26:      fa f4           brpl    .+62            ; 0x1c66 <__floatsisf+0x6c>
+    1c28:      bb 0f           add     r27, r27
+    1c2a:      11 f4           brne    .+4             ; 0x1c30 <__floatsisf+0x36>
+    1c2c:      60 ff           sbrs    r22, 0
+    1c2e:      1b c0           rjmp    .+54            ; 0x1c66 <__floatsisf+0x6c>
+    1c30:      6f 5f           subi    r22, 0xFF       ; 255
+    1c32:      7f 4f           sbci    r23, 0xFF       ; 255
+    1c34:      8f 4f           sbci    r24, 0xFF       ; 255
+    1c36:      9f 4f           sbci    r25, 0xFF       ; 255
+    1c38:      16 c0           rjmp    .+44            ; 0x1c66 <__floatsisf+0x6c>
+    1c3a:      88 23           and     r24, r24
+    1c3c:      11 f0           breq    .+4             ; 0x1c42 <__floatsisf+0x48>
+    1c3e:      96 e9           ldi     r25, 0x96       ; 150
+    1c40:      11 c0           rjmp    .+34            ; 0x1c64 <__floatsisf+0x6a>
+    1c42:      77 23           and     r23, r23
+    1c44:      21 f0           breq    .+8             ; 0x1c4e <__floatsisf+0x54>
+    1c46:      9e e8           ldi     r25, 0x8E       ; 142
+    1c48:      87 2f           mov     r24, r23
+    1c4a:      76 2f           mov     r23, r22
+    1c4c:      05 c0           rjmp    .+10            ; 0x1c58 <__floatsisf+0x5e>
+    1c4e:      66 23           and     r22, r22
+    1c50:      71 f0           breq    .+28            ; 0x1c6e <__floatsisf+0x74>
+    1c52:      96 e8           ldi     r25, 0x86       ; 134
+    1c54:      86 2f           mov     r24, r22
+    1c56:      70 e0           ldi     r23, 0x00       ; 0
+    1c58:      60 e0           ldi     r22, 0x00       ; 0
+    1c5a:      2a f0           brmi    .+10            ; 0x1c66 <__floatsisf+0x6c>
+    1c5c:      9a 95           dec     r25
+    1c5e:      66 0f           add     r22, r22
+    1c60:      77 1f           adc     r23, r23
+    1c62:      88 1f           adc     r24, r24
+    1c64:      da f7           brpl    .-10            ; 0x1c5c <__floatsisf+0x62>
+    1c66:      88 0f           add     r24, r24
+    1c68:      96 95           lsr     r25
+    1c6a:      87 95           ror     r24
+    1c6c:      97 f9           bld     r25, 7
+    1c6e:      08 95           ret
+
+00001c70 <__fp_cmp>:
+    1c70:      99 0f           add     r25, r25
+    1c72:      00 08           sbc     r0, r0
+    1c74:      55 0f           add     r21, r21
+    1c76:      aa 0b           sbc     r26, r26
+    1c78:      e0 e8           ldi     r30, 0x80       ; 128
+    1c7a:      fe ef           ldi     r31, 0xFE       ; 254
+    1c7c:      16 16           cp      r1, r22
+    1c7e:      17 06           cpc     r1, r23
+    1c80:      e8 07           cpc     r30, r24
+    1c82:      f9 07           cpc     r31, r25
+    1c84:      c0 f0           brcs    .+48            ; 0x1cb6 <__fp_cmp+0x46>
+    1c86:      12 16           cp      r1, r18
+    1c88:      13 06           cpc     r1, r19
+    1c8a:      e4 07           cpc     r30, r20
+    1c8c:      f5 07           cpc     r31, r21
+    1c8e:      98 f0           brcs    .+38            ; 0x1cb6 <__fp_cmp+0x46>
+    1c90:      62 1b           sub     r22, r18
+    1c92:      73 0b           sbc     r23, r19
+    1c94:      84 0b           sbc     r24, r20
+    1c96:      95 0b           sbc     r25, r21
+    1c98:      39 f4           brne    .+14            ; 0x1ca8 <__fp_cmp+0x38>
+    1c9a:      0a 26           eor     r0, r26
+    1c9c:      61 f0           breq    .+24            ; 0x1cb6 <__fp_cmp+0x46>
+    1c9e:      23 2b           or      r18, r19
+    1ca0:      24 2b           or      r18, r20
+    1ca2:      25 2b           or      r18, r21
+    1ca4:      21 f4           brne    .+8             ; 0x1cae <__fp_cmp+0x3e>
+    1ca6:      08 95           ret
+    1ca8:      0a 26           eor     r0, r26
+    1caa:      09 f4           brne    .+2             ; 0x1cae <__fp_cmp+0x3e>
+    1cac:      a1 40           sbci    r26, 0x01       ; 1
+    1cae:      a6 95           lsr     r26
+    1cb0:      8f ef           ldi     r24, 0xFF       ; 255
+    1cb2:      81 1d           adc     r24, r1
+    1cb4:      81 1d           adc     r24, r1
+    1cb6:      08 95           ret
+
+00001cb8 <__fp_inf>:
+    1cb8:      97 f9           bld     r25, 7
+    1cba:      9f 67           ori     r25, 0x7F       ; 127
+    1cbc:      80 e8           ldi     r24, 0x80       ; 128
+    1cbe:      70 e0           ldi     r23, 0x00       ; 0
+    1cc0:      60 e0           ldi     r22, 0x00       ; 0
+    1cc2:      08 95           ret
+
+00001cc4 <__fp_nan>:
+    1cc4:      9f ef           ldi     r25, 0xFF       ; 255
+    1cc6:      80 ec           ldi     r24, 0xC0       ; 192
+    1cc8:      08 95           ret
+
+00001cca <__fp_pscA>:
+    1cca:      00 24           eor     r0, r0
+    1ccc:      0a 94           dec     r0
+    1cce:      16 16           cp      r1, r22
+    1cd0:      17 06           cpc     r1, r23
+    1cd2:      18 06           cpc     r1, r24
+    1cd4:      09 06           cpc     r0, r25
+    1cd6:      08 95           ret
+
+00001cd8 <__fp_pscB>:
+    1cd8:      00 24           eor     r0, r0
+    1cda:      0a 94           dec     r0
+    1cdc:      12 16           cp      r1, r18
+    1cde:      13 06           cpc     r1, r19
+    1ce0:      14 06           cpc     r1, r20
+    1ce2:      05 06           cpc     r0, r21
+    1ce4:      08 95           ret
+
+00001ce6 <__fp_round>:
+    1ce6:      09 2e           mov     r0, r25
+    1ce8:      03 94           inc     r0
+    1cea:      00 0c           add     r0, r0
+    1cec:      11 f4           brne    .+4             ; 0x1cf2 <__fp_round+0xc>
+    1cee:      88 23           and     r24, r24
+    1cf0:      52 f0           brmi    .+20            ; 0x1d06 <__fp_round+0x20>
+    1cf2:      bb 0f           add     r27, r27
+    1cf4:      40 f4           brcc    .+16            ; 0x1d06 <__fp_round+0x20>
+    1cf6:      bf 2b           or      r27, r31
+    1cf8:      11 f4           brne    .+4             ; 0x1cfe <__fp_round+0x18>
+    1cfa:      60 ff           sbrs    r22, 0
+    1cfc:      04 c0           rjmp    .+8             ; 0x1d06 <__fp_round+0x20>
+    1cfe:      6f 5f           subi    r22, 0xFF       ; 255
+    1d00:      7f 4f           sbci    r23, 0xFF       ; 255
+    1d02:      8f 4f           sbci    r24, 0xFF       ; 255
+    1d04:      9f 4f           sbci    r25, 0xFF       ; 255
+    1d06:      08 95           ret
+
+00001d08 <__fp_split3>:
+    1d08:      57 fd           sbrc    r21, 7
+    1d0a:      90 58           subi    r25, 0x80       ; 128
+    1d0c:      44 0f           add     r20, r20
+    1d0e:      55 1f           adc     r21, r21
+    1d10:      59 f0           breq    .+22            ; 0x1d28 <__fp_splitA+0x10>
+    1d12:      5f 3f           cpi     r21, 0xFF       ; 255
+    1d14:      71 f0           breq    .+28            ; 0x1d32 <__fp_splitA+0x1a>
+    1d16:      47 95           ror     r20
+
+00001d18 <__fp_splitA>:
+    1d18:      88 0f           add     r24, r24
+    1d1a:      97 fb           bst     r25, 7
+    1d1c:      99 1f           adc     r25, r25
+    1d1e:      61 f0           breq    .+24            ; 0x1d38 <__fp_splitA+0x20>
+    1d20:      9f 3f           cpi     r25, 0xFF       ; 255
+    1d22:      79 f0           breq    .+30            ; 0x1d42 <__fp_splitA+0x2a>
+    1d24:      87 95           ror     r24
+    1d26:      08 95           ret
+    1d28:      12 16           cp      r1, r18
+    1d2a:      13 06           cpc     r1, r19
+    1d2c:      14 06           cpc     r1, r20
+    1d2e:      55 1f           adc     r21, r21
+    1d30:      f2 cf           rjmp    .-28            ; 0x1d16 <__fp_split3+0xe>
+    1d32:      46 95           lsr     r20
+    1d34:      f1 df           rcall   .-30            ; 0x1d18 <__fp_splitA>
+    1d36:      08 c0           rjmp    .+16            ; 0x1d48 <__fp_splitA+0x30>
+    1d38:      16 16           cp      r1, r22
+    1d3a:      17 06           cpc     r1, r23
+    1d3c:      18 06           cpc     r1, r24
+    1d3e:      99 1f           adc     r25, r25
+    1d40:      f1 cf           rjmp    .-30            ; 0x1d24 <__fp_splitA+0xc>
+    1d42:      86 95           lsr     r24
+    1d44:      71 05           cpc     r23, r1
+    1d46:      61 05           cpc     r22, r1
+    1d48:      08 94           sec
+    1d4a:      08 95           ret
+
+00001d4c <__fp_zero>:
+    1d4c:      e8 94           clt
+
+00001d4e <__fp_szero>:
+    1d4e:      bb 27           eor     r27, r27
+    1d50:      66 27           eor     r22, r22
+    1d52:      77 27           eor     r23, r23
+    1d54:      cb 01           movw    r24, r22
+    1d56:      97 f9           bld     r25, 7
+    1d58:      08 95           ret
+
+00001d5a <__gesf2>:
+    1d5a:      8a df           rcall   .-236           ; 0x1c70 <__fp_cmp>
+    1d5c:      08 f4           brcc    .+2             ; 0x1d60 <__gesf2+0x6>
+    1d5e:      8f ef           ldi     r24, 0xFF       ; 255
+    1d60:      08 95           ret
+
+00001d62 <__mulhi3>:
+    1d62:      55 27           eor     r21, r21
+    1d64:      00 24           eor     r0, r0
+
+00001d66 <__mulhi3_loop>:
+    1d66:      80 ff           sbrs    r24, 0
+    1d68:      02 c0           rjmp    .+4             ; 0x1d6e <__mulhi3_skip1>
+    1d6a:      06 0e           add     r0, r22
+    1d6c:      57 1f           adc     r21, r23
+
+00001d6e <__mulhi3_skip1>:
+    1d6e:      66 0f           add     r22, r22
+    1d70:      77 1f           adc     r23, r23
+    1d72:      61 15           cp      r22, r1
+    1d74:      71 05           cpc     r23, r1
+    1d76:      21 f0           breq    .+8             ; 0x1d80 <__mulhi3_exit>
+    1d78:      96 95           lsr     r25
+    1d7a:      87 95           ror     r24
+    1d7c:      00 97           sbiw    r24, 0x00       ; 0
+    1d7e:      99 f7           brne    .-26            ; 0x1d66 <__mulhi3_loop>
+
+00001d80 <__mulhi3_exit>:
+    1d80:      95 2f           mov     r25, r21
+    1d82:      80 2d           mov     r24, r0
+    1d84:      08 95           ret
+
+00001d86 <__udivmodhi4>:
+    1d86:      aa 1b           sub     r26, r26
+    1d88:      bb 1b           sub     r27, r27
+    1d8a:      51 e1           ldi     r21, 0x11       ; 17
+    1d8c:      07 c0           rjmp    .+14            ; 0x1d9c <__udivmodhi4_ep>
+
+00001d8e <__udivmodhi4_loop>:
+    1d8e:      aa 1f           adc     r26, r26
+    1d90:      bb 1f           adc     r27, r27
+    1d92:      a6 17           cp      r26, r22
+    1d94:      b7 07           cpc     r27, r23
+    1d96:      10 f0           brcs    .+4             ; 0x1d9c <__udivmodhi4_ep>
+    1d98:      a6 1b           sub     r26, r22
+    1d9a:      b7 0b           sbc     r27, r23
+
+00001d9c <__udivmodhi4_ep>:
+    1d9c:      88 1f           adc     r24, r24
+    1d9e:      99 1f           adc     r25, r25
+    1da0:      5a 95           dec     r21
+    1da2:      a9 f7           brne    .-22            ; 0x1d8e <__udivmodhi4_loop>
+    1da4:      80 95           com     r24
+    1da6:      90 95           com     r25
+    1da8:      bc 01           movw    r22, r24
+    1daa:      cd 01           movw    r24, r26
+    1dac:      08 95           ret
+
+00001dae <__divmodhi4>:
+    1dae:      97 fb           bst     r25, 7
+    1db0:      09 2e           mov     r0, r25
+    1db2:      07 26           eor     r0, r23
+    1db4:      0a d0           rcall   .+20            ; 0x1dca <__divmodhi4_neg1>
+    1db6:      77 fd           sbrc    r23, 7
+    1db8:      04 d0           rcall   .+8             ; 0x1dc2 <__divmodhi4_neg2>
+    1dba:      e5 df           rcall   .-54            ; 0x1d86 <__udivmodhi4>
+    1dbc:      06 d0           rcall   .+12            ; 0x1dca <__divmodhi4_neg1>
+    1dbe:      00 20           and     r0, r0
+    1dc0:      1a f4           brpl    .+6             ; 0x1dc8 <__divmodhi4_exit>
+
+00001dc2 <__divmodhi4_neg2>:
+    1dc2:      70 95           com     r23
+    1dc4:      61 95           neg     r22
+    1dc6:      7f 4f           sbci    r23, 0xFF       ; 255
+
+00001dc8 <__divmodhi4_exit>:
+    1dc8:      08 95           ret
+
+00001dca <__divmodhi4_neg1>:
+    1dca:      f6 f7           brtc    .-4             ; 0x1dc8 <__divmodhi4_exit>
+    1dcc:      90 95           com     r25
+    1dce:      81 95           neg     r24
+    1dd0:      9f 4f           sbci    r25, 0xFF       ; 255
+    1dd2:      08 95           ret
+
+00001dd4 <__udivmodsi4>:
+    1dd4:      a1 e2           ldi     r26, 0x21       ; 33
+    1dd6:      1a 2e           mov     r1, r26
+    1dd8:      aa 1b           sub     r26, r26
+    1dda:      bb 1b           sub     r27, r27
+    1ddc:      fd 01           movw    r30, r26
+    1dde:      0d c0           rjmp    .+26            ; 0x1dfa <__udivmodsi4_ep>
+
+00001de0 <__udivmodsi4_loop>:
+    1de0:      aa 1f           adc     r26, r26
+    1de2:      bb 1f           adc     r27, r27
+    1de4:      ee 1f           adc     r30, r30
+    1de6:      ff 1f           adc     r31, r31
+    1de8:      a2 17           cp      r26, r18
+    1dea:      b3 07           cpc     r27, r19
+    1dec:      e4 07           cpc     r30, r20
+    1dee:      f5 07           cpc     r31, r21
+    1df0:      20 f0           brcs    .+8             ; 0x1dfa <__udivmodsi4_ep>
+    1df2:      a2 1b           sub     r26, r18
+    1df4:      b3 0b           sbc     r27, r19
+    1df6:      e4 0b           sbc     r30, r20
+    1df8:      f5 0b           sbc     r31, r21
+
+00001dfa <__udivmodsi4_ep>:
+    1dfa:      66 1f           adc     r22, r22
+    1dfc:      77 1f           adc     r23, r23
+    1dfe:      88 1f           adc     r24, r24
+    1e00:      99 1f           adc     r25, r25
+    1e02:      1a 94           dec     r1
+    1e04:      69 f7           brne    .-38            ; 0x1de0 <__udivmodsi4_loop>
+    1e06:      60 95           com     r22
+    1e08:      70 95           com     r23
+    1e0a:      80 95           com     r24
+    1e0c:      90 95           com     r25
+    1e0e:      9b 01           movw    r18, r22
+    1e10:      ac 01           movw    r20, r24
+    1e12:      bd 01           movw    r22, r26
+    1e14:      cf 01           movw    r24, r30
+    1e16:      08 95           ret
+
+00001e18 <atoi>:
+    1e18:      fc 01           movw    r30, r24
+    1e1a:      88 27           eor     r24, r24
+    1e1c:      99 27           eor     r25, r25
+    1e1e:      e8 94           clt
+    1e20:      21 91           ld      r18, Z+
+    1e22:      20 32           cpi     r18, 0x20       ; 32
+    1e24:      e9 f3           breq    .-6             ; 0x1e20 <atoi+0x8>
+    1e26:      29 30           cpi     r18, 0x09       ; 9
+    1e28:      10 f0           brcs    .+4             ; 0x1e2e <atoi+0x16>
+    1e2a:      2e 30           cpi     r18, 0x0E       ; 14
+    1e2c:      c8 f3           brcs    .-14            ; 0x1e20 <atoi+0x8>
+    1e2e:      2b 32           cpi     r18, 0x2B       ; 43
+    1e30:      39 f0           breq    .+14            ; 0x1e40 <atoi+0x28>
+    1e32:      2d 32           cpi     r18, 0x2D       ; 45
+    1e34:      31 f4           brne    .+12            ; 0x1e42 <atoi+0x2a>
+    1e36:      68 94           set
+    1e38:      03 c0           rjmp    .+6             ; 0x1e40 <atoi+0x28>
+    1e3a:      1a d0           rcall   .+52            ; 0x1e70 <__mulhi_const_10>
+    1e3c:      82 0f           add     r24, r18
+    1e3e:      91 1d           adc     r25, r1
+    1e40:      21 91           ld      r18, Z+
+    1e42:      20 53           subi    r18, 0x30       ; 48
+    1e44:      2a 30           cpi     r18, 0x0A       ; 10
+    1e46:      c8 f3           brcs    .-14            ; 0x1e3a <atoi+0x22>
+    1e48:      1e f4           brtc    .+6             ; 0x1e50 <atoi+0x38>
+    1e4a:      90 95           com     r25
+    1e4c:      81 95           neg     r24
+    1e4e:      9f 4f           sbci    r25, 0xFF       ; 255
+    1e50:      08 95           ret
+
+00001e52 <strncpy>:
+    1e52:      fb 01           movw    r30, r22
+    1e54:      dc 01           movw    r26, r24
+    1e56:      41 50           subi    r20, 0x01       ; 1
+    1e58:      50 40           sbci    r21, 0x00       ; 0
+    1e5a:      48 f0           brcs    .+18            ; 0x1e6e <strncpy+0x1c>
+    1e5c:      01 90           ld      r0, Z+
+    1e5e:      0d 92           st      X+, r0
+    1e60:      00 20           and     r0, r0
+    1e62:      c9 f7           brne    .-14            ; 0x1e56 <strncpy+0x4>
+    1e64:      01 c0           rjmp    .+2             ; 0x1e68 <strncpy+0x16>
+    1e66:      1d 92           st      X+, r1
+    1e68:      41 50           subi    r20, 0x01       ; 1
+    1e6a:      50 40           sbci    r21, 0x00       ; 0
+    1e6c:      e0 f7           brcc    .-8             ; 0x1e66 <strncpy+0x14>
+    1e6e:      08 95           ret
+
+00001e70 <__mulhi_const_10>:
+    1e70:      bc 01           movw    r22, r24
+    1e72:      88 0f           add     r24, r24
+    1e74:      99 1f           adc     r25, r25
+    1e76:      88 0f           add     r24, r24
+    1e78:      99 1f           adc     r25, r25
+    1e7a:      86 0f           add     r24, r22
+    1e7c:      97 1f           adc     r25, r23
+    1e7e:      88 0f           add     r24, r24
+    1e80:      99 1f           adc     r25, r25
+    1e82:      08 95           ret
+
+00001e84 <_exit>:
+    1e84:      f8 94           cli
+
+00001e86 <__stop_program>:
+    1e86:      ff cf           rjmp    .-2             ; 0x1e86 <__stop_program>
index 846a971c1657454511f4f0d02635c739636f9f9e..48e5678503d36ac6680d9349e4783b7979a1dc8e 100644 (file)
@@ -33,7 +33,9 @@ Archive member included because of file (symbol)
 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libm.a(gesf2.o)
                               USBtoSerial.o (__gtsf2)
 /usr/lib/gcc/avr/4.5.3/avr35/libgcc.a(_mulhi3.o)
-                              ../../LUFA/Drivers/USB/Class/Common/HIDParser.o (__mulhi3)
+                              USBtoSerial.o (__mulhi3)
+/usr/lib/gcc/avr/4.5.3/avr35/libgcc.a(_mulsi3.o)
+                              USBtoSerial.o (__mulsi3)
 /usr/lib/gcc/avr/4.5.3/avr35/libgcc.a(_udivmodhi4.o)
                               USBtoSerial.o (__udivmodhi4)
 /usr/lib/gcc/avr/4.5.3/avr35/libgcc.a(_divmodhi4.o)
@@ -46,6 +48,8 @@ Archive member included because of file (symbol)
                               USBtoSerial.o (__do_copy_data)
 /usr/lib/gcc/avr/4.5.3/avr35/libgcc.a(_clear_bss.o)
                               USBtoSerial.o (__do_clear_bss)
+/usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libc.a(atoi.o)
+                              USBtoSerial.o (atoi)
 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libc.a(memcpy_P.o)
                               ../../LUFA/Drivers/USB/Class/Device/RNDISClassDevice.o (memcpy_P)
 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libc.a(memcmp.o)
@@ -54,6 +58,10 @@ Archive member included because of file (symbol)
                               ../../LUFA/Drivers/USB/Class/Device/HIDClassDevice.o (memcpy)
 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libc.a(memset.o)
                               ../../LUFA/Drivers/USB/Class/Device/HIDClassDevice.o (memset)
+/usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libc.a(strncpy.o)
+                              USBtoSerial.o (strncpy)
+/usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libc.a(mul10.o)
+                              /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libc.a(atoi.o) (__mulhi_const_10)
 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libc.a(eerd_byte_atmega32u2.o)
                               ../../LUFA/Drivers/USB/Core/AVR8/EndpointStream_AVR8.o (__eerd_byte_m32u2)
 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libc.a(eeupd_byte_atmega32u2.o)
@@ -66,6 +74,7 @@ adb_werte           0x9               USBtoSerial.o
 USB_IsInitialized   0x1               ../../LUFA/Drivers/USB/Core/USBTask.o
 USB_Device_ConfigurationNumber
                     0x1               ../../LUFA/Drivers/USB/Core/DeviceStandardReq.o
+stringbuffer        0x10              USBtoSerial.o
 USB_Device_CurrentlySelfPowered
                     0x1               ../../LUFA/Drivers/USB/Core/DeviceStandardReq.o
 USB_ControlRequest  0x8               ../../LUFA/Drivers/USB/Core/USBTask.o
@@ -79,6 +88,8 @@ Discarded input sections
  .data          0x0000000000000000        0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/crtm32u2.o
  .bss           0x0000000000000000        0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/crtm32u2.o
  .text          0x0000000000000000        0x0 USBtoSerial.o
+ .text.touchpad_set_abs_mode
+                0x0000000000000000       0x42 USBtoSerial.o
  .text.touchpad_set_rel_mode_200dpi
                 0x0000000000000000       0x2a USBtoSerial.o
  .text.z_pressure
@@ -87,6 +98,8 @@ Discarded input sections
  .text.y_abs    0x0000000000000000       0x3e USBtoSerial.o
  .text.decode_field
                 0x0000000000000000       0x8c USBtoSerial.o
+ .text.times_ten_pow
+                0x0000000000000000       0x3a USBtoSerial.o
  .text          0x0000000000000000        0x0 Descriptors.o
  .data          0x0000000000000000        0x0 Descriptors.o
  .bss           0x0000000000000000        0x0 Descriptors.o
@@ -349,7 +362,10 @@ Discarded input sections
  .text          0x0000000000000000        0x0 /usr/lib/gcc/avr/4.5.3/avr35/libgcc.a(_mulhi3.o)
  .data          0x0000000000000000        0x0 /usr/lib/gcc/avr/4.5.3/avr35/libgcc.a(_mulhi3.o)
  .bss           0x0000000000000000        0x0 /usr/lib/gcc/avr/4.5.3/avr35/libgcc.a(_mulhi3.o)
- .text.libgcc   0x0000000000000000       0x24 /usr/lib/gcc/avr/4.5.3/avr35/libgcc.a(_mulhi3.o)
+ .text          0x0000000000000000        0x0 /usr/lib/gcc/avr/4.5.3/avr35/libgcc.a(_mulsi3.o)
+ .data          0x0000000000000000        0x0 /usr/lib/gcc/avr/4.5.3/avr35/libgcc.a(_mulsi3.o)
+ .bss           0x0000000000000000        0x0 /usr/lib/gcc/avr/4.5.3/avr35/libgcc.a(_mulsi3.o)
+ .text.libgcc   0x0000000000000000       0x32 /usr/lib/gcc/avr/4.5.3/avr35/libgcc.a(_mulsi3.o)
  .text          0x0000000000000000        0x0 /usr/lib/gcc/avr/4.5.3/avr35/libgcc.a(_udivmodhi4.o)
  .data          0x0000000000000000        0x0 /usr/lib/gcc/avr/4.5.3/avr35/libgcc.a(_udivmodhi4.o)
  .bss           0x0000000000000000        0x0 /usr/lib/gcc/avr/4.5.3/avr35/libgcc.a(_udivmodhi4.o)
@@ -371,6 +387,9 @@ Discarded input sections
  .data          0x0000000000000000        0x0 /usr/lib/gcc/avr/4.5.3/avr35/libgcc.a(_clear_bss.o)
  .bss           0x0000000000000000        0x0 /usr/lib/gcc/avr/4.5.3/avr35/libgcc.a(_clear_bss.o)
  .text.libgcc   0x0000000000000000        0x0 /usr/lib/gcc/avr/4.5.3/avr35/libgcc.a(_clear_bss.o)
+ .text          0x0000000000000000        0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libc.a(atoi.o)
+ .data          0x0000000000000000        0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libc.a(atoi.o)
+ .bss           0x0000000000000000        0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libc.a(atoi.o)
  .text          0x0000000000000000        0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libc.a(memcpy_P.o)
  .data          0x0000000000000000        0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libc.a(memcpy_P.o)
  .bss           0x0000000000000000        0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libc.a(memcpy_P.o)
@@ -391,6 +410,12 @@ Discarded input sections
  .bss           0x0000000000000000        0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libc.a(memset.o)
  .text.avr-libc
                 0x0000000000000000        0xe /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libc.a(memset.o)
+ .text          0x0000000000000000        0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libc.a(strncpy.o)
+ .data          0x0000000000000000        0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libc.a(strncpy.o)
+ .bss           0x0000000000000000        0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libc.a(strncpy.o)
+ .text          0x0000000000000000        0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libc.a(mul10.o)
+ .data          0x0000000000000000        0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libc.a(mul10.o)
+ .bss           0x0000000000000000        0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libc.a(mul10.o)
  .text          0x0000000000000000        0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libc.a(eerd_byte_atmega32u2.o)
  .data          0x0000000000000000        0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libc.a(eerd_byte_atmega32u2.o)
  .bss           0x0000000000000000        0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libc.a(eerd_byte_atmega32u2.o)
@@ -543,7 +568,7 @@ LOAD /usr/lib/gcc/avr/4.5.3/avr35/libgcc.a
 .rela.plt
  *(.rela.plt)
 
-.text           0x0000000000000000     0x1ab8
+.text           0x0000000000000000     0x1e88
  *(.vectors)
  .vectors       0x0000000000000000       0x98 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/crtm32u2.o
                 0x0000000000000000                __vectors
@@ -666,207 +691,227 @@ LOAD /usr/lib/gcc/avr/4.5.3/avr35/libgcc.a
  .text.touchpad_read
                 0x0000000000000556       0x12 USBtoSerial.o
                 0x0000000000000556                touchpad_read
- .text.touchpad_set_abs_mode
-                0x0000000000000568       0x3c USBtoSerial.o
-                0x0000000000000568                touchpad_set_abs_mode
  .text.touchpad_set_rel_mode_100dpi
-                0x00000000000005a4       0x28 USBtoSerial.o
-                0x00000000000005a4                touchpad_set_rel_mode_100dpi
- .text.delta_y  0x00000000000005cc       0x20 USBtoSerial.o
-                0x00000000000005cc                delta_y
- .text.delta_x  0x00000000000005ec       0x20 USBtoSerial.o
-                0x00000000000005ec                delta_x
+                0x0000000000000568       0x28 USBtoSerial.o
+                0x0000000000000568                touchpad_set_rel_mode_100dpi
+ .text.delta_y  0x0000000000000590       0x20 USBtoSerial.o
+                0x0000000000000590                delta_y
+ .text.delta_x  0x00000000000005b0       0x20 USBtoSerial.o
+                0x00000000000005b0                delta_x
  .text.Usb2SerialTask
-                0x000000000000060c       0xb4 USBtoSerial.o
-                0x000000000000060c                Usb2SerialTask
+                0x00000000000005d0       0x96 USBtoSerial.o
+                0x00000000000005d0                Usb2SerialTask
  .text.SetupHardware
-                0x00000000000006c0       0x2a USBtoSerial.o
-                0x00000000000006c0                SetupHardware
+                0x0000000000000666       0x2a USBtoSerial.o
+                0x0000000000000666                SetupHardware
  .text.EVENT_USB_Device_Connect
-                0x00000000000006ea        0x2 USBtoSerial.o
-                0x00000000000006ea                EVENT_USB_Device_Connect
+                0x0000000000000690        0x2 USBtoSerial.o
+                0x0000000000000690                EVENT_USB_Device_Connect
  .text.EVENT_USB_Device_Disconnect
-                0x00000000000006ec        0x2 USBtoSerial.o
-                0x00000000000006ec                EVENT_USB_Device_Disconnect
+                0x0000000000000692        0x2 USBtoSerial.o
+                0x0000000000000692                EVENT_USB_Device_Disconnect
  .text.EVENT_USB_Device_ConfigurationChanged
-                0x00000000000006ee        0x6 USBtoSerial.o
-                0x00000000000006ee                EVENT_USB_Device_ConfigurationChanged
+                0x0000000000000694        0x8 USBtoSerial.o
+                0x0000000000000694                EVENT_USB_Device_ConfigurationChanged
  .text.EVENT_USB_Device_ControlRequest
-                0x00000000000006f4        0x6 USBtoSerial.o
-                0x00000000000006f4                EVENT_USB_Device_ControlRequest
+                0x000000000000069c        0x8 USBtoSerial.o
+                0x000000000000069c                EVENT_USB_Device_ControlRequest
  .text.__vector_23
-                0x00000000000006fa       0x54 USBtoSerial.o
-                0x00000000000006fa                __vector_23
+                0x00000000000006a4       0x54 USBtoSerial.o
+                0x00000000000006a4                __vector_23
  .text.EVENT_CDC_Device_LineEncodingChanged
-                0x000000000000074e       0xc6 USBtoSerial.o
-                0x000000000000074e                EVENT_CDC_Device_LineEncodingChanged
+                0x00000000000006f8       0xcc USBtoSerial.o
+                0x00000000000006f8                EVENT_CDC_Device_LineEncodingChanged
  .text.uart_putc
-                0x0000000000000814       0x10 USBtoSerial.o
-                0x0000000000000814                uart_putc
+                0x00000000000007c4       0x10 USBtoSerial.o
+                0x00000000000007c4                uart_putc
  .text.uart_puts
-                0x0000000000000824       0x26 USBtoSerial.o
-                0x0000000000000824                uart_puts
+                0x00000000000007d4       0x26 USBtoSerial.o
+                0x00000000000007d4                uart_puts
  .text.my_uitoa
-                0x000000000000084a       0xd0 USBtoSerial.o
-                0x000000000000084a                my_uitoa
+                0x00000000000007fa       0xd0 USBtoSerial.o
+                0x00000000000007fa                my_uitoa
+ .text.sign     0x00000000000008ca       0x18 USBtoSerial.o
+                0x00000000000008ca                sign
+ .text.uart_print_number
+                0x00000000000008e2       0x20 USBtoSerial.o
+                0x00000000000008e2                uart_print_number
+ .text.uart_print_signed_number
+                0x0000000000000902       0x3c USBtoSerial.o
+                0x0000000000000902                uart_print_signed_number
  .text.init_motors
-                0x000000000000091a       0x1a USBtoSerial.o
-                0x000000000000091a                init_motors
+                0x000000000000093e       0x1a USBtoSerial.o
+                0x000000000000093e                init_motors
  .text.motor_step
-                0x0000000000000934       0x64 USBtoSerial.o
-                0x0000000000000934                motor_step
- .text.sign     0x0000000000000998       0x18 USBtoSerial.o
-                0x0000000000000998                sign
+                0x0000000000000958       0x64 USBtoSerial.o
+                0x0000000000000958                motor_step
  .text.move_plate
-                0x00000000000009b0       0x84 USBtoSerial.o
-                0x00000000000009b0                move_plate
- .text.main     0x0000000000000a34      0x106 USBtoSerial.o
-                0x0000000000000a34                main
+                0x00000000000009bc       0x96 USBtoSerial.o
+                0x00000000000009bc                move_plate
+ .text.pos_report
+                0x0000000000000a52       0x3a USBtoSerial.o
+                0x0000000000000a52                pos_report
+ .text.parse_command
+                0x0000000000000a8c      0x33c USBtoSerial.o
+                0x0000000000000a8c                parse_command
+ .text.main     0x0000000000000dc8       0xae USBtoSerial.o
+                0x0000000000000dc8                main
  .text.CALLBACK_USB_GetDescriptor
-                0x0000000000000b3a       0x5a Descriptors.o
-                0x0000000000000b3a                CALLBACK_USB_GetDescriptor
+                0x0000000000000e76       0x5a Descriptors.o
+                0x0000000000000e76                CALLBACK_USB_GetDescriptor
  .text.Endpoint_Write_Control_Stream_LE
-                0x0000000000000b94       0xb4 ../../LUFA/Drivers/USB/Core/AVR8/EndpointStream_AVR8.o
-                0x0000000000000b94                Endpoint_Write_Control_Stream_LE
+                0x0000000000000ed0       0xb4 ../../LUFA/Drivers/USB/Core/AVR8/EndpointStream_AVR8.o
+                0x0000000000000ed0                Endpoint_Write_Control_Stream_LE
  .text.Endpoint_Write_Control_PStream_LE
-                0x0000000000000c48       0xb6 ../../LUFA/Drivers/USB/Core/AVR8/EndpointStream_AVR8.o
-                0x0000000000000c48                Endpoint_Write_Control_PStream_LE
+                0x0000000000000f84       0xb6 ../../LUFA/Drivers/USB/Core/AVR8/EndpointStream_AVR8.o
+                0x0000000000000f84                Endpoint_Write_Control_PStream_LE
  .text.Endpoint_ConfigureEndpoint_Prv
-                0x0000000000000cfe       0x6e ../../LUFA/Drivers/USB/Core/AVR8/Endpoint_AVR8.o
-                0x0000000000000cfe                Endpoint_ConfigureEndpoint_Prv
+                0x000000000000103a       0x6e ../../LUFA/Drivers/USB/Core/AVR8/Endpoint_AVR8.o
+                0x000000000000103a                Endpoint_ConfigureEndpoint_Prv
  .text.Endpoint_ConfigureEndpointTable
-                0x0000000000000d6c       0x88 ../../LUFA/Drivers/USB/Core/AVR8/Endpoint_AVR8.o
-                0x0000000000000d6c                Endpoint_ConfigureEndpointTable
+                0x00000000000010a8       0x88 ../../LUFA/Drivers/USB/Core/AVR8/Endpoint_AVR8.o
+                0x00000000000010a8                Endpoint_ConfigureEndpointTable
  .text.Endpoint_ClearStatusStage
-                0x0000000000000df4       0x3e ../../LUFA/Drivers/USB/Core/AVR8/Endpoint_AVR8.o
-                0x0000000000000df4                Endpoint_ClearStatusStage
+                0x0000000000001130       0x3e ../../LUFA/Drivers/USB/Core/AVR8/Endpoint_AVR8.o
+                0x0000000000001130                Endpoint_ClearStatusStage
  .text.Endpoint_WaitUntilReady
-                0x0000000000000e32       0x66 ../../LUFA/Drivers/USB/Core/AVR8/Endpoint_AVR8.o
-                0x0000000000000e32                Endpoint_WaitUntilReady
+                0x000000000000116e       0x66 ../../LUFA/Drivers/USB/Core/AVR8/Endpoint_AVR8.o
+                0x000000000000116e                Endpoint_WaitUntilReady
  .text.USB_ResetInterface
-                0x0000000000000e98       0x70 ../../LUFA/Drivers/USB/Core/AVR8/USBController_AVR8.o
-                0x0000000000000e98                USB_ResetInterface
+                0x00000000000011d4       0x70 ../../LUFA/Drivers/USB/Core/AVR8/USBController_AVR8.o
+                0x00000000000011d4                USB_ResetInterface
  .text.USB_Init
-                0x0000000000000f08       0x12 ../../LUFA/Drivers/USB/Core/AVR8/USBController_AVR8.o
-                0x0000000000000f08                USB_Init
+                0x0000000000001244       0x12 ../../LUFA/Drivers/USB/Core/AVR8/USBController_AVR8.o
+                0x0000000000001244                USB_Init
  .text.USB_INT_DisableAllInterrupts
-                0x0000000000000f1a        0x6 ../../LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.o
-                0x0000000000000f1a                USB_INT_DisableAllInterrupts
+                0x0000000000001256        0x6 ../../LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.o
+                0x0000000000001256                USB_INT_DisableAllInterrupts
  .text.USB_INT_ClearAllInterrupts
-                0x0000000000000f20        0x6 ../../LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.o
-                0x0000000000000f20                USB_INT_ClearAllInterrupts
+                0x000000000000125c        0x6 ../../LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.o
+                0x000000000000125c                USB_INT_ClearAllInterrupts
  .text.__vector_11
-                0x0000000000000f26      0x148 ../../LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.o
-                0x0000000000000f26                __vector_11
+                0x0000000000001262      0x148 ../../LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.o
+                0x0000000000001262                __vector_11
  .text.__vector_12
-                0x000000000000106e       0x76 ../../LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.o
-                0x000000000000106e                __vector_12
+                0x00000000000013aa       0x76 ../../LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.o
+                0x00000000000013aa                __vector_12
  .text.USB_Device_ProcessControlRequest
-                0x00000000000010e4      0x2c2 ../../LUFA/Drivers/USB/Core/DeviceStandardReq.o
-                0x00000000000010e4                USB_Device_ProcessControlRequest
+                0x0000000000001420      0x2c4 ../../LUFA/Drivers/USB/Core/DeviceStandardReq.o
+                0x0000000000001420                USB_Device_ProcessControlRequest
  .text.USB_Event_Stub
-                0x00000000000013a6        0x2 ../../LUFA/Drivers/USB/Core/Events.o
-                0x00000000000013a6                EVENT_USB_Device_WakeUp
-                0x00000000000013a6                USB_Event_Stub
-                0x00000000000013a6                EVENT_USB_Device_Suspend
-                0x00000000000013a6                EVENT_USB_Device_StartOfFrame
-                0x00000000000013a6                EVENT_USB_Device_Reset
+                0x00000000000016e4        0x2 ../../LUFA/Drivers/USB/Core/Events.o
+                0x00000000000016e4                EVENT_USB_Device_WakeUp
+                0x00000000000016e4                USB_Event_Stub
+                0x00000000000016e4                EVENT_USB_Device_Suspend
+                0x00000000000016e4                EVENT_USB_Device_StartOfFrame
+                0x00000000000016e4                EVENT_USB_Device_Reset
  .text.USB_USBTask
-                0x00000000000013a8       0x36 ../../LUFA/Drivers/USB/Core/USBTask.o
-                0x00000000000013a8                USB_USBTask
+                0x00000000000016e6       0x36 ../../LUFA/Drivers/USB/Core/USBTask.o
+                0x00000000000016e6                USB_USBTask
  .text.CDC_Device_ProcessControlRequest
-                0x00000000000013de      0x158 ../../LUFA/Drivers/USB/Class/Device/CDCClassDevice.o
-                0x00000000000013de                CDC_Device_ProcessControlRequest
+                0x000000000000171c      0x15a ../../LUFA/Drivers/USB/Class/Device/CDCClassDevice.o
+                0x000000000000171c                CDC_Device_ProcessControlRequest
  .text.CDC_Device_ConfigureEndpoints
-                0x0000000000001536       0x48 ../../LUFA/Drivers/USB/Class/Device/CDCClassDevice.o
-                0x0000000000001536                CDC_Device_ConfigureEndpoints
+                0x0000000000001876       0x48 ../../LUFA/Drivers/USB/Class/Device/CDCClassDevice.o
+                0x0000000000001876                CDC_Device_ConfigureEndpoints
  .text.CDC_Device_SendByte
-                0x000000000000157e       0x5a ../../LUFA/Drivers/USB/Class/Device/CDCClassDevice.o
-                0x000000000000157e                CDC_Device_SendByte
+                0x00000000000018be       0x5a ../../LUFA/Drivers/USB/Class/Device/CDCClassDevice.o
+                0x00000000000018be                CDC_Device_SendByte
  .text.CDC_Device_Flush
-                0x00000000000015d8       0x5a ../../LUFA/Drivers/USB/Class/Device/CDCClassDevice.o
-                0x00000000000015d8                CDC_Device_Flush
+                0x0000000000001918       0x5a ../../LUFA/Drivers/USB/Class/Device/CDCClassDevice.o
+                0x0000000000001918                CDC_Device_Flush
  .text.CDC_Device_USBTask
-                0x0000000000001632       0x2e ../../LUFA/Drivers/USB/Class/Device/CDCClassDevice.o
-                0x0000000000001632                CDC_Device_USBTask
+                0x0000000000001972       0x2e ../../LUFA/Drivers/USB/Class/Device/CDCClassDevice.o
+                0x0000000000001972                CDC_Device_USBTask
  .text.CDC_Device_ReceiveByte
-                0x0000000000001660       0x5a ../../LUFA/Drivers/USB/Class/Device/CDCClassDevice.o
-                0x0000000000001660                CDC_Device_ReceiveByte
+                0x00000000000019a0       0x5a ../../LUFA/Drivers/USB/Class/Device/CDCClassDevice.o
+                0x00000000000019a0                CDC_Device_ReceiveByte
  .text.CDC_Device_Event_Stub
-                0x00000000000016ba        0x2 ../../LUFA/Drivers/USB/Class/Device/CDCClassDevice.o
-                0x00000000000016ba                EVENT_CDC_Device_ControLineStateChanged
-                0x00000000000016ba                EVENT_CDC_Device_BreakSent
-                0x00000000000016ba                CDC_Device_Event_Stub
+                0x00000000000019fa        0x2 ../../LUFA/Drivers/USB/Class/Device/CDCClassDevice.o
+                0x00000000000019fa                EVENT_CDC_Device_ControLineStateChanged
+                0x00000000000019fa                EVENT_CDC_Device_BreakSent
+                0x00000000000019fa                CDC_Device_Event_Stub
  .text.avr-libc.fplib
-                0x00000000000016bc        0xa /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libm.a(addsf3.o)
-                0x00000000000016bc                __subsf3
-                0x00000000000016be                __addsf3
+                0x00000000000019fc        0xa /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libm.a(addsf3.o)
+                0x00000000000019fc                __subsf3
+                0x00000000000019fe                __addsf3
  .text.avr-libc.fplib
-                0x00000000000016c6       0xc0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libm.a(addsf3x.o)
-                0x00000000000016e0                __addsf3x
+                0x0000000000001a06       0xc0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libm.a(addsf3x.o)
+                0x0000000000001a20                __addsf3x
  .text.avr-libc.fplib
-                0x0000000000001786        0x8 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libm.a(cmpsf2.o)
-                0x0000000000001786                __lesf2
-                0x0000000000001786                __nesf2
-                0x0000000000001786                __eqsf2
-                0x0000000000001786                __cmpsf2
-                0x0000000000001786                __ltsf2
+                0x0000000000001ac6        0x8 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libm.a(cmpsf2.o)
+                0x0000000000001ac6                __lesf2
+                0x0000000000001ac6                __nesf2
+                0x0000000000001ac6                __eqsf2
+                0x0000000000001ac6                __cmpsf2
+                0x0000000000001ac6                __ltsf2
  .text.avr-libc.fplib
-                0x000000000000178e        0x4 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libm.a(divsf3.o)
-                0x000000000000178e                __divsf3
+                0x0000000000001ace        0x4 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libm.a(divsf3.o)
+                0x0000000000001ace                __divsf3
  .text.avr-libc.fplib
-                0x0000000000001792       0xcc /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libm.a(divsf3x.o)
-                0x00000000000017a8                __divsf3x
-                0x00000000000017ac                __divsf3_pse
+                0x0000000000001ad2       0xcc /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libm.a(divsf3x.o)
+                0x0000000000001ae8                __divsf3x
+                0x0000000000001aec                __divsf3_pse
  .text.avr-libc.fplib
-                0x000000000000185e       0x58 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libm.a(fixunssfsi.o)
-                0x000000000000185e                __fixunssfsi
+                0x0000000000001b9e       0x58 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libm.a(fixunssfsi.o)
+                0x0000000000001b9e                __fixunssfsi
  .text.avr-libc.fplib
-                0x00000000000018b6       0x7a /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libm.a(floatsisf.o)
-                0x00000000000018b6                __floatunsisf
-                0x00000000000018ba                __floatsisf
+                0x0000000000001bf6       0x7a /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libm.a(floatsisf.o)
+                0x0000000000001bf6                __floatunsisf
+                0x0000000000001bfa                __floatsisf
  .text.avr-libc.fplib
-                0x0000000000001930       0x48 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libm.a(fp_cmp.o)
-                0x0000000000001930                __fp_cmp
+                0x0000000000001c70       0x48 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libm.a(fp_cmp.o)
+                0x0000000000001c70                __fp_cmp
  .text.avr-libc.fplib
-                0x0000000000001978        0xc /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libm.a(fp_inf.o)
-                0x0000000000001978                __fp_inf
+                0x0000000000001cb8        0xc /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libm.a(fp_inf.o)
+                0x0000000000001cb8                __fp_inf
  .text.avr-libc.fplib
-                0x0000000000001984        0x6 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libm.a(fp_nan.o)
-                0x0000000000001984                __fp_nan
+                0x0000000000001cc4        0x6 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libm.a(fp_nan.o)
+                0x0000000000001cc4                __fp_nan
  .text.avr-libc.fplib
-                0x000000000000198a        0xe /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libm.a(fp_pscA.o)
-                0x000000000000198a                __fp_pscA
+                0x0000000000001cca        0xe /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libm.a(fp_pscA.o)
+                0x0000000000001cca                __fp_pscA
  .text.avr-libc.fplib
-                0x0000000000001998        0xe /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libm.a(fp_pscB.o)
-                0x0000000000001998                __fp_pscB
+                0x0000000000001cd8        0xe /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libm.a(fp_pscB.o)
+                0x0000000000001cd8                __fp_pscB
  .text.avr-libc.fplib
-                0x00000000000019a6       0x22 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libm.a(fp_round.o)
-                0x00000000000019a6                __fp_round
+                0x0000000000001ce6       0x22 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libm.a(fp_round.o)
+                0x0000000000001ce6                __fp_round
  .text.avr-libc.fplib
-                0x00000000000019c8       0x44 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libm.a(fp_split3.o)
-                0x00000000000019c8                __fp_split3
-                0x00000000000019d8                __fp_splitA
+                0x0000000000001d08       0x44 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libm.a(fp_split3.o)
+                0x0000000000001d08                __fp_split3
+                0x0000000000001d18                __fp_splitA
  .text.avr-libc.fplib
-                0x0000000000001a0c        0xe /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libm.a(fp_zero.o)
-                0x0000000000001a0c                __fp_zero
-                0x0000000000001a0e                __fp_szero
+                0x0000000000001d4c        0xe /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libm.a(fp_zero.o)
+                0x0000000000001d4c                __fp_zero
+                0x0000000000001d4e                __fp_szero
  .text.avr-libc.fplib
-                0x0000000000001a1a        0x8 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libm.a(gesf2.o)
-                0x0000000000001a1a                __gtsf2
-                0x0000000000001a1a                __gesf2
- .text.libgcc   0x0000000000001a22       0x28 /usr/lib/gcc/avr/4.5.3/avr35/libgcc.a(_udivmodhi4.o)
-                0x0000000000001a22                __udivmodhi4
- .text.libgcc   0x0000000000001a4a       0x26 /usr/lib/gcc/avr/4.5.3/avr35/libgcc.a(_divmodhi4.o)
-                0x0000000000001a4a                __divmodhi4
-                0x0000000000001a4a                _div
- .text.libgcc   0x0000000000001a70       0x44 /usr/lib/gcc/avr/4.5.3/avr35/libgcc.a(_udivmodsi4.o)
-                0x0000000000001a70                __udivmodsi4
-                0x0000000000001ab4                . = ALIGN (0x2)
+                0x0000000000001d5a        0x8 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libm.a(gesf2.o)
+                0x0000000000001d5a                __gtsf2
+                0x0000000000001d5a                __gesf2
+ .text.libgcc   0x0000000000001d62       0x24 /usr/lib/gcc/avr/4.5.3/avr35/libgcc.a(_mulhi3.o)
+                0x0000000000001d62                __mulhi3
+ .text.libgcc   0x0000000000001d86       0x28 /usr/lib/gcc/avr/4.5.3/avr35/libgcc.a(_udivmodhi4.o)
+                0x0000000000001d86                __udivmodhi4
+ .text.libgcc   0x0000000000001dae       0x26 /usr/lib/gcc/avr/4.5.3/avr35/libgcc.a(_divmodhi4.o)
+                0x0000000000001dae                __divmodhi4
+                0x0000000000001dae                _div
+ .text.libgcc   0x0000000000001dd4       0x44 /usr/lib/gcc/avr/4.5.3/avr35/libgcc.a(_udivmodsi4.o)
+                0x0000000000001dd4                __udivmodsi4
+ .text.avr-libc
+                0x0000000000001e18       0x3a /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libc.a(atoi.o)
+                0x0000000000001e18                atoi
+ .text.avr-libc
+                0x0000000000001e52       0x1e /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libc.a(strncpy.o)
+                0x0000000000001e52                strncpy
+ .text.avr-libc
+                0x0000000000001e70       0x14 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libc.a(mul10.o)
+                0x0000000000001e70                __mulhi_const_10
+                0x0000000000001e84                . = ALIGN (0x2)
  *(.fini9)
- .fini9         0x0000000000001ab4        0x0 /usr/lib/gcc/avr/4.5.3/avr35/libgcc.a(_exit.o)
-                0x0000000000001ab4                exit
-                0x0000000000001ab4                _exit
+ .fini9         0x0000000000001e84        0x0 /usr/lib/gcc/avr/4.5.3/avr35/libgcc.a(_exit.o)
+                0x0000000000001e84                exit
+                0x0000000000001e84                _exit
  *(.fini9)
  *(.fini8)
  *(.fini8)
@@ -885,51 +930,55 @@ LOAD /usr/lib/gcc/avr/4.5.3/avr35/libgcc.a
  *(.fini1)
  *(.fini1)
  *(.fini0)
- .fini0         0x0000000000001ab4        0x4 /usr/lib/gcc/avr/4.5.3/avr35/libgcc.a(_exit.o)
+ .fini0         0x0000000000001e84        0x4 /usr/lib/gcc/avr/4.5.3/avr35/libgcc.a(_exit.o)
  *(.fini0)
-                0x0000000000001ab8                _etext = .
+                0x0000000000001e88                _etext = .
 
-.data           0x0000000000800100       0x6a load address 0x0000000000001ab8
+.data           0x0000000000800100       0x7a load address 0x0000000000001e88
                 0x0000000000800100                PROVIDE (__data_start, .)
  *(.data)
- .data          0x0000000000800100       0x6a USBtoSerial.o
-                0x0000000000800145                VirtualSerial_CDC_Interface
-                0x0000000000800160                phase_pattern
+ .data          0x0000000000800100       0x79 USBtoSerial.o
+                0x0000000000800154                VirtualSerial_CDC_Interface
+                0x000000000080016f                phase_pattern
  *(.data*)
  *(.rodata)
  *(.rodata*)
  *(.gnu.linkonce.d*)
-                0x000000000080016a                . = ALIGN (0x2)
-                0x000000000080016a                _edata = .
-                0x000000000080016a                PROVIDE (__data_end, .)
+                0x000000000080017a                . = ALIGN (0x2)
+ *fill*         0x0000000000800179        0x1 00
+                0x000000000080017a                _edata = .
+                0x000000000080017a                PROVIDE (__data_end, .)
 
-.bss            0x000000000080016a      0x13a
-                0x000000000080016a                PROVIDE (__bss_start, .)
+.bss            0x000000000080017a      0x176
+                0x000000000080017a                PROVIDE (__bss_start, .)
  *(.bss)
- .bss           0x000000000080016a      0x123 USBtoSerial.o
+ .bss           0x000000000080017a      0x14f USBtoSerial.o
+                0x000000000080017a                plate_pos_x
+                0x000000000080017c                plate_pos_y
  *(.bss*)
  *(COMMON)
- COMMON         0x000000000080028d        0xb USBtoSerial.o
-                0x000000000080028d                adb_werte
-                0x0000000000800296                t0ovfcount
-                0x0000000000800297                adb_data_length
- COMMON         0x0000000000800298        0x3 ../../LUFA/Drivers/USB/Core/DeviceStandardReq.o
-                0x0000000000800298                USB_Device_ConfigurationNumber
-                0x0000000000800299                USB_Device_CurrentlySelfPowered
-                0x000000000080029a                USB_Device_RemoteWakeupEnabled
- COMMON         0x000000000080029b        0x9 ../../LUFA/Drivers/USB/Core/USBTask.o
-                0x000000000080029b                USB_IsInitialized
-                0x000000000080029c                USB_ControlRequest
-                0x00000000008002a4                PROVIDE (__bss_end, .)
-                0x0000000000001ab8                __data_load_start = LOADADDR (.data)
-                0x0000000000001b22                __data_load_end = (__data_load_start + SIZEOF (.data))
-
-.noinit         0x00000000008002a4        0x0
-                0x00000000008002a4                PROVIDE (__noinit_start, .)
+ COMMON         0x00000000008002c9       0x1b USBtoSerial.o
+                0x00000000008002c9                adb_werte
+                0x00000000008002d2                stringbuffer
+                0x00000000008002e2                t0ovfcount
+                0x00000000008002e3                adb_data_length
+ COMMON         0x00000000008002e4        0x3 ../../LUFA/Drivers/USB/Core/DeviceStandardReq.o
+                0x00000000008002e4                USB_Device_ConfigurationNumber
+                0x00000000008002e5                USB_Device_CurrentlySelfPowered
+                0x00000000008002e6                USB_Device_RemoteWakeupEnabled
+ COMMON         0x00000000008002e7        0x9 ../../LUFA/Drivers/USB/Core/USBTask.o
+                0x00000000008002e7                USB_IsInitialized
+                0x00000000008002e8                USB_ControlRequest
+                0x00000000008002f0                PROVIDE (__bss_end, .)
+                0x0000000000001e88                __data_load_start = LOADADDR (.data)
+                0x0000000000001f02                __data_load_end = (__data_load_start + SIZEOF (.data))
+
+.noinit         0x00000000008002f0        0x0
+                0x00000000008002f0                PROVIDE (__noinit_start, .)
  *(.noinit*)
-                0x00000000008002a4                PROVIDE (__noinit_end, .)
-                0x00000000008002a4                _end = .
-                0x00000000008002a4                PROVIDE (__heap_start, .)
+                0x00000000008002f0                PROVIDE (__noinit_end, .)
+                0x00000000008002f0                _end = .
+                0x00000000008002f0                PROVIDE (__heap_start, .)
 
 .eeprom         0x0000000000810000        0x0
  *(.eeprom*)
@@ -947,7 +996,7 @@ LOAD /usr/lib/gcc/avr/4.5.3/avr35/libgcc.a
 .signature
  *(.signature*)
 
-.stab           0x0000000000000000     0x228c
+.stab           0x0000000000000000     0x255c
  *(.stab)
  .stab          0x0000000000000000      0x6cc /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/crtm32u2.o
  .stab          0x00000000000006cc       0x78 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libm.a(addsf3.o)
@@ -982,22 +1031,28 @@ LOAD /usr/lib/gcc/avr/4.5.3/avr35/libgcc.a
                                          0x9c (size before relaxing)
  .stab          0x0000000000001e54       0x6c /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libm.a(gesf2.o)
                                          0x78 (size before relaxing)
- .stab          0x0000000000001ec0       0x84 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libc.a(memcpy_P.o)
+ .stab          0x0000000000001ec0      0x174 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libc.a(atoi.o)
+                                        0x180 (size before relaxing)
+ .stab          0x0000000000002034       0x84 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libc.a(memcpy_P.o)
                                          0x90 (size before relaxing)
- .stab          0x0000000000001f44       0xb4 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libc.a(memcmp.o)
+ .stab          0x00000000000020b8       0xb4 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libc.a(memcmp.o)
                                          0xc0 (size before relaxing)
- .stab          0x0000000000001ff8       0x84 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libc.a(memcpy.o)
+ .stab          0x000000000000216c       0x84 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libc.a(memcpy.o)
                                          0x90 (size before relaxing)
- .stab          0x000000000000207c       0x6c /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libc.a(memset.o)
+ .stab          0x00000000000021f0       0x6c /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libc.a(memset.o)
                                          0x78 (size before relaxing)
- .stab          0x00000000000020e8       0x90 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libc.a(eerd_byte_atmega32u2.o)
+ .stab          0x000000000000225c       0xcc /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libc.a(strncpy.o)
+                                         0xd8 (size before relaxing)
+ .stab          0x0000000000002328       0x90 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libc.a(mul10.o)
                                          0x9c (size before relaxing)
- .stab          0x0000000000002178      0x114 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libc.a(eeupd_byte_atmega32u2.o)
+ .stab          0x00000000000023b8       0x90 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libc.a(eerd_byte_atmega32u2.o)
+                                         0x9c (size before relaxing)
+ .stab          0x0000000000002448      0x114 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libc.a(eeupd_byte_atmega32u2.o)
                                         0x120 (size before relaxing)
 
-.stabstr        0x0000000000000000      0x44f
+.stabstr        0x0000000000000000      0x4d5
  *(.stabstr)
- .stabstr       0x0000000000000000      0x44f /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/crtm32u2.o
+ .stabstr       0x0000000000000000      0x4d5 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/crtm32u2.o
 
 .stab.excl
  *(.stab.excl)
@@ -1026,291 +1081,291 @@ LOAD /usr/lib/gcc/avr/4.5.3/avr35/libgcc.a
 .debug_sfnames
  *(.debug_sfnames)
 
-.debug_aranges  0x0000000000000000      0x568
+.debug_aranges  0x0000000000000000      0x590
  *(.debug_aranges)
  .debug_aranges
-                0x0000000000000000      0x138 USBtoSerial.o
+                0x0000000000000000      0x160 USBtoSerial.o
  .debug_aranges
-                0x0000000000000138       0x20 Descriptors.o
+                0x0000000000000160       0x20 Descriptors.o
  .debug_aranges
-                0x0000000000000158       0x38 ../../LUFA/Drivers/USB/Class/Common/HIDParser.o
+                0x0000000000000180       0x38 ../../LUFA/Drivers/USB/Class/Common/HIDParser.o
  .debug_aranges
-                0x0000000000000190       0x20 ../../LUFA/Drivers/USB/Core/AVR8/Device_AVR8.o
+                0x00000000000001b8       0x20 ../../LUFA/Drivers/USB/Core/AVR8/Device_AVR8.o
  .debug_aranges
-                0x00000000000001b0       0xc8 ../../LUFA/Drivers/USB/Core/AVR8/EndpointStream_AVR8.o
+                0x00000000000001d8       0xc8 ../../LUFA/Drivers/USB/Core/AVR8/EndpointStream_AVR8.o
  .debug_aranges
-                0x0000000000000278       0x40 ../../LUFA/Drivers/USB/Core/AVR8/Endpoint_AVR8.o
+                0x00000000000002a0       0x40 ../../LUFA/Drivers/USB/Core/AVR8/Endpoint_AVR8.o
  .debug_aranges
-                0x00000000000002b8       0x30 ../../LUFA/Drivers/USB/Core/AVR8/USBController_AVR8.o
+                0x00000000000002e0       0x30 ../../LUFA/Drivers/USB/Core/AVR8/USBController_AVR8.o
  .debug_aranges
-                0x00000000000002e8       0x38 ../../LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.o
+                0x0000000000000310       0x38 ../../LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.o
  .debug_aranges
-                0x0000000000000320       0x38 ../../LUFA/Drivers/USB/Core/ConfigDescriptors.o
+                0x0000000000000348       0x38 ../../LUFA/Drivers/USB/Core/ConfigDescriptors.o
  .debug_aranges
-                0x0000000000000358       0x20 ../../LUFA/Drivers/USB/Core/DeviceStandardReq.o
+                0x0000000000000380       0x20 ../../LUFA/Drivers/USB/Core/DeviceStandardReq.o
  .debug_aranges
-                0x0000000000000378       0x20 ../../LUFA/Drivers/USB/Core/Events.o
+                0x00000000000003a0       0x20 ../../LUFA/Drivers/USB/Core/Events.o
  .debug_aranges
-                0x0000000000000398       0x20 ../../LUFA/Drivers/USB/Core/USBTask.o
+                0x00000000000003c0       0x20 ../../LUFA/Drivers/USB/Core/USBTask.o
  .debug_aranges
-                0x00000000000003b8       0x30 ../../LUFA/Drivers/USB/Class/Device/AudioClassDevice.o
+                0x00000000000003e0       0x30 ../../LUFA/Drivers/USB/Class/Device/AudioClassDevice.o
  .debug_aranges
-                0x00000000000003e8       0x98 ../../LUFA/Drivers/USB/Class/Device/CDCClassDevice.o
+                0x0000000000000410       0x98 ../../LUFA/Drivers/USB/Class/Device/CDCClassDevice.o
  .debug_aranges
-                0x0000000000000480       0x30 ../../LUFA/Drivers/USB/Class/Device/HIDClassDevice.o
+                0x00000000000004a8       0x30 ../../LUFA/Drivers/USB/Class/Device/HIDClassDevice.o
  .debug_aranges
-                0x00000000000004b0       0x30 ../../LUFA/Drivers/USB/Class/Device/MassStorageClassDevice.o
+                0x00000000000004d8       0x30 ../../LUFA/Drivers/USB/Class/Device/MassStorageClassDevice.o
  .debug_aranges
-                0x00000000000004e0       0x40 ../../LUFA/Drivers/USB/Class/Device/MIDIClassDevice.o
+                0x0000000000000508       0x40 ../../LUFA/Drivers/USB/Class/Device/MIDIClassDevice.o
  .debug_aranges
-                0x0000000000000520       0x48 ../../LUFA/Drivers/USB/Class/Device/RNDISClassDevice.o
+                0x0000000000000548       0x48 ../../LUFA/Drivers/USB/Class/Device/RNDISClassDevice.o
 
 .debug_pubnames
-                0x0000000000000000      0xe6e
+                0x0000000000000000      0xf05
  *(.debug_pubnames)
  .debug_pubnames
-                0x0000000000000000      0x2d3 USBtoSerial.o
+                0x0000000000000000      0x36a USBtoSerial.o
  .debug_pubnames
-                0x00000000000002d3       0x9e Descriptors.o
+                0x000000000000036a       0x9e Descriptors.o
  .debug_pubnames
-                0x0000000000000371       0x7e ../../LUFA/Drivers/USB/Class/Common/HIDParser.o
+                0x0000000000000408       0x7e ../../LUFA/Drivers/USB/Class/Common/HIDParser.o
  .debug_pubnames
-                0x00000000000003ef       0x32 ../../LUFA/Drivers/USB/Core/AVR8/Device_AVR8.o
+                0x0000000000000486       0x32 ../../LUFA/Drivers/USB/Core/AVR8/Device_AVR8.o
  .debug_pubnames
-                0x0000000000000421      0x2df ../../LUFA/Drivers/USB/Core/AVR8/EndpointStream_AVR8.o
+                0x00000000000004b8      0x2df ../../LUFA/Drivers/USB/Core/AVR8/EndpointStream_AVR8.o
  .debug_pubnames
-                0x0000000000000700       0xaf ../../LUFA/Drivers/USB/Core/AVR8/Endpoint_AVR8.o
+                0x0000000000000797       0xaf ../../LUFA/Drivers/USB/Core/AVR8/Endpoint_AVR8.o
  .debug_pubnames
-                0x00000000000007af       0x46 ../../LUFA/Drivers/USB/Core/AVR8/USBController_AVR8.o
+                0x0000000000000846       0x46 ../../LUFA/Drivers/USB/Core/AVR8/USBController_AVR8.o
  .debug_pubnames
-                0x00000000000007f5       0x72 ../../LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.o
+                0x000000000000088c       0x72 ../../LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.o
  .debug_pubnames
-                0x0000000000000867       0x9b ../../LUFA/Drivers/USB/Core/ConfigDescriptors.o
+                0x00000000000008fe       0x9b ../../LUFA/Drivers/USB/Core/ConfigDescriptors.o
  .debug_pubnames
-                0x0000000000000902       0xa1 ../../LUFA/Drivers/USB/Core/DeviceStandardReq.o
+                0x0000000000000999       0xa1 ../../LUFA/Drivers/USB/Core/DeviceStandardReq.o
  .debug_pubnames
-                0x00000000000009a3       0x25 ../../LUFA/Drivers/USB/Core/Events.o
+                0x0000000000000a3a       0x25 ../../LUFA/Drivers/USB/Core/Events.o
  .debug_pubnames
-                0x00000000000009c8       0x4f ../../LUFA/Drivers/USB/Core/USBTask.o
+                0x0000000000000a5f       0x4f ../../LUFA/Drivers/USB/Core/USBTask.o
  .debug_pubnames
-                0x0000000000000a17       0x79 ../../LUFA/Drivers/USB/Class/Device/AudioClassDevice.o
+                0x0000000000000aae       0x79 ../../LUFA/Drivers/USB/Class/Device/AudioClassDevice.o
  .debug_pubnames
-                0x0000000000000a90      0x18b ../../LUFA/Drivers/USB/Class/Device/CDCClassDevice.o
+                0x0000000000000b27      0x18b ../../LUFA/Drivers/USB/Class/Device/CDCClassDevice.o
  .debug_pubnames
-                0x0000000000000c1b       0x70 ../../LUFA/Drivers/USB/Class/Device/HIDClassDevice.o
+                0x0000000000000cb2       0x70 ../../LUFA/Drivers/USB/Class/Device/HIDClassDevice.o
  .debug_pubnames
-                0x0000000000000c8b       0x6d ../../LUFA/Drivers/USB/Class/Device/MassStorageClassDevice.o
+                0x0000000000000d22       0x6d ../../LUFA/Drivers/USB/Class/Device/MassStorageClassDevice.o
  .debug_pubnames
-                0x0000000000000cf8       0xa6 ../../LUFA/Drivers/USB/Class/Device/MIDIClassDevice.o
+                0x0000000000000d8f       0xa6 ../../LUFA/Drivers/USB/Class/Device/MIDIClassDevice.o
  .debug_pubnames
-                0x0000000000000d9e       0xd0 ../../LUFA/Drivers/USB/Class/Device/RNDISClassDevice.o
+                0x0000000000000e35       0xd0 ../../LUFA/Drivers/USB/Class/Device/RNDISClassDevice.o
 
-.debug_info     0x0000000000000000     0x8f87
+.debug_info     0x0000000000000000     0x9207
  *(.debug_info)
- .debug_info    0x0000000000000000     0x11c9 USBtoSerial.o
- .debug_info    0x00000000000011c9      0x77d Descriptors.o
- .debug_info    0x0000000000001946      0x6f9 ../../LUFA/Drivers/USB/Class/Common/HIDParser.o
- .debug_info    0x000000000000203f       0xd8 ../../LUFA/Drivers/USB/Core/AVR8/Device_AVR8.o
- .debug_info    0x0000000000002117     0x154c ../../LUFA/Drivers/USB/Core/AVR8/EndpointStream_AVR8.o
- .debug_info    0x0000000000003663      0x603 ../../LUFA/Drivers/USB/Core/AVR8/Endpoint_AVR8.o
- .debug_info    0x0000000000003c66       0x6c ../../LUFA/Drivers/USB/Core/AVR8/Host_AVR8.o
- .debug_info    0x0000000000003cd2       0x6c ../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o
- .debug_info    0x0000000000003d3e       0x6c ../../LUFA/Drivers/USB/Core/AVR8/Pipe_AVR8.o
- .debug_info    0x0000000000003daa      0x412 ../../LUFA/Drivers/USB/Core/AVR8/USBController_AVR8.o
- .debug_info    0x00000000000041bc      0x662 ../../LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.o
- .debug_info    0x000000000000481e      0x38c ../../LUFA/Drivers/USB/Core/ConfigDescriptors.o
- .debug_info    0x0000000000004baa      0x973 ../../LUFA/Drivers/USB/Core/DeviceStandardReq.o
- .debug_info    0x000000000000551d       0x85 ../../LUFA/Drivers/USB/Core/Events.o
- .debug_info    0x00000000000055a2       0x6c ../../LUFA/Drivers/USB/Core/HostStandardReq.o
- .debug_info    0x000000000000560e      0x245 ../../LUFA/Drivers/USB/Core/USBTask.o
- .debug_info    0x0000000000005853      0x56c ../../LUFA/Drivers/USB/Class/Device/AudioClassDevice.o
- .debug_info    0x0000000000005dbf      0xc3b ../../LUFA/Drivers/USB/Class/Device/CDCClassDevice.o
- .debug_info    0x00000000000069fa      0x67a ../../LUFA/Drivers/USB/Class/Device/HIDClassDevice.o
- .debug_info    0x0000000000007074      0x7ca ../../LUFA/Drivers/USB/Class/Device/MassStorageClassDevice.o
- .debug_info    0x000000000000783e      0x4c1 ../../LUFA/Drivers/USB/Class/Device/MIDIClassDevice.o
- .debug_info    0x0000000000007cff      0xebc ../../LUFA/Drivers/USB/Class/Device/RNDISClassDevice.o
- .debug_info    0x0000000000008bbb       0x6c ../../LUFA/Drivers/USB/Class/Host/AndroidAccessoryClassHost.o
- .debug_info    0x0000000000008c27       0x6c ../../LUFA/Drivers/USB/Class/Host/AudioClassHost.o
- .debug_info    0x0000000000008c93       0x6c ../../LUFA/Drivers/USB/Class/Host/CDCClassHost.o
- .debug_info    0x0000000000008cff       0x6c ../../LUFA/Drivers/USB/Class/Host/HIDClassHost.o
- .debug_info    0x0000000000008d6b       0x6c ../../LUFA/Drivers/USB/Class/Host/MassStorageClassHost.o
- .debug_info    0x0000000000008dd7       0x6c ../../LUFA/Drivers/USB/Class/Host/MIDIClassHost.o
- .debug_info    0x0000000000008e43       0x6c ../../LUFA/Drivers/USB/Class/Host/PrinterClassHost.o
- .debug_info    0x0000000000008eaf       0x6c ../../LUFA/Drivers/USB/Class/Host/RNDISClassHost.o
- .debug_info    0x0000000000008f1b       0x6c ../../LUFA/Drivers/USB/Class/Host/StillImageClassHost.o
+ .debug_info    0x0000000000000000     0x1449 USBtoSerial.o
+ .debug_info    0x0000000000001449      0x77d Descriptors.o
+ .debug_info    0x0000000000001bc6      0x6f9 ../../LUFA/Drivers/USB/Class/Common/HIDParser.o
+ .debug_info    0x00000000000022bf       0xd8 ../../LUFA/Drivers/USB/Core/AVR8/Device_AVR8.o
+ .debug_info    0x0000000000002397     0x154c ../../LUFA/Drivers/USB/Core/AVR8/EndpointStream_AVR8.o
+ .debug_info    0x00000000000038e3      0x603 ../../LUFA/Drivers/USB/Core/AVR8/Endpoint_AVR8.o
+ .debug_info    0x0000000000003ee6       0x6c ../../LUFA/Drivers/USB/Core/AVR8/Host_AVR8.o
+ .debug_info    0x0000000000003f52       0x6c ../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o
+ .debug_info    0x0000000000003fbe       0x6c ../../LUFA/Drivers/USB/Core/AVR8/Pipe_AVR8.o
+ .debug_info    0x000000000000402a      0x412 ../../LUFA/Drivers/USB/Core/AVR8/USBController_AVR8.o
+ .debug_info    0x000000000000443c      0x662 ../../LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.o
+ .debug_info    0x0000000000004a9e      0x38c ../../LUFA/Drivers/USB/Core/ConfigDescriptors.o
+ .debug_info    0x0000000000004e2a      0x973 ../../LUFA/Drivers/USB/Core/DeviceStandardReq.o
+ .debug_info    0x000000000000579d       0x85 ../../LUFA/Drivers/USB/Core/Events.o
+ .debug_info    0x0000000000005822       0x6c ../../LUFA/Drivers/USB/Core/HostStandardReq.o
+ .debug_info    0x000000000000588e      0x245 ../../LUFA/Drivers/USB/Core/USBTask.o
+ .debug_info    0x0000000000005ad3      0x56c ../../LUFA/Drivers/USB/Class/Device/AudioClassDevice.o
+ .debug_info    0x000000000000603f      0xc3b ../../LUFA/Drivers/USB/Class/Device/CDCClassDevice.o
+ .debug_info    0x0000000000006c7a      0x67a ../../LUFA/Drivers/USB/Class/Device/HIDClassDevice.o
+ .debug_info    0x00000000000072f4      0x7ca ../../LUFA/Drivers/USB/Class/Device/MassStorageClassDevice.o
+ .debug_info    0x0000000000007abe      0x4c1 ../../LUFA/Drivers/USB/Class/Device/MIDIClassDevice.o
+ .debug_info    0x0000000000007f7f      0xebc ../../LUFA/Drivers/USB/Class/Device/RNDISClassDevice.o
+ .debug_info    0x0000000000008e3b       0x6c ../../LUFA/Drivers/USB/Class/Host/AndroidAccessoryClassHost.o
+ .debug_info    0x0000000000008ea7       0x6c ../../LUFA/Drivers/USB/Class/Host/AudioClassHost.o
+ .debug_info    0x0000000000008f13       0x6c ../../LUFA/Drivers/USB/Class/Host/CDCClassHost.o
+ .debug_info    0x0000000000008f7f       0x6c ../../LUFA/Drivers/USB/Class/Host/HIDClassHost.o
+ .debug_info    0x0000000000008feb       0x6c ../../LUFA/Drivers/USB/Class/Host/MassStorageClassHost.o
+ .debug_info    0x0000000000009057       0x6c ../../LUFA/Drivers/USB/Class/Host/MIDIClassHost.o
+ .debug_info    0x00000000000090c3       0x6c ../../LUFA/Drivers/USB/Class/Host/PrinterClassHost.o
+ .debug_info    0x000000000000912f       0x6c ../../LUFA/Drivers/USB/Class/Host/RNDISClassHost.o
+ .debug_info    0x000000000000919b       0x6c ../../LUFA/Drivers/USB/Class/Host/StillImageClassHost.o
  *(.gnu.linkonce.wi.*)
 
-.debug_abbrev   0x0000000000000000     0x21f5
+.debug_abbrev   0x0000000000000000     0x220b
  *(.debug_abbrev)
- .debug_abbrev  0x0000000000000000      0x46c USBtoSerial.o
- .debug_abbrev  0x000000000000046c      0x153 Descriptors.o
- .debug_abbrev  0x00000000000005bf      0x1ec ../../LUFA/Drivers/USB/Class/Common/HIDParser.o
- .debug_abbrev  0x00000000000007ab       0x7d ../../LUFA/Drivers/USB/Core/AVR8/Device_AVR8.o
- .debug_abbrev  0x0000000000000828      0x18b ../../LUFA/Drivers/USB/Core/AVR8/EndpointStream_AVR8.o
- .debug_abbrev  0x00000000000009b3      0x1ee ../../LUFA/Drivers/USB/Core/AVR8/Endpoint_AVR8.o
- .debug_abbrev  0x0000000000000ba1       0x2a ../../LUFA/Drivers/USB/Core/AVR8/Host_AVR8.o
- .debug_abbrev  0x0000000000000bcb       0x2a ../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o
- .debug_abbrev  0x0000000000000bf5       0x2a ../../LUFA/Drivers/USB/Core/AVR8/Pipe_AVR8.o
- .debug_abbrev  0x0000000000000c1f      0x14d ../../LUFA/Drivers/USB/Core/AVR8/USBController_AVR8.o
- .debug_abbrev  0x0000000000000d6c      0x1e2 ../../LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.o
- .debug_abbrev  0x0000000000000f4e      0x148 ../../LUFA/Drivers/USB/Core/ConfigDescriptors.o
- .debug_abbrev  0x0000000000001096      0x20b ../../LUFA/Drivers/USB/Core/DeviceStandardReq.o
- .debug_abbrev  0x00000000000012a1       0x41 ../../LUFA/Drivers/USB/Core/Events.o
- .debug_abbrev  0x00000000000012e2       0x2a ../../LUFA/Drivers/USB/Core/HostStandardReq.o
- .debug_abbrev  0x000000000000130c      0x14b ../../LUFA/Drivers/USB/Core/USBTask.o
- .debug_abbrev  0x0000000000001457      0x160 ../../LUFA/Drivers/USB/Class/Device/AudioClassDevice.o
- .debug_abbrev  0x00000000000015b7      0x2ec ../../LUFA/Drivers/USB/Class/Device/CDCClassDevice.o
- .debug_abbrev  0x00000000000018a3      0x1b5 ../../LUFA/Drivers/USB/Class/Device/HIDClassDevice.o
- .debug_abbrev  0x0000000000001a58      0x205 ../../LUFA/Drivers/USB/Class/Device/MassStorageClassDevice.o
- .debug_abbrev  0x0000000000001c5d      0x16c ../../LUFA/Drivers/USB/Class/Device/MIDIClassDevice.o
- .debug_abbrev  0x0000000000001dc9      0x2b2 ../../LUFA/Drivers/USB/Class/Device/RNDISClassDevice.o
- .debug_abbrev  0x000000000000207b       0x2a ../../LUFA/Drivers/USB/Class/Host/AndroidAccessoryClassHost.o
- .debug_abbrev  0x00000000000020a5       0x2a ../../LUFA/Drivers/USB/Class/Host/AudioClassHost.o
- .debug_abbrev  0x00000000000020cf       0x2a ../../LUFA/Drivers/USB/Class/Host/CDCClassHost.o
- .debug_abbrev  0x00000000000020f9       0x2a ../../LUFA/Drivers/USB/Class/Host/HIDClassHost.o
- .debug_abbrev  0x0000000000002123       0x2a ../../LUFA/Drivers/USB/Class/Host/MassStorageClassHost.o
- .debug_abbrev  0x000000000000214d       0x2a ../../LUFA/Drivers/USB/Class/Host/MIDIClassHost.o
- .debug_abbrev  0x0000000000002177       0x2a ../../LUFA/Drivers/USB/Class/Host/PrinterClassHost.o
- .debug_abbrev  0x00000000000021a1       0x2a ../../LUFA/Drivers/USB/Class/Host/RNDISClassHost.o
- .debug_abbrev  0x00000000000021cb       0x2a ../../LUFA/Drivers/USB/Class/Host/StillImageClassHost.o
-
-.debug_line     0x0000000000000000     0x781c
+ .debug_abbrev  0x0000000000000000      0x482 USBtoSerial.o
+ .debug_abbrev  0x0000000000000482      0x153 Descriptors.o
+ .debug_abbrev  0x00000000000005d5      0x1ec ../../LUFA/Drivers/USB/Class/Common/HIDParser.o
+ .debug_abbrev  0x00000000000007c1       0x7d ../../LUFA/Drivers/USB/Core/AVR8/Device_AVR8.o
+ .debug_abbrev  0x000000000000083e      0x18b ../../LUFA/Drivers/USB/Core/AVR8/EndpointStream_AVR8.o
+ .debug_abbrev  0x00000000000009c9      0x1ee ../../LUFA/Drivers/USB/Core/AVR8/Endpoint_AVR8.o
+ .debug_abbrev  0x0000000000000bb7       0x2a ../../LUFA/Drivers/USB/Core/AVR8/Host_AVR8.o
+ .debug_abbrev  0x0000000000000be1       0x2a ../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o
+ .debug_abbrev  0x0000000000000c0b       0x2a ../../LUFA/Drivers/USB/Core/AVR8/Pipe_AVR8.o
+ .debug_abbrev  0x0000000000000c35      0x14d ../../LUFA/Drivers/USB/Core/AVR8/USBController_AVR8.o
+ .debug_abbrev  0x0000000000000d82      0x1e2 ../../LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.o
+ .debug_abbrev  0x0000000000000f64      0x148 ../../LUFA/Drivers/USB/Core/ConfigDescriptors.o
+ .debug_abbrev  0x00000000000010ac      0x20b ../../LUFA/Drivers/USB/Core/DeviceStandardReq.o
+ .debug_abbrev  0x00000000000012b7       0x41 ../../LUFA/Drivers/USB/Core/Events.o
+ .debug_abbrev  0x00000000000012f8       0x2a ../../LUFA/Drivers/USB/Core/HostStandardReq.o
+ .debug_abbrev  0x0000000000001322      0x14b ../../LUFA/Drivers/USB/Core/USBTask.o
+ .debug_abbrev  0x000000000000146d      0x160 ../../LUFA/Drivers/USB/Class/Device/AudioClassDevice.o
+ .debug_abbrev  0x00000000000015cd      0x2ec ../../LUFA/Drivers/USB/Class/Device/CDCClassDevice.o
+ .debug_abbrev  0x00000000000018b9      0x1b5 ../../LUFA/Drivers/USB/Class/Device/HIDClassDevice.o
+ .debug_abbrev  0x0000000000001a6e      0x205 ../../LUFA/Drivers/USB/Class/Device/MassStorageClassDevice.o
+ .debug_abbrev  0x0000000000001c73      0x16c ../../LUFA/Drivers/USB/Class/Device/MIDIClassDevice.o
+ .debug_abbrev  0x0000000000001ddf      0x2b2 ../../LUFA/Drivers/USB/Class/Device/RNDISClassDevice.o
+ .debug_abbrev  0x0000000000002091       0x2a ../../LUFA/Drivers/USB/Class/Host/AndroidAccessoryClassHost.o
+ .debug_abbrev  0x00000000000020bb       0x2a ../../LUFA/Drivers/USB/Class/Host/AudioClassHost.o
+ .debug_abbrev  0x00000000000020e5       0x2a ../../LUFA/Drivers/USB/Class/Host/CDCClassHost.o
+ .debug_abbrev  0x000000000000210f       0x2a ../../LUFA/Drivers/USB/Class/Host/HIDClassHost.o
+ .debug_abbrev  0x0000000000002139       0x2a ../../LUFA/Drivers/USB/Class/Host/MassStorageClassHost.o
+ .debug_abbrev  0x0000000000002163       0x2a ../../LUFA/Drivers/USB/Class/Host/MIDIClassHost.o
+ .debug_abbrev  0x000000000000218d       0x2a ../../LUFA/Drivers/USB/Class/Host/PrinterClassHost.o
+ .debug_abbrev  0x00000000000021b7       0x2a ../../LUFA/Drivers/USB/Class/Host/RNDISClassHost.o
+ .debug_abbrev  0x00000000000021e1       0x2a ../../LUFA/Drivers/USB/Class/Host/StillImageClassHost.o
+
+.debug_line     0x0000000000000000     0x7b46
  *(.debug_line)
- .debug_line    0x0000000000000000     0x1239 USBtoSerial.o
- .debug_line    0x0000000000001239      0x1d9 Descriptors.o
- .debug_line    0x0000000000001412      0x762 ../../LUFA/Drivers/USB/Class/Common/HIDParser.o
- .debug_line    0x0000000000001b74      0x15f ../../LUFA/Drivers/USB/Core/AVR8/Device_AVR8.o
- .debug_line    0x0000000000001cd3     0x1a80 ../../LUFA/Drivers/USB/Core/AVR8/EndpointStream_AVR8.o
- .debug_line    0x0000000000003753      0x5a1 ../../LUFA/Drivers/USB/Core/AVR8/Endpoint_AVR8.o
- .debug_line    0x0000000000003cf4       0x3e ../../LUFA/Drivers/USB/Core/AVR8/Host_AVR8.o
- .debug_line    0x0000000000003d32       0x3e ../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o
- .debug_line    0x0000000000003d70       0x3e ../../LUFA/Drivers/USB/Core/AVR8/Pipe_AVR8.o
- .debug_line    0x0000000000003dae      0x312 ../../LUFA/Drivers/USB/Core/AVR8/USBController_AVR8.o
- .debug_line    0x00000000000040c0      0x55a ../../LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.o
- .debug_line    0x000000000000461a      0x269 ../../LUFA/Drivers/USB/Core/ConfigDescriptors.o
- .debug_line    0x0000000000004883      0x5a2 ../../LUFA/Drivers/USB/Core/DeviceStandardReq.o
- .debug_line    0x0000000000004e25       0x80 ../../LUFA/Drivers/USB/Core/Events.o
- .debug_line    0x0000000000004ea5       0x3e ../../LUFA/Drivers/USB/Core/HostStandardReq.o
- .debug_line    0x0000000000004ee3      0x1ae ../../LUFA/Drivers/USB/Core/USBTask.o
- .debug_line    0x0000000000005091      0x4be ../../LUFA/Drivers/USB/Class/Device/AudioClassDevice.o
- .debug_line    0x000000000000554f      0x9c2 ../../LUFA/Drivers/USB/Class/Device/CDCClassDevice.o
- .debug_line    0x0000000000005f11      0x5c3 ../../LUFA/Drivers/USB/Class/Device/HIDClassDevice.o
- .debug_line    0x00000000000064d4      0x5c6 ../../LUFA/Drivers/USB/Class/Device/MassStorageClassDevice.o
- .debug_line    0x0000000000006a9a      0x3bc ../../LUFA/Drivers/USB/Class/Device/MIDIClassDevice.o
- .debug_line    0x0000000000006e56      0x798 ../../LUFA/Drivers/USB/Class/Device/RNDISClassDevice.o
- .debug_line    0x00000000000075ee       0x3e ../../LUFA/Drivers/USB/Class/Host/AndroidAccessoryClassHost.o
- .debug_line    0x000000000000762c       0x3e ../../LUFA/Drivers/USB/Class/Host/AudioClassHost.o
- .debug_line    0x000000000000766a       0x3e ../../LUFA/Drivers/USB/Class/Host/CDCClassHost.o
- .debug_line    0x00000000000076a8       0x3e ../../LUFA/Drivers/USB/Class/Host/HIDClassHost.o
- .debug_line    0x00000000000076e6       0x3e ../../LUFA/Drivers/USB/Class/Host/MassStorageClassHost.o
- .debug_line    0x0000000000007724       0x3e ../../LUFA/Drivers/USB/Class/Host/MIDIClassHost.o
- .debug_line    0x0000000000007762       0x3e ../../LUFA/Drivers/USB/Class/Host/PrinterClassHost.o
- .debug_line    0x00000000000077a0       0x3e ../../LUFA/Drivers/USB/Class/Host/RNDISClassHost.o
- .debug_line    0x00000000000077de       0x3e ../../LUFA/Drivers/USB/Class/Host/StillImageClassHost.o
-
-.debug_frame    0x0000000000000000      0x890
+ .debug_line    0x0000000000000000     0x1563 USBtoSerial.o
+ .debug_line    0x0000000000001563      0x1d9 Descriptors.o
+ .debug_line    0x000000000000173c      0x762 ../../LUFA/Drivers/USB/Class/Common/HIDParser.o
+ .debug_line    0x0000000000001e9e      0x15f ../../LUFA/Drivers/USB/Core/AVR8/Device_AVR8.o
+ .debug_line    0x0000000000001ffd     0x1a80 ../../LUFA/Drivers/USB/Core/AVR8/EndpointStream_AVR8.o
+ .debug_line    0x0000000000003a7d      0x5a1 ../../LUFA/Drivers/USB/Core/AVR8/Endpoint_AVR8.o
+ .debug_line    0x000000000000401e       0x3e ../../LUFA/Drivers/USB/Core/AVR8/Host_AVR8.o
+ .debug_line    0x000000000000405c       0x3e ../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o
+ .debug_line    0x000000000000409a       0x3e ../../LUFA/Drivers/USB/Core/AVR8/Pipe_AVR8.o
+ .debug_line    0x00000000000040d8      0x312 ../../LUFA/Drivers/USB/Core/AVR8/USBController_AVR8.o
+ .debug_line    0x00000000000043ea      0x55a ../../LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.o
+ .debug_line    0x0000000000004944      0x269 ../../LUFA/Drivers/USB/Core/ConfigDescriptors.o
+ .debug_line    0x0000000000004bad      0x5a2 ../../LUFA/Drivers/USB/Core/DeviceStandardReq.o
+ .debug_line    0x000000000000514f       0x80 ../../LUFA/Drivers/USB/Core/Events.o
+ .debug_line    0x00000000000051cf       0x3e ../../LUFA/Drivers/USB/Core/HostStandardReq.o
+ .debug_line    0x000000000000520d      0x1ae ../../LUFA/Drivers/USB/Core/USBTask.o
+ .debug_line    0x00000000000053bb      0x4be ../../LUFA/Drivers/USB/Class/Device/AudioClassDevice.o
+ .debug_line    0x0000000000005879      0x9c2 ../../LUFA/Drivers/USB/Class/Device/CDCClassDevice.o
+ .debug_line    0x000000000000623b      0x5c3 ../../LUFA/Drivers/USB/Class/Device/HIDClassDevice.o
+ .debug_line    0x00000000000067fe      0x5c6 ../../LUFA/Drivers/USB/Class/Device/MassStorageClassDevice.o
+ .debug_line    0x0000000000006dc4      0x3bc ../../LUFA/Drivers/USB/Class/Device/MIDIClassDevice.o
+ .debug_line    0x0000000000007180      0x798 ../../LUFA/Drivers/USB/Class/Device/RNDISClassDevice.o
+ .debug_line    0x0000000000007918       0x3e ../../LUFA/Drivers/USB/Class/Host/AndroidAccessoryClassHost.o
+ .debug_line    0x0000000000007956       0x3e ../../LUFA/Drivers/USB/Class/Host/AudioClassHost.o
+ .debug_line    0x0000000000007994       0x3e ../../LUFA/Drivers/USB/Class/Host/CDCClassHost.o
+ .debug_line    0x00000000000079d2       0x3e ../../LUFA/Drivers/USB/Class/Host/HIDClassHost.o
+ .debug_line    0x0000000000007a10       0x3e ../../LUFA/Drivers/USB/Class/Host/MassStorageClassHost.o
+ .debug_line    0x0000000000007a4e       0x3e ../../LUFA/Drivers/USB/Class/Host/MIDIClassHost.o
+ .debug_line    0x0000000000007a8c       0x3e ../../LUFA/Drivers/USB/Class/Host/PrinterClassHost.o
+ .debug_line    0x0000000000007aca       0x3e ../../LUFA/Drivers/USB/Class/Host/RNDISClassHost.o
+ .debug_line    0x0000000000007b08       0x3e ../../LUFA/Drivers/USB/Class/Host/StillImageClassHost.o
+
+.debug_frame    0x0000000000000000      0x8e0
  *(.debug_frame)
- .debug_frame   0x0000000000000000      0x250 USBtoSerial.o
- .debug_frame   0x0000000000000250       0x20 Descriptors.o
- .debug_frame   0x0000000000000270       0x50 ../../LUFA/Drivers/USB/Class/Common/HIDParser.o
- .debug_frame   0x00000000000002c0       0x20 ../../LUFA/Drivers/USB/Core/AVR8/Device_AVR8.o
- .debug_frame   0x00000000000002e0      0x170 ../../LUFA/Drivers/USB/Core/AVR8/EndpointStream_AVR8.o
- .debug_frame   0x0000000000000450       0x60 ../../LUFA/Drivers/USB/Core/AVR8/Endpoint_AVR8.o
- .debug_frame   0x00000000000004b0       0x40 ../../LUFA/Drivers/USB/Core/AVR8/USBController_AVR8.o
- .debug_frame   0x00000000000004f0       0x50 ../../LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.o
- .debug_frame   0x0000000000000540       0x50 ../../LUFA/Drivers/USB/Core/ConfigDescriptors.o
- .debug_frame   0x0000000000000590       0x20 ../../LUFA/Drivers/USB/Core/DeviceStandardReq.o
- .debug_frame   0x00000000000005b0       0x20 ../../LUFA/Drivers/USB/Core/Events.o
- .debug_frame   0x00000000000005d0       0x20 ../../LUFA/Drivers/USB/Core/USBTask.o
- .debug_frame   0x00000000000005f0       0x40 ../../LUFA/Drivers/USB/Class/Device/AudioClassDevice.o
- .debug_frame   0x0000000000000630      0x110 ../../LUFA/Drivers/USB/Class/Device/CDCClassDevice.o
- .debug_frame   0x0000000000000740       0x40 ../../LUFA/Drivers/USB/Class/Device/HIDClassDevice.o
- .debug_frame   0x0000000000000780       0x40 ../../LUFA/Drivers/USB/Class/Device/MassStorageClassDevice.o
- .debug_frame   0x00000000000007c0       0x60 ../../LUFA/Drivers/USB/Class/Device/MIDIClassDevice.o
- .debug_frame   0x0000000000000820       0x70 ../../LUFA/Drivers/USB/Class/Device/RNDISClassDevice.o
-
-.debug_str      0x0000000000000000     0x3c87
+ .debug_frame   0x0000000000000000      0x2a0 USBtoSerial.o
+ .debug_frame   0x00000000000002a0       0x20 Descriptors.o
+ .debug_frame   0x00000000000002c0       0x50 ../../LUFA/Drivers/USB/Class/Common/HIDParser.o
+ .debug_frame   0x0000000000000310       0x20 ../../LUFA/Drivers/USB/Core/AVR8/Device_AVR8.o
+ .debug_frame   0x0000000000000330      0x170 ../../LUFA/Drivers/USB/Core/AVR8/EndpointStream_AVR8.o
+ .debug_frame   0x00000000000004a0       0x60 ../../LUFA/Drivers/USB/Core/AVR8/Endpoint_AVR8.o
+ .debug_frame   0x0000000000000500       0x40 ../../LUFA/Drivers/USB/Core/AVR8/USBController_AVR8.o
+ .debug_frame   0x0000000000000540       0x50 ../../LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.o
+ .debug_frame   0x0000000000000590       0x50 ../../LUFA/Drivers/USB/Core/ConfigDescriptors.o
+ .debug_frame   0x00000000000005e0       0x20 ../../LUFA/Drivers/USB/Core/DeviceStandardReq.o
+ .debug_frame   0x0000000000000600       0x20 ../../LUFA/Drivers/USB/Core/Events.o
+ .debug_frame   0x0000000000000620       0x20 ../../LUFA/Drivers/USB/Core/USBTask.o
+ .debug_frame   0x0000000000000640       0x40 ../../LUFA/Drivers/USB/Class/Device/AudioClassDevice.o
+ .debug_frame   0x0000000000000680      0x110 ../../LUFA/Drivers/USB/Class/Device/CDCClassDevice.o
+ .debug_frame   0x0000000000000790       0x40 ../../LUFA/Drivers/USB/Class/Device/HIDClassDevice.o
+ .debug_frame   0x00000000000007d0       0x40 ../../LUFA/Drivers/USB/Class/Device/MassStorageClassDevice.o
+ .debug_frame   0x0000000000000810       0x60 ../../LUFA/Drivers/USB/Class/Device/MIDIClassDevice.o
+ .debug_frame   0x0000000000000870       0x70 ../../LUFA/Drivers/USB/Class/Device/RNDISClassDevice.o
+
+.debug_str      0x0000000000000000     0x3d5d
  *(.debug_str)
- .debug_str     0x0000000000000000      0x9c9 USBtoSerial.o
-                                        0xa70 (size before relaxing)
- .debug_str     0x00000000000009c9      0x8ba Descriptors.o
+ .debug_str     0x0000000000000000      0xa9f USBtoSerial.o
+                                        0xb57 (size before relaxing)
+ .debug_str     0x0000000000000a9f      0x8ba Descriptors.o
                                         0xa07 (size before relaxing)
- .debug_str     0x0000000000001283      0x47c ../../LUFA/Drivers/USB/Class/Common/HIDParser.o
+ .debug_str     0x0000000000001359      0x47c ../../LUFA/Drivers/USB/Class/Common/HIDParser.o
                                         0x5e7 (size before relaxing)
- .debug_str     0x00000000000016ff       0x77 ../../LUFA/Drivers/USB/Core/AVR8/Device_AVR8.o
+ .debug_str     0x00000000000017d5       0x77 ../../LUFA/Drivers/USB/Core/AVR8/Device_AVR8.o
                                         0x14a (size before relaxing)
- .debug_str     0x0000000000001776      0x592 ../../LUFA/Drivers/USB/Core/AVR8/EndpointStream_AVR8.o
+ .debug_str     0x000000000000184c      0x592 ../../LUFA/Drivers/USB/Core/AVR8/EndpointStream_AVR8.o
                                         0x760 (size before relaxing)
- .debug_str     0x0000000000001d08      0x212 ../../LUFA/Drivers/USB/Core/AVR8/Endpoint_AVR8.o
+ .debug_str     0x0000000000001dde      0x212 ../../LUFA/Drivers/USB/Core/AVR8/Endpoint_AVR8.o
                                         0x55c (size before relaxing)
- .debug_str     0x0000000000001f1a       0x2d ../../LUFA/Drivers/USB/Core/AVR8/Host_AVR8.o
+ .debug_str     0x0000000000001ff0       0x2d ../../LUFA/Drivers/USB/Core/AVR8/Host_AVR8.o
                                          0xf2 (size before relaxing)
- .debug_str     0x0000000000001f47       0x33 ../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o
+ .debug_str     0x000000000000201d       0x33 ../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o
                                          0xf8 (size before relaxing)
- .debug_str     0x0000000000001f7a       0x2d ../../LUFA/Drivers/USB/Core/AVR8/Pipe_AVR8.o
+ .debug_str     0x0000000000002050       0x2d ../../LUFA/Drivers/USB/Core/AVR8/Pipe_AVR8.o
                                          0xf2 (size before relaxing)
- .debug_str     0x0000000000001fa7      0x209 ../../LUFA/Drivers/USB/Core/AVR8/USBController_AVR8.o
+ .debug_str     0x000000000000207d      0x209 ../../LUFA/Drivers/USB/Core/AVR8/USBController_AVR8.o
                                         0x41b (size before relaxing)
- .debug_str     0x00000000000021b0      0x113 ../../LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.o
+ .debug_str     0x0000000000002286      0x113 ../../LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.o
                                         0x41d (size before relaxing)
- .debug_str     0x00000000000022c3      0x227 ../../LUFA/Drivers/USB/Core/ConfigDescriptors.o
+ .debug_str     0x0000000000002399      0x227 ../../LUFA/Drivers/USB/Core/ConfigDescriptors.o
                                         0x332 (size before relaxing)
- .debug_str     0x00000000000024ea      0x3b2 ../../LUFA/Drivers/USB/Core/DeviceStandardReq.o
+ .debug_str     0x00000000000025c0      0x3b2 ../../LUFA/Drivers/USB/Core/DeviceStandardReq.o
                                         0x850 (size before relaxing)
- .debug_str     0x000000000000289c       0x34 ../../LUFA/Drivers/USB/Core/Events.o
+ .debug_str     0x0000000000002972       0x34 ../../LUFA/Drivers/USB/Core/Events.o
                                          0xf9 (size before relaxing)
- .debug_str     0x00000000000028d0       0x2e ../../LUFA/Drivers/USB/Core/HostStandardReq.o
+ .debug_str     0x00000000000029a6       0x2e ../../LUFA/Drivers/USB/Core/HostStandardReq.o
                                          0xf3 (size before relaxing)
- .debug_str     0x00000000000028fe       0x4e ../../LUFA/Drivers/USB/Core/USBTask.o
+ .debug_str     0x00000000000029d4       0x4e ../../LUFA/Drivers/USB/Core/USBTask.o
                                         0x2a0 (size before relaxing)
- .debug_str     0x000000000000294c      0x239 ../../LUFA/Drivers/USB/Class/Device/AudioClassDevice.o
+ .debug_str     0x0000000000002a22      0x239 ../../LUFA/Drivers/USB/Class/Device/AudioClassDevice.o
                                         0x520 (size before relaxing)
- .debug_str     0x0000000000002b85      0x2fa ../../LUFA/Drivers/USB/Class/Device/CDCClassDevice.o
+ .debug_str     0x0000000000002c5b      0x2fa ../../LUFA/Drivers/USB/Class/Device/CDCClassDevice.o
                                         0x8d4 (size before relaxing)
- .debug_str     0x0000000000002e7f      0x1ed ../../LUFA/Drivers/USB/Class/Device/HIDClassDevice.o
+ .debug_str     0x0000000000002f55      0x1ed ../../LUFA/Drivers/USB/Class/Device/HIDClassDevice.o
                                         0x54f (size before relaxing)
- .debug_str     0x000000000000306c      0x23d ../../LUFA/Drivers/USB/Class/Device/MassStorageClassDevice.o
+ .debug_str     0x0000000000003142      0x23d ../../LUFA/Drivers/USB/Class/Device/MassStorageClassDevice.o
                                         0x6b0 (size before relaxing)
- .debug_str     0x00000000000032a9      0x118 ../../LUFA/Drivers/USB/Class/Device/MIDIClassDevice.o
+ .debug_str     0x000000000000337f      0x118 ../../LUFA/Drivers/USB/Class/Device/MIDIClassDevice.o
                                         0x537 (size before relaxing)
- .debug_str     0x00000000000033c1      0x6e8 ../../LUFA/Drivers/USB/Class/Device/RNDISClassDevice.o
+ .debug_str     0x0000000000003497      0x6e8 ../../LUFA/Drivers/USB/Class/Device/RNDISClassDevice.o
                                         0xbe8 (size before relaxing)
- .debug_str     0x0000000000003aa9       0x3e ../../LUFA/Drivers/USB/Class/Host/AndroidAccessoryClassHost.o
+ .debug_str     0x0000000000003b7f       0x3e ../../LUFA/Drivers/USB/Class/Host/AndroidAccessoryClassHost.o
                                         0x103 (size before relaxing)
- .debug_str     0x0000000000003ae7       0x33 ../../LUFA/Drivers/USB/Class/Host/AudioClassHost.o
+ .debug_str     0x0000000000003bbd       0x33 ../../LUFA/Drivers/USB/Class/Host/AudioClassHost.o
                                          0xf8 (size before relaxing)
- .debug_str     0x0000000000003b1a       0x31 ../../LUFA/Drivers/USB/Class/Host/CDCClassHost.o
+ .debug_str     0x0000000000003bf0       0x31 ../../LUFA/Drivers/USB/Class/Host/CDCClassHost.o
                                          0xf6 (size before relaxing)
- .debug_str     0x0000000000003b4b       0x31 ../../LUFA/Drivers/USB/Class/Host/HIDClassHost.o
+ .debug_str     0x0000000000003c21       0x31 ../../LUFA/Drivers/USB/Class/Host/HIDClassHost.o
                                          0xf6 (size before relaxing)
- .debug_str     0x0000000000003b7c       0x39 ../../LUFA/Drivers/USB/Class/Host/MassStorageClassHost.o
+ .debug_str     0x0000000000003c52       0x39 ../../LUFA/Drivers/USB/Class/Host/MassStorageClassHost.o
                                          0xfe (size before relaxing)
- .debug_str     0x0000000000003bb5       0x32 ../../LUFA/Drivers/USB/Class/Host/MIDIClassHost.o
+ .debug_str     0x0000000000003c8b       0x32 ../../LUFA/Drivers/USB/Class/Host/MIDIClassHost.o
                                          0xf7 (size before relaxing)
- .debug_str     0x0000000000003be7       0x35 ../../LUFA/Drivers/USB/Class/Host/PrinterClassHost.o
+ .debug_str     0x0000000000003cbd       0x35 ../../LUFA/Drivers/USB/Class/Host/PrinterClassHost.o
                                          0xfa (size before relaxing)
- .debug_str     0x0000000000003c1c       0x33 ../../LUFA/Drivers/USB/Class/Host/RNDISClassHost.o
+ .debug_str     0x0000000000003cf2       0x33 ../../LUFA/Drivers/USB/Class/Host/RNDISClassHost.o
                                          0xf8 (size before relaxing)
- .debug_str     0x0000000000003c4f       0x38 ../../LUFA/Drivers/USB/Class/Host/StillImageClassHost.o
+ .debug_str     0x0000000000003d25       0x38 ../../LUFA/Drivers/USB/Class/Host/StillImageClassHost.o
                                          0xfd (size before relaxing)
 
-.debug_loc      0x0000000000000000     0x4764
+.debug_loc      0x0000000000000000     0x4a7a
  *(.debug_loc)
- .debug_loc     0x0000000000000000      0x6c8 USBtoSerial.o
- .debug_loc     0x00000000000006c8       0xd3 Descriptors.o
- .debug_loc     0x000000000000079b      0x88f ../../LUFA/Drivers/USB/Class/Common/HIDParser.o
- .debug_loc     0x000000000000102a     0x1982 ../../LUFA/Drivers/USB/Core/AVR8/EndpointStream_AVR8.o
- .debug_loc     0x00000000000029ac      0x390 ../../LUFA/Drivers/USB/Core/AVR8/Endpoint_AVR8.o
- .debug_loc     0x0000000000002d3c      0x190 ../../LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.o
- .debug_loc     0x0000000000002ecc      0x2bc ../../LUFA/Drivers/USB/Core/ConfigDescriptors.o
- .debug_loc     0x0000000000003188      0x22a ../../LUFA/Drivers/USB/Core/DeviceStandardReq.o
- .debug_loc     0x00000000000033b2       0x27 ../../LUFA/Drivers/USB/Core/USBTask.o
- .debug_loc     0x00000000000033d9      0x16d ../../LUFA/Drivers/USB/Class/Device/AudioClassDevice.o
- .debug_loc     0x0000000000003546      0x52b ../../LUFA/Drivers/USB/Class/Device/CDCClassDevice.o
- .debug_loc     0x0000000000003a71      0x249 ../../LUFA/Drivers/USB/Class/Device/HIDClassDevice.o
- .debug_loc     0x0000000000003cba      0x152 ../../LUFA/Drivers/USB/Class/Device/MassStorageClassDevice.o
- .debug_loc     0x0000000000003e0c      0x1f6 ../../LUFA/Drivers/USB/Class/Device/MIDIClassDevice.o
- .debug_loc     0x0000000000004002      0x762 ../../LUFA/Drivers/USB/Class/Device/RNDISClassDevice.o
+ .debug_loc     0x0000000000000000      0x9de USBtoSerial.o
+ .debug_loc     0x00000000000009de       0xd3 Descriptors.o
+ .debug_loc     0x0000000000000ab1      0x88f ../../LUFA/Drivers/USB/Class/Common/HIDParser.o
+ .debug_loc     0x0000000000001340     0x1982 ../../LUFA/Drivers/USB/Core/AVR8/EndpointStream_AVR8.o
+ .debug_loc     0x0000000000002cc2      0x390 ../../LUFA/Drivers/USB/Core/AVR8/Endpoint_AVR8.o
+ .debug_loc     0x0000000000003052      0x190 ../../LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.o
+ .debug_loc     0x00000000000031e2      0x2bc ../../LUFA/Drivers/USB/Core/ConfigDescriptors.o
+ .debug_loc     0x000000000000349e      0x22a ../../LUFA/Drivers/USB/Core/DeviceStandardReq.o
+ .debug_loc     0x00000000000036c8       0x27 ../../LUFA/Drivers/USB/Core/USBTask.o
+ .debug_loc     0x00000000000036ef      0x16d ../../LUFA/Drivers/USB/Class/Device/AudioClassDevice.o
+ .debug_loc     0x000000000000385c      0x52b ../../LUFA/Drivers/USB/Class/Device/CDCClassDevice.o
+ .debug_loc     0x0000000000003d87      0x249 ../../LUFA/Drivers/USB/Class/Device/HIDClassDevice.o
+ .debug_loc     0x0000000000003fd0      0x152 ../../LUFA/Drivers/USB/Class/Device/MassStorageClassDevice.o
+ .debug_loc     0x0000000000004122      0x1f6 ../../LUFA/Drivers/USB/Class/Device/MIDIClassDevice.o
+ .debug_loc     0x0000000000004318      0x762 ../../LUFA/Drivers/USB/Class/Device/RNDISClassDevice.o
 
 .debug_macinfo
  *(.debug_macinfo)
@@ -1382,25 +1437,25 @@ LOAD linker stubs
  .debug_pubtypes
                 0x00000000000010ff       0x12 ../../LUFA/Drivers/USB/Class/Host/StillImageClassHost.o
 
-.debug_ranges   0x0000000000000000      0x7c0
- .debug_ranges  0x0000000000000000      0x128 USBtoSerial.o
- .debug_ranges  0x0000000000000128       0x10 Descriptors.o
- .debug_ranges  0x0000000000000138      0x100 ../../LUFA/Drivers/USB/Class/Common/HIDParser.o
- .debug_ranges  0x0000000000000238       0x10 ../../LUFA/Drivers/USB/Core/AVR8/Device_AVR8.o
- .debug_ranges  0x0000000000000248      0x298 ../../LUFA/Drivers/USB/Core/AVR8/EndpointStream_AVR8.o
- .debug_ranges  0x00000000000004e0       0xa8 ../../LUFA/Drivers/USB/Core/AVR8/Endpoint_AVR8.o
- .debug_ranges  0x0000000000000588       0x20 ../../LUFA/Drivers/USB/Core/AVR8/USBController_AVR8.o
- .debug_ranges  0x00000000000005a8       0x28 ../../LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.o
- .debug_ranges  0x00000000000005d0       0x28 ../../LUFA/Drivers/USB/Core/ConfigDescriptors.o
- .debug_ranges  0x00000000000005f8       0x10 ../../LUFA/Drivers/USB/Core/DeviceStandardReq.o
- .debug_ranges  0x0000000000000608       0x10 ../../LUFA/Drivers/USB/Core/Events.o
- .debug_ranges  0x0000000000000618       0x10 ../../LUFA/Drivers/USB/Core/USBTask.o
- .debug_ranges  0x0000000000000628       0x20 ../../LUFA/Drivers/USB/Class/Device/AudioClassDevice.o
- .debug_ranges  0x0000000000000648       0x88 ../../LUFA/Drivers/USB/Class/Device/CDCClassDevice.o
- .debug_ranges  0x00000000000006d0       0x20 ../../LUFA/Drivers/USB/Class/Device/HIDClassDevice.o
- .debug_ranges  0x00000000000006f0       0x20 ../../LUFA/Drivers/USB/Class/Device/MassStorageClassDevice.o
- .debug_ranges  0x0000000000000710       0x30 ../../LUFA/Drivers/USB/Class/Device/MIDIClassDevice.o
- .debug_ranges  0x0000000000000740       0x80 ../../LUFA/Drivers/USB/Class/Device/RNDISClassDevice.o
+.debug_ranges   0x0000000000000000      0x818
+ .debug_ranges  0x0000000000000000      0x180 USBtoSerial.o
+ .debug_ranges  0x0000000000000180       0x10 Descriptors.o
+ .debug_ranges  0x0000000000000190      0x100 ../../LUFA/Drivers/USB/Class/Common/HIDParser.o
+ .debug_ranges  0x0000000000000290       0x10 ../../LUFA/Drivers/USB/Core/AVR8/Device_AVR8.o
+ .debug_ranges  0x00000000000002a0      0x298 ../../LUFA/Drivers/USB/Core/AVR8/EndpointStream_AVR8.o
+ .debug_ranges  0x0000000000000538       0xa8 ../../LUFA/Drivers/USB/Core/AVR8/Endpoint_AVR8.o
+ .debug_ranges  0x00000000000005e0       0x20 ../../LUFA/Drivers/USB/Core/AVR8/USBController_AVR8.o
+ .debug_ranges  0x0000000000000600       0x28 ../../LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.o
+ .debug_ranges  0x0000000000000628       0x28 ../../LUFA/Drivers/USB/Core/ConfigDescriptors.o
+ .debug_ranges  0x0000000000000650       0x10 ../../LUFA/Drivers/USB/Core/DeviceStandardReq.o
+ .debug_ranges  0x0000000000000660       0x10 ../../LUFA/Drivers/USB/Core/Events.o
+ .debug_ranges  0x0000000000000670       0x10 ../../LUFA/Drivers/USB/Core/USBTask.o
+ .debug_ranges  0x0000000000000680       0x20 ../../LUFA/Drivers/USB/Class/Device/AudioClassDevice.o
+ .debug_ranges  0x00000000000006a0       0x88 ../../LUFA/Drivers/USB/Class/Device/CDCClassDevice.o
+ .debug_ranges  0x0000000000000728       0x20 ../../LUFA/Drivers/USB/Class/Device/HIDClassDevice.o
+ .debug_ranges  0x0000000000000748       0x20 ../../LUFA/Drivers/USB/Class/Device/MassStorageClassDevice.o
+ .debug_ranges  0x0000000000000768       0x30 ../../LUFA/Drivers/USB/Class/Device/MIDIClassDevice.o
+ .debug_ranges  0x0000000000000798       0x80 ../../LUFA/Drivers/USB/Class/Device/RNDISClassDevice.o
 
 Cross Reference Table
 
@@ -1654,6 +1709,11 @@ __ltsf2                                           /usr/lib/gcc/avr/4.5.3/../../.
                                                   USBtoSerial.o
 __mulhi3                                          /usr/lib/gcc/avr/4.5.3/avr35/libgcc.a(_mulhi3.o)
                                                   ../../LUFA/Drivers/USB/Class/Common/HIDParser.o
+                                                  USBtoSerial.o
+__mulhi_const_10                                  /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libc.a(mul10.o)
+                                                  /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libc.a(atoi.o)
+__mulsi3                                          /usr/lib/gcc/avr/4.5.3/avr35/libgcc.a(_mulsi3.o)
+                                                  USBtoSerial.o
 __nesf2                                           /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libm.a(cmpsf2.o)
 __stack                                           /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/crtm32u2.o
 __subsf3                                          /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libm.a(addsf3.o)
@@ -1711,6 +1771,8 @@ _exit                                             /usr/lib/gcc/avr/4.5.3/avr35/l
 adb                                               USBtoSerial.o
 adb_data_length                                   USBtoSerial.o
 adb_werte                                         USBtoSerial.o
+atoi                                              /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libc.a(atoi.o)
+                                                  USBtoSerial.o
 decode_field                                      USBtoSerial.o
 delta_x                                           USBtoSerial.o
 delta_y                                           USBtoSerial.o
@@ -1731,18 +1793,28 @@ memset                                            /usr/lib/gcc/avr/4.5.3/../../.
 motor_step                                        USBtoSerial.o
 move_plate                                        USBtoSerial.o
 my_uitoa                                          USBtoSerial.o
+parse_command                                     USBtoSerial.o
 phase_pattern                                     USBtoSerial.o
+plate_pos_x                                       USBtoSerial.o
+plate_pos_y                                       USBtoSerial.o
+pos_report                                        USBtoSerial.o
 set_x                                             USBtoSerial.o
 set_y                                             USBtoSerial.o
 sign                                              USBtoSerial.o
+stringbuffer                                      USBtoSerial.o
+strncpy                                           /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libc.a(strncpy.o)
+                                                  USBtoSerial.o
 t0ext                                             USBtoSerial.o
 t0ovfcount                                        USBtoSerial.o
 t0rst                                             USBtoSerial.o
+times_ten_pow                                     USBtoSerial.o
 touchpad_init                                     USBtoSerial.o
 touchpad_read                                     USBtoSerial.o
 touchpad_set_abs_mode                             USBtoSerial.o
 touchpad_set_rel_mode_100dpi                      USBtoSerial.o
 touchpad_set_rel_mode_200dpi                      USBtoSerial.o
+uart_print_number                                 USBtoSerial.o
+uart_print_signed_number                          USBtoSerial.o
 uart_putc                                         USBtoSerial.o
 uart_puts                                         USBtoSerial.o
 x_abs                                             USBtoSerial.o
index 60e5cf015da05905281132bb19f3f1ab2c20d330..e19b913e8607ec2f57f4a7d3375226527c1c0998 100644 (file)
Binary files a/firmware/USBtoSerial.o and b/firmware/USBtoSerial.o differ
index 560cc8a3ac884bc585daf966f3517cc3d7612b9f..0d09d6cfa69e1abdb28e59236b3ff37fb0786713 100644 (file)
 000004ff W __stack
 00000546 T touchpad_init
 00000556 T touchpad_read
-00000568 T touchpad_set_abs_mode
-000005a4 T touchpad_set_rel_mode_100dpi
-000005cc T delta_y
-000005ec T delta_x
-0000060c T Usb2SerialTask
-000006c0 T SetupHardware
-000006ea T EVENT_USB_Device_Connect
-000006ec T EVENT_USB_Device_Disconnect
-000006ee T EVENT_USB_Device_ConfigurationChanged
-000006f4 T EVENT_USB_Device_ControlRequest
-000006fa T __vector_23
-0000074e T EVENT_CDC_Device_LineEncodingChanged
-00000814 T uart_putc
-00000824 T uart_puts
-0000084a T my_uitoa
-0000091a T init_motors
-00000934 T motor_step
-00000998 T sign
-000009b0 T move_plate
-00000a34 T main
-00000b3a T CALLBACK_USB_GetDescriptor
-00000b94 T Endpoint_Write_Control_Stream_LE
-00000c48 T Endpoint_Write_Control_PStream_LE
-00000cfe T Endpoint_ConfigureEndpoint_Prv
-00000d6c T Endpoint_ConfigureEndpointTable
-00000df4 T Endpoint_ClearStatusStage
-00000e32 T Endpoint_WaitUntilReady
-00000e98 T USB_ResetInterface
-00000f08 T USB_Init
-00000f1a T USB_INT_DisableAllInterrupts
-00000f20 T USB_INT_ClearAllInterrupts
-00000f26 T __vector_11
-0000106e T __vector_12
-000010e4 T USB_Device_ProcessControlRequest
-000013a6 W EVENT_USB_Device_Reset
-000013a6 W EVENT_USB_Device_StartOfFrame
-000013a6 W EVENT_USB_Device_Suspend
-000013a6 W EVENT_USB_Device_WakeUp
-000013a6 T USB_Event_Stub
-000013a8 T USB_USBTask
-000013de T CDC_Device_ProcessControlRequest
-00001536 T CDC_Device_ConfigureEndpoints
-0000157e T CDC_Device_SendByte
-000015d8 T CDC_Device_Flush
-00001632 T CDC_Device_USBTask
-00001660 T CDC_Device_ReceiveByte
-000016ba T CDC_Device_Event_Stub
-000016ba W EVENT_CDC_Device_BreakSent
-000016ba W EVENT_CDC_Device_ControLineStateChanged
-000016bc T __subsf3
-000016be T __addsf3
-000016e0 T __addsf3x
-00001786 T __cmpsf2
-00001786 T __eqsf2
-00001786 T __lesf2
-00001786 T __ltsf2
-00001786 T __nesf2
-0000178e T __divsf3
-000017a8 T __divsf3x
-000017ac T __divsf3_pse
-0000185e T __fixunssfsi
-000018b6 T __floatunsisf
-000018ba T __floatsisf
-00001930 T __fp_cmp
-00001978 T __fp_inf
-00001984 T __fp_nan
-0000198a T __fp_pscA
-00001998 T __fp_pscB
-000019a6 T __fp_round
-000019c8 T __fp_split3
-000019d8 T __fp_splitA
-00001a0c T __fp_zero
-00001a0e T __fp_szero
-00001a1a T __gesf2
-00001a1a T __gtsf2
-00001a22 T __udivmodhi4
-00001a2a t __udivmodhi4_loop
-00001a38 t __udivmodhi4_ep
-00001a4a T __divmodhi4
-00001a4a T _div
-00001a5e t __divmodhi4_neg2
-00001a64 t __divmodhi4_exit
-00001a66 t __divmodhi4_neg1
-00001a70 T __udivmodsi4
-00001a7c t __udivmodsi4_loop
-00001a96 t __udivmodsi4_ep
-00001ab4 T _exit
-00001ab4 W exit
-00001ab6 t __stop_program
-00001ab8 A __data_load_start
-00001ab8 T _etext
-00001b22 A __data_load_end
+00000568 T touchpad_set_rel_mode_100dpi
+00000590 T delta_y
+000005b0 T delta_x
+000005d0 T Usb2SerialTask
+00000666 T SetupHardware
+00000690 T EVENT_USB_Device_Connect
+00000692 T EVENT_USB_Device_Disconnect
+00000694 T EVENT_USB_Device_ConfigurationChanged
+0000069c T EVENT_USB_Device_ControlRequest
+000006a4 T __vector_23
+000006f8 T EVENT_CDC_Device_LineEncodingChanged
+000007c4 T uart_putc
+000007d4 T uart_puts
+000007fa T my_uitoa
+000008ca T sign
+000008e2 T uart_print_number
+00000902 T uart_print_signed_number
+0000093e T init_motors
+00000958 T motor_step
+000009bc T move_plate
+00000a52 T pos_report
+00000a8c T parse_command
+00000dc8 T main
+00000e76 T CALLBACK_USB_GetDescriptor
+00000ed0 T Endpoint_Write_Control_Stream_LE
+00000f84 T Endpoint_Write_Control_PStream_LE
+0000103a T Endpoint_ConfigureEndpoint_Prv
+000010a8 T Endpoint_ConfigureEndpointTable
+00001130 T Endpoint_ClearStatusStage
+0000116e T Endpoint_WaitUntilReady
+000011d4 T USB_ResetInterface
+00001244 T USB_Init
+00001256 T USB_INT_DisableAllInterrupts
+0000125c T USB_INT_ClearAllInterrupts
+00001262 T __vector_11
+000013aa T __vector_12
+00001420 T USB_Device_ProcessControlRequest
+000016e4 W EVENT_USB_Device_Reset
+000016e4 W EVENT_USB_Device_StartOfFrame
+000016e4 W EVENT_USB_Device_Suspend
+000016e4 W EVENT_USB_Device_WakeUp
+000016e4 T USB_Event_Stub
+000016e6 T USB_USBTask
+0000171c T CDC_Device_ProcessControlRequest
+00001876 T CDC_Device_ConfigureEndpoints
+000018be T CDC_Device_SendByte
+00001918 T CDC_Device_Flush
+00001972 T CDC_Device_USBTask
+000019a0 T CDC_Device_ReceiveByte
+000019fa T CDC_Device_Event_Stub
+000019fa W EVENT_CDC_Device_BreakSent
+000019fa W EVENT_CDC_Device_ControLineStateChanged
+000019fc T __subsf3
+000019fe T __addsf3
+00001a20 T __addsf3x
+00001ac6 T __cmpsf2
+00001ac6 T __eqsf2
+00001ac6 T __lesf2
+00001ac6 T __ltsf2
+00001ac6 T __nesf2
+00001ace T __divsf3
+00001ae8 T __divsf3x
+00001aec T __divsf3_pse
+00001b9e T __fixunssfsi
+00001bf6 T __floatunsisf
+00001bfa T __floatsisf
+00001c70 T __fp_cmp
+00001cb8 T __fp_inf
+00001cc4 T __fp_nan
+00001cca T __fp_pscA
+00001cd8 T __fp_pscB
+00001ce6 T __fp_round
+00001d08 T __fp_split3
+00001d18 T __fp_splitA
+00001d4c T __fp_zero
+00001d4e T __fp_szero
+00001d5a T __gesf2
+00001d5a T __gtsf2
+00001d62 T __mulhi3
+00001d66 t __mulhi3_loop
+00001d6e t __mulhi3_skip1
+00001d80 t __mulhi3_exit
+00001d86 T __udivmodhi4
+00001d8e t __udivmodhi4_loop
+00001d9c t __udivmodhi4_ep
+00001dae T __divmodhi4
+00001dae T _div
+00001dc2 t __divmodhi4_neg2
+00001dc8 t __divmodhi4_exit
+00001dca t __divmodhi4_neg1
+00001dd4 T __udivmodsi4
+00001de0 t __udivmodsi4_loop
+00001dfa t __udivmodsi4_ep
+00001e18 T atoi
+00001e52 T strncpy
+00001e70 T __mulhi_const_10
+00001e84 T _exit
+00001e84 W exit
+00001e86 t __stop_program
+00001e88 A __data_load_start
+00001e88 T _etext
+00001f02 A __data_load_end
 00800100 D __data_start
-00800145 D VirtualSerial_CDC_Interface
-00800160 D phase_pattern
-00800164 d CSWTCH.16
-00800166 d CSWTCH.19
-0080016a b USBtoUSART_Buffer
-0080016a B __bss_start
-0080016a D __data_end
-0080016a D _edata
-00800176 b USBtoUSART_Buffer_Data
-008001f6 b USARTtoUSB_Buffer
-00800202 b USARTtoUSB_Buffer_Data
-00800282 b todo_y.4082
-00800284 b todo_x.4081
-00800286 b phase_memory.4068
-00800288 b y_mem.3984
-0080028a b x_mem.3983
-0080028c b last_pressure.3978
-0080028d B adb_werte
-00800296 B t0ovfcount
-00800297 B adb_data_length
-00800298 B USB_Device_ConfigurationNumber
-00800299 B USB_Device_CurrentlySelfPowered
-0080029a B USB_Device_RemoteWakeupEnabled
-0080029b B USB_IsInitialized
-0080029c B USB_ControlRequest
-008002a4 B __bss_end
-008002a4 N _end
+00800154 D VirtualSerial_CDC_Interface
+0080016f D phase_pattern
+00800173 d CSWTCH.34
+00800175 d CSWTCH.37
+0080017a B __bss_start
+0080017a D __data_end
+0080017a D _edata
+0080017a B plate_pos_x
+0080017c B plate_pos_y
+0080017e b USBtoUSART_Buffer
+0080018a b USBtoUSART_Buffer_Data
+0080020a b USARTtoUSB_Buffer
+00800216 b USARTtoUSB_Buffer_Data
+00800296 b nums_found.4223
+00800297 b num_start.4222
+00800298 b curCmdLen.4221
+00800299 b cmdPos.4220
+0080029a b postdot.4219
+0080029c b predot.4218
+0080029e b numbuffer.4217
+008002ae b cmdbuffer.4216
+008002be b todo_y.4207
+008002c0 b todo_x.4206
+008002c2 b phase_memory.4188
+008002c4 b y_mem.4090
+008002c6 b x_mem.4089
+008002c8 b last_pressure.4084
+008002c9 B adb_werte
+008002d2 B stringbuffer
+008002e2 B t0ovfcount
+008002e3 B adb_data_length
+008002e4 B USB_Device_ConfigurationNumber
+008002e5 B USB_Device_CurrentlySelfPowered
+008002e6 B USB_Device_RemoteWakeupEnabled
+008002e7 B USB_IsInitialized
+008002e8 B USB_ControlRequest
+008002f0 B __bss_end
+008002f0 N _end
 00810000 N __eeprom_end
index c0f65af637f3159eca9299e6e3d3970d8700e535..a1c53894427ddf28dbc9ddd141ff8b3e78f8abe7 100644 (file)
@@ -28,7 +28,7 @@
 #define Y1 6
 #define DDRY1 DDRB
 #define PORTY1 PORTB
-#define PINY1 PINC
+#define PINY1 PINB
 
 #define Y2 7
 #define DDRY2 DDRC
@@ -40,3 +40,6 @@
 #define PORTY3 PORTC
 #define PINY3 PINC
 
+#define X 0
+#define Y 1
+