
C:\Users\Martin\AppData\Local\Temp\arduino_build_23468/sketch_jun30b.ino.elf:     file format elf32-avr


Disassembly of section .text:

00000000 <__vectors>:
__vectors():
../../../../../crt1/gcrt1.S:61
   0:	50 c0       	rjmp	.+160    	; 0xa2 <__ctors_end>
   2:	00 00       	nop
../../../../../crt1/gcrt1.S:67
   4:	68 c0       	rjmp	.+208    	; 0xd6 <__bad_interrupt>
   6:	00 00       	nop
../../../../../crt1/gcrt1.S:68
   8:	66 c0       	rjmp	.+204    	; 0xd6 <__bad_interrupt>
   a:	00 00       	nop
../../../../../crt1/gcrt1.S:69
   c:	64 c0       	rjmp	.+200    	; 0xd6 <__bad_interrupt>
   e:	00 00       	nop
../../../../../crt1/gcrt1.S:70
  10:	62 c0       	rjmp	.+196    	; 0xd6 <__bad_interrupt>
  12:	00 00       	nop
../../../../../crt1/gcrt1.S:71
  14:	60 c0       	rjmp	.+192    	; 0xd6 <__bad_interrupt>
  16:	00 00       	nop
../../../../../crt1/gcrt1.S:72
  18:	5e c0       	rjmp	.+188    	; 0xd6 <__bad_interrupt>
  1a:	00 00       	nop
../../../../../crt1/gcrt1.S:73
  1c:	5c c0       	rjmp	.+184    	; 0xd6 <__bad_interrupt>
  1e:	00 00       	nop
../../../../../crt1/gcrt1.S:74
  20:	5a c0       	rjmp	.+180    	; 0xd6 <__bad_interrupt>
  22:	00 00       	nop
../../../../../crt1/gcrt1.S:75
  24:	58 c0       	rjmp	.+176    	; 0xd6 <__bad_interrupt>
  26:	00 00       	nop
../../../../../crt1/gcrt1.S:76
  28:	56 c0       	rjmp	.+172    	; 0xd6 <__bad_interrupt>
  2a:	00 00       	nop
../../../../../crt1/gcrt1.S:77
  2c:	54 c0       	rjmp	.+168    	; 0xd6 <__bad_interrupt>
  2e:	00 00       	nop
../../../../../crt1/gcrt1.S:78
  30:	52 c0       	rjmp	.+164    	; 0xd6 <__bad_interrupt>
  32:	00 00       	nop
../../../../../crt1/gcrt1.S:79
  34:	50 c0       	rjmp	.+160    	; 0xd6 <__bad_interrupt>
  36:	00 00       	nop
../../../../../crt1/gcrt1.S:80
  38:	4e c0       	rjmp	.+156    	; 0xd6 <__bad_interrupt>
  3a:	00 00       	nop
../../../../../crt1/gcrt1.S:81
  3c:	4c c0       	rjmp	.+152    	; 0xd6 <__bad_interrupt>
  3e:	00 00       	nop
../../../../../crt1/gcrt1.S:82
  40:	4a c0       	rjmp	.+148    	; 0xd6 <__bad_interrupt>
  42:	00 00       	nop
../../../../../crt1/gcrt1.S:83
  44:	48 c0       	rjmp	.+144    	; 0xd6 <__bad_interrupt>
  46:	00 00       	nop
../../../../../crt1/gcrt1.S:84
  48:	46 c0       	rjmp	.+140    	; 0xd6 <__bad_interrupt>
  4a:	00 00       	nop
../../../../../crt1/gcrt1.S:85
  4c:	44 c0       	rjmp	.+136    	; 0xd6 <__bad_interrupt>
  4e:	00 00       	nop
../../../../../crt1/gcrt1.S:86
  50:	42 c0       	rjmp	.+132    	; 0xd6 <__bad_interrupt>
  52:	00 00       	nop
../../../../../crt1/gcrt1.S:87
  54:	40 c0       	rjmp	.+128    	; 0xd6 <__bad_interrupt>
  56:	00 00       	nop
../../../../../crt1/gcrt1.S:88
  58:	3e c0       	rjmp	.+124    	; 0xd6 <__bad_interrupt>
  5a:	00 00       	nop
../../../../../crt1/gcrt1.S:89
  5c:	3c c0       	rjmp	.+120    	; 0xd6 <__bad_interrupt>
  5e:	00 00       	nop
../../../../../crt1/gcrt1.S:90
  60:	3a c0       	rjmp	.+116    	; 0xd6 <__bad_interrupt>
  62:	00 00       	nop
../../../../../crt1/gcrt1.S:91
  64:	69 c3       	rjmp	.+1746   	; 0x738 <__vector_25>
  66:	00 00       	nop
../../../../../crt1/gcrt1.S:92
  68:	36 c0       	rjmp	.+108    	; 0xd6 <__bad_interrupt>
  6a:	00 00       	nop
../../../../../crt1/gcrt1.S:93
  6c:	34 c0       	rjmp	.+104    	; 0xd6 <__bad_interrupt>
  6e:	00 00       	nop
../../../../../crt1/gcrt1.S:94
  70:	32 c0       	rjmp	.+100    	; 0xd6 <__bad_interrupt>
  72:	00 00       	nop
../../../../../crt1/gcrt1.S:95
  74:	30 c0       	rjmp	.+96     	; 0xd6 <__bad_interrupt>
  76:	00 00       	nop
../../../../../crt1/gcrt1.S:96
  78:	2e c0       	rjmp	.+92     	; 0xd6 <__bad_interrupt>
  7a:	00 00       	nop
../../../../../crt1/gcrt1.S:97
  7c:	2c c0       	rjmp	.+88     	; 0xd6 <__bad_interrupt>
  7e:	00 00       	nop
../../../../../crt1/gcrt1.S:98
  80:	2a c0       	rjmp	.+84     	; 0xd6 <__bad_interrupt>
  82:	00 00       	nop
../../../../../crt1/gcrt1.S:99
  84:	28 c0       	rjmp	.+80     	; 0xd6 <__bad_interrupt>
  86:	00 00       	nop
../../../../../crt1/gcrt1.S:100
  88:	26 c0       	rjmp	.+76     	; 0xd6 <__bad_interrupt>
  8a:	00 00       	nop
../../../../../crt1/gcrt1.S:101
  8c:	24 c0       	rjmp	.+72     	; 0xd6 <__bad_interrupt>
  8e:	00 00       	nop
../../../../../crt1/gcrt1.S:102
  90:	22 c0       	rjmp	.+68     	; 0xd6 <__bad_interrupt>
  92:	00 00       	nop
../../../../../crt1/gcrt1.S:103
  94:	20 c0       	rjmp	.+64     	; 0xd6 <__bad_interrupt>
  96:	00 00       	nop
../../../../../crt1/gcrt1.S:104
  98:	1e c0       	rjmp	.+60     	; 0xd6 <__bad_interrupt>
  9a:	00 00       	nop
../../../../../crt1/gcrt1.S:105
  9c:	1c c0       	rjmp	.+56     	; 0xd6 <__bad_interrupt>
	...

000000a0 <__ctors_start>:
__trampolines_start():
  a0:	c4 03       	fmuls	r20, r20

000000a2 <__ctors_end>:
__dtors_end():
../../../../../crt1/gcrt1.S:230
  a2:	11 24       	eor	r1, r1
../../../../../crt1/gcrt1.S:231
  a4:	1f be       	out	0x3f, r1	; 63
../../../../../crt1/gcrt1.S:232
  a6:	cf ef       	ldi	r28, 0xFF	; 255
../../../../../crt1/gcrt1.S:234
  a8:	cd bf       	out	0x3d, r28	; 61
../../../../../crt1/gcrt1.S:236
  aa:	df e3       	ldi	r29, 0x3F	; 63
../../../../../crt1/gcrt1.S:237
  ac:	de bf       	out	0x3e, r29	; 62

000000ae <__do_clear_bss>:
__do_clear_bss():
/home/jenkins-mingw32/workspace/avr-gcc-staging/label/Ubuntu14.04x64-mingw32/gcc-build/avr/avrxmega3/short-calls/libgcc/../../../../../gcc/libgcc/config/avr/lib1funcs.S:2441
  ae:	2c e3       	ldi	r18, 0x3C	; 60
/home/jenkins-mingw32/workspace/avr-gcc-staging/label/Ubuntu14.04x64-mingw32/gcc-build/avr/avrxmega3/short-calls/libgcc/../../../../../gcc/libgcc/config/avr/lib1funcs.S:2442
  b0:	a0 e0       	ldi	r26, 0x00	; 0
/home/jenkins-mingw32/workspace/avr-gcc-staging/label/Ubuntu14.04x64-mingw32/gcc-build/avr/avrxmega3/short-calls/libgcc/../../../../../gcc/libgcc/config/avr/lib1funcs.S:2443
  b2:	bc e3       	ldi	r27, 0x3C	; 60
/home/jenkins-mingw32/workspace/avr-gcc-staging/label/Ubuntu14.04x64-mingw32/gcc-build/avr/avrxmega3/short-calls/libgcc/../../../../../gcc/libgcc/config/avr/lib1funcs.S:2444
  b4:	01 c0       	rjmp	.+2      	; 0xb8 <.do_clear_bss_start>

000000b6 <.do_clear_bss_loop>:
/home/jenkins-mingw32/workspace/avr-gcc-staging/label/Ubuntu14.04x64-mingw32/gcc-build/avr/avrxmega3/short-calls/libgcc/../../../../../gcc/libgcc/config/avr/lib1funcs.S:2446
  b6:	1d 92       	st	X+, r1

000000b8 <.do_clear_bss_start>:
/home/jenkins-mingw32/workspace/avr-gcc-staging/label/Ubuntu14.04x64-mingw32/gcc-build/avr/avrxmega3/short-calls/libgcc/../../../../../gcc/libgcc/config/avr/lib1funcs.S:2448
  b8:	a8 38       	cpi	r26, 0x88	; 136
/home/jenkins-mingw32/workspace/avr-gcc-staging/label/Ubuntu14.04x64-mingw32/gcc-build/avr/avrxmega3/short-calls/libgcc/../../../../../gcc/libgcc/config/avr/lib1funcs.S:2449
  ba:	b2 07       	cpc	r27, r18
/home/jenkins-mingw32/workspace/avr-gcc-staging/label/Ubuntu14.04x64-mingw32/gcc-build/avr/avrxmega3/short-calls/libgcc/../../../../../gcc/libgcc/config/avr/lib1funcs.S:2450
  bc:	e1 f7       	brne	.-8      	; 0xb6 <.do_clear_bss_loop>

000000be <__do_global_ctors>:
__do_global_ctors():
/home/jenkins-mingw32/workspace/avr-gcc-staging/label/Ubuntu14.04x64-mingw32/gcc-build/avr/avrxmega3/short-calls/libgcc/../../../../../gcc/libgcc/config/avr/lib1funcs.S:2466
  be:	10 e0       	ldi	r17, 0x00	; 0
/home/jenkins-mingw32/workspace/avr-gcc-staging/label/Ubuntu14.04x64-mingw32/gcc-build/avr/avrxmega3/short-calls/libgcc/../../../../../gcc/libgcc/config/avr/lib1funcs.S:2467
  c0:	c1 e5       	ldi	r28, 0x51	; 81
/home/jenkins-mingw32/workspace/avr-gcc-staging/label/Ubuntu14.04x64-mingw32/gcc-build/avr/avrxmega3/short-calls/libgcc/../../../../../gcc/libgcc/config/avr/lib1funcs.S:2468
  c2:	d0 e0       	ldi	r29, 0x00	; 0
/home/jenkins-mingw32/workspace/avr-gcc-staging/label/Ubuntu14.04x64-mingw32/gcc-build/avr/avrxmega3/short-calls/libgcc/../../../../../gcc/libgcc/config/avr/lib1funcs.S:2472
  c4:	03 c0       	rjmp	.+6      	; 0xcc <__do_global_ctors+0xe>
/home/jenkins-mingw32/workspace/avr-gcc-staging/label/Ubuntu14.04x64-mingw32/gcc-build/avr/avrxmega3/short-calls/libgcc/../../../../../gcc/libgcc/config/avr/lib1funcs.S:2474
  c6:	21 97       	sbiw	r28, 0x01	; 1
/home/jenkins-mingw32/workspace/avr-gcc-staging/label/Ubuntu14.04x64-mingw32/gcc-build/avr/avrxmega3/short-calls/libgcc/../../../../../gcc/libgcc/config/avr/lib1funcs.S:2480
  c8:	fe 01       	movw	r30, r28
/home/jenkins-mingw32/workspace/avr-gcc-staging/label/Ubuntu14.04x64-mingw32/gcc-build/avr/avrxmega3/short-calls/libgcc/../../../../../gcc/libgcc/config/avr/lib1funcs.S:2481
  ca:	f8 d5       	rcall	.+3056   	; 0xcbc <__tablejump2__>
/home/jenkins-mingw32/workspace/avr-gcc-staging/label/Ubuntu14.04x64-mingw32/gcc-build/avr/avrxmega3/short-calls/libgcc/../../../../../gcc/libgcc/config/avr/lib1funcs.S:2483
  cc:	c0 35       	cpi	r28, 0x50	; 80
/home/jenkins-mingw32/workspace/avr-gcc-staging/label/Ubuntu14.04x64-mingw32/gcc-build/avr/avrxmega3/short-calls/libgcc/../../../../../gcc/libgcc/config/avr/lib1funcs.S:2484
  ce:	d1 07       	cpc	r29, r17
/home/jenkins-mingw32/workspace/avr-gcc-staging/label/Ubuntu14.04x64-mingw32/gcc-build/avr/avrxmega3/short-calls/libgcc/../../../../../gcc/libgcc/config/avr/lib1funcs.S:2489
  d0:	d1 f7       	brne	.-12     	; 0xc6 <__do_global_ctors+0x8>
../../../../../crt1/gcrt1.S:314
  d2:	b9 d3       	rcall	.+1906   	; 0x846 <main>
../../../../../crt1/gcrt1.S:315
  d4:	0e c6       	rjmp	.+3100   	; 0xcf2 <_exit>

000000d6 <__bad_interrupt>:
__vector_38():
../../../../../crt1/gcrt1.S:209
  d6:	94 cf       	rjmp	.-216    	; 0x0 <__vectors>

000000d8 <SPIClass::transfer(unsigned char) [clone .constprop.25]>:
_ZN8SPIClass8transferEh.constprop.25():
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\libraries\SPI\src/SPI.cpp:304
  * The following NOP introduces a small delay that can prevent the wait
  * loop from iterating when running at the maximum speed. This gives
  * about 10% more speed, even if it seems counter-intuitive. At lower
  * speeds it is unnoticed.
  */
  asm volatile("nop");
  d8:	00 00       	nop
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\libraries\SPI\src/SPI.cpp:306

  SPI0.DATA = data;
  da:	80 93 c4 08 	sts	0x08C4, r24	; 0x8008c4 <MCP2515::TXB+0x7fbb18>
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\libraries\SPI\src/SPI.cpp:307
  while ((SPI0.INTFLAGS & SPI_RXCIF_bm) == 0);  // wait for complete send
  de:	80 91 c3 08 	lds	r24, 0x08C3	; 0x8008c3 <MCP2515::TXB+0x7fbb17>
  e2:	87 ff       	sbrs	r24, 7
  e4:	fc cf       	rjmp	.-8      	; 0xde <SPIClass::transfer(unsigned char) [clone .constprop.25]+0x6>
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\libraries\SPI\src/SPI.cpp:308
  return SPI0.DATA;                             // read data back
  e6:	80 91 c4 08 	lds	r24, 0x08C4	; 0x8008c4 <MCP2515::TXB+0x7fbb18>
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\libraries\SPI\src/SPI.cpp:309
}
  ea:	08 95       	ret

000000ec <digitalWrite.part.2>:
digitalWrite.part.2():
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\cores\coreX-corefiles/wiring_digital.c:137
}

