   1               		.file	"SoftPWM.cpp"
   2               	__SP_H__ = 0x3e
   3               	__SP_L__ = 0x3d
   4               	__SREG__ = 0x3f
   5               	__tmp_reg__ = 0
   6               	__zero_reg__ = 1
   9               		.text
  10               	.Ltext0:
 134               	.global	__vector_11
 136               	__vector_11:
 137               		.stabd	46,0,0
   1:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** /*
   2:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** || @author         Brett Hagman <bhagman@wiring.org.co>
   3:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** || @contribution   Paul Stoffregen (paul at pjrc dot com)
   4:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** || @url            http://wiring.org.co/
   5:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** || @url            http://roguerobotics.com/
   6:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** ||
   7:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** || @description
   8:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** || | A Software PWM Library
   9:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** || | 
  10:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** || | Written by Brett Hagman
  11:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** || | http://www.roguerobotics.com/
  12:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** || | bhagman@roguerobotics.com, bhagman@wiring.org.co
  13:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** || |
  14:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** || | A Wiring (and Arduino) Library, for Atmel AVR8 bit series microcontrollers,
  15:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** || | to produce PWM signals on any arbitrary pin.
  16:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** || | 
  17:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** || | It was originally designed for controlling the brightness of LEDs, but
  18:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** || | could be adapted to control servos and other low frequency PWM controlled
  19:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** || | devices as well.
  20:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** || | 
  21:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** || | It uses a single hardware timer (Timer 2) on the Atmel microcontroller to
  22:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** || | generate up to 20 PWM channels (your mileage may vary).
  23:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** || | 
  24:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** || #
  25:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** ||
  26:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** || @license Please see the accompanying LICENSE.txt file for this project.
  27:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** ||
  28:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** || @notes
  29:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** || | Minor modification by Paul Stoffregen to support different timers.
  30:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** || |
  31:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** || #
  32:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** ||
  33:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** || @name Software PWM Library
  34:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** || @type Library
  35:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** || @target Atmel AVR 8 Bit
  36:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** ||
  37:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** || @version 1.0.1
  38:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** ||
  39:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** */
  40:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** 
  41:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** #include <avr/io.h>
  42:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** #include <avr/interrupt.h>
  43:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** #include "SoftPWM.h"
  44:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** #include "SoftPWM_timer.h"
  45:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** 
  46:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** #if defined(WIRING)
  47:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** #include <wiring_private.h>
  48:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** #elif ARDUINO >= 100
  49:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** #include <Arduino.h>
  50:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** #else
  51:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** 
  52:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** #include <Arduino.h>
  53:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** 
  54:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** #endif
  55:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** 
  56:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** #if F_CPU
  57:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** #define SOFTPWM_FREQ 60UL
  58:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** #define SOFTPWM_OCR (F_CPU/(8UL*256UL*SOFTPWM_FREQ))
  59:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** #else
  60:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** // 130 == 60 Hz (on 16 MHz part)
  61:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** #define SOFTPWM_OCR 130
  62:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** #endif
  63:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** 
  64:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** volatile uint8_t _isr_softcount = 0xff;
  65:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** uint8_t _softpwm_defaultPolarity = SOFTPWM_NORMAL;
  66:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** 
  67:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** typedef struct {
  68:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****     // hardware I/O port and pin for this channel
  69:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****     int8_t pin;
  70:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****     uint8_t polarity;
  71:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****     volatile uint8_t *outport;
  72:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****     uint8_t pinmask;
  73:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****     uint8_t pwmvalue;
  74:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****     uint8_t checkval;
  75:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****     uint8_t fadeuprate;
  76:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****     uint8_t fadedownrate;
  77:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** } softPWMChannel;
  78:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** 
  79:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** softPWMChannel _softpwm_channels[SOFTPWM_MAXCHANNELS];
  80:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** 
  81:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** 
  82:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** // Here is the meat and gravy
  83:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** #ifdef WIRING
  84:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** void SoftPWM_Timer_Interrupt(void)
  85:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** #else
  86:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** ISR(TIMER1_COMPA_vect)
  87:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** #endif
  88:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** {
 139               	.LM0:
 140               	.LFBB1:
 141 0000 1F92      		push r1
 142 0002 0F92      		push r0
 143 0004 0FB6      		in r0,__SREG__
 144 0006 0F92      		push r0
 145 0008 1124      		clr __zero_reg__
 146 000a 2F93      		push r18
 147 000c 3F93      		push r19
 148 000e 4F93      		push r20
 149 0010 6F93      		push r22
 150 0012 7F93      		push r23
 151 0014 8F93      		push r24
 152 0016 9F93      		push r25
 153 0018 AF93      		push r26
 154 001a BF93      		push r27
 155 001c EF93      		push r30
 156 001e FF93      		push r31
 157               	/* prologue: Signal */
 158               	/* frame size = 0 */
 159               	/* stack size = 14 */
 160               	.L__stack_usage = 14
  89:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** 
  90:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****     uint8_t i;
  91:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****     int16_t newvalue;
  92:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****     int16_t direction;
  93:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** 
  94:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****     if (++_isr_softcount == 0)
 162               	.LM1:
 163 0020 8091 0000 		lds r24,_isr_softcount
 164 0024 8F5F      		subi r24,lo8(-(1))
 165 0026 8093 0000 		sts _isr_softcount,r24
 166 002a 8823      		tst r24
 167 002c 01F0      		breq .L2
 168               	.L13:
 169 002e E0E0      		ldi r30,lo8(_softpwm_channels)
 170 0030 F0E0      		ldi r31,hi8(_softpwm_channels)
 171 0032 00C0      		rjmp .L3
 172               	.L2:
 173 0034 E0E0      		ldi r30,lo8(_softpwm_channels)
 174 0036 F0E0      		ldi r31,hi8(_softpwm_channels)
 175               	.L14:
  95:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****     {
  96:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****         // set all channels high - let's start again
  97:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****         // and accept new checkvals
  98:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****         for (i = 0; i < SOFTPWM_MAXCHANNELS; i++) {
  99:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****             if (_softpwm_channels[i].fadeuprate > 0 || _softpwm_channels[i].fadedownrate > 0) {
 177               	.LM2:
 178 0038 4781      		ldd r20,Z+7
 179 003a 2581      		ldd r18,Z+5
 180 003c 4111      		cpse r20,__zero_reg__
 181 003e 00C0      		rjmp .L4
 183               	.LM3:
 184 0040 8085      		ldd r24,Z+8
 185 0042 8823      		tst r24
 186 0044 01F0      		breq .L5
 187               	.L4:
 100:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****                 // we want to fade to the new value
 101:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****                 direction = _softpwm_channels[i].pwmvalue - _softpwm_channels[i].checkval;
 189               	.LM4:
 190 0046 30E0      		ldi r19,0
 191 0048 8681      		ldd r24,Z+6
 192 004a 90E0      		ldi r25,0
 193 004c B901      		movw r22,r18
 194 004e 681B      		sub r22,r24
 195 0050 790B      		sbc r23,r25
 102:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** 
 103:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****                 // we will default to jumping to the new value
 104:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****                 newvalue = _softpwm_channels[i].pwmvalue;
 105:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** 
 106:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****                 if (direction > 0 && _softpwm_channels[i].fadeuprate > 0) {
 197               	.LM5:
 198 0052 1616      		cp __zero_reg__,r22
 199 0054 1706      		cpc __zero_reg__,r23
 200 0056 04F4      		brge .L6
 202               	.LM6:
 203 0058 4423      		tst r20
 204 005a 01F0      		breq .L5
 107:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****                     newvalue = _softpwm_channels[i].checkval + _softpwm_channels[i].fadeuprate;
 206               	.LM7:
 207 005c 840F      		add r24,r20
 208 005e 911D      		adc r25,__zero_reg__
 209 0060 8217      		cp r24,r18
 210 0062 9307      		cpc r25,r19
 211 0064 04F4      		brge .L5
 212 0066 00C0      		rjmp .L32
 213               	.L6:
 108:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****                     if (newvalue > _softpwm_channels[i].pwmvalue)
 109:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****                         newvalue = _softpwm_channels[i].pwmvalue;
 110:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****                 } else if (direction < 0 && _softpwm_channels[i].fadedownrate > 0) {
 215               	.LM8:
 216 0068 672B      		or r22,r23
 217 006a 01F0      		breq .L5
 219               	.LM9:
 220 006c 4085      		ldd r20,Z+8
 221 006e 4423      		tst r20
 222 0070 01F0      		breq .L5
 111:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****                     newvalue = _softpwm_channels[i].checkval - _softpwm_channels[i].fadedownrate;
 224               	.LM10:
 225 0072 841B      		sub r24,r20
 226 0074 9109      		sbc r25,__zero_reg__
 227 0076 2817      		cp r18,r24
 228 0078 3907      		cpc r19,r25
 229 007a 04F4      		brge .L5
 230               	.L32:
 231 007c 9C01      		movw r18,r24
 232               	.L5:
 112:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****                     if (newvalue < _softpwm_channels[i].pwmvalue)
 113:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****                         newvalue = _softpwm_channels[i].pwmvalue;
 114:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****                 }
 115:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** 
 116:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****                 _softpwm_channels[i].checkval = newvalue;
 117:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****             } else  // just set the channel to the new value
 118:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****                 _softpwm_channels[i].checkval = _softpwm_channels[i].pwmvalue;
 234               	.LM11:
 235 007e 2683      		std Z+6,r18
 119:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** 
 120:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****             // now set the pin high (if not 0)
 121:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****             if (_softpwm_channels[i].checkval > 0)  // don't set if checkval == 0
 237               	.LM12:
 238 0080 8681      		ldd r24,Z+6
 239 0082 8823      		tst r24
 240 0084 01F0      		breq .L11
 122:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****             {
 123:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****                 if (_softpwm_channels[i].polarity == SOFTPWM_NORMAL)
 242               	.LM13:
 243 0086 9181      		ldd r25,Z+1
 244 0088 A281      		ldd r26,Z+2
 245 008a B381      		ldd r27,Z+3
 246 008c 8481      		ldd r24,Z+4
 247 008e 9111      		cpse r25,__zero_reg__
 248 0090 00C0      		rjmp .L12
 124:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****                     *_softpwm_channels[i].outport |= _softpwm_channels[i].pinmask;
 250               	.LM14:
 251 0092 9C91      		ld r25,X
 252 0094 892B      		or r24,r25
 253 0096 00C0      		rjmp .L33
 254               	.L12:
 125:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****                 else
 126:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****                     *_softpwm_channels[i].outport &= ~(_softpwm_channels[i].pinmask);
 256               	.LM15:
 257 0098 9C91      		ld r25,X
 258 009a 8095      		com r24
 259 009c 8923      		and r24,r25
 260               	.L33:
 261 009e 8C93      		st X,r24
 262               	.L11:
 263 00a0 3996      		adiw r30,9
  98:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****             if (_softpwm_channels[i].fadeuprate > 0 || _softpwm_channels[i].fadedownrate > 0) {
 265               	.LM16:
 266 00a2 80E0      		ldi r24,hi8(_softpwm_channels+180)
 267 00a4 E030      		cpi r30,lo8(_softpwm_channels+180)
 268 00a6 F807      		cpc r31,r24
 269 00a8 01F4      		brne .L14
 270 00aa 00C0      		rjmp .L13
 271               	.L3:
 127:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****             }
 128:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** 
 129:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****         }
 130:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****     }
 131:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** 
 132:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****     for (i = 0; i < SOFTPWM_MAXCHANNELS; i++)
 133:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****     {
 134:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****         if (_softpwm_channels[i].pin >= 0)  // if it's a valid pin
 273               	.LM17:
 274 00ac 8081      		ld r24,Z
 275 00ae 87FD      		sbrc r24,7
 276 00b0 00C0      		rjmp .L15
 135:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****         {
 136:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****             if (_softpwm_channels[i].checkval == _isr_softcount)  // if we have hit the width
 278               	.LM18:
 279 00b2 8091 0000 		lds r24,_isr_softcount
 280 00b6 9681      		ldd r25,Z+6
 281 00b8 9813      		cpse r25,r24
 282 00ba 00C0      		rjmp .L15
 137:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****             {
 138:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****                 // turn off the channel
 139:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****                 if (_softpwm_channels[i].polarity == SOFTPWM_NORMAL)
 284               	.LM19:
 285 00bc 9181      		ldd r25,Z+1
 286 00be A281      		ldd r26,Z+2
 287 00c0 B381      		ldd r27,Z+3
 288 00c2 8481      		ldd r24,Z+4
 289 00c4 9111      		cpse r25,__zero_reg__
 290 00c6 00C0      		rjmp .L16
 140:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****                     *_softpwm_channels[i].outport &= ~(_softpwm_channels[i].pinmask);
 292               	.LM20:
 293 00c8 9C91      		ld r25,X
 294 00ca 8095      		com r24
 295 00cc 8923      		and r24,r25
 296 00ce 00C0      		rjmp .L34
 297               	.L16:
 141:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****                 else
 142:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****                     *_softpwm_channels[i].outport |= _softpwm_channels[i].pinmask;
 299               	.LM21:
 300 00d0 9C91      		ld r25,X
 301 00d2 892B      		or r24,r25
 302               	.L34:
 303 00d4 8C93      		st X,r24
 304               	.L15:
 305 00d6 3996      		adiw r30,9
 132:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****     {
 307               	.LM22:
 308 00d8 80E0      		ldi r24,hi8(_softpwm_channels+180)
 309 00da E030      		cpi r30,lo8(_softpwm_channels+180)
 310 00dc F807      		cpc r31,r24
 311 00de 01F4      		brne .L3
 312               	/* epilogue start */
 143:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****             }
 144:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****         }
 145:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****     }
 146:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** }
 314               	.LM23:
 315 00e0 FF91      		pop r31
 316 00e2 EF91      		pop r30
 317 00e4 BF91      		pop r27
 318 00e6 AF91      		pop r26
 319 00e8 9F91      		pop r25
 320 00ea 8F91      		pop r24
 321 00ec 7F91      		pop r23
 322 00ee 6F91      		pop r22
 323 00f0 4F91      		pop r20
 324 00f2 3F91      		pop r19
 325 00f4 2F91      		pop r18
 326 00f6 0F90      		pop r0
 327 00f8 0FBE      		out __SREG__,r0
 328 00fa 0F90      		pop r0
 329 00fc 1F90      		pop r1
 330 00fe 1895      		reti
 335               	.Lscope1:
 337               		.stabd	78,0,0
 340               	.global	_Z12SoftPWMBeginh
 342               	_Z12SoftPWMBeginh:
 343               		.stabd	46,0,0
 147:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** 
 148:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** 
 149:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** void SoftPWMBegin(uint8_t defaultPolarity) {
 345               	.LM24:
 346               	.LFBB2:
 347               	/* prologue: function */
 348               	/* frame size = 0 */
 349               	/* stack size = 0 */
 350               	.L__stack_usage = 0
 150:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****     // We can tweak the number of PWM period by changing the prescalar
 151:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****     // and the OCR - we'll default to ck/8 (CS21 set) and OCR=128.
 152:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****     // This gives 1024 cycles between interrupts.  And the ISR consumes ~200 cycles, so
 153:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****     // we are looking at about 20 - 30% of CPU time spent in the ISR.
 154:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****     // At these settings on a 16 MHz part, we will get a PWM period of
 155:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****     // approximately 60Hz (~16ms).
 156:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** 
 157:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****     uint8_t i;
 158:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** 
 159:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** //#ifdef WIRING
 160:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** //  Timer2.setMode(0b010);  // CTC
 161:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** //  Timer2.setClockSource(CLOCK_PRESCALE_8);
 162:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** //  Timer2.setOCR(CHANNEL_A, SOFTPWM_OCR);
 163:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** //  Timer2.attachInterrupt(INTERRUPT_COMPARE_MATCH_A, SoftPWM_Timer_Interrupt);
 164:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** //#else
 165:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** //  SOFTPWM_TIMER_INIT(SOFTPWM_OCR);
 166:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** //#endif
 167:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** 
 168:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****     cli();                   //Disable interrupts while setting registers
 352               	.LM25:
 353               	/* #APP */
 354               	 ;  168 "/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp" 1
 355 0100 F894      		cli
 356               	 ;  0 "" 2
 169:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****     TCCR1A = 0;              // Make sure it is zero
 358               	.LM26:
 359               	/* #NOAPP */
 360 0102 1092 8000 		sts 128,__zero_reg__
 170:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****     TCCR1B = 0;              // Make sure it is zero
 362               	.LM27:
 363 0106 1092 8100 		sts 129,__zero_reg__
 171:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****     //TCCR1B = (1 << WGM21);   // Configure for CTC mode (Set it; don't OR stuff into it)
 172:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****     //TCCR1B |= (1 << CS21); // Prescaler @ 1024
 173:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****     TIMSK1 = (1 << OCIE1A);  // Enable interrupt
 365               	.LM28:
 366 010a 92E0      		ldi r25,lo8(2)
 367 010c 9093 6F00 		sts 111,r25
 174:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****     OCR1A = SOFTPWM_OCR;           // compare value = 1 sec (16MHz AVR)
 369               	.LM29:
 370 0110 22E8      		ldi r18,lo8(-126)
 371 0112 30E0      		ldi r19,0
 372 0114 3093 8900 		sts 136+1,r19
 373 0118 2093 8800 		sts 136,r18
 175:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** 
 176:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****     TCCR1B = (1 << CS21);   /* start timer (ck/8 prescalar) */ \
 375               	.LM30:
 376 011c 9093 8100 		sts 129,r25
 177:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****     TCCR1A = (1 << WGM21);  /* CTC mode */ \
 378               	.LM31:
 379 0120 9093 8000 		sts 128,r25
 178:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** 
 179:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****     sei();
 381               	.LM32:
 382               	/* #APP */
 383               	 ;  179 "/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp" 1
 384 0124 7894      		sei
 385               	 ;  0 "" 2
 386               	/* #NOAPP */
 387 0126 E0E0      		ldi r30,lo8(_softpwm_channels)
 388 0128 F0E0      		ldi r31,hi8(_softpwm_channels)
 180:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** 
 181:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** 
 182:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****     for (i = 0; i < SOFTPWM_MAXCHANNELS; i++) {
 183:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****         _softpwm_channels[i].pin = -1;
 390               	.LM33:
 391 012a 9FEF      		ldi r25,lo8(-1)
 392               	.L37:
 394               	.LM34:
 395 012c 9083      		st Z,r25
 184:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****         _softpwm_channels[i].polarity = SOFTPWM_NORMAL;
 397               	.LM35:
 398 012e 1182      		std Z+1,__zero_reg__
 185:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****         _softpwm_channels[i].outport = 0;
 400               	.LM36:
 401 0130 1382      		std Z+3,__zero_reg__
 402 0132 1282      		std Z+2,__zero_reg__
 186:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****         _softpwm_channels[i].fadeuprate = 0;
 404               	.LM37:
 405 0134 1782      		std Z+7,__zero_reg__
 187:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****         _softpwm_channels[i].fadedownrate = 0;
 407               	.LM38:
 408 0136 1086      		std Z+8,__zero_reg__
 409 0138 3996      		adiw r30,9
 182:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****         _softpwm_channels[i].pin = -1;
 411               	.LM39:
 412 013a 20E0      		ldi r18,hi8(_softpwm_channels+180)
 413 013c E030      		cpi r30,lo8(_softpwm_channels+180)
 414 013e F207      		cpc r31,r18
 415 0140 01F4      		brne .L37
 188:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****     }
 189:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** 
 190:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****     _softpwm_defaultPolarity = defaultPolarity;
 417               	.LM40:
 418 0142 8093 0000 		sts _softpwm_defaultPolarity,r24
 419 0146 0895      		ret
 421               	.Lscope2:
 423               		.stabd	78,0,0
 427               	.global	_Z18SoftPWMSetPolarityah
 429               	_Z18SoftPWMSetPolarityah:
 430               		.stabd	46,0,0
 191:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** }
 192:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** 
 193:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** 
 194:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** void SoftPWMSetPolarity(int8_t pin, uint8_t polarity) {
 432               	.LM41:
 433               	.LFBB3:
 434               	/* prologue: function */
 435               	/* frame size = 0 */
 436               	/* stack size = 0 */
 437               	.L__stack_usage = 0
 195:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****     uint8_t i;
 196:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** 
 197:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****     if (polarity != SOFTPWM_NORMAL)
 198:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****         polarity = SOFTPWM_INVERTED;
 439               	.LM42:
 440 0148 21E0      		ldi r18,lo8(1)
 441 014a 6111      		cpse r22,__zero_reg__
 442 014c 00C0      		rjmp .L40
 443 014e 20E0      		ldi r18,0
 444               	.L40:
 445 0150 E0E0      		ldi r30,lo8(_softpwm_channels)
 446 0152 F0E0      		ldi r31,hi8(_softpwm_channels)
 447 0154 94E1      		ldi r25,lo8(20)
 448               	.L44:
 199:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** 
 200:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****     for (i = 0; i < SOFTPWM_MAXCHANNELS; i++) {
 201:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****         if ((pin < 0 && _softpwm_channels[i].pin >= 0) ||  // ALL pins
 450               	.LM43:
 451 0156 3081      		ld r19,Z
 452 0158 87FF      		sbrs r24,7
 453 015a 00C0      		rjmp .L41
 455               	.LM44:
 456 015c 37FF      		sbrs r19,7
 457 015e 00C0      		rjmp .L42
 458 0160 00C0      		rjmp .L43
 459               	.L41:
 202:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****             (pin >= 0 && _softpwm_channels[i].pin == pin))  // individual pin
 461               	.LM45:
 462 0162 8313      		cpse r24,r19
 463 0164 00C0      		rjmp .L43
 464               	.L42:
 203:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****         {
 204:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****             _softpwm_channels[i].polarity = polarity;
 466               	.LM46:
 467 0166 2183      		std Z+1,r18
 468               	.L43:
 469 0168 9150      		subi r25,lo8(-(-1))
 470 016a 3996      		adiw r30,9
 200:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****         if ((pin < 0 && _softpwm_channels[i].pin >= 0) ||  // ALL pins
 472               	.LM47:
 473 016c 9111      		cpse r25,__zero_reg__
 474 016e 00C0      		rjmp .L44
 475               	/* epilogue start */
 205:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****         }
 206:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****     }
 207:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** }
 477               	.LM48:
 478 0170 0895      		ret
 480               	.Lscope3:
 482               		.stabd	78,0,0
 487               	.global	_Z10SoftPWMSetahh
 489               	_Z10SoftPWMSetahh:
 490               		.stabd	46,0,0
 208:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** 
 209:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** 
 210:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** void SoftPWMSetPercent(int8_t pin, uint8_t percent, uint8_t hardset) {
 211:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****     SoftPWMSet(pin, ((uint16_t) percent * 255) / 100, hardset);
 212:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** }
 213:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** 
 214:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** 
 215:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** void SoftPWMSet(int8_t pin, uint8_t value, uint8_t hardset) {
 492               	.LM49:
 493               	.LFBB4:
 494 0172 CF93      		push r28
 495               	/* prologue: function */
 496               	/* frame size = 0 */
 497               	/* stack size = 1 */
 498               	.L__stack_usage = 1
 216:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****     int8_t firstfree = -1;  // first free index
 217:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****     uint8_t i;
 218:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** 
 219:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****     if (hardset) {
 500               	.LM50:
 501 0174 4423      		tst r20
 502 0176 01F0      		breq .L47
 220:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****         SOFTPWM_TIMER_SET(0);
 504               	.LM51:
 505 0178 1092 8500 		sts 132+1,__zero_reg__
 506 017c 1092 8400 		sts 132,__zero_reg__
 221:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****         _isr_softcount = 0xff;
 508               	.LM52:
 509 0180 9FEF      		ldi r25,lo8(-1)
 510 0182 9093 0000 		sts _isr_softcount,r25
 511               	.L47:
 512 0186 E0E0      		ldi r30,lo8(_softpwm_channels)
 513 0188 F0E0      		ldi r31,hi8(_softpwm_channels)
 215:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****     int8_t firstfree = -1;  // first free index
 515               	.LM53:
 516 018a 90E0      		ldi r25,0
 517 018c AFEF      		ldi r26,lo8(-1)
 518               	.L55:
 222:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****     }
 223:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** 
 224:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****     // If the pin isn't already set, add it
 225:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****     for (i = 0; i < SOFTPWM_MAXCHANNELS; i++) {
 226:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****         if ((pin < 0 && _softpwm_channels[i].pin >= 0) ||  // ALL pins
 520               	.LM54:
 521 018e 2081      		ld r18,Z
 522 0190 87FF      		sbrs r24,7
 523 0192 00C0      		rjmp .L48
 525               	.LM55:
 526 0194 27FF      		sbrs r18,7
 527 0196 00C0      		rjmp .L49
 528 0198 00C0      		rjmp .L72
 529               	.L48:
 227:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****             (pin >= 0 && _softpwm_channels[i].pin == pin))  // individual pin
 531               	.LM56:
 532 019a 8217      		cp r24,r18
 533 019c 01F0      		breq .L49
 534               	.L53:
 228:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****         {
 229:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****             // set the pin (and exit, if individual pin)
 230:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****             _softpwm_channels[i].pwmvalue = value;
 231:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** 
 232:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****             if (pin >= 0) // we've set the individual pin
 233:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****                 return;
 234:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****         }
 235:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** 
 236:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****         // get the first free pin if available
 237:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****         if (firstfree < 0 && _softpwm_channels[i].pin < 0)
 536               	.LM57:
 537 019e AF3F      		cpi r26,lo8(-1)
 538 01a0 01F4      		brne .L52
 539 01a2 00C0      		rjmp .L73
 540               	.L49:
 230:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** 
 542               	.LM58:
 543 01a4 6583      		std Z+5,r22
 232:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****                 return;
 545               	.LM59:
 546 01a6 87FD      		sbrc r24,7
 547 01a8 00C0      		rjmp .L53
 548 01aa 00C0      		rjmp .L46
 549               	.L73:
 551               	.LM60:
 552 01ac 2081      		ld r18,Z
 553 01ae 27FD      		sbrc r18,7
 554               	.L59:
 238:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****             firstfree = i;
 556               	.LM61:
 557 01b0 A92F      		mov r26,r25
 558               	.L52:
 225:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****         if ((pin < 0 && _softpwm_channels[i].pin >= 0) ||  // ALL pins
 560               	.LM62:
 561 01b2 9F5F      		subi r25,lo8(-(1))
 562 01b4 3996      		adiw r30,9
 563 01b6 9431      		cpi r25,lo8(20)
 564 01b8 01F4      		brne .L55
 565               	.LBB2:
 239:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****     }
 240:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** 
 241:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****     if (pin >= 0 && firstfree >= 0) {
 567               	.LM63:
 568 01ba 87FD      		sbrc r24,7
 569 01bc 00C0      		rjmp .L46
 571               	.LM64:
 572 01be AF3F      		cpi r26,lo8(-1)
 573 01c0 01F4      		brne .+2
 574 01c2 00C0      		rjmp .L46
 575 01c4 C82F      		mov r28,r24
 576               	.LBB3:
 242:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****         // we have a free pin we can use
 243:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****         _softpwm_channels[firstfree].pin = pin;
 578               	.LM65:
 579 01c6 89E0      		ldi r24,lo8(9)
 580 01c8 A802      		muls r26,r24
 581 01ca D001      		movw r26,r0
 582 01cc 1124      		clr __zero_reg__
 583 01ce A050      		subi r26,lo8(-(_softpwm_channels))
 584 01d0 B040      		sbci r27,hi8(-(_softpwm_channels))
 585 01d2 CC93      		st X,r28
 244:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****         _softpwm_channels[firstfree].polarity = _softpwm_defaultPolarity;
 587               	.LM66:
 588 01d4 2091 0000 		lds r18,_softpwm_defaultPolarity
 589 01d8 1196      		adiw r26,1
 590 01da 2C93      		st X,r18
 591 01dc 1197      		sbiw r26,1
 592               	.LBB4:
 593               	.LBB5:
 245:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****         _softpwm_channels[firstfree].outport = portOutputRegister(digitalPinToPort(pin));
 595               	.LM67:
 596 01de 8C2F      		mov r24,r28
 597 01e0 0C2E      		mov __tmp_reg__,r28
 598 01e2 000C      		lsl r0
 599 01e4 990B      		sbc r25,r25
 600 01e6 FC01      		movw r30,r24
 601 01e8 E050      		subi r30,lo8(-(digital_pin_to_port_PGM))
 602 01ea F040      		sbci r31,hi8(-(digital_pin_to_port_PGM))
 603               	/* #APP */
 604               	 ;  245 "/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp" 1
 605 01ec E491      		lpm r30, Z
 606               		
 607               	 ;  0 "" 2
 608               	/* #NOAPP */
 609               	.LBE5:
 610 01ee F0E0      		ldi r31,0
 611 01f0 EE0F      		lsl r30
 612 01f2 FF1F      		rol r31
 613 01f4 E050      		subi r30,lo8(-(port_to_output_PGM))
 614 01f6 F040      		sbci r31,hi8(-(port_to_output_PGM))
 615               	/* #APP */
 616               	 ;  245 "/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp" 1
 617 01f8 4591      		lpm r20, Z+
 618 01fa 5491      		lpm r21, Z
 619               		
 620               	 ;  0 "" 2
 621               	/* #NOAPP */
 622               	.LBE4:
 623 01fc 1396      		adiw r26,2+1
 624 01fe 5C93      		st X,r21
 625 0200 4E93      		st -X,r20
 626 0202 1297      		sbiw r26,2
 627               	.LBB6:
 246:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****         _softpwm_channels[firstfree].pinmask = digitalPinToBitMask(pin);
 629               	.LM68:
 630 0204 FC01      		movw r30,r24
 631 0206 E050      		subi r30,lo8(-(digital_pin_to_bit_mask_PGM))
 632 0208 F040      		sbci r31,hi8(-(digital_pin_to_bit_mask_PGM))
 633               	/* #APP */
 634               	 ;  246 "/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp" 1
 635 020a E491      		lpm r30, Z
 636               		
 637               	 ;  0 "" 2
 638               	/* #NOAPP */
 639 020c 1496      		adiw r26,4
 640 020e EC93      		st X,r30
 641 0210 1497      		sbiw r26,4
 642               	.LBE6:
 247:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****         _softpwm_channels[firstfree].pwmvalue = value;
 644               	.LM69:
 645 0212 1596      		adiw r26,5
 646 0214 6C93      		st X,r22
 248:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** //    _softpwm_channels[firstfree].checkval = 0;
 249:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** 
 250:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****         // now prepare the pin for output
 251:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****         // turn it off to start (no glitch)
 252:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****         if (_softpwm_defaultPolarity == SOFTPWM_NORMAL)
 648               	.LM70:
 649 0216 2111      		cpse r18,__zero_reg__
 650 0218 00C0      		rjmp .L57
 253:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****             digitalWrite(pin, LOW);
 652               	.LM71:
 653 021a 60E0      		ldi r22,0
 654 021c 00C0      		rjmp .L71
 655               	.L57:
 254:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****         else
 255:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****             digitalWrite(pin, HIGH);
 657               	.LM72:
 658 021e 61E0      		ldi r22,lo8(1)
 659               	.L71:
 660 0220 8C2F      		mov r24,r28
 661 0222 0E94 0000 		call digitalWrite
 256:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****         pinMode(pin, OUTPUT);
 663               	.LM73:
 664 0226 61E0      		ldi r22,lo8(1)
 665 0228 8C2F      		mov r24,r28
 666               	/* epilogue start */
 667               	.LBE3:
 668               	.LBE2:
 257:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****     }
 258:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** }
 670               	.LM74:
 671 022a CF91      		pop r28
 672               	.LBB8:
 673               	.LBB7:
 256:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****         pinMode(pin, OUTPUT);
 675               	.LM75:
 676 022c 0C94 0000 		jmp pinMode
 677               	.L72:
 678               	.LBE7:
 679               	.LBE8:
 237:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****             firstfree = i;
 681               	.LM76:
 682 0230 AF3F      		cpi r26,lo8(-1)
 683 0232 01F0      		breq .+2
 684 0234 00C0      		rjmp .L52
 685 0236 00C0      		rjmp .L59
 686               	.L46:
 687               	/* epilogue start */
 689               	.LM77:
 690 0238 CF91      		pop r28
 691 023a 0895      		ret
 700               	.Lscope4:
 702               		.stabd	78,0,0
 707               	.global	_Z17SoftPWMSetPercentahh
 709               	_Z17SoftPWMSetPercentahh:
 710               		.stabd	46,0,0
 210:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****     SoftPWMSet(pin, ((uint16_t) percent * 255) / 100, hardset);
 712               	.LM78:
 713               	.LFBB5:
 714               	/* prologue: function */
 715               	/* frame size = 0 */
 716               	/* stack size = 0 */
 717               	.L__stack_usage = 0
 718 023c 282F      		mov r18,r24
 211:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** }
 720               	.LM79:
 721 023e 3FEF      		ldi r19,lo8(-1)
 722 0240 639F      		mul r22,r19
 723 0242 C001      		movw r24,r0
 724 0244 1124      		clr __zero_reg__
 725 0246 64E6      		ldi r22,lo8(100)
 726 0248 70E0      		ldi r23,0
 727 024a 0E94 0000 		call __udivmodhi4
 728 024e 822F      		mov r24,r18
 729 0250 0C94 0000 		jmp _Z10SoftPWMSetahh
 731               	.Lscope5:
 733               		.stabd	78,0,0
 736               	.global	_Z10SoftPWMEnda
 738               	_Z10SoftPWMEnda:
 739               		.stabd	46,0,0
 259:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** 
 260:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** void SoftPWMEnd(int8_t pin) {
 741               	.LM80:
 742               	.LFBB6:
 743 0254 FF92      		push r15
 744 0256 0F93      		push r16
 745 0258 1F93      		push r17
 746 025a CF93      		push r28
 747 025c DF93      		push r29
 748               	/* prologue: function */
 749               	/* frame size = 0 */
 750               	/* stack size = 5 */
 751               	.L__stack_usage = 5
 752 025e 082F      		mov r16,r24
 753 0260 C0E0      		ldi r28,lo8(_softpwm_channels)
 754 0262 D0E0      		ldi r29,hi8(_softpwm_channels)
 756               	.LM81:
 757 0264 14E1      		ldi r17,lo8(20)
 261:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****     uint8_t i;
 262:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** 
 263:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****     for (i = 0; i < SOFTPWM_MAXCHANNELS; i++) {
 264:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****         if ((pin < 0 && _softpwm_channels[i].pin >= 0) ||  // ALL pins
 265:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****             (pin >= 0 && _softpwm_channels[i].pin == pin))  // individual pin
 266:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****         {
 267:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****             // now disable the pin (put it into INPUT mode)
 268:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****             digitalWrite(_softpwm_channels[i].pin, 1);
 269:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****             pinMode(_softpwm_channels[i].pin, INPUT);
 270:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** 
 271:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****             // remove the pin
 272:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****             _softpwm_channels[i].pin = -1;
 759               	.LM82:
 760 0266 FF24      		clr r15
 761 0268 FA94      		dec r15
 762               	.L79:
 264:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****             (pin >= 0 && _softpwm_channels[i].pin == pin))  // individual pin
 764               	.LM83:
 765 026a 8881      		ld r24,Y
 766 026c 07FF      		sbrs r16,7
 767 026e 00C0      		rjmp .L76
 264:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****             (pin >= 0 && _softpwm_channels[i].pin == pin))  // individual pin
 769               	.LM84:
 770 0270 87FF      		sbrs r24,7
 771 0272 00C0      		rjmp .L77
 772 0274 00C0      		rjmp .L78
 773               	.L76:
 265:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****         {
 775               	.LM85:
 776 0276 0813      		cpse r16,r24
 777 0278 00C0      		rjmp .L78
 778               	.L77:
 268:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****             pinMode(_softpwm_channels[i].pin, INPUT);
 780               	.LM86:
 781 027a 61E0      		ldi r22,lo8(1)
 782 027c 8881      		ld r24,Y
 783 027e 0E94 0000 		call digitalWrite
 269:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** 
 785               	.LM87:
 786 0282 60E0      		ldi r22,0
 787 0284 8881      		ld r24,Y
 788 0286 0E94 0000 		call pinMode
 790               	.LM88:
 791 028a F882      		st Y,r15
 792               	.L78:
 793 028c 1150      		subi r17,lo8(-(-1))
 794 028e 2996      		adiw r28,9
 263:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****         if ((pin < 0 && _softpwm_channels[i].pin >= 0) ||  // ALL pins
 796               	.LM89:
 797 0290 1111      		cpse r17,__zero_reg__
 798 0292 00C0      		rjmp .L79
 799               	/* epilogue start */
 273:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****         }
 274:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****     }
 275:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** }
 801               	.LM90:
 802 0294 DF91      		pop r29
 803 0296 CF91      		pop r28
 804 0298 1F91      		pop r17
 805 029a 0F91      		pop r16
 806 029c FF90      		pop r15
 807 029e 0895      		ret
 809               	.Lscope6:
 811               		.stabd	78,0,0
 816               	.global	_Z18SoftPWMSetFadeTimeajj
 818               	_Z18SoftPWMSetFadeTimeajj:
 819               		.stabd	46,0,0
 276:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** 
 277:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** 
 278:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** void SoftPWMSetFadeTime(int8_t pin, uint16_t fadeUpTime, uint16_t fadeDownTime) {
 821               	.LM91:
 822               	.LFBB7:
 823 02a0 2F92      		push r2
 824 02a2 3F92      		push r3
 825 02a4 4F92      		push r4
 826 02a6 5F92      		push r5
 827 02a8 6F92      		push r6
 828 02aa 7F92      		push r7
 829 02ac 8F92      		push r8
 830 02ae 9F92      		push r9
 831 02b0 AF92      		push r10
 832 02b2 BF92      		push r11
 833 02b4 CF92      		push r12
 834 02b6 DF92      		push r13
 835 02b8 EF92      		push r14
 836 02ba FF92      		push r15
 837 02bc 0F93      		push r16
 838 02be 1F93      		push r17
 839 02c0 CF93      		push r28
 840 02c2 DF93      		push r29
 841 02c4 00D0      		rcall .
 842 02c6 00D0      		rcall .
 843 02c8 CDB7      		in r28,__SP_L__
 844 02ca DEB7      		in r29,__SP_H__
 845               	/* prologue: function */
 846               	/* frame size = 4 */
 847               	/* stack size = 22 */
 848               	.L__stack_usage = 22
 849 02cc 382E      		mov r3,r24
 850 02ce 7A83      		std Y+2,r23
 851 02d0 6983      		std Y+1,r22
 852 02d2 8A01      		movw r16,r20
 853 02d4 80E0      		ldi r24,lo8(_softpwm_channels)
 854 02d6 90E0      		ldi r25,hi8(_softpwm_channels)
 855 02d8 9C83      		std Y+4,r25
 856 02da 8B83      		std Y+3,r24
 858               	.LM92:
 859 02dc 84E1      		ldi r24,lo8(20)
 860 02de 282E      		mov r2,r24
 279:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****     int16_t fadeAmount;
 280:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****     uint8_t i;
 281:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** 
 282:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****     for (i = 0; i < SOFTPWM_MAXCHANNELS; i++) {
 283:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****         if ((pin < 0 && _softpwm_channels[i].pin >= 0) ||  // ALL pins
 284:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****             (pin >= 0 && _softpwm_channels[i].pin == pin))  // individual pin
 285:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****         {
 286:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** 
 287:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****             fadeAmount = 0;
 288:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****             if (fadeUpTime > 0)
 289:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****                 fadeAmount = 255UL * (SOFTPWM_OCR * 256UL / (F_CPU / 8000UL)) / fadeUpTime;
 290:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** 
 291:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****             _softpwm_channels[i].fadeuprate = fadeAmount;
 292:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** 
 293:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****             fadeAmount = 0;
 294:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****             if (fadeDownTime > 0)
 295:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****                 fadeAmount = 255UL * (SOFTPWM_OCR * 256UL / (F_CPU / 8000UL)) / fadeDownTime;
 862               	.LM93:
 863 02e0 4A01      		movw r8,r20
 864 02e2 A12C      		mov r10,__zero_reg__
 865 02e4 B12C      		mov r11,__zero_reg__
 866 02e6 90EF      		ldi r25,lo8(-16)
 867 02e8 C92E      		mov r12,r25
 868 02ea 9FE0      		ldi r25,lo8(15)
 869 02ec D92E      		mov r13,r25
 870 02ee E12C      		mov r14,__zero_reg__
 871 02f0 F12C      		mov r15,__zero_reg__
 289:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** 
 873               	.LM94:
 874 02f2 2B01      		movw r4,r22
 875 02f4 612C      		mov r6,__zero_reg__
 876 02f6 712C      		mov r7,__zero_reg__
 877               	.L85:
 283:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****             (pin >= 0 && _softpwm_channels[i].pin == pin))  // individual pin
 879               	.LM95:
 880 02f8 EB81      		ldd r30,Y+3
 881 02fa FC81      		ldd r31,Y+4
 882 02fc 8081      		ld r24,Z
 883 02fe 37FE      		sbrs r3,7
 884 0300 00C0      		rjmp .L82
 283:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****             (pin >= 0 && _softpwm_channels[i].pin == pin))  // individual pin
 886               	.LM96:
 887 0302 87FF      		sbrs r24,7
 888 0304 00C0      		rjmp .L83
 889               	.L86:
 890 0306 2A94      		dec r2
 891 0308 8B81      		ldd r24,Y+3
 892 030a 9C81      		ldd r25,Y+4
 893 030c 0996      		adiw r24,9
 894 030e 9C83      		std Y+4,r25
 895 0310 8B83      		std Y+3,r24
 282:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****         if ((pin < 0 && _softpwm_channels[i].pin >= 0) ||  // ALL pins
 897               	.LM97:
 898 0312 2110      		cpse r2,__zero_reg__
 899 0314 00C0      		rjmp .L85
 900 0316 00C0      		rjmp .L81
 901               	.L82:
 284:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****         {
 903               	.LM98:
 904 0318 3812      		cpse r3,r24
 905 031a 00C0      		rjmp .L86
 906               	.L83:
 288:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****                 fadeAmount = 255UL * (SOFTPWM_OCR * 256UL / (F_CPU / 8000UL)) / fadeUpTime;
 908               	.LM99:
 909 031c 8981      		ldd r24,Y+1
 910 031e 9A81      		ldd r25,Y+2
 911 0320 892B      		or r24,r25
 912 0322 01F0      		breq .L89
 289:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** 
 914               	.LM100:
 915 0324 C701      		movw r24,r14
 916 0326 B601      		movw r22,r12
 917 0328 A301      		movw r20,r6
 918 032a 9201      		movw r18,r4
 919 032c 0E94 0000 		call __udivmodsi4
 920 0330 00C0      		rjmp .L87
 921               	.L89:
 287:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****             if (fadeUpTime > 0)
 923               	.LM101:
 924 0332 20E0      		ldi r18,0
 925               	.L87:
 291:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** 
 927               	.LM102:
 928 0334 EB81      		ldd r30,Y+3
 929 0336 FC81      		ldd r31,Y+4
 930 0338 2783      		std Z+7,r18
 294:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****                 fadeAmount = 255UL * (SOFTPWM_OCR * 256UL / (F_CPU / 8000UL)) / fadeDownTime;
 932               	.LM103:
 933 033a 0115      		cp r16,__zero_reg__
 934 033c 1105      		cpc r17,__zero_reg__
 935 033e 01F0      		breq .L90
 937               	.LM104:
 938 0340 C701      		movw r24,r14
 939 0342 B601      		movw r22,r12
 940 0344 A501      		movw r20,r10
 941 0346 9401      		movw r18,r8
 942 0348 0E94 0000 		call __udivmodsi4
 943 034c 00C0      		rjmp .L88
 944               	.L90:
 293:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****             if (fadeDownTime > 0)
 946               	.LM105:
 947 034e 20E0      		ldi r18,0
 948               	.L88:
 296:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** 
 297:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****             _softpwm_channels[i].fadedownrate = fadeAmount;
 950               	.LM106:
 951 0350 EB81      		ldd r30,Y+3
 952 0352 FC81      		ldd r31,Y+4
 953 0354 2087      		std Z+8,r18
 298:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** 
 299:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****             if (pin >= 0)  // we've set individual pin
 955               	.LM107:
 956 0356 37FC      		sbrc r3,7
 957 0358 00C0      		rjmp .L86
 958               	.L81:
 959               	/* epilogue start */
 300:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****                 break;
 301:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****         }
 302:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****     }
 303:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** }
 961               	.LM108:
 962 035a 0F90      		pop __tmp_reg__
 963 035c 0F90      		pop __tmp_reg__
 964 035e 0F90      		pop __tmp_reg__
 965 0360 0F90      		pop __tmp_reg__
 966 0362 DF91      		pop r29
 967 0364 CF91      		pop r28
 968 0366 1F91      		pop r17
 969 0368 0F91      		pop r16
 970 036a FF90      		pop r15
 971 036c EF90      		pop r14
 972 036e DF90      		pop r13
 973 0370 CF90      		pop r12
 974 0372 BF90      		pop r11
 975 0374 AF90      		pop r10
 976 0376 9F90      		pop r9
 977 0378 8F90      		pop r8
 978 037a 7F90      		pop r7
 979 037c 6F90      		pop r6
 980 037e 5F90      		pop r5
 981 0380 4F90      		pop r4
 982 0382 3F90      		pop r3
 983 0384 2F90      		pop r2
 984 0386 0895      		ret
 986               	.Lscope7:
 988               		.stabd	78,0,0
 989               	.global	_softpwm_channels
 990               		.section .bss
 993               	_softpwm_channels:
 994 0000 0000 0000 		.zero	180
 994      0000 0000 
 994      0000 0000 
 994      0000 0000 
 994      0000 0000 
 995               	.global	_softpwm_defaultPolarity
 998               	_softpwm_defaultPolarity:
 999 00b4 00        		.zero	1
 1000               	.global	_isr_softcount
 1001               		.data
 1004               	_isr_softcount:
 1005 0000 FF        		.byte	-1
 1023               		.text
 1025               	.Letext0:
 1026               		.ident	"GCC: (GNU) 5.4.0"
 1027               	.global __do_copy_data
 1028               	.global __do_clear_bss
DEFINED SYMBOLS
                            *ABS*:0000000000000000 SoftPWM.cpp
     /tmp/ccq9YFga.s:2      *ABS*:000000000000003e __SP_H__
     /tmp/ccq9YFga.s:3      *ABS*:000000000000003d __SP_L__
     /tmp/ccq9YFga.s:4      *ABS*:000000000000003f __SREG__
     /tmp/ccq9YFga.s:5      *ABS*:0000000000000000 __tmp_reg__
     /tmp/ccq9YFga.s:6      *ABS*:0000000000000001 __zero_reg__
     /tmp/ccq9YFga.s:136    .text:0000000000000000 __vector_11
     /tmp/ccq9YFga.s:1004   .data:0000000000000000 _isr_softcount
     /tmp/ccq9YFga.s:993    .bss:0000000000000000 _softpwm_channels
     /tmp/ccq9YFga.s:342    .text:0000000000000100 _Z12SoftPWMBeginh
     /tmp/ccq9YFga.s:998    .bss:00000000000000b4 _softpwm_defaultPolarity
     /tmp/ccq9YFga.s:429    .text:0000000000000148 _Z18SoftPWMSetPolarityah
     /tmp/ccq9YFga.s:489    .text:0000000000000172 _Z10SoftPWMSetahh
     /tmp/ccq9YFga.s:709    .text:000000000000023c _Z17SoftPWMSetPercentahh
     /tmp/ccq9YFga.s:738    .text:0000000000000254 _Z10SoftPWMEnda
     /tmp/ccq9YFga.s:818    .text:00000000000002a0 _Z18SoftPWMSetFadeTimeajj

UNDEFINED SYMBOLS
digital_pin_to_port_PGM
port_to_output_PGM
digital_pin_to_bit_mask_PGM
digitalWrite
pinMode
__udivmodhi4
__udivmodsi4
__do_copy_data
__do_clear_bss
