
C:\Users\Martin\AppData\Local\Temp\arduino_build_795292/UPSoftware.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:	02 c5       	rjmp	.+2564   	; 0xa6a <__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:	5d 05       	cpc	r21, r13

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:	e7 d7       	rcall	.+4046   	; 0x109a <__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:	04 d5       	rcall	.+2568   	; 0xadc <main>
../../../../../crt1/gcrt1.S:315
      d4:	fd c7       	rjmp	.+4090   	; 0x10d0 <_exit>

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

000000d8 <SPIClass::transfer(unsigned char) [clone .constprop.31]>:
_ZN8SPIClass8transferEh.constprop.31():
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.1.0\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.1.0\libraries\SPI\src/SPI.cpp:306

  SPI0.DATA = data;
      da:	80 93 c4 08 	sts	0x08C4, r24	; 0x8008c4 <MCP2515::RXB+0x7fb740>
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.1.0\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::RXB+0x7fb73f>
      e2:	87 ff       	sbrs	r24, 7
      e4:	fc cf       	rjmp	.-8      	; 0xde <SPIClass::transfer(unsigned char) [clone .constprop.31]+0x6>
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.1.0\libraries\SPI\src/SPI.cpp:308
  return SPI0.DATA;                             // read data back
      e6:	80 91 c4 08 	lds	r24, 0x08C4	; 0x8008c4 <MCP2515::RXB+0x7fb740>
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.1.0\libraries\SPI\src/SPI.cpp:309
}
      ea:	08 95       	ret

000000ec <pinMode.part.1>:
pinMode.part.1():
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.1.0\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)
      ec:	cf 93       	push	r28
      ee:	df 93       	push	r29
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.1.0\cores\coreX-corefiles/wiring_digital.c:31
{
  uint8_t bit_mask = digitalPinToBitMask(pin);
      f0:	90 e0       	ldi	r25, 0x00	; 0
      f2:	fc 01       	movw	r30, r24
      f4:	e5 5a       	subi	r30, 0xA5	; 165
      f6:	fe 4a       	sbci	r31, 0xAE	; 174
      f8:	20 81       	ld	r18, Z
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.1.0\cores\coreX-corefiles/wiring_digital.c:33

  if ((bit_mask == NOT_A_PIN) || (mode > INPUT_PULLUP))
      fa:	2f 3f       	cpi	r18, 0xFF	; 255
      fc:	61 f0       	breq	.+24     	; 0x116 <__EEPROM_REGION_LENGTH__+0x16>
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.1.0\cores\coreX-corefiles/wiring_digital.c:36
    return;

  PORT_t *port = digitalPinToPortStruct(pin);
      fe:	fc 01       	movw	r30, r24
     100:	ee 5c       	subi	r30, 0xCE	; 206
     102:	fe 4a       	sbci	r31, 0xAE	; 174
     104:	e0 81       	ld	r30, Z
     106:	30 e2       	ldi	r19, 0x20	; 32
     108:	e3 9f       	mul	r30, r19
     10a:	f0 01       	movw	r30, r0
     10c:	11 24       	eor	r1, r1
     10e:	fc 5f       	subi	r31, 0xFC	; 252
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.1.0\cores\coreX-corefiles/wiring_digital.c:40
  if (port == NULL)
    return;

  if (mode == OUTPUT)
     110:	61 30       	cpi	r22, 0x01	; 1
     112:	21 f4       	brne	.+8      	; 0x11c <__EEPROM_REGION_LENGTH__+0x1c>
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.1.0\cores\coreX-corefiles/wiring_digital.c:43
  {
    /* Configure direction as output */
    port->DIRSET = bit_mask;
     114:	21 83       	std	Z+1, r18	; 0x01
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.1.0\cores\coreX-corefiles/wiring_digital.c:75
    }

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

    uint8_t bit_pos = digitalPinToBitPosition(pin);
     11c:	87 5f       	subi	r24, 0xF7	; 247
     11e:	9e 4a       	sbci	r25, 0xAE	; 174
     120:	ec 01       	movw	r28, r24
     122:	a8 81       	ld	r26, Y
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.1.0\cores\coreX-corefiles/wiring_digital.c:50
    /* Calculate where pin control register is */
    volatile uint8_t *pin_ctrl_reg = getPINnCTRLregister(port, bit_pos);
     124:	af 3f       	cpi	r26, 0xFF	; 255
     126:	69 f0       	breq	.+26     	; 0x142 <__EEPROM_REGION_LENGTH__+0x42>
     128:	cf 01       	movw	r24, r30
     12a:	40 96       	adiw	r24, 0x10	; 16
     12c:	a8 0f       	add	r26, r24
     12e:	b9 2f       	mov	r27, r25
     130:	b1 1d       	adc	r27, r1
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.1.0\cores\coreX-corefiles/wiring_digital.c:53

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

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

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

    /* Restore state */
    SREG = status;
     13e:	9f bf       	out	0x3f, r25	; 63
     140:	ea cf       	rjmp	.-44     	; 0x116 <__EEPROM_REGION_LENGTH__+0x16>
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.1.0\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);
     142:	b0 e0       	ldi	r27, 0x00	; 0
     144:	a0 e0       	ldi	r26, 0x00	; 0
     146:	f5 cf       	rjmp	.-22     	; 0x132 <__EEPROM_REGION_LENGTH__+0x32>

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

void SPIClass::init()
{
  if (initialized)
     148:	80 91 47 3c 	lds	r24, 0x3C47	; 0x803c47 <SPI+0x5>
     14c:	81 11       	cpse	r24, r1
     14e:	17 c0       	rjmp	.+46     	; 0x17e <SPIClass::begin() [clone .constprop.8]+0x36>
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.1.0\libraries\SPI\src/SPI.cpp:133
    return;
  interruptMode = SPI_IMODE_NONE;
     150:	10 92 48 3c 	sts	0x3C48, r1	; 0x803c48 <SPI+0x6>
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.1.0\libraries\SPI\src/SPI.cpp:134
  interruptSave = 0;
     154:	10 92 49 3c 	sts	0x3C49, r1	; 0x803c49 <SPI+0x7>
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.1.0\libraries\SPI\src/SPI.cpp:135
  interruptMask_lo = 0;
     158:	10 92 4a 3c 	sts	0x3C4A, r1	; 0x803c4a <SPI+0x8>
     15c:	10 92 4b 3c 	sts	0x3C4B, r1	; 0x803c4b <SPI+0x9>
     160:	10 92 4c 3c 	sts	0x3C4C, r1	; 0x803c4c <SPI+0xa>
     164:	10 92 4d 3c 	sts	0x3C4D, r1	; 0x803c4d <SPI+0xb>
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.1.0\libraries\SPI\src/SPI.cpp:136
  interruptMask_hi = 0;
     168:	10 92 4e 3c 	sts	0x3C4E, r1	; 0x803c4e <SPI+0xc>
     16c:	10 92 4f 3c 	sts	0x3C4F, r1	; 0x803c4f <SPI+0xd>
     170:	10 92 50 3c 	sts	0x3C50, r1	; 0x803c50 <SPI+0xe>
     174:	10 92 51 3c 	sts	0x3C51, r1	; 0x803c51 <SPI+0xf>
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.1.0\libraries\SPI\src/SPI.cpp:137
  initialized = true;
     178:	81 e0       	ldi	r24, 0x01	; 1
     17a:	80 93 47 3c 	sts	0x3C47, r24	; 0x803c47 <SPI+0x5>
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.1.0\libraries\SPI\src/SPI.cpp:99

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

  PORTMUX.TWISPIROUTEA = _uc_mux | (PORTMUX.TWISPIROUTEA & ~3);
     17e:	80 91 e3 05 	lds	r24, 0x05E3	; 0x8005e3 <MCP2515::RXB+0x7fb45f>
     182:	8c 7f       	andi	r24, 0xFC	; 252
     184:	90 91 46 3c 	lds	r25, 0x3C46	; 0x803c46 <SPI+0x4>
     188:	89 2b       	or	r24, r25
     18a:	80 93 e3 05 	sts	0x05E3, r24	; 0x8005e3 <MCP2515::RXB+0x7fb45f>
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.1.0\libraries\SPI\src/SPI.cpp:102

  // MISO is set to input by the controller
  if(_uc_mux == SPI_MUX)
     18e:	91 11       	cpse	r25, r1
     190:	19 c0       	rjmp	.+50     	; 0x1c4 <SPIClass::begin() [clone .constprop.8]+0x7c>
pinMode():
     192:	61 e0       	ldi	r22, 0x01	; 1
     194:	84 e0       	ldi	r24, 0x04	; 4
     196:	aa df       	rcall	.-172    	; 0xec <pinMode.part.1>
     198:	61 e0       	ldi	r22, 0x01	; 1
     19a:	86 e0       	ldi	r24, 0x06	; 6
     19c:	a7 df       	rcall	.-178    	; 0xec <pinMode.part.1>
_ZN8SPIClass5beginEv.constprop.8():
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.1.0\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);
     19e:	80 91 c1 08 	lds	r24, 0x08C1	; 0x8008c1 <MCP2515::RXB+0x7fb73d>
     1a2:	84 60       	ori	r24, 0x04	; 4
     1a4:	80 93 c1 08 	sts	0x08C1, r24	; 0x8008c1 <MCP2515::RXB+0x7fb73d>
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.1.0\libraries\SPI\src/SPI.cpp:124
  SPI0.CTRLA |= (SPI_ENABLE_bm | SPI_MASTER_bm);
     1a8:	80 91 c0 08 	lds	r24, 0x08C0	; 0x8008c0 <MCP2515::RXB+0x7fb73c>
     1ac:	81 62       	ori	r24, 0x21	; 33
     1ae:	80 93 c0 08 	sts	0x08C0, r24	; 0x8008c0 <MCP2515::RXB+0x7fb73c>
     1b2:	90 91 40 3c 	lds	r25, 0x3C40	; 0x803c40 <DEFAULT_SPI_SETTINGS>
     1b6:	80 91 41 3c 	lds	r24, 0x3C41	; 0x803c41 <DEFAULT_SPI_SETTINGS+0x1>
config():
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.1.0\libraries\SPI\src/SPI.cpp:142
  initialized = true;
}

void SPIClass::config(SPISettings settings)
{
  SPI0.CTRLA = settings.ctrla;
     1ba:	90 93 c0 08 	sts	0x08C0, r25	; 0x8008c0 <MCP2515::RXB+0x7fb73c>
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.1.0\libraries\SPI\src/SPI.cpp:143
  SPI0.CTRLB = settings.ctrlb;
     1be:	80 93 c1 08 	sts	0x08C1, r24	; 0x8008c1 <MCP2515::RXB+0x7fb73d>
_ZN8SPIClass5beginEv.constprop.8():
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.1.0\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);
}
     1c2:	08 95       	ret
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.1.0\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)
     1c4:	91 30       	cpi	r25, 0x01	; 1
     1c6:	31 f4       	brne	.+12     	; 0x1d4 <SPIClass::begin() [clone .constprop.8]+0x8c>
pinMode():
     1c8:	61 e0       	ldi	r22, 0x01	; 1
     1ca:	8e e0       	ldi	r24, 0x0E	; 14
     1cc:	8f df       	rcall	.-226    	; 0xec <pinMode.part.1>
     1ce:	61 e0       	ldi	r22, 0x01	; 1
     1d0:	80 e1       	ldi	r24, 0x10	; 16
     1d2:	e4 cf       	rjmp	.-56     	; 0x19c <SPIClass::begin() [clone .constprop.8]+0x54>
_ZN8SPIClass5beginEv.constprop.8():
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.1.0\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)
     1d4:	92 30       	cpi	r25, 0x02	; 2
     1d6:	19 f7       	brne	.-58     	; 0x19e <SPIClass::begin() [clone .constprop.8]+0x56>
pinMode():
     1d8:	61 e0       	ldi	r22, 0x01	; 1
     1da:	8e e1       	ldi	r24, 0x1E	; 30
     1dc:	87 df       	rcall	.-242    	; 0xec <pinMode.part.1>
     1de:	61 e0       	ldi	r22, 0x01	; 1
     1e0:	80 e2       	ldi	r24, 0x20	; 32
     1e2:	dc cf       	rjmp	.-72     	; 0x19c <SPIClass::begin() [clone .constprop.8]+0x54>

000001e4 <turnOffPWM.part.0>:
turnOffPWM.part.0():
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.1.0\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);
     1e4:	90 e0       	ldi	r25, 0x00	; 0
     1e6:	fc 01       	movw	r30, r24
     1e8:	e0 52       	subi	r30, 0x20	; 32
     1ea:	ff 4a       	sbci	r31, 0xAF	; 175
     1ec:	e0 81       	ld	r30, Z
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.1.0\cores\coreX-corefiles/wiring_digital.c:98
  if (timer == NOT_ON_TIMER)
     1ee:	ee 23       	and	r30, r30
     1f0:	19 f1       	breq	.+70     	; 0x238 <turnOffPWM.part.0+0x54>
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.1.0\cores\coreX-corefiles/wiring_digital.c:104
    return;

  uint8_t bit_pos;
  TCB_t *timerB;

  switch (timer)
     1f2:	e1 30       	cpi	r30, 0x01	; 1
     1f4:	21 f0       	breq	.+8      	; 0x1fe <turnOffPWM.part.0+0x1a>
     1f6:	00 f1       	brcs	.+64     	; 0x238 <turnOffPWM.part.0+0x54>
     1f8:	e6 30       	cpi	r30, 0x06	; 6
     1fa:	a8 f0       	brcs	.+42     	; 0x226 <turnOffPWM.part.0+0x42>
     1fc:	08 95       	ret
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.1.0\cores\coreX-corefiles/wiring_digital.c:109
  {
    /* TCA0 */
    case TIMERA0:
      /* Bit position will give output channel */
      bit_pos = digitalPinToBitPosition(pin);
     1fe:	87 5f       	subi	r24, 0xF7	; 247
     200:	9e 4a       	sbci	r25, 0xAE	; 174
     202:	fc 01       	movw	r30, r24
     204:	20 81       	ld	r18, Z
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.1.0\cores\coreX-corefiles/wiring_digital.c:112

      /* Disable corresponding channel */
      if (bit_pos >= 3) ++bit_pos; /* Upper 3 bits are shifted by 1 */
     206:	23 30       	cpi	r18, 0x03	; 3
     208:	08 f0       	brcs	.+2      	; 0x20c <turnOffPWM.part.0+0x28>
     20a:	2f 5f       	subi	r18, 0xFF	; 255
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.1.0\cores\coreX-corefiles/wiring_digital.c:113
      TCA0.SPLIT.CTRLB &= ~(1 << (TCA_SPLIT_LCMP0EN_bp + bit_pos));
     20c:	30 91 01 0a 	lds	r19, 0x0A01	; 0x800a01 <MCP2515::RXB+0x7fb87d>
     210:	81 e0       	ldi	r24, 0x01	; 1
     212:	90 e0       	ldi	r25, 0x00	; 0
     214:	01 c0       	rjmp	.+2      	; 0x218 <turnOffPWM.part.0+0x34>
     216:	88 0f       	add	r24, r24
     218:	2a 95       	dec	r18
     21a:	ea f7       	brpl	.-6      	; 0x216 <turnOffPWM.part.0+0x32>
     21c:	80 95       	com	r24
     21e:	83 23       	and	r24, r19
     220:	80 93 01 0a 	sts	0x0A01, r24	; 0x800a01 <MCP2515::RXB+0x7fb87d>
     224:	08 95       	ret
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.1.0\cores\coreX-corefiles/wiring_digital.c:123
    case TIMERB0:
    case TIMERB1:
    case TIMERB2:
    case TIMERB3:

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

      /* Disable TCB compare channel */
      timerB->CTRLB &= ~(TCB_CCMPEN_bm);
     232:	81 81       	ldd	r24, Z+1	; 0x01
     234:	8f 7e       	andi	r24, 0xEF	; 239
     236:	81 83       	std	Z+1, r24	; 0x01
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.1.0\cores\coreX-corefiles/wiring_digital.c:132

      break;
    default:
      break;
  }
}
     238:	08 95       	ret

0000023a <digitalWrite.part.2>:
digitalWrite.part.2():
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.1.0\cores\coreX-corefiles/wiring_digital.c:134

void digitalWrite(uint8_t pin, uint8_t val)
     23a:	0f 93       	push	r16
     23c:	1f 93       	push	r17
     23e:	cf 93       	push	r28
     240:	df 93       	push	r29
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.1.0\cores\coreX-corefiles/wiring_digital.c:137
{
  /* Get bit mask for pin */
  uint8_t bit_mask = digitalPinToBitMask(pin);
     242:	c8 2f       	mov	r28, r24
     244:	d0 e0       	ldi	r29, 0x00	; 0
     246:	fe 01       	movw	r30, r28
     248:	e5 5a       	subi	r30, 0xA5	; 165
     24a:	fe 4a       	sbci	r31, 0xAE	; 174
     24c:	00 81       	ld	r16, Z
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.1.0\cores\coreX-corefiles/wiring_digital.c:138
  if (bit_mask == NOT_A_PIN)
     24e:	0f 3f       	cpi	r16, 0xFF	; 255
     250:	99 f0       	breq	.+38     	; 0x278 <digitalWrite.part.2+0x3e>
     252:	16 2f       	mov	r17, r22
turnOffPWM():
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.1.0\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);
     254:	89 32       	cpi	r24, 0x29	; 41
     256:	08 f4       	brcc	.+2      	; 0x25a <digitalWrite.part.2+0x20>
     258:	c5 df       	rcall	.-118    	; 0x1e4 <turnOffPWM.part.0>
digitalWrite.part.2():
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.1.0\cores\coreX-corefiles/wiring_digital.c:150
  turnOffPWM(pin);

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

  /* Get port */
  PORT_t *port = digitalPinToPortStruct(pin);
     25a:	fe 01       	movw	r30, r28
     25c:	ee 5c       	subi	r30, 0xCE	; 206
     25e:	fe 4a       	sbci	r31, 0xAE	; 174
     260:	e0 81       	ld	r30, Z
     262:	80 e2       	ldi	r24, 0x20	; 32
     264:	e8 9f       	mul	r30, r24
     266:	f0 01       	movw	r30, r0
     268:	11 24       	eor	r1, r1
     26a:	fc 5f       	subi	r31, 0xFC	; 252
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.1.0\cores\coreX-corefiles/wiring_digital.c:153

  /* Output direction */
  if (port->DIR & bit_mask)
     26c:	80 81       	ld	r24, Z
     26e:	80 23       	and	r24, r16
     270:	51 f0       	breq	.+20     	; 0x286 <digitalWrite.part.2+0x4c>
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.1.0\cores\coreX-corefiles/wiring_digital.c:156
  {
    /* Set output to value */
    if (val == LOW)
     272:	11 11       	cpse	r17, r1
     274:	06 c0       	rjmp	.+12     	; 0x282 <digitalWrite.part.2+0x48>
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.1.0\cores\coreX-corefiles/wiring_digital.c:158
    { /* If LOW */
      port->OUTCLR = bit_mask;
     276:	06 83       	std	Z+6, r16	; 0x06
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.1.0\cores\coreX-corefiles/wiring_digital.c:203
    }

    /* Restore system status */
    SREG = status;
  }
}
     278:	df 91       	pop	r29
     27a:	cf 91       	pop	r28
     27c:	1f 91       	pop	r17
     27e:	0f 91       	pop	r16
     280:	08 95       	ret
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.1.0\cores\coreX-corefiles/wiring_digital.c:167
      port->OUTTGL = bit_mask;
      /* If HIGH OR  > TOGGLE  */
    }
    else
    {
      port->OUTSET = bit_mask;
     282:	05 83       	std	Z+5, r16	; 0x05
     284:	f9 cf       	rjmp	.-14     	; 0x278 <digitalWrite.part.2+0x3e>
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.1.0\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);
     286:	c7 5f       	subi	r28, 0xF7	; 247
     288:	de 4a       	sbci	r29, 0xAE	; 174
     28a:	88 81       	ld	r24, Y
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.1.0\cores\coreX-corefiles/wiring_digital.c:183

    /* Calculate where pin control register is */
    volatile uint8_t *pin_ctrl_reg = getPINnCTRLregister(port, bit_pos);
     28c:	30 97       	sbiw	r30, 0x00	; 0
     28e:	71 f0       	breq	.+28     	; 0x2ac <digitalWrite.part.2+0x72>
     290:	8f 3f       	cpi	r24, 0xFF	; 255
     292:	61 f0       	breq	.+24     	; 0x2ac <digitalWrite.part.2+0x72>
     294:	70 96       	adiw	r30, 0x10	; 16
     296:	e8 0f       	add	r30, r24
     298:	f1 1d       	adc	r31, r1
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.1.0\cores\coreX-corefiles/wiring_digital.c:186

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

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

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

    if (val == LOW)
     2a0:	11 11       	cpse	r17, r1
     2a2:	07 c0       	rjmp	.+14     	; 0x2b2 <digitalWrite.part.2+0x78>
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.1.0\cores\coreX-corefiles/wiring_digital.c:192
    {
      /* Disable pullup */
      *pin_ctrl_reg &= ~PORT_PULLUPEN_bm;
     2a4:	87 7f       	andi	r24, 0xF7	; 247
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.1.0\cores\coreX-corefiles/wiring_digital.c:197
    }
    else
    {
      /* Enable pull-up */
      *pin_ctrl_reg |= PORT_PULLUPEN_bm;
     2a6:	80 83       	st	Z, r24
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.1.0\cores\coreX-corefiles/wiring_digital.c:201
    }

    /* Restore system status */
    SREG = status;
     2a8:	9f bf       	out	0x3f, r25	; 63
     2aa:	e6 cf       	rjmp	.-52     	; 0x278 <digitalWrite.part.2+0x3e>
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.1.0\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);
     2ac:	f0 e0       	ldi	r31, 0x00	; 0
     2ae:	e0 e0       	ldi	r30, 0x00	; 0
     2b0:	f4 cf       	rjmp	.-24     	; 0x29a <digitalWrite.part.2+0x60>
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.1.0\cores\coreX-corefiles/wiring_digital.c:197
      *pin_ctrl_reg &= ~PORT_PULLUPEN_bm;
    }
    else
    {
      /* Enable pull-up */
      *pin_ctrl_reg |= PORT_PULLUPEN_bm;
     2b2:	88 60       	ori	r24, 0x08	; 8
     2b4:	f8 cf       	rjmp	.-16     	; 0x2a6 <digitalWrite.part.2+0x6c>

000002b6 <MCP2515::endSPI() [clone .constprop.32]>:
_ZN7MCP25156endSPIEv.constprop.32():
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() {
     2b6:	8f 92       	push	r8
     2b8:	9f 92       	push	r9
     2ba:	af 92       	push	r10
     2bc:	bf 92       	push	r11
     2be:	cf 92       	push	r12
     2c0:	df 92       	push	r13
     2c2:	ef 92       	push	r14
     2c4:	ff 92       	push	r15
     2c6:	0f 93       	push	r16
     2c8:	cf 93       	push	r28
     2ca:	df 93       	push	r29
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:30
    digitalWrite(SPICS, HIGH);
     2cc:	80 91 81 3c 	lds	r24, 0x3C81	; 0x803c81 <mcp2515>
digitalWrite():
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.1.0\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);
     2d0:	89 32       	cpi	r24, 0x29	; 41
     2d2:	10 f4       	brcc	.+4      	; 0x2d8 <MCP2515::endSPI() [clone .constprop.32]+0x22>
     2d4:	61 e0       	ldi	r22, 0x01	; 1
     2d6:	b1 df       	rcall	.-158    	; 0x23a <digitalWrite.part.2>
endTransaction():
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.1.0\libraries\SPI\src/SPI.cpp:265
  config(settings);
}

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