void digitalWrite(uint8_t pin, uint8_t val)
{
  /* Get bit mask for pin */
  uint8_t bit_mask = digitalPinToBitMask(pin);
  ec:	28 2f       	mov	r18, r24
  ee:	30 e0       	ldi	r19, 0x00	; 0
  f0:	f9 01       	movw	r30, r18
  f2:	ed 57       	subi	r30, 0x7D	; 125
  f4:	f2 4b       	sbci	r31, 0xB2	; 178
  f6:	40 81       	ld	r20, Z
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\cores\coreX-corefiles/wiring_digital.c:138
  if (bit_mask == NOT_A_PIN)
  f8:	4f 3f       	cpi	r20, 0xFF	; 255
  fa:	09 f4       	brne	.+2      	; 0xfe <digitalWrite.part.2+0x12>
  fc:	50 c0       	rjmp	.+160    	; 0x19e <__EEPROM_REGION_LENGTH__+0x9e>
turnOffPWM():
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\cores\coreX-corefiles/wiring_digital.c:97
static void turnOffPWM(uint8_t pin)
{
  /* Actually turn off compare channel, not the timer */

  /* Get pin's timer */
  uint8_t timer = digitalPinToTimer(pin);
  fe:	89 32       	cpi	r24, 0x29	; 41
 100:	58 f4       	brcc	.+22     	; 0x118 <__EEPROM_REGION_LENGTH__+0x18>
 102:	f9 01       	movw	r30, r18
 104:	e8 5f       	subi	r30, 0xF8	; 248
 106:	f2 4b       	sbci	r31, 0xB2	; 178
 108:	e0 81       	ld	r30, Z
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\cores\coreX-corefiles/wiring_digital.c:98
  if (timer == NOT_ON_TIMER)
 10a:	ee 23       	and	r30, r30
 10c:	29 f0       	breq	.+10     	; 0x118 <__EEPROM_REGION_LENGTH__+0x18>
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\cores\coreX-corefiles/wiring_digital.c:104
    return;

  uint8_t bit_pos;
  TCB_t *timerB;

  switch (timer)
 10e:	e1 30       	cpi	r30, 0x01	; 1
 110:	99 f0       	breq	.+38     	; 0x138 <__EEPROM_REGION_LENGTH__+0x38>
 112:	10 f0       	brcs	.+4      	; 0x118 <__EEPROM_REGION_LENGTH__+0x18>
 114:	e6 30       	cpi	r30, 0x06	; 6
 116:	20 f1       	brcs	.+72     	; 0x160 <__EEPROM_REGION_LENGTH__+0x60>
digitalWrite.part.2():
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\cores\coreX-corefiles/wiring_digital.c:150
  turnOffPWM(pin);

  /* Assuming the direction is already output !! */

  /* Get port */
  PORT_t *port = digitalPinToPortStruct(pin);
 118:	f9 01       	movw	r30, r18
 11a:	e6 5a       	subi	r30, 0xA6	; 166
 11c:	f2 4b       	sbci	r31, 0xB2	; 178
 11e:	e0 81       	ld	r30, Z
 120:	a0 e2       	ldi	r26, 0x20	; 32
 122:	ea 9f       	mul	r30, r26
 124:	f0 01       	movw	r30, r0
 126:	11 24       	eor	r1, r1
 128:	fc 5f       	subi	r31, 0xFC	; 252
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\cores\coreX-corefiles/wiring_digital.c:153

  /* Output direction */
  if (port->DIR & bit_mask)
 12a:	80 81       	ld	r24, Z
 12c:	84 23       	and	r24, r20
 12e:	21 f1       	breq	.+72     	; 0x178 <__EEPROM_REGION_LENGTH__+0x78>
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\cores\coreX-corefiles/wiring_digital.c:156
  {
    /* Set output to value */
    if (val == LOW)
 130:	61 11       	cpse	r22, r1
 132:	20 c0       	rjmp	.+64     	; 0x174 <__EEPROM_REGION_LENGTH__+0x74>
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\cores\coreX-corefiles/wiring_digital.c:158
    { /* If LOW */
      port->OUTCLR = bit_mask;
 134:	46 83       	std	Z+6, r20	; 0x06
 136:	08 95       	ret
turnOffPWM():
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\cores\coreX-corefiles/wiring_digital.c:109
  switch (timer)
  {
    /* TCA0 */
    case TIMERA0:
      /* Bit position will give output channel */
      bit_pos = digitalPinToBitPosition(pin);
 138:	f9 01       	movw	r30, r18
 13a:	ef 5c       	subi	r30, 0xCF	; 207
 13c:	f2 4b       	sbci	r31, 0xB2	; 178
 13e:	50 81       	ld	r21, Z
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\cores\coreX-corefiles/wiring_digital.c:112

      /* Disable corresponding channel */
      if (bit_pos >= 3) ++bit_pos; /* Upper 3 bits are shifted by 1 */
 140:	53 30       	cpi	r21, 0x03	; 3
 142:	08 f0       	brcs	.+2      	; 0x146 <__EEPROM_REGION_LENGTH__+0x46>
 144:	5f 5f       	subi	r21, 0xFF	; 255
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\cores\coreX-corefiles/wiring_digital.c:113
      TCA0.SPLIT.CTRLB &= ~(1 << (TCA_SPLIT_LCMP0EN_bp + bit_pos));
 146:	70 91 01 0a 	lds	r23, 0x0A01	; 0x800a01 <MCP2515::TXB+0x7fbc55>
 14a:	81 e0       	ldi	r24, 0x01	; 1
 14c:	90 e0       	ldi	r25, 0x00	; 0
 14e:	01 c0       	rjmp	.+2      	; 0x152 <__EEPROM_REGION_LENGTH__+0x52>
 150:	88 0f       	add	r24, r24
 152:	5a 95       	dec	r21
 154:	ea f7       	brpl	.-6      	; 0x150 <__EEPROM_REGION_LENGTH__+0x50>
 156:	80 95       	com	r24
 158:	87 23       	and	r24, r23
 15a:	80 93 01 0a 	sts	0x0A01, r24	; 0x800a01 <MCP2515::TXB+0x7fbc55>
 15e:	dc cf       	rjmp	.-72     	; 0x118 <__EEPROM_REGION_LENGTH__+0x18>
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\cores\coreX-corefiles/wiring_digital.c:123
    case TIMERB0:
    case TIMERB1:
    case TIMERB2:
    case TIMERB3:

      timerB = (TCB_t *)&TCB0 + (timer - TIMERB0);
 160:	80 e1       	ldi	r24, 0x10	; 16
 162:	e8 9f       	mul	r30, r24
 164:	f0 01       	movw	r30, r0
 166:	11 24       	eor	r1, r1
 168:	e0 5a       	subi	r30, 0xA0	; 160
 16a:	f5 4f       	sbci	r31, 0xF5	; 245
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\cores\coreX-corefiles/wiring_digital.c:126

      /* Disable TCB compare channel */
      timerB->CTRLB &= ~(TCB_CCMPEN_bm);
 16c:	81 81       	ldd	r24, Z+1	; 0x01
 16e:	8f 7e       	andi	r24, 0xEF	; 239
 170:	81 83       	std	Z+1, r24	; 0x01
 172:	d2 cf       	rjmp	.-92     	; 0x118 <__EEPROM_REGION_LENGTH__+0x18>
digitalWrite.part.2():
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\cores\coreX-corefiles/wiring_digital.c:167
      port->OUTTGL = bit_mask;
      /* If HIGH OR  > TOGGLE  */
    }
    else
    {
      port->OUTSET = bit_mask;
 174:	45 83       	std	Z+5, r20	; 0x05
 176:	08 95       	ret
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\cores\coreX-corefiles/wiring_digital.c:180
    pull up is enabled if this function is called.
    Should we purposely implement this side effect?
    */

    /* Get bit position for getting pin ctrl reg */
    uint8_t bit_pos = digitalPinToBitPosition(pin);
 178:	2f 5c       	subi	r18, 0xCF	; 207
 17a:	32 4b       	sbci	r19, 0xB2	; 178
 17c:	d9 01       	movw	r26, r18
 17e:	8c 91       	ld	r24, X
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\cores\coreX-corefiles/wiring_digital.c:183

    /* Calculate where pin control register is */
    volatile uint8_t *pin_ctrl_reg = getPINnCTRLregister(port, bit_pos);
 180:	30 97       	sbiw	r30, 0x00	; 0
 182:	71 f0       	breq	.+28     	; 0x1a0 <__EEPROM_REGION_LENGTH__+0xa0>
 184:	8f 3f       	cpi	r24, 0xFF	; 255
 186:	61 f0       	breq	.+24     	; 0x1a0 <__EEPROM_REGION_LENGTH__+0xa0>
 188:	70 96       	adiw	r30, 0x10	; 16
 18a:	e8 0f       	add	r30, r24
 18c:	f1 1d       	adc	r31, r1
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\cores\coreX-corefiles/wiring_digital.c:186

    /* Save system status and disable interrupts */
    uint8_t status = SREG;
 18e:	9f b7       	in	r25, 0x3f	; 63
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\cores\coreX-corefiles/wiring_digital.c:187
    cli();
 190:	f8 94       	cli
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\cores\coreX-corefiles/wiring_digital.c:192

    if (val == LOW)
    {
      /* Disable pullup */
      *pin_ctrl_reg &= ~PORT_PULLUPEN_bm;
 192:	80 81       	ld	r24, Z
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\cores\coreX-corefiles/wiring_digital.c:189

    /* Save system status and disable interrupts */
    uint8_t status = SREG;
    cli();

    if (val == LOW)
 194:	61 11       	cpse	r22, r1
 196:	07 c0       	rjmp	.+14     	; 0x1a6 <__EEPROM_REGION_LENGTH__+0xa6>
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\cores\coreX-corefiles/wiring_digital.c:192
    {
      /* Disable pullup */
      *pin_ctrl_reg &= ~PORT_PULLUPEN_bm;
 198:	87 7f       	andi	r24, 0xF7	; 247
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\cores\coreX-corefiles/wiring_digital.c:197
    }
    else
    {
      /* Enable pull-up */
      *pin_ctrl_reg |= PORT_PULLUPEN_bm;
 19a:	80 83       	st	Z, r24
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\cores\coreX-corefiles/wiring_digital.c:201
    }

    /* Restore system status */
    SREG = status;
 19c:	9f bf       	out	0x3f, r25	; 63
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\cores\coreX-corefiles/wiring_digital.c:203
  }
}
 19e:	08 95       	ret
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\cores\coreX-corefiles/wiring_digital.c:183

    /* Get bit position for getting pin ctrl reg */
    uint8_t bit_pos = digitalPinToBitPosition(pin);

    /* Calculate where pin control register is */
    volatile uint8_t *pin_ctrl_reg = getPINnCTRLregister(port, bit_pos);
 1a0:	f0 e0       	ldi	r31, 0x00	; 0
 1a2:	e0 e0       	ldi	r30, 0x00	; 0
 1a4:	f4 cf       	rjmp	.-24     	; 0x18e <__EEPROM_REGION_LENGTH__+0x8e>
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\cores\coreX-corefiles/wiring_digital.c:197
      *pin_ctrl_reg &= ~PORT_PULLUPEN_bm;
    }
    else
    {
      /* Enable pull-up */
      *pin_ctrl_reg |= PORT_PULLUPEN_bm;
 1a6:	88 60       	ori	r24, 0x08	; 8
 1a8:	f8 cf       	rjmp	.-16     	; 0x19a <__EEPROM_REGION_LENGTH__+0x9a>

000001aa <MCP2515::endSPI() [clone .constprop.31]>:
_ZN7MCP25156endSPIEv.constprop.31():
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:29
void MCP2515::startSPI() {
    SPI.beginTransaction(SPISettings(SPI_CLOCK, MSBFIRST, SPI_MODE0));
    digitalWrite(SPICS, LOW);
}

void MCP2515::endSPI() {
 1aa:	8f 92       	push	r8
 1ac:	9f 92       	push	r9
 1ae:	af 92       	push	r10
 1b0:	bf 92       	push	r11
 1b2:	cf 92       	push	r12
 1b4:	df 92       	push	r13
 1b6:	ef 92       	push	r14
 1b8:	ff 92       	push	r15
 1ba:	0f 93       	push	r16
 1bc:	cf 93       	push	r28
 1be:	df 93       	push	r29
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:30
    digitalWrite(SPICS, HIGH);
 1c0:	80 91 85 3c 	lds	r24, 0x3C85	; 0x803c85 <mcp2515>
digitalWrite():
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\cores\coreX-corefiles/wiring_digital.c:137
}

void digitalWrite(uint8_t pin, uint8_t val)
{
  /* Get bit mask for pin */
  uint8_t bit_mask = digitalPinToBitMask(pin);
 1c4:	89 32       	cpi	r24, 0x29	; 41
 1c6:	10 f4       	brcc	.+4      	; 0x1cc <MCP2515::endSPI() [clone .constprop.31]+0x22>
 1c8:	61 e0       	ldi	r22, 0x01	; 1
 1ca:	90 df       	rcall	.-224    	; 0xec <digitalWrite.part.2>
endTransaction():
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\libraries\SPI\src/SPI.cpp:265
  config(settings);
}

void SPIClass::endTransaction(void)
{
  if (interruptMode != SPI_IMODE_NONE)
 1cc:	80 91 1c 3c 	lds	r24, 0x3C1C	; 0x803c1c <SPI+0x6>
 1d0:	88 23       	and	r24, r24
 1d2:	19 f0       	breq	.+6      	; 0x1da <MCP2515::endSPI() [clone .constprop.31]+0x30>
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\libraries\SPI\src/SPI.cpp:267
  {
    if (interruptMode & SPI_IMODE_GLOBAL)
 1d4:	81 ff       	sbrs	r24, 1
 1d6:	0d c0       	rjmp	.+26     	; 0x1f2 <MCP2515::endSPI() [clone .constprop.31]+0x48>
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\libraries\SPI\src/SPI.cpp:269
    {
        interrupts();
 1d8:	78 94       	sei
_ZN7MCP25156endSPIEv.constprop.31():
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:32
    SPI.endTransaction();
}
 1da:	df 91       	pop	r29
 1dc:	cf 91       	pop	r28
 1de:	0f 91       	pop	r16
 1e0:	ff 90       	pop	r15
 1e2:	ef 90       	pop	r14
 1e4:	df 90       	pop	r13
 1e6:	cf 90       	pop	r12
 1e8:	bf 90       	pop	r11
 1ea:	af 90       	pop	r10
 1ec:	9f 90       	pop	r9
 1ee:	8f 90       	pop	r8
 1f0:	08 95       	ret
endTransaction():
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\libraries\SPI\src/SPI.cpp:271
    }
    else if (interruptMode & SPI_IMODE_EXTINT)
 1f2:	80 ff       	sbrs	r24, 0
 1f4:	f2 cf       	rjmp	.-28     	; 0x1da <MCP2515::endSPI() [clone .constprop.31]+0x30>
reattachMaskedInterrupts():
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\libraries\SPI\src/SPI.cpp:225
    shift++;
  }
}

void SPIClass::reattachMaskedInterrupts() {
  uint64_t temp = interruptMask_lo;
 1f6:	80 90 1e 3c 	lds	r8, 0x3C1E	; 0x803c1e <SPI+0x8>
 1fa:	90 90 1f 3c 	lds	r9, 0x3C1F	; 0x803c1f <SPI+0x9>
 1fe:	a0 90 20 3c 	lds	r10, 0x3C20	; 0x803c20 <SPI+0xa>
 202:	b0 90 21 3c 	lds	r11, 0x3C21	; 0x803c21 <SPI+0xb>
 206:	c1 2c       	mov	r12, r1
 208:	d1 2c       	mov	r13, r1
 20a:	76 01       	movw	r14, r12
_ZN7MCP25156endSPIEv.constprop.31():
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\libraries\SPI\src/SPI.cpp:226
  uint8_t shift = 0;
 20c:	e0 e0       	ldi	r30, 0x00	; 0
reattachMaskedInterrupts():
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\libraries\SPI\src/SPI.cpp:227
  while (temp != 0) {
 20e:	94 01       	movw	r18, r8
 210:	a5 01       	movw	r20, r10
 212:	b6 01       	movw	r22, r12
 214:	c7 01       	movw	r24, r14
 216:	a0 e0       	ldi	r26, 0x00	; 0
 218:	45 d5       	rcall	.+2698   	; 0xca4 <__cmpdi2_s8>
 21a:	81 f1       	breq	.+96     	; 0x27c <MCP2515::endSPI() [clone .constprop.31]+0xd2>
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\libraries\SPI\src/SPI.cpp:228
    if (temp & 1) {
 21c:	21 70       	andi	r18, 0x01	; 1
 21e:	30 e0       	ldi	r19, 0x00	; 0
 220:	40 e0       	ldi	r20, 0x00	; 0
 222:	50 e0       	ldi	r21, 0x00	; 0
 224:	60 e0       	ldi	r22, 0x00	; 0
 226:	70 e0       	ldi	r23, 0x00	; 0
 228:	80 e0       	ldi	r24, 0x00	; 0
 22a:	90 e0       	ldi	r25, 0x00	; 0
 22c:	3b d5       	rcall	.+2678   	; 0xca4 <__cmpdi2_s8>
 22e:	d1 f0       	breq	.+52     	; 0x264 <MCP2515::endSPI() [clone .constprop.31]+0xba>
_ZN7MCP25156endSPIEv.constprop.31():
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\libraries\SPI\src/SPI.cpp:229
      volatile uint8_t* pin_ctrl_reg = getPINnCTRLregister(portToPortStruct(shift/8), shift%8);
 230:	b0 e0       	ldi	r27, 0x00	; 0
 232:	a0 e0       	ldi	r26, 0x00	; 0
reattachMaskedInterrupts():
 234:	e0 33       	cpi	r30, 0x30	; 48
 236:	70 f4       	brcc	.+28     	; 0x254 <MCP2515::endSPI() [clone .constprop.31]+0xaa>
 238:	ae 2f       	mov	r26, r30
 23a:	a6 95       	lsr	r26
 23c:	a6 95       	lsr	r26
 23e:	a6 95       	lsr	r26
 240:	80 e2       	ldi	r24, 0x20	; 32
 242:	a8 9f       	mul	r26, r24
 244:	d0 01       	movw	r26, r0
 246:	11 24       	eor	r1, r1
 248:	a0 5f       	subi	r26, 0xF0	; 240
 24a:	bb 4f       	sbci	r27, 0xFB	; 251
 24c:	8e 2f       	mov	r24, r30
 24e:	87 70       	andi	r24, 0x07	; 7
 250:	a8 0f       	add	r26, r24
 252:	b1 1d       	adc	r27, r1
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\libraries\SPI\src/SPI.cpp:230
      *pin_ctrl_reg |= irqMap[shift];
 254:	ce 2f       	mov	r28, r30
 256:	d0 e0       	ldi	r29, 0x00	; 0
 258:	ca 5e       	subi	r28, 0xEA	; 234
 25a:	d3 4c       	sbci	r29, 0xC3	; 195
 25c:	88 89       	ldd	r24, Y+16	; 0x10
 25e:	9c 91       	ld	r25, X
 260:	89 2b       	or	r24, r25
 262:	8c 93       	st	X, r24
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\libraries\SPI\src/SPI.cpp:232
    }
    temp = temp >> 1;
 264:	94 01       	movw	r18, r8
 266:	a5 01       	movw	r20, r10
 268:	b6 01       	movw	r22, r12
 26a:	c7 01       	movw	r24, r14
 26c:	01 e0       	ldi	r16, 0x01	; 1
 26e:	ff d4       	rcall	.+2558   	; 0xc6e <__lshrdi3>
 270:	49 01       	movw	r8, r18
 272:	5a 01       	movw	r10, r20
 274:	6b 01       	movw	r12, r22
 276:	7c 01       	movw	r14, r24
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\libraries\SPI\src/SPI.cpp:233
    shift++;
 278:	ef 5f       	subi	r30, 0xFF	; 255
 27a:	c9 cf       	rjmp	.-110    	; 0x20e <MCP2515::endSPI() [clone .constprop.31]+0x64>
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\libraries\SPI\src/SPI.cpp:235
  }
  temp = interruptMask_hi;
 27c:	80 90 22 3c 	lds	r8, 0x3C22	; 0x803c22 <SPI+0xc>
 280:	90 90 23 3c 	lds	r9, 0x3C23	; 0x803c23 <SPI+0xd>
 284:	a0 90 24 3c 	lds	r10, 0x3C24	; 0x803c24 <SPI+0xe>
 288:	b0 90 25 3c 	lds	r11, 0x3C25	; 0x803c25 <SPI+0xf>
 28c:	c1 2c       	mov	r12, r1
 28e:	d1 2c       	mov	r13, r1
 290:	76 01       	movw	r14, r12
_ZN7MCP25156endSPIEv.constprop.31():
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\libraries\SPI\src/SPI.cpp:236
  shift = 32;
 292:	e0 e2       	ldi	r30, 0x20	; 32
reattachMaskedInterrupts():
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\libraries\SPI\src/SPI.cpp:237
  while (temp != 0) {
 294:	94 01       	movw	r18, r8
 296:	a5 01       	movw	r20, r10
 298:	b6 01       	movw	r22, r12
 29a:	c7 01       	movw	r24, r14
 29c:	a0 e0       	ldi	r26, 0x00	; 0
 29e:	02 d5       	rcall	.+2564   	; 0xca4 <__cmpdi2_s8>
 2a0:	09 f4       	brne	.+2      	; 0x2a4 <MCP2515::endSPI() [clone .constprop.31]+0xfa>
 2a2:	9b cf       	rjmp	.-202    	; 0x1da <MCP2515::endSPI() [clone .constprop.31]+0x30>
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\libraries\SPI\src/SPI.cpp:238
    if (temp & 1) {
 2a4:	21 70       	andi	r18, 0x01	; 1
 2a6:	30 e0       	ldi	r19, 0x00	; 0
 2a8:	40 e0       	ldi	r20, 0x00	; 0
 2aa:	50 e0       	ldi	r21, 0x00	; 0
 2ac:	60 e0       	ldi	r22, 0x00	; 0
 2ae:	70 e0       	ldi	r23, 0x00	; 0
 2b0:	80 e0       	ldi	r24, 0x00	; 0
 2b2:	90 e0       	ldi	r25, 0x00	; 0
 2b4:	f7 d4       	rcall	.+2542   	; 0xca4 <__cmpdi2_s8>
 2b6:	d1 f0       	breq	.+52     	; 0x2ec <MCP2515::endSPI() [clone .constprop.31]+0x142>
_ZN7MCP25156endSPIEv.constprop.31():
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\libraries\SPI\src/SPI.cpp:239
      volatile uint8_t* pin_ctrl_reg = getPINnCTRLregister(portToPortStruct(shift/8), shift%8);
 2b8:	b0 e0       	ldi	r27, 0x00	; 0
 2ba:	a0 e0       	ldi	r26, 0x00	; 0
reattachMaskedInterrupts():
 2bc:	e0 33       	cpi	r30, 0x30	; 48
 2be:	70 f4       	brcc	.+28     	; 0x2dc <MCP2515::endSPI() [clone .constprop.31]+0x132>
 2c0:	ae 2f       	mov	r26, r30
 2c2:	a6 95       	lsr	r26
 2c4:	a6 95       	lsr	r26
 2c6:	a6 95       	lsr	r26
 2c8:	80 e2       	ldi	r24, 0x20	; 32
 2ca:	a8 9f       	mul	r26, r24
 2cc:	d0 01       	movw	r26, r0
 2ce:	11 24       	eor	r1, r1
 2d0:	a0 5f       	subi	r26, 0xF0	; 240
 2d2:	bb 4f       	sbci	r27, 0xFB	; 251
 2d4:	8e 2f       	mov	r24, r30
 2d6:	87 70       	andi	r24, 0x07	; 7
 2d8:	a8 0f       	add	r26, r24
 2da:	b1 1d       	adc	r27, r1
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\libraries\SPI\src/SPI.cpp:240
      *pin_ctrl_reg |= irqMap[shift];
 2dc:	ce 2f       	mov	r28, r30
 2de:	d0 e0       	ldi	r29, 0x00	; 0
 2e0:	ca 5e       	subi	r28, 0xEA	; 234
 2e2:	d3 4c       	sbci	r29, 0xC3	; 195
 2e4:	88 89       	ldd	r24, Y+16	; 0x10
 2e6:	9c 91       	ld	r25, X
 2e8:	89 2b       	or	r24, r25
 2ea:	8c 93       	st	X, r24
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\libraries\SPI\src/SPI.cpp:242
    }
    temp = temp >> 1;
 2ec:	94 01       	movw	r18, r8
 2ee:	a5 01       	movw	r20, r10
 2f0:	b6 01       	movw	r22, r12
 2f2:	c7 01       	movw	r24, r14
 2f4:	01 e0       	ldi	r16, 0x01	; 1
 2f6:	bb d4       	rcall	.+2422   	; 0xc6e <__lshrdi3>
 2f8:	49 01       	movw	r8, r18
 2fa:	5a 01       	movw	r10, r20
 2fc:	6b 01       	movw	r12, r22
 2fe:	7c 01       	movw	r14, r24
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\libraries\SPI\src/SPI.cpp:243
    shift++;
 300:	ef 5f       	subi	r30, 0xFF	; 255
 302:	c8 cf       	rjmp	.-112    	; 0x294 <MCP2515::endSPI() [clone .constprop.31]+0xea>

00000304 <pinMode.part.1>:
pinMode.part.1():
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\cores\coreX-corefiles/wiring_digital.c:29

#define ARDUINO_MAIN
#include "wiring_private.h"
#include "pins_arduino.h"

void pinMode(uint8_t pin, uint8_t mode)
 304:	cf 93       	push	r28
 306:	df 93       	push	r29
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\cores\coreX-corefiles/wiring_digital.c:31
{
  uint8_t bit_mask = digitalPinToBitMask(pin);
 308:	90 e0       	ldi	r25, 0x00	; 0
 30a:	fc 01       	movw	r30, r24
 30c:	ed 57       	subi	r30, 0x7D	; 125
 30e:	f2 4b       	sbci	r31, 0xB2	; 178
 310:	20 81       	ld	r18, Z
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\cores\coreX-corefiles/wiring_digital.c:33

  if ((bit_mask == NOT_A_PIN) || (mode > INPUT_PULLUP))
 312:	2f 3f       	cpi	r18, 0xFF	; 255
 314:	61 f0       	breq	.+24     	; 0x32e <pinMode.part.1+0x2a>
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\cores\coreX-corefiles/wiring_digital.c:36
    return;

  PORT_t *port = digitalPinToPortStruct(pin);
 316:	fc 01       	movw	r30, r24
 318:	e6 5a       	subi	r30, 0xA6	; 166
 31a:	f2 4b       	sbci	r31, 0xB2	; 178
 31c:	e0 81       	ld	r30, Z
 31e:	30 e2       	ldi	r19, 0x20	; 32
 320:	e3 9f       	mul	r30, r19
 322:	f0 01       	movw	r30, r0
 324:	11 24       	eor	r1, r1
 326:	fc 5f       	subi	r31, 0xFC	; 252
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\cores\coreX-corefiles/wiring_digital.c:40
  if (port == NULL)
    return;

  if (mode == OUTPUT)
 328:	61 30       	cpi	r22, 0x01	; 1
 32a:	21 f4       	brne	.+8      	; 0x334 <pinMode.part.1+0x30>
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\cores\coreX-corefiles/wiring_digital.c:43
  {
    /* Configure direction as output */
    port->DIRSET = bit_mask;
 32c:	21 83       	std	Z+1, r18	; 0x01
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\cores\coreX-corefiles/wiring_digital.c:75
    }

    /* Restore state */
    SREG = status;
  }
}
 32e:	df 91       	pop	r29
 330:	cf 91       	pop	r28
 332:	08 95       	ret
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\cores\coreX-corefiles/wiring_digital.c:48
    port->DIRSET = bit_mask;
  }
  else
  { /* mode == INPUT or INPUT_PULLUP */

    uint8_t bit_pos = digitalPinToBitPosition(pin);
 334:	8f 5c       	subi	r24, 0xCF	; 207
 336:	92 4b       	sbci	r25, 0xB2	; 178
 338:	ec 01       	movw	r28, r24
 33a:	a8 81       	ld	r26, Y
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\cores\coreX-corefiles/wiring_digital.c:50
    /* Calculate where pin control register is */
    volatile uint8_t *pin_ctrl_reg = getPINnCTRLregister(port, bit_pos);
 33c:	af 3f       	cpi	r26, 0xFF	; 255
 33e:	69 f0       	breq	.+26     	; 0x35a <pinMode.part.1+0x56>
 340:	cf 01       	movw	r24, r30
 342:	40 96       	adiw	r24, 0x10	; 16
 344:	a8 0f       	add	r26, r24
 346:	b9 2f       	mov	r27, r25
 348:	b1 1d       	adc	r27, r1
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\cores\coreX-corefiles/wiring_digital.c:53

    /* Save state */
    uint8_t status = SREG;
 34a:	9f b7       	in	r25, 0x3f	; 63
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\cores\coreX-corefiles/wiring_digital.c:54
    cli();
 34c:	f8 94       	cli
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\cores\coreX-corefiles/wiring_digital.c:57

    /* Configure direction as input */
    port->DIRCLR = bit_mask;
 34e:	22 83       	std	Z+2, r18	; 0x02
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\cores\coreX-corefiles/wiring_digital.c:63

    /* Configure pull-up resistor */
    if (mode == INPUT_PULLUP)
    {
      /* Enable pull-up */
      *pin_ctrl_reg |= PORT_PULLUPEN_bm;
 350:	8c 91       	ld	r24, X
 352:	88 60       	ori	r24, 0x08	; 8
 354:	8c 93       	st	X, r24
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\cores\coreX-corefiles/wiring_digital.c:73
      /* Disable pull-up */
      *pin_ctrl_reg &= ~(PORT_PULLUPEN_bm);
    }

    /* Restore state */
    SREG = status;
 356:	9f bf       	out	0x3f, r25	; 63
 358:	ea cf       	rjmp	.-44     	; 0x32e <pinMode.part.1+0x2a>
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\cores\coreX-corefiles/wiring_digital.c:50
  else
  { /* mode == INPUT or INPUT_PULLUP */

    uint8_t bit_pos = digitalPinToBitPosition(pin);
    /* Calculate where pin control register is */
    volatile uint8_t *pin_ctrl_reg = getPINnCTRLregister(port, bit_pos);
 35a:	b0 e0       	ldi	r27, 0x00	; 0
 35c:	a0 e0       	ldi	r26, 0x00	; 0
 35e:	f5 cf       	rjmp	.-22     	; 0x34a <pinMode.part.1+0x46>

00000360 <SPIClass::begin() [clone .constprop.28]>:
_ZN8SPIClass5beginEv.constprop.28():
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\libraries\SPI\src/SPI.cpp:131
  config(DEFAULT_SPI_SETTINGS);
}

void SPIClass::init()
{
  if (initialized)
 360:	80 91 1b 3c 	lds	r24, 0x3C1B	; 0x803c1b <SPI+0x5>
 364:	81 11       	cpse	r24, r1
 366:	17 c0       	rjmp	.+46     	; 0x396 <SPIClass::begin() [clone .constprop.28]+0x36>
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\libraries\SPI\src/SPI.cpp:133
    return;
  interruptMode = SPI_IMODE_NONE;
 368:	10 92 1c 3c 	sts	0x3C1C, r1	; 0x803c1c <SPI+0x6>
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\libraries\SPI\src/SPI.cpp:134
  interruptSave = 0;
 36c:	10 92 1d 3c 	sts	0x3C1D, r1	; 0x803c1d <SPI+0x7>
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\libraries\SPI\src/SPI.cpp:135
  interruptMask_lo = 0;
 370:	10 92 1e 3c 	sts	0x3C1E, r1	; 0x803c1e <SPI+0x8>
 374:	10 92 1f 3c 	sts	0x3C1F, r1	; 0x803c1f <SPI+0x9>
 378:	10 92 20 3c 	sts	0x3C20, r1	; 0x803c20 <SPI+0xa>
 37c:	10 92 21 3c 	sts	0x3C21, r1	; 0x803c21 <SPI+0xb>
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\libraries\SPI\src/SPI.cpp:136
  interruptMask_hi = 0;
 380:	10 92 22 3c 	sts	0x3C22, r1	; 0x803c22 <SPI+0xc>
 384:	10 92 23 3c 	sts	0x3C23, r1	; 0x803c23 <SPI+0xd>
 388:	10 92 24 3c 	sts	0x3C24, r1	; 0x803c24 <SPI+0xe>
 38c:	10 92 25 3c 	sts	0x3C25, r1	; 0x803c25 <SPI+0xf>
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\libraries\SPI\src/SPI.cpp:137
  initialized = true;
 390:	81 e0       	ldi	r24, 0x01	; 1
 392:	80 93 1b 3c 	sts	0x3C1B, r24	; 0x803c1b <SPI+0x5>
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\libraries\SPI\src/SPI.cpp:99

void SPIClass::begin()
{
  init();

  PORTMUX.TWISPIROUTEA = _uc_mux | (PORTMUX.TWISPIROUTEA & ~3);
 396:	80 91 e3 05 	lds	r24, 0x05E3	; 0x8005e3 <MCP2515::TXB+0x7fb837>
 39a:	8c 7f       	andi	r24, 0xFC	; 252
 39c:	90 91 1a 3c 	lds	r25, 0x3C1A	; 0x803c1a <SPI+0x4>
 3a0:	89 2b       	or	r24, r25
 3a2:	80 93 e3 05 	sts	0x05E3, r24	; 0x8005e3 <MCP2515::TXB+0x7fb837>
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\libraries\SPI\src/SPI.cpp:102

  // MISO is set to input by the controller
  if(_uc_mux == SPI_MUX)
 3a6:	91 11       	cpse	r25, r1
 3a8:	19 c0       	rjmp	.+50     	; 0x3dc <SPIClass::begin() [clone .constprop.28]+0x7c>
pinMode():
 3aa:	61 e0       	ldi	r22, 0x01	; 1
 3ac:	84 e0       	ldi	r24, 0x04	; 4
 3ae:	aa df       	rcall	.-172    	; 0x304 <pinMode.part.1>
 3b0:	61 e0       	ldi	r22, 0x01	; 1
 3b2:	86 e0       	ldi	r24, 0x06	; 6
 3b4:	a7 df       	rcall	.-178    	; 0x304 <pinMode.part.1>
_ZN8SPIClass5beginEv.constprop.28():
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\libraries\SPI\src/SPI.cpp:123
      pinMode(PIN_SPI_SCK_PINSWAP_2, OUTPUT);
    }
  #endif
  
  // We don't need HW SS since salve/master mode is selected via registers
  SPI0.CTRLB |= (SPI_SSD_bm);
 3b6:	80 91 c1 08 	lds	r24, 0x08C1	; 0x8008c1 <MCP2515::TXB+0x7fbb15>
 3ba:	84 60       	ori	r24, 0x04	; 4
 3bc:	80 93 c1 08 	sts	0x08C1, r24	; 0x8008c1 <MCP2515::TXB+0x7fbb15>
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\libraries\SPI\src/SPI.cpp:124
  SPI0.CTRLA |= (SPI_ENABLE_bm | SPI_MASTER_bm);
 3c0:	80 91 c0 08 	lds	r24, 0x08C0	; 0x8008c0 <MCP2515::TXB+0x7fbb14>
 3c4:	81 62       	ori	r24, 0x21	; 33
 3c6:	80 93 c0 08 	sts	0x08C0, r24	; 0x8008c0 <MCP2515::TXB+0x7fbb14>
 3ca:	90 91 14 3c 	lds	r25, 0x3C14	; 0x803c14 <DEFAULT_SPI_SETTINGS>
 3ce:	80 91 15 3c 	lds	r24, 0x3C15	; 0x803c15 <DEFAULT_SPI_SETTINGS+0x1>
config():
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\libraries\SPI\src/SPI.cpp:142
  initialized = true;
}

void SPIClass::config(SPISettings settings)
{
  SPI0.CTRLA = settings.ctrla;
 3d2:	90 93 c0 08 	sts	0x08C0, r25	; 0x8008c0 <MCP2515::TXB+0x7fbb14>
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\libraries\SPI\src/SPI.cpp:143
  SPI0.CTRLB = settings.ctrlb;
 3d6:	80 93 c1 08 	sts	0x08C1, r24	; 0x8008c1 <MCP2515::TXB+0x7fbb15>
_ZN8SPIClass5beginEv.constprop.28():
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\libraries\SPI\src/SPI.cpp:127
  // We don't need HW SS since salve/master mode is selected via registers
  SPI0.CTRLB |= (SPI_SSD_bm);
  SPI0.CTRLA |= (SPI_ENABLE_bm | SPI_MASTER_bm);

  config(DEFAULT_SPI_SETTINGS);
}
 3da:	08 95       	ret
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\libraries\SPI\src/SPI.cpp:108
  {
    pinMode(PIN_SPI_MOSI, OUTPUT);
    pinMode(PIN_SPI_SCK, OUTPUT);
  }
  #if defined(SPI_MUX_PINSWAP_1)
    else if(_uc_mux == SPI_MUX_PINSWAP_1)
 3dc:	91 30       	cpi	r25, 0x01	; 1
 3de:	31 f4       	brne	.+12     	; 0x3ec <SPIClass::begin() [clone .constprop.28]+0x8c>
pinMode():
 3e0:	61 e0       	ldi	r22, 0x01	; 1
 3e2:	8e e0       	ldi	r24, 0x0E	; 14
 3e4:	8f df       	rcall	.-226    	; 0x304 <pinMode.part.1>
 3e6:	61 e0       	ldi	r22, 0x01	; 1
 3e8:	80 e1       	ldi	r24, 0x10	; 16
 3ea:	e4 cf       	rjmp	.-56     	; 0x3b4 <SPIClass::begin() [clone .constprop.28]+0x54>
_ZN8SPIClass5beginEv.constprop.28():
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\libraries\SPI\src/SPI.cpp:115
      pinMode(PIN_SPI_MOSI_PINSWAP_1, OUTPUT);
      pinMode(PIN_SPI_SCK_PINSWAP_1, OUTPUT);
    }
  #endif
  #if defined(SPI_MUX_PINSWAP_2)
    else if(_uc_mux == SPI_MUX_PINSWAP_2)
 3ec:	92 30       	cpi	r25, 0x02	; 2
 3ee:	19 f7       	brne	.-58     	; 0x3b6 <SPIClass::begin() [clone .constprop.28]+0x56>
pinMode():
 3f0:	61 e0       	ldi	r22, 0x01	; 1
 3f2:	8e e1       	ldi	r24, 0x1E	; 30
 3f4:	87 df       	rcall	.-242    	; 0x304 <pinMode.part.1>
 3f6:	61 e0       	ldi	r22, 0x01	; 1
 3f8:	80 e2       	ldi	r24, 0x20	; 32
 3fa:	dc cf       	rjmp	.-72     	; 0x3b4 <SPIClass::begin() [clone .constprop.28]+0x54>

000003fc <micros>:
micros():
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\cores\coreX-corefiles/wiring.c:103
{
  uint32_t m;
  uint16_t t;

  /* Save current state and disable interrupts */
  uint8_t status = SREG;
 3fc:	8f b7       	in	r24, 0x3f	; 63
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\cores\coreX-corefiles/wiring.c:104
  cli();
 3fe:	f8 94       	cli
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\cores\coreX-corefiles/wiring.c:107

  /* Get current number of millis (i.e. overflows) and timer count */
  m = timer_millis;
 400:	20 91 10 3c 	lds	r18, 0x3C10	; 0x803c10 <timer_millis>
 404:	30 91 11 3c 	lds	r19, 0x3C11	; 0x803c11 <timer_millis+0x1>
 408:	40 91 12 3c 	lds	r20, 0x3C12	; 0x803c12 <timer_millis+0x2>
 40c:	50 91 13 3c 	lds	r21, 0x3C13	; 0x803c13 <timer_millis+0x3>
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\cores\coreX-corefiles/wiring.c:108
  t = _timer->CNT;
 410:	e0 91 aa 0a 	lds	r30, 0x0AAA	; 0x800aaa <MCP2515::TXB+0x7fbcfe>
 414:	f0 91 ab 0a 	lds	r31, 0x0AAB	; 0x800aab <MCP2515::TXB+0x7fbcff>
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\cores\coreX-corefiles/wiring.c:112

  /* If the timer overflow flag is raised, we just missed it,
  increment to account for it, & read new ticks */
  if (_timer->INTFLAGS & TCB_CAPT_bm)
 418:	90 91 a6 0a 	lds	r25, 0x0AA6	; 0x800aa6 <MCP2515::TXB+0x7fbcfa>
 41c:	90 ff       	sbrs	r25, 0
 41e:	08 c0       	rjmp	.+16     	; 0x430 <__DATA_REGION_LENGTH__+0x30>
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\cores\coreX-corefiles/wiring.c:114
  {
    m++;
 420:	2f 5f       	subi	r18, 0xFF	; 255
 422:	3f 4f       	sbci	r19, 0xFF	; 255
 424:	4f 4f       	sbci	r20, 0xFF	; 255
 426:	5f 4f       	sbci	r21, 0xFF	; 255
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\cores\coreX-corefiles/wiring.c:115
    t = _timer->CNT;
 428:	e0 91 aa 0a 	lds	r30, 0x0AAA	; 0x800aaa <MCP2515::TXB+0x7fbcfe>
 42c:	f0 91 ab 0a 	lds	r31, 0x0AAB	; 0x800aab <MCP2515::TXB+0x7fbcff>
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\cores\coreX-corefiles/wiring.c:119
  }

  // Restore SREG
  SREG = status;
 430:	8f bf       	out	0x3f, r24	; 63
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\cores\coreX-corefiles/wiring.c:130
  return m * 1000 + (t >> 4);
#elif (F_CPU == 10000000L)
  t = t >> 3;
  return m * 1000 + (t - (t >> 2) + (t >> 4) - (t >> 6));
#elif (F_CPU == 8000000L)
  return m * 1000 + (t >> 3);
 432:	a8 ee       	ldi	r26, 0xE8	; 232
 434:	b3 e0       	ldi	r27, 0x03	; 3
 436:	0f d4       	rcall	.+2078   	; 0xc56 <__muluhisi3>
 438:	23 e0       	ldi	r18, 0x03	; 3
 43a:	f6 95       	lsr	r31
 43c:	e7 95       	ror	r30
 43e:	2a 95       	dec	r18
 440:	e1 f7       	brne	.-8      	; 0x43a <__DATA_REGION_LENGTH__+0x3a>
 442:	6e 0f       	add	r22, r30
 444:	7f 1f       	adc	r23, r31
 446:	81 1d       	adc	r24, r1
 448:	91 1d       	adc	r25, r1
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\cores\coreX-corefiles/wiring.c:143
#elif (F_CPU == 1000000L)
  return m * 1000 + t;
#else
  return 0;
#endif
}
 44a:	08 95       	ret

0000044c <delay>:
delay():
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\cores\coreX-corefiles/wiring.c:146

void delay(unsigned long ms)
{
 44c:	8f 92       	push	r8
 44e:	9f 92       	push	r9
 450:	af 92       	push	r10
 452:	bf 92       	push	r11
 454:	cf 92       	push	r12
 456:	df 92       	push	r13
 458:	ef 92       	push	r14
 45a:	ff 92       	push	r15
 45c:	4b 01       	movw	r8, r22
 45e:	5c 01       	movw	r10, r24
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\cores\coreX-corefiles/wiring.c:147
  uint32_t start_time = micros(), delay_time = 1000 * ms;
 460:	cd df       	rcall	.-102    	; 0x3fc <micros>
 462:	6b 01       	movw	r12, r22
 464:	7c 01       	movw	r14, r24
 466:	a8 ee       	ldi	r26, 0xE8	; 232
 468:	b3 e0       	ldi	r27, 0x03	; 3
 46a:	a5 01       	movw	r20, r10
 46c:	94 01       	movw	r18, r8
 46e:	f3 d3       	rcall	.+2022   	; 0xc56 <__muluhisi3>
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\cores\coreX-corefiles/wiring.c:150

  /* Calculate future time to return */
  uint32_t return_time = start_time + delay_time;
 470:	c6 0e       	add	r12, r22
 472:	d7 1e       	adc	r13, r23
 474:	e8 1e       	adc	r14, r24
 476:	f9 1e       	adc	r15, r25
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\cores\coreX-corefiles/wiring.c:153

  /* If return time overflows */
  if (return_time < delay_time)
 478:	c6 16       	cp	r12, r22
 47a:	d7 06       	cpc	r13, r23
 47c:	e8 06       	cpc	r14, r24
 47e:	f9 06       	cpc	r15, r25
 480:	10 f4       	brcc	.+4      	; 0x486 <delay+0x3a>
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\cores\coreX-corefiles/wiring.c:156
  {
    /* Wait until micros overflows */
    while (micros() > return_time)
 482:	bc df       	rcall	.-136    	; 0x3fc <micros>
 484:	f9 cf       	rjmp	.-14     	; 0x478 <delay+0x2c>
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\cores\coreX-corefiles/wiring.c:161
      ;
  }

  /* Wait until return time */
  while (micros() < return_time)
 486:	ba df       	rcall	.-140    	; 0x3fc <micros>
 488:	6c 15       	cp	r22, r12
 48a:	7d 05       	cpc	r23, r13
 48c:	8e 05       	cpc	r24, r14
 48e:	9f 05       	cpc	r25, r15
 490:	d0 f3       	brcs	.-12     	; 0x486 <delay+0x3a>
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\cores\coreX-corefiles/wiring.c:163
    ;
}
 492:	ff 90       	pop	r15
 494:	ef 90       	pop	r14
 496:	df 90       	pop	r13
 498:	cf 90       	pop	r12
 49a:	bf 90       	pop	r11
 49c:	af 90       	pop	r10
 49e:	9f 90       	pop	r9
 4a0:	8f 90       	pop	r8
 4a2:	08 95       	ret

000004a4 <MCP2515::startSPI() [clone .constprop.20]>:
_ZN7MCP25158startSPIEv.constprop.20():
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:24
    SPICS = _CS;
    pinMode(SPICS, OUTPUT);
    endSPI();
}

void MCP2515::startSPI() {
 4a4:	8f 92       	push	r8
 4a6:	9f 92       	push	r9
 4a8:	af 92       	push	r10
 4aa:	bf 92       	push	r11
 4ac:	cf 92       	push	r12
 4ae:	df 92       	push	r13
 4b0:	ef 92       	push	r14
 4b2:	ff 92       	push	r15
 4b4:	0f 93       	push	r16
 4b6:	cf 93       	push	r28
 4b8:	df 93       	push	r29
beginTransaction():
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\libraries\SPI\src/SPI.cpp:249
  }
}

void SPIClass::beginTransaction(SPISettings settings)
{
  if (interruptMode != SPI_IMODE_NONE)
 4ba:	80 91 1c 3c 	lds	r24, 0x3C1C	; 0x803c1c <SPI+0x6>
 4be:	88 23       	and	r24, r24
 4c0:	19 f0       	breq	.+6      	; 0x4c8 <MCP2515::startSPI() [clone .constprop.20]+0x24>
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\libraries\SPI\src/SPI.cpp:251
  {
    if (interruptMode & SPI_IMODE_GLOBAL)
 4c2:	81 ff       	sbrs	r24, 1
 4c4:	19 c0       	rjmp	.+50     	; 0x4f8 <MCP2515::startSPI() [clone .constprop.20]+0x54>
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\libraries\SPI\src/SPI.cpp:253
    {
      noInterrupts();
 4c6:	f8 94       	cli
config():
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\libraries\SPI\src/SPI.cpp:142
  initialized = true;
}

void SPIClass::config(SPISettings settings)
{
  SPI0.CTRLA = settings.ctrla;
 4c8:	81 e3       	ldi	r24, 0x31	; 49
 4ca:	80 93 c0 08 	sts	0x08C0, r24	; 0x8008c0 <MCP2515::TXB+0x7fbb14>
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\libraries\SPI\src/SPI.cpp:143
  SPI0.CTRLB = settings.ctrlb;
 4ce:	84 e0       	ldi	r24, 0x04	; 4
 4d0:	80 93 c1 08 	sts	0x08C1, r24	; 0x8008c1 <MCP2515::TXB+0x7fbb15>
_ZN7MCP25158startSPIEv.constprop.20():
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:26
    SPI.beginTransaction(SPISettings(SPI_CLOCK, MSBFIRST, SPI_MODE0));
    digitalWrite(SPICS, LOW);
 4d4:	80 91 85 3c 	lds	r24, 0x3C85	; 0x803c85 <mcp2515>
digitalWrite():
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\cores\coreX-corefiles/wiring_digital.c:137
}

void digitalWrite(uint8_t pin, uint8_t val)
{
  /* Get bit mask for pin */
  uint8_t bit_mask = digitalPinToBitMask(pin);
 4d8:	89 32       	cpi	r24, 0x29	; 41
 4da:	08 f0       	brcs	.+2      	; 0x4de <MCP2515::startSPI() [clone .constprop.20]+0x3a>
 4dc:	98 c0       	rjmp	.+304    	; 0x60e <MCP2515::startSPI() [clone .constprop.20]+0x16a>
 4de:	60 e0       	ldi	r22, 0x00	; 0
_ZN7MCP25158startSPIEv.constprop.20():
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:27
}
 4e0:	df 91       	pop	r29
 4e2:	cf 91       	pop	r28
 4e4:	0f 91       	pop	r16
 4e6:	ff 90       	pop	r15
 4e8:	ef 90       	pop	r14
 4ea:	df 90       	pop	r13
 4ec:	cf 90       	pop	r12
 4ee:	bf 90       	pop	r11
 4f0:	af 90       	pop	r10
 4f2:	9f 90       	pop	r9
 4f4:	8f 90       	pop	r8
digitalWrite():
 4f6:	fa cd       	rjmp	.-1036   	; 0xec <digitalWrite.part.2>
beginTransaction():
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\libraries\SPI\src/SPI.cpp:255
  {
    if (interruptMode & SPI_IMODE_GLOBAL)
    {
      noInterrupts();
    }
    else if (interruptMode & SPI_IMODE_EXTINT)
 4f8:	80 ff       	sbrs	r24, 0
 4fa:	e6 cf       	rjmp	.-52     	; 0x4c8 <MCP2515::startSPI() [clone .constprop.20]+0x24>
detachMaskedInterrupts():
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\libraries\SPI\src/SPI.cpp:200
    #endif
  }
}

void SPIClass::detachMaskedInterrupts() {
  uint64_t temp = interruptMask_lo;
 4fc:	80 90 1e 3c 	lds	r8, 0x3C1E	; 0x803c1e <SPI+0x8>
 500:	90 90 1f 3c 	lds	r9, 0x3C1F	; 0x803c1f <SPI+0x9>
 504:	a0 90 20 3c 	lds	r10, 0x3C20	; 0x803c20 <SPI+0xa>
 508:	b0 90 21 3c 	lds	r11, 0x3C21	; 0x803c21 <SPI+0xb>
 50c:	c1 2c       	mov	r12, r1
 50e:	d1 2c       	mov	r13, r1
 510:	76 01       	movw	r14, r12
_ZN7MCP25158startSPIEv.constprop.20():
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\libraries\SPI\src/SPI.cpp:201
  uint8_t shift = 0;
 512:	e0 e0       	ldi	r30, 0x00	; 0
detachMaskedInterrupts():
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\libraries\SPI\src/SPI.cpp:202
  while (temp != 0) {
 514:	94 01       	movw	r18, r8
 516:	a5 01       	movw	r20, r10
 518:	b6 01       	movw	r22, r12
 51a:	c7 01       	movw	r24, r14
 51c:	a0 e0       	ldi	r26, 0x00	; 0
 51e:	c2 d3       	rcall	.+1924   	; 0xca4 <__cmpdi2_s8>
 520:	89 f1       	breq	.+98     	; 0x584 <MCP2515::startSPI() [clone .constprop.20]+0xe0>
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\libraries\SPI\src/SPI.cpp:203
    if (temp & 1) {
 522:	21 70       	andi	r18, 0x01	; 1
 524:	30 e0       	ldi	r19, 0x00	; 0
 526:	40 e0       	ldi	r20, 0x00	; 0
 528:	50 e0       	ldi	r21, 0x00	; 0
 52a:	60 e0       	ldi	r22, 0x00	; 0
 52c:	70 e0       	ldi	r23, 0x00	; 0
 52e:	80 e0       	ldi	r24, 0x00	; 0
 530:	90 e0       	ldi	r25, 0x00	; 0
 532:	b8 d3       	rcall	.+1904   	; 0xca4 <__cmpdi2_s8>
 534:	d9 f0       	breq	.+54     	; 0x56c <MCP2515::startSPI() [clone .constprop.20]+0xc8>
_ZN7MCP25158startSPIEv.constprop.20():
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\libraries\SPI\src/SPI.cpp:204
      volatile uint8_t* pin_ctrl_reg = getPINnCTRLregister(portToPortStruct(shift/8), shift%8);
 536:	b0 e0       	ldi	r27, 0x00	; 0
 538:	a0 e0       	ldi	r26, 0x00	; 0
detachMaskedInterrupts():
 53a:	e0 33       	cpi	r30, 0x30	; 48
 53c:	70 f4       	brcc	.+28     	; 0x55a <MCP2515::startSPI() [clone .constprop.20]+0xb6>
 53e:	ae 2f       	mov	r26, r30
 540:	a6 95       	lsr	r26
 542:	a6 95       	lsr	r26
 544:	a6 95       	lsr	r26
 546:	80 e2       	ldi	r24, 0x20	; 32
 548:	a8 9f       	mul	r26, r24
 54a:	d0 01       	movw	r26, r0
 54c:	11 24       	eor	r1, r1
 54e:	a0 5f       	subi	r26, 0xF0	; 240
 550:	bb 4f       	sbci	r27, 0xFB	; 251
 552:	8e 2f       	mov	r24, r30
 554:	87 70       	andi	r24, 0x07	; 7
 556:	a8 0f       	add	r26, r24
 558:	b1 1d       	adc	r27, r1
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\libraries\SPI\src/SPI.cpp:205
      irqMap[shift] = *pin_ctrl_reg;
 55a:	ce 2f       	mov	r28, r30
 55c:	d0 e0       	ldi	r29, 0x00	; 0
 55e:	8c 91       	ld	r24, X
 560:	ca 5e       	subi	r28, 0xEA	; 234
 562:	d3 4c       	sbci	r29, 0xC3	; 195
 564:	88 8b       	std	Y+16, r24	; 0x10
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\libraries\SPI\src/SPI.cpp:206
      *pin_ctrl_reg &= ~(PORT_ISC_gm);
 566:	8c 91       	ld	r24, X
 568:	88 7f       	andi	r24, 0xF8	; 248
 56a:	8c 93       	st	X, r24
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\libraries\SPI\src/SPI.cpp:208
    }
    temp = temp >> 1;
 56c:	94 01       	movw	r18, r8
 56e:	a5 01       	movw	r20, r10
 570:	b6 01       	movw	r22, r12
 572:	c7 01       	movw	r24, r14
 574:	01 e0       	ldi	r16, 0x01	; 1
 576:	7b d3       	rcall	.+1782   	; 0xc6e <__lshrdi3>
 578:	49 01       	movw	r8, r18
 57a:	5a 01       	movw	r10, r20
 57c:	6b 01       	movw	r12, r22
 57e:	7c 01       	movw	r14, r24
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\libraries\SPI\src/SPI.cpp:209
    shift++;
 580:	ef 5f       	subi	r30, 0xFF	; 255
 582:	c8 cf       	rjmp	.-112    	; 0x514 <MCP2515::startSPI() [clone .constprop.20]+0x70>
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\libraries\SPI\src/SPI.cpp:211
  }
  temp = interruptMask_hi;
 584:	80 90 22 3c 	lds	r8, 0x3C22	; 0x803c22 <SPI+0xc>
 588:	90 90 23 3c 	lds	r9, 0x3C23	; 0x803c23 <SPI+0xd>
 58c:	a0 90 24 3c 	lds	r10, 0x3C24	; 0x803c24 <SPI+0xe>
 590:	b0 90 25 3c 	lds	r11, 0x3C25	; 0x803c25 <SPI+0xf>
 594:	c1 2c       	mov	r12, r1
 596:	d1 2c       	mov	r13, r1
 598:	76 01       	movw	r14, r12
_ZN7MCP25158startSPIEv.constprop.20():
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\libraries\SPI\src/SPI.cpp:212
  shift = 32;
 59a:	e0 e2       	ldi	r30, 0x20	; 32
detachMaskedInterrupts():
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\libraries\SPI\src/SPI.cpp:213
  while (temp != 0) {
 59c:	94 01       	movw	r18, r8
 59e:	a5 01       	movw	r20, r10
 5a0:	b6 01       	movw	r22, r12
 5a2:	c7 01       	movw	r24, r14
 5a4:	a0 e0       	ldi	r26, 0x00	; 0
 5a6:	7e d3       	rcall	.+1788   	; 0xca4 <__cmpdi2_s8>
 5a8:	09 f4       	brne	.+2      	; 0x5ac <MCP2515::startSPI() [clone .constprop.20]+0x108>
 5aa:	8e cf       	rjmp	.-228    	; 0x4c8 <MCP2515::startSPI() [clone .constprop.20]+0x24>
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\libraries\SPI\src/SPI.cpp:214
    if (temp & 1) {
 5ac:	21 70       	andi	r18, 0x01	; 1
 5ae:	30 e0       	ldi	r19, 0x00	; 0
 5b0:	40 e0       	ldi	r20, 0x00	; 0
 5b2:	50 e0       	ldi	r21, 0x00	; 0
 5b4:	60 e0       	ldi	r22, 0x00	; 0
 5b6:	70 e0       	ldi	r23, 0x00	; 0
 5b8:	80 e0       	ldi	r24, 0x00	; 0
 5ba:	90 e0       	ldi	r25, 0x00	; 0
 5bc:	73 d3       	rcall	.+1766   	; 0xca4 <__cmpdi2_s8>
 5be:	d9 f0       	breq	.+54     	; 0x5f6 <MCP2515::startSPI() [clone .constprop.20]+0x152>
_ZN7MCP25158startSPIEv.constprop.20():
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\libraries\SPI\src/SPI.cpp:215
      volatile uint8_t* pin_ctrl_reg = getPINnCTRLregister(portToPortStruct(shift/8), shift%8);
 5c0:	b0 e0       	ldi	r27, 0x00	; 0
 5c2:	a0 e0       	ldi	r26, 0x00	; 0
detachMaskedInterrupts():
 5c4:	e0 33       	cpi	r30, 0x30	; 48
 5c6:	70 f4       	brcc	.+28     	; 0x5e4 <MCP2515::startSPI() [clone .constprop.20]+0x140>
 5c8:	ae 2f       	mov	r26, r30
 5ca:	a6 95       	lsr	r26
 5cc:	a6 95       	lsr	r26
 5ce:	a6 95       	lsr	r26
 5d0:	80 e2       	ldi	r24, 0x20	; 32
 5d2:	a8 9f       	mul	r26, r24
 5d4:	d0 01       	movw	r26, r0
 5d6:	11 24       	eor	r1, r1
 5d8:	a0 5f       	subi	r26, 0xF0	; 240
 5da:	bb 4f       	sbci	r27, 0xFB	; 251
 5dc:	8e 2f       	mov	r24, r30
 5de:	87 70       	andi	r24, 0x07	; 7
 5e0:	a8 0f       	add	r26, r24
 5e2:	b1 1d       	adc	r27, r1
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\libraries\SPI\src/SPI.cpp:216
      irqMap[shift] = *pin_ctrl_reg;
 5e4:	ce 2f       	mov	r28, r30
 5e6:	d0 e0       	ldi	r29, 0x00	; 0
 5e8:	8c 91       	ld	r24, X
 5ea:	ca 5e       	subi	r28, 0xEA	; 234
 5ec:	d3 4c       	sbci	r29, 0xC3	; 195
 5ee:	88 8b       	std	Y+16, r24	; 0x10
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\libraries\SPI\src/SPI.cpp:217
      *pin_ctrl_reg &= ~(PORT_ISC_gm);
 5f0:	8c 91       	ld	r24, X
 5f2:	88 7f       	andi	r24, 0xF8	; 248
 5f4:	8c 93       	st	X, r24
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\libraries\SPI\src/SPI.cpp:219
    }
    temp = temp >> 1;
 5f6:	94 01       	movw	r18, r8
 5f8:	a5 01       	movw	r20, r10
 5fa:	b6 01       	movw	r22, r12
 5fc:	c7 01       	movw	r24, r14
 5fe:	01 e0       	ldi	r16, 0x01	; 1
 600:	36 d3       	rcall	.+1644   	; 0xc6e <__lshrdi3>
 602:	49 01       	movw	r8, r18
 604:	5a 01       	movw	r10, r20
 606:	6b 01       	movw	r12, r22
 608:	7c 01       	movw	r14, r24
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\libraries\SPI\src/SPI.cpp:220
    shift++;
 60a:	ef 5f       	subi	r30, 0xFF	; 255
 60c:	c7 cf       	rjmp	.-114    	; 0x59c <MCP2515::startSPI() [clone .constprop.20]+0xf8>
_ZN7MCP25158startSPIEv.constprop.20():
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:27
 60e:	df 91       	pop	r29
 610:	cf 91       	pop	r28
 612:	0f 91       	pop	r16
 614:	ff 90       	pop	r15
 616:	ef 90       	pop	r14
 618:	df 90       	pop	r13
 61a:	cf 90       	pop	r12
 61c:	bf 90       	pop	r11
 61e:	af 90       	pop	r10
 620:	9f 90       	pop	r9
 622:	8f 90       	pop	r8
 624:	08 95       	ret

00000626 <MCP2515::readRegister(MCP2515::REGISTER) [clone .constprop.19]>:
_ZN7MCP251512readRegisterENS_8REGISTERE.constprop.19():
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:85
    }

    return ERROR_OK;
}

uint8_t MCP2515::readRegister(const REGISTER reg)
 626:	cf 93       	push	r28
 628:	c8 2f       	mov	r28, r24
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:87
{
    startSPI();
 62a:	3c df       	rcall	.-392    	; 0x4a4 <MCP2515::startSPI() [clone .constprop.20]>
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:88
    SPI.transfer(INSTRUCTION_READ);
 62c:	83 e0       	ldi	r24, 0x03	; 3
 62e:	54 dd       	rcall	.-1368   	; 0xd8 <SPIClass::transfer(unsigned char) [clone .constprop.25]>
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:89
    SPI.transfer(reg);
 630:	8c 2f       	mov	r24, r28
 632:	52 dd       	rcall	.-1372   	; 0xd8 <SPIClass::transfer(unsigned char) [clone .constprop.25]>
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:90
    uint8_t ret = SPI.transfer(0x00);
 634:	80 e0       	ldi	r24, 0x00	; 0
 636:	50 dd       	rcall	.-1376   	; 0xd8 <SPIClass::transfer(unsigned char) [clone .constprop.25]>
 638:	c8 2f       	mov	r28, r24
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:91
    endSPI();
 63a:	b7 dd       	rcall	.-1170   	; 0x1aa <MCP2515::endSPI() [clone .constprop.31]>
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:94

    return ret;
}
 63c:	8c 2f       	mov	r24, r28
 63e:	cf 91       	pop	r28
 640:	08 95       	ret

00000642 <MCP2515::setRegisters(MCP2515::REGISTER, unsigned char const*, unsigned char) [clone .constprop.17]>:
_ZN7MCP251512setRegistersENS_8REGISTEREPKhh.constprop.17():
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:117
    SPI.transfer(reg);
    SPI.transfer(value);
    endSPI();
}

void MCP2515::setRegisters(const REGISTER reg, const uint8_t values[], const uint8_t n)
 642:	ff 92       	push	r15
 644:	0f 93       	push	r16
 646:	1f 93       	push	r17
 648:	cf 93       	push	r28
 64a:	df 93       	push	r29
 64c:	c8 2f       	mov	r28, r24
 64e:	f6 2e       	mov	r15, r22
 650:	17 2f       	mov	r17, r23
 652:	04 2f       	mov	r16, r20
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:119
{
    startSPI();
 654:	27 df       	rcall	.-434    	; 0x4a4 <MCP2515::startSPI() [clone .constprop.20]>
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:120
    SPI.transfer(INSTRUCTION_WRITE);
 656:	82 e0       	ldi	r24, 0x02	; 2
 658:	3f dd       	rcall	.-1410   	; 0xd8 <SPIClass::transfer(unsigned char) [clone .constprop.25]>
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:121
    SPI.transfer(reg);
 65a:	8c 2f       	mov	r24, r28
 65c:	3d dd       	rcall	.-1414   	; 0xd8 <SPIClass::transfer(unsigned char) [clone .constprop.25]>
 65e:	cf 2d       	mov	r28, r15
 660:	d1 2f       	mov	r29, r17
 662:	0c 0f       	add	r16, r28
 664:	1d 2f       	mov	r17, r29
 666:	11 1d       	adc	r17, r1
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:122
    for (uint8_t i=0; i<n; i++) {
 668:	c0 17       	cp	r28, r16
 66a:	d1 07       	cpc	r29, r17
 66c:	19 f0       	breq	.+6      	; 0x674 <MCP2515::setRegisters(MCP2515::REGISTER, unsigned char const*, unsigned char) [clone .constprop.17]+0x32>
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:123
        SPI.transfer(values[i]);
 66e:	89 91       	ld	r24, Y+
 670:	33 dd       	rcall	.-1434   	; 0xd8 <SPIClass::transfer(unsigned char) [clone .constprop.25]>
 672:	fa cf       	rjmp	.-12     	; 0x668 <MCP2515::setRegisters(MCP2515::REGISTER, unsigned char const*, unsigned char) [clone .constprop.17]+0x26>
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:126
    }
    endSPI();
}
 674:	df 91       	pop	r29
 676:	cf 91       	pop	r28
 678:	1f 91       	pop	r17
 67a:	0f 91       	pop	r16
 67c:	ff 90       	pop	r15
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:125
    SPI.transfer(INSTRUCTION_WRITE);
    SPI.transfer(reg);
    for (uint8_t i=0; i<n; i++) {
        SPI.transfer(values[i]);
    }
    endSPI();
 67e:	95 cd       	rjmp	.-1238   	; 0x1aa <MCP2515::endSPI() [clone .constprop.31]>

00000680 <MCP2515::modifyRegister(MCP2515::REGISTER, unsigned char, unsigned char) [clone .constprop.16]>:
_ZN7MCP251514modifyRegisterENS_8REGISTEREhh.constprop.16():
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:128
}

