   1               		.file	"WString.cpp"
   2               	__SP_H__ = 0x3e
   3               	__SP_L__ = 0x3d
   4               	__SREG__ = 0x3f
   5               	__tmp_reg__ = 0
   6               	__zero_reg__ = 1
   9               		.text
  10               	.Ltext0:
 114               		.section	.text.itoa,"axG",@progbits,itoa,comdat
 119               		.weak	itoa
 121               	itoa:
 122               		.stabd	46,0,0
 124               	.Ltext1:
   1:/usr/lib/avr/include/stdlib.h **** /* Copyright (c) 2002, Marek Michalkiewicz
   2:/usr/lib/avr/include/stdlib.h ****    Copyright (c) 2004,2007 Joerg Wunsch
   3:/usr/lib/avr/include/stdlib.h **** 
   4:/usr/lib/avr/include/stdlib.h ****    Portions of documentation Copyright (c) 1990, 1991, 1993, 1994
   5:/usr/lib/avr/include/stdlib.h ****    The Regents of the University of California.
   6:/usr/lib/avr/include/stdlib.h **** 
   7:/usr/lib/avr/include/stdlib.h ****    All rights reserved.
   8:/usr/lib/avr/include/stdlib.h **** 
   9:/usr/lib/avr/include/stdlib.h ****    Redistribution and use in source and binary forms, with or without
  10:/usr/lib/avr/include/stdlib.h ****    modification, are permitted provided that the following conditions are met:
  11:/usr/lib/avr/include/stdlib.h **** 
  12:/usr/lib/avr/include/stdlib.h ****    * Redistributions of source code must retain the above copyright
  13:/usr/lib/avr/include/stdlib.h ****      notice, this list of conditions and the following disclaimer.
  14:/usr/lib/avr/include/stdlib.h **** 
  15:/usr/lib/avr/include/stdlib.h ****    * Redistributions in binary form must reproduce the above copyright
  16:/usr/lib/avr/include/stdlib.h ****      notice, this list of conditions and the following disclaimer in
  17:/usr/lib/avr/include/stdlib.h ****      the documentation and/or other materials provided with the
  18:/usr/lib/avr/include/stdlib.h ****      distribution.
  19:/usr/lib/avr/include/stdlib.h **** 
  20:/usr/lib/avr/include/stdlib.h ****    * Neither the name of the copyright holders nor the names of
  21:/usr/lib/avr/include/stdlib.h ****      contributors may be used to endorse or promote products derived
  22:/usr/lib/avr/include/stdlib.h ****      from this software without specific prior written permission.
  23:/usr/lib/avr/include/stdlib.h **** 
  24:/usr/lib/avr/include/stdlib.h ****   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
  25:/usr/lib/avr/include/stdlib.h ****   AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  26:/usr/lib/avr/include/stdlib.h ****   IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  27:/usr/lib/avr/include/stdlib.h ****   ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
  28:/usr/lib/avr/include/stdlib.h ****   LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
  29:/usr/lib/avr/include/stdlib.h ****   CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
  30:/usr/lib/avr/include/stdlib.h ****   SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
  31:/usr/lib/avr/include/stdlib.h ****   INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
  32:/usr/lib/avr/include/stdlib.h ****   CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
  33:/usr/lib/avr/include/stdlib.h ****   ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
  34:/usr/lib/avr/include/stdlib.h ****   POSSIBILITY OF SUCH DAMAGE.
  35:/usr/lib/avr/include/stdlib.h **** 
  36:/usr/lib/avr/include/stdlib.h ****   $Id$
  37:/usr/lib/avr/include/stdlib.h **** */
  38:/usr/lib/avr/include/stdlib.h **** 
  39:/usr/lib/avr/include/stdlib.h **** #ifndef _STDLIB_H_
  40:/usr/lib/avr/include/stdlib.h **** #define	_STDLIB_H_ 1
  41:/usr/lib/avr/include/stdlib.h **** 
  42:/usr/lib/avr/include/stdlib.h **** #ifndef __ASSEMBLER__
  43:/usr/lib/avr/include/stdlib.h **** 
  44:/usr/lib/avr/include/stdlib.h **** #ifndef __DOXYGEN__
  45:/usr/lib/avr/include/stdlib.h **** #define __need_NULL
  46:/usr/lib/avr/include/stdlib.h **** #define __need_size_t
  47:/usr/lib/avr/include/stdlib.h **** #define __need_wchar_t
  48:/usr/lib/avr/include/stdlib.h **** #include <stddef.h>
  49:/usr/lib/avr/include/stdlib.h **** 
  50:/usr/lib/avr/include/stdlib.h **** #ifndef __ptr_t
  51:/usr/lib/avr/include/stdlib.h **** #define __ptr_t void *
  52:/usr/lib/avr/include/stdlib.h **** #endif
  53:/usr/lib/avr/include/stdlib.h **** #endif	/* !__DOXYGEN__ */
  54:/usr/lib/avr/include/stdlib.h **** 
  55:/usr/lib/avr/include/stdlib.h **** #ifdef __cplusplus
  56:/usr/lib/avr/include/stdlib.h **** extern "C" {
  57:/usr/lib/avr/include/stdlib.h **** #endif
  58:/usr/lib/avr/include/stdlib.h **** 
  59:/usr/lib/avr/include/stdlib.h **** /** \file */
  60:/usr/lib/avr/include/stdlib.h **** 
  61:/usr/lib/avr/include/stdlib.h **** /** \defgroup avr_stdlib <stdlib.h>: General utilities
  62:/usr/lib/avr/include/stdlib.h ****     \code #include <stdlib.h> \endcode
  63:/usr/lib/avr/include/stdlib.h **** 
  64:/usr/lib/avr/include/stdlib.h ****     This file declares some basic C macros and functions as
  65:/usr/lib/avr/include/stdlib.h ****     defined by the ISO standard, plus some AVR-specific extensions.
  66:/usr/lib/avr/include/stdlib.h **** */
  67:/usr/lib/avr/include/stdlib.h **** 
  68:/usr/lib/avr/include/stdlib.h **** /*@{*/
  69:/usr/lib/avr/include/stdlib.h **** /** Result type for function div(). */
  70:/usr/lib/avr/include/stdlib.h **** typedef struct {
  71:/usr/lib/avr/include/stdlib.h **** 	int quot;                   /**< The Quotient. */
  72:/usr/lib/avr/include/stdlib.h **** 	int rem;                    /**< The Remainder. */
  73:/usr/lib/avr/include/stdlib.h **** } div_t;
  74:/usr/lib/avr/include/stdlib.h **** 
  75:/usr/lib/avr/include/stdlib.h **** /** Result type for function ldiv(). */
  76:/usr/lib/avr/include/stdlib.h **** typedef struct {
  77:/usr/lib/avr/include/stdlib.h **** 	long quot;                  /**< The Quotient. */
  78:/usr/lib/avr/include/stdlib.h **** 	long rem;                   /**< The Remainder. */
  79:/usr/lib/avr/include/stdlib.h **** } ldiv_t;
  80:/usr/lib/avr/include/stdlib.h **** 
  81:/usr/lib/avr/include/stdlib.h **** /** Comparision function type for qsort(), just for convenience. */
  82:/usr/lib/avr/include/stdlib.h **** typedef int (*__compar_fn_t)(const void *, const void *);
  83:/usr/lib/avr/include/stdlib.h **** 
  84:/usr/lib/avr/include/stdlib.h **** #ifndef __DOXYGEN__
  85:/usr/lib/avr/include/stdlib.h **** 
  86:/usr/lib/avr/include/stdlib.h **** #ifndef __ATTR_CONST__
  87:/usr/lib/avr/include/stdlib.h **** # define __ATTR_CONST__ __attribute__((__const__))
  88:/usr/lib/avr/include/stdlib.h **** #endif
  89:/usr/lib/avr/include/stdlib.h **** 
  90:/usr/lib/avr/include/stdlib.h **** #ifndef __ATTR_MALLOC__
  91:/usr/lib/avr/include/stdlib.h **** # define __ATTR_MALLOC__ __attribute__((__malloc__))
  92:/usr/lib/avr/include/stdlib.h **** #endif
  93:/usr/lib/avr/include/stdlib.h **** 
  94:/usr/lib/avr/include/stdlib.h **** #ifndef __ATTR_NORETURN__
  95:/usr/lib/avr/include/stdlib.h **** # define __ATTR_NORETURN__ __attribute__((__noreturn__))
  96:/usr/lib/avr/include/stdlib.h **** #endif
  97:/usr/lib/avr/include/stdlib.h **** 
  98:/usr/lib/avr/include/stdlib.h **** #ifndef __ATTR_PURE__
  99:/usr/lib/avr/include/stdlib.h **** # define __ATTR_PURE__ __attribute__((__pure__))
 100:/usr/lib/avr/include/stdlib.h **** #endif
 101:/usr/lib/avr/include/stdlib.h **** 
 102:/usr/lib/avr/include/stdlib.h **** #ifndef	__ATTR_GNU_INLINE__
 103:/usr/lib/avr/include/stdlib.h **** # ifdef  __GNUC_STDC_INLINE__
 104:/usr/lib/avr/include/stdlib.h **** #  define __ATTR_GNU_INLINE__   __attribute__((__gnu_inline__))
 105:/usr/lib/avr/include/stdlib.h **** # else
 106:/usr/lib/avr/include/stdlib.h **** #  define __ATTR_GNU_INLINE__
 107:/usr/lib/avr/include/stdlib.h **** # endif
 108:/usr/lib/avr/include/stdlib.h **** #endif
 109:/usr/lib/avr/include/stdlib.h **** 
 110:/usr/lib/avr/include/stdlib.h **** #endif
 111:/usr/lib/avr/include/stdlib.h **** 
 112:/usr/lib/avr/include/stdlib.h **** /** The abort() function causes abnormal program termination to occur.
 113:/usr/lib/avr/include/stdlib.h ****     This realization disables interrupts and jumps to _exit() function
 114:/usr/lib/avr/include/stdlib.h ****     with argument equal to 1. In the limited AVR environment, execution is
 115:/usr/lib/avr/include/stdlib.h ****     effectively halted by entering an infinite loop. */
 116:/usr/lib/avr/include/stdlib.h **** extern void abort(void) __ATTR_NORETURN__;
 117:/usr/lib/avr/include/stdlib.h **** 
 118:/usr/lib/avr/include/stdlib.h **** /** The abs() function computes the absolute value of the integer \c i.
 119:/usr/lib/avr/include/stdlib.h ****    \note The abs() and labs() functions are builtins of gcc.
 120:/usr/lib/avr/include/stdlib.h **** */
 121:/usr/lib/avr/include/stdlib.h **** extern int abs(int __i) __ATTR_CONST__;
 122:/usr/lib/avr/include/stdlib.h **** #ifndef __DOXYGEN__
 123:/usr/lib/avr/include/stdlib.h **** #define	abs(__i) __builtin_abs(__i)
 124:/usr/lib/avr/include/stdlib.h **** #endif
 125:/usr/lib/avr/include/stdlib.h **** 
 126:/usr/lib/avr/include/stdlib.h **** /** The labs() function computes the absolute value of the long integer
 127:/usr/lib/avr/include/stdlib.h ****     \c i.
 128:/usr/lib/avr/include/stdlib.h ****    \note The abs() and labs() functions are builtins of gcc.
 129:/usr/lib/avr/include/stdlib.h **** */
 130:/usr/lib/avr/include/stdlib.h **** extern long labs(long __i) __ATTR_CONST__;
 131:/usr/lib/avr/include/stdlib.h **** #ifndef __DOXYGEN__
 132:/usr/lib/avr/include/stdlib.h **** #define labs(__i) __builtin_labs(__i)
 133:/usr/lib/avr/include/stdlib.h **** #endif
 134:/usr/lib/avr/include/stdlib.h **** 
 135:/usr/lib/avr/include/stdlib.h **** /**
 136:/usr/lib/avr/include/stdlib.h ****      The bsearch() function searches an array of \c nmemb objects, the
 137:/usr/lib/avr/include/stdlib.h ****      initial member of which is pointed to by \c base, for a member
 138:/usr/lib/avr/include/stdlib.h ****      that matches the object pointed to by \c key.  The size of each
 139:/usr/lib/avr/include/stdlib.h ****      member of the array is specified by \c size.
 140:/usr/lib/avr/include/stdlib.h **** 
 141:/usr/lib/avr/include/stdlib.h ****      The contents of the array should be in ascending sorted order
 142:/usr/lib/avr/include/stdlib.h ****      according to the comparison function referenced by \c compar.
 143:/usr/lib/avr/include/stdlib.h ****      The \c compar routine is expected to have two arguments which
 144:/usr/lib/avr/include/stdlib.h ****      point to the key object and to an array member, in that order,
 145:/usr/lib/avr/include/stdlib.h ****      and should return an integer less than, equal to, or greater than
 146:/usr/lib/avr/include/stdlib.h ****      zero if the key object is found, respectively, to be less than,
 147:/usr/lib/avr/include/stdlib.h ****      to match, or be greater than the array member.
 148:/usr/lib/avr/include/stdlib.h **** 
 149:/usr/lib/avr/include/stdlib.h ****      The bsearch() function returns a pointer to a matching member of
 150:/usr/lib/avr/include/stdlib.h ****      the array, or a null pointer if no match is found.  If two
 151:/usr/lib/avr/include/stdlib.h ****      members compare as equal, which member is matched is unspecified.
 152:/usr/lib/avr/include/stdlib.h **** */
 153:/usr/lib/avr/include/stdlib.h **** extern void *bsearch(const void *__key, const void *__base, size_t __nmemb,
 154:/usr/lib/avr/include/stdlib.h **** 		     size_t __size, int (*__compar)(const void *, const void *));
 155:/usr/lib/avr/include/stdlib.h **** 
 156:/usr/lib/avr/include/stdlib.h **** /* __divmodhi4 and __divmodsi4 from libgcc.a */
 157:/usr/lib/avr/include/stdlib.h **** /**
 158:/usr/lib/avr/include/stdlib.h ****      The div() function computes the value \c num/denom and returns
 159:/usr/lib/avr/include/stdlib.h ****      the quotient and remainder in a structure named \c div_t that
 160:/usr/lib/avr/include/stdlib.h ****      contains two int members named \c quot and \c rem.
 161:/usr/lib/avr/include/stdlib.h **** */
 162:/usr/lib/avr/include/stdlib.h **** extern div_t div(int __num, int __denom) __asm__("__divmodhi4") __ATTR_CONST__;
 163:/usr/lib/avr/include/stdlib.h **** /**
 164:/usr/lib/avr/include/stdlib.h ****      The ldiv() function computes the value \c num/denom and returns
 165:/usr/lib/avr/include/stdlib.h ****      the quotient and remainder in a structure named \c ldiv_t that
 166:/usr/lib/avr/include/stdlib.h ****      contains two long integer members named \c quot and \c rem.
 167:/usr/lib/avr/include/stdlib.h **** */
 168:/usr/lib/avr/include/stdlib.h **** extern ldiv_t ldiv(long __num, long __denom) __asm__("__divmodsi4") __ATTR_CONST__;
 169:/usr/lib/avr/include/stdlib.h **** 
 170:/usr/lib/avr/include/stdlib.h **** /**
 171:/usr/lib/avr/include/stdlib.h ****      The qsort() function is a modified partition-exchange sort, or
 172:/usr/lib/avr/include/stdlib.h ****      quicksort.
 173:/usr/lib/avr/include/stdlib.h **** 
 174:/usr/lib/avr/include/stdlib.h ****      The qsort() function sorts an array of \c nmemb objects, the
 175:/usr/lib/avr/include/stdlib.h ****      initial member of which is pointed to by \c base.  The size of
 176:/usr/lib/avr/include/stdlib.h ****      each object is specified by \c size.  The contents of the array
 177:/usr/lib/avr/include/stdlib.h ****      base are sorted in ascending order according to a comparison
 178:/usr/lib/avr/include/stdlib.h ****      function pointed to by \c compar, which requires two arguments
 179:/usr/lib/avr/include/stdlib.h ****      pointing to the objects being compared.
 180:/usr/lib/avr/include/stdlib.h **** 
 181:/usr/lib/avr/include/stdlib.h ****      The comparison function must return an integer less than, equal
 182:/usr/lib/avr/include/stdlib.h ****      to, or greater than zero if the first argument is considered to
 183:/usr/lib/avr/include/stdlib.h ****      be respectively less than, equal to, or greater than the second.
 184:/usr/lib/avr/include/stdlib.h **** */
 185:/usr/lib/avr/include/stdlib.h **** extern void qsort(void *__base, size_t __nmemb, size_t __size,
 186:/usr/lib/avr/include/stdlib.h **** 		  __compar_fn_t __compar);
 187:/usr/lib/avr/include/stdlib.h **** 
 188:/usr/lib/avr/include/stdlib.h **** /**
 189:/usr/lib/avr/include/stdlib.h ****     The strtol() function converts the string in \c nptr to a long
 190:/usr/lib/avr/include/stdlib.h ****     value.  The conversion is done according to the given base, which
 191:/usr/lib/avr/include/stdlib.h ****     must be between 2 and 36 inclusive, or be the special value 0.
 192:/usr/lib/avr/include/stdlib.h **** 
 193:/usr/lib/avr/include/stdlib.h ****     The string may begin with an arbitrary amount of white space (as
 194:/usr/lib/avr/include/stdlib.h ****     determined by isspace()) followed by a single optional \c '+' or \c '-'
 195:/usr/lib/avr/include/stdlib.h ****     sign.  If \c base is zero or 16, the string may then include a
 196:/usr/lib/avr/include/stdlib.h ****     \c "0x" prefix, and the number will be read in base 16; otherwise,
 197:/usr/lib/avr/include/stdlib.h ****     a zero base is taken as 10 (decimal) unless the next character is
 198:/usr/lib/avr/include/stdlib.h ****     \c '0', in which case it is taken as 8 (octal).
 199:/usr/lib/avr/include/stdlib.h **** 
 200:/usr/lib/avr/include/stdlib.h ****     The remainder of the string is converted to a long value in the
 201:/usr/lib/avr/include/stdlib.h ****     obvious manner, stopping at the first character which is not a
 202:/usr/lib/avr/include/stdlib.h ****     valid digit in the given base.  (In bases above 10, the letter \c 'A'
 203:/usr/lib/avr/include/stdlib.h ****     in either upper or lower case represents 10, \c 'B' represents 11,
 204:/usr/lib/avr/include/stdlib.h ****     and so forth, with \c 'Z' representing 35.)
 205:/usr/lib/avr/include/stdlib.h **** 
 206:/usr/lib/avr/include/stdlib.h ****     If \c endptr is not NULL, strtol() stores the address of the first
 207:/usr/lib/avr/include/stdlib.h ****     invalid character in \c *endptr.  If there were no digits at all,
 208:/usr/lib/avr/include/stdlib.h ****     however, strtol() stores the original value of \c nptr in \c
 209:/usr/lib/avr/include/stdlib.h ****     *endptr.  (Thus, if \c *nptr is not \c '\\0' but \c **endptr is \c '\\0'
 210:/usr/lib/avr/include/stdlib.h ****     on return, the entire string was valid.)
 211:/usr/lib/avr/include/stdlib.h **** 
 212:/usr/lib/avr/include/stdlib.h ****     The strtol() function returns the result of the conversion, unless
 213:/usr/lib/avr/include/stdlib.h ****     the value would underflow or overflow.  If no conversion could be
 214:/usr/lib/avr/include/stdlib.h ****     performed, 0 is returned.  If an overflow or underflow occurs, \c
 215:/usr/lib/avr/include/stdlib.h ****     errno is set to \ref avr_errno "ERANGE" and the function return value
 216:/usr/lib/avr/include/stdlib.h ****     is clamped to \c LONG_MIN or \c LONG_MAX, respectively.
 217:/usr/lib/avr/include/stdlib.h **** */
 218:/usr/lib/avr/include/stdlib.h **** extern long strtol(const char *__nptr, char **__endptr, int __base);
 219:/usr/lib/avr/include/stdlib.h **** 
 220:/usr/lib/avr/include/stdlib.h **** /**
 221:/usr/lib/avr/include/stdlib.h ****     The strtoul() function converts the string in \c nptr to an
 222:/usr/lib/avr/include/stdlib.h ****     unsigned long value.  The conversion is done according to the
 223:/usr/lib/avr/include/stdlib.h ****     given base, which must be between 2 and 36 inclusive, or be the
 224:/usr/lib/avr/include/stdlib.h ****     special value 0.
 225:/usr/lib/avr/include/stdlib.h **** 
 226:/usr/lib/avr/include/stdlib.h ****     The string may begin with an arbitrary amount of white space (as
 227:/usr/lib/avr/include/stdlib.h ****     determined by isspace()) followed by a single optional \c '+' or \c '-'
 228:/usr/lib/avr/include/stdlib.h ****     sign.  If \c base is zero or 16, the string may then include a
 229:/usr/lib/avr/include/stdlib.h ****     \c "0x" prefix, and the number will be read in base 16; otherwise,
 230:/usr/lib/avr/include/stdlib.h ****     a zero base is taken as 10 (decimal) unless the next character is
 231:/usr/lib/avr/include/stdlib.h ****     \c '0', in which case it is taken as 8 (octal).
 232:/usr/lib/avr/include/stdlib.h **** 
 233:/usr/lib/avr/include/stdlib.h ****     The remainder of the string is converted to an unsigned long value
 234:/usr/lib/avr/include/stdlib.h ****     in the obvious manner, stopping at the first character which is
 235:/usr/lib/avr/include/stdlib.h ****     not a valid digit in the given base.  (In bases above 10, the
 236:/usr/lib/avr/include/stdlib.h ****     letter \c 'A' in either upper or lower case represents 10, \c 'B'
 237:/usr/lib/avr/include/stdlib.h ****     represents 11, and so forth, with \c 'Z' representing 35.)
 238:/usr/lib/avr/include/stdlib.h **** 
 239:/usr/lib/avr/include/stdlib.h ****     If \c endptr is not NULL, strtoul() stores the address of the first
 240:/usr/lib/avr/include/stdlib.h ****     invalid character in \c *endptr.  If there were no digits at all,
 241:/usr/lib/avr/include/stdlib.h ****     however, strtoul() stores the original value of \c nptr in \c
 242:/usr/lib/avr/include/stdlib.h ****     *endptr.  (Thus, if \c *nptr is not \c '\\0' but \c **endptr is \c '\\0'
 243:/usr/lib/avr/include/stdlib.h ****     on return, the entire string was valid.)
 244:/usr/lib/avr/include/stdlib.h **** 
 245:/usr/lib/avr/include/stdlib.h ****     The strtoul() function return either the result of the conversion
 246:/usr/lib/avr/include/stdlib.h ****     or, if there was a leading minus sign, the negation of the result
 247:/usr/lib/avr/include/stdlib.h ****     of the conversion, unless the original (non-negated) value would
 248:/usr/lib/avr/include/stdlib.h ****     overflow; in the latter case, strtoul() returns ULONG_MAX, and \c
 249:/usr/lib/avr/include/stdlib.h ****     errno is set to \ref avr_errno "ERANGE".  If no conversion could 
 250:/usr/lib/avr/include/stdlib.h ****     be performed, 0 is returned.
 251:/usr/lib/avr/include/stdlib.h **** */
 252:/usr/lib/avr/include/stdlib.h **** extern unsigned long strtoul(const char *__nptr, char **__endptr, int __base);
 253:/usr/lib/avr/include/stdlib.h **** 
 254:/usr/lib/avr/include/stdlib.h **** /**
 255:/usr/lib/avr/include/stdlib.h ****     The atol() function converts the initial portion of the string
 256:/usr/lib/avr/include/stdlib.h ****     pointed to by \p s to long integer representation. In contrast to
 257:/usr/lib/avr/include/stdlib.h **** 
 258:/usr/lib/avr/include/stdlib.h ****         \code strtol(s, (char **)NULL, 10); \endcode
 259:/usr/lib/avr/include/stdlib.h **** 
 260:/usr/lib/avr/include/stdlib.h ****     this function does not detect overflow (\c errno is not changed and
 261:/usr/lib/avr/include/stdlib.h ****     the result value is not predictable), uses smaller memory (flash and
 262:/usr/lib/avr/include/stdlib.h ****     stack) and works more quickly.
 263:/usr/lib/avr/include/stdlib.h **** */
 264:/usr/lib/avr/include/stdlib.h **** extern long atol(const char *__s) __ATTR_PURE__;
 265:/usr/lib/avr/include/stdlib.h **** 
 266:/usr/lib/avr/include/stdlib.h **** /**
 267:/usr/lib/avr/include/stdlib.h ****     The atoi() function converts the initial portion of the string
 268:/usr/lib/avr/include/stdlib.h ****     pointed to by \p s to integer representation. In contrast to
 269:/usr/lib/avr/include/stdlib.h **** 
 270:/usr/lib/avr/include/stdlib.h ****         \code (int)strtol(s, (char **)NULL, 10); \endcode
 271:/usr/lib/avr/include/stdlib.h **** 
 272:/usr/lib/avr/include/stdlib.h ****     this function does not detect overflow (\c errno is not changed and
 273:/usr/lib/avr/include/stdlib.h ****     the result value is not predictable), uses smaller memory (flash and
 274:/usr/lib/avr/include/stdlib.h ****     stack) and works more quickly.
 275:/usr/lib/avr/include/stdlib.h **** */
 276:/usr/lib/avr/include/stdlib.h **** extern int atoi(const char *__s) __ATTR_PURE__;
 277:/usr/lib/avr/include/stdlib.h **** 
 278:/usr/lib/avr/include/stdlib.h **** /**
 279:/usr/lib/avr/include/stdlib.h ****    The exit() function terminates the application.  Since there is no
 280:/usr/lib/avr/include/stdlib.h ****    environment to return to, \c status is ignored, and code execution
 281:/usr/lib/avr/include/stdlib.h ****    will eventually reach an infinite loop, thereby effectively halting
 282:/usr/lib/avr/include/stdlib.h ****    all code processing.  Before entering the infinite loop, interrupts
 283:/usr/lib/avr/include/stdlib.h ****    are globally disabled.
 284:/usr/lib/avr/include/stdlib.h **** 
 285:/usr/lib/avr/include/stdlib.h ****    In a C++ context, global destructors will be called before halting
 286:/usr/lib/avr/include/stdlib.h ****    execution.
 287:/usr/lib/avr/include/stdlib.h **** */
 288:/usr/lib/avr/include/stdlib.h **** extern void exit(int __status) __ATTR_NORETURN__;
 289:/usr/lib/avr/include/stdlib.h **** 
 290:/usr/lib/avr/include/stdlib.h **** /**
 291:/usr/lib/avr/include/stdlib.h ****    The malloc() function allocates \c size bytes of memory.
 292:/usr/lib/avr/include/stdlib.h ****    If malloc() fails, a NULL pointer is returned.
 293:/usr/lib/avr/include/stdlib.h **** 
 294:/usr/lib/avr/include/stdlib.h ****    Note that malloc() does \e not initialize the returned memory to
 295:/usr/lib/avr/include/stdlib.h ****    zero bytes.
 296:/usr/lib/avr/include/stdlib.h **** 
 297:/usr/lib/avr/include/stdlib.h ****    See the chapter about \ref malloc "malloc() usage" for implementation
 298:/usr/lib/avr/include/stdlib.h ****    details.
 299:/usr/lib/avr/include/stdlib.h **** */
 300:/usr/lib/avr/include/stdlib.h **** extern void *malloc(size_t __size) __ATTR_MALLOC__;
 301:/usr/lib/avr/include/stdlib.h **** 
 302:/usr/lib/avr/include/stdlib.h **** /**
 303:/usr/lib/avr/include/stdlib.h ****    The free() function causes the allocated memory referenced by \c
 304:/usr/lib/avr/include/stdlib.h ****    ptr to be made available for future allocations.  If \c ptr is
 305:/usr/lib/avr/include/stdlib.h ****    NULL, no action occurs.
 306:/usr/lib/avr/include/stdlib.h **** */
 307:/usr/lib/avr/include/stdlib.h **** extern void free(void *__ptr);
 308:/usr/lib/avr/include/stdlib.h **** 
 309:/usr/lib/avr/include/stdlib.h **** /**
 310:/usr/lib/avr/include/stdlib.h ****    \c malloc() \ref malloc_tunables "tunable".
 311:/usr/lib/avr/include/stdlib.h **** */
 312:/usr/lib/avr/include/stdlib.h **** extern size_t __malloc_margin;
 313:/usr/lib/avr/include/stdlib.h **** 
 314:/usr/lib/avr/include/stdlib.h **** /**
 315:/usr/lib/avr/include/stdlib.h ****    \c malloc() \ref malloc_tunables "tunable".
 316:/usr/lib/avr/include/stdlib.h **** */
 317:/usr/lib/avr/include/stdlib.h **** extern char *__malloc_heap_start;
 318:/usr/lib/avr/include/stdlib.h **** 
 319:/usr/lib/avr/include/stdlib.h **** /**
 320:/usr/lib/avr/include/stdlib.h ****    \c malloc() \ref malloc_tunables "tunable".
 321:/usr/lib/avr/include/stdlib.h **** */
 322:/usr/lib/avr/include/stdlib.h **** extern char *__malloc_heap_end;
 323:/usr/lib/avr/include/stdlib.h **** 
 324:/usr/lib/avr/include/stdlib.h **** /**
 325:/usr/lib/avr/include/stdlib.h ****    Allocate \c nele elements of \c size each.  Identical to calling
 326:/usr/lib/avr/include/stdlib.h ****    \c malloc() using <tt>nele * size</tt> as argument, except the
 327:/usr/lib/avr/include/stdlib.h ****    allocated memory will be cleared to zero.
 328:/usr/lib/avr/include/stdlib.h **** */
 329:/usr/lib/avr/include/stdlib.h **** extern void *calloc(size_t __nele, size_t __size) __ATTR_MALLOC__;
 330:/usr/lib/avr/include/stdlib.h **** 
 331:/usr/lib/avr/include/stdlib.h **** /**
 332:/usr/lib/avr/include/stdlib.h ****    The realloc() function tries to change the size of the region
 333:/usr/lib/avr/include/stdlib.h ****    allocated at \c ptr to the new \c size value.  It returns a
 334:/usr/lib/avr/include/stdlib.h ****    pointer to the new region.  The returned pointer might be the
 335:/usr/lib/avr/include/stdlib.h ****    same as the old pointer, or a pointer to a completely different
 336:/usr/lib/avr/include/stdlib.h ****    region.
 337:/usr/lib/avr/include/stdlib.h **** 
 338:/usr/lib/avr/include/stdlib.h ****    The contents of the returned region up to either the old or the new
 339:/usr/lib/avr/include/stdlib.h ****    size value (whatever is less) will be identical to the contents of
 340:/usr/lib/avr/include/stdlib.h ****    the old region, even in case a new region had to be allocated.
 341:/usr/lib/avr/include/stdlib.h **** 
 342:/usr/lib/avr/include/stdlib.h ****    It is acceptable to pass \c ptr as NULL, in which case realloc()
 343:/usr/lib/avr/include/stdlib.h ****    will behave identical to malloc().
 344:/usr/lib/avr/include/stdlib.h **** 
 345:/usr/lib/avr/include/stdlib.h ****    If the new memory cannot be allocated, realloc() returns NULL, and
 346:/usr/lib/avr/include/stdlib.h ****    the region at \c ptr will not be changed.
 347:/usr/lib/avr/include/stdlib.h **** */
 348:/usr/lib/avr/include/stdlib.h **** extern void *realloc(void *__ptr, size_t __size) __ATTR_MALLOC__;
 349:/usr/lib/avr/include/stdlib.h **** 
 350:/usr/lib/avr/include/stdlib.h **** extern double strtod(const char *__nptr, char **__endptr);
 351:/usr/lib/avr/include/stdlib.h **** 
 352:/usr/lib/avr/include/stdlib.h **** /** \ingroup avr_stdlib
 353:/usr/lib/avr/include/stdlib.h ****     \fn  double atof (const char *nptr)
 354:/usr/lib/avr/include/stdlib.h **** 
 355:/usr/lib/avr/include/stdlib.h ****     The atof() function converts the initial portion of the string pointed
 356:/usr/lib/avr/include/stdlib.h ****     to by \a nptr to double representation.
 357:/usr/lib/avr/include/stdlib.h **** 
 358:/usr/lib/avr/include/stdlib.h ****     It is equivalent to calling
 359:/usr/lib/avr/include/stdlib.h **** 	\code strtod(nptr, (char **)0); \endcode
 360:/usr/lib/avr/include/stdlib.h ****  */
 361:/usr/lib/avr/include/stdlib.h **** extern double atof(const char *__nptr);
 362:/usr/lib/avr/include/stdlib.h **** 
 363:/usr/lib/avr/include/stdlib.h **** /** Highest number that can be generated by rand(). */
 364:/usr/lib/avr/include/stdlib.h **** #define	RAND_MAX 0x7FFF
 365:/usr/lib/avr/include/stdlib.h **** 
 366:/usr/lib/avr/include/stdlib.h **** /**
 367:/usr/lib/avr/include/stdlib.h ****      The rand() function computes a sequence of pseudo-random integers in the
 368:/usr/lib/avr/include/stdlib.h ****      range of 0 to \c RAND_MAX (as defined by the header file <stdlib.h>).
 369:/usr/lib/avr/include/stdlib.h **** 
 370:/usr/lib/avr/include/stdlib.h ****      The srand() function sets its argument \c seed as the seed for a new
 371:/usr/lib/avr/include/stdlib.h ****      sequence of pseudo-random numbers to be returned by rand().  These
 372:/usr/lib/avr/include/stdlib.h ****      sequences are repeatable by calling srand() with the same seed value.
 373:/usr/lib/avr/include/stdlib.h **** 
 374:/usr/lib/avr/include/stdlib.h ****      If no seed value is provided, the functions are automatically seeded with
 375:/usr/lib/avr/include/stdlib.h ****      a value of 1.
 376:/usr/lib/avr/include/stdlib.h **** 
 377:/usr/lib/avr/include/stdlib.h ****      In compliance with the C standard, these functions operate on
 378:/usr/lib/avr/include/stdlib.h ****      \c int arguments.  Since the underlying algorithm already uses
 379:/usr/lib/avr/include/stdlib.h ****      32-bit calculations, this causes a loss of precision.  See
 380:/usr/lib/avr/include/stdlib.h ****      \c random() for an alternate set of functions that retains full
 381:/usr/lib/avr/include/stdlib.h ****      32-bit precision.
 382:/usr/lib/avr/include/stdlib.h **** */
 383:/usr/lib/avr/include/stdlib.h **** extern int rand(void);
 384:/usr/lib/avr/include/stdlib.h **** /**
 385:/usr/lib/avr/include/stdlib.h ****    Pseudo-random number generator seeding; see rand().
 386:/usr/lib/avr/include/stdlib.h **** */
 387:/usr/lib/avr/include/stdlib.h **** extern void srand(unsigned int __seed);
 388:/usr/lib/avr/include/stdlib.h **** 
 389:/usr/lib/avr/include/stdlib.h **** /**
 390:/usr/lib/avr/include/stdlib.h ****    Variant of rand() that stores the context in the user-supplied
 391:/usr/lib/avr/include/stdlib.h ****    variable located at \c ctx instead of a static library variable
 392:/usr/lib/avr/include/stdlib.h ****    so the function becomes re-entrant.
 393:/usr/lib/avr/include/stdlib.h **** */
 394:/usr/lib/avr/include/stdlib.h **** extern int rand_r(unsigned long *__ctx);
 395:/usr/lib/avr/include/stdlib.h **** /*@}*/
 396:/usr/lib/avr/include/stdlib.h **** 
 397:/usr/lib/avr/include/stdlib.h **** /*@{*/
 398:/usr/lib/avr/include/stdlib.h **** /** \name Non-standard (i.e. non-ISO C) functions.
 399:/usr/lib/avr/include/stdlib.h ****  \ingroup avr_stdlib
 400:/usr/lib/avr/include/stdlib.h **** */
 401:/usr/lib/avr/include/stdlib.h **** /**
 402:/usr/lib/avr/include/stdlib.h ****    \brief Convert an integer to a string.
 403:/usr/lib/avr/include/stdlib.h **** 
 404:/usr/lib/avr/include/stdlib.h ****    The function itoa() converts the integer value from \c val into an
 405:/usr/lib/avr/include/stdlib.h ****    ASCII representation that will be stored under \c s.  The caller
 406:/usr/lib/avr/include/stdlib.h ****    is responsible for providing sufficient storage in \c s.
 407:/usr/lib/avr/include/stdlib.h **** 
 408:/usr/lib/avr/include/stdlib.h ****    \note The minimal size of the buffer \c s depends on the choice of
 409:/usr/lib/avr/include/stdlib.h ****    radix. For example, if the radix is 2 (binary), you need to supply a buffer
 410:/usr/lib/avr/include/stdlib.h ****    with a minimal length of 8 * sizeof (int) + 1 characters, i.e. one
 411:/usr/lib/avr/include/stdlib.h ****    character for each bit plus one for the string terminator. Using a larger
 412:/usr/lib/avr/include/stdlib.h ****    radix will require a smaller minimal buffer size.
 413:/usr/lib/avr/include/stdlib.h **** 
 414:/usr/lib/avr/include/stdlib.h ****    \warning If the buffer is too small, you risk a buffer overflow.
 415:/usr/lib/avr/include/stdlib.h **** 
 416:/usr/lib/avr/include/stdlib.h ****    Conversion is done using the \c radix as base, which may be a
 417:/usr/lib/avr/include/stdlib.h ****    number between 2 (binary conversion) and up to 36.  If \c radix
 418:/usr/lib/avr/include/stdlib.h ****    is greater than 10, the next digit after \c '9' will be the letter
 419:/usr/lib/avr/include/stdlib.h ****    \c 'a'.
 420:/usr/lib/avr/include/stdlib.h ****     
 421:/usr/lib/avr/include/stdlib.h ****     If radix is 10 and val is negative, a minus sign will be prepended.
 422:/usr/lib/avr/include/stdlib.h **** 
 423:/usr/lib/avr/include/stdlib.h ****    The itoa() function returns the pointer passed as \c s.
 424:/usr/lib/avr/include/stdlib.h **** */
 425:/usr/lib/avr/include/stdlib.h **** #ifdef  __DOXYGEN__
 426:/usr/lib/avr/include/stdlib.h **** extern char *itoa(int val, char *s, int radix);
 427:/usr/lib/avr/include/stdlib.h **** #else
 428:/usr/lib/avr/include/stdlib.h **** extern __inline__ __ATTR_GNU_INLINE__
 429:/usr/lib/avr/include/stdlib.h **** char *itoa (int __val, char *__s, int __radix)
 430:/usr/lib/avr/include/stdlib.h **** {
 126               	.LM0:
 127               	.LFBB1:
 128               	/* prologue: function */
 129               	/* frame size = 0 */
 130               	/* stack size = 0 */
 131               	.L__stack_usage = 0
 132               	.LBB39:
 431:/usr/lib/avr/include/stdlib.h ****     if (!__builtin_constant_p (__radix)) {
 432:/usr/lib/avr/include/stdlib.h **** 	extern char *__itoa (int, char *, int);
 433:/usr/lib/avr/include/stdlib.h **** 	return __itoa (__val, __s, __radix);
 134               	.LM1:
 135 0000 0C94 0000 		jmp __itoa
 136               	.LBE39:
 138               	.Lscope1:
 140               		.stabd	78,0,0
 141               		.section	.text.ltoa,"axG",@progbits,ltoa,comdat
 146               		.weak	ltoa
 148               	ltoa:
 149               		.stabd	46,0,0
 434:/usr/lib/avr/include/stdlib.h ****     } else if (__radix < 2 || __radix > 36) {
 435:/usr/lib/avr/include/stdlib.h **** 	*__s = 0;
 436:/usr/lib/avr/include/stdlib.h **** 	return __s;
 437:/usr/lib/avr/include/stdlib.h ****     } else {
 438:/usr/lib/avr/include/stdlib.h **** 	extern char *__itoa_ncheck (int, char *, unsigned char);
 439:/usr/lib/avr/include/stdlib.h **** 	return __itoa_ncheck (__val, __s, __radix);
 440:/usr/lib/avr/include/stdlib.h ****     }
 441:/usr/lib/avr/include/stdlib.h **** }
 442:/usr/lib/avr/include/stdlib.h **** #endif
 443:/usr/lib/avr/include/stdlib.h **** 
 444:/usr/lib/avr/include/stdlib.h **** /**
 445:/usr/lib/avr/include/stdlib.h ****  \ingroup avr_stdlib
 446:/usr/lib/avr/include/stdlib.h ****  
 447:/usr/lib/avr/include/stdlib.h ****    \brief Convert a long integer to a string.
 448:/usr/lib/avr/include/stdlib.h **** 
 449:/usr/lib/avr/include/stdlib.h ****    The function ltoa() converts the long integer value from \c val into an
 450:/usr/lib/avr/include/stdlib.h ****    ASCII representation that will be stored under \c s.  The caller
 451:/usr/lib/avr/include/stdlib.h ****    is responsible for providing sufficient storage in \c s.
 452:/usr/lib/avr/include/stdlib.h **** 
 453:/usr/lib/avr/include/stdlib.h ****    \note The minimal size of the buffer \c s depends on the choice of
 454:/usr/lib/avr/include/stdlib.h ****    radix. For example, if the radix is 2 (binary), you need to supply a buffer
 455:/usr/lib/avr/include/stdlib.h ****    with a minimal length of 8 * sizeof (long int) + 1 characters, i.e. one
 456:/usr/lib/avr/include/stdlib.h ****    character for each bit plus one for the string terminator. Using a larger
 457:/usr/lib/avr/include/stdlib.h ****    radix will require a smaller minimal buffer size.
 458:/usr/lib/avr/include/stdlib.h **** 
 459:/usr/lib/avr/include/stdlib.h ****    \warning If the buffer is too small, you risk a buffer overflow.
 460:/usr/lib/avr/include/stdlib.h **** 
 461:/usr/lib/avr/include/stdlib.h ****    Conversion is done using the \c radix as base, which may be a
 462:/usr/lib/avr/include/stdlib.h ****    number between 2 (binary conversion) and up to 36.  If \c radix
 463:/usr/lib/avr/include/stdlib.h ****    is greater than 10, the next digit after \c '9' will be the letter
 464:/usr/lib/avr/include/stdlib.h ****    \c 'a'.
 465:/usr/lib/avr/include/stdlib.h **** 
 466:/usr/lib/avr/include/stdlib.h ****    If radix is 10 and val is negative, a minus sign will be prepended.
 467:/usr/lib/avr/include/stdlib.h **** 
 468:/usr/lib/avr/include/stdlib.h ****    The ltoa() function returns the pointer passed as \c s.
 469:/usr/lib/avr/include/stdlib.h **** */
 470:/usr/lib/avr/include/stdlib.h **** #ifdef  __DOXYGEN__
 471:/usr/lib/avr/include/stdlib.h **** extern char *ltoa(long val, char *s, int radix);
 472:/usr/lib/avr/include/stdlib.h **** #else
 473:/usr/lib/avr/include/stdlib.h **** extern __inline__ __ATTR_GNU_INLINE__
 474:/usr/lib/avr/include/stdlib.h **** char *ltoa (long __val, char *__s, int __radix)
 475:/usr/lib/avr/include/stdlib.h **** {
 151               	.LM2:
 152               	.LFBB2:
 153               	/* prologue: function */
 154               	/* frame size = 0 */
 155               	/* stack size = 0 */
 156               	.L__stack_usage = 0
 157               	.LBB40:
 476:/usr/lib/avr/include/stdlib.h ****     if (!__builtin_constant_p (__radix)) {
 477:/usr/lib/avr/include/stdlib.h **** 	extern char *__ltoa (long, char *, int);
 478:/usr/lib/avr/include/stdlib.h **** 	return __ltoa (__val, __s, __radix);
 159               	.LM3:
 160 0000 0C94 0000 		jmp __ltoa
 161               	.LBE40:
 163               	.Lscope2:
 165               		.stabd	78,0,0
 166               		.section	.text.utoa,"axG",@progbits,utoa,comdat
 171               		.weak	utoa
 173               	utoa:
 174               		.stabd	46,0,0
 479:/usr/lib/avr/include/stdlib.h ****     } else if (__radix < 2 || __radix > 36) {
 480:/usr/lib/avr/include/stdlib.h **** 	*__s = 0;
 481:/usr/lib/avr/include/stdlib.h **** 	return __s;
 482:/usr/lib/avr/include/stdlib.h ****     } else {
 483:/usr/lib/avr/include/stdlib.h **** 	extern char *__ltoa_ncheck (long, char *, unsigned char);
 484:/usr/lib/avr/include/stdlib.h **** 	return __ltoa_ncheck (__val, __s, __radix);
 485:/usr/lib/avr/include/stdlib.h ****     }
 486:/usr/lib/avr/include/stdlib.h **** }
 487:/usr/lib/avr/include/stdlib.h **** #endif
 488:/usr/lib/avr/include/stdlib.h **** 
 489:/usr/lib/avr/include/stdlib.h **** /**
 490:/usr/lib/avr/include/stdlib.h ****  \ingroup avr_stdlib
 491:/usr/lib/avr/include/stdlib.h **** 
 492:/usr/lib/avr/include/stdlib.h ****    \brief Convert an unsigned integer to a string.
 493:/usr/lib/avr/include/stdlib.h **** 
 494:/usr/lib/avr/include/stdlib.h ****    The function utoa() converts the unsigned integer value from \c val into an
 495:/usr/lib/avr/include/stdlib.h ****    ASCII representation that will be stored under \c s.  The caller
 496:/usr/lib/avr/include/stdlib.h ****    is responsible for providing sufficient storage in \c s.
 497:/usr/lib/avr/include/stdlib.h **** 
 498:/usr/lib/avr/include/stdlib.h ****    \note The minimal size of the buffer \c s depends on the choice of
 499:/usr/lib/avr/include/stdlib.h ****    radix. For example, if the radix is 2 (binary), you need to supply a buffer
 500:/usr/lib/avr/include/stdlib.h ****    with a minimal length of 8 * sizeof (unsigned int) + 1 characters, i.e. one
 501:/usr/lib/avr/include/stdlib.h ****    character for each bit plus one for the string terminator. Using a larger
 502:/usr/lib/avr/include/stdlib.h ****    radix will require a smaller minimal buffer size.
 503:/usr/lib/avr/include/stdlib.h **** 
 504:/usr/lib/avr/include/stdlib.h ****    \warning If the buffer is too small, you risk a buffer overflow.
 505:/usr/lib/avr/include/stdlib.h **** 
 506:/usr/lib/avr/include/stdlib.h ****    Conversion is done using the \c radix as base, which may be a
 507:/usr/lib/avr/include/stdlib.h ****    number between 2 (binary conversion) and up to 36.  If \c radix
 508:/usr/lib/avr/include/stdlib.h ****    is greater than 10, the next digit after \c '9' will be the letter
 509:/usr/lib/avr/include/stdlib.h ****    \c 'a'.
 510:/usr/lib/avr/include/stdlib.h **** 
 511:/usr/lib/avr/include/stdlib.h ****    The utoa() function returns the pointer passed as \c s.
 512:/usr/lib/avr/include/stdlib.h **** */
 513:/usr/lib/avr/include/stdlib.h **** #ifdef  __DOXYGEN__
 514:/usr/lib/avr/include/stdlib.h **** extern char *utoa(unsigned int val, char *s, int radix);
 515:/usr/lib/avr/include/stdlib.h **** #else
 516:/usr/lib/avr/include/stdlib.h **** extern __inline__ __ATTR_GNU_INLINE__
 517:/usr/lib/avr/include/stdlib.h **** char *utoa (unsigned int __val, char *__s, int __radix)
 518:/usr/lib/avr/include/stdlib.h **** {
 176               	.LM4:
 177               	.LFBB3:
 178               	/* prologue: function */
 179               	/* frame size = 0 */
 180               	/* stack size = 0 */
 181               	.L__stack_usage = 0
 182               	.LBB41:
 519:/usr/lib/avr/include/stdlib.h ****     if (!__builtin_constant_p (__radix)) {
 520:/usr/lib/avr/include/stdlib.h **** 	extern char *__utoa (unsigned int, char *, int);
 521:/usr/lib/avr/include/stdlib.h **** 	return __utoa (__val, __s, __radix);
 184               	.LM5:
 185 0000 0C94 0000 		jmp __utoa
 186               	.LBE41:
 188               	.Lscope3:
 190               		.stabd	78,0,0
 191               		.section	.text.ultoa,"axG",@progbits,ultoa,comdat
 196               		.weak	ultoa
 198               	ultoa:
 199               		.stabd	46,0,0
 522:/usr/lib/avr/include/stdlib.h ****     } else if (__radix < 2 || __radix > 36) {
 523:/usr/lib/avr/include/stdlib.h **** 	*__s = 0;
 524:/usr/lib/avr/include/stdlib.h **** 	return __s;
 525:/usr/lib/avr/include/stdlib.h ****     } else {
 526:/usr/lib/avr/include/stdlib.h **** 	extern char *__utoa_ncheck (unsigned int, char *, unsigned char);
 527:/usr/lib/avr/include/stdlib.h **** 	return __utoa_ncheck (__val, __s, __radix);
 528:/usr/lib/avr/include/stdlib.h ****     }
 529:/usr/lib/avr/include/stdlib.h **** }
 530:/usr/lib/avr/include/stdlib.h **** #endif
 531:/usr/lib/avr/include/stdlib.h **** 
 532:/usr/lib/avr/include/stdlib.h **** /**
 533:/usr/lib/avr/include/stdlib.h ****  \ingroup avr_stdlib
 534:/usr/lib/avr/include/stdlib.h ****    \brief Convert an unsigned long integer to a string.
 535:/usr/lib/avr/include/stdlib.h **** 
 536:/usr/lib/avr/include/stdlib.h ****    The function ultoa() converts the unsigned long integer value from
 537:/usr/lib/avr/include/stdlib.h ****    \c val into an ASCII representation that will be stored under \c s.
 538:/usr/lib/avr/include/stdlib.h ****    The caller is responsible for providing sufficient storage in \c s.
 539:/usr/lib/avr/include/stdlib.h **** 
 540:/usr/lib/avr/include/stdlib.h ****    \note The minimal size of the buffer \c s depends on the choice of
 541:/usr/lib/avr/include/stdlib.h ****    radix. For example, if the radix is 2 (binary), you need to supply a buffer
 542:/usr/lib/avr/include/stdlib.h ****    with a minimal length of 8 * sizeof (unsigned long int) + 1 characters,
 543:/usr/lib/avr/include/stdlib.h ****    i.e. one character for each bit plus one for the string terminator. Using a
 544:/usr/lib/avr/include/stdlib.h ****    larger radix will require a smaller minimal buffer size.
 545:/usr/lib/avr/include/stdlib.h **** 
 546:/usr/lib/avr/include/stdlib.h ****    \warning If the buffer is too small, you risk a buffer overflow.
 547:/usr/lib/avr/include/stdlib.h **** 
 548:/usr/lib/avr/include/stdlib.h ****    Conversion is done using the \c radix as base, which may be a
 549:/usr/lib/avr/include/stdlib.h ****    number between 2 (binary conversion) and up to 36.  If \c radix
 550:/usr/lib/avr/include/stdlib.h ****    is greater than 10, the next digit after \c '9' will be the letter
 551:/usr/lib/avr/include/stdlib.h ****    \c 'a'.
 552:/usr/lib/avr/include/stdlib.h **** 
 553:/usr/lib/avr/include/stdlib.h ****    The ultoa() function returns the pointer passed as \c s.
 554:/usr/lib/avr/include/stdlib.h **** */
 555:/usr/lib/avr/include/stdlib.h **** #ifdef  __DOXYGEN__
 556:/usr/lib/avr/include/stdlib.h **** extern char *ultoa(unsigned long val, char *s, int radix);
 557:/usr/lib/avr/include/stdlib.h **** #else
 558:/usr/lib/avr/include/stdlib.h **** extern __inline__ __ATTR_GNU_INLINE__
 559:/usr/lib/avr/include/stdlib.h **** char *ultoa (unsigned long __val, char *__s, int __radix)
 560:/usr/lib/avr/include/stdlib.h **** {
 201               	.LM6:
 202               	.LFBB4:
 203               	/* prologue: function */
 204               	/* frame size = 0 */
 205               	/* stack size = 0 */
 206               	.L__stack_usage = 0
 207               	.LBB42:
 561:/usr/lib/avr/include/stdlib.h ****     if (!__builtin_constant_p (__radix)) {
 562:/usr/lib/avr/include/stdlib.h **** 	extern char *__ultoa (unsigned long, char *, int);
 563:/usr/lib/avr/include/stdlib.h **** 	return __ultoa (__val, __s, __radix);
 209               	.LM7:
 210 0000 0C94 0000 		jmp __ultoa
 211               	.LBE42:
 213               	.Lscope4:
 215               		.stabd	78,0,0
 216               		.text
 219               	.global	_ZN6StringD2Ev
 221               	_ZN6StringD2Ev:
 222               		.stabd	46,0,0
 224               	.Ltext2:
   1:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** /*
   2:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp ****   WString.cpp - String library for Wiring & Arduino
   3:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp ****   ...mostly rewritten by Paul Stoffregen...
   4:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp ****   Copyright (c) 2009-10 Hernando Barragan.  All rights reserved.
   5:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp ****   Copyright 2011, Paul Stoffregen, paul@pjrc.com
   6:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 
   7:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp ****   This library is free software; you can redistribute it and/or
   8:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp ****   modify it under the terms of the GNU Lesser General Public
   9:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp ****   License as published by the Free Software Foundation; either
  10:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp ****   version 2.1 of the License, or (at your option) any later version.
  11:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 
  12:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp ****   This library is distributed in the hope that it will be useful,
  13:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp ****   but WITHOUT ANY WARRANTY; without even the implied warranty of
  14:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp ****   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  15:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp ****   Lesser General Public License for more details.
  16:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 
  17:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp ****   You should have received a copy of the GNU Lesser General Public
  18:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp ****   License along with this library; if not, write to the Free Software
  19:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp ****   Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
  20:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** */
  21:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 
  22:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** #include "WString.h"
  23:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 
  24:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** /*********************************************/
  25:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** /*  Constructors                             */
  26:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** /*********************************************/
  27:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 
  28:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** String::String(const char *cstr)
  29:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** {
  30:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	init();
  31:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	if (cstr) copy(cstr, strlen(cstr));
  32:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** }
  33:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 
  34:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** String::String(const String &value)
  35:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** {
  36:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	init();
  37:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	*this = value;
  38:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** }
  39:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 
  40:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** String::String(const __FlashStringHelper *pstr)
  41:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** {
  42:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	init();
  43:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	*this = pstr;
  44:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** }
  45:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 
  46:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** #if __cplusplus >= 201103L || defined(__GXX_EXPERIMENTAL_CXX0X__)
  47:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** String::String(String &&rval)
  48:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** {
  49:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	init();
  50:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	move(rval);
  51:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** }
  52:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** String::String(StringSumHelper &&rval)
  53:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** {
  54:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	init();
  55:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	move(rval);
  56:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** }
  57:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** #endif
  58:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 
  59:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** String::String(char c)
  60:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** {
  61:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	init();
  62:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	char buf[2];
  63:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	buf[0] = c;
  64:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	buf[1] = 0;
  65:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	*this = buf;
  66:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** }
  67:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 
  68:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** String::String(unsigned char value, unsigned char base)
  69:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** {
  70:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	init();
  71:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	char buf[1 + 8 * sizeof(unsigned char)];
  72:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	utoa(value, buf, base);
  73:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	*this = buf;
  74:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** }
  75:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 
  76:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** String::String(int value, unsigned char base)
  77:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** {
  78:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	init();
  79:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	char buf[2 + 8 * sizeof(int)];
  80:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	itoa(value, buf, base);
  81:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	*this = buf;
  82:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** }
  83:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 
  84:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** String::String(unsigned int value, unsigned char base)
  85:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** {
  86:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	init();
  87:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	char buf[1 + 8 * sizeof(unsigned int)];
  88:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	utoa(value, buf, base);
  89:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	*this = buf;
  90:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** }
  91:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 
  92:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** String::String(long value, unsigned char base)
  93:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** {
  94:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	init();
  95:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	char buf[2 + 8 * sizeof(long)];
  96:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	ltoa(value, buf, base);
  97:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	*this = buf;
  98:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** }
  99:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 
 100:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** String::String(unsigned long value, unsigned char base)
 101:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** {
 102:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	init();
 103:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	char buf[1 + 8 * sizeof(unsigned long)];
 104:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	ultoa(value, buf, base);
 105:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	*this = buf;
 106:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** }
 107:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 
 108:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** String::String(float value, unsigned char decimalPlaces)
 109:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** {
 110:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	init();
 111:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	char buf[33];
 112:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	*this = dtostrf(value, (decimalPlaces + 2), decimalPlaces, buf);
 113:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** }
 114:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 
 115:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** String::String(double value, unsigned char decimalPlaces)
 116:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** {
 117:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	init();
 118:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	char buf[33];
 119:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	*this = dtostrf(value, (decimalPlaces + 2), decimalPlaces, buf);
 120:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** }
 121:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 
 122:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** String::~String()
 226               	.LM8:
 227               	.LFBB5:
 228               	/* prologue: function */
 229               	/* frame size = 0 */
 230               	/* stack size = 0 */
 231               	.L__stack_usage = 0
 232               	.LBB43:
 123:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** {
 124:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	free(buffer);
 234               	.LM9:
 235 0000 FC01      		movw r30,r24
 236 0002 8081      		ld r24,Z
 237 0004 9181      		ldd r25,Z+1
 238 0006 0C94 0000 		jmp free
 239               	.LBE43:
 241               	.Lscope5:
 243               		.stabd	78,0,0
 244               	.global	_ZN6StringD1Ev
 245               		.set	_ZN6StringD1Ev,_ZN6StringD2Ev
 248               	.global	_ZN6String10invalidateEv
 250               	_ZN6String10invalidateEv:
 251               		.stabd	46,0,0
 125:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** }
 126:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 
 127:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** /*********************************************/
 128:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** /*  Memory Management                        */
 129:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** /*********************************************/
 130:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 
 131:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** inline void String::init(void)
 132:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** {
 133:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	buffer = NULL;
 134:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	capacity = 0;
 135:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	len = 0;
 136:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** }
 137:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 
 138:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** void String::invalidate(void)
 139:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** {
 253               	.LM10:
 254               	.LFBB6:
 255 000a CF93      		push r28
 256 000c DF93      		push r29
 257               	/* prologue: function */
 258               	/* frame size = 0 */
 259               	/* stack size = 2 */
 260               	.L__stack_usage = 2
 261 000e EC01      		movw r28,r24
 140:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	if (buffer) free(buffer);
 263               	.LM11:
 264 0010 8881      		ld r24,Y
 265 0012 9981      		ldd r25,Y+1
 266 0014 0097      		sbiw r24,0
 267 0016 01F0      		breq .L7
 269               	.LM12:
 270 0018 0E94 0000 		call free
 271               	.L7:
 141:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	buffer = NULL;
 273               	.LM13:
 274 001c 1982      		std Y+1,__zero_reg__
 275 001e 1882      		st Y,__zero_reg__
 142:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	capacity = len = 0;
 277               	.LM14:
 278 0020 1D82      		std Y+5,__zero_reg__
 279 0022 1C82      		std Y+4,__zero_reg__
 280 0024 1B82      		std Y+3,__zero_reg__
 281 0026 1A82      		std Y+2,__zero_reg__
 282               	/* epilogue start */
 143:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** }
 284               	.LM15:
 285 0028 DF91      		pop r29
 286 002a CF91      		pop r28
 287 002c 0895      		ret
 289               	.Lscope6:
 291               		.stabd	78,0,0
 295               	.global	_ZN6String12changeBufferEj
 297               	_ZN6String12changeBufferEj:
 298               		.stabd	46,0,0
 144:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 
 145:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** unsigned char String::reserve(unsigned int size)
 146:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** {
 147:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	if (buffer && capacity >= size) return 1;
 148:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	if (changeBuffer(size)) {
 149:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 		if (len == 0) buffer[0] = 0;
 150:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 		return 1;
 151:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	}
 152:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	return 0;
 153:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** }
 154:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 
 155:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** unsigned char String::changeBuffer(unsigned int maxStrLen)
 156:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** {
 300               	.LM16:
 301               	.LFBB7:
 302 002e 0F93      		push r16
 303 0030 1F93      		push r17
 304 0032 CF93      		push r28
 305 0034 DF93      		push r29
 306               	/* prologue: function */
 307               	/* frame size = 0 */
 308               	/* stack size = 4 */
 309               	.L__stack_usage = 4
 310 0036 EC01      		movw r28,r24
 311 0038 8B01      		movw r16,r22
 157:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	char *newbuffer = (char *)realloc(buffer, maxStrLen + 1);
 313               	.LM17:
 314 003a 6F5F      		subi r22,-1
 315 003c 7F4F      		sbci r23,-1
 316 003e 8881      		ld r24,Y
 317 0040 9981      		ldd r25,Y+1
 318 0042 0E94 0000 		call realloc
 158:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	if (newbuffer) {
 320               	.LM18:
 321 0046 0097      		sbiw r24,0
 322 0048 01F0      		breq .L14
 159:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 		buffer = newbuffer;
 324               	.LM19:
 325 004a 9983      		std Y+1,r25
 326 004c 8883      		st Y,r24
 160:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 		capacity = maxStrLen;
 328               	.LM20:
 329 004e 1B83      		std Y+3,r17
 330 0050 0A83      		std Y+2,r16
 161:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 		return 1;
 332               	.LM21:
 333 0052 81E0      		ldi r24,lo8(1)
 334 0054 00C0      		rjmp .L13
 335               	.L14:
 162:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	}
 163:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	return 0;
 337               	.LM22:
 338 0056 80E0      		ldi r24,0
 339               	.L13:
 340               	/* epilogue start */
 164:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** }
 342               	.LM23:
 343 0058 DF91      		pop r29
 344 005a CF91      		pop r28
 345 005c 1F91      		pop r17
 346 005e 0F91      		pop r16
 347 0060 0895      		ret
 349               	.Lscope7:
 351               		.stabd	78,0,0
 355               	.global	_ZN6String7reserveEj
 357               	_ZN6String7reserveEj:
 358               		.stabd	46,0,0
 146:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	if (buffer && capacity >= size) return 1;
 360               	.LM24:
 361               	.LFBB8:
 362 0062 CF93      		push r28
 363 0064 DF93      		push r29
 364               	/* prologue: function */
 365               	/* frame size = 0 */
 366               	/* stack size = 2 */
 367               	.L__stack_usage = 2
 368 0066 EC01      		movw r28,r24
 147:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	if (changeBuffer(size)) {
 370               	.LM25:
 371 0068 8881      		ld r24,Y
 372 006a 9981      		ldd r25,Y+1
 373 006c 892B      		or r24,r25
 374 006e 01F0      		breq .L16
 147:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	if (changeBuffer(size)) {
 376               	.LM26:
 377 0070 8A81      		ldd r24,Y+2
 378 0072 9B81      		ldd r25,Y+3
 379 0074 8617      		cp r24,r22
 380 0076 9707      		cpc r25,r23
 381 0078 00F4      		brsh .L25
 382               	.L16:
 148:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 		if (len == 0) buffer[0] = 0;
 384               	.LM27:
 385 007a CE01      		movw r24,r28
 386 007c 0E94 0000 		call _ZN6String12changeBufferEj
 387 0080 8823      		tst r24
 388 0082 01F0      		breq .L17
 389               	.LBB46:
 390               	.LBB47:
 149:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 		return 1;
 392               	.LM28:
 393 0084 8C81      		ldd r24,Y+4
 394 0086 9D81      		ldd r25,Y+5
 395 0088 892B      		or r24,r25
 396 008a 01F4      		brne .L25
 397 008c E881      		ld r30,Y
 398 008e F981      		ldd r31,Y+1
 399 0090 1082      		st Z,__zero_reg__
 400               	.L25:
 401 0092 81E0      		ldi r24,lo8(1)
 402               	.L17:
 403               	/* epilogue start */
 404               	.LBE47:
 405               	.LBE46:
 153:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 
 407               	.LM29:
 408 0094 DF91      		pop r29
 409 0096 CF91      		pop r28
 410 0098 0895      		ret
 412               	.Lscope8:
 414               		.stabd	78,0,0
 419               	.global	_ZN6String4copyEPKcj
 421               	_ZN6String4copyEPKcj:
 422               		.stabd	46,0,0
 165:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 
 166:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** /*********************************************/
 167:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** /*  Copy and Move                            */
 168:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** /*********************************************/
 169:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 
 170:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** String & String::copy(const char *cstr, unsigned int length)
 171:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** {
 424               	.LM30:
 425               	.LFBB9:
 426 009a EF92      		push r14
 427 009c FF92      		push r15
 428 009e 0F93      		push r16
 429 00a0 1F93      		push r17
 430 00a2 CF93      		push r28
 431 00a4 DF93      		push r29
 432               	/* prologue: function */
 433               	/* frame size = 0 */
 434               	/* stack size = 6 */
 435               	.L__stack_usage = 6
 436 00a6 EC01      		movw r28,r24
 437 00a8 7B01      		movw r14,r22
 438 00aa 8A01      		movw r16,r20
 172:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	if (!reserve(length)) {
 440               	.LM31:
 441 00ac BA01      		movw r22,r20
 442 00ae 0E94 0000 		call _ZN6String7reserveEj
 443 00b2 8111      		cpse r24,__zero_reg__
 444 00b4 00C0      		rjmp .L27
 173:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 		invalidate();
 446               	.LM32:
 447 00b6 CE01      		movw r24,r28
 448 00b8 0E94 0000 		call _ZN6String10invalidateEv
 174:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 		return *this;
 450               	.LM33:
 451 00bc 00C0      		rjmp .L28
 452               	.L27:
 175:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	}
 176:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	len = length;
 454               	.LM34:
 455 00be 1D83      		std Y+5,r17
 456 00c0 0C83      		std Y+4,r16
 177:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	strcpy(buffer, cstr);
 458               	.LM35:
 459 00c2 B701      		movw r22,r14
 460 00c4 8881      		ld r24,Y
 461 00c6 9981      		ldd r25,Y+1
 462 00c8 0E94 0000 		call strcpy
 463               	.L28:
 178:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	return *this;
 179:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** }
 465               	.LM36:
 466 00cc CE01      		movw r24,r28
 467               	/* epilogue start */
 468 00ce DF91      		pop r29
 469 00d0 CF91      		pop r28
 470 00d2 1F91      		pop r17
 471 00d4 0F91      		pop r16
 472 00d6 FF90      		pop r15
 473 00d8 EF90      		pop r14
 474 00da 0895      		ret
 476               	.Lscope9:
 478               		.stabd	78,0,0
 482               	.global	_ZN6StringC2EPKc
 484               	_ZN6StringC2EPKc:
 485               		.stabd	46,0,0
  28:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** {
 487               	.LM37:
 488               	.LFBB10:
 489               	/* prologue: function */
 490               	/* frame size = 0 */
 491               	/* stack size = 0 */
 492               	.L__stack_usage = 0
 493               	.LBB48:
 494               	.LBB49:
 495               	.LBB50:
 133:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	capacity = 0;
 497               	.LM38:
 498 00dc FC01      		movw r30,r24
 499 00de 1182      		std Z+1,__zero_reg__
 500 00e0 1082      		st Z,__zero_reg__
 134:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	len = 0;
 502               	.LM39:
 503 00e2 1382      		std Z+3,__zero_reg__
 504 00e4 1282      		std Z+2,__zero_reg__
 135:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** }
 506               	.LM40:
 507 00e6 1582      		std Z+5,__zero_reg__
 508 00e8 1482      		std Z+4,__zero_reg__
 509               	.LBE50:
 510               	.LBE49:
  31:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** }
 512               	.LM41:
 513 00ea 6115      		cp r22,__zero_reg__
 514 00ec 7105      		cpc r23,__zero_reg__
 515 00ee 01F0      		breq .L29
  31:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** }
 517               	.LM42:
 518 00f0 FB01      		movw r30,r22
 519               		0:
 520 00f2 0190      		ld __tmp_reg__,Z+
 521 00f4 0020      		tst __tmp_reg__
 522 00f6 01F4      		brne 0b
 523 00f8 3197      		sbiw r30,1
 524 00fa AF01      		movw r20,r30
 525 00fc 461B      		sub r20,r22
 526 00fe 570B      		sbc r21,r23
 527 0100 0C94 0000 		jmp _ZN6String4copyEPKcj
 528               	.L29:
 529 0104 0895      		ret
 530               	.LBE48:
 532               	.Lscope10:
 534               		.stabd	78,0,0
 535               	.global	_ZN6StringC1EPKc
 536               		.set	_ZN6StringC1EPKc,_ZN6StringC2EPKc
 541               	.global	_ZN6String4copyEPK19__FlashStringHelperj
 543               	_ZN6String4copyEPK19__FlashStringHelperj:
 544               		.stabd	46,0,0
 180:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 
 181:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** String & String::copy(const __FlashStringHelper *pstr, unsigned int length)
 182:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** {
 546               	.LM43:
 547               	.LFBB11:
 548 0106 EF92      		push r14
 549 0108 FF92      		push r15
 550 010a 0F93      		push r16
 551 010c 1F93      		push r17
 552 010e CF93      		push r28
 553 0110 DF93      		push r29
 554               	/* prologue: function */
 555               	/* frame size = 0 */
 556               	/* stack size = 6 */
 557               	.L__stack_usage = 6
 558 0112 EC01      		movw r28,r24
 559 0114 7B01      		movw r14,r22
 560 0116 8A01      		movw r16,r20
 183:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	if (!reserve(length)) {
 562               	.LM44:
 563 0118 BA01      		movw r22,r20
 564 011a 0E94 0000 		call _ZN6String7reserveEj
 565 011e 8111      		cpse r24,__zero_reg__
 566 0120 00C0      		rjmp .L32
 184:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 		invalidate();
 568               	.LM45:
 569 0122 CE01      		movw r24,r28
 570 0124 0E94 0000 		call _ZN6String10invalidateEv
 185:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 		return *this;
 572               	.LM46:
 573 0128 00C0      		rjmp .L33
 574               	.L32:
 186:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	}
 187:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	len = length;
 576               	.LM47:
 577 012a 1D83      		std Y+5,r17
 578 012c 0C83      		std Y+4,r16
 188:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	strcpy_P(buffer, (PGM_P)pstr);
 580               	.LM48:
 581 012e B701      		movw r22,r14
 582 0130 8881      		ld r24,Y
 583 0132 9981      		ldd r25,Y+1
 584 0134 0E94 0000 		call strcpy_P
 585               	.L33:
 189:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	return *this;
 190:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** }
 587               	.LM49:
 588 0138 CE01      		movw r24,r28
 589               	/* epilogue start */
 590 013a DF91      		pop r29
 591 013c CF91      		pop r28
 592 013e 1F91      		pop r17
 593 0140 0F91      		pop r16
 594 0142 FF90      		pop r15
 595 0144 EF90      		pop r14
 596 0146 0895      		ret
 598               	.Lscope11:
 600               		.stabd	78,0,0
 604               	.global	_ZN6StringaSERKS_
 606               	_ZN6StringaSERKS_:
 607               		.stabd	46,0,0
 191:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 
 192:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** #if __cplusplus >= 201103L || defined(__GXX_EXPERIMENTAL_CXX0X__)
 193:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** void String::move(String &rhs)
 194:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** {
 195:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	if (buffer) {
 196:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 		if (rhs && capacity >= rhs.len) {
 197:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 			strcpy(buffer, rhs.buffer);
 198:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 			len = rhs.len;
 199:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 			rhs.len = 0;
 200:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 			return;
 201:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 		} else {
 202:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 			free(buffer);
 203:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 		}
 204:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	}
 205:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	buffer = rhs.buffer;
 206:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	capacity = rhs.capacity;
 207:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	len = rhs.len;
 208:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	rhs.buffer = NULL;
 209:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	rhs.capacity = 0;
 210:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	rhs.len = 0;
 211:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** }
 212:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** #endif
 213:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 
 214:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** String & String::operator = (const String &rhs)
 215:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** {
 609               	.LM50:
 610               	.LFBB12:
 611 0148 CF93      		push r28
 612 014a DF93      		push r29
 613               	/* prologue: function */
 614               	/* frame size = 0 */
 615               	/* stack size = 2 */
 616               	.L__stack_usage = 2
 617 014c EC01      		movw r28,r24
 618 014e FB01      		movw r30,r22
 216:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	if (this == &rhs) return *this;
 620               	.LM51:
 621 0150 8617      		cp r24,r22
 622 0152 9707      		cpc r25,r23
 623 0154 01F0      		breq .L35
 217:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	
 218:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	if (rhs.buffer) copy(rhs.buffer, rhs.len);
 625               	.LM52:
 626 0156 6081      		ld r22,Z
 627 0158 7181      		ldd r23,Z+1
 628 015a 6115      		cp r22,__zero_reg__
 629 015c 7105      		cpc r23,__zero_reg__
 630 015e 01F0      		breq .L36
 632               	.LM53:
 633 0160 4481      		ldd r20,Z+4
 634 0162 5581      		ldd r21,Z+5
 635 0164 0E94 0000 		call _ZN6String4copyEPKcj
 636 0168 00C0      		rjmp .L35
 637               	.L36:
 219:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	else invalidate();
 639               	.LM54:
 640 016a 0E94 0000 		call _ZN6String10invalidateEv
 641               	.L35:
 220:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	
 221:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	return *this;
 222:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** }
 643               	.LM55:
 644 016e CE01      		movw r24,r28
 645               	/* epilogue start */
 646 0170 DF91      		pop r29
 647 0172 CF91      		pop r28
 648 0174 0895      		ret
 650               	.Lscope12:
 652               		.stabd	78,0,0
 656               	.global	_ZN6StringC2ERKS_
 658               	_ZN6StringC2ERKS_:
 659               		.stabd	46,0,0
  34:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** {
 661               	.LM56:
 662               	.LFBB13:
 663               	/* prologue: function */
 664               	/* frame size = 0 */
 665               	/* stack size = 0 */
 666               	.L__stack_usage = 0
 667               	.LBB51:
 668               	.LBB52:
 669               	.LBB53:
 133:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	capacity = 0;
 671               	.LM57:
 672 0176 FC01      		movw r30,r24
 673 0178 1182      		std Z+1,__zero_reg__
 674 017a 1082      		st Z,__zero_reg__
 134:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	len = 0;
 676               	.LM58:
 677 017c 1382      		std Z+3,__zero_reg__
 678 017e 1282      		std Z+2,__zero_reg__
 135:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** }
 680               	.LM59:
 681 0180 1582      		std Z+5,__zero_reg__
 682 0182 1482      		std Z+4,__zero_reg__
 683               	.LBE53:
 684               	.LBE52:
  37:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** }
 686               	.LM60:
 687 0184 0C94 0000 		jmp _ZN6StringaSERKS_
 688               	.LBE51:
 690               	.Lscope13:
 692               		.stabd	78,0,0
 693               	.global	_ZN6StringC1ERKS_
 694               		.set	_ZN6StringC1ERKS_,_ZN6StringC2ERKS_
 698               	.global	_ZN6StringaSEPKc
 700               	_ZN6StringaSEPKc:
 701               		.stabd	46,0,0
 223:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 
 224:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** #if __cplusplus >= 201103L || defined(__GXX_EXPERIMENTAL_CXX0X__)
 225:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** String & String::operator = (String &&rval)
 226:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** {
 227:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	if (this != &rval) move(rval);
 228:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	return *this;
 229:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** }
 230:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 
 231:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** String & String::operator = (StringSumHelper &&rval)
 232:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** {
 233:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	if (this != &rval) move(rval);
 234:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	return *this;
 235:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** }
 236:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** #endif
 237:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 
 238:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** String & String::operator = (const char *cstr)
 239:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** {
 703               	.LM61:
 704               	.LFBB14:
 705 0188 CF93      		push r28
 706 018a DF93      		push r29
 707               	/* prologue: function */
 708               	/* frame size = 0 */
 709               	/* stack size = 2 */
 710               	.L__stack_usage = 2
 711 018c EC01      		movw r28,r24
 240:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	if (cstr) copy(cstr, strlen(cstr));
 713               	.LM62:
 714 018e 6115      		cp r22,__zero_reg__
 715 0190 7105      		cpc r23,__zero_reg__
 716 0192 01F0      		breq .L39
 718               	.LM63:
 719 0194 FB01      		movw r30,r22
 720               		0:
 721 0196 0190      		ld __tmp_reg__,Z+
 722 0198 0020      		tst __tmp_reg__
 723 019a 01F4      		brne 0b
 724 019c 3197      		sbiw r30,1
 725 019e AF01      		movw r20,r30
 726 01a0 461B      		sub r20,r22
 727 01a2 570B      		sbc r21,r23
 728 01a4 0E94 0000 		call _ZN6String4copyEPKcj
 729 01a8 00C0      		rjmp .L40
 730               	.L39:
 241:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	else invalidate();
 732               	.LM64:
 733 01aa 0E94 0000 		call _ZN6String10invalidateEv
 734               	.L40:
 242:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	
 243:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	return *this;
 244:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** }
 736               	.LM65:
 737 01ae CE01      		movw r24,r28
 738               	/* epilogue start */
 739 01b0 DF91      		pop r29
 740 01b2 CF91      		pop r28
 741 01b4 0895      		ret
 743               	.Lscope14:
 745               		.stabd	78,0,0
 749               	.global	_ZN6StringC2Ec
 751               	_ZN6StringC2Ec:
 752               		.stabd	46,0,0
  59:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** {
 754               	.LM66:
 755               	.LFBB15:
 756 01b6 CF93      		push r28
 757 01b8 DF93      		push r29
 758 01ba 00D0      		rcall .
 759 01bc CDB7      		in r28,__SP_L__
 760 01be DEB7      		in r29,__SP_H__
 761               	/* prologue: function */
 762               	/* frame size = 2 */
 763               	/* stack size = 4 */
 764               	.L__stack_usage = 4
 765               	.LBB54:
 766               	.LBB55:
 767               	.LBB56:
 133:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	capacity = 0;
 769               	.LM67:
 770 01c0 FC01      		movw r30,r24
 771 01c2 1182      		std Z+1,__zero_reg__
 772 01c4 1082      		st Z,__zero_reg__
 134:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	len = 0;
 774               	.LM68:
 775 01c6 1382      		std Z+3,__zero_reg__
 776 01c8 1282      		std Z+2,__zero_reg__
 135:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** }
 778               	.LM69:
 779 01ca 1582      		std Z+5,__zero_reg__
 780 01cc 1482      		std Z+4,__zero_reg__
 781               	.LBE56:
 782               	.LBE55:
  63:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	buf[1] = 0;
 784               	.LM70:
 785 01ce 6983      		std Y+1,r22
  64:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	*this = buf;
 787               	.LM71:
 788 01d0 1A82      		std Y+2,__zero_reg__
  65:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** }
 790               	.LM72:
 791 01d2 BE01      		movw r22,r28
 792 01d4 6F5F      		subi r22,-1
 793 01d6 7F4F      		sbci r23,-1
 794 01d8 0E94 0000 		call _ZN6StringaSEPKc
 795               	/* epilogue start */
 796               	.LBE54:
  66:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 
 798               	.LM73:
 799 01dc 0F90      		pop __tmp_reg__
 800 01de 0F90      		pop __tmp_reg__
 801 01e0 DF91      		pop r29
 802 01e2 CF91      		pop r28
 803 01e4 0895      		ret
 808               	.Lscope15:
 810               		.stabd	78,0,0
 811               	.global	_ZN6StringC1Ec
 812               		.set	_ZN6StringC1Ec,_ZN6StringC2Ec
 817               	.global	_ZN6StringC2Ehh
 819               	_ZN6StringC2Ehh:
 820               		.stabd	46,0,0
  68:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** {
 822               	.LM74:
 823               	.LFBB16:
 824 01e6 0F93      		push r16
 825 01e8 1F93      		push r17
 826 01ea CF93      		push r28
 827 01ec DF93      		push r29
 828 01ee CDB7      		in r28,__SP_L__
 829 01f0 DEB7      		in r29,__SP_H__
 830 01f2 2997      		sbiw r28,9
 831 01f4 0FB6      		in __tmp_reg__,__SREG__
 832 01f6 F894      		cli
 833 01f8 DEBF      		out __SP_H__,r29
 834 01fa 0FBE      		out __SREG__,__tmp_reg__
 835 01fc CDBF      		out __SP_L__,r28
 836               	/* prologue: function */
 837               	/* frame size = 9 */
 838               	/* stack size = 13 */
 839               	.L__stack_usage = 13
 840 01fe 8C01      		movw r16,r24
 841 0200 862F      		mov r24,r22
 842               	.LBB57:
 843               	.LBB58:
 844               	.LBB59:
 133:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	capacity = 0;
 846               	.LM75:
 847 0202 F801      		movw r30,r16
 848 0204 1182      		std Z+1,__zero_reg__
 849 0206 1082      		st Z,__zero_reg__
 134:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	len = 0;
 851               	.LM76:
 852 0208 1382      		std Z+3,__zero_reg__
 853 020a 1282      		std Z+2,__zero_reg__
 135:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** }
 855               	.LM77:
 856 020c 1582      		std Z+5,__zero_reg__
 857 020e 1482      		std Z+4,__zero_reg__
 858               	.LBE59:
 859               	.LBE58:
  72:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	*this = buf;
 861               	.LM78:
 862 0210 50E0      		ldi r21,0
 863 0212 BE01      		movw r22,r28
 864 0214 6F5F      		subi r22,-1
 865 0216 7F4F      		sbci r23,-1
 866 0218 90E0      		ldi r25,0
 867 021a 0E94 0000 		call utoa
  73:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** }
 869               	.LM79:
 870 021e BE01      		movw r22,r28
 871 0220 6F5F      		subi r22,-1
 872 0222 7F4F      		sbci r23,-1
 873 0224 C801      		movw r24,r16
 874 0226 0E94 0000 		call _ZN6StringaSEPKc
 875               	/* epilogue start */
 876               	.LBE57:
  74:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 
 878               	.LM80:
 879 022a 2996      		adiw r28,9
 880 022c 0FB6      		in __tmp_reg__,__SREG__
 881 022e F894      		cli
 882 0230 DEBF      		out __SP_H__,r29
 883 0232 0FBE      		out __SREG__,__tmp_reg__
 884 0234 CDBF      		out __SP_L__,r28
 885 0236 DF91      		pop r29
 886 0238 CF91      		pop r28
 887 023a 1F91      		pop r17
 888 023c 0F91      		pop r16
 889 023e 0895      		ret
 894               	.Lscope16:
 896               		.stabd	78,0,0
 897               	.global	_ZN6StringC1Ehh
 898               		.set	_ZN6StringC1Ehh,_ZN6StringC2Ehh
 903               	.global	_ZN6StringC2Eih
 905               	_ZN6StringC2Eih:
 906               		.stabd	46,0,0
  76:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** {
 908               	.LM81:
 909               	.LFBB17:
 910 0240 0F93      		push r16
 911 0242 1F93      		push r17
 912 0244 CF93      		push r28
 913 0246 DF93      		push r29
 914 0248 CDB7      		in r28,__SP_L__
 915 024a DEB7      		in r29,__SP_H__
 916 024c 6297      		sbiw r28,18
 917 024e 0FB6      		in __tmp_reg__,__SREG__
 918 0250 F894      		cli
 919 0252 DEBF      		out __SP_H__,r29
 920 0254 0FBE      		out __SREG__,__tmp_reg__
 921 0256 CDBF      		out __SP_L__,r28
 922               	/* prologue: function */
 923               	/* frame size = 18 */
 924               	/* stack size = 22 */
 925               	.L__stack_usage = 22
 926 0258 8C01      		movw r16,r24
 927 025a CB01      		movw r24,r22
 928               	.LBB60:
 929               	.LBB61:
 930               	.LBB62:
 133:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	capacity = 0;
 932               	.LM82:
 933 025c F801      		movw r30,r16
 934 025e 1182      		std Z+1,__zero_reg__
 935 0260 1082      		st Z,__zero_reg__
 134:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	len = 0;
 937               	.LM83:
 938 0262 1382      		std Z+3,__zero_reg__
 939 0264 1282      		std Z+2,__zero_reg__
 135:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** }
 941               	.LM84:
 942 0266 1582      		std Z+5,__zero_reg__
 943 0268 1482      		std Z+4,__zero_reg__
 944               	.LBE62:
 945               	.LBE61:
  80:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	*this = buf;
 947               	.LM85:
 948 026a 50E0      		ldi r21,0
 949 026c BE01      		movw r22,r28
 950 026e 6F5F      		subi r22,-1
 951 0270 7F4F      		sbci r23,-1
 952 0272 0E94 0000 		call itoa
  81:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** }
 954               	.LM86:
 955 0276 BE01      		movw r22,r28
 956 0278 6F5F      		subi r22,-1
 957 027a 7F4F      		sbci r23,-1
 958 027c C801      		movw r24,r16
 959 027e 0E94 0000 		call _ZN6StringaSEPKc
 960               	/* epilogue start */
 961               	.LBE60:
  82:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 
 963               	.LM87:
 964 0282 6296      		adiw r28,18
 965 0284 0FB6      		in __tmp_reg__,__SREG__
 966 0286 F894      		cli
 967 0288 DEBF      		out __SP_H__,r29
 968 028a 0FBE      		out __SREG__,__tmp_reg__
 969 028c CDBF      		out __SP_L__,r28
 970 028e DF91      		pop r29
 971 0290 CF91      		pop r28
 972 0292 1F91      		pop r17
 973 0294 0F91      		pop r16
 974 0296 0895      		ret
 979               	.Lscope17:
 981               		.stabd	78,0,0
 982               	.global	_ZN6StringC1Eih
 983               		.set	_ZN6StringC1Eih,_ZN6StringC2Eih
 988               	.global	_ZN6StringC2Ejh
 990               	_ZN6StringC2Ejh:
 991               		.stabd	46,0,0
  84:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** {
 993               	.LM88:
 994               	.LFBB18:
 995 0298 0F93      		push r16
 996 029a 1F93      		push r17
 997 029c CF93      		push r28
 998 029e DF93      		push r29
 999 02a0 CDB7      		in r28,__SP_L__
 1000 02a2 DEB7      		in r29,__SP_H__
 1001 02a4 6197      		sbiw r28,17
 1002 02a6 0FB6      		in __tmp_reg__,__SREG__
 1003 02a8 F894      		cli
 1004 02aa DEBF      		out __SP_H__,r29
 1005 02ac 0FBE      		out __SREG__,__tmp_reg__
 1006 02ae CDBF      		out __SP_L__,r28
 1007               	/* prologue: function */
 1008               	/* frame size = 17 */
 1009               	/* stack size = 21 */
 1010               	.L__stack_usage = 21
 1011 02b0 8C01      		movw r16,r24
 1012 02b2 CB01      		movw r24,r22
 1013               	.LBB63:
 1014               	.LBB64:
 1015               	.LBB65:
 133:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	capacity = 0;
 1017               	.LM89:
 1018 02b4 F801      		movw r30,r16
 1019 02b6 1182      		std Z+1,__zero_reg__
 1020 02b8 1082      		st Z,__zero_reg__
 134:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	len = 0;
 1022               	.LM90:
 1023 02ba 1382      		std Z+3,__zero_reg__
 1024 02bc 1282      		std Z+2,__zero_reg__
 135:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** }
 1026               	.LM91:
 1027 02be 1582      		std Z+5,__zero_reg__
 1028 02c0 1482      		std Z+4,__zero_reg__
 1029               	.LBE65:
 1030               	.LBE64:
  88:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	*this = buf;
 1032               	.LM92:
 1033 02c2 50E0      		ldi r21,0
 1034 02c4 BE01      		movw r22,r28
 1035 02c6 6F5F      		subi r22,-1
 1036 02c8 7F4F      		sbci r23,-1
 1037 02ca 0E94 0000 		call utoa
  89:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** }
 1039               	.LM93:
 1040 02ce BE01      		movw r22,r28
 1041 02d0 6F5F      		subi r22,-1
 1042 02d2 7F4F      		sbci r23,-1
 1043 02d4 C801      		movw r24,r16
 1044 02d6 0E94 0000 		call _ZN6StringaSEPKc
 1045               	/* epilogue start */
 1046               	.LBE63:
  90:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 
 1048               	.LM94:
 1049 02da 6196      		adiw r28,17
 1050 02dc 0FB6      		in __tmp_reg__,__SREG__
 1051 02de F894      		cli
 1052 02e0 DEBF      		out __SP_H__,r29
 1053 02e2 0FBE      		out __SREG__,__tmp_reg__
 1054 02e4 CDBF      		out __SP_L__,r28
 1055 02e6 DF91      		pop r29
 1056 02e8 CF91      		pop r28
 1057 02ea 1F91      		pop r17
 1058 02ec 0F91      		pop r16
 1059 02ee 0895      		ret
 1064               	.Lscope18:
 1066               		.stabd	78,0,0
 1067               	.global	_ZN6StringC1Ejh
 1068               		.set	_ZN6StringC1Ejh,_ZN6StringC2Ejh
 1073               	.global	_ZN6StringC2Elh
 1075               	_ZN6StringC2Elh:
 1076               		.stabd	46,0,0
  92:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** {
 1078               	.LM95:
 1079               	.LFBB19:
 1080 02f0 0F93      		push r16
 1081 02f2 1F93      		push r17
 1082 02f4 CF93      		push r28
 1083 02f6 DF93      		push r29
 1084 02f8 CDB7      		in r28,__SP_L__
 1085 02fa DEB7      		in r29,__SP_H__
 1086 02fc A297      		sbiw r28,34
 1087 02fe 0FB6      		in __tmp_reg__,__SREG__
 1088 0300 F894      		cli
 1089 0302 DEBF      		out __SP_H__,r29
 1090 0304 0FBE      		out __SREG__,__tmp_reg__
 1091 0306 CDBF      		out __SP_L__,r28
 1092               	/* prologue: function */
 1093               	/* frame size = 34 */
 1094               	/* stack size = 38 */
 1095               	.L__stack_usage = 38
 1096 0308 8C01      		movw r16,r24
 1097 030a CB01      		movw r24,r22
 1098 030c BA01      		movw r22,r20
 1099               	.LBB66:
 1100               	.LBB67:
 1101               	.LBB68:
 133:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	capacity = 0;
 1103               	.LM96:
 1104 030e F801      		movw r30,r16
 1105 0310 1182      		std Z+1,__zero_reg__
 1106 0312 1082      		st Z,__zero_reg__
 134:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	len = 0;
 1108               	.LM97:
 1109 0314 1382      		std Z+3,__zero_reg__
 1110 0316 1282      		std Z+2,__zero_reg__
 135:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** }
 1112               	.LM98:
 1113 0318 1582      		std Z+5,__zero_reg__
 1114 031a 1482      		std Z+4,__zero_reg__
 1115               	.LBE68:
 1116               	.LBE67:
  96:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	*this = buf;
 1118               	.LM99:
 1119 031c 30E0      		ldi r19,0
 1120 031e AE01      		movw r20,r28
 1121 0320 4F5F      		subi r20,-1
 1122 0322 5F4F      		sbci r21,-1
 1123 0324 0E94 0000 		call ltoa
  97:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** }
 1125               	.LM100:
 1126 0328 BE01      		movw r22,r28
 1127 032a 6F5F      		subi r22,-1
 1128 032c 7F4F      		sbci r23,-1
 1129 032e C801      		movw r24,r16
 1130 0330 0E94 0000 		call _ZN6StringaSEPKc
 1131               	/* epilogue start */
 1132               	.LBE66:
  98:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 
 1134               	.LM101:
 1135 0334 A296      		adiw r28,34
 1136 0336 0FB6      		in __tmp_reg__,__SREG__
 1137 0338 F894      		cli
 1138 033a DEBF      		out __SP_H__,r29
 1139 033c 0FBE      		out __SREG__,__tmp_reg__
 1140 033e CDBF      		out __SP_L__,r28
 1141 0340 DF91      		pop r29
 1142 0342 CF91      		pop r28
 1143 0344 1F91      		pop r17
 1144 0346 0F91      		pop r16
 1145 0348 0895      		ret
 1150               	.Lscope19:
 1152               		.stabd	78,0,0
 1153               	.global	_ZN6StringC1Elh
 1154               		.set	_ZN6StringC1Elh,_ZN6StringC2Elh
 1159               	.global	_ZN6StringC2Emh
 1161               	_ZN6StringC2Emh:
 1162               		.stabd	46,0,0
 100:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** {
 1164               	.LM102:
 1165               	.LFBB20:
 1166 034a 0F93      		push r16
 1167 034c 1F93      		push r17
 1168 034e CF93      		push r28
 1169 0350 DF93      		push r29
 1170 0352 CDB7      		in r28,__SP_L__
 1171 0354 DEB7      		in r29,__SP_H__
 1172 0356 A197      		sbiw r28,33
 1173 0358 0FB6      		in __tmp_reg__,__SREG__
 1174 035a F894      		cli
 1175 035c DEBF      		out __SP_H__,r29
 1176 035e 0FBE      		out __SREG__,__tmp_reg__
 1177 0360 CDBF      		out __SP_L__,r28
 1178               	/* prologue: function */
 1179               	/* frame size = 33 */
 1180               	/* stack size = 37 */
 1181               	.L__stack_usage = 37
 1182 0362 8C01      		movw r16,r24
 1183 0364 CB01      		movw r24,r22
 1184 0366 BA01      		movw r22,r20
 1185               	.LBB69:
 1186               	.LBB70:
 1187               	.LBB71:
 133:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	capacity = 0;
 1189               	.LM103:
 1190 0368 F801      		movw r30,r16
 1191 036a 1182      		std Z+1,__zero_reg__
 1192 036c 1082      		st Z,__zero_reg__
 134:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	len = 0;
 1194               	.LM104:
 1195 036e 1382      		std Z+3,__zero_reg__
 1196 0370 1282      		std Z+2,__zero_reg__
 135:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** }
 1198               	.LM105:
 1199 0372 1582      		std Z+5,__zero_reg__
 1200 0374 1482      		std Z+4,__zero_reg__
 1201               	.LBE71:
 1202               	.LBE70:
 104:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	*this = buf;
 1204               	.LM106:
 1205 0376 30E0      		ldi r19,0
 1206 0378 AE01      		movw r20,r28
 1207 037a 4F5F      		subi r20,-1
 1208 037c 5F4F      		sbci r21,-1
 1209 037e 0E94 0000 		call ultoa
 105:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** }
 1211               	.LM107:
 1212 0382 BE01      		movw r22,r28
 1213 0384 6F5F      		subi r22,-1
 1214 0386 7F4F      		sbci r23,-1
 1215 0388 C801      		movw r24,r16
 1216 038a 0E94 0000 		call _ZN6StringaSEPKc
 1217               	/* epilogue start */
 1218               	.LBE69:
 106:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 
 1220               	.LM108:
 1221 038e A196      		adiw r28,33
 1222 0390 0FB6      		in __tmp_reg__,__SREG__
 1223 0392 F894      		cli
 1224 0394 DEBF      		out __SP_H__,r29
 1225 0396 0FBE      		out __SREG__,__tmp_reg__
 1226 0398 CDBF      		out __SP_L__,r28
 1227 039a DF91      		pop r29
 1228 039c CF91      		pop r28
 1229 039e 1F91      		pop r17
 1230 03a0 0F91      		pop r16
 1231 03a2 0895      		ret
 1236               	.Lscope20:
 1238               		.stabd	78,0,0
 1239               	.global	_ZN6StringC1Emh
 1240               		.set	_ZN6StringC1Emh,_ZN6StringC2Emh
 1245               	.global	_ZN6StringC2Efh
 1247               	_ZN6StringC2Efh:
 1248               		.stabd	46,0,0
 108:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** {
 1250               	.LM109:
 1251               	.LFBB21:
 1252 03a4 EF92      		push r14
 1253 03a6 FF92      		push r15
 1254 03a8 0F93      		push r16
 1255 03aa 1F93      		push r17
 1256 03ac CF93      		push r28
 1257 03ae DF93      		push r29
 1258 03b0 CDB7      		in r28,__SP_L__
 1259 03b2 DEB7      		in r29,__SP_H__
 1260 03b4 A197      		sbiw r28,33
 1261 03b6 0FB6      		in __tmp_reg__,__SREG__
 1262 03b8 F894      		cli
 1263 03ba DEBF      		out __SP_H__,r29
 1264 03bc 0FBE      		out __SREG__,__tmp_reg__
 1265 03be CDBF      		out __SP_L__,r28
 1266               	/* prologue: function */
 1267               	/* frame size = 33 */
 1268               	/* stack size = 39 */
 1269               	.L__stack_usage = 39
 1270 03c0 7C01      		movw r14,r24
 1271 03c2 CB01      		movw r24,r22
 1272 03c4 BA01      		movw r22,r20
 1273               	.LBB72:
 1274               	.LBB73:
 1275               	.LBB74:
 133:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	capacity = 0;
 1277               	.LM110:
 1278 03c6 F701      		movw r30,r14
 1279 03c8 1182      		std Z+1,__zero_reg__
 1280 03ca 1082      		st Z,__zero_reg__
 134:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	len = 0;
 1282               	.LM111:
 1283 03cc 1382      		std Z+3,__zero_reg__
 1284 03ce 1282      		std Z+2,__zero_reg__
 135:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** }
 1286               	.LM112:
 1287 03d0 1582      		std Z+5,__zero_reg__
 1288 03d2 1482      		std Z+4,__zero_reg__
 1289               	.LBE74:
 1290               	.LBE73:
 112:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** }
 1292               	.LM113:
 1293 03d4 42E0      		ldi r20,lo8(2)
 1294 03d6 420F      		add r20,r18
 1295 03d8 8E01      		movw r16,r28
 1296 03da 0F5F      		subi r16,-1
 1297 03dc 1F4F      		sbci r17,-1
 1298 03de 0E94 0000 		call dtostrf
 1299 03e2 BC01      		movw r22,r24
 1300 03e4 C701      		movw r24,r14
 1301 03e6 0E94 0000 		call _ZN6StringaSEPKc
 1302               	/* epilogue start */
 1303               	.LBE72:
 113:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 
 1305               	.LM114:
 1306 03ea A196      		adiw r28,33
 1307 03ec 0FB6      		in __tmp_reg__,__SREG__
 1308 03ee F894      		cli
 1309 03f0 DEBF      		out __SP_H__,r29
 1310 03f2 0FBE      		out __SREG__,__tmp_reg__
 1311 03f4 CDBF      		out __SP_L__,r28
 1312 03f6 DF91      		pop r29
 1313 03f8 CF91      		pop r28
 1314 03fa 1F91      		pop r17
 1315 03fc 0F91      		pop r16
 1316 03fe FF90      		pop r15
 1317 0400 EF90      		pop r14
 1318 0402 0895      		ret
 1323               	.Lscope21:
 1325               		.stabd	78,0,0
 1326               	.global	_ZN6StringC1Efh
 1327               		.set	_ZN6StringC1Efh,_ZN6StringC2Efh
 1332               	.global	_ZN6StringC2Edh
 1334               	_ZN6StringC2Edh:
 1335               		.stabd	46,0,0
 115:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** {
 1337               	.LM115:
 1338               	.LFBB22:
 1339 0404 EF92      		push r14
 1340 0406 FF92      		push r15
 1341 0408 0F93      		push r16
 1342 040a 1F93      		push r17
 1343 040c CF93      		push r28
 1344 040e DF93      		push r29
 1345 0410 CDB7      		in r28,__SP_L__
 1346 0412 DEB7      		in r29,__SP_H__
 1347 0414 A197      		sbiw r28,33
 1348 0416 0FB6      		in __tmp_reg__,__SREG__
 1349 0418 F894      		cli
 1350 041a DEBF      		out __SP_H__,r29
 1351 041c 0FBE      		out __SREG__,__tmp_reg__
 1352 041e CDBF      		out __SP_L__,r28
 1353               	/* prologue: function */
 1354               	/* frame size = 33 */
 1355               	/* stack size = 39 */
 1356               	.L__stack_usage = 39
 1357 0420 7C01      		movw r14,r24
 1358 0422 CB01      		movw r24,r22
 1359 0424 BA01      		movw r22,r20
 1360               	.LBB75:
 1361               	.LBB76:
 1362               	.LBB77:
 133:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	capacity = 0;
 1364               	.LM116:
 1365 0426 F701      		movw r30,r14
 1366 0428 1182      		std Z+1,__zero_reg__
 1367 042a 1082      		st Z,__zero_reg__
 134:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	len = 0;
 1369               	.LM117:
 1370 042c 1382      		std Z+3,__zero_reg__
 1371 042e 1282      		std Z+2,__zero_reg__
 135:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** }
 1373               	.LM118:
 1374 0430 1582      		std Z+5,__zero_reg__
 1375 0432 1482      		std Z+4,__zero_reg__
 1376               	.LBE77:
 1377               	.LBE76:
 119:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** }
 1379               	.LM119:
 1380 0434 42E0      		ldi r20,lo8(2)
 1381 0436 420F      		add r20,r18
 1382 0438 8E01      		movw r16,r28
 1383 043a 0F5F      		subi r16,-1
 1384 043c 1F4F      		sbci r17,-1
 1385 043e 0E94 0000 		call dtostrf
 1386 0442 BC01      		movw r22,r24
 1387 0444 C701      		movw r24,r14
 1388 0446 0E94 0000 		call _ZN6StringaSEPKc
 1389               	/* epilogue start */
 1390               	.LBE75:
 120:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 
 1392               	.LM120:
 1393 044a A196      		adiw r28,33
 1394 044c 0FB6      		in __tmp_reg__,__SREG__
 1395 044e F894      		cli
 1396 0450 DEBF      		out __SP_H__,r29
 1397 0452 0FBE      		out __SREG__,__tmp_reg__
 1398 0454 CDBF      		out __SP_L__,r28
 1399 0456 DF91      		pop r29
 1400 0458 CF91      		pop r28
 1401 045a 1F91      		pop r17
 1402 045c 0F91      		pop r16
 1403 045e FF90      		pop r15
 1404 0460 EF90      		pop r14
 1405 0462 0895      		ret
 1410               	.Lscope22:
 1412               		.stabd	78,0,0
 1413               	.global	_ZN6StringC1Edh
 1414               		.set	_ZN6StringC1Edh,_ZN6StringC2Edh
 1418               	.global	_ZN6StringaSEPK19__FlashStringHelper
 1420               	_ZN6StringaSEPK19__FlashStringHelper:
 1421               		.stabd	46,0,0
 245:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 
 246:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** String & String::operator = (const __FlashStringHelper *pstr)
 247:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** {
 1423               	.LM121:
 1424               	.LFBB23:
 1425 0464 0F93      		push r16
 1426 0466 1F93      		push r17
 1427 0468 CF93      		push r28
 1428 046a DF93      		push r29
 1429               	/* prologue: function */
 1430               	/* frame size = 0 */
 1431               	/* stack size = 4 */
 1432               	.L__stack_usage = 4
 1433 046c EC01      		movw r28,r24
 1434 046e 8B01      		movw r16,r22
 248:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	if (pstr) copy(pstr, strlen_P((PGM_P)pstr));
 1436               	.LM122:
 1437 0470 6115      		cp r22,__zero_reg__
 1438 0472 7105      		cpc r23,__zero_reg__
 1439 0474 01F0      		breq .L50
 1440               	.LBB78:
 1441               	.LBB79:
 1443               	.Ltext3:
   1:/usr/lib/avr/include/avr/pgmspace.h **** /* Copyright (c) 2002-2007  Marek Michalkiewicz
   2:/usr/lib/avr/include/avr/pgmspace.h ****    Copyright (c) 2006, Carlos Lamas
   3:/usr/lib/avr/include/avr/pgmspace.h ****    Copyright (c) 2009-2010, Jan Waclawek
   4:/usr/lib/avr/include/avr/pgmspace.h ****    All rights reserved.
   5:/usr/lib/avr/include/avr/pgmspace.h **** 
   6:/usr/lib/avr/include/avr/pgmspace.h ****    Redistribution and use in source and binary forms, with or without
   7:/usr/lib/avr/include/avr/pgmspace.h ****    modification, are permitted provided that the following conditions are met:
   8:/usr/lib/avr/include/avr/pgmspace.h **** 
   9:/usr/lib/avr/include/avr/pgmspace.h ****    * Redistributions of source code must retain the above copyright
  10:/usr/lib/avr/include/avr/pgmspace.h ****      notice, this list of conditions and the following disclaimer.
  11:/usr/lib/avr/include/avr/pgmspace.h ****    * Redistributions in binary form must reproduce the above copyright
  12:/usr/lib/avr/include/avr/pgmspace.h ****      notice, this list of conditions and the following disclaimer in
  13:/usr/lib/avr/include/avr/pgmspace.h ****      the documentation and/or other materials provided with the
  14:/usr/lib/avr/include/avr/pgmspace.h ****      distribution.
  15:/usr/lib/avr/include/avr/pgmspace.h ****    * Neither the name of the copyright holders nor the names of
  16:/usr/lib/avr/include/avr/pgmspace.h ****      contributors may be used to endorse or promote products derived
  17:/usr/lib/avr/include/avr/pgmspace.h ****      from this software without specific prior written permission.
  18:/usr/lib/avr/include/avr/pgmspace.h **** 
  19:/usr/lib/avr/include/avr/pgmspace.h ****   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
  20:/usr/lib/avr/include/avr/pgmspace.h ****   AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  21:/usr/lib/avr/include/avr/pgmspace.h ****   IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  22:/usr/lib/avr/include/avr/pgmspace.h ****   ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
  23:/usr/lib/avr/include/avr/pgmspace.h ****   LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
  24:/usr/lib/avr/include/avr/pgmspace.h ****   CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
  25:/usr/lib/avr/include/avr/pgmspace.h ****   SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
  26:/usr/lib/avr/include/avr/pgmspace.h ****   INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
  27:/usr/lib/avr/include/avr/pgmspace.h ****   CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
  28:/usr/lib/avr/include/avr/pgmspace.h ****   ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
  29:/usr/lib/avr/include/avr/pgmspace.h ****   POSSIBILITY OF SUCH DAMAGE. */
  30:/usr/lib/avr/include/avr/pgmspace.h **** 
  31:/usr/lib/avr/include/avr/pgmspace.h **** /* $Id$ */
  32:/usr/lib/avr/include/avr/pgmspace.h **** 
  33:/usr/lib/avr/include/avr/pgmspace.h **** /*
  34:/usr/lib/avr/include/avr/pgmspace.h ****    pgmspace.h
  35:/usr/lib/avr/include/avr/pgmspace.h **** 
  36:/usr/lib/avr/include/avr/pgmspace.h ****    Contributors:
  37:/usr/lib/avr/include/avr/pgmspace.h ****      Created by Marek Michalkiewicz <marekm@linux.org.pl>
  38:/usr/lib/avr/include/avr/pgmspace.h ****      Eric B. Weddington <eric@ecentral.com>
  39:/usr/lib/avr/include/avr/pgmspace.h ****      Wolfgang Haidinger <wh@vmars.tuwien.ac.at> (pgm_read_dword())
  40:/usr/lib/avr/include/avr/pgmspace.h ****      Ivanov Anton <anton@arc.com.ru> (pgm_read_float())
  41:/usr/lib/avr/include/avr/pgmspace.h ****  */
  42:/usr/lib/avr/include/avr/pgmspace.h **** 
  43:/usr/lib/avr/include/avr/pgmspace.h **** /** \file */
  44:/usr/lib/avr/include/avr/pgmspace.h **** /** \defgroup avr_pgmspace <avr/pgmspace.h>: Program Space Utilities
  45:/usr/lib/avr/include/avr/pgmspace.h ****     \code
  46:/usr/lib/avr/include/avr/pgmspace.h ****     #include <avr/io.h>
  47:/usr/lib/avr/include/avr/pgmspace.h ****     #include <avr/pgmspace.h>
  48:/usr/lib/avr/include/avr/pgmspace.h ****     \endcode
  49:/usr/lib/avr/include/avr/pgmspace.h **** 
  50:/usr/lib/avr/include/avr/pgmspace.h ****     The functions in this module provide interfaces for a program to access
  51:/usr/lib/avr/include/avr/pgmspace.h ****     data stored in program space (flash memory) of the device.  In order to
  52:/usr/lib/avr/include/avr/pgmspace.h ****     use these functions, the target device must support either the \c LPM or
  53:/usr/lib/avr/include/avr/pgmspace.h ****     \c ELPM instructions.
  54:/usr/lib/avr/include/avr/pgmspace.h **** 
  55:/usr/lib/avr/include/avr/pgmspace.h ****     \note These functions are an attempt to provide some compatibility with
  56:/usr/lib/avr/include/avr/pgmspace.h ****     header files that come with IAR C, to make porting applications between
  57:/usr/lib/avr/include/avr/pgmspace.h ****     different compilers easier.  This is not 100% compatibility though (GCC
  58:/usr/lib/avr/include/avr/pgmspace.h ****     does not have full support for multiple address spaces yet).
  59:/usr/lib/avr/include/avr/pgmspace.h **** 
  60:/usr/lib/avr/include/avr/pgmspace.h ****     \note If you are working with strings which are completely based in ram,
  61:/usr/lib/avr/include/avr/pgmspace.h ****     use the standard string functions described in \ref avr_string.
  62:/usr/lib/avr/include/avr/pgmspace.h **** 
  63:/usr/lib/avr/include/avr/pgmspace.h ****     \note If possible, put your constant tables in the lower 64 KB and use
  64:/usr/lib/avr/include/avr/pgmspace.h ****     pgm_read_byte_near() or pgm_read_word_near() instead of
  65:/usr/lib/avr/include/avr/pgmspace.h ****     pgm_read_byte_far() or pgm_read_word_far() since it is more efficient that
  66:/usr/lib/avr/include/avr/pgmspace.h ****     way, and you can still use the upper 64K for executable code.
  67:/usr/lib/avr/include/avr/pgmspace.h ****     All functions that are suffixed with a \c _P \e require their
  68:/usr/lib/avr/include/avr/pgmspace.h ****     arguments to be in the lower 64 KB of the flash ROM, as they do
  69:/usr/lib/avr/include/avr/pgmspace.h ****     not use ELPM instructions.  This is normally not a big concern as
  70:/usr/lib/avr/include/avr/pgmspace.h ****     the linker setup arranges any program space constants declared
  71:/usr/lib/avr/include/avr/pgmspace.h ****     using the macros from this header file so they are placed right after
  72:/usr/lib/avr/include/avr/pgmspace.h ****     the interrupt vectors, and in front of any executable code.  However,
  73:/usr/lib/avr/include/avr/pgmspace.h ****     it can become a problem if there are too many of these constants, or
  74:/usr/lib/avr/include/avr/pgmspace.h ****     for bootloaders on devices with more than 64 KB of ROM.
  75:/usr/lib/avr/include/avr/pgmspace.h ****     <em>All these functions will not work in that situation.</em>
  76:/usr/lib/avr/include/avr/pgmspace.h **** 
  77:/usr/lib/avr/include/avr/pgmspace.h ****     \note For <b>Xmega</b> devices, make sure the NVM controller
  78:/usr/lib/avr/include/avr/pgmspace.h ****     command register (\c NVM.CMD or \c NVM_CMD) is set to 0x00 (NOP)
  79:/usr/lib/avr/include/avr/pgmspace.h ****     before using any of these functions.
  80:/usr/lib/avr/include/avr/pgmspace.h **** */
  81:/usr/lib/avr/include/avr/pgmspace.h **** 
  82:/usr/lib/avr/include/avr/pgmspace.h **** #ifndef __PGMSPACE_H_
  83:/usr/lib/avr/include/avr/pgmspace.h **** #define __PGMSPACE_H_ 1
  84:/usr/lib/avr/include/avr/pgmspace.h **** 
  85:/usr/lib/avr/include/avr/pgmspace.h **** #ifndef __DOXYGEN__
  86:/usr/lib/avr/include/avr/pgmspace.h **** #define __need_size_t
  87:/usr/lib/avr/include/avr/pgmspace.h **** #endif
  88:/usr/lib/avr/include/avr/pgmspace.h **** #include <inttypes.h>
  89:/usr/lib/avr/include/avr/pgmspace.h **** #include <stddef.h>
  90:/usr/lib/avr/include/avr/pgmspace.h **** #include <avr/io.h>
  91:/usr/lib/avr/include/avr/pgmspace.h **** 
  92:/usr/lib/avr/include/avr/pgmspace.h **** #ifndef __DOXYGEN__
  93:/usr/lib/avr/include/avr/pgmspace.h **** #ifndef __ATTR_CONST__
  94:/usr/lib/avr/include/avr/pgmspace.h **** #define __ATTR_CONST__ __attribute__((__const__))
  95:/usr/lib/avr/include/avr/pgmspace.h **** #endif
  96:/usr/lib/avr/include/avr/pgmspace.h **** 
  97:/usr/lib/avr/include/avr/pgmspace.h **** #ifndef __ATTR_PROGMEM__
  98:/usr/lib/avr/include/avr/pgmspace.h **** #define __ATTR_PROGMEM__ __attribute__((__progmem__))
  99:/usr/lib/avr/include/avr/pgmspace.h **** #endif
 100:/usr/lib/avr/include/avr/pgmspace.h **** 
 101:/usr/lib/avr/include/avr/pgmspace.h **** #ifndef __ATTR_PURE__
 102:/usr/lib/avr/include/avr/pgmspace.h **** #define __ATTR_PURE__ __attribute__((__pure__))
 103:/usr/lib/avr/include/avr/pgmspace.h **** #endif
 104:/usr/lib/avr/include/avr/pgmspace.h **** #endif	/* !__DOXYGEN__ */
 105:/usr/lib/avr/include/avr/pgmspace.h **** 
 106:/usr/lib/avr/include/avr/pgmspace.h **** /**
 107:/usr/lib/avr/include/avr/pgmspace.h ****    \ingroup avr_pgmspace
 108:/usr/lib/avr/include/avr/pgmspace.h ****    \def PROGMEM
 109:/usr/lib/avr/include/avr/pgmspace.h **** 
 110:/usr/lib/avr/include/avr/pgmspace.h ****    Attribute to use in order to declare an object being located in
 111:/usr/lib/avr/include/avr/pgmspace.h ****    flash ROM.
 112:/usr/lib/avr/include/avr/pgmspace.h ****  */
 113:/usr/lib/avr/include/avr/pgmspace.h **** #define PROGMEM __ATTR_PROGMEM__
 114:/usr/lib/avr/include/avr/pgmspace.h **** 
 115:/usr/lib/avr/include/avr/pgmspace.h **** #ifdef __cplusplus
 116:/usr/lib/avr/include/avr/pgmspace.h **** extern "C" {
 117:/usr/lib/avr/include/avr/pgmspace.h **** #endif
 118:/usr/lib/avr/include/avr/pgmspace.h **** 
 119:/usr/lib/avr/include/avr/pgmspace.h **** #if defined(__DOXYGEN__)
 120:/usr/lib/avr/include/avr/pgmspace.h **** /*
 121:/usr/lib/avr/include/avr/pgmspace.h ****  * Doxygen doesn't grok the appended attribute syntax of
 122:/usr/lib/avr/include/avr/pgmspace.h ****  * GCC, and confuses the typedefs with function decls, so
 123:/usr/lib/avr/include/avr/pgmspace.h ****  * supply a doxygen-friendly view.
 124:/usr/lib/avr/include/avr/pgmspace.h ****  */
 125:/usr/lib/avr/include/avr/pgmspace.h **** 
 126:/usr/lib/avr/include/avr/pgmspace.h **** /**
 127:/usr/lib/avr/include/avr/pgmspace.h ****    \ingroup avr_pgmspace
 128:/usr/lib/avr/include/avr/pgmspace.h ****    \typedef prog_void
 129:/usr/lib/avr/include/avr/pgmspace.h ****    \note DEPRECATED
 130:/usr/lib/avr/include/avr/pgmspace.h **** 
 131:/usr/lib/avr/include/avr/pgmspace.h ****    This typedef is now deprecated because the usage of the __progmem__ 
 132:/usr/lib/avr/include/avr/pgmspace.h ****    attribute on a type is not supported in GCC. However, the use of the 
 133:/usr/lib/avr/include/avr/pgmspace.h ****    __progmem__ attribute on a variable declaration is supported, and this is 
 134:/usr/lib/avr/include/avr/pgmspace.h ****    now the recommended usage.
 135:/usr/lib/avr/include/avr/pgmspace.h **** 
 136:/usr/lib/avr/include/avr/pgmspace.h ****    The typedef is only visible if the macro __PROG_TYPES_COMPAT__
 137:/usr/lib/avr/include/avr/pgmspace.h ****    has been defined before including <avr/pgmspace.h> (either by a
 138:/usr/lib/avr/include/avr/pgmspace.h ****    \c \#define directive, or by a -D compiler option.)
 139:/usr/lib/avr/include/avr/pgmspace.h **** 
 140:/usr/lib/avr/include/avr/pgmspace.h ****    Type of a "void" object located in flash ROM.  Does not make much
 141:/usr/lib/avr/include/avr/pgmspace.h ****    sense by itself, but can be used to declare a "void *" object in
 142:/usr/lib/avr/include/avr/pgmspace.h ****    flash ROM.
 143:/usr/lib/avr/include/avr/pgmspace.h **** */
 144:/usr/lib/avr/include/avr/pgmspace.h **** typedef void PROGMEM prog_void;
 145:/usr/lib/avr/include/avr/pgmspace.h **** 
 146:/usr/lib/avr/include/avr/pgmspace.h **** /**
 147:/usr/lib/avr/include/avr/pgmspace.h ****    \ingroup avr_pgmspace
 148:/usr/lib/avr/include/avr/pgmspace.h ****    \typedef prog_char
 149:/usr/lib/avr/include/avr/pgmspace.h ****    \note DEPRECATED
 150:/usr/lib/avr/include/avr/pgmspace.h **** 
 151:/usr/lib/avr/include/avr/pgmspace.h ****    This typedef is now deprecated because the usage of the __progmem__ 
 152:/usr/lib/avr/include/avr/pgmspace.h ****    attribute on a type is not supported in GCC. However, the use of the 
 153:/usr/lib/avr/include/avr/pgmspace.h ****    __progmem__ attribute on a variable declaration is supported, and this is 
 154:/usr/lib/avr/include/avr/pgmspace.h ****    now the recommended usage.
 155:/usr/lib/avr/include/avr/pgmspace.h **** 
 156:/usr/lib/avr/include/avr/pgmspace.h ****    The typedef is only visible if the macro __PROG_TYPES_COMPAT__
 157:/usr/lib/avr/include/avr/pgmspace.h ****    has been defined before including <avr/pgmspace.h> (either by a
 158:/usr/lib/avr/include/avr/pgmspace.h ****    \c \#define directive, or by a -D compiler option.)
 159:/usr/lib/avr/include/avr/pgmspace.h **** 
 160:/usr/lib/avr/include/avr/pgmspace.h ****    Type of a "char" object located in flash ROM.
 161:/usr/lib/avr/include/avr/pgmspace.h **** */
 162:/usr/lib/avr/include/avr/pgmspace.h **** typedef char PROGMEM prog_char;
 163:/usr/lib/avr/include/avr/pgmspace.h **** 
 164:/usr/lib/avr/include/avr/pgmspace.h **** /**
 165:/usr/lib/avr/include/avr/pgmspace.h ****    \ingroup avr_pgmspace
 166:/usr/lib/avr/include/avr/pgmspace.h ****    \typedef prog_uchar
 167:/usr/lib/avr/include/avr/pgmspace.h ****    \note DEPRECATED
 168:/usr/lib/avr/include/avr/pgmspace.h **** 
 169:/usr/lib/avr/include/avr/pgmspace.h ****    This typedef is now deprecated because the usage of the __progmem__ 
 170:/usr/lib/avr/include/avr/pgmspace.h ****    attribute on a type is not supported in GCC. However, the use of the 
 171:/usr/lib/avr/include/avr/pgmspace.h ****    __progmem__ attribute on a variable declaration is supported, and this is 
 172:/usr/lib/avr/include/avr/pgmspace.h ****    now the recommended usage.
 173:/usr/lib/avr/include/avr/pgmspace.h **** 
 174:/usr/lib/avr/include/avr/pgmspace.h ****    The typedef is only visible if the macro __PROG_TYPES_COMPAT__
 175:/usr/lib/avr/include/avr/pgmspace.h ****    has been defined before including <avr/pgmspace.h> (either by a
 176:/usr/lib/avr/include/avr/pgmspace.h ****    \c \#define directive, or by a -D compiler option.)
 177:/usr/lib/avr/include/avr/pgmspace.h **** 
 178:/usr/lib/avr/include/avr/pgmspace.h ****    Type of an "unsigned char" object located in flash ROM.
 179:/usr/lib/avr/include/avr/pgmspace.h **** */
 180:/usr/lib/avr/include/avr/pgmspace.h **** typedef unsigned char PROGMEM prog_uchar;
 181:/usr/lib/avr/include/avr/pgmspace.h **** 
 182:/usr/lib/avr/include/avr/pgmspace.h **** /**
 183:/usr/lib/avr/include/avr/pgmspace.h ****    \ingroup avr_pgmspace
 184:/usr/lib/avr/include/avr/pgmspace.h ****    \typedef prog_int8_t
 185:/usr/lib/avr/include/avr/pgmspace.h ****    \note DEPRECATED
 186:/usr/lib/avr/include/avr/pgmspace.h **** 
 187:/usr/lib/avr/include/avr/pgmspace.h ****    This typedef is now deprecated because the usage of the __progmem__ 
 188:/usr/lib/avr/include/avr/pgmspace.h ****    attribute on a type is not supported in GCC. However, the use of the 
 189:/usr/lib/avr/include/avr/pgmspace.h ****    __progmem__ attribute on a variable declaration is supported, and this is 
 190:/usr/lib/avr/include/avr/pgmspace.h ****    now the recommended usage.
 191:/usr/lib/avr/include/avr/pgmspace.h **** 
 192:/usr/lib/avr/include/avr/pgmspace.h ****    The typedef is only visible if the macro __PROG_TYPES_COMPAT__
 193:/usr/lib/avr/include/avr/pgmspace.h ****    has been defined before including <avr/pgmspace.h> (either by a
 194:/usr/lib/avr/include/avr/pgmspace.h ****    \c \#define directive, or by a -D compiler option.)
 195:/usr/lib/avr/include/avr/pgmspace.h **** 
 196:/usr/lib/avr/include/avr/pgmspace.h ****    Type of an "int8_t" object located in flash ROM.
 197:/usr/lib/avr/include/avr/pgmspace.h **** */
 198:/usr/lib/avr/include/avr/pgmspace.h **** typedef int8_t PROGMEM prog_int8_t;
 199:/usr/lib/avr/include/avr/pgmspace.h **** 
 200:/usr/lib/avr/include/avr/pgmspace.h **** /**
 201:/usr/lib/avr/include/avr/pgmspace.h ****    \ingroup avr_pgmspace
 202:/usr/lib/avr/include/avr/pgmspace.h ****    \typedef prog_uint8_t
 203:/usr/lib/avr/include/avr/pgmspace.h ****    \note DEPRECATED
 204:/usr/lib/avr/include/avr/pgmspace.h **** 
 205:/usr/lib/avr/include/avr/pgmspace.h ****    This typedef is now deprecated because the usage of the __progmem__ 
 206:/usr/lib/avr/include/avr/pgmspace.h ****    attribute on a type is not supported in GCC. However, the use of the 
 207:/usr/lib/avr/include/avr/pgmspace.h ****    __progmem__ attribute on a variable declaration is supported, and this is 
 208:/usr/lib/avr/include/avr/pgmspace.h ****    now the recommended usage.
 209:/usr/lib/avr/include/avr/pgmspace.h **** 
 210:/usr/lib/avr/include/avr/pgmspace.h ****    The typedef is only visible if the macro __PROG_TYPES_COMPAT__
 211:/usr/lib/avr/include/avr/pgmspace.h ****    has been defined before including <avr/pgmspace.h> (either by a
 212:/usr/lib/avr/include/avr/pgmspace.h ****    \c \#define directive, or by a -D compiler option.)
 213:/usr/lib/avr/include/avr/pgmspace.h **** 
 214:/usr/lib/avr/include/avr/pgmspace.h ****    Type of an "uint8_t" object located in flash ROM.
 215:/usr/lib/avr/include/avr/pgmspace.h **** */
 216:/usr/lib/avr/include/avr/pgmspace.h **** typedef uint8_t PROGMEM prog_uint8_t;
 217:/usr/lib/avr/include/avr/pgmspace.h **** 
 218:/usr/lib/avr/include/avr/pgmspace.h **** /**
 219:/usr/lib/avr/include/avr/pgmspace.h ****    \ingroup avr_pgmspace
 220:/usr/lib/avr/include/avr/pgmspace.h ****    \typedef prog_int16_t
 221:/usr/lib/avr/include/avr/pgmspace.h ****    \note DEPRECATED
 222:/usr/lib/avr/include/avr/pgmspace.h **** 
 223:/usr/lib/avr/include/avr/pgmspace.h ****    This typedef is now deprecated because the usage of the __progmem__ 
 224:/usr/lib/avr/include/avr/pgmspace.h ****    attribute on a type is not supported in GCC. However, the use of the 
 225:/usr/lib/avr/include/avr/pgmspace.h ****    __progmem__ attribute on a variable declaration is supported, and this is 
 226:/usr/lib/avr/include/avr/pgmspace.h ****    now the recommended usage.
 227:/usr/lib/avr/include/avr/pgmspace.h **** 
 228:/usr/lib/avr/include/avr/pgmspace.h ****    The typedef is only visible if the macro __PROG_TYPES_COMPAT__
 229:/usr/lib/avr/include/avr/pgmspace.h ****    has been defined before including <avr/pgmspace.h> (either by a
 230:/usr/lib/avr/include/avr/pgmspace.h ****    \c \#define directive, or by a -D compiler option.)
 231:/usr/lib/avr/include/avr/pgmspace.h **** 
 232:/usr/lib/avr/include/avr/pgmspace.h ****    Type of an "int16_t" object located in flash ROM.
 233:/usr/lib/avr/include/avr/pgmspace.h **** */
 234:/usr/lib/avr/include/avr/pgmspace.h **** typedef int16_t PROGMEM prog_int16_t;
 235:/usr/lib/avr/include/avr/pgmspace.h **** 
 236:/usr/lib/avr/include/avr/pgmspace.h **** /**
 237:/usr/lib/avr/include/avr/pgmspace.h ****    \ingroup avr_pgmspace
 238:/usr/lib/avr/include/avr/pgmspace.h ****    \typedef prog_uint16_t
 239:/usr/lib/avr/include/avr/pgmspace.h ****    \note DEPRECATED
 240:/usr/lib/avr/include/avr/pgmspace.h **** 
 241:/usr/lib/avr/include/avr/pgmspace.h ****    This typedef is now deprecated because the usage of the __progmem__ 
 242:/usr/lib/avr/include/avr/pgmspace.h ****    attribute on a type is not supported in GCC. However, the use of the 
 243:/usr/lib/avr/include/avr/pgmspace.h ****    __progmem__ attribute on a variable declaration is supported, and this is 
 244:/usr/lib/avr/include/avr/pgmspace.h ****    now the recommended usage.
 245:/usr/lib/avr/include/avr/pgmspace.h **** 
 246:/usr/lib/avr/include/avr/pgmspace.h ****    The typedef is only visible if the macro __PROG_TYPES_COMPAT__
 247:/usr/lib/avr/include/avr/pgmspace.h ****    has been defined before including <avr/pgmspace.h> (either by a
 248:/usr/lib/avr/include/avr/pgmspace.h ****    \c \#define directive, or by a -D compiler option.)
 249:/usr/lib/avr/include/avr/pgmspace.h **** 
 250:/usr/lib/avr/include/avr/pgmspace.h ****    Type of an "uint16_t" object located in flash ROM.
 251:/usr/lib/avr/include/avr/pgmspace.h **** */
 252:/usr/lib/avr/include/avr/pgmspace.h **** typedef uint16_t PROGMEM prog_uint16_t;
 253:/usr/lib/avr/include/avr/pgmspace.h **** 
 254:/usr/lib/avr/include/avr/pgmspace.h **** /**
 255:/usr/lib/avr/include/avr/pgmspace.h ****    \ingroup avr_pgmspace
 256:/usr/lib/avr/include/avr/pgmspace.h ****    \typedef prog_int32_t
 257:/usr/lib/avr/include/avr/pgmspace.h ****    \note DEPRECATED
 258:/usr/lib/avr/include/avr/pgmspace.h **** 
 259:/usr/lib/avr/include/avr/pgmspace.h ****    This typedef is now deprecated because the usage of the __progmem__ 
 260:/usr/lib/avr/include/avr/pgmspace.h ****    attribute on a type is not supported in GCC. However, the use of the 
 261:/usr/lib/avr/include/avr/pgmspace.h ****    __progmem__ attribute on a variable declaration is supported, and this is 
 262:/usr/lib/avr/include/avr/pgmspace.h ****    now the recommended usage.
 263:/usr/lib/avr/include/avr/pgmspace.h **** 
 264:/usr/lib/avr/include/avr/pgmspace.h ****    The typedef is only visible if the macro __PROG_TYPES_COMPAT__
 265:/usr/lib/avr/include/avr/pgmspace.h ****    has been defined before including <avr/pgmspace.h> (either by a
 266:/usr/lib/avr/include/avr/pgmspace.h ****    \c \#define directive, or by a -D compiler option.)
 267:/usr/lib/avr/include/avr/pgmspace.h **** 
 268:/usr/lib/avr/include/avr/pgmspace.h ****    Type of an "int32_t" object located in flash ROM.
 269:/usr/lib/avr/include/avr/pgmspace.h **** */
 270:/usr/lib/avr/include/avr/pgmspace.h **** typedef int32_t PROGMEM prog_int32_t;
 271:/usr/lib/avr/include/avr/pgmspace.h **** 
 272:/usr/lib/avr/include/avr/pgmspace.h **** /**
 273:/usr/lib/avr/include/avr/pgmspace.h ****    \ingroup avr_pgmspace
 274:/usr/lib/avr/include/avr/pgmspace.h ****    \typedef prog_uint32_t
 275:/usr/lib/avr/include/avr/pgmspace.h ****    \note DEPRECATED
 276:/usr/lib/avr/include/avr/pgmspace.h **** 
 277:/usr/lib/avr/include/avr/pgmspace.h ****    This typedef is now deprecated because the usage of the __progmem__ 
 278:/usr/lib/avr/include/avr/pgmspace.h ****    attribute on a type is not supported in GCC. However, the use of the 
 279:/usr/lib/avr/include/avr/pgmspace.h ****    __progmem__ attribute on a variable declaration is supported, and this is 
 280:/usr/lib/avr/include/avr/pgmspace.h ****    now the recommended usage.
 281:/usr/lib/avr/include/avr/pgmspace.h **** 
 282:/usr/lib/avr/include/avr/pgmspace.h ****    The typedef is only visible if the macro __PROG_TYPES_COMPAT__
 283:/usr/lib/avr/include/avr/pgmspace.h ****    has been defined before including <avr/pgmspace.h> (either by a
 284:/usr/lib/avr/include/avr/pgmspace.h ****    \c \#define directive, or by a -D compiler option.)
 285:/usr/lib/avr/include/avr/pgmspace.h **** 
 286:/usr/lib/avr/include/avr/pgmspace.h ****    Type of an "uint32_t" object located in flash ROM.
 287:/usr/lib/avr/include/avr/pgmspace.h **** */
 288:/usr/lib/avr/include/avr/pgmspace.h **** typedef uint32_t PROGMEM prog_uint32_t;
 289:/usr/lib/avr/include/avr/pgmspace.h **** 
 290:/usr/lib/avr/include/avr/pgmspace.h **** /**
 291:/usr/lib/avr/include/avr/pgmspace.h ****    \ingroup avr_pgmspace
 292:/usr/lib/avr/include/avr/pgmspace.h ****    \typedef prog_int64_t
 293:/usr/lib/avr/include/avr/pgmspace.h ****    \note DEPRECATED
 294:/usr/lib/avr/include/avr/pgmspace.h **** 
 295:/usr/lib/avr/include/avr/pgmspace.h ****    This typedef is now deprecated because the usage of the __progmem__ 
 296:/usr/lib/avr/include/avr/pgmspace.h ****    attribute on a type is not supported in GCC. However, the use of the 
 297:/usr/lib/avr/include/avr/pgmspace.h ****    __progmem__ attribute on a variable declaration is supported, and this is 
 298:/usr/lib/avr/include/avr/pgmspace.h ****    now the recommended usage.
 299:/usr/lib/avr/include/avr/pgmspace.h **** 
 300:/usr/lib/avr/include/avr/pgmspace.h ****    The typedef is only visible if the macro __PROG_TYPES_COMPAT__
 301:/usr/lib/avr/include/avr/pgmspace.h ****    has been defined before including <avr/pgmspace.h> (either by a
 302:/usr/lib/avr/include/avr/pgmspace.h ****    \c \#define directive, or by a -D compiler option.)
 303:/usr/lib/avr/include/avr/pgmspace.h **** 
 304:/usr/lib/avr/include/avr/pgmspace.h ****    Type of an "int64_t" object located in flash ROM.
 305:/usr/lib/avr/include/avr/pgmspace.h **** 
 306:/usr/lib/avr/include/avr/pgmspace.h ****    \note This type is not available when the compiler
 307:/usr/lib/avr/include/avr/pgmspace.h ****    option -mint8 is in effect.
 308:/usr/lib/avr/include/avr/pgmspace.h **** */
 309:/usr/lib/avr/include/avr/pgmspace.h **** typedef int64_t PROGMEM prog_int64_t;
 310:/usr/lib/avr/include/avr/pgmspace.h **** 
 311:/usr/lib/avr/include/avr/pgmspace.h **** /**
 312:/usr/lib/avr/include/avr/pgmspace.h ****    \ingroup avr_pgmspace
 313:/usr/lib/avr/include/avr/pgmspace.h ****    \typedef prog_uint64_t
 314:/usr/lib/avr/include/avr/pgmspace.h ****    \note DEPRECATED
 315:/usr/lib/avr/include/avr/pgmspace.h **** 
 316:/usr/lib/avr/include/avr/pgmspace.h ****    This typedef is now deprecated because the usage of the __progmem__ 
 317:/usr/lib/avr/include/avr/pgmspace.h ****    attribute on a type is not supported in GCC. However, the use of the 
 318:/usr/lib/avr/include/avr/pgmspace.h ****    __progmem__ attribute on a variable declaration is supported, and this is 
 319:/usr/lib/avr/include/avr/pgmspace.h ****    now the recommended usage.
 320:/usr/lib/avr/include/avr/pgmspace.h **** 
 321:/usr/lib/avr/include/avr/pgmspace.h ****    The typedef is only visible if the macro __PROG_TYPES_COMPAT__
 322:/usr/lib/avr/include/avr/pgmspace.h ****    has been defined before including <avr/pgmspace.h> (either by a
 323:/usr/lib/avr/include/avr/pgmspace.h ****    \c \#define directive, or by a -D compiler option.)
 324:/usr/lib/avr/include/avr/pgmspace.h **** 
 325:/usr/lib/avr/include/avr/pgmspace.h ****    Type of an "uint64_t" object located in flash ROM.
 326:/usr/lib/avr/include/avr/pgmspace.h **** 
 327:/usr/lib/avr/include/avr/pgmspace.h ****    \note This type is not available when the compiler
 328:/usr/lib/avr/include/avr/pgmspace.h ****    option -mint8 is in effect.
 329:/usr/lib/avr/include/avr/pgmspace.h **** */
 330:/usr/lib/avr/include/avr/pgmspace.h **** typedef uint64_t PROGMEM prog_uint64_t;
 331:/usr/lib/avr/include/avr/pgmspace.h **** 
 332:/usr/lib/avr/include/avr/pgmspace.h **** /** \ingroup avr_pgmspace
 333:/usr/lib/avr/include/avr/pgmspace.h ****     \def PGM_P
 334:/usr/lib/avr/include/avr/pgmspace.h **** 
 335:/usr/lib/avr/include/avr/pgmspace.h ****     Used to declare a variable that is a pointer to a string in program
 336:/usr/lib/avr/include/avr/pgmspace.h ****     space. */
 337:/usr/lib/avr/include/avr/pgmspace.h **** 
 338:/usr/lib/avr/include/avr/pgmspace.h **** #ifndef PGM_P
 339:/usr/lib/avr/include/avr/pgmspace.h **** #define PGM_P const char *
 340:/usr/lib/avr/include/avr/pgmspace.h **** #endif
 341:/usr/lib/avr/include/avr/pgmspace.h **** 
 342:/usr/lib/avr/include/avr/pgmspace.h **** /** \ingroup avr_pgmspace
 343:/usr/lib/avr/include/avr/pgmspace.h ****     \def PGM_VOID_P
 344:/usr/lib/avr/include/avr/pgmspace.h **** 
 345:/usr/lib/avr/include/avr/pgmspace.h ****     Used to declare a generic pointer to an object in program space. */
 346:/usr/lib/avr/include/avr/pgmspace.h **** 
 347:/usr/lib/avr/include/avr/pgmspace.h **** #ifndef PGM_VOID_P
 348:/usr/lib/avr/include/avr/pgmspace.h **** #define PGM_VOID_P const void *
 349:/usr/lib/avr/include/avr/pgmspace.h **** #endif
 350:/usr/lib/avr/include/avr/pgmspace.h **** 
 351:/usr/lib/avr/include/avr/pgmspace.h **** #elif defined(__PROG_TYPES_COMPAT__)  /* !DOXYGEN */
 352:/usr/lib/avr/include/avr/pgmspace.h **** 
 353:/usr/lib/avr/include/avr/pgmspace.h **** typedef void prog_void __attribute__((__progmem__,deprecated("prog_void type is deprecated.")));
 354:/usr/lib/avr/include/avr/pgmspace.h **** typedef char prog_char __attribute__((__progmem__,deprecated("prog_char type is deprecated.")));
 355:/usr/lib/avr/include/avr/pgmspace.h **** typedef unsigned char prog_uchar __attribute__((__progmem__,deprecated("prog_uchar type is deprecat
 356:/usr/lib/avr/include/avr/pgmspace.h **** typedef int8_t    prog_int8_t   __attribute__((__progmem__,deprecated("prog_int8_t type is deprecat
 357:/usr/lib/avr/include/avr/pgmspace.h **** typedef uint8_t   prog_uint8_t  __attribute__((__progmem__,deprecated("prog_uint8_t type is depreca
 358:/usr/lib/avr/include/avr/pgmspace.h **** typedef int16_t   prog_int16_t  __attribute__((__progmem__,deprecated("prog_int16_t type is depreca
 359:/usr/lib/avr/include/avr/pgmspace.h **** typedef uint16_t  prog_uint16_t __attribute__((__progmem__,deprecated("prog_uint16_t type is deprec
 360:/usr/lib/avr/include/avr/pgmspace.h **** typedef int32_t   prog_int32_t  __attribute__((__progmem__,deprecated("prog_int32_t type is depreca
 361:/usr/lib/avr/include/avr/pgmspace.h **** typedef uint32_t  prog_uint32_t __attribute__((__progmem__,deprecated("prog_uint32_t type is deprec
 362:/usr/lib/avr/include/avr/pgmspace.h **** #if !__USING_MINT8
 363:/usr/lib/avr/include/avr/pgmspace.h **** typedef int64_t   prog_int64_t  __attribute__((__progmem__,deprecated("prog_int64_t type is depreca
 364:/usr/lib/avr/include/avr/pgmspace.h **** typedef uint64_t  prog_uint64_t __attribute__((__progmem__,deprecated("prog_uint64_t type is deprec
 365:/usr/lib/avr/include/avr/pgmspace.h **** #endif
 366:/usr/lib/avr/include/avr/pgmspace.h **** 
 367:/usr/lib/avr/include/avr/pgmspace.h **** #ifndef PGM_P
 368:/usr/lib/avr/include/avr/pgmspace.h **** #define PGM_P const prog_char *
 369:/usr/lib/avr/include/avr/pgmspace.h **** #endif
 370:/usr/lib/avr/include/avr/pgmspace.h **** 
 371:/usr/lib/avr/include/avr/pgmspace.h **** #ifndef PGM_VOID_P
 372:/usr/lib/avr/include/avr/pgmspace.h **** #define PGM_VOID_P const prog_void *
 373:/usr/lib/avr/include/avr/pgmspace.h **** #endif
 374:/usr/lib/avr/include/avr/pgmspace.h **** 
 375:/usr/lib/avr/include/avr/pgmspace.h **** #else /* !defined(__DOXYGEN__), !defined(__PROG_TYPES_COMPAT__) */
 376:/usr/lib/avr/include/avr/pgmspace.h **** 
 377:/usr/lib/avr/include/avr/pgmspace.h **** #ifndef PGM_P
 378:/usr/lib/avr/include/avr/pgmspace.h **** #define PGM_P const char *
 379:/usr/lib/avr/include/avr/pgmspace.h **** #endif
 380:/usr/lib/avr/include/avr/pgmspace.h **** 
 381:/usr/lib/avr/include/avr/pgmspace.h **** #ifndef PGM_VOID_P
 382:/usr/lib/avr/include/avr/pgmspace.h **** #define PGM_VOID_P const void *
 383:/usr/lib/avr/include/avr/pgmspace.h **** #endif
 384:/usr/lib/avr/include/avr/pgmspace.h **** #endif /* defined(__DOXYGEN__), defined(__PROG_TYPES_COMPAT__) */
 385:/usr/lib/avr/include/avr/pgmspace.h **** 
 386:/usr/lib/avr/include/avr/pgmspace.h **** /* Although in C, we can get away with just using __c, it does not work in
 387:/usr/lib/avr/include/avr/pgmspace.h ****    C++. We need to use &__c[0] to avoid the compiler puking. Dave Hylands
 388:/usr/lib/avr/include/avr/pgmspace.h ****    explaned it thusly,
 389:/usr/lib/avr/include/avr/pgmspace.h **** 
 390:/usr/lib/avr/include/avr/pgmspace.h ****      Let's suppose that we use PSTR("Test"). In this case, the type returned
 391:/usr/lib/avr/include/avr/pgmspace.h ****      by __c is a prog_char[5] and not a prog_char *. While these are
 392:/usr/lib/avr/include/avr/pgmspace.h ****      compatible, they aren't the same thing (especially in C++). The type
 393:/usr/lib/avr/include/avr/pgmspace.h ****      returned by &__c[0] is a prog_char *, which explains why it works
 394:/usr/lib/avr/include/avr/pgmspace.h ****      fine. */
 395:/usr/lib/avr/include/avr/pgmspace.h **** 
 396:/usr/lib/avr/include/avr/pgmspace.h **** #if defined(__DOXYGEN__)
 397:/usr/lib/avr/include/avr/pgmspace.h **** /*
 398:/usr/lib/avr/include/avr/pgmspace.h ****  * The #define below is just a dummy that serves documentation
 399:/usr/lib/avr/include/avr/pgmspace.h ****  * purposes only.
 400:/usr/lib/avr/include/avr/pgmspace.h ****  */
 401:/usr/lib/avr/include/avr/pgmspace.h **** /** \ingroup avr_pgmspace
 402:/usr/lib/avr/include/avr/pgmspace.h ****     \def PSTR(s)
 403:/usr/lib/avr/include/avr/pgmspace.h **** 
 404:/usr/lib/avr/include/avr/pgmspace.h ****     Used to declare a static pointer to a string in program space. */
 405:/usr/lib/avr/include/avr/pgmspace.h **** # define PSTR(s) ((const PROGMEM char *)(s))
 406:/usr/lib/avr/include/avr/pgmspace.h **** #else  /* !DOXYGEN */
 407:/usr/lib/avr/include/avr/pgmspace.h **** /* The real thing. */
 408:/usr/lib/avr/include/avr/pgmspace.h **** # define PSTR(s) (__extension__({static const char __c[] PROGMEM = (s); &__c[0];}))
 409:/usr/lib/avr/include/avr/pgmspace.h **** #endif /* DOXYGEN */
 410:/usr/lib/avr/include/avr/pgmspace.h **** 
 411:/usr/lib/avr/include/avr/pgmspace.h **** #ifndef __DOXYGEN__ /* Internal macros, not documented. */
 412:/usr/lib/avr/include/avr/pgmspace.h **** #define __LPM_classic__(addr)   \
 413:/usr/lib/avr/include/avr/pgmspace.h **** (__extension__({                \
 414:/usr/lib/avr/include/avr/pgmspace.h ****     uint16_t __addr16 = (uint16_t)(addr); \
 415:/usr/lib/avr/include/avr/pgmspace.h ****     uint8_t __result;           \
 416:/usr/lib/avr/include/avr/pgmspace.h ****     __asm__ __volatile__        \
 417:/usr/lib/avr/include/avr/pgmspace.h ****     (                           \
 418:/usr/lib/avr/include/avr/pgmspace.h ****         "lpm" "\n\t"            \
 419:/usr/lib/avr/include/avr/pgmspace.h ****         "mov %0, r0" "\n\t"     \
 420:/usr/lib/avr/include/avr/pgmspace.h ****         : "=r" (__result)       \
 421:/usr/lib/avr/include/avr/pgmspace.h ****         : "z" (__addr16)        \
 422:/usr/lib/avr/include/avr/pgmspace.h ****         : "r0"                  \
 423:/usr/lib/avr/include/avr/pgmspace.h ****     );                          \
 424:/usr/lib/avr/include/avr/pgmspace.h ****     __result;                   \
 425:/usr/lib/avr/include/avr/pgmspace.h **** }))
 426:/usr/lib/avr/include/avr/pgmspace.h **** 
 427:/usr/lib/avr/include/avr/pgmspace.h **** #define __LPM_tiny__(addr)      \
 428:/usr/lib/avr/include/avr/pgmspace.h **** (__extension__({                \
 429:/usr/lib/avr/include/avr/pgmspace.h ****     uint16_t __addr16 = (uint16_t)(addr) + __AVR_TINY_PM_BASE_ADDRESS__; \
 430:/usr/lib/avr/include/avr/pgmspace.h ****     uint8_t __result;           \
 431:/usr/lib/avr/include/avr/pgmspace.h ****     __asm__                     \
 432:/usr/lib/avr/include/avr/pgmspace.h ****     (                           \
 433:/usr/lib/avr/include/avr/pgmspace.h ****         "ld %0, z" "\n\t"       \
 434:/usr/lib/avr/include/avr/pgmspace.h ****         : "=r" (__result)       \
 435:/usr/lib/avr/include/avr/pgmspace.h ****         : "z" (__addr16)        \
 436:/usr/lib/avr/include/avr/pgmspace.h ****     );                          \
 437:/usr/lib/avr/include/avr/pgmspace.h ****     __result;                   \
 438:/usr/lib/avr/include/avr/pgmspace.h **** }))
 439:/usr/lib/avr/include/avr/pgmspace.h **** 
 440:/usr/lib/avr/include/avr/pgmspace.h **** #define __LPM_enhanced__(addr)  \
 441:/usr/lib/avr/include/avr/pgmspace.h **** (__extension__({                \
 442:/usr/lib/avr/include/avr/pgmspace.h ****     uint16_t __addr16 = (uint16_t)(addr); \
 443:/usr/lib/avr/include/avr/pgmspace.h ****     uint8_t __result;           \
 444:/usr/lib/avr/include/avr/pgmspace.h ****     __asm__ __volatile__        \
 445:/usr/lib/avr/include/avr/pgmspace.h ****     (                           \
 446:/usr/lib/avr/include/avr/pgmspace.h ****         "lpm %0, Z" "\n\t"      \
 447:/usr/lib/avr/include/avr/pgmspace.h ****         : "=r" (__result)       \
 448:/usr/lib/avr/include/avr/pgmspace.h ****         : "z" (__addr16)        \
 449:/usr/lib/avr/include/avr/pgmspace.h ****     );                          \
 450:/usr/lib/avr/include/avr/pgmspace.h ****     __result;                   \
 451:/usr/lib/avr/include/avr/pgmspace.h **** }))
 452:/usr/lib/avr/include/avr/pgmspace.h **** 
 453:/usr/lib/avr/include/avr/pgmspace.h **** #define __LPM_word_classic__(addr)          \
 454:/usr/lib/avr/include/avr/pgmspace.h **** (__extension__({                            \
 455:/usr/lib/avr/include/avr/pgmspace.h ****     uint16_t __addr16 = (uint16_t)(addr);   \
 456:/usr/lib/avr/include/avr/pgmspace.h ****     uint16_t __result;                      \
 457:/usr/lib/avr/include/avr/pgmspace.h ****     __asm__ __volatile__                    \
 458:/usr/lib/avr/include/avr/pgmspace.h ****     (                                       \
 459:/usr/lib/avr/include/avr/pgmspace.h ****         "lpm"           "\n\t"              \
 460:/usr/lib/avr/include/avr/pgmspace.h ****         "mov %A0, r0"   "\n\t"              \
 461:/usr/lib/avr/include/avr/pgmspace.h ****         "adiw r30, 1"   "\n\t"              \
 462:/usr/lib/avr/include/avr/pgmspace.h ****         "lpm"           "\n\t"              \
 463:/usr/lib/avr/include/avr/pgmspace.h ****         "mov %B0, r0"   "\n\t"              \
 464:/usr/lib/avr/include/avr/pgmspace.h ****         : "=r" (__result), "=z" (__addr16)  \
 465:/usr/lib/avr/include/avr/pgmspace.h ****         : "1" (__addr16)                    \
 466:/usr/lib/avr/include/avr/pgmspace.h ****         : "r0"                              \
 467:/usr/lib/avr/include/avr/pgmspace.h ****     );                                      \
 468:/usr/lib/avr/include/avr/pgmspace.h ****     __result;                               \
 469:/usr/lib/avr/include/avr/pgmspace.h **** }))
 470:/usr/lib/avr/include/avr/pgmspace.h **** 
 471:/usr/lib/avr/include/avr/pgmspace.h **** #define __LPM_word_tiny__(addr)             \
 472:/usr/lib/avr/include/avr/pgmspace.h **** (__extension__({                            \
 473:/usr/lib/avr/include/avr/pgmspace.h ****     uint16_t __addr16 = (uint16_t)(addr) + __AVR_TINY_PM_BASE_ADDRESS__; \
 474:/usr/lib/avr/include/avr/pgmspace.h ****     uint16_t __result;                      \
 475:/usr/lib/avr/include/avr/pgmspace.h ****     __asm__                                 \
 476:/usr/lib/avr/include/avr/pgmspace.h ****     (                                       \
 477:/usr/lib/avr/include/avr/pgmspace.h ****         "ld %A0, z+"     "\n\t"             \
 478:/usr/lib/avr/include/avr/pgmspace.h ****         "ld %B0, z"      "\n\t"             \
 479:/usr/lib/avr/include/avr/pgmspace.h ****         : "=r" (__result), "=z" (__addr16)  \
 480:/usr/lib/avr/include/avr/pgmspace.h ****         : "1" (__addr16)                    \
 481:/usr/lib/avr/include/avr/pgmspace.h ****     );                                      \
 482:/usr/lib/avr/include/avr/pgmspace.h ****     __result;                               \
 483:/usr/lib/avr/include/avr/pgmspace.h **** }))
 484:/usr/lib/avr/include/avr/pgmspace.h **** 
 485:/usr/lib/avr/include/avr/pgmspace.h **** #define __LPM_word_enhanced__(addr)         \
 486:/usr/lib/avr/include/avr/pgmspace.h **** (__extension__({                            \
 487:/usr/lib/avr/include/avr/pgmspace.h ****     uint16_t __addr16 = (uint16_t)(addr);   \
 488:/usr/lib/avr/include/avr/pgmspace.h ****     uint16_t __result;                      \
 489:/usr/lib/avr/include/avr/pgmspace.h ****     __asm__ __volatile__                    \
 490:/usr/lib/avr/include/avr/pgmspace.h ****     (                                       \
 491:/usr/lib/avr/include/avr/pgmspace.h ****         "lpm %A0, Z+"   "\n\t"              \
 492:/usr/lib/avr/include/avr/pgmspace.h ****         "lpm %B0, Z"    "\n\t"              \
 493:/usr/lib/avr/include/avr/pgmspace.h ****         : "=r" (__result), "=z" (__addr16)  \
 494:/usr/lib/avr/include/avr/pgmspace.h ****         : "1" (__addr16)                    \
 495:/usr/lib/avr/include/avr/pgmspace.h ****     );                                      \
 496:/usr/lib/avr/include/avr/pgmspace.h ****     __result;                               \
 497:/usr/lib/avr/include/avr/pgmspace.h **** }))
 498:/usr/lib/avr/include/avr/pgmspace.h **** 
 499:/usr/lib/avr/include/avr/pgmspace.h **** #define __LPM_dword_classic__(addr)         \
 500:/usr/lib/avr/include/avr/pgmspace.h **** (__extension__({                            \
 501:/usr/lib/avr/include/avr/pgmspace.h ****     uint16_t __addr16 = (uint16_t)(addr);   \
 502:/usr/lib/avr/include/avr/pgmspace.h ****     uint32_t __result;                      \
 503:/usr/lib/avr/include/avr/pgmspace.h ****     __asm__ __volatile__                    \
 504:/usr/lib/avr/include/avr/pgmspace.h ****     (                                       \
 505:/usr/lib/avr/include/avr/pgmspace.h ****         "lpm"           "\n\t"              \
 506:/usr/lib/avr/include/avr/pgmspace.h ****         "mov %A0, r0"   "\n\t"              \
 507:/usr/lib/avr/include/avr/pgmspace.h ****         "adiw r30, 1"   "\n\t"              \
 508:/usr/lib/avr/include/avr/pgmspace.h ****         "lpm"           "\n\t"              \
 509:/usr/lib/avr/include/avr/pgmspace.h ****         "mov %B0, r0"   "\n\t"              \
 510:/usr/lib/avr/include/avr/pgmspace.h ****         "adiw r30, 1"   "\n\t"              \
 511:/usr/lib/avr/include/avr/pgmspace.h ****         "lpm"           "\n\t"              \
 512:/usr/lib/avr/include/avr/pgmspace.h ****         "mov %C0, r0"   "\n\t"              \
 513:/usr/lib/avr/include/avr/pgmspace.h ****         "adiw r30, 1"   "\n\t"              \
 514:/usr/lib/avr/include/avr/pgmspace.h ****         "lpm"           "\n\t"              \
 515:/usr/lib/avr/include/avr/pgmspace.h ****         "mov %D0, r0"   "\n\t"              \
 516:/usr/lib/avr/include/avr/pgmspace.h ****         : "=r" (__result), "=z" (__addr16)  \
 517:/usr/lib/avr/include/avr/pgmspace.h ****         : "1" (__addr16)                    \
 518:/usr/lib/avr/include/avr/pgmspace.h ****         : "r0"                              \
 519:/usr/lib/avr/include/avr/pgmspace.h ****     );                                      \
 520:/usr/lib/avr/include/avr/pgmspace.h ****     __result;                               \
 521:/usr/lib/avr/include/avr/pgmspace.h **** }))
 522:/usr/lib/avr/include/avr/pgmspace.h **** 
 523:/usr/lib/avr/include/avr/pgmspace.h **** #define __LPM_dword_tiny__(addr)            \
 524:/usr/lib/avr/include/avr/pgmspace.h **** (__extension__({                            \
 525:/usr/lib/avr/include/avr/pgmspace.h ****     uint16_t __addr16 = (uint16_t)(addr) + __AVR_TINY_PM_BASE_ADDRESS__; \
 526:/usr/lib/avr/include/avr/pgmspace.h ****     uint32_t __result;                      \
 527:/usr/lib/avr/include/avr/pgmspace.h ****     __asm__                                 \
 528:/usr/lib/avr/include/avr/pgmspace.h ****     (                                       \
 529:/usr/lib/avr/include/avr/pgmspace.h ****         "ld %A0, z+"    "\n\t"              \
 530:/usr/lib/avr/include/avr/pgmspace.h ****         "ld %B0, z+"    "\n\t"              \
 531:/usr/lib/avr/include/avr/pgmspace.h ****         "ld %C0, z+"    "\n\t"              \
 532:/usr/lib/avr/include/avr/pgmspace.h ****         "ld %D0, z"     "\n\t"              \
 533:/usr/lib/avr/include/avr/pgmspace.h ****         : "=r" (__result), "=z" (__addr16)  \
 534:/usr/lib/avr/include/avr/pgmspace.h ****         : "1" (__addr16)                    \
 535:/usr/lib/avr/include/avr/pgmspace.h ****     );                                      \
 536:/usr/lib/avr/include/avr/pgmspace.h ****     __result;                               \
 537:/usr/lib/avr/include/avr/pgmspace.h **** }))
 538:/usr/lib/avr/include/avr/pgmspace.h **** 
 539:/usr/lib/avr/include/avr/pgmspace.h **** #define __LPM_dword_enhanced__(addr)        \
 540:/usr/lib/avr/include/avr/pgmspace.h **** (__extension__({                            \
 541:/usr/lib/avr/include/avr/pgmspace.h ****     uint16_t __addr16 = (uint16_t)(addr);   \
 542:/usr/lib/avr/include/avr/pgmspace.h ****     uint32_t __result;                      \
 543:/usr/lib/avr/include/avr/pgmspace.h ****     __asm__ __volatile__                    \
 544:/usr/lib/avr/include/avr/pgmspace.h ****     (                                       \
 545:/usr/lib/avr/include/avr/pgmspace.h ****         "lpm %A0, Z+"   "\n\t"              \
 546:/usr/lib/avr/include/avr/pgmspace.h ****         "lpm %B0, Z+"   "\n\t"              \
 547:/usr/lib/avr/include/avr/pgmspace.h ****         "lpm %C0, Z+"   "\n\t"              \
 548:/usr/lib/avr/include/avr/pgmspace.h ****         "lpm %D0, Z"    "\n\t"              \
 549:/usr/lib/avr/include/avr/pgmspace.h ****         : "=r" (__result), "=z" (__addr16)  \
 550:/usr/lib/avr/include/avr/pgmspace.h ****         : "1" (__addr16)                    \
 551:/usr/lib/avr/include/avr/pgmspace.h ****     );                                      \
 552:/usr/lib/avr/include/avr/pgmspace.h ****     __result;                               \
 553:/usr/lib/avr/include/avr/pgmspace.h **** }))
 554:/usr/lib/avr/include/avr/pgmspace.h **** 
 555:/usr/lib/avr/include/avr/pgmspace.h **** #define __LPM_float_classic__(addr)         \
 556:/usr/lib/avr/include/avr/pgmspace.h **** (__extension__({                            \
 557:/usr/lib/avr/include/avr/pgmspace.h ****     uint16_t __addr16 = (uint16_t)(addr);   \
 558:/usr/lib/avr/include/avr/pgmspace.h ****     float __result;                         \
 559:/usr/lib/avr/include/avr/pgmspace.h ****     __asm__ __volatile__                    \
 560:/usr/lib/avr/include/avr/pgmspace.h ****     (                                       \
 561:/usr/lib/avr/include/avr/pgmspace.h ****         "lpm"           "\n\t"              \
 562:/usr/lib/avr/include/avr/pgmspace.h ****         "mov %A0, r0"   "\n\t"              \
 563:/usr/lib/avr/include/avr/pgmspace.h ****         "adiw r30, 1"   "\n\t"              \
 564:/usr/lib/avr/include/avr/pgmspace.h ****         "lpm"           "\n\t"              \
 565:/usr/lib/avr/include/avr/pgmspace.h ****         "mov %B0, r0"   "\n\t"              \
 566:/usr/lib/avr/include/avr/pgmspace.h ****         "adiw r30, 1"   "\n\t"              \
 567:/usr/lib/avr/include/avr/pgmspace.h ****         "lpm"           "\n\t"              \
 568:/usr/lib/avr/include/avr/pgmspace.h ****         "mov %C0, r0"   "\n\t"              \
 569:/usr/lib/avr/include/avr/pgmspace.h ****         "adiw r30, 1"   "\n\t"              \
 570:/usr/lib/avr/include/avr/pgmspace.h ****         "lpm"           "\n\t"              \
 571:/usr/lib/avr/include/avr/pgmspace.h ****         "mov %D0, r0"   "\n\t"              \
 572:/usr/lib/avr/include/avr/pgmspace.h ****         : "=r" (__result), "=z" (__addr16)  \
 573:/usr/lib/avr/include/avr/pgmspace.h ****         : "1" (__addr16)                    \
 574:/usr/lib/avr/include/avr/pgmspace.h ****         : "r0"                              \
 575:/usr/lib/avr/include/avr/pgmspace.h ****     );                                      \
 576:/usr/lib/avr/include/avr/pgmspace.h ****     __result;                               \
 577:/usr/lib/avr/include/avr/pgmspace.h **** }))
 578:/usr/lib/avr/include/avr/pgmspace.h **** 
 579:/usr/lib/avr/include/avr/pgmspace.h **** #define __LPM_float_tiny__(addr)            \
 580:/usr/lib/avr/include/avr/pgmspace.h **** (__extension__({                            \
 581:/usr/lib/avr/include/avr/pgmspace.h ****     uint16_t __addr16 = (uint16_t)(addr) + __AVR_TINY_PM_BASE_ADDRESS__; \
 582:/usr/lib/avr/include/avr/pgmspace.h ****     float __result;                         \
 583:/usr/lib/avr/include/avr/pgmspace.h ****     __asm__                                 \
 584:/usr/lib/avr/include/avr/pgmspace.h ****     (                                       \
 585:/usr/lib/avr/include/avr/pgmspace.h ****         "ld %A0, z+"   "\n\t"               \
 586:/usr/lib/avr/include/avr/pgmspace.h ****         "ld %B0, z+"   "\n\t"               \
 587:/usr/lib/avr/include/avr/pgmspace.h ****         "ld %C0, z+"   "\n\t"               \
 588:/usr/lib/avr/include/avr/pgmspace.h ****         "ld %D0, z"    "\n\t"               \
 589:/usr/lib/avr/include/avr/pgmspace.h ****         : "=r" (__result), "=z" (__addr16)  \
 590:/usr/lib/avr/include/avr/pgmspace.h ****         : "1" (__addr16)                    \
 591:/usr/lib/avr/include/avr/pgmspace.h ****     );                                      \
 592:/usr/lib/avr/include/avr/pgmspace.h ****     __result;                               \
 593:/usr/lib/avr/include/avr/pgmspace.h **** }))
 594:/usr/lib/avr/include/avr/pgmspace.h **** 
 595:/usr/lib/avr/include/avr/pgmspace.h **** #define __LPM_float_enhanced__(addr)        \
 596:/usr/lib/avr/include/avr/pgmspace.h **** (__extension__({                            \
 597:/usr/lib/avr/include/avr/pgmspace.h ****     uint16_t __addr16 = (uint16_t)(addr);   \
 598:/usr/lib/avr/include/avr/pgmspace.h ****     float __result;                         \
 599:/usr/lib/avr/include/avr/pgmspace.h ****     __asm__ __volatile__                    \
 600:/usr/lib/avr/include/avr/pgmspace.h ****     (                                       \
 601:/usr/lib/avr/include/avr/pgmspace.h ****         "lpm %A0, Z+"   "\n\t"              \
 602:/usr/lib/avr/include/avr/pgmspace.h ****         "lpm %B0, Z+"   "\n\t"              \
 603:/usr/lib/avr/include/avr/pgmspace.h ****         "lpm %C0, Z+"   "\n\t"              \
 604:/usr/lib/avr/include/avr/pgmspace.h ****         "lpm %D0, Z"    "\n\t"              \
 605:/usr/lib/avr/include/avr/pgmspace.h ****         : "=r" (__result), "=z" (__addr16)  \
 606:/usr/lib/avr/include/avr/pgmspace.h ****         : "1" (__addr16)                    \
 607:/usr/lib/avr/include/avr/pgmspace.h ****     );                                      \
 608:/usr/lib/avr/include/avr/pgmspace.h ****     __result;                               \
 609:/usr/lib/avr/include/avr/pgmspace.h **** }))
 610:/usr/lib/avr/include/avr/pgmspace.h **** 
 611:/usr/lib/avr/include/avr/pgmspace.h **** #if defined (__AVR_HAVE_LPMX__)
 612:/usr/lib/avr/include/avr/pgmspace.h **** #define __LPM(addr)         __LPM_enhanced__(addr)
 613:/usr/lib/avr/include/avr/pgmspace.h **** #define __LPM_word(addr)    __LPM_word_enhanced__(addr)
 614:/usr/lib/avr/include/avr/pgmspace.h **** #define __LPM_dword(addr)   __LPM_dword_enhanced__(addr)
 615:/usr/lib/avr/include/avr/pgmspace.h **** #define __LPM_float(addr)   __LPM_float_enhanced__(addr)
 616:/usr/lib/avr/include/avr/pgmspace.h **** /*
 617:/usr/lib/avr/include/avr/pgmspace.h **** Macro to read data from program memory for avr tiny parts(tiny 4/5/9/10/20/40).
 618:/usr/lib/avr/include/avr/pgmspace.h **** why:
 619:/usr/lib/avr/include/avr/pgmspace.h **** - LPM instruction is not available in AVR_TINY instruction set.
 620:/usr/lib/avr/include/avr/pgmspace.h **** - Programs are executed starting from address 0x0000 in program memory.
 621:/usr/lib/avr/include/avr/pgmspace.h **** But it must be addressed starting from 0x4000 when accessed via data memory.
 622:/usr/lib/avr/include/avr/pgmspace.h **** Reference: TINY device (ATTiny 4,5,9,10,20 and 40) datasheets
 623:/usr/lib/avr/include/avr/pgmspace.h **** Bug: avrtc-536
 624:/usr/lib/avr/include/avr/pgmspace.h **** */
 625:/usr/lib/avr/include/avr/pgmspace.h **** #elif defined (__AVR_TINY__)
 626:/usr/lib/avr/include/avr/pgmspace.h **** #define __LPM(addr)         __LPM_tiny__(addr)
 627:/usr/lib/avr/include/avr/pgmspace.h **** #define __LPM_word(addr)    __LPM_word_tiny__(addr)
 628:/usr/lib/avr/include/avr/pgmspace.h **** #define __LPM_dword(addr)   __LPM_dword_tiny__(addr)
 629:/usr/lib/avr/include/avr/pgmspace.h **** #define __LPM_float(addr)   __LPM_float_tiny__(addr)
 630:/usr/lib/avr/include/avr/pgmspace.h **** #else
 631:/usr/lib/avr/include/avr/pgmspace.h **** #define __LPM(addr)         __LPM_classic__(addr)
 632:/usr/lib/avr/include/avr/pgmspace.h **** #define __LPM_word(addr)    __LPM_word_classic__(addr)
 633:/usr/lib/avr/include/avr/pgmspace.h **** #define __LPM_dword(addr)   __LPM_dword_classic__(addr)
 634:/usr/lib/avr/include/avr/pgmspace.h **** #define __LPM_float(addr)   __LPM_float_classic__(addr)
 635:/usr/lib/avr/include/avr/pgmspace.h **** #endif
 636:/usr/lib/avr/include/avr/pgmspace.h **** 
 637:/usr/lib/avr/include/avr/pgmspace.h **** #endif  /* !__DOXYGEN__ */
 638:/usr/lib/avr/include/avr/pgmspace.h **** 
 639:/usr/lib/avr/include/avr/pgmspace.h **** /** \ingroup avr_pgmspace
 640:/usr/lib/avr/include/avr/pgmspace.h ****     \def pgm_read_byte_near(address_short)
 641:/usr/lib/avr/include/avr/pgmspace.h ****     Read a byte from the program space with a 16-bit (near) address. 
 642:/usr/lib/avr/include/avr/pgmspace.h ****     \note The address is a byte address.
 643:/usr/lib/avr/include/avr/pgmspace.h ****     The address is in the program space. */
 644:/usr/lib/avr/include/avr/pgmspace.h **** 
 645:/usr/lib/avr/include/avr/pgmspace.h **** #define pgm_read_byte_near(address_short) __LPM((uint16_t)(address_short))
 646:/usr/lib/avr/include/avr/pgmspace.h **** 
 647:/usr/lib/avr/include/avr/pgmspace.h **** /** \ingroup avr_pgmspace
 648:/usr/lib/avr/include/avr/pgmspace.h ****     \def pgm_read_word_near(address_short)
 649:/usr/lib/avr/include/avr/pgmspace.h ****     Read a word from the program space with a 16-bit (near) address. 
 650:/usr/lib/avr/include/avr/pgmspace.h ****     \note The address is a byte address. 
 651:/usr/lib/avr/include/avr/pgmspace.h ****     The address is in the program space. */
 652:/usr/lib/avr/include/avr/pgmspace.h **** 
 653:/usr/lib/avr/include/avr/pgmspace.h **** #define pgm_read_word_near(address_short) __LPM_word((uint16_t)(address_short))
 654:/usr/lib/avr/include/avr/pgmspace.h **** 
 655:/usr/lib/avr/include/avr/pgmspace.h **** /** \ingroup avr_pgmspace
 656:/usr/lib/avr/include/avr/pgmspace.h ****     \def pgm_read_dword_near(address_short)
 657:/usr/lib/avr/include/avr/pgmspace.h ****     Read a double word from the program space with a 16-bit (near) address. 
 658:/usr/lib/avr/include/avr/pgmspace.h ****     \note The address is a byte address. 
 659:/usr/lib/avr/include/avr/pgmspace.h ****     The address is in the program space. */
 660:/usr/lib/avr/include/avr/pgmspace.h **** 
 661:/usr/lib/avr/include/avr/pgmspace.h **** #define pgm_read_dword_near(address_short) \
 662:/usr/lib/avr/include/avr/pgmspace.h ****     __LPM_dword((uint16_t)(address_short))
 663:/usr/lib/avr/include/avr/pgmspace.h **** 
 664:/usr/lib/avr/include/avr/pgmspace.h **** /** \ingroup avr_pgmspace
 665:/usr/lib/avr/include/avr/pgmspace.h ****     \def pgm_read_float_near(address_short)
 666:/usr/lib/avr/include/avr/pgmspace.h ****     Read a float from the program space with a 16-bit (near) address. 
 667:/usr/lib/avr/include/avr/pgmspace.h ****     \note The address is a byte address. 
 668:/usr/lib/avr/include/avr/pgmspace.h ****     The address is in the program space. */
 669:/usr/lib/avr/include/avr/pgmspace.h **** 
 670:/usr/lib/avr/include/avr/pgmspace.h **** #define pgm_read_float_near(address_short) \
 671:/usr/lib/avr/include/avr/pgmspace.h ****     __LPM_float((uint16_t)(address_short))
 672:/usr/lib/avr/include/avr/pgmspace.h **** 
 673:/usr/lib/avr/include/avr/pgmspace.h **** /** \ingroup avr_pgmspace
 674:/usr/lib/avr/include/avr/pgmspace.h ****     \def pgm_read_ptr_near(address_short)
 675:/usr/lib/avr/include/avr/pgmspace.h ****     Read a pointer from the program space with a 16-bit (near) address. 
 676:/usr/lib/avr/include/avr/pgmspace.h ****     \note The address is a byte address. 
 677:/usr/lib/avr/include/avr/pgmspace.h ****     The address is in the program space. */
 678:/usr/lib/avr/include/avr/pgmspace.h **** 
 679:/usr/lib/avr/include/avr/pgmspace.h **** #define pgm_read_ptr_near(address_short) \
 680:/usr/lib/avr/include/avr/pgmspace.h ****     (void*)__LPM_word((uint16_t)(address_short))
 681:/usr/lib/avr/include/avr/pgmspace.h **** 
 682:/usr/lib/avr/include/avr/pgmspace.h **** #if defined(RAMPZ) || defined(__DOXYGEN__)
 683:/usr/lib/avr/include/avr/pgmspace.h **** 
 684:/usr/lib/avr/include/avr/pgmspace.h **** /* Only for devices with more than 64K of program memory.
 685:/usr/lib/avr/include/avr/pgmspace.h ****    RAMPZ must be defined (see iom103.h, iom128.h).
 686:/usr/lib/avr/include/avr/pgmspace.h **** */
 687:/usr/lib/avr/include/avr/pgmspace.h **** 
 688:/usr/lib/avr/include/avr/pgmspace.h **** /* The classic functions are needed for ATmega103. */
 689:/usr/lib/avr/include/avr/pgmspace.h **** #ifndef __DOXYGEN__		/* These are internal macros, avoid "is
 690:/usr/lib/avr/include/avr/pgmspace.h **** 				   not documented" warnings. */
 691:/usr/lib/avr/include/avr/pgmspace.h **** #define __ELPM_classic__(addr)      \
 692:/usr/lib/avr/include/avr/pgmspace.h **** (__extension__({                    \
 693:/usr/lib/avr/include/avr/pgmspace.h ****     uint32_t __addr32 = (uint32_t)(addr); \
 694:/usr/lib/avr/include/avr/pgmspace.h ****     uint8_t __result;               \
 695:/usr/lib/avr/include/avr/pgmspace.h ****     __asm__ __volatile__            \
 696:/usr/lib/avr/include/avr/pgmspace.h ****     (                               \
 697:/usr/lib/avr/include/avr/pgmspace.h ****         "out %2, %C1" "\n\t"        \
 698:/usr/lib/avr/include/avr/pgmspace.h ****         "mov r31, %B1" "\n\t"       \
 699:/usr/lib/avr/include/avr/pgmspace.h ****         "mov r30, %A1" "\n\t"       \
 700:/usr/lib/avr/include/avr/pgmspace.h ****         "elpm" "\n\t"               \
 701:/usr/lib/avr/include/avr/pgmspace.h ****         "mov %0, r0" "\n\t"         \
 702:/usr/lib/avr/include/avr/pgmspace.h ****         : "=r" (__result)           \
 703:/usr/lib/avr/include/avr/pgmspace.h ****         : "r" (__addr32),           \
 704:/usr/lib/avr/include/avr/pgmspace.h ****           "I" (_SFR_IO_ADDR(RAMPZ)) \
 705:/usr/lib/avr/include/avr/pgmspace.h ****         : "r0", "r30", "r31"        \
 706:/usr/lib/avr/include/avr/pgmspace.h ****     );                              \
 707:/usr/lib/avr/include/avr/pgmspace.h ****     __result;                       \
 708:/usr/lib/avr/include/avr/pgmspace.h **** }))
 709:/usr/lib/avr/include/avr/pgmspace.h **** 
 710:/usr/lib/avr/include/avr/pgmspace.h **** #define __ELPM_enhanced__(addr)     \
 711:/usr/lib/avr/include/avr/pgmspace.h **** (__extension__({                    \
 712:/usr/lib/avr/include/avr/pgmspace.h ****     uint32_t __addr32 = (uint32_t)(addr); \
 713:/usr/lib/avr/include/avr/pgmspace.h ****     uint8_t __result;               \
 714:/usr/lib/avr/include/avr/pgmspace.h ****     __asm__ __volatile__            \
 715:/usr/lib/avr/include/avr/pgmspace.h ****     (                               \
 716:/usr/lib/avr/include/avr/pgmspace.h ****         "out %2, %C1" "\n\t"        \
 717:/usr/lib/avr/include/avr/pgmspace.h ****         "movw r30, %1" "\n\t"       \
 718:/usr/lib/avr/include/avr/pgmspace.h ****         "elpm %0, Z+" "\n\t"        \
 719:/usr/lib/avr/include/avr/pgmspace.h ****         : "=r" (__result)           \
 720:/usr/lib/avr/include/avr/pgmspace.h ****         : "r" (__addr32),           \
 721:/usr/lib/avr/include/avr/pgmspace.h ****           "I" (_SFR_IO_ADDR(RAMPZ)) \
 722:/usr/lib/avr/include/avr/pgmspace.h ****         : "r30", "r31"              \
 723:/usr/lib/avr/include/avr/pgmspace.h ****     );                              \
 724:/usr/lib/avr/include/avr/pgmspace.h ****     __result;                       \
 725:/usr/lib/avr/include/avr/pgmspace.h **** }))
 726:/usr/lib/avr/include/avr/pgmspace.h **** 
 727:/usr/lib/avr/include/avr/pgmspace.h **** #define __ELPM_xmega__(addr)        \
 728:/usr/lib/avr/include/avr/pgmspace.h **** (__extension__({                    \
 729:/usr/lib/avr/include/avr/pgmspace.h ****     uint32_t __addr32 = (uint32_t)(addr); \
 730:/usr/lib/avr/include/avr/pgmspace.h ****     uint8_t __result;               \
 731:/usr/lib/avr/include/avr/pgmspace.h ****     __asm__ __volatile__            \
 732:/usr/lib/avr/include/avr/pgmspace.h ****     (                               \
 733:/usr/lib/avr/include/avr/pgmspace.h ****         "in __tmp_reg__, %2" "\n\t" \
 734:/usr/lib/avr/include/avr/pgmspace.h ****         "out %2, %C1" "\n\t"        \
 735:/usr/lib/avr/include/avr/pgmspace.h ****         "movw r30, %1" "\n\t"       \
 736:/usr/lib/avr/include/avr/pgmspace.h ****         "elpm %0, Z+" "\n\t"        \
 737:/usr/lib/avr/include/avr/pgmspace.h ****         "out %2, __tmp_reg__"       \
 738:/usr/lib/avr/include/avr/pgmspace.h ****         : "=r" (__result)           \
 739:/usr/lib/avr/include/avr/pgmspace.h ****         : "r" (__addr32),           \
 740:/usr/lib/avr/include/avr/pgmspace.h ****           "I" (_SFR_IO_ADDR(RAMPZ)) \
 741:/usr/lib/avr/include/avr/pgmspace.h ****         : "r30", "r31"              \
 742:/usr/lib/avr/include/avr/pgmspace.h ****     );                              \
 743:/usr/lib/avr/include/avr/pgmspace.h ****     __result;                       \
 744:/usr/lib/avr/include/avr/pgmspace.h **** }))
 745:/usr/lib/avr/include/avr/pgmspace.h **** 
 746:/usr/lib/avr/include/avr/pgmspace.h **** #define __ELPM_word_classic__(addr)     \
 747:/usr/lib/avr/include/avr/pgmspace.h **** (__extension__({                        \
 748:/usr/lib/avr/include/avr/pgmspace.h ****     uint32_t __addr32 = (uint32_t)(addr); \
 749:/usr/lib/avr/include/avr/pgmspace.h ****     uint16_t __result;                  \
 750:/usr/lib/avr/include/avr/pgmspace.h ****     __asm__ __volatile__                \
 751:/usr/lib/avr/include/avr/pgmspace.h ****     (                                   \
 752:/usr/lib/avr/include/avr/pgmspace.h ****         "out %2, %C1"   "\n\t"          \
 753:/usr/lib/avr/include/avr/pgmspace.h ****         "mov r31, %B1"  "\n\t"          \
 754:/usr/lib/avr/include/avr/pgmspace.h ****         "mov r30, %A1"  "\n\t"          \
 755:/usr/lib/avr/include/avr/pgmspace.h ****         "elpm"          "\n\t"          \
 756:/usr/lib/avr/include/avr/pgmspace.h ****         "mov %A0, r0"   "\n\t"          \
 757:/usr/lib/avr/include/avr/pgmspace.h ****         "in r0, %2"     "\n\t"          \
 758:/usr/lib/avr/include/avr/pgmspace.h ****         "adiw r30, 1"   "\n\t"          \
 759:/usr/lib/avr/include/avr/pgmspace.h ****         "adc r0, __zero_reg__" "\n\t"   \
 760:/usr/lib/avr/include/avr/pgmspace.h ****         "out %2, r0"    "\n\t"          \
 761:/usr/lib/avr/include/avr/pgmspace.h ****         "elpm"          "\n\t"          \
 762:/usr/lib/avr/include/avr/pgmspace.h ****         "mov %B0, r0"   "\n\t"          \
 763:/usr/lib/avr/include/avr/pgmspace.h ****         : "=r" (__result)               \
 764:/usr/lib/avr/include/avr/pgmspace.h ****         : "r" (__addr32),               \
 765:/usr/lib/avr/include/avr/pgmspace.h ****           "I" (_SFR_IO_ADDR(RAMPZ))     \
 766:/usr/lib/avr/include/avr/pgmspace.h ****         : "r0", "r30", "r31"            \
 767:/usr/lib/avr/include/avr/pgmspace.h ****     );                                  \
 768:/usr/lib/avr/include/avr/pgmspace.h ****     __result;                           \
 769:/usr/lib/avr/include/avr/pgmspace.h **** }))
 770:/usr/lib/avr/include/avr/pgmspace.h **** 
 771:/usr/lib/avr/include/avr/pgmspace.h **** #define __ELPM_word_enhanced__(addr)    \
 772:/usr/lib/avr/include/avr/pgmspace.h **** (__extension__({                        \
 773:/usr/lib/avr/include/avr/pgmspace.h ****     uint32_t __addr32 = (uint32_t)(addr); \
 774:/usr/lib/avr/include/avr/pgmspace.h ****     uint16_t __result;                  \
 775:/usr/lib/avr/include/avr/pgmspace.h ****     __asm__ __volatile__                \
 776:/usr/lib/avr/include/avr/pgmspace.h ****     (                                   \
 777:/usr/lib/avr/include/avr/pgmspace.h ****         "out %2, %C1"   "\n\t"          \
 778:/usr/lib/avr/include/avr/pgmspace.h ****         "movw r30, %1"  "\n\t"          \
 779:/usr/lib/avr/include/avr/pgmspace.h ****         "elpm %A0, Z+"  "\n\t"          \
 780:/usr/lib/avr/include/avr/pgmspace.h ****         "elpm %B0, Z"   "\n\t"          \
 781:/usr/lib/avr/include/avr/pgmspace.h ****         : "=r" (__result)               \
 782:/usr/lib/avr/include/avr/pgmspace.h ****         : "r" (__addr32),               \
 783:/usr/lib/avr/include/avr/pgmspace.h ****           "I" (_SFR_IO_ADDR(RAMPZ))     \
 784:/usr/lib/avr/include/avr/pgmspace.h ****         : "r30", "r31"                  \
 785:/usr/lib/avr/include/avr/pgmspace.h ****     );                                  \
 786:/usr/lib/avr/include/avr/pgmspace.h ****     __result;                           \
 787:/usr/lib/avr/include/avr/pgmspace.h **** }))
 788:/usr/lib/avr/include/avr/pgmspace.h **** 
 789:/usr/lib/avr/include/avr/pgmspace.h **** #define __ELPM_word_xmega__(addr)       \
 790:/usr/lib/avr/include/avr/pgmspace.h **** (__extension__({                        \
 791:/usr/lib/avr/include/avr/pgmspace.h ****     uint32_t __addr32 = (uint32_t)(addr); \
 792:/usr/lib/avr/include/avr/pgmspace.h ****     uint16_t __result;                  \
 793:/usr/lib/avr/include/avr/pgmspace.h ****     __asm__ __volatile__                \
 794:/usr/lib/avr/include/avr/pgmspace.h ****     (                                   \
 795:/usr/lib/avr/include/avr/pgmspace.h ****         "in __tmp_reg__, %2" "\n\t"     \
 796:/usr/lib/avr/include/avr/pgmspace.h ****         "out %2, %C1"   "\n\t"          \
 797:/usr/lib/avr/include/avr/pgmspace.h ****         "movw r30, %1"  "\n\t"          \
 798:/usr/lib/avr/include/avr/pgmspace.h ****         "elpm %A0, Z+"  "\n\t"          \
 799:/usr/lib/avr/include/avr/pgmspace.h ****         "elpm %B0, Z"   "\n\t"          \
 800:/usr/lib/avr/include/avr/pgmspace.h ****         "out %2, __tmp_reg__"           \
 801:/usr/lib/avr/include/avr/pgmspace.h ****         : "=r" (__result)               \
 802:/usr/lib/avr/include/avr/pgmspace.h ****         : "r" (__addr32),               \
 803:/usr/lib/avr/include/avr/pgmspace.h ****           "I" (_SFR_IO_ADDR(RAMPZ))     \
 804:/usr/lib/avr/include/avr/pgmspace.h ****         : "r30", "r31"                  \
 805:/usr/lib/avr/include/avr/pgmspace.h ****     );                                  \
 806:/usr/lib/avr/include/avr/pgmspace.h ****     __result;                           \
 807:/usr/lib/avr/include/avr/pgmspace.h **** }))
 808:/usr/lib/avr/include/avr/pgmspace.h **** 
 809:/usr/lib/avr/include/avr/pgmspace.h **** #define __ELPM_dword_classic__(addr)      \
 810:/usr/lib/avr/include/avr/pgmspace.h **** (__extension__({                          \
 811:/usr/lib/avr/include/avr/pgmspace.h ****     uint32_t __addr32 = (uint32_t)(addr); \
 812:/usr/lib/avr/include/avr/pgmspace.h ****     uint32_t __result;                    \
 813:/usr/lib/avr/include/avr/pgmspace.h ****     __asm__ __volatile__                  \
 814:/usr/lib/avr/include/avr/pgmspace.h ****     (                                     \
 815:/usr/lib/avr/include/avr/pgmspace.h ****         "out %2, %C1"          "\n\t"     \
 816:/usr/lib/avr/include/avr/pgmspace.h ****         "mov r31, %B1"         "\n\t"     \
 817:/usr/lib/avr/include/avr/pgmspace.h ****         "mov r30, %A1"         "\n\t"     \
 818:/usr/lib/avr/include/avr/pgmspace.h ****         "elpm"                 "\n\t"     \
 819:/usr/lib/avr/include/avr/pgmspace.h ****         "mov %A0, r0"          "\n\t"     \
 820:/usr/lib/avr/include/avr/pgmspace.h ****         "in r0, %2"            "\n\t"     \
 821:/usr/lib/avr/include/avr/pgmspace.h ****         "adiw r30, 1"          "\n\t"     \
 822:/usr/lib/avr/include/avr/pgmspace.h ****         "adc r0, __zero_reg__" "\n\t"     \
 823:/usr/lib/avr/include/avr/pgmspace.h ****         "out %2, r0"           "\n\t"     \
 824:/usr/lib/avr/include/avr/pgmspace.h ****         "elpm"                 "\n\t"     \
 825:/usr/lib/avr/include/avr/pgmspace.h ****         "mov %B0, r0"          "\n\t"     \
 826:/usr/lib/avr/include/avr/pgmspace.h ****         "in r0, %2"            "\n\t"     \
 827:/usr/lib/avr/include/avr/pgmspace.h ****         "adiw r30, 1"          "\n\t"     \
 828:/usr/lib/avr/include/avr/pgmspace.h ****         "adc r0, __zero_reg__" "\n\t"     \
 829:/usr/lib/avr/include/avr/pgmspace.h ****         "out %2, r0"           "\n\t"     \
 830:/usr/lib/avr/include/avr/pgmspace.h ****         "elpm"                 "\n\t"     \
 831:/usr/lib/avr/include/avr/pgmspace.h ****         "mov %C0, r0"          "\n\t"     \
 832:/usr/lib/avr/include/avr/pgmspace.h ****         "in r0, %2"            "\n\t"     \
 833:/usr/lib/avr/include/avr/pgmspace.h ****         "adiw r30, 1"          "\n\t"     \
 834:/usr/lib/avr/include/avr/pgmspace.h ****         "adc r0, __zero_reg__" "\n\t"     \
 835:/usr/lib/avr/include/avr/pgmspace.h ****         "out %2, r0"           "\n\t"     \
 836:/usr/lib/avr/include/avr/pgmspace.h ****         "elpm"                 "\n\t"     \
 837:/usr/lib/avr/include/avr/pgmspace.h ****         "mov %D0, r0"          "\n\t"     \
 838:/usr/lib/avr/include/avr/pgmspace.h ****         : "=r" (__result)                 \
 839:/usr/lib/avr/include/avr/pgmspace.h ****         : "r" (__addr32),                 \
 840:/usr/lib/avr/include/avr/pgmspace.h ****           "I" (_SFR_IO_ADDR(RAMPZ))       \
 841:/usr/lib/avr/include/avr/pgmspace.h ****         : "r0", "r30", "r31"              \
 842:/usr/lib/avr/include/avr/pgmspace.h ****     );                                    \
 843:/usr/lib/avr/include/avr/pgmspace.h ****     __result;                             \
 844:/usr/lib/avr/include/avr/pgmspace.h **** }))
 845:/usr/lib/avr/include/avr/pgmspace.h **** 
 846:/usr/lib/avr/include/avr/pgmspace.h **** #define __ELPM_dword_enhanced__(addr)     \
 847:/usr/lib/avr/include/avr/pgmspace.h **** (__extension__({                          \
 848:/usr/lib/avr/include/avr/pgmspace.h ****     uint32_t __addr32 = (uint32_t)(addr); \
 849:/usr/lib/avr/include/avr/pgmspace.h ****     uint32_t __result;                    \
 850:/usr/lib/avr/include/avr/pgmspace.h ****     __asm__ __volatile__                  \
 851:/usr/lib/avr/include/avr/pgmspace.h ****     (                                     \
 852:/usr/lib/avr/include/avr/pgmspace.h ****         "out %2, %C1"   "\n\t"            \
 853:/usr/lib/avr/include/avr/pgmspace.h ****         "movw r30, %1"  "\n\t"            \
 854:/usr/lib/avr/include/avr/pgmspace.h ****         "elpm %A0, Z+"  "\n\t"            \
 855:/usr/lib/avr/include/avr/pgmspace.h ****         "elpm %B0, Z+"  "\n\t"            \
 856:/usr/lib/avr/include/avr/pgmspace.h ****         "elpm %C0, Z+"  "\n\t"            \
 857:/usr/lib/avr/include/avr/pgmspace.h ****         "elpm %D0, Z"   "\n\t"            \
 858:/usr/lib/avr/include/avr/pgmspace.h ****         : "=r" (__result)                 \
 859:/usr/lib/avr/include/avr/pgmspace.h ****         : "r" (__addr32),                 \
 860:/usr/lib/avr/include/avr/pgmspace.h ****           "I" (_SFR_IO_ADDR(RAMPZ))       \
 861:/usr/lib/avr/include/avr/pgmspace.h ****         : "r30", "r31"                    \
 862:/usr/lib/avr/include/avr/pgmspace.h ****     );                                    \
 863:/usr/lib/avr/include/avr/pgmspace.h ****     __result;                             \
 864:/usr/lib/avr/include/avr/pgmspace.h **** }))
 865:/usr/lib/avr/include/avr/pgmspace.h **** 
 866:/usr/lib/avr/include/avr/pgmspace.h **** #define __ELPM_dword_xmega__(addr)        \
 867:/usr/lib/avr/include/avr/pgmspace.h **** (__extension__({                          \
 868:/usr/lib/avr/include/avr/pgmspace.h ****     uint32_t __addr32 = (uint32_t)(addr); \
 869:/usr/lib/avr/include/avr/pgmspace.h ****     uint32_t __result;                    \
 870:/usr/lib/avr/include/avr/pgmspace.h ****     __asm__ __volatile__                  \
 871:/usr/lib/avr/include/avr/pgmspace.h ****     (                                     \
 872:/usr/lib/avr/include/avr/pgmspace.h ****         "in __tmp_reg__, %2" "\n\t"       \
 873:/usr/lib/avr/include/avr/pgmspace.h ****         "out %2, %C1"   "\n\t"            \
 874:/usr/lib/avr/include/avr/pgmspace.h ****         "movw r30, %1"  "\n\t"            \
 875:/usr/lib/avr/include/avr/pgmspace.h ****         "elpm %A0, Z+"  "\n\t"            \
 876:/usr/lib/avr/include/avr/pgmspace.h ****         "elpm %B0, Z+"  "\n\t"            \
 877:/usr/lib/avr/include/avr/pgmspace.h ****         "elpm %C0, Z+"  "\n\t"            \
 878:/usr/lib/avr/include/avr/pgmspace.h ****         "elpm %D0, Z"   "\n\t"            \
 879:/usr/lib/avr/include/avr/pgmspace.h ****         "out %2, __tmp_reg__"             \
 880:/usr/lib/avr/include/avr/pgmspace.h ****         : "=r" (__result)                 \
 881:/usr/lib/avr/include/avr/pgmspace.h ****         : "r" (__addr32),                 \
 882:/usr/lib/avr/include/avr/pgmspace.h ****           "I" (_SFR_IO_ADDR(RAMPZ))       \
 883:/usr/lib/avr/include/avr/pgmspace.h ****         : "r30", "r31"                    \
 884:/usr/lib/avr/include/avr/pgmspace.h ****     );                                    \
 885:/usr/lib/avr/include/avr/pgmspace.h ****     __result;                             \
 886:/usr/lib/avr/include/avr/pgmspace.h **** }))
 887:/usr/lib/avr/include/avr/pgmspace.h **** 
 888:/usr/lib/avr/include/avr/pgmspace.h **** #define __ELPM_float_classic__(addr)      \
 889:/usr/lib/avr/include/avr/pgmspace.h **** (__extension__({                          \
 890:/usr/lib/avr/include/avr/pgmspace.h ****     uint32_t __addr32 = (uint32_t)(addr); \
 891:/usr/lib/avr/include/avr/pgmspace.h ****     float __result;                       \
 892:/usr/lib/avr/include/avr/pgmspace.h ****     __asm__ __volatile__                  \
 893:/usr/lib/avr/include/avr/pgmspace.h ****     (                                     \
 894:/usr/lib/avr/include/avr/pgmspace.h ****         "out %2, %C1"          "\n\t"     \
 895:/usr/lib/avr/include/avr/pgmspace.h ****         "mov r31, %B1"         "\n\t"     \
 896:/usr/lib/avr/include/avr/pgmspace.h ****         "mov r30, %A1"         "\n\t"     \
 897:/usr/lib/avr/include/avr/pgmspace.h ****         "elpm"                 "\n\t"     \
 898:/usr/lib/avr/include/avr/pgmspace.h ****         "mov %A0, r0"          "\n\t"     \
 899:/usr/lib/avr/include/avr/pgmspace.h ****         "in r0, %2"            "\n\t"     \
 900:/usr/lib/avr/include/avr/pgmspace.h ****         "adiw r30, 1"          "\n\t"     \
 901:/usr/lib/avr/include/avr/pgmspace.h ****         "adc r0, __zero_reg__" "\n\t"     \
 902:/usr/lib/avr/include/avr/pgmspace.h ****         "out %2, r0"           "\n\t"     \
 903:/usr/lib/avr/include/avr/pgmspace.h ****         "elpm"                 "\n\t"     \
 904:/usr/lib/avr/include/avr/pgmspace.h ****         "mov %B0, r0"          "\n\t"     \
 905:/usr/lib/avr/include/avr/pgmspace.h ****         "in r0, %2"            "\n\t"     \
 906:/usr/lib/avr/include/avr/pgmspace.h ****         "adiw r30, 1"          "\n\t"     \
 907:/usr/lib/avr/include/avr/pgmspace.h ****         "adc r0, __zero_reg__" "\n\t"     \
 908:/usr/lib/avr/include/avr/pgmspace.h ****         "out %2, r0"           "\n\t"     \
 909:/usr/lib/avr/include/avr/pgmspace.h ****         "elpm"                 "\n\t"     \
 910:/usr/lib/avr/include/avr/pgmspace.h ****         "mov %C0, r0"          "\n\t"     \
 911:/usr/lib/avr/include/avr/pgmspace.h ****         "in r0, %2"            "\n\t"     \
 912:/usr/lib/avr/include/avr/pgmspace.h ****         "adiw r30, 1"          "\n\t"     \
 913:/usr/lib/avr/include/avr/pgmspace.h ****         "adc r0, __zero_reg__" "\n\t"     \
 914:/usr/lib/avr/include/avr/pgmspace.h ****         "out %2, r0"           "\n\t"     \
 915:/usr/lib/avr/include/avr/pgmspace.h ****         "elpm"                 "\n\t"     \
 916:/usr/lib/avr/include/avr/pgmspace.h ****         "mov %D0, r0"          "\n\t"     \
 917:/usr/lib/avr/include/avr/pgmspace.h ****         : "=r" (__result)                 \
 918:/usr/lib/avr/include/avr/pgmspace.h ****         : "r" (__addr32),                 \
 919:/usr/lib/avr/include/avr/pgmspace.h ****           "I" (_SFR_IO_ADDR(RAMPZ))       \
 920:/usr/lib/avr/include/avr/pgmspace.h ****         : "r0", "r30", "r31"              \
 921:/usr/lib/avr/include/avr/pgmspace.h ****     );                                    \
 922:/usr/lib/avr/include/avr/pgmspace.h ****     __result;                             \
 923:/usr/lib/avr/include/avr/pgmspace.h **** }))
 924:/usr/lib/avr/include/avr/pgmspace.h **** 
 925:/usr/lib/avr/include/avr/pgmspace.h **** #define __ELPM_float_enhanced__(addr)     \
 926:/usr/lib/avr/include/avr/pgmspace.h **** (__extension__({                          \
 927:/usr/lib/avr/include/avr/pgmspace.h ****     uint32_t __addr32 = (uint32_t)(addr); \
 928:/usr/lib/avr/include/avr/pgmspace.h ****     float __result;                       \
 929:/usr/lib/avr/include/avr/pgmspace.h ****     __asm__ __volatile__                  \
 930:/usr/lib/avr/include/avr/pgmspace.h ****     (                                     \
 931:/usr/lib/avr/include/avr/pgmspace.h ****         "out %2, %C1"   "\n\t"            \
 932:/usr/lib/avr/include/avr/pgmspace.h ****         "movw r30, %1"  "\n\t"            \
 933:/usr/lib/avr/include/avr/pgmspace.h ****         "elpm %A0, Z+"  "\n\t"            \
 934:/usr/lib/avr/include/avr/pgmspace.h ****         "elpm %B0, Z+"  "\n\t"            \
 935:/usr/lib/avr/include/avr/pgmspace.h ****         "elpm %C0, Z+"  "\n\t"            \
 936:/usr/lib/avr/include/avr/pgmspace.h ****         "elpm %D0, Z"   "\n\t"            \
 937:/usr/lib/avr/include/avr/pgmspace.h ****         : "=r" (__result)                 \
 938:/usr/lib/avr/include/avr/pgmspace.h ****         : "r" (__addr32),                 \
 939:/usr/lib/avr/include/avr/pgmspace.h ****           "I" (_SFR_IO_ADDR(RAMPZ))       \
 940:/usr/lib/avr/include/avr/pgmspace.h ****         : "r30", "r31"                    \
 941:/usr/lib/avr/include/avr/pgmspace.h ****     );                                    \
 942:/usr/lib/avr/include/avr/pgmspace.h ****     __result;                             \
 943:/usr/lib/avr/include/avr/pgmspace.h **** }))
 944:/usr/lib/avr/include/avr/pgmspace.h **** 
 945:/usr/lib/avr/include/avr/pgmspace.h **** #define __ELPM_float_xmega__(addr)        \
 946:/usr/lib/avr/include/avr/pgmspace.h **** (__extension__({                          \
 947:/usr/lib/avr/include/avr/pgmspace.h ****     uint32_t __addr32 = (uint32_t)(addr); \
 948:/usr/lib/avr/include/avr/pgmspace.h ****     float __result;                       \
 949:/usr/lib/avr/include/avr/pgmspace.h ****     __asm__ __volatile__                  \
 950:/usr/lib/avr/include/avr/pgmspace.h ****     (                                     \
 951:/usr/lib/avr/include/avr/pgmspace.h ****         "in __tmp_reg__, %2" "\n\t"       \
 952:/usr/lib/avr/include/avr/pgmspace.h ****         "out %2, %C1"   "\n\t"            \
 953:/usr/lib/avr/include/avr/pgmspace.h ****         "movw r30, %1"  "\n\t"            \
 954:/usr/lib/avr/include/avr/pgmspace.h ****         "elpm %A0, Z+"  "\n\t"            \
 955:/usr/lib/avr/include/avr/pgmspace.h ****         "elpm %B0, Z+"  "\n\t"            \
 956:/usr/lib/avr/include/avr/pgmspace.h ****         "elpm %C0, Z+"  "\n\t"            \
 957:/usr/lib/avr/include/avr/pgmspace.h ****         "elpm %D0, Z"   "\n\t"            \
 958:/usr/lib/avr/include/avr/pgmspace.h ****         "out %2, __tmp_reg__"             \
 959:/usr/lib/avr/include/avr/pgmspace.h ****         : "=r" (__result)                 \
 960:/usr/lib/avr/include/avr/pgmspace.h ****         : "r" (__addr32),                 \
 961:/usr/lib/avr/include/avr/pgmspace.h ****           "I" (_SFR_IO_ADDR(RAMPZ))       \
 962:/usr/lib/avr/include/avr/pgmspace.h ****         : "r30", "r31"                    \
 963:/usr/lib/avr/include/avr/pgmspace.h ****     );                                    \
 964:/usr/lib/avr/include/avr/pgmspace.h ****     __result;                             \
 965:/usr/lib/avr/include/avr/pgmspace.h **** }))
 966:/usr/lib/avr/include/avr/pgmspace.h **** 
 967:/usr/lib/avr/include/avr/pgmspace.h **** /*
 968:/usr/lib/avr/include/avr/pgmspace.h **** Check for architectures that implement RAMPD (avrxmega3, avrxmega5,
 969:/usr/lib/avr/include/avr/pgmspace.h **** avrxmega7) as they need to save/restore RAMPZ for ELPM macros so it does
 970:/usr/lib/avr/include/avr/pgmspace.h **** not interfere with data accesses.
 971:/usr/lib/avr/include/avr/pgmspace.h **** */
 972:/usr/lib/avr/include/avr/pgmspace.h **** #if defined (__AVR_HAVE_RAMPD__)
 973:/usr/lib/avr/include/avr/pgmspace.h **** 
 974:/usr/lib/avr/include/avr/pgmspace.h **** #define __ELPM(addr)        __ELPM_xmega__(addr)
 975:/usr/lib/avr/include/avr/pgmspace.h **** #define __ELPM_word(addr)   __ELPM_word_xmega__(addr)
 976:/usr/lib/avr/include/avr/pgmspace.h **** #define __ELPM_dword(addr)  __ELPM_dword_xmega__(addr)
 977:/usr/lib/avr/include/avr/pgmspace.h **** #define __ELPM_float(addr)  __ELPM_float_xmega__(addr)
 978:/usr/lib/avr/include/avr/pgmspace.h **** 
 979:/usr/lib/avr/include/avr/pgmspace.h **** #else
 980:/usr/lib/avr/include/avr/pgmspace.h **** 
 981:/usr/lib/avr/include/avr/pgmspace.h **** #if defined (__AVR_HAVE_LPMX__)
 982:/usr/lib/avr/include/avr/pgmspace.h **** 
 983:/usr/lib/avr/include/avr/pgmspace.h **** #define __ELPM(addr)        __ELPM_enhanced__(addr)
 984:/usr/lib/avr/include/avr/pgmspace.h **** #define __ELPM_word(addr)   __ELPM_word_enhanced__(addr)
 985:/usr/lib/avr/include/avr/pgmspace.h **** #define __ELPM_dword(addr)  __ELPM_dword_enhanced__(addr)
 986:/usr/lib/avr/include/avr/pgmspace.h **** #define __ELPM_float(addr)  __ELPM_float_enhanced__(addr)
 987:/usr/lib/avr/include/avr/pgmspace.h **** 
 988:/usr/lib/avr/include/avr/pgmspace.h **** #else
 989:/usr/lib/avr/include/avr/pgmspace.h **** 
 990:/usr/lib/avr/include/avr/pgmspace.h **** #define __ELPM(addr)        __ELPM_classic__(addr)
 991:/usr/lib/avr/include/avr/pgmspace.h **** #define __ELPM_word(addr)   __ELPM_word_classic__(addr)
 992:/usr/lib/avr/include/avr/pgmspace.h **** #define __ELPM_dword(addr)  __ELPM_dword_classic__(addr)
 993:/usr/lib/avr/include/avr/pgmspace.h **** #define __ELPM_float(addr)  __ELPM_float_classic__(addr)
 994:/usr/lib/avr/include/avr/pgmspace.h **** 
 995:/usr/lib/avr/include/avr/pgmspace.h **** #endif  /* __AVR_HAVE_LPMX__ */
 996:/usr/lib/avr/include/avr/pgmspace.h **** 
 997:/usr/lib/avr/include/avr/pgmspace.h **** #endif  /* __AVR_HAVE_RAMPD__ */
 998:/usr/lib/avr/include/avr/pgmspace.h **** 
 999:/usr/lib/avr/include/avr/pgmspace.h **** #endif	/* !__DOXYGEN__ */
1000:/usr/lib/avr/include/avr/pgmspace.h **** 
1001:/usr/lib/avr/include/avr/pgmspace.h **** /** \ingroup avr_pgmspace
1002:/usr/lib/avr/include/avr/pgmspace.h ****     \def pgm_read_byte_far(address_long)
1003:/usr/lib/avr/include/avr/pgmspace.h ****     Read a byte from the program space with a 32-bit (far) address. 
1004:/usr/lib/avr/include/avr/pgmspace.h **** 
1005:/usr/lib/avr/include/avr/pgmspace.h ****     \note The address is a byte address. 
1006:/usr/lib/avr/include/avr/pgmspace.h ****     The address is in the program space. */
1007:/usr/lib/avr/include/avr/pgmspace.h **** 
1008:/usr/lib/avr/include/avr/pgmspace.h **** #define pgm_read_byte_far(address_long)  __ELPM((uint32_t)(address_long))
1009:/usr/lib/avr/include/avr/pgmspace.h **** 
1010:/usr/lib/avr/include/avr/pgmspace.h **** /** \ingroup avr_pgmspace
1011:/usr/lib/avr/include/avr/pgmspace.h ****     \def pgm_read_word_far(address_long)
1012:/usr/lib/avr/include/avr/pgmspace.h ****     Read a word from the program space with a 32-bit (far) address. 
1013:/usr/lib/avr/include/avr/pgmspace.h **** 
1014:/usr/lib/avr/include/avr/pgmspace.h ****     \note The address is a byte address.
1015:/usr/lib/avr/include/avr/pgmspace.h ****     The address is in the program space. */
1016:/usr/lib/avr/include/avr/pgmspace.h **** 
1017:/usr/lib/avr/include/avr/pgmspace.h **** #define pgm_read_word_far(address_long)  __ELPM_word((uint32_t)(address_long))
1018:/usr/lib/avr/include/avr/pgmspace.h **** 
1019:/usr/lib/avr/include/avr/pgmspace.h **** /** \ingroup avr_pgmspace
1020:/usr/lib/avr/include/avr/pgmspace.h ****     \def pgm_read_dword_far(address_long)
1021:/usr/lib/avr/include/avr/pgmspace.h ****     Read a double word from the program space with a 32-bit (far) address. 
1022:/usr/lib/avr/include/avr/pgmspace.h **** 
1023:/usr/lib/avr/include/avr/pgmspace.h ****     \note The address is a byte address.
1024:/usr/lib/avr/include/avr/pgmspace.h ****     The address is in the program space. */
1025:/usr/lib/avr/include/avr/pgmspace.h **** 
1026:/usr/lib/avr/include/avr/pgmspace.h **** #define pgm_read_dword_far(address_long) __ELPM_dword((uint32_t)(address_long))
1027:/usr/lib/avr/include/avr/pgmspace.h **** 
1028:/usr/lib/avr/include/avr/pgmspace.h **** /** \ingroup avr_pgmspace
1029:/usr/lib/avr/include/avr/pgmspace.h ****     \def pgm_read_float_far(address_long)
1030:/usr/lib/avr/include/avr/pgmspace.h ****     Read a float from the program space with a 32-bit (far) address. 
1031:/usr/lib/avr/include/avr/pgmspace.h **** 
1032:/usr/lib/avr/include/avr/pgmspace.h ****     \note The address is a byte address.
1033:/usr/lib/avr/include/avr/pgmspace.h ****     The address is in the program space. */
1034:/usr/lib/avr/include/avr/pgmspace.h **** 
1035:/usr/lib/avr/include/avr/pgmspace.h **** #define pgm_read_float_far(address_long) __ELPM_float((uint32_t)(address_long))
1036:/usr/lib/avr/include/avr/pgmspace.h **** 
1037:/usr/lib/avr/include/avr/pgmspace.h **** /** \ingroup avr_pgmspace
1038:/usr/lib/avr/include/avr/pgmspace.h ****     \def pgm_read_ptr_far(address_long)
1039:/usr/lib/avr/include/avr/pgmspace.h ****     Read a pointer from the program space with a 32-bit (far) address. 
1040:/usr/lib/avr/include/avr/pgmspace.h **** 
1041:/usr/lib/avr/include/avr/pgmspace.h ****     \note The address is a byte address.
1042:/usr/lib/avr/include/avr/pgmspace.h ****     The address is in the program space. */
1043:/usr/lib/avr/include/avr/pgmspace.h **** 
1044:/usr/lib/avr/include/avr/pgmspace.h **** #define pgm_read_ptr_far(address_long) (void*)__ELPM_word((uint32_t)(address_long))
1045:/usr/lib/avr/include/avr/pgmspace.h **** 
1046:/usr/lib/avr/include/avr/pgmspace.h **** #endif /* RAMPZ or __DOXYGEN__ */
1047:/usr/lib/avr/include/avr/pgmspace.h **** 
1048:/usr/lib/avr/include/avr/pgmspace.h **** /** \ingroup avr_pgmspace
1049:/usr/lib/avr/include/avr/pgmspace.h ****     \def pgm_read_byte(address_short)
1050:/usr/lib/avr/include/avr/pgmspace.h ****     Read a byte from the program space with a 16-bit (near) address. 
1051:/usr/lib/avr/include/avr/pgmspace.h **** 
1052:/usr/lib/avr/include/avr/pgmspace.h ****     \note The address is a byte address. 
1053:/usr/lib/avr/include/avr/pgmspace.h ****     The address is in the program space. */
1054:/usr/lib/avr/include/avr/pgmspace.h **** 
1055:/usr/lib/avr/include/avr/pgmspace.h **** #define pgm_read_byte(address_short)    pgm_read_byte_near(address_short)
1056:/usr/lib/avr/include/avr/pgmspace.h **** 
1057:/usr/lib/avr/include/avr/pgmspace.h **** /** \ingroup avr_pgmspace
1058:/usr/lib/avr/include/avr/pgmspace.h ****     \def pgm_read_word(address_short)
1059:/usr/lib/avr/include/avr/pgmspace.h ****     Read a word from the program space with a 16-bit (near) address. 
1060:/usr/lib/avr/include/avr/pgmspace.h **** 
1061:/usr/lib/avr/include/avr/pgmspace.h ****     \note The address is a byte address. 
1062:/usr/lib/avr/include/avr/pgmspace.h ****     The address is in the program space. */
1063:/usr/lib/avr/include/avr/pgmspace.h **** 
1064:/usr/lib/avr/include/avr/pgmspace.h **** #define pgm_read_word(address_short)    pgm_read_word_near(address_short)
1065:/usr/lib/avr/include/avr/pgmspace.h **** 
1066:/usr/lib/avr/include/avr/pgmspace.h **** /** \ingroup avr_pgmspace
1067:/usr/lib/avr/include/avr/pgmspace.h ****     \def pgm_read_dword(address_short)
1068:/usr/lib/avr/include/avr/pgmspace.h ****     Read a double word from the program space with a 16-bit (near) address. 
1069:/usr/lib/avr/include/avr/pgmspace.h **** 
1070:/usr/lib/avr/include/avr/pgmspace.h ****     \note The address is a byte address. 
1071:/usr/lib/avr/include/avr/pgmspace.h ****     The address is in the program space. */
1072:/usr/lib/avr/include/avr/pgmspace.h **** 
1073:/usr/lib/avr/include/avr/pgmspace.h **** #define pgm_read_dword(address_short)   pgm_read_dword_near(address_short)
1074:/usr/lib/avr/include/avr/pgmspace.h **** 
1075:/usr/lib/avr/include/avr/pgmspace.h **** /** \ingroup avr_pgmspace
1076:/usr/lib/avr/include/avr/pgmspace.h ****     \def pgm_read_float(address_short)
1077:/usr/lib/avr/include/avr/pgmspace.h ****     Read a float from the program space with a 16-bit (near) address. 
1078:/usr/lib/avr/include/avr/pgmspace.h **** 
1079:/usr/lib/avr/include/avr/pgmspace.h ****     \note The address is a byte address. 
1080:/usr/lib/avr/include/avr/pgmspace.h ****     The address is in the program space. */
1081:/usr/lib/avr/include/avr/pgmspace.h **** 
1082:/usr/lib/avr/include/avr/pgmspace.h **** #define pgm_read_float(address_short)   pgm_read_float_near(address_short)
1083:/usr/lib/avr/include/avr/pgmspace.h **** 
1084:/usr/lib/avr/include/avr/pgmspace.h **** /** \ingroup avr_pgmspace
1085:/usr/lib/avr/include/avr/pgmspace.h ****     \def pgm_read_ptr(address_short)
1086:/usr/lib/avr/include/avr/pgmspace.h ****     Read a pointer from the program space with a 16-bit (near) address. 
1087:/usr/lib/avr/include/avr/pgmspace.h **** 
1088:/usr/lib/avr/include/avr/pgmspace.h ****     \note The address is a byte address. 
1089:/usr/lib/avr/include/avr/pgmspace.h ****     The address is in the program space. */
1090:/usr/lib/avr/include/avr/pgmspace.h **** 
1091:/usr/lib/avr/include/avr/pgmspace.h **** #define pgm_read_ptr(address_short)     pgm_read_ptr_near(address_short)
1092:/usr/lib/avr/include/avr/pgmspace.h **** 
1093:/usr/lib/avr/include/avr/pgmspace.h **** /** \ingroup avr_pgmspace
1094:/usr/lib/avr/include/avr/pgmspace.h ****     \def pgm_get_far_address(var)
1095:/usr/lib/avr/include/avr/pgmspace.h **** 
1096:/usr/lib/avr/include/avr/pgmspace.h ****    This macro facilitates the obtention of a 32 bit "far" pointer (only 24 bits
1097:/usr/lib/avr/include/avr/pgmspace.h ****    used) to data even passed the 64KB limit for the 16 bit ordinary pointer. It
1098:/usr/lib/avr/include/avr/pgmspace.h ****    is similar to the '&' operator, with some limitations.
1099:/usr/lib/avr/include/avr/pgmspace.h **** 
1100:/usr/lib/avr/include/avr/pgmspace.h ****    Comments:
1101:/usr/lib/avr/include/avr/pgmspace.h **** 
1102:/usr/lib/avr/include/avr/pgmspace.h ****    - The overhead is minimal and it's mainly due to the 32 bit size operation.
1103:/usr/lib/avr/include/avr/pgmspace.h **** 
1104:/usr/lib/avr/include/avr/pgmspace.h ****    - 24 bit sizes guarantees the code compatibility for use in future devices.
1105:/usr/lib/avr/include/avr/pgmspace.h **** 
1106:/usr/lib/avr/include/avr/pgmspace.h ****    - hh8() is an undocumented feature but seems to give the third significant byte
1107:/usr/lib/avr/include/avr/pgmspace.h ****      of a 32 bit data and accepts symbols, complementing the functionality of hi8()
1108:/usr/lib/avr/include/avr/pgmspace.h ****      and lo8(). There is not an equivalent assembler function to get the high
1109:/usr/lib/avr/include/avr/pgmspace.h ****      significant byte.
1110:/usr/lib/avr/include/avr/pgmspace.h **** 
1111:/usr/lib/avr/include/avr/pgmspace.h ****    - 'var' has to be resolved at linking time as an existing symbol, i.e, a simple
1112:/usr/lib/avr/include/avr/pgmspace.h ****      type variable name, an array name (not an indexed element of the array, if the
1113:/usr/lib/avr/include/avr/pgmspace.h ****      index is a constant the compiler does not complain but fails to get the address
1114:/usr/lib/avr/include/avr/pgmspace.h ****      if optimization is enabled), a struct name or a struct field name, a function
1115:/usr/lib/avr/include/avr/pgmspace.h ****      identifier, a linker defined identifier,...
1116:/usr/lib/avr/include/avr/pgmspace.h **** 
1117:/usr/lib/avr/include/avr/pgmspace.h ****    - The returned value is the identifier's VMA (virtual memory address) determined
1118:/usr/lib/avr/include/avr/pgmspace.h ****      by the linker and falls in the corresponding memory region. The AVR Harvard
1119:/usr/lib/avr/include/avr/pgmspace.h ****      architecture requires non overlapping VMA areas for the multiple address spaces
1120:/usr/lib/avr/include/avr/pgmspace.h ****      in the processor: Flash ROM, RAM, and EEPROM. Typical offset for this are
1121:/usr/lib/avr/include/avr/pgmspace.h ****      0x00000000, 0x00800xx0, and 0x00810000 respectively, derived from the linker
1122:/usr/lib/avr/include/avr/pgmspace.h ****      script used and linker options. The value returned can be seen then as a
1123:/usr/lib/avr/include/avr/pgmspace.h ****      universal pointer.
1124:/usr/lib/avr/include/avr/pgmspace.h **** */
1125:/usr/lib/avr/include/avr/pgmspace.h **** 
1126:/usr/lib/avr/include/avr/pgmspace.h **** #define pgm_get_far_address(var)                          \
1127:/usr/lib/avr/include/avr/pgmspace.h **** ({                                                    \
1128:/usr/lib/avr/include/avr/pgmspace.h **** 	uint_farptr_t tmp;                                \
1129:/usr/lib/avr/include/avr/pgmspace.h ****                                                       \
1130:/usr/lib/avr/include/avr/pgmspace.h **** 	__asm__ __volatile__(                             \
1131:/usr/lib/avr/include/avr/pgmspace.h ****                                                       \
1132:/usr/lib/avr/include/avr/pgmspace.h **** 			"ldi	%A0, lo8(%1)"           "\n\t"    \
1133:/usr/lib/avr/include/avr/pgmspace.h **** 			"ldi	%B0, hi8(%1)"           "\n\t"    \
1134:/usr/lib/avr/include/avr/pgmspace.h **** 			"ldi	%C0, hh8(%1)"           "\n\t"    \
1135:/usr/lib/avr/include/avr/pgmspace.h **** 			"clr	%D0"                    "\n\t"    \
1136:/usr/lib/avr/include/avr/pgmspace.h **** 		:                                             \
1137:/usr/lib/avr/include/avr/pgmspace.h **** 			"=d" (tmp)                                \
1138:/usr/lib/avr/include/avr/pgmspace.h **** 		:                                             \
1139:/usr/lib/avr/include/avr/pgmspace.h **** 			"p"  (&(var))                             \
1140:/usr/lib/avr/include/avr/pgmspace.h **** 	);                                                \
1141:/usr/lib/avr/include/avr/pgmspace.h **** 	tmp;                                              \
1142:/usr/lib/avr/include/avr/pgmspace.h **** })
1143:/usr/lib/avr/include/avr/pgmspace.h **** 
1144:/usr/lib/avr/include/avr/pgmspace.h **** 
1145:/usr/lib/avr/include/avr/pgmspace.h **** 
1146:/usr/lib/avr/include/avr/pgmspace.h **** /** \ingroup avr_pgmspace
1147:/usr/lib/avr/include/avr/pgmspace.h ****     \fn const void * memchr_P(const void *s, int val, size_t len)
1148:/usr/lib/avr/include/avr/pgmspace.h ****     \brief Scan flash memory for a character.
1149:/usr/lib/avr/include/avr/pgmspace.h **** 
1150:/usr/lib/avr/include/avr/pgmspace.h ****     The memchr_P() function scans the first \p len bytes of the flash
1151:/usr/lib/avr/include/avr/pgmspace.h ****     memory area pointed to by \p s for the character \p val.  The first
1152:/usr/lib/avr/include/avr/pgmspace.h ****     byte to match \p val (interpreted as an unsigned character) stops
1153:/usr/lib/avr/include/avr/pgmspace.h ****     the operation.
1154:/usr/lib/avr/include/avr/pgmspace.h **** 
1155:/usr/lib/avr/include/avr/pgmspace.h ****     \return The memchr_P() function returns a pointer to the matching
1156:/usr/lib/avr/include/avr/pgmspace.h ****     byte or \c NULL if the character does not occur in the given memory
1157:/usr/lib/avr/include/avr/pgmspace.h ****     area.	*/
1158:/usr/lib/avr/include/avr/pgmspace.h **** extern const void * memchr_P(const void *, int __val, size_t __len) __ATTR_CONST__;
1159:/usr/lib/avr/include/avr/pgmspace.h **** 
1160:/usr/lib/avr/include/avr/pgmspace.h **** /** \ingroup avr_pgmspace
1161:/usr/lib/avr/include/avr/pgmspace.h ****     \fn int memcmp_P(const void *s1, const void *s2, size_t len)
1162:/usr/lib/avr/include/avr/pgmspace.h ****     \brief Compare memory areas
1163:/usr/lib/avr/include/avr/pgmspace.h **** 
1164:/usr/lib/avr/include/avr/pgmspace.h ****     The memcmp_P() function compares the first \p len bytes of the memory
1165:/usr/lib/avr/include/avr/pgmspace.h ****     areas \p s1 and flash \p s2. The comparision is performed using unsigned
1166:/usr/lib/avr/include/avr/pgmspace.h ****     char operations.
1167:/usr/lib/avr/include/avr/pgmspace.h **** 
1168:/usr/lib/avr/include/avr/pgmspace.h ****     \returns The memcmp_P() function returns an integer less than, equal
1169:/usr/lib/avr/include/avr/pgmspace.h ****     to, or greater than zero if the first \p len bytes of \p s1 is found,
1170:/usr/lib/avr/include/avr/pgmspace.h ****     respectively, to be less than, to match, or be greater than the first
1171:/usr/lib/avr/include/avr/pgmspace.h ****     \p len bytes of \p s2.	*/
1172:/usr/lib/avr/include/avr/pgmspace.h **** extern int memcmp_P(const void *, const void *, size_t) __ATTR_PURE__;
1173:/usr/lib/avr/include/avr/pgmspace.h **** 
1174:/usr/lib/avr/include/avr/pgmspace.h **** /** \ingroup avr_pgmspace
1175:/usr/lib/avr/include/avr/pgmspace.h ****     \fn void *memccpy_P (void *dest, const void *src, int val, size_t len)
1176:/usr/lib/avr/include/avr/pgmspace.h **** 
1177:/usr/lib/avr/include/avr/pgmspace.h ****     This function is similar to memccpy() except that \p src is pointer
1178:/usr/lib/avr/include/avr/pgmspace.h ****     to a string in program space.	*/
1179:/usr/lib/avr/include/avr/pgmspace.h **** extern void *memccpy_P(void *, const void *, int __val, size_t);
1180:/usr/lib/avr/include/avr/pgmspace.h **** 
1181:/usr/lib/avr/include/avr/pgmspace.h **** /** \ingroup avr_pgmspace
1182:/usr/lib/avr/include/avr/pgmspace.h ****     \fn void *memcpy_P(void *dest, const void *src, size_t n)
1183:/usr/lib/avr/include/avr/pgmspace.h **** 
1184:/usr/lib/avr/include/avr/pgmspace.h ****     The memcpy_P() function is similar to memcpy(), except the src string
1185:/usr/lib/avr/include/avr/pgmspace.h ****     resides in program space.
1186:/usr/lib/avr/include/avr/pgmspace.h **** 
1187:/usr/lib/avr/include/avr/pgmspace.h ****     \returns The memcpy_P() function returns a pointer to dest.  */
1188:/usr/lib/avr/include/avr/pgmspace.h **** extern void *memcpy_P(void *, const void *, size_t);
1189:/usr/lib/avr/include/avr/pgmspace.h **** 
1190:/usr/lib/avr/include/avr/pgmspace.h **** /** \ingroup avr_pgmspace
1191:/usr/lib/avr/include/avr/pgmspace.h ****     \fn void *memmem_P(const void *s1, size_t len1, const void *s2, size_t len2)
1192:/usr/lib/avr/include/avr/pgmspace.h **** 
1193:/usr/lib/avr/include/avr/pgmspace.h ****     The memmem_P() function is similar to memmem() except that \p s2 is
1194:/usr/lib/avr/include/avr/pgmspace.h ****     pointer to a string in program space.	*/
1195:/usr/lib/avr/include/avr/pgmspace.h **** extern void *memmem_P(const void *, size_t, const void *, size_t) __ATTR_PURE__;
1196:/usr/lib/avr/include/avr/pgmspace.h **** 
1197:/usr/lib/avr/include/avr/pgmspace.h **** /** \ingroup avr_pgmspace
1198:/usr/lib/avr/include/avr/pgmspace.h ****     \fn const void +memrchr_P(const void *src, int val, size_t len)
1199:/usr/lib/avr/include/avr/pgmspace.h **** 
1200:/usr/lib/avr/include/avr/pgmspace.h ****     The memrchr_P() function is like the memchr_P() function, except
1201:/usr/lib/avr/include/avr/pgmspace.h ****     that it searches backwards from the end of the \p len bytes pointed
1202:/usr/lib/avr/include/avr/pgmspace.h ****     to by \p src instead of forwards from the front. (Glibc, GNU extension.)
1203:/usr/lib/avr/include/avr/pgmspace.h **** 
1204:/usr/lib/avr/include/avr/pgmspace.h ****     \return The memrchr_P() function returns a pointer to the matching
1205:/usr/lib/avr/include/avr/pgmspace.h ****     byte or \c NULL if the character does not occur in the given memory
1206:/usr/lib/avr/include/avr/pgmspace.h ****     area.	*/
1207:/usr/lib/avr/include/avr/pgmspace.h **** extern const void * memrchr_P(const void *, int __val, size_t __len) __ATTR_CONST__;
1208:/usr/lib/avr/include/avr/pgmspace.h **** 
1209:/usr/lib/avr/include/avr/pgmspace.h **** /** \ingroup avr_pgmspace
1210:/usr/lib/avr/include/avr/pgmspace.h ****     \fn char *strcat_P(char *dest, const char *src)
1211:/usr/lib/avr/include/avr/pgmspace.h **** 
1212:/usr/lib/avr/include/avr/pgmspace.h ****     The strcat_P() function is similar to strcat() except that the \e src
1213:/usr/lib/avr/include/avr/pgmspace.h ****     string must be located in program space (flash).
1214:/usr/lib/avr/include/avr/pgmspace.h **** 
1215:/usr/lib/avr/include/avr/pgmspace.h ****     \returns The strcat() function returns a pointer to the resulting string
1216:/usr/lib/avr/include/avr/pgmspace.h ****     \e dest. */
1217:/usr/lib/avr/include/avr/pgmspace.h **** extern char *strcat_P(char *, const char *);
1218:/usr/lib/avr/include/avr/pgmspace.h **** 
1219:/usr/lib/avr/include/avr/pgmspace.h **** /** \ingroup avr_pgmspace
1220:/usr/lib/avr/include/avr/pgmspace.h ****     \fn const char *strchr_P(const char *s, int val)
1221:/usr/lib/avr/include/avr/pgmspace.h ****     \brief Locate character in program space string.
1222:/usr/lib/avr/include/avr/pgmspace.h **** 
1223:/usr/lib/avr/include/avr/pgmspace.h ****     The strchr_P() function locates the first occurrence of \p val
1224:/usr/lib/avr/include/avr/pgmspace.h ****     (converted to a char) in the string pointed to by \p s in program
1225:/usr/lib/avr/include/avr/pgmspace.h ****     space. The terminating null character is considered to be part of
1226:/usr/lib/avr/include/avr/pgmspace.h ****     the string.
1227:/usr/lib/avr/include/avr/pgmspace.h **** 
1228:/usr/lib/avr/include/avr/pgmspace.h ****     The strchr_P() function is similar to strchr() except that \p s is
1229:/usr/lib/avr/include/avr/pgmspace.h ****     pointer to a string in program space.
1230:/usr/lib/avr/include/avr/pgmspace.h **** 
1231:/usr/lib/avr/include/avr/pgmspace.h ****     \returns The strchr_P() function returns a pointer to the matched
1232:/usr/lib/avr/include/avr/pgmspace.h ****     character or \c NULL if the character is not found. */
1233:/usr/lib/avr/include/avr/pgmspace.h **** extern const char * strchr_P(const char *, int __val) __ATTR_CONST__;
1234:/usr/lib/avr/include/avr/pgmspace.h **** 
1235:/usr/lib/avr/include/avr/pgmspace.h **** /** \ingroup avr_pgmspace
1236:/usr/lib/avr/include/avr/pgmspace.h ****     \fn const char *strchrnul_P(const char *s, int c)
1237:/usr/lib/avr/include/avr/pgmspace.h **** 
1238:/usr/lib/avr/include/avr/pgmspace.h ****     The strchrnul_P() function is like strchr_P() except that if \p c is
1239:/usr/lib/avr/include/avr/pgmspace.h ****     not found in \p s, then it returns a pointer to the null byte at the
1240:/usr/lib/avr/include/avr/pgmspace.h ****     end of \p s, rather than \c NULL. (Glibc, GNU extension.)
1241:/usr/lib/avr/include/avr/pgmspace.h **** 
1242:/usr/lib/avr/include/avr/pgmspace.h ****     \return The strchrnul_P() function returns a pointer to the matched
1243:/usr/lib/avr/include/avr/pgmspace.h ****     character, or a pointer to the null byte at the end of \p s (i.e.,
1244:/usr/lib/avr/include/avr/pgmspace.h ****     \c s+strlen(s)) if the character is not found.	*/
1245:/usr/lib/avr/include/avr/pgmspace.h **** extern const char * strchrnul_P(const char *, int __val) __ATTR_CONST__;
1246:/usr/lib/avr/include/avr/pgmspace.h **** 
1247:/usr/lib/avr/include/avr/pgmspace.h **** /** \ingroup avr_pgmspace
1248:/usr/lib/avr/include/avr/pgmspace.h ****     \fn int strcmp_P(const char *s1, const char *s2)
1249:/usr/lib/avr/include/avr/pgmspace.h **** 
1250:/usr/lib/avr/include/avr/pgmspace.h ****     The strcmp_P() function is similar to strcmp() except that \p s2 is
1251:/usr/lib/avr/include/avr/pgmspace.h ****     pointer to a string in program space.
1252:/usr/lib/avr/include/avr/pgmspace.h **** 
1253:/usr/lib/avr/include/avr/pgmspace.h ****     \returns The strcmp_P() function returns an integer less than, equal
1254:/usr/lib/avr/include/avr/pgmspace.h ****     to, or greater than zero if \p s1 is found, respectively, to be less
1255:/usr/lib/avr/include/avr/pgmspace.h ****     than, to match, or be greater than \p s2. A consequence of the
1256:/usr/lib/avr/include/avr/pgmspace.h ****     ordering used by strcmp_P() is that if \p s1 is an initial substring
1257:/usr/lib/avr/include/avr/pgmspace.h ****     of \p s2, then \p s1 is considered to be "less than" \p s2. */
1258:/usr/lib/avr/include/avr/pgmspace.h **** extern int strcmp_P(const char *, const char *) __ATTR_PURE__;
1259:/usr/lib/avr/include/avr/pgmspace.h **** 
1260:/usr/lib/avr/include/avr/pgmspace.h **** /** \ingroup avr_pgmspace
1261:/usr/lib/avr/include/avr/pgmspace.h ****     \fn char *strcpy_P(char *dest, const char *src)
1262:/usr/lib/avr/include/avr/pgmspace.h **** 
1263:/usr/lib/avr/include/avr/pgmspace.h ****     The strcpy_P() function is similar to strcpy() except that src is a
1264:/usr/lib/avr/include/avr/pgmspace.h ****     pointer to a string in program space.
1265:/usr/lib/avr/include/avr/pgmspace.h **** 
1266:/usr/lib/avr/include/avr/pgmspace.h ****     \returns The strcpy_P() function returns a pointer to the destination
1267:/usr/lib/avr/include/avr/pgmspace.h ****     string dest. */
1268:/usr/lib/avr/include/avr/pgmspace.h **** extern char *strcpy_P(char *, const char *);
1269:/usr/lib/avr/include/avr/pgmspace.h **** 
1270:/usr/lib/avr/include/avr/pgmspace.h **** /** \ingroup avr_pgmspace
1271:/usr/lib/avr/include/avr/pgmspace.h ****     \fn int strcasecmp_P(const char *s1, const char *s2)
1272:/usr/lib/avr/include/avr/pgmspace.h ****     \brief Compare two strings ignoring case.
1273:/usr/lib/avr/include/avr/pgmspace.h **** 
1274:/usr/lib/avr/include/avr/pgmspace.h ****     The strcasecmp_P() function compares the two strings \p s1 and \p s2,
1275:/usr/lib/avr/include/avr/pgmspace.h ****     ignoring the case of the characters.
1276:/usr/lib/avr/include/avr/pgmspace.h **** 
1277:/usr/lib/avr/include/avr/pgmspace.h ****     \param s1 A pointer to a string in the devices SRAM.
1278:/usr/lib/avr/include/avr/pgmspace.h ****     \param s2 A pointer to a string in the devices Flash.
1279:/usr/lib/avr/include/avr/pgmspace.h **** 
1280:/usr/lib/avr/include/avr/pgmspace.h ****     \returns The strcasecmp_P() function returns an integer less than,
1281:/usr/lib/avr/include/avr/pgmspace.h ****     equal to, or greater than zero if \p s1 is found, respectively, to
1282:/usr/lib/avr/include/avr/pgmspace.h ****     be less than, to match, or be greater than \p s2. A consequence of
1283:/usr/lib/avr/include/avr/pgmspace.h ****     the ordering used by strcasecmp_P() is that if \p s1 is an initial
1284:/usr/lib/avr/include/avr/pgmspace.h ****     substring of \p s2, then \p s1 is considered to be "less than" \p s2. */
1285:/usr/lib/avr/include/avr/pgmspace.h **** extern int strcasecmp_P(const char *, const char *) __ATTR_PURE__;
1286:/usr/lib/avr/include/avr/pgmspace.h **** 
1287:/usr/lib/avr/include/avr/pgmspace.h **** /** \ingroup avr_pgmspace
1288:/usr/lib/avr/include/avr/pgmspace.h ****     \fn char *strcasestr_P(const char *s1, const char *s2)
1289:/usr/lib/avr/include/avr/pgmspace.h **** 
1290:/usr/lib/avr/include/avr/pgmspace.h ****     This funtion is similar to strcasestr() except that \p s2 is pointer
1291:/usr/lib/avr/include/avr/pgmspace.h ****     to a string in program space.	*/
1292:/usr/lib/avr/include/avr/pgmspace.h **** extern char *strcasestr_P(const char *, const char *) __ATTR_PURE__;
1293:/usr/lib/avr/include/avr/pgmspace.h **** 
1294:/usr/lib/avr/include/avr/pgmspace.h **** /** \ingroup avr_pgmspace
1295:/usr/lib/avr/include/avr/pgmspace.h ****     \fn size_t strcspn_P(const char *s, const char *reject)
1296:/usr/lib/avr/include/avr/pgmspace.h **** 
1297:/usr/lib/avr/include/avr/pgmspace.h ****     The strcspn_P() function calculates the length of the initial segment
1298:/usr/lib/avr/include/avr/pgmspace.h ****     of \p s which consists entirely of characters not in \p reject. This
1299:/usr/lib/avr/include/avr/pgmspace.h ****     function is similar to strcspn() except that \p reject is a pointer
1300:/usr/lib/avr/include/avr/pgmspace.h ****     to a string in program space.
1301:/usr/lib/avr/include/avr/pgmspace.h **** 
1302:/usr/lib/avr/include/avr/pgmspace.h ****     \return The strcspn_P() function returns the number of characters in
1303:/usr/lib/avr/include/avr/pgmspace.h ****     the initial segment of \p s which are not in the string \p reject.
1304:/usr/lib/avr/include/avr/pgmspace.h ****     The terminating zero is not considered as a part of string.	*/
1305:/usr/lib/avr/include/avr/pgmspace.h **** extern size_t strcspn_P(const char *__s, const char * __reject) __ATTR_PURE__;
1306:/usr/lib/avr/include/avr/pgmspace.h **** 
1307:/usr/lib/avr/include/avr/pgmspace.h **** /** \ingroup avr_pgmspace
1308:/usr/lib/avr/include/avr/pgmspace.h ****     \fn size_t strlcat_P(char *dst, const char *src, size_t siz)
1309:/usr/lib/avr/include/avr/pgmspace.h ****     \brief Concatenate two strings.
1310:/usr/lib/avr/include/avr/pgmspace.h **** 
1311:/usr/lib/avr/include/avr/pgmspace.h ****     The strlcat_P() function is similar to strlcat(), except that the \p src
1312:/usr/lib/avr/include/avr/pgmspace.h ****     string must be located in program space (flash).
1313:/usr/lib/avr/include/avr/pgmspace.h **** 
1314:/usr/lib/avr/include/avr/pgmspace.h ****     Appends \p src to string \p dst of size \p siz (unlike strncat(),
1315:/usr/lib/avr/include/avr/pgmspace.h ****     \p siz is the full size of \p dst, not space left).  At most \p siz-1
1316:/usr/lib/avr/include/avr/pgmspace.h ****     characters will be copied.  Always NULL terminates (unless \p siz <=
1317:/usr/lib/avr/include/avr/pgmspace.h ****     \p strlen(dst)).
1318:/usr/lib/avr/include/avr/pgmspace.h **** 
1319:/usr/lib/avr/include/avr/pgmspace.h ****     \returns The strlcat_P() function returns strlen(src) + MIN(siz,
1320:/usr/lib/avr/include/avr/pgmspace.h ****     strlen(initial dst)).  If retval >= siz, truncation occurred.	*/
1321:/usr/lib/avr/include/avr/pgmspace.h **** extern size_t strlcat_P (char *, const char *, size_t );
1322:/usr/lib/avr/include/avr/pgmspace.h **** 
1323:/usr/lib/avr/include/avr/pgmspace.h **** /** \ingroup avr_pgmspace
1324:/usr/lib/avr/include/avr/pgmspace.h ****     \fn size_t strlcpy_P(char *dst, const char *src, size_t siz)
1325:/usr/lib/avr/include/avr/pgmspace.h ****     \brief Copy a string from progmem to RAM.
1326:/usr/lib/avr/include/avr/pgmspace.h **** 
1327:/usr/lib/avr/include/avr/pgmspace.h ****     Copy \p src to string \p dst of size \p siz.  At most \p siz-1
1328:/usr/lib/avr/include/avr/pgmspace.h ****     characters will be copied.  Always NULL terminates (unless \p siz == 0).
1329:/usr/lib/avr/include/avr/pgmspace.h ****     The strlcpy_P() function is similar to strlcpy() except that the
1330:/usr/lib/avr/include/avr/pgmspace.h ****     \p src is pointer to a string in memory space.
1331:/usr/lib/avr/include/avr/pgmspace.h **** 
1332:/usr/lib/avr/include/avr/pgmspace.h ****     \returns The strlcpy_P() function returns strlen(src). If
1333:/usr/lib/avr/include/avr/pgmspace.h ****     retval >= siz, truncation occurred.  */
1334:/usr/lib/avr/include/avr/pgmspace.h **** extern size_t strlcpy_P (char *, const char *, size_t );
1335:/usr/lib/avr/include/avr/pgmspace.h **** 
1336:/usr/lib/avr/include/avr/pgmspace.h **** /** \ingroup avr_pgmspace
1337:/usr/lib/avr/include/avr/pgmspace.h ****     \fn size_t strnlen_P(const char *src, size_t len)
1338:/usr/lib/avr/include/avr/pgmspace.h ****     \brief Determine the length of a fixed-size string.
1339:/usr/lib/avr/include/avr/pgmspace.h **** 
1340:/usr/lib/avr/include/avr/pgmspace.h ****     The strnlen_P() function is similar to strnlen(), except that \c src is a
1341:/usr/lib/avr/include/avr/pgmspace.h ****     pointer to a string in program space.
1342:/usr/lib/avr/include/avr/pgmspace.h **** 
1343:/usr/lib/avr/include/avr/pgmspace.h ****     \returns The strnlen_P function returns strlen_P(src), if that is less than
1344:/usr/lib/avr/include/avr/pgmspace.h ****     \c len, or \c len if there is no '\\0' character among the first \c len
1345:/usr/lib/avr/include/avr/pgmspace.h ****     characters pointed to by \c src. */
1346:/usr/lib/avr/include/avr/pgmspace.h **** extern size_t strnlen_P(const char *, size_t) __ATTR_CONST__; /* program memory can't change */
1347:/usr/lib/avr/include/avr/pgmspace.h **** 
1348:/usr/lib/avr/include/avr/pgmspace.h **** /** \ingroup avr_pgmspace
1349:/usr/lib/avr/include/avr/pgmspace.h ****     \fn int strncmp_P(const char *s1, const char *s2, size_t n)
1350:/usr/lib/avr/include/avr/pgmspace.h **** 
1351:/usr/lib/avr/include/avr/pgmspace.h ****     The strncmp_P() function is similar to strcmp_P() except it only compares
1352:/usr/lib/avr/include/avr/pgmspace.h ****     the first (at most) n characters of s1 and s2.
1353:/usr/lib/avr/include/avr/pgmspace.h **** 
1354:/usr/lib/avr/include/avr/pgmspace.h ****     \returns The strncmp_P() function returns an integer less than, equal to,
1355:/usr/lib/avr/include/avr/pgmspace.h ****     or greater than zero if s1 (or the first n bytes thereof) is found,
1356:/usr/lib/avr/include/avr/pgmspace.h ****     respectively, to be less than, to match, or be greater than s2.  */
1357:/usr/lib/avr/include/avr/pgmspace.h **** extern int strncmp_P(const char *, const char *, size_t) __ATTR_PURE__;
1358:/usr/lib/avr/include/avr/pgmspace.h **** 
1359:/usr/lib/avr/include/avr/pgmspace.h **** /** \ingroup avr_pgmspace
1360:/usr/lib/avr/include/avr/pgmspace.h ****     \fn int strncasecmp_P(const char *s1, const char *s2, size_t n)
1361:/usr/lib/avr/include/avr/pgmspace.h ****     \brief Compare two strings ignoring case.
1362:/usr/lib/avr/include/avr/pgmspace.h **** 
1363:/usr/lib/avr/include/avr/pgmspace.h ****     The strncasecmp_P() function is similar to strcasecmp_P(), except it
1364:/usr/lib/avr/include/avr/pgmspace.h ****     only compares the first \p n characters of \p s1.
1365:/usr/lib/avr/include/avr/pgmspace.h **** 
1366:/usr/lib/avr/include/avr/pgmspace.h ****     \param s1 A pointer to a string in the devices SRAM.
1367:/usr/lib/avr/include/avr/pgmspace.h ****     \param s2 A pointer to a string in the devices Flash.
1368:/usr/lib/avr/include/avr/pgmspace.h ****     \param n The maximum number of bytes to compare.
1369:/usr/lib/avr/include/avr/pgmspace.h **** 
1370:/usr/lib/avr/include/avr/pgmspace.h ****     \returns The strncasecmp_P() function returns an integer less than,
1371:/usr/lib/avr/include/avr/pgmspace.h ****     equal to, or greater than zero if \p s1 (or the first \p n bytes
1372:/usr/lib/avr/include/avr/pgmspace.h ****     thereof) is found, respectively, to be less than, to match, or be
1373:/usr/lib/avr/include/avr/pgmspace.h ****     greater than \p s2. A consequence of the ordering used by
1374:/usr/lib/avr/include/avr/pgmspace.h ****     strncasecmp_P() is that if \p s1 is an initial substring of \p s2,
1375:/usr/lib/avr/include/avr/pgmspace.h ****     then \p s1 is considered to be "less than" \p s2.  */
1376:/usr/lib/avr/include/avr/pgmspace.h **** extern int strncasecmp_P(const char *, const char *, size_t) __ATTR_PURE__;
1377:/usr/lib/avr/include/avr/pgmspace.h **** 
1378:/usr/lib/avr/include/avr/pgmspace.h **** /** \ingroup avr_pgmspace
1379:/usr/lib/avr/include/avr/pgmspace.h ****     \fn char *strncat_P(char *dest, const char *src, size_t len)
1380:/usr/lib/avr/include/avr/pgmspace.h ****     \brief Concatenate two strings.
1381:/usr/lib/avr/include/avr/pgmspace.h **** 
1382:/usr/lib/avr/include/avr/pgmspace.h ****     The strncat_P() function is similar to strncat(), except that the \e src
1383:/usr/lib/avr/include/avr/pgmspace.h ****     string must be located in program space (flash).
1384:/usr/lib/avr/include/avr/pgmspace.h **** 
1385:/usr/lib/avr/include/avr/pgmspace.h ****     \returns The strncat_P() function returns a pointer to the resulting string
1386:/usr/lib/avr/include/avr/pgmspace.h ****     dest.  */
1387:/usr/lib/avr/include/avr/pgmspace.h **** extern char *strncat_P(char *, const char *, size_t);
1388:/usr/lib/avr/include/avr/pgmspace.h **** 
1389:/usr/lib/avr/include/avr/pgmspace.h **** /** \ingroup avr_pgmspace
1390:/usr/lib/avr/include/avr/pgmspace.h ****     \fn char *strncpy_P(char *dest, const char *src, size_t n)
1391:/usr/lib/avr/include/avr/pgmspace.h **** 
1392:/usr/lib/avr/include/avr/pgmspace.h ****     The strncpy_P() function is similar to strcpy_P() except that not more
1393:/usr/lib/avr/include/avr/pgmspace.h ****     than n bytes of src are copied.  Thus, if there is no null byte among the
1394:/usr/lib/avr/include/avr/pgmspace.h ****     first n bytes of src, the result will not be null-terminated.
1395:/usr/lib/avr/include/avr/pgmspace.h **** 
1396:/usr/lib/avr/include/avr/pgmspace.h ****     In the case where the length of src is less than that of n, the remainder
1397:/usr/lib/avr/include/avr/pgmspace.h ****     of dest will be padded with nulls.
1398:/usr/lib/avr/include/avr/pgmspace.h **** 
1399:/usr/lib/avr/include/avr/pgmspace.h ****     \returns The strncpy_P() function returns a pointer to the destination
1400:/usr/lib/avr/include/avr/pgmspace.h ****     string dest.  */
1401:/usr/lib/avr/include/avr/pgmspace.h **** extern char *strncpy_P(char *, const char *, size_t);
1402:/usr/lib/avr/include/avr/pgmspace.h **** 
1403:/usr/lib/avr/include/avr/pgmspace.h **** /** \ingroup avr_pgmspace
1404:/usr/lib/avr/include/avr/pgmspace.h ****     \fn char *strpbrk_P(const char *s, const char *accept)
1405:/usr/lib/avr/include/avr/pgmspace.h **** 
1406:/usr/lib/avr/include/avr/pgmspace.h ****     The strpbrk_P() function locates the first occurrence in the string
1407:/usr/lib/avr/include/avr/pgmspace.h ****     \p s of any of the characters in the flash string \p accept. This
1408:/usr/lib/avr/include/avr/pgmspace.h ****     function is similar to strpbrk() except that \p accept is a pointer
1409:/usr/lib/avr/include/avr/pgmspace.h ****     to a string in program space.
1410:/usr/lib/avr/include/avr/pgmspace.h **** 
1411:/usr/lib/avr/include/avr/pgmspace.h ****     \return  The strpbrk_P() function returns a pointer to the character
1412:/usr/lib/avr/include/avr/pgmspace.h ****     in \p s that matches one of the characters in \p accept, or \c NULL
1413:/usr/lib/avr/include/avr/pgmspace.h ****     if no such character is found. The terminating zero is not considered
1414:/usr/lib/avr/include/avr/pgmspace.h ****     as a part of string: if one or both args are empty, the result will
1415:/usr/lib/avr/include/avr/pgmspace.h ****     \c NULL. */
1416:/usr/lib/avr/include/avr/pgmspace.h **** extern char *strpbrk_P(const char *__s, const char * __accept) __ATTR_PURE__;
1417:/usr/lib/avr/include/avr/pgmspace.h **** 
1418:/usr/lib/avr/include/avr/pgmspace.h **** /** \ingroup avr_pgmspace
1419:/usr/lib/avr/include/avr/pgmspace.h ****     \fn const char *strrchr_P(const char *s, int val)
1420:/usr/lib/avr/include/avr/pgmspace.h ****     \brief Locate character in string.
1421:/usr/lib/avr/include/avr/pgmspace.h **** 
1422:/usr/lib/avr/include/avr/pgmspace.h ****     The strrchr_P() function returns a pointer to the last occurrence of
1423:/usr/lib/avr/include/avr/pgmspace.h ****     the character \p val in the flash string \p s.
1424:/usr/lib/avr/include/avr/pgmspace.h **** 
1425:/usr/lib/avr/include/avr/pgmspace.h ****     \return The strrchr_P() function returns a pointer to the matched
1426:/usr/lib/avr/include/avr/pgmspace.h ****     character or \c NULL if the character is not found. */
1427:/usr/lib/avr/include/avr/pgmspace.h **** extern const char * strrchr_P(const char *, int __val) __ATTR_CONST__;
1428:/usr/lib/avr/include/avr/pgmspace.h **** 
1429:/usr/lib/avr/include/avr/pgmspace.h **** /** \ingroup avr_pgmspace
1430:/usr/lib/avr/include/avr/pgmspace.h ****     \fn char *strsep_P(char **sp, const char *delim)
1431:/usr/lib/avr/include/avr/pgmspace.h ****     \brief Parse a string into tokens.
1432:/usr/lib/avr/include/avr/pgmspace.h **** 
1433:/usr/lib/avr/include/avr/pgmspace.h ****     The strsep_P() function locates, in the string referenced by \p *sp,
1434:/usr/lib/avr/include/avr/pgmspace.h ****     the first occurrence of any character in the string \p delim (or the
1435:/usr/lib/avr/include/avr/pgmspace.h ****     terminating '\\0' character) and replaces it with a '\\0'.  The
1436:/usr/lib/avr/include/avr/pgmspace.h ****     location of the next character after the delimiter character (or \c
1437:/usr/lib/avr/include/avr/pgmspace.h ****     NULL, if the end of the string was reached) is stored in \p *sp. An
1438:/usr/lib/avr/include/avr/pgmspace.h ****     ``empty'' field, i.e. one caused by two adjacent delimiter
1439:/usr/lib/avr/include/avr/pgmspace.h ****     characters, can be detected by comparing the location referenced by
1440:/usr/lib/avr/include/avr/pgmspace.h ****     the pointer returned in \p *sp to '\\0'. This function is similar to
1441:/usr/lib/avr/include/avr/pgmspace.h ****     strsep() except that \p delim is a pointer to a string in program
1442:/usr/lib/avr/include/avr/pgmspace.h ****     space.
1443:/usr/lib/avr/include/avr/pgmspace.h **** 
1444:/usr/lib/avr/include/avr/pgmspace.h ****     \return The strsep_P() function returns a pointer to the original
1445:/usr/lib/avr/include/avr/pgmspace.h ****     value of \p *sp. If \p *sp is initially \c NULL, strsep_P() returns
1446:/usr/lib/avr/include/avr/pgmspace.h ****     \c NULL. */
1447:/usr/lib/avr/include/avr/pgmspace.h **** extern char *strsep_P(char **__sp, const char * __delim);
1448:/usr/lib/avr/include/avr/pgmspace.h **** 
1449:/usr/lib/avr/include/avr/pgmspace.h **** /** \ingroup avr_pgmspace
1450:/usr/lib/avr/include/avr/pgmspace.h ****     \fn size_t strspn_P(const char *s, const char *accept)
1451:/usr/lib/avr/include/avr/pgmspace.h **** 
1452:/usr/lib/avr/include/avr/pgmspace.h ****     The strspn_P() function calculates the length of the initial segment
1453:/usr/lib/avr/include/avr/pgmspace.h ****     of \p s which consists entirely of characters in \p accept. This
1454:/usr/lib/avr/include/avr/pgmspace.h ****     function is similar to strspn() except that \p accept is a pointer
1455:/usr/lib/avr/include/avr/pgmspace.h ****     to a string in program space.
1456:/usr/lib/avr/include/avr/pgmspace.h **** 
1457:/usr/lib/avr/include/avr/pgmspace.h ****     \return  The strspn_P() function returns the number of characters in
1458:/usr/lib/avr/include/avr/pgmspace.h ****     the initial segment of \p s which consist only of characters from \p
1459:/usr/lib/avr/include/avr/pgmspace.h ****     accept. The terminating zero is not considered as a part of string.	*/
1460:/usr/lib/avr/include/avr/pgmspace.h **** extern size_t strspn_P(const char *__s, const char * __accept) __ATTR_PURE__;
1461:/usr/lib/avr/include/avr/pgmspace.h **** 
1462:/usr/lib/avr/include/avr/pgmspace.h **** /** \ingroup avr_pgmspace
1463:/usr/lib/avr/include/avr/pgmspace.h ****     \fn char *strstr_P(const char *s1, const char *s2)
1464:/usr/lib/avr/include/avr/pgmspace.h ****     \brief Locate a substring.
1465:/usr/lib/avr/include/avr/pgmspace.h **** 
1466:/usr/lib/avr/include/avr/pgmspace.h ****     The strstr_P() function finds the first occurrence of the substring
1467:/usr/lib/avr/include/avr/pgmspace.h ****     \p s2 in the string \p s1.  The terminating '\\0' characters are not
1468:/usr/lib/avr/include/avr/pgmspace.h ****     compared. The strstr_P() function is similar to strstr() except that
1469:/usr/lib/avr/include/avr/pgmspace.h ****     \p s2 is pointer to a string in program space.
1470:/usr/lib/avr/include/avr/pgmspace.h **** 
1471:/usr/lib/avr/include/avr/pgmspace.h ****     \returns The strstr_P() function returns a pointer to the beginning
1472:/usr/lib/avr/include/avr/pgmspace.h ****     of the substring, or NULL if the substring is not found. If \p s2
1473:/usr/lib/avr/include/avr/pgmspace.h ****     points to a string of zero length, the function returns \p s1. */
1474:/usr/lib/avr/include/avr/pgmspace.h **** extern char *strstr_P(const char *, const char *) __ATTR_PURE__;
1475:/usr/lib/avr/include/avr/pgmspace.h **** 
1476:/usr/lib/avr/include/avr/pgmspace.h **** /** \ingroup avr_pgmspace
1477:/usr/lib/avr/include/avr/pgmspace.h ****     \fn char *strtok_P(char *s, const char * delim)
1478:/usr/lib/avr/include/avr/pgmspace.h ****     \brief Parses the string into tokens.
1479:/usr/lib/avr/include/avr/pgmspace.h **** 
1480:/usr/lib/avr/include/avr/pgmspace.h ****     strtok_P() parses the string \p s into tokens. The first call to
1481:/usr/lib/avr/include/avr/pgmspace.h ****     strtok_P() should have \p s as its first argument. Subsequent calls
1482:/usr/lib/avr/include/avr/pgmspace.h ****     should have the first argument set to NULL. If a token ends with a
1483:/usr/lib/avr/include/avr/pgmspace.h ****     delimiter, this delimiting character is overwritten with a '\\0' and a
1484:/usr/lib/avr/include/avr/pgmspace.h ****     pointer to the next character is saved for the next call to strtok_P().
1485:/usr/lib/avr/include/avr/pgmspace.h ****     The delimiter string \p delim may be different for each call.
1486:/usr/lib/avr/include/avr/pgmspace.h **** 
1487:/usr/lib/avr/include/avr/pgmspace.h ****     The strtok_P() function is similar to strtok() except that \p delim
1488:/usr/lib/avr/include/avr/pgmspace.h ****     is pointer to a string in program space.
1489:/usr/lib/avr/include/avr/pgmspace.h **** 
1490:/usr/lib/avr/include/avr/pgmspace.h ****     \returns The strtok_P() function returns a pointer to the next token or
1491:/usr/lib/avr/include/avr/pgmspace.h ****     NULL when no more tokens are found.
1492:/usr/lib/avr/include/avr/pgmspace.h **** 
1493:/usr/lib/avr/include/avr/pgmspace.h ****     \note strtok_P() is NOT reentrant. For a reentrant version of this
1494:/usr/lib/avr/include/avr/pgmspace.h ****     function see strtok_rP().
1495:/usr/lib/avr/include/avr/pgmspace.h ****  */
1496:/usr/lib/avr/include/avr/pgmspace.h **** extern char *strtok_P(char *__s, const char * __delim);
1497:/usr/lib/avr/include/avr/pgmspace.h **** 
1498:/usr/lib/avr/include/avr/pgmspace.h **** /** \ingroup avr_pgmspace
1499:/usr/lib/avr/include/avr/pgmspace.h ****     \fn char *strtok_rP (char *string, const char *delim, char **last)
1500:/usr/lib/avr/include/avr/pgmspace.h ****     \brief Parses string into tokens.
1501:/usr/lib/avr/include/avr/pgmspace.h **** 
1502:/usr/lib/avr/include/avr/pgmspace.h ****     The strtok_rP() function parses \p string into tokens. The first call to
1503:/usr/lib/avr/include/avr/pgmspace.h ****     strtok_rP() should have string as its first argument. Subsequent calls
1504:/usr/lib/avr/include/avr/pgmspace.h ****     should have the first argument set to NULL. If a token ends with a
1505:/usr/lib/avr/include/avr/pgmspace.h ****     delimiter, this delimiting character is overwritten with a '\\0' and a
1506:/usr/lib/avr/include/avr/pgmspace.h ****     pointer to the next character is saved for the next call to strtok_rP().
1507:/usr/lib/avr/include/avr/pgmspace.h ****     The delimiter string \p delim may be different for each call. \p last is
1508:/usr/lib/avr/include/avr/pgmspace.h ****     a user allocated char* pointer. It must be the same while parsing the
1509:/usr/lib/avr/include/avr/pgmspace.h ****     same string. strtok_rP() is a reentrant version of strtok_P().
1510:/usr/lib/avr/include/avr/pgmspace.h **** 
1511:/usr/lib/avr/include/avr/pgmspace.h ****     The strtok_rP() function is similar to strtok_r() except that \p delim
1512:/usr/lib/avr/include/avr/pgmspace.h ****     is pointer to a string in program space.
1513:/usr/lib/avr/include/avr/pgmspace.h **** 
1514:/usr/lib/avr/include/avr/pgmspace.h ****     \returns The strtok_rP() function returns a pointer to the next token or
1515:/usr/lib/avr/include/avr/pgmspace.h ****     NULL when no more tokens are found. */
1516:/usr/lib/avr/include/avr/pgmspace.h **** extern char *strtok_rP(char *__s, const char * __delim, char **__last);
1517:/usr/lib/avr/include/avr/pgmspace.h **** 
1518:/usr/lib/avr/include/avr/pgmspace.h **** /** \ingroup avr_pgmspace
1519:/usr/lib/avr/include/avr/pgmspace.h ****     \fn size_t strlen_PF(uint_farptr_t s)
1520:/usr/lib/avr/include/avr/pgmspace.h ****     \brief Obtain the length of a string
1521:/usr/lib/avr/include/avr/pgmspace.h **** 
1522:/usr/lib/avr/include/avr/pgmspace.h ****     The strlen_PF() function is similar to strlen(), except that \e s is a
1523:/usr/lib/avr/include/avr/pgmspace.h ****     far pointer to a string in program space.
1524:/usr/lib/avr/include/avr/pgmspace.h **** 
1525:/usr/lib/avr/include/avr/pgmspace.h ****     \param s A far pointer to the string in flash
1526:/usr/lib/avr/include/avr/pgmspace.h **** 
1527:/usr/lib/avr/include/avr/pgmspace.h ****     \returns The strlen_PF() function returns the number of characters in
1528:/usr/lib/avr/include/avr/pgmspace.h ****     \e s. The contents of RAMPZ SFR are undefined when the function returns. */
1529:/usr/lib/avr/include/avr/pgmspace.h **** extern size_t strlen_PF(uint_farptr_t src) __ATTR_CONST__; /* program memory can't change */
1530:/usr/lib/avr/include/avr/pgmspace.h **** 
1531:/usr/lib/avr/include/avr/pgmspace.h **** /** \ingroup avr_pgmspace
1532:/usr/lib/avr/include/avr/pgmspace.h ****     \fn size_t strnlen_PF(uint_farptr_t s, size_t len)
1533:/usr/lib/avr/include/avr/pgmspace.h ****     \brief Determine the length of a fixed-size string
1534:/usr/lib/avr/include/avr/pgmspace.h **** 
1535:/usr/lib/avr/include/avr/pgmspace.h ****     The strnlen_PF() function is similar to strnlen(), except that \e s is a
1536:/usr/lib/avr/include/avr/pgmspace.h ****     far pointer to a string in program space.
1537:/usr/lib/avr/include/avr/pgmspace.h **** 
1538:/usr/lib/avr/include/avr/pgmspace.h ****     \param s A far pointer to the string in Flash
1539:/usr/lib/avr/include/avr/pgmspace.h ****     \param len The maximum number of length to return
1540:/usr/lib/avr/include/avr/pgmspace.h **** 
1541:/usr/lib/avr/include/avr/pgmspace.h ****     \returns The strnlen_PF function returns strlen_P(\e s), if that is less
1542:/usr/lib/avr/include/avr/pgmspace.h ****     than \e len, or \e len if there is no '\\0' character among the first \e
1543:/usr/lib/avr/include/avr/pgmspace.h ****     len characters pointed to by \e s. The contents of RAMPZ SFR are
1544:/usr/lib/avr/include/avr/pgmspace.h ****     undefined when the function returns. */
1545:/usr/lib/avr/include/avr/pgmspace.h **** extern size_t strnlen_PF(uint_farptr_t src, size_t len) __ATTR_CONST__; /* program memory can't cha
1546:/usr/lib/avr/include/avr/pgmspace.h **** 
1547:/usr/lib/avr/include/avr/pgmspace.h **** /** \ingroup avr_pgmspace
1548:/usr/lib/avr/include/avr/pgmspace.h ****     \fn void *memcpy_PF(void *dest, uint_farptr_t src, size_t n)
1549:/usr/lib/avr/include/avr/pgmspace.h ****     \brief Copy a memory block from flash to SRAM
1550:/usr/lib/avr/include/avr/pgmspace.h **** 
1551:/usr/lib/avr/include/avr/pgmspace.h ****     The memcpy_PF() function is similar to memcpy(), except the data
1552:/usr/lib/avr/include/avr/pgmspace.h ****     is copied from the program space and is addressed using a far pointer.
1553:/usr/lib/avr/include/avr/pgmspace.h **** 
1554:/usr/lib/avr/include/avr/pgmspace.h ****     \param dest A pointer to the destination buffer
1555:/usr/lib/avr/include/avr/pgmspace.h ****     \param src A far pointer to the origin of data in flash memory
1556:/usr/lib/avr/include/avr/pgmspace.h ****     \param n The number of bytes to be copied
1557:/usr/lib/avr/include/avr/pgmspace.h **** 
1558:/usr/lib/avr/include/avr/pgmspace.h ****     \returns The memcpy_PF() function returns a pointer to \e dst. The contents
1559:/usr/lib/avr/include/avr/pgmspace.h ****     of RAMPZ SFR are undefined when the function returns. */
1560:/usr/lib/avr/include/avr/pgmspace.h **** extern void *memcpy_PF(void *dest, uint_farptr_t src, size_t len);
1561:/usr/lib/avr/include/avr/pgmspace.h **** 
1562:/usr/lib/avr/include/avr/pgmspace.h **** /** \ingroup avr_pgmspace
1563:/usr/lib/avr/include/avr/pgmspace.h ****     \fn char *strcpy_PF(char *dst, uint_farptr_t src)
1564:/usr/lib/avr/include/avr/pgmspace.h ****     \brief Duplicate a string
1565:/usr/lib/avr/include/avr/pgmspace.h **** 
1566:/usr/lib/avr/include/avr/pgmspace.h ****     The strcpy_PF() function is similar to strcpy() except that \e src is a far
1567:/usr/lib/avr/include/avr/pgmspace.h ****     pointer to a string in program space.
1568:/usr/lib/avr/include/avr/pgmspace.h **** 
1569:/usr/lib/avr/include/avr/pgmspace.h ****     \param dst A pointer to the destination string in SRAM
1570:/usr/lib/avr/include/avr/pgmspace.h ****     \param src A far pointer to the source string in Flash
1571:/usr/lib/avr/include/avr/pgmspace.h **** 
1572:/usr/lib/avr/include/avr/pgmspace.h ****     \returns The strcpy_PF() function returns a pointer to the destination
1573:/usr/lib/avr/include/avr/pgmspace.h ****     string \e dst. The contents of RAMPZ SFR are undefined when the funcion
1574:/usr/lib/avr/include/avr/pgmspace.h ****     returns. */
1575:/usr/lib/avr/include/avr/pgmspace.h **** extern char *strcpy_PF(char *dest, uint_farptr_t src);
1576:/usr/lib/avr/include/avr/pgmspace.h **** 
1577:/usr/lib/avr/include/avr/pgmspace.h **** /** \ingroup avr_pgmspace
1578:/usr/lib/avr/include/avr/pgmspace.h ****     \fn char *strncpy_PF(char *dst, uint_farptr_t src, size_t n)
1579:/usr/lib/avr/include/avr/pgmspace.h ****     \brief Duplicate a string until a limited length
1580:/usr/lib/avr/include/avr/pgmspace.h **** 
1581:/usr/lib/avr/include/avr/pgmspace.h ****     The strncpy_PF() function is similar to strcpy_PF() except that not more
1582:/usr/lib/avr/include/avr/pgmspace.h ****     than \e n bytes of \e src are copied.  Thus, if there is no null byte among
1583:/usr/lib/avr/include/avr/pgmspace.h ****     the first \e n bytes of \e src, the result will not be null-terminated.
1584:/usr/lib/avr/include/avr/pgmspace.h **** 
1585:/usr/lib/avr/include/avr/pgmspace.h ****     In the case where the length of \e src is less than that of \e n, the
1586:/usr/lib/avr/include/avr/pgmspace.h ****     remainder of \e dst will be padded with nulls.
1587:/usr/lib/avr/include/avr/pgmspace.h **** 
1588:/usr/lib/avr/include/avr/pgmspace.h ****     \param dst A pointer to the destination string in SRAM
1589:/usr/lib/avr/include/avr/pgmspace.h ****     \param src A far pointer to the source string in Flash
1590:/usr/lib/avr/include/avr/pgmspace.h ****     \param n The maximum number of bytes to copy
1591:/usr/lib/avr/include/avr/pgmspace.h **** 
1592:/usr/lib/avr/include/avr/pgmspace.h ****     \returns The strncpy_PF() function returns a pointer to the destination
1593:/usr/lib/avr/include/avr/pgmspace.h ****     string \e dst. The contents of RAMPZ SFR are undefined when the function
1594:/usr/lib/avr/include/avr/pgmspace.h ****     returns. */
1595:/usr/lib/avr/include/avr/pgmspace.h **** extern char *strncpy_PF(char *dest, uint_farptr_t src, size_t len);
1596:/usr/lib/avr/include/avr/pgmspace.h **** 
1597:/usr/lib/avr/include/avr/pgmspace.h **** /** \ingroup avr_pgmspace
1598:/usr/lib/avr/include/avr/pgmspace.h ****     \fn char *strcat_PF(char *dst, uint_farptr_t src)
1599:/usr/lib/avr/include/avr/pgmspace.h ****     \brief Concatenates two strings
1600:/usr/lib/avr/include/avr/pgmspace.h **** 
1601:/usr/lib/avr/include/avr/pgmspace.h ****     The strcat_PF() function is similar to strcat() except that the \e src
1602:/usr/lib/avr/include/avr/pgmspace.h ****     string must be located in program space (flash) and is addressed using
1603:/usr/lib/avr/include/avr/pgmspace.h ****     a far pointer
1604:/usr/lib/avr/include/avr/pgmspace.h **** 
1605:/usr/lib/avr/include/avr/pgmspace.h ****     \param dst A pointer to the destination string in SRAM
1606:/usr/lib/avr/include/avr/pgmspace.h ****     \param src A far pointer to the string to be appended in Flash
1607:/usr/lib/avr/include/avr/pgmspace.h **** 
1608:/usr/lib/avr/include/avr/pgmspace.h ****     \returns The strcat_PF() function returns a pointer to the resulting
1609:/usr/lib/avr/include/avr/pgmspace.h ****     string \e dst. The contents of RAMPZ SFR are undefined when the function
1610:/usr/lib/avr/include/avr/pgmspace.h ****     returns */
1611:/usr/lib/avr/include/avr/pgmspace.h **** extern char *strcat_PF(char *dest, uint_farptr_t src);
1612:/usr/lib/avr/include/avr/pgmspace.h **** 
1613:/usr/lib/avr/include/avr/pgmspace.h **** /** \ingroup avr_pgmspace
1614:/usr/lib/avr/include/avr/pgmspace.h ****     \fn size_t strlcat_PF(char *dst, uint_farptr_t src, size_t n)
1615:/usr/lib/avr/include/avr/pgmspace.h ****     \brief Concatenate two strings
1616:/usr/lib/avr/include/avr/pgmspace.h **** 
1617:/usr/lib/avr/include/avr/pgmspace.h ****     The strlcat_PF() function is similar to strlcat(), except that the \e src
1618:/usr/lib/avr/include/avr/pgmspace.h ****     string must be located in program space (flash) and is addressed using
1619:/usr/lib/avr/include/avr/pgmspace.h ****     a far pointer.
1620:/usr/lib/avr/include/avr/pgmspace.h **** 
1621:/usr/lib/avr/include/avr/pgmspace.h ****     Appends src to string dst of size \e n (unlike strncat(), \e n is the
1622:/usr/lib/avr/include/avr/pgmspace.h ****     full size of \e dst, not space left).  At most \e n-1 characters
1623:/usr/lib/avr/include/avr/pgmspace.h ****     will be copied.  Always NULL terminates (unless \e n <= strlen(\e dst)).
1624:/usr/lib/avr/include/avr/pgmspace.h **** 
1625:/usr/lib/avr/include/avr/pgmspace.h ****     \param dst A pointer to the destination string in SRAM
1626:/usr/lib/avr/include/avr/pgmspace.h ****     \param src A far pointer to the source string in Flash
1627:/usr/lib/avr/include/avr/pgmspace.h ****     \param n The total number of bytes allocated to the destination string
1628:/usr/lib/avr/include/avr/pgmspace.h **** 
1629:/usr/lib/avr/include/avr/pgmspace.h ****     \returns The strlcat_PF() function returns strlen(\e src) + MIN(\e n,
1630:/usr/lib/avr/include/avr/pgmspace.h ****     strlen(initial \e dst)).  If retval >= \e n, truncation occurred. The
1631:/usr/lib/avr/include/avr/pgmspace.h ****     contents of RAMPZ SFR are undefined when the funcion returns. */
1632:/usr/lib/avr/include/avr/pgmspace.h **** extern size_t strlcat_PF(char *dst, uint_farptr_t src, size_t siz);
1633:/usr/lib/avr/include/avr/pgmspace.h **** 
1634:/usr/lib/avr/include/avr/pgmspace.h **** /** \ingroup avr_pgmspace
1635:/usr/lib/avr/include/avr/pgmspace.h ****     \fn char *strncat_PF(char *dst, uint_farptr_t src, size_t n)
1636:/usr/lib/avr/include/avr/pgmspace.h ****     \brief Concatenate two strings
1637:/usr/lib/avr/include/avr/pgmspace.h **** 
1638:/usr/lib/avr/include/avr/pgmspace.h ****     The strncat_PF() function is similar to strncat(), except that the \e src
1639:/usr/lib/avr/include/avr/pgmspace.h ****     string must be located in program space (flash) and is addressed using a
1640:/usr/lib/avr/include/avr/pgmspace.h ****     far pointer.
1641:/usr/lib/avr/include/avr/pgmspace.h **** 
1642:/usr/lib/avr/include/avr/pgmspace.h ****     \param dst A pointer to the destination string in SRAM
1643:/usr/lib/avr/include/avr/pgmspace.h ****     \param src A far pointer to the source string in Flash
1644:/usr/lib/avr/include/avr/pgmspace.h ****     \param n The maximum number of bytes to append
1645:/usr/lib/avr/include/avr/pgmspace.h **** 
1646:/usr/lib/avr/include/avr/pgmspace.h ****     \returns The strncat_PF() function returns a pointer to the resulting
1647:/usr/lib/avr/include/avr/pgmspace.h ****     string \e dst. The contents of RAMPZ SFR are undefined when the function
1648:/usr/lib/avr/include/avr/pgmspace.h ****     returns. */
1649:/usr/lib/avr/include/avr/pgmspace.h **** extern char *strncat_PF(char *dest, uint_farptr_t src, size_t len);
1650:/usr/lib/avr/include/avr/pgmspace.h **** 
1651:/usr/lib/avr/include/avr/pgmspace.h **** /** \ingroup avr_pgmspace
1652:/usr/lib/avr/include/avr/pgmspace.h ****     \fn int strcmp_PF(const char *s1, uint_farptr_t s2)
1653:/usr/lib/avr/include/avr/pgmspace.h ****     \brief Compares two strings
1654:/usr/lib/avr/include/avr/pgmspace.h **** 
1655:/usr/lib/avr/include/avr/pgmspace.h ****     The strcmp_PF() function is similar to strcmp() except that \e s2 is a far
1656:/usr/lib/avr/include/avr/pgmspace.h ****     pointer to a string in program space.
1657:/usr/lib/avr/include/avr/pgmspace.h **** 
1658:/usr/lib/avr/include/avr/pgmspace.h ****     \param s1 A pointer to the first string in SRAM
1659:/usr/lib/avr/include/avr/pgmspace.h ****     \param s2 A far pointer to the second string in Flash
1660:/usr/lib/avr/include/avr/pgmspace.h **** 
1661:/usr/lib/avr/include/avr/pgmspace.h ****     \returns The strcmp_PF() function returns an integer less than, equal to,
1662:/usr/lib/avr/include/avr/pgmspace.h ****     or greater than zero if \e s1 is found, respectively, to be less than, to
1663:/usr/lib/avr/include/avr/pgmspace.h ****     match, or be greater than \e s2. The contents of RAMPZ SFR are undefined
1664:/usr/lib/avr/include/avr/pgmspace.h ****     when the function returns. */
1665:/usr/lib/avr/include/avr/pgmspace.h **** extern int strcmp_PF(const char *s1, uint_farptr_t s2) __ATTR_PURE__;
1666:/usr/lib/avr/include/avr/pgmspace.h **** 
1667:/usr/lib/avr/include/avr/pgmspace.h **** /** \ingroup avr_pgmspace
1668:/usr/lib/avr/include/avr/pgmspace.h ****     \fn int strncmp_PF(const char *s1, uint_farptr_t s2, size_t n)
1669:/usr/lib/avr/include/avr/pgmspace.h ****     \brief Compare two strings with limited length
1670:/usr/lib/avr/include/avr/pgmspace.h **** 
1671:/usr/lib/avr/include/avr/pgmspace.h ****     The strncmp_PF() function is similar to strcmp_PF() except it only
1672:/usr/lib/avr/include/avr/pgmspace.h ****     compares the first (at most) \e n characters of \e s1 and \e s2.
1673:/usr/lib/avr/include/avr/pgmspace.h **** 
1674:/usr/lib/avr/include/avr/pgmspace.h ****     \param s1 A pointer to the first string in SRAM
1675:/usr/lib/avr/include/avr/pgmspace.h ****     \param s2 A far pointer to the second string in Flash
1676:/usr/lib/avr/include/avr/pgmspace.h ****     \param n The maximum number of bytes to compare
1677:/usr/lib/avr/include/avr/pgmspace.h **** 
1678:/usr/lib/avr/include/avr/pgmspace.h ****     \returns The strncmp_PF() function returns an integer less than, equal
1679:/usr/lib/avr/include/avr/pgmspace.h ****     to, or greater than zero if \e s1 (or the first \e n bytes thereof) is found,
1680:/usr/lib/avr/include/avr/pgmspace.h ****     respectively, to be less than, to match, or be greater than \e s2. The
1681:/usr/lib/avr/include/avr/pgmspace.h ****     contents of RAMPZ SFR are undefined when the function returns. */
1682:/usr/lib/avr/include/avr/pgmspace.h **** extern int strncmp_PF(const char *s1, uint_farptr_t s2, size_t n) __ATTR_PURE__;
1683:/usr/lib/avr/include/avr/pgmspace.h **** 
1684:/usr/lib/avr/include/avr/pgmspace.h **** /** \ingroup avr_pgmspace
1685:/usr/lib/avr/include/avr/pgmspace.h ****     \fn int strcasecmp_PF(const char *s1, uint_farptr_t s2)
1686:/usr/lib/avr/include/avr/pgmspace.h ****     \brief Compare two strings ignoring case
1687:/usr/lib/avr/include/avr/pgmspace.h **** 
1688:/usr/lib/avr/include/avr/pgmspace.h ****     The strcasecmp_PF() function compares the two strings \e s1 and \e s2, ignoring
1689:/usr/lib/avr/include/avr/pgmspace.h ****     the case of the characters.
1690:/usr/lib/avr/include/avr/pgmspace.h **** 
1691:/usr/lib/avr/include/avr/pgmspace.h ****     \param s1 A pointer to the first string in SRAM
1692:/usr/lib/avr/include/avr/pgmspace.h ****     \param s2 A far pointer to the second string in Flash
1693:/usr/lib/avr/include/avr/pgmspace.h **** 
1694:/usr/lib/avr/include/avr/pgmspace.h ****     \returns The strcasecmp_PF() function returns an integer less than, equal
1695:/usr/lib/avr/include/avr/pgmspace.h ****     to, or greater than zero if \e s1 is found, respectively, to be less than, to
1696:/usr/lib/avr/include/avr/pgmspace.h ****     match, or be greater than \e s2. The contents of RAMPZ SFR are undefined
1697:/usr/lib/avr/include/avr/pgmspace.h ****     when the function returns. */
1698:/usr/lib/avr/include/avr/pgmspace.h **** extern int strcasecmp_PF(const char *s1, uint_farptr_t s2) __ATTR_PURE__;
1699:/usr/lib/avr/include/avr/pgmspace.h **** 
1700:/usr/lib/avr/include/avr/pgmspace.h **** /** \ingroup avr_pgmspace
1701:/usr/lib/avr/include/avr/pgmspace.h ****     \fn int strncasecmp_PF(const char *s1, uint_farptr_t s2, size_t n)
1702:/usr/lib/avr/include/avr/pgmspace.h ****     \brief Compare two strings ignoring case
1703:/usr/lib/avr/include/avr/pgmspace.h **** 
1704:/usr/lib/avr/include/avr/pgmspace.h ****     The strncasecmp_PF() function is similar to strcasecmp_PF(), except it
1705:/usr/lib/avr/include/avr/pgmspace.h ****     only compares the first \e n characters of \e s1 and the string in flash is
1706:/usr/lib/avr/include/avr/pgmspace.h ****     addressed using a far pointer.
1707:/usr/lib/avr/include/avr/pgmspace.h **** 
1708:/usr/lib/avr/include/avr/pgmspace.h ****     \param s1 A pointer to a string in SRAM
1709:/usr/lib/avr/include/avr/pgmspace.h ****     \param s2 A far pointer to a string in Flash
1710:/usr/lib/avr/include/avr/pgmspace.h ****     \param n The maximum number of bytes to compare
1711:/usr/lib/avr/include/avr/pgmspace.h **** 
1712:/usr/lib/avr/include/avr/pgmspace.h ****     \returns The strncasecmp_PF() function returns an integer less than, equal
1713:/usr/lib/avr/include/avr/pgmspace.h ****     to, or greater than zero if \e s1 (or the first \e n bytes thereof) is found,
1714:/usr/lib/avr/include/avr/pgmspace.h ****     respectively, to be less than, to match, or be greater than \e s2. The
1715:/usr/lib/avr/include/avr/pgmspace.h ****     contents of RAMPZ SFR are undefined when the function returns.  */
1716:/usr/lib/avr/include/avr/pgmspace.h **** extern int strncasecmp_PF(const char *s1, uint_farptr_t s2, size_t n) __ATTR_PURE__;
1717:/usr/lib/avr/include/avr/pgmspace.h **** 
1718:/usr/lib/avr/include/avr/pgmspace.h **** /** \ingroup avr_pgmspace
1719:/usr/lib/avr/include/avr/pgmspace.h ****     \fn char *strstr_PF(const char *s1, uint_farptr_t s2)
1720:/usr/lib/avr/include/avr/pgmspace.h ****     \brief Locate a substring.
1721:/usr/lib/avr/include/avr/pgmspace.h **** 
1722:/usr/lib/avr/include/avr/pgmspace.h ****     The strstr_PF() function finds the first occurrence of the substring \c s2
1723:/usr/lib/avr/include/avr/pgmspace.h ****     in the string \c s1.  The terminating '\\0' characters are not
1724:/usr/lib/avr/include/avr/pgmspace.h ****     compared.
1725:/usr/lib/avr/include/avr/pgmspace.h ****     The strstr_PF() function is similar to strstr() except that \c s2 is a
1726:/usr/lib/avr/include/avr/pgmspace.h ****     far pointer to a string in program space.
1727:/usr/lib/avr/include/avr/pgmspace.h **** 
1728:/usr/lib/avr/include/avr/pgmspace.h ****     \returns The strstr_PF() function returns a pointer to the beginning of the
1729:/usr/lib/avr/include/avr/pgmspace.h ****     substring, or NULL if the substring is not found.
1730:/usr/lib/avr/include/avr/pgmspace.h ****     If \c s2 points to a string of zero length, the function returns \c s1. The
1731:/usr/lib/avr/include/avr/pgmspace.h ****     contents of RAMPZ SFR are undefined when the function returns. */
1732:/usr/lib/avr/include/avr/pgmspace.h **** extern char *strstr_PF(const char *s1, uint_farptr_t s2);
1733:/usr/lib/avr/include/avr/pgmspace.h **** 
1734:/usr/lib/avr/include/avr/pgmspace.h **** /** \ingroup avr_pgmspace
1735:/usr/lib/avr/include/avr/pgmspace.h ****     \fn size_t strlcpy_PF(char *dst, uint_farptr_t src, size_t siz)
1736:/usr/lib/avr/include/avr/pgmspace.h ****     \brief Copy a string from progmem to RAM.
1737:/usr/lib/avr/include/avr/pgmspace.h **** 
1738:/usr/lib/avr/include/avr/pgmspace.h ****     Copy src to string dst of size siz.  At most siz-1 characters will be
1739:/usr/lib/avr/include/avr/pgmspace.h ****     copied. Always NULL terminates (unless siz == 0).
1740:/usr/lib/avr/include/avr/pgmspace.h **** 
1741:/usr/lib/avr/include/avr/pgmspace.h ****     \returns The strlcpy_PF() function returns strlen(src). If retval >= siz,
1742:/usr/lib/avr/include/avr/pgmspace.h ****     truncation occurred.  The contents of RAMPZ SFR are undefined when the
1743:/usr/lib/avr/include/avr/pgmspace.h ****     function returns. */
1744:/usr/lib/avr/include/avr/pgmspace.h **** extern size_t strlcpy_PF(char *dst, uint_farptr_t src, size_t siz);
1745:/usr/lib/avr/include/avr/pgmspace.h **** 
1746:/usr/lib/avr/include/avr/pgmspace.h **** /** \ingroup avr_pgmspace
1747:/usr/lib/avr/include/avr/pgmspace.h ****     \fn int memcmp_PF(const void *s1, uint_farptr_t s2, size_t len)
1748:/usr/lib/avr/include/avr/pgmspace.h ****     \brief Compare memory areas
1749:/usr/lib/avr/include/avr/pgmspace.h **** 
1750:/usr/lib/avr/include/avr/pgmspace.h ****     The memcmp_PF() function compares the first \p len bytes of the memory
1751:/usr/lib/avr/include/avr/pgmspace.h ****     areas \p s1 and flash \p s2. The comparision is performed using unsigned
1752:/usr/lib/avr/include/avr/pgmspace.h ****     char operations. It is an equivalent of memcmp_P() function, except
1753:/usr/lib/avr/include/avr/pgmspace.h ****     that it is capable working on all FLASH including the exteded area
1754:/usr/lib/avr/include/avr/pgmspace.h ****     above 64kB.
1755:/usr/lib/avr/include/avr/pgmspace.h **** 
1756:/usr/lib/avr/include/avr/pgmspace.h ****     \returns The memcmp_PF() function returns an integer less than, equal
1757:/usr/lib/avr/include/avr/pgmspace.h ****     to, or greater than zero if the first \p len bytes of \p s1 is found,
1758:/usr/lib/avr/include/avr/pgmspace.h ****     respectively, to be less than, to match, or be greater than the first
1759:/usr/lib/avr/include/avr/pgmspace.h ****     \p len bytes of \p s2.  */
1760:/usr/lib/avr/include/avr/pgmspace.h **** extern int memcmp_PF(const void *, uint_farptr_t, size_t) __ATTR_PURE__;
1761:/usr/lib/avr/include/avr/pgmspace.h **** 
1762:/usr/lib/avr/include/avr/pgmspace.h **** #ifdef __DOXYGEN__
1763:/usr/lib/avr/include/avr/pgmspace.h **** /** \ingroup avr_pgmspace
1764:/usr/lib/avr/include/avr/pgmspace.h ****     \fn size_t strlen_P(const char *src)
1765:/usr/lib/avr/include/avr/pgmspace.h **** 
1766:/usr/lib/avr/include/avr/pgmspace.h ****     The strlen_P() function is similar to strlen(), except that src is a
1767:/usr/lib/avr/include/avr/pgmspace.h ****     pointer to a string in program space.
1768:/usr/lib/avr/include/avr/pgmspace.h **** 
1769:/usr/lib/avr/include/avr/pgmspace.h ****     \returns The strlen_P() function returns the number of characters in src.
1770:/usr/lib/avr/include/avr/pgmspace.h **** 
1771:/usr/lib/avr/include/avr/pgmspace.h ****     \note strlen_P() is implemented as an inline function in the avr/pgmspace.h
1772:/usr/lib/avr/include/avr/pgmspace.h ****     header file, which will check if the length of the string is a constant
1773:/usr/lib/avr/include/avr/pgmspace.h ****     and known at compile time. If it is not known at compile time, the macro
1774:/usr/lib/avr/include/avr/pgmspace.h ****     will issue a call to __strlen_P() which will then calculate the length
1775:/usr/lib/avr/include/avr/pgmspace.h ****     of the string as normal.
1776:/usr/lib/avr/include/avr/pgmspace.h **** */
1777:/usr/lib/avr/include/avr/pgmspace.h **** static inline size_t strlen_P(const char * s);
1778:/usr/lib/avr/include/avr/pgmspace.h **** #else
1779:/usr/lib/avr/include/avr/pgmspace.h **** extern size_t __strlen_P(const char *) __ATTR_CONST__;  /* internal helper function */
1780:/usr/lib/avr/include/avr/pgmspace.h **** __attribute__((__always_inline__)) static __inline__ size_t strlen_P(const char * s);
1781:/usr/lib/avr/include/avr/pgmspace.h **** static __inline__ size_t strlen_P(const char *s) {
1782:/usr/lib/avr/include/avr/pgmspace.h ****   return __builtin_constant_p(__builtin_strlen(s))
1783:/usr/lib/avr/include/avr/pgmspace.h ****      ? __builtin_strlen(s) : __strlen_P(s);
 1445               	.LM123:
 1446 0476 CB01      		movw r24,r22
 1447 0478 0E94 0000 		call __strlen_P
 1448               	.LBE79:
 1449               	.LBE78:
 1451               	.Ltext4:
 1453               	.LM124:
 1454 047c AC01      		movw r20,r24
 1455 047e B801      		movw r22,r16
 1456 0480 CE01      		movw r24,r28
 1457 0482 0E94 0000 		call _ZN6String4copyEPK19__FlashStringHelperj
 1458 0486 00C0      		rjmp .L51
 1459               	.L50:
 249:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	else invalidate();
 1461               	.LM125:
 1462 0488 0E94 0000 		call _ZN6String10invalidateEv
 1463               	.L51:
 250:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 
 251:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	return *this;
 252:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** }
 1465               	.LM126:
 1466 048c CE01      		movw r24,r28
 1467               	/* epilogue start */
 1468 048e DF91      		pop r29
 1469 0490 CF91      		pop r28
 1470 0492 1F91      		pop r17
 1471 0494 0F91      		pop r16
 1472 0496 0895      		ret
 1474               	.Lscope23:
 1476               		.stabd	78,0,0
 1480               	.global	_ZN6StringC2EPK19__FlashStringHelper
 1482               	_ZN6StringC2EPK19__FlashStringHelper:
 1483               		.stabd	46,0,0
  40:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** {
 1485               	.LM127:
 1486               	.LFBB24:
 1487               	/* prologue: function */
 1488               	/* frame size = 0 */
 1489               	/* stack size = 0 */
 1490               	.L__stack_usage = 0
 1491               	.LBB80:
 1492               	.LBB81:
 1493               	.LBB82:
 133:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	capacity = 0;
 1495               	.LM128:
 1496 0498 FC01      		movw r30,r24
 1497 049a 1182      		std Z+1,__zero_reg__
 1498 049c 1082      		st Z,__zero_reg__
 134:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	len = 0;
 1500               	.LM129:
 1501 049e 1382      		std Z+3,__zero_reg__
 1502 04a0 1282      		std Z+2,__zero_reg__
 135:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** }
 1504               	.LM130:
 1505 04a2 1582      		std Z+5,__zero_reg__
 1506 04a4 1482      		std Z+4,__zero_reg__
 1507               	.LBE82:
 1508               	.LBE81:
  43:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** }
 1510               	.LM131:
 1511 04a6 0C94 0000 		jmp _ZN6StringaSEPK19__FlashStringHelper
 1512               	.LBE80:
 1514               	.Lscope24:
 1516               		.stabd	78,0,0
 1517               	.global	_ZN6StringC1EPK19__FlashStringHelper
 1518               		.set	_ZN6StringC1EPK19__FlashStringHelper,_ZN6StringC2EPK19__FlashStringHelper
 1523               	.global	_ZN6String6concatEPKcj
 1525               	_ZN6String6concatEPKcj:
 1526               		.stabd	46,0,0
 253:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 
 254:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** /*********************************************/
 255:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** /*  concat                                   */
 256:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** /*********************************************/
 257:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 
 258:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** unsigned char String::concat(const String &s)
 259:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** {
 260:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	return concat(s.buffer, s.len);
 261:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** }
 262:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 
 263:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** unsigned char String::concat(const char *cstr, unsigned int length)
 264:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** {
 1528               	.LM132:
 1529               	.LFBB25:
 1530 04aa EF92      		push r14
 1531 04ac FF92      		push r15
 1532 04ae 0F93      		push r16
 1533 04b0 1F93      		push r17
 1534 04b2 CF93      		push r28
 1535 04b4 DF93      		push r29
 1536               	/* prologue: function */
 1537               	/* frame size = 0 */
 1538               	/* stack size = 6 */
 1539               	.L__stack_usage = 6
 265:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	unsigned int newlen = len + length;
 266:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	if (!cstr) return 0;
 1541               	.LM133:
 1542 04b6 6115      		cp r22,__zero_reg__
 1543 04b8 7105      		cpc r23,__zero_reg__
 1544 04ba 01F4      		brne .L54
 1545               	.L56:
 1546 04bc 80E0      		ldi r24,0
 1547 04be 00C0      		rjmp .L55
 1548               	.L54:
 267:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	if (length == 0) return 1;
 1550               	.LM134:
 1551 04c0 4115      		cp r20,__zero_reg__
 1552 04c2 5105      		cpc r21,__zero_reg__
 1553 04c4 01F0      		breq .L57
 1554 04c6 7B01      		movw r14,r22
 1555 04c8 EC01      		movw r28,r24
 265:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	unsigned int newlen = len + length;
 1557               	.LM135:
 1558 04ca 8C81      		ldd r24,Y+4
 1559 04cc 9D81      		ldd r25,Y+5
 1560 04ce 8A01      		movw r16,r20
 1561 04d0 080F      		add r16,r24
 1562 04d2 191F      		adc r17,r25
 268:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	if (!reserve(newlen)) return 0;
 1564               	.LM136:
 1565 04d4 B801      		movw r22,r16
 1566 04d6 CE01      		movw r24,r28
 1567 04d8 0E94 0000 		call _ZN6String7reserveEj
 1568 04dc 8823      		tst r24
 1569 04de 01F0      		breq .L56
 269:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	strcpy(buffer + len, cstr);
 1571               	.LM137:
 1572 04e0 2881      		ld r18,Y
 1573 04e2 3981      		ldd r19,Y+1
 1574 04e4 8C81      		ldd r24,Y+4
 1575 04e6 9D81      		ldd r25,Y+5
 1576 04e8 B701      		movw r22,r14
 1577 04ea 820F      		add r24,r18
 1578 04ec 931F      		adc r25,r19
 1579 04ee 0E94 0000 		call strcpy
 270:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	len = newlen;
 1581               	.LM138:
 1582 04f2 1D83      		std Y+5,r17
 1583 04f4 0C83      		std Y+4,r16
 1584               	.L57:
 267:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	if (!reserve(newlen)) return 0;
 1586               	.LM139:
 1587 04f6 81E0      		ldi r24,lo8(1)
 1588               	.L55:
 1589               	/* epilogue start */
 271:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	return 1;
 272:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** }
 1591               	.LM140:
 1592 04f8 DF91      		pop r29
 1593 04fa CF91      		pop r28
 1594 04fc 1F91      		pop r17
 1595 04fe 0F91      		pop r16
 1596 0500 FF90      		pop r15
 1597 0502 EF90      		pop r14
 1598 0504 0895      		ret
 1603               	.Lscope25:
 1605               		.stabd	78,0,0
 1609               	.global	_ZN6String6concatERKS_
 1611               	_ZN6String6concatERKS_:
 1612               		.stabd	46,0,0
 259:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	return concat(s.buffer, s.len);
 1614               	.LM141:
 1615               	.LFBB26:
 1616               	/* prologue: function */
 1617               	/* frame size = 0 */
 1618               	/* stack size = 0 */
 1619               	.L__stack_usage = 0
 260:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** }
 1621               	.LM142:
 1622 0506 FB01      		movw r30,r22
 1623 0508 4481      		ldd r20,Z+4
 1624 050a 5581      		ldd r21,Z+5
 1625 050c 6081      		ld r22,Z
 1626 050e 7181      		ldd r23,Z+1
 1627 0510 0C94 0000 		jmp _ZN6String6concatEPKcj
 1629               	.Lscope26:
 1631               		.stabd	78,0,0
 1635               	.global	_ZN6String6concatEPKc
 1637               	_ZN6String6concatEPKc:
 1638               		.stabd	46,0,0
 273:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 
 274:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** unsigned char String::concat(const char *cstr)
 275:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** {
 1640               	.LM143:
 1641               	.LFBB27:
 1642               	/* prologue: function */
 1643               	/* frame size = 0 */
 1644               	/* stack size = 0 */
 1645               	.L__stack_usage = 0
 276:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	if (!cstr) return 0;
 1647               	.LM144:
 1648 0514 6115      		cp r22,__zero_reg__
 1649 0516 7105      		cpc r23,__zero_reg__
 1650 0518 01F0      		breq .L63
 277:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	return concat(cstr, strlen(cstr));
 1652               	.LM145:
 1653 051a FB01      		movw r30,r22
 1654               		0:
 1655 051c 0190      		ld __tmp_reg__,Z+
 1656 051e 0020      		tst __tmp_reg__
 1657 0520 01F4      		brne 0b
 1658 0522 3197      		sbiw r30,1
 1659 0524 AF01      		movw r20,r30
 1660 0526 461B      		sub r20,r22
 1661 0528 570B      		sbc r21,r23
 1662 052a 0C94 0000 		jmp _ZN6String6concatEPKcj
 1663               	.L63:
 278:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** }
 1665               	.LM146:
 1666 052e 80E0      		ldi r24,0
 1667 0530 0895      		ret
 1669               	.Lscope27:
 1671               		.stabd	78,0,0
 1675               	.global	_ZN6String6concatEc
 1677               	_ZN6String6concatEc:
 1678               		.stabd	46,0,0
 279:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 
 280:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** unsigned char String::concat(char c)
 281:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** {
 1680               	.LM147:
 1681               	.LFBB28:
 1682 0532 CF93      		push r28
 1683 0534 DF93      		push r29
 1684 0536 00D0      		rcall .
 1685 0538 CDB7      		in r28,__SP_L__
 1686 053a DEB7      		in r29,__SP_H__
 1687               	/* prologue: function */
 1688               	/* frame size = 2 */
 1689               	/* stack size = 4 */
 1690               	.L__stack_usage = 4
 282:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	char buf[2];
 283:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	buf[0] = c;
 1692               	.LM148:
 1693 053c 6983      		std Y+1,r22
 284:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	buf[1] = 0;
 1695               	.LM149:
 1696 053e 1A82      		std Y+2,__zero_reg__
 285:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	return concat(buf, 1);
 1698               	.LM150:
 1699 0540 41E0      		ldi r20,lo8(1)
 1700 0542 50E0      		ldi r21,0
 1701 0544 BE01      		movw r22,r28
 1702 0546 6F5F      		subi r22,-1
 1703 0548 7F4F      		sbci r23,-1
 1704 054a 0E94 0000 		call _ZN6String6concatEPKcj
 1705               	/* epilogue start */
 286:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** }
 1707               	.LM151:
 1708 054e 0F90      		pop __tmp_reg__
 1709 0550 0F90      		pop __tmp_reg__
 1710 0552 DF91      		pop r29
 1711 0554 CF91      		pop r28
 1712 0556 0895      		ret
 1717               	.Lscope28:
 1719               		.stabd	78,0,0
 1723               	.global	_ZN6String6concatEh
 1725               	_ZN6String6concatEh:
 1726               		.stabd	46,0,0
 287:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 
 288:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** unsigned char String::concat(unsigned char num)
 289:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** {
 1728               	.LM152:
 1729               	.LFBB29:
 1730 0558 EF92      		push r14
 1731 055a FF92      		push r15
 1732 055c 0F93      		push r16
 1733 055e 1F93      		push r17
 1734 0560 CF93      		push r28
 1735 0562 DF93      		push r29
 1736 0564 00D0      		rcall .
 1737 0566 00D0      		rcall .
 1738 0568 CDB7      		in r28,__SP_L__
 1739 056a DEB7      		in r29,__SP_H__
 1740               	/* prologue: function */
 1741               	/* frame size = 4 */
 1742               	/* stack size = 10 */
 1743               	.L__stack_usage = 10
 1744 056c 7C01      		movw r14,r24
 1745 056e 862F      		mov r24,r22
 290:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	char buf[1 + 3 * sizeof(unsigned char)];
 291:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	itoa(num, buf, 10);
 1747               	.LM153:
 1748 0570 4AE0      		ldi r20,lo8(10)
 1749 0572 50E0      		ldi r21,0
 1750 0574 8E01      		movw r16,r28
 1751 0576 0F5F      		subi r16,-1
 1752 0578 1F4F      		sbci r17,-1
 1753 057a B801      		movw r22,r16
 1754 057c 90E0      		ldi r25,0
 1755 057e 0E94 0000 		call itoa
 292:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	return concat(buf, strlen(buf));
 1757               	.LM154:
 1758 0582 F801      		movw r30,r16
 1759               		0:
 1760 0584 0190      		ld __tmp_reg__,Z+
 1761 0586 0020      		tst __tmp_reg__
 1762 0588 01F4      		brne 0b
 1763 058a 3197      		sbiw r30,1
 1764 058c AF01      		movw r20,r30
 1765 058e 401B      		sub r20,r16
 1766 0590 510B      		sbc r21,r17
 1767 0592 B801      		movw r22,r16
 1768 0594 C701      		movw r24,r14
 1769 0596 0E94 0000 		call _ZN6String6concatEPKcj
 1770               	/* epilogue start */
 293:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** }
 1772               	.LM155:
 1773 059a 0F90      		pop __tmp_reg__
 1774 059c 0F90      		pop __tmp_reg__
 1775 059e 0F90      		pop __tmp_reg__
 1776 05a0 0F90      		pop __tmp_reg__
 1777 05a2 DF91      		pop r29
 1778 05a4 CF91      		pop r28
 1779 05a6 1F91      		pop r17
 1780 05a8 0F91      		pop r16
 1781 05aa FF90      		pop r15
 1782 05ac EF90      		pop r14
 1783 05ae 0895      		ret
 1788               	.Lscope29:
 1790               		.stabd	78,0,0
 1794               	.global	_ZN6String6concatEi
 1796               	_ZN6String6concatEi:
 1797               		.stabd	46,0,0
 294:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 
 295:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** unsigned char String::concat(int num)
 296:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** {
 1799               	.LM156:
 1800               	.LFBB30:
 1801 05b0 EF92      		push r14
 1802 05b2 FF92      		push r15
 1803 05b4 0F93      		push r16
 1804 05b6 1F93      		push r17
 1805 05b8 CF93      		push r28
 1806 05ba DF93      		push r29
 1807 05bc CDB7      		in r28,__SP_L__
 1808 05be DEB7      		in r29,__SP_H__
 1809 05c0 2897      		sbiw r28,8
 1810 05c2 0FB6      		in __tmp_reg__,__SREG__
 1811 05c4 F894      		cli
 1812 05c6 DEBF      		out __SP_H__,r29
 1813 05c8 0FBE      		out __SREG__,__tmp_reg__
 1814 05ca CDBF      		out __SP_L__,r28
 1815               	/* prologue: function */
 1816               	/* frame size = 8 */
 1817               	/* stack size = 14 */
 1818               	.L__stack_usage = 14
 1819 05cc 7C01      		movw r14,r24
 1820 05ce CB01      		movw r24,r22
 297:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	char buf[2 + 3 * sizeof(int)];
 298:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	itoa(num, buf, 10);
 1822               	.LM157:
 1823 05d0 4AE0      		ldi r20,lo8(10)
 1824 05d2 50E0      		ldi r21,0
 1825 05d4 8E01      		movw r16,r28
 1826 05d6 0F5F      		subi r16,-1
 1827 05d8 1F4F      		sbci r17,-1
 1828 05da B801      		movw r22,r16
 1829 05dc 0E94 0000 		call itoa
 299:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	return concat(buf, strlen(buf));
 1831               	.LM158:
 1832 05e0 F801      		movw r30,r16
 1833               		0:
 1834 05e2 0190      		ld __tmp_reg__,Z+
 1835 05e4 0020      		tst __tmp_reg__
 1836 05e6 01F4      		brne 0b
 1837 05e8 3197      		sbiw r30,1
 1838 05ea AF01      		movw r20,r30
 1839 05ec 401B      		sub r20,r16
 1840 05ee 510B      		sbc r21,r17
 1841 05f0 B801      		movw r22,r16
 1842 05f2 C701      		movw r24,r14
 1843 05f4 0E94 0000 		call _ZN6String6concatEPKcj
 1844               	/* epilogue start */
 300:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** }
 1846               	.LM159:
 1847 05f8 2896      		adiw r28,8
 1848 05fa 0FB6      		in __tmp_reg__,__SREG__
 1849 05fc F894      		cli
 1850 05fe DEBF      		out __SP_H__,r29
 1851 0600 0FBE      		out __SREG__,__tmp_reg__
 1852 0602 CDBF      		out __SP_L__,r28
 1853 0604 DF91      		pop r29
 1854 0606 CF91      		pop r28
 1855 0608 1F91      		pop r17
 1856 060a 0F91      		pop r16
 1857 060c FF90      		pop r15
 1858 060e EF90      		pop r14
 1859 0610 0895      		ret
 1864               	.Lscope30:
 1866               		.stabd	78,0,0
 1870               	.global	_ZN6String6concatEj
 1872               	_ZN6String6concatEj:
 1873               		.stabd	46,0,0
 301:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 
 302:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** unsigned char String::concat(unsigned int num)
 303:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** {
 1875               	.LM160:
 1876               	.LFBB31:
 1877 0612 EF92      		push r14
 1878 0614 FF92      		push r15
 1879 0616 0F93      		push r16
 1880 0618 1F93      		push r17
 1881 061a CF93      		push r28
 1882 061c DF93      		push r29
 1883 061e CDB7      		in r28,__SP_L__
 1884 0620 DEB7      		in r29,__SP_H__
 1885 0622 2797      		sbiw r28,7
 1886 0624 0FB6      		in __tmp_reg__,__SREG__
 1887 0626 F894      		cli
 1888 0628 DEBF      		out __SP_H__,r29
 1889 062a 0FBE      		out __SREG__,__tmp_reg__
 1890 062c CDBF      		out __SP_L__,r28
 1891               	/* prologue: function */
 1892               	/* frame size = 7 */
 1893               	/* stack size = 13 */
 1894               	.L__stack_usage = 13
 1895 062e 7C01      		movw r14,r24
 1896 0630 CB01      		movw r24,r22
 304:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	char buf[1 + 3 * sizeof(unsigned int)];
 305:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	utoa(num, buf, 10);
 1898               	.LM161:
 1899 0632 4AE0      		ldi r20,lo8(10)
 1900 0634 50E0      		ldi r21,0
 1901 0636 8E01      		movw r16,r28
 1902 0638 0F5F      		subi r16,-1
 1903 063a 1F4F      		sbci r17,-1
 1904 063c B801      		movw r22,r16
 1905 063e 0E94 0000 		call utoa
 306:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	return concat(buf, strlen(buf));
 1907               	.LM162:
 1908 0642 F801      		movw r30,r16
 1909               		0:
 1910 0644 0190      		ld __tmp_reg__,Z+
 1911 0646 0020      		tst __tmp_reg__
 1912 0648 01F4      		brne 0b
 1913 064a 3197      		sbiw r30,1
 1914 064c AF01      		movw r20,r30
 1915 064e 401B      		sub r20,r16
 1916 0650 510B      		sbc r21,r17
 1917 0652 B801      		movw r22,r16
 1918 0654 C701      		movw r24,r14
 1919 0656 0E94 0000 		call _ZN6String6concatEPKcj
 1920               	/* epilogue start */
 307:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** }
 1922               	.LM163:
 1923 065a 2796      		adiw r28,7
 1924 065c 0FB6      		in __tmp_reg__,__SREG__
 1925 065e F894      		cli
 1926 0660 DEBF      		out __SP_H__,r29
 1927 0662 0FBE      		out __SREG__,__tmp_reg__
 1928 0664 CDBF      		out __SP_L__,r28
 1929 0666 DF91      		pop r29
 1930 0668 CF91      		pop r28
 1931 066a 1F91      		pop r17
 1932 066c 0F91      		pop r16
 1933 066e FF90      		pop r15
 1934 0670 EF90      		pop r14
 1935 0672 0895      		ret
 1940               	.Lscope31:
 1942               		.stabd	78,0,0
 1946               	.global	_ZN6String6concatEl
 1948               	_ZN6String6concatEl:
 1949               		.stabd	46,0,0
 308:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 
 309:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** unsigned char String::concat(long num)
 310:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** {
 1951               	.LM164:
 1952               	.LFBB32:
 1953 0674 EF92      		push r14
 1954 0676 FF92      		push r15
 1955 0678 0F93      		push r16
 1956 067a 1F93      		push r17
 1957 067c CF93      		push r28
 1958 067e DF93      		push r29
 1959 0680 CDB7      		in r28,__SP_L__
 1960 0682 DEB7      		in r29,__SP_H__
 1961 0684 2E97      		sbiw r28,14
 1962 0686 0FB6      		in __tmp_reg__,__SREG__
 1963 0688 F894      		cli
 1964 068a DEBF      		out __SP_H__,r29
 1965 068c 0FBE      		out __SREG__,__tmp_reg__
 1966 068e CDBF      		out __SP_L__,r28
 1967               	/* prologue: function */
 1968               	/* frame size = 14 */
 1969               	/* stack size = 20 */
 1970               	.L__stack_usage = 20
 1971 0690 7C01      		movw r14,r24
 1972 0692 CB01      		movw r24,r22
 1973 0694 BA01      		movw r22,r20
 311:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	char buf[2 + 3 * sizeof(long)];
 312:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	ltoa(num, buf, 10);
 1975               	.LM165:
 1976 0696 2AE0      		ldi r18,lo8(10)
 1977 0698 30E0      		ldi r19,0
 1978 069a 8E01      		movw r16,r28
 1979 069c 0F5F      		subi r16,-1
 1980 069e 1F4F      		sbci r17,-1
 1981 06a0 A801      		movw r20,r16
 1982 06a2 0E94 0000 		call ltoa
 313:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	return concat(buf, strlen(buf));
 1984               	.LM166:
 1985 06a6 F801      		movw r30,r16
 1986               		0:
 1987 06a8 0190      		ld __tmp_reg__,Z+
 1988 06aa 0020      		tst __tmp_reg__
 1989 06ac 01F4      		brne 0b
 1990 06ae 3197      		sbiw r30,1
 1991 06b0 AF01      		movw r20,r30
 1992 06b2 401B      		sub r20,r16
 1993 06b4 510B      		sbc r21,r17
 1994 06b6 B801      		movw r22,r16
 1995 06b8 C701      		movw r24,r14
 1996 06ba 0E94 0000 		call _ZN6String6concatEPKcj
 1997               	/* epilogue start */
 314:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** }
 1999               	.LM167:
 2000 06be 2E96      		adiw r28,14
 2001 06c0 0FB6      		in __tmp_reg__,__SREG__
 2002 06c2 F894      		cli
 2003 06c4 DEBF      		out __SP_H__,r29
 2004 06c6 0FBE      		out __SREG__,__tmp_reg__
 2005 06c8 CDBF      		out __SP_L__,r28
 2006 06ca DF91      		pop r29
 2007 06cc CF91      		pop r28
 2008 06ce 1F91      		pop r17
 2009 06d0 0F91      		pop r16
 2010 06d2 FF90      		pop r15
 2011 06d4 EF90      		pop r14
 2012 06d6 0895      		ret
 2017               	.Lscope32:
 2019               		.stabd	78,0,0
 2023               	.global	_ZN6String6concatEm
 2025               	_ZN6String6concatEm:
 2026               		.stabd	46,0,0
 315:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 
 316:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** unsigned char String::concat(unsigned long num)
 317:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** {
 2028               	.LM168:
 2029               	.LFBB33:
 2030 06d8 EF92      		push r14
 2031 06da FF92      		push r15
 2032 06dc 0F93      		push r16
 2033 06de 1F93      		push r17
 2034 06e0 CF93      		push r28
 2035 06e2 DF93      		push r29
 2036 06e4 CDB7      		in r28,__SP_L__
 2037 06e6 DEB7      		in r29,__SP_H__
 2038 06e8 2D97      		sbiw r28,13
 2039 06ea 0FB6      		in __tmp_reg__,__SREG__
 2040 06ec F894      		cli
 2041 06ee DEBF      		out __SP_H__,r29
 2042 06f0 0FBE      		out __SREG__,__tmp_reg__
 2043 06f2 CDBF      		out __SP_L__,r28
 2044               	/* prologue: function */
 2045               	/* frame size = 13 */
 2046               	/* stack size = 19 */
 2047               	.L__stack_usage = 19
 2048 06f4 7C01      		movw r14,r24
 2049 06f6 CB01      		movw r24,r22
 2050 06f8 BA01      		movw r22,r20
 318:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	char buf[1 + 3 * sizeof(unsigned long)];
 319:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	ultoa(num, buf, 10);
 2052               	.LM169:
 2053 06fa 2AE0      		ldi r18,lo8(10)
 2054 06fc 30E0      		ldi r19,0
 2055 06fe 8E01      		movw r16,r28
 2056 0700 0F5F      		subi r16,-1
 2057 0702 1F4F      		sbci r17,-1
 2058 0704 A801      		movw r20,r16
 2059 0706 0E94 0000 		call ultoa
 320:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	return concat(buf, strlen(buf));
 2061               	.LM170:
 2062 070a F801      		movw r30,r16
 2063               		0:
 2064 070c 0190      		ld __tmp_reg__,Z+
 2065 070e 0020      		tst __tmp_reg__
 2066 0710 01F4      		brne 0b
 2067 0712 3197      		sbiw r30,1
 2068 0714 AF01      		movw r20,r30
 2069 0716 401B      		sub r20,r16
 2070 0718 510B      		sbc r21,r17
 2071 071a B801      		movw r22,r16
 2072 071c C701      		movw r24,r14
 2073 071e 0E94 0000 		call _ZN6String6concatEPKcj
 2074               	/* epilogue start */
 321:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** }
 2076               	.LM171:
 2077 0722 2D96      		adiw r28,13
 2078 0724 0FB6      		in __tmp_reg__,__SREG__
 2079 0726 F894      		cli
 2080 0728 DEBF      		out __SP_H__,r29
 2081 072a 0FBE      		out __SREG__,__tmp_reg__
 2082 072c CDBF      		out __SP_L__,r28
 2083 072e DF91      		pop r29
 2084 0730 CF91      		pop r28
 2085 0732 1F91      		pop r17
 2086 0734 0F91      		pop r16
 2087 0736 FF90      		pop r15
 2088 0738 EF90      		pop r14
 2089 073a 0895      		ret
 2094               	.Lscope33:
 2096               		.stabd	78,0,0
 2100               	.global	_ZN6String6concatEf
 2102               	_ZN6String6concatEf:
 2103               		.stabd	46,0,0
 322:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 
 323:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** unsigned char String::concat(float num)
 324:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** {
 2105               	.LM172:
 2106               	.LFBB34:
 2107 073c EF92      		push r14
 2108 073e FF92      		push r15
 2109 0740 0F93      		push r16
 2110 0742 1F93      		push r17
 2111 0744 CF93      		push r28
 2112 0746 DF93      		push r29
 2113 0748 CDB7      		in r28,__SP_L__
 2114 074a DEB7      		in r29,__SP_H__
 2115 074c 6497      		sbiw r28,20
 2116 074e 0FB6      		in __tmp_reg__,__SREG__
 2117 0750 F894      		cli
 2118 0752 DEBF      		out __SP_H__,r29
 2119 0754 0FBE      		out __SREG__,__tmp_reg__
 2120 0756 CDBF      		out __SP_L__,r28
 2121               	/* prologue: function */
 2122               	/* frame size = 20 */
 2123               	/* stack size = 26 */
 2124               	.L__stack_usage = 26
 2125 0758 7C01      		movw r14,r24
 2126 075a CB01      		movw r24,r22
 2127 075c BA01      		movw r22,r20
 325:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	char buf[20];
 326:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	char* string = dtostrf(num, 4, 2, buf);
 2129               	.LM173:
 2130 075e 8E01      		movw r16,r28
 2131 0760 0F5F      		subi r16,-1
 2132 0762 1F4F      		sbci r17,-1
 2133 0764 22E0      		ldi r18,lo8(2)
 2134 0766 44E0      		ldi r20,lo8(4)
 2135 0768 0E94 0000 		call dtostrf
 327:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	return concat(string, strlen(string));
 2137               	.LM174:
 2138 076c FC01      		movw r30,r24
 2139               		0:
 2140 076e 0190      		ld __tmp_reg__,Z+
 2141 0770 0020      		tst __tmp_reg__
 2142 0772 01F4      		brne 0b
 2143 0774 3197      		sbiw r30,1
 2144 0776 AF01      		movw r20,r30
 2145 0778 481B      		sub r20,r24
 2146 077a 590B      		sbc r21,r25
 2147 077c BC01      		movw r22,r24
 2148 077e C701      		movw r24,r14
 2149 0780 0E94 0000 		call _ZN6String6concatEPKcj
 2150               	/* epilogue start */
 328:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** }
 2152               	.LM175:
 2153 0784 6496      		adiw r28,20
 2154 0786 0FB6      		in __tmp_reg__,__SREG__
 2155 0788 F894      		cli
 2156 078a DEBF      		out __SP_H__,r29
 2157 078c 0FBE      		out __SREG__,__tmp_reg__
 2158 078e CDBF      		out __SP_L__,r28
 2159 0790 DF91      		pop r29
 2160 0792 CF91      		pop r28
 2161 0794 1F91      		pop r17
 2162 0796 0F91      		pop r16
 2163 0798 FF90      		pop r15
 2164 079a EF90      		pop r14
 2165 079c 0895      		ret
 2171               	.Lscope34:
 2173               		.stabd	78,0,0
 2177               	.global	_ZN6String6concatEd
 2179               	_ZN6String6concatEd:
 2180               		.stabd	46,0,0
 329:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 
 330:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** unsigned char String::concat(double num)
 331:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** {
 2182               	.LM176:
 2183               	.LFBB35:
 2184 079e EF92      		push r14
 2185 07a0 FF92      		push r15
 2186 07a2 0F93      		push r16
 2187 07a4 1F93      		push r17
 2188 07a6 CF93      		push r28
 2189 07a8 DF93      		push r29
 2190 07aa CDB7      		in r28,__SP_L__
 2191 07ac DEB7      		in r29,__SP_H__
 2192 07ae 6497      		sbiw r28,20
 2193 07b0 0FB6      		in __tmp_reg__,__SREG__
 2194 07b2 F894      		cli
 2195 07b4 DEBF      		out __SP_H__,r29
 2196 07b6 0FBE      		out __SREG__,__tmp_reg__
 2197 07b8 CDBF      		out __SP_L__,r28
 2198               	/* prologue: function */
 2199               	/* frame size = 20 */
 2200               	/* stack size = 26 */
 2201               	.L__stack_usage = 26
 2202 07ba 7C01      		movw r14,r24
 2203 07bc CB01      		movw r24,r22
 2204 07be BA01      		movw r22,r20
 332:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	char buf[20];
 333:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	char* string = dtostrf(num, 4, 2, buf);
 2206               	.LM177:
 2207 07c0 8E01      		movw r16,r28
 2208 07c2 0F5F      		subi r16,-1
 2209 07c4 1F4F      		sbci r17,-1
 2210 07c6 22E0      		ldi r18,lo8(2)
 2211 07c8 44E0      		ldi r20,lo8(4)
 2212 07ca 0E94 0000 		call dtostrf
 334:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	return concat(string, strlen(string));
 2214               	.LM178:
 2215 07ce FC01      		movw r30,r24
 2216               		0:
 2217 07d0 0190      		ld __tmp_reg__,Z+
 2218 07d2 0020      		tst __tmp_reg__
 2219 07d4 01F4      		brne 0b
 2220 07d6 3197      		sbiw r30,1
 2221 07d8 AF01      		movw r20,r30
 2222 07da 481B      		sub r20,r24
 2223 07dc 590B      		sbc r21,r25
 2224 07de BC01      		movw r22,r24
 2225 07e0 C701      		movw r24,r14
 2226 07e2 0E94 0000 		call _ZN6String6concatEPKcj
 2227               	/* epilogue start */
 335:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** }
 2229               	.LM179:
 2230 07e6 6496      		adiw r28,20
 2231 07e8 0FB6      		in __tmp_reg__,__SREG__
 2232 07ea F894      		cli
 2233 07ec DEBF      		out __SP_H__,r29
 2234 07ee 0FBE      		out __SREG__,__tmp_reg__
 2235 07f0 CDBF      		out __SP_L__,r28
 2236 07f2 DF91      		pop r29
 2237 07f4 CF91      		pop r28
 2238 07f6 1F91      		pop r17
 2239 07f8 0F91      		pop r16
 2240 07fa FF90      		pop r15
 2241 07fc EF90      		pop r14
 2242 07fe 0895      		ret
 2248               	.Lscope35:
 2250               		.stabd	78,0,0
 2254               	.global	_ZN6String6concatEPK19__FlashStringHelper
 2256               	_ZN6String6concatEPK19__FlashStringHelper:
 2257               		.stabd	46,0,0
 336:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 
 337:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** unsigned char String::concat(const __FlashStringHelper * str)
 338:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** {
 2259               	.LM180:
 2260               	.LFBB36:
 2261 0800 EF92      		push r14
 2262 0802 FF92      		push r15
 2263 0804 0F93      		push r16
 2264 0806 1F93      		push r17
 2265 0808 CF93      		push r28
 2266 080a DF93      		push r29
 2267               	/* prologue: function */
 2268               	/* frame size = 0 */
 2269               	/* stack size = 6 */
 2270               	.L__stack_usage = 6
 339:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	if (!str) return 0;
 2272               	.LM181:
 2273 080c 6115      		cp r22,__zero_reg__
 2274 080e 7105      		cpc r23,__zero_reg__
 2275 0810 01F4      		brne .L73
 2276               	.L75:
 2277 0812 80E0      		ldi r24,0
 2278 0814 00C0      		rjmp .L74
 2279               	.L73:
 2280 0816 8B01      		movw r16,r22
 2281 0818 EC01      		movw r28,r24
 2282               	.LBB83:
 2283               	.LBB84:
 2285               	.Ltext5:
 2287               	.LM182:
 2288 081a CB01      		movw r24,r22
 2289 081c 0E94 0000 		call __strlen_P
 2290               	.LBE84:
 2291               	.LBE83:
 2293               	.Ltext6:
 340:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	int length = strlen_P((const char *) str);
 341:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	if (length == 0) return 1;
 2295               	.LM183:
 2296 0820 0097      		sbiw r24,0
 2297 0822 01F0      		breq .L76
 342:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	unsigned int newlen = len + length;
 2299               	.LM184:
 2300 0824 2C81      		ldd r18,Y+4
 2301 0826 3D81      		ldd r19,Y+5
 2302 0828 7C01      		movw r14,r24
 2303 082a E20E      		add r14,r18
 2304 082c F31E      		adc r15,r19
 343:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	if (!reserve(newlen)) return 0;
 2306               	.LM185:
 2307 082e B701      		movw r22,r14
 2308 0830 CE01      		movw r24,r28
 2309 0832 0E94 0000 		call _ZN6String7reserveEj
 2310 0836 8823      		tst r24
 2311 0838 01F0      		breq .L75
 344:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	strcpy_P(buffer + len, (const char *) str);
 2313               	.LM186:
 2314 083a 2881      		ld r18,Y
 2315 083c 3981      		ldd r19,Y+1
 2316 083e 8C81      		ldd r24,Y+4
 2317 0840 9D81      		ldd r25,Y+5
 2318 0842 B801      		movw r22,r16
 2319 0844 820F      		add r24,r18
 2320 0846 931F      		adc r25,r19
 2321 0848 0E94 0000 		call strcpy_P
 345:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	len = newlen;
 2323               	.LM187:
 2324 084c FD82      		std Y+5,r15
 2325 084e EC82      		std Y+4,r14
 2326               	.L76:
 341:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	unsigned int newlen = len + length;
 2328               	.LM188:
 2329 0850 81E0      		ldi r24,lo8(1)
 2330               	.L74:
 2331               	/* epilogue start */
 346:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	return 1;
 347:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** }
 2333               	.LM189:
 2334 0852 DF91      		pop r29
 2335 0854 CF91      		pop r28
 2336 0856 1F91      		pop r17
 2337 0858 0F91      		pop r16
 2338 085a FF90      		pop r15
 2339 085c EF90      		pop r14
 2340 085e 0895      		ret
 2345               	.Lscope36:
 2347               		.stabd	78,0,0
 2351               	.global	_ZplRK15StringSumHelperRK6String
 2353               	_ZplRK15StringSumHelperRK6String:
 2354               		.stabd	46,0,0
 348:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 
 349:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** /*********************************************/
 350:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** /*  Concatenate                              */
 351:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** /*********************************************/
 352:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 
 353:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** StringSumHelper & operator + (const StringSumHelper &lhs, const String &rhs)
 354:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** {
 2356               	.LM190:
 2357               	.LFBB37:
 2358 0860 CF93      		push r28
 2359 0862 DF93      		push r29
 2360               	/* prologue: function */
 2361               	/* frame size = 0 */
 2362               	/* stack size = 2 */
 2363               	.L__stack_usage = 2
 2364 0864 EC01      		movw r28,r24
 355:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	StringSumHelper &a = const_cast<StringSumHelper&>(lhs);
 356:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	if (!a.concat(rhs.buffer, rhs.len)) a.invalidate();
 2366               	.LM191:
 2367 0866 FB01      		movw r30,r22
 2368 0868 4481      		ldd r20,Z+4
 2369 086a 5581      		ldd r21,Z+5
 2370 086c 6081      		ld r22,Z
 2371 086e 7181      		ldd r23,Z+1
 2372 0870 0E94 0000 		call _ZN6String6concatEPKcj
 2373 0874 8111      		cpse r24,__zero_reg__
 2374 0876 00C0      		rjmp .L81
 2376               	.LM192:
 2377 0878 CE01      		movw r24,r28
 2378 087a 0E94 0000 		call _ZN6String10invalidateEv
 2379               	.L81:
 357:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	return a;
 358:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** }
 2381               	.LM193:
 2382 087e CE01      		movw r24,r28
 2383               	/* epilogue start */
 2384 0880 DF91      		pop r29
 2385 0882 CF91      		pop r28
 2386 0884 0895      		ret
 2388               	.Lscope37:
 2390               		.stabd	78,0,0
 2394               	.global	_ZplRK15StringSumHelperPKc
 2396               	_ZplRK15StringSumHelperPKc:
 2397               		.stabd	46,0,0
 359:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 
 360:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** StringSumHelper & operator + (const StringSumHelper &lhs, const char *cstr)
 361:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** {
 2399               	.LM194:
 2400               	.LFBB38:
 2401 0886 CF93      		push r28
 2402 0888 DF93      		push r29
 2403               	/* prologue: function */
 2404               	/* frame size = 0 */
 2405               	/* stack size = 2 */
 2406               	.L__stack_usage = 2
 2407 088a EC01      		movw r28,r24
 362:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	StringSumHelper &a = const_cast<StringSumHelper&>(lhs);
 363:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	if (!cstr || !a.concat(cstr, strlen(cstr))) a.invalidate();
 2409               	.LM195:
 2410 088c 6115      		cp r22,__zero_reg__
 2411 088e 7105      		cpc r23,__zero_reg__
 2412 0890 01F0      		breq .L83
 2414               	.LM196:
 2415 0892 FB01      		movw r30,r22
 2416               		0:
 2417 0894 0190      		ld __tmp_reg__,Z+
 2418 0896 0020      		tst __tmp_reg__
 2419 0898 01F4      		brne 0b
 2420 089a 3197      		sbiw r30,1
 2421 089c AF01      		movw r20,r30
 2422 089e 461B      		sub r20,r22
 2423 08a0 570B      		sbc r21,r23
 2424 08a2 0E94 0000 		call _ZN6String6concatEPKcj
 2425 08a6 8111      		cpse r24,__zero_reg__
 2426 08a8 00C0      		rjmp .L91
 2427               	.L83:
 2429               	.LM197:
 2430 08aa CE01      		movw r24,r28
 2431 08ac 0E94 0000 		call _ZN6String10invalidateEv
 2432               	.L91:
 364:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	return a;
 365:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** }
 2434               	.LM198:
 2435 08b0 CE01      		movw r24,r28
 2436               	/* epilogue start */
 2437 08b2 DF91      		pop r29
 2438 08b4 CF91      		pop r28
 2439 08b6 0895      		ret
 2441               	.Lscope38:
 2443               		.stabd	78,0,0
 2447               	.global	_ZplRK15StringSumHelperc
 2449               	_ZplRK15StringSumHelperc:
 2450               		.stabd	46,0,0
 366:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 
 367:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** StringSumHelper & operator + (const StringSumHelper &lhs, char c)
 368:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** {
 2452               	.LM199:
 2453               	.LFBB39:
 2454 08b8 CF93      		push r28
 2455 08ba DF93      		push r29
 2456               	/* prologue: function */
 2457               	/* frame size = 0 */
 2458               	/* stack size = 2 */
 2459               	.L__stack_usage = 2
 2460 08bc EC01      		movw r28,r24
 369:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	StringSumHelper &a = const_cast<StringSumHelper&>(lhs);
 370:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	if (!a.concat(c)) a.invalidate();
 2462               	.LM200:
 2463 08be 0E94 0000 		call _ZN6String6concatEc
 2464 08c2 8111      		cpse r24,__zero_reg__
 2465 08c4 00C0      		rjmp .L93
 2467               	.LM201:
 2468 08c6 CE01      		movw r24,r28
 2469 08c8 0E94 0000 		call _ZN6String10invalidateEv
 2470               	.L93:
 371:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	return a;
 372:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** }
 2472               	.LM202:
 2473 08cc CE01      		movw r24,r28
 2474               	/* epilogue start */
 2475 08ce DF91      		pop r29
 2476 08d0 CF91      		pop r28
 2477 08d2 0895      		ret
 2479               	.Lscope39:
 2481               		.stabd	78,0,0
 2485               	.global	_ZplRK15StringSumHelperh
 2487               	_ZplRK15StringSumHelperh:
 2488               		.stabd	46,0,0
 373:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 
 374:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** StringSumHelper & operator + (const StringSumHelper &lhs, unsigned char num)
 375:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** {
 2490               	.LM203:
 2491               	.LFBB40:
 2492 08d4 CF93      		push r28
 2493 08d6 DF93      		push r29
 2494               	/* prologue: function */
 2495               	/* frame size = 0 */
 2496               	/* stack size = 2 */
 2497               	.L__stack_usage = 2
 2498 08d8 EC01      		movw r28,r24
 376:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	StringSumHelper &a = const_cast<StringSumHelper&>(lhs);
 377:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	if (!a.concat(num)) a.invalidate();
 2500               	.LM204:
 2501 08da 0E94 0000 		call _ZN6String6concatEh
 2502 08de 8111      		cpse r24,__zero_reg__
 2503 08e0 00C0      		rjmp .L95
 2505               	.LM205:
 2506 08e2 CE01      		movw r24,r28
 2507 08e4 0E94 0000 		call _ZN6String10invalidateEv
 2508               	.L95:
 378:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	return a;
 379:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** }
 2510               	.LM206:
 2511 08e8 CE01      		movw r24,r28
 2512               	/* epilogue start */
 2513 08ea DF91      		pop r29
 2514 08ec CF91      		pop r28
 2515 08ee 0895      		ret
 2517               	.Lscope40:
 2519               		.stabd	78,0,0
 2523               	.global	_ZplRK15StringSumHelperi
 2525               	_ZplRK15StringSumHelperi:
 2526               		.stabd	46,0,0
 380:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 
 381:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** StringSumHelper & operator + (const StringSumHelper &lhs, int num)
 382:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** {
 2528               	.LM207:
 2529               	.LFBB41:
 2530 08f0 CF93      		push r28
 2531 08f2 DF93      		push r29
 2532               	/* prologue: function */
 2533               	/* frame size = 0 */
 2534               	/* stack size = 2 */
 2535               	.L__stack_usage = 2
 2536 08f4 EC01      		movw r28,r24
 383:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	StringSumHelper &a = const_cast<StringSumHelper&>(lhs);
 384:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	if (!a.concat(num)) a.invalidate();
 2538               	.LM208:
 2539 08f6 0E94 0000 		call _ZN6String6concatEi
 2540 08fa 8111      		cpse r24,__zero_reg__
 2541 08fc 00C0      		rjmp .L97
 2543               	.LM209:
 2544 08fe CE01      		movw r24,r28
 2545 0900 0E94 0000 		call _ZN6String10invalidateEv
 2546               	.L97:
 385:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	return a;
 386:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** }
 2548               	.LM210:
 2549 0904 CE01      		movw r24,r28
 2550               	/* epilogue start */
 2551 0906 DF91      		pop r29
 2552 0908 CF91      		pop r28
 2553 090a 0895      		ret
 2555               	.Lscope41:
 2557               		.stabd	78,0,0
 2561               	.global	_ZplRK15StringSumHelperj
 2563               	_ZplRK15StringSumHelperj:
 2564               		.stabd	46,0,0
 387:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 
 388:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** StringSumHelper & operator + (const StringSumHelper &lhs, unsigned int num)
 389:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** {
 2566               	.LM211:
 2567               	.LFBB42:
 2568 090c CF93      		push r28
 2569 090e DF93      		push r29
 2570               	/* prologue: function */
 2571               	/* frame size = 0 */
 2572               	/* stack size = 2 */
 2573               	.L__stack_usage = 2
 2574 0910 EC01      		movw r28,r24
 390:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	StringSumHelper &a = const_cast<StringSumHelper&>(lhs);
 391:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	if (!a.concat(num)) a.invalidate();
 2576               	.LM212:
 2577 0912 0E94 0000 		call _ZN6String6concatEj
 2578 0916 8111      		cpse r24,__zero_reg__
 2579 0918 00C0      		rjmp .L99
 2581               	.LM213:
 2582 091a CE01      		movw r24,r28
 2583 091c 0E94 0000 		call _ZN6String10invalidateEv
 2584               	.L99:
 392:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	return a;
 393:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** }
 2586               	.LM214:
 2587 0920 CE01      		movw r24,r28
 2588               	/* epilogue start */
 2589 0922 DF91      		pop r29
 2590 0924 CF91      		pop r28
 2591 0926 0895      		ret
 2593               	.Lscope42:
 2595               		.stabd	78,0,0
 2599               	.global	_ZplRK15StringSumHelperl
 2601               	_ZplRK15StringSumHelperl:
 2602               		.stabd	46,0,0
 394:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 
 395:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** StringSumHelper & operator + (const StringSumHelper &lhs, long num)
 396:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** {
 2604               	.LM215:
 2605               	.LFBB43:
 2606 0928 CF93      		push r28
 2607 092a DF93      		push r29
 2608               	/* prologue: function */
 2609               	/* frame size = 0 */
 2610               	/* stack size = 2 */
 2611               	.L__stack_usage = 2
 2612 092c EC01      		movw r28,r24
 397:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	StringSumHelper &a = const_cast<StringSumHelper&>(lhs);
 398:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	if (!a.concat(num)) a.invalidate();
 2614               	.LM216:
 2615 092e 0E94 0000 		call _ZN6String6concatEl
 2616 0932 8111      		cpse r24,__zero_reg__
 2617 0934 00C0      		rjmp .L101
 2619               	.LM217:
 2620 0936 CE01      		movw r24,r28
 2621 0938 0E94 0000 		call _ZN6String10invalidateEv
 2622               	.L101:
 399:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	return a;
 400:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** }
 2624               	.LM218:
 2625 093c CE01      		movw r24,r28
 2626               	/* epilogue start */
 2627 093e DF91      		pop r29
 2628 0940 CF91      		pop r28
 2629 0942 0895      		ret
 2631               	.Lscope43:
 2633               		.stabd	78,0,0
 2637               	.global	_ZplRK15StringSumHelperm
 2639               	_ZplRK15StringSumHelperm:
 2640               		.stabd	46,0,0
 401:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 
 402:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** StringSumHelper & operator + (const StringSumHelper &lhs, unsigned long num)
 403:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** {
 2642               	.LM219:
 2643               	.LFBB44:
 2644 0944 CF93      		push r28
 2645 0946 DF93      		push r29
 2646               	/* prologue: function */
 2647               	/* frame size = 0 */
 2648               	/* stack size = 2 */
 2649               	.L__stack_usage = 2
 2650 0948 EC01      		movw r28,r24
 404:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	StringSumHelper &a = const_cast<StringSumHelper&>(lhs);
 405:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	if (!a.concat(num)) a.invalidate();
 2652               	.LM220:
 2653 094a 0E94 0000 		call _ZN6String6concatEm
 2654 094e 8111      		cpse r24,__zero_reg__
 2655 0950 00C0      		rjmp .L103
 2657               	.LM221:
 2658 0952 CE01      		movw r24,r28
 2659 0954 0E94 0000 		call _ZN6String10invalidateEv
 2660               	.L103:
 406:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	return a;
 407:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** }
 2662               	.LM222:
 2663 0958 CE01      		movw r24,r28
 2664               	/* epilogue start */
 2665 095a DF91      		pop r29
 2666 095c CF91      		pop r28
 2667 095e 0895      		ret
 2669               	.Lscope44:
 2671               		.stabd	78,0,0
 2675               	.global	_ZplRK15StringSumHelperf
 2677               	_ZplRK15StringSumHelperf:
 2678               		.stabd	46,0,0
 408:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 
 409:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** StringSumHelper & operator + (const StringSumHelper &lhs, float num)
 410:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** {
 2680               	.LM223:
 2681               	.LFBB45:
 2682 0960 CF93      		push r28
 2683 0962 DF93      		push r29
 2684               	/* prologue: function */
 2685               	/* frame size = 0 */
 2686               	/* stack size = 2 */
 2687               	.L__stack_usage = 2
 2688 0964 EC01      		movw r28,r24
 411:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	StringSumHelper &a = const_cast<StringSumHelper&>(lhs);
 412:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	if (!a.concat(num)) a.invalidate();
 2690               	.LM224:
 2691 0966 0E94 0000 		call _ZN6String6concatEf
 2692 096a 8111      		cpse r24,__zero_reg__
 2693 096c 00C0      		rjmp .L105
 2695               	.LM225:
 2696 096e CE01      		movw r24,r28
 2697 0970 0E94 0000 		call _ZN6String10invalidateEv
 2698               	.L105:
 413:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	return a;
 414:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** }
 2700               	.LM226:
 2701 0974 CE01      		movw r24,r28
 2702               	/* epilogue start */
 2703 0976 DF91      		pop r29
 2704 0978 CF91      		pop r28
 2705 097a 0895      		ret
 2707               	.Lscope45:
 2709               		.stabd	78,0,0
 2713               	.global	_ZplRK15StringSumHelperd
 2715               	_ZplRK15StringSumHelperd:
 2716               		.stabd	46,0,0
 415:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 
 416:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** StringSumHelper & operator + (const StringSumHelper &lhs, double num)
 417:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** {
 2718               	.LM227:
 2719               	.LFBB46:
 2720 097c CF93      		push r28
 2721 097e DF93      		push r29
 2722               	/* prologue: function */
 2723               	/* frame size = 0 */
 2724               	/* stack size = 2 */
 2725               	.L__stack_usage = 2
 2726 0980 EC01      		movw r28,r24
 418:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	StringSumHelper &a = const_cast<StringSumHelper&>(lhs);
 419:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	if (!a.concat(num)) a.invalidate();
 2728               	.LM228:
 2729 0982 0E94 0000 		call _ZN6String6concatEd
 2730 0986 8111      		cpse r24,__zero_reg__
 2731 0988 00C0      		rjmp .L107
 2733               	.LM229:
 2734 098a CE01      		movw r24,r28
 2735 098c 0E94 0000 		call _ZN6String10invalidateEv
 2736               	.L107:
 420:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	return a;
 421:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** }
 2738               	.LM230:
 2739 0990 CE01      		movw r24,r28
 2740               	/* epilogue start */
 2741 0992 DF91      		pop r29
 2742 0994 CF91      		pop r28
 2743 0996 0895      		ret
 2745               	.Lscope46:
 2747               		.stabd	78,0,0
 2751               	.global	_ZplRK15StringSumHelperPK19__FlashStringHelper
 2753               	_ZplRK15StringSumHelperPK19__FlashStringHelper:
 2754               		.stabd	46,0,0
 422:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 
 423:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** StringSumHelper & operator + (const StringSumHelper &lhs, const __FlashStringHelper *rhs)
 424:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** {
 2756               	.LM231:
 2757               	.LFBB47:
 2758 0998 CF93      		push r28
 2759 099a DF93      		push r29
 2760               	/* prologue: function */
 2761               	/* frame size = 0 */
 2762               	/* stack size = 2 */
 2763               	.L__stack_usage = 2
 2764 099c EC01      		movw r28,r24
 425:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	StringSumHelper &a = const_cast<StringSumHelper&>(lhs);
 426:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	if (!a.concat(rhs))	a.invalidate();
 2766               	.LM232:
 2767 099e 0E94 0000 		call _ZN6String6concatEPK19__FlashStringHelper
 2768 09a2 8111      		cpse r24,__zero_reg__
 2769 09a4 00C0      		rjmp .L109
 2771               	.LM233:
 2772 09a6 CE01      		movw r24,r28
 2773 09a8 0E94 0000 		call _ZN6String10invalidateEv
 2774               	.L109:
 427:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	return a;
 428:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** }
 2776               	.LM234:
 2777 09ac CE01      		movw r24,r28
 2778               	/* epilogue start */
 2779 09ae DF91      		pop r29
 2780 09b0 CF91      		pop r28
 2781 09b2 0895      		ret
 2783               	.Lscope47:
 2785               		.stabd	78,0,0
 2789               	.global	_ZNK6String9compareToERKS_
 2791               	_ZNK6String9compareToERKS_:
 2792               		.stabd	46,0,0
 429:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 
 430:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** /*********************************************/
 431:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** /*  Comparison                               */
 432:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** /*********************************************/
 433:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 
 434:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** int String::compareTo(const String &s) const
 435:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** {
 2794               	.LM235:
 2795               	.LFBB48:
 2796 09b4 CF93      		push r28
 2797 09b6 DF93      		push r29
 2798               	/* prologue: function */
 2799               	/* frame size = 0 */
 2800               	/* stack size = 2 */
 2801               	.L__stack_usage = 2
 436:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	if (!buffer || !s.buffer) {
 2803               	.LM236:
 2804 09b8 DC01      		movw r26,r24
 2805 09ba ED91      		ld r30,X+
 2806 09bc FC91      		ld r31,X
 2807 09be EB01      		movw r28,r22
 2808 09c0 A881      		ld r26,Y
 2809 09c2 B981      		ldd r27,Y+1
 2810 09c4 3097      		sbiw r30,0
 2811 09c6 01F0      		breq .L111
 2813               	.LM237:
 2814 09c8 1097      		sbiw r26,0
 2815 09ca 01F4      		brne .L112
 2816               	.L111:
 437:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 		if (s.buffer && s.len > 0) return 0 - *(unsigned char *)s.buffer;
 2818               	.LM238:
 2819 09cc 1097      		sbiw r26,0
 2820 09ce 01F0      		breq .L113
 2822               	.LM239:
 2823 09d0 EB01      		movw r28,r22
 2824 09d2 2C81      		ldd r18,Y+4
 2825 09d4 3D81      		ldd r19,Y+5
 2826 09d6 232B      		or r18,r19
 2827 09d8 01F0      		breq .L113
 2829               	.LM240:
 2830 09da 8C91      		ld r24,X
 2831 09dc 90E0      		ldi r25,0
 2832 09de 9195      		neg r25
 2833 09e0 8195      		neg r24
 2834 09e2 9109      		sbc r25,__zero_reg__
 2835 09e4 00C0      		rjmp .L114
 2836               	.L113:
 438:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 		if (buffer && len > 0) return *(unsigned char *)buffer;
 2838               	.LM241:
 2839 09e6 3097      		sbiw r30,0
 2840 09e8 01F0      		breq .L116
 2842               	.LM242:
 2843 09ea DC01      		movw r26,r24
 2844 09ec 1496      		adiw r26,4
 2845 09ee 8D91      		ld r24,X+
 2846 09f0 9C91      		ld r25,X
 2847 09f2 1597      		sbiw r26,4+1
 2848 09f4 892B      		or r24,r25
 2849 09f6 01F0      		breq .L116
 2851               	.LM243:
 2852 09f8 8081      		ld r24,Z
 2853 09fa 90E0      		ldi r25,0
 2854 09fc 00C0      		rjmp .L114
 2855               	.L112:
 439:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 		return 0;
 440:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	}
 441:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	return strcmp(buffer, s.buffer);
 2857               	.LM244:
 2858 09fe BD01      		movw r22,r26
 2859 0a00 CF01      		movw r24,r30
 2860               	/* epilogue start */
 442:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** }
 2862               	.LM245:
 2863 0a02 DF91      		pop r29
 2864 0a04 CF91      		pop r28
 441:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** }
 2866               	.LM246:
 2867 0a06 0C94 0000 		jmp strcmp
 2868               	.L116:
 439:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 		return 0;
 2870               	.LM247:
 2871 0a0a 80E0      		ldi r24,0
 2872 0a0c 90E0      		ldi r25,0
 2873               	.L114:
 2874               	/* epilogue start */
 2876               	.LM248:
 2877 0a0e DF91      		pop r29
 2878 0a10 CF91      		pop r28
 2879 0a12 0895      		ret
 2881               	.Lscope48:
 2883               		.stabd	78,0,0
 2887               	.global	_ZNK6String6equalsERKS_
 2889               	_ZNK6String6equalsERKS_:
 2890               		.stabd	46,0,0
 443:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 
 444:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** unsigned char String::equals(const String &s2) const
 445:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** {
 2892               	.LM249:
 2893               	.LFBB49:
 2894               	/* prologue: function */
 2895               	/* frame size = 0 */
 2896               	/* stack size = 0 */
 2897               	.L__stack_usage = 0
 446:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	return (len == s2.len && compareTo(s2) == 0);
 2899               	.LM250:
 2900 0a14 FC01      		movw r30,r24
 2901 0a16 4481      		ldd r20,Z+4
 2902 0a18 5581      		ldd r21,Z+5
 2903 0a1a FB01      		movw r30,r22
 2904 0a1c 2481      		ldd r18,Z+4
 2905 0a1e 3581      		ldd r19,Z+5
 2906 0a20 4217      		cp r20,r18
 2907 0a22 5307      		cpc r21,r19
 2908 0a24 01F4      		brne .L129
 2910               	.LM251:
 2911 0a26 0E94 0000 		call _ZNK6String9compareToERKS_
 2912 0a2a 21E0      		ldi r18,lo8(1)
 2913 0a2c 892B      		or r24,r25
 2914 0a2e 01F0      		breq .L127
 2915               	.L129:
 2917               	.LM252:
 2918 0a30 20E0      		ldi r18,0
 2919               	.L127:
 447:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** }
 2921               	.LM253:
 2922 0a32 822F      		mov r24,r18
 2923 0a34 0895      		ret
 2925               	.Lscope49:
 2927               		.stabd	78,0,0
 2931               	.global	_ZNK6String6equalsEPKc
 2933               	_ZNK6String6equalsEPKc:
 2934               		.stabd	46,0,0
 448:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 
 449:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** unsigned char String::equals(const char *cstr) const
 450:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** {
 2936               	.LM254:
 2937               	.LFBB50:
 2938               	/* prologue: function */
 2939               	/* frame size = 0 */
 2940               	/* stack size = 0 */
 2941               	.L__stack_usage = 0
 451:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	if (len == 0) return (cstr == NULL || *cstr == 0);
 2943               	.LM255:
 2944 0a36 FC01      		movw r30,r24
 2945 0a38 2481      		ldd r18,Z+4
 2946 0a3a 3581      		ldd r19,Z+5
 2947 0a3c 232B      		or r18,r19
 2948 0a3e 01F4      		brne .L134
 2950               	.LM256:
 2951 0a40 21E0      		ldi r18,lo8(1)
 2952 0a42 6115      		cp r22,__zero_reg__
 2953 0a44 7105      		cpc r23,__zero_reg__
 2954 0a46 01F0      		breq .L137
 2956               	.LM257:
 2957 0a48 FB01      		movw r30,r22
 2958 0a4a 00C0      		rjmp .L152
 2959               	.L134:
 2960 0a4c FC01      		movw r30,r24
 2961 0a4e 8081      		ld r24,Z
 2962 0a50 9181      		ldd r25,Z+1
 452:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	if (cstr == NULL) return buffer[0] == 0;
 2964               	.LM258:
 2965 0a52 6115      		cp r22,__zero_reg__
 2966 0a54 7105      		cpc r23,__zero_reg__
 2967 0a56 01F4      		brne .L138
 2969               	.LM259:
 2970 0a58 21E0      		ldi r18,lo8(1)
 2971 0a5a FC01      		movw r30,r24
 2972               	.L152:
 2973 0a5c 8081      		ld r24,Z
 2974 0a5e 8823      		tst r24
 2975 0a60 01F0      		breq .L137
 2976 0a62 00C0      		rjmp .L151
 2977               	.L138:
 453:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	return strcmp(buffer, cstr) == 0;
 2979               	.LM260:
 2980 0a64 0E94 0000 		call strcmp
 2981 0a68 21E0      		ldi r18,lo8(1)
 2982 0a6a 892B      		or r24,r25
 2983 0a6c 01F0      		breq .L137
 2984               	.L151:
 2985 0a6e 20E0      		ldi r18,0
 2986               	.L137:
 454:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** }
 2988               	.LM261:
 2989 0a70 822F      		mov r24,r18
 2990 0a72 0895      		ret
 2992               	.Lscope50:
 2994               		.stabd	78,0,0
 2998               	.global	_ZNK6StringltERKS_
 3000               	_ZNK6StringltERKS_:
 3001               		.stabd	46,0,0
 455:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 
 456:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** unsigned char String::operator<(const String &rhs) const
 457:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** {
 3003               	.LM262:
 3004               	.LFBB51:
 3005               	/* prologue: function */
 3006               	/* frame size = 0 */
 3007               	/* stack size = 0 */
 3008               	.L__stack_usage = 0
 458:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	return compareTo(rhs) < 0;
 3010               	.LM263:
 3011 0a74 0E94 0000 		call _ZNK6String9compareToERKS_
 459:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** }
 3013               	.LM264:
 3014 0a78 892F      		mov r24,r25
 3015 0a7a 881F      		rol r24
 3016 0a7c 8827      		clr r24
 3017 0a7e 881F      		rol r24
 3018 0a80 0895      		ret
 3020               	.Lscope51:
 3022               		.stabd	78,0,0
 3026               	.global	_ZNK6StringgtERKS_
 3028               	_ZNK6StringgtERKS_:
 3029               		.stabd	46,0,0
 460:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 
 461:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** unsigned char String::operator>(const String &rhs) const
 462:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** {
 3031               	.LM265:
 3032               	.LFBB52:
 3033               	/* prologue: function */
 3034               	/* frame size = 0 */
 3035               	/* stack size = 0 */
 3036               	.L__stack_usage = 0
 463:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	return compareTo(rhs) > 0;
 3038               	.LM266:
 3039 0a82 0E94 0000 		call _ZNK6String9compareToERKS_
 3040 0a86 21E0      		ldi r18,lo8(1)
 3041 0a88 1816      		cp __zero_reg__,r24
 3042 0a8a 1906      		cpc __zero_reg__,r25
 3043 0a8c 04F0      		brlt .L155
 3044 0a8e 20E0      		ldi r18,0
 3045               	.L155:
 464:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** }
 3047               	.LM267:
 3048 0a90 822F      		mov r24,r18
 3049 0a92 0895      		ret
 3051               	.Lscope52:
 3053               		.stabd	78,0,0
 3057               	.global	_ZNK6StringleERKS_
 3059               	_ZNK6StringleERKS_:
 3060               		.stabd	46,0,0
 465:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 
 466:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** unsigned char String::operator<=(const String &rhs) const
 467:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** {
 3062               	.LM268:
 3063               	.LFBB53:
 3064               	/* prologue: function */
 3065               	/* frame size = 0 */
 3066               	/* stack size = 0 */
 3067               	.L__stack_usage = 0
 468:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	return compareTo(rhs) <= 0;
 3069               	.LM269:
 3070 0a94 0E94 0000 		call _ZNK6String9compareToERKS_
 3071 0a98 21E0      		ldi r18,lo8(1)
 3072 0a9a 1816      		cp __zero_reg__,r24
 3073 0a9c 1906      		cpc __zero_reg__,r25
 3074 0a9e 04F4      		brge .L157
 3075 0aa0 20E0      		ldi r18,0
 3076               	.L157:
 469:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** }
 3078               	.LM270:
 3079 0aa2 822F      		mov r24,r18
 3080 0aa4 0895      		ret
 3082               	.Lscope53:
 3084               		.stabd	78,0,0
 3088               	.global	_ZNK6StringgeERKS_
 3090               	_ZNK6StringgeERKS_:
 3091               		.stabd	46,0,0
 470:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 
 471:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** unsigned char String::operator>=(const String &rhs) const
 472:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** {
 3093               	.LM271:
 3094               	.LFBB54:
 3095               	/* prologue: function */
 3096               	/* frame size = 0 */
 3097               	/* stack size = 0 */
 3098               	.L__stack_usage = 0
 473:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	return compareTo(rhs) >= 0;
 3100               	.LM272:
 3101 0aa6 0E94 0000 		call _ZNK6String9compareToERKS_
 3102 0aaa 892F      		mov r24,r25
 3103 0aac 8095      		com r24
 474:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** }
 3105               	.LM273:
 3106 0aae 881F      		rol r24
 3107 0ab0 8827      		clr r24
 3108 0ab2 881F      		rol r24
 3109 0ab4 0895      		ret
 3111               	.Lscope54:
 3113               		.stabd	78,0,0
 3117               	.global	_ZNK6String16equalsIgnoreCaseERKS_
 3119               	_ZNK6String16equalsIgnoreCaseERKS_:
 3120               		.stabd	46,0,0
 475:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 
 476:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** unsigned char String::equalsIgnoreCase( const String &s2 ) const
 477:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** {
 3122               	.LM274:
 3123               	.LFBB55:
 3124 0ab6 EF92      		push r14
 3125 0ab8 FF92      		push r15
 3126 0aba 0F93      		push r16
 3127 0abc 1F93      		push r17
 3128 0abe CF93      		push r28
 3129 0ac0 DF93      		push r29
 3130               	/* prologue: function */
 3131               	/* frame size = 0 */
 3132               	/* stack size = 6 */
 3133               	.L__stack_usage = 6
 478:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	if (this == &s2) return 1;
 3135               	.LM275:
 3136 0ac2 8617      		cp r24,r22
 3137 0ac4 9707      		cpc r25,r23
 3138 0ac6 01F0      		breq .L165
 479:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	if (len != s2.len) return 0;
 3140               	.LM276:
 3141 0ac8 FC01      		movw r30,r24
 3142 0aca 2481      		ldd r18,Z+4
 3143 0acc 3581      		ldd r19,Z+5
 3144 0ace FB01      		movw r30,r22
 3145 0ad0 4481      		ldd r20,Z+4
 3146 0ad2 5581      		ldd r21,Z+5
 3147 0ad4 2417      		cp r18,r20
 3148 0ad6 3507      		cpc r19,r21
 3149 0ad8 01F4      		brne .L163
 480:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	if (len == 0) return 1;
 3151               	.LM277:
 3152 0ada 232B      		or r18,r19
 3153 0adc 01F0      		breq .L165
 3154 0ade DC01      		movw r26,r24
 3155 0ae0 0D91      		ld r16,X+
 3156 0ae2 1C91      		ld r17,X
 3157 0ae4 C081      		ld r28,Z
 3158 0ae6 D181      		ldd r29,Z+1
 3159               	.L161:
 481:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	const char *p1 = buffer;
 482:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	const char *p2 = s2.buffer;
 483:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	while (*p1) {
 3161               	.LM278:
 3162 0ae8 F801      		movw r30,r16
 3163 0aea 8191      		ld r24,Z+
 3164 0aec 8F01      		movw r16,r30
 3165 0aee 8823      		tst r24
 3166 0af0 01F0      		breq .L165
 484:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 		if (tolower(*p1++) != tolower(*p2++)) return 0;
 3168               	.LM279:
 3169 0af2 90E0      		ldi r25,0
 3170 0af4 0E94 0000 		call tolower
 3171 0af8 7C01      		movw r14,r24
 3172 0afa 8991      		ld r24,Y+
 3173 0afc 90E0      		ldi r25,0
 3174 0afe 0E94 0000 		call tolower
 3175 0b02 E816      		cp r14,r24
 3176 0b04 F906      		cpc r15,r25
 3177 0b06 01F0      		breq .L161
 3178               	.L163:
 479:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	if (len == 0) return 1;
 3180               	.LM280:
 3181 0b08 80E0      		ldi r24,0
 3182 0b0a 00C0      		rjmp .L160
 3183               	.L165:
 478:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	if (len != s2.len) return 0;
 3185               	.LM281:
 3186 0b0c 81E0      		ldi r24,lo8(1)
 3187               	.L160:
 3188               	/* epilogue start */
 485:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	} 
 486:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	return 1;
 487:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** }
 3190               	.LM282:
 3191 0b0e DF91      		pop r29
 3192 0b10 CF91      		pop r28
 3193 0b12 1F91      		pop r17
 3194 0b14 0F91      		pop r16
 3195 0b16 FF90      		pop r15
 3196 0b18 EF90      		pop r14
 3197 0b1a 0895      		ret
 3199               	.Lscope55:
 3201               		.stabd	78,0,0
 3206               	.global	_ZNK6String10startsWithERKS_j
 3208               	_ZNK6String10startsWithERKS_j:
 3209               		.stabd	46,0,0
 488:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 
 489:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** unsigned char String::startsWith( const String &s2 ) const
 490:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** {
 491:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	if (len < s2.len) return 0;
 492:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	return startsWith(s2, 0);
 493:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** }
 494:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 
 495:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** unsigned char String::startsWith( const String &s2, unsigned int offset ) const
 496:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** {
 3211               	.LM283:
 3212               	.LFBB56:
 3213               	/* prologue: function */
 3214               	/* frame size = 0 */
 3215               	/* stack size = 0 */
 3216               	.L__stack_usage = 0
 497:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	if (offset > len - s2.len || !buffer || !s2.buffer) return 0;
 3218               	.LM284:
 3219 0b1c DB01      		movw r26,r22
 3220 0b1e 1496      		adiw r26,4
 3221 0b20 ED91      		ld r30,X+
 3222 0b22 FC91      		ld r31,X
 3223 0b24 1597      		sbiw r26,4+1
 3224 0b26 DC01      		movw r26,r24
 3225 0b28 1496      		adiw r26,4
 3226 0b2a 2D91      		ld r18,X+
 3227 0b2c 3C91      		ld r19,X
 3228 0b2e 1597      		sbiw r26,4+1
 3229 0b30 2E1B      		sub r18,r30
 3230 0b32 3F0B      		sbc r19,r31
 3231 0b34 2417      		cp r18,r20
 3232 0b36 3507      		cpc r19,r21
 3233 0b38 00F0      		brlo .L172
 3235               	.LM285:
 3236 0b3a 2D91      		ld r18,X+
 3237 0b3c 3C91      		ld r19,X
 3238 0b3e 2115      		cp r18,__zero_reg__
 3239 0b40 3105      		cpc r19,__zero_reg__
 3240 0b42 01F0      		breq .L172
 3242               	.LM286:
 3243 0b44 DB01      		movw r26,r22
 3244 0b46 6D91      		ld r22,X+
 3245 0b48 7C91      		ld r23,X
 3246 0b4a 6115      		cp r22,__zero_reg__
 3247 0b4c 7105      		cpc r23,__zero_reg__
 3248 0b4e 01F0      		breq .L172
 3249 0b50 CA01      		movw r24,r20
 498:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	return strncmp( &buffer[offset], s2.buffer, s2.len ) == 0;
 3251               	.LM287:
 3252 0b52 AF01      		movw r20,r30
 3253 0b54 820F      		add r24,r18
 3254 0b56 931F      		adc r25,r19
 3255 0b58 0E94 0000 		call strncmp
 3256 0b5c 21E0      		ldi r18,lo8(1)
 3257 0b5e 892B      		or r24,r25
 3258 0b60 01F0      		breq .L168
 3259               	.L172:
 497:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	if (offset > len - s2.len || !buffer || !s2.buffer) return 0;
 3261               	.LM288:
 3262 0b62 20E0      		ldi r18,0
 3263               	.L168:
 499:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** }
 3265               	.LM289:
 3266 0b64 822F      		mov r24,r18
 3267 0b66 0895      		ret
 3269               	.Lscope56:
 3271               		.stabd	78,0,0
 3275               	.global	_ZNK6String10startsWithERKS_
 3277               	_ZNK6String10startsWithERKS_:
 3278               		.stabd	46,0,0
 490:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	if (len < s2.len) return 0;
 3280               	.LM290:
 3281               	.LFBB57:
 3282               	/* prologue: function */
 3283               	/* frame size = 0 */
 3284               	/* stack size = 0 */
 3285               	.L__stack_usage = 0
 491:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	return startsWith(s2, 0);
 3287               	.LM291:
 3288 0b68 FC01      		movw r30,r24
 3289 0b6a 4481      		ldd r20,Z+4
 3290 0b6c 5581      		ldd r21,Z+5
 3291 0b6e FB01      		movw r30,r22
 3292 0b70 2481      		ldd r18,Z+4
 3293 0b72 3581      		ldd r19,Z+5
 3294 0b74 4217      		cp r20,r18
 3295 0b76 5307      		cpc r21,r19
 3296 0b78 00F0      		brlo .L177
 492:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** }
 3298               	.LM292:
 3299 0b7a 40E0      		ldi r20,0
 3300 0b7c 50E0      		ldi r21,0
 3301 0b7e 0C94 0000 		jmp _ZNK6String10startsWithERKS_j
 3302               	.L177:
 493:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 
 3304               	.LM293:
 3305 0b82 80E0      		ldi r24,0
 3306 0b84 0895      		ret
 3308               	.Lscope57:
 3310               		.stabd	78,0,0
 3314               	.global	_ZNK6String8endsWithERKS_
 3316               	_ZNK6String8endsWithERKS_:
 3317               		.stabd	46,0,0
 500:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 
 501:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** unsigned char String::endsWith( const String &s2 ) const
 502:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** {
 3319               	.LM294:
 3320               	.LFBB58:
 3321               	/* prologue: function */
 3322               	/* frame size = 0 */
 3323               	/* stack size = 0 */
 3324               	.L__stack_usage = 0
 503:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	if ( len < s2.len || !buffer || !s2.buffer) return 0;
 3326               	.LM295:
 3327 0b86 FC01      		movw r30,r24
 3328 0b88 2481      		ldd r18,Z+4
 3329 0b8a 3581      		ldd r19,Z+5
 3330 0b8c FB01      		movw r30,r22
 3331 0b8e 4481      		ldd r20,Z+4
 3332 0b90 5581      		ldd r21,Z+5
 3333 0b92 2417      		cp r18,r20
 3334 0b94 3507      		cpc r19,r21
 3335 0b96 00F0      		brlo .L183
 3337               	.LM296:
 3338 0b98 FC01      		movw r30,r24
 3339 0b9a 8081      		ld r24,Z
 3340 0b9c 9181      		ldd r25,Z+1
 3341 0b9e 0097      		sbiw r24,0
 3342 0ba0 01F0      		breq .L183
 3344               	.LM297:
 3345 0ba2 FB01      		movw r30,r22
 3346 0ba4 6081      		ld r22,Z
 3347 0ba6 7181      		ldd r23,Z+1
 3348 0ba8 6115      		cp r22,__zero_reg__
 3349 0baa 7105      		cpc r23,__zero_reg__
 3350 0bac 01F0      		breq .L183
 504:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	return strcmp(&buffer[len - s2.len], s2.buffer) == 0;
 3352               	.LM298:
 3353 0bae 241B      		sub r18,r20
 3354 0bb0 350B      		sbc r19,r21
 3355 0bb2 820F      		add r24,r18
 3356 0bb4 931F      		adc r25,r19
 3357 0bb6 0E94 0000 		call strcmp
 3358 0bba 21E0      		ldi r18,lo8(1)
 3359 0bbc 892B      		or r24,r25
 3360 0bbe 01F0      		breq .L179
 3361               	.L183:
 503:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	if ( len < s2.len || !buffer || !s2.buffer) return 0;
 3363               	.LM299:
 3364 0bc0 20E0      		ldi r18,0
 3365               	.L179:
 505:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** }
 3367               	.LM300:
 3368 0bc2 822F      		mov r24,r18
 3369 0bc4 0895      		ret
 3371               	.Lscope58:
 3373               		.stabd	78,0,0
 3378               	.global	_ZN6String9setCharAtEjc
 3380               	_ZN6String9setCharAtEjc:
 3381               		.stabd	46,0,0
 506:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 
 507:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** /*********************************************/
 508:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** /*  Character Access                         */
 509:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** /*********************************************/
 510:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 
 511:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** char String::charAt(unsigned int loc) const
 512:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** {
 513:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	return operator[](loc);
 514:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** }
 515:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 
 516:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** void String::setCharAt(unsigned int loc, char c) 
 517:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** {
 3383               	.LM301:
 3384               	.LFBB59:
 3385               	/* prologue: function */
 3386               	/* frame size = 0 */
 3387               	/* stack size = 0 */
 3388               	.L__stack_usage = 0
 518:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	if (loc < len) buffer[loc] = c;
 3390               	.LM302:
 3391 0bc6 FC01      		movw r30,r24
 3392 0bc8 2481      		ldd r18,Z+4
 3393 0bca 3581      		ldd r19,Z+5
 3394 0bcc 6217      		cp r22,r18
 3395 0bce 7307      		cpc r23,r19
 3396 0bd0 00F4      		brsh .L187
 3398               	.LM303:
 3399 0bd2 8081      		ld r24,Z
 3400 0bd4 9181      		ldd r25,Z+1
 3401 0bd6 FC01      		movw r30,r24
 3402 0bd8 E60F      		add r30,r22
 3403 0bda F71F      		adc r31,r23
 3404 0bdc 4083      		st Z,r20
 3405               	.L187:
 3406 0bde 0895      		ret
 3408               	.Lscope59:
 3410               		.stabd	78,0,0
 3414               	.global	_ZN6StringixEj
 3416               	_ZN6StringixEj:
 3417               		.stabd	46,0,0
 519:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** }
 520:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 
 521:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** char & String::operator[](unsigned int index)
 522:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** {
 3419               	.LM304:
 3420               	.LFBB60:
 3421               	/* prologue: function */
 3422               	/* frame size = 0 */
 3423               	/* stack size = 0 */
 3424               	.L__stack_usage = 0
 523:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	static char dummy_writable_char;
 524:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	if (index >= len || !buffer) {
 3426               	.LM305:
 3427 0be0 FC01      		movw r30,r24
 3428 0be2 2481      		ldd r18,Z+4
 3429 0be4 3581      		ldd r19,Z+5
 3430 0be6 6217      		cp r22,r18
 3431 0be8 7307      		cpc r23,r19
 3432 0bea 00F4      		brsh .L190
 3434               	.LM306:
 3435 0bec 8081      		ld r24,Z
 3436 0bee 9181      		ldd r25,Z+1
 3437 0bf0 0097      		sbiw r24,0
 3438 0bf2 01F4      		brne .L191
 3439               	.L190:
 525:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 		dummy_writable_char = 0;
 3441               	.LM307:
 3442 0bf4 1092 0000 		sts _ZZN6StringixEjE19dummy_writable_char,__zero_reg__
 526:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 		return dummy_writable_char;
 3444               	.LM308:
 3445 0bf8 80E0      		ldi r24,lo8(_ZZN6StringixEjE19dummy_writable_char)
 3446 0bfa 90E0      		ldi r25,hi8(_ZZN6StringixEjE19dummy_writable_char)
 3447 0bfc 0895      		ret
 3448               	.L191:
 527:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	}
 528:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	return buffer[index];
 3450               	.LM309:
 3451 0bfe 860F      		add r24,r22
 3452 0c00 971F      		adc r25,r23
 529:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** }
 3454               	.LM310:
 3455 0c02 0895      		ret
 3460               	.Lscope60:
 3462               		.stabd	78,0,0
 3466               	.global	_ZNK6StringixEj
 3468               	_ZNK6StringixEj:
 3469               		.stabd	46,0,0
 530:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 
 531:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** char String::operator[]( unsigned int index ) const
 532:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** {
 3471               	.LM311:
 3472               	.LFBB61:
 3473               	/* prologue: function */
 3474               	/* frame size = 0 */
 3475               	/* stack size = 0 */
 3476               	.L__stack_usage = 0
 533:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	if (index >= len || !buffer) return 0;
 3478               	.LM312:
 3479 0c04 FC01      		movw r30,r24
 3480 0c06 2481      		ldd r18,Z+4
 3481 0c08 3581      		ldd r19,Z+5
 3482 0c0a 6217      		cp r22,r18
 3483 0c0c 7307      		cpc r23,r19
 3484 0c0e 00F4      		brsh .L196
 3485               	.LBB87:
 3486               	.LBB88:
 3487 0c10 8081      		ld r24,Z
 3488 0c12 9181      		ldd r25,Z+1
 3489 0c14 0097      		sbiw r24,0
 3490 0c16 01F0      		breq .L196
 534:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	return buffer[index];
 3492               	.LM313:
 3493 0c18 FC01      		movw r30,r24
 3494 0c1a E60F      		add r30,r22
 3495 0c1c F71F      		adc r31,r23
 3496 0c1e 8081      		ld r24,Z
 3497 0c20 0895      		ret
 3498               	.L196:
 3499               	.LBE88:
 3500               	.LBE87:
 533:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	if (index >= len || !buffer) return 0;
 3502               	.LM314:
 3503 0c22 80E0      		ldi r24,0
 535:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** }
 3505               	.LM315:
 3506 0c24 0895      		ret
 3508               	.Lscope61:
 3510               		.stabd	78,0,0
 3514               	.global	_ZNK6String6charAtEj
 3516               	_ZNK6String6charAtEj:
 3517               		.stabd	46,0,0
 512:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	return operator[](loc);
 3519               	.LM316:
 3520               	.LFBB62:
 3521               	/* prologue: function */
 3522               	/* frame size = 0 */
 3523               	/* stack size = 0 */
 3524               	.L__stack_usage = 0
 513:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** }
 3526               	.LM317:
 3527 0c26 0C94 0000 		jmp _ZNK6StringixEj
 3529               	.Lscope62:
 3531               		.stabd	78,0,0
 3537               	.global	_ZNK6String8getBytesEPhjj
 3539               	_ZNK6String8getBytesEPhjj:
 3540               		.stabd	46,0,0
 536:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 
 537:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** void String::getBytes(unsigned char *buf, unsigned int bufsize, unsigned int index) const
 538:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** {
 3542               	.LM318:
 3543               	.LFBB63:
 3544 0c2a 0F93      		push r16
 3545 0c2c 1F93      		push r17
 3546 0c2e CF93      		push r28
 3547 0c30 DF93      		push r29
 3548               	/* prologue: function */
 3549               	/* frame size = 0 */
 3550               	/* stack size = 4 */
 3551               	.L__stack_usage = 4
 539:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	if (!bufsize || !buf) return;
 3553               	.LM319:
 3554 0c32 4115      		cp r20,__zero_reg__
 3555 0c34 5105      		cpc r21,__zero_reg__
 3556 0c36 01F0      		breq .L198
 3558               	.LM320:
 3559 0c38 6115      		cp r22,__zero_reg__
 3560 0c3a 7105      		cpc r23,__zero_reg__
 3561 0c3c 01F0      		breq .L198
 540:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	if (index >= len) {
 3563               	.LM321:
 3564 0c3e DC01      		movw r26,r24
 3565 0c40 1496      		adiw r26,4
 3566 0c42 ED91      		ld r30,X+
 3567 0c44 FC91      		ld r31,X
 3568 0c46 1597      		sbiw r26,4+1
 3569 0c48 2E17      		cp r18,r30
 3570 0c4a 3F07      		cpc r19,r31
 3571 0c4c 00F0      		brlo .L200
 541:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 		buf[0] = 0;
 3573               	.LM322:
 3574 0c4e FB01      		movw r30,r22
 3575 0c50 1082      		st Z,__zero_reg__
 542:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 		return;
 3577               	.LM323:
 3578 0c52 00C0      		rjmp .L198
 3579               	.L200:
 543:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	}
 544:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	unsigned int n = bufsize - 1;
 545:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	if (n > len - index) n = len - index;
 3581               	.LM324:
 3582 0c54 E21B      		sub r30,r18
 3583 0c56 F30B      		sbc r31,r19
 3584 0c58 EA01      		movw r28,r20
 3585 0c5a 2197      		sbiw r28,1
 3586 0c5c EC17      		cp r30,r28
 3587 0c5e FD07      		cpc r31,r29
 3588 0c60 00F4      		brsh .L201
 3589 0c62 EF01      		movw r28,r30
 3590               	.L201:
 3591 0c64 8B01      		movw r16,r22
 3592 0c66 FC01      		movw r30,r24
 546:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	strncpy((char *)buf, buffer + index, n);
 3594               	.LM325:
 3595 0c68 6081      		ld r22,Z
 3596 0c6a 7181      		ldd r23,Z+1
 3597 0c6c 620F      		add r22,r18
 3598 0c6e 731F      		adc r23,r19
 3599 0c70 AE01      		movw r20,r28
 3600 0c72 C801      		movw r24,r16
 3601 0c74 0E94 0000 		call strncpy
 547:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	buf[n] = 0;
 3603               	.LM326:
 3604 0c78 C00F      		add r28,r16
 3605 0c7a D11F      		adc r29,r17
 3606 0c7c 1882      		st Y,__zero_reg__
 3607               	.L198:
 3608               	/* epilogue start */
 548:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** }
 3610               	.LM327:
 3611 0c7e DF91      		pop r29
 3612 0c80 CF91      		pop r28
 3613 0c82 1F91      		pop r17
 3614 0c84 0F91      		pop r16
 3615 0c86 0895      		ret
 3617               	.Lscope63:
 3619               		.stabd	78,0,0
 3624               	.global	_ZNK6String7indexOfEcj
 3626               	_ZNK6String7indexOfEcj:
 3627               		.stabd	46,0,0
 549:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 
 550:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** /*********************************************/
 551:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** /*  Search                                   */
 552:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** /*********************************************/
 553:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 
 554:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** int String::indexOf(char c) const
 555:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** {
 556:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	return indexOf(c, 0);
 557:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** }
 558:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 
 559:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** int String::indexOf( char ch, unsigned int fromIndex ) const
 560:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** {
 3629               	.LM328:
 3630               	.LFBB64:
 3631 0c88 CF93      		push r28
 3632 0c8a DF93      		push r29
 3633               	/* prologue: function */
 3634               	/* frame size = 0 */
 3635               	/* stack size = 2 */
 3636               	.L__stack_usage = 2
 561:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	if (fromIndex >= len) return -1;
 3638               	.LM329:
 3639 0c8c FC01      		movw r30,r24
 3640 0c8e 2481      		ldd r18,Z+4
 3641 0c90 3581      		ldd r19,Z+5
 3642 0c92 4217      		cp r20,r18
 3643 0c94 5307      		cpc r21,r19
 3644 0c96 00F4      		brsh .L211
 562:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	const char* temp = strchr(buffer + fromIndex, ch);
 3646               	.LM330:
 3647 0c98 C081      		ld r28,Z
 3648 0c9a D181      		ldd r29,Z+1
 3649 0c9c 70E0      		ldi r23,0
 3650 0c9e CE01      		movw r24,r28
 3651 0ca0 840F      		add r24,r20
 3652 0ca2 951F      		adc r25,r21
 3653 0ca4 0E94 0000 		call strchr
 563:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	if (temp == NULL) return -1;
 3655               	.LM331:
 3656 0ca8 0097      		sbiw r24,0
 3657 0caa 01F0      		breq .L211
 564:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	return temp - buffer;
 3659               	.LM332:
 3660 0cac 8C1B      		sub r24,r28
 3661 0cae 9D0B      		sbc r25,r29
 3662 0cb0 00C0      		rjmp .L209
 3663               	.L211:
 561:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	const char* temp = strchr(buffer + fromIndex, ch);
 3665               	.LM333:
 3666 0cb2 8FEF      		ldi r24,lo8(-1)
 3667 0cb4 9FEF      		ldi r25,lo8(-1)
 3668               	.L209:
 3669               	/* epilogue start */
 565:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** }
 3671               	.LM334:
 3672 0cb6 DF91      		pop r29
 3673 0cb8 CF91      		pop r28
 3674 0cba 0895      		ret
 3679               	.Lscope64:
 3681               		.stabd	78,0,0
 3685               	.global	_ZNK6String7indexOfEc
 3687               	_ZNK6String7indexOfEc:
 3688               		.stabd	46,0,0
 555:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	return indexOf(c, 0);
 3690               	.LM335:
 3691               	.LFBB65:
 3692               	/* prologue: function */
 3693               	/* frame size = 0 */
 3694               	/* stack size = 0 */
 3695               	.L__stack_usage = 0
 556:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** }
 3697               	.LM336:
 3698 0cbc 40E0      		ldi r20,0
 3699 0cbe 50E0      		ldi r21,0
 3700 0cc0 0C94 0000 		jmp _ZNK6String7indexOfEcj
 3702               	.Lscope65:
 3704               		.stabd	78,0,0
 3709               	.global	_ZNK6String7indexOfERKS_j
 3711               	_ZNK6String7indexOfERKS_j:
 3712               		.stabd	46,0,0
 566:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 
 567:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** int String::indexOf(const String &s2) const
 568:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** {
 569:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	return indexOf(s2, 0);
 570:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** }
 571:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 
 572:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** int String::indexOf(const String &s2, unsigned int fromIndex) const
 573:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** {
 3714               	.LM337:
 3715               	.LFBB66:
 3716 0cc4 CF93      		push r28
 3717 0cc6 DF93      		push r29
 3718               	/* prologue: function */
 3719               	/* frame size = 0 */
 3720               	/* stack size = 2 */
 3721               	.L__stack_usage = 2
 574:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	if (fromIndex >= len) return -1;
 3723               	.LM338:
 3724 0cc8 FC01      		movw r30,r24
 3725 0cca 2481      		ldd r18,Z+4
 3726 0ccc 3581      		ldd r19,Z+5
 3727 0cce 4217      		cp r20,r18
 3728 0cd0 5307      		cpc r21,r19
 3729 0cd2 00F4      		brsh .L216
 3730 0cd4 FB01      		movw r30,r22
 3731 0cd6 DC01      		movw r26,r24
 575:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	const char *found = strstr(buffer + fromIndex, s2.buffer);
 3733               	.LM339:
 3734 0cd8 CD91      		ld r28,X+
 3735 0cda DC91      		ld r29,X
 3736 0cdc 6081      		ld r22,Z
 3737 0cde 7181      		ldd r23,Z+1
 3738 0ce0 CE01      		movw r24,r28
 3739 0ce2 840F      		add r24,r20
 3740 0ce4 951F      		adc r25,r21
 3741 0ce6 0E94 0000 		call strstr
 576:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	if (found == NULL) return -1;
 3743               	.LM340:
 3744 0cea 0097      		sbiw r24,0
 3745 0cec 01F0      		breq .L216
 577:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	return found - buffer;
 3747               	.LM341:
 3748 0cee 8C1B      		sub r24,r28
 3749 0cf0 9D0B      		sbc r25,r29
 3750 0cf2 00C0      		rjmp .L214
 3751               	.L216:
 574:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	const char *found = strstr(buffer + fromIndex, s2.buffer);
 3753               	.LM342:
 3754 0cf4 8FEF      		ldi r24,lo8(-1)
 3755 0cf6 9FEF      		ldi r25,lo8(-1)
 3756               	.L214:
 3757               	/* epilogue start */
 578:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** }
 3759               	.LM343:
 3760 0cf8 DF91      		pop r29
 3761 0cfa CF91      		pop r28
 3762 0cfc 0895      		ret
 3767               	.Lscope66:
 3769               		.stabd	78,0,0
 3773               	.global	_ZNK6String7indexOfERKS_
 3775               	_ZNK6String7indexOfERKS_:
 3776               		.stabd	46,0,0
 568:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	return indexOf(s2, 0);
 3778               	.LM344:
 3779               	.LFBB67:
 3780               	/* prologue: function */
 3781               	/* frame size = 0 */
 3782               	/* stack size = 0 */
 3783               	.L__stack_usage = 0
 569:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** }
 3785               	.LM345:
 3786 0cfe 40E0      		ldi r20,0
 3787 0d00 50E0      		ldi r21,0
 3788 0d02 0C94 0000 		jmp _ZNK6String7indexOfERKS_j
 3790               	.Lscope67:
 3792               		.stabd	78,0,0
 3797               	.global	_ZNK6String11lastIndexOfEcj
 3799               	_ZNK6String11lastIndexOfEcj:
 3800               		.stabd	46,0,0
 579:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 
 580:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** int String::lastIndexOf( char theChar ) const
 581:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** {
 582:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	return lastIndexOf(theChar, len - 1);
 583:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** }
 584:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 
 585:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** int String::lastIndexOf(char ch, unsigned int fromIndex) const
 586:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** {
 3802               	.LM346:
 3803               	.LFBB68:
 3804 0d06 DF92      		push r13
 3805 0d08 EF92      		push r14
 3806 0d0a FF92      		push r15
 3807 0d0c 0F93      		push r16
 3808 0d0e 1F93      		push r17
 3809 0d10 CF93      		push r28
 3810 0d12 DF93      		push r29
 3811               	/* prologue: function */
 3812               	/* frame size = 0 */
 3813               	/* stack size = 7 */
 3814               	.L__stack_usage = 7
 587:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	if (fromIndex >= len) return -1;
 3816               	.LM347:
 3817 0d14 DC01      		movw r26,r24
 3818 0d16 1496      		adiw r26,4
 3819 0d18 2D91      		ld r18,X+
 3820 0d1a 3C91      		ld r19,X
 3821 0d1c 1597      		sbiw r26,4+1
 3822 0d1e 4217      		cp r20,r18
 3823 0d20 5307      		cpc r21,r19
 3824 0d22 00F0      		brlo .L219
 3825               	.L221:
 3826 0d24 8FEF      		ldi r24,lo8(-1)
 3827 0d26 9FEF      		ldi r25,lo8(-1)
 3828 0d28 00C0      		rjmp .L220
 3829               	.L219:
 3830 0d2a 8C01      		movw r16,r24
 588:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	char tempchar = buffer[fromIndex + 1];
 3832               	.LM348:
 3833 0d2c EA01      		movw r28,r20
 3834 0d2e 2196      		adiw r28,1
 3835 0d30 DC01      		movw r26,r24
 3836 0d32 ED91      		ld r30,X+
 3837 0d34 FC91      		ld r31,X
 3838 0d36 1197      		sbiw r26,1
 3839 0d38 EC0F      		add r30,r28
 3840 0d3a FD1F      		adc r31,r29
 3841 0d3c D080      		ld r13,Z
 589:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	buffer[fromIndex + 1] = '\0';
 3843               	.LM349:
 3844 0d3e 1082      		st Z,__zero_reg__
 590:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	char* temp = strrchr( buffer, ch );
 3846               	.LM350:
 3847 0d40 ED90      		ld r14,X+
 3848 0d42 FC90      		ld r15,X
 3849 0d44 70E0      		ldi r23,0
 3850 0d46 C701      		movw r24,r14
 3851 0d48 0E94 0000 		call strrchr
 591:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	buffer[fromIndex + 1] = tempchar;
 3853               	.LM351:
 3854 0d4c CE0D      		add r28,r14
 3855 0d4e DF1D      		adc r29,r15
 3856 0d50 D882      		st Y,r13
 592:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	if (temp == NULL) return -1;
 3858               	.LM352:
 3859 0d52 0097      		sbiw r24,0
 3860 0d54 01F0      		breq .L221
 593:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	return temp - buffer;
 3862               	.LM353:
 3863 0d56 F801      		movw r30,r16
 3864 0d58 2081      		ld r18,Z
 3865 0d5a 3181      		ldd r19,Z+1
 3866 0d5c 821B      		sub r24,r18
 3867 0d5e 930B      		sbc r25,r19
 3868               	.L220:
 3869               	/* epilogue start */
 594:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** }
 3871               	.LM354:
 3872 0d60 DF91      		pop r29
 3873 0d62 CF91      		pop r28
 3874 0d64 1F91      		pop r17
 3875 0d66 0F91      		pop r16
 3876 0d68 FF90      		pop r15
 3877 0d6a EF90      		pop r14
 3878 0d6c DF90      		pop r13
 3879 0d6e 0895      		ret
 3885               	.Lscope68:
 3887               		.stabd	78,0,0
 3891               	.global	_ZNK6String11lastIndexOfEc
 3893               	_ZNK6String11lastIndexOfEc:
 3894               		.stabd	46,0,0
 581:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	return lastIndexOf(theChar, len - 1);
 3896               	.LM355:
 3897               	.LFBB69:
 3898               	/* prologue: function */
 3899               	/* frame size = 0 */
 3900               	/* stack size = 0 */
 3901               	.L__stack_usage = 0
 582:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** }
 3903               	.LM356:
 3904 0d70 FC01      		movw r30,r24
 3905 0d72 4481      		ldd r20,Z+4
 3906 0d74 5581      		ldd r21,Z+5
 3907 0d76 4150      		subi r20,1
 3908 0d78 5109      		sbc r21,__zero_reg__
 3909 0d7a 0C94 0000 		jmp _ZNK6String11lastIndexOfEcj
 3911               	.Lscope69:
 3913               		.stabd	78,0,0
 3918               	.global	_ZNK6String11lastIndexOfERKS_j
 3920               	_ZNK6String11lastIndexOfERKS_j:
 3921               		.stabd	46,0,0
 595:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 
 596:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** int String::lastIndexOf(const String &s2) const
 597:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** {
 598:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	return lastIndexOf(s2, len - s2.len);
 599:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** }
 600:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 
 601:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** int String::lastIndexOf(const String &s2, unsigned int fromIndex) const
 602:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** {
 3923               	.LM357:
 3924               	.LFBB70:
 3925 0d7e AF92      		push r10
 3926 0d80 BF92      		push r11
 3927 0d82 CF92      		push r12
 3928 0d84 DF92      		push r13
 3929 0d86 EF92      		push r14
 3930 0d88 FF92      		push r15
 3931 0d8a 0F93      		push r16
 3932 0d8c 1F93      		push r17
 3933 0d8e CF93      		push r28
 3934 0d90 DF93      		push r29
 3935               	/* prologue: function */
 3936               	/* frame size = 0 */
 3937               	/* stack size = 10 */
 3938               	.L__stack_usage = 10
 3939 0d92 7B01      		movw r14,r22
 3940 0d94 8A01      		movw r16,r20
 603:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp ****   	if (s2.len == 0 || len == 0 || s2.len > len) return -1;
 3942               	.LM358:
 3943 0d96 FB01      		movw r30,r22
 3944 0d98 4481      		ldd r20,Z+4
 3945 0d9a 5581      		ldd r21,Z+5
 3946 0d9c 4115      		cp r20,__zero_reg__
 3947 0d9e 5105      		cpc r21,__zero_reg__
 3948 0da0 01F0      		breq .L233
 3950               	.LM359:
 3951 0da2 FC01      		movw r30,r24
 3952 0da4 2481      		ldd r18,Z+4
 3953 0da6 3581      		ldd r19,Z+5
 3954 0da8 2115      		cp r18,__zero_reg__
 3955 0daa 3105      		cpc r19,__zero_reg__
 3956 0dac 01F0      		breq .L233
 3958               	.LM360:
 3959 0dae 2417      		cp r18,r20
 3960 0db0 3507      		cpc r19,r21
 3961 0db2 00F0      		brlo .L233
 604:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	if (fromIndex >= len) fromIndex = len - 1;
 3963               	.LM361:
 3964 0db4 0217      		cp r16,r18
 3965 0db6 1307      		cpc r17,r19
 3966 0db8 00F0      		brlo .L228
 3968               	.LM362:
 3969 0dba 8901      		movw r16,r18
 3970 0dbc 0150      		subi r16,1
 3971 0dbe 1109      		sbc r17,__zero_reg__
 3972               	.L228:
 3973               	.LBB89:
 605:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	int found = -1;
 606:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	for (char *p = buffer; p <= buffer + fromIndex; p++) {
 3975               	.LM363:
 3976 0dc0 FC01      		movw r30,r24
 3977 0dc2 A080      		ld r10,Z
 3978 0dc4 B180      		ldd r11,Z+1
 3979 0dc6 C501      		movw r24,r10
 3980               	.LBE89:
 605:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	int found = -1;
 3982               	.LM364:
 3983 0dc8 DFEF      		ldi r29,lo8(-1)
 3984 0dca CFEF      		ldi r28,lo8(-1)
 3985               	.LBB90:
 3987               	.LM365:
 3988 0dcc 6501      		movw r12,r10
 3989 0dce C00E      		add r12,r16
 3990 0dd0 D11E      		adc r13,r17
 3991               	.L230:
 3993               	.LM366:
 3994 0dd2 C816      		cp r12,r24
 3995 0dd4 D906      		cpc r13,r25
 3996 0dd6 00F0      		brlo .L235
 607:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 		p = strstr(p, s2.buffer);
 3998               	.LM367:
 3999 0dd8 F701      		movw r30,r14
 4000 0dda 6081      		ld r22,Z
 4001 0ddc 7181      		ldd r23,Z+1
 4002 0dde 0E94 0000 		call strstr
 608:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 		if (!p) break;
 4004               	.LM368:
 4005 0de2 0097      		sbiw r24,0
 4006 0de4 01F0      		breq .L235
 609:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 		if ((unsigned int)(p - buffer) <= fromIndex) found = p - buffer;
 4008               	.LM369:
 4009 0de6 9C01      		movw r18,r24
 4010 0de8 2A19      		sub r18,r10
 4011 0dea 3B09      		sbc r19,r11
 4012 0dec 0217      		cp r16,r18
 4013 0dee 1307      		cpc r17,r19
 4014 0df0 00F0      		brlo .L229
 4015 0df2 D22F      		mov r29,r18
 4016 0df4 C32F      		mov r28,r19
 4017               	.L229:
 606:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 		p = strstr(p, s2.buffer);
 4019               	.LM370:
 4020 0df6 0196      		adiw r24,1
 4021 0df8 00C0      		rjmp .L230
 4022               	.L233:
 4023               	.LBE90:
 603:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	if (fromIndex >= len) fromIndex = len - 1;
 4025               	.LM371:
 4026 0dfa 8FEF      		ldi r24,lo8(-1)
 4027 0dfc 9FEF      		ldi r25,lo8(-1)
 4028 0dfe 00C0      		rjmp .L227
 4029               	.L235:
 4030               	.LBB91:
 4031 0e00 8D2F      		mov r24,r29
 4032 0e02 9C2F      		mov r25,r28
 4033               	.L227:
 4034               	/* epilogue start */
 4035               	.LBE91:
 610:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	}
 611:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	return found;
 612:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** }
 4037               	.LM372:
 4038 0e04 DF91      		pop r29
 4039 0e06 CF91      		pop r28
 4040 0e08 1F91      		pop r17
 4041 0e0a 0F91      		pop r16
 4042 0e0c FF90      		pop r15
 4043 0e0e EF90      		pop r14
 4044 0e10 DF90      		pop r13
 4045 0e12 CF90      		pop r12
 4046 0e14 BF90      		pop r11
 4047 0e16 AF90      		pop r10
 4048 0e18 0895      		ret
 4050               	.Lscope70:
 4052               		.stabd	78,0,0
 4056               	.global	_ZNK6String11lastIndexOfERKS_
 4058               	_ZNK6String11lastIndexOfERKS_:
 4059               		.stabd	46,0,0
 597:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	return lastIndexOf(s2, len - s2.len);
 4061               	.LM373:
 4062               	.LFBB71:
 4063               	/* prologue: function */
 4064               	/* frame size = 0 */
 4065               	/* stack size = 0 */
 4066               	.L__stack_usage = 0
 598:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** }
 4068               	.LM374:
 4069 0e1a FC01      		movw r30,r24
 4070 0e1c 4481      		ldd r20,Z+4
 4071 0e1e 5581      		ldd r21,Z+5
 4072 0e20 FB01      		movw r30,r22
 4073 0e22 2481      		ldd r18,Z+4
 4074 0e24 3581      		ldd r19,Z+5
 4075 0e26 421B      		sub r20,r18
 4076 0e28 530B      		sbc r21,r19
 4077 0e2a 0C94 0000 		jmp _ZNK6String11lastIndexOfERKS_j
 4079               	.Lscope71:
 4081               		.stabd	78,0,0
 4082               		.section	.rodata.str1.1,"aMS",@progbits,1
 4083               	.LC0:
 4084 0000 00        		.string	""
 4085               		.text
 4090               	.global	_ZNK6String9substringEjj
 4092               	_ZNK6String9substringEjj:
 4093               		.stabd	46,0,0
 613:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 
 614:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** String String::substring(unsigned int left, unsigned int right) const
 615:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** {
 4095               	.LM375:
 4096               	.LFBB72:
 4097 0e2e BF92      		push r11
 4098 0e30 CF92      		push r12
 4099 0e32 DF92      		push r13
 4100 0e34 EF92      		push r14
 4101 0e36 FF92      		push r15
 4102 0e38 0F93      		push r16
 4103 0e3a 1F93      		push r17
 4104 0e3c CF93      		push r28
 4105 0e3e DF93      		push r29
 4106               	/* prologue: function */
 4107               	/* frame size = 0 */
 4108               	/* stack size = 9 */
 4109               	.L__stack_usage = 9
 4110 0e40 7C01      		movw r14,r24
 4111 0e42 6B01      		movw r12,r22
 4112 0e44 8A01      		movw r16,r20
 4113 0e46 E901      		movw r28,r18
 4114               	.LBB92:
 616:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	if (left > right) {
 4116               	.LM376:
 4117 0e48 2417      		cp r18,r20
 4118 0e4a 3507      		cpc r19,r21
 4119 0e4c 00F4      		brsh .L238
 4120 0e4e 812F      		mov r24,r17
 4121 0e50 8901      		movw r16,r18
 4122 0e52 C42F      		mov r28,r20
 4123 0e54 D82F      		mov r29,r24
 4124               	.L238:
 4125               	.LBE92:
 617:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 		unsigned int temp = right;
 618:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 		right = left;
 619:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 		left = temp;
 620:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	}
 621:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	String out;
 4127               	.LM377:
 4128 0e56 60E0      		ldi r22,lo8(.LC0)
 4129 0e58 70E0      		ldi r23,hi8(.LC0)
 4130 0e5a C701      		movw r24,r14
 4131 0e5c 0E94 0000 		call _ZN6StringC1EPKc
 622:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	if (left >= len) return out;
 4133               	.LM378:
 4134 0e60 D601      		movw r26,r12
 4135 0e62 1496      		adiw r26,4
 4136 0e64 8D91      		ld r24,X+
 4137 0e66 9C91      		ld r25,X
 4138 0e68 1597      		sbiw r26,4+1
 4139 0e6a 0817      		cp r16,r24
 4140 0e6c 1907      		cpc r17,r25
 4141 0e6e 00F4      		brsh .L237
 4142 0e70 8C17      		cp r24,r28
 4143 0e72 9D07      		cpc r25,r29
 4144 0e74 00F4      		brsh .L240
 4145 0e76 EC01      		movw r28,r24
 4146               	.L240:
 623:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	if (right > len) right = len;
 624:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	char temp = buffer[right];  // save the replaced character
 4148               	.LM379:
 4149 0e78 D601      		movw r26,r12
 4150 0e7a ED91      		ld r30,X+
 4151 0e7c FC91      		ld r31,X
 4152 0e7e 1197      		sbiw r26,1
 4153 0e80 EC0F      		add r30,r28
 4154 0e82 FD1F      		adc r31,r29
 4155 0e84 B080      		ld r11,Z
 625:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	buffer[right] = '\0';	
 4157               	.LM380:
 4158 0e86 1082      		st Z,__zero_reg__
 626:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	out = buffer + left;  // pointer arithmetic
 4160               	.LM381:
 4161 0e88 6D91      		ld r22,X+
 4162 0e8a 7C91      		ld r23,X
 4163 0e8c 600F      		add r22,r16
 4164 0e8e 711F      		adc r23,r17
 4165 0e90 C701      		movw r24,r14
 4166 0e92 0E94 0000 		call _ZN6StringaSEPKc
 627:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	buffer[right] = temp;  //restore character
 4168               	.LM382:
 4169 0e96 D601      		movw r26,r12
 4170 0e98 ED91      		ld r30,X+
 4171 0e9a FC91      		ld r31,X
 4172 0e9c EC0F      		add r30,r28
 4173 0e9e FD1F      		adc r31,r29
 4174 0ea0 B082      		st Z,r11
 4175               	.L237:
 628:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	return out;
 629:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** }
 4177               	.LM383:
 4178 0ea2 C701      		movw r24,r14
 4179               	/* epilogue start */
 4180 0ea4 DF91      		pop r29
 4181 0ea6 CF91      		pop r28
 4182 0ea8 1F91      		pop r17
 4183 0eaa 0F91      		pop r16
 4184 0eac FF90      		pop r15
 4185 0eae EF90      		pop r14
 4186 0eb0 DF90      		pop r13
 4187 0eb2 CF90      		pop r12
 4188 0eb4 BF90      		pop r11
 4189 0eb6 0895      		ret
 4194               	.Lscope72:
 4196               		.stabd	78,0,0
 4201               	.global	_ZN6String7replaceEcc
 4203               	_ZN6String7replaceEcc:
 4204               		.stabd	46,0,0
 630:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 
 631:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** /*********************************************/
 632:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** /*  Modification                             */
 633:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** /*********************************************/
 634:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 
 635:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** void String::replace(char find, char replace)
 636:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** {
 4206               	.LM384:
 4207               	.LFBB73:
 4208               	/* prologue: function */
 4209               	/* frame size = 0 */
 4210               	/* stack size = 0 */
 4211               	.L__stack_usage = 0
 637:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	if (!buffer) return;
 4213               	.LM385:
 4214 0eb8 DC01      		movw r26,r24
 4215 0eba ED91      		ld r30,X+
 4216 0ebc FC91      		ld r31,X
 4217 0ebe 3097      		sbiw r30,0
 4218 0ec0 01F0      		breq .L241
 4219               	.L244:
 4220               	.LBB93:
 638:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	for (char *p = buffer; *p; p++) {
 4222               	.LM386:
 4223 0ec2 8081      		ld r24,Z
 4224 0ec4 8823      		tst r24
 4225 0ec6 01F0      		breq .L241
 639:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 		if (*p == find) *p = replace;
 4227               	.LM387:
 4228 0ec8 8613      		cpse r24,r22
 4229 0eca 00C0      		rjmp .L243
 4231               	.LM388:
 4232 0ecc 4083      		st Z,r20
 4233               	.L243:
 638:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	for (char *p = buffer; *p; p++) {
 4235               	.LM389:
 4236 0ece 3196      		adiw r30,1
 4237 0ed0 00C0      		rjmp .L244
 4238               	.L241:
 4239 0ed2 0895      		ret
 4240               	.LBE93:
 4245               	.Lscope73:
 4247               		.stabd	78,0,0
 4252               	.global	_ZN6String7replaceERKS_S1_
 4254               	_ZN6String7replaceERKS_S1_:
 4255               		.stabd	46,0,0
 640:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	}
 641:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** }
 642:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 
 643:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** void String::replace(const String& find, const String& replace)
 644:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** {
 4257               	.LM390:
 4258               	.LFBB74:
 4259 0ed4 2F92      		push r2
 4260 0ed6 3F92      		push r3
 4261 0ed8 4F92      		push r4
 4262 0eda 5F92      		push r5
 4263 0edc 6F92      		push r6
 4264 0ede 7F92      		push r7
 4265 0ee0 8F92      		push r8
 4266 0ee2 9F92      		push r9
 4267 0ee4 AF92      		push r10
 4268 0ee6 BF92      		push r11
 4269 0ee8 CF92      		push r12
 4270 0eea DF92      		push r13
 4271 0eec EF92      		push r14
 4272 0eee FF92      		push r15
 4273 0ef0 0F93      		push r16
 4274 0ef2 1F93      		push r17
 4275 0ef4 CF93      		push r28
 4276 0ef6 DF93      		push r29
 4277               	/* prologue: function */
 4278               	/* frame size = 0 */
 4279               	/* stack size = 18 */
 4280               	.L__stack_usage = 18
 645:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	if (len == 0 || find.len == 0) return;
 4282               	.LM391:
 4283 0ef8 FC01      		movw r30,r24
 4284 0efa 4480      		ldd r4,Z+4
 4285 0efc 5580      		ldd r5,Z+5
 4286 0efe 4114      		cp r4,__zero_reg__
 4287 0f00 5104      		cpc r5,__zero_reg__
 4288 0f02 01F4      		brne .+2
 4289 0f04 00C0      		rjmp .L251
 4291               	.LM392:
 4292 0f06 FB01      		movw r30,r22
 4293 0f08 8480      		ldd r8,Z+4
 4294 0f0a 9580      		ldd r9,Z+5
 4295 0f0c 8114      		cp r8,__zero_reg__
 4296 0f0e 9104      		cpc r9,__zero_reg__
 4297 0f10 01F4      		brne .+2
 4298 0f12 00C0      		rjmp .L251
 4299 0f14 7A01      		movw r14,r20
 4300 0f16 6B01      		movw r12,r22
 4301 0f18 8C01      		movw r16,r24
 646:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	int diff = replace.len - find.len;
 4303               	.LM393:
 4304 0f1a FA01      		movw r30,r20
 4305 0f1c 6480      		ldd r6,Z+4
 4306 0f1e 7580      		ldd r7,Z+5
 4307 0f20 6818      		sub r6,r8
 4308 0f22 7908      		sbc r7,r9
 647:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	char *readFrom = buffer;
 4310               	.LM394:
 4311 0f24 FC01      		movw r30,r24
 4312 0f26 C081      		ld r28,Z
 4313 0f28 D181      		ldd r29,Z+1
 4314               	.LBB94:
 648:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	char *foundAt;
 649:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	if (diff == 0) {
 4316               	.LM395:
 4317 0f2a 6114      		cp r6,__zero_reg__
 4318 0f2c 7104      		cpc r7,__zero_reg__
 4319 0f2e 01F4      		brne .L255
 4320               	.L256:
 650:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 		while ((foundAt = strstr(readFrom, find.buffer)) != NULL) {
 4322               	.LM396:
 4323 0f30 F601      		movw r30,r12
 4324 0f32 6081      		ld r22,Z
 4325 0f34 7181      		ldd r23,Z+1
 4326 0f36 CE01      		movw r24,r28
 4327 0f38 0E94 0000 		call strstr
 4328 0f3c EC01      		movw r28,r24
 4329 0f3e 0097      		sbiw r24,0
 4330 0f40 01F4      		brne .+2
 4331 0f42 00C0      		rjmp .L251
 651:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 			memcpy(foundAt, replace.buffer, replace.len);
 4333               	.LM397:
 4334 0f44 F701      		movw r30,r14
 4335 0f46 6081      		ld r22,Z
 4336 0f48 7181      		ldd r23,Z+1
 4337 0f4a 4481      		ldd r20,Z+4
 4338 0f4c 5581      		ldd r21,Z+5
 4339 0f4e 0E94 0000 		call memcpy
 652:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 			readFrom = foundAt + replace.len;
 4341               	.LM398:
 4342 0f52 F701      		movw r30,r14
 4343 0f54 8481      		ldd r24,Z+4
 4344 0f56 9581      		ldd r25,Z+5
 4345 0f58 C80F      		add r28,r24
 4346 0f5a D91F      		adc r29,r25
 650:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 		while ((foundAt = strstr(readFrom, find.buffer)) != NULL) {
 4348               	.LM399:
 4349 0f5c 00C0      		rjmp .L256
 4350               	.L255:
 4351               	.LBB95:
 653:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 		}
 654:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	} else if (diff < 0) {
 4353               	.LM400:
 4354 0f5e 77FE      		sbrs r7,7
 4355 0f60 00C0      		rjmp .L257
 4356 0f62 5E01      		movw r10,r28
 4357               	.L259:
 4358               	.LBB96:
 655:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 		char *writeTo = buffer;
 656:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 		while ((foundAt = strstr(readFrom, find.buffer)) != NULL) {
 4360               	.LM401:
 4361 0f64 F601      		movw r30,r12
 4362 0f66 6081      		ld r22,Z
 4363 0f68 7181      		ldd r23,Z+1
 4364 0f6a C501      		movw r24,r10
 4365 0f6c 0E94 0000 		call strstr
 4366 0f70 2C01      		movw r4,r24
 4367 0f72 0097      		sbiw r24,0
 4368 0f74 01F0      		breq .L258
 4369               	.LBB97:
 657:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 			unsigned int n = foundAt - readFrom;
 4371               	.LM402:
 4372 0f76 4C01      		movw r8,r24
 4373 0f78 8A18      		sub r8,r10
 4374 0f7a 9B08      		sbc r9,r11
 658:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 			memcpy(writeTo, readFrom, n);
 4376               	.LM403:
 4377 0f7c A401      		movw r20,r8
 4378 0f7e B501      		movw r22,r10
 4379 0f80 CE01      		movw r24,r28
 4380 0f82 0E94 0000 		call memcpy
 659:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 			writeTo += n;
 4382               	.LM404:
 4383 0f86 C80D      		add r28,r8
 4384 0f88 D91D      		adc r29,r9
 660:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 			memcpy(writeTo, replace.buffer, replace.len);
 4386               	.LM405:
 4387 0f8a F701      		movw r30,r14
 4388 0f8c 6081      		ld r22,Z
 4389 0f8e 7181      		ldd r23,Z+1
 4390 0f90 4481      		ldd r20,Z+4
 4391 0f92 5581      		ldd r21,Z+5
 4392 0f94 CE01      		movw r24,r28
 4393 0f96 0E94 0000 		call memcpy
 661:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 			writeTo += replace.len;
 4395               	.LM406:
 4396 0f9a F701      		movw r30,r14
 4397 0f9c 8481      		ldd r24,Z+4
 4398 0f9e 9581      		ldd r25,Z+5
 4399 0fa0 C80F      		add r28,r24
 4400 0fa2 D91F      		adc r29,r25
 662:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 			readFrom = foundAt + find.len;
 4402               	.LM407:
 4403 0fa4 F601      		movw r30,r12
 4404 0fa6 A480      		ldd r10,Z+4
 4405 0fa8 B580      		ldd r11,Z+5
 4406 0faa A40C      		add r10,r4
 4407 0fac B51C      		adc r11,r5
 663:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 			len += diff;
 4409               	.LM408:
 4410 0fae F801      		movw r30,r16
 4411 0fb0 8481      		ldd r24,Z+4
 4412 0fb2 9581      		ldd r25,Z+5
 4413 0fb4 860D      		add r24,r6
 4414 0fb6 971D      		adc r25,r7
 4415 0fb8 9583      		std Z+5,r25
 4416 0fba 8483      		std Z+4,r24
 4417               	.LBE97:
 656:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 			unsigned int n = foundAt - readFrom;
 4419               	.LM409:
 4420 0fbc 00C0      		rjmp .L259
 4421               	.L258:
 664:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 		}
 665:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 		strcpy(writeTo, readFrom);
 4423               	.LM410:
 4424 0fbe B501      		movw r22,r10
 4425 0fc0 CE01      		movw r24,r28
 4426               	/* epilogue start */
 4427               	.LBE96:
 4428               	.LBE95:
 4429               	.LBE94:
 666:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	} else {
 667:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 		unsigned int size = len; // compute size needed for result
 668:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 		while ((foundAt = strstr(readFrom, find.buffer)) != NULL) {
 669:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 			readFrom = foundAt + find.len;
 670:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 			size += diff;
 671:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 		}
 672:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 		if (size == len) return;
 673:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 		if (size > capacity && !changeBuffer(size)) return; // XXX: tell user!
 674:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 		int index = len - 1;
 675:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 		while (index >= 0 && (index = lastIndexOf(find, index)) >= 0) {
 676:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 			readFrom = buffer + index + find.len;
 677:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 			memmove(readFrom + diff, readFrom, len - (readFrom - buffer));
 678:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 			len += diff;
 679:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 			buffer[len] = 0;
 680:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 			memcpy(buffer + index, replace.buffer, replace.len);
 681:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 			index--;
 682:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 		}
 683:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	}
 684:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** }
 4431               	.LM411:
 4432 0fc2 DF91      		pop r29
 4433 0fc4 CF91      		pop r28
 4434 0fc6 1F91      		pop r17
 4435 0fc8 0F91      		pop r16
 4436 0fca FF90      		pop r15
 4437 0fcc EF90      		pop r14
 4438 0fce DF90      		pop r13
 4439 0fd0 CF90      		pop r12
 4440 0fd2 BF90      		pop r11
 4441 0fd4 AF90      		pop r10
 4442 0fd6 9F90      		pop r9
 4443 0fd8 8F90      		pop r8
 4444 0fda 7F90      		pop r7
 4445 0fdc 6F90      		pop r6
 4446 0fde 5F90      		pop r5
 4447 0fe0 4F90      		pop r4
 4448 0fe2 3F90      		pop r3
 4449 0fe4 2F90      		pop r2
 4450               	.LBB101:
 4451               	.LBB100:
 4452               	.LBB98:
 665:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	} else {
 4454               	.LM412:
 4455 0fe6 0C94 0000 		jmp strcpy
 4456               	.L257:
 4457               	.LBE98:
 4458               	.LBB99:
 668:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 			readFrom = foundAt + find.len;
 4460               	.LM413:
 4461 0fea FB01      		movw r30,r22
 4462 0fec 2080      		ld r2,Z
 4463 0fee 3180      		ldd r3,Z+1
 4464 0ff0 5201      		movw r10,r4
 4465               	.L261:
 4466 0ff2 B101      		movw r22,r2
 4467 0ff4 CE01      		movw r24,r28
 4468 0ff6 0E94 0000 		call strstr
 4469 0ffa 0097      		sbiw r24,0
 4470 0ffc 01F0      		breq .L260
 669:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 			size += diff;
 4472               	.LM414:
 4473 0ffe EC01      		movw r28,r24
 4474 1000 C80D      		add r28,r8
 4475 1002 D91D      		adc r29,r9
 670:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 		}
 4477               	.LM415:
 4478 1004 A60C      		add r10,r6
 4479 1006 B71C      		adc r11,r7
 668:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 			readFrom = foundAt + find.len;
 4481               	.LM416:
 4482 1008 00C0      		rjmp .L261
 4483               	.L260:
 672:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 		if (size > capacity && !changeBuffer(size)) return; // XXX: tell user!
 4485               	.LM417:
 4486 100a A414      		cp r10,r4
 4487 100c B504      		cpc r11,r5
 4488 100e 01F4      		brne .+2
 4489 1010 00C0      		rjmp .L251
 673:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 		int index = len - 1;
 4491               	.LM418:
 4492 1012 F801      		movw r30,r16
 4493 1014 8281      		ldd r24,Z+2
 4494 1016 9381      		ldd r25,Z+3
 4495 1018 8A15      		cp r24,r10
 4496 101a 9B05      		cpc r25,r11
 4497 101c 00F4      		brsh .L262
 673:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 		int index = len - 1;
 4499               	.LM419:
 4500 101e B501      		movw r22,r10
 4501 1020 C801      		movw r24,r16
 4502 1022 0E94 0000 		call _ZN6String12changeBufferEj
 4503 1026 8823      		tst r24
 4504 1028 01F0      		breq .L251
 4505               	.L262:
 674:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 		while (index >= 0 && (index = lastIndexOf(find, index)) >= 0) {
 4507               	.LM420:
 4508 102a F801      		movw r30,r16
 4509 102c 4481      		ldd r20,Z+4
 4510 102e 5581      		ldd r21,Z+5
 4511               	.L274:
 681:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 		}
 4513               	.LM421:
 4514 1030 4150      		subi r20,1
 4515 1032 5109      		sbc r21,__zero_reg__
 675:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 			readFrom = buffer + index + find.len;
 4517               	.LM422:
 4518 1034 57FD      		sbrc r21,7
 4519 1036 00C0      		rjmp .L251
 675:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 			readFrom = buffer + index + find.len;
 4521               	.LM423:
 4522 1038 B601      		movw r22,r12
 4523 103a C801      		movw r24,r16
 4524 103c 0E94 0000 		call _ZNK6String11lastIndexOfERKS_j
 4525 1040 EC01      		movw r28,r24
 4526 1042 97FD      		sbrc r25,7
 4527 1044 00C0      		rjmp .L251
 676:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 			memmove(readFrom + diff, readFrom, len - (readFrom - buffer));
 4529               	.LM424:
 4530 1046 F601      		movw r30,r12
 4531 1048 2481      		ldd r18,Z+4
 4532 104a 3581      		ldd r19,Z+5
 4533 104c 280F      		add r18,r24
 4534 104e 391F      		adc r19,r25
 4535 1050 F801      		movw r30,r16
 4536 1052 8081      		ld r24,Z
 4537 1054 9181      		ldd r25,Z+1
 4538 1056 820F      		add r24,r18
 4539 1058 931F      		adc r25,r19
 677:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 			len += diff;
 4541               	.LM425:
 4542 105a 4481      		ldd r20,Z+4
 4543 105c 5581      		ldd r21,Z+5
 4544 105e 421B      		sub r20,r18
 4545 1060 530B      		sbc r21,r19
 4546 1062 BC01      		movw r22,r24
 4547 1064 860D      		add r24,r6
 4548 1066 971D      		adc r25,r7
 4549 1068 0E94 0000 		call memmove
 678:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 			buffer[len] = 0;
 4551               	.LM426:
 4552 106c F801      		movw r30,r16
 4553 106e 8481      		ldd r24,Z+4
 4554 1070 9581      		ldd r25,Z+5
 4555 1072 860D      		add r24,r6
 4556 1074 971D      		adc r25,r7
 4557 1076 9583      		std Z+5,r25
 4558 1078 8483      		std Z+4,r24
 679:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 			memcpy(buffer + index, replace.buffer, replace.len);
 4560               	.LM427:
 4561 107a 2081      		ld r18,Z
 4562 107c 3181      		ldd r19,Z+1
 4563 107e F901      		movw r30,r18
 4564 1080 E80F      		add r30,r24
 4565 1082 F91F      		adc r31,r25
 4566 1084 1082      		st Z,__zero_reg__
 680:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 			index--;
 4568               	.LM428:
 4569 1086 F801      		movw r30,r16
 4570 1088 8081      		ld r24,Z
 4571 108a 9181      		ldd r25,Z+1
 4572 108c F701      		movw r30,r14
 4573 108e 6081      		ld r22,Z
 4574 1090 7181      		ldd r23,Z+1
 4575 1092 4481      		ldd r20,Z+4
 4576 1094 5581      		ldd r21,Z+5
 4577 1096 8C0F      		add r24,r28
 4578 1098 9D1F      		adc r25,r29
 4579 109a 0E94 0000 		call memcpy
 681:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 		}
 4581               	.LM429:
 4582 109e AE01      		movw r20,r28
 4583 10a0 00C0      		rjmp .L274
 4584               	.L251:
 4585               	/* epilogue start */
 4586               	.LBE99:
 4587               	.LBE100:
 4588               	.LBE101:
 4590               	.LM430:
 4591 10a2 DF91      		pop r29
 4592 10a4 CF91      		pop r28
 4593 10a6 1F91      		pop r17
 4594 10a8 0F91      		pop r16
 4595 10aa FF90      		pop r15
 4596 10ac EF90      		pop r14
 4597 10ae DF90      		pop r13
 4598 10b0 CF90      		pop r12
 4599 10b2 BF90      		pop r11
 4600 10b4 AF90      		pop r10
 4601 10b6 9F90      		pop r9
 4602 10b8 8F90      		pop r8
 4603 10ba 7F90      		pop r7
 4604 10bc 6F90      		pop r6
 4605 10be 5F90      		pop r5
 4606 10c0 4F90      		pop r4
 4607 10c2 3F90      		pop r3
 4608 10c4 2F90      		pop r2
 4609 10c6 0895      		ret
 4620               	.Lscope74:
 4622               		.stabd	78,0,0
 4627               	.global	_ZN6String6removeEjj
 4629               	_ZN6String6removeEjj:
 4630               		.stabd	46,0,0
 685:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 
 686:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** void String::remove(unsigned int index){
 687:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	// Pass the biggest integer as the count. The remove method
 688:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	// below will take care of truncating it at the end of the
 689:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	// string.
 690:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	remove(index, (unsigned int)-1);
 691:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** }
 692:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 
 693:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** void String::remove(unsigned int index, unsigned int count){
 4632               	.LM431:
 4633               	.LFBB75:
 4634 10c8 CF93      		push r28
 4635 10ca DF93      		push r29
 4636               	/* prologue: function */
 4637               	/* frame size = 0 */
 4638               	/* stack size = 2 */
 4639               	.L__stack_usage = 2
 694:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	if (index >= len) { return; }
 4641               	.LM432:
 4642 10cc DC01      		movw r26,r24
 4643 10ce 1496      		adiw r26,4
 4644 10d0 ED91      		ld r30,X+
 4645 10d2 FC91      		ld r31,X
 4646 10d4 1597      		sbiw r26,4+1
 4647 10d6 6E17      		cp r22,r30
 4648 10d8 7F07      		cpc r23,r31
 4649 10da 00F4      		brsh .L275
 695:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	if (count <= 0) { return; }
 4651               	.LM433:
 4652 10dc 4115      		cp r20,__zero_reg__
 4653 10de 5105      		cpc r21,__zero_reg__
 4654 10e0 01F0      		breq .L275
 696:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	if (count > len - index) { count = len - index; }
 4656               	.LM434:
 4657 10e2 DF01      		movw r26,r30
 4658 10e4 A61B      		sub r26,r22
 4659 10e6 B70B      		sbc r27,r23
 4660 10e8 9A01      		movw r18,r20
 4661 10ea A417      		cp r26,r20
 4662 10ec B507      		cpc r27,r21
 4663 10ee 00F4      		brsh .L277
 4664 10f0 9D01      		movw r18,r26
 4665               	.L277:
 4666 10f2 DB01      		movw r26,r22
 4667 10f4 EC01      		movw r28,r24
 697:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	char *writeTo = buffer + index;
 4669               	.LM435:
 4670 10f6 8881      		ld r24,Y
 4671 10f8 9981      		ldd r25,Y+1
 698:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	len = len - count;
 4673               	.LM436:
 4674 10fa E21B      		sub r30,r18
 4675 10fc F30B      		sbc r31,r19
 4676 10fe FD83      		std Y+5,r31
 4677 1100 EC83      		std Y+4,r30
 699:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	strncpy(writeTo, buffer + index + count,len - index);
 4679               	.LM437:
 4680 1102 AF01      		movw r20,r30
 4681 1104 461B      		sub r20,r22
 4682 1106 570B      		sbc r21,r23
 4683 1108 260F      		add r18,r22
 4684 110a 371F      		adc r19,r23
 4685 110c BC01      		movw r22,r24
 4686 110e 620F      		add r22,r18
 4687 1110 731F      		adc r23,r19
 4688 1112 8A0F      		add r24,r26
 4689 1114 9B1F      		adc r25,r27
 4690 1116 0E94 0000 		call strncpy
 700:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	buffer[len] = 0;
 4692               	.LM438:
 4693 111a E881      		ld r30,Y
 4694 111c F981      		ldd r31,Y+1
 4695 111e 8C81      		ldd r24,Y+4
 4696 1120 9D81      		ldd r25,Y+5
 4697 1122 E80F      		add r30,r24
 4698 1124 F91F      		adc r31,r25
 4699 1126 1082      		st Z,__zero_reg__
 4700               	.L275:
 4701               	/* epilogue start */
 701:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** }
 4703               	.LM439:
 4704 1128 DF91      		pop r29
 4705 112a CF91      		pop r28
 4706 112c 0895      		ret
 4708               	.Lscope75:
 4710               		.stabd	78,0,0
 4714               	.global	_ZN6String6removeEj
 4716               	_ZN6String6removeEj:
 4717               		.stabd	46,0,0
 686:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	// Pass the biggest integer as the count. The remove method
 4719               	.LM440:
 4720               	.LFBB76:
 4721               	/* prologue: function */
 4722               	/* frame size = 0 */
 4723               	/* stack size = 0 */
 4724               	.L__stack_usage = 0
 690:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** }
 4726               	.LM441:
 4727 112e 4FEF      		ldi r20,lo8(-1)
 4728 1130 5FEF      		ldi r21,lo8(-1)
 4729 1132 0C94 0000 		jmp _ZN6String6removeEjj
 4731               	.Lscope76:
 4733               		.stabd	78,0,0
 4736               	.global	_ZN6String11toLowerCaseEv
 4738               	_ZN6String11toLowerCaseEv:
 4739               		.stabd	46,0,0
 702:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 
 703:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** void String::toLowerCase(void)
 704:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** {
 4741               	.LM442:
 4742               	.LFBB77:
 4743 1136 CF93      		push r28
 4744 1138 DF93      		push r29
 4745               	/* prologue: function */
 4746               	/* frame size = 0 */
 4747               	/* stack size = 2 */
 4748               	.L__stack_usage = 2
 705:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	if (!buffer) return;
 4750               	.LM443:
 4751 113a FC01      		movw r30,r24
 4752 113c C081      		ld r28,Z
 4753 113e D181      		ldd r29,Z+1
 4754 1140 2097      		sbiw r28,0
 4755 1142 01F0      		breq .L282
 4756               	.L284:
 4757               	.LBB102:
 706:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	for (char *p = buffer; *p; p++) {
 4759               	.LM444:
 4760 1144 8881      		ld r24,Y
 4761 1146 8823      		tst r24
 4762 1148 01F0      		breq .L282
 707:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 		*p = tolower(*p);
 4764               	.LM445:
 4765 114a 90E0      		ldi r25,0
 4766 114c 0E94 0000 		call tolower
 4767 1150 8993      		st Y+,r24
 706:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	for (char *p = buffer; *p; p++) {
 4769               	.LM446:
 4770 1152 00C0      		rjmp .L284
 4771               	.L282:
 4772               	/* epilogue start */
 4773               	.LBE102:
 708:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	}
 709:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** }
 4775               	.LM447:
 4776 1154 DF91      		pop r29
 4777 1156 CF91      		pop r28
 4778 1158 0895      		ret
 4783               	.Lscope77:
 4785               		.stabd	78,0,0
 4788               	.global	_ZN6String11toUpperCaseEv
 4790               	_ZN6String11toUpperCaseEv:
 4791               		.stabd	46,0,0
 710:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 
 711:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** void String::toUpperCase(void)
 712:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** {
 4793               	.LM448:
 4794               	.LFBB78:
 4795 115a CF93      		push r28
 4796 115c DF93      		push r29
 4797               	/* prologue: function */
 4798               	/* frame size = 0 */
 4799               	/* stack size = 2 */
 4800               	.L__stack_usage = 2
 713:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	if (!buffer) return;
 4802               	.LM449:
 4803 115e FC01      		movw r30,r24
 4804 1160 C081      		ld r28,Z
 4805 1162 D181      		ldd r29,Z+1
 4806 1164 2097      		sbiw r28,0
 4807 1166 01F0      		breq .L291
 4808               	.L293:
 4809               	.LBB103:
 714:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	for (char *p = buffer; *p; p++) {
 4811               	.LM450:
 4812 1168 8881      		ld r24,Y
 4813 116a 8823      		tst r24
 4814 116c 01F0      		breq .L291
 715:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 		*p = toupper(*p);
 4816               	.LM451:
 4817 116e 90E0      		ldi r25,0
 4818 1170 0E94 0000 		call toupper
 4819 1174 8993      		st Y+,r24
 714:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	for (char *p = buffer; *p; p++) {
 4821               	.LM452:
 4822 1176 00C0      		rjmp .L293
 4823               	.L291:
 4824               	/* epilogue start */
 4825               	.LBE103:
 716:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	}
 717:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** }
 4827               	.LM453:
 4828 1178 DF91      		pop r29
 4829 117a CF91      		pop r28
 4830 117c 0895      		ret
 4835               	.Lscope78:
 4837               		.stabd	78,0,0
 4840               	.global	_ZN6String4trimEv
 4842               	_ZN6String4trimEv:
 4843               		.stabd	46,0,0
 718:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 
 719:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** void String::trim(void)
 720:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** {
 4845               	.LM454:
 4846               	.LFBB79:
 4847 117e AF92      		push r10
 4848 1180 BF92      		push r11
 4849 1182 CF92      		push r12
 4850 1184 DF92      		push r13
 4851 1186 EF92      		push r14
 4852 1188 FF92      		push r15
 4853 118a 0F93      		push r16
 4854 118c 1F93      		push r17
 4855 118e CF93      		push r28
 4856 1190 DF93      		push r29
 4857               	/* prologue: function */
 4858               	/* frame size = 0 */
 4859               	/* stack size = 10 */
 4860               	.L__stack_usage = 10
 721:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	if (!buffer || len == 0) return;
 4862               	.LM455:
 4863 1192 DC01      		movw r26,r24
 4864 1194 CD90      		ld r12,X+
 4865 1196 DC90      		ld r13,X
 4866 1198 1197      		sbiw r26,1
 4867 119a C114      		cp r12,__zero_reg__
 4868 119c D104      		cpc r13,__zero_reg__
 4869 119e 01F4      		brne .+2
 4870 11a0 00C0      		rjmp .L300
 4872               	.LM456:
 4873 11a2 1496      		adiw r26,4
 4874 11a4 CD91      		ld r28,X+
 4875 11a6 DC91      		ld r29,X
 4876 11a8 1597      		sbiw r26,4+1
 4877 11aa 2097      		sbiw r28,0
 4878 11ac 01F0      		breq .L300
 4879 11ae 8C01      		movw r16,r24
 4880 11b0 7601      		movw r14,r12
 4881               	.L302:
 4882 11b2 5701      		movw r10,r14
 4883 11b4 BFEF      		ldi r27,-1
 4884 11b6 AB1A      		sub r10,r27
 4885 11b8 BB0A      		sbc r11,r27
 722:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	char *begin = buffer;
 723:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	while (isspace(*begin)) begin++;
 4887               	.LM457:
 4888 11ba F701      		movw r30,r14
 4889 11bc 8081      		ld r24,Z
 4890 11be 90E0      		ldi r25,0
 4891 11c0 0E94 0000 		call isspace
 4892 11c4 892B      		or r24,r25
 4893 11c6 01F0      		breq .L316
 4894 11c8 7501      		movw r14,r10
 4895 11ca 00C0      		rjmp .L302
 4896               	.L316:
 724:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	char *end = buffer + len - 1;
 4898               	.LM458:
 4899 11cc 2197      		sbiw r28,1
 4900 11ce CC0D      		add r28,r12
 4901 11d0 DD1D      		adc r29,r13
 4902               	.L304:
 725:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	while (isspace(*end) && end >= begin) end--;
 4904               	.LM459:
 4905 11d2 8881      		ld r24,Y
 4906 11d4 90E0      		ldi r25,0
 4907 11d6 0E94 0000 		call isspace
 4908 11da 892B      		or r24,r25
 4909 11dc 01F0      		breq .L303
 4911               	.LM460:
 4912 11de CE15      		cp r28,r14
 4913 11e0 DF05      		cpc r29,r15
 4914 11e2 00F0      		brlo .L303
 4916               	.LM461:
 4917 11e4 2197      		sbiw r28,1
 4918 11e6 00C0      		rjmp .L304
 4919               	.L303:
 726:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	len = end + 1 - begin;
 4921               	.LM462:
 4922 11e8 AE01      		movw r20,r28
 4923 11ea 4F5F      		subi r20,-1
 4924 11ec 5F4F      		sbci r21,-1
 4925 11ee 4E19      		sub r20,r14
 4926 11f0 5F09      		sbc r21,r15
 4927 11f2 D801      		movw r26,r16
 4928 11f4 1596      		adiw r26,4+1
 4929 11f6 5C93      		st X,r21
 4930 11f8 4E93      		st -X,r20
 4931 11fa 1497      		sbiw r26,4
 727:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	if (begin > buffer) memcpy(buffer, begin, len);
 4933               	.LM463:
 4934 11fc CE14      		cp r12,r14
 4935 11fe DF04      		cpc r13,r15
 4936 1200 00F4      		brsh .L305
 4938               	.LM464:
 4939 1202 B701      		movw r22,r14
 4940 1204 C601      		movw r24,r12
 4941 1206 0E94 0000 		call memcpy
 4942               	.L305:
 728:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	buffer[len] = 0;
 4944               	.LM465:
 4945 120a D801      		movw r26,r16
 4946 120c ED91      		ld r30,X+
 4947 120e FC91      		ld r31,X
 4948 1210 1197      		sbiw r26,1
 4949 1212 1496      		adiw r26,4
 4950 1214 8D91      		ld r24,X+
 4951 1216 9C91      		ld r25,X
 4952 1218 1597      		sbiw r26,4+1
 4953 121a E80F      		add r30,r24
 4954 121c F91F      		adc r31,r25
 4955 121e 1082      		st Z,__zero_reg__
 4956               	.L300:
 4957               	/* epilogue start */
 729:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** }
 4959               	.LM466:
 4960 1220 DF91      		pop r29
 4961 1222 CF91      		pop r28
 4962 1224 1F91      		pop r17
 4963 1226 0F91      		pop r16
 4964 1228 FF90      		pop r15
 4965 122a EF90      		pop r14
 4966 122c DF90      		pop r13
 4967 122e CF90      		pop r12
 4968 1230 BF90      		pop r11
 4969 1232 AF90      		pop r10
 4970 1234 0895      		ret
 4975               	.Lscope79:
 4977               		.stabd	78,0,0
 4980               	.global	_ZNK6String5toIntEv
 4982               	_ZNK6String5toIntEv:
 4983               		.stabd	46,0,0
 730:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 
 731:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** /*********************************************/
 732:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** /*  Parsing / Conversion                     */
 733:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** /*********************************************/
 734:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 
 735:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** long String::toInt(void) const
 736:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** {
 4985               	.LM467:
 4986               	.LFBB80:
 4987               	/* prologue: function */
 4988               	/* frame size = 0 */
 4989               	/* stack size = 0 */
 4990               	.L__stack_usage = 0
 737:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	if (buffer) return atol(buffer);
 4992               	.LM468:
 4993 1236 FC01      		movw r30,r24
 4994 1238 8081      		ld r24,Z
 4995 123a 9181      		ldd r25,Z+1
 4996 123c 0097      		sbiw r24,0
 4997 123e 01F0      		breq .L318
 4999               	.LM469:
 5000 1240 0C94 0000 		jmp atol
 5001               	.L318:
 738:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	return 0;
 739:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** }
 5003               	.LM470:
 5004 1244 60E0      		ldi r22,0
 5005 1246 70E0      		ldi r23,0
 5006 1248 CB01      		movw r24,r22
 5007 124a 0895      		ret
 5009               	.Lscope80:
 5011               		.stabd	78,0,0
 5014               	.global	_ZNK6String8toDoubleEv
 5016               	_ZNK6String8toDoubleEv:
 5017               		.stabd	46,0,0
 740:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 
 741:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** float String::toFloat(void) const
 742:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** {
 743:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	return float(toDouble());
 744:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** }
 745:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 
 746:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** double String::toDouble(void) const
 747:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** {
 5019               	.LM471:
 5020               	.LFBB81:
 5021               	/* prologue: function */
 5022               	/* frame size = 0 */
 5023               	/* stack size = 0 */
 5024               	.L__stack_usage = 0
 748:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	if (buffer) return atof(buffer);
 5026               	.LM472:
 5027 124c FC01      		movw r30,r24
 5028 124e 8081      		ld r24,Z
 5029 1250 9181      		ldd r25,Z+1
 5030 1252 0097      		sbiw r24,0
 5031 1254 01F0      		breq .L320
 5033               	.LM473:
 5034 1256 0C94 0000 		jmp atof
 5035               	.L320:
 749:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	return 0;
 750:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** }
 5037               	.LM474:
 5038 125a 60E0      		ldi r22,0
 5039 125c 70E0      		ldi r23,0
 5040 125e CB01      		movw r24,r22
 5041 1260 0895      		ret
 5043               	.Lscope81:
 5045               		.stabd	78,0,0
 5048               	.global	_ZNK6String7toFloatEv
 5050               	_ZNK6String7toFloatEv:
 5051               		.stabd	46,0,0
 742:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** 	return float(toDouble());
 5053               	.LM475:
 5054               	.LFBB82:
 5055               	/* prologue: function */
 5056               	/* frame size = 0 */
 5057               	/* stack size = 0 */
 5058               	.L__stack_usage = 0
 743:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//hardware/arduino/avr/cores/arduino/WString.cpp **** }
 5060               	.LM476:
 5061 1262 0C94 0000 		jmp _ZNK6String8toDoubleEv
 5063               	.Lscope82:
 5065               		.stabd	78,0,0
 5066               		.local	_ZZN6StringixEjE19dummy_writable_char
 5067               		.comm	_ZZN6StringixEjE19dummy_writable_char,1,1
 5069               	.Letext0:
 5070               		.ident	"GCC: (GNU) 5.4.0"
 5071               	.global __do_copy_data
 5072               	.global __do_clear_bss
DEFINED SYMBOLS
                            *ABS*:0000000000000000 WString.cpp
     /tmp/cc9igFCx.s:2      *ABS*:000000000000003e __SP_H__
     /tmp/cc9igFCx.s:3      *ABS*:000000000000003d __SP_L__
     /tmp/cc9igFCx.s:4      *ABS*:000000000000003f __SREG__
     /tmp/cc9igFCx.s:5      *ABS*:0000000000000000 __tmp_reg__
     /tmp/cc9igFCx.s:6      *ABS*:0000000000000001 __zero_reg__
     /tmp/cc9igFCx.s:121    .text.itoa:0000000000000000 itoa
     /tmp/cc9igFCx.s:148    .text.ltoa:0000000000000000 ltoa
     /tmp/cc9igFCx.s:173    .text.utoa:0000000000000000 utoa
     /tmp/cc9igFCx.s:198    .text.ultoa:0000000000000000 ultoa
     /tmp/cc9igFCx.s:221    .text:0000000000000000 _ZN6StringD2Ev
     /tmp/cc9igFCx.s:221    .text:0000000000000000 _ZN6StringD1Ev
     /tmp/cc9igFCx.s:250    .text:000000000000000a _ZN6String10invalidateEv
     /tmp/cc9igFCx.s:297    .text:000000000000002e _ZN6String12changeBufferEj
     /tmp/cc9igFCx.s:357    .text:0000000000000062 _ZN6String7reserveEj
     /tmp/cc9igFCx.s:421    .text:000000000000009a _ZN6String4copyEPKcj
     /tmp/cc9igFCx.s:484    .text:00000000000000dc _ZN6StringC2EPKc
     /tmp/cc9igFCx.s:484    .text:00000000000000dc _ZN6StringC1EPKc
     /tmp/cc9igFCx.s:543    .text:0000000000000106 _ZN6String4copyEPK19__FlashStringHelperj
     /tmp/cc9igFCx.s:606    .text:0000000000000148 _ZN6StringaSERKS_
     /tmp/cc9igFCx.s:658    .text:0000000000000176 _ZN6StringC2ERKS_
     /tmp/cc9igFCx.s:658    .text:0000000000000176 _ZN6StringC1ERKS_
     /tmp/cc9igFCx.s:700    .text:0000000000000188 _ZN6StringaSEPKc
     /tmp/cc9igFCx.s:751    .text:00000000000001b6 _ZN6StringC2Ec
     /tmp/cc9igFCx.s:751    .text:00000000000001b6 _ZN6StringC1Ec
     /tmp/cc9igFCx.s:819    .text:00000000000001e6 _ZN6StringC2Ehh
     /tmp/cc9igFCx.s:819    .text:00000000000001e6 _ZN6StringC1Ehh
     /tmp/cc9igFCx.s:905    .text:0000000000000240 _ZN6StringC2Eih
     /tmp/cc9igFCx.s:905    .text:0000000000000240 _ZN6StringC1Eih
     /tmp/cc9igFCx.s:990    .text:0000000000000298 _ZN6StringC2Ejh
     /tmp/cc9igFCx.s:990    .text:0000000000000298 _ZN6StringC1Ejh
     /tmp/cc9igFCx.s:1075   .text:00000000000002f0 _ZN6StringC2Elh
     /tmp/cc9igFCx.s:1075   .text:00000000000002f0 _ZN6StringC1Elh
     /tmp/cc9igFCx.s:1161   .text:000000000000034a _ZN6StringC2Emh
     /tmp/cc9igFCx.s:1161   .text:000000000000034a _ZN6StringC1Emh
     /tmp/cc9igFCx.s:1247   .text:00000000000003a4 _ZN6StringC2Efh
     /tmp/cc9igFCx.s:1247   .text:00000000000003a4 _ZN6StringC1Efh
     /tmp/cc9igFCx.s:1334   .text:0000000000000404 _ZN6StringC2Edh
     /tmp/cc9igFCx.s:1334   .text:0000000000000404 _ZN6StringC1Edh
     /tmp/cc9igFCx.s:1420   .text:0000000000000464 _ZN6StringaSEPK19__FlashStringHelper
     /tmp/cc9igFCx.s:1482   .text:0000000000000498 _ZN6StringC2EPK19__FlashStringHelper
     /tmp/cc9igFCx.s:1482   .text:0000000000000498 _ZN6StringC1EPK19__FlashStringHelper
     /tmp/cc9igFCx.s:1525   .text:00000000000004aa _ZN6String6concatEPKcj
     /tmp/cc9igFCx.s:1611   .text:0000000000000506 _ZN6String6concatERKS_
     /tmp/cc9igFCx.s:1637   .text:0000000000000514 _ZN6String6concatEPKc
     /tmp/cc9igFCx.s:1677   .text:0000000000000532 _ZN6String6concatEc
     /tmp/cc9igFCx.s:1725   .text:0000000000000558 _ZN6String6concatEh
     /tmp/cc9igFCx.s:1796   .text:00000000000005b0 _ZN6String6concatEi
     /tmp/cc9igFCx.s:1872   .text:0000000000000612 _ZN6String6concatEj
     /tmp/cc9igFCx.s:1948   .text:0000000000000674 _ZN6String6concatEl
     /tmp/cc9igFCx.s:2025   .text:00000000000006d8 _ZN6String6concatEm
     /tmp/cc9igFCx.s:2102   .text:000000000000073c _ZN6String6concatEf
     /tmp/cc9igFCx.s:2179   .text:000000000000079e _ZN6String6concatEd
     /tmp/cc9igFCx.s:2256   .text:0000000000000800 _ZN6String6concatEPK19__FlashStringHelper
     /tmp/cc9igFCx.s:2353   .text:0000000000000860 _ZplRK15StringSumHelperRK6String
     /tmp/cc9igFCx.s:2396   .text:0000000000000886 _ZplRK15StringSumHelperPKc
     /tmp/cc9igFCx.s:2449   .text:00000000000008b8 _ZplRK15StringSumHelperc
     /tmp/cc9igFCx.s:2487   .text:00000000000008d4 _ZplRK15StringSumHelperh
     /tmp/cc9igFCx.s:2525   .text:00000000000008f0 _ZplRK15StringSumHelperi
     /tmp/cc9igFCx.s:2563   .text:000000000000090c _ZplRK15StringSumHelperj
     /tmp/cc9igFCx.s:2601   .text:0000000000000928 _ZplRK15StringSumHelperl
     /tmp/cc9igFCx.s:2639   .text:0000000000000944 _ZplRK15StringSumHelperm
     /tmp/cc9igFCx.s:2677   .text:0000000000000960 _ZplRK15StringSumHelperf
     /tmp/cc9igFCx.s:2715   .text:000000000000097c _ZplRK15StringSumHelperd
     /tmp/cc9igFCx.s:2753   .text:0000000000000998 _ZplRK15StringSumHelperPK19__FlashStringHelper
     /tmp/cc9igFCx.s:2791   .text:00000000000009b4 _ZNK6String9compareToERKS_
     /tmp/cc9igFCx.s:2889   .text:0000000000000a14 _ZNK6String6equalsERKS_
     /tmp/cc9igFCx.s:2933   .text:0000000000000a36 _ZNK6String6equalsEPKc
     /tmp/cc9igFCx.s:3000   .text:0000000000000a74 _ZNK6StringltERKS_
     /tmp/cc9igFCx.s:3028   .text:0000000000000a82 _ZNK6StringgtERKS_
     /tmp/cc9igFCx.s:3059   .text:0000000000000a94 _ZNK6StringleERKS_
     /tmp/cc9igFCx.s:3090   .text:0000000000000aa6 _ZNK6StringgeERKS_
     /tmp/cc9igFCx.s:3119   .text:0000000000000ab6 _ZNK6String16equalsIgnoreCaseERKS_
     /tmp/cc9igFCx.s:3208   .text:0000000000000b1c _ZNK6String10startsWithERKS_j
     /tmp/cc9igFCx.s:3277   .text:0000000000000b68 _ZNK6String10startsWithERKS_
     /tmp/cc9igFCx.s:3316   .text:0000000000000b86 _ZNK6String8endsWithERKS_
     /tmp/cc9igFCx.s:3380   .text:0000000000000bc6 _ZN6String9setCharAtEjc
     /tmp/cc9igFCx.s:3416   .text:0000000000000be0 _ZN6StringixEj
                             .bss:0000000000000000 _ZZN6StringixEjE19dummy_writable_char
     /tmp/cc9igFCx.s:3468   .text:0000000000000c04 _ZNK6StringixEj
     /tmp/cc9igFCx.s:3516   .text:0000000000000c26 _ZNK6String6charAtEj
     /tmp/cc9igFCx.s:3539   .text:0000000000000c2a _ZNK6String8getBytesEPhjj
     /tmp/cc9igFCx.s:3626   .text:0000000000000c88 _ZNK6String7indexOfEcj
     /tmp/cc9igFCx.s:3687   .text:0000000000000cbc _ZNK6String7indexOfEc
     /tmp/cc9igFCx.s:3711   .text:0000000000000cc4 _ZNK6String7indexOfERKS_j
     /tmp/cc9igFCx.s:3775   .text:0000000000000cfe _ZNK6String7indexOfERKS_
     /tmp/cc9igFCx.s:3799   .text:0000000000000d06 _ZNK6String11lastIndexOfEcj
     /tmp/cc9igFCx.s:3893   .text:0000000000000d70 _ZNK6String11lastIndexOfEc
     /tmp/cc9igFCx.s:3920   .text:0000000000000d7e _ZNK6String11lastIndexOfERKS_j
     /tmp/cc9igFCx.s:4058   .text:0000000000000e1a _ZNK6String11lastIndexOfERKS_
     /tmp/cc9igFCx.s:4092   .text:0000000000000e2e _ZNK6String9substringEjj
     /tmp/cc9igFCx.s:4203   .text:0000000000000eb8 _ZN6String7replaceEcc
     /tmp/cc9igFCx.s:4254   .text:0000000000000ed4 _ZN6String7replaceERKS_S1_
     /tmp/cc9igFCx.s:4629   .text:00000000000010c8 _ZN6String6removeEjj
     /tmp/cc9igFCx.s:4716   .text:000000000000112e _ZN6String6removeEj
     /tmp/cc9igFCx.s:4738   .text:0000000000001136 _ZN6String11toLowerCaseEv
     /tmp/cc9igFCx.s:4790   .text:000000000000115a _ZN6String11toUpperCaseEv
     /tmp/cc9igFCx.s:4842   .text:000000000000117e _ZN6String4trimEv
     /tmp/cc9igFCx.s:4982   .text:0000000000001236 _ZNK6String5toIntEv
     /tmp/cc9igFCx.s:5016   .text:000000000000124c _ZNK6String8toDoubleEv
     /tmp/cc9igFCx.s:5050   .text:0000000000001262 _ZNK6String7toFloatEv

UNDEFINED SYMBOLS
__itoa
__ltoa
__utoa
__ultoa
free
realloc
strcpy
strcpy_P
dtostrf
__strlen_P
strcmp
tolower
strncmp
strncpy
strchr
strstr
strrchr
memcpy
memmove
toupper
isspace
atol
atof
__do_copy_data
__do_clear_bss