void SPIClass::reattachMaskedInterrupts() {
  uint64_t temp = interruptMask_lo;
     302:	80 90 4a 3c 	lds	r8, 0x3C4A	; 0x803c4a <SPI+0x8>
     306:	90 90 4b 3c 	lds	r9, 0x3C4B	; 0x803c4b <SPI+0x9>
     30a:	a0 90 4c 3c 	lds	r10, 0x3C4C	; 0x803c4c <SPI+0xa>
     30e:	b0 90 4d 3c 	lds	r11, 0x3C4D	; 0x803c4d <SPI+0xb>
     312:	c1 2c       	mov	r12, r1
     314:	d1 2c       	mov	r13, r1
     316:	76 01       	movw	r14, r12
_ZN7MCP25156endSPIEv.constprop.32():
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.1.0\libraries\SPI\src/SPI.cpp:226
  uint8_t shift = 0;
     318:	e0 e0       	ldi	r30, 0x00	; 0
reattachMaskedInterrupts():
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.1.0\libraries\SPI\src/SPI.cpp:227
  while (temp != 0) {
     31a:	94 01       	movw	r18, r8
     31c:	a5 01       	movw	r20, r10
     31e:	b6 01       	movw	r22, r12
     320:	c7 01       	movw	r24, r14
     322:	a0 e0       	ldi	r26, 0x00	; 0
     324:	ae d6       	rcall	.+3420   	; 0x1082 <__cmpdi2_s8>
     326:	81 f1       	breq	.+96     	; 0x388 <MCP2515::endSPI() [clone .constprop.32]+0xd2>
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.1.0\libraries\SPI\src/SPI.cpp:228
    if (temp & 1) {
     328:	21 70       	andi	r18, 0x01	; 1
     32a:	30 e0       	ldi	r19, 0x00	; 0
     32c:	40 e0       	ldi	r20, 0x00	; 0
     32e:	50 e0       	ldi	r21, 0x00	; 0
     330:	60 e0       	ldi	r22, 0x00	; 0
     332:	70 e0       	ldi	r23, 0x00	; 0
     334:	80 e0       	ldi	r24, 0x00	; 0
     336:	90 e0       	ldi	r25, 0x00	; 0
     338:	a4 d6       	rcall	.+3400   	; 0x1082 <__cmpdi2_s8>
     33a:	d1 f0       	breq	.+52     	; 0x370 <MCP2515::endSPI() [clone .constprop.32]+0xba>
_ZN7MCP25156endSPIEv.constprop.32():
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.1.0\libraries\SPI\src/SPI.cpp:229
      volatile uint8_t* pin_ctrl_reg = getPINnCTRLregister(portToPortStruct(shift/8), shift%8);
     33c:	b0 e0       	ldi	r27, 0x00	; 0
     33e:	a0 e0       	ldi	r26, 0x00	; 0
reattachMaskedInterrupts():
     340:	e0 33       	cpi	r30, 0x30	; 48
     342:	70 f4       	brcc	.+28     	; 0x360 <MCP2515::endSPI() [clone .constprop.32]+0xaa>
     344:	ae 2f       	mov	r26, r30
     346:	a6 95       	lsr	r26
     348:	a6 95       	lsr	r26
     34a:	a6 95       	lsr	r26
     34c:	80 e2       	ldi	r24, 0x20	; 32
     34e:	a8 9f       	mul	r26, r24
     350:	d0 01       	movw	r26, r0
     352:	11 24       	eor	r1, r1
     354:	a0 5f       	subi	r26, 0xF0	; 240
     356:	bb 4f       	sbci	r27, 0xFB	; 251
     358:	8e 2f       	mov	r24, r30
     35a:	87 70       	andi	r24, 0x07	; 7
     35c:	a8 0f       	add	r26, r24
     35e:	b1 1d       	adc	r27, r1
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.1.0\libraries\SPI\src/SPI.cpp:230
      *pin_ctrl_reg |= irqMap[shift];
     360:	ce 2f       	mov	r28, r30
     362:	d0 e0       	ldi	r29, 0x00	; 0
     364:	ce 5b       	subi	r28, 0xBE	; 190
     366:	d3 4c       	sbci	r29, 0xC3	; 195
     368:	88 89       	ldd	r24, Y+16	; 0x10
     36a:	9c 91       	ld	r25, X
     36c:	89 2b       	or	r24, r25
     36e:	8c 93       	st	X, r24
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.1.0\libraries\SPI\src/SPI.cpp:232
    }
    temp = temp >> 1;
     370:	94 01       	movw	r18, r8
     372:	a5 01       	movw	r20, r10
     374:	b6 01       	movw	r22, r12
     376:	c7 01       	movw	r24, r14
     378:	01 e0       	ldi	r16, 0x01	; 1
     37a:	68 d6       	rcall	.+3280   	; 0x104c <__lshrdi3>
     37c:	49 01       	movw	r8, r18
     37e:	5a 01       	movw	r10, r20
     380:	6b 01       	movw	r12, r22
     382:	7c 01       	movw	r14, r24
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.1.0\libraries\SPI\src/SPI.cpp:233
    shift++;
     384:	ef 5f       	subi	r30, 0xFF	; 255
     386:	c9 cf       	rjmp	.-110    	; 0x31a <MCP2515::endSPI() [clone .constprop.32]+0x64>
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.1.0\libraries\SPI\src/SPI.cpp:235
  }
  temp = interruptMask_hi;
     388:	80 90 4e 3c 	lds	r8, 0x3C4E	; 0x803c4e <SPI+0xc>
     38c:	90 90 4f 3c 	lds	r9, 0x3C4F	; 0x803c4f <SPI+0xd>
     390:	a0 90 50 3c 	lds	r10, 0x3C50	; 0x803c50 <SPI+0xe>
     394:	b0 90 51 3c 	lds	r11, 0x3C51	; 0x803c51 <SPI+0xf>
     398:	c1 2c       	mov	r12, r1
     39a:	d1 2c       	mov	r13, r1
     39c:	76 01       	movw	r14, r12
_ZN7MCP25156endSPIEv.constprop.32():
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.1.0\libraries\SPI\src/SPI.cpp:236
  shift = 32;
     39e:	e0 e2       	ldi	r30, 0x20	; 32
reattachMaskedInterrupts():
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.1.0\libraries\SPI\src/SPI.cpp:237
  while (temp != 0) {
     3a0:	94 01       	movw	r18, r8
     3a2:	a5 01       	movw	r20, r10
     3a4:	b6 01       	movw	r22, r12
     3a6:	c7 01       	movw	r24, r14
     3a8:	a0 e0       	ldi	r26, 0x00	; 0
     3aa:	6b d6       	rcall	.+3286   	; 0x1082 <__cmpdi2_s8>
     3ac:	09 f4       	brne	.+2      	; 0x3b0 <MCP2515::endSPI() [clone .constprop.32]+0xfa>
     3ae:	9b cf       	rjmp	.-202    	; 0x2e6 <MCP2515::endSPI() [clone .constprop.32]+0x30>
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.1.0\libraries\SPI\src/SPI.cpp:238
    if (temp & 1) {
     3b0:	21 70       	andi	r18, 0x01	; 1
     3b2:	30 e0       	ldi	r19, 0x00	; 0
     3b4:	40 e0       	ldi	r20, 0x00	; 0
     3b6:	50 e0       	ldi	r21, 0x00	; 0
     3b8:	60 e0       	ldi	r22, 0x00	; 0
     3ba:	70 e0       	ldi	r23, 0x00	; 0
     3bc:	80 e0       	ldi	r24, 0x00	; 0
     3be:	90 e0       	ldi	r25, 0x00	; 0
     3c0:	60 d6       	rcall	.+3264   	; 0x1082 <__cmpdi2_s8>
     3c2:	d1 f0       	breq	.+52     	; 0x3f8 <MCP2515::endSPI() [clone .constprop.32]+0x142>
_ZN7MCP25156endSPIEv.constprop.32():
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.1.0\libraries\SPI\src/SPI.cpp:239
      volatile uint8_t* pin_ctrl_reg = getPINnCTRLregister(portToPortStruct(shift/8), shift%8);
     3c4:	b0 e0       	ldi	r27, 0x00	; 0
     3c6:	a0 e0       	ldi	r26, 0x00	; 0
reattachMaskedInterrupts():
     3c8:	e0 33       	cpi	r30, 0x30	; 48
     3ca:	70 f4       	brcc	.+28     	; 0x3e8 <MCP2515::endSPI() [clone .constprop.32]+0x132>
     3cc:	ae 2f       	mov	r26, r30
     3ce:	a6 95       	lsr	r26
     3d0:	a6 95       	lsr	r26
     3d2:	a6 95       	lsr	r26
     3d4:	80 e2       	ldi	r24, 0x20	; 32
     3d6:	a8 9f       	mul	r26, r24
     3d8:	d0 01       	movw	r26, r0
     3da:	11 24       	eor	r1, r1
     3dc:	a0 5f       	subi	r26, 0xF0	; 240
     3de:	bb 4f       	sbci	r27, 0xFB	; 251
     3e0:	8e 2f       	mov	r24, r30
     3e2:	87 70       	andi	r24, 0x07	; 7
     3e4:	a8 0f       	add	r26, r24
     3e6:	b1 1d       	adc	r27, r1
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.1.0\libraries\SPI\src/SPI.cpp:240
      *pin_ctrl_reg |= irqMap[shift];
     3e8:	ce 2f       	mov	r28, r30
     3ea:	d0 e0       	ldi	r29, 0x00	; 0
     3ec:	ce 5b       	subi	r28, 0xBE	; 190
     3ee:	d3 4c       	sbci	r29, 0xC3	; 195
     3f0:	88 89       	ldd	r24, Y+16	; 0x10
     3f2:	9c 91       	ld	r25, X
     3f4:	89 2b       	or	r24, r25
     3f6:	8c 93       	st	X, r24
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.1.0\libraries\SPI\src/SPI.cpp:242
    }
    temp = temp >> 1;
     3f8:	94 01       	movw	r18, r8
     3fa:	a5 01       	movw	r20, r10
     3fc:	b6 01       	movw	r22, r12
     3fe:	c7 01       	movw	r24, r14
     400:	01 e0       	ldi	r16, 0x01	; 1
     402:	24 d6       	rcall	.+3144   	; 0x104c <__lshrdi3>
     404:	49 01       	movw	r8, r18
     406:	5a 01       	movw	r10, r20
     408:	6b 01       	movw	r12, r22
     40a:	7c 01       	movw	r14, r24
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.1.0\libraries\SPI\src/SPI.cpp:243
    shift++;
     40c:	ef 5f       	subi	r30, 0xFF	; 255
     40e:	c8 cf       	rjmp	.-112    	; 0x3a0 <MCP2515::endSPI() [clone .constprop.32]+0xea>

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

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

  /* Get current number of millis (i.e. overflows) and timer count */
  m = timer_millis;
     414:	20 91 2b 3c 	lds	r18, 0x3C2B	; 0x803c2b <timer_millis>
     418:	30 91 2c 3c 	lds	r19, 0x3C2C	; 0x803c2c <timer_millis+0x1>
     41c:	40 91 2d 3c 	lds	r20, 0x3C2D	; 0x803c2d <timer_millis+0x2>
     420:	50 91 2e 3c 	lds	r21, 0x3C2E	; 0x803c2e <timer_millis+0x3>
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.1.0\cores\coreX-corefiles/wiring.c:108
  t = _timer->CNT;
     424:	e0 91 aa 0a 	lds	r30, 0x0AAA	; 0x800aaa <MCP2515::RXB+0x7fb926>
     428:	f0 91 ab 0a 	lds	r31, 0x0AAB	; 0x800aab <MCP2515::RXB+0x7fb927>
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.1.0\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)
     42c:	90 91 a6 0a 	lds	r25, 0x0AA6	; 0x800aa6 <MCP2515::RXB+0x7fb922>
     430:	90 ff       	sbrs	r25, 0
     432:	08 c0       	rjmp	.+16     	; 0x444 <micros+0x34>
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.1.0\cores\coreX-corefiles/wiring.c:114
  {
    m++;
     434:	2f 5f       	subi	r18, 0xFF	; 255
     436:	3f 4f       	sbci	r19, 0xFF	; 255
     438:	4f 4f       	sbci	r20, 0xFF	; 255
     43a:	5f 4f       	sbci	r21, 0xFF	; 255
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.1.0\cores\coreX-corefiles/wiring.c:115
    t = _timer->CNT;
     43c:	e0 91 aa 0a 	lds	r30, 0x0AAA	; 0x800aaa <MCP2515::RXB+0x7fb926>
     440:	f0 91 ab 0a 	lds	r31, 0x0AAB	; 0x800aab <MCP2515::RXB+0x7fb927>
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.1.0\cores\coreX-corefiles/wiring.c:119
  }

  // Restore SREG
  SREG = status;
     444:	8f bf       	out	0x3f, r24	; 63
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.1.0\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);
     446:	a8 ee       	ldi	r26, 0xE8	; 232
     448:	b3 e0       	ldi	r27, 0x03	; 3
     44a:	f4 d5       	rcall	.+3048   	; 0x1034 <__muluhisi3>
     44c:	23 e0       	ldi	r18, 0x03	; 3
     44e:	f6 95       	lsr	r31
     450:	e7 95       	ror	r30
     452:	2a 95       	dec	r18
     454:	e1 f7       	brne	.-8      	; 0x44e <micros+0x3e>
     456:	6e 0f       	add	r22, r30
     458:	7f 1f       	adc	r23, r31
     45a:	81 1d       	adc	r24, r1
     45c:	91 1d       	adc	r25, r1
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.1.0\cores\coreX-corefiles/wiring.c:143
#elif (F_CPU == 1000000L)
  return m * 1000 + t;
#else
  return 0;
#endif
}
     45e:	08 95       	ret

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

void delay(unsigned long ms)
{
     460:	8f 92       	push	r8
     462:	9f 92       	push	r9
     464:	af 92       	push	r10
     466:	bf 92       	push	r11
     468:	cf 92       	push	r12
     46a:	df 92       	push	r13
     46c:	ef 92       	push	r14
     46e:	ff 92       	push	r15
     470:	4b 01       	movw	r8, r22
     472:	5c 01       	movw	r10, r24
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.1.0\cores\coreX-corefiles/wiring.c:147
  uint32_t start_time = micros(), delay_time = 1000 * ms;
     474:	cd df       	rcall	.-102    	; 0x410 <micros>
     476:	6b 01       	movw	r12, r22
     478:	7c 01       	movw	r14, r24
     47a:	a8 ee       	ldi	r26, 0xE8	; 232
     47c:	b3 e0       	ldi	r27, 0x03	; 3
     47e:	a5 01       	movw	r20, r10
     480:	94 01       	movw	r18, r8
     482:	d8 d5       	rcall	.+2992   	; 0x1034 <__muluhisi3>
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.1.0\cores\coreX-corefiles/wiring.c:150

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

  /* If return time overflows */
  if (return_time < delay_time)
     48c:	c6 16       	cp	r12, r22
     48e:	d7 06       	cpc	r13, r23
     490:	e8 06       	cpc	r14, r24
     492:	f9 06       	cpc	r15, r25
     494:	10 f4       	brcc	.+4      	; 0x49a <delay+0x3a>
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.1.0\cores\coreX-corefiles/wiring.c:156
  {
    /* Wait until micros overflows */
    while (micros() > return_time)
     496:	bc df       	rcall	.-136    	; 0x410 <micros>
     498:	f9 cf       	rjmp	.-14     	; 0x48c <delay+0x2c>
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.1.0\cores\coreX-corefiles/wiring.c:161
      ;
  }

  /* Wait until return time */
  while (micros() < return_time)
     49a:	ba df       	rcall	.-140    	; 0x410 <micros>
     49c:	6c 15       	cp	r22, r12
     49e:	7d 05       	cpc	r23, r13
     4a0:	8e 05       	cpc	r24, r14
     4a2:	9f 05       	cpc	r25, r15
     4a4:	d0 f3       	brcs	.-12     	; 0x49a <delay+0x3a>
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.1.0\cores\coreX-corefiles/wiring.c:163
    ;
}
     4a6:	ff 90       	pop	r15
     4a8:	ef 90       	pop	r14
     4aa:	df 90       	pop	r13
     4ac:	cf 90       	pop	r12
     4ae:	bf 90       	pop	r11
     4b0:	af 90       	pop	r10
     4b2:	9f 90       	pop	r9
     4b4:	8f 90       	pop	r8
     4b6:	08 95       	ret

000004b8 <ReadPin(PinState*)>:
_Z7ReadPinP8PinState():
C:\Users\Martin\Documents\MeyCad\Meycad\Software\UPSoftware/UPSoftware.ino:161
  _frame.data[3] = state;
  mcp2515.sendMessage(MCP2515::TXB1, &_frame);
}

bool ReadPin(PinState * state)
{
     4b8:	0f 93       	push	r16
     4ba:	1f 93       	push	r17
     4bc:	cf 93       	push	r28
C:\Users\Martin\Documents\MeyCad\Meycad\Software\UPSoftware/UPSoftware.ino:162
  if (state->pin_id == PIN_PD2)
     4be:	fc 01       	movw	r30, r24
     4c0:	80 81       	ld	r24, Z
     4c2:	91 81       	ldd	r25, Z+1	; 0x01
     4c4:	88 31       	cpi	r24, 0x18	; 24
     4c6:	91 05       	cpc	r25, r1
     4c8:	41 f4       	brne	.+16     	; 0x4da <ReadPin(PinState*)+0x22>
digitalReadFast():
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.1.0\cores\coreX-corefiles/wiring_digital.c:265

  // Old style port logic is a small integer 0 for PORTA, 1 for PORTB etc.
  vport = (VPORT_t *)(port * 4);

  // Read pin value from VPORTx.IN register
  return !!(vport->IN & mask);
     4ca:	8e b1       	in	r24, 0x0e	; 14
     4cc:	82 fb       	bst	r24, 2
     4ce:	88 27       	eor	r24, r24
     4d0:	80 f9       	bld	r24, 0
_Z7ReadPinP8PinState():
C:\Users\Martin\Documents\MeyCad\Meycad\Software\UPSoftware/UPSoftware.ino:180
    return digitalReadFast(PIN_PD4);
  else if (state->pin_id == PIN_PD3)
    return digitalReadFast(PIN_PD3);
  else
    return digitalRead(state->pin_id);
}
     4d2:	cf 91       	pop	r28
     4d4:	1f 91       	pop	r17
     4d6:	0f 91       	pop	r16
     4d8:	08 95       	ret
C:\Users\Martin\Documents\MeyCad\Meycad\Software\UPSoftware/UPSoftware.ino:164

bool ReadPin(PinState * state)
{
  if (state->pin_id == PIN_PD2)
    return digitalReadFast(PIN_PD2);
  else if (state->pin_id == PIN_PC7)
     4da:	85 31       	cpi	r24, 0x15	; 21
     4dc:	91 05       	cpc	r25, r1
     4de:	29 f4       	brne	.+10     	; 0x4ea <ReadPin(PinState*)+0x32>
digitalReadFast():
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.1.0\cores\coreX-corefiles/wiring_digital.c:265
     4e0:	8a b1       	in	r24, 0x0a	; 10
     4e2:	88 1f       	adc	r24, r24
     4e4:	88 27       	eor	r24, r24
     4e6:	88 1f       	adc	r24, r24
     4e8:	f4 cf       	rjmp	.-24     	; 0x4d2 <ReadPin(PinState*)+0x1a>
_Z7ReadPinP8PinState():
C:\Users\Martin\Documents\MeyCad\Meycad\Software\UPSoftware/UPSoftware.ino:166
    return digitalReadFast(PIN_PC7);
  else if (state->pin_id == PIN_PD1)
     4ea:	87 31       	cpi	r24, 0x17	; 23
     4ec:	91 05       	cpc	r25, r1
     4ee:	21 f4       	brne	.+8      	; 0x4f8 <ReadPin(PinState*)+0x40>
digitalReadFast():
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.1.0\cores\coreX-corefiles/wiring_digital.c:265
     4f0:	8e b1       	in	r24, 0x0e	; 14
     4f2:	86 95       	lsr	r24
     4f4:	81 70       	andi	r24, 0x01	; 1
     4f6:	ed cf       	rjmp	.-38     	; 0x4d2 <ReadPin(PinState*)+0x1a>
_Z7ReadPinP8PinState():
C:\Users\Martin\Documents\MeyCad\Meycad\Software\UPSoftware/UPSoftware.ino:168
    return digitalReadFast(PIN_PD1);
  else if (state->pin_id == PIN_PD0)
     4f8:	86 31       	cpi	r24, 0x16	; 22
     4fa:	91 05       	cpc	r25, r1
     4fc:	19 f4       	brne	.+6      	; 0x504 <ReadPin(PinState*)+0x4c>
digitalReadFast():
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.1.0\cores\coreX-corefiles/wiring_digital.c:265
     4fe:	8e b1       	in	r24, 0x0e	; 14
_Z7ReadPinP8PinState():
C:\Users\Martin\Documents\MeyCad\Meycad\Software\UPSoftware/UPSoftware.ino:179
  else if (state->pin_id == PIN_PD4)
    return digitalReadFast(PIN_PD4);
  else if (state->pin_id == PIN_PD3)
    return digitalReadFast(PIN_PD3);
  else
    return digitalRead(state->pin_id);
     500:	81 70       	andi	r24, 0x01	; 1
     502:	e7 cf       	rjmp	.-50     	; 0x4d2 <ReadPin(PinState*)+0x1a>
C:\Users\Martin\Documents\MeyCad\Meycad\Software\UPSoftware/UPSoftware.ino:170
    return digitalReadFast(PIN_PC7);
  else if (state->pin_id == PIN_PD1)
    return digitalReadFast(PIN_PD1);
  else if (state->pin_id == PIN_PD0)
    return digitalReadFast(PIN_PD0);
  else if (state->pin_id == PIN_PD6)
     504:	8c 31       	cpi	r24, 0x1C	; 28
     506:	91 05       	cpc	r25, r1
     508:	29 f4       	brne	.+10     	; 0x514 <ReadPin(PinState*)+0x5c>
digitalReadFast():
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.1.0\cores\coreX-corefiles/wiring_digital.c:265
     50a:	8e b1       	in	r24, 0x0e	; 14
     50c:	86 fb       	bst	r24, 6
     50e:	88 27       	eor	r24, r24
     510:	80 f9       	bld	r24, 0
     512:	df cf       	rjmp	.-66     	; 0x4d2 <ReadPin(PinState*)+0x1a>
_Z7ReadPinP8PinState():
C:\Users\Martin\Documents\MeyCad\Meycad\Software\UPSoftware/UPSoftware.ino:172
    return digitalReadFast(PIN_PD6);
  else if (state->pin_id == PIN_PD5)
     514:	8b 31       	cpi	r24, 0x1B	; 27
     516:	91 05       	cpc	r25, r1
     518:	29 f4       	brne	.+10     	; 0x524 <ReadPin(PinState*)+0x6c>
digitalReadFast():
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.1.0\cores\coreX-corefiles/wiring_digital.c:265
     51a:	8e b1       	in	r24, 0x0e	; 14
     51c:	85 fb       	bst	r24, 5
     51e:	88 27       	eor	r24, r24
     520:	80 f9       	bld	r24, 0
     522:	d7 cf       	rjmp	.-82     	; 0x4d2 <ReadPin(PinState*)+0x1a>
_Z7ReadPinP8PinState():
C:\Users\Martin\Documents\MeyCad\Meycad\Software\UPSoftware/UPSoftware.ino:174
    return digitalReadFast(PIN_PD5);
  else if (state->pin_id == PIN_PD4)
     524:	8a 31       	cpi	r24, 0x1A	; 26
     526:	91 05       	cpc	r25, r1
     528:	21 f4       	brne	.+8      	; 0x532 <ReadPin(PinState*)+0x7a>
digitalReadFast():
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.1.0\cores\coreX-corefiles/wiring_digital.c:265
     52a:	8e b1       	in	r24, 0x0e	; 14
     52c:	82 95       	swap	r24
     52e:	81 70       	andi	r24, 0x01	; 1
     530:	d0 cf       	rjmp	.-96     	; 0x4d2 <ReadPin(PinState*)+0x1a>
_Z7ReadPinP8PinState():
C:\Users\Martin\Documents\MeyCad\Meycad\Software\UPSoftware/UPSoftware.ino:176
    return digitalReadFast(PIN_PD4);
  else if (state->pin_id == PIN_PD3)
     532:	89 31       	cpi	r24, 0x19	; 25
     534:	91 05       	cpc	r25, r1
     536:	29 f4       	brne	.+10     	; 0x542 <ReadPin(PinState*)+0x8a>
digitalReadFast():
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.1.0\cores\coreX-corefiles/wiring_digital.c:265
     538:	8e b1       	in	r24, 0x0e	; 14
     53a:	83 fb       	bst	r24, 3
     53c:	88 27       	eor	r24, r24
     53e:	80 f9       	bld	r24, 0
     540:	c8 cf       	rjmp	.-112    	; 0x4d2 <ReadPin(PinState*)+0x1a>
digitalRead():
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.1.0\cores\coreX-corefiles/wiring_digital.c:230
}