void MCP2515::modifyRegister(const REGISTER reg, const uint8_t mask, const uint8_t data)
 680:	1f 93       	push	r17
 682:	cf 93       	push	r28
 684:	df 93       	push	r29
 686:	18 2f       	mov	r17, r24
 688:	d6 2f       	mov	r29, r22
 68a:	c4 2f       	mov	r28, r20
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:130
{
    startSPI();
 68c:	0b df       	rcall	.-490    	; 0x4a4 <MCP2515::startSPI() [clone .constprop.20]>
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:131
    SPI.transfer(INSTRUCTION_BITMOD);
 68e:	85 e0       	ldi	r24, 0x05	; 5
 690:	23 dd       	rcall	.-1466   	; 0xd8 <SPIClass::transfer(unsigned char) [clone .constprop.25]>
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:132
    SPI.transfer(reg);
 692:	81 2f       	mov	r24, r17
 694:	21 dd       	rcall	.-1470   	; 0xd8 <SPIClass::transfer(unsigned char) [clone .constprop.25]>
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:133
    SPI.transfer(mask);
 696:	8d 2f       	mov	r24, r29
 698:	1f dd       	rcall	.-1474   	; 0xd8 <SPIClass::transfer(unsigned char) [clone .constprop.25]>
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:134
    SPI.transfer(data);
 69a:	8c 2f       	mov	r24, r28
 69c:	1d dd       	rcall	.-1478   	; 0xd8 <SPIClass::transfer(unsigned char) [clone .constprop.25]>
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:136
    endSPI();
}
 69e:	df 91       	pop	r29
 6a0:	cf 91       	pop	r28
 6a2:	1f 91       	pop	r17
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:135
    startSPI();
    SPI.transfer(INSTRUCTION_BITMOD);
    SPI.transfer(reg);
    SPI.transfer(mask);
    SPI.transfer(data);
    endSPI();
 6a4:	82 cd       	rjmp	.-1276   	; 0x1aa <MCP2515::endSPI() [clone .constprop.31]>

