JustPaste.it
000000be <_Z15detectSemicolonPKc>:
// Return the index of the first semicolon in a string
int detectSemicolon(const char* str) {
  be:	0f 93       	push	r16
  c0:	1f 93       	push	r17
  c2:	cf 93       	push	r28
  c4:	df 93       	push	r29
  c6:	8c 01       	movw	r16, r24

    int i;

    Serial.print("i = ");
  c8:	69 e0       	ldi	r22, 0x09	; 9
  ca:	71 e0       	ldi	r23, 0x01	; 1
  cc:	8c e3       	ldi	r24, 0x3C	; 60
  ce:	91 e0       	ldi	r25, 0x01	; 1
  d0:	0e 94 c7 02 	call	0x58e	; 0x58e <_ZN5Print5printEPKc>
    Serial.println(i); // prints "i = 0"
  d4:	4a e0       	ldi	r20, 0x0A	; 10
  d6:	50 e0       	ldi	r21, 0x00	; 0
  d8:	c0 e0       	ldi	r28, 0x00	; 0
  da:	d0 e0       	ldi	r29, 0x00	; 0
  dc:	be 01       	movw	r22, r28
  de:	8c e3       	ldi	r24, 0x3C	; 60
  e0:	91 e0       	ldi	r25, 0x01	; 1
  e2:	0e 94 7f 03 	call	0x6fe	; 0x6fe <_ZN5Print7printlnEii>

    while (i <= strlen(str)) {
  e6:	f8 01       	movw	r30, r16
  e8:	01 90       	ld	r0, Z+
  ea:	00 20       	and	r0, r0
  ec:	e9 f7       	brne	.-6      	; 0xe8 <_Z15detectSemicolonPKc+0x2a>
  ee:	31 97       	sbiw	r30, 0x01	; 1
  f0:	e0 1b       	sub	r30, r16
  f2:	f1 0b       	sbc	r31, r17
  f4:	ec 17       	cp	r30, r28
  f6:	fd 07       	cpc	r31, r29
  f8:	b0 f0       	brcs	.+44     	; 0x126 <_Z15detectSemicolonPKc+0x68>
  fa:	d8 01       	movw	r26, r16
  fc:	ac 0f       	add	r26, r28
  fe:	bd 1f       	adc	r27, r29
        if (str[i] == ';') {
 100:	8c 91       	ld	r24, X
 102:	8b 33       	cpi	r24, 0x3B	; 59
 104:	71 f4       	brne	.+28     	; 0x122 <_Z15detectSemicolonPKc+0x64>
            Serial.print("Found at i = ");
 106:	60 e0       	ldi	r22, 0x00	; 0
 108:	71 e0       	ldi	r23, 0x01	; 1
 10a:	8c e3       	ldi	r24, 0x3C	; 60
 10c:	91 e0       	ldi	r25, 0x01	; 1
 10e:	0e 94 c7 02 	call	0x58e	; 0x58e <_ZN5Print5printEPKc>
            Serial.println(i); // prints "Found at i = 2"
 112:	4a e0       	ldi	r20, 0x0A	; 10
 114:	50 e0       	ldi	r21, 0x00	; 0
 116:	be 01       	movw	r22, r28
 118:	8c e3       	ldi	r24, 0x3C	; 60
 11a:	91 e0       	ldi	r25, 0x01	; 1
 11c:	0e 94 7f 03 	call	0x6fe	; 0x6fe <_ZN5Print7printlnEii>
            return i;
 120:	08 c0       	rjmp	.+16     	; 0x132 <_Z15detectSemicolonPKc+0x74>
        }
        i++;
 122:	21 96       	adiw	r28, 0x01	; 1
 124:	e7 cf       	rjmp	.-50     	; 0xf4 <_Z15detectSemicolonPKc+0x36>
    }

    Serial.println("Error"); // Does not execute
 126:	6e e0       	ldi	r22, 0x0E	; 14
 128:	71 e0       	ldi	r23, 0x01	; 1
 12a:	8c e3       	ldi	r24, 0x3C	; 60
 12c:	91 e0       	ldi	r25, 0x01	; 1
 12e:	0e 94 d4 02 	call	0x5a8	; 0x5a8 <_ZN5Print7printlnEPKc>
    return -999;
}
 132:	89 e1       	ldi	r24, 0x19	; 25
 134:	9c ef       	ldi	r25, 0xFC	; 252
 136:	df 91       	pop	r29
 138:	cf 91       	pop	r28
 13a:	1f 91       	pop	r17
 13c:	0f 91       	pop	r16
 13e:	08 95       	ret


[ ... ]


int main() {
    Serial.begin(250000);
    Serial.println(detectSemicolon("TE;ST")); // Prints "2"
 152:	84 e1       	ldi	r24, 0x14	; 20
 154:	91 e0       	ldi	r25, 0x01	; 1
 156:	0e 94 5f 00 	call	0xbe	; 0xbe <_Z15detectSemicolonPKc>
 15a:	4a e0       	ldi	r20, 0x0A	; 10
 15c:	50 e0       	ldi	r21, 0x00	; 0
 15e:	bc 01       	movw	r22, r24
 160:	8c e3       	ldi	r24, 0x3C	; 60
 162:	91 e0       	ldi	r25, 0x01	; 1
 164:	0e 94 7f 03 	call	0x6fe	; 0x6fe <_ZN5Print7printlnEii>
}
 168:	80 e0       	ldi	r24, 0x00	; 0
 16a:	90 e0       	ldi	r25, 0x00	; 0
 16c:	08 95       	ret