uint8_t digitalRead(uint8_t pin)
{
  /* Get bit mask and check valid pin */
  uint8_t bit_mask = digitalPinToBitMask(pin);
     542:	89 32       	cpi	r24, 0x29	; 41
     544:	b0 f4       	brcc	.+44     	; 0x572 <ReadPin(PinState*)+0xba>
     546:	8c 01       	movw	r16, r24
     548:	11 27       	eor	r17, r17
     54a:	f8 01       	movw	r30, r16
     54c:	e5 5a       	subi	r30, 0xA5	; 165
     54e:	fe 4a       	sbci	r31, 0xAE	; 174
     550:	c0 81       	ld	r28, Z
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.1.0\cores\coreX-corefiles/wiring_digital.c:231
  if (bit_mask == NOT_A_PIN)
     552:	cf 3f       	cpi	r28, 0xFF	; 255
     554:	71 f0       	breq	.+28     	; 0x572 <ReadPin(PinState*)+0xba>
turnOffPWM():
     556:	46 de       	rcall	.-884    	; 0x1e4 <turnOffPWM.part.0>
digitalRead():
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.1.0\cores\coreX-corefiles/wiring_digital.c:239
  // If the pin that support PWM output, we need to turn it off
  // before getting a digital reading.
  turnOffPWM(pin);

  /* Get port and check valid port */
  PORT_t *port = digitalPinToPortStruct(pin);
     558:	f8 01       	movw	r30, r16
     55a:	ee 5c       	subi	r30, 0xCE	; 206
     55c:	fe 4a       	sbci	r31, 0xAE	; 174
     55e:	e0 81       	ld	r30, Z
     560:	80 e2       	ldi	r24, 0x20	; 32
     562:	e8 9f       	mul	r30, r24
     564:	f0 01       	movw	r30, r0
     566:	11 24       	eor	r1, r1
     568:	fc 5f       	subi	r31, 0xFC	; 252
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.1.0\cores\coreX-corefiles/wiring_digital.c:242

  /* Read pin value from PORTx.IN register */
  if (port->IN & bit_mask)
     56a:	80 85       	ldd	r24, Z+8	; 0x08
     56c:	c8 23       	and	r28, r24
     56e:	81 e0       	ldi	r24, 0x01	; 1
     570:	39 f6       	brne	.-114    	; 0x500 <ReadPin(PinState*)+0x48>
_Z7ReadPinP8PinState():
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.1.0\cores\coreX-corefiles/wiring_digital.c:232
uint8_t digitalRead(uint8_t pin)
{
  /* Get bit mask and check valid pin */
  uint8_t bit_mask = digitalPinToBitMask(pin);
  if (bit_mask == NOT_A_PIN)
    return LOW;
     572:	80 e0       	ldi	r24, 0x00	; 0
     574:	c5 cf       	rjmp	.-118    	; 0x500 <ReadPin(PinState*)+0x48>

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

void MCP2515::startSPI() {
     576:	8f 92       	push	r8
     578:	9f 92       	push	r9
     57a:	af 92       	push	r10
     57c:	bf 92       	push	r11
     57e:	cf 92       	push	r12
     580:	df 92       	push	r13
     582:	ef 92       	push	r14
     584:	ff 92       	push	r15
     586:	0f 93       	push	r16
     588:	cf 93       	push	r28
     58a:	df 93       	push	r29
beginTransaction():
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.1.0\libraries\SPI\src/SPI.cpp:249
  }
}

void SPIClass::beginTransaction(SPISettings settings)
{
  if (interruptMode != SPI_IMODE_NONE)
     58c:	80 91 48 3c 	lds	r24, 0x3C48	; 0x803c48 <SPI+0x6>
     590:	88 23       	and	r24, r24
     592:	19 f0       	breq	.+6      	; 0x59a <MCP2515::startSPI() [clone .constprop.26]+0x24>
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.1.0\libraries\SPI\src/SPI.cpp:251
  {
    if (interruptMode & SPI_IMODE_GLOBAL)
     594:	81 ff       	sbrs	r24, 1
     596:	19 c0       	rjmp	.+50     	; 0x5ca <MCP2515::startSPI() [clone .constprop.26]+0x54>
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.1.0\libraries\SPI\src/SPI.cpp:253
    {
      noInterrupts();
     598:	f8 94       	cli
config():
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.1.0\libraries\SPI\src/SPI.cpp:142
  initialized = true;
}

void SPIClass::config(SPISettings settings)
{
  SPI0.CTRLA = settings.ctrla;
     59a:	81 e3       	ldi	r24, 0x31	; 49
     59c:	80 93 c0 08 	sts	0x08C0, r24	; 0x8008c0 <MCP2515::RXB+0x7fb73c>
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.1.0\libraries\SPI\src/SPI.cpp:143
  SPI0.CTRLB = settings.ctrlb;
     5a0:	84 e0       	ldi	r24, 0x04	; 4
     5a2:	80 93 c1 08 	sts	0x08C1, r24	; 0x8008c1 <MCP2515::RXB+0x7fb73d>
_ZN7MCP25158startSPIEv.constprop.26():
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:26
    SPI.beginTransaction(SPISettings(SPI_CLOCK, MSBFIRST, SPI_MODE0));
    digitalWrite(SPICS, LOW);
     5a6:	80 91 81 3c 	lds	r24, 0x3C81	; 0x803c81 <mcp2515>
digitalWrite():
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.1.0\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);
     5aa:	89 32       	cpi	r24, 0x29	; 41
     5ac:	08 f0       	brcs	.+2      	; 0x5b0 <MCP2515::startSPI() [clone .constprop.26]+0x3a>
     5ae:	98 c0       	rjmp	.+304    	; 0x6e0 <MCP2515::startSPI() [clone .constprop.26]+0x16a>
     5b0:	60 e0       	ldi	r22, 0x00	; 0
_ZN7MCP25158startSPIEv.constprop.26():
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:27
}
     5b2:	df 91       	pop	r29
     5b4:	cf 91       	pop	r28
     5b6:	0f 91       	pop	r16
     5b8:	ff 90       	pop	r15
     5ba:	ef 90       	pop	r14
     5bc:	df 90       	pop	r13
     5be:	cf 90       	pop	r12
     5c0:	bf 90       	pop	r11
     5c2:	af 90       	pop	r10
     5c4:	9f 90       	pop	r9
     5c6:	8f 90       	pop	r8
digitalWrite():
     5c8:	38 ce       	rjmp	.-912    	; 0x23a <digitalWrite.part.2>
beginTransaction():
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.1.0\libraries\SPI\src/SPI.cpp:255
  {
    if (interruptMode & SPI_IMODE_GLOBAL)
    {
      noInterrupts();
    }
    else if (interruptMode & SPI_IMODE_EXTINT)
     5ca:	80 ff       	sbrs	r24, 0
     5cc:	e6 cf       	rjmp	.-52     	; 0x59a <MCP2515::startSPI() [clone .constprop.26]+0x24>
detachMaskedInterrupts():
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.1.0\libraries\SPI\src/SPI.cpp:200
    #endif
  }
}

void SPIClass::detachMaskedInterrupts() {
  uint64_t temp = interruptMask_lo;
     5ce:	80 90 4a 3c 	lds	r8, 0x3C4A	; 0x803c4a <SPI+0x8>
     5d2:	90 90 4b 3c 	lds	r9, 0x3C4B	; 0x803c4b <SPI+0x9>
     5d6:	a0 90 4c 3c 	lds	r10, 0x3C4C	; 0x803c4c <SPI+0xa>
     5da:	b0 90 4d 3c 	lds	r11, 0x3C4D	; 0x803c4d <SPI+0xb>
     5de:	c1 2c       	mov	r12, r1
     5e0:	d1 2c       	mov	r13, r1
     5e2:	76 01       	movw	r14, r12
_ZN7MCP25158startSPIEv.constprop.26():
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.1.0\libraries\SPI\src/SPI.cpp:201
  uint8_t shift = 0;
     5e4:	e0 e0       	ldi	r30, 0x00	; 0
detachMaskedInterrupts():
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.1.0\libraries\SPI\src/SPI.cpp:202
  while (temp != 0) {
     5e6:	94 01       	movw	r18, r8
     5e8:	a5 01       	movw	r20, r10
     5ea:	b6 01       	movw	r22, r12
     5ec:	c7 01       	movw	r24, r14
     5ee:	a0 e0       	ldi	r26, 0x00	; 0
     5f0:	48 d5       	rcall	.+2704   	; 0x1082 <__cmpdi2_s8>
     5f2:	89 f1       	breq	.+98     	; 0x656 <MCP2515::startSPI() [clone .constprop.26]+0xe0>
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.1.0\libraries\SPI\src/SPI.cpp:203
    if (temp & 1) {
     5f4:	21 70       	andi	r18, 0x01	; 1
     5f6:	30 e0       	ldi	r19, 0x00	; 0
     5f8:	40 e0       	ldi	r20, 0x00	; 0
     5fa:	50 e0       	ldi	r21, 0x00	; 0
     5fc:	60 e0       	ldi	r22, 0x00	; 0
     5fe:	70 e0       	ldi	r23, 0x00	; 0
     600:	80 e0       	ldi	r24, 0x00	; 0
     602:	90 e0       	ldi	r25, 0x00	; 0
     604:	3e d5       	rcall	.+2684   	; 0x1082 <__cmpdi2_s8>
     606:	d9 f0       	breq	.+54     	; 0x63e <MCP2515::startSPI() [clone .constprop.26]+0xc8>
_ZN7MCP25158startSPIEv.constprop.26():
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.1.0\libraries\SPI\src/SPI.cpp:204
      volatile uint8_t* pin_ctrl_reg = getPINnCTRLregister(portToPortStruct(shift/8), shift%8);
     608:	b0 e0       	ldi	r27, 0x00	; 0
     60a:	a0 e0       	ldi	r26, 0x00	; 0
detachMaskedInterrupts():
     60c:	e0 33       	cpi	r30, 0x30	; 48
     60e:	70 f4       	brcc	.+28     	; 0x62c <MCP2515::startSPI() [clone .constprop.26]+0xb6>
     610:	ae 2f       	mov	r26, r30
     612:	a6 95       	lsr	r26
     614:	a6 95       	lsr	r26
     616:	a6 95       	lsr	r26
     618:	80 e2       	ldi	r24, 0x20	; 32
     61a:	a8 9f       	mul	r26, r24
     61c:	d0 01       	movw	r26, r0
     61e:	11 24       	eor	r1, r1
     620:	a0 5f       	subi	r26, 0xF0	; 240
     622:	bb 4f       	sbci	r27, 0xFB	; 251
     624:	8e 2f       	mov	r24, r30
     626:	87 70       	andi	r24, 0x07	; 7
     628:	a8 0f       	add	r26, r24
     62a:	b1 1d       	adc	r27, r1
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.1.0\libraries\SPI\src/SPI.cpp:205
      irqMap[shift] = *pin_ctrl_reg;
     62c:	ce 2f       	mov	r28, r30
     62e:	d0 e0       	ldi	r29, 0x00	; 0
     630:	8c 91       	ld	r24, X
     632:	ce 5b       	subi	r28, 0xBE	; 190
     634:	d3 4c       	sbci	r29, 0xC3	; 195
     636:	88 8b       	std	Y+16, r24	; 0x10
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.1.0\libraries\SPI\src/SPI.cpp:206
      *pin_ctrl_reg &= ~(PORT_ISC_gm);
     638:	8c 91       	ld	r24, X
     63a:	88 7f       	andi	r24, 0xF8	; 248
     63c:	8c 93       	st	X, r24
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.1.0\libraries\SPI\src/SPI.cpp:208
    }
    temp = temp >> 1;
     63e:	94 01       	movw	r18, r8
     640:	a5 01       	movw	r20, r10
     642:	b6 01       	movw	r22, r12
     644:	c7 01       	movw	r24, r14
     646:	01 e0       	ldi	r16, 0x01	; 1
     648:	01 d5       	rcall	.+2562   	; 0x104c <__lshrdi3>
     64a:	49 01       	movw	r8, r18
     64c:	5a 01       	movw	r10, r20
     64e:	6b 01       	movw	r12, r22
     650:	7c 01       	movw	r14, r24
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.1.0\libraries\SPI\src/SPI.cpp:209
    shift++;
     652:	ef 5f       	subi	r30, 0xFF	; 255
     654:	c8 cf       	rjmp	.-112    	; 0x5e6 <MCP2515::startSPI() [clone .constprop.26]+0x70>
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.1.0\libraries\SPI\src/SPI.cpp:211
  }
  temp = interruptMask_hi;
     656:	80 90 4e 3c 	lds	r8, 0x3C4E	; 0x803c4e <SPI+0xc>
     65a:	90 90 4f 3c 	lds	r9, 0x3C4F	; 0x803c4f <SPI+0xd>
     65e:	a0 90 50 3c 	lds	r10, 0x3C50	; 0x803c50 <SPI+0xe>
     662:	b0 90 51 3c 	lds	r11, 0x3C51	; 0x803c51 <SPI+0xf>
     666:	c1 2c       	mov	r12, r1
     668:	d1 2c       	mov	r13, r1
     66a:	76 01       	movw	r14, r12
_ZN7MCP25158startSPIEv.constprop.26():
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.1.0\libraries\SPI\src/SPI.cpp:212
  shift = 32;
     66c:	e0 e2       	ldi	r30, 0x20	; 32
detachMaskedInterrupts():
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.1.0\libraries\SPI\src/SPI.cpp:213
  while (temp != 0) {
     66e:	94 01       	movw	r18, r8
     670:	a5 01       	movw	r20, r10
     672:	b6 01       	movw	r22, r12
     674:	c7 01       	movw	r24, r14
     676:	a0 e0       	ldi	r26, 0x00	; 0
     678:	04 d5       	rcall	.+2568   	; 0x1082 <__cmpdi2_s8>
     67a:	09 f4       	brne	.+2      	; 0x67e <MCP2515::startSPI() [clone .constprop.26]+0x108>
     67c:	8e cf       	rjmp	.-228    	; 0x59a <MCP2515::startSPI() [clone .constprop.26]+0x24>
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.1.0\libraries\SPI\src/SPI.cpp:214
    if (temp & 1) {
     67e:	21 70       	andi	r18, 0x01	; 1
     680:	30 e0       	ldi	r19, 0x00	; 0
     682:	40 e0       	ldi	r20, 0x00	; 0
     684:	50 e0       	ldi	r21, 0x00	; 0
     686:	60 e0       	ldi	r22, 0x00	; 0
     688:	70 e0       	ldi	r23, 0x00	; 0
     68a:	80 e0       	ldi	r24, 0x00	; 0
     68c:	90 e0       	ldi	r25, 0x00	; 0
     68e:	f9 d4       	rcall	.+2546   	; 0x1082 <__cmpdi2_s8>
     690:	d9 f0       	breq	.+54     	; 0x6c8 <MCP2515::startSPI() [clone .constprop.26]+0x152>
_ZN7MCP25158startSPIEv.constprop.26():
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.1.0\libraries\SPI\src/SPI.cpp:215
      volatile uint8_t* pin_ctrl_reg = getPINnCTRLregister(portToPortStruct(shift/8), shift%8);
     692:	b0 e0       	ldi	r27, 0x00	; 0
     694:	a0 e0       	ldi	r26, 0x00	; 0
detachMaskedInterrupts():
     696:	e0 33       	cpi	r30, 0x30	; 48
     698:	70 f4       	brcc	.+28     	; 0x6b6 <MCP2515::startSPI() [clone .constprop.26]+0x140>
     69a:	ae 2f       	mov	r26, r30
     69c:	a6 95       	lsr	r26
     69e:	a6 95       	lsr	r26
     6a0:	a6 95       	lsr	r26
     6a2:	80 e2       	ldi	r24, 0x20	; 32
     6a4:	a8 9f       	mul	r26, r24
     6a6:	d0 01       	movw	r26, r0
     6a8:	11 24       	eor	r1, r1
     6aa:	a0 5f       	subi	r26, 0xF0	; 240
     6ac:	bb 4f       	sbci	r27, 0xFB	; 251
     6ae:	8e 2f       	mov	r24, r30
     6b0:	87 70       	andi	r24, 0x07	; 7
     6b2:	a8 0f       	add	r26, r24
     6b4:	b1 1d       	adc	r27, r1
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.1.0\libraries\SPI\src/SPI.cpp:216
      irqMap[shift] = *pin_ctrl_reg;
     6b6:	ce 2f       	mov	r28, r30
     6b8:	d0 e0       	ldi	r29, 0x00	; 0
     6ba:	8c 91       	ld	r24, X
     6bc:	ce 5b       	subi	r28, 0xBE	; 190
     6be:	d3 4c       	sbci	r29, 0xC3	; 195
     6c0:	88 8b       	std	Y+16, r24	; 0x10
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.1.0\libraries\SPI\src/SPI.cpp:217
      *pin_ctrl_reg &= ~(PORT_ISC_gm);
     6c2:	8c 91       	ld	r24, X
     6c4:	88 7f       	andi	r24, 0xF8	; 248
     6c6:	8c 93       	st	X, r24
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.1.0\libraries\SPI\src/SPI.cpp:219
    }
    temp = temp >> 1;
     6c8:	94 01       	movw	r18, r8
     6ca:	a5 01       	movw	r20, r10
     6cc:	b6 01       	movw	r22, r12
     6ce:	c7 01       	movw	r24, r14
     6d0:	01 e0       	ldi	r16, 0x01	; 1
     6d2:	bc d4       	rcall	.+2424   	; 0x104c <__lshrdi3>
     6d4:	49 01       	movw	r8, r18
     6d6:	5a 01       	movw	r10, r20
     6d8:	6b 01       	movw	r12, r22
     6da:	7c 01       	movw	r14, r24
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.1.0\libraries\SPI\src/SPI.cpp:220
    shift++;
     6dc:	ef 5f       	subi	r30, 0xFF	; 255
     6de:	c7 cf       	rjmp	.-114    	; 0x66e <MCP2515::startSPI() [clone .constprop.26]+0xf8>
_ZN7MCP25158startSPIEv.constprop.26():
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:27
     6e0:	df 91       	pop	r29
     6e2:	cf 91       	pop	r28
     6e4:	0f 91       	pop	r16
     6e6:	ff 90       	pop	r15
     6e8:	ef 90       	pop	r14
     6ea:	df 90       	pop	r13
     6ec:	cf 90       	pop	r12
     6ee:	bf 90       	pop	r11
     6f0:	af 90       	pop	r10
     6f2:	9f 90       	pop	r9
     6f4:	8f 90       	pop	r8
     6f6:	08 95       	ret

000006f8 <MCP2515::setRegisters(MCP2515::REGISTER, unsigned char const*, unsigned char) [clone .constprop.25]>:
_ZN7MCP251512setRegistersENS_8REGISTEREPKhh.constprop.25():
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)
     6f8:	ff 92       	push	r15
     6fa:	0f 93       	push	r16
     6fc:	1f 93       	push	r17
     6fe:	cf 93       	push	r28
     700:	df 93       	push	r29
     702:	c8 2f       	mov	r28, r24
     704:	f6 2e       	mov	r15, r22
     706:	17 2f       	mov	r17, r23
     708:	04 2f       	mov	r16, r20
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:119
{
    startSPI();
     70a:	35 df       	rcall	.-406    	; 0x576 <MCP2515::startSPI() [clone .constprop.26]>
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:120
    SPI.transfer(INSTRUCTION_WRITE);
     70c:	82 e0       	ldi	r24, 0x02	; 2
     70e:	e4 dc       	rcall	.-1592   	; 0xd8 <SPIClass::transfer(unsigned char) [clone .constprop.31]>
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:121
    SPI.transfer(reg);
     710:	8c 2f       	mov	r24, r28
     712:	e2 dc       	rcall	.-1596   	; 0xd8 <SPIClass::transfer(unsigned char) [clone .constprop.31]>
     714:	cf 2d       	mov	r28, r15
     716:	d1 2f       	mov	r29, r17
     718:	0c 0f       	add	r16, r28
     71a:	1d 2f       	mov	r17, r29
     71c:	11 1d       	adc	r17, r1
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:122
    for (uint8_t i=0; i<n; i++) {
     71e:	c0 17       	cp	r28, r16
     720:	d1 07       	cpc	r29, r17
     722:	19 f0       	breq	.+6      	; 0x72a <MCP2515::setRegisters(MCP2515::REGISTER, unsigned char const*, unsigned char) [clone .constprop.25]+0x32>
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:123
        SPI.transfer(values[i]);
     724:	89 91       	ld	r24, Y+
     726:	d8 dc       	rcall	.-1616   	; 0xd8 <SPIClass::transfer(unsigned char) [clone .constprop.31]>
     728:	fa cf       	rjmp	.-12     	; 0x71e <MCP2515::setRegisters(MCP2515::REGISTER, unsigned char const*, unsigned char) [clone .constprop.25]+0x26>
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:126
    }
    endSPI();
}
     72a:	df 91       	pop	r29
     72c:	cf 91       	pop	r28
     72e:	1f 91       	pop	r17
     730:	0f 91       	pop	r16
     732:	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();
     734:	c0 cd       	rjmp	.-1152   	; 0x2b6 <MCP2515::endSPI() [clone .constprop.32]>

00000736 <MCP2515::modifyRegister(MCP2515::REGISTER, unsigned char, unsigned char) [clone .constprop.24]>:
_ZN7MCP251514modifyRegisterENS_8REGISTEREhh.constprop.24():
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)
     736:	1f 93       	push	r17
     738:	cf 93       	push	r28
     73a:	df 93       	push	r29
     73c:	18 2f       	mov	r17, r24
     73e:	d6 2f       	mov	r29, r22
     740:	c4 2f       	mov	r28, r20
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:130
{
    startSPI();
     742:	19 df       	rcall	.-462    	; 0x576 <MCP2515::startSPI() [clone .constprop.26]>
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:131
    SPI.transfer(INSTRUCTION_BITMOD);
     744:	85 e0       	ldi	r24, 0x05	; 5
     746:	c8 dc       	rcall	.-1648   	; 0xd8 <SPIClass::transfer(unsigned char) [clone .constprop.31]>
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:132
    SPI.transfer(reg);
     748:	81 2f       	mov	r24, r17
     74a:	c6 dc       	rcall	.-1652   	; 0xd8 <SPIClass::transfer(unsigned char) [clone .constprop.31]>
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:133
    SPI.transfer(mask);
     74c:	8d 2f       	mov	r24, r29
     74e:	c4 dc       	rcall	.-1656   	; 0xd8 <SPIClass::transfer(unsigned char) [clone .constprop.31]>
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:134
    SPI.transfer(data);
     750:	8c 2f       	mov	r24, r28
     752:	c2 dc       	rcall	.-1660   	; 0xd8 <SPIClass::transfer(unsigned char) [clone .constprop.31]>
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:136
    endSPI();
}
     754:	df 91       	pop	r29
     756:	cf 91       	pop	r28
     758:	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();
     75a:	ad cd       	rjmp	.-1190   	; 0x2b6 <MCP2515::endSPI() [clone .constprop.32]>

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

    return ERROR_OK;
}