000006a6 <MCP2515::setMode(MCP2515::CANCTRL_REQOP_MODE) [clone .constprop.11]>:
_ZN7MCP25157setModeENS_18CANCTRL_REQOP_MODEE.constprop.11():
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:173
MCP2515::ERROR MCP2515::setNormalMode()
{
    return setMode(CANCTRL_REQOP_NORMAL);
}

MCP2515::ERROR MCP2515::setMode(const CANCTRL_REQOP_MODE mode)
 6a6:	cf 92       	push	r12
 6a8:	df 92       	push	r13
 6aa:	ef 92       	push	r14
 6ac:	ff 92       	push	r15
 6ae:	cf 93       	push	r28
 6b0:	c8 2f       	mov	r28, r24
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:175
{
    modifyRegister(MCP_CANCTRL, CANCTRL_REQOP, mode);
 6b2:	48 2f       	mov	r20, r24
 6b4:	60 ee       	ldi	r22, 0xE0	; 224
 6b6:	8f e0       	ldi	r24, 0x0F	; 15
 6b8:	e3 df       	rcall	.-58     	; 0x680 <MCP2515::modifyRegister(MCP2515::REGISTER, unsigned char, unsigned char) [clone .constprop.16]>
millis():
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\cores\coreX-corefiles/wiring.c:87
{
  unsigned long m;

  // disable interrupts while we read timer0_millis or we might get an
  // inconsistent value (e.g. in the middle of a write to timer_millis)
  uint8_t status = SREG;
 6ba:	8f b7       	in	r24, 0x3f	; 63
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\cores\coreX-corefiles/wiring.c:88
  cli();
 6bc:	f8 94       	cli
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\cores\coreX-corefiles/wiring.c:90

  m = timer_millis;
 6be:	c0 90 10 3c 	lds	r12, 0x3C10	; 0x803c10 <timer_millis>
 6c2:	d0 90 11 3c 	lds	r13, 0x3C11	; 0x803c11 <timer_millis+0x1>
 6c6:	e0 90 12 3c 	lds	r14, 0x3C12	; 0x803c12 <timer_millis+0x2>
 6ca:	f0 90 13 3c 	lds	r15, 0x3C13	; 0x803c13 <timer_millis+0x3>
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\cores\coreX-corefiles/wiring.c:92

  SREG = status;
 6ce:	8f bf       	out	0x3f, r24	; 63
_ZN7MCP25157setModeENS_18CANCTRL_REQOP_MODEE.constprop.11():
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:177

    unsigned long endTime = millis() + 10;
 6d0:	8a e0       	ldi	r24, 0x0A	; 10
 6d2:	c8 0e       	add	r12, r24
 6d4:	d1 1c       	adc	r13, r1
 6d6:	e1 1c       	adc	r14, r1
 6d8:	f1 1c       	adc	r15, r1
millis():
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\cores\coreX-corefiles/wiring.c:87
{
  unsigned long m;

  // disable interrupts while we read timer0_millis or we might get an
  // inconsistent value (e.g. in the middle of a write to timer_millis)
  uint8_t status = SREG;
 6da:	2f b7       	in	r18, 0x3f	; 63
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\cores\coreX-corefiles/wiring.c:88
  cli();
 6dc:	f8 94       	cli
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\cores\coreX-corefiles/wiring.c:90

  m = timer_millis;
 6de:	80 91 10 3c 	lds	r24, 0x3C10	; 0x803c10 <timer_millis>
 6e2:	90 91 11 3c 	lds	r25, 0x3C11	; 0x803c11 <timer_millis+0x1>
 6e6:	a0 91 12 3c 	lds	r26, 0x3C12	; 0x803c12 <timer_millis+0x2>
 6ea:	b0 91 13 3c 	lds	r27, 0x3C13	; 0x803c13 <timer_millis+0x3>
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\cores\coreX-corefiles/wiring.c:92

  SREG = status;
 6ee:	2f bf       	out	0x3f, r18	; 63
_ZN7MCP25157setModeENS_18CANCTRL_REQOP_MODEE.constprop.11():
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:179
    bool modeMatch = false;
    while (millis() < endTime) {
 6f0:	8c 15       	cp	r24, r12
 6f2:	9d 05       	cpc	r25, r13
 6f4:	ae 05       	cpc	r26, r14
 6f6:	bf 05       	cpc	r27, r15
 6f8:	78 f4       	brcc	.+30     	; 0x718 <MCP2515::setMode(MCP2515::CANCTRL_REQOP_MODE) [clone .constprop.11]+0x72>
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:180
        uint8_t newmode = readRegister(MCP_CANSTAT);
 6fa:	8e e0       	ldi	r24, 0x0E	; 14
 6fc:	94 df       	rcall	.-216    	; 0x626 <MCP2515::readRegister(MCP2515::REGISTER) [clone .constprop.19]>
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:181
        newmode &= CANSTAT_OPMOD;
 6fe:	80 7e       	andi	r24, 0xE0	; 224
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:185

        modeMatch = newmode == mode;

        if (modeMatch) {
 700:	c8 13       	cpse	r28, r24
 702:	eb cf       	rjmp	.-42     	; 0x6da <MCP2515::setMode(MCP2515::CANCTRL_REQOP_MODE) [clone .constprop.11]+0x34>
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:183
    bool modeMatch = false;
    while (millis() < endTime) {
        uint8_t newmode = readRegister(MCP_CANSTAT);
        newmode &= CANSTAT_OPMOD;

        modeMatch = newmode == mode;
 704:	81 e0       	ldi	r24, 0x01	; 1
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:190
        if (modeMatch) {
            break;
        }
    }

    return modeMatch ? ERROR_OK : ERROR_FAIL;
 706:	91 e0       	ldi	r25, 0x01	; 1
 708:	89 27       	eor	r24, r25
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:192

}
 70a:	90 e0       	ldi	r25, 0x00	; 0
 70c:	cf 91       	pop	r28
 70e:	ff 90       	pop	r15
 710:	ef 90       	pop	r14
 712:	df 90       	pop	r13
 714:	cf 90       	pop	r12
 716:	08 95       	ret
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:179
{
    modifyRegister(MCP_CANCTRL, CANCTRL_REQOP, mode);

    unsigned long endTime = millis() + 10;
    bool modeMatch = false;
    while (millis() < endTime) {
 718:	80 e0       	ldi	r24, 0x00	; 0
 71a:	f5 cf       	rjmp	.-22     	; 0x706 <MCP2515::setMode(MCP2515::CANCTRL_REQOP_MODE) [clone .constprop.11]+0x60>

0000071c <MCP2515::setRegister(MCP2515::REGISTER, unsigned char) [clone .constprop.9]>:
_ZN7MCP251511setRegisterENS_8REGISTEREh.constprop.9():
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:108
        values[i] = SPI.transfer(0x00);
    }
    endSPI();
}

void MCP2515::setRegister(const REGISTER reg, const uint8_t value)
 71c:	cf 93       	push	r28
 71e:	df 93       	push	r29
 720:	d8 2f       	mov	r29, r24
 722:	c6 2f       	mov	r28, r22
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:110
{
    startSPI();
 724:	bf de       	rcall	.-642    	; 0x4a4 <MCP2515::startSPI() [clone .constprop.20]>
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:111
    SPI.transfer(INSTRUCTION_WRITE);
 726:	82 e0       	ldi	r24, 0x02	; 2
 728:	d7 dc       	rcall	.-1618   	; 0xd8 <SPIClass::transfer(unsigned char) [clone .constprop.25]>
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:112
    SPI.transfer(reg);
 72a:	8d 2f       	mov	r24, r29
 72c:	d5 dc       	rcall	.-1622   	; 0xd8 <SPIClass::transfer(unsigned char) [clone .constprop.25]>
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:113
    SPI.transfer(value);
 72e:	8c 2f       	mov	r24, r28
 730:	d3 dc       	rcall	.-1626   	; 0xd8 <SPIClass::transfer(unsigned char) [clone .constprop.25]>
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:115
    endSPI();
}
 732:	df 91       	pop	r29
 734:	cf 91       	pop	r28
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:114
{
    startSPI();
    SPI.transfer(INSTRUCTION_WRITE);
    SPI.transfer(reg);
    SPI.transfer(value);
    endSPI();
 736:	39 cd       	rjmp	.-1422   	; 0x1aa <MCP2515::endSPI() [clone .constprop.31]>

00000738 <__vector_25>:
__vector_25():
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\cores\coreX-corefiles/wiring.c:74
#elif defined(MILLIS_USE_TIMERB2)
ISR(TCB2_INT_vect)
#else // fallback or defined(MILLIS_USE_TIMERB3)
ISR(TCB3_INT_vect)
#endif
{
 738:	1f 92       	push	r1
 73a:	0f 92       	push	r0
 73c:	0f b6       	in	r0, 0x3f	; 63
 73e:	0f 92       	push	r0
 740:	11 24       	eor	r1, r1
 742:	8f 93       	push	r24
 744:	9f 93       	push	r25
 746:	af 93       	push	r26
 748:	bf 93       	push	r27
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\cores\coreX-corefiles/wiring.c:75
  timer_millis++;
 74a:	80 91 10 3c 	lds	r24, 0x3C10	; 0x803c10 <timer_millis>
 74e:	90 91 11 3c 	lds	r25, 0x3C11	; 0x803c11 <timer_millis+0x1>
 752:	a0 91 12 3c 	lds	r26, 0x3C12	; 0x803c12 <timer_millis+0x2>
 756:	b0 91 13 3c 	lds	r27, 0x3C13	; 0x803c13 <timer_millis+0x3>
 75a:	01 96       	adiw	r24, 0x01	; 1
 75c:	a1 1d       	adc	r26, r1
 75e:	b1 1d       	adc	r27, r1
 760:	80 93 10 3c 	sts	0x3C10, r24	; 0x803c10 <timer_millis>
 764:	90 93 11 3c 	sts	0x3C11, r25	; 0x803c11 <timer_millis+0x1>
 768:	a0 93 12 3c 	sts	0x3C12, r26	; 0x803c12 <timer_millis+0x2>
 76c:	b0 93 13 3c 	sts	0x3C13, r27	; 0x803c13 <timer_millis+0x3>
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\cores\coreX-corefiles/wiring.c:78

  /* Clear flag */
  _timer->INTFLAGS = TCB_CAPT_bm;
 770:	81 e0       	ldi	r24, 0x01	; 1
 772:	80 93 a6 0a 	sts	0x0AA6, r24	; 0x800aa6 <MCP2515::TXB+0x7fbcfa>
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\cores\coreX-corefiles/wiring.c:79
}
 776:	bf 91       	pop	r27
 778:	af 91       	pop	r26
 77a:	9f 91       	pop	r25
 77c:	8f 91       	pop	r24
 77e:	0f 90       	pop	r0
 780:	0f be       	out	0x3f, r0	; 63
 782:	0f 90       	pop	r0
 784:	1f 90       	pop	r1
 786:	18 95       	reti

00000788 <global constructors keyed to 65535_0_sketch_jun30b.ino.cpp.o.2661>:
_GLOBAL__I_65535_0_sketch_jun30b.ino.cpp.o.2661():
 788:	cf 93       	push	r28
 78a:	df 93       	push	r29
 78c:	e4 e1       	ldi	r30, 0x14	; 20
 78e:	fc e3       	ldi	r31, 0x3C	; 60
 790:	c4 e0       	ldi	r28, 0x04	; 4
 792:	c1 83       	std	Z+1, r28	; 0x01
 794:	81 e3       	ldi	r24, 0x31	; 49
 796:	80 83       	st	Z, r24
 798:	e6 e1       	ldi	r30, 0x16	; 22
 79a:	fc e3       	ldi	r31, 0x3C	; 60
 79c:	15 82       	std	Z+5, r1	; 0x05
 79e:	14 82       	std	Z+4, r1	; 0x04
 7a0:	df dd       	rcall	.-1090   	; 0x360 <SPIClass::begin() [clone .constprop.28]>
 7a2:	d3 e0       	ldi	r29, 0x03	; 3
 7a4:	d0 93 85 3c 	sts	0x3C85, r29	; 0x803c85 <mcp2515>
 7a8:	61 e0       	ldi	r22, 0x01	; 1
 7aa:	83 e0       	ldi	r24, 0x03	; 3
 7ac:	ab dd       	rcall	.-1194   	; 0x304 <pinMode.part.1>
 7ae:	fd dc       	rcall	.-1542   	; 0x1aa <MCP2515::endSPI() [clone .constprop.31]>
 7b0:	e5 e5       	ldi	r30, 0x55	; 85
 7b2:	fc e3       	ldi	r31, 0x3C	; 60
 7b4:	85 e1       	ldi	r24, 0x15	; 21
 7b6:	90 e0       	ldi	r25, 0x00	; 0
 7b8:	80 83       	st	Z, r24
 7ba:	91 83       	std	Z+1, r25	; 0x01
 7bc:	12 82       	std	Z+2, r1	; 0x02
 7be:	13 82       	std	Z+3, r1	; 0x03
 7c0:	81 e0       	ldi	r24, 0x01	; 1
 7c2:	84 83       	std	Z+4, r24	; 0x04
 7c4:	85 83       	std	Z+5, r24	; 0x05
 7c6:	26 e1       	ldi	r18, 0x16	; 22
 7c8:	30 e0       	ldi	r19, 0x00	; 0
 7ca:	26 83       	std	Z+6, r18	; 0x06
 7cc:	37 83       	std	Z+7, r19	; 0x07
 7ce:	10 86       	std	Z+8, r1	; 0x08
 7d0:	11 86       	std	Z+9, r1	; 0x09
 7d2:	82 87       	std	Z+10, r24	; 0x0a
 7d4:	92 e0       	ldi	r25, 0x02	; 2
 7d6:	93 87       	std	Z+11, r25	; 0x0b
 7d8:	27 e1       	ldi	r18, 0x17	; 23
 7da:	30 e0       	ldi	r19, 0x00	; 0
 7dc:	24 87       	std	Z+12, r18	; 0x0c
 7de:	35 87       	std	Z+13, r19	; 0x0d
 7e0:	16 86       	std	Z+14, r1	; 0x0e
 7e2:	17 86       	std	Z+15, r1	; 0x0f
 7e4:	80 8b       	std	Z+16, r24	; 0x10
 7e6:	d1 8b       	std	Z+17, r29	; 0x11
 7e8:	28 e1       	ldi	r18, 0x18	; 24
 7ea:	30 e0       	ldi	r19, 0x00	; 0
 7ec:	22 8b       	std	Z+18, r18	; 0x12
 7ee:	33 8b       	std	Z+19, r19	; 0x13
 7f0:	14 8a       	std	Z+20, r1	; 0x14
 7f2:	15 8a       	std	Z+21, r1	; 0x15
 7f4:	86 8b       	std	Z+22, r24	; 0x16
 7f6:	c7 8b       	std	Z+23, r28	; 0x17
 7f8:	2c e1       	ldi	r18, 0x1C	; 28
 7fa:	30 e0       	ldi	r19, 0x00	; 0
 7fc:	20 8f       	std	Z+24, r18	; 0x18
 7fe:	31 8f       	std	Z+25, r19	; 0x19
 800:	12 8e       	std	Z+26, r1	; 0x1a
 802:	13 8e       	std	Z+27, r1	; 0x1b
 804:	84 8f       	std	Z+28, r24	; 0x1c
 806:	95 e0       	ldi	r25, 0x05	; 5
 808:	95 8f       	std	Z+29, r25	; 0x1d
 80a:	2b e1       	ldi	r18, 0x1B	; 27
 80c:	30 e0       	ldi	r19, 0x00	; 0
 80e:	26 8f       	std	Z+30, r18	; 0x1e
 810:	37 8f       	std	Z+31, r19	; 0x1f
 812:	10 a2       	std	Z+32, r1	; 0x20
 814:	11 a2       	std	Z+33, r1	; 0x21
 816:	82 a3       	std	Z+34, r24	; 0x22
 818:	96 e0       	ldi	r25, 0x06	; 6
 81a:	93 a3       	std	Z+35, r25	; 0x23
 81c:	2a e1       	ldi	r18, 0x1A	; 26
 81e:	30 e0       	ldi	r19, 0x00	; 0
 820:	24 a3       	std	Z+36, r18	; 0x24
 822:	35 a3       	std	Z+37, r19	; 0x25
 824:	16 a2       	std	Z+38, r1	; 0x26
 826:	17 a2       	std	Z+39, r1	; 0x27
 828:	80 a7       	std	Z+40, r24	; 0x28
 82a:	97 e0       	ldi	r25, 0x07	; 7
 82c:	91 a7       	std	Z+41, r25	; 0x29
 82e:	29 e1       	ldi	r18, 0x19	; 25
 830:	30 e0       	ldi	r19, 0x00	; 0
 832:	22 a7       	std	Z+42, r18	; 0x2a
 834:	33 a7       	std	Z+43, r19	; 0x2b
 836:	14 a6       	std	Z+44, r1	; 0x2c
 838:	15 a6       	std	Z+45, r1	; 0x2d
 83a:	86 a7       	std	Z+46, r24	; 0x2e
 83c:	88 e0       	ldi	r24, 0x08	; 8
 83e:	87 a7       	std	Z+47, r24	; 0x2f
 840:	df 91       	pop	r29
 842:	cf 91       	pop	r28
 844:	08 95       	ret

00000846 <main>:
main():
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\cores\coreX-corefiles/main.cpp:29

void setupUSB() __attribute__((weak));
void setupUSB() {}

int main(void)
{
 846:	cf 93       	push	r28
 848:	df 93       	push	r29
 84a:	cd b7       	in	r28, 0x3d	; 61
 84c:	de b7       	in	r29, 0x3e	; 62
 84e:	a9 97       	sbiw	r28, 0x29	; 41
 850:	cd bf       	out	0x3d, r28	; 61
 852:	de bf       	out	0x3e, r29	; 62
init():
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\cores\coreX-corefiles/wiring.c:361
#elif (F_CPU == 10000000L)
  /* Clock DIV2 */
  _PROTECTED_WRITE(CLKCTRL_MCLKCTRLB, (CLKCTRL_PEN_bm | CLKCTRL_PDIV_2X_gc));
#elif (F_CPU == 8000000L)
  /* Clock DIV2 */
  _PROTECTED_WRITE(CLKCTRL_MCLKCTRLB, (CLKCTRL_PEN_bm | CLKCTRL_PDIV_2X_gc));
 854:	91 e0       	ldi	r25, 0x01	; 1
 856:	88 ed       	ldi	r24, 0xD8	; 216
 858:	84 bf       	out	0x34, r24	; 52
 85a:	90 93 61 00 	sts	0x0061, r25	; 0x800061 <MCP2515::TXB+0x7fb2b5>
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\cores\coreX-corefiles/wiring.c:390
#if (F_CPU >= 20000000L) // 20 MHz / 128 = 156.250 kHz
  ADC0.CTRLC |= ADC_PRESC_DIV128_gc;
#elif (F_CPU >= 16000000L) // 16 MHz / 128 = 125 kHz
  ADC0.CTRLC |= ADC_PRESC_DIV128_gc;
#elif (F_CPU >= 8000000L)  // 8 MHz / 64 = 125 kHz
  ADC0.CTRLC |= ADC_PRESC_DIV64_gc;
 85e:	80 91 02 06 	lds	r24, 0x0602	; 0x800602 <MCP2515::TXB+0x7fb856>
 862:	85 60       	ori	r24, 0x05	; 5
 864:	80 93 02 06 	sts	0x0602, r24	; 0x800602 <MCP2515::TXB+0x7fb856>
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\cores\coreX-corefiles/wiring.c:402
#else                      // 128 kHz / 2 = 64 kHz -> This is the closest you can get, the prescaler is 2
  ADC0.CTRLC |= ADC_PRESC_DIV2_gc;
#endif

  /* Enable ADC */
  ADC0.CTRLA |= ADC_ENABLE_bm;
 868:	80 91 00 06 	lds	r24, 0x0600	; 0x800600 <MCP2515::TXB+0x7fb854>
 86c:	81 60       	ori	r24, 0x01	; 1
 86e:	80 93 00 06 	sts	0x0600, r24	; 0x800600 <MCP2515::TXB+0x7fb854>
analogReference():
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\cores\coreX-corefiles/wiring_analog.c:35
{
  switch (mode)
  {
    case EXTERNAL:
    case VDD:
      ADC0.CTRLC = (ADC0.CTRLC & ~(ADC_REFSEL_gm)) | mode | ADC_SAMPCAP_bm; // Per datasheet, recommended SAMPCAP=1 at ref > 1v - we don't *KNOW* the external reference will be >1v, but it's probably more likely...
 872:	80 91 02 06 	lds	r24, 0x0602	; 0x800602 <MCP2515::TXB+0x7fb856>
 876:	8f 7c       	andi	r24, 0xCF	; 207
 878:	80 65       	ori	r24, 0x50	; 80
 87a:	80 93 02 06 	sts	0x0602, r24	; 0x800602 <MCP2515::TXB+0x7fb856>
init():
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\cores\coreX-corefiles/wiring.c:407
  analogReference(VDD);

#endif

  PORTMUX.USARTROUTEA = 0;
 87e:	10 92 e2 05 	sts	0x05E2, r1	; 0x8005e2 <MCP2515::TXB+0x7fb836>
setup_timers():
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\cores\coreX-corefiles/wiring.c:446
void setup_timers()
{
  //  TYPE A TIMER

  // PORTMUX setting for TCA (defined in pins_arduino.h)
  PORTMUX.TCAROUTEA = TCA0_PINS;
 882:	82 e0       	ldi	r24, 0x02	; 2
 884:	80 93 e4 05 	sts	0x05E4, r24	; 0x8005e4 <MCP2515::TXB+0x7fb838>
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\cores\coreX-corefiles/wiring.c:449

  // Enable split mode before anything else
  TCA0.SPLIT.CTRLD = TCA_SINGLE_SPLITM_bm;
 888:	90 93 03 0a 	sts	0x0A03, r25	; 0x800a03 <MCP2515::TXB+0x7fbc57>
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\cores\coreX-corefiles/wiring.c:453

  // Period setting, two 8 bit registers
  TCA0.SPLIT.LPER =
      TCA0.SPLIT.HPER = PWM_TIMER_PERIOD;
 88c:	8e ef       	ldi	r24, 0xFE	; 254
 88e:	80 93 27 0a 	sts	0x0A27, r24	; 0x800a27 <MCP2515::TXB+0x7fbc7b>
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\cores\coreX-corefiles/wiring.c:452

  // Enable split mode before anything else
  TCA0.SPLIT.CTRLD = TCA_SINGLE_SPLITM_bm;

  // Period setting, two 8 bit registers
  TCA0.SPLIT.LPER =
 892:	80 93 26 0a 	sts	0x0A26, r24	; 0x800a26 <MCP2515::TXB+0x7fbc7a>
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\cores\coreX-corefiles/wiring.c:461
  TCA0.SPLIT.LCMP0 =
      TCA0.SPLIT.LCMP1 =
          TCA0.SPLIT.LCMP2 =
              TCA0.SPLIT.HCMP0 =
                  TCA0.SPLIT.HCMP1 =
                      TCA0.SPLIT.HCMP2 = PWM_TIMER_COMPARE;
 896:	80 e8       	ldi	r24, 0x80	; 128
 898:	80 93 2d 0a 	sts	0x0A2D, r24	; 0x800a2d <MCP2515::TXB+0x7fbc81>
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\cores\coreX-corefiles/wiring.c:460
  // Default duty 50%, will re-assign in analogWrite()
  TCA0.SPLIT.LCMP0 =
      TCA0.SPLIT.LCMP1 =
          TCA0.SPLIT.LCMP2 =
              TCA0.SPLIT.HCMP0 =
                  TCA0.SPLIT.HCMP1 =
 89c:	80 93 2b 0a 	sts	0x0A2B, r24	; 0x800a2b <MCP2515::TXB+0x7fbc7f>
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\cores\coreX-corefiles/wiring.c:459

  // Default duty 50%, will re-assign in analogWrite()
  TCA0.SPLIT.LCMP0 =
      TCA0.SPLIT.LCMP1 =
          TCA0.SPLIT.LCMP2 =
              TCA0.SPLIT.HCMP0 =
 8a0:	80 93 29 0a 	sts	0x0A29, r24	; 0x800a29 <MCP2515::TXB+0x7fbc7d>
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\cores\coreX-corefiles/wiring.c:458
      TCA0.SPLIT.HPER = PWM_TIMER_PERIOD;

  // Default duty 50%, will re-assign in analogWrite()
  TCA0.SPLIT.LCMP0 =
      TCA0.SPLIT.LCMP1 =
          TCA0.SPLIT.LCMP2 =
 8a4:	80 93 2c 0a 	sts	0x0A2C, r24	; 0x800a2c <MCP2515::TXB+0x7fbc80>
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\cores\coreX-corefiles/wiring.c:457
  TCA0.SPLIT.LPER =
      TCA0.SPLIT.HPER = PWM_TIMER_PERIOD;

  // Default duty 50%, will re-assign in analogWrite()
  TCA0.SPLIT.LCMP0 =
      TCA0.SPLIT.LCMP1 =
 8a8:	80 93 2a 0a 	sts	0x0A2A, r24	; 0x800a2a <MCP2515::TXB+0x7fbc7e>
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\cores\coreX-corefiles/wiring.c:456
  // Period setting, two 8 bit registers
  TCA0.SPLIT.LPER =
      TCA0.SPLIT.HPER = PWM_TIMER_PERIOD;

  // Default duty 50%, will re-assign in analogWrite()
  TCA0.SPLIT.LCMP0 =
 8ac:	80 93 28 0a 	sts	0x0A28, r24	; 0x800a28 <MCP2515::TXB+0x7fbc7c>
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\cores\coreX-corefiles/wiring.c:471
#elif F_CPU <= 2000000L
  // Use DIV8 prescaler (giving 250kHz clock on 2MHz), enable TCA timer
  TCA0.SPLIT.CTRLA = (TCA_SPLIT_CLKSEL_DIV8_gc) | (TCA_SPLIT_ENABLE_bm);
#elif F_CPU <= 8000000L
  // Use DIV16 prescaler (giving 250kHz clocke on 4MHz, 500kHz clock on 8MHz), enable TCA timer
  TCA0.SPLIT.CTRLA = (TCA_SPLIT_CLKSEL_DIV16_gc) | (TCA_SPLIT_ENABLE_bm);
 8b0:	89 e0       	ldi	r24, 0x09	; 9
 8b2:	80 93 00 0a 	sts	0x0A00, r24	; 0x800a00 <MCP2515::TXB+0x7fbc54>
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\cores\coreX-corefiles/wiring.c:480
#endif

  //  TYPE B TIMERS

  // Set up routing (defined in pins_arduino.h)
  PORTMUX.TCBROUTEA = 0
 8b6:	87 e0       	ldi	r24, 0x07	; 7
 8b8:	80 93 e5 05 	sts	0x05E5, r24	; 0x8005e5 <MCP2515::TXB+0x7fb839>
main():
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\cores\coreX-corefiles/wiring.c:496
                      | TCB3_PINS
#endif
      ;

  // Start with TCB0
  TCB_t *timer_B = (TCB_t *)&TCB0;
 8bc:	e0 e8       	ldi	r30, 0x80	; 128
 8be:	fa e0       	ldi	r31, 0x0A	; 10
setup_timers():
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\cores\coreX-corefiles/wiring.c:513

  // Timer B Setup loop for TCB[0:end]
  do
  {
    // 8 bit PWM mode, but do not enable output yet, will do in analogWrite()
    timer_B->CTRLB = (TCB_CNTMODE_PWM8_gc);
 8c0:	37 e0       	ldi	r19, 0x07	; 7
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\cores\coreX-corefiles/wiring.c:516

    // Assign 8-bit period
    timer_B->CCMPL = PWM_TIMER_PERIOD;
 8c2:	2e ef       	ldi	r18, 0xFE	; 254
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\cores\coreX-corefiles/wiring.c:519

    // default duty 50%, set when output enabled
    timer_B->CCMPH = PWM_TIMER_COMPARE;
 8c4:	90 e8       	ldi	r25, 0x80	; 128
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\cores\coreX-corefiles/wiring.c:523

    // Use TCA clock (250kHz) and enable
    // (sync update commented out, might try to synchronize later
    timer_B->CTRLA = (TCB_CLKSEL_CLKTCA_gc)
 8c6:	85 e0       	ldi	r24, 0x05	; 5
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\cores\coreX-corefiles/wiring.c:513

  // Timer B Setup loop for TCB[0:end]
  do
  {
    // 8 bit PWM mode, but do not enable output yet, will do in analogWrite()
    timer_B->CTRLB = (TCB_CNTMODE_PWM8_gc);
 8c8:	31 83       	std	Z+1, r19	; 0x01
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\cores\coreX-corefiles/wiring.c:516

    // Assign 8-bit period
    timer_B->CCMPL = PWM_TIMER_PERIOD;
 8ca:	24 87       	std	Z+12, r18	; 0x0c
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\cores\coreX-corefiles/wiring.c:519

    // default duty 50%, set when output enabled
    timer_B->CCMPH = PWM_TIMER_COMPARE;
 8cc:	95 87       	std	Z+13, r25	; 0x0d
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\cores\coreX-corefiles/wiring.c:523

    // Use TCA clock (250kHz) and enable
    // (sync update commented out, might try to synchronize later
    timer_B->CTRLA = (TCB_CLKSEL_CLKTCA_gc)
 8ce:	80 83       	st	Z, r24
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\cores\coreX-corefiles/wiring.c:528
                     //|(TCB_SYNCUPD_bm)
                     | (TCB_ENABLE_bm);

    // Increment pointer to next TCB instance
    timer_B++;
 8d0:	70 96       	adiw	r30, 0x10	; 16
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\cores\coreX-corefiles/wiring.c:531

    // Stop when pointing to TCB3
  } while (timer_B <= timer_B_end);
 8d2:	e0 3c       	cpi	r30, 0xC0	; 192
 8d4:	4a e0       	ldi	r20, 0x0A	; 10
 8d6:	f4 07       	cpc	r31, r20
 8d8:	b9 f7       	brne	.-18     	; 0x8c8 <main+0x82>
init():
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\cores\coreX-corefiles/wiring.c:416
  /********************* TCB for system time tracking **************************/

  // BUG: we can compensate for F_CPU by fine tuning value of TIME_TRACKING_TIMER_COUNT

  /* Select vanilla 16 bit periodic interrupt mode */
  _timer->CTRLB = TCB_CNTMODE_INT_gc;
 8da:	10 92 a1 0a 	sts	0x0AA1, r1	; 0x800aa1 <MCP2515::TXB+0x7fbcf5>
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\cores\coreX-corefiles/wiring.c:419

  /* TOP value for overflow every N clock cycles */
  _timer->CCMP = TIME_TRACKING_TIMER_COUNT - 1;
 8de:	8f e3       	ldi	r24, 0x3F	; 63
 8e0:	9f e1       	ldi	r25, 0x1F	; 31
 8e2:	80 93 ac 0a 	sts	0x0AAC, r24	; 0x800aac <MCP2515::TXB+0x7fbd00>
 8e6:	90 93 ad 0a 	sts	0x0AAD, r25	; 0x800aad <MCP2515::TXB+0x7fbd01>
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\cores\coreX-corefiles/wiring.c:422

  /* Enable TCB interrupt */
  _timer->INTCTRL |= TCB_CAPT_bm;
 8ea:	80 91 a5 0a 	lds	r24, 0x0AA5	; 0x800aa5 <MCP2515::TXB+0x7fbcf9>
 8ee:	81 60       	ori	r24, 0x01	; 1
 8f0:	80 93 a5 0a 	sts	0x0AA5, r24	; 0x800aa5 <MCP2515::TXB+0x7fbcf9>
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\cores\coreX-corefiles/wiring.c:426

  /* Clock selection is F_CPU/N -- which is independent of TCA */
#if TIME_TRACKING_TIMER_DIVIDER == 1
  _timer->CTRLA = TCB_CLKSEL_CLKDIV1_gc; /* F_CPU */
 8f4:	10 92 a0 0a 	sts	0x0AA0, r1	; 0x800aa0 <MCP2515::TXB+0x7fbcf4>
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\cores\coreX-corefiles/wiring.c:434
#else
#assert "TIME_TRACKING_TIMER_DIVIDER not supported"
#endif

  /* Enable & start */
  _timer->CTRLA |= TCB_ENABLE_bm; /* Keep this last before enabling interrupts to ensure tracking as accurate as possible */
 8f8:	80 91 a0 0a 	lds	r24, 0x0AA0	; 0x800aa0 <MCP2515::TXB+0x7fbcf4>
 8fc:	81 60       	ori	r24, 0x01	; 1
 8fe:	80 93 a0 0a 	sts	0x0AA0, r24	; 0x800aa0 <MCP2515::TXB+0x7fbcf4>
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\cores\coreX-corefiles/wiring.c:438

  /*************************** ENABLE GLOBAL INTERRUPTS *************************/

  sei();
 902:	78 94       	sei
setup():
C:\Users\Martin\Documents\Arduino\sketch_jun30b/sketch_jun30b.ino:50
  PinState(PIN_PD3, 8)
};


void setup() {
  SPI.begin();
 904:	2d dd       	rcall	.-1446   	; 0x360 <SPIClass::begin() [clone .constprop.28]>
C:\Users\Martin\Documents\Arduino\sketch_jun30b/sketch_jun30b.ino:52

  _PROTECTED_WRITE(CLKCTRL.MCLKCTRLA,  CLKCTRL.MCLKCTRLA | 1 << 7);
 906:	80 91 60 00 	lds	r24, 0x0060	; 0x800060 <MCP2515::TXB+0x7fb2b4>
 90a:	80 68       	ori	r24, 0x80	; 128
 90c:	90 e0       	ldi	r25, 0x00	; 0
 90e:	28 ed       	ldi	r18, 0xD8	; 216
 910:	24 bf       	out	0x34, r18	; 52
 912:	80 93 60 00 	sts	0x0060, r24	; 0x800060 <MCP2515::TXB+0x7fb2b4>
reset():
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:36
    SPI.endTransaction();
}

MCP2515::ERROR MCP2515::reset(void)
{
    startSPI();
 916:	c6 dd       	rcall	.-1140   	; 0x4a4 <MCP2515::startSPI() [clone .constprop.20]>
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:37
    SPI.transfer(INSTRUCTION_RESET);
 918:	80 ec       	ldi	r24, 0xC0	; 192
 91a:	de db       	rcall	.-2116   	; 0xd8 <SPIClass::transfer(unsigned char) [clone .constprop.25]>
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:38
    endSPI();
 91c:	46 dc       	rcall	.-1908   	; 0x1aa <MCP2515::endSPI() [clone .constprop.31]>
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:40

    delay(10);
 91e:	6a e0       	ldi	r22, 0x0A	; 10
 920:	70 e0       	ldi	r23, 0x00	; 0
 922:	80 e0       	ldi	r24, 0x00	; 0
 924:	90 e0       	ldi	r25, 0x00	; 0
 926:	92 dd       	rcall	.-1244   	; 0x44c <delay>
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:43

    uint8_t zeros[14];
    memset(zeros, 0, sizeof(zeros));
 928:	ce 01       	movw	r24, r28
 92a:	01 96       	adiw	r24, 0x01	; 1
 92c:	7c 01       	movw	r14, r24
 92e:	8e e0       	ldi	r24, 0x0E	; 14
 930:	d7 01       	movw	r26, r14
 932:	1d 92       	st	X+, r1
 934:	8a 95       	dec	r24
 936:	e9 f7       	brne	.-6      	; 0x932 <main+0xec>
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:44
    setRegisters(MCP_TXB0CTRL, zeros, 14);
 938:	4e e0       	ldi	r20, 0x0E	; 14
 93a:	b7 01       	movw	r22, r14
 93c:	80 e3       	ldi	r24, 0x30	; 48
 93e:	81 de       	rcall	.-766    	; 0x642 <MCP2515::setRegisters(MCP2515::REGISTER, unsigned char const*, unsigned char) [clone .constprop.17]>
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:45
    setRegisters(MCP_TXB1CTRL, zeros, 14);
 940:	4e e0       	ldi	r20, 0x0E	; 14
 942:	b7 01       	movw	r22, r14
 944:	80 e4       	ldi	r24, 0x40	; 64
 946:	7d de       	rcall	.-774    	; 0x642 <MCP2515::setRegisters(MCP2515::REGISTER, unsigned char const*, unsigned char) [clone .constprop.17]>
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:46
    setRegisters(MCP_TXB2CTRL, zeros, 14);
 948:	4e e0       	ldi	r20, 0x0E	; 14
 94a:	b7 01       	movw	r22, r14
 94c:	80 e5       	ldi	r24, 0x50	; 80
 94e:	79 de       	rcall	.-782    	; 0x642 <MCP2515::setRegisters(MCP2515::REGISTER, unsigned char const*, unsigned char) [clone .constprop.17]>
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:48

    setRegister(MCP_RXB0CTRL, 0);
 950:	60 e0       	ldi	r22, 0x00	; 0
 952:	80 e6       	ldi	r24, 0x60	; 96
 954:	e3 de       	rcall	.-570    	; 0x71c <MCP2515::setRegister(MCP2515::REGISTER, unsigned char) [clone .constprop.9]>
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:49
    setRegister(MCP_RXB1CTRL, 0);
 956:	60 e0       	ldi	r22, 0x00	; 0
 958:	80 e7       	ldi	r24, 0x70	; 112
 95a:	e0 de       	rcall	.-576    	; 0x71c <MCP2515::setRegister(MCP2515::REGISTER, unsigned char) [clone .constprop.9]>
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:51

    setRegister(MCP_CANINTE, CANINTF_RX0IF | CANINTF_RX1IF | CANINTF_ERRIF | CANINTF_MERRF);
 95c:	63 ea       	ldi	r22, 0xA3	; 163
 95e:	8b e2       	ldi	r24, 0x2B	; 43
 960:	dd de       	rcall	.-582    	; 0x71c <MCP2515::setRegister(MCP2515::REGISTER, unsigned char) [clone .constprop.9]>
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:55

    // receives all valid messages using either Standard or Extended Identifiers that
    // meet filter criteria. RXF0 is applied for RXB0, RXF1 is applied for RXB1
    modifyRegister(MCP_RXB0CTRL,
 962:	44 e0       	ldi	r20, 0x04	; 4
 964:	67 e6       	ldi	r22, 0x67	; 103
 966:	80 e6       	ldi	r24, 0x60	; 96
 968:	8b de       	rcall	.-746    	; 0x680 <MCP2515::modifyRegister(MCP2515::REGISTER, unsigned char, unsigned char) [clone .constprop.16]>
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:58
                   RXBnCTRL_RXM_MASK | RXB0CTRL_BUKT | RXB0CTRL_FILHIT_MASK,
                   RXBnCTRL_RXM_STDEXT | RXB0CTRL_BUKT | RXB0CTRL_FILHIT);
    modifyRegister(MCP_RXB1CTRL,
 96a:	41 e0       	ldi	r20, 0x01	; 1
 96c:	67 e6       	ldi	r22, 0x67	; 103
 96e:	80 e7       	ldi	r24, 0x70	; 112
 970:	87 de       	rcall	.-754    	; 0x680 <MCP2515::modifyRegister(MCP2515::REGISTER, unsigned char, unsigned char) [clone .constprop.16]>
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:65
                   RXBnCTRL_RXM_STDEXT | RXB1CTRL_FILHIT);

    // clear filters and masks
    // do not filter any standard frames for RXF0 used by RXB0
    // do not filter any extended frames for RXF1 used by RXB1
    RXF filters[] = {RXF0, RXF1, RXF2, RXF3, RXF4, RXF5};
 972:	8c e0       	ldi	r24, 0x0C	; 12
 974:	e6 ef       	ldi	r30, 0xF6	; 246
 976:	fc e4       	ldi	r31, 0x4C	; 76
 978:	de 01       	movw	r26, r28
 97a:	1f 96       	adiw	r26, 0x0f	; 15
 97c:	01 90       	ld	r0, Z+
 97e:	0d 92       	st	X+, r0
 980:	8a 95       	dec	r24
 982:	e1 f7       	brne	.-8      	; 0x97c <main+0x136>
 984:	4e 01       	movw	r8, r28
 986:	bf e0       	ldi	r27, 0x0F	; 15
 988:	8b 0e       	add	r8, r27
 98a:	91 1c       	adc	r9, r1
main():
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:66
    for (int i=0; i<6; i++) {
 98c:	d1 2c       	mov	r13, r1
 98e:	c1 2c       	mov	r12, r1
 990:	a8 2c       	mov	r10, r8
 992:	99 a6       	std	Y+41, r9	; 0x29
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:564
    REGISTER reg;

    switch (num) {
        case RXF0: reg = MCP_RXF0SIDH; break;
        case RXF1: reg = MCP_RXF1SIDH; break;
        case RXF2: reg = MCP_RXF2SIDH; break;
 994:	98 e0       	ldi	r25, 0x08	; 8
 996:	b9 2e       	mov	r11, r25
reset():
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:68
    // do not filter any standard frames for RXF0 used by RXB0
    // do not filter any extended frames for RXF1 used by RXB1
    RXF filters[] = {RXF0, RXF1, RXF2, RXF3, RXF4, RXF5};
    for (int i=0; i<6; i++) {
        bool ext = (i == 1);
        ERROR result = setFilter(filters[i], ext, 0);
 998:	f4 01       	movw	r30, r8
 99a:	01 91       	ld	r16, Z+
 99c:	11 91       	ld	r17, Z+
 99e:	4f 01       	movw	r8, r30
setConfigMode():
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:150
    return i;
}

MCP2515::ERROR MCP2515::setConfigMode()
{
    return setMode(CANCTRL_REQOP_CONFIG);
 9a0:	80 e8       	ldi	r24, 0x80	; 128
 9a2:	81 de       	rcall	.-766    	; 0x6a6 <MCP2515::setMode(MCP2515::CANCTRL_REQOP_MODE) [clone .constprop.11]>
setFilter():
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:555
}

MCP2515::ERROR MCP2515::setFilter(const RXF num, const bool ext, const uint32_t ulData)
{
    ERROR res = setConfigMode();
    if (res != ERROR_OK) {
 9a4:	89 2b       	or	r24, r25
 9a6:	61 f4       	brne	.+24     	; 0x9c0 <main+0x17a>
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:561
        return res;
    }

    REGISTER reg;

    switch (num) {
 9a8:	02 30       	cpi	r16, 0x02	; 2
 9aa:	11 05       	cpc	r17, r1
 9ac:	09 f4       	brne	.+2      	; 0x9b0 <main+0x16a>
 9ae:	7b c0       	rjmp	.+246    	; 0xaa6 <main+0x260>
 9b0:	a0 f5       	brcc	.+104    	; 0xa1a <main+0x1d4>
 9b2:	01 15       	cp	r16, r1
 9b4:	11 05       	cpc	r17, r1
 9b6:	e1 f1       	breq	.+120    	; 0xa30 <main+0x1ea>
 9b8:	01 30       	cpi	r16, 0x01	; 1
 9ba:	11 05       	cpc	r17, r1
 9bc:	09 f4       	brne	.+2      	; 0x9c0 <main+0x17a>
 9be:	79 c0       	rjmp	.+242    	; 0xab2 <main+0x26c>
setConfigMode():
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:150
    return i;
}

MCP2515::ERROR MCP2515::setConfigMode()
{
    return setMode(CANCTRL_REQOP_CONFIG);
 9c0:	80 e8       	ldi	r24, 0x80	; 128
 9c2:	71 de       	rcall	.-798    	; 0x6a6 <MCP2515::setMode(MCP2515::CANCTRL_REQOP_MODE) [clone .constprop.11]>
setBitrate():
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:202
}

MCP2515::ERROR MCP2515::setBitrate(const CAN_SPEED canSpeed, CAN_CLOCK canClock)
{
    ERROR error = setConfigMode();
    if (error != ERROR_OK) {
 9c4:	89 2b       	or	r24, r25
 9c6:	49 f4       	brne	.+18     	; 0x9da <main+0x194>
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:477
        set = 0;
        break;
    }

    if (set) {
        setRegister(MCP_CNF1, cfg1);
 9c8:	60 e0       	ldi	r22, 0x00	; 0
 9ca:	8a e2       	ldi	r24, 0x2A	; 42
 9cc:	a7 de       	rcall	.-690    	; 0x71c <MCP2515::setRegister(MCP2515::REGISTER, unsigned char) [clone .constprop.9]>
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:478
        setRegister(MCP_CNF2, cfg2);
 9ce:	60 e9       	ldi	r22, 0x90	; 144
 9d0:	89 e2       	ldi	r24, 0x29	; 41
 9d2:	a4 de       	rcall	.-696    	; 0x71c <MCP2515::setRegister(MCP2515::REGISTER, unsigned char) [clone .constprop.9]>
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:479
        setRegister(MCP_CNF3, cfg3);
 9d4:	62 e8       	ldi	r22, 0x82	; 130
 9d6:	88 e2       	ldi	r24, 0x28	; 40
 9d8:	a1 de       	rcall	.-702    	; 0x71c <MCP2515::setRegister(MCP2515::REGISTER, unsigned char) [clone .constprop.9]>
setNormalMode():
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:170
    return setMode(CANCTRL_REQOP_LOOPBACK);
}

MCP2515::ERROR MCP2515::setNormalMode()
{
    return setMode(CANCTRL_REQOP_NORMAL);
 9da:	80 e0       	ldi	r24, 0x00	; 0
 9dc:	64 de       	rcall	.-824    	; 0x6a6 <MCP2515::setMode(MCP2515::CANCTRL_REQOP_MODE) [clone .constprop.11]>
setup():
C:\Users\Martin\Documents\Arduino\sketch_jun30b/sketch_jun30b.ino:58
  mcp2515.reset();
  mcp2515.setBitrate(CAN_500KBPS, MCP_8MHZ); //Sets CAN at speed 500KBPS and Clock 8MHz
  mcp2515.setNormalMode();


  delay(2000);
 9de:	60 ed       	ldi	r22, 0xD0	; 208
 9e0:	77 e0       	ldi	r23, 0x07	; 7
 9e2:	80 e0       	ldi	r24, 0x00	; 0
 9e4:	90 e0       	ldi	r25, 0x00	; 0
 9e6:	32 dd       	rcall	.-1436   	; 0x44c <delay>
 9e8:	a5 e5       	ldi	r26, 0x55	; 85
 9ea:	ca 2e       	mov	r12, r26
 9ec:	ac e3       	ldi	r26, 0x3C	; 60
 9ee:	da 2e       	mov	r13, r26
SendDebugPkg():
C:\Users\Martin\Documents\Arduino\sketch_jun30b/sketch_jun30b.ino:107


}

void SendDebugPkg()
{ _frame.can_id = 0x001;
 9f0:	41 2c       	mov	r4, r1
 9f2:	51 2c       	mov	r5, r1
 9f4:	32 01       	movw	r6, r4
 9f6:	43 94       	inc	r4
 9f8:	fe 01       	movw	r30, r28
 9fa:	75 96       	adiw	r30, 0x15	; 21
 9fc:	eb a3       	std	Y+35, r30	; 0x23
 9fe:	fc a3       	std	Y+36, r31	; 0x24
setup():
C:\Users\Martin\Documents\Arduino\sketch_jun30b/sketch_jun30b.ino:59
  mcp2515.setBitrate(CAN_500KBPS, MCP_8MHZ); //Sets CAN at speed 500KBPS and Clock 8MHz
  mcp2515.setNormalMode();


  delay(2000);
  for (int i = 0; i < sizeof(PinStates) - 1; i++)
 a00:	ff e6       	ldi	r31, 0x6F	; 111
 a02:	cf 16       	cp	r12, r31
 a04:	fd e3       	ldi	r31, 0x3D	; 61
 a06:	df 06       	cpc	r13, r31
 a08:	09 f0       	breq	.+2      	; 0xa0c <main+0x1c6>
 a0a:	64 c0       	rjmp	.+200    	; 0xad4 <main+0x28e>
main():
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\cores\coreX-corefiles/main.cpp:43
  setup();

  for (;;)
  {
    loop();
    if (serialEventRun) serialEventRun();
 a0c:	00 e0       	ldi	r16, 0x00	; 0
 a0e:	10 e0       	ldi	r17, 0x00	; 0
 a10:	01 15       	cp	r16, r1
 a12:	11 05       	cpc	r17, r1
 a14:	e9 f3       	breq	.-6      	; 0xa10 <main+0x1ca>
 a16:	f4 da       	rcall	.-2584   	; 0x0 <__vectors>
 a18:	fb cf       	rjmp	.-10     	; 0xa10 <main+0x1ca>
setFilter():
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:561
        return res;
    }

    REGISTER reg;

    switch (num) {
 a1a:	04 30       	cpi	r16, 0x04	; 4
 a1c:	11 05       	cpc	r17, r1
 a1e:	09 f4       	brne	.+2      	; 0xa22 <main+0x1dc>
 a20:	46 c0       	rjmp	.+140    	; 0xaae <main+0x268>
 a22:	08 f4       	brcc	.+2      	; 0xa26 <main+0x1e0>
 a24:	42 c0       	rjmp	.+132    	; 0xaaa <main+0x264>
 a26:	05 30       	cpi	r16, 0x05	; 5
 a28:	11 05       	cpc	r17, r1
 a2a:	51 f6       	brne	.-108    	; 0x9c0 <main+0x17a>
main():
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:567
        case RXF0: reg = MCP_RXF0SIDH; break;
        case RXF1: reg = MCP_RXF1SIDH; break;
        case RXF2: reg = MCP_RXF2SIDH; break;
        case RXF3: reg = MCP_RXF3SIDH; break;
        case RXF4: reg = MCP_RXF4SIDH; break;
        case RXF5: reg = MCP_RXF5SIDH; break;
 a2c:	88 e1       	ldi	r24, 0x18	; 24
 a2e:	01 c0       	rjmp	.+2      	; 0xa32 <main+0x1ec>
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:562
    }

    REGISTER reg;

    switch (num) {
        case RXF0: reg = MCP_RXF0SIDH; break;
 a30:	80 e0       	ldi	r24, 0x00	; 0
prepareId():
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:513

void MCP2515::prepareId(uint8_t *buffer, const bool ext, const uint32_t id)
{
    uint16_t canid = (uint16_t)(id & 0x0FFFF);

    if (ext) {
 a32:	f1 e0       	ldi	r31, 0x01	; 1
 a34:	cf 16       	cp	r12, r31
 a36:	d1 04       	cpc	r13, r1
 a38:	f1 f5       	brne	.+124    	; 0xab6 <main+0x270>
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:514
        buffer[MCP_EID0] = (uint8_t) (canid & 0xFF);
 a3a:	1e 8e       	std	Y+30, r1	; 0x1e
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:515
        buffer[MCP_EID8] = (uint8_t) (canid >> 8);
 a3c:	1d 8e       	std	Y+29, r1	; 0x1d
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:519
        canid = (uint16_t)(id >> 16);
        buffer[MCP_SIDL] = (uint8_t) (canid & 0x03);
        buffer[MCP_SIDL] += (uint8_t) ((canid & 0x1C) << 3);
        buffer[MCP_SIDL] |= TXB_EXIDE_MASK;
 a3e:	bc 8e       	std	Y+28, r11	; 0x1c
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:520
        buffer[MCP_SIDH] = (uint8_t) (canid >> 5);
 a40:	1b 8e       	std	Y+27, r1	; 0x1b
setFilter():
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:574
            return ERROR_FAIL;
    }

    uint8_t tbufdata[4];
    prepareId(tbufdata, ext, ulData);
    setRegisters(reg, tbufdata, 4);
 a42:	44 e0       	ldi	r20, 0x04	; 4
 a44:	be 01       	movw	r22, r28
 a46:	65 5e       	subi	r22, 0xE5	; 229
 a48:	7f 4f       	sbci	r23, 0xFF	; 255
 a4a:	fb dd       	rcall	.-1034   	; 0x642 <MCP2515::setRegisters(MCP2515::REGISTER, unsigned char const*, unsigned char) [clone .constprop.17]>
reset():
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:66

    // clear filters and masks
    // do not filter any standard frames for RXF0 used by RXB0
    // do not filter any extended frames for RXF1 used by RXB1
    RXF filters[] = {RXF0, RXF1, RXF2, RXF3, RXF4, RXF5};
    for (int i=0; i<6; i++) {
 a4c:	4f ef       	ldi	r20, 0xFF	; 255
 a4e:	c4 1a       	sub	r12, r20
 a50:	d4 0a       	sbc	r13, r20
 a52:	86 e0       	ldi	r24, 0x06	; 6
 a54:	c8 16       	cp	r12, r24
 a56:	d1 04       	cpc	r13, r1
 a58:	09 f0       	breq	.+2      	; 0xa5c <main+0x216>
 a5a:	9e cf       	rjmp	.-196    	; 0x998 <main+0x152>
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:74
        if (result != ERROR_OK) {
            return result;
        }
    }

    MASK masks[] = {MASK0, MASK1};
 a5c:	1f 8e       	std	Y+31, r1	; 0x1f
 a5e:	18 a2       	std	Y+32, r1	; 0x20
 a60:	81 e0       	ldi	r24, 0x01	; 1
 a62:	90 e0       	ldi	r25, 0x00	; 0
 a64:	89 a3       	std	Y+33, r24	; 0x21
 a66:	9a a3       	std	Y+34, r25	; 0x22
 a68:	8e 01       	movw	r16, r28
 a6a:	01 5e       	subi	r16, 0xE1	; 225
 a6c:	1f 4f       	sbci	r17, 0xFF	; 255
 a6e:	6e 01       	movw	r12, r28
 a70:	93 e2       	ldi	r25, 0x23	; 35
 a72:	c9 0e       	add	r12, r25
 a74:	d1 1c       	adc	r13, r1
prepareId():
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:519
        buffer[MCP_EID0] = (uint8_t) (canid & 0xFF);
        buffer[MCP_EID8] = (uint8_t) (canid >> 8);
        canid = (uint16_t)(id >> 16);
        buffer[MCP_SIDL] = (uint8_t) (canid & 0x03);
        buffer[MCP_SIDL] += (uint8_t) ((canid & 0x1C) << 3);
        buffer[MCP_SIDL] |= TXB_EXIDE_MASK;
 a76:	88 e0       	ldi	r24, 0x08	; 8
 a78:	b8 2e       	mov	r11, r24
reset():
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:76
        }
    }

    MASK masks[] = {MASK0, MASK1};
    for (int i=0; i<2; i++) {
        ERROR result = setFilterMask(masks[i], true, 0);
 a7a:	d8 01       	movw	r26, r16
 a7c:	8d 90       	ld	r8, X+
 a7e:	9d 90       	ld	r9, X+
 a80:	8d 01       	movw	r16, r26
setConfigMode():
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:150
    return i;
}

MCP2515::ERROR MCP2515::setConfigMode()
{
    return setMode(CANCTRL_REQOP_CONFIG);
 a82:	80 e8       	ldi	r24, 0x80	; 128
 a84:	10 de       	rcall	.-992    	; 0x6a6 <MCP2515::setMode(MCP2515::CANCTRL_REQOP_MODE) [clone .constprop.11]>
setFilterMask():
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:532
}

MCP2515::ERROR MCP2515::setFilterMask(const MASK mask, const bool ext, const uint32_t ulData)
{
    ERROR res = setConfigMode();
    if (res != ERROR_OK) {
 a86:	89 2b       	or	r24, r25
 a88:	09 f0       	breq	.+2      	; 0xa8c <main+0x246>
 a8a:	9a cf       	rjmp	.-204    	; 0x9c0 <main+0x17a>
prepareId():
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:514
void MCP2515::prepareId(uint8_t *buffer, const bool ext, const uint32_t id)
{
    uint16_t canid = (uint16_t)(id & 0x0FFFF);

    if (ext) {
        buffer[MCP_EID0] = (uint8_t) (canid & 0xFF);
 a8c:	1e 8e       	std	Y+30, r1	; 0x1e
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:515
        buffer[MCP_EID8] = (uint8_t) (canid >> 8);
 a8e:	1d 8e       	std	Y+29, r1	; 0x1d
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:519
        canid = (uint16_t)(id >> 16);
        buffer[MCP_SIDL] = (uint8_t) (canid & 0x03);
        buffer[MCP_SIDL] += (uint8_t) ((canid & 0x1C) << 3);
        buffer[MCP_SIDL] |= TXB_EXIDE_MASK;
 a90:	bc 8e       	std	Y+28, r11	; 0x1c
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:520
        buffer[MCP_SIDH] = (uint8_t) (canid >> 5);
 a92:	1b 8e       	std	Y+27, r1	; 0x1b
setFilterMask():
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:540
    
    uint8_t tbufdata[4];
    prepareId(tbufdata, ext, ulData);

    REGISTER reg;
    switch (mask) {
 a94:	81 14       	cp	r8, r1
 a96:	91 04       	cpc	r9, r1
 a98:	99 f0       	breq	.+38     	; 0xac0 <main+0x27a>
 a9a:	8a 94       	dec	r8
 a9c:	89 28       	or	r8, r9
 a9e:	09 f0       	breq	.+2      	; 0xaa2 <main+0x25c>
 aa0:	8f cf       	rjmp	.-226    	; 0x9c0 <main+0x17a>
main():
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:542
        case MASK0: reg = MCP_RXM0SIDH; break;
        case MASK1: reg = MCP_RXM1SIDH; break;
 aa2:	84 e2       	ldi	r24, 0x24	; 36
 aa4:	0e c0       	rjmp	.+28     	; 0xac2 <main+0x27c>
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:564
    REGISTER reg;

    switch (num) {
        case RXF0: reg = MCP_RXF0SIDH; break;
        case RXF1: reg = MCP_RXF1SIDH; break;
        case RXF2: reg = MCP_RXF2SIDH; break;
 aa6:	88 e0       	ldi	r24, 0x08	; 8
 aa8:	c4 cf       	rjmp	.-120    	; 0xa32 <main+0x1ec>
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:565
        case RXF3: reg = MCP_RXF3SIDH; break;
 aaa:	80 e1       	ldi	r24, 0x10	; 16
 aac:	c2 cf       	rjmp	.-124    	; 0xa32 <main+0x1ec>
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:566
        case RXF4: reg = MCP_RXF4SIDH; break;
 aae:	84 e1       	ldi	r24, 0x14	; 20
 ab0:	c0 cf       	rjmp	.-128    	; 0xa32 <main+0x1ec>
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:563

    REGISTER reg;

    switch (num) {
        case RXF0: reg = MCP_RXF0SIDH; break;
        case RXF1: reg = MCP_RXF1SIDH; break;
 ab2:	84 e0       	ldi	r24, 0x04	; 4
 ab4:	be cf       	rjmp	.-132    	; 0xa32 <main+0x1ec>
prepareId():
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:522
        buffer[MCP_SIDL] = (uint8_t) (canid & 0x03);
        buffer[MCP_SIDL] += (uint8_t) ((canid & 0x1C) << 3);
        buffer[MCP_SIDL] |= TXB_EXIDE_MASK;
        buffer[MCP_SIDH] = (uint8_t) (canid >> 5);
    } else {
        buffer[MCP_SIDH] = (uint8_t) (canid >> 3);
 ab6:	1b 8e       	std	Y+27, r1	; 0x1b
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:523
        buffer[MCP_SIDL] = (uint8_t) ((canid & 0x07 ) << 5);
 ab8:	1c 8e       	std	Y+28, r1	; 0x1c
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:524
        buffer[MCP_EID0] = 0;
 aba:	1e 8e       	std	Y+30, r1	; 0x1e
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:525
        buffer[MCP_EID8] = 0;
 abc:	1d 8e       	std	Y+29, r1	; 0x1d
 abe:	c1 cf       	rjmp	.-126    	; 0xa42 <main+0x1fc>
main():
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:541
    uint8_t tbufdata[4];
    prepareId(tbufdata, ext, ulData);

    REGISTER reg;
    switch (mask) {
        case MASK0: reg = MCP_RXM0SIDH; break;
 ac0:	80 e2       	ldi	r24, 0x20	; 32
setFilterMask():
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:547
        case MASK1: reg = MCP_RXM1SIDH; break;
        default:
            return ERROR_FAIL;
    }

    setRegisters(reg, tbufdata, 4);
 ac2:	44 e0       	ldi	r20, 0x04	; 4
 ac4:	be 01       	movw	r22, r28
 ac6:	65 5e       	subi	r22, 0xE5	; 229
 ac8:	7f 4f       	sbci	r23, 0xFF	; 255
 aca:	bb dd       	rcall	.-1162   	; 0x642 <MCP2515::setRegisters(MCP2515::REGISTER, unsigned char const*, unsigned char) [clone .constprop.17]>
reset():
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:75
            return result;
        }
    }

    MASK masks[] = {MASK0, MASK1};
    for (int i=0; i<2; i++) {
 acc:	c0 16       	cp	r12, r16
 ace:	d1 06       	cpc	r13, r17
 ad0:	a1 f6       	brne	.-88     	; 0xa7a <main+0x234>
 ad2:	76 cf       	rjmp	.-276    	; 0x9c0 <main+0x17a>
SendDebugPkg():
C:\Users\Martin\Documents\Arduino\sketch_jun30b/sketch_jun30b.ino:107


}

void SendDebugPkg()
{ _frame.can_id = 0x001;
 ad4:	40 92 00 3c 	sts	0x3C00, r4	; 0x803c00 <__DATA_REGION_ORIGIN__>
 ad8:	50 92 01 3c 	sts	0x3C01, r5	; 0x803c01 <__DATA_REGION_ORIGIN__+0x1>
 adc:	60 92 02 3c 	sts	0x3C02, r6	; 0x803c02 <__DATA_REGION_ORIGIN__+0x2>
 ae0:	70 92 03 3c 	sts	0x3C03, r7	; 0x803c03 <__DATA_REGION_ORIGIN__+0x3>
C:\Users\Martin\Documents\Arduino\sketch_jun30b/sketch_jun30b.ino:108
  _frame.can_dlc = 4;
 ae4:	44 e0       	ldi	r20, 0x04	; 4
 ae6:	40 93 04 3c 	sts	0x3C04, r20	; 0x803c04 <__DATA_REGION_ORIGIN__+0x4>
C:\Users\Martin\Documents\Arduino\sketch_jun30b/sketch_jun30b.ino:109
  _frame.data[0] = 0x47;
 aea:	87 e4       	ldi	r24, 0x47	; 71
 aec:	80 93 08 3c 	sts	0x3C08, r24	; 0x803c08 <__DATA_REGION_ORIGIN__+0x8>
C:\Users\Martin\Documents\Arduino\sketch_jun30b/sketch_jun30b.ino:110
  _frame.data[1] = 0x11;
 af0:	91 e1       	ldi	r25, 0x11	; 17
 af2:	90 93 09 3c 	sts	0x3C09, r25	; 0x803c09 <__DATA_REGION_ORIGIN__+0x9>
C:\Users\Martin\Documents\Arduino\sketch_jun30b/sketch_jun30b.ino:111
  _frame.data[2] = 0x08;
 af6:	a8 e0       	ldi	r26, 0x08	; 8
 af8:	a0 93 0a 3c 	sts	0x3C0A, r26	; 0x803c0a <__DATA_REGION_ORIGIN__+0xa>
C:\Users\Martin\Documents\Arduino\sketch_jun30b/sketch_jun30b.ino:112
  _frame.data[3] = 0x15;
 afc:	b5 e1       	ldi	r27, 0x15	; 21
 afe:	b0 93 0b 3c 	sts	0x3C0B, r27	; 0x803c0b <__DATA_REGION_ORIGIN__+0xb>
sendMessage():
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:616
{
    if (frame->can_dlc > CAN_MAX_DLEN) {
        return ERROR_FAILTX;
    }

    TXBn txBuffers[N_TXBUFFERS] = {TXB0, TXB1, TXB2};
 b02:	86 e0       	ldi	r24, 0x06	; 6
 b04:	e2 e0       	ldi	r30, 0x02	; 2
 b06:	fd e4       	ldi	r31, 0x4D	; 77
 b08:	de 01       	movw	r26, r28
 b0a:	1f 96       	adiw	r26, 0x0f	; 15
 b0c:	01 90       	ld	r0, Z+
 b0e:	0d 92       	st	X+, r0
 b10:	8a 95       	dec	r24
 b12:	e1 f7       	brne	.-8      	; 0xb0c <main+0x2c6>
 b14:	0a 2d       	mov	r16, r10
 b16:	19 a5       	ldd	r17, Y+41	; 0x29
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:619

    for (int i=0; i<N_TXBUFFERS; i++) {
        const struct TXBn_REGS *txbuf = &TXB[txBuffers[i]];
 b18:	f8 01       	movw	r30, r16
 b1a:	81 90       	ld	r8, Z+
 b1c:	91 90       	ld	r9, Z+
 b1e:	8f 01       	movw	r16, r30
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:620
        uint8_t ctrlval = readRegister(txbuf->CTRL);
 b20:	14 01       	movw	r2, r8
 b22:	22 0c       	add	r2, r2
 b24:	33 1c       	adc	r3, r3
 b26:	f1 01       	movw	r30, r2
 b28:	e8 0d       	add	r30, r8
 b2a:	f9 1d       	adc	r31, r9
 b2c:	e4 55       	subi	r30, 0x54	; 84
 b2e:	f2 4b       	sbci	r31, 0xB2	; 178
 b30:	b0 80       	ld	r11, Z
 b32:	8b 2d       	mov	r24, r11
 b34:	78 dd       	rcall	.-1296   	; 0x626 <MCP2515::readRegister(MCP2515::REGISTER) [clone .constprop.19]>
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:621
        if ( (ctrlval & TXB_TXREQ) == 0 ) {
 b36:	83 fd       	sbrc	r24, 3
 b38:	87 c0       	rjmp	.+270    	; 0xc48 <main+0x402>
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:581
    return ERROR_OK;
}

MCP2515::ERROR MCP2515::sendMessage(const TXBn txbn, const struct can_frame *frame)
{
    if (frame->can_dlc > CAN_MAX_DLEN) {
 b3a:	10 91 04 3c 	lds	r17, 0x3C04	; 0x803c04 <__DATA_REGION_ORIGIN__+0x4>
 b3e:	19 30       	cpi	r17, 0x09	; 9
 b40:	08 f0       	brcs	.+2      	; 0xb44 <main+0x2fe>
 b42:	63 c0       	rjmp	.+198    	; 0xc0a <main+0x3c4>
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:589

    const struct TXBn_REGS *txbuf = &TXB[txbn];

    uint8_t data[13];

    bool ext = (frame->can_id & CAN_EFF_FLAG);
 b44:	40 91 00 3c 	lds	r20, 0x3C00	; 0x803c00 <__DATA_REGION_ORIGIN__>
 b48:	50 91 01 3c 	lds	r21, 0x3C01	; 0x803c01 <__DATA_REGION_ORIGIN__+0x1>
 b4c:	60 91 02 3c 	lds	r22, 0x3C02	; 0x803c02 <__DATA_REGION_ORIGIN__+0x2>
 b50:	70 91 03 3c 	lds	r23, 0x3C03	; 0x803c03 <__DATA_REGION_ORIGIN__+0x3>
 b54:	db 01       	movw	r26, r22
 b56:	ca 01       	movw	r24, r20
 b58:	88 27       	eor	r24, r24
 b5a:	b7 fd       	sbrc	r27, 7
 b5c:	83 95       	inc	r24
 b5e:	99 27       	eor	r25, r25
 b60:	aa 27       	eor	r26, r26
 b62:	bb 27       	eor	r27, r27
 b64:	28 2f       	mov	r18, r24
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:590
    bool rtr = (frame->can_id & CAN_RTR_FLAG);
 b66:	db 01       	movw	r26, r22
 b68:	ca 01       	movw	r24, r20
 b6a:	88 27       	eor	r24, r24
 b6c:	99 27       	eor	r25, r25
 b6e:	aa 27       	eor	r26, r26
 b70:	b0 74       	andi	r27, 0x40	; 64
 b72:	8d a3       	std	Y+37, r24	; 0x25
 b74:	9e a3       	std	Y+38, r25	; 0x26
 b76:	af a3       	std	Y+39, r26	; 0x27
 b78:	b8 a7       	std	Y+40, r27	; 0x28
main():
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:591
    uint32_t id = (frame->can_id & (ext ? CAN_EFF_MASK : CAN_SFF_MASK));
 b7a:	8f ef       	ldi	r24, 0xFF	; 255
 b7c:	9f ef       	ldi	r25, 0xFF	; 255
 b7e:	af ef       	ldi	r26, 0xFF	; 255
 b80:	bf e1       	ldi	r27, 0x1F	; 31
sendMessage():
 b82:	21 11       	cpse	r18, r1
 b84:	04 c0       	rjmp	.+8      	; 0xb8e <main+0x348>
main():
 b86:	8f ef       	ldi	r24, 0xFF	; 255
 b88:	97 e0       	ldi	r25, 0x07	; 7
 b8a:	a0 e0       	ldi	r26, 0x00	; 0
 b8c:	b0 e0       	ldi	r27, 0x00	; 0
sendMessage():
 b8e:	84 23       	and	r24, r20
 b90:	95 23       	and	r25, r21
 b92:	a6 23       	and	r26, r22
 b94:	b7 23       	and	r27, r23
prepareId():
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:513

void MCP2515::prepareId(uint8_t *buffer, const bool ext, const uint32_t id)
{
    uint16_t canid = (uint16_t)(id & 0x0FFFF);

    if (ext) {
 b96:	22 23       	and	r18, r18
 b98:	09 f4       	brne	.+2      	; 0xb9c <main+0x356>
 b9a:	46 c0       	rjmp	.+140    	; 0xc28 <main+0x3e2>
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:514
        buffer[MCP_EID0] = (uint8_t) (canid & 0xFF);
 b9c:	8c 83       	std	Y+4, r24	; 0x04
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:515
        buffer[MCP_EID8] = (uint8_t) (canid >> 8);
 b9e:	9b 83       	std	Y+3, r25	; 0x03
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:516
        canid = (uint16_t)(id >> 16);
 ba0:	cd 01       	movw	r24, r26
 ba2:	aa 27       	eor	r26, r26
 ba4:	bb 27       	eor	r27, r27
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:518
        buffer[MCP_SIDL] = (uint8_t) (canid & 0x03);
        buffer[MCP_SIDL] += (uint8_t) ((canid & 0x1C) << 3);
 ba6:	28 2f       	mov	r18, r24
 ba8:	22 0f       	add	r18, r18
 baa:	22 0f       	add	r18, r18
 bac:	22 0f       	add	r18, r18
 bae:	20 7e       	andi	r18, 0xE0	; 224
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:517

    if (ext) {
        buffer[MCP_EID0] = (uint8_t) (canid & 0xFF);
        buffer[MCP_EID8] = (uint8_t) (canid >> 8);
        canid = (uint16_t)(id >> 16);
        buffer[MCP_SIDL] = (uint8_t) (canid & 0x03);
 bb0:	38 2f       	mov	r19, r24
 bb2:	33 70       	andi	r19, 0x03	; 3
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:519
        buffer[MCP_SIDL] += (uint8_t) ((canid & 0x1C) << 3);
        buffer[MCP_SIDL] |= TXB_EXIDE_MASK;
 bb4:	38 60       	ori	r19, 0x08	; 8
 bb6:	23 2b       	or	r18, r19
 bb8:	2a 83       	std	Y+2, r18	; 0x02
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:520
        buffer[MCP_SIDH] = (uint8_t) (canid >> 5);
 bba:	35 e0       	ldi	r19, 0x05	; 5
 bbc:	96 95       	lsr	r25
 bbe:	87 95       	ror	r24
 bc0:	3a 95       	dec	r19
 bc2:	e1 f7       	brne	.-8      	; 0xbbc <main+0x376>
 bc4:	89 83       	std	Y+1, r24	; 0x01
sendMessage():
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:595
    bool rtr = (frame->can_id & CAN_RTR_FLAG);
    uint32_t id = (frame->can_id & (ext ? CAN_EFF_MASK : CAN_SFF_MASK));

    prepareId(data, ext, id);

    data[MCP_DLC] = rtr ? (frame->can_dlc | RTR_MASK) : frame->can_dlc;
 bc6:	8d a1       	ldd	r24, Y+37	; 0x25
 bc8:	9e a1       	ldd	r25, Y+38	; 0x26
 bca:	af a1       	ldd	r26, Y+39	; 0x27
 bcc:	b8 a5       	ldd	r27, Y+40	; 0x28
 bce:	89 2b       	or	r24, r25
 bd0:	8a 2b       	or	r24, r26
 bd2:	8b 2b       	or	r24, r27
 bd4:	b9 f1       	breq	.+110    	; 0xc44 <main+0x3fe>
 bd6:	81 2f       	mov	r24, r17
 bd8:	80 64       	ori	r24, 0x40	; 64
 bda:	8d 83       	std	Y+5, r24	; 0x05
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:597

    memcpy(&data[MCP_DATA], frame->data, frame->can_dlc);
 bdc:	41 2f       	mov	r20, r17
 bde:	50 e0       	ldi	r21, 0x00	; 0
 be0:	68 e0       	ldi	r22, 0x08	; 8
 be2:	7c e3       	ldi	r23, 0x3C	; 60
 be4:	ce 01       	movw	r24, r28
 be6:	06 96       	adiw	r24, 0x06	; 6
 be8:	7b d0       	rcall	.+246    	; 0xce0 <memcpy>
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:599

    setRegisters(txbuf->SIDH, data, 5 + frame->can_dlc);
 bea:	45 e0       	ldi	r20, 0x05	; 5
 bec:	41 0f       	add	r20, r17
 bee:	f1 01       	movw	r30, r2
 bf0:	e8 0d       	add	r30, r8
 bf2:	f9 1d       	adc	r31, r9
 bf4:	e4 55       	subi	r30, 0x54	; 84
 bf6:	f2 4b       	sbci	r31, 0xB2	; 178
 bf8:	b7 01       	movw	r22, r14
 bfa:	81 81       	ldd	r24, Z+1	; 0x01
 bfc:	22 dd       	rcall	.-1468   	; 0x642 <MCP2515::setRegisters(MCP2515::REGISTER, unsigned char const*, unsigned char) [clone .constprop.17]>
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:601

    modifyRegister(txbuf->CTRL, TXB_TXREQ, TXB_TXREQ);
 bfe:	48 e0       	ldi	r20, 0x08	; 8
 c00:	68 e0       	ldi	r22, 0x08	; 8
 c02:	8b 2d       	mov	r24, r11
 c04:	3d dd       	rcall	.-1414   	; 0x680 <MCP2515::modifyRegister(MCP2515::REGISTER, unsigned char, unsigned char) [clone .constprop.16]>
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:603

    uint8_t ctrl = readRegister(txbuf->CTRL);
 c06:	8b 2d       	mov	r24, r11
 c08:	0e dd       	rcall	.-1508   	; 0x626 <MCP2515::readRegister(MCP2515::REGISTER) [clone .constprop.19]>
setup():
C:\Users\Martin\Documents\Arduino\sketch_jun30b/sketch_jun30b.ino:63
  delay(2000);
  for (int i = 0; i < sizeof(PinStates) - 1; i++)
  {
    
  SendDebugPkg();
  delay(1000);
 c0a:	68 ee       	ldi	r22, 0xE8	; 232
 c0c:	73 e0       	ldi	r23, 0x03	; 3
 c0e:	80 e0       	ldi	r24, 0x00	; 0
 c10:	90 e0       	ldi	r25, 0x00	; 0
 c12:	1c dc       	rcall	.-1992   	; 0x44c <delay>
C:\Users\Martin\Documents\Arduino\sketch_jun30b/sketch_jun30b.ino:65
  
    pinMode(PinStates[i].pin_id, INPUT_PULLUP);
 c14:	f6 01       	movw	r30, r12
 c16:	80 81       	ld	r24, Z
pinMode():
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.0.10\cores\coreX-corefiles/wiring_digital.c:31
#include "wiring_private.h"
#include "pins_arduino.h"

void pinMode(uint8_t pin, uint8_t mode)
{
  uint8_t bit_mask = digitalPinToBitMask(pin);
 c18:	89 32       	cpi	r24, 0x29	; 41
 c1a:	10 f4       	brcc	.+4      	; 0xc20 <main+0x3da>
 c1c:	62 e0       	ldi	r22, 0x02	; 2
 c1e:	72 db       	rcall	.-2332   	; 0x304 <pinMode.part.1>
 c20:	f6 e0       	ldi	r31, 0x06	; 6
 c22:	cf 0e       	add	r12, r31
 c24:	d1 1c       	adc	r13, r1
 c26:	ec ce       	rjmp	.-552    	; 0xa00 <main+0x1ba>
prepareId():
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:522
        buffer[MCP_SIDL] = (uint8_t) (canid & 0x03);
        buffer[MCP_SIDL] += (uint8_t) ((canid & 0x1C) << 3);
        buffer[MCP_SIDL] |= TXB_EXIDE_MASK;
        buffer[MCP_SIDH] = (uint8_t) (canid >> 5);
    } else {
        buffer[MCP_SIDH] = (uint8_t) (canid >> 3);
 c28:	9c 01       	movw	r18, r24
 c2a:	93 e0       	ldi	r25, 0x03	; 3
 c2c:	36 95       	lsr	r19
 c2e:	27 95       	ror	r18
 c30:	9a 95       	dec	r25
 c32:	e1 f7       	brne	.-8      	; 0xc2c <main+0x3e6>
 c34:	29 83       	std	Y+1, r18	; 0x01
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:523
        buffer[MCP_SIDL] = (uint8_t) ((canid & 0x07 ) << 5);
 c36:	82 95       	swap	r24
 c38:	88 0f       	add	r24, r24
 c3a:	80 7e       	andi	r24, 0xE0	; 224
 c3c:	8a 83       	std	Y+2, r24	; 0x02
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:524
        buffer[MCP_EID0] = 0;
 c3e:	1c 82       	std	Y+4, r1	; 0x04
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:525
        buffer[MCP_EID8] = 0;
 c40:	1b 82       	std	Y+3, r1	; 0x03
 c42:	c1 cf       	rjmp	.-126    	; 0xbc6 <main+0x380>
sendMessage():
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:595
    bool rtr = (frame->can_id & CAN_RTR_FLAG);
    uint32_t id = (frame->can_id & (ext ? CAN_EFF_MASK : CAN_SFF_MASK));

    prepareId(data, ext, id);

    data[MCP_DLC] = rtr ? (frame->can_dlc | RTR_MASK) : frame->can_dlc;
 c44:	81 2f       	mov	r24, r17
 c46:	c9 cf       	rjmp	.-110    	; 0xbda <main+0x394>
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:618
        return ERROR_FAILTX;
    }

    TXBn txBuffers[N_TXBUFFERS] = {TXB0, TXB1, TXB2};

    for (int i=0; i<N_TXBUFFERS; i++) {
 c48:	ab a1       	ldd	r26, Y+35	; 0x23
 c4a:	bc a1       	ldd	r27, Y+36	; 0x24
 c4c:	0a 17       	cp	r16, r26
 c4e:	1b 07       	cpc	r17, r27
 c50:	09 f0       	breq	.+2      	; 0xc54 <main+0x40e>
 c52:	62 cf       	rjmp	.-316    	; 0xb18 <main+0x2d2>
 c54:	da cf       	rjmp	.-76     	; 0xc0a <main+0x3c4>

00000c56 <__muluhisi3>:
__muluhisi3():
/home/jenkins-mingw32/workspace/avr-gcc-staging/label/Ubuntu14.04x64-mingw32/gcc-build/avr/avrxmega3/short-calls/libgcc/../../../../../gcc/libgcc/config/avr/lib1funcs.S:626
 c56:	38 d0       	rcall	.+112    	; 0xcc8 <__umulhisi3>
/home/jenkins-mingw32/workspace/avr-gcc-staging/label/Ubuntu14.04x64-mingw32/gcc-build/avr/avrxmega3/short-calls/libgcc/../../../../../gcc/libgcc/config/avr/lib1funcs.S:627
 c58:	a5 9f       	mul	r26, r21
/home/jenkins-mingw32/workspace/avr-gcc-staging/label/Ubuntu14.04x64-mingw32/gcc-build/avr/avrxmega3/short-calls/libgcc/../../../../../gcc/libgcc/config/avr/lib1funcs.S:628
 c5a:	90 0d       	add	r25, r0
/home/jenkins-mingw32/workspace/avr-gcc-staging/label/Ubuntu14.04x64-mingw32/gcc-build/avr/avrxmega3/short-calls/libgcc/../../../../../gcc/libgcc/config/avr/lib1funcs.S:629
 c5c:	b4 9f       	mul	r27, r20
/home/jenkins-mingw32/workspace/avr-gcc-staging/label/Ubuntu14.04x64-mingw32/gcc-build/avr/avrxmega3/short-calls/libgcc/../../../../../gcc/libgcc/config/avr/lib1funcs.S:630
 c5e:	90 0d       	add	r25, r0
/home/jenkins-mingw32/workspace/avr-gcc-staging/label/Ubuntu14.04x64-mingw32/gcc-build/avr/avrxmega3/short-calls/libgcc/../../../../../gcc/libgcc/config/avr/lib1funcs.S:631
 c60:	a4 9f       	mul	r26, r20
/home/jenkins-mingw32/workspace/avr-gcc-staging/label/Ubuntu14.04x64-mingw32/gcc-build/avr/avrxmega3/short-calls/libgcc/../../../../../gcc/libgcc/config/avr/lib1funcs.S:632
 c62:	80 0d       	add	r24, r0
/home/jenkins-mingw32/workspace/avr-gcc-staging/label/Ubuntu14.04x64-mingw32/gcc-build/avr/avrxmega3/short-calls/libgcc/../../../../../gcc/libgcc/config/avr/lib1funcs.S:633
 c64:	91 1d       	adc	r25, r1
/home/jenkins-mingw32/workspace/avr-gcc-staging/label/Ubuntu14.04x64-mingw32/gcc-build/avr/avrxmega3/short-calls/libgcc/../../../../../gcc/libgcc/config/avr/lib1funcs.S:634
 c66:	11 24       	eor	r1, r1
/home/jenkins-mingw32/workspace/avr-gcc-staging/label/Ubuntu14.04x64-mingw32/gcc-build/avr/avrxmega3/short-calls/libgcc/../../../../../gcc/libgcc/config/avr/lib1funcs.S:635
 c68:	08 95       	ret

00000c6a <__ashrdi3>:
__ashrdi3():
/home/jenkins-mingw32/workspace/avr-gcc-staging/label/Ubuntu14.04x64-mingw32/gcc-build/avr/avrxmega3/short-calls/libgcc/../../../../../gcc/libgcc/config/avr/lib1funcs.S:3122
 c6a:	97 fd       	sbrc	r25, 7
/home/jenkins-mingw32/workspace/avr-gcc-staging/label/Ubuntu14.04x64-mingw32/gcc-build/avr/avrxmega3/short-calls/libgcc/../../../../../gcc/libgcc/config/avr/lib1funcs.S:3123
 c6c:	10 94       	com	r1

00000c6e <__lshrdi3>:
__lshrdi3():
/home/jenkins-mingw32/workspace/avr-gcc-staging/label/Ubuntu14.04x64-mingw32/gcc-build/avr/avrxmega3/short-calls/libgcc/../../../../../gcc/libgcc/config/avr/lib1funcs.S:3131
 c6e:	00 2e       	mov	r0, r16
/home/jenkins-mingw32/workspace/avr-gcc-staging/label/Ubuntu14.04x64-mingw32/gcc-build/avr/avrxmega3/short-calls/libgcc/../../../../../gcc/libgcc/config/avr/lib1funcs.S:3132
 c70:	08 30       	cpi	r16, 0x08	; 8
/home/jenkins-mingw32/workspace/avr-gcc-staging/label/Ubuntu14.04x64-mingw32/gcc-build/avr/avrxmega3/short-calls/libgcc/../../../../../gcc/libgcc/config/avr/lib1funcs.S:3133
 c72:	98 f0       	brcs	.+38     	; 0xc9a <__lshrdi3+0x2c>
/home/jenkins-mingw32/workspace/avr-gcc-staging/label/Ubuntu14.04x64-mingw32/gcc-build/avr/avrxmega3/short-calls/libgcc/../../../../../gcc/libgcc/config/avr/lib1funcs.S:3134
 c74:	08 50       	subi	r16, 0x08	; 8
/home/jenkins-mingw32/workspace/avr-gcc-staging/label/Ubuntu14.04x64-mingw32/gcc-build/avr/avrxmega3/short-calls/libgcc/../../../../../gcc/libgcc/config/avr/lib1funcs.S:3135
 c76:	23 2f       	mov	r18, r19
/home/jenkins-mingw32/workspace/avr-gcc-staging/label/Ubuntu14.04x64-mingw32/gcc-build/avr/avrxmega3/short-calls/libgcc/../../../../../gcc/libgcc/config/avr/lib1funcs.S:3136
 c78:	34 2f       	mov	r19, r20
/home/jenkins-mingw32/workspace/avr-gcc-staging/label/Ubuntu14.04x64-mingw32/gcc-build/avr/avrxmega3/short-calls/libgcc/../../../../../gcc/libgcc/config/avr/lib1funcs.S:3137
 c7a:	45 2f       	mov	r20, r21
/home/jenkins-mingw32/workspace/avr-gcc-staging/label/Ubuntu14.04x64-mingw32/gcc-build/avr/avrxmega3/short-calls/libgcc/../../../../../gcc/libgcc/config/avr/lib1funcs.S:3138
 c7c:	56 2f       	mov	r21, r22
/home/jenkins-mingw32/workspace/avr-gcc-staging/label/Ubuntu14.04x64-mingw32/gcc-build/avr/avrxmega3/short-calls/libgcc/../../../../../gcc/libgcc/config/avr/lib1funcs.S:3139
 c7e:	67 2f       	mov	r22, r23
/home/jenkins-mingw32/workspace/avr-gcc-staging/label/Ubuntu14.04x64-mingw32/gcc-build/avr/avrxmega3/short-calls/libgcc/../../../../../gcc/libgcc/config/avr/lib1funcs.S:3140
 c80:	78 2f       	mov	r23, r24
/home/jenkins-mingw32/workspace/avr-gcc-staging/label/Ubuntu14.04x64-mingw32/gcc-build/avr/avrxmega3/short-calls/libgcc/../../../../../gcc/libgcc/config/avr/lib1funcs.S:3141
 c82:	89 2f       	mov	r24, r25
/home/jenkins-mingw32/workspace/avr-gcc-staging/label/Ubuntu14.04x64-mingw32/gcc-build/avr/avrxmega3/short-calls/libgcc/../../../../../gcc/libgcc/config/avr/lib1funcs.S:3142
 c84:	91 2d       	mov	r25, r1
/home/jenkins-mingw32/workspace/avr-gcc-staging/label/Ubuntu14.04x64-mingw32/gcc-build/avr/avrxmega3/short-calls/libgcc/../../../../../gcc/libgcc/config/avr/lib1funcs.S:3143
 c86:	f4 cf       	rjmp	.-24     	; 0xc70 <__lshrdi3+0x2>
/home/jenkins-mingw32/workspace/avr-gcc-staging/label/Ubuntu14.04x64-mingw32/gcc-build/avr/avrxmega3/short-calls/libgcc/../../../../../gcc/libgcc/config/avr/lib1funcs.S:3144
 c88:	15 94       	asr	r1
/home/jenkins-mingw32/workspace/avr-gcc-staging/label/Ubuntu14.04x64-mingw32/gcc-build/avr/avrxmega3/short-calls/libgcc/../../../../../gcc/libgcc/config/avr/lib1funcs.S:3145
 c8a:	97 95       	ror	r25
/home/jenkins-mingw32/workspace/avr-gcc-staging/label/Ubuntu14.04x64-mingw32/gcc-build/avr/avrxmega3/short-calls/libgcc/../../../../../gcc/libgcc/config/avr/lib1funcs.S:3146
 c8c:	87 95       	ror	r24
/home/jenkins-mingw32/workspace/avr-gcc-staging/label/Ubuntu14.04x64-mingw32/gcc-build/avr/avrxmega3/short-calls/libgcc/../../../../../gcc/libgcc/config/avr/lib1funcs.S:3147
 c8e:	77 95       	ror	r23
/home/jenkins-mingw32/workspace/avr-gcc-staging/label/Ubuntu14.04x64-mingw32/gcc-build/avr/avrxmega3/short-calls/libgcc/../../../../../gcc/libgcc/config/avr/lib1funcs.S:3148
 c90:	67 95       	ror	r22
/home/jenkins-mingw32/workspace/avr-gcc-staging/label/Ubuntu14.04x64-mingw32/gcc-build/avr/avrxmega3/short-calls/libgcc/../../../../../gcc/libgcc/config/avr/lib1funcs.S:3149
 c92:	57 95       	ror	r21
/home/jenkins-mingw32/workspace/avr-gcc-staging/label/Ubuntu14.04x64-mingw32/gcc-build/avr/avrxmega3/short-calls/libgcc/../../../../../gcc/libgcc/config/avr/lib1funcs.S:3150
 c94:	47 95       	ror	r20
/home/jenkins-mingw32/workspace/avr-gcc-staging/label/Ubuntu14.04x64-mingw32/gcc-build/avr/avrxmega3/short-calls/libgcc/../../../../../gcc/libgcc/config/avr/lib1funcs.S:3151
 c96:	37 95       	ror	r19
/home/jenkins-mingw32/workspace/avr-gcc-staging/label/Ubuntu14.04x64-mingw32/gcc-build/avr/avrxmega3/short-calls/libgcc/../../../../../gcc/libgcc/config/avr/lib1funcs.S:3152
 c98:	27 95       	ror	r18
/home/jenkins-mingw32/workspace/avr-gcc-staging/label/Ubuntu14.04x64-mingw32/gcc-build/avr/avrxmega3/short-calls/libgcc/../../../../../gcc/libgcc/config/avr/lib1funcs.S:3153
 c9a:	0a 95       	dec	r16
/home/jenkins-mingw32/workspace/avr-gcc-staging/label/Ubuntu14.04x64-mingw32/gcc-build/avr/avrxmega3/short-calls/libgcc/../../../../../gcc/libgcc/config/avr/lib1funcs.S:3154
 c9c:	aa f7       	brpl	.-22     	; 0xc88 <__lshrdi3+0x1a>
/home/jenkins-mingw32/workspace/avr-gcc-staging/label/Ubuntu14.04x64-mingw32/gcc-build/avr/avrxmega3/short-calls/libgcc/../../../../../gcc/libgcc/config/avr/lib1funcs.S:3155
 c9e:	11 24       	eor	r1, r1
/home/jenkins-mingw32/workspace/avr-gcc-staging/label/Ubuntu14.04x64-mingw32/gcc-build/avr/avrxmega3/short-calls/libgcc/../../../../../gcc/libgcc/config/avr/lib1funcs.S:3156
 ca0:	00 2d       	mov	r16, r0
/home/jenkins-mingw32/workspace/avr-gcc-staging/label/Ubuntu14.04x64-mingw32/gcc-build/avr/avrxmega3/short-calls/libgcc/../../../../../gcc/libgcc/config/avr/lib1funcs.S:3157
 ca2:	08 95       	ret

00000ca4 <__cmpdi2_s8>:
__cmpdi2_s8():
/home/jenkins-mingw32/workspace/avr-gcc-staging/label/Ubuntu14.04x64-mingw32/gcc-build/avr/avrxmega3/short-calls/libgcc/../../../../../gcc/libgcc/config/avr/lib1funcs.S:2102
 ca4:	00 24       	eor	r0, r0
/home/jenkins-mingw32/workspace/avr-gcc-staging/label/Ubuntu14.04x64-mingw32/gcc-build/avr/avrxmega3/short-calls/libgcc/../../../../../gcc/libgcc/config/avr/lib1funcs.S:2103
 ca6:	a7 fd       	sbrc	r26, 7
/home/jenkins-mingw32/workspace/avr-gcc-staging/label/Ubuntu14.04x64-mingw32/gcc-build/avr/avrxmega3/short-calls/libgcc/../../../../../gcc/libgcc/config/avr/lib1funcs.S:2104
 ca8:	00 94       	com	r0
/home/jenkins-mingw32/workspace/avr-gcc-staging/label/Ubuntu14.04x64-mingw32/gcc-build/avr/avrxmega3/short-calls/libgcc/../../../../../gcc/libgcc/config/avr/lib1funcs.S:2105
 caa:	2a 17       	cp	r18, r26
 cac:	30 05       	cpc	r19, r0
 cae:	40 05       	cpc	r20, r0
 cb0:	50 05       	cpc	r21, r0
/home/jenkins-mingw32/workspace/avr-gcc-staging/label/Ubuntu14.04x64-mingw32/gcc-build/avr/avrxmega3/short-calls/libgcc/../../../../../gcc/libgcc/config/avr/lib1funcs.S:2106
 cb2:	60 05       	cpc	r22, r0
 cb4:	70 05       	cpc	r23, r0
 cb6:	80 05       	cpc	r24, r0
 cb8:	90 05       	cpc	r25, r0
/home/jenkins-mingw32/workspace/avr-gcc-staging/label/Ubuntu14.04x64-mingw32/gcc-build/avr/avrxmega3/short-calls/libgcc/../../../../../gcc/libgcc/config/avr/lib1funcs.S:2107
 cba:	08 95       	ret

00000cbc <__tablejump2__>:
__tablejump2__():
/home/jenkins-mingw32/workspace/avr-gcc-staging/label/Ubuntu14.04x64-mingw32/gcc-build/avr/avrxmega3/short-calls/libgcc/../../../../../gcc/libgcc/config/avr/lib1funcs.S:2296
 cbc:	ee 0f       	add	r30, r30
/home/jenkins-mingw32/workspace/avr-gcc-staging/label/Ubuntu14.04x64-mingw32/gcc-build/avr/avrxmega3/short-calls/libgcc/../../../../../gcc/libgcc/config/avr/lib1funcs.S:2297
 cbe:	ff 1f       	adc	r31, r31
/home/jenkins-mingw32/workspace/avr-gcc-staging/label/Ubuntu14.04x64-mingw32/gcc-build/avr/avrxmega3/short-calls/libgcc/../../../../../gcc/libgcc/config/avr/lib1funcs.S:2328
 cc0:	05 90       	lpm	r0, Z+
/home/jenkins-mingw32/workspace/avr-gcc-staging/label/Ubuntu14.04x64-mingw32/gcc-build/avr/avrxmega3/short-calls/libgcc/../../../../../gcc/libgcc/config/avr/lib1funcs.S:2329
 cc2:	f4 91       	lpm	r31, Z
/home/jenkins-mingw32/workspace/avr-gcc-staging/label/Ubuntu14.04x64-mingw32/gcc-build/avr/avrxmega3/short-calls/libgcc/../../../../../gcc/libgcc/config/avr/lib1funcs.S:2330
 cc4:	e0 2d       	mov	r30, r0
/home/jenkins-mingw32/workspace/avr-gcc-staging/label/Ubuntu14.04x64-mingw32/gcc-build/avr/avrxmega3/short-calls/libgcc/../../../../../gcc/libgcc/config/avr/lib1funcs.S:2331
 cc6:	09 94       	ijmp

00000cc8 <__umulhisi3>:
__umulhisi3():
/home/jenkins-mingw32/workspace/avr-gcc-staging/label/Ubuntu14.04x64-mingw32/gcc-build/avr/avrxmega3/short-calls/libgcc/../../../../../gcc/libgcc/config/avr/lib1funcs.S:564
 cc8:	a2 9f       	mul	r26, r18
/home/jenkins-mingw32/workspace/avr-gcc-staging/label/Ubuntu14.04x64-mingw32/gcc-build/avr/avrxmega3/short-calls/libgcc/../../../../../gcc/libgcc/config/avr/lib1funcs.S:565
 cca:	b0 01       	movw	r22, r0
/home/jenkins-mingw32/workspace/avr-gcc-staging/label/Ubuntu14.04x64-mingw32/gcc-build/avr/avrxmega3/short-calls/libgcc/../../../../../gcc/libgcc/config/avr/lib1funcs.S:566
 ccc:	b3 9f       	mul	r27, r19
/home/jenkins-mingw32/workspace/avr-gcc-staging/label/Ubuntu14.04x64-mingw32/gcc-build/avr/avrxmega3/short-calls/libgcc/../../../../../gcc/libgcc/config/avr/lib1funcs.S:567
 cce:	c0 01       	movw	r24, r0
/home/jenkins-mingw32/workspace/avr-gcc-staging/label/Ubuntu14.04x64-mingw32/gcc-build/avr/avrxmega3/short-calls/libgcc/../../../../../gcc/libgcc/config/avr/lib1funcs.S:568
 cd0:	a3 9f       	mul	r26, r19
/home/jenkins-mingw32/workspace/avr-gcc-staging/label/Ubuntu14.04x64-mingw32/gcc-build/avr/avrxmega3/short-calls/libgcc/../../../../../gcc/libgcc/config/avr/lib1funcs.S:578
 cd2:	01 d0       	rcall	.+2      	; 0xcd6 <__umulhisi3+0xe>
/home/jenkins-mingw32/workspace/avr-gcc-staging/label/Ubuntu14.04x64-mingw32/gcc-build/avr/avrxmega3/short-calls/libgcc/../../../../../gcc/libgcc/config/avr/lib1funcs.S:580
 cd4:	b2 9f       	mul	r27, r18
/home/jenkins-mingw32/workspace/avr-gcc-staging/label/Ubuntu14.04x64-mingw32/gcc-build/avr/avrxmega3/short-calls/libgcc/../../../../../gcc/libgcc/config/avr/lib1funcs.S:581
 cd6:	70 0d       	add	r23, r0
/home/jenkins-mingw32/workspace/avr-gcc-staging/label/Ubuntu14.04x64-mingw32/gcc-build/avr/avrxmega3/short-calls/libgcc/../../../../../gcc/libgcc/config/avr/lib1funcs.S:582
 cd8:	81 1d       	adc	r24, r1
/home/jenkins-mingw32/workspace/avr-gcc-staging/label/Ubuntu14.04x64-mingw32/gcc-build/avr/avrxmega3/short-calls/libgcc/../../../../../gcc/libgcc/config/avr/lib1funcs.S:583
 cda:	11 24       	eor	r1, r1
/home/jenkins-mingw32/workspace/avr-gcc-staging/label/Ubuntu14.04x64-mingw32/gcc-build/avr/avrxmega3/short-calls/libgcc/../../../../../gcc/libgcc/config/avr/lib1funcs.S:584
 cdc:	91 1d       	adc	r25, r1
/home/jenkins-mingw32/workspace/avr-gcc-staging/label/Ubuntu14.04x64-mingw32/gcc-build/avr/avrxmega3/short-calls/libgcc/../../../../../gcc/libgcc/config/avr/lib1funcs.S:585
 cde:	08 95       	ret

00000ce0 <memcpy>:
memcpy():
 ce0:	fb 01       	movw	r30, r22
 ce2:	dc 01       	movw	r26, r24
 ce4:	02 c0       	rjmp	.+4      	; 0xcea <memcpy+0xa>
 ce6:	01 90       	ld	r0, Z+
 ce8:	0d 92       	st	X+, r0
 cea:	41 50       	subi	r20, 0x01	; 1
 cec:	50 40       	sbci	r21, 0x00	; 0
 cee:	d8 f7       	brcc	.-10     	; 0xce6 <memcpy+0x6>
 cf0:	08 95       	ret

00000cf2 <_exit>:
exit():
/home/jenkins-mingw32/workspace/avr-gcc-staging/label/Ubuntu14.04x64-mingw32/gcc-build/avr/avrxmega3/short-calls/libgcc/../../../../../gcc/libgcc/config/avr/lib1funcs.S:2278
 cf2:	f8 94       	cli

00000cf4 <__stop_program>:
__stop_program():
/home/jenkins-mingw32/workspace/avr-gcc-staging/label/Ubuntu14.04x64-mingw32/gcc-build/avr/avrxmega3/short-calls/libgcc/../../../../../gcc/libgcc/config/avr/lib1funcs.S:2280
 cf4:	ff cf       	rjmp	.-2      	; 0xcf4 <__stop_program>