uint8_t MCP2515::readRegister(const REGISTER reg)
     75c:	cf 93       	push	r28
     75e:	c8 2f       	mov	r28, r24
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:87
{
    startSPI();
     760:	0a df       	rcall	.-492    	; 0x576 <MCP2515::startSPI() [clone .constprop.26]>
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:88
    SPI.transfer(INSTRUCTION_READ);
     762:	83 e0       	ldi	r24, 0x03	; 3
     764:	b9 dc       	rcall	.-1678   	; 0xd8 <SPIClass::transfer(unsigned char) [clone .constprop.31]>
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:89
    SPI.transfer(reg);
     766:	8c 2f       	mov	r24, r28
     768:	b7 dc       	rcall	.-1682   	; 0xd8 <SPIClass::transfer(unsigned char) [clone .constprop.31]>
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:90
    uint8_t ret = SPI.transfer(0x00);
     76a:	80 e0       	ldi	r24, 0x00	; 0
     76c:	b5 dc       	rcall	.-1686   	; 0xd8 <SPIClass::transfer(unsigned char) [clone .constprop.31]>
     76e:	c8 2f       	mov	r28, r24
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:91
    endSPI();
     770:	a2 dd       	rcall	.-1212   	; 0x2b6 <MCP2515::endSPI() [clone .constprop.32]>
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:94

    return ret;
}
     772:	8c 2f       	mov	r24, r28
     774:	cf 91       	pop	r28
     776:	08 95       	ret

00000778 <MCP2515::setMode(MCP2515::CANCTRL_REQOP_MODE) [clone .constprop.20]>:
_ZN7MCP25157setModeENS_18CANCTRL_REQOP_MODEE.constprop.20():
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)
     778:	cf 92       	push	r12
     77a:	df 92       	push	r13
     77c:	ef 92       	push	r14
     77e:	ff 92       	push	r15
     780:	cf 93       	push	r28
     782:	c8 2f       	mov	r28, r24
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:175
{
    modifyRegister(MCP_CANCTRL, CANCTRL_REQOP, mode);
     784:	48 2f       	mov	r20, r24
     786:	60 ee       	ldi	r22, 0xE0	; 224
     788:	8f e0       	ldi	r24, 0x0F	; 15
     78a:	d5 df       	rcall	.-86     	; 0x736 <MCP2515::modifyRegister(MCP2515::REGISTER, unsigned char, unsigned char) [clone .constprop.24]>
millis():
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.1.0\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;
     78c:	8f b7       	in	r24, 0x3f	; 63
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.1.0\cores\coreX-corefiles/wiring.c:88
  cli();
     78e:	f8 94       	cli
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.1.0\cores\coreX-corefiles/wiring.c:90

  m = timer_millis;
     790:	c0 90 2b 3c 	lds	r12, 0x3C2B	; 0x803c2b <timer_millis>
     794:	d0 90 2c 3c 	lds	r13, 0x3C2C	; 0x803c2c <timer_millis+0x1>
     798:	e0 90 2d 3c 	lds	r14, 0x3C2D	; 0x803c2d <timer_millis+0x2>
     79c:	f0 90 2e 3c 	lds	r15, 0x3C2E	; 0x803c2e <timer_millis+0x3>
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.1.0\cores\coreX-corefiles/wiring.c:92

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

    unsigned long endTime = millis() + 10;
     7a2:	8a e0       	ldi	r24, 0x0A	; 10
     7a4:	c8 0e       	add	r12, r24
     7a6:	d1 1c       	adc	r13, r1
     7a8:	e1 1c       	adc	r14, r1
     7aa:	f1 1c       	adc	r15, r1
millis():
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.1.0\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;
     7ac:	2f b7       	in	r18, 0x3f	; 63
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.1.0\cores\coreX-corefiles/wiring.c:88
  cli();
     7ae:	f8 94       	cli
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.1.0\cores\coreX-corefiles/wiring.c:90

  m = timer_millis;
     7b0:	80 91 2b 3c 	lds	r24, 0x3C2B	; 0x803c2b <timer_millis>
     7b4:	90 91 2c 3c 	lds	r25, 0x3C2C	; 0x803c2c <timer_millis+0x1>
     7b8:	a0 91 2d 3c 	lds	r26, 0x3C2D	; 0x803c2d <timer_millis+0x2>
     7bc:	b0 91 2e 3c 	lds	r27, 0x3C2E	; 0x803c2e <timer_millis+0x3>
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.1.0\cores\coreX-corefiles/wiring.c:92

  SREG = status;
     7c0:	2f bf       	out	0x3f, r18	; 63
_ZN7MCP25157setModeENS_18CANCTRL_REQOP_MODEE.constprop.20():
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:179
    bool modeMatch = false;
    while (millis() < endTime) {
     7c2:	8c 15       	cp	r24, r12
     7c4:	9d 05       	cpc	r25, r13
     7c6:	ae 05       	cpc	r26, r14
     7c8:	bf 05       	cpc	r27, r15
     7ca:	78 f4       	brcc	.+30     	; 0x7ea <MCP2515::setMode(MCP2515::CANCTRL_REQOP_MODE) [clone .constprop.20]+0x72>
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:180
        uint8_t newmode = readRegister(MCP_CANSTAT);
     7cc:	8e e0       	ldi	r24, 0x0E	; 14
     7ce:	c6 df       	rcall	.-116    	; 0x75c <MCP2515::readRegister(MCP2515::REGISTER) [clone .constprop.23]>
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:181
        newmode &= CANSTAT_OPMOD;
     7d0:	80 7e       	andi	r24, 0xE0	; 224
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:185

        modeMatch = newmode == mode;

        if (modeMatch) {
     7d2:	c8 13       	cpse	r28, r24
     7d4:	eb cf       	rjmp	.-42     	; 0x7ac <MCP2515::setMode(MCP2515::CANCTRL_REQOP_MODE) [clone .constprop.20]+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;
     7d6:	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;
     7d8:	91 e0       	ldi	r25, 0x01	; 1
     7da:	89 27       	eor	r24, r25
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:192

}
     7dc:	90 e0       	ldi	r25, 0x00	; 0
     7de:	cf 91       	pop	r28
     7e0:	ff 90       	pop	r15
     7e2:	ef 90       	pop	r14
     7e4:	df 90       	pop	r13
     7e6:	cf 90       	pop	r12
     7e8:	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) {
     7ea:	80 e0       	ldi	r24, 0x00	; 0
     7ec:	f5 cf       	rjmp	.-22     	; 0x7d8 <MCP2515::setMode(MCP2515::CANCTRL_REQOP_MODE) [clone .constprop.20]+0x60>

000007ee <MCP2515::setRegister(MCP2515::REGISTER, unsigned char) [clone .constprop.18]>:
_ZN7MCP251511setRegisterENS_8REGISTEREh.constprop.18():
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)
     7ee:	cf 93       	push	r28
     7f0:	df 93       	push	r29
     7f2:	d8 2f       	mov	r29, r24
     7f4:	c6 2f       	mov	r28, r22
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:110
{
    startSPI();
     7f6:	bf de       	rcall	.-642    	; 0x576 <MCP2515::startSPI() [clone .constprop.26]>
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:111
    SPI.transfer(INSTRUCTION_WRITE);
     7f8:	82 e0       	ldi	r24, 0x02	; 2
     7fa:	6e dc       	rcall	.-1828   	; 0xd8 <SPIClass::transfer(unsigned char) [clone .constprop.31]>
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:112
    SPI.transfer(reg);
     7fc:	8d 2f       	mov	r24, r29
     7fe:	6c dc       	rcall	.-1832   	; 0xd8 <SPIClass::transfer(unsigned char) [clone .constprop.31]>
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:113
    SPI.transfer(value);
     800:	8c 2f       	mov	r24, r28
     802:	6a dc       	rcall	.-1836   	; 0xd8 <SPIClass::transfer(unsigned char) [clone .constprop.31]>
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:115
    endSPI();
}
     804:	df 91       	pop	r29
     806:	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();
     808:	56 cd       	rjmp	.-1364   	; 0x2b6 <MCP2515::endSPI() [clone .constprop.32]>

0000080a <MCP2515::readRegisters(MCP2515::REGISTER, unsigned char*, unsigned char) [clone .constprop.7]>:
_ZN7MCP251513readRegistersENS_8REGISTEREPhh.constprop.7():
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:96
    endSPI();

    return ret;
}

void MCP2515::readRegisters(const REGISTER reg, uint8_t values[], const uint8_t n)
     80a:	ff 92       	push	r15
     80c:	0f 93       	push	r16
     80e:	1f 93       	push	r17
     810:	cf 93       	push	r28
     812:	df 93       	push	r29
     814:	c8 2f       	mov	r28, r24
     816:	f6 2e       	mov	r15, r22
     818:	17 2f       	mov	r17, r23
     81a:	04 2f       	mov	r16, r20
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:98
{
    startSPI();
     81c:	ac de       	rcall	.-680    	; 0x576 <MCP2515::startSPI() [clone .constprop.26]>
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:99
    SPI.transfer(INSTRUCTION_READ);
     81e:	83 e0       	ldi	r24, 0x03	; 3
     820:	5b dc       	rcall	.-1866   	; 0xd8 <SPIClass::transfer(unsigned char) [clone .constprop.31]>
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:100
    SPI.transfer(reg);
     822:	8c 2f       	mov	r24, r28
     824:	59 dc       	rcall	.-1870   	; 0xd8 <SPIClass::transfer(unsigned char) [clone .constprop.31]>
     826:	cf 2d       	mov	r28, r15
     828:	d1 2f       	mov	r29, r17
     82a:	0c 0f       	add	r16, r28
     82c:	1d 2f       	mov	r17, r29
     82e:	11 1d       	adc	r17, r1
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:102
    // mcp2515 has auto-increment of address-pointer
    for (uint8_t i=0; i<n; i++) {
     830:	c0 17       	cp	r28, r16
     832:	d1 07       	cpc	r29, r17
     834:	21 f0       	breq	.+8      	; 0x83e <MCP2515::readRegisters(MCP2515::REGISTER, unsigned char*, unsigned char) [clone .constprop.7]+0x34>
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:103
        values[i] = SPI.transfer(0x00);
     836:	80 e0       	ldi	r24, 0x00	; 0
     838:	4f dc       	rcall	.-1890   	; 0xd8 <SPIClass::transfer(unsigned char) [clone .constprop.31]>
     83a:	89 93       	st	Y+, r24
     83c:	f9 cf       	rjmp	.-14     	; 0x830 <MCP2515::readRegisters(MCP2515::REGISTER, unsigned char*, unsigned char) [clone .constprop.7]+0x26>
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:106
    }
    endSPI();
}
     83e:	df 91       	pop	r29
     840:	cf 91       	pop	r28
     842:	1f 91       	pop	r17
     844:	0f 91       	pop	r16
     846:	ff 90       	pop	r15
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:105
    SPI.transfer(reg);
    // mcp2515 has auto-increment of address-pointer
    for (uint8_t i=0; i<n; i++) {
        values[i] = SPI.transfer(0x00);
    }
    endSPI();
     848:	36 cd       	rjmp	.-1428   	; 0x2b6 <MCP2515::endSPI() [clone .constprop.32]>

0000084a <MCP2515::readMessage(MCP2515::RXBn, can_frame*) [clone .constprop.6]>:
_ZN7MCP251511readMessageENS_4RXBnEP9can_frame.constprop.6():
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:629
    }

    return ERROR_ALLTXBUSY;
}

MCP2515::ERROR MCP2515::readMessage(const RXBn rxbn, struct can_frame *frame)
     84a:	bf 92       	push	r11
     84c:	cf 92       	push	r12
     84e:	df 92       	push	r13
     850:	ef 92       	push	r14
     852:	ff 92       	push	r15
     854:	0f 93       	push	r16
     856:	1f 93       	push	r17
     858:	cf 93       	push	r28
     85a:	df 93       	push	r29
     85c:	cd b7       	in	r28, 0x3d	; 61
     85e:	de b7       	in	r29, 0x3e	; 62
     860:	25 97       	sbiw	r28, 0x05	; 5
     862:	cd bf       	out	0x3d, r28	; 61
     864:	de bf       	out	0x3e, r29	; 62
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:635
{
    const struct RXBn_REGS *rxb = &RXB[rxbn];

    uint8_t tbufdata[5];

    readRegisters(rxb->SIDH, tbufdata, 5);
     866:	8c 01       	movw	r16, r24
     868:	00 0f       	add	r16, r16
     86a:	11 1f       	adc	r17, r17
     86c:	00 0f       	add	r16, r16
     86e:	11 1f       	adc	r17, r17
     870:	f8 01       	movw	r30, r16
     872:	ec 57       	subi	r30, 0x7C	; 124
     874:	fe 4a       	sbci	r31, 0xAE	; 174
     876:	45 e0       	ldi	r20, 0x05	; 5
     878:	be 01       	movw	r22, r28
     87a:	6f 5f       	subi	r22, 0xFF	; 255
     87c:	7f 4f       	sbci	r23, 0xFF	; 255
     87e:	81 81       	ldd	r24, Z+1	; 0x01
     880:	c4 df       	rcall	.-120    	; 0x80a <MCP2515::readRegisters(MCP2515::REGISTER, unsigned char*, unsigned char) [clone .constprop.7]>
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:637

    uint32_t id = (tbufdata[MCP_SIDH]<<3) + (tbufdata[MCP_SIDL]>>5);
     882:	8a 81       	ldd	r24, Y+2	; 0x02
     884:	c9 80       	ldd	r12, Y+1	; 0x01
     886:	98 e0       	ldi	r25, 0x08	; 8
     888:	c9 9e       	mul	r12, r25
     88a:	60 01       	movw	r12, r0
     88c:	11 24       	eor	r1, r1
     88e:	28 2f       	mov	r18, r24
     890:	30 e0       	ldi	r19, 0x00	; 0
     892:	55 e0       	ldi	r21, 0x05	; 5
     894:	35 95       	asr	r19
     896:	27 95       	ror	r18
     898:	5a 95       	dec	r21
     89a:	e1 f7       	brne	.-8      	; 0x894 <MCP2515::readMessage(MCP2515::RXBn, can_frame*) [clone .constprop.6]+0x4a>
     89c:	c2 0e       	add	r12, r18
     89e:	d3 1e       	adc	r13, r19
     8a0:	0d 2c       	mov	r0, r13
     8a2:	00 0c       	add	r0, r0
     8a4:	ee 08       	sbc	r14, r14
     8a6:	ff 08       	sbc	r15, r15
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:639

    if ( (tbufdata[MCP_SIDL] & TXB_EXIDE_MASK) ==  TXB_EXIDE_MASK ) {
     8a8:	83 ff       	sbrs	r24, 3
     8aa:	20 c0       	rjmp	.+64     	; 0x8ec <MCP2515::readMessage(MCP2515::RXBn, can_frame*) [clone .constprop.6]+0xa2>
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:640
        id = (id<<2) + (tbufdata[MCP_SIDL] & 0x03);
     8ac:	92 e0       	ldi	r25, 0x02	; 2
     8ae:	cc 0c       	add	r12, r12
     8b0:	dd 1c       	adc	r13, r13
     8b2:	ee 1c       	adc	r14, r14
     8b4:	ff 1c       	adc	r15, r15
     8b6:	9a 95       	dec	r25
     8b8:	d1 f7       	brne	.-12     	; 0x8ae <MCP2515::readMessage(MCP2515::RXBn, can_frame*) [clone .constprop.6]+0x64>
     8ba:	83 70       	andi	r24, 0x03	; 3
     8bc:	c8 0e       	add	r12, r24
     8be:	d1 1c       	adc	r13, r1
     8c0:	e1 1c       	adc	r14, r1
     8c2:	f1 1c       	adc	r15, r1
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:641
        id = (id<<8) + tbufdata[MCP_EID8];
     8c4:	fe 2c       	mov	r15, r14
     8c6:	ed 2c       	mov	r14, r13
     8c8:	dc 2c       	mov	r13, r12
     8ca:	cc 24       	eor	r12, r12
     8cc:	8b 81       	ldd	r24, Y+3	; 0x03
     8ce:	c8 0e       	add	r12, r24
     8d0:	d1 1c       	adc	r13, r1
     8d2:	e1 1c       	adc	r14, r1
     8d4:	f1 1c       	adc	r15, r1
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:642
        id = (id<<8) + tbufdata[MCP_EID0];
     8d6:	fe 2c       	mov	r15, r14
     8d8:	ed 2c       	mov	r14, r13
     8da:	dc 2c       	mov	r13, r12
     8dc:	cc 24       	eor	r12, r12
     8de:	8c 81       	ldd	r24, Y+4	; 0x04
     8e0:	c8 0e       	add	r12, r24
     8e2:	d1 1c       	adc	r13, r1
     8e4:	e1 1c       	adc	r14, r1
     8e6:	f1 1c       	adc	r15, r1
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:643
        id |= CAN_EFF_FLAG;
     8e8:	68 94       	set
     8ea:	f7 f8       	bld	r15, 7
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:646
    }

    uint8_t dlc = (tbufdata[MCP_DLC] & DLC_MASK);
     8ec:	8d 81       	ldd	r24, Y+5	; 0x05
     8ee:	8f 70       	andi	r24, 0x0F	; 15
     8f0:	b8 2e       	mov	r11, r24
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:647
    if (dlc > CAN_MAX_DLEN) {
     8f2:	e8 e0       	ldi	r30, 0x08	; 8
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:648
        return ERROR_FAIL;
     8f4:	81 e0       	ldi	r24, 0x01	; 1
     8f6:	90 e0       	ldi	r25, 0x00	; 0
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:647
        id = (id<<8) + tbufdata[MCP_EID0];
        id |= CAN_EFF_FLAG;
    }

    uint8_t dlc = (tbufdata[MCP_DLC] & DLC_MASK);
    if (dlc > CAN_MAX_DLEN) {
     8f8:	eb 15       	cp	r30, r11
     8fa:	10 f1       	brcs	.+68     	; 0x940 <MCP2515::readMessage(MCP2515::RXBn, can_frame*) [clone .constprop.6]+0xf6>
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:651
        return ERROR_FAIL;
    }

    uint8_t ctrl = readRegister(rxb->CTRL);
     8fc:	f8 01       	movw	r30, r16
     8fe:	ec 57       	subi	r30, 0x7C	; 124
     900:	fe 4a       	sbci	r31, 0xAE	; 174
     902:	80 81       	ld	r24, Z
     904:	2b df       	rcall	.-426    	; 0x75c <MCP2515::readRegister(MCP2515::REGISTER) [clone .constprop.23]>
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:652
    if (ctrl & RXBnCTRL_RTR) {
     906:	83 ff       	sbrs	r24, 3
     908:	02 c0       	rjmp	.+4      	; 0x90e <MCP2515::readMessage(MCP2515::RXBn, can_frame*) [clone .constprop.6]+0xc4>
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:653
        id |= CAN_RTR_FLAG;
     90a:	68 94       	set
     90c:	f6 f8       	bld	r15, 6
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:656
    }

    frame->can_id = id;
     90e:	c0 92 30 3c 	sts	0x3C30, r12	; 0x803c30 <_frame>
     912:	d0 92 31 3c 	sts	0x3C31, r13	; 0x803c31 <_frame+0x1>
     916:	e0 92 32 3c 	sts	0x3C32, r14	; 0x803c32 <_frame+0x2>
     91a:	f0 92 33 3c 	sts	0x3C33, r15	; 0x803c33 <_frame+0x3>
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:657
    frame->can_dlc = dlc;
     91e:	b0 92 34 3c 	sts	0x3C34, r11	; 0x803c34 <_frame+0x4>
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:659

    readRegisters(rxb->DATA, frame->data, dlc);
     922:	0c 57       	subi	r16, 0x7C	; 124
     924:	1e 4a       	sbci	r17, 0xAE	; 174
     926:	4b 2d       	mov	r20, r11
     928:	68 e3       	ldi	r22, 0x38	; 56
     92a:	7c e3       	ldi	r23, 0x3C	; 60
     92c:	f8 01       	movw	r30, r16
     92e:	82 81       	ldd	r24, Z+2	; 0x02
     930:	6c df       	rcall	.-296    	; 0x80a <MCP2515::readRegisters(MCP2515::REGISTER, unsigned char*, unsigned char) [clone .constprop.7]>
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:661

    modifyRegister(MCP_CANINTF, rxb->CANINTF_RXnIF, 0);
     932:	40 e0       	ldi	r20, 0x00	; 0
     934:	f8 01       	movw	r30, r16
     936:	63 81       	ldd	r22, Z+3	; 0x03
     938:	8c e2       	ldi	r24, 0x2C	; 44
     93a:	fd de       	rcall	.-518    	; 0x736 <MCP2515::modifyRegister(MCP2515::REGISTER, unsigned char, unsigned char) [clone .constprop.24]>
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:663

    return ERROR_OK;
     93c:	90 e0       	ldi	r25, 0x00	; 0
     93e:	80 e0       	ldi	r24, 0x00	; 0
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:664
}
     940:	25 96       	adiw	r28, 0x05	; 5
     942:	cd bf       	out	0x3d, r28	; 61
     944:	de bf       	out	0x3e, r29	; 62
     946:	df 91       	pop	r29
     948:	cf 91       	pop	r28
     94a:	1f 91       	pop	r17
     94c:	0f 91       	pop	r16
     94e:	ff 90       	pop	r15
     950:	ef 90       	pop	r14
     952:	df 90       	pop	r13
     954:	cf 90       	pop	r12
     956:	bf 90       	pop	r11
     958:	08 95       	ret

0000095a <MCP2515::sendMessage(MCP2515::TXBn, can_frame const*) [clone .part.3] [clone .constprop.22]>:
_ZN7MCP251511sendMessageENS_4TXBnEPK9can_frame.part.3.constprop.22():
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:579
    setRegisters(reg, tbufdata, 4);

    return ERROR_OK;
}

MCP2515::ERROR MCP2515::sendMessage(const TXBn txbn, const struct can_frame *frame)
     95a:	cf 92       	push	r12
     95c:	df 92       	push	r13
     95e:	ef 92       	push	r14
     960:	ff 92       	push	r15
     962:	0f 93       	push	r16
     964:	1f 93       	push	r17
     966:	cf 93       	push	r28
     968:	df 93       	push	r29
     96a:	cd b7       	in	r28, 0x3d	; 61
     96c:	de b7       	in	r29, 0x3e	; 62
     96e:	2d 97       	sbiw	r28, 0x0d	; 13
     970:	cd bf       	out	0x3d, r28	; 61
     972:	de bf       	out	0x3e, r29	; 62
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);
     974:	80 91 30 3c 	lds	r24, 0x3C30	; 0x803c30 <_frame>
     978:	90 91 31 3c 	lds	r25, 0x3C31	; 0x803c31 <_frame+0x1>
     97c:	a0 91 32 3c 	lds	r26, 0x3C32	; 0x803c32 <_frame+0x2>
     980:	b0 91 33 3c 	lds	r27, 0x3C33	; 0x803c33 <_frame+0x3>
     984:	ac 01       	movw	r20, r24
     986:	bd 01       	movw	r22, r26
     988:	44 27       	eor	r20, r20
     98a:	77 fd       	sbrc	r23, 7
     98c:	43 95       	inc	r20
     98e:	55 27       	eor	r21, r21
     990:	66 27       	eor	r22, r22
     992:	77 27       	eor	r23, r23
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:590
    bool rtr = (frame->can_id & CAN_RTR_FLAG);
     994:	6c 01       	movw	r12, r24
     996:	7d 01       	movw	r14, r26
     998:	cc 24       	eor	r12, r12
     99a:	dd 24       	eor	r13, r13
     99c:	ee 24       	eor	r14, r14
     99e:	20 e4       	ldi	r18, 0x40	; 64
     9a0:	f2 22       	and	r15, r18
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:591
    uint32_t id = (frame->can_id & (ext ? CAN_EFF_MASK : CAN_SFF_MASK));
     9a2:	0f ef       	ldi	r16, 0xFF	; 255
     9a4:	1f ef       	ldi	r17, 0xFF	; 255
     9a6:	2f ef       	ldi	r18, 0xFF	; 255
     9a8:	3f e1       	ldi	r19, 0x1F	; 31
     9aa:	41 11       	cpse	r20, r1
     9ac:	04 c0       	rjmp	.+8      	; 0x9b6 <MCP2515::sendMessage(MCP2515::TXBn, can_frame const*) [clone .part.3] [clone .constprop.22]+0x5c>
     9ae:	0f ef       	ldi	r16, 0xFF	; 255
     9b0:	17 e0       	ldi	r17, 0x07	; 7
     9b2:	20 e0       	ldi	r18, 0x00	; 0
     9b4:	30 e0       	ldi	r19, 0x00	; 0
     9b6:	80 23       	and	r24, r16
     9b8:	91 23       	and	r25, r17
     9ba:	a2 23       	and	r26, r18
     9bc:	b3 23       	and	r27, r19
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) {
     9be:	44 23       	and	r20, r20
     9c0:	09 f4       	brne	.+2      	; 0x9c4 <MCP2515::sendMessage(MCP2515::TXBn, can_frame const*) [clone .part.3] [clone .constprop.22]+0x6a>
     9c2:	42 c0       	rjmp	.+132    	; 0xa48 <MCP2515::sendMessage(MCP2515::TXBn, can_frame const*) [clone .part.3] [clone .constprop.22]+0xee>
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:514
        buffer[MCP_EID0] = (uint8_t) (canid & 0xFF);
     9c4:	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);
     9c6:	9b 83       	std	Y+3, r25	; 0x03
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:516
        canid = (uint16_t)(id >> 16);
     9c8:	cd 01       	movw	r24, r26
     9ca:	aa 27       	eor	r26, r26
     9cc:	bb 27       	eor	r27, r27
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:517
        buffer[MCP_SIDL] = (uint8_t) (canid & 0x03);
     9ce:	28 2f       	mov	r18, r24
     9d0:	23 70       	andi	r18, 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;
     9d2:	28 60       	ori	r18, 0x08	; 8
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:518
    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);
        buffer[MCP_SIDL] += (uint8_t) ((canid & 0x1C) << 3);
     9d4:	38 2f       	mov	r19, r24
     9d6:	33 0f       	add	r19, r19
     9d8:	33 0f       	add	r19, r19
     9da:	33 0f       	add	r19, r19
     9dc:	30 7e       	andi	r19, 0xE0	; 224
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:519
        buffer[MCP_SIDL] |= TXB_EXIDE_MASK;
     9de:	23 2b       	or	r18, r19
     9e0:	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);
     9e2:	35 e0       	ldi	r19, 0x05	; 5
     9e4:	96 95       	lsr	r25
     9e6:	87 95       	ror	r24
     9e8:	3a 95       	dec	r19
     9ea:	e1 f7       	brne	.-8      	; 0x9e4 <MCP2515::sendMessage(MCP2515::TXBn, can_frame const*) [clone .part.3] [clone .constprop.22]+0x8a>
     9ec:	89 83       	std	Y+1, r24	; 0x01
     9ee:	10 91 34 3c 	lds	r17, 0x3C34	; 0x803c34 <_frame+0x4>
_ZN7MCP251511sendMessageENS_4TXBnEPK9can_frame.part.3.constprop.22():
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;
     9f2:	81 2f       	mov	r24, r17
     9f4:	cd 28       	or	r12, r13
     9f6:	ce 28       	or	r12, r14
     9f8:	cf 28       	or	r12, r15
     9fa:	09 f0       	breq	.+2      	; 0x9fe <MCP2515::sendMessage(MCP2515::TXBn, can_frame const*) [clone .part.3] [clone .constprop.22]+0xa4>
     9fc:	80 64       	ori	r24, 0x40	; 64
     9fe:	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);
     a00:	41 2f       	mov	r20, r17
     a02:	50 e0       	ldi	r21, 0x00	; 0
     a04:	68 e3       	ldi	r22, 0x38	; 56
     a06:	7c e3       	ldi	r23, 0x3C	; 60
     a08:	ce 01       	movw	r24, r28
     a0a:	06 96       	adiw	r24, 0x06	; 6
     a0c:	58 d3       	rcall	.+1712   	; 0x10be <memcpy>
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:599

    setRegisters(txbuf->SIDH, data, 5 + frame->can_dlc);
     a0e:	45 e0       	ldi	r20, 0x05	; 5
     a10:	41 0f       	add	r20, r17
     a12:	be 01       	movw	r22, r28
     a14:	6f 5f       	subi	r22, 0xFF	; 255
     a16:	7f 4f       	sbci	r23, 0xFF	; 255
     a18:	81 e4       	ldi	r24, 0x41	; 65
     a1a:	6e de       	rcall	.-804    	; 0x6f8 <MCP2515::setRegisters(MCP2515::REGISTER, unsigned char const*, unsigned char) [clone .constprop.25]>
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:601

    modifyRegister(txbuf->CTRL, TXB_TXREQ, TXB_TXREQ);
     a1c:	48 e0       	ldi	r20, 0x08	; 8
     a1e:	68 e0       	ldi	r22, 0x08	; 8
     a20:	80 e4       	ldi	r24, 0x40	; 64
     a22:	89 de       	rcall	.-750    	; 0x736 <MCP2515::modifyRegister(MCP2515::REGISTER, unsigned char, unsigned char) [clone .constprop.24]>
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:603

    uint8_t ctrl = readRegister(txbuf->CTRL);
     a24:	80 e4       	ldi	r24, 0x40	; 64
     a26:	9a de       	rcall	.-716    	; 0x75c <MCP2515::readRegister(MCP2515::REGISTER) [clone .constprop.23]>
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:604
    if ((ctrl & (TXB_ABTF | TXB_MLOA | TXB_TXERR)) != 0) {
     a28:	80 77       	andi	r24, 0x70	; 112
     a2a:	e1 f0       	breq	.+56     	; 0xa64 <MCP2515::sendMessage(MCP2515::TXBn, can_frame const*) [clone .part.3] [clone .constprop.22]+0x10a>
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:605
        return ERROR_FAILTX;
     a2c:	84 e0       	ldi	r24, 0x04	; 4
     a2e:	90 e0       	ldi	r25, 0x00	; 0
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:608
    }
    return ERROR_OK;
}
     a30:	2d 96       	adiw	r28, 0x0d	; 13
     a32:	cd bf       	out	0x3d, r28	; 61
     a34:	de bf       	out	0x3e, r29	; 62
     a36:	df 91       	pop	r29
     a38:	cf 91       	pop	r28
     a3a:	1f 91       	pop	r17
     a3c:	0f 91       	pop	r16
     a3e:	ff 90       	pop	r15
     a40:	ef 90       	pop	r14
     a42:	df 90       	pop	r13
     a44:	cf 90       	pop	r12
     a46:	08 95       	ret
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);
     a48:	9c 01       	movw	r18, r24
     a4a:	93 e0       	ldi	r25, 0x03	; 3
     a4c:	36 95       	lsr	r19
     a4e:	27 95       	ror	r18
     a50:	9a 95       	dec	r25
     a52:	e1 f7       	brne	.-8      	; 0xa4c <MCP2515::sendMessage(MCP2515::TXBn, can_frame const*) [clone .part.3] [clone .constprop.22]+0xf2>
     a54:	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);
     a56:	82 95       	swap	r24
     a58:	88 0f       	add	r24, r24
     a5a:	80 7e       	andi	r24, 0xE0	; 224
     a5c:	8a 83       	std	Y+2, r24	; 0x02
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:524
        buffer[MCP_EID0] = 0;
     a5e:	1c 82       	std	Y+4, r1	; 0x04
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:525
        buffer[MCP_EID8] = 0;
     a60:	1b 82       	std	Y+3, r1	; 0x03
     a62:	c5 cf       	rjmp	.-118    	; 0x9ee <MCP2515::sendMessage(MCP2515::TXBn, can_frame const*) [clone .part.3] [clone .constprop.22]+0x94>
_ZN7MCP251511sendMessageENS_4TXBnEPK9can_frame.part.3.constprop.22():
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:607

    uint8_t ctrl = readRegister(txbuf->CTRL);
    if ((ctrl & (TXB_ABTF | TXB_MLOA | TXB_TXERR)) != 0) {
        return ERROR_FAILTX;
    }
    return ERROR_OK;
     a64:	90 e0       	ldi	r25, 0x00	; 0
     a66:	80 e0       	ldi	r24, 0x00	; 0
     a68:	e3 cf       	rjmp	.-58     	; 0xa30 <MCP2515::sendMessage(MCP2515::TXBn, can_frame const*) [clone .part.3] [clone .constprop.22]+0xd6>

00000a6a <__vector_25>:
__vector_25():
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.1.0\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
{
     a6a:	1f 92       	push	r1
     a6c:	0f 92       	push	r0
     a6e:	0f b6       	in	r0, 0x3f	; 63
     a70:	0f 92       	push	r0
     a72:	11 24       	eor	r1, r1
     a74:	8f 93       	push	r24
     a76:	9f 93       	push	r25
     a78:	af 93       	push	r26
     a7a:	bf 93       	push	r27
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.1.0\cores\coreX-corefiles/wiring.c:75
  timer_millis++;
     a7c:	80 91 2b 3c 	lds	r24, 0x3C2B	; 0x803c2b <timer_millis>
     a80:	90 91 2c 3c 	lds	r25, 0x3C2C	; 0x803c2c <timer_millis+0x1>
     a84:	a0 91 2d 3c 	lds	r26, 0x3C2D	; 0x803c2d <timer_millis+0x2>
     a88:	b0 91 2e 3c 	lds	r27, 0x3C2E	; 0x803c2e <timer_millis+0x3>
     a8c:	01 96       	adiw	r24, 0x01	; 1
     a8e:	a1 1d       	adc	r26, r1
     a90:	b1 1d       	adc	r27, r1
     a92:	80 93 2b 3c 	sts	0x3C2B, r24	; 0x803c2b <timer_millis>
     a96:	90 93 2c 3c 	sts	0x3C2C, r25	; 0x803c2c <timer_millis+0x1>
     a9a:	a0 93 2d 3c 	sts	0x3C2D, r26	; 0x803c2d <timer_millis+0x2>
     a9e:	b0 93 2e 3c 	sts	0x3C2E, r27	; 0x803c2e <timer_millis+0x3>
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.1.0\cores\coreX-corefiles/wiring.c:78

  /* Clear flag */
  _timer->INTFLAGS = TCB_CAPT_bm;
     aa2:	81 e0       	ldi	r24, 0x01	; 1
     aa4:	80 93 a6 0a 	sts	0x0AA6, r24	; 0x800aa6 <MCP2515::RXB+0x7fb922>
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.1.0\cores\coreX-corefiles/wiring.c:79
}
     aa8:	bf 91       	pop	r27
     aaa:	af 91       	pop	r26
     aac:	9f 91       	pop	r25
     aae:	8f 91       	pop	r24
     ab0:	0f 90       	pop	r0
     ab2:	0f be       	out	0x3f, r0	; 63
     ab4:	0f 90       	pop	r0
     ab6:	1f 90       	pop	r1
     ab8:	18 95       	reti

00000aba <global constructors keyed to 65535_0_UPSoftware.ino.cpp.o.2731>:
_GLOBAL__I_65535_0_UPSoftware.ino.cpp.o.2731():
     aba:	e0 e4       	ldi	r30, 0x40	; 64
     abc:	fc e3       	ldi	r31, 0x3C	; 60
     abe:	84 e0       	ldi	r24, 0x04	; 4
     ac0:	81 83       	std	Z+1, r24	; 0x01
     ac2:	81 e3       	ldi	r24, 0x31	; 49
     ac4:	80 83       	st	Z, r24
     ac6:	e2 e4       	ldi	r30, 0x42	; 66
     ac8:	fc e3       	ldi	r31, 0x3C	; 60
     aca:	15 82       	std	Z+5, r1	; 0x05
     acc:	14 82       	std	Z+4, r1	; 0x04
     ace:	3c db       	rcall	.-2440   	; 0x148 <SPIClass::begin() [clone .constprop.8]>
     ad0:	83 e0       	ldi	r24, 0x03	; 3
     ad2:	80 93 81 3c 	sts	0x3C81, r24	; 0x803c81 <mcp2515>
     ad6:	61 e0       	ldi	r22, 0x01	; 1
     ad8:	09 db       	rcall	.-2542   	; 0xec <pinMode.part.1>
     ada:	ed cb       	rjmp	.-2086   	; 0x2b6 <MCP2515::endSPI() [clone .constprop.32]>

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

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

int main(void)
{
     adc:	cf 93       	push	r28
     ade:	df 93       	push	r29
     ae0:	cd b7       	in	r28, 0x3d	; 61
     ae2:	de b7       	in	r29, 0x3e	; 62
     ae4:	a2 97       	sbiw	r28, 0x22	; 34
     ae6:	cd bf       	out	0x3d, r28	; 61
     ae8:	de bf       	out	0x3e, r29	; 62
init():
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.1.0\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));
     aea:	91 e0       	ldi	r25, 0x01	; 1
     aec:	88 ed       	ldi	r24, 0xD8	; 216
     aee:	84 bf       	out	0x34, r24	; 52
     af0:	90 93 61 00 	sts	0x0061, r25	; 0x800061 <MCP2515::RXB+0x7faedd>
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.1.0\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;
     af4:	80 91 02 06 	lds	r24, 0x0602	; 0x800602 <MCP2515::RXB+0x7fb47e>
     af8:	85 60       	ori	r24, 0x05	; 5
     afa:	80 93 02 06 	sts	0x0602, r24	; 0x800602 <MCP2515::RXB+0x7fb47e>
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.1.0\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;
     afe:	80 91 00 06 	lds	r24, 0x0600	; 0x800600 <MCP2515::RXB+0x7fb47c>
     b02:	81 60       	ori	r24, 0x01	; 1
     b04:	80 93 00 06 	sts	0x0600, r24	; 0x800600 <MCP2515::RXB+0x7fb47c>
analogReference():
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.1.0\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...
     b08:	80 91 02 06 	lds	r24, 0x0602	; 0x800602 <MCP2515::RXB+0x7fb47e>
     b0c:	8f 7c       	andi	r24, 0xCF	; 207
     b0e:	80 65       	ori	r24, 0x50	; 80
     b10:	80 93 02 06 	sts	0x0602, r24	; 0x800602 <MCP2515::RXB+0x7fb47e>
init():
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.1.0\cores\coreX-corefiles/wiring.c:407
  analogReference(VDD);

#endif

  PORTMUX.USARTROUTEA = 0;
     b14:	10 92 e2 05 	sts	0x05E2, r1	; 0x8005e2 <MCP2515::RXB+0x7fb45e>
setup_timers():
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.1.0\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;
     b18:	82 e0       	ldi	r24, 0x02	; 2
     b1a:	80 93 e4 05 	sts	0x05E4, r24	; 0x8005e4 <MCP2515::RXB+0x7fb460>
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.1.0\cores\coreX-corefiles/wiring.c:449

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

  // Period setting, two 8 bit registers
  TCA0.SPLIT.LPER =
      TCA0.SPLIT.HPER = PWM_TIMER_PERIOD;
     b22:	8e ef       	ldi	r24, 0xFE	; 254
     b24:	80 93 27 0a 	sts	0x0A27, r24	; 0x800a27 <MCP2515::RXB+0x7fb8a3>
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.1.0\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 =
     b28:	80 93 26 0a 	sts	0x0A26, r24	; 0x800a26 <MCP2515::RXB+0x7fb8a2>
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.1.0\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;
     b2c:	80 e8       	ldi	r24, 0x80	; 128
     b2e:	80 93 2d 0a 	sts	0x0A2D, r24	; 0x800a2d <MCP2515::RXB+0x7fb8a9>
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.1.0\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 =
     b32:	80 93 2b 0a 	sts	0x0A2B, r24	; 0x800a2b <MCP2515::RXB+0x7fb8a7>
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.1.0\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 =
     b36:	80 93 29 0a 	sts	0x0A29, r24	; 0x800a29 <MCP2515::RXB+0x7fb8a5>
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.1.0\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 =
     b3a:	80 93 2c 0a 	sts	0x0A2C, r24	; 0x800a2c <MCP2515::RXB+0x7fb8a8>
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.1.0\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 =
     b3e:	80 93 2a 0a 	sts	0x0A2A, r24	; 0x800a2a <MCP2515::RXB+0x7fb8a6>
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.1.0\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 =
     b42:	80 93 28 0a 	sts	0x0A28, r24	; 0x800a28 <MCP2515::RXB+0x7fb8a4>
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.1.0\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);
     b46:	89 e0       	ldi	r24, 0x09	; 9
     b48:	80 93 00 0a 	sts	0x0A00, r24	; 0x800a00 <MCP2515::RXB+0x7fb87c>
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.1.0\cores\coreX-corefiles/wiring.c:480
#endif

  //  TYPE B TIMERS

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

  // Start with TCB0
  TCB_t *timer_B = (TCB_t *)&TCB0;
     b52:	e0 e8       	ldi	r30, 0x80	; 128
     b54:	fa e0       	ldi	r31, 0x0A	; 10
setup_timers():
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.1.0\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);
     b56:	17 e0       	ldi	r17, 0x07	; 7
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.1.0\cores\coreX-corefiles/wiring.c:516

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

    // default duty 50%, set when output enabled
    timer_B->CCMPH = PWM_TIMER_COMPARE;
     b5a:	80 e8       	ldi	r24, 0x80	; 128
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.1.0\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)
     b5c:	05 e0       	ldi	r16, 0x05	; 5
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.1.0\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);
     b5e:	11 83       	std	Z+1, r17	; 0x01
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.1.0\cores\coreX-corefiles/wiring.c:516

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

    // default duty 50%, set when output enabled
    timer_B->CCMPH = PWM_TIMER_COMPARE;
     b62:	85 87       	std	Z+13, r24	; 0x0d
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.1.0\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)
     b64:	00 83       	st	Z, r16
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.1.0\cores\coreX-corefiles/wiring.c:528
                     //|(TCB_SYNCUPD_bm)
                     | (TCB_ENABLE_bm);

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

    // Stop when pointing to TCB3
  } while (timer_B <= timer_B_end);
     b68:	e0 3c       	cpi	r30, 0xC0	; 192
     b6a:	2a e0       	ldi	r18, 0x0A	; 10
     b6c:	f2 07       	cpc	r31, r18
     b6e:	b9 f7       	brne	.-18     	; 0xb5e <main+0x82>
init():
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.1.0\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;
     b70:	10 92 a1 0a 	sts	0x0AA1, r1	; 0x800aa1 <MCP2515::RXB+0x7fb91d>
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.1.0\cores\coreX-corefiles/wiring.c:419

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

  /* Enable TCB interrupt */
  _timer->INTCTRL |= TCB_CAPT_bm;
     b80:	80 91 a5 0a 	lds	r24, 0x0AA5	; 0x800aa5 <MCP2515::RXB+0x7fb921>
     b84:	81 60       	ori	r24, 0x01	; 1
     b86:	80 93 a5 0a 	sts	0x0AA5, r24	; 0x800aa5 <MCP2515::RXB+0x7fb921>
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.1.0\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 */
     b8a:	10 92 a0 0a 	sts	0x0AA0, r1	; 0x800aa0 <MCP2515::RXB+0x7fb91c>
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.1.0\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 */
     b8e:	80 91 a0 0a 	lds	r24, 0x0AA0	; 0x800aa0 <MCP2515::RXB+0x7fb91c>
     b92:	81 60       	ori	r24, 0x01	; 1
     b94:	80 93 a0 0a 	sts	0x0AA0, r24	; 0x800aa0 <MCP2515::RXB+0x7fb91c>
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.1.0\cores\coreX-corefiles/wiring.c:438

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

  sei();
     b98:	78 94       	sei
setup():
C:\Users\Martin\Documents\MeyCad\Meycad\Software\UPSoftware/UPSoftware.ino:34
int PinCount = 8;
PinState PinPD2[8];
byte DeviceId[2];

void setup() {
  SPI.begin();
     b9a:	d6 da       	rcall	.-2644   	; 0x148 <SPIClass::begin() [clone .constprop.8]>
_ZN8PinState4InitEih():
C:\Users\Martin\Documents\MeyCad\Meycad\Software\UPSoftware/UPSoftware.ino:22
  byte meyPinId;

  PinState() {}
  void Init(int pin_id, byte meyPinId)
  {
    this->pin_id = pin_id;
     b9c:	85 e1       	ldi	r24, 0x15	; 21
     b9e:	90 e0       	ldi	r25, 0x00	; 0
     ba0:	80 93 03 3c 	sts	0x3C03, r24	; 0x803c03 <PinPD2>
     ba4:	90 93 04 3c 	sts	0x3C04, r25	; 0x803c04 <PinPD2+0x1>
C:\Users\Martin\Documents\MeyCad\Meycad\Software\UPSoftware/UPSoftware.ino:23
    this->pin_state = true;
     ba8:	81 e0       	ldi	r24, 0x01	; 1
     baa:	80 93 05 3c 	sts	0x3C05, r24	; 0x803c05 <PinPD2+0x2>
C:\Users\Martin\Documents\MeyCad\Meycad\Software\UPSoftware/UPSoftware.ino:24
    this->is_input = true;
     bae:	80 93 06 3c 	sts	0x3C06, r24	; 0x803c06 <PinPD2+0x3>
C:\Users\Martin\Documents\MeyCad\Meycad\Software\UPSoftware/UPSoftware.ino:25
    this->meyPinId = meyPinId;
     bb2:	80 93 07 3c 	sts	0x3C07, r24	; 0x803c07 <PinPD2+0x4>
C:\Users\Martin\Documents\MeyCad\Meycad\Software\UPSoftware/UPSoftware.ino:22
  byte meyPinId;

  PinState() {}
  void Init(int pin_id, byte meyPinId)
  {
    this->pin_id = pin_id;
     bb6:	26 e1       	ldi	r18, 0x16	; 22
     bb8:	30 e0       	ldi	r19, 0x00	; 0
     bba:	20 93 08 3c 	sts	0x3C08, r18	; 0x803c08 <PinPD2+0x5>
     bbe:	30 93 09 3c 	sts	0x3C09, r19	; 0x803c09 <PinPD2+0x6>
C:\Users\Martin\Documents\MeyCad\Meycad\Software\UPSoftware/UPSoftware.ino:23
    this->pin_state = true;
     bc2:	80 93 0a 3c 	sts	0x3C0A, r24	; 0x803c0a <PinPD2+0x7>
C:\Users\Martin\Documents\MeyCad\Meycad\Software\UPSoftware/UPSoftware.ino:24
    this->is_input = true;
     bc6:	80 93 0b 3c 	sts	0x3C0B, r24	; 0x803c0b <PinPD2+0x8>
C:\Users\Martin\Documents\MeyCad\Meycad\Software\UPSoftware/UPSoftware.ino:25
    this->meyPinId = meyPinId;
     bca:	92 e0       	ldi	r25, 0x02	; 2
     bcc:	90 93 0c 3c 	sts	0x3C0C, r25	; 0x803c0c <PinPD2+0x9>
C:\Users\Martin\Documents\MeyCad\Meycad\Software\UPSoftware/UPSoftware.ino:22
  byte meyPinId;

  PinState() {}
  void Init(int pin_id, byte meyPinId)
  {
    this->pin_id = pin_id;
     bd0:	27 e1       	ldi	r18, 0x17	; 23
     bd2:	30 e0       	ldi	r19, 0x00	; 0
     bd4:	20 93 0d 3c 	sts	0x3C0D, r18	; 0x803c0d <PinPD2+0xa>
     bd8:	30 93 0e 3c 	sts	0x3C0E, r19	; 0x803c0e <PinPD2+0xb>
C:\Users\Martin\Documents\MeyCad\Meycad\Software\UPSoftware/UPSoftware.ino:23
    this->pin_state = true;
     bdc:	80 93 0f 3c 	sts	0x3C0F, r24	; 0x803c0f <PinPD2+0xc>
C:\Users\Martin\Documents\MeyCad\Meycad\Software\UPSoftware/UPSoftware.ino:24
    this->is_input = true;
     be0:	80 93 10 3c 	sts	0x3C10, r24	; 0x803c10 <PinPD2+0xd>
C:\Users\Martin\Documents\MeyCad\Meycad\Software\UPSoftware/UPSoftware.ino:25
    this->meyPinId = meyPinId;
     be4:	93 e0       	ldi	r25, 0x03	; 3
     be6:	90 93 11 3c 	sts	0x3C11, r25	; 0x803c11 <PinPD2+0xe>
C:\Users\Martin\Documents\MeyCad\Meycad\Software\UPSoftware/UPSoftware.ino:22
  byte meyPinId;

  PinState() {}
  void Init(int pin_id, byte meyPinId)
  {
    this->pin_id = pin_id;
     bea:	28 e1       	ldi	r18, 0x18	; 24
     bec:	30 e0       	ldi	r19, 0x00	; 0
     bee:	20 93 12 3c 	sts	0x3C12, r18	; 0x803c12 <PinPD2+0xf>
     bf2:	30 93 13 3c 	sts	0x3C13, r19	; 0x803c13 <PinPD2+0x10>
C:\Users\Martin\Documents\MeyCad\Meycad\Software\UPSoftware/UPSoftware.ino:23
    this->pin_state = true;
     bf6:	80 93 14 3c 	sts	0x3C14, r24	; 0x803c14 <PinPD2+0x11>
C:\Users\Martin\Documents\MeyCad\Meycad\Software\UPSoftware/UPSoftware.ino:24
    this->is_input = true;
     bfa:	80 93 15 3c 	sts	0x3C15, r24	; 0x803c15 <PinPD2+0x12>
C:\Users\Martin\Documents\MeyCad\Meycad\Software\UPSoftware/UPSoftware.ino:25
    this->meyPinId = meyPinId;
     bfe:	94 e0       	ldi	r25, 0x04	; 4
     c00:	90 93 16 3c 	sts	0x3C16, r25	; 0x803c16 <PinPD2+0x13>
C:\Users\Martin\Documents\MeyCad\Meycad\Software\UPSoftware/UPSoftware.ino:22
  byte meyPinId;

  PinState() {}
  void Init(int pin_id, byte meyPinId)
  {
    this->pin_id = pin_id;
     c04:	2c e1       	ldi	r18, 0x1C	; 28
     c06:	30 e0       	ldi	r19, 0x00	; 0
     c08:	20 93 17 3c 	sts	0x3C17, r18	; 0x803c17 <PinPD2+0x14>
     c0c:	30 93 18 3c 	sts	0x3C18, r19	; 0x803c18 <PinPD2+0x15>
C:\Users\Martin\Documents\MeyCad\Meycad\Software\UPSoftware/UPSoftware.ino:23
    this->pin_state = true;
     c10:	80 93 19 3c 	sts	0x3C19, r24	; 0x803c19 <PinPD2+0x16>
C:\Users\Martin\Documents\MeyCad\Meycad\Software\UPSoftware/UPSoftware.ino:24
    this->is_input = true;
     c14:	80 93 1a 3c 	sts	0x3C1A, r24	; 0x803c1a <PinPD2+0x17>
C:\Users\Martin\Documents\MeyCad\Meycad\Software\UPSoftware/UPSoftware.ino:25
    this->meyPinId = meyPinId;
     c18:	00 93 1b 3c 	sts	0x3C1B, r16	; 0x803c1b <PinPD2+0x18>
C:\Users\Martin\Documents\MeyCad\Meycad\Software\UPSoftware/UPSoftware.ino:22
  byte meyPinId;

  PinState() {}
  void Init(int pin_id, byte meyPinId)
  {
    this->pin_id = pin_id;
     c1c:	2b e1       	ldi	r18, 0x1B	; 27
     c1e:	30 e0       	ldi	r19, 0x00	; 0
     c20:	20 93 1c 3c 	sts	0x3C1C, r18	; 0x803c1c <PinPD2+0x19>
     c24:	30 93 1d 3c 	sts	0x3C1D, r19	; 0x803c1d <PinPD2+0x1a>
C:\Users\Martin\Documents\MeyCad\Meycad\Software\UPSoftware/UPSoftware.ino:23
    this->pin_state = true;
     c28:	80 93 1e 3c 	sts	0x3C1E, r24	; 0x803c1e <PinPD2+0x1b>
C:\Users\Martin\Documents\MeyCad\Meycad\Software\UPSoftware/UPSoftware.ino:24
    this->is_input = true;
     c2c:	80 93 1f 3c 	sts	0x3C1F, r24	; 0x803c1f <PinPD2+0x1c>
C:\Users\Martin\Documents\MeyCad\Meycad\Software\UPSoftware/UPSoftware.ino:25
    this->meyPinId = meyPinId;
     c30:	96 e0       	ldi	r25, 0x06	; 6
     c32:	90 93 20 3c 	sts	0x3C20, r25	; 0x803c20 <PinPD2+0x1d>
C:\Users\Martin\Documents\MeyCad\Meycad\Software\UPSoftware/UPSoftware.ino:22
  byte meyPinId;

  PinState() {}
  void Init(int pin_id, byte meyPinId)
  {
    this->pin_id = pin_id;
     c36:	2a e1       	ldi	r18, 0x1A	; 26
     c38:	30 e0       	ldi	r19, 0x00	; 0
     c3a:	20 93 21 3c 	sts	0x3C21, r18	; 0x803c21 <PinPD2+0x1e>
     c3e:	30 93 22 3c 	sts	0x3C22, r19	; 0x803c22 <PinPD2+0x1f>
C:\Users\Martin\Documents\MeyCad\Meycad\Software\UPSoftware/UPSoftware.ino:23
    this->pin_state = true;
     c42:	80 93 23 3c 	sts	0x3C23, r24	; 0x803c23 <PinPD2+0x20>
C:\Users\Martin\Documents\MeyCad\Meycad\Software\UPSoftware/UPSoftware.ino:24
    this->is_input = true;
     c46:	80 93 24 3c 	sts	0x3C24, r24	; 0x803c24 <PinPD2+0x21>
C:\Users\Martin\Documents\MeyCad\Meycad\Software\UPSoftware/UPSoftware.ino:25
    this->meyPinId = meyPinId;
     c4a:	10 93 25 3c 	sts	0x3C25, r17	; 0x803c25 <PinPD2+0x22>
C:\Users\Martin\Documents\MeyCad\Meycad\Software\UPSoftware/UPSoftware.ino:22
  byte meyPinId;

  PinState() {}
  void Init(int pin_id, byte meyPinId)
  {
    this->pin_id = pin_id;
     c4e:	29 e1       	ldi	r18, 0x19	; 25
     c50:	30 e0       	ldi	r19, 0x00	; 0
     c52:	20 93 26 3c 	sts	0x3C26, r18	; 0x803c26 <PinPD2+0x23>
     c56:	30 93 27 3c 	sts	0x3C27, r19	; 0x803c27 <PinPD2+0x24>
C:\Users\Martin\Documents\MeyCad\Meycad\Software\UPSoftware/UPSoftware.ino:23
    this->pin_state = true;
     c5a:	80 93 28 3c 	sts	0x3C28, r24	; 0x803c28 <PinPD2+0x25>
C:\Users\Martin\Documents\MeyCad\Meycad\Software\UPSoftware/UPSoftware.ino:24
    this->is_input = true;
     c5e:	80 93 29 3c 	sts	0x3C29, r24	; 0x803c29 <PinPD2+0x26>
C:\Users\Martin\Documents\MeyCad\Meycad\Software\UPSoftware/UPSoftware.ino:25
    this->meyPinId = meyPinId;
     c62:	88 e0       	ldi	r24, 0x08	; 8
     c64:	80 93 2a 3c 	sts	0x3C2A, r24	; 0x803c2a <PinPD2+0x27>
setup():
C:\Users\Martin\Documents\MeyCad\Meycad\Software\UPSoftware/UPSoftware.ino:63
  PinPD2[7] = PinState();
  PinPD2[7].Init(PIN_PD3, (byte) 8);



  _PROTECTED_WRITE(CLKCTRL.MCLKCTRLA,  CLKCTRL.MCLKCTRLA | 1 << 7);
     c68:	80 91 60 00 	lds	r24, 0x0060	; 0x800060 <MCP2515::RXB+0x7faedc>
     c6c:	80 68       	ori	r24, 0x80	; 128
     c6e:	90 e0       	ldi	r25, 0x00	; 0
     c70:	28 ed       	ldi	r18, 0xD8	; 216
     c72:	24 bf       	out	0x34, r18	; 52
     c74:	80 93 60 00 	sts	0x0060, r24	; 0x800060 <MCP2515::RXB+0x7faedc>
reset():
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:36
    SPI.endTransaction();
}

MCP2515::ERROR MCP2515::reset(void)
{
    startSPI();
     c78:	7e dc       	rcall	.-1796   	; 0x576 <MCP2515::startSPI() [clone .constprop.26]>
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:37
    SPI.transfer(INSTRUCTION_RESET);
     c7a:	80 ec       	ldi	r24, 0xC0	; 192
     c7c:	2d da       	rcall	.-2982   	; 0xd8 <SPIClass::transfer(unsigned char) [clone .constprop.31]>
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:38
    endSPI();
     c7e:	1b db       	rcall	.-2506   	; 0x2b6 <MCP2515::endSPI() [clone .constprop.32]>
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:40

    delay(10);
     c80:	6a e0       	ldi	r22, 0x0A	; 10
     c82:	70 e0       	ldi	r23, 0x00	; 0
     c84:	80 e0       	ldi	r24, 0x00	; 0
     c86:	90 e0       	ldi	r25, 0x00	; 0
     c88:	eb db       	rcall	.-2090   	; 0x460 <delay>
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:43

    uint8_t zeros[14];
    memset(zeros, 0, sizeof(zeros));
     c8a:	8e 01       	movw	r16, r28
     c8c:	0f 5f       	subi	r16, 0xFF	; 255
     c8e:	1f 4f       	sbci	r17, 0xFF	; 255
     c90:	8e e0       	ldi	r24, 0x0E	; 14
     c92:	f8 01       	movw	r30, r16
     c94:	11 92       	st	Z+, r1
     c96:	8a 95       	dec	r24
     c98:	e9 f7       	brne	.-6      	; 0xc94 <main+0x1b8>
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:44
    setRegisters(MCP_TXB0CTRL, zeros, 14);
     c9a:	4e e0       	ldi	r20, 0x0E	; 14
     c9c:	b8 01       	movw	r22, r16
     c9e:	80 e3       	ldi	r24, 0x30	; 48
     ca0:	2b dd       	rcall	.-1450   	; 0x6f8 <MCP2515::setRegisters(MCP2515::REGISTER, unsigned char const*, unsigned char) [clone .constprop.25]>
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:45
    setRegisters(MCP_TXB1CTRL, zeros, 14);
     ca2:	4e e0       	ldi	r20, 0x0E	; 14
     ca4:	b8 01       	movw	r22, r16
     ca6:	80 e4       	ldi	r24, 0x40	; 64
     ca8:	27 dd       	rcall	.-1458   	; 0x6f8 <MCP2515::setRegisters(MCP2515::REGISTER, unsigned char const*, unsigned char) [clone .constprop.25]>
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:46
    setRegisters(MCP_TXB2CTRL, zeros, 14);
     caa:	4e e0       	ldi	r20, 0x0E	; 14
     cac:	b8 01       	movw	r22, r16
     cae:	80 e5       	ldi	r24, 0x50	; 80
     cb0:	23 dd       	rcall	.-1466   	; 0x6f8 <MCP2515::setRegisters(MCP2515::REGISTER, unsigned char const*, unsigned char) [clone .constprop.25]>
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:48

    setRegister(MCP_RXB0CTRL, 0);
     cb2:	60 e0       	ldi	r22, 0x00	; 0
     cb4:	80 e6       	ldi	r24, 0x60	; 96
     cb6:	9b dd       	rcall	.-1226   	; 0x7ee <MCP2515::setRegister(MCP2515::REGISTER, unsigned char) [clone .constprop.18]>
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:49
    setRegister(MCP_RXB1CTRL, 0);
     cb8:	60 e0       	ldi	r22, 0x00	; 0
     cba:	80 e7       	ldi	r24, 0x70	; 112
     cbc:	98 dd       	rcall	.-1232   	; 0x7ee <MCP2515::setRegister(MCP2515::REGISTER, unsigned char) [clone .constprop.18]>
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:51

    setRegister(MCP_CANINTE, CANINTF_RX0IF | CANINTF_RX1IF | CANINTF_ERRIF | CANINTF_MERRF);
     cbe:	63 ea       	ldi	r22, 0xA3	; 163
     cc0:	8b e2       	ldi	r24, 0x2B	; 43
     cc2:	95 dd       	rcall	.-1238   	; 0x7ee <MCP2515::setRegister(MCP2515::REGISTER, unsigned char) [clone .constprop.18]>
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,
     cc4:	44 e0       	ldi	r20, 0x04	; 4
     cc6:	67 e6       	ldi	r22, 0x67	; 103
     cc8:	80 e6       	ldi	r24, 0x60	; 96
     cca:	35 dd       	rcall	.-1430   	; 0x736 <MCP2515::modifyRegister(MCP2515::REGISTER, unsigned char, unsigned char) [clone .constprop.24]>
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,
     ccc:	41 e0       	ldi	r20, 0x01	; 1
     cce:	67 e6       	ldi	r22, 0x67	; 103
     cd0:	80 e7       	ldi	r24, 0x70	; 112
     cd2:	31 dd       	rcall	.-1438   	; 0x736 <MCP2515::modifyRegister(MCP2515::REGISTER, unsigned char, unsigned char) [clone .constprop.24]>
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};
     cd4:	8c e0       	ldi	r24, 0x0C	; 12
     cd6:	e4 ed       	ldi	r30, 0xD4	; 212
     cd8:	f0 e5       	ldi	r31, 0x50	; 80
     cda:	de 01       	movw	r26, r28
     cdc:	1f 96       	adiw	r26, 0x0f	; 15
     cde:	01 90       	ld	r0, Z+
     ce0:	0d 92       	st	X+, r0
     ce2:	8a 95       	dec	r24
     ce4:	e1 f7       	brne	.-8      	; 0xcde <main+0x202>
     ce6:	5e 01       	movw	r10, r28
     ce8:	ff e0       	ldi	r31, 0x0F	; 15
     cea:	af 0e       	add	r10, r31
     cec:	b1 1c       	adc	r11, r1
main():
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:66
    for (int i=0; i<6; i++) {
     cee:	d1 2c       	mov	r13, r1
     cf0:	c1 2c       	mov	r12, r1
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;
     cf2:	b8 e0       	ldi	r27, 0x08	; 8
     cf4:	9b 2e       	mov	r9, r27
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);
     cf6:	f5 01       	movw	r30, r10
     cf8:	01 91       	ld	r16, Z+
     cfa:	11 91       	ld	r17, Z+
     cfc:	5f 01       	movw	r10, r30
setConfigMode():
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:150
    return i;
}

MCP2515::ERROR MCP2515::setConfigMode()
{
    return setMode(CANCTRL_REQOP_CONFIG);
     cfe:	80 e8       	ldi	r24, 0x80	; 128
     d00:	3b dd       	rcall	.-1418   	; 0x778 <MCP2515::setMode(MCP2515::CANCTRL_REQOP_MODE) [clone .constprop.20]>
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) {
     d02:	89 2b       	or	r24, r25
     d04:	71 f4       	brne	.+28     	; 0xd22 <main+0x246>
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:561
        return res;
    }

    REGISTER reg;

    switch (num) {
     d06:	02 30       	cpi	r16, 0x02	; 2
     d08:	11 05       	cpc	r17, r1
     d0a:	09 f4       	brne	.+2      	; 0xd0e <main+0x232>
     d0c:	75 c1       	rjmp	.+746    	; 0xff8 <main+0x51c>
     d0e:	08 f0       	brcs	.+2      	; 0xd12 <main+0x236>
     d10:	2c c1       	rjmp	.+600    	; 0xf6a <main+0x48e>
     d12:	01 15       	cp	r16, r1
     d14:	11 05       	cpc	r17, r1
     d16:	09 f4       	brne	.+2      	; 0xd1a <main+0x23e>
     d18:	34 c1       	rjmp	.+616    	; 0xf82 <main+0x4a6>
     d1a:	01 30       	cpi	r16, 0x01	; 1
     d1c:	11 05       	cpc	r17, r1
     d1e:	09 f4       	brne	.+2      	; 0xd22 <main+0x246>
     d20:	71 c1       	rjmp	.+738    	; 0x1004 <main+0x528>
setConfigMode():
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:150
    return i;
}

MCP2515::ERROR MCP2515::setConfigMode()
{
    return setMode(CANCTRL_REQOP_CONFIG);
     d22:	80 e8       	ldi	r24, 0x80	; 128
     d24:	29 dd       	rcall	.-1454   	; 0x778 <MCP2515::setMode(MCP2515::CANCTRL_REQOP_MODE) [clone .constprop.20]>
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) {
     d26:	89 2b       	or	r24, r25
     d28:	49 f4       	brne	.+18     	; 0xd3c <main+0x260>
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:477
        set = 0;
        break;
    }

    if (set) {
        setRegister(MCP_CNF1, cfg1);
     d2a:	60 e0       	ldi	r22, 0x00	; 0
     d2c:	8a e2       	ldi	r24, 0x2A	; 42
     d2e:	5f dd       	rcall	.-1346   	; 0x7ee <MCP2515::setRegister(MCP2515::REGISTER, unsigned char) [clone .constprop.18]>
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:478
        setRegister(MCP_CNF2, cfg2);
     d30:	60 e9       	ldi	r22, 0x90	; 144
     d32:	89 e2       	ldi	r24, 0x29	; 41
     d34:	5c dd       	rcall	.-1352   	; 0x7ee <MCP2515::setRegister(MCP2515::REGISTER, unsigned char) [clone .constprop.18]>
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:479
        setRegister(MCP_CNF3, cfg3);
     d36:	62 e8       	ldi	r22, 0x82	; 130
     d38:	88 e2       	ldi	r24, 0x28	; 40
     d3a:	59 dd       	rcall	.-1358   	; 0x7ee <MCP2515::setRegister(MCP2515::REGISTER, unsigned char) [clone .constprop.18]>
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);
     d3c:	80 e0       	ldi	r24, 0x00	; 0
     d3e:	1c dd       	rcall	.-1480   	; 0x778 <MCP2515::setMode(MCP2515::CANCTRL_REQOP_MODE) [clone .constprop.20]>
     d40:	fb e2       	ldi	r31, 0x2B	; 43
     d42:	cf 2e       	mov	r12, r31
     d44:	fc e3       	ldi	r31, 0x3C	; 60
     d46:	df 2e       	mov	r13, r31
     d48:	03 e0       	ldi	r16, 0x03	; 3
     d4a:	1c e3       	ldi	r17, 0x3C	; 60
setup():
C:\Users\Martin\Documents\MeyCad\Meycad\Software\UPSoftware/UPSoftware.ino:70
  mcp2515.setBitrate(CAN_500KBPS, MCP_8MHZ); //Sets CAN at speed 500KBPS and Clock 8MHz
  mcp2515.setNormalMode();

  for (int i = 0; i <= PinCount - 1; i++)
  {
    pinMode(PinPD2[i].pin_id, INPUT_PULLUP);
     d4c:	f8 01       	movw	r30, r16
     d4e:	80 81       	ld	r24, Z
pinMode():
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.1.0\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);
     d50:	89 32       	cpi	r24, 0x29	; 41
     d52:	10 f4       	brcc	.+4      	; 0xd58 <main+0x27c>
     d54:	62 e0       	ldi	r22, 0x02	; 2
     d56:	ca d9       	rcall	.-3180   	; 0xec <pinMode.part.1>
setup():
C:\Users\Martin\Documents\MeyCad\Meycad\Software\UPSoftware/UPSoftware.ino:71
    PinPD2[i].pin_state = ReadPin(&PinPD2[i]);
     d58:	c8 01       	movw	r24, r16
     d5a:	ae db       	rcall	.-2212   	; 0x4b8 <ReadPin(PinState*)>
     d5c:	f8 01       	movw	r30, r16
     d5e:	82 83       	std	Z+2, r24	; 0x02
     d60:	0b 5f       	subi	r16, 0xFB	; 251
     d62:	1f 4f       	sbci	r17, 0xFF	; 255
C:\Users\Martin\Documents\MeyCad\Meycad\Software\UPSoftware/UPSoftware.ino:68
  _PROTECTED_WRITE(CLKCTRL.MCLKCTRLA,  CLKCTRL.MCLKCTRLA | 1 << 7);
  mcp2515.reset();
  mcp2515.setBitrate(CAN_500KBPS, MCP_8MHZ); //Sets CAN at speed 500KBPS and Clock 8MHz
  mcp2515.setNormalMode();

  for (int i = 0; i <= PinCount - 1; i++)
     d64:	c0 16       	cp	r12, r16
     d66:	d1 06       	cpc	r13, r17
     d68:	89 f7       	brne	.-30     	; 0xd4c <main+0x270>
GetDeviceIdLow():
C:\Users\Martin\Documents\MeyCad\Meycad\Software\UPSoftware/UPSoftware.ino:204
{
  return ((commandId & 0xFFF) * 0x10000) | ( DeviceId[0] << 8) | (DeviceId[1]) | CAN_EFF_FLAG;
}

byte GetDeviceIdLow() {
  return (SIGROW.SERNUM0 ^
     d6a:	50 91 03 11 	lds	r21, 0x1103	; 0x801103 <MCP2515::RXB+0x7fbf7f>
C:\Users\Martin\Documents\MeyCad\Meycad\Software\UPSoftware/UPSoftware.ino:205
          CircularShift(SIGROW.SERNUM2) << 1 ^
     d6e:	90 91 05 11 	lds	r25, 0x1105	; 0x801105 <MCP2515::RXB+0x7fbf81>
C:\Users\Martin\Documents\MeyCad\Meycad\Software\UPSoftware/UPSoftware.ino:206
          CircularShift( CircularShift(SIGROW.SERNUM4)) ^
     d72:	40 91 07 11 	lds	r20, 0x1107	; 0x801107 <MCP2515::RXB+0x7fbf83>
C:\Users\Martin\Documents\MeyCad\Meycad\Software\UPSoftware/UPSoftware.ino:207
          CircularShift( CircularShift( CircularShift(SIGROW.SERNUM6))) ^
     d76:	30 91 09 11 	lds	r19, 0x1109	; 0x801109 <MCP2515::RXB+0x7fbf85>
C:\Users\Martin\Documents\MeyCad\Meycad\Software\UPSoftware/UPSoftware.ino:208
          CircularShift( CircularShift( CircularShift( CircularShift(SIGROW.SERNUM8)))));
     d7a:	20 91 0b 11 	lds	r18, 0x110B	; 0x80110b <MCP2515::RXB+0x7fbf87>
CircularShift():
C:\Users\Martin\Documents\MeyCad\Meycad\Software\UPSoftware/UPSoftware.ino:185
}


byte CircularShift(byte b)
{
  return (b << 1) | (b >> 7 & 1);
     d7e:	89 2f       	mov	r24, r25
     d80:	88 0f       	add	r24, r24
     d82:	81 1d       	adc	r24, r1
GetDeviceIdLow():
C:\Users\Martin\Documents\MeyCad\Meycad\Software\UPSoftware/UPSoftware.ino:205
  return ((commandId & 0xFFF) * 0x10000) | ( DeviceId[0] << 8) | (DeviceId[1]) | CAN_EFF_FLAG;
}

byte GetDeviceIdLow() {
  return (SIGROW.SERNUM0 ^
          CircularShift(SIGROW.SERNUM2) << 1 ^
     d84:	88 0f       	add	r24, r24
C:\Users\Martin\Documents\MeyCad\Meycad\Software\UPSoftware/UPSoftware.ino:204
{
  return ((commandId & 0xFFF) * 0x10000) | ( DeviceId[0] << 8) | (DeviceId[1]) | CAN_EFF_FLAG;
}

byte GetDeviceIdLow() {
  return (SIGROW.SERNUM0 ^
     d86:	85 27       	eor	r24, r21
CircularShift():
C:\Users\Martin\Documents\MeyCad\Meycad\Software\UPSoftware/UPSoftware.ino:185
}


byte CircularShift(byte b)
{
  return (b << 1) | (b >> 7 & 1);
     d88:	94 2f       	mov	r25, r20
     d8a:	99 0f       	add	r25, r25
     d8c:	91 1d       	adc	r25, r1
     d8e:	99 0f       	add	r25, r25
     d90:	91 1d       	adc	r25, r1
GetDeviceIdLow():
C:\Users\Martin\Documents\MeyCad\Meycad\Software\UPSoftware/UPSoftware.ino:205
  return ((commandId & 0xFFF) * 0x10000) | ( DeviceId[0] << 8) | (DeviceId[1]) | CAN_EFF_FLAG;
}

byte GetDeviceIdLow() {
  return (SIGROW.SERNUM0 ^
          CircularShift(SIGROW.SERNUM2) << 1 ^
     d92:	89 27       	eor	r24, r25
CircularShift():
C:\Users\Martin\Documents\MeyCad\Meycad\Software\UPSoftware/UPSoftware.ino:185
}


byte CircularShift(byte b)
{
  return (b << 1) | (b >> 7 & 1);
     d94:	93 2f       	mov	r25, r19
     d96:	92 95       	swap	r25
     d98:	90 fb       	bst	r25, 0
     d9a:	97 95       	ror	r25
     d9c:	97 f9       	bld	r25, 7
GetDeviceIdLow():
C:\Users\Martin\Documents\MeyCad\Meycad\Software\UPSoftware/UPSoftware.ino:206
}

byte GetDeviceIdLow() {
  return (SIGROW.SERNUM0 ^
          CircularShift(SIGROW.SERNUM2) << 1 ^
          CircularShift( CircularShift(SIGROW.SERNUM4)) ^
     d9e:	89 27       	eor	r24, r25
CircularShift():
C:\Users\Martin\Documents\MeyCad\Meycad\Software\UPSoftware/UPSoftware.ino:185
}


byte CircularShift(byte b)
{
  return (b << 1) | (b >> 7 & 1);
     da0:	92 2f       	mov	r25, r18
     da2:	92 95       	swap	r25
GetDeviceIdLow():
C:\Users\Martin\Documents\MeyCad\Meycad\Software\UPSoftware/UPSoftware.ino:207

byte GetDeviceIdLow() {
  return (SIGROW.SERNUM0 ^
          CircularShift(SIGROW.SERNUM2) << 1 ^
          CircularShift( CircularShift(SIGROW.SERNUM4)) ^
          CircularShift( CircularShift( CircularShift(SIGROW.SERNUM6))) ^
     da4:	89 27       	eor	r24, r25
setup():
C:\Users\Martin\Documents\MeyCad\Meycad\Software\UPSoftware/UPSoftware.ino:75
    pinMode(PinPD2[i].pin_id, INPUT_PULLUP);
    PinPD2[i].pin_state = ReadPin(&PinPD2[i]);
  }


  DeviceId[0] = GetDeviceIdLow();
     da6:	80 93 00 3c 	sts	0x3C00, r24	; 0x803c00 <__DATA_REGION_ORIGIN__>
GetDeviceIdHigh():
C:\Users\Martin\Documents\MeyCad\Meycad\Software\UPSoftware/UPSoftware.ino:212
          CircularShift( CircularShift( CircularShift(SIGROW.SERNUM6))) ^
          CircularShift( CircularShift( CircularShift( CircularShift(SIGROW.SERNUM8)))));
}

byte GetDeviceIdHigh() {
  return (SIGROW.SERNUM1 ^
     daa:	50 91 04 11 	lds	r21, 0x1104	; 0x801104 <MCP2515::RXB+0x7fbf80>
C:\Users\Martin\Documents\MeyCad\Meycad\Software\UPSoftware/UPSoftware.ino:213
          CircularShift(SIGROW.SERNUM3) << 1 ^
     dae:	40 91 06 11 	lds	r20, 0x1106	; 0x801106 <MCP2515::RXB+0x7fbf82>
C:\Users\Martin\Documents\MeyCad\Meycad\Software\UPSoftware/UPSoftware.ino:214
          CircularShift( CircularShift(SIGROW.SERNUM5)) ^
     db2:	30 91 08 11 	lds	r19, 0x1108	; 0x801108 <MCP2515::RXB+0x7fbf84>
C:\Users\Martin\Documents\MeyCad\Meycad\Software\UPSoftware/UPSoftware.ino:215
          CircularShift( CircularShift( CircularShift(SIGROW.SERNUM7))) ^
     db6:	20 91 0a 11 	lds	r18, 0x110A	; 0x80110a <MCP2515::RXB+0x7fbf86>
C:\Users\Martin\Documents\MeyCad\Meycad\Software\UPSoftware/UPSoftware.ino:216
          CircularShift( CircularShift( CircularShift( CircularShift(SIGROW.SERNUM9)))));
     dba:	90 91 0c 11 	lds	r25, 0x110C	; 0x80110c <MCP2515::RXB+0x7fbf88>
CircularShift():
C:\Users\Martin\Documents\MeyCad\Meycad\Software\UPSoftware/UPSoftware.ino:185
}


byte CircularShift(byte b)
{
  return (b << 1) | (b >> 7 & 1);
     dbe:	44 0f       	add	r20, r20
     dc0:	41 1d       	adc	r20, r1
GetDeviceIdHigh():
C:\Users\Martin\Documents\MeyCad\Meycad\Software\UPSoftware/UPSoftware.ino:213
          CircularShift( CircularShift( CircularShift( CircularShift(SIGROW.SERNUM8)))));
}

byte GetDeviceIdHigh() {
  return (SIGROW.SERNUM1 ^
          CircularShift(SIGROW.SERNUM3) << 1 ^
     dc2:	44 0f       	add	r20, r20
C:\Users\Martin\Documents\MeyCad\Meycad\Software\UPSoftware/UPSoftware.ino:212
          CircularShift( CircularShift( CircularShift(SIGROW.SERNUM6))) ^
          CircularShift( CircularShift( CircularShift( CircularShift(SIGROW.SERNUM8)))));
}

byte GetDeviceIdHigh() {
  return (SIGROW.SERNUM1 ^
     dc4:	45 27       	eor	r20, r21
CircularShift():
C:\Users\Martin\Documents\MeyCad\Meycad\Software\UPSoftware/UPSoftware.ino:185
}


byte CircularShift(byte b)
{
  return (b << 1) | (b >> 7 & 1);
     dc6:	33 0f       	add	r19, r19
     dc8:	31 1d       	adc	r19, r1
     dca:	33 0f       	add	r19, r19
     dcc:	31 1d       	adc	r19, r1
GetDeviceIdHigh():
C:\Users\Martin\Documents\MeyCad\Meycad\Software\UPSoftware/UPSoftware.ino:213
          CircularShift( CircularShift( CircularShift( CircularShift(SIGROW.SERNUM8)))));
}

byte GetDeviceIdHigh() {
  return (SIGROW.SERNUM1 ^
          CircularShift(SIGROW.SERNUM3) << 1 ^
     dce:	43 27       	eor	r20, r19
CircularShift():
C:\Users\Martin\Documents\MeyCad\Meycad\Software\UPSoftware/UPSoftware.ino:185
}


byte CircularShift(byte b)
{
  return (b << 1) | (b >> 7 & 1);
     dd0:	22 95       	swap	r18
     dd2:	20 fb       	bst	r18, 0
     dd4:	27 95       	ror	r18
     dd6:	27 f9       	bld	r18, 7
GetDeviceIdHigh():
C:\Users\Martin\Documents\MeyCad\Meycad\Software\UPSoftware/UPSoftware.ino:214
}

byte GetDeviceIdHigh() {
  return (SIGROW.SERNUM1 ^
          CircularShift(SIGROW.SERNUM3) << 1 ^
          CircularShift( CircularShift(SIGROW.SERNUM5)) ^
     dd8:	42 27       	eor	r20, r18
CircularShift():
C:\Users\Martin\Documents\MeyCad\Meycad\Software\UPSoftware/UPSoftware.ino:185
}


byte CircularShift(byte b)
{
  return (b << 1) | (b >> 7 & 1);
     dda:	92 95       	swap	r25
GetDeviceIdHigh():
C:\Users\Martin\Documents\MeyCad\Meycad\Software\UPSoftware/UPSoftware.ino:215

byte GetDeviceIdHigh() {
  return (SIGROW.SERNUM1 ^
          CircularShift(SIGROW.SERNUM3) << 1 ^
          CircularShift( CircularShift(SIGROW.SERNUM5)) ^
          CircularShift( CircularShift( CircularShift(SIGROW.SERNUM7))) ^
     ddc:	49 27       	eor	r20, r25
setup():
C:\Users\Martin\Documents\MeyCad\Meycad\Software\UPSoftware/UPSoftware.ino:76
    PinPD2[i].pin_state = ReadPin(&PinPD2[i]);
  }


  DeviceId[0] = GetDeviceIdLow();
  DeviceId[1] = GetDeviceIdHigh();
     dde:	40 93 01 3c 	sts	0x3C01, r20	; 0x803c01 <__DATA_REGION_ORIGIN__+0x1>
CreateCanId():
C:\Users\Martin\Documents\MeyCad\Meycad\Software\UPSoftware/UPSoftware.ino:200
  return (canFrameId / 0x10000) & 0xFFF;
}

uint32_t CreateCanId(uint32_t commandId)
{
  return ((commandId & 0xFFF) * 0x10000) | ( DeviceId[0] << 8) | (DeviceId[1]) | CAN_EFF_FLAG;
     de2:	90 e0       	ldi	r25, 0x00	; 0
     de4:	98 2f       	mov	r25, r24
     de6:	88 27       	eor	r24, r24
     de8:	09 2e       	mov	r0, r25
     dea:	00 0c       	add	r0, r0
     dec:	aa 0b       	sbc	r26, r26
     dee:	bb 0b       	sbc	r27, r27
     df0:	50 e0       	ldi	r21, 0x00	; 0
     df2:	70 e0       	ldi	r23, 0x00	; 0
     df4:	60 e0       	ldi	r22, 0x00	; 0
     df6:	6f 6f       	ori	r22, 0xFF	; 255
     df8:	7f 68       	ori	r23, 0x8F	; 143
     dfa:	84 2b       	or	r24, r20
     dfc:	95 2b       	or	r25, r21
     dfe:	a6 2b       	or	r26, r22
     e00:	b7 2b       	or	r27, r23
SendSerialPackage():
C:\Users\Martin\Documents\MeyCad\Meycad\Software\UPSoftware/UPSoftware.ino:128
}


void SendSerialPackage()
{
  _frame.can_id = CreateCanId(0xFFFF);
     e02:	80 93 30 3c 	sts	0x3C30, r24	; 0x803c30 <_frame>
     e06:	90 93 31 3c 	sts	0x3C31, r25	; 0x803c31 <_frame+0x1>
     e0a:	a0 93 32 3c 	sts	0x3C32, r26	; 0x803c32 <_frame+0x2>
     e0e:	b0 93 33 3c 	sts	0x3C33, r27	; 0x803c33 <_frame+0x3>
C:\Users\Martin\Documents\MeyCad\Meycad\Software\UPSoftware/UPSoftware.ino:129
  _frame.can_dlc = 4;
     e12:	84 e0       	ldi	r24, 0x04	; 4
     e14:	80 93 34 3c 	sts	0x3C34, r24	; 0x803c34 <_frame+0x4>
C:\Users\Martin\Documents\MeyCad\Meycad\Software\UPSoftware/UPSoftware.ino:131

  _frame.data[0] = SoftwareVersionHigh;
     e18:	81 e0       	ldi	r24, 0x01	; 1
     e1a:	80 93 38 3c 	sts	0x3C38, r24	; 0x803c38 <_frame+0x8>
C:\Users\Martin\Documents\MeyCad\Meycad\Software\UPSoftware/UPSoftware.ino:132
  _frame.data[1] = SoftwareVersionLow;
     e1e:	10 92 39 3c 	sts	0x3C39, r1	; 0x803c39 <_frame+0x9>
C:\Users\Martin\Documents\MeyCad\Meycad\Software\UPSoftware/UPSoftware.ino:133
  _frame.data[2] = HardwareVersionHigh;
     e22:	82 e0       	ldi	r24, 0x02	; 2
     e24:	80 93 3a 3c 	sts	0x3C3A, r24	; 0x803c3a <_frame+0xa>
C:\Users\Martin\Documents\MeyCad\Meycad\Software\UPSoftware/UPSoftware.ino:134
  _frame.data[3] = HardwareVersionLow;
     e28:	10 92 3b 3c 	sts	0x3C3B, r1	; 0x803c3b <_frame+0xb>
sendMessage():
     e2c:	96 dd       	rcall	.-1236   	; 0x95a <MCP2515::sendMessage(MCP2515::TXBn, can_frame const*) [clone .part.3] [clone .constprop.22]>
loop():
C:\Users\Martin\Documents\MeyCad\Meycad\Software\UPSoftware/UPSoftware.ino:93
      SendSwitchedTriggeredCanPackage(PinPD2[i].meyPinId, PinPD2[i].pin_state);
  }

  if (mcp2515.readMessage(&_frame) == MCP2515::ERROR_OK)
  {
    debugFlag ^= true;
     e2e:	99 24       	eor	r9, r9
     e30:	93 94       	inc	r9
C:\Users\Martin\Documents\MeyCad\Meycad\Software\UPSoftware/UPSoftware.ino:104

    PinState *adressedPin;
    for (int i = 0; i <= PinCount - 1; i++)
      if (PinPD2[i].meyPinId == meyPinId)
      {
        adressedPin = &PinPD2[i];
     e32:	65 e0       	ldi	r22, 0x05	; 5
     e34:	86 2e       	mov	r8, r22
main():
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.1.0\cores\coreX-corefiles/main.cpp:43
  setup();

  for (;;)
  {
    loop();
    if (serialEventRun) serialEventRun();
     e36:	70 e0       	ldi	r23, 0x00	; 0
     e38:	a7 2e       	mov	r10, r23
     e3a:	70 e0       	ldi	r23, 0x00	; 0
     e3c:	b7 2e       	mov	r11, r23
SendSwitchedTriggeredCanPackage():
C:\Users\Martin\Documents\MeyCad\Meycad\Software\UPSoftware/UPSoftware.ino:142


void SendSwitchedTriggeredCanPackage(byte pinId, int state)
{
  _frame.can_id = CreateCanId(0x050);
  _frame.can_dlc = 2;
     e3e:	e2 e0       	ldi	r30, 0x02	; 2
     e40:	7e 2e       	mov	r7, r30
setNormalMode():
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:170
     e42:	33 e0       	ldi	r19, 0x03	; 3
     e44:	c3 2e       	mov	r12, r19
     e46:	3c e3       	ldi	r19, 0x3C	; 60
     e48:	d3 2e       	mov	r13, r19
CheckPinStatus():
C:\Users\Martin\Documents\MeyCad\Meycad\Software\UPSoftware/UPSoftware.ino:221
          CircularShift( CircularShift( CircularShift( CircularShift(SIGROW.SERNUM9)))));
}

bool CheckPinStatus(PinState * state)
{
  if (!state->is_input)
     e4a:	f6 01       	movw	r30, r12
     e4c:	83 81       	ldd	r24, Z+3	; 0x03
     e4e:	88 23       	and	r24, r24
     e50:	c1 f1       	breq	.+112    	; 0xec2 <main+0x3e6>
C:\Users\Martin\Documents\MeyCad\Meycad\Software\UPSoftware/UPSoftware.ino:224
    return false;

  bool newValue = ReadPin(state);
     e52:	c6 01       	movw	r24, r12
     e54:	31 db       	rcall	.-2462   	; 0x4b8 <ReadPin(PinState*)>
C:\Users\Martin\Documents\MeyCad\Meycad\Software\UPSoftware/UPSoftware.ino:227


  if (newValue != state->pin_state)
     e56:	f6 01       	movw	r30, r12
     e58:	92 81       	ldd	r25, Z+2	; 0x02
     e5a:	89 17       	cp	r24, r25
     e5c:	91 f1       	breq	.+100    	; 0xec2 <main+0x3e6>
C:\Users\Martin\Documents\MeyCad\Meycad\Software\UPSoftware/UPSoftware.ino:229
  {
    delay(10);
     e5e:	6a e0       	ldi	r22, 0x0A	; 10
     e60:	70 e0       	ldi	r23, 0x00	; 0
     e62:	80 e0       	ldi	r24, 0x00	; 0
     e64:	90 e0       	ldi	r25, 0x00	; 0
     e66:	fc da       	rcall	.-2568   	; 0x460 <delay>
C:\Users\Martin\Documents\MeyCad\Meycad\Software\UPSoftware/UPSoftware.ino:230
    newValue = ReadPin(state);
     e68:	c6 01       	movw	r24, r12
     e6a:	26 db       	rcall	.-2484   	; 0x4b8 <ReadPin(PinState*)>
C:\Users\Martin\Documents\MeyCad\Meycad\Software\UPSoftware/UPSoftware.ino:231
    if (newValue != state->pin_state)
     e6c:	f6 01       	movw	r30, r12
     e6e:	92 81       	ldd	r25, Z+2	; 0x02
     e70:	89 17       	cp	r24, r25
     e72:	39 f1       	breq	.+78     	; 0xec2 <main+0x3e6>
C:\Users\Martin\Documents\MeyCad\Meycad\Software\UPSoftware/UPSoftware.ino:233
    {
      state->pin_state = newValue;
     e74:	82 83       	std	Z+2, r24	; 0x02
loop():
C:\Users\Martin\Documents\MeyCad\Meycad\Software\UPSoftware/UPSoftware.ino:88
void loop()
{
  for (int i = 0; i <= PinCount - 1; i++)
  {
    if (CheckPinStatus(&PinPD2[i]))
      SendSwitchedTriggeredCanPackage(PinPD2[i].meyPinId, PinPD2[i].pin_state);
     e76:	94 81       	ldd	r25, Z+4	; 0x04
CreateCanId():
C:\Users\Martin\Documents\MeyCad\Meycad\Software\UPSoftware/UPSoftware.ino:200
  return (canFrameId / 0x10000) & 0xFFF;
}

uint32_t CreateCanId(uint32_t commandId)
{
  return ((commandId & 0xFFF) * 0x10000) | ( DeviceId[0] << 8) | (DeviceId[1]) | CAN_EFF_FLAG;
     e78:	40 91 00 3c 	lds	r20, 0x3C00	; 0x803c00 <__DATA_REGION_ORIGIN__>
     e7c:	50 e0       	ldi	r21, 0x00	; 0
     e7e:	54 2f       	mov	r21, r20
     e80:	44 27       	eor	r20, r20
     e82:	05 2e       	mov	r0, r21
     e84:	00 0c       	add	r0, r0
     e86:	66 0b       	sbc	r22, r22
     e88:	77 0b       	sbc	r23, r23
     e8a:	20 90 01 3c 	lds	r2, 0x3C01	; 0x803c01 <__DATA_REGION_ORIGIN__+0x1>
     e8e:	31 2c       	mov	r3, r1
     e90:	51 2c       	mov	r5, r1
     e92:	41 2c       	mov	r4, r1
     e94:	f0 e5       	ldi	r31, 0x50	; 80
     e96:	4f 2a       	or	r4, r31
     e98:	68 94       	set
     e9a:	57 f8       	bld	r5, 7
     e9c:	42 29       	or	r20, r2
     e9e:	53 29       	or	r21, r3
     ea0:	64 29       	or	r22, r4
     ea2:	75 29       	or	r23, r5
SendSwitchedTriggeredCanPackage():
C:\Users\Martin\Documents\MeyCad\Meycad\Software\UPSoftware/UPSoftware.ino:141
}


void SendSwitchedTriggeredCanPackage(byte pinId, int state)
{
  _frame.can_id = CreateCanId(0x050);
     ea4:	40 93 30 3c 	sts	0x3C30, r20	; 0x803c30 <_frame>
     ea8:	50 93 31 3c 	sts	0x3C31, r21	; 0x803c31 <_frame+0x1>
     eac:	60 93 32 3c 	sts	0x3C32, r22	; 0x803c32 <_frame+0x2>
     eb0:	70 93 33 3c 	sts	0x3C33, r23	; 0x803c33 <_frame+0x3>
C:\Users\Martin\Documents\MeyCad\Meycad\Software\UPSoftware/UPSoftware.ino:142
  _frame.can_dlc = 2;
     eb4:	70 92 34 3c 	sts	0x3C34, r7	; 0x803c34 <_frame+0x4>
C:\Users\Martin\Documents\MeyCad\Meycad\Software\UPSoftware/UPSoftware.ino:143
  _frame.data[0] = pinId;
     eb8:	90 93 38 3c 	sts	0x3C38, r25	; 0x803c38 <_frame+0x8>
C:\Users\Martin\Documents\MeyCad\Meycad\Software\UPSoftware/UPSoftware.ino:144
  _frame.data[1] = state;
     ebc:	80 93 39 3c 	sts	0x3C39, r24	; 0x803c39 <_frame+0x9>
sendMessage():
     ec0:	4c dd       	rcall	.-1384   	; 0x95a <MCP2515::sendMessage(MCP2515::TXBn, can_frame const*) [clone .part.3] [clone .constprop.22]>
     ec2:	25 e0       	ldi	r18, 0x05	; 5
     ec4:	c2 0e       	add	r12, r18
     ec6:	d1 1c       	adc	r13, r1
loop():
C:\Users\Martin\Documents\MeyCad\Meycad\Software\UPSoftware/UPSoftware.ino:85


bool debugFlag = false;
void loop()
{
  for (int i = 0; i <= PinCount - 1; i++)
     ec8:	c0 16       	cp	r12, r16
     eca:	d1 06       	cpc	r13, r17
     ecc:	09 f0       	breq	.+2      	; 0xed0 <main+0x3f4>
     ece:	bd cf       	rjmp	.-134    	; 0xe4a <main+0x36e>
getStatus():
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:140
    endSPI();
}

uint8_t MCP2515::getStatus(void)
{
    startSPI();
     ed0:	52 db       	rcall	.-2396   	; 0x576 <MCP2515::startSPI() [clone .constprop.26]>
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:141
    SPI.transfer(INSTRUCTION_READ_STATUS);
     ed2:	80 ea       	ldi	r24, 0xA0	; 160
     ed4:	01 d9       	rcall	.-3582   	; 0xd8 <SPIClass::transfer(unsigned char) [clone .constprop.31]>
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:142
    uint8_t i = SPI.transfer(0x00);
     ed6:	80 e0       	ldi	r24, 0x00	; 0
     ed8:	ff d8       	rcall	.-3586   	; 0xd8 <SPIClass::transfer(unsigned char) [clone .constprop.31]>
     eda:	d8 2e       	mov	r13, r24
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:143
    endSPI();
     edc:	ec d9       	rcall	.-3112   	; 0x2b6 <MCP2515::endSPI() [clone .constprop.32]>
readMessage():
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:672
{
    ERROR rc;
    uint8_t stat = getStatus();

    if ( stat & STAT_RX0IF ) {
        rc = readMessage(RXB0, frame);
     ede:	90 e0       	ldi	r25, 0x00	; 0
     ee0:	80 e0       	ldi	r24, 0x00	; 0
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:671
MCP2515::ERROR MCP2515::readMessage(struct can_frame *frame)
{
    ERROR rc;
    uint8_t stat = getStatus();

    if ( stat & STAT_RX0IF ) {
     ee2:	d0 fc       	sbrc	r13, 0
     ee4:	04 c0       	rjmp	.+8      	; 0xeee <main+0x412>
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:673
        rc = readMessage(RXB0, frame);
    } else if ( stat & STAT_RX1IF ) {
     ee6:	d1 fe       	sbrs	r13, 1
     ee8:	35 c0       	rjmp	.+106    	; 0xf54 <main+0x478>
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:674
        rc = readMessage(RXB1, frame);
     eea:	81 e0       	ldi	r24, 0x01	; 1
     eec:	90 e0       	ldi	r25, 0x00	; 0
     eee:	ad dc       	rcall	.-1702   	; 0x84a <MCP2515::readMessage(MCP2515::RXBn, can_frame*) [clone .constprop.6]>
loop():
C:\Users\Martin\Documents\MeyCad\Meycad\Software\UPSoftware/UPSoftware.ino:91
  {
    if (CheckPinStatus(&PinPD2[i]))
      SendSwitchedTriggeredCanPackage(PinPD2[i].meyPinId, PinPD2[i].pin_state);
  }

  if (mcp2515.readMessage(&_frame) == MCP2515::ERROR_OK)
     ef0:	89 2b       	or	r24, r25
     ef2:	81 f5       	brne	.+96     	; 0xf54 <main+0x478>
C:\Users\Martin\Documents\MeyCad\Meycad\Software\UPSoftware/UPSoftware.ino:93
  {
    debugFlag ^= true;
     ef4:	80 91 02 3c 	lds	r24, 0x3C02	; 0x803c02 <debugFlag>
     ef8:	89 25       	eor	r24, r9
     efa:	80 93 02 3c 	sts	0x3C02, r24	; 0x803c02 <debugFlag>
C:\Users\Martin\Documents\MeyCad\Meycad\Software\UPSoftware/UPSoftware.ino:97



    int meyPinId = _frame.data[0];
     efe:	20 91 38 3c 	lds	r18, 0x3C38	; 0x803c38 <_frame+0x8>
C:\Users\Martin\Documents\MeyCad\Meycad\Software\UPSoftware/UPSoftware.ino:98
    bool state = _frame.data[1] > 0;
     f02:	dd 24       	eor	r13, r13
     f04:	d3 94       	inc	r13
     f06:	80 91 39 3c 	lds	r24, 0x3C39	; 0x803c39 <_frame+0x9>
     f0a:	81 11       	cpse	r24, r1
     f0c:	01 c0       	rjmp	.+2      	; 0xf10 <main+0x434>
     f0e:	d1 2c       	mov	r13, r1
     f10:	e3 e0       	ldi	r30, 0x03	; 3
     f12:	fc e3       	ldi	r31, 0x3C	; 60
main():
C:\Users\Martin\Documents\MeyCad\Meycad\Software\UPSoftware/UPSoftware.ino:101

    PinState *adressedPin;
    for (int i = 0; i <= PinCount - 1; i++)
     f14:	90 e0       	ldi	r25, 0x00	; 0
     f16:	80 e0       	ldi	r24, 0x00	; 0
loop():
C:\Users\Martin\Documents\MeyCad\Meycad\Software\UPSoftware/UPSoftware.ino:102
      if (PinPD2[i].meyPinId == meyPinId)
     f18:	34 81       	ldd	r19, Z+4	; 0x04
     f1a:	23 13       	cpse	r18, r19
     f1c:	84 c0       	rjmp	.+264    	; 0x1026 <main+0x54a>
C:\Users\Martin\Documents\MeyCad\Meycad\Software\UPSoftware/UPSoftware.ino:104
      {
        adressedPin = &PinPD2[i];
     f1e:	88 9e       	mul	r8, r24
     f20:	90 01       	movw	r18, r0
     f22:	89 9e       	mul	r8, r25
     f24:	30 0d       	add	r19, r0
     f26:	11 24       	eor	r1, r1
     f28:	c9 01       	movw	r24, r18
     f2a:	8d 5f       	subi	r24, 0xFD	; 253
     f2c:	93 4c       	sbci	r25, 0xC3	; 195
     f2e:	7c 01       	movw	r14, r24
C:\Users\Martin\Documents\MeyCad\Meycad\Software\UPSoftware/UPSoftware.ino:110
        break;
      }

    if (adressedPin != NULL)
    {
      if (adressedPin->is_input == true)
     f30:	f7 01       	movw	r30, r14
     f32:	83 81       	ldd	r24, Z+3	; 0x03
     f34:	88 23       	and	r24, r24
     f36:	39 f0       	breq	.+14     	; 0xf46 <main+0x46a>
     f38:	80 81       	ld	r24, Z
pinMode():
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.1.0\cores\coreX-corefiles/wiring_digital.c:31
     f3a:	89 32       	cpi	r24, 0x29	; 41
     f3c:	10 f4       	brcc	.+4      	; 0xf42 <main+0x466>
     f3e:	61 e0       	ldi	r22, 0x01	; 1
     f40:	d5 d8       	rcall	.-3670   	; 0xec <pinMode.part.1>
loop():
C:\Users\Martin\Documents\MeyCad\Meycad\Software\UPSoftware/UPSoftware.ino:113
      {
        pinMode(adressedPin->pin_id, OUTPUT);
        adressedPin->is_input = false;
     f42:	f7 01       	movw	r30, r14
     f44:	13 82       	std	Z+3, r1	; 0x03
C:\Users\Martin\Documents\MeyCad\Meycad\Software\UPSoftware/UPSoftware.ino:115
      }
      adressedPin->pin_state = state;
     f46:	f7 01       	movw	r30, r14
     f48:	d2 82       	std	Z+2, r13	; 0x02
C:\Users\Martin\Documents\MeyCad\Meycad\Software\UPSoftware/UPSoftware.ino:116
      digitalWrite(adressedPin->pin_id, state);
     f4a:	80 81       	ld	r24, Z
digitalWrite():
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.1.0\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);
     f4c:	89 32       	cpi	r24, 0x29	; 41
     f4e:	10 f4       	brcc	.+4      	; 0xf54 <main+0x478>
     f50:	6d 2d       	mov	r22, r13
     f52:	73 d9       	rcall	.-3354   	; 0x23a <digitalWrite.part.2>
loop():
C:\Users\Martin\Documents\MeyCad\Meycad\Software\UPSoftware/UPSoftware.ino:122
    }



  }
  delay(20);
     f54:	64 e1       	ldi	r22, 0x14	; 20
     f56:	70 e0       	ldi	r23, 0x00	; 0
     f58:	80 e0       	ldi	r24, 0x00	; 0
     f5a:	90 e0       	ldi	r25, 0x00	; 0
     f5c:	81 da       	rcall	.-2814   	; 0x460 <delay>
main():
C:\Users\Martin\AppData\Local\Arduino15\packages\MegaCoreX\hardware\megaavr\1.1.0\cores\coreX-corefiles/main.cpp:43
     f5e:	a1 14       	cp	r10, r1
     f60:	b1 04       	cpc	r11, r1
     f62:	09 f4       	brne	.+2      	; 0xf66 <main+0x48a>
     f64:	6e cf       	rjmp	.-292    	; 0xe42 <main+0x366>
     f66:	4c d8       	rcall	.-3944   	; 0x0 <__vectors>
     f68:	6c cf       	rjmp	.-296    	; 0xe42 <main+0x366>
setFilter():
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:561
        return res;
    }

    REGISTER reg;

    switch (num) {
     f6a:	04 30       	cpi	r16, 0x04	; 4
     f6c:	11 05       	cpc	r17, r1
     f6e:	09 f4       	brne	.+2      	; 0xf72 <main+0x496>
     f70:	47 c0       	rjmp	.+142    	; 0x1000 <main+0x524>
     f72:	08 f4       	brcc	.+2      	; 0xf76 <main+0x49a>
     f74:	43 c0       	rjmp	.+134    	; 0xffc <main+0x520>
     f76:	05 30       	cpi	r16, 0x05	; 5
     f78:	11 05       	cpc	r17, r1
     f7a:	09 f0       	breq	.+2      	; 0xf7e <main+0x4a2>
     f7c:	d2 ce       	rjmp	.-604    	; 0xd22 <main+0x246>
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;
     f7e:	88 e1       	ldi	r24, 0x18	; 24
     f80:	01 c0       	rjmp	.+2      	; 0xf84 <main+0x4a8>
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:562
    }

    REGISTER reg;

    switch (num) {
        case RXF0: reg = MCP_RXF0SIDH; break;
     f82:	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) {
     f84:	f1 e0       	ldi	r31, 0x01	; 1
     f86:	cf 16       	cp	r12, r31
     f88:	d1 04       	cpc	r13, r1
     f8a:	f1 f5       	brne	.+124    	; 0x1008 <main+0x52c>
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:514
        buffer[MCP_EID0] = (uint8_t) (canid & 0xFF);
     f8c:	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);
     f8e:	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;
     f90:	9c 8e       	std	Y+28, r9	; 0x1c
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:520
        buffer[MCP_SIDH] = (uint8_t) (canid >> 5);
     f92:	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);
     f94:	44 e0       	ldi	r20, 0x04	; 4
     f96:	be 01       	movw	r22, r28
     f98:	65 5e       	subi	r22, 0xE5	; 229
     f9a:	7f 4f       	sbci	r23, 0xFF	; 255
     f9c:	ad db       	rcall	.-2214   	; 0x6f8 <MCP2515::setRegisters(MCP2515::REGISTER, unsigned char const*, unsigned char) [clone .constprop.25]>
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++) {
     f9e:	2f ef       	ldi	r18, 0xFF	; 255
     fa0:	c2 1a       	sub	r12, r18
     fa2:	d2 0a       	sbc	r13, r18
     fa4:	86 e0       	ldi	r24, 0x06	; 6
     fa6:	c8 16       	cp	r12, r24
     fa8:	d1 04       	cpc	r13, r1
     faa:	09 f0       	breq	.+2      	; 0xfae <main+0x4d2>
     fac:	a4 ce       	rjmp	.-696    	; 0xcf6 <main+0x21a>
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:74
        if (result != ERROR_OK) {
            return result;
        }
    }

    MASK masks[] = {MASK0, MASK1};
     fae:	1f 8e       	std	Y+31, r1	; 0x1f
     fb0:	18 a2       	std	Y+32, r1	; 0x20
     fb2:	81 e0       	ldi	r24, 0x01	; 1
     fb4:	90 e0       	ldi	r25, 0x00	; 0
     fb6:	89 a3       	std	Y+33, r24	; 0x21
     fb8:	9a a3       	std	Y+34, r25	; 0x22
     fba:	8e 01       	movw	r16, r28
     fbc:	01 5e       	subi	r16, 0xE1	; 225
     fbe:	1f 4f       	sbci	r17, 0xFF	; 255
     fc0:	5e 01       	movw	r10, r28
     fc2:	93 e2       	ldi	r25, 0x23	; 35
     fc4:	a9 0e       	add	r10, r25
     fc6:	b1 1c       	adc	r11, 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;
     fc8:	a8 e0       	ldi	r26, 0x08	; 8
     fca:	9a 2e       	mov	r9, r26
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);
     fcc:	f8 01       	movw	r30, r16
     fce:	c1 90       	ld	r12, Z+
     fd0:	d1 90       	ld	r13, Z+
     fd2:	8f 01       	movw	r16, r30
setConfigMode():
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:150
    return i;
}

MCP2515::ERROR MCP2515::setConfigMode()
{
    return setMode(CANCTRL_REQOP_CONFIG);
     fd4:	80 e8       	ldi	r24, 0x80	; 128
     fd6:	d0 db       	rcall	.-2144   	; 0x778 <MCP2515::setMode(MCP2515::CANCTRL_REQOP_MODE) [clone .constprop.20]>
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) {
     fd8:	89 2b       	or	r24, r25
     fda:	09 f0       	breq	.+2      	; 0xfde <main+0x502>
     fdc:	a2 ce       	rjmp	.-700    	; 0xd22 <main+0x246>
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);
     fde:	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);
     fe0:	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;
     fe2:	9c 8e       	std	Y+28, r9	; 0x1c
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:520
        buffer[MCP_SIDH] = (uint8_t) (canid >> 5);
     fe4:	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) {
     fe6:	c1 14       	cp	r12, r1
     fe8:	d1 04       	cpc	r13, r1
     fea:	99 f0       	breq	.+38     	; 0x1012 <main+0x536>
     fec:	ca 94       	dec	r12
     fee:	cd 28       	or	r12, r13
     ff0:	09 f0       	breq	.+2      	; 0xff4 <main+0x518>
     ff2:	97 ce       	rjmp	.-722    	; 0xd22 <main+0x246>
main():
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:542
        case MASK0: reg = MCP_RXM0SIDH; break;
        case MASK1: reg = MCP_RXM1SIDH; break;
     ff4:	84 e2       	ldi	r24, 0x24	; 36
     ff6:	0e c0       	rjmp	.+28     	; 0x1014 <main+0x538>
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;
     ff8:	88 e0       	ldi	r24, 0x08	; 8
     ffa:	c4 cf       	rjmp	.-120    	; 0xf84 <main+0x4a8>
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:565
        case RXF3: reg = MCP_RXF3SIDH; break;
     ffc:	80 e1       	ldi	r24, 0x10	; 16
     ffe:	c2 cf       	rjmp	.-124    	; 0xf84 <main+0x4a8>
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:566
        case RXF4: reg = MCP_RXF4SIDH; break;
    1000:	84 e1       	ldi	r24, 0x14	; 20
    1002:	c0 cf       	rjmp	.-128    	; 0xf84 <main+0x4a8>
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;
    1004:	84 e0       	ldi	r24, 0x04	; 4
    1006:	be cf       	rjmp	.-132    	; 0xf84 <main+0x4a8>
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);
    1008:	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);
    100a:	1c 8e       	std	Y+28, r1	; 0x1c
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:524
        buffer[MCP_EID0] = 0;
    100c:	1e 8e       	std	Y+30, r1	; 0x1e
C:\Users\Martin\Documents\Arduino\libraries\autowp-mcp2515/mcp2515.cpp:525
        buffer[MCP_EID8] = 0;
    100e:	1d 8e       	std	Y+29, r1	; 0x1d
    1010:	c1 cf       	rjmp	.-126    	; 0xf94 <main+0x4b8>
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;
    1012:	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);
    1014:	44 e0       	ldi	r20, 0x04	; 4
    1016:	be 01       	movw	r22, r28
    1018:	65 5e       	subi	r22, 0xE5	; 229
    101a:	7f 4f       	sbci	r23, 0xFF	; 255
    101c:	6d db       	rcall	.-2342   	; 0x6f8 <MCP2515::setRegisters(MCP2515::REGISTER, unsigned char const*, unsigned char) [clone .constprop.25]>
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++) {
    101e:	0a 15       	cp	r16, r10
    1020:	1b 05       	cpc	r17, r11
    1022:	a1 f6       	brne	.-88     	; 0xfcc <main+0x4f0>
    1024:	7e ce       	rjmp	.-772    	; 0xd22 <main+0x246>
loop():
C:\Users\Martin\Documents\MeyCad\Meycad\Software\UPSoftware/UPSoftware.ino:101

    int meyPinId = _frame.data[0];
    bool state = _frame.data[1] > 0;

    PinState *adressedPin;
    for (int i = 0; i <= PinCount - 1; i++)
    1026:	01 96       	adiw	r24, 0x01	; 1
    1028:	35 96       	adiw	r30, 0x05	; 5
    102a:	88 30       	cpi	r24, 0x08	; 8
    102c:	91 05       	cpc	r25, r1
    102e:	09 f0       	breq	.+2      	; 0x1032 <main+0x556>
    1030:	73 cf       	rjmp	.-282    	; 0xf18 <main+0x43c>
    1032:	7e cf       	rjmp	.-260    	; 0xf30 <main+0x454>

00001034 <__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
    1034:	38 d0       	rcall	.+112    	; 0x10a6 <__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
    1036:	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
    1038:	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
    103a:	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
    103c:	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
    103e:	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
    1040:	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
    1042:	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
    1044:	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
    1046:	08 95       	ret

00001048 <__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
    1048:	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
    104a:	10 94       	com	r1

0000104c <__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
    104c:	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
    104e:	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
    1050:	98 f0       	brcs	.+38     	; 0x1078 <__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
    1052:	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
    1054:	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
    1056:	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
    1058:	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
    105a:	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
    105c:	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
    105e:	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
    1060:	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
    1062:	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
    1064:	f4 cf       	rjmp	.-24     	; 0x104e <__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
    1066:	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
    1068:	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
    106a:	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
    106c:	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
    106e:	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
    1070:	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
    1072:	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
    1074:	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
    1076:	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
    1078:	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
    107a:	aa f7       	brpl	.-22     	; 0x1066 <__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
    107c:	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
    107e:	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
    1080:	08 95       	ret

00001082 <__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
    1082:	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
    1084:	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
    1086:	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
    1088:	2a 17       	cp	r18, r26
    108a:	30 05       	cpc	r19, r0
    108c:	40 05       	cpc	r20, r0
    108e:	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
    1090:	60 05       	cpc	r22, r0
    1092:	70 05       	cpc	r23, r0
    1094:	80 05       	cpc	r24, r0
    1096:	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
    1098:	08 95       	ret

0000109a <__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
    109a:	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
    109c:	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
    109e:	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
    10a0:	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
    10a2:	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
    10a4:	09 94       	ijmp

000010a6 <__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
    10a6:	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
    10a8:	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
    10aa:	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
    10ac:	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
    10ae:	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
    10b0:	01 d0       	rcall	.+2      	; 0x10b4 <__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
    10b2:	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
    10b4:	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
    10b6:	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
    10b8:	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
    10ba:	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
    10bc:	08 95       	ret

000010be <memcpy>:
memcpy():
    10be:	fb 01       	movw	r30, r22
    10c0:	dc 01       	movw	r26, r24
    10c2:	02 c0       	rjmp	.+4      	; 0x10c8 <memcpy+0xa>
    10c4:	01 90       	ld	r0, Z+
    10c6:	0d 92       	st	X+, r0
    10c8:	41 50       	subi	r20, 0x01	; 1
    10ca:	50 40       	sbci	r21, 0x00	; 0
    10cc:	d8 f7       	brcc	.-10     	; 0x10c4 <memcpy+0x6>
    10ce:	08 95       	ret

000010d0 <_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
    10d0:	f8 94       	cli

000010d2 <__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
    10d2:	ff cf       	rjmp	.-2      	; 0x10d2 <__stop_program>
