
FullPIB.elf:     file format elf32-avr

Sections:
Idx Name          Size      VMA       LMA       File off  Algn
  0 .data         0000037c  00800200  0001e972  0001ea66  2**0
                  CONTENTS, ALLOC, LOAD, DATA
  1 .text         0001e972  00000000  00000000  000000f4  2**1
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
  2 .boot         00002000  0003e000  0003e000  0001ede2  2**0
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
  3 .bss          000013d9  0080057c  0080057c  00020de2  2**0
                  ALLOC
  4 .xdata        0000689d  00808000  00808000  00020de2  2**0
                  CONTENTS, ALLOC, LOAD, DATA
  5 .fuse         00000003  00820000  00820000  0002767f  2**0
                  CONTENTS, ALLOC, LOAD, DATA
  6 .stab         00000510  00000000  00000000  00027684  2**2
                  CONTENTS, READONLY, DEBUGGING
  7 .stabstr      000001b0  00000000  00000000  00027b94  2**0
                  CONTENTS, READONLY, DEBUGGING
  8 .debug_aranges 00000438  00000000  00000000  00027d44  2**0
                  CONTENTS, READONLY, DEBUGGING
  9 .debug_pubnames 00002e13  00000000  00000000  0002817c  2**0
                  CONTENTS, READONLY, DEBUGGING
 10 .debug_info   00019b06  00000000  00000000  0002af8f  2**0
                  CONTENTS, READONLY, DEBUGGING
 11 .debug_abbrev 00003f18  00000000  00000000  00044a95  2**0
                  CONTENTS, READONLY, DEBUGGING
 12 .debug_line   0001094e  00000000  00000000  000489ad  2**0
                  CONTENTS, READONLY, DEBUGGING
 13 .debug_frame  00001760  00000000  00000000  000592fc  2**2
                  CONTENTS, READONLY, DEBUGGING
 14 .debug_str    00005662  00000000  00000000  0005aa5c  2**0
                  CONTENTS, READONLY, DEBUGGING
 15 .debug_loc    0000eff5  00000000  00000000  000600be  2**0
                  CONTENTS, READONLY, DEBUGGING
 16 .debug_ranges 00000850  00000000  00000000  0006f0b3  2**0
                  CONTENTS, READONLY, DEBUGGING

Disassembly of section .text:

00000000 <__vectors>:
       0:	0c 94 6f 1b 	jmp	0x36de	; 0x36de <__ctors_end>
       4:	0c 94 a1 1b 	jmp	0x3742	; 0x3742 <__bad_interrupt>
       8:	0c 94 a1 1b 	jmp	0x3742	; 0x3742 <__bad_interrupt>
       c:	0c 94 a1 1b 	jmp	0x3742	; 0x3742 <__bad_interrupt>
      10:	0c 94 a1 1b 	jmp	0x3742	; 0x3742 <__bad_interrupt>
      14:	0c 94 a1 1b 	jmp	0x3742	; 0x3742 <__bad_interrupt>
      18:	0c 94 a1 1b 	jmp	0x3742	; 0x3742 <__bad_interrupt>
      1c:	0c 94 a1 1b 	jmp	0x3742	; 0x3742 <__bad_interrupt>
      20:	0c 94 a1 1b 	jmp	0x3742	; 0x3742 <__bad_interrupt>
      24:	0c 94 a1 1b 	jmp	0x3742	; 0x3742 <__bad_interrupt>
      28:	0c 94 a1 1b 	jmp	0x3742	; 0x3742 <__bad_interrupt>
      2c:	0c 94 a1 1b 	jmp	0x3742	; 0x3742 <__bad_interrupt>
      30:	0c 94 a1 1b 	jmp	0x3742	; 0x3742 <__bad_interrupt>
      34:	0c 94 71 36 	jmp	0x6ce2	; 0x6ce2 <__vector_13>
      38:	0c 94 a1 1b 	jmp	0x3742	; 0x3742 <__bad_interrupt>
      3c:	0c 94 a1 1b 	jmp	0x3742	; 0x3742 <__bad_interrupt>
      40:	0c 94 a1 1b 	jmp	0x3742	; 0x3742 <__bad_interrupt>
      44:	0c 94 a1 1b 	jmp	0x3742	; 0x3742 <__bad_interrupt>
      48:	0c 94 a1 1b 	jmp	0x3742	; 0x3742 <__bad_interrupt>
      4c:	0c 94 a1 1b 	jmp	0x3742	; 0x3742 <__bad_interrupt>
      50:	0c 94 a1 1b 	jmp	0x3742	; 0x3742 <__bad_interrupt>
      54:	0c 94 a1 1b 	jmp	0x3742	; 0x3742 <__bad_interrupt>
      58:	0c 94 a1 1b 	jmp	0x3742	; 0x3742 <__bad_interrupt>
      5c:	0c 94 a1 1b 	jmp	0x3742	; 0x3742 <__bad_interrupt>
      60:	0c 94 a1 1b 	jmp	0x3742	; 0x3742 <__bad_interrupt>
      64:	0c 94 fc 1b 	jmp	0x37f8	; 0x37f8 <RXISRPORT0>
      68:	0c 94 c0 1c 	jmp	0x3980	; 0x3980 <TXISRPORT0>
      6c:	0c 94 a1 1b 	jmp	0x3742	; 0x3742 <__bad_interrupt>
      70:	0c 94 a1 1b 	jmp	0x3742	; 0x3742 <__bad_interrupt>
      74:	0c 94 a1 1b 	jmp	0x3742	; 0x3742 <__bad_interrupt>
      78:	0c 94 a1 1b 	jmp	0x3742	; 0x3742 <__bad_interrupt>
      7c:	0c 94 a1 1b 	jmp	0x3742	; 0x3742 <__bad_interrupt>
      80:	0c 94 a1 1b 	jmp	0x3742	; 0x3742 <__bad_interrupt>
      84:	0c 94 a1 1b 	jmp	0x3742	; 0x3742 <__bad_interrupt>
      88:	0c 94 a1 1b 	jmp	0x3742	; 0x3742 <__bad_interrupt>
      8c:	0c 94 a1 1b 	jmp	0x3742	; 0x3742 <__bad_interrupt>
      90:	0c 94 f4 1c 	jmp	0x39e8	; 0x39e8 <RXISRPORT1>
      94:	0c 94 5a 1d 	jmp	0x3ab4	; 0x3ab4 <TXISRPORT1>
      98:	0c 94 a1 1b 	jmp	0x3742	; 0x3742 <__bad_interrupt>
      9c:	0c 94 a1 1b 	jmp	0x3742	; 0x3742 <__bad_interrupt>
      a0:	0c 94 a1 1b 	jmp	0x3742	; 0x3742 <__bad_interrupt>
      a4:	0c 94 a1 1b 	jmp	0x3742	; 0x3742 <__bad_interrupt>
      a8:	0c 94 a1 1b 	jmp	0x3742	; 0x3742 <__bad_interrupt>
      ac:	0c 94 a1 1b 	jmp	0x3742	; 0x3742 <__bad_interrupt>
      b0:	0c 94 a1 1b 	jmp	0x3742	; 0x3742 <__bad_interrupt>
      b4:	0c 94 a1 1b 	jmp	0x3742	; 0x3742 <__bad_interrupt>
      b8:	0c 94 a1 1b 	jmp	0x3742	; 0x3742 <__bad_interrupt>
      bc:	0c 94 a1 1b 	jmp	0x3742	; 0x3742 <__bad_interrupt>
      c0:	0c 94 a1 1b 	jmp	0x3742	; 0x3742 <__bad_interrupt>
      c4:	0c 94 a1 1b 	jmp	0x3742	; 0x3742 <__bad_interrupt>
      c8:	0c 94 a1 1b 	jmp	0x3742	; 0x3742 <__bad_interrupt>
      cc:	0c 94 8e 1d 	jmp	0x3b1c	; 0x3b1c <RXISRPORT2>
      d0:	0c 94 f4 1d 	jmp	0x3be8	; 0x3be8 <TXISRPORT2>
      d4:	0c 94 a1 1b 	jmp	0x3742	; 0x3742 <__bad_interrupt>
      d8:	0c 94 28 1e 	jmp	0x3c50	; 0x3c50 <RXISRPORT3>
      dc:	0c 94 8e 1e 	jmp	0x3d1c	; 0x3d1c <TXISRPORT3>
      e0:	0c 94 a1 1b 	jmp	0x3742	; 0x3742 <__bad_interrupt>
      e4:	77 7a       	andi	r23, 0xA7	; 167
      e6:	e5 7a       	andi	r30, 0xA5	; 165
      e8:	1c 7a       	andi	r17, 0xAC	; 172
      ea:	65 79       	andi	r22, 0x95	; 149
      ec:	e5 7a       	andi	r30, 0xA5	; 165
      ee:	24 78       	andi	r18, 0x84	; 132
      f0:	e5 7a       	andi	r30, 0xA5	; 165
      f2:	e5 7a       	andi	r30, 0xA5	; 165
      f4:	9a 79       	andi	r25, 0x9A	; 154
      f6:	e5 7a       	andi	r30, 0xA5	; 165
      f8:	e5 7a       	andi	r30, 0xA5	; 165
      fa:	e8 79       	andi	r30, 0x98	; 152
      fc:	e5 7a       	andi	r30, 0xA5	; 165
      fe:	e5 7a       	andi	r30, 0xA5	; 165
     100:	20 78       	andi	r18, 0x80	; 128
     102:	f1 78       	andi	r31, 0x81	; 129
     104:	e5 7a       	andi	r30, 0xA5	; 165
     106:	28 78       	andi	r18, 0x88	; 136
     108:	e5 7a       	andi	r30, 0xA5	; 165
     10a:	e5 7a       	andi	r30, 0xA5	; 165
     10c:	e5 7a       	andi	r30, 0xA5	; 165
     10e:	e5 7a       	andi	r30, 0xA5	; 165
     110:	e5 7a       	andi	r30, 0xA5	; 165
     112:	e5 78       	andi	r30, 0x85	; 133
     114:	b4 79       	andi	r27, 0x94	; 148
     116:	33 79       	andi	r19, 0x93	; 147
     118:	e5 7a       	andi	r30, 0xA5	; 165
     11a:	e5 7a       	andi	r30, 0xA5	; 165
     11c:	e5 7a       	andi	r30, 0xA5	; 165
     11e:	e5 7a       	andi	r30, 0xA5	; 165
     120:	e5 7a       	andi	r30, 0xA5	; 165
     122:	e5 7a       	andi	r30, 0xA5	; 165
     124:	77 7a       	andi	r23, 0xA7	; 167
     126:	e5 7a       	andi	r30, 0xA5	; 165
     128:	1c 7a       	andi	r17, 0xAC	; 172
     12a:	65 79       	andi	r22, 0x95	; 149
     12c:	e5 7a       	andi	r30, 0xA5	; 165
     12e:	24 78       	andi	r18, 0x84	; 132
     130:	e5 7a       	andi	r30, 0xA5	; 165
     132:	e5 7a       	andi	r30, 0xA5	; 165
     134:	9a 79       	andi	r25, 0x9A	; 154
     136:	e5 7a       	andi	r30, 0xA5	; 165
     138:	e5 7a       	andi	r30, 0xA5	; 165
     13a:	e8 79       	andi	r30, 0x98	; 152
     13c:	e5 7a       	andi	r30, 0xA5	; 165
     13e:	e5 7a       	andi	r30, 0xA5	; 165
     140:	20 78       	andi	r18, 0x80	; 128
     142:	f1 78       	andi	r31, 0x81	; 129
     144:	e5 7a       	andi	r30, 0xA5	; 165
     146:	28 78       	andi	r18, 0x88	; 136
     148:	e5 7a       	andi	r30, 0xA5	; 165
     14a:	e5 7a       	andi	r30, 0xA5	; 165
     14c:	e5 7a       	andi	r30, 0xA5	; 165
     14e:	e5 7a       	andi	r30, 0xA5	; 165
     150:	e5 7a       	andi	r30, 0xA5	; 165
     152:	e5 78       	andi	r30, 0x85	; 133
     154:	b4 79       	andi	r27, 0x94	; 148
     156:	33 79       	andi	r19, 0x93	; 147
     158:	fa 97       	sbiw	r30, 0x3a	; 58
     15a:	8b 97       	sbiw	r24, 0x2b	; 43
     15c:	55 98       	cbi	0x0a, 5	; 10
     15e:	75 96       	adiw	r30, 0x15	; 21
     160:	55 98       	cbi	0x0a, 5	; 10
     162:	55 98       	cbi	0x0a, 5	; 10
     164:	c0 97       	sbiw	r24, 0x30	; 48
     166:	55 98       	cbi	0x0a, 5	; 10
     168:	55 98       	cbi	0x0a, 5	; 10
     16a:	55 98       	cbi	0x0a, 5	; 10
     16c:	55 98       	cbi	0x0a, 5	; 10
     16e:	55 98       	cbi	0x0a, 5	; 10
     170:	71 96       	adiw	r30, 0x11	; 17
     172:	17 97       	sbiw	r26, 0x07	; 7
     174:	55 98       	cbi	0x0a, 5	; 10
     176:	79 96       	adiw	r30, 0x19	; 25
     178:	55 98       	cbi	0x0a, 5	; 10
     17a:	55 98       	cbi	0x0a, 5	; 10
     17c:	55 98       	cbi	0x0a, 5	; 10
     17e:	55 98       	cbi	0x0a, 5	; 10
     180:	55 98       	cbi	0x0a, 5	; 10
     182:	0b 97       	sbiw	r24, 0x0b	; 11
     184:	da 97       	sbiw	r26, 0x3a	; 58
     186:	59 97       	sbiw	r26, 0x19	; 25
     188:	55 98       	cbi	0x0a, 5	; 10
     18a:	55 98       	cbi	0x0a, 5	; 10
     18c:	55 98       	cbi	0x0a, 5	; 10
     18e:	55 98       	cbi	0x0a, 5	; 10
     190:	55 98       	cbi	0x0a, 5	; 10
     192:	55 98       	cbi	0x0a, 5	; 10
     194:	55 98       	cbi	0x0a, 5	; 10
     196:	55 98       	cbi	0x0a, 5	; 10
     198:	fa 97       	sbiw	r30, 0x3a	; 58
     19a:	8b 97       	sbiw	r24, 0x2b	; 43
     19c:	55 98       	cbi	0x0a, 5	; 10
     19e:	75 96       	adiw	r30, 0x15	; 21
     1a0:	55 98       	cbi	0x0a, 5	; 10
     1a2:	55 98       	cbi	0x0a, 5	; 10
     1a4:	c0 97       	sbiw	r24, 0x30	; 48
     1a6:	55 98       	cbi	0x0a, 5	; 10
     1a8:	55 98       	cbi	0x0a, 5	; 10
     1aa:	55 98       	cbi	0x0a, 5	; 10
     1ac:	55 98       	cbi	0x0a, 5	; 10
     1ae:	55 98       	cbi	0x0a, 5	; 10
     1b0:	71 96       	adiw	r30, 0x11	; 17
     1b2:	17 97       	sbiw	r26, 0x07	; 7
     1b4:	55 98       	cbi	0x0a, 5	; 10
     1b6:	79 96       	adiw	r30, 0x19	; 25
     1b8:	55 98       	cbi	0x0a, 5	; 10
     1ba:	55 98       	cbi	0x0a, 5	; 10
     1bc:	55 98       	cbi	0x0a, 5	; 10
     1be:	55 98       	cbi	0x0a, 5	; 10
     1c0:	55 98       	cbi	0x0a, 5	; 10
     1c2:	0b 97       	sbiw	r24, 0x0b	; 11
     1c4:	da 97       	sbiw	r26, 0x3a	; 58
     1c6:	59 97       	sbiw	r26, 0x19	; 25
     1c8:	8b be       	out	0x3b, r8	; 59
     1ca:	69 bd       	out	0x29, r22	; 41
     1cc:	2b be       	out	0x3b, r2	; 59
     1ce:	69 bd       	out	0x29, r22	; 41
     1d0:	69 bd       	out	0x29, r22	; 41
     1d2:	a3 bd       	out	0x23, r26	; 35
     1d4:	69 bd       	out	0x29, r22	; 41
     1d6:	69 bd       	out	0x29, r22	; 41
     1d8:	a9 bf       	out	0x39, r26	; 57
     1da:	69 bd       	out	0x29, r22	; 41
     1dc:	69 bd       	out	0x29, r22	; 41
     1de:	69 bd       	out	0x29, r22	; 41
     1e0:	9e be       	out	0x3e, r9	; 62
     1e2:	69 bd       	out	0x29, r22	; 41
     1e4:	82 bd       	out	0x22, r24	; 34
     1e6:	69 bd       	out	0x29, r22	; 41
     1e8:	69 bd       	out	0x29, r22	; 41
     1ea:	69 bd       	out	0x29, r22	; 41
     1ec:	cf bd       	out	0x2f, r28	; 47
     1ee:	6b bd       	out	0x2b, r22	; 43
     1f0:	69 bd       	out	0x29, r22	; 41
     1f2:	69 bd       	out	0x29, r22	; 41
     1f4:	01 bf       	out	0x31, r16	; 49
     1f6:	fa bd       	out	0x2a, r31	; 42
     1f8:	69 bd       	out	0x29, r22	; 41
     1fa:	69 bd       	out	0x29, r22	; 41
     1fc:	69 bd       	out	0x29, r22	; 41
     1fe:	69 bd       	out	0x29, r22	; 41
     200:	69 bd       	out	0x29, r22	; 41
     202:	69 bd       	out	0x29, r22	; 41
     204:	69 bd       	out	0x29, r22	; 41
     206:	69 bd       	out	0x29, r22	; 41
     208:	8b be       	out	0x3b, r8	; 59
     20a:	69 bd       	out	0x29, r22	; 41
     20c:	2b be       	out	0x3b, r2	; 59
     20e:	69 bd       	out	0x29, r22	; 41
     210:	69 bd       	out	0x29, r22	; 41
     212:	a3 bd       	out	0x23, r26	; 35
     214:	69 bd       	out	0x29, r22	; 41
     216:	69 bd       	out	0x29, r22	; 41
     218:	a9 bf       	out	0x39, r26	; 57
     21a:	69 bd       	out	0x29, r22	; 41
     21c:	69 bd       	out	0x29, r22	; 41
     21e:	69 bd       	out	0x29, r22	; 41
     220:	9e be       	out	0x3e, r9	; 62
     222:	69 bd       	out	0x29, r22	; 41
     224:	82 bd       	out	0x22, r24	; 34
     226:	69 bd       	out	0x29, r22	; 41
     228:	69 bd       	out	0x29, r22	; 41
     22a:	69 bd       	out	0x29, r22	; 41
     22c:	cf bd       	out	0x2f, r28	; 47
     22e:	6b bd       	out	0x2b, r22	; 43
     230:	69 bd       	out	0x29, r22	; 41
     232:	69 bd       	out	0x29, r22	; 41
     234:	01 bf       	out	0x31, r16	; 49
     236:	fa bd       	out	0x2a, r31	; 42

00000238 <tokenListConsole>:
     238:	20 2c 3a 0d 0a 09 00                                 ,:....

0000023f <floatCommSeparators>:
     23f:	20 2c 3a 3d 0d 0a 00                                 ,:=...

00000246 <floatCommCommands>:
     246:	70 6d 31 00 00 00 00 00 70 6d 32 00 00 00 00 00     pm1.....pm2.....
     256:	70 6d 33 00 00 00 00 00 63 66 67 00 00 00 00 00     pm3.....cfg.....
     266:	62 6f 61 72 64 49 44 00 73 65 74 44 6c 79 00 00     boardID.setDly..
     276:	69 64 00 00 00 00 00 00                             id......

0000027e <floatCommCmdList>:
     27e:	31 32 33 63 62 64 69 31 32 33 43 42 44 49 00        123cbdi123CBDI.

0000028d <floatCommParserID>:
     28d:	50 49 42 00                                         PIB.

00000291 <__c.4177>:
     291:	53 65 6e 64 69 6e 67 20 4e 41 4b 20 66 72 6f 6d     Sending NAK from
     2a1:	20 30 78 25 30 34 58 20 74 6f 20 30 78 25 30 34      0x%04X to 0x%04
     2b1:	58 00                                               X.

000002b3 <__c.4175>:
     2b3:	53 65 6e 64 69 6e 67 20 41 43 4b 20 66 72 6f 6d     Sending ACK from
     2c3:	20 30 78 25 30 34 58 20 74 6f 20 30 78 25 30 34      0x%04X to 0x%04
     2d3:	58 00                                               X.

000002d5 <__c.4114>:
     2d5:	50 49 42 20 76 65 72 2e 20 25 64 2e 25 64 2e 25     PIB ver. %d.%d.%
     2e5:	64 2e 20 42 6f 61 72 64 20 49 44 20 3d 20 30 78     d. Board ID = 0x
     2f5:	25 30 32 58 2e 20 50 6f 77 65 72 20 44 6f 77 6e     %02X. Power Down
     305:	20 44 65 6c 61 79 20 3d 20 25 64 20 73 65 63 2e      Delay = %d sec.
	...

00000316 <__c.4110>:
     316:	4f 4b 20 2d 2d 20 50 6f 77 65 72 20 64 6f 77 6e     OK -- Power down
     326:	20 64 65 6c 61 79 20 73 65 74 20 74 6f 20 25 64      delay set to %d
     336:	20 73 65 63 6f 6e 64 73 00                           seconds.

0000033f <__c.4106>:
     33f:	4f 4b 20 2d 2d 20 42 6f 61 72 64 20 49 44 20 77     OK -- Board ID w
     34f:	69 6c 6c 20 62 65 20 25 30 32 58 20 61 66 74 65     ill be %02X afte
     35f:	72 20 70 61 79 6c 6f 61 64 20 72 65 62 6f 6f 74     r payload reboot
	...

00000370 <__c.4100>:
     370:	63 66 67 20 72 65 73 75 6c 74 3a 20 3c 25 73 3e     cfg result: <%s>
	...

00000381 <__c.4098>:
     381:	50 6f 77 65 72 20 44 6f 77 6e 20 44 65 6c 61 79     Power Down Delay
     391:	20 3d 20 25 64 20 73 65 63 6f 6e 64 73 00            = %d seconds.

0000039f <__c.4093>:
     39f:	50 4d 25 64 3d 25 73 20 00                          PM%d=%s .

000003a8 <__c.4085>:
     3a8:	53 4d 43 00                                         SMC.

000003ac <__c.4082>:
     3ac:	43 4f 4d 4d 00                                      COMM.

000003b1 <__c.4071>:
     3b1:	50 4d 25 64 2c 20 44 65 76 69 63 65 20 61 6c 72     PM%d, Device alr
     3c1:	65 61 64 79 20 68 65 72 65 00                       eady here.

000003cb <__c.4069>:
     3cb:	46 61 69 6c 69 6e 67 2e 2e 2e 00                    Failing....

000003d6 <__c.4067>:
     3d6:	6e 75 6d 62 65 72 2e 2e 2e 00                       number....

000003e0 <__c.4065>:
     3e0:	53 4d 43 00                                         SMC.

000003e4 <__c.4063>:
     3e4:	43 4f 4d 4d 00                                      COMM.

000003e9 <__c.4052>:
     3e9:	43 6f 6d 6d 61 6e 64 20 70 61 72 61 6d 73 3a 20     Command params: 
     3f9:	3c 25 73 3e 00                                      <%s>.

000003fe <__c.4050>:
     3fe:	43 6f 6d 6d 61 6e 64 20 69 73 3a 20 3c 25 63 3e     Command is: <%c>
	...

0000040f <__c.4029>:
     40f:	42 61 64 20 63 6f 6d 6d 61 6e 64 2e 20 52 65 73     Bad command. Res
     41f:	75 6c 74 20 63 6f 64 65 3a 20 3c 25 64 3e 00        ult code: <%d>.

0000042e <__c.4027>:
     42e:	50 49 42 00                                         PIB.

00000432 <__c.4025>:
     432:	50 72 6f 63 65 73 73 69 6e 67 20 63 6f 6e 73 6f     Processing conso
     442:	6c 65 20 69 6e 70 75 74 3a 20 3c 25 73 3e 00        le input: <%s>.

00000451 <__c.3988>:
     451:	53 65 6e 74 20 4e 41 4b 2e 2e 2e 00                 Sent NAK....

0000045d <__c.3986>:
     45d:	53 65 6e 64 69 6e 67 20 4e 41 4b 00                 Sending NAK.

00000469 <__c.3984>:
     469:	53 65 6e 64 69 6e 67 20 41 43 4b 20 74 6f 20 30     Sending ACK to 0
     479:	78 25 30 34 78 20 66 72 6f 6d 20 30 78 25 30 34     x%04x from 0x%04
     489:	78 00                                               x.

0000048b <__c.3982>:
     48b:	54 6f 6f 20 6d 61 6e 79 20 63 6f 6d 6d 61 6e 64     Too many command
     49b:	73 00                                               s.

0000049d <__c.3980>:
     49d:	55 6e 6b 6e 6f 77 6e 20 64 65 73 74 69 6e 61 74     Unknown destinat
     4ad:	69 6f 6e 00                                         ion.

000004b1 <__c.3976>:
     4b1:	4c 65 6e 67 74 68 20 74 6f 6f 20 6c 61 72 67 65     Length too large
	...

000004c2 <__c.3974>:
     4c2:	50 72 6f 63 65 73 73 69 6e 67 20 43 6f 6e 73 6f     Processing Conso
     4d2:	6c 65 20 49 6e 70 75 74 2e 2e 2e 2e 00              le Input.....

000004df <__c.3320>:
     4df:	41 64 64 72 65 73 73 20 6f 75 74 20 6f 66 20 72     Address out of r
     4ef:	61 6e 67 65 2e 00                                   ange..

000004f5 <__c.3318>:
     4f5:	41 64 64 72 65 73 73 3d 3d 30 30 30 30 2e 00        Address==0000..

00000504 <__c.3200>:
     504:	46 6f 72 77 61 72 64 69 6e 67 20 6d 65 73 73 61     Forwarding messa
     514:	67 65 20 74 6f 20 30 78 25 30 34 78 0d 0a 00        ge to 0x%04x...

00000523 <__c.3198>:
     523:	52 65 63 65 69 76 65 64 20 75 6e 6b 6e 6f 77 6e     Received unknown
     533:	20 6d 65 73 73 61 67 65 20 74 79 70 65 3a 20 30      message type: 0
     543:	78 25 78 00                                         x%x.

00000547 <__c.3177>:
     547:	52 65 63 65 69 76 65 64 20 73 65 72 69 61 6c 20     Received serial 
     557:	70 6f 72 74 20 70 61 73 73 20 74 68 72 6f 75 67     port pass throug
     567:	68 20 72 65 71 75 65 73 74 00                       h request.

00000571 <__c.3174>:
     571:	52 65 63 65 69 76 65 64 20 66 6f 72 77 61 72 64     Received forward
     581:	20 63 6f 6d 6d 61 6e 64 00                           command.

0000058a <__c.3167>:
     58a:	52 65 63 65 69 76 65 64 20 70 6f 77 65 72 20 6e     Received power n
     59a:	6f 74 69 66 69 63 61 74 69 6f 6e 00                 otification.

000005a6 <__c.3164>:
     5a6:	52 65 63 65 69 76 65 64 20 72 65 71 75 65 73 74     Received request
     5b6:	20 77 61 69 74 69 6e 67 20 70 61 63 6b 65 74 00      waiting packet.

000005c6 <__c.3160>:
     5c6:	52 65 63 65 69 76 65 64 20 50 49 42 20 73 74 61     Received PIB sta
     5d6:	74 75 73 20 72 65 71 75 65 73 74 00                 tus request.

000005e2 <__c.3156>:
     5e2:	52 65 63 65 69 76 65 64 20 69 64 20 72 65 71 75     Received id requ
     5f2:	65 73 74 00                                         est.

000005f6 <__c.3153>:
     5f6:	52 45 43 56 3a 09 53 72 63 3a 30 78 25 30 34 58     RECV:.Src:0x%04X
     606:	09 44 65 73 74 3a 30 78 25 30 34 58 09 54 79 70     .Dest:0x%04X.Typ
     616:	65 3a 30 78 25 30 34 58 00                          e:0x%04X.

0000061f <__c.3193>:
     61f:	0d 0a 42 6f 61 72 64 20 49 44 3d 25 30 32 64 2c     ..Board ID=%02d,
     62f:	20 54 61 73 6b 20 49 44 3d 25 30 32 64 2c 20 54      Task ID=%02d, T
     63f:	61 73 6b 20 69 73 20 6e 6f 74 20 75 73 65 64 2f     ask is not used/
     64f:	75 6e 6b 6e 6b 6f 77 6e 0d 0a 0d 0a 00              unknkown.....

0000065c <__c.3190>:
     65c:	0d 0a 42 6f 61 72 64 20 49 44 3d 25 30 32 64 2c     ..Board ID=%02d,
     66c:	20 54 61 73 6b 20 49 44 3d 25 30 32 64 2c 20 54      Task ID=%02d, T
     67c:	61 73 6b 20 52 75 6e 6e 69 6e 67 20 69 73 20 4d     ask Running is M
     68c:	42 41 52 49 20 43 4f 32 20 53 65 6e 73 6f 72 0d     BARI CO2 Sensor.
     69c:	0a 0d 0a 00                                         ....

000006a0 <__c.3187>:
     6a0:	0d 0a 42 6f 61 72 64 20 49 44 3d 25 30 32 64 2c     ..Board ID=%02d,
     6b0:	20 54 61 73 6b 20 49 44 3d 25 30 32 64 2c 20 54      Task ID=%02d, T
     6c0:	61 73 6b 20 52 75 6e 6e 69 6e 67 20 69 73 20 54     ask Running is T
     6d0:	65 6c 65 64 79 6e 65 20 41 54 4d 0d 0a 0d 0a 00     eledyne ATM.....

000006e0 <__c.3184>:
     6e0:	0d 0a 42 6f 61 72 64 20 49 44 3d 25 30 32 64 2c     ..Board ID=%02d,
     6f0:	20 54 61 73 6b 20 49 44 3d 25 30 32 64 2c 20 54      Task ID=%02d, T
     700:	61 73 6b 20 52 75 6e 6e 69 6e 67 20 69 73 20 61     ask Running is a
     710:	20 50 6f 77 65 72 20 4f 6e 2f 4f 66 66 20 53 65      Power On/Off Se
     720:	6e 73 6f 72 0d 0a 0d 0a 00                          nsor.....

00000729 <__c.3181>:
     729:	0d 0a 42 6f 61 72 64 20 49 44 3d 25 30 32 64 2c     ..Board ID=%02d,
     739:	20 54 61 73 6b 20 49 44 3d 25 30 32 64 2c 20 54      Task ID=%02d, T
     749:	61 73 6b 20 52 75 6e 6e 69 6e 67 20 69 73 20 61     ask Running is a
     759:	6e 20 45 6d 70 74 79 20 50 4d 20 53 65 6e 73 6f     n Empty PM Senso
     769:	72 0d 0a 0d 0a 00                                   r.....

0000076f <__c.3178>:
     76f:	0d 0a 42 6f 61 72 64 20 49 44 3d 25 30 32 64 2c     ..Board ID=%02d,
     77f:	20 54 61 73 6b 20 49 44 3d 25 30 32 64 2c 20 54      Task ID=%02d, T
     78f:	61 73 6b 20 52 75 6e 6e 69 6e 67 20 69 73 20 74     ask Running is t
     79f:	68 65 20 54 75 72 6e 65 72 20 43 33 20 46 6c 6f     he Turner C3 Flo
     7af:	75 72 6f 6d 65 74 65 72 0d 0a 0d 0a 00              urometer.....

000007bc <__c.3175>:
     7bc:	0d 0a 42 6f 61 72 64 20 49 44 3d 25 30 32 64 2c     ..Board ID=%02d,
     7cc:	20 54 61 73 6b 20 49 44 3d 25 30 32 64 2c 20 54      Task ID=%02d, T
     7dc:	61 73 6b 20 52 75 6e 6e 69 6e 67 20 69 73 20 74     ask Running is t
     7ec:	68 65 20 53 65 61 62 69 72 64 20 47 50 43 54 44     he Seabird GPCTD
     7fc:	0d 0a 0d 0a 00                                      .....

00000801 <__c.3172>:
     801:	0d 0a 42 6f 61 72 64 20 49 44 3d 25 30 32 64 2c     ..Board ID=%02d,
     811:	20 54 61 73 6b 20 49 44 3d 25 30 32 64 2c 20 54      Task ID=%02d, T
     821:	61 73 6b 20 52 75 6e 6e 69 6e 67 20 69 73 20 74     ask Running is t
     831:	68 65 20 53 65 61 62 69 72 64 20 33 37 53 49 20     he Seabird 37SI 
     841:	43 54 44 0d 0a 0d 0a 00                             CTD.....

00000849 <__c.3169>:
     849:	0d 0a 42 6f 61 72 64 20 49 44 3d 25 30 32 64 2c     ..Board ID=%02d,
     859:	20 54 61 73 6b 20 49 44 3d 25 30 32 64 2c 20 54      Task ID=%02d, T
     869:	61 73 6b 20 52 75 6e 6e 69 6e 67 20 69 73 20 74     ask Running is t
     879:	68 65 20 53 4d 43 20 43 6f 6d 6d 20 53 75 70 70     he SMC Comm Supp
     889:	6f 72 74 0d 0a 0d 0a 00                             ort.....

00000891 <__c.3165>:
     891:	0d 0a 42 6f 61 72 64 20 49 44 3d 25 30 32 64 2c     ..Board ID=%02d,
     8a1:	20 54 61 73 6b 20 49 44 3d 25 30 32 64 2c 20 54      Task ID=%02d, T
     8b1:	61 73 6b 20 52 75 6e 6e 69 6e 67 20 69 73 20 74     ask Running is t
     8c1:	68 65 20 50 61 79 6c 6f 61 64 20 43 6f 6d 6d 20     he Payload Comm 
     8d1:	53 75 70 70 6f 72 74 0d 0a 0d 0a 00                 Support.....

000008dd <__c.3161>:
     8dd:	69 3d 25 64 2c 20 74 73 6b 3d 25 64 00              i=%d, tsk=%d.

000008ea <MBARI_CO2_Commands>:
     8ea:	6f 6e 00 00 00 00 00 00 00 00 6f 66 66 00 00 00     on........off...
     8fa:	00 00 00 00 61 75 74 6f 72 75 6e 00 00 00 72 75     ....autorun...ru
     90a:	6e 00 00 00 00 00 00 00 73 74 6f 70 00 00 00 00     n.......stop....
     91a:	00 00 73 74 61 74 75 73 00 00 00 00 69 64 00 00     ..status....id..
     92a:	00 00 00 00 00 00 63 6d 64 00 00 00 00 00 00 00     ......cmd.......

0000093a <MBARI_CO2_ParserID>:
     93a:	43 4f 32 00                                         CO2.

0000093e <MBARI_CO2_CmdList>:
     93e:	6f 66 61 72 78 73 69 63 4f 46 41 52 58 53 49 43     ofarxsicOFARXSIC
	...

0000094f <__c.3272>:
     94f:	4f 4b 00                                            OK.

00000952 <__c.3270>:
     952:	41 75 74 6f 52 75 6e 20 69 73 20 25 73 00           AutoRun is %s.

00000960 <__c.3252>:
     960:	4d 42 41 52 49 20 43 4f 32 20 53 65 6e 73 6f 72     MBARI CO2 Sensor
	...

00000971 <__c.3240>:
     971:	50 6f 77 65 72 20 69 73 20 25 73 2e 20 53 61 6d     Power is %s. Sam
     981:	70 6c 69 6e 67 20 69 73 20 25 73 2e 20 41 75 74     pling is %s. Aut
     991:	6f 72 75 6e 20 69 73 20 25 73 00                    orun is %s.

0000099c <__c.3032>:
     99c:	50 6f 77 65 72 20 64 6f 77 6e 0d 00                 Power down..

000009a8 <__c.2995>:
     9a8:	4d 42 41 52 49 20 43 4f 32 20 66 6f 72 20 50 4d     MBARI CO2 for PM
     9b8:	25 64 00                                            %d.

000009bb <cmdGPCTD_Enter>:
     9bb:	0d 0a 00                                            ...

000009be <cmdGPCTD_DS>:
     9be:	64 73 00                                            ds.

000009c1 <cmdGPCTD_DC>:
     9c1:	64 63 00                                            dc.

000009c4 <cmdGPCTD_GetHD>:
     9c4:	67 65 74 68 64 00                                   gethd.

000009ca <cmdGPCTD_GetCD>:
     9ca:	67 65 74 63 64 00                                   getcd.

000009d0 <cmdGPCTD_ResetLogging>:
     9d0:	72 65 73 65 74 6c 6f 67 67 69 6e 67 00              resetlogging.

000009dd <cmdGPCTD_DateTime>:
     9dd:	64 61 74 65 74 69 6d 65 3d 25 30 32 64 25 30 32     datetime=%02d%02
     9ed:	64 25 30 34 64 25 30 32 64 25 30 32 64 25 30 32     d%04d%02d%02d%02
     9fd:	64 00                                               d.

000009ff <cmdGPCTD_BaudRate>:
     9ff:	62 61 75 64 72 61 74 65 3d 25 6c 64 00              baudrate=%ld.

00000a0c <cmdGPCTD_OutputExecuted>:
     a0c:	6f 75 74 70 75 74 65 78 65 63 75 74 65 64 3d 25     outputexecuted=%
     a1c:	63 00                                               c.

00000a1e <cmdGPCTD_AutoRun>:
     a1e:	61 75 74 6f 72 75 6e 3d 25 63 00                    autorun=%c.

00000a29 <cmdGPCTD_OutputFormat>:
     a29:	6f 75 74 70 75 74 66 6f 72 6d 61 74 3d 25 64 00     outputformat=%d.

00000a39 <cmdGPCTD_MinCondFreq>:
     a39:	6d 69 6e 63 6f 6e 64 66 72 65 71 3d 25 64 00        mincondfreq=%d.

00000a48 <cmdGPCTD_Interval>:
     a48:	69 6e 74 65 72 76 61 6c 3d 25 64 00                 interval=%d.

00000a54 <cmdGPCTD_CustomPump>:
     a54:	63 75 73 74 6f 6d 70 75 6d 70 6d 6f 64 65 3d 25     custompumpmode=%
     a64:	63 00                                               c.

00000a66 <cmdGPCTD_TxRealTime>:
     a66:	74 78 72 65 61 6c 74 69 6d 65 3d 25 63 00           txrealtime=%c.

00000a74 <cmdGPCTD_RS232ForceOn>:
     a74:	72 73 32 33 32 66 6f 72 63 65 6f 6e 3d 25 63 00     rs232forceon=%c.

00000a84 <cmdGPCTD_Start>:
     a84:	73 74 61 72 74 00                                   start.

00000a8a <cmdGPCTD_Stop>:
     a8a:	73 74 6f 70 00                                      stop.

00000a8f <cmdGPCTD_PumpFast>:
     a8f:	70 75 6d 70 66 61 73 74 00                          pumpfast.

00000a98 <cmdGPCTD_EOL>:
     a98:	53 3e 00                                            S>.

00000a9b <cmdGPCTD_Sample_EOL>:
     a9b:	0d 0a 00                                            ...

00000a9e <parseGPCTD_SerNum>:
     a9e:	20 20 00                                              .

00000aa1 <tokensGPCTD1>:
     aa1:	20 09 3d 2c 3a 0d 0a 00                              .=,:...

00000aa9 <checkO2>:
     aa9:	3c 53 42 45 34 33 3e 79 65 73 3c 2f 53 42 45 34     <SBE43>yes</SBE4
     ab9:	33 3e 00                                            3>.

00000abc <check2forO2>:
     abc:	0d 0a 61 63 71 75 69 72 65 20 53 42 45 20 34 33     ..acquire SBE 43
	...

00000acd <statusGPCTD_On>:
     acd:	4f 6e 00                                            On.

00000ad0 <statusGPCTD_Off>:
     ad0:	4f 66 66 00                                         Off.

00000ad4 <statusGPCTD_OK>:
     ad4:	53 55 43 43 45 53 53 3a 00                          SUCCESS:.

00000add <statusGPCTD_Fail>:
     add:	46 41 49 4c 45 44 3a 00                             FAILED:.

00000ae5 <statusGPCTD_Msg2>:
     ae5:	20 50 77 72 3d 00                                    Pwr=.

00000aeb <statusGPCTD_Msg3>:
     aeb:	20 20 53 6d 70 6c 3d 00                               Smpl=.

00000af3 <statusGPCTD_Msg4>:
     af3:	20 20 49 6e 74 72 76 6c 3d 25 30 34 64 20 73 65       Intrvl=%04d se
     b03:	63 20 53 69 7a 65 3d 25 30 32 64 20 73 6d 70 6c     c Size=%02d smpl
     b13:	2f 70 6b 74 20 4f 66 66 2d 54 6d 3d 25 64 20 46     /pkt Off-Tm=%d F
     b23:	6c 75 73 68 2d 54 6d 3d 25 64 20 53 6c 70 3d 25     lush-Tm=%d Slp=%
     b33:	73 20 44 65 73 74 3d 30 78 25 30 34 58 00           s Dest=0x%04X.

00000b41 <statusGPCTD_Msg5>:
     b41:	20 20 49 6e 74 72 76 6c 3d 25 30 34 64 20 73 65       Intrvl=%04d se
     b51:	63 20 53 69 7a 65 3d 25 30 32 64 20 73 6d 70 6c     c Size=%02d smpl
     b61:	2f 70 6b 74 20 4f 66 66 2d 54 6d 3d 25 64 20 46     /pkt Off-Tm=%d F
     b71:	6c 75 73 68 2d 54 6d 3d 25 64 20 53 6c 70 3d 25     lush-Tm=%d Slp=%
     b81:	73 20 44 65 73 74 3d 53 48 4f 52 45 00              s Dest=SHORE.

00000b8e <statusGPCTD_Msg6>:
     b8e:	20 20 4f 78 79 67 65 6e 3d 00                         Oxygen=.

00000b98 <statusGPCTD_Msg7>:
     b98:	20 20 41 75 74 6f 72 75 6e 3d 00                      Autorun=.

00000ba3 <statusGPCTD_Yes>:
     ba3:	59 65 73 00                                         Yes.

00000ba7 <statusGPCTD_No>:
     ba7:	4e 6f 00                                            No.

00000baa <gpctdCommands>:
     baa:	6f 6e 00 00 00 00 00 00 6f 66 66 00 00 00 00 00     on......off.....
     bba:	61 75 74 6f 72 75 6e 00 72 75 6e 00 00 00 00 00     autorun.run.....
     bca:	73 74 6f 70 00 00 00 00 70 65 72 69 6f 64 00 00     stop....period..
     bda:	73 69 7a 65 00 00 00 00 64 65 73 74 00 00 00 00     size....dest....
     bea:	73 74 61 74 00 00 00 00 69 64 00 00 00 00 00 00     stat....id......
     bfa:	63 6d 64 00 00 00 00 00 63 79 63 6c 65 00 00 00     cmd.....cycle...
     c0a:	66 6c 75 73 68 00 00 00                             flush...

00000c12 <gpctdParserID>:
     c12:	43 54 44 00                                         CTD.

00000c16 <ctdCmdList>:
     c16:	6f 66 61 72 78 70 7a 64 73 69 63 79 6c 4f 46 41     ofarxpzdsicylOFA
     c26:	52 58 50 5a 44 53 49 43 59 4c 00                    RXPZDSICYL.

00000c31 <__c.3711>:
     c31:	72 65 73 65 74 65 63 00                             resetec.

00000c39 <__c.3709>:
     c39:	72 65 73 65 74 6c 6f 67 67 69 6e 67 00              resetlogging.

00000c46 <__c.3707>:
     c46:	67 65 74 00                                         get.

00000c4a <__c.3705>:
     c4a:	61 75 74 6f 72 75 6e 00                             autorun.

00000c52 <__c.3703>:
     c52:	73 74 61 72 74 00                                   start.

00000c58 <__c.3701>:
     c58:	6f 75 74 70 75 74 65 78 65 63 75 74 65 64 74 61     outputexecutedta
     c68:	67 00                                               g.

00000c6a <__c.3699>:
     c6a:	62 61 75 64 00                                      baud.

00000c6f <__c.3685>:
     c6f:	43 54 44 20 56 65 72 73 69 6f 6e 20 61 6e 64 20     CTD Version and 
     c7f:	53 65 72 69 61 6c 20 4e 75 6d 62 65 72 20 69 73     Serial Number is
     c8f:	20 6e 6f 74 20 61 76 61 69 6c 61 62 6c 65 2e 00      not available..

00000c9f <__c.3452>:
     c9f:	43 6f 6d 6d 61 6e 64 20 46 61 69 6c 65 64 00        Command Failed.

00000cae <__c.3449>:
     cae:	55 6e 72 65 63 6f 67 6e 69 7a 65 64 20 43 6f 6d     Unrecognized Com
     cbe:	6d 61 6e 64 00                                      mand.

00000cc3 <__c.3446>:
     cc3:	43 6f 6d 6d 61 6e 64 20 72 65 63 65 69 76 65 64     Command received
     cd3:	20 77 61 73 20 6e 6f 74 20 66 6f 72 20 74 68 65      was not for the
     ce3:	20 47 50 43 54 44 00                                 GPCTD.

00000cea <__c.3442>:
     cea:	52 65 63 65 69 76 65 64 20 61 6e 20 45 6d 70 74     Received an Empt
     cfa:	79 20 43 6f 6d 6d 61 6e 64 00                       y Command.

00000d04 <__c.3339>:
     d04:	20 00                                                .

00000d06 <__c.3136>:
     d06:	4e 6f 20 73 74 61 72 74 20 61 64 64 72 65 73 73     No start address
     d16:	20 66 6f 72 20 45 45 50 52 4f 4d 00                  for EEPROM.

00000d22 <__c.3132>:
     d22:	45 6e 64 69 6e 67 20 74 61 73 6b 2e 2e 2e 2e 00     Ending task.....

00000d32 <ctd37SICommands>:
     d32:	72 75 6e 00 00 00 00 73 74 6f 70 00 00 00 63 6d     run....stop...cm
     d42:	64 00 00 00 00 69 64 00 00 00 00 00 73 74 61 74     d....id.....stat
     d52:	75 73 00                                            us.

00000d55 <ctd37SIParserID>:
     d55:	33 37 53 49 00                                      37SI.

00000d5a <ctd37SICmdList>:
     d5a:	72 78 63 69 73 52 58 43 49 53 00                    rxcisRXCIS.

00000d65 <__c.3419>:
     d65:	55 6e 72 65 63 6f 67 6e 69 7a 65 64 20 43 6f 6d     Unrecognized Com
     d75:	6d 61 6e 64 00                                      mand.

00000d7a <__c.3417>:
     d7a:	59 6f 75 20 6d 75 73 74 20 73 74 6f 70 20 73 61     You must stop sa
     d8a:	6d 70 6c 69 6e 67 20 66 69 72 73 74 00              mpling first.

00000d97 <__c.3413>:
     d97:	4f 4b 00                                            OK.

00000d9a <__c.3363>:
     d9a:	43 54 44 33 37 53 49 2e 20 53 61 6d 70 6c 69 6e     CTD37SI. Samplin
     daa:	67 20 69 73 20 25 73 00                             g is %s.

00000db2 <__c.3361>:
     db2:	53 54 41 54 55 53 20 43 4f 4d 4d 41 4e 44 00        STATUS COMMAND.

00000dc1 <__c.3357>:
     dc1:	43 54 44 33 37 53 49 2e 20 45 72 72 6f 72 20 72     CTD37SI. Error r
     dd1:	65 61 64 69 6e 67 20 73 65 72 69 61 6c 20 6e 75     eading serial nu
     de1:	6d 62 65 72 2e 00                                   mber..

00000de7 <__c.3355>:
     de7:	43 54 44 33 37 53 49 2e 20 53 65 72 69 61 6c 20     CTD37SI. Serial 
     df7:	4e 75 6d 62 65 72 3d 25 73 00                       Number=%s.

00000e01 <__c.3353>:
     e01:	49 44 20 43 4f 4d 4d 41 4e 44 00                    ID COMMAND.

00000e0c <__c.3349>:
     e0c:	59 6f 75 20 6d 75 73 74 20 73 74 6f 70 20 73 61     You must stop sa
     e1c:	6d 70 6c 69 6e 67 20 66 69 72 73 74 00              mpling first.

00000e29 <__c.3344>:
     e29:	43 4d 44 20 74 6f 20 74 68 65 20 43 54 44 00        CMD to the CTD.

00000e38 <__c.3340>:
     e38:	4f 4b 00                                            OK.

00000e3b <__c.3338>:
     e3b:	53 54 4f 50 20 43 4f 4d 4d 41 4e 44 00              STOP COMMAND.

00000e48 <__c.3333>:
     e48:	4f 4b 00                                            OK.

00000e4b <__c.3327>:
     e4b:	52 55 4e 20 43 4f 4d 4d 41 4e 44 00                 RUN COMMAND.

00000e57 <__c.3323>:
     e57:	50 61 72 73 69 6e 67 20 43 6f 6d 6d 61 6e 64 20     Parsing Command 
     e67:	3c 25 63 3e 20 3c 25 73 3e 00                       <%c> <%s>.

00000e71 <__c.3263>:
     e71:	63 6d 64 20 3d 20 3c 25 73 3e 3c 25 73 3e 00        cmd = <%s><%s>.

00000e80 <__c.3261>:
     e80:	62 61 64 20 2e 2e 20 63 6f 64 65 3d 25 64 00        bad .. code=%d.

00000e8f <__c.3259>:
     e8f:	67 6f 6f 64 20 6d 65 73 73 61 67 65 00              good message.

00000e9c <__c.3257>:
     e9c:	50 61 72 73 69 6e 67 20 63 6f 6e 73 6f 6c 65 3a     Parsing console:
     eac:	20 3c 25 73 3e 00                                    <%s>.

00000eb2 <__c.3019>:
     eb2:	4e 6f 20 73 74 61 72 74 20 61 64 64 72 65 73 73     No start address
     ec2:	20 66 6f 72 20 45 45 50 52 4f 4d 00                  for EEPROM.

00000ece <__c.3015>:
     ece:	45 6e 64 69 6e 67 20 74 61 73 6b 2e 2e 2e 2e 00     Ending task.....

00000ede <__c.3013>:
     ede:	50 6f 77 65 72 20 64 6f 77 6e 2e 2e 2e 00           Power down....

00000eec <__c.3011>:
     eec:	43 54 44 33 37 53 49 20 4c 6f 6f 70 20 66 6f 72     CTD37SI Loop for
     efc:	20 50 4d 25 64 00                                    PM%d.

00000f02 <cmd37SI_Enter>:
     f02:	0d 0a 00                                            ...

00000f05 <cmd37SI_DS>:
     f05:	64 73 00                                            ds.

00000f08 <cmd37SI_DC>:
     f08:	64 63 00                                            dc.

00000f0b <cmd37SI_GetHD>:
     f0b:	67 65 74 68 64 00                                   gethd.

00000f11 <cmd37SI_ResetLogging>:
     f11:	72 65 73 65 74 6c 6f 67 67 69 6e 67 00              resetlogging.

00000f1e <cmd37SI_DateTime>:
     f1e:	64 61 74 65 74 69 6d 65 3d 25 30 32 64 25 30 32     datetime=%02d%02
     f2e:	64 25 30 34 64 25 30 32 64 25 30 32 64 25 30 32     d%04d%02d%02d%02
     f3e:	64 00                                               d.

00000f40 <cmd37SI_BaudRate>:
     f40:	62 61 75 64 72 61 74 65 3d 25 6c 64 00              baudrate=%ld.

00000f4d <cmd37SI_OutputExecuted>:
     f4d:	6f 75 74 70 75 74 65 78 65 63 75 74 65 64 3d 25     outputexecuted=%
     f5d:	63 00                                               c.

00000f5f <cmd37SI_AutoRun>:
     f5f:	61 75 74 6f 72 75 6e 3d 25 63 00                    autorun=%c.

00000f6a <cmd37SI_OutputFormat>:
     f6a:	6f 75 74 70 75 74 66 6f 72 6d 61 74 3d 25 64 00     outputformat=%d.

00000f7a <cmd37SI_MinCondFreq>:
     f7a:	6d 69 6e 63 6f 6e 64 66 72 65 71 3d 25 64 00        mincondfreq=%d.

00000f89 <cmd37SI_Interval>:
     f89:	73 61 6d 70 6c 65 69 6e 74 65 72 76 61 6c 3d 25     sampleinterval=%
     f99:	64 00                                               d.

00000f9b <cmd37SI_CustomPump>:
     f9b:	63 75 73 74 6f 6d 70 75 6d 70 6d 6f 64 65 3d 25     custompumpmode=%
     fab:	63 00                                               c.

00000fad <cmd37SI_TxRealTime>:
     fad:	74 78 72 65 61 6c 74 69 6d 65 3d 25 63 00           txrealtime=%c.

00000fbb <cmd37SI_RS232ForceOn>:
     fbb:	72 73 32 33 32 66 6f 72 63 65 6f 6e 3d 25 63 00     rs232forceon=%c.

00000fcb <cmd37SI_Start>:
     fcb:	73 74 61 72 74 00                                   start.

00000fd1 <cmd37SI_Stop>:
     fd1:	73 74 6f 70 00                                      stop.

00000fd6 <cmd37SI_EOL>:
     fd6:	53 3e 00                                            S>.

00000fd9 <cmd37SI_Sample_EOL>:
     fd9:	0d 0a 00                                            ...

00000fdc <parse37SI_SerNum>:
     fdc:	20 20 00                                              .

00000fdf <tokens37SI1>:
     fdf:	20 09 3d 2c 3a 0d 0a 00                              .=,:...

00000fe7 <status37SI_On>:
     fe7:	4f 6e 00                                            On.

00000fea <status37SI_Off>:
     fea:	4f 66 66 00                                         Off.

00000fee <status37SI_OK>:
     fee:	53 55 43 43 45 53 53 3a 00                          SUCCESS:.

00000ff7 <status37SI_Fail>:
     ff7:	46 41 49 4c 45 44 3a 00                             FAILED:.

00000fff <status37SI_Msg2>:
     fff:	20 50 77 72 3d 00                                    Pwr=.

00001005 <status37SI_Msg3>:
    1005:	20 20 53 6d 70 6c 3d 00                               Smpl=.

0000100d <status37SI_Msg4>:
    100d:	20 20 49 6e 74 72 76 6c 3d 25 30 34 64 20 73 65       Intrvl=%04d se
    101d:	63 20 53 69 7a 65 3d 25 30 32 64 20 73 6d 70 6c     c Size=%02d smpl
    102d:	2f 70 6b 74 20 4f 66 66 2d 54 3d 25 64 20 53 6c     /pkt Off-T=%d Sl
    103d:	70 3d 25 73 20 44 65 73 74 2e 3d 30 78 25 30 34     p=%s Dest.=0x%04
    104d:	58 00                                               X.

0000104f <status37SI_Msg5>:
    104f:	20 20 49 6e 74 72 76 6c 3d 25 30 34 64 20 73 65       Intrvl=%04d se
    105f:	63 20 53 69 7a 65 3d 25 30 32 64 20 73 6d 70 6c     c Size=%02d smpl
    106f:	2f 70 6b 74 20 4f 66 66 2d 54 3d 25 64 20 53 6c     /pkt Off-T=%d Sl
    107f:	70 3d 25 73 20 44 65 73 74 2e 3d 53 48 4f 52 45     p=%s Dest.=SHORE
	...

00001090 <SB37SICommands>:
    1090:	6f 6e 00 00 00 00 00 00 6f 66 66 00 00 00 00 00     on......off.....
    10a0:	72 75 6e 00 00 00 00 00 73 74 6f 70 00 00 00 00     run.....stop....
    10b0:	70 65 72 69 6f 64 00 00 73 69 7a 65 00 00 00 00     period..size....
    10c0:	64 65 73 74 00 00 00 00 73 74 61 74 00 00 00 00     dest....stat....
    10d0:	69 64 00 00 00 00 00 00 63 6d 64 00 00 00 00 00     id......cmd.....
    10e0:	63 79 63 6c 65 00 00 00                             cycle...

000010e8 <SB37SIParserID>:
    10e8:	33 37 53 49 00                                      37SI.

000010ed <ctd37SICmdList2>:
    10ed:	6f 66 72 78 70 7a 64 73 69 63 79 4f 46 52 58 50     ofrxpzdsicyOFRXP
    10fd:	5a 44 53 49 43 59 00                                ZDSICY.

00001104 <__c.3504>:
    1104:	72 65 73 65 74 65 63 00                             resetec.

0000110c <__c.3502>:
    110c:	72 65 73 65 74 6c 6f 67 67 69 6e 67 00              resetlogging.

00001119 <__c.3500>:
    1119:	67 65 74 00                                         get.

0000111d <__c.3498>:
    111d:	61 75 74 6f 72 75 6e 00                             autorun.

00001125 <__c.3496>:
    1125:	73 74 61 72 74 00                                   start.

0000112b <__c.3494>:
    112b:	6f 75 74 70 75 74 65 78 65 63 75 74 65 64 74 61     outputexecutedta
    113b:	67 00                                               g.

0000113d <__c.3492>:
    113d:	62 61 75 64 00                                      baud.

00001142 <__c.3478>:
    1142:	43 54 44 20 56 65 72 73 69 6f 6e 20 61 6e 64 20     CTD Version and 
    1152:	53 65 72 69 61 6c 20 4e 75 6d 62 65 72 20 69 73     Serial Number is
    1162:	20 6e 6f 74 20 61 76 61 69 6c 61 62 6c 65 2e 00      not available..

00001172 <__c.3259>:
    1172:	70 75 6d 70 20 69 6e 73 74 61 6c 6c 65 64 20 3d     pump installed =
    1182:	20 79 65 73 00                                       yes.

00001187 <__c.3086>:
    1187:	50 6f 77 65 72 20 64 6f 77 6e 2e 2e 2e 00           Power down....

00001195 <__c.3084>:
    1195:	33 37 53 49 20 66 6f 72 20 50 4d 25 64 00           37SI for PM%d.

000011a3 <teledyneATM88XCommands>:
    11a3:	72 75 6e 00 00 00 00 73 74 6f 70 00 00 00 6f 6e     run....stop...on
    11b3:	00 00 00 00 00 6f 66 66 00 00 00 00 63 6d 64 00     .....off....cmd.
    11c3:	00 00 00 69 64 00 00 00 00 00 73 74 61 74 75 73     ...id.....status
	...

000011d4 <teledyneATM88XParserID>:
    11d4:	41 54 4d 00                                         ATM.

000011d8 <teledyneATM88XCmdList>:
    11d8:	72 78 6f 66 63 69 73 52 58 4f 46 43 49 53 00        rxofcisRXOFCIS.

000011e7 <__c.3400>:
    11e7:	4d 6f 64 65 6d 20 69 73 20 4f 66 66 20 2d 2d 20     Modem is Off -- 
    11f7:	50 6c 65 61 73 65 20 74 75 72 6e 20 69 74 20 6f     Please turn it o
    1207:	6e 20 66 69 72 73 74 2e 00                          n first..

00001210 <__c.3398>:
    1210:	55 6e 72 65 63 6f 67 6e 69 7a 65 64 20 43 6f 6d     Unrecognized Com
    1220:	6d 61 6e 64 00                                      mand.

00001225 <__c.3396>:
    1225:	59 6f 75 20 6d 75 73 74 20 73 74 6f 70 20 73 61     You must stop sa
    1235:	6d 70 6c 69 6e 67 20 66 69 72 73 74 00              mpling first.

00001242 <__c.3387>:
    1242:	4f 4b 00                                            OK.

00001245 <__c.3339>:
    1245:	4d 6f 64 65 6d 20 69 73 20 4f 66 66 20 2d 2d 20     Modem is Off -- 
    1255:	50 6c 65 61 73 65 20 74 75 72 6e 20 69 74 20 6f     Please turn it o
    1265:	6e 20 66 69 72 73 74 2e 00                          n first..

0000126e <__c.3337>:
    126e:	4f 4b 00                                            OK.

00001271 <__c.3334>:
    1271:	59 6f 75 20 6d 75 73 74 20 73 74 6f 70 20 73 61     You must stop sa
    1281:	6d 70 6c 69 6e 67 20 66 69 72 73 74 00              mpling first.

0000128e <__c.3323>:
    128e:	43 4d 44 20 74 6f 20 73 65 6e 64 00                 CMD to send.

0000129a <__c.3319>:
    129a:	54 65 6c 65 64 79 6e 65 20 41 54 4d 2d 38 38 58     Teledyne ATM-88X
    12aa:	2e 20 53 61 6d 70 6c 69 6e 67 20 69 73 20 25 73     . Sampling is %s
    12ba:	2e 20 50 6f 77 65 72 20 69 73 20 25 73 2e 00        . Power is %s..

000012c9 <__c.3315>:
    12c9:	54 65 6c 65 64 79 6e 65 20 41 54 4d 2d 38 38 58     Teledyne ATM-88X
	...

000012da <__c.3302>:
    12da:	52 55 4e 20 43 4f 4d 4d 41 4e 44 00                 RUN COMMAND.

000012e6 <__c.3298>:
    12e6:	50 61 72 73 69 6e 67 20 43 6f 6d 6d 61 6e 64 20     Parsing Command 
    12f6:	3c 25 63 3e 20 3c 25 73 3e 00                       <%c> <%s>.

00001300 <__c.3238>:
    1300:	63 6d 64 20 3d 20 3c 25 73 3e 3c 25 73 3e 00        cmd = <%s><%s>.

0000130f <__c.3236>:
    130f:	62 61 64 20 2e 2e 20 63 6f 64 65 3d 25 64 00        bad .. code=%d.

0000131e <__c.3234>:
    131e:	67 6f 6f 64 20 6d 65 73 73 61 67 65 00              good message.

0000132b <__c.3232>:
    132b:	50 61 72 73 69 6e 67 20 63 6f 6e 73 6f 6c 65 3a     Parsing console:
    133b:	20 3c 25 73 3e 00                                    <%s>.

00001341 <__c.3051>:
    1341:	4e 6f 20 73 74 61 72 74 20 61 64 64 72 65 73 73     No start address
    1351:	20 66 6f 72 20 45 45 50 52 4f 4d 00                  for EEPROM.

0000135d <__c.3047>:
    135d:	45 6e 64 69 6e 67 20 74 61 73 6b 2e 2e 2e 2e 00     Ending task.....

0000136d <__c.3045>:
    136d:	50 6f 77 65 72 20 64 6f 77 6e 2e 2e 2e 00           Power down....

0000137b <__c.3043>:
    137b:	47 6f 74 20 73 6f 6d 65 74 68 69 6e 67 00           Got something.

00001389 <__c.3041>:
    1389:	54 65 6c 65 64 79 6e 65 20 41 54 4d 20 4c 6f 6f     Teledyne ATM Loo
    1399:	70 20 66 6f 72 20 50 4d 25 64 00                    p for PM%d.

000013a4 <c3Commands>:
    13a4:	73 74 61 74 65 00 00 00 6f 6e 00 00 00 00 00 00     state...on......
    13b4:	6f 66 66 00 00 00 00 00 73 74 61 72 74 00 00 00     off.....start...
    13c4:	73 74 6f 70 00 00 00 00 63 66 67 00 00 00 00 00     stop....cfg.....
    13d4:	63 61 6c 00 00 00 00 00 74 69 6d 00 00 00 00 00     cal.....tim.....
    13e4:	77 69 70 00 00 00 00 00 69 64 00 00 00 00 00 00     wip.....id......

000013f4 <c3ParserID>:
    13f4:	43 33 00                                            C3.

000013f7 <c3CmdList>:
    13f7:	74 6f 66 73 78 63 61 6d 77 69 54 4f 46 53 58 43     tofsxcamwiTOFSXC
    1407:	41 4d 57 49 00                                      AMWI.

0000140c <separator2a>:
    140c:	20 09 0d 0a 00                                       ....

00001411 <c_P>:
    1411:	4e 4e 4e 4e 4e 4e 4e 4e                             NNNNNNNN

00001419 <p_P>:
    1419:	4f 66 66                                            Off

0000141c <on_P>:
    141c:	4f 6e 20                                            On 

0000141f <__c.4531>:
    141f:	53 4e 3a 30 30 30 30 30 30 30 30 20 66 77 3a 25     SN:00000000 fw:%
    142f:	30 32 64 2e 25 30 32 64 20 43 6f 6d 6d 3a 25 30     02d.%02d Comm:%0
    143f:	32 64 2e 25 30 32 64 20 43 31 3a 2e 2e 2e 2e 2e     2d.%02d C1:.....
    144f:	2e 2e 2e 2e 2e 2e 2e 2e 2e 2e 20 43 32 3a 2e 2e     .......... C2:..
    145f:	2e 2e 2e 2e 2e 2e 2e 2e 2e 2e 2e 2e 2e 20 43 33     ............. C3
    146f:	3a 2e 2e 2e 2e 2e 2e 2e 2e 2e 2e 2e 2e 2e 2e 2e     :...............
    147f:	20 50 3a 25 63 20 54 3a 25 63 20 57 3a 25 63 00      P:%c T:%c W:%c.

0000148f <__c.4499>:
    148f:	25 30 32 64 2f 25 30 32 64 2f 25 30 34 64 20 20     %02d/%02d/%04d  
    149f:	25 30 32 64 3a 25 30 32 64 3a 25 30 32 64 00        %02d:%02d:%02d.

000014ae <__c.4419>:
    14ae:	53 4e 3a 25 63 25 63 25 63 25 63 25 63 25 63 25     SN:%c%c%c%c%c%c%
    14be:	63 25 63 20 66 77 3a 25 64 2e 25 64 2c 20 43 31     c%c fw:%d.%d, C1
    14ce:	3a 25 63 20 43 32 3a 25 63 20 43 33 3a 25 63 20     :%c C2:%c C3:%c 
    14de:	43 34 3a 25 63 20 43 35 3a 25 63 20 43 36 3a 25     C4:%c C5:%c C6:%
    14ee:	63 20 50 3a 25 63 20 54 3a 25 63 20 4c 6f 67 3a     c P:%c T:%c Log:
    14fe:	25 63 2c 20 53 69 7a 65 3a 25 64 20 46 72 65 65     %c, Size:%d Free
    150e:	3a 25 64 20 43 6f 6d 6d 3a 25 64 2e 25 64 00        :%d Comm:%d.%d.

0000151d <__c.4182>:
    151d:	4e 6f 20 46 6c 75 6f 72 6f 6d 65 74 65 72 20 00     No Fluorometer .

0000152d <__c.4017>:
    152d:	53 61 6d 70 6c 65 73 3a 25 64 20 50 65 72 69 6f     Samples:%d Perio
    153d:	64 3a 25 64 20 4f 6e 20 44 65 6c 61 79 3a 25 64     d:%d On Delay:%d
    154d:	20 43 31 3a 25 63 20 43 32 3a 25 63 20 43 33 3a      C1:%c C2:%c C3:
    155d:	25 63 20 43 34 3a 25 63 20 43 35 3a 25 63 20 43     %c C4:%c C5:%c C
    156d:	36 3a 25 63 20 50 3a 25 63 20 54 3a 25 63 20 47     6:%c P:%c T:%c G
    157d:	31 3a 25 64 20 47 32 3a 25 64 20 47 33 3a 25 64     1:%d G2:%d G3:%d
    158d:	20 47 34 3a 25 64 20 47 35 3a 25 64 20 47 36 3a      G4:%d G5:%d G6:
    159d:	25 64 20 47 37 3a 25 64 20 47 38 3a 25 64 20 41     %d G7:%d G8:%d A
    15ad:	76 67 23 3a 25 64 20 50 77 72 3a 25 63 25 63 25     vg#:%d Pwr:%c%c%
    15bd:	63 20 57 69 70 65 73 3a 25 64 00                    c Wipes:%d.

000015c8 <__c.3723>:
    15c8:	55 6e 72 65 63 6f 67 6e 69 7a 65 64 20 43 6f 6d     Unrecognized Com
    15d8:	6d 61 6e 64 00                                      mand.

000015dd <__c.3719>:
    15dd:	54 68 61 74 20 63 6f 6d 6d 61 6e 64 20 69 73 20     That command is 
    15ed:	63 75 72 72 65 6e 74 6c 79 20 6e 6f 74 20 73 75     currently not su
    15fd:	70 70 6f 72 74 65 64 00                             pported.

00001605 <__c.3716>:
    1605:	53 79 73 74 65 6d 20 69 73 20 69 6e 20 61 6e 20     System is in an 
    1615:	75 6e 6b 6e 6f 77 6e 20 73 74 61 74 65 00           unknown state.

00001623 <__c.3714>:
    1623:	50 6f 77 65 72 20 69 73 20 4f 46 46 2c 20 53 61     Power is OFF, Sa
    1633:	6d 70 6c 69 6e 67 20 69 73 20 4f 46 46 00           mpling is OFF.

00001641 <__c.3712>:
    1641:	50 6f 77 65 72 20 69 73 20 4f 46 46 2c 20 53 61     Power is OFF, Sa
    1651:	6d 70 6c 69 6e 67 20 69 73 20 4f 4e 00              mpling is ON.

0000165e <__c.3710>:
    165e:	50 6f 77 65 72 20 69 73 20 4f 4e 2c 20 53 61 6d     Power is ON, Sam
    166e:	70 6c 69 6e 67 20 69 73 20 4f 46 46 00              pling is OFF.

0000167b <__c.3708>:
    167b:	50 6f 77 65 72 20 69 73 20 4f 4e 2c 20 53 61 6d     Power is ON, Sam
    168b:	70 6c 69 6e 67 20 69 73 20 4f 4e 00                 pling is ON.

00001697 <__c.3705>:
    1697:	43 33 20 44 61 74 61 20 53 61 6d 70 6c 69 6e 67     C3 Data Sampling
    16a7:	20 69 73 20 4f 4e 20 2d 2d 20 75 6e 61 62 6c 65      is ON -- unable
    16b7:	20 74 6f 20 70 72 6f 63 65 73 73 20 6f 74 68 65      to process othe
    16c7:	72 20 63 6f 6d 6d 61 6e 64 73 00                    r commands.

000016d2 <__c.3702>:
    16d2:	43 33 20 44 61 74 61 20 53 61 6d 70 6c 69 6e 67     C3 Data Sampling
    16e2:	20 69 73 20 61 6c 72 65 61 64 79 20 4f 66 66 00      is already Off.

000016f2 <__c.3699>:
    16f2:	43 33 20 50 6f 77 65 72 20 69 73 20 61 6c 72 65     C3 Power is alre
    1702:	61 64 79 20 4f 4e 00                                ady ON.

00001709 <__c.3696>:
    1709:	43 33 20 50 6f 77 65 72 20 69 73 20 4f 66 66 20     C3 Power is Off 
    1719:	2d 2d 20 50 6c 65 61 73 65 20 74 75 72 6e 20 69     -- Please turn i
    1729:	74 20 66 69 72 73 74 00                             t first.

00001731 <__c.3693>:
    1731:	49 6e 76 61 6c 69 64 20 50 61 72 61 6d 65 74 65     Invalid Paramete
    1741:	72 20 4c 69 73 74 00                                r List.

00001748 <__c.3689>:
    1748:	4f 4b 00                                            OK.

0000174b <__c.3686>:
    174b:	47 45 54 00                                         GET.

0000174f <__c.3684>:
    174f:	53 45 54 00                                         SET.

00001753 <__c.3682>:
    1753:	49 44 00                                            ID.

00001756 <__c.3675>:
    1756:	57 49 50 00                                         WIP.

0000175a <__c.3673>:
    175a:	47 45 54 00                                         GET.

0000175e <__c.3671>:
    175e:	53 45 54 00                                         SET.

00001762 <__c.3669>:
    1762:	54 49 4d 00                                         TIM.

00001766 <__c.3667>:
    1766:	43 41 4c 00                                         CAL.

0000176a <__c.3665>:
    176a:	47 45 54 00                                         GET.

0000176e <__c.3663>:
    176e:	53 45 54 00                                         SET.

00001772 <__c.3661>:
    1772:	43 46 47 00                                         CFG.

00001776 <__c.3659>:
    1776:	53 54 4f 50 00                                      STOP.

0000177b <__c.3657>:
    177b:	53 54 41 52 54 00                                   START.

00001781 <__c.3655>:
    1781:	4f 46 46 00                                         OFF.

00001785 <__c.3653>:
    1785:	4f 4e 00                                            ON.

00001788 <__c.3651>:
    1788:	53 54 41 54 45 00                                   STATE.

0000178e <__c.3648>:
    178e:	43 4d 44 00                                         CMD.

00001792 <__c.3581>:
    1792:	55 6e 72 65 63 6f 67 6e 69 7a 65 64 20 43 6f 6d     Unrecognized Com
    17a2:	6d 61 6e 64 00                                      mand.

000017a7 <__c.3576>:
    17a7:	54 68 61 74 20 63 6f 6d 6d 61 6e 64 20 69 73 20     That command is 
    17b7:	63 75 72 72 65 6e 74 6c 79 20 6e 6f 74 20 73 75     currently not su
    17c7:	70 70 6f 72 74 65 64 00                             pported.

000017cf <__c.3573>:
    17cf:	53 79 73 74 65 6d 20 69 73 20 69 6e 20 61 6e 20     System is in an 
    17df:	75 6e 6b 6e 6f 77 6e 20 73 74 61 74 65 00           unknown state.

000017ed <__c.3571>:
    17ed:	50 6f 77 65 72 20 69 73 20 4f 46 46 2c 20 53 61     Power is OFF, Sa
    17fd:	6d 70 6c 69 6e 67 20 69 73 20 4f 46 46 00           mpling is OFF.

0000180b <__c.3569>:
    180b:	50 6f 77 65 72 20 69 73 20 4f 46 46 2c 20 53 61     Power is OFF, Sa
    181b:	6d 70 6c 69 6e 67 20 69 73 20 4f 4e 00              mpling is ON.

00001828 <__c.3567>:
    1828:	50 6f 77 65 72 20 69 73 20 4f 4e 2c 20 53 61 6d     Power is ON, Sam
    1838:	70 6c 69 6e 67 20 69 73 20 4f 46 46 00              pling is OFF.

00001845 <__c.3565>:
    1845:	50 6f 77 65 72 20 69 73 20 4f 4e 2c 20 53 61 6d     Power is ON, Sam
    1855:	70 6c 69 6e 67 20 69 73 20 4f 4e 00                 pling is ON.

00001861 <__c.3562>:
    1861:	43 33 20 44 61 74 61 20 53 61 6d 70 6c 69 6e 67     C3 Data Sampling
    1871:	20 69 73 20 4f 4e 20 2d 2d 20 75 6e 61 62 6c 65      is ON -- unable
    1881:	20 74 6f 20 70 72 6f 63 65 73 73 20 6f 74 68 65      to process othe
    1891:	72 20 63 6f 6d 6d 61 6e 64 73 00                    r commands.

0000189c <__c.3559>:
    189c:	43 33 20 44 61 74 61 20 53 61 6d 70 6c 69 6e 67     C3 Data Sampling
    18ac:	20 69 73 20 61 6c 72 65 61 64 79 20 4f 66 66 00      is already Off.

000018bc <__c.3556>:
    18bc:	43 33 20 50 6f 77 65 72 20 69 73 20 61 6c 72 65     C3 Power is alre
    18cc:	61 64 79 20 4f 4e 00                                ady ON.

000018d3 <__c.3553>:
    18d3:	43 33 20 50 6f 77 65 72 20 69 73 20 4f 66 66 20     C3 Power is Off 
    18e3:	2d 2d 20 50 6c 65 61 73 65 20 74 75 72 6e 20 69     -- Please turn i
    18f3:	74 20 66 69 72 73 74 00                             t first.

000018fb <__c.3550>:
    18fb:	49 6e 76 61 6c 69 64 20 50 61 72 61 6d 65 74 65     Invalid Paramete
    190b:	72 20 4c 69 73 74 00                                r List.

00001912 <__c.3547>:
    1912:	4f 4b 00                                            OK.

00001915 <__c.3543>:
    1915:	72 65 74 76 61 6c 20 3d 20 25 64 00                 retval = %d.

00001921 <__c.3541>:
    1921:	47 45 54 00                                         GET.

00001925 <__c.3539>:
    1925:	53 45 54 00                                         SET.

00001929 <__c.3536>:
    1929:	49 44 00                                            ID.

0000192c <__c.3526>:
    192c:	57 49 50 00                                         WIP.

00001930 <__c.3522>:
    1930:	47 45 54 00                                         GET.

00001934 <__c.3520>:
    1934:	53 45 54 00                                         SET.

00001938 <__c.3517>:
    1938:	54 49 4d 00                                         TIM.

0000193c <__c.3513>:
    193c:	43 41 4c 00                                         CAL.

00001940 <__c.3509>:
    1940:	47 45 54 00                                         GET.

00001944 <__c.3507>:
    1944:	53 45 54 00                                         SET.

00001948 <__c.3504>:
    1948:	43 46 47 00                                         CFG.

0000194c <__c.3500>:
    194c:	53 54 4f 50 00                                      STOP.

00001951 <__c.3496>:
    1951:	53 54 41 52 54 00                                   START.

00001957 <__c.3492>:
    1957:	4f 46 46 00                                         OFF.

0000195b <__c.3488>:
    195b:	4f 4e 00                                            ON.

0000195e <__c.3483>:
    195e:	53 54 41 54 45 20 43 4f 4d 4d 41 4e 44 00           STATE COMMAND.

0000196c <__c.3479>:
    196c:	50 61 72 73 69 6e 67 20 43 6f 6d 6d 61 6e 64 20     Parsing Command 
    197c:	3c 25 63 3e 20 3c 25 73 3e 00                       <%c> <%s>.

00001986 <__c.3416>:
    1986:	63 6d 64 20 3d 20 3c 25 73 3e 3c 25 73 3e 00        cmd = <%s><%s>.

00001995 <__c.3414>:
    1995:	62 61 64 20 2e 2e 20 63 6f 64 65 3d 25 64 00        bad .. code=%d.

000019a4 <__c.3412>:
    19a4:	67 6f 6f 64 20 6d 65 73 73 61 67 65 00              good message.

000019b1 <__c.3410>:
    19b1:	50 61 72 73 69 6e 67 20 63 6f 6e 73 6f 6c 65 3a     Parsing console:
    19c1:	20 3c 25 73 3e 00                                    <%s>.

000019c7 <__c.3243>:
    19c7:	4e 6f 20 73 74 61 72 74 20 61 64 64 72 65 73 73     No start address
    19d7:	20 66 6f 72 20 45 45 50 52 4f 4d 00                  for EEPROM.

000019e3 <__c.3239>:
    19e3:	45 6e 64 69 6e 67 20 74 61 73 6b 2e 2e 2e 2e 00     Ending task.....

000019f3 <__c.3237>:
    19f3:	47 6f 74 20 73 6f 6d 65 74 68 69 6e 67 00           Got something.

00001a01 <__c.3235>:
    1a01:	43 33 20 4c 6f 6f 70 20 66 6f 72 20 50 4d 25 64     C3 Loop for PM%d
	...

00001a12 <separator1>:
    1a12:	25 20 2e 3a 2f 09 0d 0a 00                          % .:/....

00001a1b <separator2>:
    1a1b:	20 09 0d 0a 00                                       ....

00001a20 <c3OrigCommands>:
    1a20:	6f 6e 00 00 00 00 00 00 6f 66 66 00 00 00 00 00     on......off.....
    1a30:	61 75 74 6f 72 75 6e 00 72 75 6e 00 00 00 00 00     autorun.run.....
    1a40:	73 74 6f 70 00 00 00 00 69 64 00 00 00 00 00 00     stop....id......
    1a50:	73 74 61 74 75 73 00 00                             status..

00001a58 <c3OrigParserID>:
    1a58:	43 33 00                                            C3.

00001a5b <c3OrigCmdList>:
    1a5b:	6f 66 61 72 78 69 73 4f 46 41 52 58 49 53 00        ofarxisOFARXIS.

00001a6a <__c.3476>:
    1a6a:	55 6e 72 65 63 6f 67 6e 69 7a 65 64 20 43 6f 6d     Unrecognized Com
    1a7a:	6d 61 6e 64 00                                      mand.

00001a7f <__c.3474>:
    1a7f:	4f 4b 00                                            OK.

00001a82 <__c.3425>:
    1a82:	54 75 72 6e 65 72 20 43 33 3a 20 20 53 61 6d 70     Turner C3:  Samp
    1a92:	6c 69 6e 67 20 69 73 20 25 73 3a 20 20 41 75 74     ling is %s:  Aut
    1aa2:	6f 72 75 6e 20 69 73 20 25 73 00                    orun is %s.

00001aad <__c.3329>:
    1aad:	63 6d 64 20 3d 20 3c 25 73 3e 3c 25 73 3e 00        cmd = <%s><%s>.

00001abc <__c.3327>:
    1abc:	62 61 64 20 2e 2e 20 63 6f 64 65 3d 25 64 00        bad .. code=%d.

00001acb <__c.3325>:
    1acb:	67 6f 6f 64 20 6d 65 73 73 61 67 65 00              good message.

00001ad8 <__c.3323>:
    1ad8:	50 61 72 73 69 6e 67 20 63 6f 6e 73 6f 6c 65 3a     Parsing console:
    1ae8:	20 3c 25 73 3e 00                                    <%s>.

00001aee <__c.3048>:
    1aee:	4e 6f 20 73 74 61 72 74 20 61 64 64 72 65 73 73     No start address
    1afe:	20 66 6f 72 20 45 45 50 52 4f 4d 00                  for EEPROM.

00001b0a <__c.3044>:
    1b0a:	45 6e 64 69 6e 67 20 74 61 73 6b 2e 2e 2e 2e 00     Ending task.....

00001b1a <__c.3034>:
    1b1a:	50 6f 77 65 72 20 64 6f 77 6e 2e 2e 2e 00           Power down....

00001b28 <__c.3032>:
    1b28:	43 33 20 4f 72 69 67 20 4c 6f 6f 70 20 66 6f 72     C3 Orig Loop for
    1b38:	20 50 4d 25 64 00                                    PM%d.

00001b3e <emptyCommands>:
    1b3e:	69 64 00                                            id.

00001b41 <emptyParserID>:
    1b41:	45 4d 50 54 59 00                                   EMPTY.

00001b47 <emptyCmdList>:
    1b47:	69 49 00                                            iI.

00001b4a <__c.3021>:
    1b4a:	45 6d 70 74 79 20 50 4d 20 73 65 6e 73 6f 72 2e     Empty PM sensor.
	...

00001b5b <powerCommands>:
    1b5b:	6f 6e 00 00 00 00 00 00 00 00 6f 66 66 00 00 00     on........off...
    1b6b:	00 00 00 00 61 75 74 6f 72 75 6e 00 00 00 72 75     ....autorun...ru
    1b7b:	6e 00 00 00 00 00 00 00 73 74 6f 70 00 00 00 00     n.......stop....
    1b8b:	00 00 69 64 00 00 00 00 00 00 00 00 73 74 61 74     ..id........stat
    1b9b:	75 73 00 00 00 00                                   us....

00001ba1 <powerParserID>:
    1ba1:	50 4f 57 45 52 00                                   POWER.

00001ba7 <powerCmdList>:
    1ba7:	6f 66 61 72 78 69 73 4f 46 41 52 58 49 53 00        ofarxisOFARXIS.

00001bb6 <__c.3082>:
    1bb6:	41 75 74 6f 52 75 6e 20 69 73 20 25 73 00           AutoRun is %s.

00001bc4 <__c.3080>:
    1bc4:	50 6f 77 65 72 20 69 73 20 25 73 3a 20 00           Power is %s: .

00001bd2 <__c.3041>:
    1bd2:	41 75 74 6f 52 75 6e 20 69 73 20 25 73 00           AutoRun is %s.

00001be0 <__c.3023>:
    1be0:	50 6f 77 65 72 20 69 73 20 25 73 00                 Power is %s.

00001bec <__c.3017>:
    1bec:	50 6f 77 65 72 20 69 73 20 25 73 00                 Power is %s.

00001bf8 <__c.2137>:
    1bf8:	24 44 45 46 41 55 4c 54 00                          $DEFAULT.

00001c01 <__c.2135>:
    1c01:	24 4e 45 57 50 52 4f 47 00                          $NEWPROG.

00001c0a <MBARI_CO2>:
	return retval;
}


void MBARI_CO2(void* pParam)
{
    1c0a:	8f 92       	push	r8
    1c0c:	9f 92       	push	r9
    1c0e:	af 92       	push	r10
    1c10:	bf 92       	push	r11
    1c12:	cf 92       	push	r12
    1c14:	df 92       	push	r13
    1c16:	ef 92       	push	r14
    1c18:	ff 92       	push	r15
    1c1a:	0f 93       	push	r16
    1c1c:	1f 93       	push	r17
    1c1e:	df 93       	push	r29
    1c20:	cf 93       	push	r28
    1c22:	cd b7       	in	r28, 0x3d	; 61
    1c24:	de b7       	in	r29, 0x3e	; 62
    1c26:	27 97       	sbiw	r28, 0x07	; 7
    1c28:	0f b6       	in	r0, 0x3f	; 63
    1c2a:	f8 94       	cli
    1c2c:	de bf       	out	0x3e, r29	; 62
    1c2e:	0f be       	out	0x3f, r0	; 63
    1c30:	cd bf       	out	0x3d, r28	; 61
	MBARI_CO2_TASK taskInfo;
	PMBARI_CO2_TASK pTaskInit = (PMBARI_CO2_TASK)pParam;
    1c32:	fc 01       	movw	r30, r24
	uint8_t retval = FAIL;

	taskInfo.taskID = pTaskInit->taskID;
    1c34:	80 81       	ld	r24, Z
    1c36:	8a 83       	std	Y+2, r24	; 0x02
	taskInfo.portNum = pTaskInit->portNum;
    1c38:	81 81       	ldd	r24, Z+1	; 0x01
    1c3a:	8b 83       	std	Y+3, r24	; 0x03
	taskInfo.pBuf = pTaskInit->pBuf;
    1c3c:	84 81       	ldd	r24, Z+4	; 0x04
    1c3e:	95 81       	ldd	r25, Z+5	; 0x05
    1c40:	9f 83       	std	Y+7, r25	; 0x07
    1c42:	8e 83       	std	Y+6, r24	; 0x06

	retval = MBARI_CO2_Init(&taskInfo);
    1c44:	8e 01       	movw	r16, r28
    1c46:	0e 5f       	subi	r16, 0xFE	; 254
    1c48:	1f 4f       	sbci	r17, 0xFF	; 255
    1c4a:	c8 01       	movw	r24, r16
    1c4c:	0e 94 75 67 	call	0xceea	; 0xceea <MBARI_CO2_Init>

	if(retval == SUCCESS)
    1c50:	8f 3f       	cpi	r24, 0xFF	; 255
    1c52:	09 f0       	breq	.+2      	; 0x1c56 <MBARI_CO2+0x4c>
    1c54:	00 c1       	rjmp	.+512    	; 0x1e56 <MBARI_CO2+0x24c>
	{
		while(1)
		{
			OSTimeDlyHMSM(0,0,0,500);

			sprintf_P(dbgMsg, PSTR("MBARI CO2 for PM%d"), taskInfo.portNum);
    1c56:	53 ef       	ldi	r21, 0xF3	; 243
    1c58:	85 2e       	mov	r8, r21
    1c5a:	58 e1       	ldi	r21, 0x18	; 24
    1c5c:	95 2e       	mov	r9, r21
    1c5e:	48 ea       	ldi	r20, 0xA8	; 168
    1c60:	a4 2e       	mov	r10, r20
    1c62:	49 e0       	ldi	r20, 0x09	; 9
    1c64:	b4 2e       	mov	r11, r20
			SEND_MSG;

			if(taskInfo.pBuf->isSampling == TRUE)
			{
				MBARI_CO2_GetDataSample(&taskInfo);
    1c66:	c8 01       	movw	r24, r16
    1c68:	f0 2e       	mov	r15, r16
    1c6a:	09 2f       	mov	r16, r25
			}


			if(consoleAvailable[taskInfo.portNum] == TRUE)
			{
				taskInfo.pBuf->responseInfo.source = consoleIn[taskInfo.taskID].cmdSrcAddress;
    1c6c:	39 e0       	ldi	r19, 0x09	; 9
    1c6e:	c3 2e       	mov	r12, r19
    1c70:	31 e0       	ldi	r19, 0x01	; 1
    1c72:	d3 2e       	mov	r13, r19

	if(retval == SUCCESS)
	{
		while(1)
		{
			OSTimeDlyHMSM(0,0,0,500);
    1c74:	80 e0       	ldi	r24, 0x00	; 0
    1c76:	60 e0       	ldi	r22, 0x00	; 0
    1c78:	40 e0       	ldi	r20, 0x00	; 0
    1c7a:	24 ef       	ldi	r18, 0xF4	; 244
    1c7c:	31 e0       	ldi	r19, 0x01	; 1
    1c7e:	0e 94 2a 2e 	call	0x5c54	; 0x5c54 <OSTimeDlyHMSM>

			sprintf_P(dbgMsg, PSTR("MBARI CO2 for PM%d"), taskInfo.portNum);
    1c82:	00 d0       	rcall	.+0      	; 0x1c84 <MBARI_CO2+0x7a>
    1c84:	00 d0       	rcall	.+0      	; 0x1c86 <MBARI_CO2+0x7c>
    1c86:	ed b7       	in	r30, 0x3d	; 61
    1c88:	fe b7       	in	r31, 0x3e	; 62
    1c8a:	31 96       	adiw	r30, 0x01	; 1
    1c8c:	ad b7       	in	r26, 0x3d	; 61
    1c8e:	be b7       	in	r27, 0x3e	; 62
    1c90:	12 96       	adiw	r26, 0x02	; 2
    1c92:	9c 92       	st	X, r9
    1c94:	8e 92       	st	-X, r8
    1c96:	11 97       	sbiw	r26, 0x01	; 1
    1c98:	b3 82       	std	Z+3, r11	; 0x03
    1c9a:	a2 82       	std	Z+2, r10	; 0x02
    1c9c:	8b 81       	ldd	r24, Y+3	; 0x03
    1c9e:	84 83       	std	Z+4, r24	; 0x04
    1ca0:	15 82       	std	Z+5, r1	; 0x05
    1ca2:	0e 94 51 f1 	call	0x1e2a2	; 0x1e2a2 <sprintf_P>
			SEND_MSG;

			if(taskInfo.pBuf->isSampling == TRUE)
    1ca6:	ee 81       	ldd	r30, Y+6	; 0x06
    1ca8:	ff 81       	ldd	r31, Y+7	; 0x07
    1caa:	ef 5f       	subi	r30, 0xFF	; 255
    1cac:	fa 4f       	sbci	r31, 0xFA	; 250
    1cae:	2d b7       	in	r18, 0x3d	; 61
    1cb0:	3e b7       	in	r19, 0x3e	; 62
    1cb2:	2a 5f       	subi	r18, 0xFA	; 250
    1cb4:	3f 4f       	sbci	r19, 0xFF	; 255
    1cb6:	0f b6       	in	r0, 0x3f	; 63
    1cb8:	f8 94       	cli
    1cba:	3e bf       	out	0x3e, r19	; 62
    1cbc:	0f be       	out	0x3f, r0	; 63
    1cbe:	2d bf       	out	0x3d, r18	; 61
    1cc0:	80 81       	ld	r24, Z
    1cc2:	8f 3f       	cpi	r24, 0xFF	; 255
    1cc4:	21 f4       	brne	.+8      	; 0x1cce <MBARI_CO2+0xc4>
			{
				MBARI_CO2_GetDataSample(&taskInfo);
    1cc6:	8f 2d       	mov	r24, r15
    1cc8:	90 2f       	mov	r25, r16
    1cca:	0e 94 6a 63 	call	0xc6d4	; 0xc6d4 <MBARI_CO2_GetDataSample>
			}

			if (powerDown[taskInfo.portNum] == TRUE)
    1cce:	eb 81       	ldd	r30, Y+3	; 0x03
    1cd0:	f0 e0       	ldi	r31, 0x00	; 0
    1cd2:	eb 56       	subi	r30, 0x6B	; 107
    1cd4:	fe 45       	sbci	r31, 0x5E	; 94
    1cd6:	80 81       	ld	r24, Z
    1cd8:	8f 3f       	cpi	r24, 0xFF	; 255
    1cda:	49 f4       	brne	.+18     	; 0x1cee <MBARI_CO2+0xe4>
			{
				//sprintf_P(dbgMsg, PSTR("Power down CO2...")); SEND_MSG;				
				MBARI_CO2_PowerOff(&taskInfo);
    1cdc:	8f 2d       	mov	r24, r15
    1cde:	90 2f       	mov	r25, r16
    1ce0:	0e 94 a6 63 	call	0xc74c	; 0xc74c <MBARI_CO2_PowerOff>
				powerDown[taskInfo.portNum] = FALSE;
    1ce4:	eb 81       	ldd	r30, Y+3	; 0x03
    1ce6:	f0 e0       	ldi	r31, 0x00	; 0
    1ce8:	eb 56       	subi	r30, 0x6B	; 107
    1cea:	fe 45       	sbci	r31, 0x5E	; 94
    1cec:	10 82       	st	Z, r1
			}

			if (taskInfo.pBuf->pendingPowerDown == TRUE)
    1cee:	ee 81       	ldd	r30, Y+6	; 0x06
    1cf0:	ff 81       	ldd	r31, Y+7	; 0x07
    1cf2:	ee 5f       	subi	r30, 0xFE	; 254
    1cf4:	fa 4f       	sbci	r31, 0xFA	; 250
    1cf6:	80 81       	ld	r24, Z
    1cf8:	8f 3f       	cpi	r24, 0xFF	; 255
    1cfa:	99 f4       	brne	.+38     	; 0x1d22 <MBARI_CO2+0x118>
			{
				uint32_t tickNow = getsecondtick();
    1cfc:	0e 94 23 34 	call	0x6846	; 0x6846 <getsecondtick>
				if (tickNow > taskInfo.pBuf->powerDownTime)
    1d00:	ee 81       	ldd	r30, Y+6	; 0x06
    1d02:	ff 81       	ldd	r31, Y+7	; 0x07
    1d04:	ed 5f       	subi	r30, 0xFD	; 253
    1d06:	fa 4f       	sbci	r31, 0xFA	; 250
    1d08:	20 81       	ld	r18, Z
    1d0a:	31 81       	ldd	r19, Z+1	; 0x01
    1d0c:	42 81       	ldd	r20, Z+2	; 0x02
    1d0e:	53 81       	ldd	r21, Z+3	; 0x03
    1d10:	26 17       	cp	r18, r22
    1d12:	37 07       	cpc	r19, r23
    1d14:	48 07       	cpc	r20, r24
    1d16:	59 07       	cpc	r21, r25
    1d18:	20 f4       	brcc	.+8      	; 0x1d22 <MBARI_CO2+0x118>
					MBARI_CO2_PowerDown(&taskInfo);
    1d1a:	8f 2d       	mov	r24, r15
    1d1c:	90 2f       	mov	r25, r16
    1d1e:	0e 94 2d 61 	call	0xc25a	; 0xc25a <MBARI_CO2_PowerDown>
					
			}
		
			if(serialPortPassThrough[taskInfo.portNum] == TRUE)
    1d22:	8b 81       	ldd	r24, Y+3	; 0x03
    1d24:	a8 2f       	mov	r26, r24
    1d26:	b0 e0       	ldi	r27, 0x00	; 0
    1d28:	fd 01       	movw	r30, r26
    1d2a:	e7 56       	subi	r30, 0x67	; 103
    1d2c:	fe 45       	sbci	r31, 0x5E	; 94
    1d2e:	10 81       	ld	r17, Z
    1d30:	1f 3f       	cpi	r17, 0xFF	; 255
    1d32:	b9 f4       	brne	.+46     	; 0x1d62 <MBARI_CO2+0x158>
			{
				//Set Flag so the float COMM task will proceed
				serialPortPassThroughOK = TRUE;
    1d34:	10 93 9d a1 	sts	0xA19D, r17
				
				EnablePIBModule(taskInfo.portNum, TRUE, FALSE);
    1d38:	6f ef       	ldi	r22, 0xFF	; 255
    1d3a:	40 e0       	ldi	r20, 0x00	; 0
    1d3c:	0e 94 a2 38 	call	0x7144	; 0x7144 <EnablePIBModule>
				OSTimeDlyHMSM(0,0,0,500);
    1d40:	80 e0       	ldi	r24, 0x00	; 0
    1d42:	60 e0       	ldi	r22, 0x00	; 0
    1d44:	40 e0       	ldi	r20, 0x00	; 0
    1d46:	24 ef       	ldi	r18, 0xF4	; 244
    1d48:	31 e0       	ldi	r19, 0x01	; 1
    1d4a:	0e 94 2a 2e 	call	0x5c54	; 0x5c54 <OSTimeDlyHMSM>
	return retval;
}

void SerialPortPassThroughMBARI_CO2(uint8_t port)
{
	readyForSerialPassThru = TRUE;
    1d4e:	10 93 9e a1 	sts	0xA19E, r17

	while(1)
	{
		OSTimeDlyHMSM(1,0,0,0);
    1d52:	81 e0       	ldi	r24, 0x01	; 1
    1d54:	60 e0       	ldi	r22, 0x00	; 0
    1d56:	40 e0       	ldi	r20, 0x00	; 0
    1d58:	20 e0       	ldi	r18, 0x00	; 0
    1d5a:	30 e0       	ldi	r19, 0x00	; 0
    1d5c:	0e 94 2a 2e 	call	0x5c54	; 0x5c54 <OSTimeDlyHMSM>
    1d60:	f8 cf       	rjmp	.-16     	; 0x1d52 <MBARI_CO2+0x148>

				SerialPortPassThroughMBARI_CO2(taskInfo.portNum);
			}


			if(consoleAvailable[taskInfo.portNum] == TRUE)
    1d62:	a3 57       	subi	r26, 0x73	; 115
    1d64:	be 45       	sbci	r27, 0x5E	; 94
    1d66:	8c 91       	ld	r24, X
    1d68:	8f 3f       	cpi	r24, 0xFF	; 255
    1d6a:	69 f5       	brne	.+90     	; 0x1dc6 <MBARI_CO2+0x1bc>
			{
				taskInfo.pBuf->responseInfo.source = consoleIn[taskInfo.taskID].cmdSrcAddress;
    1d6c:	ee 81       	ldd	r30, Y+6	; 0x06
    1d6e:	ff 81       	ldd	r31, Y+7	; 0x07
    1d70:	8a 81       	ldd	r24, Y+2	; 0x02
    1d72:	90 e0       	ldi	r25, 0x00	; 0
    1d74:	e2 5e       	subi	r30, 0xE2	; 226
    1d76:	f9 4f       	sbci	r31, 0xF9	; 249
    1d78:	8c 9d       	mul	r24, r12
    1d7a:	d0 01       	movw	r26, r0
    1d7c:	8d 9d       	mul	r24, r13
    1d7e:	b0 0d       	add	r27, r0
    1d80:	9c 9d       	mul	r25, r12
    1d82:	b0 0d       	add	r27, r0
    1d84:	11 24       	eor	r1, r1
    1d86:	a7 59       	subi	r26, 0x97	; 151
    1d88:	b2 46       	sbci	r27, 0x62	; 98
    1d8a:	8d 91       	ld	r24, X+
    1d8c:	9c 91       	ld	r25, X
    1d8e:	11 97       	sbiw	r26, 0x01	; 1
    1d90:	81 93       	st	Z+, r24
    1d92:	91 93       	st	Z+, r25
				taskInfo.pBuf->responseInfo.status = 0;
    1d94:	10 82       	st	Z, r1
				taskInfo.pBuf->responseInfo.length = consoleIn[taskInfo.taskID].cmdSize;
    1d96:	32 96       	adiw	r30, 0x02	; 2
    1d98:	13 96       	adiw	r26, 0x03	; 3
    1d9a:	8c 91       	ld	r24, X
    1d9c:	13 97       	sbiw	r26, 0x03	; 3
    1d9e:	81 93       	st	Z+, r24
				taskInfo.pBuf->responseInfo.id = consoleIn[taskInfo.taskID].id;
    1da0:	15 96       	adiw	r26, 0x05	; 5
    1da2:	8d 91       	ld	r24, X+
    1da4:	9d 91       	ld	r25, X+
    1da6:	0d 90       	ld	r0, X+
    1da8:	bc 91       	ld	r27, X
    1daa:	a0 2d       	mov	r26, r0
    1dac:	80 83       	st	Z, r24
    1dae:	91 83       	std	Z+1, r25	; 0x01
    1db0:	a2 83       	std	Z+2, r26	; 0x02
    1db2:	b3 83       	std	Z+3, r27	; 0x03

				MBARI_CO2_ParseConsole(&taskInfo);
    1db4:	8f 2d       	mov	r24, r15
    1db6:	90 2f       	mov	r25, r16
    1db8:	0e 94 7e 66 	call	0xccfc	; 0xccfc <MBARI_CO2_ParseConsole>
				consoleAvailable[taskInfo.portNum] = FALSE;
    1dbc:	eb 81       	ldd	r30, Y+3	; 0x03
    1dbe:	f0 e0       	ldi	r31, 0x00	; 0
    1dc0:	e3 57       	subi	r30, 0x73	; 115
    1dc2:	fe 45       	sbci	r31, 0x5E	; 94
    1dc4:	10 82       	st	Z, r1
			}

			// Check to see if we need to end this task and release resources
			if (kill[taskInfo.portNum] == TRUE) 
    1dc6:	8b 81       	ldd	r24, Y+3	; 0x03
    1dc8:	e8 2f       	mov	r30, r24
    1dca:	f0 e0       	ldi	r31, 0x00	; 0
    1dcc:	ef 56       	subi	r30, 0x6F	; 111
    1dce:	fe 45       	sbci	r31, 0x5E	; 94
    1dd0:	90 81       	ld	r25, Z
    1dd2:	9f 3f       	cpi	r25, 0xFF	; 255
    1dd4:	09 f0       	breq	.+2      	; 0x1dd8 <MBARI_CO2+0x1ce>
    1dd6:	4e cf       	rjmp	.-356    	; 0x1c74 <MBARI_CO2+0x6a>
			{
				uint8_t val = 0xFF;
    1dd8:	99 83       	std	Y+1, r25	; 0x01
				uint16_t startAddr = 0;

				if(taskInfo.portNum == USER_PORT_1)
    1dda:	81 30       	cpi	r24, 0x01	; 1
    1ddc:	29 f4       	brne	.+10     	; 0x1de8 <MBARI_CO2+0x1de>
    1dde:	00 e0       	ldi	r16, 0x00	; 0
    1de0:	13 e0       	ldi	r17, 0x03	; 3
    1de2:	80 e0       	ldi	r24, 0x00	; 0
    1de4:	93 e0       	ldi	r25, 0x03	; 3
    1de6:	19 c0       	rjmp	.+50     	; 0x1e1a <MBARI_CO2+0x210>
					startAddr = EEPROM_PM1_START;
				if(taskInfo.portNum == USER_PORT_2)
    1de8:	82 30       	cpi	r24, 0x02	; 2
    1dea:	29 f4       	brne	.+10     	; 0x1df6 <MBARI_CO2+0x1ec>
    1dec:	00 e0       	ldi	r16, 0x00	; 0
    1dee:	15 e0       	ldi	r17, 0x05	; 5
    1df0:	80 e0       	ldi	r24, 0x00	; 0
    1df2:	95 e0       	ldi	r25, 0x05	; 5
    1df4:	12 c0       	rjmp	.+36     	; 0x1e1a <MBARI_CO2+0x210>
					startAddr = EEPROM_PM2_START;
				if(taskInfo.portNum == USER_PORT_3)
    1df6:	83 30       	cpi	r24, 0x03	; 3
    1df8:	11 f0       	breq	.+4      	; 0x1dfe <MBARI_CO2+0x1f4>

				if (startAddr == 0)
				{
					//sprintf_P(dbgMsg, PSTR("No start address for EEPROM"));
					//SEND_MSG;
					kill[taskInfo.portNum] = FALSE;
    1dfa:	10 82       	st	Z, r1
    1dfc:	3b cf       	rjmp	.-394    	; 0x1c74 <MBARI_CO2+0x6a>
    1dfe:	00 e0       	ldi	r16, 0x00	; 0
    1e00:	17 e0       	ldi	r17, 0x07	; 7
    1e02:	80 e0       	ldi	r24, 0x00	; 0
    1e04:	97 e0       	ldi	r25, 0x07	; 7
    1e06:	09 c0       	rjmp	.+18     	; 0x1e1a <MBARI_CO2+0x210>
				}
				else
				{
					// Write all F's to EEPROM
					for (uint16_t addr = startAddr; addr < startAddr + EEPROM_PM_SIZE; addr++)
						EepromWriteBlock((void*)addr, (void*)&val, 1);
    1e08:	c8 01       	movw	r24, r16
    1e0a:	b6 01       	movw	r22, r12
    1e0c:	41 e0       	ldi	r20, 0x01	; 1
    1e0e:	50 e0       	ldi	r21, 0x00	; 0
    1e10:	0e 94 f7 37 	call	0x6fee	; 0x6fee <EepromWriteBlock>
					kill[taskInfo.portNum] = FALSE;
				}
				else
				{
					// Write all F's to EEPROM
					for (uint16_t addr = startAddr; addr < startAddr + EEPROM_PM_SIZE; addr++)
    1e14:	0f 5f       	subi	r16, 0xFF	; 255
    1e16:	1f 4f       	sbci	r17, 0xFF	; 255
    1e18:	09 c0       	rjmp	.+18     	; 0x1e2c <MBARI_CO2+0x222>
    1e1a:	e1 2c       	mov	r14, r1
    1e1c:	22 e0       	ldi	r18, 0x02	; 2
    1e1e:	f2 2e       	mov	r15, r18
    1e20:	e8 0e       	add	r14, r24
    1e22:	f9 1e       	adc	r15, r25
						EepromWriteBlock((void*)addr, (void*)&val, 1);
    1e24:	6e 01       	movw	r12, r28
    1e26:	08 94       	sec
    1e28:	c1 1c       	adc	r12, r1
    1e2a:	d1 1c       	adc	r13, r1
					kill[taskInfo.portNum] = FALSE;
				}
				else
				{
					// Write all F's to EEPROM
					for (uint16_t addr = startAddr; addr < startAddr + EEPROM_PM_SIZE; addr++)
    1e2c:	0e 15       	cp	r16, r14
    1e2e:	1f 05       	cpc	r17, r15
    1e30:	58 f3       	brcs	.-42     	; 0x1e08 <MBARI_CO2+0x1fe>
						EepromWriteBlock((void*)addr, (void*)&val, 1);

					memset(taskInfo.pBuf, 0, sizeof(MBARI_CO2_BUFFER));
    1e32:	ee 81       	ldd	r30, Y+6	; 0x06
    1e34:	ff 81       	ldd	r31, Y+7	; 0x07
    1e36:	87 e2       	ldi	r24, 0x27	; 39
    1e38:	97 e0       	ldi	r25, 0x07	; 7
    1e3a:	df 01       	movw	r26, r30
    1e3c:	9c 01       	movw	r18, r24
    1e3e:	1d 92       	st	X+, r1
    1e40:	21 50       	subi	r18, 0x01	; 1
    1e42:	30 40       	sbci	r19, 0x00	; 0
    1e44:	e1 f7       	brne	.-8      	; 0x1e3e <MBARI_CO2+0x234>

					// Now end task (ie, just sleep for a really long time)
					while (1) OSTimeDlyHMSM(1,0,0,0);
    1e46:	81 e0       	ldi	r24, 0x01	; 1
    1e48:	60 e0       	ldi	r22, 0x00	; 0
    1e4a:	40 e0       	ldi	r20, 0x00	; 0
    1e4c:	20 e0       	ldi	r18, 0x00	; 0
    1e4e:	30 e0       	ldi	r19, 0x00	; 0
    1e50:	0e 94 2a 2e 	call	0x5c54	; 0x5c54 <OSTimeDlyHMSM>
    1e54:	f8 cf       	rjmp	.-16     	; 0x1e46 <MBARI_CO2+0x23c>
				}
            }
		}
	}
	return;
}
    1e56:	27 96       	adiw	r28, 0x07	; 7
    1e58:	0f b6       	in	r0, 0x3f	; 63
    1e5a:	f8 94       	cli
    1e5c:	de bf       	out	0x3e, r29	; 62
    1e5e:	0f be       	out	0x3f, r0	; 63
    1e60:	cd bf       	out	0x3d, r28	; 61
    1e62:	cf 91       	pop	r28
    1e64:	df 91       	pop	r29
    1e66:	1f 91       	pop	r17
    1e68:	0f 91       	pop	r16
    1e6a:	ff 90       	pop	r15
    1e6c:	ef 90       	pop	r14
    1e6e:	df 90       	pop	r13
    1e70:	cf 90       	pop	r12
    1e72:	bf 90       	pop	r11
    1e74:	af 90       	pop	r10
    1e76:	9f 90       	pop	r9
    1e78:	8f 90       	pop	r8
    1e7a:	08 95       	ret

00001e7c <SbrdGPCTD>:

	return SUCCESS;
}

void SbrdGPCTD(void* pParam)
{
    1e7c:	2f 92       	push	r2
    1e7e:	3f 92       	push	r3
    1e80:	4f 92       	push	r4
    1e82:	5f 92       	push	r5
    1e84:	6f 92       	push	r6
    1e86:	7f 92       	push	r7
    1e88:	8f 92       	push	r8
    1e8a:	9f 92       	push	r9
    1e8c:	af 92       	push	r10
    1e8e:	bf 92       	push	r11
    1e90:	cf 92       	push	r12
    1e92:	df 92       	push	r13
    1e94:	ef 92       	push	r14
    1e96:	ff 92       	push	r15
    1e98:	0f 93       	push	r16
    1e9a:	1f 93       	push	r17
    1e9c:	df 93       	push	r29
    1e9e:	cf 93       	push	r28
    1ea0:	cd b7       	in	r28, 0x3d	; 61
    1ea2:	de b7       	in	r29, 0x3e	; 62
    1ea4:	28 97       	sbiw	r28, 0x08	; 8
    1ea6:	0f b6       	in	r0, 0x3f	; 63
    1ea8:	f8 94       	cli
    1eaa:	de bf       	out	0x3e, r29	; 62
    1eac:	0f be       	out	0x3f, r0	; 63
    1eae:	cd bf       	out	0x3d, r28	; 61
	SEABIRD_GPCTD_TASK taskInfo;
	PSEABIRD_GPCTD_TASK pTaskInit = (PSEABIRD_GPCTD_TASK)pParam;
    1eb0:	6c 01       	movw	r12, r24
	uint8_t count = 0;
    1eb2:	19 82       	std	Y+1, r1	; 0x01
	uint32_t currentSecond = 0;

	memset((char*)&taskInfo, 0, sizeof(SEABIRD_GPCTD_TASK));
    1eb4:	8e 01       	movw	r16, r28
    1eb6:	0d 5f       	subi	r16, 0xFD	; 253
    1eb8:	1f 4f       	sbci	r17, 0xFF	; 255
    1eba:	86 e0       	ldi	r24, 0x06	; 6
    1ebc:	d8 01       	movw	r26, r16
    1ebe:	1d 92       	st	X+, r1
    1ec0:	8a 95       	dec	r24
    1ec2:	e9 f7       	brne	.-6      	; 0x1ebe <SbrdGPCTD+0x42>

	taskInfo.taskID = pTaskInit->taskID;
    1ec4:	f6 01       	movw	r30, r12
    1ec6:	80 81       	ld	r24, Z
    1ec8:	8b 83       	std	Y+3, r24	; 0x03
	taskInfo.portNum = pTaskInit->portNum;
    1eca:	81 81       	ldd	r24, Z+1	; 0x01
    1ecc:	8c 83       	std	Y+4, r24	; 0x04
	taskInfo.pBuf = pTaskInit->pBuf;
    1ece:	84 81       	ldd	r24, Z+4	; 0x04
    1ed0:	95 81       	ldd	r25, Z+5	; 0x05
    1ed2:	98 87       	std	Y+8, r25	; 0x08
    1ed4:	8f 83       	std	Y+7, r24	; 0x07

	count = Seabird_GPCTD_Init(&taskInfo);
    1ed6:	c8 01       	movw	r24, r16
    1ed8:	0e 94 f9 7c 	call	0xf9f2	; 0xf9f2 <Seabird_GPCTD_Init>

	if(count == SUCCESS)
    1edc:	8f 3f       	cpi	r24, 0xFF	; 255
    1ede:	09 f0       	breq	.+2      	; 0x1ee2 <SbrdGPCTD+0x66>
    1ee0:	65 c2       	rjmp	.+1226   	; 0x23ac <__stack+0x1ad>
	{
		count = 0;
    1ee2:	19 82       	std	Y+1, r1	; 0x01

		OSTimeDlyHMSM(0,0,2,0);
    1ee4:	80 e0       	ldi	r24, 0x00	; 0
    1ee6:	60 e0       	ldi	r22, 0x00	; 0
    1ee8:	42 e0       	ldi	r20, 0x02	; 2
    1eea:	20 e0       	ldi	r18, 0x00	; 0
    1eec:	30 e0       	ldi	r19, 0x00	; 0
    1eee:	0e 94 2a 2e 	call	0x5c54	; 0x5c54 <OSTimeDlyHMSM>

		memset(taskInfo.pBuf->bufferTx, 0, 256);
    1ef2:	20 e0       	ldi	r18, 0x00	; 0
    1ef4:	31 e0       	ldi	r19, 0x01	; 1
    1ef6:	ef 81       	ldd	r30, Y+7	; 0x07
    1ef8:	f8 85       	ldd	r31, Y+8	; 0x08
    1efa:	df 01       	movw	r26, r30
    1efc:	a9 01       	movw	r20, r18
    1efe:	1d 92       	st	X+, r1
    1f00:	41 50       	subi	r20, 0x01	; 1
    1f02:	50 40       	sbci	r21, 0x00	; 0
    1f04:	e1 f7       	brne	.-8      	; 0x1efe <SbrdGPCTD+0x82>
		memset(taskInfo.pBuf->bufferRx, 0, 256);
    1f06:	8f 81       	ldd	r24, Y+7	; 0x07
    1f08:	98 85       	ldd	r25, Y+8	; 0x08
    1f0a:	80 50       	subi	r24, 0x00	; 0
    1f0c:	9f 4f       	sbci	r25, 0xFF	; 255
    1f0e:	dc 01       	movw	r26, r24
    1f10:	a9 01       	movw	r20, r18
    1f12:	1d 92       	st	X+, r1
    1f14:	41 50       	subi	r20, 0x01	; 1
    1f16:	50 40       	sbci	r21, 0x00	; 0
    1f18:	e1 f7       	brne	.-8      	; 0x1f12 <SbrdGPCTD+0x96>
			//Check to see if we need to turn the pump on
			if((taskInfo.pBuf->offTime > 0) && (taskInfo.pBuf->flushTime > 0) && (taskInfo.pBuf->pumpRun == FALSE))
			{
				if((taskInfo.pBuf->sleeping == TRUE) && (taskInfo.pBuf->turnBackOnTime - currentSecond <= taskInfo.pBuf->flushTime))
				{
					SBGPCTD_PumpFast(&taskInfo);
    1f1a:	58 01       	movw	r10, r16
					SendDebugMsg(&(taskInfo.pBuf->dbgInfo));
#endif		//DEBUG_MESSAGES

					if (taskInfo.pBuf->reportData2.headerReport.repeatCount >= taskInfo.pBuf->samplePacketSize)
					{
						taskInfo.pBuf->reportData2.headerReport.payloadType = 0x00000070;
    1f1c:	20 e7       	ldi	r18, 0x70	; 112
    1f1e:	42 2e       	mov	r4, r18
    1f20:	51 2c       	mov	r5, r1
    1f22:	61 2c       	mov	r6, r1
    1f24:	71 2c       	mov	r7, r1
				fileAvailable[pTaskInit->portNum] = FALSE;
			}

			if(consoleAvailable[taskInfo.portNum] == TRUE)
			{
				taskInfo.pBuf->responseInfo.source = consoleIn[taskInfo.taskID].cmdSrcAddress;
    1f26:	99 e0       	ldi	r25, 0x09	; 9
    1f28:	89 2e       	mov	r8, r25
    1f2a:	91 e0       	ldi	r25, 0x01	; 1
    1f2c:	99 2e       	mov	r9, r25
			}
			
			// Check to see if we need to end this task and release resources
			if (kill[taskInfo.portNum] == TRUE) 
			{
				sprintf_P(dbgMsg, PSTR("Ending task...."));
    1f2e:	83 ef       	ldi	r24, 0xF3	; 243
    1f30:	28 2e       	mov	r2, r24
    1f32:	88 e1       	ldi	r24, 0x18	; 24
    1f34:	38 2e       	mov	r3, r24
		memset(taskInfo.pBuf->bufferTx, 0, 256);
		memset(taskInfo.pBuf->bufferRx, 0, 256);

		while(1)
		{
			OSTimeDlyHMSM(0,0,0,500);
    1f36:	80 e0       	ldi	r24, 0x00	; 0
    1f38:	60 e0       	ldi	r22, 0x00	; 0
    1f3a:	40 e0       	ldi	r20, 0x00	; 0
    1f3c:	24 ef       	ldi	r18, 0xF4	; 244
    1f3e:	31 e0       	ldi	r19, 0x01	; 1
    1f40:	0e 94 2a 2e 	call	0x5c54	; 0x5c54 <OSTimeDlyHMSM>
//			if (powerDown[taskInfo.portNum] == TRUE)
//			{
//				sprintf_P(dbgMsg, PSTR("Power down...")); SEND_MSG;
//			}
	
			if(serialPortPassThrough[taskInfo.portNum] == TRUE)
    1f44:	8c 81       	ldd	r24, Y+4	; 0x04
    1f46:	e8 2f       	mov	r30, r24
    1f48:	f0 e0       	ldi	r31, 0x00	; 0
    1f4a:	e7 56       	subi	r30, 0x67	; 103
    1f4c:	fe 45       	sbci	r31, 0x5E	; 94
    1f4e:	10 81       	ld	r17, Z
    1f50:	1f 3f       	cpi	r17, 0xFF	; 255
    1f52:	b9 f4       	brne	.+46     	; 0x1f82 <SbrdGPCTD+0x106>
			{
				//Set Flag so the float COMM task will proceed
				serialPortPassThroughOK = TRUE;
    1f54:	10 93 9d a1 	sts	0xA19D, r17
				
				EnablePIBModule(taskInfo.portNum, TRUE, FALSE);
    1f58:	6f ef       	ldi	r22, 0xFF	; 255
    1f5a:	40 e0       	ldi	r20, 0x00	; 0
    1f5c:	0e 94 a2 38 	call	0x7144	; 0x7144 <EnablePIBModule>
				OSTimeDlyHMSM(0,0,0,500);
    1f60:	80 e0       	ldi	r24, 0x00	; 0
    1f62:	60 e0       	ldi	r22, 0x00	; 0
    1f64:	40 e0       	ldi	r20, 0x00	; 0
    1f66:	24 ef       	ldi	r18, 0xF4	; 244
    1f68:	31 e0       	ldi	r19, 0x01	; 1
    1f6a:	0e 94 2a 2e 	call	0x5c54	; 0x5c54 <OSTimeDlyHMSM>
}


void SerialPortPassThroughGPCTD(uint8_t port)
{
	readyForSerialPassThru = TRUE;
    1f6e:	10 93 9e a1 	sts	0xA19E, r17

	while(1)
	{
		OSTimeDlyHMSM(1,0,0,0);
    1f72:	81 e0       	ldi	r24, 0x01	; 1
    1f74:	60 e0       	ldi	r22, 0x00	; 0
    1f76:	40 e0       	ldi	r20, 0x00	; 0
    1f78:	20 e0       	ldi	r18, 0x00	; 0
    1f7a:	30 e0       	ldi	r19, 0x00	; 0
    1f7c:	0e 94 2a 2e 	call	0x5c54	; 0x5c54 <OSTimeDlyHMSM>
    1f80:	f8 cf       	rjmp	.-16     	; 0x1f72 <SbrdGPCTD+0xf6>

				SerialPortPassThroughGPCTD(taskInfo.portNum);
			}

			
			currentSecond = getsecondtick();
    1f82:	0e 94 23 34 	call	0x6846	; 0x6846 <getsecondtick>
    1f86:	7b 01       	movw	r14, r22
    1f88:	8c 01       	movw	r16, r24

			//Check to see if we need to turn the pump on
			if((taskInfo.pBuf->offTime > 0) && (taskInfo.pBuf->flushTime > 0) && (taskInfo.pBuf->pumpRun == FALSE))
    1f8a:	ef 81       	ldd	r30, Y+7	; 0x07
    1f8c:	f8 85       	ldd	r31, Y+8	; 0x08
    1f8e:	e7 5e       	subi	r30, 0xE7	; 231
    1f90:	f6 4f       	sbci	r31, 0xF6	; 246
    1f92:	80 81       	ld	r24, Z
    1f94:	91 81       	ldd	r25, Z+1	; 0x01
    1f96:	e9 51       	subi	r30, 0x19	; 25
    1f98:	f9 40       	sbci	r31, 0x09	; 9
    1f9a:	89 2b       	or	r24, r25
    1f9c:	59 f1       	breq	.+86     	; 0x1ff4 <SbrdGPCTD+0x178>
    1f9e:	e0 5e       	subi	r30, 0xE0	; 224
    1fa0:	f6 4f       	sbci	r31, 0xF6	; 246
    1fa2:	20 81       	ld	r18, Z
    1fa4:	31 81       	ldd	r19, Z+1	; 0x01
    1fa6:	e0 52       	subi	r30, 0x20	; 32
    1fa8:	f9 40       	sbci	r31, 0x09	; 9
    1faa:	21 15       	cp	r18, r1
    1fac:	31 05       	cpc	r19, r1
    1fae:	11 f1       	breq	.+68     	; 0x1ff4 <SbrdGPCTD+0x178>
    1fb0:	ee 5d       	subi	r30, 0xDE	; 222
    1fb2:	f6 4f       	sbci	r31, 0xF6	; 246
    1fb4:	80 81       	ld	r24, Z
    1fb6:	e2 52       	subi	r30, 0x22	; 34
    1fb8:	f9 40       	sbci	r31, 0x09	; 9
    1fba:	88 23       	and	r24, r24
    1fbc:	d9 f4       	brne	.+54     	; 0x1ff4 <SbrdGPCTD+0x178>
			{
				if((taskInfo.pBuf->sleeping == TRUE) && (taskInfo.pBuf->turnBackOnTime - currentSecond <= taskInfo.pBuf->flushTime))
    1fbe:	e1 5e       	subi	r30, 0xE1	; 225
    1fc0:	f6 4f       	sbci	r31, 0xF6	; 246
    1fc2:	80 81       	ld	r24, Z
    1fc4:	ef 51       	subi	r30, 0x1F	; 31
    1fc6:	f9 40       	sbci	r31, 0x09	; 9
    1fc8:	8f 3f       	cpi	r24, 0xFF	; 255
    1fca:	a1 f4       	brne	.+40     	; 0x1ff4 <SbrdGPCTD+0x178>
    1fcc:	e5 5e       	subi	r30, 0xE5	; 229
    1fce:	f6 4f       	sbci	r31, 0xF6	; 246
    1fd0:	80 81       	ld	r24, Z
    1fd2:	91 81       	ldd	r25, Z+1	; 0x01
    1fd4:	a2 81       	ldd	r26, Z+2	; 0x02
    1fd6:	b3 81       	ldd	r27, Z+3	; 0x03
    1fd8:	8e 19       	sub	r24, r14
    1fda:	9f 09       	sbc	r25, r15
    1fdc:	a0 0b       	sbc	r26, r16
    1fde:	b1 0b       	sbc	r27, r17
    1fe0:	40 e0       	ldi	r20, 0x00	; 0
    1fe2:	50 e0       	ldi	r21, 0x00	; 0
    1fe4:	28 17       	cp	r18, r24
    1fe6:	39 07       	cpc	r19, r25
    1fe8:	4a 07       	cpc	r20, r26
    1fea:	5b 07       	cpc	r21, r27
    1fec:	18 f0       	brcs	.+6      	; 0x1ff4 <SbrdGPCTD+0x178>
				{
					SBGPCTD_PumpFast(&taskInfo);
    1fee:	c5 01       	movw	r24, r10
    1ff0:	0e 94 b9 74 	call	0xe972	; 0xe972 <SBGPCTD_PumpFast>
			}



			// Check to see if we should come out of the sleep state
			if((taskInfo.pBuf->sleeping == TRUE) && (taskInfo.pBuf->turnBackOnTime <= currentSecond) && (taskInfo.pBuf->turnBackOnTime != 0))
    1ff4:	ef 81       	ldd	r30, Y+7	; 0x07
    1ff6:	f8 85       	ldd	r31, Y+8	; 0x08
    1ff8:	e1 5e       	subi	r30, 0xE1	; 225
    1ffa:	f6 4f       	sbci	r31, 0xF6	; 246
    1ffc:	80 81       	ld	r24, Z
    1ffe:	ef 51       	subi	r30, 0x1F	; 31
    2000:	f9 40       	sbci	r31, 0x09	; 9
    2002:	8f 3f       	cpi	r24, 0xFF	; 255
    2004:	09 f0       	breq	.+2      	; 0x2008 <SbrdGPCTD+0x18c>
    2006:	42 c0       	rjmp	.+132    	; 0x208c <SbrdGPCTD+0x210>
    2008:	e5 5e       	subi	r30, 0xE5	; 229
    200a:	f6 4f       	sbci	r31, 0xF6	; 246
    200c:	80 81       	ld	r24, Z
    200e:	91 81       	ldd	r25, Z+1	; 0x01
    2010:	a2 81       	ldd	r26, Z+2	; 0x02
    2012:	b3 81       	ldd	r27, Z+3	; 0x03
    2014:	e8 16       	cp	r14, r24
    2016:	f9 06       	cpc	r15, r25
    2018:	0a 07       	cpc	r16, r26
    201a:	1b 07       	cpc	r17, r27
    201c:	b8 f1       	brcs	.+110    	; 0x208c <SbrdGPCTD+0x210>
    201e:	00 97       	sbiw	r24, 0x00	; 0
    2020:	a1 05       	cpc	r26, r1
    2022:	b1 05       	cpc	r27, r1
    2024:	99 f1       	breq	.+102    	; 0x208c <SbrdGPCTD+0x210>
			{
				//SBGPCTD_TurnOn(&taskInfo);
				SBGPCTD_StartSample(&taskInfo);
    2026:	c5 01       	movw	r24, r10
    2028:	0e 94 3a 76 	call	0xec74	; 0xec74 <SBGPCTD_StartSample>
				//taskInfo.pBuf->turnBackOnTime = 0;
				//if(taskInfo.pBuf->turnBackOnTime == 0)
				//taskInfo.pBuf->turnBackOnTime = (taskInfo.pBuf->samplePacketSize * taskInfo.pBuf->sampleRate) + taskInfo.pBuf->offTime + currentSecond;
				//else
				taskInfo.pBuf->turnBackOnTime += (taskInfo.pBuf->samplePacketSize * taskInfo.pBuf->sampleRate) + taskInfo.pBuf->offTime;
    202c:	ef 81       	ldd	r30, Y+7	; 0x07
    202e:	f8 85       	ldd	r31, Y+8	; 0x08
    2030:	bf 01       	movw	r22, r30
    2032:	65 5e       	subi	r22, 0xE5	; 229
    2034:	76 4f       	sbci	r23, 0xF6	; 246
    2036:	df 01       	movw	r26, r30
    2038:	af 5f       	subi	r26, 0xFF	; 255
    203a:	ba 4f       	sbci	r27, 0xFA	; 250
    203c:	ed 5f       	subi	r30, 0xFD	; 253
    203e:	fa 4f       	sbci	r31, 0xFA	; 250
    2040:	2d 91       	ld	r18, X+
    2042:	3c 91       	ld	r19, X
    2044:	80 81       	ld	r24, Z
    2046:	91 81       	ldd	r25, Z+1	; 0x01
    2048:	dc 01       	movw	r26, r24
    204a:	2a 9f       	mul	r18, r26
    204c:	c0 01       	movw	r24, r0
    204e:	2b 9f       	mul	r18, r27
    2050:	90 0d       	add	r25, r0
    2052:	3a 9f       	mul	r19, r26
    2054:	90 0d       	add	r25, r0
    2056:	11 24       	eor	r1, r1
    2058:	ea 5e       	subi	r30, 0xEA	; 234
    205a:	fb 4f       	sbci	r31, 0xFB	; 251
    205c:	20 81       	ld	r18, Z
    205e:	31 81       	ldd	r19, Z+1	; 0x01
    2060:	82 0f       	add	r24, r18
    2062:	93 1f       	adc	r25, r19
    2064:	7c 01       	movw	r14, r24
    2066:	00 e0       	ldi	r16, 0x00	; 0
    2068:	10 e0       	ldi	r17, 0x00	; 0
    206a:	db 01       	movw	r26, r22
    206c:	2d 91       	ld	r18, X+
    206e:	3d 91       	ld	r19, X+
    2070:	4d 91       	ld	r20, X+
    2072:	5c 91       	ld	r21, X
    2074:	13 97       	sbiw	r26, 0x03	; 3
    2076:	e2 0e       	add	r14, r18
    2078:	f3 1e       	adc	r15, r19
    207a:	04 1f       	adc	r16, r20
    207c:	15 1f       	adc	r17, r21
    207e:	ed 92       	st	X+, r14
    2080:	fd 92       	st	X+, r15
    2082:	0d 93       	st	X+, r16
    2084:	1c 93       	st	X, r17
    2086:	13 97       	sbiw	r26, 0x03	; 3
				taskInfo.pBuf->sleeping = FALSE;
    2088:	36 96       	adiw	r30, 0x06	; 6
    208a:	10 82       	st	Z, r1
			}

			if(taskInfo.pBuf->sampleCTD == TRUE)
    208c:	ef 81       	ldd	r30, Y+7	; 0x07
    208e:	f8 85       	ldd	r31, Y+8	; 0x08
    2090:	e9 5a       	subi	r30, 0xA9	; 169
    2092:	fa 4f       	sbci	r31, 0xFA	; 250
    2094:	10 81       	ld	r17, Z
    2096:	1f 3f       	cpi	r17, 0xFF	; 255
    2098:	09 f0       	breq	.+2      	; 0x209c <SbrdGPCTD+0x220>
    209a:	8b c0       	rjmp	.+278    	; 0x21b2 <SbrdGPCTD+0x336>
			{
				OSuartGetRxFifoCount(taskInfo.portNum, &count);
    209c:	8c 81       	ldd	r24, Y+4	; 0x04
    209e:	be 01       	movw	r22, r28
    20a0:	6f 5f       	subi	r22, 0xFF	; 255
    20a2:	7f 4f       	sbci	r23, 0xFF	; 255
    20a4:	0e 94 a1 31 	call	0x6342	; 0x6342 <OSuartGetRxFifoCount>
				

				if((taskInfo.pBuf->useO2 != USE_O2) && (count >= GPCTD_SAMPLE_NO_O2_LEN))
    20a8:	ef 81       	ldd	r30, Y+7	; 0x07
    20aa:	f8 85       	ldd	r31, Y+8	; 0x08
    20ac:	e7 5a       	subi	r30, 0xA7	; 167
    20ae:	fa 4f       	sbci	r31, 0xFA	; 250
    20b0:	80 81       	ld	r24, Z
    20b2:	99 81       	ldd	r25, Y+1	; 0x01
    20b4:	81 30       	cpi	r24, 0x01	; 1
    20b6:	81 f1       	breq	.+96     	; 0x2118 <SbrdGPCTD+0x29c>
    20b8:	91 31       	cpi	r25, 0x11	; 17
    20ba:	08 f4       	brcc	.+2      	; 0x20be <SbrdGPCTD+0x242>
    20bc:	6d c0       	rjmp	.+218    	; 0x2198 <SbrdGPCTD+0x31c>
				{
					SBGPCTD_GetCTDSampleNoO2(&taskInfo);
    20be:	c5 01       	movw	r24, r10
    20c0:	0e 94 1d 6f 	call	0xde3a	; 0xde3a <SBGPCTD_GetCTDSampleNoO2>
					taskInfo.pBuf->dbgInfo.dbgLevel = 5;

					SendDebugMsg(&(taskInfo.pBuf->dbgInfo));
#endif		//DEBUG_MESSAGES

					if (taskInfo.pBuf->reportData.headerReport.repeatCount >= taskInfo.pBuf->samplePacketSize)
    20c4:	ef 81       	ldd	r30, Y+7	; 0x07
    20c6:	f8 85       	ldd	r31, Y+8	; 0x08
    20c8:	ee 59       	subi	r30, 0x9E	; 158
    20ca:	fa 4f       	sbci	r31, 0xFA	; 250
    20cc:	80 81       	ld	r24, Z
    20ce:	90 e0       	ldi	r25, 0x00	; 0
    20d0:	ef 55       	subi	r30, 0x5F	; 95
    20d2:	f0 40       	sbci	r31, 0x00	; 0
    20d4:	20 81       	ld	r18, Z
    20d6:	31 81       	ldd	r19, Z+1	; 0x01
    20d8:	e3 50       	subi	r30, 0x03	; 3
    20da:	f5 40       	sbci	r31, 0x05	; 5
    20dc:	82 17       	cp	r24, r18
    20de:	93 07       	cpc	r25, r19
    20e0:	08 f4       	brcc	.+2      	; 0x20e4 <SbrdGPCTD+0x268>
    20e2:	59 c0       	rjmp	.+178    	; 0x2196 <SbrdGPCTD+0x31a>
					{
						taskInfo.pBuf->reportData.headerReport.payloadType = 0x00000070;
    20e4:	e5 5a       	subi	r30, 0xA5	; 165
    20e6:	fa 4f       	sbci	r31, 0xFA	; 250
    20e8:	41 92       	st	Z+, r4
    20ea:	51 92       	st	Z+, r5
    20ec:	61 92       	st	Z+, r6
    20ee:	71 92       	st	Z+, r7
						taskInfo.pBuf->reportData.headerReport.boardID = mainBoardID;
    20f0:	80 91 e6 03 	lds	r24, 0x03E6
    20f4:	81 93       	st	Z+, r24
						taskInfo.pBuf->reportData.headerReport.taskID = taskInfo.taskID;
    20f6:	8b 81       	ldd	r24, Y+3	; 0x03
    20f8:	81 93       	st	Z+, r24
						taskInfo.pBuf->reportData.headerReport.dataFormat = 8;
						taskInfo.pBuf->reportData.headerReport.parser = 0;
						taskInfo.pBuf->reportData.headerReport.priority = 2;
    20fa:	88 e4       	ldi	r24, 0x48	; 72
    20fc:	80 83       	st	Z, r24

						SBGPCTD_CTDReportXmitNoO2(&taskInfo);
    20fe:	c5 01       	movw	r24, r10
    2100:	0e 94 c5 6b 	call	0xd78a	; 0xd78a <SBGPCTD_CTDReportXmitNoO2>

						memset(&taskInfo.pBuf->reportData, 0, sizeof(GPCTD_DATA_REPORT));
    2104:	8f 81       	ldd	r24, Y+7	; 0x07
    2106:	98 85       	ldd	r25, Y+8	; 0x08
    2108:	85 5a       	subi	r24, 0xA5	; 165
    210a:	9a 4f       	sbci	r25, 0xFA	; 250
    210c:	dc 01       	movw	r26, r24
    210e:	28 ef       	ldi	r18, 0xF8	; 248
    2110:	1d 92       	st	X+, r1
    2112:	2a 95       	dec	r18
    2114:	e9 f7       	brne	.-6      	; 0x2110 <SbrdGPCTD+0x294>
    2116:	2f c0       	rjmp	.+94     	; 0x2176 <SbrdGPCTD+0x2fa>
						}
					}

					count = 0;
				}
				else if((taskInfo.pBuf->useO2 == USE_O2) && (count >= GPCTD_SAMPLE_NO_O2_LEN))
    2118:	91 31       	cpi	r25, 0x11	; 17
    211a:	f0 f1       	brcs	.+124    	; 0x2198 <SbrdGPCTD+0x31c>
//				else if((taskInfo.pBuf->useO2 == USE_O2) && (count >= GPCTD_SAMPLE_WITH_O2_LEN))
				{
					SBGPCTD_GetCTDSampleWithO2(&taskInfo);
    211c:	c5 01       	movw	r24, r10
    211e:	0e 94 23 6d 	call	0xda46	; 0xda46 <SBGPCTD_GetCTDSampleWithO2>
					taskInfo.pBuf->dbgInfo.dbgLevel = 5;

					SendDebugMsg(&(taskInfo.pBuf->dbgInfo));
#endif		//DEBUG_MESSAGES

					if (taskInfo.pBuf->reportData2.headerReport.repeatCount >= taskInfo.pBuf->samplePacketSize)
    2122:	ef 81       	ldd	r30, Y+7	; 0x07
    2124:	f8 85       	ldd	r31, Y+8	; 0x08
    2126:	e6 5a       	subi	r30, 0xA6	; 166
    2128:	f9 4f       	sbci	r31, 0xF9	; 249
    212a:	80 81       	ld	r24, Z
    212c:	90 e0       	ldi	r25, 0x00	; 0
    212e:	e7 55       	subi	r30, 0x57	; 87
    2130:	f1 40       	sbci	r31, 0x01	; 1
    2132:	20 81       	ld	r18, Z
    2134:	31 81       	ldd	r19, Z+1	; 0x01
    2136:	e3 50       	subi	r30, 0x03	; 3
    2138:	f5 40       	sbci	r31, 0x05	; 5
    213a:	82 17       	cp	r24, r18
    213c:	93 07       	cpc	r25, r19
    213e:	58 f1       	brcs	.+86     	; 0x2196 <SbrdGPCTD+0x31a>
					{
						taskInfo.pBuf->reportData2.headerReport.payloadType = 0x00000070;
    2140:	ed 5a       	subi	r30, 0xAD	; 173
    2142:	f9 4f       	sbci	r31, 0xF9	; 249
    2144:	41 92       	st	Z+, r4
    2146:	51 92       	st	Z+, r5
    2148:	61 92       	st	Z+, r6
    214a:	71 92       	st	Z+, r7
						taskInfo.pBuf->reportData2.headerReport.boardID = mainBoardID;
    214c:	80 91 e6 03 	lds	r24, 0x03E6
    2150:	81 93       	st	Z+, r24
						taskInfo.pBuf->reportData2.headerReport.taskID = taskInfo.taskID;
    2152:	8b 81       	ldd	r24, Y+3	; 0x03
    2154:	81 93       	st	Z+, r24
						taskInfo.pBuf->reportData2.headerReport.dataFormat = 9;
						taskInfo.pBuf->reportData2.headerReport.parser = 0;
						taskInfo.pBuf->reportData2.headerReport.priority = 2;
    2156:	89 e4       	ldi	r24, 0x49	; 73
    2158:	80 83       	st	Z, r24

						SBGPCTD_CTDReportXmitWithO2(&taskInfo);
    215a:	c5 01       	movw	r24, r10
    215c:	0e 94 47 6b 	call	0xd68e	; 0xd68e <SBGPCTD_CTDReportXmitWithO2>

						memset(&taskInfo.pBuf->reportData2, 0, sizeof(GPCTD_DATA_REPORT_2));
    2160:	8f 81       	ldd	r24, Y+7	; 0x07
    2162:	98 85       	ldd	r25, Y+8	; 0x08
    2164:	8d 5a       	subi	r24, 0xAD	; 173
    2166:	99 4f       	sbci	r25, 0xF9	; 249
    2168:	dc 01       	movw	r26, r24
    216a:	20 e2       	ldi	r18, 0x20	; 32
    216c:	31 e0       	ldi	r19, 0x01	; 1
    216e:	1d 92       	st	X+, r1
    2170:	21 50       	subi	r18, 0x01	; 1
    2172:	30 40       	sbci	r19, 0x00	; 0
    2174:	e1 f7       	brne	.-8      	; 0x216e <SbrdGPCTD+0x2f2>

						if(taskInfo.pBuf->offTime != 0)
    2176:	ef 81       	ldd	r30, Y+7	; 0x07
    2178:	f8 85       	ldd	r31, Y+8	; 0x08
    217a:	e7 5e       	subi	r30, 0xE7	; 231
    217c:	f6 4f       	sbci	r31, 0xF6	; 246
    217e:	80 81       	ld	r24, Z
    2180:	91 81       	ldd	r25, Z+1	; 0x01
    2182:	89 2b       	or	r24, r25
    2184:	41 f0       	breq	.+16     	; 0x2196 <SbrdGPCTD+0x31a>
						{
							SBGPCTD_StopSample(&taskInfo);
    2186:	c5 01       	movw	r24, r10
    2188:	0e 94 0b 75 	call	0xea16	; 0xea16 <SBGPCTD_StopSample>
							//SBGPCTD_TurnOff(&taskInfo);
							//taskInfo.pBuf->turnBackOnTime = currentSecond + taskInfo.pBuf->offTime;
							taskInfo.pBuf->sleeping = TRUE;
    218c:	ef 81       	ldd	r30, Y+7	; 0x07
    218e:	f8 85       	ldd	r31, Y+8	; 0x08
    2190:	e1 5e       	subi	r30, 0xE1	; 225
    2192:	f6 4f       	sbci	r31, 0xF6	; 246
    2194:	10 83       	st	Z, r17
						}
					}

					count = 0;
    2196:	19 82       	std	Y+1, r1	; 0x01
				}

				if((taskInfo.pBuf->findDataFrame == TRUE) && (count != 0))
    2198:	ef 81       	ldd	r30, Y+7	; 0x07
    219a:	f8 85       	ldd	r31, Y+8	; 0x08
    219c:	e6 5a       	subi	r30, 0xA6	; 166
    219e:	fa 4f       	sbci	r31, 0xFA	; 250
    21a0:	80 81       	ld	r24, Z
    21a2:	8f 3f       	cpi	r24, 0xFF	; 255
    21a4:	31 f4       	brne	.+12     	; 0x21b2 <SbrdGPCTD+0x336>
    21a6:	89 81       	ldd	r24, Y+1	; 0x01
    21a8:	88 23       	and	r24, r24
    21aa:	19 f0       	breq	.+6      	; 0x21b2 <SbrdGPCTD+0x336>
				{
					SBGPCTD_GetCTDSampleFrame(&taskInfo);
    21ac:	c5 01       	movw	r24, r10
    21ae:	0e 94 b2 70 	call	0xe164	; 0xe164 <SBGPCTD_GetCTDSampleFrame>
				}
			}


			if(fileAvailable[pTaskInit->portNum] == TRUE)
    21b2:	d6 01       	movw	r26, r12
    21b4:	11 96       	adiw	r26, 0x01	; 1
    21b6:	8c 91       	ld	r24, X
    21b8:	a8 2f       	mov	r26, r24
    21ba:	b0 e0       	ldi	r27, 0x00	; 0
    21bc:	fd 01       	movw	r30, r26
    21be:	ef 59       	subi	r30, 0x9F	; 159
    21c0:	f2 46       	sbci	r31, 0x62	; 98
    21c2:	80 81       	ld	r24, Z
    21c4:	8f 3f       	cpi	r24, 0xFF	; 255
    21c6:	61 f5       	brne	.+88     	; 0x2220 <__stack+0x21>
			{
				//SBGPCTD_ParseFile(&taskInfo, fileAvailableID[pTaskInit->portNum]);
				taskInfo.pBuf->fileID = fileAvailableID[pTaskInit->portNum];
    21c8:	ef 81       	ldd	r30, Y+7	; 0x07
    21ca:	f8 85       	ldd	r31, Y+8	; 0x08
    21cc:	e0 5f       	subi	r30, 0xF0	; 240
    21ce:	f6 4f       	sbci	r31, 0xF6	; 246
    21d0:	aa 0f       	add	r26, r26
    21d2:	bb 1f       	adc	r27, r27
    21d4:	aa 0f       	add	r26, r26
    21d6:	bb 1f       	adc	r27, r27
    21d8:	ad 57       	subi	r26, 0x7D	; 125
    21da:	b8 4f       	sbci	r27, 0xF8	; 248
    21dc:	8d 91       	ld	r24, X+
    21de:	9d 91       	ld	r25, X+
    21e0:	0d 90       	ld	r0, X+
    21e2:	bc 91       	ld	r27, X
    21e4:	a0 2d       	mov	r26, r0
    21e6:	80 83       	st	Z, r24
    21e8:	91 83       	std	Z+1, r25	; 0x01
    21ea:	a2 83       	std	Z+2, r26	; 0x02
    21ec:	b3 83       	std	Z+3, r27	; 0x03
				SBGPCTD_ParseInput(&taskInfo, FILE_INPUT);
    21ee:	c5 01       	movw	r24, r10
    21f0:	62 e0       	ldi	r22, 0x02	; 2
    21f2:	0e 94 fc 7a 	call	0xf5f8	; 0xf5f8 <SBGPCTD_ParseInput>
				fileAvailableID[pTaskInit->portNum] = 0;
    21f6:	d6 01       	movw	r26, r12
    21f8:	11 96       	adiw	r26, 0x01	; 1
    21fa:	ec 91       	ld	r30, X
    21fc:	11 97       	sbiw	r26, 0x01	; 1
    21fe:	f0 e0       	ldi	r31, 0x00	; 0
    2200:	ee 0f       	add	r30, r30
    2202:	ff 1f       	adc	r31, r31
    2204:	ee 0f       	add	r30, r30
    2206:	ff 1f       	adc	r31, r31
    2208:	ed 57       	subi	r30, 0x7D	; 125
    220a:	f8 4f       	sbci	r31, 0xF8	; 248
    220c:	10 82       	st	Z, r1
    220e:	11 82       	std	Z+1, r1	; 0x01
    2210:	12 82       	std	Z+2, r1	; 0x02
    2212:	13 82       	std	Z+3, r1	; 0x03
				fileAvailable[pTaskInit->portNum] = FALSE;
    2214:	11 96       	adiw	r26, 0x01	; 1
    2216:	ec 91       	ld	r30, X
    2218:	f0 e0       	ldi	r31, 0x00	; 0
    221a:	ef 59       	subi	r30, 0x9F	; 159
    221c:	f2 46       	sbci	r31, 0x62	; 98
    221e:	10 82       	st	Z, r1
			}

			if(consoleAvailable[taskInfo.portNum] == TRUE)
    2220:	ec 81       	ldd	r30, Y+4	; 0x04
    2222:	f0 e0       	ldi	r31, 0x00	; 0
    2224:	e3 57       	subi	r30, 0x73	; 115
    2226:	fe 45       	sbci	r31, 0x5E	; 94
    2228:	80 81       	ld	r24, Z
    222a:	8f 3f       	cpi	r24, 0xFF	; 255
    222c:	09 f0       	breq	.+2      	; 0x2230 <__stack+0x31>
    222e:	44 c0       	rjmp	.+136    	; 0x22b8 <__stack+0xb9>
			{
				taskInfo.pBuf->responseInfo.source = consoleIn[taskInfo.taskID].cmdSrcAddress;
    2230:	2f 81       	ldd	r18, Y+7	; 0x07
    2232:	38 85       	ldd	r19, Y+8	; 0x08
    2234:	2d 58       	subi	r18, 0x8D	; 141
    2236:	38 4f       	sbci	r19, 0xF8	; 248
    2238:	8b 81       	ldd	r24, Y+3	; 0x03
    223a:	90 e0       	ldi	r25, 0x00	; 0
    223c:	88 9d       	mul	r24, r8
    223e:	f0 01       	movw	r30, r0
    2240:	89 9d       	mul	r24, r9
    2242:	f0 0d       	add	r31, r0
    2244:	98 9d       	mul	r25, r8
    2246:	f0 0d       	add	r31, r0
    2248:	11 24       	eor	r1, r1
    224a:	e7 59       	subi	r30, 0x97	; 151
    224c:	f2 46       	sbci	r31, 0x62	; 98
    224e:	80 81       	ld	r24, Z
    2250:	91 81       	ldd	r25, Z+1	; 0x01
    2252:	f9 01       	movw	r30, r18
    2254:	81 93       	st	Z+, r24
    2256:	91 93       	st	Z+, r25
    2258:	9f 01       	movw	r18, r30
				taskInfo.pBuf->responseInfo.status = 0;
    225a:	10 82       	st	Z, r1
				taskInfo.pBuf->responseInfo.length = consoleIn[taskInfo.taskID].cmdSize;
    225c:	2e 5f       	subi	r18, 0xFE	; 254
    225e:	3f 4f       	sbci	r19, 0xFF	; 255
    2260:	8b 81       	ldd	r24, Y+3	; 0x03
    2262:	90 e0       	ldi	r25, 0x00	; 0
    2264:	88 9d       	mul	r24, r8
    2266:	f0 01       	movw	r30, r0
    2268:	89 9d       	mul	r24, r9
    226a:	f0 0d       	add	r31, r0
    226c:	98 9d       	mul	r25, r8
    226e:	f0 0d       	add	r31, r0
    2270:	11 24       	eor	r1, r1
    2272:	e7 59       	subi	r30, 0x97	; 151
    2274:	f2 46       	sbci	r31, 0x62	; 98
    2276:	83 81       	ldd	r24, Z+3	; 0x03
    2278:	d9 01       	movw	r26, r18
    227a:	8d 93       	st	X+, r24
    227c:	9d 01       	movw	r18, r26
				taskInfo.pBuf->responseInfo.id = consoleIn[taskInfo.taskID].id;
    227e:	8b 81       	ldd	r24, Y+3	; 0x03
    2280:	90 e0       	ldi	r25, 0x00	; 0
    2282:	88 9d       	mul	r24, r8
    2284:	f0 01       	movw	r30, r0
    2286:	89 9d       	mul	r24, r9
    2288:	f0 0d       	add	r31, r0
    228a:	98 9d       	mul	r25, r8
    228c:	f0 0d       	add	r31, r0
    228e:	11 24       	eor	r1, r1
    2290:	e7 59       	subi	r30, 0x97	; 151
    2292:	f2 46       	sbci	r31, 0x62	; 98
    2294:	85 81       	ldd	r24, Z+5	; 0x05
    2296:	96 81       	ldd	r25, Z+6	; 0x06
    2298:	a7 81       	ldd	r26, Z+7	; 0x07
    229a:	b0 85       	ldd	r27, Z+8	; 0x08
    229c:	f9 01       	movw	r30, r18
    229e:	80 83       	st	Z, r24
    22a0:	91 83       	std	Z+1, r25	; 0x01
    22a2:	a2 83       	std	Z+2, r26	; 0x02
    22a4:	b3 83       	std	Z+3, r27	; 0x03

//				SBGPCTD_ParseConsole(&taskInfo);
				SBGPCTD_ParseInput(&taskInfo, CONSOLE_INPUT);
    22a6:	c5 01       	movw	r24, r10
    22a8:	61 e0       	ldi	r22, 0x01	; 1
    22aa:	0e 94 fc 7a 	call	0xf5f8	; 0xf5f8 <SBGPCTD_ParseInput>
				consoleAvailable[taskInfo.portNum] = FALSE;
    22ae:	ec 81       	ldd	r30, Y+4	; 0x04
    22b0:	f0 e0       	ldi	r31, 0x00	; 0
    22b2:	e3 57       	subi	r30, 0x73	; 115
    22b4:	fe 45       	sbci	r31, 0x5E	; 94
    22b6:	10 82       	st	Z, r1
			}
			
			// Check to see if we need to end this task and release resources
			if (kill[taskInfo.portNum] == TRUE) 
    22b8:	ec 81       	ldd	r30, Y+4	; 0x04
    22ba:	f0 e0       	ldi	r31, 0x00	; 0
    22bc:	ef 56       	subi	r30, 0x6F	; 111
    22be:	fe 45       	sbci	r31, 0x5E	; 94
    22c0:	10 81       	ld	r17, Z
    22c2:	1f 3f       	cpi	r17, 0xFF	; 255
    22c4:	09 f0       	breq	.+2      	; 0x22c8 <__stack+0xc9>
    22c6:	37 ce       	rjmp	.-914    	; 0x1f36 <SbrdGPCTD+0xba>
			{
				sprintf_P(dbgMsg, PSTR("Ending task...."));
    22c8:	00 d0       	rcall	.+0      	; 0x22ca <__stack+0xcb>
    22ca:	0f 92       	push	r0
    22cc:	ad b7       	in	r26, 0x3d	; 61
    22ce:	be b7       	in	r27, 0x3e	; 62
    22d0:	12 96       	adiw	r26, 0x02	; 2
    22d2:	3c 92       	st	X, r3
    22d4:	2e 92       	st	-X, r2
    22d6:	11 97       	sbiw	r26, 0x01	; 1
    22d8:	e2 e2       	ldi	r30, 0x22	; 34
    22da:	fd e0       	ldi	r31, 0x0D	; 13
    22dc:	14 96       	adiw	r26, 0x04	; 4
    22de:	fc 93       	st	X, r31
    22e0:	ee 93       	st	-X, r30
    22e2:	13 97       	sbiw	r26, 0x03	; 3
    22e4:	0e 94 51 f1 	call	0x1e2a2	; 0x1e2a2 <sprintf_P>
				SEND_MSG;

				uint8_t val = 0xFF;
    22e8:	1a 83       	std	Y+2, r17	; 0x02
				uint16_t startAddr = 0;

				if(taskInfo.portNum == USER_PORT_1)
    22ea:	8c 81       	ldd	r24, Y+4	; 0x04
    22ec:	0f 90       	pop	r0
    22ee:	0f 90       	pop	r0
    22f0:	0f 90       	pop	r0
    22f2:	0f 90       	pop	r0
    22f4:	81 30       	cpi	r24, 0x01	; 1
    22f6:	29 f4       	brne	.+10     	; 0x2302 <__stack+0x103>
    22f8:	00 e0       	ldi	r16, 0x00	; 0
    22fa:	13 e0       	ldi	r17, 0x03	; 3
    22fc:	80 e0       	ldi	r24, 0x00	; 0
    22fe:	93 e0       	ldi	r25, 0x03	; 3
    2300:	31 c0       	rjmp	.+98     	; 0x2364 <__stack+0x165>
					startAddr = EEPROM_PM1_START;
				if(taskInfo.portNum == USER_PORT_2)
    2302:	82 30       	cpi	r24, 0x02	; 2
    2304:	29 f4       	brne	.+10     	; 0x2310 <__stack+0x111>
    2306:	00 e0       	ldi	r16, 0x00	; 0
    2308:	15 e0       	ldi	r17, 0x05	; 5
    230a:	80 e0       	ldi	r24, 0x00	; 0
    230c:	95 e0       	ldi	r25, 0x05	; 5
    230e:	2a c0       	rjmp	.+84     	; 0x2364 <__stack+0x165>
					startAddr = EEPROM_PM2_START;
				if(taskInfo.portNum == USER_PORT_3)
    2310:	83 30       	cpi	r24, 0x03	; 3
    2312:	d1 f0       	breq	.+52     	; 0x2348 <__stack+0x149>
					startAddr = EEPROM_PM3_START;

				if (startAddr == 0)
				{
					sprintf_P(dbgMsg, PSTR("No start address for EEPROM"));
    2314:	00 d0       	rcall	.+0      	; 0x2316 <__stack+0x117>
    2316:	0f 92       	push	r0
    2318:	ad b7       	in	r26, 0x3d	; 61
    231a:	be b7       	in	r27, 0x3e	; 62
    231c:	12 96       	adiw	r26, 0x02	; 2
    231e:	3c 92       	st	X, r3
    2320:	2e 92       	st	-X, r2
    2322:	11 97       	sbiw	r26, 0x01	; 1
    2324:	e6 e0       	ldi	r30, 0x06	; 6
    2326:	fd e0       	ldi	r31, 0x0D	; 13
    2328:	14 96       	adiw	r26, 0x04	; 4
    232a:	fc 93       	st	X, r31
    232c:	ee 93       	st	-X, r30
    232e:	13 97       	sbiw	r26, 0x03	; 3
    2330:	0e 94 51 f1 	call	0x1e2a2	; 0x1e2a2 <sprintf_P>
					SEND_MSG;
					kill[taskInfo.portNum] = FALSE;
    2334:	ec 81       	ldd	r30, Y+4	; 0x04
    2336:	f0 e0       	ldi	r31, 0x00	; 0
    2338:	ef 56       	subi	r30, 0x6F	; 111
    233a:	fe 45       	sbci	r31, 0x5E	; 94
    233c:	10 82       	st	Z, r1
    233e:	0f 90       	pop	r0
    2340:	0f 90       	pop	r0
    2342:	0f 90       	pop	r0
    2344:	0f 90       	pop	r0
    2346:	f7 cd       	rjmp	.-1042   	; 0x1f36 <SbrdGPCTD+0xba>
    2348:	00 e0       	ldi	r16, 0x00	; 0
    234a:	17 e0       	ldi	r17, 0x07	; 7
    234c:	80 e0       	ldi	r24, 0x00	; 0
    234e:	97 e0       	ldi	r25, 0x07	; 7
    2350:	09 c0       	rjmp	.+18     	; 0x2364 <__stack+0x165>
				}
				else
				{
					// Write all F's to EEPROM
					for (uint16_t addr = startAddr; addr < startAddr + EEPROM_PM_SIZE; addr++)
						EepromWriteBlock((void*)addr, (void*)&val, 1);
    2352:	c8 01       	movw	r24, r16
    2354:	b6 01       	movw	r22, r12
    2356:	41 e0       	ldi	r20, 0x01	; 1
    2358:	50 e0       	ldi	r21, 0x00	; 0
    235a:	0e 94 f7 37 	call	0x6fee	; 0x6fee <EepromWriteBlock>
					kill[taskInfo.portNum] = FALSE;
				}
				else
				{
					// Write all F's to EEPROM
					for (uint16_t addr = startAddr; addr < startAddr + EEPROM_PM_SIZE; addr++)
    235e:	0f 5f       	subi	r16, 0xFF	; 255
    2360:	1f 4f       	sbci	r17, 0xFF	; 255
    2362:	0a c0       	rjmp	.+20     	; 0x2378 <__stack+0x179>
    2364:	e1 2c       	mov	r14, r1
    2366:	f2 e0       	ldi	r31, 0x02	; 2
    2368:	ff 2e       	mov	r15, r31
    236a:	e8 0e       	add	r14, r24
    236c:	f9 1e       	adc	r15, r25
						EepromWriteBlock((void*)addr, (void*)&val, 1);
    236e:	e2 e0       	ldi	r30, 0x02	; 2
    2370:	ce 2e       	mov	r12, r30
    2372:	d1 2c       	mov	r13, r1
    2374:	cc 0e       	add	r12, r28
    2376:	dd 1e       	adc	r13, r29
					kill[taskInfo.portNum] = FALSE;
				}
				else
				{
					// Write all F's to EEPROM
					for (uint16_t addr = startAddr; addr < startAddr + EEPROM_PM_SIZE; addr++)
    2378:	0e 15       	cp	r16, r14
    237a:	1f 05       	cpc	r17, r15
    237c:	50 f3       	brcs	.-44     	; 0x2352 <__stack+0x153>
						EepromWriteBlock((void*)addr, (void*)&val, 1);

					// Turn off PIB
					EnablePIBModule(taskInfo.portNum, FALSE, FALSE);
    237e:	8c 81       	ldd	r24, Y+4	; 0x04
    2380:	60 e0       	ldi	r22, 0x00	; 0
    2382:	40 e0       	ldi	r20, 0x00	; 0
    2384:	0e 94 a2 38 	call	0x7144	; 0x7144 <EnablePIBModule>

					memset(taskInfo.pBuf, 0, TASK_BUF_SIZE);
    2388:	ef 81       	ldd	r30, Y+7	; 0x07
    238a:	f8 85       	ldd	r31, Y+8	; 0x08
    238c:	80 ea       	ldi	r24, 0xA0	; 160
    238e:	9f e0       	ldi	r25, 0x0F	; 15
    2390:	df 01       	movw	r26, r30
    2392:	9c 01       	movw	r18, r24
    2394:	1d 92       	st	X+, r1
    2396:	21 50       	subi	r18, 0x01	; 1
    2398:	30 40       	sbci	r19, 0x00	; 0
    239a:	e1 f7       	brne	.-8      	; 0x2394 <__stack+0x195>

					// Now end task (ie, just sleep for a really long time)
					while (1) OSTimeDlyHMSM(1,0,0,0);
    239c:	81 e0       	ldi	r24, 0x01	; 1
    239e:	60 e0       	ldi	r22, 0x00	; 0
    23a0:	40 e0       	ldi	r20, 0x00	; 0
    23a2:	20 e0       	ldi	r18, 0x00	; 0
    23a4:	30 e0       	ldi	r19, 0x00	; 0
    23a6:	0e 94 2a 2e 	call	0x5c54	; 0x5c54 <OSTimeDlyHMSM>
    23aa:	f8 cf       	rjmp	.-16     	; 0x239c <__stack+0x19d>
				}
            }							
		}
	}
	return;
}
    23ac:	28 96       	adiw	r28, 0x08	; 8
    23ae:	0f b6       	in	r0, 0x3f	; 63
    23b0:	f8 94       	cli
    23b2:	de bf       	out	0x3e, r29	; 62
    23b4:	0f be       	out	0x3f, r0	; 63
    23b6:	cd bf       	out	0x3d, r28	; 61
    23b8:	cf 91       	pop	r28
    23ba:	df 91       	pop	r29
    23bc:	1f 91       	pop	r17
    23be:	0f 91       	pop	r16
    23c0:	ff 90       	pop	r15
    23c2:	ef 90       	pop	r14
    23c4:	df 90       	pop	r13
    23c6:	cf 90       	pop	r12
    23c8:	bf 90       	pop	r11
    23ca:	af 90       	pop	r10
    23cc:	9f 90       	pop	r9
    23ce:	8f 90       	pop	r8
    23d0:	7f 90       	pop	r7
    23d2:	6f 90       	pop	r6
    23d4:	5f 90       	pop	r5
    23d6:	4f 90       	pop	r4
    23d8:	3f 90       	pop	r3
    23da:	2f 90       	pop	r2
    23dc:	08 95       	ret

000023de <Sbrd37SI>:
	return retval;
}


void Sbrd37SI(void* pParam)
{
    23de:	2f 92       	push	r2
    23e0:	3f 92       	push	r3
    23e2:	4f 92       	push	r4
    23e4:	5f 92       	push	r5
    23e6:	6f 92       	push	r6
    23e8:	7f 92       	push	r7
    23ea:	8f 92       	push	r8
    23ec:	9f 92       	push	r9
    23ee:	af 92       	push	r10
    23f0:	bf 92       	push	r11
    23f2:	cf 92       	push	r12
    23f4:	df 92       	push	r13
    23f6:	ef 92       	push	r14
    23f8:	ff 92       	push	r15
    23fa:	0f 93       	push	r16
    23fc:	1f 93       	push	r17
    23fe:	df 93       	push	r29
    2400:	cf 93       	push	r28
    2402:	cd b7       	in	r28, 0x3d	; 61
    2404:	de b7       	in	r29, 0x3e	; 62
    2406:	27 97       	sbiw	r28, 0x07	; 7
    2408:	0f b6       	in	r0, 0x3f	; 63
    240a:	f8 94       	cli
    240c:	de bf       	out	0x3e, r29	; 62
    240e:	0f be       	out	0x3f, r0	; 63
    2410:	cd bf       	out	0x3d, r28	; 61
	SEABIRD_CTD_37_SI_TASK taskInfo;
	PSEABIRD_CTD_37_SI_TASK pTaskInit = (PSEABIRD_CTD_37_SI_TASK)pParam;
    2412:	6c 01       	movw	r12, r24
	uint8_t retval = FAIL;
	uint32_t myTick = 0;


	taskInfo.taskID = pTaskInit->taskID;
    2414:	dc 01       	movw	r26, r24
    2416:	8c 91       	ld	r24, X
    2418:	8a 83       	std	Y+2, r24	; 0x02
	taskInfo.portNum = pTaskInit->portNum;
    241a:	11 96       	adiw	r26, 0x01	; 1
    241c:	8c 91       	ld	r24, X
    241e:	11 97       	sbiw	r26, 0x01	; 1
    2420:	8b 83       	std	Y+3, r24	; 0x03
	taskInfo.pBuf = pTaskInit->pBuf;
    2422:	14 96       	adiw	r26, 0x04	; 4
    2424:	8d 91       	ld	r24, X+
    2426:	9c 91       	ld	r25, X
    2428:	15 97       	sbiw	r26, 0x05	; 5
    242a:	9f 83       	std	Y+7, r25	; 0x07
    242c:	8e 83       	std	Y+6, r24	; 0x06

	retval = SeabirdCTD_37SI_Init(&taskInfo);
    242e:	8e 01       	movw	r16, r28
    2430:	0e 5f       	subi	r16, 0xFE	; 254
    2432:	1f 4f       	sbci	r17, 0xFF	; 255
    2434:	c8 01       	movw	r24, r16
    2436:	0e 94 d5 8a 	call	0x115aa	; 0x115aa <SeabirdCTD_37SI_Init>

	if(retval == SUCCESS)
    243a:	8f 3f       	cpi	r24, 0xFF	; 255
    243c:	09 f0       	breq	.+2      	; 0x2440 <Sbrd37SI+0x62>
    243e:	6b c1       	rjmp	.+726    	; 0x2716 <Sbrd37SI+0x338>
	{
		while(1)
		{
			OSTimeDlyHMSM(0,0,0,500);
			sprintf_P(dbgMsg, PSTR("CTD37SI Loop for PM%d"), taskInfo.portNum);
    2440:	83 ef       	ldi	r24, 0xF3	; 243
    2442:	a8 2e       	mov	r10, r24
    2444:	88 e1       	ldi	r24, 0x18	; 24
    2446:	b8 2e       	mov	r11, r24
			if(taskInfo.pBuf->sampleCTD == TRUE)
			{
				myTick = getsecondtick();
				if(myTick >= taskInfo.pBuf->nextSample)
				{
					SB37SI_GetCTDSample(&taskInfo);
    2448:	48 01       	movw	r8, r16
				fileAvailable[pTaskInit->portNum] = FALSE;
			}

			if(consoleAvailable[taskInfo.portNum] == TRUE)
			{
				taskInfo.pBuf->responseInfo.source = consoleIn[taskInfo.taskID].cmdSrcAddress;
    244a:	b9 e0       	ldi	r27, 0x09	; 9
    244c:	2b 2e       	mov	r2, r27
    244e:	b1 e0       	ldi	r27, 0x01	; 1
    2450:	3b 2e       	mov	r3, r27
			}
			
			// Check to see if we need to end this task and release resources
			if (kill[taskInfo.portNum] == TRUE) 
			{
				sprintf_P(dbgMsg, PSTR("Ending task...."));
    2452:	ae ec       	ldi	r26, 0xCE	; 206
    2454:	4a 2e       	mov	r4, r26
    2456:	ae e0       	ldi	r26, 0x0E	; 14
    2458:	5a 2e       	mov	r5, r26
				if(taskInfo.portNum == USER_PORT_3)
					startAddr = EEPROM_PM3_START;

				if (startAddr == 0)
				{
					sprintf_P(dbgMsg, PSTR("No start address for EEPROM"));
    245a:	f2 eb       	ldi	r31, 0xB2	; 178
    245c:	6f 2e       	mov	r6, r31
    245e:	fe e0       	ldi	r31, 0x0E	; 14
    2460:	7f 2e       	mov	r7, r31

	if(retval == SUCCESS)
	{
		while(1)
		{
			OSTimeDlyHMSM(0,0,0,500);
    2462:	80 e0       	ldi	r24, 0x00	; 0
    2464:	60 e0       	ldi	r22, 0x00	; 0
    2466:	40 e0       	ldi	r20, 0x00	; 0
    2468:	24 ef       	ldi	r18, 0xF4	; 244
    246a:	31 e0       	ldi	r19, 0x01	; 1
    246c:	0e 94 2a 2e 	call	0x5c54	; 0x5c54 <OSTimeDlyHMSM>
			sprintf_P(dbgMsg, PSTR("CTD37SI Loop for PM%d"), taskInfo.portNum);
    2470:	00 d0       	rcall	.+0      	; 0x2472 <Sbrd37SI+0x94>
    2472:	00 d0       	rcall	.+0      	; 0x2474 <Sbrd37SI+0x96>
    2474:	ed b7       	in	r30, 0x3d	; 61
    2476:	fe b7       	in	r31, 0x3e	; 62
    2478:	31 96       	adiw	r30, 0x01	; 1
    247a:	ad b7       	in	r26, 0x3d	; 61
    247c:	be b7       	in	r27, 0x3e	; 62
    247e:	12 96       	adiw	r26, 0x02	; 2
    2480:	bc 92       	st	X, r11
    2482:	ae 92       	st	-X, r10
    2484:	11 97       	sbiw	r26, 0x01	; 1
    2486:	2c ee       	ldi	r18, 0xEC	; 236
    2488:	3e e0       	ldi	r19, 0x0E	; 14
    248a:	33 83       	std	Z+3, r19	; 0x03
    248c:	22 83       	std	Z+2, r18	; 0x02
    248e:	8b 81       	ldd	r24, Y+3	; 0x03
    2490:	84 83       	std	Z+4, r24	; 0x04
    2492:	15 82       	std	Z+5, r1	; 0x05
    2494:	0e 94 51 f1 	call	0x1e2a2	; 0x1e2a2 <sprintf_P>
			SEND_MSG;

			if(taskInfo.pBuf->sampleCTD == TRUE)
    2498:	ee 81       	ldd	r30, Y+6	; 0x06
    249a:	ff 81       	ldd	r31, Y+7	; 0x07
    249c:	ec 5e       	subi	r30, 0xEC	; 236
    249e:	fa 4f       	sbci	r31, 0xFA	; 250
    24a0:	8d b7       	in	r24, 0x3d	; 61
    24a2:	9e b7       	in	r25, 0x3e	; 62
    24a4:	06 96       	adiw	r24, 0x06	; 6
    24a6:	0f b6       	in	r0, 0x3f	; 63
    24a8:	f8 94       	cli
    24aa:	9e bf       	out	0x3e, r25	; 62
    24ac:	0f be       	out	0x3f, r0	; 63
    24ae:	8d bf       	out	0x3d, r24	; 61
    24b0:	80 81       	ld	r24, Z
    24b2:	8f 3f       	cpi	r24, 0xFF	; 255
    24b4:	29 f5       	brne	.+74     	; 0x2500 <Sbrd37SI+0x122>
			{
				myTick = getsecondtick();
    24b6:	0e 94 23 34 	call	0x6846	; 0x6846 <getsecondtick>
    24ba:	7b 01       	movw	r14, r22
    24bc:	8c 01       	movw	r16, r24
				if(myTick >= taskInfo.pBuf->nextSample)
    24be:	ee 81       	ldd	r30, Y+6	; 0x06
    24c0:	ff 81       	ldd	r31, Y+7	; 0x07
    24c2:	eb 5e       	subi	r30, 0xEB	; 235
    24c4:	fa 4f       	sbci	r31, 0xFA	; 250
    24c6:	80 81       	ld	r24, Z
    24c8:	91 81       	ldd	r25, Z+1	; 0x01
    24ca:	a2 81       	ldd	r26, Z+2	; 0x02
    24cc:	b3 81       	ldd	r27, Z+3	; 0x03
    24ce:	e8 16       	cp	r14, r24
    24d0:	f9 06       	cpc	r15, r25
    24d2:	0a 07       	cpc	r16, r26
    24d4:	1b 07       	cpc	r17, r27
    24d6:	a0 f0       	brcs	.+40     	; 0x2500 <Sbrd37SI+0x122>
				{
					SB37SI_GetCTDSample(&taskInfo);
    24d8:	c4 01       	movw	r24, r8
    24da:	0e 94 41 89 	call	0x11282	; 0x11282 <SB37SI_GetCTDSample>
					taskInfo.pBuf->nextSample = myTick + taskInfo.pBuf->sampleRate;
    24de:	ee 81       	ldd	r30, Y+6	; 0x06
    24e0:	ff 81       	ldd	r31, Y+7	; 0x07
    24e2:	e0 50       	subi	r30, 0x00	; 0
    24e4:	fb 4f       	sbci	r31, 0xFB	; 251
    24e6:	80 81       	ld	r24, Z
    24e8:	91 81       	ldd	r25, Z+1	; 0x01
    24ea:	a2 81       	ldd	r26, Z+2	; 0x02
    24ec:	b3 81       	ldd	r27, Z+3	; 0x03
    24ee:	8e 0d       	add	r24, r14
    24f0:	9f 1d       	adc	r25, r15
    24f2:	a0 1f       	adc	r26, r16
    24f4:	b1 1f       	adc	r27, r17
    24f6:	75 96       	adiw	r30, 0x15	; 21
    24f8:	80 83       	st	Z, r24
    24fa:	91 83       	std	Z+1, r25	; 0x01
    24fc:	a2 83       	std	Z+2, r26	; 0x02
    24fe:	b3 83       	std	Z+3, r27	; 0x03
				}
			}

			if (powerDown[taskInfo.portNum] == TRUE)
    2500:	eb 81       	ldd	r30, Y+3	; 0x03
    2502:	f0 e0       	ldi	r31, 0x00	; 0
    2504:	eb 56       	subi	r30, 0x6B	; 107
    2506:	fe 45       	sbci	r31, 0x5E	; 94
    2508:	80 81       	ld	r24, Z
    250a:	8f 3f       	cpi	r24, 0xFF	; 255
    250c:	a1 f4       	brne	.+40     	; 0x2536 <Sbrd37SI+0x158>
			{
				sprintf_P(dbgMsg, PSTR("Power down...")); SEND_MSG;
    250e:	00 d0       	rcall	.+0      	; 0x2510 <Sbrd37SI+0x132>
    2510:	0f 92       	push	r0
    2512:	ad b7       	in	r26, 0x3d	; 61
    2514:	be b7       	in	r27, 0x3e	; 62
    2516:	12 96       	adiw	r26, 0x02	; 2
    2518:	bc 92       	st	X, r11
    251a:	ae 92       	st	-X, r10
    251c:	11 97       	sbiw	r26, 0x01	; 1
    251e:	ee ed       	ldi	r30, 0xDE	; 222
    2520:	fe e0       	ldi	r31, 0x0E	; 14
    2522:	14 96       	adiw	r26, 0x04	; 4
    2524:	fc 93       	st	X, r31
    2526:	ee 93       	st	-X, r30
    2528:	13 97       	sbiw	r26, 0x03	; 3
    252a:	0e 94 51 f1 	call	0x1e2a2	; 0x1e2a2 <sprintf_P>
    252e:	0f 90       	pop	r0
    2530:	0f 90       	pop	r0
    2532:	0f 90       	pop	r0
    2534:	0f 90       	pop	r0
			}

			if(serialPortPassThrough[taskInfo.portNum] == TRUE)
    2536:	8b 81       	ldd	r24, Y+3	; 0x03
    2538:	e8 2f       	mov	r30, r24
    253a:	f0 e0       	ldi	r31, 0x00	; 0
    253c:	e7 56       	subi	r30, 0x67	; 103
    253e:	fe 45       	sbci	r31, 0x5E	; 94
    2540:	10 81       	ld	r17, Z
    2542:	1f 3f       	cpi	r17, 0xFF	; 255
    2544:	b9 f4       	brne	.+46     	; 0x2574 <Sbrd37SI+0x196>
			{
				//Set Flag so the float COMM task will proceed
				serialPortPassThroughOK = TRUE;
    2546:	10 93 9d a1 	sts	0xA19D, r17
				
				EnablePIBModule(taskInfo.portNum, TRUE, FALSE);
    254a:	6f ef       	ldi	r22, 0xFF	; 255
    254c:	40 e0       	ldi	r20, 0x00	; 0
    254e:	0e 94 a2 38 	call	0x7144	; 0x7144 <EnablePIBModule>
				OSTimeDlyHMSM(0,0,0,500);
    2552:	80 e0       	ldi	r24, 0x00	; 0
    2554:	60 e0       	ldi	r22, 0x00	; 0
    2556:	40 e0       	ldi	r20, 0x00	; 0
    2558:	24 ef       	ldi	r18, 0xF4	; 244
    255a:	31 e0       	ldi	r19, 0x01	; 1
    255c:	0e 94 2a 2e 	call	0x5c54	; 0x5c54 <OSTimeDlyHMSM>
	return retval;
}

void SerialPortPassThrough37SI(uint8_t port)
{
	readyForSerialPassThru = TRUE;
    2560:	10 93 9e a1 	sts	0xA19E, r17

	while(1)
	{
		OSTimeDlyHMSM(1,0,0,0);
    2564:	81 e0       	ldi	r24, 0x01	; 1
    2566:	60 e0       	ldi	r22, 0x00	; 0
    2568:	40 e0       	ldi	r20, 0x00	; 0
    256a:	20 e0       	ldi	r18, 0x00	; 0
    256c:	30 e0       	ldi	r19, 0x00	; 0
    256e:	0e 94 2a 2e 	call	0x5c54	; 0x5c54 <OSTimeDlyHMSM>
    2572:	f8 cf       	rjmp	.-16     	; 0x2564 <Sbrd37SI+0x186>
				OSTimeDlyHMSM(0,0,0,500);

				SerialPortPassThrough37SI(taskInfo.portNum);
			}

			if(fileAvailable[pTaskInit->portNum] == TRUE)
    2574:	d6 01       	movw	r26, r12
    2576:	11 96       	adiw	r26, 0x01	; 1
    2578:	8c 91       	ld	r24, X
    257a:	a8 2f       	mov	r26, r24
    257c:	b0 e0       	ldi	r27, 0x00	; 0
    257e:	fd 01       	movw	r30, r26
    2580:	ef 59       	subi	r30, 0x9F	; 159
    2582:	f2 46       	sbci	r31, 0x62	; 98
    2584:	80 81       	ld	r24, Z
    2586:	8f 3f       	cpi	r24, 0xFF	; 255
    2588:	11 f5       	brne	.+68     	; 0x25ce <Sbrd37SI+0x1f0>
			{
				SB37SI_ParseFile(&taskInfo, fileAvailableID[pTaskInit->portNum]);
    258a:	aa 0f       	add	r26, r26
    258c:	bb 1f       	adc	r27, r27
    258e:	aa 0f       	add	r26, r26
    2590:	bb 1f       	adc	r27, r27
    2592:	ad 57       	subi	r26, 0x7D	; 125
    2594:	b8 4f       	sbci	r27, 0xF8	; 248
    2596:	4d 91       	ld	r20, X+
    2598:	5d 91       	ld	r21, X+
    259a:	6d 91       	ld	r22, X+
    259c:	7c 91       	ld	r23, X
    259e:	c4 01       	movw	r24, r8
    25a0:	0e 94 c1 82 	call	0x10582	; 0x10582 <SB37SI_ParseFile>
				fileAvailableID[pTaskInit->portNum] = 0;
    25a4:	d6 01       	movw	r26, r12
    25a6:	11 96       	adiw	r26, 0x01	; 1
    25a8:	ec 91       	ld	r30, X
    25aa:	11 97       	sbiw	r26, 0x01	; 1
    25ac:	f0 e0       	ldi	r31, 0x00	; 0
    25ae:	ee 0f       	add	r30, r30
    25b0:	ff 1f       	adc	r31, r31
    25b2:	ee 0f       	add	r30, r30
    25b4:	ff 1f       	adc	r31, r31
    25b6:	ed 57       	subi	r30, 0x7D	; 125
    25b8:	f8 4f       	sbci	r31, 0xF8	; 248
    25ba:	10 82       	st	Z, r1
    25bc:	11 82       	std	Z+1, r1	; 0x01
    25be:	12 82       	std	Z+2, r1	; 0x02
    25c0:	13 82       	std	Z+3, r1	; 0x03
				fileAvailable[pTaskInit->portNum] = FALSE;
    25c2:	11 96       	adiw	r26, 0x01	; 1
    25c4:	ec 91       	ld	r30, X
    25c6:	f0 e0       	ldi	r31, 0x00	; 0
    25c8:	ef 59       	subi	r30, 0x9F	; 159
    25ca:	f2 46       	sbci	r31, 0x62	; 98
    25cc:	10 82       	st	Z, r1
			}

			if(consoleAvailable[taskInfo.portNum] == TRUE)
    25ce:	eb 81       	ldd	r30, Y+3	; 0x03
    25d0:	f0 e0       	ldi	r31, 0x00	; 0
    25d2:	e3 57       	subi	r30, 0x73	; 115
    25d4:	fe 45       	sbci	r31, 0x5E	; 94
    25d6:	80 81       	ld	r24, Z
    25d8:	8f 3f       	cpi	r24, 0xFF	; 255
    25da:	61 f5       	brne	.+88     	; 0x2634 <Sbrd37SI+0x256>
			{
				taskInfo.pBuf->responseInfo.source = consoleIn[taskInfo.taskID].cmdSrcAddress;
    25dc:	ee 81       	ldd	r30, Y+6	; 0x06
    25de:	ff 81       	ldd	r31, Y+7	; 0x07
    25e0:	8a 81       	ldd	r24, Y+2	; 0x02
    25e2:	90 e0       	ldi	r25, 0x00	; 0
    25e4:	e1 56       	subi	r30, 0x61	; 97
    25e6:	fa 4f       	sbci	r31, 0xFA	; 250
    25e8:	82 9d       	mul	r24, r2
    25ea:	d0 01       	movw	r26, r0
    25ec:	83 9d       	mul	r24, r3
    25ee:	b0 0d       	add	r27, r0
    25f0:	92 9d       	mul	r25, r2
    25f2:	b0 0d       	add	r27, r0
    25f4:	11 24       	eor	r1, r1
    25f6:	a7 59       	subi	r26, 0x97	; 151
    25f8:	b2 46       	sbci	r27, 0x62	; 98
    25fa:	8d 91       	ld	r24, X+
    25fc:	9c 91       	ld	r25, X
    25fe:	11 97       	sbiw	r26, 0x01	; 1
    2600:	81 93       	st	Z+, r24
    2602:	91 93       	st	Z+, r25
				taskInfo.pBuf->responseInfo.status = 0;
    2604:	10 82       	st	Z, r1
				taskInfo.pBuf->responseInfo.length = consoleIn[taskInfo.taskID].cmdSize;
    2606:	32 96       	adiw	r30, 0x02	; 2
    2608:	13 96       	adiw	r26, 0x03	; 3
    260a:	8c 91       	ld	r24, X
    260c:	13 97       	sbiw	r26, 0x03	; 3
    260e:	81 93       	st	Z+, r24
				taskInfo.pBuf->responseInfo.id = consoleIn[taskInfo.taskID].id;
    2610:	15 96       	adiw	r26, 0x05	; 5
    2612:	8d 91       	ld	r24, X+
    2614:	9d 91       	ld	r25, X+
    2616:	0d 90       	ld	r0, X+
    2618:	bc 91       	ld	r27, X
    261a:	a0 2d       	mov	r26, r0
    261c:	80 83       	st	Z, r24
    261e:	91 83       	std	Z+1, r25	; 0x01
    2620:	a2 83       	std	Z+2, r26	; 0x02
    2622:	b3 83       	std	Z+3, r27	; 0x03

				SB37SI_ParseConsole(&taskInfo);
    2624:	c4 01       	movw	r24, r8
    2626:	0e 94 d4 87 	call	0x10fa8	; 0x10fa8 <SB37SI_ParseConsole>
				consoleAvailable[taskInfo.portNum] = FALSE;
    262a:	eb 81       	ldd	r30, Y+3	; 0x03
    262c:	f0 e0       	ldi	r31, 0x00	; 0
    262e:	e3 57       	subi	r30, 0x73	; 115
    2630:	fe 45       	sbci	r31, 0x5E	; 94
    2632:	10 82       	st	Z, r1
			}
			
			// Check to see if we need to end this task and release resources
			if (kill[taskInfo.portNum] == TRUE) 
    2634:	eb 81       	ldd	r30, Y+3	; 0x03
    2636:	f0 e0       	ldi	r31, 0x00	; 0
    2638:	ef 56       	subi	r30, 0x6F	; 111
    263a:	fe 45       	sbci	r31, 0x5E	; 94
    263c:	10 81       	ld	r17, Z
    263e:	1f 3f       	cpi	r17, 0xFF	; 255
    2640:	09 f0       	breq	.+2      	; 0x2644 <Sbrd37SI+0x266>
    2642:	0f cf       	rjmp	.-482    	; 0x2462 <Sbrd37SI+0x84>
			{
				sprintf_P(dbgMsg, PSTR("Ending task...."));
    2644:	00 d0       	rcall	.+0      	; 0x2646 <Sbrd37SI+0x268>
    2646:	0f 92       	push	r0
    2648:	ed b7       	in	r30, 0x3d	; 61
    264a:	fe b7       	in	r31, 0x3e	; 62
    264c:	b2 82       	std	Z+2, r11	; 0x02
    264e:	a1 82       	std	Z+1, r10	; 0x01
    2650:	54 82       	std	Z+4, r5	; 0x04
    2652:	43 82       	std	Z+3, r4	; 0x03
    2654:	0e 94 51 f1 	call	0x1e2a2	; 0x1e2a2 <sprintf_P>
				SEND_MSG;

				uint8_t val = 0xFF;
    2658:	19 83       	std	Y+1, r17	; 0x01
				uint16_t startAddr = 0;

				if(taskInfo.portNum == USER_PORT_1)
    265a:	8b 81       	ldd	r24, Y+3	; 0x03
    265c:	0f 90       	pop	r0
    265e:	0f 90       	pop	r0
    2660:	0f 90       	pop	r0
    2662:	0f 90       	pop	r0
    2664:	81 30       	cpi	r24, 0x01	; 1
    2666:	29 f4       	brne	.+10     	; 0x2672 <Sbrd37SI+0x294>
    2668:	00 e0       	ldi	r16, 0x00	; 0
    266a:	13 e0       	ldi	r17, 0x03	; 3
    266c:	80 e0       	ldi	r24, 0x00	; 0
    266e:	93 e0       	ldi	r25, 0x03	; 3
    2670:	2f c0       	rjmp	.+94     	; 0x26d0 <Sbrd37SI+0x2f2>
					startAddr = EEPROM_PM1_START;
				if(taskInfo.portNum == USER_PORT_2)
    2672:	82 30       	cpi	r24, 0x02	; 2
    2674:	29 f4       	brne	.+10     	; 0x2680 <Sbrd37SI+0x2a2>
    2676:	00 e0       	ldi	r16, 0x00	; 0
    2678:	15 e0       	ldi	r17, 0x05	; 5
    267a:	80 e0       	ldi	r24, 0x00	; 0
    267c:	95 e0       	ldi	r25, 0x05	; 5
    267e:	28 c0       	rjmp	.+80     	; 0x26d0 <Sbrd37SI+0x2f2>
					startAddr = EEPROM_PM2_START;
				if(taskInfo.portNum == USER_PORT_3)
    2680:	83 30       	cpi	r24, 0x03	; 3
    2682:	c1 f0       	breq	.+48     	; 0x26b4 <Sbrd37SI+0x2d6>
					startAddr = EEPROM_PM3_START;

				if (startAddr == 0)
				{
					sprintf_P(dbgMsg, PSTR("No start address for EEPROM"));
    2684:	00 d0       	rcall	.+0      	; 0x2686 <Sbrd37SI+0x2a8>
    2686:	0f 92       	push	r0
    2688:	ad b7       	in	r26, 0x3d	; 61
    268a:	be b7       	in	r27, 0x3e	; 62
    268c:	12 96       	adiw	r26, 0x02	; 2
    268e:	bc 92       	st	X, r11
    2690:	ae 92       	st	-X, r10
    2692:	11 97       	sbiw	r26, 0x01	; 1
    2694:	14 96       	adiw	r26, 0x04	; 4
    2696:	7c 92       	st	X, r7
    2698:	6e 92       	st	-X, r6
    269a:	13 97       	sbiw	r26, 0x03	; 3
    269c:	0e 94 51 f1 	call	0x1e2a2	; 0x1e2a2 <sprintf_P>
					SEND_MSG;
					kill[taskInfo.portNum] = FALSE;
    26a0:	eb 81       	ldd	r30, Y+3	; 0x03
    26a2:	f0 e0       	ldi	r31, 0x00	; 0
    26a4:	ef 56       	subi	r30, 0x6F	; 111
    26a6:	fe 45       	sbci	r31, 0x5E	; 94
    26a8:	10 82       	st	Z, r1
    26aa:	0f 90       	pop	r0
    26ac:	0f 90       	pop	r0
    26ae:	0f 90       	pop	r0
    26b0:	0f 90       	pop	r0
    26b2:	d7 ce       	rjmp	.-594    	; 0x2462 <Sbrd37SI+0x84>
    26b4:	00 e0       	ldi	r16, 0x00	; 0
    26b6:	17 e0       	ldi	r17, 0x07	; 7
    26b8:	80 e0       	ldi	r24, 0x00	; 0
    26ba:	97 e0       	ldi	r25, 0x07	; 7
    26bc:	09 c0       	rjmp	.+18     	; 0x26d0 <Sbrd37SI+0x2f2>
				}
				else
				{
					// Write all F's to EEPROM
					for (uint16_t addr = startAddr; addr < startAddr + EEPROM_PM_SIZE; addr++)
						EepromWriteBlock((void*)addr, (void*)&val, 1);
    26be:	c8 01       	movw	r24, r16
    26c0:	b6 01       	movw	r22, r12
    26c2:	41 e0       	ldi	r20, 0x01	; 1
    26c4:	50 e0       	ldi	r21, 0x00	; 0
    26c6:	0e 94 f7 37 	call	0x6fee	; 0x6fee <EepromWriteBlock>
					kill[taskInfo.portNum] = FALSE;
				}
				else
				{
					// Write all F's to EEPROM
					for (uint16_t addr = startAddr; addr < startAddr + EEPROM_PM_SIZE; addr++)
    26ca:	0f 5f       	subi	r16, 0xFF	; 255
    26cc:	1f 4f       	sbci	r17, 0xFF	; 255
    26ce:	09 c0       	rjmp	.+18     	; 0x26e2 <Sbrd37SI+0x304>
    26d0:	e1 2c       	mov	r14, r1
    26d2:	62 e0       	ldi	r22, 0x02	; 2
    26d4:	f6 2e       	mov	r15, r22
    26d6:	e8 0e       	add	r14, r24
    26d8:	f9 1e       	adc	r15, r25
						EepromWriteBlock((void*)addr, (void*)&val, 1);
    26da:	6e 01       	movw	r12, r28
    26dc:	08 94       	sec
    26de:	c1 1c       	adc	r12, r1
    26e0:	d1 1c       	adc	r13, r1
					kill[taskInfo.portNum] = FALSE;
				}
				else
				{
					// Write all F's to EEPROM
					for (uint16_t addr = startAddr; addr < startAddr + EEPROM_PM_SIZE; addr++)
    26e2:	0e 15       	cp	r16, r14
    26e4:	1f 05       	cpc	r17, r15
    26e6:	58 f3       	brcs	.-42     	; 0x26be <Sbrd37SI+0x2e0>
						EepromWriteBlock((void*)addr, (void*)&val, 1);
					
					// Turn off PIB
					EnablePIBModule(taskInfo.portNum, FALSE, FALSE);
    26e8:	8b 81       	ldd	r24, Y+3	; 0x03
    26ea:	60 e0       	ldi	r22, 0x00	; 0
    26ec:	40 e0       	ldi	r20, 0x00	; 0
    26ee:	0e 94 a2 38 	call	0x7144	; 0x7144 <EnablePIBModule>
					
					memset(taskInfo.pBuf, 0, sizeof(SEABIRD_CTD_37_SI_BUFFER));
    26f2:	ee 81       	ldd	r30, Y+6	; 0x06
    26f4:	ff 81       	ldd	r31, Y+7	; 0x07
    26f6:	8c eb       	ldi	r24, 0xBC	; 188
    26f8:	96 e0       	ldi	r25, 0x06	; 6
    26fa:	df 01       	movw	r26, r30
    26fc:	9c 01       	movw	r18, r24
    26fe:	1d 92       	st	X+, r1
    2700:	21 50       	subi	r18, 0x01	; 1
    2702:	30 40       	sbci	r19, 0x00	; 0
    2704:	e1 f7       	brne	.-8      	; 0x26fe <Sbrd37SI+0x320>

					// Now end task (ie, just sleep for a really long time)
					while (1) OSTimeDlyHMSM(1,0,0,0);
    2706:	81 e0       	ldi	r24, 0x01	; 1
    2708:	60 e0       	ldi	r22, 0x00	; 0
    270a:	40 e0       	ldi	r20, 0x00	; 0
    270c:	20 e0       	ldi	r18, 0x00	; 0
    270e:	30 e0       	ldi	r19, 0x00	; 0
    2710:	0e 94 2a 2e 	call	0x5c54	; 0x5c54 <OSTimeDlyHMSM>
    2714:	f8 cf       	rjmp	.-16     	; 0x2706 <Sbrd37SI+0x328>
				}
            }				
		}
	}
	return;
}
    2716:	27 96       	adiw	r28, 0x07	; 7
    2718:	0f b6       	in	r0, 0x3f	; 63
    271a:	f8 94       	cli
    271c:	de bf       	out	0x3e, r29	; 62
    271e:	0f be       	out	0x3f, r0	; 63
    2720:	cd bf       	out	0x3d, r28	; 61
    2722:	cf 91       	pop	r28
    2724:	df 91       	pop	r29
    2726:	1f 91       	pop	r17
    2728:	0f 91       	pop	r16
    272a:	ff 90       	pop	r15
    272c:	ef 90       	pop	r14
    272e:	df 90       	pop	r13
    2730:	cf 90       	pop	r12
    2732:	bf 90       	pop	r11
    2734:	af 90       	pop	r10
    2736:	9f 90       	pop	r9
    2738:	8f 90       	pop	r8
    273a:	7f 90       	pop	r7
    273c:	6f 90       	pop	r6
    273e:	5f 90       	pop	r5
    2740:	4f 90       	pop	r4
    2742:	3f 90       	pop	r3
    2744:	2f 90       	pop	r2
    2746:	08 95       	ret

00002748 <SB37SI>:

	return SUCCESS;
}

void SB37SI(void* pParam)
{
    2748:	2f 92       	push	r2
    274a:	3f 92       	push	r3
    274c:	4f 92       	push	r4
    274e:	5f 92       	push	r5
    2750:	6f 92       	push	r6
    2752:	7f 92       	push	r7
    2754:	8f 92       	push	r8
    2756:	9f 92       	push	r9
    2758:	af 92       	push	r10
    275a:	bf 92       	push	r11
    275c:	cf 92       	push	r12
    275e:	df 92       	push	r13
    2760:	ef 92       	push	r14
    2762:	ff 92       	push	r15
    2764:	0f 93       	push	r16
    2766:	1f 93       	push	r17
    2768:	df 93       	push	r29
    276a:	cf 93       	push	r28
    276c:	cd b7       	in	r28, 0x3d	; 61
    276e:	de b7       	in	r29, 0x3e	; 62
    2770:	28 97       	sbiw	r28, 0x08	; 8
    2772:	0f b6       	in	r0, 0x3f	; 63
    2774:	f8 94       	cli
    2776:	de bf       	out	0x3e, r29	; 62
    2778:	0f be       	out	0x3f, r0	; 63
    277a:	cd bf       	out	0x3d, r28	; 61
	SEABIRD_37SI_TASK taskInfo;
	PSEABIRD_37SI_TASK pTaskInit = (PSEABIRD_37SI_TASK)pParam;
    277c:	fc 01       	movw	r30, r24
	uint8_t count = 0;
    277e:	19 82       	std	Y+1, r1	; 0x01

	memset((char*)&taskInfo, 0, sizeof(SEABIRD_37SI_TASK));
    2780:	8e 01       	movw	r16, r28
    2782:	0d 5f       	subi	r16, 0xFD	; 253
    2784:	1f 4f       	sbci	r17, 0xFF	; 255
    2786:	86 e0       	ldi	r24, 0x06	; 6
    2788:	d8 01       	movw	r26, r16
    278a:	1d 92       	st	X+, r1
    278c:	8a 95       	dec	r24
    278e:	e9 f7       	brne	.-6      	; 0x278a <SB37SI+0x42>

	taskInfo.taskID = pTaskInit->taskID;
    2790:	80 81       	ld	r24, Z
    2792:	8b 83       	std	Y+3, r24	; 0x03
	taskInfo.portNum = pTaskInit->portNum;
    2794:	81 81       	ldd	r24, Z+1	; 0x01
    2796:	8c 83       	std	Y+4, r24	; 0x04
	taskInfo.pBuf = pTaskInit->pBuf;
    2798:	84 81       	ldd	r24, Z+4	; 0x04
    279a:	95 81       	ldd	r25, Z+5	; 0x05
    279c:	98 87       	std	Y+8, r25	; 0x08
    279e:	8f 83       	std	Y+7, r24	; 0x07

	count = Seabird_37SI_Init(&taskInfo);
    27a0:	c8 01       	movw	r24, r16
    27a2:	0e 94 61 99 	call	0x132c2	; 0x132c2 <Seabird_37SI_Init>

	if(count == SUCCESS)
    27a6:	8f 3f       	cpi	r24, 0xFF	; 255
    27a8:	09 f0       	breq	.+2      	; 0x27ac <SB37SI+0x64>
    27aa:	b1 c1       	rjmp	.+866    	; 0x2b0e <SB37SI+0x3c6>
	{
		count = 0;
    27ac:	19 82       	std	Y+1, r1	; 0x01

		OSTimeDlyHMSM(0,0,2,0);
    27ae:	80 e0       	ldi	r24, 0x00	; 0
    27b0:	60 e0       	ldi	r22, 0x00	; 0
    27b2:	42 e0       	ldi	r20, 0x02	; 2
    27b4:	20 e0       	ldi	r18, 0x00	; 0
    27b6:	30 e0       	ldi	r19, 0x00	; 0
    27b8:	0e 94 2a 2e 	call	0x5c54	; 0x5c54 <OSTimeDlyHMSM>

		memset(taskInfo.pBuf->bufferTx, 0, 256);
    27bc:	20 e0       	ldi	r18, 0x00	; 0
    27be:	31 e0       	ldi	r19, 0x01	; 1
    27c0:	ef 81       	ldd	r30, Y+7	; 0x07
    27c2:	f8 85       	ldd	r31, Y+8	; 0x08
    27c4:	df 01       	movw	r26, r30
    27c6:	c9 01       	movw	r24, r18
    27c8:	1d 92       	st	X+, r1
    27ca:	01 97       	sbiw	r24, 0x01	; 1
    27cc:	e9 f7       	brne	.-6      	; 0x27c8 <SB37SI+0x80>
		memset(taskInfo.pBuf->bufferRx, 0, 256);
    27ce:	8f 81       	ldd	r24, Y+7	; 0x07
    27d0:	98 85       	ldd	r25, Y+8	; 0x08
    27d2:	80 50       	subi	r24, 0x00	; 0
    27d4:	9f 4f       	sbci	r25, 0xFF	; 255
    27d6:	dc 01       	movw	r26, r24
    27d8:	c9 01       	movw	r24, r18
    27da:	1d 92       	st	X+, r1
    27dc:	01 97       	sbiw	r24, 0x01	; 1
    27de:	e9 f7       	brne	.-6      	; 0x27da <SB37SI+0x92>

		while(1)
		{
			OSTimeDlyHMSM(0,0,0,500);

			sprintf_P(dbgMsg, PSTR("37SI for PM%d"), taskInfo.portNum);
    27e0:	83 ef       	ldi	r24, 0xF3	; 243
    27e2:	68 2e       	mov	r6, r24
    27e4:	88 e1       	ldi	r24, 0x18	; 24
    27e6:	78 2e       	mov	r7, r24

			// Check to see if we should come out of the sleep state
			if(taskInfo.pBuf->sleeping && taskInfo.pBuf->turnBackOnTime < getsecondtick())
			{
				//SB37SI_TurnOn(&taskInfo);
				SB37SI_StartSample(&taskInfo);
    27e8:	68 01       	movw	r12, r16
				taskInfo.pBuf->sleeping = FALSE;
			}

			if(taskInfo.pBuf->sampleCTD == TRUE)
			{
				OSuartGetRxFifoCount(taskInfo.portNum, &count);
    27ea:	1e 01       	movw	r2, r28
    27ec:	08 94       	sec
    27ee:	21 1c       	adc	r2, r1
    27f0:	31 1c       	adc	r3, r1
					SendDebugMsg(&(taskInfo.pBuf->dbgInfo));
#endif		//DEBUG_MESSAGES

					if (taskInfo.pBuf->reportData.headerReport.repeatCount >= taskInfo.pBuf->samplePacketSize)
					{
						taskInfo.pBuf->reportData.headerReport.payloadType = 0x00000021;		//0x00000070;
    27f2:	11 e2       	ldi	r17, 0x21	; 33
    27f4:	81 2e       	mov	r8, r17
    27f6:	91 2c       	mov	r9, r1
    27f8:	a1 2c       	mov	r10, r1
    27fa:	b1 2c       	mov	r11, r1
				}
			}

			if(consoleAvailable[taskInfo.portNum] == TRUE)
			{
				taskInfo.pBuf->responseInfo.source = consoleIn[taskInfo.taskID].cmdSrcAddress;
    27fc:	b9 e0       	ldi	r27, 0x09	; 9
    27fe:	4b 2e       	mov	r4, r27
    2800:	b1 e0       	ldi	r27, 0x01	; 1
    2802:	5b 2e       	mov	r5, r27
		memset(taskInfo.pBuf->bufferTx, 0, 256);
		memset(taskInfo.pBuf->bufferRx, 0, 256);

		while(1)
		{
			OSTimeDlyHMSM(0,0,0,500);
    2804:	80 e0       	ldi	r24, 0x00	; 0
    2806:	60 e0       	ldi	r22, 0x00	; 0
    2808:	40 e0       	ldi	r20, 0x00	; 0
    280a:	24 ef       	ldi	r18, 0xF4	; 244
    280c:	31 e0       	ldi	r19, 0x01	; 1
    280e:	0e 94 2a 2e 	call	0x5c54	; 0x5c54 <OSTimeDlyHMSM>

			sprintf_P(dbgMsg, PSTR("37SI for PM%d"), taskInfo.portNum);
    2812:	00 d0       	rcall	.+0      	; 0x2814 <SB37SI+0xcc>
    2814:	00 d0       	rcall	.+0      	; 0x2816 <SB37SI+0xce>
    2816:	ed b7       	in	r30, 0x3d	; 61
    2818:	fe b7       	in	r31, 0x3e	; 62
    281a:	31 96       	adiw	r30, 0x01	; 1
    281c:	ad b7       	in	r26, 0x3d	; 61
    281e:	be b7       	in	r27, 0x3e	; 62
    2820:	12 96       	adiw	r26, 0x02	; 2
    2822:	7c 92       	st	X, r7
    2824:	6e 92       	st	-X, r6
    2826:	11 97       	sbiw	r26, 0x01	; 1
    2828:	25 e9       	ldi	r18, 0x95	; 149
    282a:	31 e1       	ldi	r19, 0x11	; 17
    282c:	33 83       	std	Z+3, r19	; 0x03
    282e:	22 83       	std	Z+2, r18	; 0x02
    2830:	8c 81       	ldd	r24, Y+4	; 0x04
    2832:	84 83       	std	Z+4, r24	; 0x04
    2834:	15 82       	std	Z+5, r1	; 0x05
    2836:	0e 94 51 f1 	call	0x1e2a2	; 0x1e2a2 <sprintf_P>
			SEND_MSG;

			if (powerDown[taskInfo.portNum] == TRUE)
    283a:	ec 81       	ldd	r30, Y+4	; 0x04
    283c:	f0 e0       	ldi	r31, 0x00	; 0
    283e:	eb 56       	subi	r30, 0x6B	; 107
    2840:	fe 45       	sbci	r31, 0x5E	; 94
    2842:	8d b7       	in	r24, 0x3d	; 61
    2844:	9e b7       	in	r25, 0x3e	; 62
    2846:	06 96       	adiw	r24, 0x06	; 6
    2848:	0f b6       	in	r0, 0x3f	; 63
    284a:	f8 94       	cli
    284c:	9e bf       	out	0x3e, r25	; 62
    284e:	0f be       	out	0x3f, r0	; 63
    2850:	8d bf       	out	0x3d, r24	; 61
    2852:	80 81       	ld	r24, Z
    2854:	8f 3f       	cpi	r24, 0xFF	; 255
    2856:	a1 f4       	brne	.+40     	; 0x2880 <SB37SI+0x138>
			{
				sprintf_P(dbgMsg, PSTR("Power down...")); SEND_MSG;
    2858:	00 d0       	rcall	.+0      	; 0x285a <SB37SI+0x112>
    285a:	0f 92       	push	r0
    285c:	ad b7       	in	r26, 0x3d	; 61
    285e:	be b7       	in	r27, 0x3e	; 62
    2860:	12 96       	adiw	r26, 0x02	; 2
    2862:	7c 92       	st	X, r7
    2864:	6e 92       	st	-X, r6
    2866:	11 97       	sbiw	r26, 0x01	; 1
    2868:	e7 e8       	ldi	r30, 0x87	; 135
    286a:	f1 e1       	ldi	r31, 0x11	; 17
    286c:	14 96       	adiw	r26, 0x04	; 4
    286e:	fc 93       	st	X, r31
    2870:	ee 93       	st	-X, r30
    2872:	13 97       	sbiw	r26, 0x03	; 3
    2874:	0e 94 51 f1 	call	0x1e2a2	; 0x1e2a2 <sprintf_P>
    2878:	0f 90       	pop	r0
    287a:	0f 90       	pop	r0
    287c:	0f 90       	pop	r0
    287e:	0f 90       	pop	r0
			}
	
			if(serialPortPassThrough[taskInfo.portNum] == TRUE)
    2880:	8c 81       	ldd	r24, Y+4	; 0x04
    2882:	e8 2f       	mov	r30, r24
    2884:	f0 e0       	ldi	r31, 0x00	; 0
    2886:	e7 56       	subi	r30, 0x67	; 103
    2888:	fe 45       	sbci	r31, 0x5E	; 94
    288a:	10 81       	ld	r17, Z
    288c:	1f 3f       	cpi	r17, 0xFF	; 255
    288e:	b9 f4       	brne	.+46     	; 0x28be <SB37SI+0x176>
			{
				//Set Flag so the float COMM task will proceed
				serialPortPassThroughOK = TRUE;
    2890:	10 93 9d a1 	sts	0xA19D, r17
				
				EnablePIBModule(taskInfo.portNum, TRUE, FALSE);
    2894:	6f ef       	ldi	r22, 0xFF	; 255
    2896:	40 e0       	ldi	r20, 0x00	; 0
    2898:	0e 94 a2 38 	call	0x7144	; 0x7144 <EnablePIBModule>
				OSTimeDlyHMSM(0,0,0,500);
    289c:	80 e0       	ldi	r24, 0x00	; 0
    289e:	60 e0       	ldi	r22, 0x00	; 0
    28a0:	40 e0       	ldi	r20, 0x00	; 0
    28a2:	24 ef       	ldi	r18, 0xF4	; 244
    28a4:	31 e0       	ldi	r19, 0x01	; 1
    28a6:	0e 94 2a 2e 	call	0x5c54	; 0x5c54 <OSTimeDlyHMSM>
	return SUCCESS;
}

void SerialPortPassThrough37SI2(uint8_t port)
{
	readyForSerialPassThru = TRUE;
    28aa:	10 93 9e a1 	sts	0xA19E, r17

	while(1)
	{
		OSTimeDlyHMSM(1,0,0,0);
    28ae:	81 e0       	ldi	r24, 0x01	; 1
    28b0:	60 e0       	ldi	r22, 0x00	; 0
    28b2:	40 e0       	ldi	r20, 0x00	; 0
    28b4:	20 e0       	ldi	r18, 0x00	; 0
    28b6:	30 e0       	ldi	r19, 0x00	; 0
    28b8:	0e 94 2a 2e 	call	0x5c54	; 0x5c54 <OSTimeDlyHMSM>
    28bc:	f8 cf       	rjmp	.-16     	; 0x28ae <SB37SI+0x166>

				SerialPortPassThrough37SI2(taskInfo.portNum);
			}

			// Check to see if we should come out of the sleep state
			if(taskInfo.pBuf->sleeping && taskInfo.pBuf->turnBackOnTime < getsecondtick())
    28be:	ef 81       	ldd	r30, Y+7	; 0x07
    28c0:	f8 85       	ldd	r31, Y+8	; 0x08
    28c2:	e6 50       	subi	r30, 0x06	; 6
    28c4:	f8 4f       	sbci	r31, 0xF8	; 248
    28c6:	80 81       	ld	r24, Z
    28c8:	ea 5f       	subi	r30, 0xFA	; 250
    28ca:	f7 40       	sbci	r31, 0x07	; 7
    28cc:	88 23       	and	r24, r24
    28ce:	c9 f0       	breq	.+50     	; 0x2902 <SB37SI+0x1ba>
    28d0:	ea 50       	subi	r30, 0x0A	; 10
    28d2:	f8 4f       	sbci	r31, 0xF8	; 248
    28d4:	e0 80       	ld	r14, Z
    28d6:	f1 80       	ldd	r15, Z+1	; 0x01
    28d8:	02 81       	ldd	r16, Z+2	; 0x02
    28da:	13 81       	ldd	r17, Z+3	; 0x03
    28dc:	0e 94 23 34 	call	0x6846	; 0x6846 <getsecondtick>
    28e0:	e6 16       	cp	r14, r22
    28e2:	f7 06       	cpc	r15, r23
    28e4:	08 07       	cpc	r16, r24
    28e6:	19 07       	cpc	r17, r25
    28e8:	60 f4       	brcc	.+24     	; 0x2902 <SB37SI+0x1ba>
			{
				//SB37SI_TurnOn(&taskInfo);
				SB37SI_StartSample(&taskInfo);
    28ea:	c6 01       	movw	r24, r12
    28ec:	0e 94 23 94 	call	0x12846	; 0x12846 <SB37SI_StartSample>
				taskInfo.pBuf->turnBackOnTime = 0;
    28f0:	ef 81       	ldd	r30, Y+7	; 0x07
    28f2:	f8 85       	ldd	r31, Y+8	; 0x08
    28f4:	ea 50       	subi	r30, 0x0A	; 10
    28f6:	f8 4f       	sbci	r31, 0xF8	; 248
    28f8:	11 92       	st	Z+, r1
    28fa:	11 92       	st	Z+, r1
    28fc:	11 92       	st	Z+, r1
    28fe:	11 92       	st	Z+, r1
				taskInfo.pBuf->sleeping = FALSE;
    2900:	10 82       	st	Z, r1
			}

			if(taskInfo.pBuf->sampleCTD == TRUE)
    2902:	ef 81       	ldd	r30, Y+7	; 0x07
    2904:	f8 85       	ldd	r31, Y+8	; 0x08
    2906:	ea 5a       	subi	r30, 0xAA	; 170
    2908:	fa 4f       	sbci	r31, 0xFA	; 250
    290a:	10 81       	ld	r17, Z
    290c:	1f 3f       	cpi	r17, 0xFF	; 255
    290e:	09 f0       	breq	.+2      	; 0x2912 <SB37SI+0x1ca>
    2910:	7d c0       	rjmp	.+250    	; 0x2a0c <SB37SI+0x2c4>
			{
				OSuartGetRxFifoCount(taskInfo.portNum, &count);
    2912:	8c 81       	ldd	r24, Y+4	; 0x04
    2914:	b1 01       	movw	r22, r2
    2916:	0e 94 a1 31 	call	0x6342	; 0x6342 <OSuartGetRxFifoCount>
				

				if((count >= SB37SI_SAMPLE_LEN + taskInfo.pBuf->pressureBytes) && (taskInfo.pBuf->findDataFrame == FALSE))
    291a:	ef 81       	ldd	r30, Y+7	; 0x07
    291c:	f8 85       	ldd	r31, Y+8	; 0x08
    291e:	e6 5a       	subi	r30, 0xA6	; 166
    2920:	fa 4f       	sbci	r31, 0xFA	; 250
    2922:	20 81       	ld	r18, Z
    2924:	ea 55       	subi	r30, 0x5A	; 90
    2926:	f5 40       	sbci	r31, 0x05	; 5
    2928:	30 e0       	ldi	r19, 0x00	; 0
    292a:	28 5f       	subi	r18, 0xF8	; 248
    292c:	3f 4f       	sbci	r19, 0xFF	; 255
    292e:	89 81       	ldd	r24, Y+1	; 0x01
    2930:	90 e0       	ldi	r25, 0x00	; 0
    2932:	28 17       	cp	r18, r24
    2934:	39 07       	cpc	r19, r25
    2936:	0c f0       	brlt	.+2      	; 0x293a <SB37SI+0x1f2>
    2938:	51 c0       	rjmp	.+162    	; 0x29dc <SB37SI+0x294>
    293a:	e8 5a       	subi	r30, 0xA8	; 168
    293c:	fa 4f       	sbci	r31, 0xFA	; 250
    293e:	80 81       	ld	r24, Z
    2940:	88 23       	and	r24, r24
    2942:	09 f0       	breq	.+2      	; 0x2946 <SB37SI+0x1fe>
    2944:	4b c0       	rjmp	.+150    	; 0x29dc <SB37SI+0x294>
				{
					SB37SI_GetCTDSample2(&taskInfo);
    2946:	c6 01       	movw	r24, r12
    2948:	0e 94 5f 8e 	call	0x11cbe	; 0x11cbe <SB37SI_GetCTDSample2>
					taskInfo.pBuf->dbgInfo.dbgLevel = 5;

					SendDebugMsg(&(taskInfo.pBuf->dbgInfo));
#endif		//DEBUG_MESSAGES

					if (taskInfo.pBuf->reportData.headerReport.repeatCount >= taskInfo.pBuf->samplePacketSize)
    294c:	ef 81       	ldd	r30, Y+7	; 0x07
    294e:	f8 85       	ldd	r31, Y+8	; 0x08
    2950:	ed 59       	subi	r30, 0x9D	; 157
    2952:	fa 4f       	sbci	r31, 0xFA	; 250
    2954:	80 81       	ld	r24, Z
    2956:	90 e0       	ldi	r25, 0x00	; 0
    2958:	e1 56       	subi	r30, 0x61	; 97
    295a:	f0 40       	sbci	r31, 0x00	; 0
    295c:	20 81       	ld	r18, Z
    295e:	31 81       	ldd	r19, Z+1	; 0x01
    2960:	e2 50       	subi	r30, 0x02	; 2
    2962:	f5 40       	sbci	r31, 0x05	; 5
    2964:	82 17       	cp	r24, r18
    2966:	93 07       	cpc	r25, r19
    2968:	c0 f1       	brcs	.+112    	; 0x29da <SB37SI+0x292>
					{
						taskInfo.pBuf->reportData.headerReport.payloadType = 0x00000021;		//0x00000070;
    296a:	e4 5a       	subi	r30, 0xA4	; 164
    296c:	fa 4f       	sbci	r31, 0xFA	; 250
    296e:	81 92       	st	Z+, r8
    2970:	91 92       	st	Z+, r9
    2972:	a1 92       	st	Z+, r10
    2974:	b1 92       	st	Z+, r11
						taskInfo.pBuf->reportData.headerReport.boardID = mainBoardID;
    2976:	80 91 e6 03 	lds	r24, 0x03E6
    297a:	81 93       	st	Z+, r24
						taskInfo.pBuf->reportData.headerReport.taskID = taskInfo.taskID;
    297c:	8b 81       	ldd	r24, Y+3	; 0x03
    297e:	81 93       	st	Z+, r24
						taskInfo.pBuf->reportData.headerReport.dataFormat = 8;
						taskInfo.pBuf->reportData.headerReport.parser = 0;
						taskInfo.pBuf->reportData.headerReport.priority = 2;
    2980:	88 e4       	ldi	r24, 0x48	; 72
    2982:	80 83       	st	Z, r24
						
						SB37SI_CTDReportXmit2(&taskInfo);
    2984:	c6 01       	movw	r24, r12
    2986:	0e 94 c1 8d 	call	0x11b82	; 0x11b82 <SB37SI_CTDReportXmit2>

						memset(&taskInfo.pBuf->reportData, 0, sizeof(SB37SI_DATA_REPORT));
    298a:	8f 81       	ldd	r24, Y+7	; 0x07
    298c:	98 85       	ldd	r25, Y+8	; 0x08
    298e:	84 5a       	subi	r24, 0xA4	; 164
    2990:	9a 4f       	sbci	r25, 0xFA	; 250
    2992:	dc 01       	movw	r26, r24
    2994:	28 ef       	ldi	r18, 0xF8	; 248
    2996:	1d 92       	st	X+, r1
    2998:	2a 95       	dec	r18
    299a:	e9 f7       	brne	.-6      	; 0x2996 <SB37SI+0x24e>

						if(taskInfo.pBuf->offTime != 0)
    299c:	ef 81       	ldd	r30, Y+7	; 0x07
    299e:	f8 85       	ldd	r31, Y+8	; 0x08
    29a0:	ec 50       	subi	r30, 0x0C	; 12
    29a2:	f8 4f       	sbci	r31, 0xF8	; 248
    29a4:	80 81       	ld	r24, Z
    29a6:	91 81       	ldd	r25, Z+1	; 0x01
    29a8:	89 2b       	or	r24, r25
    29aa:	b9 f0       	breq	.+46     	; 0x29da <SB37SI+0x292>
						{
							SB37SI_StopSample(&taskInfo);
    29ac:	c6 01       	movw	r24, r12
    29ae:	0e 94 86 93 	call	0x1270c	; 0x1270c <SB37SI_StopSample>
							//SB37SI_TurnOff(&taskInfo);
							taskInfo.pBuf->turnBackOnTime = getsecondtick() + taskInfo.pBuf->offTime;
    29b2:	0e 94 23 34 	call	0x6846	; 0x6846 <getsecondtick>
    29b6:	ef 81       	ldd	r30, Y+7	; 0x07
    29b8:	f8 85       	ldd	r31, Y+8	; 0x08
    29ba:	ec 50       	subi	r30, 0x0C	; 12
    29bc:	f8 4f       	sbci	r31, 0xF8	; 248
    29be:	21 91       	ld	r18, Z+
    29c0:	31 91       	ld	r19, Z+
    29c2:	40 e0       	ldi	r20, 0x00	; 0
    29c4:	50 e0       	ldi	r21, 0x00	; 0
    29c6:	26 0f       	add	r18, r22
    29c8:	37 1f       	adc	r19, r23
    29ca:	48 1f       	adc	r20, r24
    29cc:	59 1f       	adc	r21, r25
    29ce:	20 83       	st	Z, r18
    29d0:	31 83       	std	Z+1, r19	; 0x01
    29d2:	42 83       	std	Z+2, r20	; 0x02
    29d4:	53 83       	std	Z+3, r21	; 0x03
							taskInfo.pBuf->sleeping = TRUE;
    29d6:	34 96       	adiw	r30, 0x04	; 4
    29d8:	10 83       	st	Z, r17
						}
					}

					count = 0;
    29da:	19 82       	std	Y+1, r1	; 0x01
				}

				if((taskInfo.pBuf->findDataFrame == TRUE) && (count >= (2 * (SB37SI_SAMPLE_LEN + taskInfo.pBuf->pressureBytes))))
    29dc:	ef 81       	ldd	r30, Y+7	; 0x07
    29de:	f8 85       	ldd	r31, Y+8	; 0x08
    29e0:	e8 5a       	subi	r30, 0xA8	; 168
    29e2:	fa 4f       	sbci	r31, 0xFA	; 250
    29e4:	80 81       	ld	r24, Z
    29e6:	e8 55       	subi	r30, 0x58	; 88
    29e8:	f5 40       	sbci	r31, 0x05	; 5
    29ea:	8f 3f       	cpi	r24, 0xFF	; 255
    29ec:	79 f4       	brne	.+30     	; 0x2a0c <SB37SI+0x2c4>
    29ee:	29 81       	ldd	r18, Y+1	; 0x01
    29f0:	30 e0       	ldi	r19, 0x00	; 0
    29f2:	e6 5a       	subi	r30, 0xA6	; 166
    29f4:	fa 4f       	sbci	r31, 0xFA	; 250
    29f6:	80 81       	ld	r24, Z
    29f8:	90 e0       	ldi	r25, 0x00	; 0
    29fa:	09 96       	adiw	r24, 0x09	; 9
    29fc:	88 0f       	add	r24, r24
    29fe:	99 1f       	adc	r25, r25
    2a00:	28 17       	cp	r18, r24
    2a02:	39 07       	cpc	r19, r25
    2a04:	1c f0       	brlt	.+6      	; 0x2a0c <SB37SI+0x2c4>
				{
					SB37SI_GetCTDSampleFrame(&taskInfo);
    2a06:	c6 01       	movw	r24, r12
    2a08:	0e 94 b5 8f 	call	0x11f6a	; 0x11f6a <SB37SI_GetCTDSampleFrame>
				}
			}

			if(consoleAvailable[taskInfo.portNum] == TRUE)
    2a0c:	ec 81       	ldd	r30, Y+4	; 0x04
    2a0e:	f0 e0       	ldi	r31, 0x00	; 0
    2a10:	e3 57       	subi	r30, 0x73	; 115
    2a12:	fe 45       	sbci	r31, 0x5E	; 94
    2a14:	80 81       	ld	r24, Z
    2a16:	8f 3f       	cpi	r24, 0xFF	; 255
    2a18:	61 f5       	brne	.+88     	; 0x2a72 <SB37SI+0x32a>
			{
				taskInfo.pBuf->responseInfo.source = consoleIn[taskInfo.taskID].cmdSrcAddress;
    2a1a:	ef 81       	ldd	r30, Y+7	; 0x07
    2a1c:	f8 85       	ldd	r31, Y+8	; 0x08
    2a1e:	8b 81       	ldd	r24, Y+3	; 0x03
    2a20:	90 e0       	ldi	r25, 0x00	; 0
    2a22:	ec 5a       	subi	r30, 0xAC	; 172
    2a24:	f9 4f       	sbci	r31, 0xF9	; 249
    2a26:	84 9d       	mul	r24, r4
    2a28:	d0 01       	movw	r26, r0
    2a2a:	85 9d       	mul	r24, r5
    2a2c:	b0 0d       	add	r27, r0
    2a2e:	94 9d       	mul	r25, r4
    2a30:	b0 0d       	add	r27, r0
    2a32:	11 24       	eor	r1, r1
    2a34:	a7 59       	subi	r26, 0x97	; 151
    2a36:	b2 46       	sbci	r27, 0x62	; 98
    2a38:	8d 91       	ld	r24, X+
    2a3a:	9c 91       	ld	r25, X
    2a3c:	11 97       	sbiw	r26, 0x01	; 1
    2a3e:	81 93       	st	Z+, r24
    2a40:	91 93       	st	Z+, r25
				taskInfo.pBuf->responseInfo.status = 0;
    2a42:	10 82       	st	Z, r1
				taskInfo.pBuf->responseInfo.length = consoleIn[taskInfo.taskID].cmdSize;
    2a44:	32 96       	adiw	r30, 0x02	; 2
    2a46:	13 96       	adiw	r26, 0x03	; 3
    2a48:	8c 91       	ld	r24, X
    2a4a:	13 97       	sbiw	r26, 0x03	; 3
    2a4c:	81 93       	st	Z+, r24
				taskInfo.pBuf->responseInfo.id = consoleIn[taskInfo.taskID].id;
    2a4e:	15 96       	adiw	r26, 0x05	; 5
    2a50:	8d 91       	ld	r24, X+
    2a52:	9d 91       	ld	r25, X+
    2a54:	0d 90       	ld	r0, X+
    2a56:	bc 91       	ld	r27, X
    2a58:	a0 2d       	mov	r26, r0
    2a5a:	80 83       	st	Z, r24
    2a5c:	91 83       	std	Z+1, r25	; 0x01
    2a5e:	a2 83       	std	Z+2, r26	; 0x02
    2a60:	b3 83       	std	Z+3, r27	; 0x03

				SB37SI_ParseConsole2(&taskInfo);
    2a62:	c6 01       	movw	r24, r12
    2a64:	0e 94 6a 98 	call	0x130d4	; 0x130d4 <SB37SI_ParseConsole2>
				consoleAvailable[taskInfo.portNum] = FALSE;
    2a68:	ec 81       	ldd	r30, Y+4	; 0x04
    2a6a:	f0 e0       	ldi	r31, 0x00	; 0
    2a6c:	e3 57       	subi	r30, 0x73	; 115
    2a6e:	fe 45       	sbci	r31, 0x5E	; 94
    2a70:	10 82       	st	Z, r1
			}
			
			// Check to see if we need to end this task and release resources
			if (kill[taskInfo.portNum] == TRUE) 
    2a72:	8c 81       	ldd	r24, Y+4	; 0x04
    2a74:	e8 2f       	mov	r30, r24
    2a76:	f0 e0       	ldi	r31, 0x00	; 0
    2a78:	ef 56       	subi	r30, 0x6F	; 111
    2a7a:	fe 45       	sbci	r31, 0x5E	; 94
    2a7c:	90 81       	ld	r25, Z
    2a7e:	9f 3f       	cpi	r25, 0xFF	; 255
    2a80:	09 f0       	breq	.+2      	; 0x2a84 <SB37SI+0x33c>
    2a82:	c0 ce       	rjmp	.-640    	; 0x2804 <SB37SI+0xbc>
			{
				//sprintf_P(dbgMsg, PSTR("Ending task...."));
				//SEND_MSG;

				uint8_t val = 0xFF;
    2a84:	9a 83       	std	Y+2, r25	; 0x02
				uint16_t startAddr = 0;

				if(taskInfo.portNum == USER_PORT_1)
    2a86:	81 30       	cpi	r24, 0x01	; 1
    2a88:	29 f4       	brne	.+10     	; 0x2a94 <SB37SI+0x34c>
    2a8a:	00 e0       	ldi	r16, 0x00	; 0
    2a8c:	13 e0       	ldi	r17, 0x03	; 3
    2a8e:	80 e0       	ldi	r24, 0x00	; 0
    2a90:	93 e0       	ldi	r25, 0x03	; 3
    2a92:	19 c0       	rjmp	.+50     	; 0x2ac6 <SB37SI+0x37e>
					startAddr = EEPROM_PM1_START;
				if(taskInfo.portNum == USER_PORT_2)
    2a94:	82 30       	cpi	r24, 0x02	; 2
    2a96:	29 f4       	brne	.+10     	; 0x2aa2 <SB37SI+0x35a>
    2a98:	00 e0       	ldi	r16, 0x00	; 0
    2a9a:	15 e0       	ldi	r17, 0x05	; 5
    2a9c:	80 e0       	ldi	r24, 0x00	; 0
    2a9e:	95 e0       	ldi	r25, 0x05	; 5
    2aa0:	12 c0       	rjmp	.+36     	; 0x2ac6 <SB37SI+0x37e>
					startAddr = EEPROM_PM2_START;
				if(taskInfo.portNum == USER_PORT_3)
    2aa2:	83 30       	cpi	r24, 0x03	; 3
    2aa4:	11 f0       	breq	.+4      	; 0x2aaa <SB37SI+0x362>

				if (startAddr == 0)
				{
					//sprintf_P(dbgMsg, PSTR("No start address for EEPROM"));
					//SEND_MSG;
					kill[taskInfo.portNum] = FALSE;
    2aa6:	10 82       	st	Z, r1
    2aa8:	ad ce       	rjmp	.-678    	; 0x2804 <SB37SI+0xbc>
    2aaa:	00 e0       	ldi	r16, 0x00	; 0
    2aac:	17 e0       	ldi	r17, 0x07	; 7
    2aae:	80 e0       	ldi	r24, 0x00	; 0
    2ab0:	97 e0       	ldi	r25, 0x07	; 7
    2ab2:	09 c0       	rjmp	.+18     	; 0x2ac6 <SB37SI+0x37e>
				}
				else
				{
					// Write all F's to EEPROM
					for (uint16_t addr = startAddr; addr < startAddr + EEPROM_PM_SIZE; addr++)
						EepromWriteBlock((void*)addr, (void*)&val, 1);
    2ab4:	c8 01       	movw	r24, r16
    2ab6:	b6 01       	movw	r22, r12
    2ab8:	41 e0       	ldi	r20, 0x01	; 1
    2aba:	50 e0       	ldi	r21, 0x00	; 0
    2abc:	0e 94 f7 37 	call	0x6fee	; 0x6fee <EepromWriteBlock>
					kill[taskInfo.portNum] = FALSE;
				}
				else
				{
					// Write all F's to EEPROM
					for (uint16_t addr = startAddr; addr < startAddr + EEPROM_PM_SIZE; addr++)
    2ac0:	0f 5f       	subi	r16, 0xFF	; 255
    2ac2:	1f 4f       	sbci	r17, 0xFF	; 255
    2ac4:	0a c0       	rjmp	.+20     	; 0x2ada <SB37SI+0x392>
    2ac6:	e1 2c       	mov	r14, r1
    2ac8:	f2 e0       	ldi	r31, 0x02	; 2
    2aca:	ff 2e       	mov	r15, r31
    2acc:	e8 0e       	add	r14, r24
    2ace:	f9 1e       	adc	r15, r25
						EepromWriteBlock((void*)addr, (void*)&val, 1);
    2ad0:	e2 e0       	ldi	r30, 0x02	; 2
    2ad2:	ce 2e       	mov	r12, r30
    2ad4:	d1 2c       	mov	r13, r1
    2ad6:	cc 0e       	add	r12, r28
    2ad8:	dd 1e       	adc	r13, r29
					kill[taskInfo.portNum] = FALSE;
				}
				else
				{
					// Write all F's to EEPROM
					for (uint16_t addr = startAddr; addr < startAddr + EEPROM_PM_SIZE; addr++)
    2ada:	0e 15       	cp	r16, r14
    2adc:	1f 05       	cpc	r17, r15
    2ade:	50 f3       	brcs	.-44     	; 0x2ab4 <SB37SI+0x36c>
						EepromWriteBlock((void*)addr, (void*)&val, 1);

					// Turn off PIB
					EnablePIBModule(taskInfo.portNum, FALSE, FALSE);
    2ae0:	8c 81       	ldd	r24, Y+4	; 0x04
    2ae2:	60 e0       	ldi	r22, 0x00	; 0
    2ae4:	40 e0       	ldi	r20, 0x00	; 0
    2ae6:	0e 94 a2 38 	call	0x7144	; 0x7144 <EnablePIBModule>

					memset(taskInfo.pBuf, 0, TASK_BUF_SIZE);
    2aea:	ef 81       	ldd	r30, Y+7	; 0x07
    2aec:	f8 85       	ldd	r31, Y+8	; 0x08
    2aee:	80 ea       	ldi	r24, 0xA0	; 160
    2af0:	9f e0       	ldi	r25, 0x0F	; 15
    2af2:	df 01       	movw	r26, r30
    2af4:	9c 01       	movw	r18, r24
    2af6:	1d 92       	st	X+, r1
    2af8:	21 50       	subi	r18, 0x01	; 1
    2afa:	30 40       	sbci	r19, 0x00	; 0
    2afc:	e1 f7       	brne	.-8      	; 0x2af6 <SB37SI+0x3ae>

					// Now end task (ie, just sleep for a really long time)
					while (1) OSTimeDlyHMSM(1,0,0,0);
    2afe:	81 e0       	ldi	r24, 0x01	; 1
    2b00:	60 e0       	ldi	r22, 0x00	; 0
    2b02:	40 e0       	ldi	r20, 0x00	; 0
    2b04:	20 e0       	ldi	r18, 0x00	; 0
    2b06:	30 e0       	ldi	r19, 0x00	; 0
    2b08:	0e 94 2a 2e 	call	0x5c54	; 0x5c54 <OSTimeDlyHMSM>
    2b0c:	f8 cf       	rjmp	.-16     	; 0x2afe <SB37SI+0x3b6>
				}
            }							
		}
	}
	return;
}
    2b0e:	28 96       	adiw	r28, 0x08	; 8
    2b10:	0f b6       	in	r0, 0x3f	; 63
    2b12:	f8 94       	cli
    2b14:	de bf       	out	0x3e, r29	; 62
    2b16:	0f be       	out	0x3f, r0	; 63
    2b18:	cd bf       	out	0x3d, r28	; 61
    2b1a:	cf 91       	pop	r28
    2b1c:	df 91       	pop	r29
    2b1e:	1f 91       	pop	r17
    2b20:	0f 91       	pop	r16
    2b22:	ff 90       	pop	r15
    2b24:	ef 90       	pop	r14
    2b26:	df 90       	pop	r13
    2b28:	cf 90       	pop	r12
    2b2a:	bf 90       	pop	r11
    2b2c:	af 90       	pop	r10
    2b2e:	9f 90       	pop	r9
    2b30:	8f 90       	pop	r8
    2b32:	7f 90       	pop	r7
    2b34:	6f 90       	pop	r6
    2b36:	5f 90       	pop	r5
    2b38:	4f 90       	pop	r4
    2b3a:	3f 90       	pop	r3
    2b3c:	2f 90       	pop	r2
    2b3e:	08 95       	ret

00002b40 <TeledyneATM88X>:
	return retval;
}


void TeledyneATM88X(void* pParam)
{
    2b40:	2f 92       	push	r2
    2b42:	3f 92       	push	r3
    2b44:	4f 92       	push	r4
    2b46:	5f 92       	push	r5
    2b48:	6f 92       	push	r6
    2b4a:	7f 92       	push	r7
    2b4c:	8f 92       	push	r8
    2b4e:	9f 92       	push	r9
    2b50:	af 92       	push	r10
    2b52:	bf 92       	push	r11
    2b54:	cf 92       	push	r12
    2b56:	df 92       	push	r13
    2b58:	ef 92       	push	r14
    2b5a:	ff 92       	push	r15
    2b5c:	0f 93       	push	r16
    2b5e:	1f 93       	push	r17
    2b60:	df 93       	push	r29
    2b62:	cf 93       	push	r28
    2b64:	cd b7       	in	r28, 0x3d	; 61
    2b66:	de b7       	in	r29, 0x3e	; 62
    2b68:	27 97       	sbiw	r28, 0x07	; 7
    2b6a:	0f b6       	in	r0, 0x3f	; 63
    2b6c:	f8 94       	cli
    2b6e:	de bf       	out	0x3e, r29	; 62
    2b70:	0f be       	out	0x3f, r0	; 63
    2b72:	cd bf       	out	0x3d, r28	; 61
	TELEDYNE_ATM_88X_TASK taskInfo;
	PTELEDYNE_ATM_88X_TASK pTaskInit = (PTELEDYNE_ATM_88X_TASK)pParam;
    2b74:	6c 01       	movw	r12, r24
	uint8_t retval = FAIL;
	uint32_t myTick = 0;


	taskInfo.taskID = pTaskInit->taskID;
    2b76:	dc 01       	movw	r26, r24
    2b78:	8c 91       	ld	r24, X
    2b7a:	8a 83       	std	Y+2, r24	; 0x02
	taskInfo.portNum = pTaskInit->portNum;
    2b7c:	11 96       	adiw	r26, 0x01	; 1
    2b7e:	8c 91       	ld	r24, X
    2b80:	11 97       	sbiw	r26, 0x01	; 1
    2b82:	8b 83       	std	Y+3, r24	; 0x03
	taskInfo.pBuf = pTaskInit->pBuf;
    2b84:	14 96       	adiw	r26, 0x04	; 4
    2b86:	8d 91       	ld	r24, X+
    2b88:	9c 91       	ld	r25, X
    2b8a:	15 97       	sbiw	r26, 0x05	; 5
    2b8c:	9f 83       	std	Y+7, r25	; 0x07
    2b8e:	8e 83       	std	Y+6, r24	; 0x06

	retval = TeledyneATM88X_Init(&taskInfo);
    2b90:	8e 01       	movw	r16, r28
    2b92:	0e 5f       	subi	r16, 0xFE	; 254
    2b94:	1f 4f       	sbci	r17, 0xFF	; 255
    2b96:	c8 01       	movw	r24, r16
    2b98:	0e 94 01 a7 	call	0x14e02	; 0x14e02 <TeledyneATM88X_Init>

	if(retval == SUCCESS)
    2b9c:	8f 3f       	cpi	r24, 0xFF	; 255
    2b9e:	09 f0       	breq	.+2      	; 0x2ba2 <TeledyneATM88X+0x62>
    2ba0:	7a c1       	rjmp	.+756    	; 0x2e96 <TeledyneATM88X+0x356>
	{
		while(1)
		{
			OSTimeDlyHMSM(0,0,0,500);

			sprintf_P(dbgMsg, PSTR("Teledyne ATM Loop for PM%d"), taskInfo.portNum);
    2ba2:	a3 ef       	ldi	r26, 0xF3	; 243
    2ba4:	aa 2e       	mov	r10, r26
    2ba6:	a8 e1       	ldi	r26, 0x18	; 24
    2ba8:	ba 2e       	mov	r11, r26
			if(taskInfo.pBuf->sampleModem == TRUE)
			{
				myTick = getsecondtick();
				if(myTick >= taskInfo.pBuf->nextSample)
				{
					TeledyneATM88X_GetModemSample(&taskInfo);
    2baa:	48 01       	movw	r8, r16
				consoleAvailable[taskInfo.portNum] = FALSE;
			}

			if (powerDown[taskInfo.portNum] == TRUE)
			{
				sprintf_P(dbgMsg, PSTR("Power down...")); SEND_MSG;
    2bac:	fd e6       	ldi	r31, 0x6D	; 109
    2bae:	2f 2e       	mov	r2, r31
    2bb0:	f3 e1       	ldi	r31, 0x13	; 19
    2bb2:	3f 2e       	mov	r3, r31
			}
			
			// Check to see if we need to end this task and release resources
			if (kill[taskInfo.portNum] == TRUE) 
			{
				sprintf_P(dbgMsg, PSTR("Ending task...."));
    2bb4:	ed e5       	ldi	r30, 0x5D	; 93
    2bb6:	4e 2e       	mov	r4, r30
    2bb8:	e3 e1       	ldi	r30, 0x13	; 19
    2bba:	5e 2e       	mov	r5, r30
				if(taskInfo.portNum == USER_PORT_3)
					startAddr = EEPROM_PM3_START;

				if (startAddr == 0)
				{
					sprintf_P(dbgMsg, PSTR("No start address for EEPROM"));
    2bbc:	71 e4       	ldi	r23, 0x41	; 65
    2bbe:	67 2e       	mov	r6, r23
    2bc0:	73 e1       	ldi	r23, 0x13	; 19
    2bc2:	77 2e       	mov	r7, r23

	if(retval == SUCCESS)
	{
		while(1)
		{
			OSTimeDlyHMSM(0,0,0,500);
    2bc4:	80 e0       	ldi	r24, 0x00	; 0
    2bc6:	60 e0       	ldi	r22, 0x00	; 0
    2bc8:	40 e0       	ldi	r20, 0x00	; 0
    2bca:	24 ef       	ldi	r18, 0xF4	; 244
    2bcc:	31 e0       	ldi	r19, 0x01	; 1
    2bce:	0e 94 2a 2e 	call	0x5c54	; 0x5c54 <OSTimeDlyHMSM>

			sprintf_P(dbgMsg, PSTR("Teledyne ATM Loop for PM%d"), taskInfo.portNum);
    2bd2:	00 d0       	rcall	.+0      	; 0x2bd4 <TeledyneATM88X+0x94>
    2bd4:	00 d0       	rcall	.+0      	; 0x2bd6 <TeledyneATM88X+0x96>
    2bd6:	ed b7       	in	r30, 0x3d	; 61
    2bd8:	fe b7       	in	r31, 0x3e	; 62
    2bda:	31 96       	adiw	r30, 0x01	; 1
    2bdc:	ad b7       	in	r26, 0x3d	; 61
    2bde:	be b7       	in	r27, 0x3e	; 62
    2be0:	12 96       	adiw	r26, 0x02	; 2
    2be2:	bc 92       	st	X, r11
    2be4:	ae 92       	st	-X, r10
    2be6:	11 97       	sbiw	r26, 0x01	; 1
    2be8:	29 e8       	ldi	r18, 0x89	; 137
    2bea:	33 e1       	ldi	r19, 0x13	; 19
    2bec:	33 83       	std	Z+3, r19	; 0x03
    2bee:	22 83       	std	Z+2, r18	; 0x02
    2bf0:	8b 81       	ldd	r24, Y+3	; 0x03
    2bf2:	84 83       	std	Z+4, r24	; 0x04
    2bf4:	15 82       	std	Z+5, r1	; 0x05
    2bf6:	0e 94 51 f1 	call	0x1e2a2	; 0x1e2a2 <sprintf_P>
			SEND_MSG;



			if(taskInfo.pBuf->sampleModem == TRUE)
    2bfa:	ee 81       	ldd	r30, Y+6	; 0x06
    2bfc:	ff 81       	ldd	r31, Y+7	; 0x07
    2bfe:	ec 5e       	subi	r30, 0xEC	; 236
    2c00:	fa 4f       	sbci	r31, 0xFA	; 250
    2c02:	8d b7       	in	r24, 0x3d	; 61
    2c04:	9e b7       	in	r25, 0x3e	; 62
    2c06:	06 96       	adiw	r24, 0x06	; 6
    2c08:	0f b6       	in	r0, 0x3f	; 63
    2c0a:	f8 94       	cli
    2c0c:	9e bf       	out	0x3e, r25	; 62
    2c0e:	0f be       	out	0x3f, r0	; 63
    2c10:	8d bf       	out	0x3d, r24	; 61
    2c12:	80 81       	ld	r24, Z
    2c14:	8f 3f       	cpi	r24, 0xFF	; 255
    2c16:	29 f5       	brne	.+74     	; 0x2c62 <TeledyneATM88X+0x122>
			{
				myTick = getsecondtick();
    2c18:	0e 94 23 34 	call	0x6846	; 0x6846 <getsecondtick>
    2c1c:	7b 01       	movw	r14, r22
    2c1e:	8c 01       	movw	r16, r24
				if(myTick >= taskInfo.pBuf->nextSample)
    2c20:	ee 81       	ldd	r30, Y+6	; 0x06
    2c22:	ff 81       	ldd	r31, Y+7	; 0x07
    2c24:	eb 5e       	subi	r30, 0xEB	; 235
    2c26:	fa 4f       	sbci	r31, 0xFA	; 250
    2c28:	80 81       	ld	r24, Z
    2c2a:	91 81       	ldd	r25, Z+1	; 0x01
    2c2c:	a2 81       	ldd	r26, Z+2	; 0x02
    2c2e:	b3 81       	ldd	r27, Z+3	; 0x03
    2c30:	e8 16       	cp	r14, r24
    2c32:	f9 06       	cpc	r15, r25
    2c34:	0a 07       	cpc	r16, r26
    2c36:	1b 07       	cpc	r17, r27
    2c38:	a0 f0       	brcs	.+40     	; 0x2c62 <TeledyneATM88X+0x122>
				{
					TeledyneATM88X_GetModemSample(&taskInfo);
    2c3a:	c4 01       	movw	r24, r8
    2c3c:	0e 94 b8 a5 	call	0x14b70	; 0x14b70 <TeledyneATM88X_GetModemSample>
					taskInfo.pBuf->nextSample = myTick + taskInfo.pBuf->sampleRate;
    2c40:	ee 81       	ldd	r30, Y+6	; 0x06
    2c42:	ff 81       	ldd	r31, Y+7	; 0x07
    2c44:	e0 50       	subi	r30, 0x00	; 0
    2c46:	fb 4f       	sbci	r31, 0xFB	; 251
    2c48:	80 81       	ld	r24, Z
    2c4a:	91 81       	ldd	r25, Z+1	; 0x01
    2c4c:	a2 81       	ldd	r26, Z+2	; 0x02
    2c4e:	b3 81       	ldd	r27, Z+3	; 0x03
    2c50:	8e 0d       	add	r24, r14
    2c52:	9f 1d       	adc	r25, r15
    2c54:	a0 1f       	adc	r26, r16
    2c56:	b1 1f       	adc	r27, r17
    2c58:	75 96       	adiw	r30, 0x15	; 21
    2c5a:	80 83       	st	Z, r24
    2c5c:	91 83       	std	Z+1, r25	; 0x01
    2c5e:	a2 83       	std	Z+2, r26	; 0x02
    2c60:	b3 83       	std	Z+3, r27	; 0x03
				}
			}

			if(fileAvailable[pTaskInit->portNum] == TRUE)
    2c62:	d6 01       	movw	r26, r12
    2c64:	11 96       	adiw	r26, 0x01	; 1
    2c66:	8c 91       	ld	r24, X
    2c68:	a8 2f       	mov	r26, r24
    2c6a:	b0 e0       	ldi	r27, 0x00	; 0
    2c6c:	fd 01       	movw	r30, r26
    2c6e:	ef 59       	subi	r30, 0x9F	; 159
    2c70:	f2 46       	sbci	r31, 0x62	; 98
    2c72:	80 81       	ld	r24, Z
    2c74:	8f 3f       	cpi	r24, 0xFF	; 255
    2c76:	11 f5       	brne	.+68     	; 0x2cbc <TeledyneATM88X+0x17c>
			{
				TeledyneATM88X_ParseFile(&taskInfo, fileAvailableID[pTaskInit->portNum]);
    2c78:	aa 0f       	add	r26, r26
    2c7a:	bb 1f       	adc	r27, r27
    2c7c:	aa 0f       	add	r26, r26
    2c7e:	bb 1f       	adc	r27, r27
    2c80:	ad 57       	subi	r26, 0x7D	; 125
    2c82:	b8 4f       	sbci	r27, 0xF8	; 248
    2c84:	4d 91       	ld	r20, X+
    2c86:	5d 91       	ld	r21, X+
    2c88:	6d 91       	ld	r22, X+
    2c8a:	7c 91       	ld	r23, X
    2c8c:	c4 01       	movw	r24, r8
    2c8e:	0e 94 b7 9f 	call	0x13f6e	; 0x13f6e <TeledyneATM88X_ParseFile>
				fileAvailableID[pTaskInit->portNum] = 0;
    2c92:	d6 01       	movw	r26, r12
    2c94:	11 96       	adiw	r26, 0x01	; 1
    2c96:	ec 91       	ld	r30, X
    2c98:	11 97       	sbiw	r26, 0x01	; 1
    2c9a:	f0 e0       	ldi	r31, 0x00	; 0
    2c9c:	ee 0f       	add	r30, r30
    2c9e:	ff 1f       	adc	r31, r31
    2ca0:	ee 0f       	add	r30, r30
    2ca2:	ff 1f       	adc	r31, r31
    2ca4:	ed 57       	subi	r30, 0x7D	; 125
    2ca6:	f8 4f       	sbci	r31, 0xF8	; 248
    2ca8:	10 82       	st	Z, r1
    2caa:	11 82       	std	Z+1, r1	; 0x01
    2cac:	12 82       	std	Z+2, r1	; 0x02
    2cae:	13 82       	std	Z+3, r1	; 0x03
				fileAvailable[pTaskInit->portNum] = FALSE;
    2cb0:	11 96       	adiw	r26, 0x01	; 1
    2cb2:	ec 91       	ld	r30, X
    2cb4:	f0 e0       	ldi	r31, 0x00	; 0
    2cb6:	ef 59       	subi	r30, 0x9F	; 159
    2cb8:	f2 46       	sbci	r31, 0x62	; 98
    2cba:	10 82       	st	Z, r1
			}				

			if(consoleAvailable[taskInfo.portNum] == TRUE)
    2cbc:	eb 81       	ldd	r30, Y+3	; 0x03
    2cbe:	f0 e0       	ldi	r31, 0x00	; 0
    2cc0:	e3 57       	subi	r30, 0x73	; 115
    2cc2:	fe 45       	sbci	r31, 0x5E	; 94
    2cc4:	80 81       	ld	r24, Z
    2cc6:	8f 3f       	cpi	r24, 0xFF	; 255
    2cc8:	f1 f5       	brne	.+124    	; 0x2d46 <TeledyneATM88X+0x206>
			{
				sprintf_P(dbgMsg, PSTR("Got something")); SEND_MSG;
    2cca:	00 d0       	rcall	.+0      	; 0x2ccc <TeledyneATM88X+0x18c>
    2ccc:	0f 92       	push	r0
    2cce:	ed b7       	in	r30, 0x3d	; 61
    2cd0:	fe b7       	in	r31, 0x3e	; 62
    2cd2:	b2 82       	std	Z+2, r11	; 0x02
    2cd4:	a1 82       	std	Z+1, r10	; 0x01
    2cd6:	2b e7       	ldi	r18, 0x7B	; 123
    2cd8:	33 e1       	ldi	r19, 0x13	; 19
    2cda:	34 83       	std	Z+4, r19	; 0x04
    2cdc:	23 83       	std	Z+3, r18	; 0x03
    2cde:	0e 94 51 f1 	call	0x1e2a2	; 0x1e2a2 <sprintf_P>
				taskInfo.pBuf->responseInfo.source = consoleIn[taskInfo.taskID].cmdSrcAddress;
    2ce2:	ee 81       	ldd	r30, Y+6	; 0x06
    2ce4:	ff 81       	ldd	r31, Y+7	; 0x07
    2ce6:	8a 81       	ldd	r24, Y+2	; 0x02
    2ce8:	90 e0       	ldi	r25, 0x00	; 0
    2cea:	ee 51       	subi	r30, 0x1E	; 30
    2cec:	fa 4f       	sbci	r31, 0xFA	; 250
    2cee:	29 e0       	ldi	r18, 0x09	; 9
    2cf0:	31 e0       	ldi	r19, 0x01	; 1
    2cf2:	82 9f       	mul	r24, r18
    2cf4:	d0 01       	movw	r26, r0
    2cf6:	83 9f       	mul	r24, r19
    2cf8:	b0 0d       	add	r27, r0
    2cfa:	92 9f       	mul	r25, r18
    2cfc:	b0 0d       	add	r27, r0
    2cfe:	11 24       	eor	r1, r1
    2d00:	a7 59       	subi	r26, 0x97	; 151
    2d02:	b2 46       	sbci	r27, 0x62	; 98
    2d04:	8d 91       	ld	r24, X+
    2d06:	9c 91       	ld	r25, X
    2d08:	11 97       	sbiw	r26, 0x01	; 1
    2d0a:	81 93       	st	Z+, r24
    2d0c:	91 93       	st	Z+, r25
				taskInfo.pBuf->responseInfo.status = 0;
    2d0e:	10 82       	st	Z, r1
				taskInfo.pBuf->responseInfo.length = consoleIn[taskInfo.taskID].cmdSize;
    2d10:	32 96       	adiw	r30, 0x02	; 2
    2d12:	13 96       	adiw	r26, 0x03	; 3
    2d14:	8c 91       	ld	r24, X
    2d16:	13 97       	sbiw	r26, 0x03	; 3
    2d18:	81 93       	st	Z+, r24
				taskInfo.pBuf->responseInfo.id = consoleIn[taskInfo.taskID].id;
    2d1a:	15 96       	adiw	r26, 0x05	; 5
    2d1c:	8d 91       	ld	r24, X+
    2d1e:	9d 91       	ld	r25, X+
    2d20:	0d 90       	ld	r0, X+
    2d22:	bc 91       	ld	r27, X
    2d24:	a0 2d       	mov	r26, r0
    2d26:	80 83       	st	Z, r24
    2d28:	91 83       	std	Z+1, r25	; 0x01
    2d2a:	a2 83       	std	Z+2, r26	; 0x02
    2d2c:	b3 83       	std	Z+3, r27	; 0x03

				TeledyneATM88X_ParseConsole(&taskInfo);
    2d2e:	0f 90       	pop	r0
    2d30:	0f 90       	pop	r0
    2d32:	0f 90       	pop	r0
    2d34:	0f 90       	pop	r0
    2d36:	c4 01       	movw	r24, r8
    2d38:	0e 94 4b a4 	call	0x14896	; 0x14896 <TeledyneATM88X_ParseConsole>
				consoleAvailable[taskInfo.portNum] = FALSE;
    2d3c:	eb 81       	ldd	r30, Y+3	; 0x03
    2d3e:	f0 e0       	ldi	r31, 0x00	; 0
    2d40:	e3 57       	subi	r30, 0x73	; 115
    2d42:	fe 45       	sbci	r31, 0x5E	; 94
    2d44:	10 82       	st	Z, r1
			}

			if (powerDown[taskInfo.portNum] == TRUE)
    2d46:	eb 81       	ldd	r30, Y+3	; 0x03
    2d48:	f0 e0       	ldi	r31, 0x00	; 0
    2d4a:	eb 56       	subi	r30, 0x6B	; 107
    2d4c:	fe 45       	sbci	r31, 0x5E	; 94
    2d4e:	80 81       	ld	r24, Z
    2d50:	8f 3f       	cpi	r24, 0xFF	; 255
    2d52:	91 f4       	brne	.+36     	; 0x2d78 <TeledyneATM88X+0x238>
			{
				sprintf_P(dbgMsg, PSTR("Power down...")); SEND_MSG;
    2d54:	00 d0       	rcall	.+0      	; 0x2d56 <TeledyneATM88X+0x216>
    2d56:	0f 92       	push	r0
    2d58:	ad b7       	in	r26, 0x3d	; 61
    2d5a:	be b7       	in	r27, 0x3e	; 62
    2d5c:	12 96       	adiw	r26, 0x02	; 2
    2d5e:	bc 92       	st	X, r11
    2d60:	ae 92       	st	-X, r10
    2d62:	11 97       	sbiw	r26, 0x01	; 1
    2d64:	14 96       	adiw	r26, 0x04	; 4
    2d66:	3c 92       	st	X, r3
    2d68:	2e 92       	st	-X, r2
    2d6a:	13 97       	sbiw	r26, 0x03	; 3
    2d6c:	0e 94 51 f1 	call	0x1e2a2	; 0x1e2a2 <sprintf_P>
    2d70:	0f 90       	pop	r0
    2d72:	0f 90       	pop	r0
    2d74:	0f 90       	pop	r0
    2d76:	0f 90       	pop	r0
			}

			if(serialPortPassThrough[taskInfo.portNum] == TRUE)
    2d78:	8b 81       	ldd	r24, Y+3	; 0x03
    2d7a:	a8 2f       	mov	r26, r24
    2d7c:	b0 e0       	ldi	r27, 0x00	; 0
    2d7e:	fd 01       	movw	r30, r26
    2d80:	e7 56       	subi	r30, 0x67	; 103
    2d82:	fe 45       	sbci	r31, 0x5E	; 94
    2d84:	10 81       	ld	r17, Z
    2d86:	1f 3f       	cpi	r17, 0xFF	; 255
    2d88:	b9 f4       	brne	.+46     	; 0x2db8 <TeledyneATM88X+0x278>
			{
				//Set Flag so the float COMM task will proceed
				serialPortPassThroughOK = TRUE;
    2d8a:	10 93 9d a1 	sts	0xA19D, r17
				
				EnablePIBModule(taskInfo.portNum, TRUE, FALSE);
    2d8e:	6f ef       	ldi	r22, 0xFF	; 255
    2d90:	40 e0       	ldi	r20, 0x00	; 0
    2d92:	0e 94 a2 38 	call	0x7144	; 0x7144 <EnablePIBModule>
				OSTimeDlyHMSM(0,0,0,500);
    2d96:	80 e0       	ldi	r24, 0x00	; 0
    2d98:	60 e0       	ldi	r22, 0x00	; 0
    2d9a:	40 e0       	ldi	r20, 0x00	; 0
    2d9c:	24 ef       	ldi	r18, 0xF4	; 244
    2d9e:	31 e0       	ldi	r19, 0x01	; 1
    2da0:	0e 94 2a 2e 	call	0x5c54	; 0x5c54 <OSTimeDlyHMSM>
	return 0;
}

void SerialPortPassThroughATM(uint8_t port)
{
	readyForSerialPassThru = TRUE;
    2da4:	10 93 9e a1 	sts	0xA19E, r17

	while(1)
	{
		OSTimeDlyHMSM(1,0,0,0);
    2da8:	81 e0       	ldi	r24, 0x01	; 1
    2daa:	60 e0       	ldi	r22, 0x00	; 0
    2dac:	40 e0       	ldi	r20, 0x00	; 0
    2dae:	20 e0       	ldi	r18, 0x00	; 0
    2db0:	30 e0       	ldi	r19, 0x00	; 0
    2db2:	0e 94 2a 2e 	call	0x5c54	; 0x5c54 <OSTimeDlyHMSM>
    2db6:	f8 cf       	rjmp	.-16     	; 0x2da8 <TeledyneATM88X+0x268>

				SerialPortPassThroughATM(taskInfo.portNum);
			}
			
			// Check to see if we need to end this task and release resources
			if (kill[taskInfo.portNum] == TRUE) 
    2db8:	af 56       	subi	r26, 0x6F	; 111
    2dba:	be 45       	sbci	r27, 0x5E	; 94
    2dbc:	1c 91       	ld	r17, X
    2dbe:	1f 3f       	cpi	r17, 0xFF	; 255
    2dc0:	09 f0       	breq	.+2      	; 0x2dc4 <TeledyneATM88X+0x284>
    2dc2:	00 cf       	rjmp	.-512    	; 0x2bc4 <TeledyneATM88X+0x84>
			{
				sprintf_P(dbgMsg, PSTR("Ending task...."));
    2dc4:	00 d0       	rcall	.+0      	; 0x2dc6 <TeledyneATM88X+0x286>
    2dc6:	0f 92       	push	r0
    2dc8:	ed b7       	in	r30, 0x3d	; 61
    2dca:	fe b7       	in	r31, 0x3e	; 62
    2dcc:	b2 82       	std	Z+2, r11	; 0x02
    2dce:	a1 82       	std	Z+1, r10	; 0x01
    2dd0:	54 82       	std	Z+4, r5	; 0x04
    2dd2:	43 82       	std	Z+3, r4	; 0x03
    2dd4:	0e 94 51 f1 	call	0x1e2a2	; 0x1e2a2 <sprintf_P>
				SEND_MSG;

				uint8_t val = 0xFF;
    2dd8:	19 83       	std	Y+1, r17	; 0x01
				uint16_t startAddr = 0;

				if(taskInfo.portNum == USER_PORT_1)
    2dda:	8b 81       	ldd	r24, Y+3	; 0x03
    2ddc:	0f 90       	pop	r0
    2dde:	0f 90       	pop	r0
    2de0:	0f 90       	pop	r0
    2de2:	0f 90       	pop	r0
    2de4:	81 30       	cpi	r24, 0x01	; 1
    2de6:	29 f4       	brne	.+10     	; 0x2df2 <TeledyneATM88X+0x2b2>
    2de8:	00 e0       	ldi	r16, 0x00	; 0
    2dea:	13 e0       	ldi	r17, 0x03	; 3
    2dec:	80 e0       	ldi	r24, 0x00	; 0
    2dee:	93 e0       	ldi	r25, 0x03	; 3
    2df0:	2f c0       	rjmp	.+94     	; 0x2e50 <TeledyneATM88X+0x310>
					startAddr = EEPROM_PM1_START;
				if(taskInfo.portNum == USER_PORT_2)
    2df2:	82 30       	cpi	r24, 0x02	; 2
    2df4:	29 f4       	brne	.+10     	; 0x2e00 <TeledyneATM88X+0x2c0>
    2df6:	00 e0       	ldi	r16, 0x00	; 0
    2df8:	15 e0       	ldi	r17, 0x05	; 5
    2dfa:	80 e0       	ldi	r24, 0x00	; 0
    2dfc:	95 e0       	ldi	r25, 0x05	; 5
    2dfe:	28 c0       	rjmp	.+80     	; 0x2e50 <TeledyneATM88X+0x310>
					startAddr = EEPROM_PM2_START;
				if(taskInfo.portNum == USER_PORT_3)
    2e00:	83 30       	cpi	r24, 0x03	; 3
    2e02:	c1 f0       	breq	.+48     	; 0x2e34 <TeledyneATM88X+0x2f4>
					startAddr = EEPROM_PM3_START;

				if (startAddr == 0)
				{
					sprintf_P(dbgMsg, PSTR("No start address for EEPROM"));
    2e04:	00 d0       	rcall	.+0      	; 0x2e06 <TeledyneATM88X+0x2c6>
    2e06:	0f 92       	push	r0
    2e08:	ad b7       	in	r26, 0x3d	; 61
    2e0a:	be b7       	in	r27, 0x3e	; 62
    2e0c:	12 96       	adiw	r26, 0x02	; 2
    2e0e:	bc 92       	st	X, r11
    2e10:	ae 92       	st	-X, r10
    2e12:	11 97       	sbiw	r26, 0x01	; 1
    2e14:	14 96       	adiw	r26, 0x04	; 4
    2e16:	7c 92       	st	X, r7
    2e18:	6e 92       	st	-X, r6
    2e1a:	13 97       	sbiw	r26, 0x03	; 3
    2e1c:	0e 94 51 f1 	call	0x1e2a2	; 0x1e2a2 <sprintf_P>
					SEND_MSG;
					kill[taskInfo.portNum] = FALSE;
    2e20:	eb 81       	ldd	r30, Y+3	; 0x03
    2e22:	f0 e0       	ldi	r31, 0x00	; 0
    2e24:	ef 56       	subi	r30, 0x6F	; 111
    2e26:	fe 45       	sbci	r31, 0x5E	; 94
    2e28:	10 82       	st	Z, r1
    2e2a:	0f 90       	pop	r0
    2e2c:	0f 90       	pop	r0
    2e2e:	0f 90       	pop	r0
    2e30:	0f 90       	pop	r0
    2e32:	c8 ce       	rjmp	.-624    	; 0x2bc4 <TeledyneATM88X+0x84>
    2e34:	00 e0       	ldi	r16, 0x00	; 0
    2e36:	17 e0       	ldi	r17, 0x07	; 7
    2e38:	80 e0       	ldi	r24, 0x00	; 0
    2e3a:	97 e0       	ldi	r25, 0x07	; 7
    2e3c:	09 c0       	rjmp	.+18     	; 0x2e50 <TeledyneATM88X+0x310>
				}
				else
				{
					// Write all F's to EEPROM
					for (uint16_t addr = startAddr; addr < startAddr + EEPROM_PM_SIZE; addr++)
						EepromWriteBlock((void*)addr, (void*)&val, 1);
    2e3e:	c8 01       	movw	r24, r16
    2e40:	b6 01       	movw	r22, r12
    2e42:	41 e0       	ldi	r20, 0x01	; 1
    2e44:	50 e0       	ldi	r21, 0x00	; 0
    2e46:	0e 94 f7 37 	call	0x6fee	; 0x6fee <EepromWriteBlock>
					kill[taskInfo.portNum] = FALSE;
				}
				else
				{
					// Write all F's to EEPROM
					for (uint16_t addr = startAddr; addr < startAddr + EEPROM_PM_SIZE; addr++)
    2e4a:	0f 5f       	subi	r16, 0xFF	; 255
    2e4c:	1f 4f       	sbci	r17, 0xFF	; 255
    2e4e:	09 c0       	rjmp	.+18     	; 0x2e62 <TeledyneATM88X+0x322>
    2e50:	e1 2c       	mov	r14, r1
    2e52:	42 e0       	ldi	r20, 0x02	; 2
    2e54:	f4 2e       	mov	r15, r20
    2e56:	e8 0e       	add	r14, r24
    2e58:	f9 1e       	adc	r15, r25
						EepromWriteBlock((void*)addr, (void*)&val, 1);
    2e5a:	6e 01       	movw	r12, r28
    2e5c:	08 94       	sec
    2e5e:	c1 1c       	adc	r12, r1
    2e60:	d1 1c       	adc	r13, r1
					kill[taskInfo.portNum] = FALSE;
				}
				else
				{
					// Write all F's to EEPROM
					for (uint16_t addr = startAddr; addr < startAddr + EEPROM_PM_SIZE; addr++)
    2e62:	0e 15       	cp	r16, r14
    2e64:	1f 05       	cpc	r17, r15
    2e66:	58 f3       	brcs	.-42     	; 0x2e3e <TeledyneATM88X+0x2fe>
						EepromWriteBlock((void*)addr, (void*)&val, 1);

					// Turn off PIB
					EnablePIBModule(taskInfo.portNum, FALSE, FALSE);
    2e68:	8b 81       	ldd	r24, Y+3	; 0x03
    2e6a:	60 e0       	ldi	r22, 0x00	; 0
    2e6c:	40 e0       	ldi	r20, 0x00	; 0
    2e6e:	0e 94 a2 38 	call	0x7144	; 0x7144 <EnablePIBModule>

					memset(taskInfo.pBuf, 0, sizeof(TELEDYNE_ATM_88X_BUFFER));
    2e72:	ee 81       	ldd	r30, Y+6	; 0x06
    2e74:	ff 81       	ldd	r31, Y+7	; 0x07
    2e76:	8b ee       	ldi	r24, 0xEB	; 235
    2e78:	96 e0       	ldi	r25, 0x06	; 6
    2e7a:	df 01       	movw	r26, r30
    2e7c:	9c 01       	movw	r18, r24
    2e7e:	1d 92       	st	X+, r1
    2e80:	21 50       	subi	r18, 0x01	; 1
    2e82:	30 40       	sbci	r19, 0x00	; 0
    2e84:	e1 f7       	brne	.-8      	; 0x2e7e <TeledyneATM88X+0x33e>

					// Now end task (ie, just sleep for a really long time)
					while (1) OSTimeDlyHMSM(1,0,0,0);
    2e86:	81 e0       	ldi	r24, 0x01	; 1
    2e88:	60 e0       	ldi	r22, 0x00	; 0
    2e8a:	40 e0       	ldi	r20, 0x00	; 0
    2e8c:	20 e0       	ldi	r18, 0x00	; 0
    2e8e:	30 e0       	ldi	r19, 0x00	; 0
    2e90:	0e 94 2a 2e 	call	0x5c54	; 0x5c54 <OSTimeDlyHMSM>
    2e94:	f8 cf       	rjmp	.-16     	; 0x2e86 <TeledyneATM88X+0x346>
				}
            }
		}
	}
	return;
}
    2e96:	27 96       	adiw	r28, 0x07	; 7
    2e98:	0f b6       	in	r0, 0x3f	; 63
    2e9a:	f8 94       	cli
    2e9c:	de bf       	out	0x3e, r29	; 62
    2e9e:	0f be       	out	0x3f, r0	; 63
    2ea0:	cd bf       	out	0x3d, r28	; 61
    2ea2:	cf 91       	pop	r28
    2ea4:	df 91       	pop	r29
    2ea6:	1f 91       	pop	r17
    2ea8:	0f 91       	pop	r16
    2eaa:	ff 90       	pop	r15
    2eac:	ef 90       	pop	r14
    2eae:	df 90       	pop	r13
    2eb0:	cf 90       	pop	r12
    2eb2:	bf 90       	pop	r11
    2eb4:	af 90       	pop	r10
    2eb6:	9f 90       	pop	r9
    2eb8:	8f 90       	pop	r8
    2eba:	7f 90       	pop	r7
    2ebc:	6f 90       	pop	r6
    2ebe:	5f 90       	pop	r5
    2ec0:	4f 90       	pop	r4
    2ec2:	3f 90       	pop	r3
    2ec4:	2f 90       	pop	r2
    2ec6:	08 95       	ret

00002ec8 <TurnerC3>:
	return retval;
}


void TurnerC3(void* pParam)
{
    2ec8:	2f 92       	push	r2
    2eca:	3f 92       	push	r3
    2ecc:	4f 92       	push	r4
    2ece:	5f 92       	push	r5
    2ed0:	6f 92       	push	r6
    2ed2:	7f 92       	push	r7
    2ed4:	8f 92       	push	r8
    2ed6:	9f 92       	push	r9
    2ed8:	af 92       	push	r10
    2eda:	bf 92       	push	r11
    2edc:	cf 92       	push	r12
    2ede:	df 92       	push	r13
    2ee0:	ef 92       	push	r14
    2ee2:	ff 92       	push	r15
    2ee4:	0f 93       	push	r16
    2ee6:	1f 93       	push	r17
    2ee8:	df 93       	push	r29
    2eea:	cf 93       	push	r28
    2eec:	cd b7       	in	r28, 0x3d	; 61
    2eee:	de b7       	in	r29, 0x3e	; 62
    2ef0:	27 97       	sbiw	r28, 0x07	; 7
    2ef2:	0f b6       	in	r0, 0x3f	; 63
    2ef4:	f8 94       	cli
    2ef6:	de bf       	out	0x3e, r29	; 62
    2ef8:	0f be       	out	0x3f, r0	; 63
    2efa:	cd bf       	out	0x3d, r28	; 61
	TURNER_C3_TASK taskInfo;
	PTURNER_C3_TASK pTaskInit = (PTURNER_C3_TASK)pParam;
    2efc:	7c 01       	movw	r14, r24
	uint8_t retval = FAIL;
	uint8_t hbCount = 0;
	taskInfo.taskID = pTaskInit->taskID;
    2efe:	dc 01       	movw	r26, r24
    2f00:	8c 91       	ld	r24, X
    2f02:	8a 83       	std	Y+2, r24	; 0x02
	taskInfo.portNum = pTaskInit->portNum;
    2f04:	11 96       	adiw	r26, 0x01	; 1
    2f06:	8c 91       	ld	r24, X
    2f08:	11 97       	sbiw	r26, 0x01	; 1
    2f0a:	8b 83       	std	Y+3, r24	; 0x03
	taskInfo.pBuf = pTaskInit->pBuf;
    2f0c:	14 96       	adiw	r26, 0x04	; 4
    2f0e:	8d 91       	ld	r24, X+
    2f10:	9c 91       	ld	r25, X
    2f12:	15 97       	sbiw	r26, 0x05	; 5
    2f14:	9f 83       	std	Y+7, r25	; 0x07
    2f16:	8e 83       	std	Y+6, r24	; 0x06

	retval = TurnerC3_Init(&taskInfo);
    2f18:	8e 01       	movw	r16, r28
    2f1a:	0e 5f       	subi	r16, 0xFE	; 254
    2f1c:	1f 4f       	sbci	r17, 0xFF	; 255
    2f1e:	c8 01       	movw	r24, r16
    2f20:	0e 94 c0 c3 	call	0x18780	; 0x18780 <TurnerC3_Init>
    2f24:	cc 24       	eor	r12, r12
	{
		while(1)
		{
			OSTimeDlyHMSM(0,0,0,500);

			sprintf_P(dbgMsg, PSTR("C3 Loop for PM%d"), taskInfo.portNum);
    2f26:	f3 ef       	ldi	r31, 0xF3	; 243
    2f28:	af 2e       	mov	r10, r31
    2f2a:	f8 e1       	ldi	r31, 0x18	; 24
    2f2c:	bf 2e       	mov	r11, r31
			SEND_MSG;

			if(taskInfo.pBuf->sampleC3 == TRUE)
			{
				TurnerC3_GetCurrentData(&taskInfo);
    2f2e:	d0 2e       	mov	r13, r16
    2f30:	01 2f       	mov	r16, r17
				fileAvailable[pTaskInit->portNum] = FALSE;
			}

			if(consoleAvailable[taskInfo.portNum] == TRUE)
			{
				sprintf_P(dbgMsg, PSTR("Got something")); SEND_MSG;
    2f32:	e3 ef       	ldi	r30, 0xF3	; 243
    2f34:	2e 2e       	mov	r2, r30
    2f36:	e9 e1       	ldi	r30, 0x19	; 25
    2f38:	3e 2e       	mov	r3, r30
				taskInfo.pBuf->responseInfo.source = consoleIn[taskInfo.taskID].cmdSrcAddress;
    2f3a:	79 e0       	ldi	r23, 0x09	; 9
    2f3c:	47 2e       	mov	r4, r23
    2f3e:	71 e0       	ldi	r23, 0x01	; 1
    2f40:	57 2e       	mov	r5, r23
			}

			// Check to see if we need to end this task and release resources
			if (kill[taskInfo.portNum] == TRUE) 
			{
				sprintf_P(dbgMsg, PSTR("Ending task...."));
    2f42:	63 ee       	ldi	r22, 0xE3	; 227
    2f44:	66 2e       	mov	r6, r22
    2f46:	69 e1       	ldi	r22, 0x19	; 25
    2f48:	76 2e       	mov	r7, r22
				if(taskInfo.portNum == USER_PORT_3)
					startAddr = EEPROM_PM3_START;

				if (startAddr == 0)
				{
					sprintf_P(dbgMsg, PSTR("No start address for EEPROM"));
    2f4a:	57 ec       	ldi	r21, 0xC7	; 199
    2f4c:	85 2e       	mov	r8, r21
    2f4e:	59 e1       	ldi	r21, 0x19	; 25
    2f50:	95 2e       	mov	r9, r21

//JGK	if(retval == SUCCESS)
	{
		while(1)
		{
			OSTimeDlyHMSM(0,0,0,500);
    2f52:	80 e0       	ldi	r24, 0x00	; 0
    2f54:	60 e0       	ldi	r22, 0x00	; 0
    2f56:	40 e0       	ldi	r20, 0x00	; 0
    2f58:	24 ef       	ldi	r18, 0xF4	; 244
    2f5a:	31 e0       	ldi	r19, 0x01	; 1
    2f5c:	0e 94 2a 2e 	call	0x5c54	; 0x5c54 <OSTimeDlyHMSM>

			sprintf_P(dbgMsg, PSTR("C3 Loop for PM%d"), taskInfo.portNum);
    2f60:	00 d0       	rcall	.+0      	; 0x2f62 <TurnerC3+0x9a>
    2f62:	00 d0       	rcall	.+0      	; 0x2f64 <TurnerC3+0x9c>
    2f64:	ed b7       	in	r30, 0x3d	; 61
    2f66:	fe b7       	in	r31, 0x3e	; 62
    2f68:	31 96       	adiw	r30, 0x01	; 1
    2f6a:	ad b7       	in	r26, 0x3d	; 61
    2f6c:	be b7       	in	r27, 0x3e	; 62
    2f6e:	12 96       	adiw	r26, 0x02	; 2
    2f70:	bc 92       	st	X, r11
    2f72:	ae 92       	st	-X, r10
    2f74:	11 97       	sbiw	r26, 0x01	; 1
    2f76:	21 e0       	ldi	r18, 0x01	; 1
    2f78:	3a e1       	ldi	r19, 0x1A	; 26
    2f7a:	33 83       	std	Z+3, r19	; 0x03
    2f7c:	22 83       	std	Z+2, r18	; 0x02
    2f7e:	8b 81       	ldd	r24, Y+3	; 0x03
    2f80:	84 83       	std	Z+4, r24	; 0x04
    2f82:	15 82       	std	Z+5, r1	; 0x05
    2f84:	0e 94 51 f1 	call	0x1e2a2	; 0x1e2a2 <sprintf_P>
			SEND_MSG;

			if(taskInfo.pBuf->sampleC3 == TRUE)
    2f88:	ee 81       	ldd	r30, Y+6	; 0x06
    2f8a:	ff 81       	ldd	r31, Y+7	; 0x07
    2f8c:	ec 5f       	subi	r30, 0xFC	; 252
    2f8e:	fa 4f       	sbci	r31, 0xFA	; 250
    2f90:	8d b7       	in	r24, 0x3d	; 61
    2f92:	9e b7       	in	r25, 0x3e	; 62
    2f94:	06 96       	adiw	r24, 0x06	; 6
    2f96:	0f b6       	in	r0, 0x3f	; 63
    2f98:	f8 94       	cli
    2f9a:	9e bf       	out	0x3e, r25	; 62
    2f9c:	0f be       	out	0x3f, r0	; 63
    2f9e:	8d bf       	out	0x3d, r24	; 61
    2fa0:	80 81       	ld	r24, Z
    2fa2:	e4 50       	subi	r30, 0x04	; 4
    2fa4:	f5 40       	sbci	r31, 0x05	; 5
    2fa6:	8f 3f       	cpi	r24, 0xFF	; 255
    2fa8:	29 f4       	brne	.+10     	; 0x2fb4 <TurnerC3+0xec>
			{
				TurnerC3_GetCurrentData(&taskInfo);
    2faa:	8d 2d       	mov	r24, r13
    2fac:	90 2f       	mov	r25, r16
    2fae:	0e 94 13 b1 	call	0x16226	; 0x16226 <TurnerC3_GetCurrentData>
    2fb2:	0e c0       	rjmp	.+28     	; 0x2fd0 <TurnerC3+0x108>
			}
			else if(taskInfo.pBuf->powerOn == TRUE)
    2fb4:	eb 5f       	subi	r30, 0xFB	; 251
    2fb6:	fa 4f       	sbci	r31, 0xFA	; 250
    2fb8:	80 81       	ld	r24, Z
    2fba:	8f 3f       	cpi	r24, 0xFF	; 255
    2fbc:	49 f4       	brne	.+18     	; 0x2fd0 <TurnerC3+0x108>
			{
				hbCount++;
    2fbe:	c3 94       	inc	r12
				if(hbCount >= 4)
    2fc0:	93 e0       	ldi	r25, 0x03	; 3
    2fc2:	9c 15       	cp	r25, r12
    2fc4:	28 f4       	brcc	.+10     	; 0x2fd0 <TurnerC3+0x108>
				{
					TurnerC3_HeartBeat(&taskInfo);
    2fc6:	8d 2d       	mov	r24, r13
    2fc8:	90 2f       	mov	r25, r16
    2fca:	0e 94 04 c3 	call	0x18608	; 0x18608 <TurnerC3_HeartBeat>
    2fce:	cc 24       	eor	r12, r12
					hbCount = 0;
				}
			}

			if(fileAvailable[pTaskInit->portNum] == TRUE)
    2fd0:	d7 01       	movw	r26, r14
    2fd2:	11 96       	adiw	r26, 0x01	; 1
    2fd4:	8c 91       	ld	r24, X
    2fd6:	a8 2f       	mov	r26, r24
    2fd8:	b0 e0       	ldi	r27, 0x00	; 0
    2fda:	fd 01       	movw	r30, r26
    2fdc:	ef 59       	subi	r30, 0x9F	; 159
    2fde:	f2 46       	sbci	r31, 0x62	; 98
    2fe0:	80 81       	ld	r24, Z
    2fe2:	8f 3f       	cpi	r24, 0xFF	; 255
    2fe4:	19 f5       	brne	.+70     	; 0x302c <TurnerC3+0x164>
			{
				TurnerC3_ParseFile(&taskInfo, fileAvailableID[pTaskInit->portNum]);
    2fe6:	aa 0f       	add	r26, r26
    2fe8:	bb 1f       	adc	r27, r27
    2fea:	aa 0f       	add	r26, r26
    2fec:	bb 1f       	adc	r27, r27
    2fee:	ad 57       	subi	r26, 0x7D	; 125
    2ff0:	b8 4f       	sbci	r27, 0xF8	; 248
    2ff2:	4d 91       	ld	r20, X+
    2ff4:	5d 91       	ld	r21, X+
    2ff6:	6d 91       	ld	r22, X+
    2ff8:	7c 91       	ld	r23, X
    2ffa:	8d 2d       	mov	r24, r13
    2ffc:	90 2f       	mov	r25, r16
    2ffe:	0e 94 80 b9 	call	0x17300	; 0x17300 <TurnerC3_ParseFile>
				fileAvailableID[pTaskInit->portNum] = 0;
    3002:	d7 01       	movw	r26, r14
    3004:	11 96       	adiw	r26, 0x01	; 1
    3006:	ec 91       	ld	r30, X
    3008:	11 97       	sbiw	r26, 0x01	; 1
    300a:	f0 e0       	ldi	r31, 0x00	; 0
    300c:	ee 0f       	add	r30, r30
    300e:	ff 1f       	adc	r31, r31
    3010:	ee 0f       	add	r30, r30
    3012:	ff 1f       	adc	r31, r31
    3014:	ed 57       	subi	r30, 0x7D	; 125
    3016:	f8 4f       	sbci	r31, 0xF8	; 248
    3018:	10 82       	st	Z, r1
    301a:	11 82       	std	Z+1, r1	; 0x01
    301c:	12 82       	std	Z+2, r1	; 0x02
    301e:	13 82       	std	Z+3, r1	; 0x03
				fileAvailable[pTaskInit->portNum] = FALSE;
    3020:	11 96       	adiw	r26, 0x01	; 1
    3022:	ec 91       	ld	r30, X
    3024:	f0 e0       	ldi	r31, 0x00	; 0
    3026:	ef 59       	subi	r30, 0x9F	; 159
    3028:	f2 46       	sbci	r31, 0x62	; 98
    302a:	10 82       	st	Z, r1
			}

			if(consoleAvailable[taskInfo.portNum] == TRUE)
    302c:	eb 81       	ldd	r30, Y+3	; 0x03
    302e:	f0 e0       	ldi	r31, 0x00	; 0
    3030:	e3 57       	subi	r30, 0x73	; 115
    3032:	fe 45       	sbci	r31, 0x5E	; 94
    3034:	80 81       	ld	r24, Z
    3036:	8f 3f       	cpi	r24, 0xFF	; 255
    3038:	d9 f5       	brne	.+118    	; 0x30b0 <TurnerC3+0x1e8>
			{
				sprintf_P(dbgMsg, PSTR("Got something")); SEND_MSG;
    303a:	00 d0       	rcall	.+0      	; 0x303c <TurnerC3+0x174>
    303c:	0f 92       	push	r0
    303e:	ed b7       	in	r30, 0x3d	; 61
    3040:	fe b7       	in	r31, 0x3e	; 62
    3042:	b2 82       	std	Z+2, r11	; 0x02
    3044:	a1 82       	std	Z+1, r10	; 0x01
    3046:	34 82       	std	Z+4, r3	; 0x04
    3048:	23 82       	std	Z+3, r2	; 0x03
    304a:	0e 94 51 f1 	call	0x1e2a2	; 0x1e2a2 <sprintf_P>
				taskInfo.pBuf->responseInfo.source = consoleIn[taskInfo.taskID].cmdSrcAddress;
    304e:	ee 81       	ldd	r30, Y+6	; 0x06
    3050:	ff 81       	ldd	r31, Y+7	; 0x07
    3052:	8a 81       	ldd	r24, Y+2	; 0x02
    3054:	90 e0       	ldi	r25, 0x00	; 0
    3056:	e3 5a       	subi	r30, 0xA3	; 163
    3058:	f8 4f       	sbci	r31, 0xF8	; 248
    305a:	84 9d       	mul	r24, r4
    305c:	d0 01       	movw	r26, r0
    305e:	85 9d       	mul	r24, r5
    3060:	b0 0d       	add	r27, r0
    3062:	94 9d       	mul	r25, r4
    3064:	b0 0d       	add	r27, r0
    3066:	11 24       	eor	r1, r1
    3068:	a7 59       	subi	r26, 0x97	; 151
    306a:	b2 46       	sbci	r27, 0x62	; 98
    306c:	8d 91       	ld	r24, X+
    306e:	9c 91       	ld	r25, X
    3070:	11 97       	sbiw	r26, 0x01	; 1
    3072:	81 93       	st	Z+, r24
    3074:	91 93       	st	Z+, r25
				taskInfo.pBuf->responseInfo.status = 0;
    3076:	10 82       	st	Z, r1
				taskInfo.pBuf->responseInfo.length = consoleIn[taskInfo.taskID].cmdSize;
    3078:	32 96       	adiw	r30, 0x02	; 2
    307a:	13 96       	adiw	r26, 0x03	; 3
    307c:	8c 91       	ld	r24, X
    307e:	13 97       	sbiw	r26, 0x03	; 3
    3080:	81 93       	st	Z+, r24
				taskInfo.pBuf->responseInfo.id = consoleIn[taskInfo.taskID].id;
    3082:	15 96       	adiw	r26, 0x05	; 5
    3084:	8d 91       	ld	r24, X+
    3086:	9d 91       	ld	r25, X+
    3088:	0d 90       	ld	r0, X+
    308a:	bc 91       	ld	r27, X
    308c:	a0 2d       	mov	r26, r0
    308e:	80 83       	st	Z, r24
    3090:	91 83       	std	Z+1, r25	; 0x01
    3092:	a2 83       	std	Z+2, r26	; 0x02
    3094:	b3 83       	std	Z+3, r27	; 0x03

				TurnerC3_ParseConsole(&taskInfo);
    3096:	0f 90       	pop	r0
    3098:	0f 90       	pop	r0
    309a:	0f 90       	pop	r0
    309c:	0f 90       	pop	r0
    309e:	8d 2d       	mov	r24, r13
    30a0:	90 2f       	mov	r25, r16
    30a2:	0e 94 97 c1 	call	0x1832e	; 0x1832e <TurnerC3_ParseConsole>
				consoleAvailable[taskInfo.portNum] = FALSE;
    30a6:	eb 81       	ldd	r30, Y+3	; 0x03
    30a8:	f0 e0       	ldi	r31, 0x00	; 0
    30aa:	e3 57       	subi	r30, 0x73	; 115
    30ac:	fe 45       	sbci	r31, 0x5E	; 94
    30ae:	10 82       	st	Z, r1
			}

			// Check to see if we need to end this task and release resources
			if (kill[taskInfo.portNum] == TRUE) 
    30b0:	eb 81       	ldd	r30, Y+3	; 0x03
    30b2:	f0 e0       	ldi	r31, 0x00	; 0
    30b4:	ef 56       	subi	r30, 0x6F	; 111
    30b6:	fe 45       	sbci	r31, 0x5E	; 94
    30b8:	10 81       	ld	r17, Z
    30ba:	1f 3f       	cpi	r17, 0xFF	; 255
    30bc:	09 f0       	breq	.+2      	; 0x30c0 <TurnerC3+0x1f8>
    30be:	49 cf       	rjmp	.-366    	; 0x2f52 <TurnerC3+0x8a>
			{
				sprintf_P(dbgMsg, PSTR("Ending task...."));
    30c0:	00 d0       	rcall	.+0      	; 0x30c2 <TurnerC3+0x1fa>
    30c2:	0f 92       	push	r0
    30c4:	ad b7       	in	r26, 0x3d	; 61
    30c6:	be b7       	in	r27, 0x3e	; 62
    30c8:	12 96       	adiw	r26, 0x02	; 2
    30ca:	bc 92       	st	X, r11
    30cc:	ae 92       	st	-X, r10
    30ce:	11 97       	sbiw	r26, 0x01	; 1
    30d0:	14 96       	adiw	r26, 0x04	; 4
    30d2:	7c 92       	st	X, r7
    30d4:	6e 92       	st	-X, r6
    30d6:	13 97       	sbiw	r26, 0x03	; 3
    30d8:	0e 94 51 f1 	call	0x1e2a2	; 0x1e2a2 <sprintf_P>
				SEND_MSG;

				uint8_t val = 0xFF;
    30dc:	19 83       	std	Y+1, r17	; 0x01
				uint16_t startAddr = 0;

				if(taskInfo.portNum == USER_PORT_1)
    30de:	8b 81       	ldd	r24, Y+3	; 0x03
    30e0:	0f 90       	pop	r0
    30e2:	0f 90       	pop	r0
    30e4:	0f 90       	pop	r0
    30e6:	0f 90       	pop	r0
    30e8:	81 30       	cpi	r24, 0x01	; 1
    30ea:	29 f4       	brne	.+10     	; 0x30f6 <TurnerC3+0x22e>
    30ec:	00 e0       	ldi	r16, 0x00	; 0
    30ee:	13 e0       	ldi	r17, 0x03	; 3
    30f0:	80 e0       	ldi	r24, 0x00	; 0
    30f2:	93 e0       	ldi	r25, 0x03	; 3
    30f4:	2b c0       	rjmp	.+86     	; 0x314c <TurnerC3+0x284>
					startAddr = EEPROM_PM1_START;
				if(taskInfo.portNum == USER_PORT_2)
    30f6:	82 30       	cpi	r24, 0x02	; 2
    30f8:	29 f4       	brne	.+10     	; 0x3104 <TurnerC3+0x23c>
    30fa:	00 e0       	ldi	r16, 0x00	; 0
    30fc:	15 e0       	ldi	r17, 0x05	; 5
    30fe:	80 e0       	ldi	r24, 0x00	; 0
    3100:	95 e0       	ldi	r25, 0x05	; 5
    3102:	24 c0       	rjmp	.+72     	; 0x314c <TurnerC3+0x284>
					startAddr = EEPROM_PM2_START;
				if(taskInfo.portNum == USER_PORT_3)
    3104:	83 30       	cpi	r24, 0x03	; 3
    3106:	a1 f0       	breq	.+40     	; 0x3130 <TurnerC3+0x268>
					startAddr = EEPROM_PM3_START;

				if (startAddr == 0)
				{
					sprintf_P(dbgMsg, PSTR("No start address for EEPROM"));
    3108:	00 d0       	rcall	.+0      	; 0x310a <TurnerC3+0x242>
    310a:	0f 92       	push	r0
    310c:	ed b7       	in	r30, 0x3d	; 61
    310e:	fe b7       	in	r31, 0x3e	; 62
    3110:	b2 82       	std	Z+2, r11	; 0x02
    3112:	a1 82       	std	Z+1, r10	; 0x01
    3114:	94 82       	std	Z+4, r9	; 0x04
    3116:	83 82       	std	Z+3, r8	; 0x03
    3118:	0e 94 51 f1 	call	0x1e2a2	; 0x1e2a2 <sprintf_P>
					SEND_MSG;
					kill[taskInfo.portNum] = FALSE;
    311c:	eb 81       	ldd	r30, Y+3	; 0x03
    311e:	f0 e0       	ldi	r31, 0x00	; 0
    3120:	ef 56       	subi	r30, 0x6F	; 111
    3122:	fe 45       	sbci	r31, 0x5E	; 94
    3124:	10 82       	st	Z, r1
    3126:	0f 90       	pop	r0
    3128:	0f 90       	pop	r0
    312a:	0f 90       	pop	r0
    312c:	0f 90       	pop	r0
    312e:	11 cf       	rjmp	.-478    	; 0x2f52 <TurnerC3+0x8a>
    3130:	00 e0       	ldi	r16, 0x00	; 0
    3132:	17 e0       	ldi	r17, 0x07	; 7
    3134:	80 e0       	ldi	r24, 0x00	; 0
    3136:	97 e0       	ldi	r25, 0x07	; 7
    3138:	09 c0       	rjmp	.+18     	; 0x314c <TurnerC3+0x284>
				}
				else
				{
					// Write all F's to EEPROM
					for (uint16_t addr = startAddr; addr < startAddr + EEPROM_PM_SIZE; addr++)
						EepromWriteBlock((void*)addr, (void*)&val, 1);
    313a:	c8 01       	movw	r24, r16
    313c:	b6 01       	movw	r22, r12
    313e:	41 e0       	ldi	r20, 0x01	; 1
    3140:	50 e0       	ldi	r21, 0x00	; 0
    3142:	0e 94 f7 37 	call	0x6fee	; 0x6fee <EepromWriteBlock>
					kill[taskInfo.portNum] = FALSE;
				}
				else
				{
					// Write all F's to EEPROM
					for (uint16_t addr = startAddr; addr < startAddr + EEPROM_PM_SIZE; addr++)
    3146:	0f 5f       	subi	r16, 0xFF	; 255
    3148:	1f 4f       	sbci	r17, 0xFF	; 255
    314a:	09 c0       	rjmp	.+18     	; 0x315e <TurnerC3+0x296>
    314c:	e1 2c       	mov	r14, r1
    314e:	22 e0       	ldi	r18, 0x02	; 2
    3150:	f2 2e       	mov	r15, r18
    3152:	e8 0e       	add	r14, r24
    3154:	f9 1e       	adc	r15, r25
						EepromWriteBlock((void*)addr, (void*)&val, 1);
    3156:	6e 01       	movw	r12, r28
    3158:	08 94       	sec
    315a:	c1 1c       	adc	r12, r1
    315c:	d1 1c       	adc	r13, r1
					kill[taskInfo.portNum] = FALSE;
				}
				else
				{
					// Write all F's to EEPROM
					for (uint16_t addr = startAddr; addr < startAddr + EEPROM_PM_SIZE; addr++)
    315e:	0e 15       	cp	r16, r14
    3160:	1f 05       	cpc	r17, r15
    3162:	58 f3       	brcs	.-42     	; 0x313a <TurnerC3+0x272>
						EepromWriteBlock((void*)addr, (void*)&val, 1);

					memset(taskInfo.pBuf, 0, TASK_BUF_SIZE);
    3164:	ee 81       	ldd	r30, Y+6	; 0x06
    3166:	ff 81       	ldd	r31, Y+7	; 0x07
    3168:	80 ea       	ldi	r24, 0xA0	; 160
    316a:	9f e0       	ldi	r25, 0x0F	; 15
    316c:	df 01       	movw	r26, r30
    316e:	9c 01       	movw	r18, r24
    3170:	1d 92       	st	X+, r1
    3172:	21 50       	subi	r18, 0x01	; 1
    3174:	30 40       	sbci	r19, 0x00	; 0
    3176:	e1 f7       	brne	.-8      	; 0x3170 <TurnerC3+0x2a8>

					// Now end task (ie, just sleep for a really long time)
					while (1) OSTimeDlyHMSM(1,0,0,0);
    3178:	81 e0       	ldi	r24, 0x01	; 1
    317a:	60 e0       	ldi	r22, 0x00	; 0
    317c:	40 e0       	ldi	r20, 0x00	; 0
    317e:	20 e0       	ldi	r18, 0x00	; 0
    3180:	30 e0       	ldi	r19, 0x00	; 0
    3182:	0e 94 2a 2e 	call	0x5c54	; 0x5c54 <OSTimeDlyHMSM>
    3186:	f8 cf       	rjmp	.-16     	; 0x3178 <TurnerC3+0x2b0>

00003188 <TurnerC3_Orig>:
	return retval;
}


void TurnerC3_Orig(void* pParam)
{
    3188:	2f 92       	push	r2
    318a:	3f 92       	push	r3
    318c:	4f 92       	push	r4
    318e:	5f 92       	push	r5
    3190:	6f 92       	push	r6
    3192:	7f 92       	push	r7
    3194:	8f 92       	push	r8
    3196:	9f 92       	push	r9
    3198:	bf 92       	push	r11
    319a:	cf 92       	push	r12
    319c:	df 92       	push	r13
    319e:	ef 92       	push	r14
    31a0:	ff 92       	push	r15
    31a2:	0f 93       	push	r16
    31a4:	1f 93       	push	r17
    31a6:	df 93       	push	r29
    31a8:	cf 93       	push	r28
    31aa:	cd b7       	in	r28, 0x3d	; 61
    31ac:	de b7       	in	r29, 0x3e	; 62
    31ae:	27 97       	sbiw	r28, 0x07	; 7
    31b0:	0f b6       	in	r0, 0x3f	; 63
    31b2:	f8 94       	cli
    31b4:	de bf       	out	0x3e, r29	; 62
    31b6:	0f be       	out	0x3f, r0	; 63
    31b8:	cd bf       	out	0x3d, r28	; 61
	TURNER_C3_ORIG_TASK taskInfo;
	PTURNER_C3_ORIG_TASK pTaskInit = (PTURNER_C3_ORIG_TASK)pParam;
    31ba:	8c 01       	movw	r16, r24
	uint8_t retval = FAIL;

	taskInfo.taskID = pTaskInit->taskID;
    31bc:	dc 01       	movw	r26, r24
    31be:	8c 91       	ld	r24, X
    31c0:	8a 83       	std	Y+2, r24	; 0x02
	taskInfo.portNum = pTaskInit->portNum;
    31c2:	11 96       	adiw	r26, 0x01	; 1
    31c4:	8c 91       	ld	r24, X
    31c6:	11 97       	sbiw	r26, 0x01	; 1
    31c8:	8b 83       	std	Y+3, r24	; 0x03
	taskInfo.pBuf = pTaskInit->pBuf;
    31ca:	14 96       	adiw	r26, 0x04	; 4
    31cc:	8d 91       	ld	r24, X+
    31ce:	9c 91       	ld	r25, X
    31d0:	15 97       	sbiw	r26, 0x05	; 5
    31d2:	9f 83       	std	Y+7, r25	; 0x07
    31d4:	8e 83       	std	Y+6, r24	; 0x06

	retval = TurnerC3_Orig_Init(&taskInfo);
    31d6:	72 e0       	ldi	r23, 0x02	; 2
    31d8:	e7 2e       	mov	r14, r23
    31da:	f1 2c       	mov	r15, r1
    31dc:	ec 0e       	add	r14, r28
    31de:	fd 1e       	adc	r15, r29
    31e0:	c7 01       	movw	r24, r14
    31e2:	0e 94 3d d0 	call	0x1a07a	; 0x1a07a <TurnerC3_Orig_Init>

	if(retval == SUCCESS)
    31e6:	8f 3f       	cpi	r24, 0xFF	; 255
    31e8:	09 f0       	breq	.+2      	; 0x31ec <TurnerC3_Orig+0x64>
    31ea:	88 c1       	rjmp	.+784    	; 0x34fc <TurnerC3_Orig+0x374>
	{
		while(1)
		{
			OSTimeDlyHMSM(0,0,0,500);

			sprintf_P(dbgMsg, PSTR("C3 Orig Loop for PM%d"), taskInfo.portNum);
    31ec:	63 ef       	ldi	r22, 0xF3	; 243
    31ee:	c6 2e       	mov	r12, r22
    31f0:	68 e1       	ldi	r22, 0x18	; 24
    31f2:	d6 2e       	mov	r13, r22
			SEND_MSG;

			if(taskInfo.pBuf->sampleC3 == TRUE)
			{
				TurnerC3_Orig_GetDataSample(&taskInfo);
    31f4:	c7 01       	movw	r24, r14
    31f6:	be 2c       	mov	r11, r14
    31f8:	e9 2e       	mov	r14, r25
				fileAvailable[taskInfo.portNum] = FALSE;
			}

			if (powerDown[taskInfo.portNum] == TRUE)
			{
				sprintf_P(dbgMsg, PSTR("Power down...")); SEND_MSG;
    31fa:	5a e1       	ldi	r21, 0x1A	; 26
    31fc:	25 2e       	mov	r2, r21
    31fe:	5b e1       	ldi	r21, 0x1B	; 27
    3200:	35 2e       	mov	r3, r21
			}


			if(consoleAvailable[taskInfo.portNum] == TRUE)
			{
				taskInfo.pBuf->responseInfo.source = consoleIn[taskInfo.taskID].cmdSrcAddress;
    3202:	49 e0       	ldi	r20, 0x09	; 9
    3204:	44 2e       	mov	r4, r20
    3206:	41 e0       	ldi	r20, 0x01	; 1
    3208:	54 2e       	mov	r5, r20
			}

			// Check to see if we need to end this task and release resources
			if (kill[taskInfo.portNum] == TRUE) 
			{
				sprintf_P(dbgMsg, PSTR("Ending task...."));
    320a:	3a e0       	ldi	r19, 0x0A	; 10
    320c:	63 2e       	mov	r6, r19
    320e:	3b e1       	ldi	r19, 0x1B	; 27
    3210:	73 2e       	mov	r7, r19
				if(taskInfo.portNum == USER_PORT_3)
					startAddr = EEPROM_PM3_START;

				if (startAddr == 0)
				{
					sprintf_P(dbgMsg, PSTR("No start address for EEPROM"));
    3212:	2e ee       	ldi	r18, 0xEE	; 238
    3214:	82 2e       	mov	r8, r18
    3216:	2a e1       	ldi	r18, 0x1A	; 26
    3218:	92 2e       	mov	r9, r18

	if(retval == SUCCESS)
	{
		while(1)
		{
			OSTimeDlyHMSM(0,0,0,500);
    321a:	80 e0       	ldi	r24, 0x00	; 0
    321c:	60 e0       	ldi	r22, 0x00	; 0
    321e:	40 e0       	ldi	r20, 0x00	; 0
    3220:	24 ef       	ldi	r18, 0xF4	; 244
    3222:	31 e0       	ldi	r19, 0x01	; 1
    3224:	0e 94 2a 2e 	call	0x5c54	; 0x5c54 <OSTimeDlyHMSM>

			sprintf_P(dbgMsg, PSTR("C3 Orig Loop for PM%d"), taskInfo.portNum);
    3228:	00 d0       	rcall	.+0      	; 0x322a <TurnerC3_Orig+0xa2>
    322a:	00 d0       	rcall	.+0      	; 0x322c <TurnerC3_Orig+0xa4>
    322c:	ed b7       	in	r30, 0x3d	; 61
    322e:	fe b7       	in	r31, 0x3e	; 62
    3230:	31 96       	adiw	r30, 0x01	; 1
    3232:	ad b7       	in	r26, 0x3d	; 61
    3234:	be b7       	in	r27, 0x3e	; 62
    3236:	12 96       	adiw	r26, 0x02	; 2
    3238:	dc 92       	st	X, r13
    323a:	ce 92       	st	-X, r12
    323c:	11 97       	sbiw	r26, 0x01	; 1
    323e:	28 e2       	ldi	r18, 0x28	; 40
    3240:	3b e1       	ldi	r19, 0x1B	; 27
    3242:	33 83       	std	Z+3, r19	; 0x03
    3244:	22 83       	std	Z+2, r18	; 0x02
    3246:	8b 81       	ldd	r24, Y+3	; 0x03
    3248:	84 83       	std	Z+4, r24	; 0x04
    324a:	15 82       	std	Z+5, r1	; 0x05
    324c:	0e 94 51 f1 	call	0x1e2a2	; 0x1e2a2 <sprintf_P>
			SEND_MSG;

			if(taskInfo.pBuf->sampleC3 == TRUE)
    3250:	ee 81       	ldd	r30, Y+6	; 0x06
    3252:	ff 81       	ldd	r31, Y+7	; 0x07
    3254:	ec 5f       	subi	r30, 0xFC	; 252
    3256:	fa 4f       	sbci	r31, 0xFA	; 250
    3258:	8d b7       	in	r24, 0x3d	; 61
    325a:	9e b7       	in	r25, 0x3e	; 62
    325c:	06 96       	adiw	r24, 0x06	; 6
    325e:	0f b6       	in	r0, 0x3f	; 63
    3260:	f8 94       	cli
    3262:	9e bf       	out	0x3e, r25	; 62
    3264:	0f be       	out	0x3f, r0	; 63
    3266:	8d bf       	out	0x3d, r24	; 61
    3268:	80 81       	ld	r24, Z
    326a:	8f 3f       	cpi	r24, 0xFF	; 255
    326c:	21 f4       	brne	.+8      	; 0x3276 <TurnerC3_Orig+0xee>
			{
				TurnerC3_Orig_GetDataSample(&taskInfo);
    326e:	8b 2d       	mov	r24, r11
    3270:	9e 2d       	mov	r25, r14
    3272:	0e 94 af cc 	call	0x1995e	; 0x1995e <TurnerC3_Orig_GetDataSample>
			}

			if(fileAvailable[taskInfo.portNum] == TRUE)
    3276:	eb 81       	ldd	r30, Y+3	; 0x03
    3278:	f0 e0       	ldi	r31, 0x00	; 0
    327a:	ef 59       	subi	r30, 0x9F	; 159
    327c:	f2 46       	sbci	r31, 0x62	; 98
    327e:	80 81       	ld	r24, Z
    3280:	8f 3f       	cpi	r24, 0xFF	; 255
    3282:	11 f5       	brne	.+68     	; 0x32c8 <TurnerC3_Orig+0x140>
			{
				TurnerC3_Orig_ParseFile(&taskInfo, fileAvailableID[pTaskInit->portNum]);
    3284:	d8 01       	movw	r26, r16
    3286:	11 96       	adiw	r26, 0x01	; 1
    3288:	ec 91       	ld	r30, X
    328a:	f0 e0       	ldi	r31, 0x00	; 0
    328c:	ee 0f       	add	r30, r30
    328e:	ff 1f       	adc	r31, r31
    3290:	ee 0f       	add	r30, r30
    3292:	ff 1f       	adc	r31, r31
    3294:	ed 57       	subi	r30, 0x7D	; 125
    3296:	f8 4f       	sbci	r31, 0xF8	; 248
    3298:	40 81       	ld	r20, Z
    329a:	51 81       	ldd	r21, Z+1	; 0x01
    329c:	62 81       	ldd	r22, Z+2	; 0x02
    329e:	73 81       	ldd	r23, Z+3	; 0x03
    32a0:	8b 2d       	mov	r24, r11
    32a2:	9e 2d       	mov	r25, r14
    32a4:	0e 94 d4 c7 	call	0x18fa8	; 0x18fa8 <TurnerC3_Orig_ParseFile>
				fileAvailableID[taskInfo.portNum] = 0;
    32a8:	ab 81       	ldd	r26, Y+3	; 0x03
    32aa:	b0 e0       	ldi	r27, 0x00	; 0
    32ac:	fd 01       	movw	r30, r26
    32ae:	ee 0f       	add	r30, r30
    32b0:	ff 1f       	adc	r31, r31
    32b2:	ee 0f       	add	r30, r30
    32b4:	ff 1f       	adc	r31, r31
    32b6:	ed 57       	subi	r30, 0x7D	; 125
    32b8:	f8 4f       	sbci	r31, 0xF8	; 248
    32ba:	10 82       	st	Z, r1
    32bc:	11 82       	std	Z+1, r1	; 0x01
    32be:	12 82       	std	Z+2, r1	; 0x02
    32c0:	13 82       	std	Z+3, r1	; 0x03
				fileAvailable[taskInfo.portNum] = FALSE;
    32c2:	af 59       	subi	r26, 0x9F	; 159
    32c4:	b2 46       	sbci	r27, 0x62	; 98
    32c6:	1c 92       	st	X, r1
			}

			if (powerDown[taskInfo.portNum] == TRUE)
    32c8:	eb 81       	ldd	r30, Y+3	; 0x03
    32ca:	f0 e0       	ldi	r31, 0x00	; 0
    32cc:	eb 56       	subi	r30, 0x6B	; 107
    32ce:	fe 45       	sbci	r31, 0x5E	; 94
    32d0:	80 81       	ld	r24, Z
    32d2:	8f 3f       	cpi	r24, 0xFF	; 255
    32d4:	71 f4       	brne	.+28     	; 0x32f2 <TurnerC3_Orig+0x16a>
			{
				sprintf_P(dbgMsg, PSTR("Power down...")); SEND_MSG;
    32d6:	00 d0       	rcall	.+0      	; 0x32d8 <TurnerC3_Orig+0x150>
    32d8:	0f 92       	push	r0
    32da:	ed b7       	in	r30, 0x3d	; 61
    32dc:	fe b7       	in	r31, 0x3e	; 62
    32de:	d2 82       	std	Z+2, r13	; 0x02
    32e0:	c1 82       	std	Z+1, r12	; 0x01
    32e2:	34 82       	std	Z+4, r3	; 0x04
    32e4:	23 82       	std	Z+3, r2	; 0x03
    32e6:	0e 94 51 f1 	call	0x1e2a2	; 0x1e2a2 <sprintf_P>
    32ea:	0f 90       	pop	r0
    32ec:	0f 90       	pop	r0
    32ee:	0f 90       	pop	r0
    32f0:	0f 90       	pop	r0
			}
			
			if(serialPortPassThrough[taskInfo.portNum] == TRUE)
    32f2:	8b 81       	ldd	r24, Y+3	; 0x03
    32f4:	a8 2f       	mov	r26, r24
    32f6:	b0 e0       	ldi	r27, 0x00	; 0
    32f8:	fd 01       	movw	r30, r26
    32fa:	e7 56       	subi	r30, 0x67	; 103
    32fc:	fe 45       	sbci	r31, 0x5E	; 94
    32fe:	e0 81       	ld	r30, Z
    3300:	ef 3f       	cpi	r30, 0xFF	; 255
    3302:	09 f0       	breq	.+2      	; 0x3306 <TurnerC3_Orig+0x17e>
    3304:	5c c0       	rjmp	.+184    	; 0x33be <TurnerC3_Orig+0x236>
			{
				//Set Flag so the float COMM task will proceed
				serialPortPassThroughOK = TRUE;
    3306:	e0 93 9d a1 	sts	0xA19D, r30

				//Reset to new Comm Params on Serial Port
				OSuartUpdatePort(taskInfo.portNum, 57600, UART_MODE_EIGHT_DATA_BITS, UART_MODE_ONE_STOP_BIT, UART_MODE_NO_PARITY);
    330a:	40 e0       	ldi	r20, 0x00	; 0
    330c:	51 ee       	ldi	r21, 0xE1	; 225
    330e:	60 e0       	ldi	r22, 0x00	; 0
    3310:	70 e0       	ldi	r23, 0x00	; 0
    3312:	26 e0       	ldi	r18, 0x06	; 6
    3314:	00 e0       	ldi	r16, 0x00	; 0
    3316:	ee 24       	eor	r14, r14
    3318:	0e 94 ee 2f 	call	0x5fdc	; 0x5fdc <OSuartUpdatePort>

				//Delay 15 seconds to spawn CSoft App on PC
				OSTimeDlyHMSM(0,0,15,0);
    331c:	80 e0       	ldi	r24, 0x00	; 0
    331e:	60 e0       	ldi	r22, 0x00	; 0
    3320:	4f e0       	ldi	r20, 0x0F	; 15
    3322:	20 e0       	ldi	r18, 0x00	; 0
    3324:	30 e0       	ldi	r19, 0x00	; 0
    3326:	0e 94 2a 2e 	call	0x5c54	; 0x5c54 <OSTimeDlyHMSM>

				//Power On C3 Personality
				//Toggle DTR Line to put C3 in proper mode

				switch(taskInfo.portNum)
    332a:	9b 81       	ldd	r25, Y+3	; 0x03
    332c:	92 30       	cpi	r25, 0x02	; 2
    332e:	79 f0       	breq	.+30     	; 0x334e <TurnerC3_Orig+0x1c6>
    3330:	93 30       	cpi	r25, 0x03	; 3
    3332:	c1 f0       	breq	.+48     	; 0x3364 <TurnerC3_Orig+0x1dc>
    3334:	91 30       	cpi	r25, 0x01	; 1
    3336:	c1 f4       	brne	.+48     	; 0x3368 <TurnerC3_Orig+0x1e0>
				{
					case 1:
						BSET(DDRK, _BV(PK2));
    3338:	80 91 07 01 	lds	r24, 0x0107
    333c:	84 60       	ori	r24, 0x04	; 4
    333e:	80 93 07 01 	sts	0x0107, r24
						BSET(PORTK, _BV(PK2));
    3342:	80 91 08 01 	lds	r24, 0x0108
    3346:	84 60       	ori	r24, 0x04	; 4
    3348:	80 93 08 01 	sts	0x0108, r24
    334c:	0d c0       	rjmp	.+26     	; 0x3368 <TurnerC3_Orig+0x1e0>
						break;
					case 2:
						BSET(DDRH, _BV(PH6));
    334e:	80 91 01 01 	lds	r24, 0x0101
    3352:	80 64       	ori	r24, 0x40	; 64
    3354:	80 93 01 01 	sts	0x0101, r24
						BSET(PORTH, _BV(PH6));
    3358:	80 91 02 01 	lds	r24, 0x0102
    335c:	80 64       	ori	r24, 0x40	; 64
    335e:	80 93 02 01 	sts	0x0102, r24
    3362:	02 c0       	rjmp	.+4      	; 0x3368 <TurnerC3_Orig+0x1e0>
						break;
					case 3:
						BSET(DDRF, _BV(PF2));
    3364:	82 9a       	sbi	0x10, 2	; 16
						BSET(PORTF, _BV(PF2));
    3366:	8a 9a       	sbi	0x11, 2	; 17
						break;
				}

				EnablePIBModule(taskInfo.portNum, TRUE, FALSE);
    3368:	89 2f       	mov	r24, r25
    336a:	6f ef       	ldi	r22, 0xFF	; 255
    336c:	40 e0       	ldi	r20, 0x00	; 0
    336e:	0e 94 a2 38 	call	0x7144	; 0x7144 <EnablePIBModule>
				OSTimeDlyHMSM(0,0,0,500);
    3372:	80 e0       	ldi	r24, 0x00	; 0
    3374:	60 e0       	ldi	r22, 0x00	; 0
    3376:	40 e0       	ldi	r20, 0x00	; 0
    3378:	24 ef       	ldi	r18, 0xF4	; 244
    337a:	31 e0       	ldi	r19, 0x01	; 1
    337c:	0e 94 2a 2e 	call	0x5c54	; 0x5c54 <OSTimeDlyHMSM>

				switch(taskInfo.portNum)
    3380:	8b 81       	ldd	r24, Y+3	; 0x03
    3382:	82 30       	cpi	r24, 0x02	; 2
    3384:	51 f0       	breq	.+20     	; 0x339a <TurnerC3_Orig+0x212>
    3386:	83 30       	cpi	r24, 0x03	; 3
    3388:	71 f0       	breq	.+28     	; 0x33a6 <TurnerC3_Orig+0x21e>
    338a:	81 30       	cpi	r24, 0x01	; 1
    338c:	69 f4       	brne	.+26     	; 0x33a8 <TurnerC3_Orig+0x220>
				{
					case 1:
						BCLR(PORTK, _BV(PK2));
    338e:	80 91 08 01 	lds	r24, 0x0108
    3392:	8b 7f       	andi	r24, 0xFB	; 251
    3394:	80 93 08 01 	sts	0x0108, r24
    3398:	07 c0       	rjmp	.+14     	; 0x33a8 <TurnerC3_Orig+0x220>
						break;
					case 2:
						BCLR(PORTH, _BV(PH6));
    339a:	80 91 02 01 	lds	r24, 0x0102
    339e:	8f 7b       	andi	r24, 0xBF	; 191
    33a0:	80 93 02 01 	sts	0x0102, r24
    33a4:	01 c0       	rjmp	.+2      	; 0x33a8 <TurnerC3_Orig+0x220>
						break;
					case 3:
						BCLR(PORTF, _BV(PF2));
    33a6:	8a 98       	cbi	0x11, 2	; 17
	return retval;
}

void SerialPortPassThroughC3(uint8_t port)
{
	readyForSerialPassThru = TRUE;
    33a8:	8f ef       	ldi	r24, 0xFF	; 255
    33aa:	80 93 9e a1 	sts	0xA19E, r24

	while(1)
	{
		OSTimeDlyHMSM(1,0,0,0);
    33ae:	81 e0       	ldi	r24, 0x01	; 1
    33b0:	60 e0       	ldi	r22, 0x00	; 0
    33b2:	40 e0       	ldi	r20, 0x00	; 0
    33b4:	20 e0       	ldi	r18, 0x00	; 0
    33b6:	30 e0       	ldi	r19, 0x00	; 0
    33b8:	0e 94 2a 2e 	call	0x5c54	; 0x5c54 <OSTimeDlyHMSM>
    33bc:	f8 cf       	rjmp	.-16     	; 0x33ae <TurnerC3_Orig+0x226>

				SerialPortPassThroughC3(taskInfo.portNum);
			}


			if(consoleAvailable[taskInfo.portNum] == TRUE)
    33be:	a3 57       	subi	r26, 0x73	; 115
    33c0:	be 45       	sbci	r27, 0x5E	; 94
    33c2:	8c 91       	ld	r24, X
    33c4:	8f 3f       	cpi	r24, 0xFF	; 255
    33c6:	69 f5       	brne	.+90     	; 0x3422 <TurnerC3_Orig+0x29a>
			{
				taskInfo.pBuf->responseInfo.source = consoleIn[taskInfo.taskID].cmdSrcAddress;
    33c8:	ee 81       	ldd	r30, Y+6	; 0x06
    33ca:	ff 81       	ldd	r31, Y+7	; 0x07
    33cc:	8a 81       	ldd	r24, Y+2	; 0x02
    33ce:	90 e0       	ldi	r25, 0x00	; 0
    33d0:	e4 5f       	subi	r30, 0xF4	; 244
    33d2:	f8 4f       	sbci	r31, 0xF8	; 248
    33d4:	84 9d       	mul	r24, r4
    33d6:	d0 01       	movw	r26, r0
    33d8:	85 9d       	mul	r24, r5
    33da:	b0 0d       	add	r27, r0
    33dc:	94 9d       	mul	r25, r4
    33de:	b0 0d       	add	r27, r0
    33e0:	11 24       	eor	r1, r1
    33e2:	a7 59       	subi	r26, 0x97	; 151
    33e4:	b2 46       	sbci	r27, 0x62	; 98
    33e6:	8d 91       	ld	r24, X+
    33e8:	9c 91       	ld	r25, X
    33ea:	11 97       	sbiw	r26, 0x01	; 1
    33ec:	81 93       	st	Z+, r24
    33ee:	91 93       	st	Z+, r25
				taskInfo.pBuf->responseInfo.status = 0;
    33f0:	10 82       	st	Z, r1
				taskInfo.pBuf->responseInfo.length = consoleIn[taskInfo.taskID].cmdSize;
    33f2:	32 96       	adiw	r30, 0x02	; 2
    33f4:	13 96       	adiw	r26, 0x03	; 3
    33f6:	8c 91       	ld	r24, X
    33f8:	13 97       	sbiw	r26, 0x03	; 3
    33fa:	81 93       	st	Z+, r24
				taskInfo.pBuf->responseInfo.id = consoleIn[taskInfo.taskID].id;
    33fc:	15 96       	adiw	r26, 0x05	; 5
    33fe:	8d 91       	ld	r24, X+
    3400:	9d 91       	ld	r25, X+
    3402:	0d 90       	ld	r0, X+
    3404:	bc 91       	ld	r27, X
    3406:	a0 2d       	mov	r26, r0
    3408:	80 83       	st	Z, r24
    340a:	91 83       	std	Z+1, r25	; 0x01
    340c:	a2 83       	std	Z+2, r26	; 0x02
    340e:	b3 83       	std	Z+3, r27	; 0x03

				TurnerC3_Orig_ParseConsole(&taskInfo);
    3410:	8b 2d       	mov	r24, r11
    3412:	9e 2d       	mov	r25, r14
    3414:	0e 94 42 cb 	call	0x19684	; 0x19684 <TurnerC3_Orig_ParseConsole>
				consoleAvailable[taskInfo.portNum] = FALSE;
    3418:	eb 81       	ldd	r30, Y+3	; 0x03
    341a:	f0 e0       	ldi	r31, 0x00	; 0
    341c:	e3 57       	subi	r30, 0x73	; 115
    341e:	fe 45       	sbci	r31, 0x5E	; 94
    3420:	10 82       	st	Z, r1
			}

			// Check to see if we need to end this task and release resources
			if (kill[taskInfo.portNum] == TRUE) 
    3422:	eb 81       	ldd	r30, Y+3	; 0x03
    3424:	f0 e0       	ldi	r31, 0x00	; 0
    3426:	ef 56       	subi	r30, 0x6F	; 111
    3428:	fe 45       	sbci	r31, 0x5E	; 94
    342a:	f0 80       	ld	r15, Z
    342c:	ff ef       	ldi	r31, 0xFF	; 255
    342e:	ff 16       	cp	r15, r31
    3430:	09 f0       	breq	.+2      	; 0x3434 <TurnerC3_Orig+0x2ac>
    3432:	f3 ce       	rjmp	.-538    	; 0x321a <TurnerC3_Orig+0x92>
			{
				sprintf_P(dbgMsg, PSTR("Ending task...."));
    3434:	00 d0       	rcall	.+0      	; 0x3436 <TurnerC3_Orig+0x2ae>
    3436:	0f 92       	push	r0
    3438:	ad b7       	in	r26, 0x3d	; 61
    343a:	be b7       	in	r27, 0x3e	; 62
    343c:	12 96       	adiw	r26, 0x02	; 2
    343e:	dc 92       	st	X, r13
    3440:	ce 92       	st	-X, r12
    3442:	11 97       	sbiw	r26, 0x01	; 1
    3444:	14 96       	adiw	r26, 0x04	; 4
    3446:	7c 92       	st	X, r7
    3448:	6e 92       	st	-X, r6
    344a:	13 97       	sbiw	r26, 0x03	; 3
    344c:	0e 94 51 f1 	call	0x1e2a2	; 0x1e2a2 <sprintf_P>
				SEND_MSG;

				uint8_t val = 0xFF;
    3450:	f9 82       	std	Y+1, r15	; 0x01
				uint16_t startAddr = 0;

				if(taskInfo.portNum == USER_PORT_1)
    3452:	8b 81       	ldd	r24, Y+3	; 0x03
    3454:	0f 90       	pop	r0
    3456:	0f 90       	pop	r0
    3458:	0f 90       	pop	r0
    345a:	0f 90       	pop	r0
    345c:	81 30       	cpi	r24, 0x01	; 1
    345e:	29 f4       	brne	.+10     	; 0x346a <TurnerC3_Orig+0x2e2>
    3460:	00 e0       	ldi	r16, 0x00	; 0
    3462:	13 e0       	ldi	r17, 0x03	; 3
    3464:	80 e0       	ldi	r24, 0x00	; 0
    3466:	93 e0       	ldi	r25, 0x03	; 3
    3468:	2b c0       	rjmp	.+86     	; 0x34c0 <TurnerC3_Orig+0x338>
					startAddr = EEPROM_PM1_START;
				if(taskInfo.portNum == USER_PORT_2)
    346a:	82 30       	cpi	r24, 0x02	; 2
    346c:	29 f4       	brne	.+10     	; 0x3478 <TurnerC3_Orig+0x2f0>
    346e:	00 e0       	ldi	r16, 0x00	; 0
    3470:	15 e0       	ldi	r17, 0x05	; 5
    3472:	80 e0       	ldi	r24, 0x00	; 0
    3474:	95 e0       	ldi	r25, 0x05	; 5
    3476:	24 c0       	rjmp	.+72     	; 0x34c0 <TurnerC3_Orig+0x338>
					startAddr = EEPROM_PM2_START;
				if(taskInfo.portNum == USER_PORT_3)
    3478:	83 30       	cpi	r24, 0x03	; 3
    347a:	a1 f0       	breq	.+40     	; 0x34a4 <TurnerC3_Orig+0x31c>
					startAddr = EEPROM_PM3_START;

				if (startAddr == 0)
				{
					sprintf_P(dbgMsg, PSTR("No start address for EEPROM"));
    347c:	00 d0       	rcall	.+0      	; 0x347e <TurnerC3_Orig+0x2f6>
    347e:	0f 92       	push	r0
    3480:	ed b7       	in	r30, 0x3d	; 61
    3482:	fe b7       	in	r31, 0x3e	; 62
    3484:	d2 82       	std	Z+2, r13	; 0x02
    3486:	c1 82       	std	Z+1, r12	; 0x01
    3488:	94 82       	std	Z+4, r9	; 0x04
    348a:	83 82       	std	Z+3, r8	; 0x03
    348c:	0e 94 51 f1 	call	0x1e2a2	; 0x1e2a2 <sprintf_P>
					SEND_MSG;
					kill[taskInfo.portNum] = FALSE;
    3490:	eb 81       	ldd	r30, Y+3	; 0x03
    3492:	f0 e0       	ldi	r31, 0x00	; 0
    3494:	ef 56       	subi	r30, 0x6F	; 111
    3496:	fe 45       	sbci	r31, 0x5E	; 94
    3498:	10 82       	st	Z, r1
    349a:	0f 90       	pop	r0
    349c:	0f 90       	pop	r0
    349e:	0f 90       	pop	r0
    34a0:	0f 90       	pop	r0
    34a2:	bb ce       	rjmp	.-650    	; 0x321a <TurnerC3_Orig+0x92>
    34a4:	00 e0       	ldi	r16, 0x00	; 0
    34a6:	17 e0       	ldi	r17, 0x07	; 7
    34a8:	80 e0       	ldi	r24, 0x00	; 0
    34aa:	97 e0       	ldi	r25, 0x07	; 7
    34ac:	09 c0       	rjmp	.+18     	; 0x34c0 <TurnerC3_Orig+0x338>
				}
				else
				{
					// Write all F's to EEPROM
					for (uint16_t addr = startAddr; addr < startAddr + EEPROM_PM_SIZE; addr++)
						EepromWriteBlock((void*)addr, (void*)&val, 1);
    34ae:	c8 01       	movw	r24, r16
    34b0:	b6 01       	movw	r22, r12
    34b2:	41 e0       	ldi	r20, 0x01	; 1
    34b4:	50 e0       	ldi	r21, 0x00	; 0
    34b6:	0e 94 f7 37 	call	0x6fee	; 0x6fee <EepromWriteBlock>
					kill[taskInfo.portNum] = FALSE;
				}
				else
				{
					// Write all F's to EEPROM
					for (uint16_t addr = startAddr; addr < startAddr + EEPROM_PM_SIZE; addr++)
    34ba:	0f 5f       	subi	r16, 0xFF	; 255
    34bc:	1f 4f       	sbci	r17, 0xFF	; 255
    34be:	09 c0       	rjmp	.+18     	; 0x34d2 <TurnerC3_Orig+0x34a>
    34c0:	e1 2c       	mov	r14, r1
    34c2:	f2 e0       	ldi	r31, 0x02	; 2
    34c4:	ff 2e       	mov	r15, r31
    34c6:	e8 0e       	add	r14, r24
    34c8:	f9 1e       	adc	r15, r25
						EepromWriteBlock((void*)addr, (void*)&val, 1);
    34ca:	6e 01       	movw	r12, r28
    34cc:	08 94       	sec
    34ce:	c1 1c       	adc	r12, r1
    34d0:	d1 1c       	adc	r13, r1
					kill[taskInfo.portNum] = FALSE;
				}
				else
				{
					// Write all F's to EEPROM
					for (uint16_t addr = startAddr; addr < startAddr + EEPROM_PM_SIZE; addr++)
    34d2:	0e 15       	cp	r16, r14
    34d4:	1f 05       	cpc	r17, r15
    34d6:	58 f3       	brcs	.-42     	; 0x34ae <TurnerC3_Orig+0x326>
						EepromWriteBlock((void*)addr, (void*)&val, 1);

					memset(taskInfo.pBuf, 0, TASK_BUF_SIZE);
    34d8:	ee 81       	ldd	r30, Y+6	; 0x06
    34da:	ff 81       	ldd	r31, Y+7	; 0x07
    34dc:	80 ea       	ldi	r24, 0xA0	; 160
    34de:	9f e0       	ldi	r25, 0x0F	; 15
    34e0:	df 01       	movw	r26, r30
    34e2:	9c 01       	movw	r18, r24
    34e4:	1d 92       	st	X+, r1
    34e6:	21 50       	subi	r18, 0x01	; 1
    34e8:	30 40       	sbci	r19, 0x00	; 0
    34ea:	e1 f7       	brne	.-8      	; 0x34e4 <TurnerC3_Orig+0x35c>

					// Now end task (ie, just sleep for a really long time)
					while (1) OSTimeDlyHMSM(1,0,0,0);
    34ec:	81 e0       	ldi	r24, 0x01	; 1
    34ee:	60 e0       	ldi	r22, 0x00	; 0
    34f0:	40 e0       	ldi	r20, 0x00	; 0
    34f2:	20 e0       	ldi	r18, 0x00	; 0
    34f4:	30 e0       	ldi	r19, 0x00	; 0
    34f6:	0e 94 2a 2e 	call	0x5c54	; 0x5c54 <OSTimeDlyHMSM>
    34fa:	f8 cf       	rjmp	.-16     	; 0x34ec <TurnerC3_Orig+0x364>
				}
            }
		}
	}
	return;
}
    34fc:	27 96       	adiw	r28, 0x07	; 7
    34fe:	0f b6       	in	r0, 0x3f	; 63
    3500:	f8 94       	cli
    3502:	de bf       	out	0x3e, r29	; 62
    3504:	0f be       	out	0x3f, r0	; 63
    3506:	cd bf       	out	0x3d, r28	; 61
    3508:	cf 91       	pop	r28
    350a:	df 91       	pop	r29
    350c:	1f 91       	pop	r17
    350e:	0f 91       	pop	r16
    3510:	ff 90       	pop	r15
    3512:	ef 90       	pop	r14
    3514:	df 90       	pop	r13
    3516:	cf 90       	pop	r12
    3518:	bf 90       	pop	r11
    351a:	9f 90       	pop	r9
    351c:	8f 90       	pop	r8
    351e:	7f 90       	pop	r7
    3520:	6f 90       	pop	r6
    3522:	5f 90       	pop	r5
    3524:	4f 90       	pop	r4
    3526:	3f 90       	pop	r3
    3528:	2f 90       	pop	r2
    352a:	08 95       	ret

0000352c <Empty>:
	return retval;
}


void Empty(void* pParam)
{
    352c:	cf 92       	push	r12
    352e:	df 92       	push	r13
    3530:	ef 92       	push	r14
    3532:	ff 92       	push	r15
    3534:	0f 93       	push	r16
    3536:	1f 93       	push	r17
    3538:	df 93       	push	r29
    353a:	cf 93       	push	r28
    353c:	cd b7       	in	r28, 0x3d	; 61
    353e:	de b7       	in	r29, 0x3e	; 62
    3540:	27 97       	sbiw	r28, 0x07	; 7
    3542:	0f b6       	in	r0, 0x3f	; 63
    3544:	f8 94       	cli
    3546:	de bf       	out	0x3e, r29	; 62
    3548:	0f be       	out	0x3f, r0	; 63
    354a:	cd bf       	out	0x3d, r28	; 61
	EMPTY_TASK taskInfo;
	PEMPTY_TASK pTaskInit = (PEMPTY_TASK)pParam;
    354c:	fc 01       	movw	r30, r24
	uint8_t retval = FAIL;

	//sprintf(dbgMsg, PSTR("Empty PM sensor booting..."));
	//SEND_MSG;

	taskInfo.taskID = pTaskInit->taskID;
    354e:	80 81       	ld	r24, Z
    3550:	8a 83       	std	Y+2, r24	; 0x02
	taskInfo.portNum = pTaskInit->portNum;
    3552:	81 81       	ldd	r24, Z+1	; 0x01
    3554:	8b 83       	std	Y+3, r24	; 0x03
	taskInfo.pBuf = pTaskInit->pBuf;
    3556:	84 81       	ldd	r24, Z+4	; 0x04
    3558:	95 81       	ldd	r25, Z+5	; 0x05
    355a:	9f 83       	std	Y+7, r25	; 0x07
    355c:	8e 83       	std	Y+6, r24	; 0x06

	retval = Empty_Init(&taskInfo);
    355e:	8e 01       	movw	r16, r28
    3560:	0e 5f       	subi	r16, 0xFE	; 254
    3562:	1f 4f       	sbci	r17, 0xFF	; 255
    3564:	c8 01       	movw	r24, r16
    3566:	0e 94 15 d3 	call	0x1a62a	; 0x1a62a <Empty_Init>

	//sprintf(dbgMsg, PSTR("retval = %d"), retval);
	//SEND_MSG;

	if(retval == SUCCESS)
    356a:	8f 3f       	cpi	r24, 0xFF	; 255
    356c:	09 f0       	breq	.+2      	; 0x3570 <Empty+0x44>
    356e:	a8 c0       	rjmp	.+336    	; 0x36c0 <Empty+0x194>
				SerialPortPassThroughEmpty(taskInfo.portNum);
			}

			if(consoleAvailable[taskInfo.portNum] == TRUE)
			{
				taskInfo.pBuf->responseInfo.source = consoleIn[taskInfo.taskID].cmdSrcAddress;
    3570:	39 e0       	ldi	r19, 0x09	; 9
    3572:	c3 2e       	mov	r12, r19
    3574:	31 e0       	ldi	r19, 0x01	; 1
    3576:	d3 2e       	mov	r13, r19
				taskInfo.pBuf->responseInfo.status = 0;
				taskInfo.pBuf->responseInfo.length = consoleIn[taskInfo.taskID].cmdSize;
				taskInfo.pBuf->responseInfo.id = consoleIn[taskInfo.taskID].id;

				Empty_ParseConsole(&taskInfo);
    3578:	c8 01       	movw	r24, r16
    357a:	f0 2e       	mov	r15, r16
    357c:	09 2f       	mov	r16, r25

	if(retval == SUCCESS)
	{
		while(1)
		{
			OSTimeDlyHMSM(0,0,5,0);
    357e:	80 e0       	ldi	r24, 0x00	; 0
    3580:	60 e0       	ldi	r22, 0x00	; 0
    3582:	45 e0       	ldi	r20, 0x05	; 5
    3584:	20 e0       	ldi	r18, 0x00	; 0
    3586:	30 e0       	ldi	r19, 0x00	; 0
    3588:	0e 94 2a 2e 	call	0x5c54	; 0x5c54 <OSTimeDlyHMSM>
			//sprintf_P(dbgMsg, PSTR("Empty loop for PM%d"), taskInfo.portNum);
			//SEND_MSG;

			if(serialPortPassThrough[taskInfo.portNum] == TRUE)
    358c:	8b 81       	ldd	r24, Y+3	; 0x03
    358e:	a8 2f       	mov	r26, r24
    3590:	b0 e0       	ldi	r27, 0x00	; 0
    3592:	fd 01       	movw	r30, r26
    3594:	e7 56       	subi	r30, 0x67	; 103
    3596:	fe 45       	sbci	r31, 0x5E	; 94
    3598:	10 81       	ld	r17, Z
    359a:	1f 3f       	cpi	r17, 0xFF	; 255
    359c:	b9 f4       	brne	.+46     	; 0x35cc <Empty+0xa0>
			{
				//Set Flag so the float COMM task will proceed
				serialPortPassThroughOK = TRUE;
    359e:	10 93 9d a1 	sts	0xA19D, r17
				
				EnablePIBModule(taskInfo.portNum, TRUE, FALSE);
    35a2:	6f ef       	ldi	r22, 0xFF	; 255
    35a4:	40 e0       	ldi	r20, 0x00	; 0
    35a6:	0e 94 a2 38 	call	0x7144	; 0x7144 <EnablePIBModule>
				OSTimeDlyHMSM(0,0,0,500);
    35aa:	80 e0       	ldi	r24, 0x00	; 0
    35ac:	60 e0       	ldi	r22, 0x00	; 0
    35ae:	40 e0       	ldi	r20, 0x00	; 0
    35b0:	24 ef       	ldi	r18, 0xF4	; 244
    35b2:	31 e0       	ldi	r19, 0x01	; 1
    35b4:	0e 94 2a 2e 	call	0x5c54	; 0x5c54 <OSTimeDlyHMSM>
	return;
}

void SerialPortPassThroughEmpty(uint8_t port)
{
	readyForSerialPassThru = TRUE;
    35b8:	10 93 9e a1 	sts	0xA19E, r17

	while(1)
	{
		OSTimeDlyHMSM(1,0,0,0);
    35bc:	81 e0       	ldi	r24, 0x01	; 1
    35be:	60 e0       	ldi	r22, 0x00	; 0
    35c0:	40 e0       	ldi	r20, 0x00	; 0
    35c2:	20 e0       	ldi	r18, 0x00	; 0
    35c4:	30 e0       	ldi	r19, 0x00	; 0
    35c6:	0e 94 2a 2e 	call	0x5c54	; 0x5c54 <OSTimeDlyHMSM>
    35ca:	f8 cf       	rjmp	.-16     	; 0x35bc <Empty+0x90>
				OSTimeDlyHMSM(0,0,0,500);

				SerialPortPassThroughEmpty(taskInfo.portNum);
			}

			if(consoleAvailable[taskInfo.portNum] == TRUE)
    35cc:	a3 57       	subi	r26, 0x73	; 115
    35ce:	be 45       	sbci	r27, 0x5E	; 94
    35d0:	8c 91       	ld	r24, X
    35d2:	8f 3f       	cpi	r24, 0xFF	; 255
    35d4:	69 f5       	brne	.+90     	; 0x3630 <Empty+0x104>
			{
				taskInfo.pBuf->responseInfo.source = consoleIn[taskInfo.taskID].cmdSrcAddress;
    35d6:	ee 81       	ldd	r30, Y+6	; 0x06
    35d8:	ff 81       	ldd	r31, Y+7	; 0x07
    35da:	8a 81       	ldd	r24, Y+2	; 0x02
    35dc:	90 e0       	ldi	r25, 0x00	; 0
    35de:	ec 5e       	subi	r30, 0xEC	; 236
    35e0:	fe 4f       	sbci	r31, 0xFE	; 254
    35e2:	8c 9d       	mul	r24, r12
    35e4:	d0 01       	movw	r26, r0
    35e6:	8d 9d       	mul	r24, r13
    35e8:	b0 0d       	add	r27, r0
    35ea:	9c 9d       	mul	r25, r12
    35ec:	b0 0d       	add	r27, r0
    35ee:	11 24       	eor	r1, r1
    35f0:	a7 59       	subi	r26, 0x97	; 151
    35f2:	b2 46       	sbci	r27, 0x62	; 98
    35f4:	8d 91       	ld	r24, X+
    35f6:	9c 91       	ld	r25, X
    35f8:	11 97       	sbiw	r26, 0x01	; 1
    35fa:	81 93       	st	Z+, r24
    35fc:	91 93       	st	Z+, r25
				taskInfo.pBuf->responseInfo.status = 0;
    35fe:	10 82       	st	Z, r1
				taskInfo.pBuf->responseInfo.length = consoleIn[taskInfo.taskID].cmdSize;
    3600:	32 96       	adiw	r30, 0x02	; 2
    3602:	13 96       	adiw	r26, 0x03	; 3
    3604:	8c 91       	ld	r24, X
    3606:	13 97       	sbiw	r26, 0x03	; 3
    3608:	81 93       	st	Z+, r24
				taskInfo.pBuf->responseInfo.id = consoleIn[taskInfo.taskID].id;
    360a:	15 96       	adiw	r26, 0x05	; 5
    360c:	8d 91       	ld	r24, X+
    360e:	9d 91       	ld	r25, X+
    3610:	0d 90       	ld	r0, X+
    3612:	bc 91       	ld	r27, X
    3614:	a0 2d       	mov	r26, r0
    3616:	80 83       	st	Z, r24
    3618:	91 83       	std	Z+1, r25	; 0x01
    361a:	a2 83       	std	Z+2, r26	; 0x02
    361c:	b3 83       	std	Z+3, r27	; 0x03

				Empty_ParseConsole(&taskInfo);
    361e:	8f 2d       	mov	r24, r15
    3620:	90 2f       	mov	r25, r16
    3622:	0e 94 25 d2 	call	0x1a44a	; 0x1a44a <Empty_ParseConsole>
				consoleAvailable[taskInfo.portNum] = FALSE;
    3626:	eb 81       	ldd	r30, Y+3	; 0x03
    3628:	f0 e0       	ldi	r31, 0x00	; 0
    362a:	e3 57       	subi	r30, 0x73	; 115
    362c:	fe 45       	sbci	r31, 0x5E	; 94
    362e:	10 82       	st	Z, r1
			}

			// Check to see if we need to end this task and release resources
			if (kill[taskInfo.portNum] == TRUE) 
    3630:	8b 81       	ldd	r24, Y+3	; 0x03
    3632:	e8 2f       	mov	r30, r24
    3634:	f0 e0       	ldi	r31, 0x00	; 0
    3636:	ef 56       	subi	r30, 0x6F	; 111
    3638:	fe 45       	sbci	r31, 0x5E	; 94
    363a:	90 81       	ld	r25, Z
    363c:	9f 3f       	cpi	r25, 0xFF	; 255
    363e:	09 f0       	breq	.+2      	; 0x3642 <Empty+0x116>
    3640:	9e cf       	rjmp	.-196    	; 0x357e <Empty+0x52>
			{
				//sprintf_P(dbgMsg, PSTR("Ending task...."));
				//SEND_MSG;

				uint8_t val = 0xFF;
    3642:	99 83       	std	Y+1, r25	; 0x01
				uint16_t startAddr = 0;

				if(taskInfo.portNum == USER_PORT_1)
    3644:	81 30       	cpi	r24, 0x01	; 1
    3646:	29 f4       	brne	.+10     	; 0x3652 <Empty+0x126>
    3648:	00 e0       	ldi	r16, 0x00	; 0
    364a:	13 e0       	ldi	r17, 0x03	; 3
    364c:	80 e0       	ldi	r24, 0x00	; 0
    364e:	93 e0       	ldi	r25, 0x03	; 3
    3650:	19 c0       	rjmp	.+50     	; 0x3684 <Empty+0x158>
					startAddr = EEPROM_PM1_START;
				if(taskInfo.portNum == USER_PORT_2)
    3652:	82 30       	cpi	r24, 0x02	; 2
    3654:	29 f4       	brne	.+10     	; 0x3660 <Empty+0x134>
    3656:	00 e0       	ldi	r16, 0x00	; 0
    3658:	15 e0       	ldi	r17, 0x05	; 5
    365a:	80 e0       	ldi	r24, 0x00	; 0
    365c:	95 e0       	ldi	r25, 0x05	; 5
    365e:	12 c0       	rjmp	.+36     	; 0x3684 <Empty+0x158>
					startAddr = EEPROM_PM2_START;
				if(taskInfo.portNum == USER_PORT_3)
    3660:	83 30       	cpi	r24, 0x03	; 3
    3662:	11 f0       	breq	.+4      	; 0x3668 <Empty+0x13c>

				if (startAddr == 0)
				{
					//sprintf_P(dbgMsg, PSTR("No start address for EEPROM"));
					//SEND_MSG;
					kill[taskInfo.portNum] = FALSE;
    3664:	10 82       	st	Z, r1
    3666:	8b cf       	rjmp	.-234    	; 0x357e <Empty+0x52>
    3668:	00 e0       	ldi	r16, 0x00	; 0
    366a:	17 e0       	ldi	r17, 0x07	; 7
    366c:	80 e0       	ldi	r24, 0x00	; 0
    366e:	97 e0       	ldi	r25, 0x07	; 7
    3670:	09 c0       	rjmp	.+18     	; 0x3684 <Empty+0x158>
				}
				else
				{
					// Write all F's to EEPROM
					for (uint16_t addr = startAddr; addr < startAddr + EEPROM_PM_SIZE; addr++)
						EepromWriteBlock((void*)addr, (void*)&val, 1);
    3672:	c8 01       	movw	r24, r16
    3674:	b6 01       	movw	r22, r12
    3676:	41 e0       	ldi	r20, 0x01	; 1
    3678:	50 e0       	ldi	r21, 0x00	; 0
    367a:	0e 94 f7 37 	call	0x6fee	; 0x6fee <EepromWriteBlock>
					kill[taskInfo.portNum] = FALSE;
				}
				else
				{
					// Write all F's to EEPROM
					for (uint16_t addr = startAddr; addr < startAddr + EEPROM_PM_SIZE; addr++)
    367e:	0f 5f       	subi	r16, 0xFF	; 255
    3680:	1f 4f       	sbci	r17, 0xFF	; 255
    3682:	09 c0       	rjmp	.+18     	; 0x3696 <Empty+0x16a>
    3684:	e1 2c       	mov	r14, r1
    3686:	22 e0       	ldi	r18, 0x02	; 2
    3688:	f2 2e       	mov	r15, r18
    368a:	e8 0e       	add	r14, r24
    368c:	f9 1e       	adc	r15, r25
						EepromWriteBlock((void*)addr, (void*)&val, 1);
    368e:	6e 01       	movw	r12, r28
    3690:	08 94       	sec
    3692:	c1 1c       	adc	r12, r1
    3694:	d1 1c       	adc	r13, r1
					kill[taskInfo.portNum] = FALSE;
				}
				else
				{
					// Write all F's to EEPROM
					for (uint16_t addr = startAddr; addr < startAddr + EEPROM_PM_SIZE; addr++)
    3696:	0e 15       	cp	r16, r14
    3698:	1f 05       	cpc	r17, r15
    369a:	58 f3       	brcs	.-42     	; 0x3672 <Empty+0x146>
						EepromWriteBlock((void*)addr, (void*)&val, 1);

					memset(taskInfo.pBuf, 0, sizeof(EMPTY_BUFFER));
    369c:	ee 81       	ldd	r30, Y+6	; 0x06
    369e:	ff 81       	ldd	r31, Y+7	; 0x07
    36a0:	82 e2       	ldi	r24, 0x22	; 34
    36a2:	91 e0       	ldi	r25, 0x01	; 1
    36a4:	df 01       	movw	r26, r30
    36a6:	9c 01       	movw	r18, r24
    36a8:	1d 92       	st	X+, r1
    36aa:	21 50       	subi	r18, 0x01	; 1
    36ac:	30 40       	sbci	r19, 0x00	; 0
    36ae:	e1 f7       	brne	.-8      	; 0x36a8 <Empty+0x17c>

					// Now end task (ie, just sleep for a really long time)
					while (1) OSTimeDlyHMSM(1,0,0,0);
    36b0:	81 e0       	ldi	r24, 0x01	; 1
    36b2:	60 e0       	ldi	r22, 0x00	; 0
    36b4:	40 e0       	ldi	r20, 0x00	; 0
    36b6:	20 e0       	ldi	r18, 0x00	; 0
    36b8:	30 e0       	ldi	r19, 0x00	; 0
    36ba:	0e 94 2a 2e 	call	0x5c54	; 0x5c54 <OSTimeDlyHMSM>
    36be:	f8 cf       	rjmp	.-16     	; 0x36b0 <Empty+0x184>
            }			
		}
	}

	return;
}
    36c0:	27 96       	adiw	r28, 0x07	; 7
    36c2:	0f b6       	in	r0, 0x3f	; 63
    36c4:	f8 94       	cli
    36c6:	de bf       	out	0x3e, r29	; 62
    36c8:	0f be       	out	0x3f, r0	; 63
    36ca:	cd bf       	out	0x3d, r28	; 61
    36cc:	cf 91       	pop	r28
    36ce:	df 91       	pop	r29
    36d0:	1f 91       	pop	r17
    36d2:	0f 91       	pop	r16
    36d4:	ff 90       	pop	r15
    36d6:	ef 90       	pop	r14
    36d8:	df 90       	pop	r13
    36da:	cf 90       	pop	r12
    36dc:	08 95       	ret

000036de <__ctors_end>:
    36de:	11 24       	eor	r1, r1
    36e0:	1f be       	out	0x3f, r1	; 63
    36e2:	cf ef       	ldi	r28, 0xFF	; 255
    36e4:	d1 e2       	ldi	r29, 0x21	; 33
    36e6:	de bf       	out	0x3e, r29	; 62
    36e8:	cd bf       	out	0x3d, r28	; 61
    36ea:	00 e0       	ldi	r16, 0x00	; 0
    36ec:	0c bf       	out	0x3c, r16	; 60

000036ee <xmem_init>:
 * Notes:			1) Note that this is not a real "function": it is executed
 *					   inline and contains no return since it never called.
 *******************************************************************************
 */
void xmem_init(void)
{
    36ee:	11 24       	eor	r1, r1
	asm(" clr r1\n");
    DDRH = _BV(7) | _BV(6);
    36f0:	80 ec       	ldi	r24, 0xC0	; 192
    36f2:	80 93 01 01 	sts	0x0101, r24
    XMCRA = 0x80;
    36f6:	80 e8       	ldi	r24, 0x80	; 128
    36f8:	80 93 74 00 	sts	0x0074, r24
    XMCRB = 0x00;
    36fc:	10 92 75 00 	sts	0x0075, r1

00003700 <wdt_init>:
}
    3700:	88 e1       	ldi	r24, 0x18	; 24
    3702:	0f b6       	in	r0, 0x3f	; 63
    3704:	f8 94       	cli
    3706:	80 93 60 00 	sts	0x0060, r24
    370a:	10 92 60 00 	sts	0x0060, r1
    370e:	0f be       	out	0x3f, r0	; 63

00003710 <__do_copy_data>:
    3710:	15 e0       	ldi	r17, 0x05	; 5
    3712:	a0 e0       	ldi	r26, 0x00	; 0
    3714:	b2 e0       	ldi	r27, 0x02	; 2
    3716:	e2 e7       	ldi	r30, 0x72	; 114
    3718:	f9 ee       	ldi	r31, 0xE9	; 233
    371a:	01 e0       	ldi	r16, 0x01	; 1
    371c:	0b bf       	out	0x3b, r16	; 59
    371e:	02 c0       	rjmp	.+4      	; 0x3724 <__do_copy_data+0x14>
    3720:	07 90       	elpm	r0, Z+
    3722:	0d 92       	st	X+, r0
    3724:	ac 37       	cpi	r26, 0x7C	; 124
    3726:	b1 07       	cpc	r27, r17
    3728:	d9 f7       	brne	.-10     	; 0x3720 <__do_copy_data+0x10>

0000372a <__do_clear_bss>:
    372a:	19 e1       	ldi	r17, 0x19	; 25
    372c:	ac e7       	ldi	r26, 0x7C	; 124
    372e:	b5 e0       	ldi	r27, 0x05	; 5
    3730:	01 c0       	rjmp	.+2      	; 0x3734 <.do_clear_bss_start>

00003732 <.do_clear_bss_loop>:
    3732:	1d 92       	st	X+, r1

00003734 <.do_clear_bss_start>:
    3734:	a5 35       	cpi	r26, 0x55	; 85
    3736:	b1 07       	cpc	r27, r17
    3738:	e1 f7       	brne	.-8      	; 0x3732 <.do_clear_bss_loop>
    373a:	0e 94 af 1b 	call	0x375e	; 0x375e <main>
    373e:	0c 94 b7 f4 	jmp	0x1e96e	; 0x1e96e <_exit>

00003742 <__bad_interrupt>:
    3742:	0c 94 00 00 	jmp	0	; 0x0 <__vectors>

00003746 <admin_task>:
 * Notes:			
 *******************************************************************************
 */
void admin_task(void* pdata)
{
	AppStartContinuationTask_t continuationTask = AppStartTasks();
    3746:	0e 94 74 5d 	call	0xbae8	; 0xbae8 <AppStartTasks>
    374a:	fc 01       	movw	r30, r24

	if (continuationTask)
    374c:	00 97       	sbiw	r24, 0x00	; 0
    374e:	19 f0       	breq	.+6      	; 0x3756 <admin_task+0x10>
		continuationTask((void*) 0L);
    3750:	80 e0       	ldi	r24, 0x00	; 0
    3752:	90 e0       	ldi	r25, 0x00	; 0
    3754:	19 95       	eicall

	OSTaskSuspend(OS_PRIO_SELF);
    3756:	8f ef       	ldi	r24, 0xFF	; 255
    3758:	0e 94 a4 2a 	call	0x5548	; 0x5548 <OSTaskSuspend>
}
    375c:	08 95       	ret

0000375e <main>:
 *
 * Notes:			
 *******************************************************************************
 */
int main(void)
{
    375e:	8f 92       	push	r8
    3760:	9f 92       	push	r9
    3762:	af 92       	push	r10
    3764:	bf 92       	push	r11
    3766:	cf 92       	push	r12
    3768:	df 92       	push	r13
    376a:	ef 92       	push	r14
    376c:	ff 92       	push	r15
    376e:	0f 93       	push	r16
    3770:	1f 93       	push	r17
    3772:	df 93       	push	r29
    3774:	cf 93       	push	r28
    3776:	0f 92       	push	r0
    3778:	cd b7       	in	r28, 0x3d	; 61
    377a:	de b7       	in	r29, 0x3e	; 62
static OS_STK admin_stack[ADMIN_TASK_STACK_SIZE];
	INT8U oserr;

	AppInit();
    377c:	0e 94 e8 60 	call	0xc1d0	; 0xc1d0 <AppInit>
	OSInit();
    3780:	0e 94 5b 24 	call	0x48b6	; 0x48b6 <OSInit>

	OSTaskCreateExt(admin_task, (void*) 0, &admin_stack[ADMIN_TASK_STACK_SIZE-1],
    3784:	0f 92       	push	r0
    3786:	0f 92       	push	r0
    3788:	81 e0       	ldi	r24, 0x01	; 1
    378a:	90 e0       	ldi	r25, 0x00	; 0
    378c:	ed b7       	in	r30, 0x3d	; 61
    378e:	fe b7       	in	r31, 0x3e	; 62
    3790:	92 83       	std	Z+2, r25	; 0x02
    3792:	81 83       	std	Z+1, r24	; 0x01
    3794:	83 ea       	ldi	r24, 0xA3	; 163
    3796:	9b e1       	ldi	r25, 0x1B	; 27
    3798:	60 e0       	ldi	r22, 0x00	; 0
    379a:	70 e0       	ldi	r23, 0x00	; 0
    379c:	4b e7       	ldi	r20, 0x7B	; 123
    379e:	56 e0       	ldi	r21, 0x06	; 6
    37a0:	20 e0       	ldi	r18, 0x00	; 0
    37a2:	08 ee       	ldi	r16, 0xE8	; 232
    37a4:	13 e0       	ldi	r17, 0x03	; 3
    37a6:	ec e7       	ldi	r30, 0x7C	; 124
    37a8:	ee 2e       	mov	r14, r30
    37aa:	e5 e0       	ldi	r30, 0x05	; 5
    37ac:	fe 2e       	mov	r15, r30
    37ae:	a1 2c       	mov	r10, r1
    37b0:	31 e0       	ldi	r19, 0x01	; 1
    37b2:	b3 2e       	mov	r11, r19
    37b4:	c1 2c       	mov	r12, r1
    37b6:	d1 2c       	mov	r13, r1
    37b8:	88 24       	eor	r8, r8
    37ba:	99 24       	eor	r9, r9
    37bc:	0e 94 97 2c 	call	0x592e	; 0x592e <OSTaskCreateExt>
		ADMIN_TASK_PRIO, ADMIN_TASK_ID, admin_stack, ADMIN_TASK_STACK_SIZE,
		(void*) 0, OS_TASK_OPT_STK_CHK);
	OSTaskNameSet(ADMIN_TASK_PRIO, (INT8U*) ADMIN_TASK_NAME, &oserr);
    37c0:	0f 90       	pop	r0
    37c2:	0f 90       	pop	r0
    37c4:	80 e0       	ldi	r24, 0x00	; 0
    37c6:	60 e0       	ldi	r22, 0x00	; 0
    37c8:	72 e0       	ldi	r23, 0x02	; 2
    37ca:	ae 01       	movw	r20, r28
    37cc:	4f 5f       	subi	r20, 0xFF	; 255
    37ce:	5f 4f       	sbci	r21, 0xFF	; 255
    37d0:	0e 94 1f 2c 	call	0x583e	; 0x583e <OSTaskNameSet>

	OSStart();
    37d4:	0e 94 cb 23 	call	0x4796	; 0x4796 <OSStart>
}
    37d8:	80 e0       	ldi	r24, 0x00	; 0
    37da:	90 e0       	ldi	r25, 0x00	; 0
    37dc:	0f 90       	pop	r0
    37de:	cf 91       	pop	r28
    37e0:	df 91       	pop	r29
    37e2:	1f 91       	pop	r17
    37e4:	0f 91       	pop	r16
    37e6:	ff 90       	pop	r15
    37e8:	ef 90       	pop	r14
    37ea:	df 90       	pop	r13
    37ec:	cf 90       	pop	r12
    37ee:	bf 90       	pop	r11
    37f0:	af 90       	pop	r10
    37f2:	9f 90       	pop	r9
    37f4:	8f 90       	pop	r8
    37f6:	08 95       	ret

000037f8 <RXISRPORT0>:

 	.endfunc



    .endr
    37f8:	0f 92       	push	r0
    37fa:	0f 93       	push	r16
    37fc:	cf 93       	push	r28
    37fe:	df 93       	push	r29
    3800:	0f b7       	in	r16, 0x3f	; 63
    3802:	00 68       	ori	r16, 0x80	; 128
    3804:	0f 93       	push	r16
    3806:	00 91 7d 18 	lds	r16, 0x187D
    380a:	0c 7f       	andi	r16, 0xFC	; 252
    380c:	00 93 7d 18 	sts	0x187D, r16
    3810:	00 91 c0 00 	lds	r16, 0x00C0
    3814:	04 fb       	bst	r16, 4
    3816:	56 f4       	brtc	.+20     	; 0x382c <RXISRPORT0noframeerror>
    3818:	c0 91 6d 18 	lds	r28, 0x186D
    381c:	d0 91 6e 18 	lds	r29, 0x186E
    3820:	21 96       	adiw	r28, 0x01	; 1
    3822:	21 f0       	breq	.+8      	; 0x382c <RXISRPORT0noframeerror>
    3824:	c0 93 6d 18 	sts	0x186D, r28
    3828:	d0 93 6e 18 	sts	0x186E, r29

0000382c <RXISRPORT0noframeerror>:
    382c:	03 fb       	bst	r16, 3
    382e:	56 f4       	brtc	.+20     	; 0x3844 <RXISRPORT0nodataovr>
    3830:	c0 91 6f 18 	lds	r28, 0x186F
    3834:	d0 91 70 18 	lds	r29, 0x1870
    3838:	21 96       	adiw	r28, 0x01	; 1
    383a:	21 f0       	breq	.+8      	; 0x3844 <RXISRPORT0nodataovr>
    383c:	c0 93 6f 18 	sts	0x186F, r28
    3840:	d0 93 70 18 	sts	0x1870, r29

00003844 <RXISRPORT0nodataovr>:
    3844:	c0 91 73 18 	lds	r28, 0x1873
    3848:	d0 e8       	ldi	r29, 0x80	; 128
    384a:	00 91 c6 00 	lds	r16, 0x00C6
    384e:	09 93       	st	Y+, r16
    3850:	c0 93 73 18 	sts	0x1873, r28
    3854:	00 91 74 18 	lds	r16, 0x1874
    3858:	0c 17       	cp	r16, r28
    385a:	71 f4       	brne	.+28     	; 0x3878 <RXISRPORT0nofifoovr>
    385c:	03 95       	inc	r16
    385e:	00 93 74 18 	sts	0x1874, r16
    3862:	c0 91 71 18 	lds	r28, 0x1871
    3866:	d0 91 72 18 	lds	r29, 0x1872
    386a:	21 96       	adiw	r28, 0x01	; 1
    386c:	21 f0       	breq	.+8      	; 0x3876 <RXISRPORT0nodataovr+0x32>
    386e:	c0 93 71 18 	sts	0x1871, r28
    3872:	d0 93 72 18 	sts	0x1872, r29
    3876:	0a c0       	rjmp	.+20     	; 0x388c <RXISRPORT0chkpending>

00003878 <RXISRPORT0nofifoovr>:
    3878:	c0 91 77 18 	lds	r28, 0x1877
    387c:	d0 91 78 18 	lds	r29, 0x1878
    3880:	21 96       	adiw	r28, 0x01	; 1
    3882:	21 f0       	breq	.+8      	; 0x388c <RXISRPORT0chkpending>
    3884:	c0 93 77 18 	sts	0x1877, r28
    3888:	d0 93 78 18 	sts	0x1878, r29

0000388c <RXISRPORT0chkpending>:
    388c:	c0 91 7b 18 	lds	r28, 0x187B
    3890:	d0 91 7c 18 	lds	r29, 0x187C
    3894:	0d 81       	ldd	r16, Y+5	; 0x05
    3896:	00 23       	and	r16, r16
    3898:	59 f4       	brne	.+22     	; 0x38b0 <RXISRPORT0pend>
    389a:	09 81       	ldd	r16, Y+1	; 0x01
    389c:	00 23       	and	r16, r16
    389e:	41 f0       	breq	.+16     	; 0x38b0 <RXISRPORT0pend>

000038a0 <RXISRPORT0eoi>:
    38a0:	0f 91       	pop	r16
    38a2:	0f 77       	andi	r16, 0x7F	; 127
    38a4:	0f bf       	out	0x3f, r16	; 63
    38a6:	df 91       	pop	r29
    38a8:	cf 91       	pop	r28
    38aa:	0f 91       	pop	r16
    38ac:	0f 90       	pop	r0
    38ae:	18 95       	reti

000038b0 <RXISRPORT0pend>:
    38b0:	00 91 78 18 	lds	r16, 0x1878
    38b4:	00 23       	and	r16, r16
    38b6:	21 f4       	brne	.+8      	; 0x38c0 <RXISRPORT0postmb>
    38b8:	00 91 77 18 	lds	r16, 0x1877
    38bc:	00 31       	cpi	r16, 0x10	; 16
    38be:	84 f3       	brlt	.-32     	; 0x38a0 <RXISRPORT0eoi>

000038c0 <RXISRPORT0postmb>:
    38c0:	1f 92       	push	r1
    38c2:	2f 92       	push	r2
    38c4:	3f 92       	push	r3
    38c6:	4f 92       	push	r4
    38c8:	5f 92       	push	r5
    38ca:	6f 92       	push	r6
    38cc:	7f 92       	push	r7
    38ce:	8f 92       	push	r8
    38d0:	9f 92       	push	r9
    38d2:	af 92       	push	r10
    38d4:	bf 92       	push	r11
    38d6:	cf 92       	push	r12
    38d8:	df 92       	push	r13
    38da:	ef 92       	push	r14
    38dc:	ff 92       	push	r15
    38de:	1f 93       	push	r17
    38e0:	2f 93       	push	r18
    38e2:	3f 93       	push	r19
    38e4:	4f 93       	push	r20
    38e6:	5f 93       	push	r21
    38e8:	6f 93       	push	r22
    38ea:	7f 93       	push	r23
    38ec:	8f 93       	push	r24
    38ee:	9f 93       	push	r25
    38f0:	af 93       	push	r26
    38f2:	bf 93       	push	r27
    38f4:	ef 93       	push	r30
    38f6:	ff 93       	push	r31
    38f8:	0b b7       	in	r16, 0x3b	; 59
    38fa:	0f 93       	push	r16
    38fc:	0c b7       	in	r16, 0x3c	; 60
    38fe:	0f 93       	push	r16
    3900:	11 24       	eor	r1, r1
    3902:	00 91 dd 11 	lds	r16, 0x11DD
    3906:	00 23       	and	r16, r16
    3908:	41 f4       	brne	.+16     	; 0x391a <RXISRPORT0nznesting>
    390a:	e0 91 de 11 	lds	r30, 0x11DE
    390e:	f0 91 df 11 	lds	r31, 0x11DF
    3912:	1d b7       	in	r17, 0x3d	; 61
    3914:	11 93       	st	Z+, r17
    3916:	1e b7       	in	r17, 0x3e	; 62
    3918:	11 93       	st	Z+, r17

0000391a <RXISRPORT0nznesting>:
    391a:	03 95       	inc	r16
    391c:	00 93 dd 11 	sts	0x11DD, r16
    3920:	78 94       	sei
    3922:	ce 01       	movw	r24, r28
    3924:	61 e0       	ldi	r22, 0x01	; 1
    3926:	77 27       	eor	r23, r23
    3928:	0e 94 db 25 	call	0x4bb6	; 0x4bb6 <OSMboxPost>
    392c:	0e 94 f8 23 	call	0x47f0	; 0x47f0 <OSIntExit>
    3930:	0f 91       	pop	r16
    3932:	0c bf       	out	0x3c, r16	; 60
    3934:	0f 91       	pop	r16
    3936:	0b bf       	out	0x3b, r16	; 59
    3938:	ff 91       	pop	r31
    393a:	ef 91       	pop	r30
    393c:	bf 91       	pop	r27
    393e:	af 91       	pop	r26
    3940:	9f 91       	pop	r25
    3942:	8f 91       	pop	r24
    3944:	7f 91       	pop	r23
    3946:	6f 91       	pop	r22
    3948:	5f 91       	pop	r21
    394a:	4f 91       	pop	r20
    394c:	3f 91       	pop	r19
    394e:	2f 91       	pop	r18
    3950:	1f 91       	pop	r17
    3952:	ff 90       	pop	r15
    3954:	ef 90       	pop	r14
    3956:	df 90       	pop	r13
    3958:	cf 90       	pop	r12
    395a:	bf 90       	pop	r11
    395c:	af 90       	pop	r10
    395e:	9f 90       	pop	r9
    3960:	8f 90       	pop	r8
    3962:	7f 90       	pop	r7
    3964:	6f 90       	pop	r6
    3966:	5f 90       	pop	r5
    3968:	4f 90       	pop	r4
    396a:	3f 90       	pop	r3
    396c:	2f 90       	pop	r2
    396e:	1f 90       	pop	r1
    3970:	0f 91       	pop	r16
    3972:	0f 77       	andi	r16, 0x7F	; 127
    3974:	0f bf       	out	0x3f, r16	; 63
    3976:	df 91       	pop	r29
    3978:	cf 91       	pop	r28
    397a:	0f 91       	pop	r16
    397c:	0f 90       	pop	r0
    397e:	18 95       	reti

00003980 <TXISRPORT0>:
    3980:	0f 92       	push	r0
    3982:	0f 93       	push	r16
    3984:	cf 93       	push	r28
    3986:	df 93       	push	r29
    3988:	0f b7       	in	r16, 0x3f	; 63
    398a:	00 68       	ori	r16, 0x80	; 128
    398c:	0f 93       	push	r16
    398e:	c0 91 80 18 	lds	r28, 0x1880
    3992:	c1 50       	subi	r28, 0x01	; 1
    3994:	10 f1       	brcs	.+68     	; 0x39da <TXISRPORT0fifoempty>
    3996:	c0 93 80 18 	sts	0x1880, r28
    399a:	c0 91 76 18 	lds	r28, 0x1876
    399e:	d4 e8       	ldi	r29, 0x84	; 132
    39a0:	09 91       	ld	r16, Y+
    39a2:	00 93 c6 00 	sts	0x00C6, r16
    39a6:	c0 93 76 18 	sts	0x1876, r28

000039aa <TXISRPORT0chkpending>:
    39aa:	c0 91 7e 18 	lds	r28, 0x187E
    39ae:	d0 91 7f 18 	lds	r29, 0x187F
    39b2:	0d 81       	ldd	r16, Y+5	; 0x05
    39b4:	00 23       	and	r16, r16
    39b6:	59 f4       	brne	.+22     	; 0x39ce <TXISRPORT0pending>
    39b8:	09 81       	ldd	r16, Y+1	; 0x01
    39ba:	00 23       	and	r16, r16
    39bc:	41 f0       	breq	.+16     	; 0x39ce <TXISRPORT0pending>

000039be <TXISRPORT0eoi>:
    39be:	0f 91       	pop	r16
    39c0:	0f 77       	andi	r16, 0x7F	; 127
    39c2:	0f bf       	out	0x3f, r16	; 63
    39c4:	df 91       	pop	r29
    39c6:	cf 91       	pop	r28
    39c8:	0f 91       	pop	r16
    39ca:	0f 90       	pop	r0
    39cc:	18 95       	reti

000039ce <TXISRPORT0pending>:
    39ce:	00 91 80 18 	lds	r16, 0x1880
    39d2:	00 3f       	cpi	r16, 0xF0	; 240
    39d4:	a0 f7       	brcc	.-24     	; 0x39be <TXISRPORT0eoi>
    39d6:	0c 94 60 1c 	jmp	0x38c0	; 0x38c0 <RXISRPORT0postmb>

000039da <TXISRPORT0fifoempty>:
    39da:	00 91 c1 00 	lds	r16, 0x00C1
    39de:	0f 7d       	andi	r16, 0xDF	; 223
    39e0:	00 93 c1 00 	sts	0x00C1, r16
    39e4:	0c 94 d5 1c 	jmp	0x39aa	; 0x39aa <TXISRPORT0chkpending>

000039e8 <RXISRPORT1>:
    39e8:	0f 92       	push	r0
    39ea:	0f 93       	push	r16
    39ec:	cf 93       	push	r28
    39ee:	df 93       	push	r29
    39f0:	0f b7       	in	r16, 0x3f	; 63
    39f2:	00 68       	ori	r16, 0x80	; 128
    39f4:	0f 93       	push	r16
    39f6:	00 91 91 18 	lds	r16, 0x1891
    39fa:	0c 7f       	andi	r16, 0xFC	; 252
    39fc:	00 93 91 18 	sts	0x1891, r16
    3a00:	00 91 c8 00 	lds	r16, 0x00C8
    3a04:	04 fb       	bst	r16, 4
    3a06:	56 f4       	brtc	.+20     	; 0x3a1c <RXISRPORT1noframeerror>
    3a08:	c0 91 81 18 	lds	r28, 0x1881
    3a0c:	d0 91 82 18 	lds	r29, 0x1882
    3a10:	21 96       	adiw	r28, 0x01	; 1
    3a12:	21 f0       	breq	.+8      	; 0x3a1c <RXISRPORT1noframeerror>
    3a14:	c0 93 81 18 	sts	0x1881, r28
    3a18:	d0 93 82 18 	sts	0x1882, r29

00003a1c <RXISRPORT1noframeerror>:
    3a1c:	03 fb       	bst	r16, 3
    3a1e:	56 f4       	brtc	.+20     	; 0x3a34 <RXISRPORT1nodataovr>
    3a20:	c0 91 83 18 	lds	r28, 0x1883
    3a24:	d0 91 84 18 	lds	r29, 0x1884
    3a28:	21 96       	adiw	r28, 0x01	; 1
    3a2a:	21 f0       	breq	.+8      	; 0x3a34 <RXISRPORT1nodataovr>
    3a2c:	c0 93 83 18 	sts	0x1883, r28
    3a30:	d0 93 84 18 	sts	0x1884, r29

00003a34 <RXISRPORT1nodataovr>:
    3a34:	c0 91 87 18 	lds	r28, 0x1887
    3a38:	d1 e8       	ldi	r29, 0x81	; 129
    3a3a:	00 91 ce 00 	lds	r16, 0x00CE
    3a3e:	09 93       	st	Y+, r16
    3a40:	c0 93 87 18 	sts	0x1887, r28
    3a44:	00 91 88 18 	lds	r16, 0x1888
    3a48:	0c 17       	cp	r16, r28
    3a4a:	71 f4       	brne	.+28     	; 0x3a68 <RXISRPORT1nofifoovr>
    3a4c:	03 95       	inc	r16
    3a4e:	00 93 88 18 	sts	0x1888, r16
    3a52:	c0 91 85 18 	lds	r28, 0x1885
    3a56:	d0 91 86 18 	lds	r29, 0x1886
    3a5a:	21 96       	adiw	r28, 0x01	; 1
    3a5c:	21 f0       	breq	.+8      	; 0x3a66 <RXISRPORT1nodataovr+0x32>
    3a5e:	c0 93 85 18 	sts	0x1885, r28
    3a62:	d0 93 86 18 	sts	0x1886, r29
    3a66:	0a c0       	rjmp	.+20     	; 0x3a7c <RXISRPORT1chkpending>

00003a68 <RXISRPORT1nofifoovr>:
    3a68:	c0 91 8b 18 	lds	r28, 0x188B
    3a6c:	d0 91 8c 18 	lds	r29, 0x188C
    3a70:	21 96       	adiw	r28, 0x01	; 1
    3a72:	21 f0       	breq	.+8      	; 0x3a7c <RXISRPORT1chkpending>
    3a74:	c0 93 8b 18 	sts	0x188B, r28
    3a78:	d0 93 8c 18 	sts	0x188C, r29

00003a7c <RXISRPORT1chkpending>:
    3a7c:	c0 91 8f 18 	lds	r28, 0x188F
    3a80:	d0 91 90 18 	lds	r29, 0x1890
    3a84:	0d 81       	ldd	r16, Y+5	; 0x05
    3a86:	00 23       	and	r16, r16
    3a88:	59 f4       	brne	.+22     	; 0x3aa0 <RXISRPORT1pend>
    3a8a:	09 81       	ldd	r16, Y+1	; 0x01
    3a8c:	00 23       	and	r16, r16
    3a8e:	41 f0       	breq	.+16     	; 0x3aa0 <RXISRPORT1pend>

00003a90 <RXISRPORT1eoi>:
    3a90:	0f 91       	pop	r16
    3a92:	0f 77       	andi	r16, 0x7F	; 127
    3a94:	0f bf       	out	0x3f, r16	; 63
    3a96:	df 91       	pop	r29
    3a98:	cf 91       	pop	r28
    3a9a:	0f 91       	pop	r16
    3a9c:	0f 90       	pop	r0
    3a9e:	18 95       	reti

00003aa0 <RXISRPORT1pend>:
    3aa0:	00 91 8c 18 	lds	r16, 0x188C
    3aa4:	00 23       	and	r16, r16
    3aa6:	21 f4       	brne	.+8      	; 0x3ab0 <RXISRPORT1postmb>
    3aa8:	00 91 8b 18 	lds	r16, 0x188B
    3aac:	00 31       	cpi	r16, 0x10	; 16
    3aae:	84 f3       	brlt	.-32     	; 0x3a90 <RXISRPORT1eoi>

00003ab0 <RXISRPORT1postmb>:
    3ab0:	0c 94 60 1c 	jmp	0x38c0	; 0x38c0 <RXISRPORT0postmb>

00003ab4 <TXISRPORT1>:
    3ab4:	0f 92       	push	r0
    3ab6:	0f 93       	push	r16
    3ab8:	cf 93       	push	r28
    3aba:	df 93       	push	r29
    3abc:	0f b7       	in	r16, 0x3f	; 63
    3abe:	00 68       	ori	r16, 0x80	; 128
    3ac0:	0f 93       	push	r16
    3ac2:	c0 91 94 18 	lds	r28, 0x1894
    3ac6:	c1 50       	subi	r28, 0x01	; 1
    3ac8:	10 f1       	brcs	.+68     	; 0x3b0e <TXISRPORT1fifoempty>
    3aca:	c0 93 94 18 	sts	0x1894, r28
    3ace:	c0 91 8a 18 	lds	r28, 0x188A
    3ad2:	d5 e8       	ldi	r29, 0x85	; 133
    3ad4:	09 91       	ld	r16, Y+
    3ad6:	00 93 ce 00 	sts	0x00CE, r16
    3ada:	c0 93 8a 18 	sts	0x188A, r28

00003ade <TXISRPORT1chkpending>:
    3ade:	c0 91 92 18 	lds	r28, 0x1892
    3ae2:	d0 91 93 18 	lds	r29, 0x1893
    3ae6:	0d 81       	ldd	r16, Y+5	; 0x05
    3ae8:	00 23       	and	r16, r16
    3aea:	59 f4       	brne	.+22     	; 0x3b02 <TXISRPORT1pending>
    3aec:	09 81       	ldd	r16, Y+1	; 0x01
    3aee:	00 23       	and	r16, r16
    3af0:	41 f0       	breq	.+16     	; 0x3b02 <TXISRPORT1pending>

00003af2 <TXISRPORT1eoi>:
    3af2:	0f 91       	pop	r16
    3af4:	0f 77       	andi	r16, 0x7F	; 127
    3af6:	0f bf       	out	0x3f, r16	; 63
    3af8:	df 91       	pop	r29
    3afa:	cf 91       	pop	r28
    3afc:	0f 91       	pop	r16
    3afe:	0f 90       	pop	r0
    3b00:	18 95       	reti

00003b02 <TXISRPORT1pending>:
    3b02:	00 91 94 18 	lds	r16, 0x1894
    3b06:	00 3f       	cpi	r16, 0xF0	; 240
    3b08:	a0 f7       	brcc	.-24     	; 0x3af2 <TXISRPORT1eoi>
    3b0a:	0c 94 60 1c 	jmp	0x38c0	; 0x38c0 <RXISRPORT0postmb>

00003b0e <TXISRPORT1fifoempty>:
    3b0e:	00 91 c9 00 	lds	r16, 0x00C9
    3b12:	0f 7d       	andi	r16, 0xDF	; 223
    3b14:	00 93 c9 00 	sts	0x00C9, r16
    3b18:	0c 94 6f 1d 	jmp	0x3ade	; 0x3ade <TXISRPORT1chkpending>

00003b1c <RXISRPORT2>:
    3b1c:	0f 92       	push	r0
    3b1e:	0f 93       	push	r16
    3b20:	cf 93       	push	r28
    3b22:	df 93       	push	r29
    3b24:	0f b7       	in	r16, 0x3f	; 63
    3b26:	00 68       	ori	r16, 0x80	; 128
    3b28:	0f 93       	push	r16
    3b2a:	00 91 a5 18 	lds	r16, 0x18A5
    3b2e:	0c 7f       	andi	r16, 0xFC	; 252
    3b30:	00 93 a5 18 	sts	0x18A5, r16
    3b34:	00 91 d0 00 	lds	r16, 0x00D0
    3b38:	04 fb       	bst	r16, 4
    3b3a:	56 f4       	brtc	.+20     	; 0x3b50 <RXISRPORT2noframeerror>
    3b3c:	c0 91 95 18 	lds	r28, 0x1895
    3b40:	d0 91 96 18 	lds	r29, 0x1896
    3b44:	21 96       	adiw	r28, 0x01	; 1
    3b46:	21 f0       	breq	.+8      	; 0x3b50 <RXISRPORT2noframeerror>
    3b48:	c0 93 95 18 	sts	0x1895, r28
    3b4c:	d0 93 96 18 	sts	0x1896, r29

00003b50 <RXISRPORT2noframeerror>:
    3b50:	03 fb       	bst	r16, 3
    3b52:	56 f4       	brtc	.+20     	; 0x3b68 <RXISRPORT2nodataovr>
    3b54:	c0 91 97 18 	lds	r28, 0x1897
    3b58:	d0 91 98 18 	lds	r29, 0x1898
    3b5c:	21 96       	adiw	r28, 0x01	; 1
    3b5e:	21 f0       	breq	.+8      	; 0x3b68 <RXISRPORT2nodataovr>
    3b60:	c0 93 97 18 	sts	0x1897, r28
    3b64:	d0 93 98 18 	sts	0x1898, r29

00003b68 <RXISRPORT2nodataovr>:
    3b68:	c0 91 9b 18 	lds	r28, 0x189B
    3b6c:	d2 e8       	ldi	r29, 0x82	; 130
    3b6e:	00 91 d6 00 	lds	r16, 0x00D6
    3b72:	09 93       	st	Y+, r16
    3b74:	c0 93 9b 18 	sts	0x189B, r28
    3b78:	00 91 9c 18 	lds	r16, 0x189C
    3b7c:	0c 17       	cp	r16, r28
    3b7e:	71 f4       	brne	.+28     	; 0x3b9c <RXISRPORT2nofifoovr>
    3b80:	03 95       	inc	r16
    3b82:	00 93 9c 18 	sts	0x189C, r16
    3b86:	c0 91 99 18 	lds	r28, 0x1899
    3b8a:	d0 91 9a 18 	lds	r29, 0x189A
    3b8e:	21 96       	adiw	r28, 0x01	; 1
    3b90:	21 f0       	breq	.+8      	; 0x3b9a <RXISRPORT2nodataovr+0x32>
    3b92:	c0 93 99 18 	sts	0x1899, r28
    3b96:	d0 93 9a 18 	sts	0x189A, r29
    3b9a:	0a c0       	rjmp	.+20     	; 0x3bb0 <RXISRPORT2chkpending>

00003b9c <RXISRPORT2nofifoovr>:
    3b9c:	c0 91 9f 18 	lds	r28, 0x189F
    3ba0:	d0 91 a0 18 	lds	r29, 0x18A0
    3ba4:	21 96       	adiw	r28, 0x01	; 1
    3ba6:	21 f0       	breq	.+8      	; 0x3bb0 <RXISRPORT2chkpending>
    3ba8:	c0 93 9f 18 	sts	0x189F, r28
    3bac:	d0 93 a0 18 	sts	0x18A0, r29

00003bb0 <RXISRPORT2chkpending>:
    3bb0:	c0 91 a3 18 	lds	r28, 0x18A3
    3bb4:	d0 91 a4 18 	lds	r29, 0x18A4
    3bb8:	0d 81       	ldd	r16, Y+5	; 0x05
    3bba:	00 23       	and	r16, r16
    3bbc:	59 f4       	brne	.+22     	; 0x3bd4 <RXISRPORT2pend>
    3bbe:	09 81       	ldd	r16, Y+1	; 0x01
    3bc0:	00 23       	and	r16, r16
    3bc2:	41 f0       	breq	.+16     	; 0x3bd4 <RXISRPORT2pend>

00003bc4 <RXISRPORT2eoi>:
    3bc4:	0f 91       	pop	r16
    3bc6:	0f 77       	andi	r16, 0x7F	; 127
    3bc8:	0f bf       	out	0x3f, r16	; 63
    3bca:	df 91       	pop	r29
    3bcc:	cf 91       	pop	r28
    3bce:	0f 91       	pop	r16
    3bd0:	0f 90       	pop	r0
    3bd2:	18 95       	reti

00003bd4 <RXISRPORT2pend>:
    3bd4:	00 91 a0 18 	lds	r16, 0x18A0
    3bd8:	00 23       	and	r16, r16
    3bda:	21 f4       	brne	.+8      	; 0x3be4 <RXISRPORT2postmb>
    3bdc:	00 91 9f 18 	lds	r16, 0x189F
    3be0:	00 31       	cpi	r16, 0x10	; 16
    3be2:	84 f3       	brlt	.-32     	; 0x3bc4 <RXISRPORT2eoi>

00003be4 <RXISRPORT2postmb>:
    3be4:	0c 94 60 1c 	jmp	0x38c0	; 0x38c0 <RXISRPORT0postmb>

00003be8 <TXISRPORT2>:
    3be8:	0f 92       	push	r0
    3bea:	0f 93       	push	r16
    3bec:	cf 93       	push	r28
    3bee:	df 93       	push	r29
    3bf0:	0f b7       	in	r16, 0x3f	; 63
    3bf2:	00 68       	ori	r16, 0x80	; 128
    3bf4:	0f 93       	push	r16
    3bf6:	c0 91 a8 18 	lds	r28, 0x18A8
    3bfa:	c1 50       	subi	r28, 0x01	; 1
    3bfc:	10 f1       	brcs	.+68     	; 0x3c42 <TXISRPORT2fifoempty>
    3bfe:	c0 93 a8 18 	sts	0x18A8, r28
    3c02:	c0 91 9e 18 	lds	r28, 0x189E
    3c06:	d6 e8       	ldi	r29, 0x86	; 134
    3c08:	09 91       	ld	r16, Y+
    3c0a:	00 93 d6 00 	sts	0x00D6, r16
    3c0e:	c0 93 9e 18 	sts	0x189E, r28

00003c12 <TXISRPORT2chkpending>:
    3c12:	c0 91 a6 18 	lds	r28, 0x18A6
    3c16:	d0 91 a7 18 	lds	r29, 0x18A7
    3c1a:	0d 81       	ldd	r16, Y+5	; 0x05
    3c1c:	00 23       	and	r16, r16
    3c1e:	59 f4       	brne	.+22     	; 0x3c36 <TXISRPORT2pending>
    3c20:	09 81       	ldd	r16, Y+1	; 0x01
    3c22:	00 23       	and	r16, r16
    3c24:	41 f0       	breq	.+16     	; 0x3c36 <TXISRPORT2pending>

00003c26 <TXISRPORT2eoi>:
    3c26:	0f 91       	pop	r16
    3c28:	0f 77       	andi	r16, 0x7F	; 127
    3c2a:	0f bf       	out	0x3f, r16	; 63
    3c2c:	df 91       	pop	r29
    3c2e:	cf 91       	pop	r28
    3c30:	0f 91       	pop	r16
    3c32:	0f 90       	pop	r0
    3c34:	18 95       	reti

00003c36 <TXISRPORT2pending>:
    3c36:	00 91 a8 18 	lds	r16, 0x18A8
    3c3a:	00 3f       	cpi	r16, 0xF0	; 240
    3c3c:	a0 f7       	brcc	.-24     	; 0x3c26 <TXISRPORT2eoi>
    3c3e:	0c 94 60 1c 	jmp	0x38c0	; 0x38c0 <RXISRPORT0postmb>

00003c42 <TXISRPORT2fifoempty>:
    3c42:	00 91 d1 00 	lds	r16, 0x00D1
    3c46:	0f 7d       	andi	r16, 0xDF	; 223
    3c48:	00 93 d1 00 	sts	0x00D1, r16
    3c4c:	0c 94 09 1e 	jmp	0x3c12	; 0x3c12 <TXISRPORT2chkpending>

00003c50 <RXISRPORT3>:
    3c50:	0f 92       	push	r0
    3c52:	0f 93       	push	r16
    3c54:	cf 93       	push	r28
    3c56:	df 93       	push	r29
    3c58:	0f b7       	in	r16, 0x3f	; 63
    3c5a:	00 68       	ori	r16, 0x80	; 128
    3c5c:	0f 93       	push	r16
    3c5e:	00 91 b9 18 	lds	r16, 0x18B9
    3c62:	0c 7f       	andi	r16, 0xFC	; 252
    3c64:	00 93 b9 18 	sts	0x18B9, r16
    3c68:	00 91 30 01 	lds	r16, 0x0130
    3c6c:	04 fb       	bst	r16, 4
    3c6e:	56 f4       	brtc	.+20     	; 0x3c84 <RXISRPORT3noframeerror>
    3c70:	c0 91 a9 18 	lds	r28, 0x18A9
    3c74:	d0 91 aa 18 	lds	r29, 0x18AA
    3c78:	21 96       	adiw	r28, 0x01	; 1
    3c7a:	21 f0       	breq	.+8      	; 0x3c84 <RXISRPORT3noframeerror>
    3c7c:	c0 93 a9 18 	sts	0x18A9, r28
    3c80:	d0 93 aa 18 	sts	0x18AA, r29

00003c84 <RXISRPORT3noframeerror>:
    3c84:	03 fb       	bst	r16, 3
    3c86:	56 f4       	brtc	.+20     	; 0x3c9c <RXISRPORT3nodataovr>
    3c88:	c0 91 ab 18 	lds	r28, 0x18AB
    3c8c:	d0 91 ac 18 	lds	r29, 0x18AC
    3c90:	21 96       	adiw	r28, 0x01	; 1
    3c92:	21 f0       	breq	.+8      	; 0x3c9c <RXISRPORT3nodataovr>
    3c94:	c0 93 ab 18 	sts	0x18AB, r28
    3c98:	d0 93 ac 18 	sts	0x18AC, r29

00003c9c <RXISRPORT3nodataovr>:
    3c9c:	c0 91 af 18 	lds	r28, 0x18AF
    3ca0:	d3 e8       	ldi	r29, 0x83	; 131
    3ca2:	00 91 36 01 	lds	r16, 0x0136
    3ca6:	09 93       	st	Y+, r16
    3ca8:	c0 93 af 18 	sts	0x18AF, r28
    3cac:	00 91 b0 18 	lds	r16, 0x18B0
    3cb0:	0c 17       	cp	r16, r28
    3cb2:	71 f4       	brne	.+28     	; 0x3cd0 <RXISRPORT3nofifoovr>
    3cb4:	03 95       	inc	r16
    3cb6:	00 93 b0 18 	sts	0x18B0, r16
    3cba:	c0 91 ad 18 	lds	r28, 0x18AD
    3cbe:	d0 91 ae 18 	lds	r29, 0x18AE
    3cc2:	21 96       	adiw	r28, 0x01	; 1
    3cc4:	21 f0       	breq	.+8      	; 0x3cce <RXISRPORT3nodataovr+0x32>
    3cc6:	c0 93 ad 18 	sts	0x18AD, r28
    3cca:	d0 93 ae 18 	sts	0x18AE, r29
    3cce:	0a c0       	rjmp	.+20     	; 0x3ce4 <RXISRPORT3chkpending>

00003cd0 <RXISRPORT3nofifoovr>:
    3cd0:	c0 91 b3 18 	lds	r28, 0x18B3
    3cd4:	d0 91 b4 18 	lds	r29, 0x18B4
    3cd8:	21 96       	adiw	r28, 0x01	; 1
    3cda:	21 f0       	breq	.+8      	; 0x3ce4 <RXISRPORT3chkpending>
    3cdc:	c0 93 b3 18 	sts	0x18B3, r28
    3ce0:	d0 93 b4 18 	sts	0x18B4, r29

00003ce4 <RXISRPORT3chkpending>:
    3ce4:	c0 91 b7 18 	lds	r28, 0x18B7
    3ce8:	d0 91 b8 18 	lds	r29, 0x18B8
    3cec:	0d 81       	ldd	r16, Y+5	; 0x05
    3cee:	00 23       	and	r16, r16
    3cf0:	59 f4       	brne	.+22     	; 0x3d08 <RXISRPORT3pend>
    3cf2:	09 81       	ldd	r16, Y+1	; 0x01
    3cf4:	00 23       	and	r16, r16
    3cf6:	41 f0       	breq	.+16     	; 0x3d08 <RXISRPORT3pend>

00003cf8 <RXISRPORT3eoi>:
    3cf8:	0f 91       	pop	r16
    3cfa:	0f 77       	andi	r16, 0x7F	; 127
    3cfc:	0f bf       	out	0x3f, r16	; 63
    3cfe:	df 91       	pop	r29
    3d00:	cf 91       	pop	r28
    3d02:	0f 91       	pop	r16
    3d04:	0f 90       	pop	r0
    3d06:	18 95       	reti

00003d08 <RXISRPORT3pend>:
    3d08:	00 91 b4 18 	lds	r16, 0x18B4
    3d0c:	00 23       	and	r16, r16
    3d0e:	21 f4       	brne	.+8      	; 0x3d18 <RXISRPORT3postmb>
    3d10:	00 91 b3 18 	lds	r16, 0x18B3
    3d14:	00 31       	cpi	r16, 0x10	; 16
    3d16:	84 f3       	brlt	.-32     	; 0x3cf8 <RXISRPORT3eoi>

00003d18 <RXISRPORT3postmb>:
    3d18:	0c 94 60 1c 	jmp	0x38c0	; 0x38c0 <RXISRPORT0postmb>

00003d1c <TXISRPORT3>:
    3d1c:	0f 92       	push	r0
    3d1e:	0f 93       	push	r16
    3d20:	cf 93       	push	r28
    3d22:	df 93       	push	r29
    3d24:	0f b7       	in	r16, 0x3f	; 63
    3d26:	00 68       	ori	r16, 0x80	; 128
    3d28:	0f 93       	push	r16
    3d2a:	c0 91 bc 18 	lds	r28, 0x18BC
    3d2e:	c1 50       	subi	r28, 0x01	; 1
    3d30:	10 f1       	brcs	.+68     	; 0x3d76 <TXISRPORT3fifoempty>
    3d32:	c0 93 bc 18 	sts	0x18BC, r28
    3d36:	c0 91 b2 18 	lds	r28, 0x18B2
    3d3a:	d7 e8       	ldi	r29, 0x87	; 135
    3d3c:	09 91       	ld	r16, Y+
    3d3e:	00 93 36 01 	sts	0x0136, r16
    3d42:	c0 93 b2 18 	sts	0x18B2, r28

00003d46 <TXISRPORT3chkpending>:
    3d46:	c0 91 ba 18 	lds	r28, 0x18BA
    3d4a:	d0 91 bb 18 	lds	r29, 0x18BB
    3d4e:	0d 81       	ldd	r16, Y+5	; 0x05
    3d50:	00 23       	and	r16, r16
    3d52:	59 f4       	brne	.+22     	; 0x3d6a <TXISRPORT3pending>
    3d54:	09 81       	ldd	r16, Y+1	; 0x01
    3d56:	00 23       	and	r16, r16
    3d58:	41 f0       	breq	.+16     	; 0x3d6a <TXISRPORT3pending>

00003d5a <TXISRPORT3eoi>:
    3d5a:	0f 91       	pop	r16
    3d5c:	0f 77       	andi	r16, 0x7F	; 127
    3d5e:	0f bf       	out	0x3f, r16	; 63
    3d60:	df 91       	pop	r29
    3d62:	cf 91       	pop	r28
    3d64:	0f 91       	pop	r16
    3d66:	0f 90       	pop	r0
    3d68:	18 95       	reti

00003d6a <TXISRPORT3pending>:
    3d6a:	00 91 bc 18 	lds	r16, 0x18BC
    3d6e:	00 3f       	cpi	r16, 0xF0	; 240
    3d70:	a0 f7       	brcc	.-24     	; 0x3d5a <TXISRPORT3eoi>
    3d72:	0c 94 60 1c 	jmp	0x38c0	; 0x38c0 <RXISRPORT0postmb>

00003d76 <TXISRPORT3fifoempty>:
    3d76:	00 91 31 01 	lds	r16, 0x0131
    3d7a:	0f 7d       	andi	r16, 0xDF	; 223
    3d7c:	00 93 31 01 	sts	0x0131, r16
    3d80:	0c 94 a3 1e 	jmp	0x3d46	; 0x3d46 <TXISRPORT3chkpending>

00003d84 <OSEventNameGet>:
*********************************************************************************************************
*/

#if (OS_EVENT_EN) && (OS_EVENT_NAME_SIZE > 1)
INT8U  OSEventNameGet (OS_EVENT *pevent, INT8U *pname, INT8U *perr)
{
    3d84:	cf 93       	push	r28
    3d86:	df 93       	push	r29
    3d88:	fc 01       	movw	r30, r24
    3d8a:	db 01       	movw	r26, r22
    3d8c:	ea 01       	movw	r28, r20
    if (pname == (INT8U *)0) {                   /* Is 'pname' a NULL pointer?                         */
        *perr = OS_ERR_PNAME_NULL;
        return (0);
    }
#endif
    if (OSIntNesting > 0) {                      /* See if trying to call from an ISR                  */
    3d8e:	80 91 dd 11 	lds	r24, 0x11DD
    3d92:	88 23       	and	r24, r24
    3d94:	11 f0       	breq	.+4      	; 0x3d9a <OSEventNameGet+0x16>
        *perr  = OS_ERR_NAME_GET_ISR;
    3d96:	81 e1       	ldi	r24, 0x11	; 17
    3d98:	05 c0       	rjmp	.+10     	; 0x3da4 <OSEventNameGet+0x20>
        return (0);
    }
    switch (pevent->OSEventType) {
    3d9a:	80 81       	ld	r24, Z
    3d9c:	81 50       	subi	r24, 0x01	; 1
    3d9e:	84 30       	cpi	r24, 0x04	; 4
    3da0:	20 f0       	brcs	.+8      	; 0x3daa <OSEventNameGet+0x26>
        case OS_EVENT_TYPE_MBOX:
        case OS_EVENT_TYPE_Q:
             break;

        default:
             *perr = OS_ERR_EVENT_TYPE;
    3da2:	81 e0       	ldi	r24, 0x01	; 1
    3da4:	88 83       	st	Y, r24
    3da6:	30 e0       	ldi	r19, 0x00	; 0
    3da8:	10 c0       	rjmp	.+32     	; 0x3dca <OSEventNameGet+0x46>
             return (0);
    }
    OS_ENTER_CRITICAL();
    3daa:	4f b7       	in	r20, 0x3f	; 63
    3dac:	f8 94       	cli
    len   = OS_StrCopy(pname, pevent->OSEventName);   /* Copy name from OS_EVENT                       */
    3dae:	cf 01       	movw	r24, r30
    3db0:	0e 96       	adiw	r24, 0x0e	; 14
    3db2:	fc 01       	movw	r30, r24
    3db4:	02 c0       	rjmp	.+4      	; 0x3dba <OSEventNameGet+0x36>
    INT8U  len;


    len = 0;
    while (*psrc != OS_ASCII_NUL) {
        *pdest++ = *psrc++;
    3db6:	2d 93       	st	X+, r18
    3db8:	31 96       	adiw	r30, 0x01	; 1
    3dba:	3e 2f       	mov	r19, r30
    3dbc:	38 1b       	sub	r19, r24
{
    INT8U  len;


    len = 0;
    while (*psrc != OS_ASCII_NUL) {
    3dbe:	20 81       	ld	r18, Z
    3dc0:	22 23       	and	r18, r18
    3dc2:	c9 f7       	brne	.-14     	; 0x3db6 <OSEventNameGet+0x32>
        *pdest++ = *psrc++;
        len++;
    }
    *pdest = OS_ASCII_NUL;
    3dc4:	1c 92       	st	X, r1
             *perr = OS_ERR_EVENT_TYPE;
             return (0);
    }
    OS_ENTER_CRITICAL();
    len   = OS_StrCopy(pname, pevent->OSEventName);   /* Copy name from OS_EVENT                       */
    OS_EXIT_CRITICAL();
    3dc6:	4f bf       	out	0x3f, r20	; 63
    *perr = OS_ERR_NONE;
    3dc8:	18 82       	st	Y, r1
    return (len);
}
    3dca:	83 2f       	mov	r24, r19
    3dcc:	df 91       	pop	r29
    3dce:	cf 91       	pop	r28
    3dd0:	08 95       	ret

00003dd2 <OSEventNameSet>:
*********************************************************************************************************
*/

#if (OS_EVENT_EN) && (OS_EVENT_NAME_SIZE > 1)
void  OSEventNameSet (OS_EVENT *pevent, INT8U *pname, INT8U *perr)
{
    3dd2:	cf 93       	push	r28
    3dd4:	df 93       	push	r29
    3dd6:	9c 01       	movw	r18, r24
    3dd8:	db 01       	movw	r26, r22
    3dda:	ea 01       	movw	r28, r20
    if (pname == (INT8U *)0) {                   /* Is 'pname' a NULL pointer?                         */
        *perr = OS_ERR_PNAME_NULL;
        return;
    }
#endif
    if (OSIntNesting > 0) {                      /* See if trying to call from an ISR                  */
    3ddc:	80 91 dd 11 	lds	r24, 0x11DD
    3de0:	88 23       	and	r24, r24
    3de2:	11 f0       	breq	.+4      	; 0x3de8 <OSEventNameSet+0x16>
        *perr = OS_ERR_NAME_SET_ISR;
    3de4:	82 e1       	ldi	r24, 0x12	; 18
    3de6:	15 c0       	rjmp	.+42     	; 0x3e12 <OSEventNameSet+0x40>
        return;
    }
    switch (pevent->OSEventType) {
    3de8:	f9 01       	movw	r30, r18
    3dea:	80 81       	ld	r24, Z
    3dec:	81 50       	subi	r24, 0x01	; 1
    3dee:	84 30       	cpi	r24, 0x04	; 4
    3df0:	10 f0       	brcs	.+4      	; 0x3df6 <OSEventNameSet+0x24>
        case OS_EVENT_TYPE_MBOX:
        case OS_EVENT_TYPE_Q:
             break;

        default:
             *perr = OS_ERR_EVENT_TYPE;
    3df2:	81 e0       	ldi	r24, 0x01	; 1
    3df4:	0e c0       	rjmp	.+28     	; 0x3e12 <OSEventNameSet+0x40>
             return;
    }
    OS_ENTER_CRITICAL();
    3df6:	4f b7       	in	r20, 0x3f	; 63
    3df8:	f8 94       	cli
    3dfa:	fb 01       	movw	r30, r22
    3dfc:	01 c0       	rjmp	.+2      	; 0x3e00 <OSEventNameSet+0x2e>
    INT8U  len;


    len = 0;
    while (*psrc != OS_ASCII_NUL) {
        psrc++;
    3dfe:	31 96       	adiw	r30, 0x01	; 1
    3e00:	9e 2f       	mov	r25, r30
    3e02:	9a 1b       	sub	r25, r26
{
    INT8U  len;


    len = 0;
    while (*psrc != OS_ASCII_NUL) {
    3e04:	80 81       	ld	r24, Z
    3e06:	88 23       	and	r24, r24
    3e08:	d1 f7       	brne	.-12     	; 0x3dfe <OSEventNameSet+0x2c>
             *perr = OS_ERR_EVENT_TYPE;
             return;
    }
    OS_ENTER_CRITICAL();
    len = OS_StrLen(pname);                           /* Can we fit the string in the storage area?    */
    if (len > (OS_EVENT_NAME_SIZE - 1)) {             /* No                                            */
    3e0a:	90 31       	cpi	r25, 0x10	; 16
    3e0c:	20 f0       	brcs	.+8      	; 0x3e16 <OSEventNameSet+0x44>
        OS_EXIT_CRITICAL();
    3e0e:	4f bf       	out	0x3f, r20	; 63
        *perr = OS_ERR_EVENT_NAME_TOO_LONG;
    3e10:	8b e0       	ldi	r24, 0x0B	; 11
    3e12:	88 83       	st	Y, r24
    3e14:	0b c0       	rjmp	.+22     	; 0x3e2c <OSEventNameSet+0x5a>
        return;
    }
    (void)OS_StrCopy(pevent->OSEventName, pname);     /* Yes, copy name to the event control block     */
    3e16:	f9 01       	movw	r30, r18
    3e18:	3e 96       	adiw	r30, 0x0e	; 14
    3e1a:	02 c0       	rjmp	.+4      	; 0x3e20 <OSEventNameSet+0x4e>
    INT8U  len;


    len = 0;
    while (*psrc != OS_ASCII_NUL) {
        *pdest++ = *psrc++;
    3e1c:	81 93       	st	Z+, r24
    3e1e:	11 96       	adiw	r26, 0x01	; 1
{
    INT8U  len;


    len = 0;
    while (*psrc != OS_ASCII_NUL) {
    3e20:	8c 91       	ld	r24, X
    3e22:	88 23       	and	r24, r24
    3e24:	d9 f7       	brne	.-10     	; 0x3e1c <OSEventNameSet+0x4a>
        *pdest++ = *psrc++;
        len++;
    }
    *pdest = OS_ASCII_NUL;
    3e26:	10 82       	st	Z, r1
        OS_EXIT_CRITICAL();
        *perr = OS_ERR_EVENT_NAME_TOO_LONG;
        return;
    }
    (void)OS_StrCopy(pevent->OSEventName, pname);     /* Yes, copy name to the event control block     */
    OS_EXIT_CRITICAL();
    3e28:	4f bf       	out	0x3f, r20	; 63
    *perr = OS_ERR_NONE;
    3e2a:	18 82       	st	Y, r1
}
    3e2c:	df 91       	pop	r29
    3e2e:	cf 91       	pop	r28
    3e30:	08 95       	ret

00003e32 <OSIntEnter>:
*********************************************************************************************************
*/

void  OSIntEnter (void)
{
    if (OSRunning == OS_TRUE) {
    3e32:	80 91 ba 10 	lds	r24, 0x10BA
    3e36:	81 30       	cpi	r24, 0x01	; 1
    3e38:	39 f4       	brne	.+14     	; 0x3e48 <OSIntEnter+0x16>
        if (OSIntNesting < 255u) {
    3e3a:	80 91 dd 11 	lds	r24, 0x11DD
    3e3e:	8f 3f       	cpi	r24, 0xFF	; 255
    3e40:	19 f0       	breq	.+6      	; 0x3e48 <OSIntEnter+0x16>
            OSIntNesting++;                      /* Increment ISR nesting level                        */
    3e42:	8f 5f       	subi	r24, 0xFF	; 255
    3e44:	80 93 dd 11 	sts	0x11DD, r24
    3e48:	08 95       	ret

00003e4a <OSSchedLock>:
    OS_CPU_SR  cpu_sr = 0;
#endif



    if (OSRunning == OS_TRUE) {                  /* Make sure multitasking is running                  */
    3e4a:	80 91 ba 10 	lds	r24, 0x10BA
    3e4e:	81 30       	cpi	r24, 0x01	; 1
    3e50:	71 f4       	brne	.+28     	; 0x3e6e <OSSchedLock+0x24>
        OS_ENTER_CRITICAL();
    3e52:	9f b7       	in	r25, 0x3f	; 63
    3e54:	f8 94       	cli
        if (OSIntNesting == 0) {                 /* Can't call from an ISR                             */
    3e56:	80 91 dd 11 	lds	r24, 0x11DD
    3e5a:	88 23       	and	r24, r24
    3e5c:	39 f4       	brne	.+14     	; 0x3e6c <OSSchedLock+0x22>
            if (OSLockNesting < 255u) {          /* Prevent OSLockNesting from wrapping back to 0      */
    3e5e:	80 91 b9 10 	lds	r24, 0x10B9
    3e62:	8f 3f       	cpi	r24, 0xFF	; 255
    3e64:	19 f0       	breq	.+6      	; 0x3e6c <OSSchedLock+0x22>
                OSLockNesting++;                 /* Increment lock nesting level                       */
    3e66:	8f 5f       	subi	r24, 0xFF	; 255
    3e68:	80 93 b9 10 	sts	0x10B9, r24
            }
        }
        OS_EXIT_CRITICAL();
    3e6c:	9f bf       	out	0x3f, r25	; 63
    3e6e:	08 95       	ret

00003e70 <OSVersion>:
*/

INT16U  OSVersion (void)
{
    return (OS_VERSION);
}
    3e70:	8e e1       	ldi	r24, 0x1E	; 30
    3e72:	91 e0       	ldi	r25, 0x01	; 1
    3e74:	08 95       	ret

00003e76 <OS_EventTaskRdy>:
* Note       : This function is INTERNAL to uC/OS-II and your application should not call it.
*********************************************************************************************************
*/
#if (OS_EVENT_EN)
INT8U  OS_EventTaskRdy (OS_EVENT *pevent, void *pmsg, INT8U msk, INT8U pend_stat)
{
    3e76:	0f 93       	push	r16
    3e78:	1f 93       	push	r17
    3e7a:	cf 93       	push	r28
    3e7c:	df 93       	push	r29
    3e7e:	8c 01       	movw	r16, r24
    INT16U  *ptbl;
#endif


#if OS_LOWEST_PRIO <= 63
    y    = OSUnMapTbl[pevent->OSEventGrp];              /* Find HPT waiting for message                */
    3e80:	dc 01       	movw	r26, r24
    3e82:	15 96       	adiw	r26, 0x05	; 5
    3e84:	ec 91       	ld	r30, X
    3e86:	f0 e0       	ldi	r31, 0x00	; 0
    3e88:	ee 5d       	subi	r30, 0xDE	; 222
    3e8a:	fd 4f       	sbci	r31, 0xFD	; 253
    3e8c:	80 81       	ld	r24, Z
    x    = OSUnMapTbl[pevent->OSEventTbl[y]];
    3e8e:	c8 2f       	mov	r28, r24
    3e90:	d0 e0       	ldi	r29, 0x00	; 0
    prio = (INT8U)((y << 3) + x);                       /* Find priority of task getting the msg       */
    3e92:	f8 01       	movw	r30, r16
    3e94:	ec 0f       	add	r30, r28
    3e96:	fd 1f       	adc	r31, r29
    3e98:	e6 81       	ldd	r30, Z+6	; 0x06
    3e9a:	f0 e0       	ldi	r31, 0x00	; 0
    3e9c:	ee 5d       	subi	r30, 0xDE	; 222
    3e9e:	fd 4f       	sbci	r31, 0xFD	; 253
    3ea0:	58 2f       	mov	r21, r24
    3ea2:	55 0f       	add	r21, r21
    3ea4:	55 0f       	add	r21, r21
    3ea6:	55 0f       	add	r21, r21
    3ea8:	80 81       	ld	r24, Z
    3eaa:	58 0f       	add	r21, r24
        x = OSUnMapTbl[(*ptbl >> 8) & 0xFF] + 8;
    }
    prio = (INT8U)((y << 4) + x);                       /* Find priority of task getting the msg       */
#endif

    ptcb                  =  OSTCBPrioTbl[prio];        /* Point to this task's OS_TCB                 */
    3eac:	e5 2f       	mov	r30, r21
    3eae:	f0 e0       	ldi	r31, 0x00	; 0
    3eb0:	ee 0f       	add	r30, r30
    3eb2:	ff 1f       	adc	r31, r31
    3eb4:	e7 51       	subi	r30, 0x17	; 23
    3eb6:	f8 4e       	sbci	r31, 0xE8	; 232
    3eb8:	a0 81       	ld	r26, Z
    3eba:	b1 81       	ldd	r27, Z+1	; 0x01
    ptcb->OSTCBDly        =  0;                         /* Prevent OSTimeTick() from readying task     */
    3ebc:	59 96       	adiw	r26, 0x19	; 25
    3ebe:	1c 92       	st	X, r1
    3ec0:	1e 92       	st	-X, r1
    3ec2:	58 97       	sbiw	r26, 0x18	; 24
#if ((OS_Q_EN > 0) && (OS_MAX_QS > 0)) || (OS_MBOX_EN > 0)
    ptcb->OSTCBMsg        =  pmsg;                      /* Send message directly to waiting task       */
    3ec4:	57 96       	adiw	r26, 0x17	; 23
    3ec6:	7c 93       	st	X, r23
    3ec8:	6e 93       	st	-X, r22
    3eca:	56 97       	sbiw	r26, 0x16	; 22
#else
    pmsg                  =  pmsg;                      /* Prevent compiler warning if not used        */
#endif
    ptcb->OSTCBStat      &= ~msk;                       /* Clear bit associated with event type        */
    3ecc:	40 95       	com	r20
    3ece:	5a 96       	adiw	r26, 0x1a	; 26
    3ed0:	8c 91       	ld	r24, X
    3ed2:	5a 97       	sbiw	r26, 0x1a	; 26
    3ed4:	84 23       	and	r24, r20
    3ed6:	5a 96       	adiw	r26, 0x1a	; 26
    3ed8:	8c 93       	st	X, r24
    3eda:	5a 97       	sbiw	r26, 0x1a	; 26
    ptcb->OSTCBStatPend   =  pend_stat;                 /* Set pend status of post or abort            */
    3edc:	5b 96       	adiw	r26, 0x1b	; 27
    3ede:	2c 93       	st	X, r18
    3ee0:	5b 97       	sbiw	r26, 0x1b	; 27
                                                        /* See if task is ready (could be susp'd)      */
    if ((ptcb->OSTCBStat &   OS_STAT_SUSPEND) == OS_STAT_RDY) {
    3ee2:	83 fd       	sbrc	r24, 3
    3ee4:	11 c0       	rjmp	.+34     	; 0x3f08 <OS_EventTaskRdy+0x92>
        OSRdyGrp         |=  ptcb->OSTCBBitY;           /* Put task in the ready to run list           */
    3ee6:	80 91 d2 11 	lds	r24, 0x11D2
    3eea:	90 96       	adiw	r26, 0x20	; 32
    3eec:	9c 91       	ld	r25, X
    3eee:	90 97       	sbiw	r26, 0x20	; 32
    3ef0:	89 2b       	or	r24, r25
    3ef2:	80 93 d2 11 	sts	0x11D2, r24
        OSRdyTbl[y]      |=  ptcb->OSTCBBitX;
    3ef6:	fe 01       	movw	r30, r28
    3ef8:	ed 52       	subi	r30, 0x2D	; 45
    3efa:	fe 4e       	sbci	r31, 0xEE	; 238
    3efc:	80 81       	ld	r24, Z
    3efe:	5f 96       	adiw	r26, 0x1f	; 31
    3f00:	9c 91       	ld	r25, X
    3f02:	5f 97       	sbiw	r26, 0x1f	; 31
    3f04:	89 2b       	or	r24, r25
    3f06:	80 83       	st	Z, r24
{
    INT8U  y;


    y                       =  ptcb->OSTCBY;
    pevent->OSEventTbl[y]  &= ~ptcb->OSTCBBitX;         /* Remove task from wait list                  */
    3f08:	5e 96       	adiw	r26, 0x1e	; 30
    3f0a:	8c 91       	ld	r24, X
    3f0c:	5e 97       	sbiw	r26, 0x1e	; 30
    3f0e:	f8 01       	movw	r30, r16
    3f10:	e8 0f       	add	r30, r24
    3f12:	f1 1d       	adc	r31, r1
    3f14:	5f 96       	adiw	r26, 0x1f	; 31
    3f16:	8c 91       	ld	r24, X
    3f18:	5f 97       	sbiw	r26, 0x1f	; 31
    3f1a:	80 95       	com	r24
    3f1c:	96 81       	ldd	r25, Z+6	; 0x06
    3f1e:	89 23       	and	r24, r25
    3f20:	86 83       	std	Z+6, r24	; 0x06
    if (pevent->OSEventTbl[y] == 0) {
    3f22:	88 23       	and	r24, r24
    3f24:	41 f4       	brne	.+16     	; 0x3f36 <OS_EventTaskRdy+0xc0>
        pevent->OSEventGrp &= ~ptcb->OSTCBBitY;
    3f26:	90 96       	adiw	r26, 0x20	; 32
    3f28:	9c 91       	ld	r25, X
    3f2a:	90 97       	sbiw	r26, 0x20	; 32
    3f2c:	90 95       	com	r25
    3f2e:	f8 01       	movw	r30, r16
    3f30:	85 81       	ldd	r24, Z+5	; 0x05
    3f32:	89 23       	and	r24, r25
    3f34:	85 83       	std	Z+5, r24	; 0x05
        OSRdyTbl[y]      |=  ptcb->OSTCBBitX;
    }

    OS_EventTaskRemove(ptcb, pevent);                   /* Remove this task from event   wait list     */
#if (OS_EVENT_MULTI_EN > 0)
    if (ptcb->OSTCBEventMultiPtr != (OS_EVENT **)0) {   /* Remove this task from events' wait lists    */
    3f36:	54 96       	adiw	r26, 0x14	; 20
    3f38:	2d 91       	ld	r18, X+
    3f3a:	3c 91       	ld	r19, X
    3f3c:	55 97       	sbiw	r26, 0x15	; 21
    3f3e:	21 15       	cp	r18, r1
    3f40:	31 05       	cpc	r19, r1
    3f42:	39 f1       	breq	.+78     	; 0x3f92 <OS_EventTaskRdy+0x11c>
    INT16U     bity;
    INT16U     bitx;
#endif


    y       =  ptcb->OSTCBY;
    3f44:	5e 96       	adiw	r26, 0x1e	; 30
    3f46:	8c 91       	ld	r24, X
    3f48:	5e 97       	sbiw	r26, 0x1e	; 30
    bity    =  ptcb->OSTCBBitY;
    3f4a:	90 96       	adiw	r26, 0x20	; 32
    3f4c:	4c 91       	ld	r20, X
    3f4e:	90 97       	sbiw	r26, 0x20	; 32
    bitx    =  ptcb->OSTCBBitX;
    3f50:	5f 96       	adiw	r26, 0x1f	; 31
    3f52:	9c 91       	ld	r25, X
    3f54:	5f 97       	sbiw	r26, 0x1f	; 31
    pevents =  pevents_multi;
    pevent  = *pevents;
    3f56:	f9 01       	movw	r30, r18
    3f58:	c0 81       	ld	r28, Z
    3f5a:	d1 81       	ldd	r29, Z+1	; 0x01
    while (pevent != (OS_EVENT *)0) {                   /* Remove task from all events' wait lists     */
        pevent->OSEventTbl[y]  &= ~bitx;
    3f5c:	68 2f       	mov	r22, r24
    3f5e:	70 e0       	ldi	r23, 0x00	; 0
    3f60:	90 95       	com	r25
        if (pevent->OSEventTbl[y] == 0) {
            pevent->OSEventGrp &= ~bity;
    3f62:	40 95       	com	r20
    3f64:	10 c0       	rjmp	.+32     	; 0x3f86 <OS_EventTaskRdy+0x110>
    bity    =  ptcb->OSTCBBitY;
    bitx    =  ptcb->OSTCBBitX;
    pevents =  pevents_multi;
    pevent  = *pevents;
    while (pevent != (OS_EVENT *)0) {                   /* Remove task from all events' wait lists     */
        pevent->OSEventTbl[y]  &= ~bitx;
    3f66:	fe 01       	movw	r30, r28
    3f68:	e6 0f       	add	r30, r22
    3f6a:	f7 1f       	adc	r31, r23
    3f6c:	86 81       	ldd	r24, Z+6	; 0x06
    3f6e:	89 23       	and	r24, r25
    3f70:	86 83       	std	Z+6, r24	; 0x06
        if (pevent->OSEventTbl[y] == 0) {
    3f72:	88 23       	and	r24, r24
    3f74:	19 f4       	brne	.+6      	; 0x3f7c <OS_EventTaskRdy+0x106>
            pevent->OSEventGrp &= ~bity;
    3f76:	8d 81       	ldd	r24, Y+5	; 0x05
    3f78:	84 23       	and	r24, r20
    3f7a:	8d 83       	std	Y+5, r24	; 0x05
        }
        pevents++;
    3f7c:	2e 5f       	subi	r18, 0xFE	; 254
    3f7e:	3f 4f       	sbci	r19, 0xFF	; 255
        pevent = *pevents;
    3f80:	f9 01       	movw	r30, r18
    3f82:	c0 81       	ld	r28, Z
    3f84:	d1 81       	ldd	r29, Z+1	; 0x01
    y       =  ptcb->OSTCBY;
    bity    =  ptcb->OSTCBBitY;
    bitx    =  ptcb->OSTCBBitX;
    pevents =  pevents_multi;
    pevent  = *pevents;
    while (pevent != (OS_EVENT *)0) {                   /* Remove task from all events' wait lists     */
    3f86:	20 97       	sbiw	r28, 0x00	; 0
    3f88:	71 f7       	brne	.-36     	; 0x3f66 <OS_EventTaskRdy+0xf0>

    OS_EventTaskRemove(ptcb, pevent);                   /* Remove this task from event   wait list     */
#if (OS_EVENT_MULTI_EN > 0)
    if (ptcb->OSTCBEventMultiPtr != (OS_EVENT **)0) {   /* Remove this task from events' wait lists    */
        OS_EventTaskRemoveMulti(ptcb, ptcb->OSTCBEventMultiPtr);
        ptcb->OSTCBEventPtr       = (OS_EVENT  *)pevent;/* Return event as first multi-pend event ready*/
    3f8a:	53 96       	adiw	r26, 0x13	; 19
    3f8c:	1c 93       	st	X, r17
    3f8e:	0e 93       	st	-X, r16
    3f90:	52 97       	sbiw	r26, 0x12	; 18
    }
#endif

    return (prio);
}
    3f92:	85 2f       	mov	r24, r21
    3f94:	df 91       	pop	r29
    3f96:	cf 91       	pop	r28
    3f98:	1f 91       	pop	r17
    3f9a:	0f 91       	pop	r16
    3f9c:	08 95       	ret

00003f9e <OS_EventTaskWait>:
* Note       : This function is INTERNAL to uC/OS-II and your application should not call it.
*********************************************************************************************************
*/
#if (OS_EVENT_EN)
void  OS_EventTaskWait (OS_EVENT *pevent)
{
    3f9e:	cf 93       	push	r28
    3fa0:	df 93       	push	r29
    3fa2:	ac 01       	movw	r20, r24
    INT8U  y;


    OSTCBCur->OSTCBEventPtr               = pevent;                 /* Store ptr to ECB in TCB         */
    3fa4:	a0 91 de 11 	lds	r26, 0x11DE
    3fa8:	b0 91 df 11 	lds	r27, 0x11DF
    3fac:	53 96       	adiw	r26, 0x13	; 19
    3fae:	9c 93       	st	X, r25
    3fb0:	8e 93       	st	-X, r24
    3fb2:	52 97       	sbiw	r26, 0x12	; 18

    pevent->OSEventTbl[OSTCBCur->OSTCBY] |= OSTCBCur->OSTCBBitX;    /* Put task in waiting list        */
    3fb4:	5e 96       	adiw	r26, 0x1e	; 30
    3fb6:	ec 91       	ld	r30, X
    3fb8:	5e 97       	sbiw	r26, 0x1e	; 30
    3fba:	f0 e0       	ldi	r31, 0x00	; 0
    3fbc:	5f 96       	adiw	r26, 0x1f	; 31
    3fbe:	9c 91       	ld	r25, X
    3fc0:	5f 97       	sbiw	r26, 0x1f	; 31
    3fc2:	9a 01       	movw	r18, r20
    3fc4:	2e 0f       	add	r18, r30
    3fc6:	3f 1f       	adc	r19, r31
    3fc8:	e9 01       	movw	r28, r18
    3fca:	8e 81       	ldd	r24, Y+6	; 0x06
    3fcc:	89 2b       	or	r24, r25
    3fce:	8e 83       	std	Y+6, r24	; 0x06
    pevent->OSEventGrp                   |= OSTCBCur->OSTCBBitY;
    3fd0:	90 96       	adiw	r26, 0x20	; 32
    3fd2:	2c 91       	ld	r18, X
    3fd4:	da 01       	movw	r26, r20
    3fd6:	15 96       	adiw	r26, 0x05	; 5
    3fd8:	8c 91       	ld	r24, X
    3fda:	15 97       	sbiw	r26, 0x05	; 5
    3fdc:	82 2b       	or	r24, r18
    3fde:	15 96       	adiw	r26, 0x05	; 5
    3fe0:	8c 93       	st	X, r24

    y             =  OSTCBCur->OSTCBY;            /* Task no longer ready                              */
    OSRdyTbl[y]  &= ~OSTCBCur->OSTCBBitX;
    3fe2:	ed 52       	subi	r30, 0x2D	; 45
    3fe4:	fe 4e       	sbci	r31, 0xEE	; 238
    3fe6:	90 95       	com	r25
    3fe8:	80 81       	ld	r24, Z
    3fea:	98 23       	and	r25, r24
    3fec:	90 83       	st	Z, r25
    if (OSRdyTbl[y] == 0) {
    3fee:	99 23       	and	r25, r25
    3ff0:	31 f4       	brne	.+12     	; 0x3ffe <OS_EventTaskWait+0x60>
        OSRdyGrp &= ~OSTCBCur->OSTCBBitY;         /* Clear event grp bit if this was only task pending */
    3ff2:	20 95       	com	r18
    3ff4:	80 91 d2 11 	lds	r24, 0x11D2
    3ff8:	82 23       	and	r24, r18
    3ffa:	80 93 d2 11 	sts	0x11D2, r24
    }
}
    3ffe:	df 91       	pop	r29
    4000:	cf 91       	pop	r28
    4002:	08 95       	ret

00004004 <OS_EventTaskWaitMulti>:
* Note       : This function is INTERNAL to uC/OS-II and your application should not call it.
*********************************************************************************************************
*/
#if ((OS_EVENT_EN) && (OS_EVENT_MULTI_EN > 0))
void  OS_EventTaskWaitMulti (OS_EVENT **pevents_wait)
{
    4004:	cf 93       	push	r28
    4006:	df 93       	push	r29
    4008:	fc 01       	movw	r30, r24
    OS_EVENT **pevents;
    OS_EVENT  *pevent;
    INT8U      y;


    OSTCBCur->OSTCBEventPtr      = (OS_EVENT  *)0;
    400a:	c0 91 de 11 	lds	r28, 0x11DE
    400e:	d0 91 df 11 	lds	r29, 0x11DF
    4012:	1b 8a       	std	Y+19, r1	; 0x13
    4014:	1a 8a       	std	Y+18, r1	; 0x12
    OSTCBCur->OSTCBEventMultiPtr = (OS_EVENT **)pevents_wait;       /* Store ptr to ECBs in TCB        */
    4016:	9d 8b       	std	Y+21, r25	; 0x15
    4018:	8c 8b       	std	Y+20, r24	; 0x14

    pevents =  pevents_wait;
    pevent  = *pevents;
    401a:	a0 81       	ld	r26, Z
    401c:	b1 81       	ldd	r27, Z+1	; 0x01
    401e:	9c 01       	movw	r18, r24
    4020:	13 c0       	rjmp	.+38     	; 0x4048 <OS_EventTaskWaitMulti+0x44>
    while (pevent != (OS_EVENT *)0) {                               /* Put task in waiting lists       */
        pevent->OSEventTbl[OSTCBCur->OSTCBY] |= OSTCBCur->OSTCBBitX;
    4022:	ad 01       	movw	r20, r26
    4024:	4e 0f       	add	r20, r30
    4026:	51 1d       	adc	r21, r1
    4028:	fa 01       	movw	r30, r20
    402a:	86 81       	ldd	r24, Z+6	; 0x06
    402c:	89 2b       	or	r24, r25
    402e:	86 83       	std	Z+6, r24	; 0x06
        pevent->OSEventGrp                   |= OSTCBCur->OSTCBBitY;
    4030:	15 96       	adiw	r26, 0x05	; 5
    4032:	8c 91       	ld	r24, X
    4034:	15 97       	sbiw	r26, 0x05	; 5
    4036:	98 a1       	ldd	r25, Y+32	; 0x20
    4038:	89 2b       	or	r24, r25
    403a:	15 96       	adiw	r26, 0x05	; 5
    403c:	8c 93       	st	X, r24
        pevents++;
    403e:	2e 5f       	subi	r18, 0xFE	; 254
    4040:	3f 4f       	sbci	r19, 0xFF	; 255
        pevent = *pevents;
    4042:	f9 01       	movw	r30, r18
    4044:	a0 81       	ld	r26, Z
    4046:	b1 81       	ldd	r27, Z+1	; 0x01
    4048:	ee 8d       	ldd	r30, Y+30	; 0x1e
    404a:	9f 8d       	ldd	r25, Y+31	; 0x1f
    OSTCBCur->OSTCBEventPtr      = (OS_EVENT  *)0;
    OSTCBCur->OSTCBEventMultiPtr = (OS_EVENT **)pevents_wait;       /* Store ptr to ECBs in TCB        */

    pevents =  pevents_wait;
    pevent  = *pevents;
    while (pevent != (OS_EVENT *)0) {                               /* Put task in waiting lists       */
    404c:	10 97       	sbiw	r26, 0x00	; 0
    404e:	49 f7       	brne	.-46     	; 0x4022 <OS_EventTaskWaitMulti+0x1e>
        pevents++;
        pevent = *pevents;
    }

    y             =  OSTCBCur->OSTCBY;            /* Task no longer ready                              */
    OSRdyTbl[y]  &= ~OSTCBCur->OSTCBBitX;
    4050:	f0 e0       	ldi	r31, 0x00	; 0
    4052:	ed 52       	subi	r30, 0x2D	; 45
    4054:	fe 4e       	sbci	r31, 0xEE	; 238
    4056:	89 2f       	mov	r24, r25
    4058:	80 95       	com	r24
    405a:	90 81       	ld	r25, Z
    405c:	89 23       	and	r24, r25
    405e:	80 83       	st	Z, r24
    if (OSRdyTbl[y] == 0) {
    4060:	88 23       	and	r24, r24
    4062:	39 f4       	brne	.+14     	; 0x4072 <OS_EventTaskWaitMulti+0x6e>
        OSRdyGrp &= ~OSTCBCur->OSTCBBitY;         /* Clear event grp bit if this was only task pending */
    4064:	98 a1       	ldd	r25, Y+32	; 0x20
    4066:	90 95       	com	r25
    4068:	80 91 d2 11 	lds	r24, 0x11D2
    406c:	89 23       	and	r24, r25
    406e:	80 93 d2 11 	sts	0x11D2, r24
    }
}
    4072:	df 91       	pop	r29
    4074:	cf 91       	pop	r28
    4076:	08 95       	ret

00004078 <OS_EventTaskRemove>:
*********************************************************************************************************
*/
#if (OS_EVENT_EN)
void  OS_EventTaskRemove (OS_TCB   *ptcb,
                          OS_EVENT *pevent)
{
    4078:	cf 93       	push	r28
    407a:	df 93       	push	r29
    407c:	dc 01       	movw	r26, r24
    407e:	eb 01       	movw	r28, r22
    INT8U  y;


    y                       =  ptcb->OSTCBY;
    pevent->OSEventTbl[y]  &= ~ptcb->OSTCBBitX;         /* Remove task from wait list                  */
    4080:	5e 96       	adiw	r26, 0x1e	; 30
    4082:	8c 91       	ld	r24, X
    4084:	5e 97       	sbiw	r26, 0x1e	; 30
    4086:	fb 01       	movw	r30, r22
    4088:	e8 0f       	add	r30, r24
    408a:	f1 1d       	adc	r31, r1
    408c:	5f 96       	adiw	r26, 0x1f	; 31
    408e:	8c 91       	ld	r24, X
    4090:	5f 97       	sbiw	r26, 0x1f	; 31
    4092:	80 95       	com	r24
    4094:	96 81       	ldd	r25, Z+6	; 0x06
    4096:	89 23       	and	r24, r25
    4098:	86 83       	std	Z+6, r24	; 0x06
    if (pevent->OSEventTbl[y] == 0) {
    409a:	88 23       	and	r24, r24
    409c:	31 f4       	brne	.+12     	; 0x40aa <OS_EventTaskRemove+0x32>
        pevent->OSEventGrp &= ~ptcb->OSTCBBitY;
    409e:	90 96       	adiw	r26, 0x20	; 32
    40a0:	9c 91       	ld	r25, X
    40a2:	90 95       	com	r25
    40a4:	8d 81       	ldd	r24, Y+5	; 0x05
    40a6:	89 23       	and	r24, r25
    40a8:	8d 83       	std	Y+5, r24	; 0x05
    }
}
    40aa:	df 91       	pop	r29
    40ac:	cf 91       	pop	r28
    40ae:	08 95       	ret

000040b0 <OS_EventTaskRemoveMulti>:
*********************************************************************************************************
*/
#if ((OS_EVENT_EN) && (OS_EVENT_MULTI_EN > 0))
void  OS_EventTaskRemoveMulti (OS_TCB    *ptcb,
                               OS_EVENT **pevents_multi)
{
    40b0:	cf 93       	push	r28
    40b2:	df 93       	push	r29
    40b4:	fc 01       	movw	r30, r24
    40b6:	db 01       	movw	r26, r22
    INT16U     bity;
    INT16U     bitx;
#endif


    y       =  ptcb->OSTCBY;
    40b8:	86 8d       	ldd	r24, Z+30	; 0x1e
    bity    =  ptcb->OSTCBBitY;
    40ba:	20 a1       	ldd	r18, Z+32	; 0x20
    bitx    =  ptcb->OSTCBBitX;
    40bc:	97 8d       	ldd	r25, Z+31	; 0x1f
    pevents =  pevents_multi;
    pevent  = *pevents;
    40be:	cd 91       	ld	r28, X+
    40c0:	dc 91       	ld	r29, X
    40c2:	11 97       	sbiw	r26, 0x01	; 1
    while (pevent != (OS_EVENT *)0) {                   /* Remove task from all events' wait lists     */
        pevent->OSEventTbl[y]  &= ~bitx;
    40c4:	48 2f       	mov	r20, r24
    40c6:	50 e0       	ldi	r21, 0x00	; 0
    40c8:	90 95       	com	r25
        if (pevent->OSEventTbl[y] == 0) {
            pevent->OSEventGrp &= ~bity;
    40ca:	20 95       	com	r18
    40cc:	0f c0       	rjmp	.+30     	; 0x40ec <OS_EventTaskRemoveMulti+0x3c>
    bity    =  ptcb->OSTCBBitY;
    bitx    =  ptcb->OSTCBBitX;
    pevents =  pevents_multi;
    pevent  = *pevents;
    while (pevent != (OS_EVENT *)0) {                   /* Remove task from all events' wait lists     */
        pevent->OSEventTbl[y]  &= ~bitx;
    40ce:	fe 01       	movw	r30, r28
    40d0:	e4 0f       	add	r30, r20
    40d2:	f5 1f       	adc	r31, r21
    40d4:	86 81       	ldd	r24, Z+6	; 0x06
    40d6:	89 23       	and	r24, r25
    40d8:	86 83       	std	Z+6, r24	; 0x06
        if (pevent->OSEventTbl[y] == 0) {
    40da:	88 23       	and	r24, r24
    40dc:	19 f4       	brne	.+6      	; 0x40e4 <OS_EventTaskRemoveMulti+0x34>
            pevent->OSEventGrp &= ~bity;
    40de:	8d 81       	ldd	r24, Y+5	; 0x05
    40e0:	82 23       	and	r24, r18
    40e2:	8d 83       	std	Y+5, r24	; 0x05
        }
        pevents++;
    40e4:	12 96       	adiw	r26, 0x02	; 2
        pevent = *pevents;
    40e6:	cd 91       	ld	r28, X+
    40e8:	dc 91       	ld	r29, X
    40ea:	11 97       	sbiw	r26, 0x01	; 1
    y       =  ptcb->OSTCBY;
    bity    =  ptcb->OSTCBBitY;
    bitx    =  ptcb->OSTCBBitX;
    pevents =  pevents_multi;
    pevent  = *pevents;
    while (pevent != (OS_EVENT *)0) {                   /* Remove task from all events' wait lists     */
    40ec:	20 97       	sbiw	r28, 0x00	; 0
    40ee:	79 f7       	brne	.-34     	; 0x40ce <OS_EventTaskRemoveMulti+0x1e>
            pevent->OSEventGrp &= ~bity;
        }
        pevents++;
        pevent = *pevents;
    }
}
    40f0:	df 91       	pop	r29
    40f2:	cf 91       	pop	r28
    40f4:	08 95       	ret

000040f6 <OS_EventWaitListInit>:
* Note       : This function is INTERNAL to uC/OS-II and your application should not call it.
*********************************************************************************************************
*/
#if (OS_EVENT_EN)
void  OS_EventWaitListInit (OS_EVENT *pevent)
{
    40f6:	fc 01       	movw	r30, r24
    INT16U *ptbl;
#endif
    INT8U   i;


    pevent->OSEventGrp = 0;                      /* No task waiting on event                           */
    40f8:	15 82       	std	Z+5, r1	; 0x05
    ptbl               = &pevent->OSEventTbl[0];
    40fa:	36 96       	adiw	r30, 0x06	; 6
    40fc:	80 e0       	ldi	r24, 0x00	; 0

    for (i = 0; i < OS_EVENT_TBL_SIZE; i++) {
        *ptbl++ = 0;
    40fe:	11 92       	st	Z+, r1


    pevent->OSEventGrp = 0;                      /* No task waiting on event                           */
    ptbl               = &pevent->OSEventTbl[0];

    for (i = 0; i < OS_EVENT_TBL_SIZE; i++) {
    4100:	8f 5f       	subi	r24, 0xFF	; 255
    4102:	88 30       	cpi	r24, 0x08	; 8
    4104:	e1 f7       	brne	.-8      	; 0x40fe <OS_EventWaitListInit+0x8>
        *ptbl++ = 0;
    }
}
    4106:	08 95       	ret

00004108 <OS_MemClr>:
*                 of the alignment of the destination.
*********************************************************************************************************
*/

void  OS_MemClr (INT8U *pdest, INT16U size)
{
    4108:	fc 01       	movw	r30, r24
    410a:	03 c0       	rjmp	.+6      	; 0x4112 <OS_MemClr+0xa>
    while (size > 0) {
        *pdest++ = (INT8U)0;
    410c:	11 92       	st	Z+, r1
        size--;
    410e:	61 50       	subi	r22, 0x01	; 1
    4110:	70 40       	sbci	r23, 0x00	; 0
*********************************************************************************************************
*/

void  OS_MemClr (INT8U *pdest, INT16U size)
{
    while (size > 0) {
    4112:	61 15       	cp	r22, r1
    4114:	71 05       	cpc	r23, r1
    4116:	d1 f7       	brne	.-12     	; 0x410c <OS_MemClr+0x4>
        *pdest++ = (INT8U)0;
        size--;
    }
}
    4118:	08 95       	ret

0000411a <OS_MemCopy>:
*                 of the alignment of the source and destination.
*********************************************************************************************************
*/

void  OS_MemCopy (INT8U *pdest, INT8U *psrc, INT16U size)
{
    411a:	dc 01       	movw	r26, r24
    411c:	fb 01       	movw	r30, r22
    411e:	04 c0       	rjmp	.+8      	; 0x4128 <OS_MemCopy+0xe>
    while (size > 0) {
        *pdest++ = *psrc++;
    4120:	81 91       	ld	r24, Z+
    4122:	8d 93       	st	X+, r24
        size--;
    4124:	41 50       	subi	r20, 0x01	; 1
    4126:	50 40       	sbci	r21, 0x00	; 0
*********************************************************************************************************
*/

void  OS_MemCopy (INT8U *pdest, INT8U *psrc, INT16U size)
{
    while (size > 0) {
    4128:	41 15       	cp	r20, r1
    412a:	51 05       	cpc	r21, r1
    412c:	c9 f7       	brne	.-14     	; 0x4120 <OS_MemCopy+0x6>
        *pdest++ = *psrc++;
        size--;
    }
}
    412e:	08 95       	ret

00004130 <OS_StrCopy>:
*********************************************************************************************************
*/

#if (OS_EVENT_NAME_SIZE > 1) || (OS_FLAG_NAME_SIZE > 1) || (OS_MEM_NAME_SIZE > 1) || (OS_TASK_NAME_SIZE > 1) || (OS_TMR_CFG_NAME_SIZE > 1)
INT8U  OS_StrCopy (INT8U *pdest, INT8U *psrc)
{
    4130:	58 2f       	mov	r21, r24
    4132:	db 01       	movw	r26, r22
    4134:	28 2f       	mov	r18, r24
    4136:	39 2f       	mov	r19, r25
    4138:	f9 01       	movw	r30, r18
    413a:	02 c0       	rjmp	.+4      	; 0x4140 <OS_StrCopy+0x10>
    INT8U  len;


    len = 0;
    while (*psrc != OS_ASCII_NUL) {
        *pdest++ = *psrc++;
    413c:	91 93       	st	Z+, r25
    413e:	11 96       	adiw	r26, 0x01	; 1
    4140:	8e 2f       	mov	r24, r30
    4142:	85 1b       	sub	r24, r21
{
    INT8U  len;


    len = 0;
    while (*psrc != OS_ASCII_NUL) {
    4144:	9c 91       	ld	r25, X
    4146:	99 23       	and	r25, r25
    4148:	c9 f7       	brne	.-14     	; 0x413c <OS_StrCopy+0xc>
        *pdest++ = *psrc++;
        len++;
    }
    *pdest = OS_ASCII_NUL;
    414a:	10 82       	st	Z, r1
    return (len);
}
    414c:	08 95       	ret

0000414e <OS_StrLen>:
*********************************************************************************************************
*/

#if (OS_EVENT_NAME_SIZE > 1) || (OS_FLAG_NAME_SIZE > 1) || (OS_MEM_NAME_SIZE > 1) || (OS_TASK_NAME_SIZE > 1) || (OS_TMR_CFG_NAME_SIZE > 1)
INT8U  OS_StrLen (INT8U *psrc)
{
    414e:	58 2f       	mov	r21, r24
    4150:	28 2f       	mov	r18, r24
    4152:	39 2f       	mov	r19, r25
    4154:	f9 01       	movw	r30, r18
    4156:	01 c0       	rjmp	.+2      	; 0x415a <OS_StrLen+0xc>
    INT8U  len;


    len = 0;
    while (*psrc != OS_ASCII_NUL) {
        psrc++;
    4158:	31 96       	adiw	r30, 0x01	; 1
    415a:	9e 2f       	mov	r25, r30
    415c:	95 1b       	sub	r25, r21
{
    INT8U  len;


    len = 0;
    while (*psrc != OS_ASCII_NUL) {
    415e:	80 81       	ld	r24, Z
    4160:	88 23       	and	r24, r24
    4162:	d1 f7       	brne	.-12     	; 0x4158 <OS_StrLen+0xa>
        psrc++;
        len++;
    }
    return (len);
}
    4164:	89 2f       	mov	r24, r25
    4166:	08 95       	ret

00004168 <OS_TCBInit>:
* Note       : This function is INTERNAL to uC/OS-II and your application should not call it.
*********************************************************************************************************
*/

INT8U  OS_TCBInit (INT8U prio, OS_STK *ptos, OS_STK *pbos, INT16U id, INT32U stk_size, void *pext, INT16U opt)
{
    4168:	9f 92       	push	r9
    416a:	af 92       	push	r10
    416c:	bf 92       	push	r11
    416e:	cf 92       	push	r12
    4170:	df 92       	push	r13
    4172:	ef 92       	push	r14
    4174:	ff 92       	push	r15
    4176:	0f 93       	push	r16
    4178:	1f 93       	push	r17
    417a:	cf 93       	push	r28
    417c:	df 93       	push	r29
    417e:	98 2e       	mov	r9, r24
    OS_CPU_SR  cpu_sr = 0;
#endif



    OS_ENTER_CRITICAL();
    4180:	ef b7       	in	r30, 0x3f	; 63
    4182:	f8 94       	cli
    ptcb = OSTCBFreeList;                                  /* Get a free TCB from the free TCB list    */
    4184:	c0 91 cc 11 	lds	r28, 0x11CC
    4188:	d0 91 cd 11 	lds	r29, 0x11CD
    if (ptcb != (OS_TCB *)0) {
    418c:	20 97       	sbiw	r28, 0x00	; 0
    418e:	09 f4       	brne	.+2      	; 0x4192 <OS_TCBInit+0x2a>
    4190:	82 c0       	rjmp	.+260    	; 0x4296 <OS_TCBInit+0x12e>
        OSTCBFreeList            = ptcb->OSTCBNext;        /* Update pointer to free TCB list          */
    4192:	8e 85       	ldd	r24, Y+14	; 0x0e
    4194:	9f 85       	ldd	r25, Y+15	; 0x0f
    4196:	90 93 cd 11 	sts	0x11CD, r25
    419a:	80 93 cc 11 	sts	0x11CC, r24
        OS_EXIT_CRITICAL();
    419e:	ef bf       	out	0x3f, r30	; 63
        ptcb->OSTCBStkPtr        = ptos;                   /* Load Stack pointer in TCB                */
    41a0:	79 83       	std	Y+1, r23	; 0x01
    41a2:	68 83       	st	Y, r22
        ptcb->OSTCBPrio          = prio;                   /* Load task priority into TCB              */
    41a4:	9c 8e       	std	Y+28, r9	; 0x1c
        ptcb->OSTCBStat          = OS_STAT_RDY;            /* Task is ready to run                     */
    41a6:	1a 8e       	std	Y+26, r1	; 0x1a
        ptcb->OSTCBStatPend      = OS_STAT_PEND_OK;        /* Clear pend status                        */
    41a8:	1b 8e       	std	Y+27, r1	; 0x1b
        ptcb->OSTCBDly           = 0;                      /* Task is not delayed                      */
    41aa:	19 8e       	std	Y+25, r1	; 0x19
    41ac:	18 8e       	std	Y+24, r1	; 0x18

#if OS_TASK_CREATE_EXT_EN > 0
        ptcb->OSTCBExtPtr        = pext;                   /* Store pointer to TCB extension           */
    41ae:	db 82       	std	Y+3, r13	; 0x03
    41b0:	ca 82       	std	Y+2, r12	; 0x02
        ptcb->OSTCBStkSize       = stk_size;               /* Store stack size                         */
    41b2:	ee 82       	std	Y+6, r14	; 0x06
    41b4:	ff 82       	std	Y+7, r15	; 0x07
    41b6:	08 87       	std	Y+8, r16	; 0x08
    41b8:	19 87       	std	Y+9, r17	; 0x09
        ptcb->OSTCBStkBottom     = pbos;                   /* Store pointer to bottom of stack         */
    41ba:	5d 83       	std	Y+5, r21	; 0x05
    41bc:	4c 83       	std	Y+4, r20	; 0x04
        ptcb->OSTCBOpt           = opt;                    /* Store task options                       */
    41be:	bb 86       	std	Y+11, r11	; 0x0b
    41c0:	aa 86       	std	Y+10, r10	; 0x0a
        ptcb->OSTCBId            = id;                     /* Store task ID                            */
    41c2:	3d 87       	std	Y+13, r19	; 0x0d
    41c4:	2c 87       	std	Y+12, r18	; 0x0c
#if OS_TASK_DEL_EN > 0
        ptcb->OSTCBDelReq        = OS_ERR_NONE;
#endif

#if OS_LOWEST_PRIO <= 63
        ptcb->OSTCBY             = (INT8U)(prio >> 3);          /* Pre-compute X, Y, BitX and BitY     */
    41c6:	29 2d       	mov	r18, r9
    41c8:	26 95       	lsr	r18
    41ca:	26 95       	lsr	r18
    41cc:	26 95       	lsr	r18
    41ce:	2e 8f       	std	Y+30, r18	; 0x1e
        ptcb->OSTCBX             = (INT8U)(prio & 0x07);
    41d0:	49 2d       	mov	r20, r9
    41d2:	47 70       	andi	r20, 0x07	; 7
    41d4:	4d 8f       	std	Y+29, r20	; 0x1d
        ptcb->OSTCBBitY          = (INT8U)(1 << ptcb->OSTCBY);
    41d6:	81 e0       	ldi	r24, 0x01	; 1
    41d8:	90 e0       	ldi	r25, 0x00	; 0
    41da:	bc 01       	movw	r22, r24
    41dc:	02 c0       	rjmp	.+4      	; 0x41e2 <OS_TCBInit+0x7a>
    41de:	66 0f       	add	r22, r22
    41e0:	77 1f       	adc	r23, r23
    41e2:	2a 95       	dec	r18
    41e4:	e2 f7       	brpl	.-8      	; 0x41de <OS_TCBInit+0x76>
    41e6:	68 a3       	std	Y+32, r22	; 0x20
        ptcb->OSTCBBitX          = (INT8U)(1 << ptcb->OSTCBX);
    41e8:	02 c0       	rjmp	.+4      	; 0x41ee <OS_TCBInit+0x86>
    41ea:	88 0f       	add	r24, r24
    41ec:	99 1f       	adc	r25, r25
    41ee:	4a 95       	dec	r20
    41f0:	e2 f7       	brpl	.-8      	; 0x41ea <OS_TCBInit+0x82>
    41f2:	8f 8f       	std	Y+31, r24	; 0x1f
        ptcb->OSTCBBitY          = (INT16U)(1 << ptcb->OSTCBY);
        ptcb->OSTCBBitX          = (INT16U)(1 << ptcb->OSTCBX);
#endif

#if (OS_EVENT_EN)
        ptcb->OSTCBEventPtr      = (OS_EVENT  *)0;         /* Task is not pending on an  event         */
    41f4:	1b 8a       	std	Y+19, r1	; 0x13
    41f6:	1a 8a       	std	Y+18, r1	; 0x12
#if (OS_EVENT_MULTI_EN > 0)
        ptcb->OSTCBEventMultiPtr = (OS_EVENT **)0;         /* Task is not pending on any events        */
    41f8:	1d 8a       	std	Y+21, r1	; 0x15
    41fa:	1c 8a       	std	Y+20, r1	; 0x14
#if (OS_FLAG_EN > 0) && (OS_MAX_FLAGS > 0) && (OS_TASK_DEL_EN > 0)
        ptcb->OSTCBFlagNode  = (OS_FLAG_NODE *)0;          /* Task is not pending on an event flag     */
#endif

#if (OS_MBOX_EN > 0) || ((OS_Q_EN > 0) && (OS_MAX_QS > 0))
        ptcb->OSTCBMsg       = (void *)0;                  /* No message received                      */
    41fc:	1f 8a       	std	Y+23, r1	; 0x17
    41fe:	1e 8a       	std	Y+22, r1	; 0x16
#endif

#if OS_TASK_PROFILE_EN > 0
        ptcb->OSTCBCtxSwCtr    = 0L;                       /* Initialize profiling variables           */
    4200:	19 a2       	std	Y+33, r1	; 0x21
    4202:	1a a2       	std	Y+34, r1	; 0x22
    4204:	1b a2       	std	Y+35, r1	; 0x23
    4206:	1c a2       	std	Y+36, r1	; 0x24
        ptcb->OSTCBCyclesStart = 0L;
    4208:	19 a6       	std	Y+41, r1	; 0x29
    420a:	1a a6       	std	Y+42, r1	; 0x2a
    420c:	1b a6       	std	Y+43, r1	; 0x2b
    420e:	1c a6       	std	Y+44, r1	; 0x2c
        ptcb->OSTCBCyclesTot   = 0L;
    4210:	1d a2       	std	Y+37, r1	; 0x25
    4212:	1e a2       	std	Y+38, r1	; 0x26
    4214:	1f a2       	std	Y+39, r1	; 0x27
    4216:	18 a6       	std	Y+40, r1	; 0x28
        ptcb->OSTCBStkBase     = (OS_STK *)0;
    4218:	1e a6       	std	Y+46, r1	; 0x2e
    421a:	1d a6       	std	Y+45, r1	; 0x2d
        ptcb->OSTCBStkUsed     = 0L;
    421c:	1f a6       	std	Y+47, r1	; 0x2f
    421e:	18 aa       	std	Y+48, r1	; 0x30
    4220:	19 aa       	std	Y+49, r1	; 0x31
    4222:	1a aa       	std	Y+50, r1	; 0x32
#endif

#if OS_TASK_NAME_SIZE > 1
        ptcb->OSTCBTaskName[0] = '?';                      /* Unknown name at task creation            */
    4224:	8f e3       	ldi	r24, 0x3F	; 63
    4226:	8b ab       	std	Y+51, r24	; 0x33
        ptcb->OSTCBTaskName[1] = OS_ASCII_NUL;
    4228:	1c aa       	std	Y+52, r1	; 0x34
#endif

        OSTCBInitHook(ptcb);
    422a:	ce 01       	movw	r24, r28
    422c:	0e 94 f3 2e 	call	0x5de6	; 0x5de6 <OSTCBInitHook>

        OSTaskCreateHook(ptcb);                            /* Call user defined hook                   */
    4230:	ce 01       	movw	r24, r28
    4232:	0e 94 02 2f 	call	0x5e04	; 0x5e04 <OSTaskCreateHook>

        OS_ENTER_CRITICAL();
    4236:	2f b7       	in	r18, 0x3f	; 63
    4238:	f8 94       	cli
        OSTCBPrioTbl[prio] = ptcb;
    423a:	e9 2d       	mov	r30, r9
    423c:	f0 e0       	ldi	r31, 0x00	; 0
    423e:	ee 0f       	add	r30, r30
    4240:	ff 1f       	adc	r31, r31
    4242:	e7 51       	subi	r30, 0x17	; 23
    4244:	f8 4e       	sbci	r31, 0xE8	; 232
    4246:	d1 83       	std	Z+1, r29	; 0x01
    4248:	c0 83       	st	Z, r28
        ptcb->OSTCBNext    = OSTCBList;                    /* Link into TCB chain                      */
    424a:	e0 91 c1 10 	lds	r30, 0x10C1
    424e:	f0 91 c2 10 	lds	r31, 0x10C2
    4252:	ff 87       	std	Y+15, r31	; 0x0f
    4254:	ee 87       	std	Y+14, r30	; 0x0e
        ptcb->OSTCBPrev    = (OS_TCB *)0;
    4256:	19 8a       	std	Y+17, r1	; 0x11
    4258:	18 8a       	std	Y+16, r1	; 0x10
        if (OSTCBList != (OS_TCB *)0) {
    425a:	30 97       	sbiw	r30, 0x00	; 0
    425c:	11 f0       	breq	.+4      	; 0x4262 <OS_TCBInit+0xfa>
            OSTCBList->OSTCBPrev = ptcb;
    425e:	d1 8b       	std	Z+17, r29	; 0x11
    4260:	c0 8b       	std	Z+16, r28	; 0x10
        }
        OSTCBList               = ptcb;
    4262:	d0 93 c2 10 	sts	0x10C2, r29
    4266:	c0 93 c1 10 	sts	0x10C1, r28
        OSRdyGrp               |= ptcb->OSTCBBitY;         /* Make task ready to run                   */
    426a:	80 91 d2 11 	lds	r24, 0x11D2
    426e:	98 a1       	ldd	r25, Y+32	; 0x20
    4270:	89 2b       	or	r24, r25
    4272:	80 93 d2 11 	sts	0x11D2, r24
        OSRdyTbl[ptcb->OSTCBY] |= ptcb->OSTCBBitX;
    4276:	ee 8d       	ldd	r30, Y+30	; 0x1e
    4278:	f0 e0       	ldi	r31, 0x00	; 0
    427a:	ed 52       	subi	r30, 0x2D	; 45
    427c:	fe 4e       	sbci	r31, 0xEE	; 238
    427e:	80 81       	ld	r24, Z
    4280:	9f 8d       	ldd	r25, Y+31	; 0x1f
    4282:	89 2b       	or	r24, r25
    4284:	80 83       	st	Z, r24
        OSTaskCtr++;                                       /* Increment the #tasks counter             */
    4286:	80 91 cf 11 	lds	r24, 0x11CF
    428a:	8f 5f       	subi	r24, 0xFF	; 255
    428c:	80 93 cf 11 	sts	0x11CF, r24
        OS_EXIT_CRITICAL();
    4290:	2f bf       	out	0x3f, r18	; 63
    4292:	80 e0       	ldi	r24, 0x00	; 0
    4294:	02 c0       	rjmp	.+4      	; 0x429a <OS_TCBInit+0x132>
        return (OS_ERR_NONE);
    }
    OS_EXIT_CRITICAL();
    4296:	ef bf       	out	0x3f, r30	; 63
    4298:	82 e4       	ldi	r24, 0x42	; 66
    return (OS_ERR_TASK_NO_MORE_TCB);
}
    429a:	df 91       	pop	r29
    429c:	cf 91       	pop	r28
    429e:	1f 91       	pop	r17
    42a0:	0f 91       	pop	r16
    42a2:	ff 90       	pop	r15
    42a4:	ef 90       	pop	r14
    42a6:	df 90       	pop	r13
    42a8:	cf 90       	pop	r12
    42aa:	bf 90       	pop	r11
    42ac:	af 90       	pop	r10
    42ae:	9f 90       	pop	r9
    42b0:	08 95       	ret

000042b2 <OS_TaskStatStkChk>:
*********************************************************************************************************
*/

#if (OS_TASK_STAT_STK_CHK_EN > 0) && (OS_TASK_CREATE_EXT_EN > 0)
void  OS_TaskStatStkChk (void)
{
    42b2:	cf 92       	push	r12
    42b4:	df 92       	push	r13
    42b6:	ff 92       	push	r15
    42b8:	0f 93       	push	r16
    42ba:	1f 93       	push	r17
    42bc:	df 93       	push	r29
    42be:	cf 93       	push	r28
    42c0:	cd b7       	in	r28, 0x3d	; 61
    42c2:	de b7       	in	r29, 0x3e	; 62
    42c4:	28 97       	sbiw	r28, 0x08	; 8
    42c6:	0f b6       	in	r0, 0x3f	; 63
    42c8:	f8 94       	cli
    42ca:	de bf       	out	0x3e, r29	; 62
    42cc:	0f be       	out	0x3f, r0	; 63
    42ce:	cd bf       	out	0x3d, r28	; 61
    42d0:	09 ee       	ldi	r16, 0xE9	; 233
    42d2:	17 e1       	ldi	r17, 0x17	; 23
    42d4:	ff 24       	eor	r15, r15
    INT8U        err;
    INT8U        prio;


    for (prio = 0; prio <= OS_TASK_IDLE_PRIO; prio++) {
        err = OSTaskStkChk(prio, &stk_data);
    42d6:	6e 01       	movw	r12, r28
    42d8:	08 94       	sec
    42da:	c1 1c       	adc	r12, r1
    42dc:	d1 1c       	adc	r13, r1
    42de:	8f 2d       	mov	r24, r15
    42e0:	b6 01       	movw	r22, r12
    42e2:	0e 94 36 2a 	call	0x546c	; 0x546c <OSTaskStkChk>
        if (err == OS_ERR_NONE) {
    42e6:	88 23       	and	r24, r24
    42e8:	c1 f4       	brne	.+48     	; 0x431a <OS_TaskStatStkChk+0x68>
            ptcb = OSTCBPrioTbl[prio];
    42ea:	d8 01       	movw	r26, r16
    42ec:	ed 91       	ld	r30, X+
    42ee:	fc 91       	ld	r31, X
            if (ptcb != (OS_TCB *)0) {                               /* Make sure task 'ptcb' is ...   */
    42f0:	30 97       	sbiw	r30, 0x00	; 0
    42f2:	99 f0       	breq	.+38     	; 0x431a <OS_TaskStatStkChk+0x68>
                if (ptcb != OS_TCB_RESERVED) {                       /* ... still valid.               */
    42f4:	e1 30       	cpi	r30, 0x01	; 1
    42f6:	f1 05       	cpc	r31, r1
    42f8:	81 f0       	breq	.+32     	; 0x431a <OS_TaskStatStkChk+0x68>
#if OS_TASK_PROFILE_EN > 0
                    #if OS_STK_GROWTH == 1
                    ptcb->OSTCBStkBase = ptcb->OSTCBStkBottom + ptcb->OSTCBStkSize;
    42fa:	84 81       	ldd	r24, Z+4	; 0x04
    42fc:	95 81       	ldd	r25, Z+5	; 0x05
    42fe:	26 81       	ldd	r18, Z+6	; 0x06
    4300:	37 81       	ldd	r19, Z+7	; 0x07
    4302:	82 0f       	add	r24, r18
    4304:	93 1f       	adc	r25, r19
    4306:	96 a7       	std	Z+46, r25	; 0x2e
    4308:	85 a7       	std	Z+45, r24	; 0x2d
                    #else
                    ptcb->OSTCBStkBase = ptcb->OSTCBStkBottom - ptcb->OSTCBStkSize;
                    #endif
                    ptcb->OSTCBStkUsed = stk_data.OSUsed;            /* Store the number of bytes used */
    430a:	8d 81       	ldd	r24, Y+5	; 0x05
    430c:	9e 81       	ldd	r25, Y+6	; 0x06
    430e:	af 81       	ldd	r26, Y+7	; 0x07
    4310:	b8 85       	ldd	r27, Y+8	; 0x08
    4312:	87 a7       	std	Z+47, r24	; 0x2f
    4314:	90 ab       	std	Z+48, r25	; 0x30
    4316:	a1 ab       	std	Z+49, r26	; 0x31
    4318:	b2 ab       	std	Z+50, r27	; 0x32
    OS_STK_DATA  stk_data;
    INT8U        err;
    INT8U        prio;


    for (prio = 0; prio <= OS_TASK_IDLE_PRIO; prio++) {
    431a:	f3 94       	inc	r15
    431c:	0e 5f       	subi	r16, 0xFE	; 254
    431e:	1f 4f       	sbci	r17, 0xFF	; 255
    4320:	b0 e4       	ldi	r27, 0x40	; 64
    4322:	fb 16       	cp	r15, r27
    4324:	e1 f6       	brne	.-72     	; 0x42de <OS_TaskStatStkChk+0x2c>
#endif
                }
            }
        }
    }
}
    4326:	28 96       	adiw	r28, 0x08	; 8
    4328:	0f b6       	in	r0, 0x3f	; 63
    432a:	f8 94       	cli
    432c:	de bf       	out	0x3e, r29	; 62
    432e:	0f be       	out	0x3f, r0	; 63
    4330:	cd bf       	out	0x3d, r28	; 61
    4332:	cf 91       	pop	r28
    4334:	df 91       	pop	r29
    4336:	1f 91       	pop	r17
    4338:	0f 91       	pop	r16
    433a:	ff 90       	pop	r15
    433c:	df 90       	pop	r13
    433e:	cf 90       	pop	r12
    4340:	08 95       	ret

00004342 <OS_TaskIdle>:



    (void)p_arg;                                 /* Prevent compiler warning for not using 'p_arg'     */
    for (;;) {
        OS_ENTER_CRITICAL();
    4342:	2f b7       	in	r18, 0x3f	; 63
    4344:	f8 94       	cli
        OSIdleCtr++;
    4346:	80 91 bb 10 	lds	r24, 0x10BB
    434a:	90 91 bc 10 	lds	r25, 0x10BC
    434e:	a0 91 bd 10 	lds	r26, 0x10BD
    4352:	b0 91 be 10 	lds	r27, 0x10BE
    4356:	01 96       	adiw	r24, 0x01	; 1
    4358:	a1 1d       	adc	r26, r1
    435a:	b1 1d       	adc	r27, r1
    435c:	80 93 bb 10 	sts	0x10BB, r24
    4360:	90 93 bc 10 	sts	0x10BC, r25
    4364:	a0 93 bd 10 	sts	0x10BD, r26
    4368:	b0 93 be 10 	sts	0x10BE, r27
        OS_EXIT_CRITICAL();
    436c:	2f bf       	out	0x3f, r18	; 63
        OSTaskIdleHook();                        /* Call user definable HOOK                           */
    436e:	0e 94 fc 2e 	call	0x5df8	; 0x5df8 <OSTaskIdleHook>
    4372:	e7 cf       	rjmp	.-50     	; 0x4342 <OS_TaskIdle>

00004374 <OS_Sched>:
*              2) Rescheduling is prevented when the scheduler is locked (see OS_SchedLock())
*********************************************************************************************************
*/

void  OS_Sched (void)
{
    4374:	1f 93       	push	r17
    OS_CPU_SR  cpu_sr = 0;
#endif



    OS_ENTER_CRITICAL();
    4376:	1f b7       	in	r17, 0x3f	; 63
    4378:	f8 94       	cli
    if (OSIntNesting == 0) {                           /* Schedule only if all ISRs done and ...       */
    437a:	80 91 dd 11 	lds	r24, 0x11DD
    437e:	88 23       	and	r24, r24
    4380:	09 f0       	breq	.+2      	; 0x4384 <OS_Sched+0x10>
    4382:	4c c0       	rjmp	.+152    	; 0x441c <OS_Sched+0xa8>
        if (OSLockNesting == 0) {                      /* ... scheduler is not locked                  */
    4384:	80 91 b9 10 	lds	r24, 0x10B9
    4388:	88 23       	and	r24, r24
    438a:	09 f0       	breq	.+2      	; 0x438e <OS_Sched+0x1a>
    438c:	47 c0       	rjmp	.+142    	; 0x441c <OS_Sched+0xa8>
{
#if OS_LOWEST_PRIO <= 63                         /* See if we support up to 64 tasks                   */
    INT8U   y;


    y             = OSUnMapTbl[OSRdyGrp];
    438e:	e0 91 d2 11 	lds	r30, 0x11D2
    4392:	f0 e0       	ldi	r31, 0x00	; 0
    4394:	ee 5d       	subi	r30, 0xDE	; 222
    4396:	fd 4f       	sbci	r31, 0xFD	; 253
    4398:	80 81       	ld	r24, Z
    OSPrioHighRdy = (INT8U)((y << 3) + OSUnMapTbl[OSRdyTbl[y]]);
    439a:	e8 2f       	mov	r30, r24
    439c:	f0 e0       	ldi	r31, 0x00	; 0
    439e:	ed 52       	subi	r30, 0x2D	; 45
    43a0:	fe 4e       	sbci	r31, 0xEE	; 238
    43a2:	e0 81       	ld	r30, Z
    43a4:	f0 e0       	ldi	r31, 0x00	; 0
    43a6:	ee 5d       	subi	r30, 0xDE	; 222
    43a8:	fd 4f       	sbci	r31, 0xFD	; 253
    43aa:	98 2f       	mov	r25, r24
    43ac:	99 0f       	add	r25, r25
    43ae:	99 0f       	add	r25, r25
    43b0:	99 0f       	add	r25, r25
    43b2:	80 81       	ld	r24, Z
    43b4:	98 0f       	add	r25, r24
    43b6:	90 93 bf 10 	sts	0x10BF, r25

    OS_ENTER_CRITICAL();
    if (OSIntNesting == 0) {                           /* Schedule only if all ISRs done and ...       */
        if (OSLockNesting == 0) {                      /* ... scheduler is not locked                  */
            OS_SchedNew();
            if (OSPrioHighRdy != OSPrioCur) {          /* No Ctx Sw if current task is highest rdy     */
    43ba:	80 91 c0 10 	lds	r24, 0x10C0
    43be:	98 17       	cp	r25, r24
    43c0:	69 f1       	breq	.+90     	; 0x441c <OS_Sched+0xa8>
                OSTCBHighRdy = OSTCBPrioTbl[OSPrioHighRdy];
    43c2:	e9 2f       	mov	r30, r25
    43c4:	f0 e0       	ldi	r31, 0x00	; 0
    43c6:	ee 0f       	add	r30, r30
    43c8:	ff 1f       	adc	r31, r31
    43ca:	e7 51       	subi	r30, 0x17	; 23
    43cc:	f8 4e       	sbci	r31, 0xE8	; 232
    43ce:	01 90       	ld	r0, Z+
    43d0:	f0 81       	ld	r31, Z
    43d2:	e0 2d       	mov	r30, r0
    43d4:	f0 93 d1 11 	sts	0x11D1, r31
    43d8:	e0 93 d0 11 	sts	0x11D0, r30
#if OS_TASK_PROFILE_EN > 0
                OSTCBHighRdy->OSTCBCtxSwCtr++;         /* Inc. # of context switches to this task      */
    43dc:	81 a1       	ldd	r24, Z+33	; 0x21
    43de:	92 a1       	ldd	r25, Z+34	; 0x22
    43e0:	a3 a1       	ldd	r26, Z+35	; 0x23
    43e2:	b4 a1       	ldd	r27, Z+36	; 0x24
    43e4:	01 96       	adiw	r24, 0x01	; 1
    43e6:	a1 1d       	adc	r26, r1
    43e8:	b1 1d       	adc	r27, r1
    43ea:	81 a3       	std	Z+33, r24	; 0x21
    43ec:	92 a3       	std	Z+34, r25	; 0x22
    43ee:	a3 a3       	std	Z+35, r26	; 0x23
    43f0:	b4 a3       	std	Z+36, r27	; 0x24
#endif
                OSCtxSwCtr++;                          /* Increment context switch counter             */
    43f2:	80 91 c4 11 	lds	r24, 0x11C4
    43f6:	90 91 c5 11 	lds	r25, 0x11C5
    43fa:	a0 91 c6 11 	lds	r26, 0x11C6
    43fe:	b0 91 c7 11 	lds	r27, 0x11C7
    4402:	01 96       	adiw	r24, 0x01	; 1
    4404:	a1 1d       	adc	r26, r1
    4406:	b1 1d       	adc	r27, r1
    4408:	80 93 c4 11 	sts	0x11C4, r24
    440c:	90 93 c5 11 	sts	0x11C5, r25
    4410:	a0 93 c6 11 	sts	0x11C6, r26
    4414:	b0 93 c7 11 	sts	0x11C7, r27
                OS_TASK_SW();                          /* Perform a context switch                     */
    4418:	0e 94 3b 2f 	call	0x5e76	; 0x5e76 <OSCtxSw>
            }
        }
    }
    OS_EXIT_CRITICAL();
    441c:	1f bf       	out	0x3f, r17	; 63
}
    441e:	1f 91       	pop	r17
    4420:	08 95       	ret

00004422 <OSSchedUnlock>:
    OS_CPU_SR  cpu_sr = 0;
#endif



    if (OSRunning == OS_TRUE) {                            /* Make sure multitasking is running        */
    4422:	80 91 ba 10 	lds	r24, 0x10BA
    4426:	81 30       	cpi	r24, 0x01	; 1
    4428:	c1 f4       	brne	.+48     	; 0x445a <OSSchedUnlock+0x38>
        OS_ENTER_CRITICAL();
    442a:	9f b7       	in	r25, 0x3f	; 63
    442c:	f8 94       	cli
        if (OSLockNesting > 0) {                           /* Do not decrement if already 0            */
    442e:	80 91 b9 10 	lds	r24, 0x10B9
    4432:	88 23       	and	r24, r24
    4434:	89 f0       	breq	.+34     	; 0x4458 <OSSchedUnlock+0x36>
            OSLockNesting--;                               /* Decrement lock nesting level             */
    4436:	81 50       	subi	r24, 0x01	; 1
    4438:	80 93 b9 10 	sts	0x10B9, r24
            if (OSLockNesting == 0) {                      /* See if scheduler is enabled and ...      */
    443c:	88 23       	and	r24, r24
    443e:	51 f4       	brne	.+20     	; 0x4454 <OSSchedUnlock+0x32>
                if (OSIntNesting == 0) {                   /* ... not in an ISR                        */
    4440:	80 91 dd 11 	lds	r24, 0x11DD
    4444:	88 23       	and	r24, r24
    4446:	21 f4       	brne	.+8      	; 0x4450 <OSSchedUnlock+0x2e>
                    OS_EXIT_CRITICAL();
    4448:	9f bf       	out	0x3f, r25	; 63
                    OS_Sched();                            /* See if a HPT is ready                    */
    444a:	0e 94 ba 21 	call	0x4374	; 0x4374 <OS_Sched>
    444e:	08 95       	ret
                } else {
                    OS_EXIT_CRITICAL();
    4450:	9f bf       	out	0x3f, r25	; 63
    4452:	08 95       	ret
                }
            } else {
                OS_EXIT_CRITICAL();
    4454:	9f bf       	out	0x3f, r25	; 63
    4456:	08 95       	ret
            }
        } else {
            OS_EXIT_CRITICAL();
    4458:	9f bf       	out	0x3f, r25	; 63
    445a:	08 95       	ret

0000445c <OSEventPendMulti>:
*********************************************************************************************************
*/
/*$PAGE*/
#if ((OS_EVENT_EN) && (OS_EVENT_MULTI_EN > 0))
INT16U  OSEventPendMulti (OS_EVENT **pevents_pend, OS_EVENT **pevents_rdy, void **pmsgs_rdy, INT16U timeout, INT8U *perr)
{
    445c:	4f 92       	push	r4
    445e:	5f 92       	push	r5
    4460:	7f 92       	push	r7
    4462:	8f 92       	push	r8
    4464:	9f 92       	push	r9
    4466:	af 92       	push	r10
    4468:	bf 92       	push	r11
    446a:	cf 92       	push	r12
    446c:	df 92       	push	r13
    446e:	ef 92       	push	r14
    4470:	ff 92       	push	r15
    4472:	0f 93       	push	r16
    4474:	1f 93       	push	r17
    4476:	cf 93       	push	r28
    4478:	df 93       	push	r29
    447a:	7c 01       	movw	r14, r24
    447c:	6b 01       	movw	r12, r22
    447e:	2a 01       	movw	r4, r20
    4480:	48 01       	movw	r8, r16
       *perr =  OS_ERR_PEVENT_NULL;
        return (0);
    }
#endif

   *pevents_rdy = (OS_EVENT *)0;                        /* Init array to NULL in case of errors        */
    4482:	db 01       	movw	r26, r22
    4484:	1d 92       	st	X+, r1
    4486:	1c 92       	st	X, r1

    pevents     =  pevents_pend;
    pevent      = *pevents;
    4488:	fc 01       	movw	r30, r24
    448a:	00 81       	ld	r16, Z
    448c:	11 81       	ldd	r17, Z+1	; 0x01
    448e:	dc 01       	movw	r26, r24
    4490:	f8 01       	movw	r30, r16
    4492:	09 c0       	rjmp	.+18     	; 0x44a6 <OSEventPendMulti+0x4a>
    while  (pevent != (OS_EVENT *)0) {
        switch (pevent->OSEventType) {                  /* Validate event block types                  */
    4494:	80 81       	ld	r24, Z
    4496:	81 30       	cpi	r24, 0x01	; 1
    4498:	11 f0       	breq	.+4      	; 0x449e <OSEventPendMulti+0x42>
#endif

            case OS_EVENT_TYPE_MUTEX:
            case OS_EVENT_TYPE_FLAG:
            default:
                *perr = OS_ERR_EVENT_TYPE;
    449a:	81 e0       	ldi	r24, 0x01	; 1
    449c:	15 c0       	rjmp	.+42     	; 0x44c8 <OSEventPendMulti+0x6c>
                 return (0);
        }
        pevents++;
    449e:	12 96       	adiw	r26, 0x02	; 2
        pevent = *pevents;
    44a0:	ed 91       	ld	r30, X+
    44a2:	fc 91       	ld	r31, X
    44a4:	11 97       	sbiw	r26, 0x01	; 1

   *pevents_rdy = (OS_EVENT *)0;                        /* Init array to NULL in case of errors        */

    pevents     =  pevents_pend;
    pevent      = *pevents;
    while  (pevent != (OS_EVENT *)0) {
    44a6:	30 97       	sbiw	r30, 0x00	; 0
    44a8:	a9 f7       	brne	.-22     	; 0x4494 <OSEventPendMulti+0x38>
        }
        pevents++;
        pevent = *pevents;
    }

    if (OSIntNesting  > 0) {                            /* See if called from ISR ...                  */
    44aa:	80 91 dd 11 	lds	r24, 0x11DD
    44ae:	88 23       	and	r24, r24
    44b0:	31 f0       	breq	.+12     	; 0x44be <OSEventPendMulti+0x62>
       *perr =  OS_ERR_PEND_ISR;                        /* ... can't PEND from an ISR                  */
    44b2:	82 e0       	ldi	r24, 0x02	; 2
    44b4:	f4 01       	movw	r30, r8
    44b6:	80 83       	st	Z, r24
    44b8:	aa 24       	eor	r10, r10
    44ba:	bb 24       	eor	r11, r11
    44bc:	e5 c0       	rjmp	.+458    	; 0x4688 <OSEventPendMulti+0x22c>
        return (0);
    }
    if (OSLockNesting > 0) {                            /* See if called with scheduler locked ...     */
    44be:	80 91 b9 10 	lds	r24, 0x10B9
    44c2:	88 23       	and	r24, r24
    44c4:	21 f0       	breq	.+8      	; 0x44ce <OSEventPendMulti+0x72>
       *perr =  OS_ERR_PEND_LOCKED;                     /* ... can't PEND when locked                  */
    44c6:	8d e0       	ldi	r24, 0x0D	; 13
    44c8:	d4 01       	movw	r26, r8
    44ca:	8c 93       	st	X, r24
    44cc:	f5 cf       	rjmp	.-22     	; 0x44b8 <OSEventPendMulti+0x5c>
        return (0);
    }

/*$PAGE*/
    OS_ENTER_CRITICAL();
    44ce:	7f b6       	in	r7, 0x3f	; 63
    44d0:	f8 94       	cli
    44d2:	f7 01       	movw	r30, r14
    44d4:	50 e0       	ldi	r21, 0x00	; 0
    44d6:	aa 24       	eor	r10, r10
    44d8:	bb 24       	eor	r11, r11
    44da:	40 e0       	ldi	r20, 0x00	; 0
    44dc:	24 c0       	rjmp	.+72     	; 0x4526 <OSEventPendMulti+0xca>
    events_rdy_nbr =  0;
    events_stat    =  OS_STAT_RDY;
    pevents        =  pevents_pend;
    pevent         = *pevents;
    while (pevent != (OS_EVENT *)0) {                   /* See if any events already available         */
        switch (pevent->OSEventType) {
    44de:	d8 01       	movw	r26, r16
    44e0:	8c 91       	ld	r24, X
    44e2:	81 30       	cpi	r24, 0x01	; 1
    44e4:	d9 f4       	brne	.+54     	; 0x451c <OSEventPendMulti+0xc0>
                 break;
#endif

#if (OS_MBOX_EN > 0)
            case OS_EVENT_TYPE_MBOX:
                 if (pevent->OSEventPtr != (void *)0) { /* If mailbox NOT empty;                   ... */
    44e6:	d8 01       	movw	r26, r16
    44e8:	11 96       	adiw	r26, 0x01	; 1
    44ea:	8d 91       	ld	r24, X+
    44ec:	9c 91       	ld	r25, X
    44ee:	12 97       	sbiw	r26, 0x02	; 2
    44f0:	00 97       	sbiw	r24, 0x00	; 0
    44f2:	91 f0       	breq	.+36     	; 0x4518 <OSEventPendMulti+0xbc>
                                                        /* ... return available message,           ... */
                    *pmsgs_rdy++         = (void *)pevent->OSEventPtr;
    44f4:	d2 01       	movw	r26, r4
    44f6:	8d 93       	st	X+, r24
    44f8:	9d 93       	st	X+, r25
    44fa:	2d 01       	movw	r4, r26
                     pevent->OSEventPtr  = (void *)0;
    44fc:	d8 01       	movw	r26, r16
    44fe:	12 96       	adiw	r26, 0x02	; 2
    4500:	1c 92       	st	X, r1
    4502:	1e 92       	st	-X, r1
    4504:	11 97       	sbiw	r26, 0x01	; 1
                    *pevents_rdy++       =  pevent;     /* ... and return available mailbox event      */
    4506:	d6 01       	movw	r26, r12
    4508:	0d 93       	st	X+, r16
    450a:	1d 93       	st	X+, r17
    450c:	6d 01       	movw	r12, r26
                      events_rdy         =  OS_TRUE;
                      events_rdy_nbr++;
    450e:	08 94       	sec
    4510:	a1 1c       	adc	r10, r1
    4512:	b1 1c       	adc	r11, r1
    4514:	51 e0       	ldi	r21, 0x01	; 1
    4516:	04 c0       	rjmp	.+8      	; 0x4520 <OSEventPendMulti+0xc4>

                 } else {
                      events_stat |= OS_STAT_MBOX;      /* Configure multi-pend for mailbox events     */
    4518:	42 60       	ori	r20, 0x02	; 2
    451a:	02 c0       	rjmp	.+4      	; 0x4520 <OSEventPendMulti+0xc4>
#endif

            case OS_EVENT_TYPE_MUTEX:
            case OS_EVENT_TYPE_FLAG:
            default:
                 OS_EXIT_CRITICAL();
    451c:	7f be       	out	0x3f, r7	; 63
    451e:	95 c0       	rjmp	.+298    	; 0x464a <OSEventPendMulti+0x1ee>
                *pevents_rdy = (OS_EVENT *)0;           /* NULL terminate return event array           */
                *perr        =  OS_ERR_EVENT_TYPE;
                 return (events_rdy_nbr);
        }
        pevents++;
    4520:	32 96       	adiw	r30, 0x02	; 2
        pevent = *pevents;
    4522:	00 81       	ld	r16, Z
    4524:	11 81       	ldd	r17, Z+1	; 0x01
    events_rdy     =  OS_FALSE;
    events_rdy_nbr =  0;
    events_stat    =  OS_STAT_RDY;
    pevents        =  pevents_pend;
    pevent         = *pevents;
    while (pevent != (OS_EVENT *)0) {                   /* See if any events already available         */
    4526:	01 15       	cp	r16, r1
    4528:	11 05       	cpc	r17, r1
    452a:	c9 f6       	brne	.-78     	; 0x44de <OSEventPendMulti+0x82>
        }
        pevents++;
        pevent = *pevents;
    }

    if ( events_rdy == OS_TRUE) {                       /* Return any events already available         */
    452c:	51 30       	cpi	r21, 0x01	; 1
    452e:	39 f4       	brne	.+14     	; 0x453e <OSEventPendMulti+0xe2>
       *pevents_rdy = (OS_EVENT *)0;                    /* NULL terminate return event array           */
    4530:	f6 01       	movw	r30, r12
    4532:	11 82       	std	Z+1, r1	; 0x01
    4534:	10 82       	st	Z, r1
        OS_EXIT_CRITICAL();
    4536:	7f be       	out	0x3f, r7	; 63
       *perr        =  OS_ERR_NONE;
    4538:	d4 01       	movw	r26, r8
    453a:	1c 92       	st	X, r1
    453c:	a5 c0       	rjmp	.+330    	; 0x4688 <OSEventPendMulti+0x22c>
        return (events_rdy_nbr);
    }
/*$PAGE*/
                                                        /* Otherwise, must wait until any event occurs */
    OSTCBCur->OSTCBStat     |= events_stat  |           /* Resource not available, ...                 */
    453e:	e0 91 de 11 	lds	r30, 0x11DE
    4542:	f0 91 df 11 	lds	r31, 0x11DF
    4546:	82 8d       	ldd	r24, Z+26	; 0x1a
    4548:	80 68       	ori	r24, 0x80	; 128
    454a:	84 2b       	or	r24, r20
    454c:	82 8f       	std	Z+26, r24	; 0x1a
                               OS_STAT_MULTI;           /* ... pend on multiple events                 */
    OSTCBCur->OSTCBStatPend  = OS_STAT_PEND_OK;
    454e:	13 8e       	std	Z+27, r1	; 0x1b
    OSTCBCur->OSTCBDly       = timeout;                 /* Store pend timeout in TCB                   */
    4550:	31 8f       	std	Z+25, r19	; 0x19
    4552:	20 8f       	std	Z+24, r18	; 0x18
    OS_EventTaskWaitMulti(pevents_pend);                /* Suspend task until events or timeout occurs */
    4554:	c7 01       	movw	r24, r14
    4556:	0e 94 02 20 	call	0x4004	; 0x4004 <OS_EventTaskWaitMulti>

    OS_EXIT_CRITICAL();
    455a:	7f be       	out	0x3f, r7	; 63
    OS_Sched();                                         /* Find next highest priority task ready       */
    455c:	0e 94 ba 21 	call	0x4374	; 0x4374 <OS_Sched>
    OS_ENTER_CRITICAL();
    4560:	3f b7       	in	r19, 0x3f	; 63
    4562:	f8 94       	cli

    switch (OSTCBCur->OSTCBStatPend) {                  /* Handle event posted, aborted, or timed-out  */
    4564:	c0 91 de 11 	lds	r28, 0x11DE
    4568:	d0 91 df 11 	lds	r29, 0x11DF
    456c:	8b 8d       	ldd	r24, Y+27	; 0x1b
    456e:	88 23       	and	r24, r24
    4570:	11 f0       	breq	.+4      	; 0x4576 <OSEventPendMulti+0x11a>
    4572:	82 30       	cpi	r24, 0x02	; 2
    4574:	a1 f5       	brne	.+104    	; 0x45de <OSEventPendMulti+0x182>
        case OS_STAT_PEND_OK:
        case OS_STAT_PEND_ABORT:
             pevent = OSTCBCur->OSTCBEventPtr;
    4576:	0a 89       	ldd	r16, Y+18	; 0x12
    4578:	1b 89       	ldd	r17, Y+19	; 0x13
             if (pevent != (OS_EVENT *)0) {             /* If task event ptr != NULL, ...              */
    457a:	01 15       	cp	r16, r1
    457c:	11 05       	cpc	r17, r1
    457e:	51 f0       	breq	.+20     	; 0x4594 <OSEventPendMulti+0x138>
                *pevents_rdy++ =  pevent;               /* ... return available event ...              */
    4580:	f6 01       	movw	r30, r12
    4582:	01 93       	st	Z+, r16
    4584:	11 93       	st	Z+, r17
    4586:	6f 01       	movw	r12, r30
                *pevents_rdy   = (OS_EVENT *)0;         /* ... & NULL terminate return event array     */
    4588:	11 82       	std	Z+1, r1	; 0x01
    458a:	10 82       	st	Z, r1
                  events_rdy_nbr++;
    458c:	08 94       	sec
    458e:	a1 1c       	adc	r10, r1
    4590:	b1 1c       	adc	r11, r1
    4592:	47 c0       	rjmp	.+142    	; 0x4622 <OSEventPendMulti+0x1c6>

             } else {                                   /* Else NO event available, handle as timeout  */
                 OSTCBCur->OSTCBStatPend = OS_STAT_PEND_TO;
    4594:	81 e0       	ldi	r24, 0x01	; 1
    4596:	8b 8f       	std	Y+27, r24	; 0x1b
    INT16U     bity;
    INT16U     bitx;
#endif


    y       =  ptcb->OSTCBY;
    4598:	8e 8d       	ldd	r24, Y+30	; 0x1e
    bity    =  ptcb->OSTCBBitY;
    459a:	28 a1       	ldd	r18, Y+32	; 0x20
    bitx    =  ptcb->OSTCBBitX;
    459c:	9f 8d       	ldd	r25, Y+31	; 0x1f
    pevents =  pevents_multi;
    pevent  = *pevents;
    459e:	f7 01       	movw	r30, r14
    45a0:	a0 81       	ld	r26, Z
    45a2:	b1 81       	ldd	r27, Z+1	; 0x01
    while (pevent != (OS_EVENT *)0) {                   /* Remove task from all events' wait lists     */
        pevent->OSEventTbl[y]  &= ~bitx;
    45a4:	48 2f       	mov	r20, r24
    45a6:	50 e0       	ldi	r21, 0x00	; 0
    45a8:	90 95       	com	r25
        if (pevent->OSEventTbl[y] == 0) {
            pevent->OSEventGrp &= ~bity;
    45aa:	20 95       	com	r18
    45ac:	15 c0       	rjmp	.+42     	; 0x45d8 <OSEventPendMulti+0x17c>
    bity    =  ptcb->OSTCBBitY;
    bitx    =  ptcb->OSTCBBitX;
    pevents =  pevents_multi;
    pevent  = *pevents;
    while (pevent != (OS_EVENT *)0) {                   /* Remove task from all events' wait lists     */
        pevent->OSEventTbl[y]  &= ~bitx;
    45ae:	fd 01       	movw	r30, r26
    45b0:	e4 0f       	add	r30, r20
    45b2:	f5 1f       	adc	r31, r21
    45b4:	86 81       	ldd	r24, Z+6	; 0x06
    45b6:	89 23       	and	r24, r25
    45b8:	86 83       	std	Z+6, r24	; 0x06
        if (pevent->OSEventTbl[y] == 0) {
    45ba:	88 23       	and	r24, r24
    45bc:	31 f4       	brne	.+12     	; 0x45ca <OSEventPendMulti+0x16e>
            pevent->OSEventGrp &= ~bity;
    45be:	15 96       	adiw	r26, 0x05	; 5
    45c0:	8c 91       	ld	r24, X
    45c2:	15 97       	sbiw	r26, 0x05	; 5
    45c4:	82 23       	and	r24, r18
    45c6:	15 96       	adiw	r26, 0x05	; 5
    45c8:	8c 93       	st	X, r24
        }
        pevents++;
    45ca:	62 e0       	ldi	r22, 0x02	; 2
    45cc:	70 e0       	ldi	r23, 0x00	; 0
    45ce:	e6 0e       	add	r14, r22
    45d0:	f7 1e       	adc	r15, r23
        pevent = *pevents;
    45d2:	f7 01       	movw	r30, r14
    45d4:	a0 81       	ld	r26, Z
    45d6:	b1 81       	ldd	r27, Z+1	; 0x01
    y       =  ptcb->OSTCBY;
    bity    =  ptcb->OSTCBBitY;
    bitx    =  ptcb->OSTCBBitX;
    pevents =  pevents_multi;
    pevent  = *pevents;
    while (pevent != (OS_EVENT *)0) {                   /* Remove task from all events' wait lists     */
    45d8:	10 97       	sbiw	r26, 0x00	; 0
    45da:	49 f7       	brne	.-46     	; 0x45ae <OSEventPendMulti+0x152>
    45dc:	22 c0       	rjmp	.+68     	; 0x4622 <OSEventPendMulti+0x1c6>
    INT16U     bity;
    INT16U     bitx;
#endif


    y       =  ptcb->OSTCBY;
    45de:	8e 8d       	ldd	r24, Y+30	; 0x1e
    bity    =  ptcb->OSTCBBitY;
    45e0:	28 a1       	ldd	r18, Y+32	; 0x20
    bitx    =  ptcb->OSTCBBitX;
    45e2:	9f 8d       	ldd	r25, Y+31	; 0x1f
    pevents =  pevents_multi;
    pevent  = *pevents;
    45e4:	f7 01       	movw	r30, r14
    45e6:	a0 81       	ld	r26, Z
    45e8:	b1 81       	ldd	r27, Z+1	; 0x01
    while (pevent != (OS_EVENT *)0) {                   /* Remove task from all events' wait lists     */
        pevent->OSEventTbl[y]  &= ~bitx;
    45ea:	48 2f       	mov	r20, r24
    45ec:	50 e0       	ldi	r21, 0x00	; 0
    45ee:	90 95       	com	r25
        if (pevent->OSEventTbl[y] == 0) {
            pevent->OSEventGrp &= ~bity;
    45f0:	20 95       	com	r18
    45f2:	15 c0       	rjmp	.+42     	; 0x461e <OSEventPendMulti+0x1c2>
    bity    =  ptcb->OSTCBBitY;
    bitx    =  ptcb->OSTCBBitX;
    pevents =  pevents_multi;
    pevent  = *pevents;
    while (pevent != (OS_EVENT *)0) {                   /* Remove task from all events' wait lists     */
        pevent->OSEventTbl[y]  &= ~bitx;
    45f4:	fd 01       	movw	r30, r26
    45f6:	e4 0f       	add	r30, r20
    45f8:	f5 1f       	adc	r31, r21
    45fa:	86 81       	ldd	r24, Z+6	; 0x06
    45fc:	89 23       	and	r24, r25
    45fe:	86 83       	std	Z+6, r24	; 0x06
        if (pevent->OSEventTbl[y] == 0) {
    4600:	88 23       	and	r24, r24
    4602:	31 f4       	brne	.+12     	; 0x4610 <OSEventPendMulti+0x1b4>
            pevent->OSEventGrp &= ~bity;
    4604:	15 96       	adiw	r26, 0x05	; 5
    4606:	8c 91       	ld	r24, X
    4608:	15 97       	sbiw	r26, 0x05	; 5
    460a:	82 23       	and	r24, r18
    460c:	15 96       	adiw	r26, 0x05	; 5
    460e:	8c 93       	st	X, r24
        }
        pevents++;
    4610:	62 e0       	ldi	r22, 0x02	; 2
    4612:	70 e0       	ldi	r23, 0x00	; 0
    4614:	e6 0e       	add	r14, r22
    4616:	f7 1e       	adc	r15, r23
        pevent = *pevents;
    4618:	f7 01       	movw	r30, r14
    461a:	a0 81       	ld	r26, Z
    461c:	b1 81       	ldd	r27, Z+1	; 0x01
    y       =  ptcb->OSTCBY;
    bity    =  ptcb->OSTCBBitY;
    bitx    =  ptcb->OSTCBBitX;
    pevents =  pevents_multi;
    pevent  = *pevents;
    while (pevent != (OS_EVENT *)0) {                   /* Remove task from all events' wait lists     */
    461e:	10 97       	sbiw	r26, 0x00	; 0
    4620:	49 f7       	brne	.-46     	; 0x45f4 <OSEventPendMulti+0x198>
        default:                                        /* ... remove task from events' wait lists     */
             OS_EventTaskRemoveMulti(OSTCBCur, pevents_pend);
             break;
    }

    switch (OSTCBCur->OSTCBStatPend) {
    4622:	8b 8d       	ldd	r24, Y+27	; 0x1b
    4624:	88 23       	and	r24, r24
    4626:	19 f0       	breq	.+6      	; 0x462e <OSEventPendMulti+0x1d2>
    4628:	82 30       	cpi	r24, 0x02	; 2
    462a:	d9 f4       	brne	.+54     	; 0x4662 <OSEventPendMulti+0x206>
    462c:	15 c0       	rjmp	.+42     	; 0x4658 <OSEventPendMulti+0x1fc>
        case OS_STAT_PEND_OK:
             switch (pevent->OSEventType) {             /* Return event's message                      */
    462e:	d8 01       	movw	r26, r16
    4630:	8c 91       	ld	r24, X
    4632:	81 50       	subi	r24, 0x01	; 1
    4634:	82 30       	cpi	r24, 0x02	; 2
    4636:	40 f4       	brcc	.+16     	; 0x4648 <OSEventPendMulti+0x1ec>

#if ((OS_MBOX_EN > 0) ||                 \
    ((OS_Q_EN    > 0) && (OS_MAX_QS > 0)))
                 case OS_EVENT_TYPE_MBOX:
                 case OS_EVENT_TYPE_Q:
                     *pmsgs_rdy++ = (void *)OSTCBCur->OSTCBMsg;     /* Return received message         */
    4638:	8e 89       	ldd	r24, Y+22	; 0x16
    463a:	9f 89       	ldd	r25, Y+23	; 0x17
    463c:	f2 01       	movw	r30, r4
    463e:	91 83       	std	Z+1, r25	; 0x01
    4640:	80 83       	st	Z, r24
                      OS_EXIT_CRITICAL();
                     *pevents_rdy = (OS_EVENT *)0;      /* NULL terminate return event array           */
                     *perr        =  OS_ERR_EVENT_TYPE;
                      return (events_rdy_nbr);
             }
            *perr = OS_ERR_NONE;
    4642:	d4 01       	movw	r26, r8
    4644:	1c 92       	st	X, r1
    4646:	13 c0       	rjmp	.+38     	; 0x466e <OSEventPendMulti+0x212>
#endif

                 case OS_EVENT_TYPE_MUTEX:
                 case OS_EVENT_TYPE_FLAG:
                 default:
                      OS_EXIT_CRITICAL();
    4648:	3f bf       	out	0x3f, r19	; 63
                     *pevents_rdy = (OS_EVENT *)0;      /* NULL terminate return event array           */
    464a:	f6 01       	movw	r30, r12
    464c:	11 82       	std	Z+1, r1	; 0x01
    464e:	10 82       	st	Z, r1
                     *perr        =  OS_ERR_EVENT_TYPE;
    4650:	81 e0       	ldi	r24, 0x01	; 1
    4652:	d4 01       	movw	r26, r8
    4654:	8c 93       	st	X, r24
    4656:	18 c0       	rjmp	.+48     	; 0x4688 <OSEventPendMulti+0x22c>
             }
            *perr = OS_ERR_NONE;
             break;

        case OS_STAT_PEND_ABORT:
            *pmsgs_rdy++ = (void *)0;                   /* NO message returned for abort               */
    4658:	f2 01       	movw	r30, r4
    465a:	11 82       	std	Z+1, r1	; 0x01
    465c:	10 82       	st	Z, r1
            *perr        =  OS_ERR_PEND_ABORT;          /* Indicate that event  aborted                */
    465e:	8e e0       	ldi	r24, 0x0E	; 14
    4660:	04 c0       	rjmp	.+8      	; 0x466a <OSEventPendMulti+0x20e>
             break;

        case OS_STAT_PEND_TO:
        default:
            *pmsgs_rdy++ = (void *)0;                   /* NO message returned for timeout             */
    4662:	f2 01       	movw	r30, r4
    4664:	11 82       	std	Z+1, r1	; 0x01
    4666:	10 82       	st	Z, r1
            *perr        =  OS_ERR_TIMEOUT;             /* Indicate that events timed out              */
    4668:	8a e0       	ldi	r24, 0x0A	; 10
    466a:	d4 01       	movw	r26, r8
    466c:	8c 93       	st	X, r24
             break;
    }

    OSTCBCur->OSTCBStat          =  OS_STAT_RDY;        /* Set   task  status to ready                 */
    466e:	e0 91 de 11 	lds	r30, 0x11DE
    4672:	f0 91 df 11 	lds	r31, 0x11DF
    4676:	12 8e       	std	Z+26, r1	; 0x1a
    OSTCBCur->OSTCBStatPend      =  OS_STAT_PEND_OK;    /* Clear pend  status                          */
    4678:	13 8e       	std	Z+27, r1	; 0x1b
    OSTCBCur->OSTCBEventPtr      = (OS_EVENT  *)0;      /* Clear event pointers                        */
    467a:	13 8a       	std	Z+19, r1	; 0x13
    467c:	12 8a       	std	Z+18, r1	; 0x12
    OSTCBCur->OSTCBEventMultiPtr = (OS_EVENT **)0;
    467e:	15 8a       	std	Z+21, r1	; 0x15
    4680:	14 8a       	std	Z+20, r1	; 0x14

#if ((OS_MBOX_EN > 0) ||                 \
    ((OS_Q_EN    > 0) && (OS_MAX_QS > 0)))
    OSTCBCur->OSTCBMsg           = (void      *)0;      /* Clear task  message                         */
    4682:	17 8a       	std	Z+23, r1	; 0x17
    4684:	16 8a       	std	Z+22, r1	; 0x16
#endif

    OS_EXIT_CRITICAL();
    4686:	3f bf       	out	0x3f, r19	; 63

    return (events_rdy_nbr);
}
    4688:	c5 01       	movw	r24, r10
    468a:	df 91       	pop	r29
    468c:	cf 91       	pop	r28
    468e:	1f 91       	pop	r17
    4690:	0f 91       	pop	r16
    4692:	ff 90       	pop	r15
    4694:	ef 90       	pop	r14
    4696:	df 90       	pop	r13
    4698:	cf 90       	pop	r12
    469a:	bf 90       	pop	r11
    469c:	af 90       	pop	r10
    469e:	9f 90       	pop	r9
    46a0:	8f 90       	pop	r8
    46a2:	7f 90       	pop	r7
    46a4:	5f 90       	pop	r5
    46a6:	4f 90       	pop	r4
    46a8:	08 95       	ret

000046aa <OSTimeTick>:
#endif



#if OS_TIME_TICK_HOOK_EN > 0
    OSTimeTickHook();                                      /* Call user definable hook                     */
    46aa:	0e 94 f0 2e 	call	0x5de0	; 0x5de0 <OSTimeTickHook>
#endif
#if OS_TIME_GET_SET_EN > 0
    OS_ENTER_CRITICAL();                                   /* Update the 32-bit tick counter               */
    46ae:	2f b7       	in	r18, 0x3f	; 63
    46b0:	f8 94       	cli
    OSTime++;
    46b2:	80 91 e0 11 	lds	r24, 0x11E0
    46b6:	90 91 e1 11 	lds	r25, 0x11E1
    46ba:	a0 91 e2 11 	lds	r26, 0x11E2
    46be:	b0 91 e3 11 	lds	r27, 0x11E3
    46c2:	01 96       	adiw	r24, 0x01	; 1
    46c4:	a1 1d       	adc	r26, r1
    46c6:	b1 1d       	adc	r27, r1
    46c8:	80 93 e0 11 	sts	0x11E0, r24
    46cc:	90 93 e1 11 	sts	0x11E1, r25
    46d0:	a0 93 e2 11 	sts	0x11E2, r26
    46d4:	b0 93 e3 11 	sts	0x11E3, r27
    OS_EXIT_CRITICAL();
    46d8:	2f bf       	out	0x3f, r18	; 63
#endif
    if (OSRunning == OS_TRUE) {
    46da:	90 91 ba 10 	lds	r25, 0x10BA
    46de:	91 30       	cpi	r25, 0x01	; 1
    46e0:	09 f0       	breq	.+2      	; 0x46e4 <OSTimeTick+0x3a>
    46e2:	58 c0       	rjmp	.+176    	; 0x4794 <OSTimeTick+0xea>
#if OS_TICK_STEP_EN > 0
        switch (OSTickStepState) {                         /* Determine whether we need to process a tick  */
    46e4:	80 91 c3 10 	lds	r24, 0x10C3
    46e8:	81 30       	cpi	r24, 0x01	; 1
    46ea:	09 f4       	brne	.+2      	; 0x46ee <OSTimeTick+0x44>
    46ec:	53 c0       	rjmp	.+166    	; 0x4794 <OSTimeTick+0xea>
    46ee:	81 30       	cpi	r24, 0x01	; 1
    46f0:	38 f0       	brcs	.+14     	; 0x4700 <OSTimeTick+0x56>
    46f2:	82 30       	cpi	r24, 0x02	; 2
    46f4:	19 f4       	brne	.+6      	; 0x46fc <OSTimeTick+0x52>
                 step = OS_FALSE;                          /*      .. OSTickStepState to OS_TICK_STEP_ONCE */
                 break;

            case OS_TICK_STEP_ONCE:                        /* Yes, process tick once and wait for next ... */
                 step            = OS_TRUE;                /*      ... step command from uC/OS-View        */
                 OSTickStepState = OS_TICK_STEP_WAIT;
    46f6:	90 93 c3 10 	sts	0x10C3, r25
    46fa:	02 c0       	rjmp	.+4      	; 0x4700 <OSTimeTick+0x56>
                 break;

            default:                                       /* Invalid case, correct situation              */
                 step            = OS_TRUE;
                 OSTickStepState = OS_TICK_STEP_DIS;
    46fc:	10 92 c3 10 	sts	0x10C3, r1
        }
        if (step == OS_FALSE) {                            /* Return if waiting for step command           */
            return;
        }
#endif
        ptcb = OSTCBList;                                  /* Point at first TCB in TCB list               */
    4700:	a0 91 c1 10 	lds	r26, 0x10C1
    4704:	b0 91 c2 10 	lds	r27, 0x10C2
            if (ptcb->OSTCBDly != 0) {                     /* No, Delayed or waiting for event with TO     */
                if (--ptcb->OSTCBDly == 0) {               /* Decrement nbr of ticks to end of delay       */
                                                           /* Check for timeout                            */
                    if ((ptcb->OSTCBStat & OS_STAT_PEND_ANY) != OS_STAT_RDY) {
                        ptcb->OSTCBStat  &= ~(INT8U)OS_STAT_PEND_ANY;          /* Yes, Clear status flag   */
                        ptcb->OSTCBStatPend = OS_STAT_PEND_TO;                 /* Indicate PEND timeout    */
    4708:	31 e0       	ldi	r19, 0x01	; 1
    470a:	3e c0       	rjmp	.+124    	; 0x4788 <OSTimeTick+0xde>
            return;
        }
#endif
        ptcb = OSTCBList;                                  /* Point at first TCB in TCB list               */
        while (ptcb->OSTCBPrio != OS_TASK_IDLE_PRIO) {     /* Go through all TCBs in TCB list              */
            OS_ENTER_CRITICAL();
    470c:	2f b7       	in	r18, 0x3f	; 63
    470e:	f8 94       	cli
            if (ptcb->OSTCBDly != 0) {                     /* No, Delayed or waiting for event with TO     */
    4710:	58 96       	adiw	r26, 0x18	; 24
    4712:	8d 91       	ld	r24, X+
    4714:	9c 91       	ld	r25, X
    4716:	59 97       	sbiw	r26, 0x19	; 25
    4718:	00 97       	sbiw	r24, 0x00	; 0
    471a:	89 f1       	breq	.+98     	; 0x477e <OSTimeTick+0xd4>
                if (--ptcb->OSTCBDly == 0) {               /* Decrement nbr of ticks to end of delay       */
    471c:	01 97       	sbiw	r24, 0x01	; 1
    471e:	59 96       	adiw	r26, 0x19	; 25
    4720:	9c 93       	st	X, r25
    4722:	8e 93       	st	-X, r24
    4724:	58 97       	sbiw	r26, 0x18	; 24
    4726:	89 2b       	or	r24, r25
    4728:	51 f5       	brne	.+84     	; 0x477e <OSTimeTick+0xd4>
                                                           /* Check for timeout                            */
                    if ((ptcb->OSTCBStat & OS_STAT_PEND_ANY) != OS_STAT_RDY) {
    472a:	5a 96       	adiw	r26, 0x1a	; 26
    472c:	9c 91       	ld	r25, X
    472e:	5a 97       	sbiw	r26, 0x1a	; 26
    4730:	89 2f       	mov	r24, r25
    4732:	87 73       	andi	r24, 0x37	; 55
    4734:	41 f0       	breq	.+16     	; 0x4746 <OSTimeTick+0x9c>
                        ptcb->OSTCBStat  &= ~(INT8U)OS_STAT_PEND_ANY;          /* Yes, Clear status flag   */
    4736:	98 7c       	andi	r25, 0xC8	; 200
    4738:	5a 96       	adiw	r26, 0x1a	; 26
    473a:	9c 93       	st	X, r25
    473c:	5a 97       	sbiw	r26, 0x1a	; 26
                        ptcb->OSTCBStatPend = OS_STAT_PEND_TO;                 /* Indicate PEND timeout    */
    473e:	5b 96       	adiw	r26, 0x1b	; 27
    4740:	3c 93       	st	X, r19
    4742:	5b 97       	sbiw	r26, 0x1b	; 27
    4744:	03 c0       	rjmp	.+6      	; 0x474c <OSTimeTick+0xa2>
                    } else {
                        ptcb->OSTCBStatPend = OS_STAT_PEND_OK;
    4746:	5b 96       	adiw	r26, 0x1b	; 27
    4748:	1c 92       	st	X, r1
    474a:	5b 97       	sbiw	r26, 0x1b	; 27
                    }

                    if ((ptcb->OSTCBStat & OS_STAT_SUSPEND) == OS_STAT_RDY) {  /* Is task suspended?       */
    474c:	5a 96       	adiw	r26, 0x1a	; 26
    474e:	8c 91       	ld	r24, X
    4750:	5a 97       	sbiw	r26, 0x1a	; 26
    4752:	83 fd       	sbrc	r24, 3
    4754:	14 c0       	rjmp	.+40     	; 0x477e <OSTimeTick+0xd4>
                        OSRdyGrp               |= ptcb->OSTCBBitY;             /* No,  Make ready          */
    4756:	80 91 d2 11 	lds	r24, 0x11D2
    475a:	90 96       	adiw	r26, 0x20	; 32
    475c:	9c 91       	ld	r25, X
    475e:	90 97       	sbiw	r26, 0x20	; 32
    4760:	89 2b       	or	r24, r25
    4762:	80 93 d2 11 	sts	0x11D2, r24
                        OSRdyTbl[ptcb->OSTCBY] |= ptcb->OSTCBBitX;
    4766:	5e 96       	adiw	r26, 0x1e	; 30
    4768:	ec 91       	ld	r30, X
    476a:	5e 97       	sbiw	r26, 0x1e	; 30
    476c:	f0 e0       	ldi	r31, 0x00	; 0
    476e:	ed 52       	subi	r30, 0x2D	; 45
    4770:	fe 4e       	sbci	r31, 0xEE	; 238
    4772:	80 81       	ld	r24, Z
    4774:	5f 96       	adiw	r26, 0x1f	; 31
    4776:	9c 91       	ld	r25, X
    4778:	5f 97       	sbiw	r26, 0x1f	; 31
    477a:	89 2b       	or	r24, r25
    477c:	80 83       	st	Z, r24
                    }
                }
            }
            ptcb = ptcb->OSTCBNext;                        /* Point at next TCB in TCB list                */
    477e:	1e 96       	adiw	r26, 0x0e	; 14
    4780:	0d 90       	ld	r0, X+
    4782:	bc 91       	ld	r27, X
    4784:	a0 2d       	mov	r26, r0
            OS_EXIT_CRITICAL();
    4786:	2f bf       	out	0x3f, r18	; 63
        if (step == OS_FALSE) {                            /* Return if waiting for step command           */
            return;
        }
#endif
        ptcb = OSTCBList;                                  /* Point at first TCB in TCB list               */
        while (ptcb->OSTCBPrio != OS_TASK_IDLE_PRIO) {     /* Go through all TCBs in TCB list              */
    4788:	5c 96       	adiw	r26, 0x1c	; 28
    478a:	8c 91       	ld	r24, X
    478c:	5c 97       	sbiw	r26, 0x1c	; 28
    478e:	8f 33       	cpi	r24, 0x3F	; 63
    4790:	09 f0       	breq	.+2      	; 0x4794 <OSTimeTick+0xea>
    4792:	bc cf       	rjmp	.-136    	; 0x470c <OSTimeTick+0x62>
    4794:	08 95       	ret

00004796 <OSStart>:
*********************************************************************************************************
*/

void  OSStart (void)
{
    if (OSRunning == OS_FALSE) {
    4796:	80 91 ba 10 	lds	r24, 0x10BA
    479a:	88 23       	and	r24, r24
    479c:	41 f5       	brne	.+80     	; 0x47ee <OSStart+0x58>
{
#if OS_LOWEST_PRIO <= 63                         /* See if we support up to 64 tasks                   */
    INT8U   y;


    y             = OSUnMapTbl[OSRdyGrp];
    479e:	e0 91 d2 11 	lds	r30, 0x11D2
    47a2:	f0 e0       	ldi	r31, 0x00	; 0
    47a4:	ee 5d       	subi	r30, 0xDE	; 222
    47a6:	fd 4f       	sbci	r31, 0xFD	; 253
    47a8:	a0 81       	ld	r26, Z
    OSPrioHighRdy = (INT8U)((y << 3) + OSUnMapTbl[OSRdyTbl[y]]);
    47aa:	ea 2f       	mov	r30, r26
    47ac:	f0 e0       	ldi	r31, 0x00	; 0
    47ae:	ed 52       	subi	r30, 0x2D	; 45
    47b0:	fe 4e       	sbci	r31, 0xEE	; 238
    47b2:	e0 81       	ld	r30, Z
    47b4:	f0 e0       	ldi	r31, 0x00	; 0
    47b6:	ee 5d       	subi	r30, 0xDE	; 222
    47b8:	fd 4f       	sbci	r31, 0xFD	; 253
    47ba:	aa 0f       	add	r26, r26
    47bc:	aa 0f       	add	r26, r26
    47be:	aa 0f       	add	r26, r26
    47c0:	80 81       	ld	r24, Z
    47c2:	a8 0f       	add	r26, r24
    47c4:	a0 93 bf 10 	sts	0x10BF, r26

void  OSStart (void)
{
    if (OSRunning == OS_FALSE) {
        OS_SchedNew();                               /* Find highest priority's task priority number   */
        OSPrioCur     = OSPrioHighRdy;
    47c8:	a0 93 c0 10 	sts	0x10C0, r26
        OSTCBHighRdy  = OSTCBPrioTbl[OSPrioHighRdy]; /* Point to highest priority task ready to run    */
    47cc:	b0 e0       	ldi	r27, 0x00	; 0
    47ce:	aa 0f       	add	r26, r26
    47d0:	bb 1f       	adc	r27, r27
    47d2:	a7 51       	subi	r26, 0x17	; 23
    47d4:	b8 4e       	sbci	r27, 0xE8	; 232
    47d6:	8d 91       	ld	r24, X+
    47d8:	9c 91       	ld	r25, X
    47da:	90 93 d1 11 	sts	0x11D1, r25
    47de:	80 93 d0 11 	sts	0x11D0, r24
        OSTCBCur      = OSTCBHighRdy;
    47e2:	90 93 df 11 	sts	0x11DF, r25
    47e6:	80 93 de 11 	sts	0x11DE, r24
        OSStartHighRdy();                            /* Execute target specific code to start task     */
    47ea:	0e 94 05 2f 	call	0x5e0a	; 0x5e0a <OSStartHighRdy>
    47ee:	08 95       	ret

000047f0 <OSIntExit>:
*              2) Rescheduling is prevented when the scheduler is locked (see OS_SchedLock())
*********************************************************************************************************
*/

void  OSIntExit (void)
{
    47f0:	1f 93       	push	r17
    OS_CPU_SR  cpu_sr = 0;
#endif



    if (OSRunning == OS_TRUE) {
    47f2:	80 91 ba 10 	lds	r24, 0x10BA
    47f6:	81 30       	cpi	r24, 0x01	; 1
    47f8:	09 f0       	breq	.+2      	; 0x47fc <OSIntExit+0xc>
    47fa:	5b c0       	rjmp	.+182    	; 0x48b2 <OSIntExit+0xc2>
        OS_ENTER_CRITICAL();
    47fc:	1f b7       	in	r17, 0x3f	; 63
    47fe:	f8 94       	cli
        if (OSIntNesting > 0) {                            /* Prevent OSIntNesting from wrapping       */
    4800:	80 91 dd 11 	lds	r24, 0x11DD
    4804:	88 23       	and	r24, r24
    4806:	19 f0       	breq	.+6      	; 0x480e <OSIntExit+0x1e>
            OSIntNesting--;
    4808:	81 50       	subi	r24, 0x01	; 1
    480a:	80 93 dd 11 	sts	0x11DD, r24
        }
        if (OSIntNesting == 0) {                           /* Reschedule only if all ISRs complete ... */
    480e:	80 91 dd 11 	lds	r24, 0x11DD
    4812:	88 23       	and	r24, r24
    4814:	09 f0       	breq	.+2      	; 0x4818 <OSIntExit+0x28>
    4816:	4c c0       	rjmp	.+152    	; 0x48b0 <OSIntExit+0xc0>
            if (OSLockNesting == 0) {                      /* ... and not locked.                      */
    4818:	80 91 b9 10 	lds	r24, 0x10B9
    481c:	88 23       	and	r24, r24
    481e:	09 f0       	breq	.+2      	; 0x4822 <OSIntExit+0x32>
    4820:	47 c0       	rjmp	.+142    	; 0x48b0 <OSIntExit+0xc0>
{
#if OS_LOWEST_PRIO <= 63                         /* See if we support up to 64 tasks                   */
    INT8U   y;


    y             = OSUnMapTbl[OSRdyGrp];
    4822:	e0 91 d2 11 	lds	r30, 0x11D2
    4826:	f0 e0       	ldi	r31, 0x00	; 0
    4828:	ee 5d       	subi	r30, 0xDE	; 222
    482a:	fd 4f       	sbci	r31, 0xFD	; 253
    482c:	80 81       	ld	r24, Z
    OSPrioHighRdy = (INT8U)((y << 3) + OSUnMapTbl[OSRdyTbl[y]]);
    482e:	e8 2f       	mov	r30, r24
    4830:	f0 e0       	ldi	r31, 0x00	; 0
    4832:	ed 52       	subi	r30, 0x2D	; 45
    4834:	fe 4e       	sbci	r31, 0xEE	; 238
    4836:	e0 81       	ld	r30, Z
    4838:	f0 e0       	ldi	r31, 0x00	; 0
    483a:	ee 5d       	subi	r30, 0xDE	; 222
    483c:	fd 4f       	sbci	r31, 0xFD	; 253
    483e:	98 2f       	mov	r25, r24
    4840:	99 0f       	add	r25, r25
    4842:	99 0f       	add	r25, r25
    4844:	99 0f       	add	r25, r25
    4846:	80 81       	ld	r24, Z
    4848:	98 0f       	add	r25, r24
    484a:	90 93 bf 10 	sts	0x10BF, r25
            OSIntNesting--;
        }
        if (OSIntNesting == 0) {                           /* Reschedule only if all ISRs complete ... */
            if (OSLockNesting == 0) {                      /* ... and not locked.                      */
                OS_SchedNew();
                if (OSPrioHighRdy != OSPrioCur) {          /* No Ctx Sw if current task is highest rdy */
    484e:	80 91 c0 10 	lds	r24, 0x10C0
    4852:	98 17       	cp	r25, r24
    4854:	69 f1       	breq	.+90     	; 0x48b0 <OSIntExit+0xc0>
                    OSTCBHighRdy  = OSTCBPrioTbl[OSPrioHighRdy];
    4856:	e9 2f       	mov	r30, r25
    4858:	f0 e0       	ldi	r31, 0x00	; 0
    485a:	ee 0f       	add	r30, r30
    485c:	ff 1f       	adc	r31, r31
    485e:	e7 51       	subi	r30, 0x17	; 23
    4860:	f8 4e       	sbci	r31, 0xE8	; 232
    4862:	01 90       	ld	r0, Z+
    4864:	f0 81       	ld	r31, Z
    4866:	e0 2d       	mov	r30, r0
    4868:	f0 93 d1 11 	sts	0x11D1, r31
    486c:	e0 93 d0 11 	sts	0x11D0, r30
#if OS_TASK_PROFILE_EN > 0
                    OSTCBHighRdy->OSTCBCtxSwCtr++;         /* Inc. # of context switches to this task  */
    4870:	81 a1       	ldd	r24, Z+33	; 0x21
    4872:	92 a1       	ldd	r25, Z+34	; 0x22
    4874:	a3 a1       	ldd	r26, Z+35	; 0x23
    4876:	b4 a1       	ldd	r27, Z+36	; 0x24
    4878:	01 96       	adiw	r24, 0x01	; 1
    487a:	a1 1d       	adc	r26, r1
    487c:	b1 1d       	adc	r27, r1
    487e:	81 a3       	std	Z+33, r24	; 0x21
    4880:	92 a3       	std	Z+34, r25	; 0x22
    4882:	a3 a3       	std	Z+35, r26	; 0x23
    4884:	b4 a3       	std	Z+36, r27	; 0x24
#endif
                    OSCtxSwCtr++;                          /* Keep track of the number of ctx switches */
    4886:	80 91 c4 11 	lds	r24, 0x11C4
    488a:	90 91 c5 11 	lds	r25, 0x11C5
    488e:	a0 91 c6 11 	lds	r26, 0x11C6
    4892:	b0 91 c7 11 	lds	r27, 0x11C7
    4896:	01 96       	adiw	r24, 0x01	; 1
    4898:	a1 1d       	adc	r26, r1
    489a:	b1 1d       	adc	r27, r1
    489c:	80 93 c4 11 	sts	0x11C4, r24
    48a0:	90 93 c5 11 	sts	0x11C5, r25
    48a4:	a0 93 c6 11 	sts	0x11C6, r26
    48a8:	b0 93 c7 11 	sts	0x11C7, r27
                    OSIntCtxSw();                          /* Perform interrupt level ctx switch       */
    48ac:	0e 94 ac 2f 	call	0x5f58	; 0x5f58 <OSIntCtxSw>
                }
            }
        }
        OS_EXIT_CRITICAL();
    48b0:	1f bf       	out	0x3f, r17	; 63
    }
}
    48b2:	1f 91       	pop	r17
    48b4:	08 95       	ret

000048b6 <OSInit>:
* Returns    : none
*********************************************************************************************************
*/

void  OSInit (void)
{
    48b6:	4f 92       	push	r4
    48b8:	5f 92       	push	r5
    48ba:	6f 92       	push	r6
    48bc:	7f 92       	push	r7
    48be:	8f 92       	push	r8
    48c0:	9f 92       	push	r9
    48c2:	af 92       	push	r10
    48c4:	bf 92       	push	r11
    48c6:	cf 92       	push	r12
    48c8:	df 92       	push	r13
    48ca:	ef 92       	push	r14
    48cc:	ff 92       	push	r15
    48ce:	0f 93       	push	r16
    48d0:	1f 93       	push	r17
    48d2:	df 93       	push	r29
    48d4:	cf 93       	push	r28
    48d6:	0f 92       	push	r0
    48d8:	cd b7       	in	r28, 0x3d	; 61
    48da:	de b7       	in	r29, 0x3e	; 62
    OSInitHookBegin();                                           /* Call port specific initialization code   */
    48dc:	0e 94 a7 2e 	call	0x5d4e	; 0x5d4e <OSInitHookBegin>
*/

static  void  OS_InitMisc (void)
{
#if OS_TIME_GET_SET_EN > 0
    OSTime        = 0L;                                    /* Clear the 32-bit system clock            */
    48e0:	10 92 e0 11 	sts	0x11E0, r1
    48e4:	10 92 e1 11 	sts	0x11E1, r1
    48e8:	10 92 e2 11 	sts	0x11E2, r1
    48ec:	10 92 e3 11 	sts	0x11E3, r1
#endif

    OSIntNesting  = 0;                                     /* Clear the interrupt nesting counter      */
    48f0:	10 92 dd 11 	sts	0x11DD, r1
    OSLockNesting = 0;                                     /* Clear the scheduling lock counter        */
    48f4:	10 92 b9 10 	sts	0x10B9, r1

    OSTaskCtr     = 0;                                     /* Clear the number of tasks                */
    48f8:	10 92 cf 11 	sts	0x11CF, r1

    OSRunning     = OS_FALSE;                              /* Indicate that multitasking not started   */
    48fc:	10 92 ba 10 	sts	0x10BA, r1

    OSCtxSwCtr    = 0;                                     /* Clear the context switch counter         */
    4900:	10 92 c4 11 	sts	0x11C4, r1
    4904:	10 92 c5 11 	sts	0x11C5, r1
    4908:	10 92 c6 11 	sts	0x11C6, r1
    490c:	10 92 c7 11 	sts	0x11C7, r1
    OSIdleCtr     = 0L;                                    /* Clear the 32-bit idle counter            */
    4910:	10 92 bb 10 	sts	0x10BB, r1
    4914:	10 92 bc 10 	sts	0x10BC, r1
    4918:	10 92 bd 10 	sts	0x10BD, r1
    491c:	10 92 be 10 	sts	0x10BE, r1

#if OS_TASK_STAT_EN > 0
    OSIdleCtrRun  = 0L;
    4920:	10 92 69 18 	sts	0x1869, r1
    4924:	10 92 6a 18 	sts	0x186A, r1
    4928:	10 92 6b 18 	sts	0x186B, r1
    492c:	10 92 6c 18 	sts	0x186C, r1
    OSIdleCtrMax  = 0L;
    4930:	10 92 c8 11 	sts	0x11C8, r1
    4934:	10 92 c9 11 	sts	0x11C9, r1
    4938:	10 92 ca 11 	sts	0x11CA, r1
    493c:	10 92 cb 11 	sts	0x11CB, r1
    OSStatRdy     = OS_FALSE;                              /* Statistic task is not ready              */
    4940:	10 92 e8 17 	sts	0x17E8, r1
#else
    INT16U  *prdytbl;
#endif


    OSRdyGrp      = 0;                                     /* Clear the ready list                     */
    4944:	10 92 d2 11 	sts	0x11D2, r1
    4948:	e3 ed       	ldi	r30, 0xD3	; 211
    494a:	f1 e1       	ldi	r31, 0x11	; 17
    prdytbl       = &OSRdyTbl[0];
    for (i = 0; i < OS_RDY_TBL_SIZE; i++) {
        *prdytbl++ = 0;
    494c:	11 92       	st	Z+, r1
#endif


    OSRdyGrp      = 0;                                     /* Clear the ready list                     */
    prdytbl       = &OSRdyTbl[0];
    for (i = 0; i < OS_RDY_TBL_SIZE; i++) {
    494e:	81 e1       	ldi	r24, 0x11	; 17
    4950:	eb 3d       	cpi	r30, 0xDB	; 219
    4952:	f8 07       	cpc	r31, r24
    4954:	d9 f7       	brne	.-10     	; 0x494c <OSInit+0x96>
        *prdytbl++ = 0;
    }

    OSPrioCur     = 0;
    4956:	10 92 c0 10 	sts	0x10C0, r1
    OSPrioHighRdy = 0;
    495a:	10 92 bf 10 	sts	0x10BF, r1

    OSTCBHighRdy  = (OS_TCB *)0;
    495e:	10 92 d1 11 	sts	0x11D1, r1
    4962:	10 92 d0 11 	sts	0x11D0, r1
    OSTCBCur      = (OS_TCB *)0;
    4966:	10 92 df 11 	sts	0x11DF, r1
    496a:	10 92 de 11 	sts	0x11DE, r1
    INT8U    i;
    OS_TCB  *ptcb1;
    OS_TCB  *ptcb2;


    OS_MemClr((INT8U *)&OSTCBTbl[0],     sizeof(OSTCBTbl));      /* Clear all the TCBs                 */
    496e:	e4 ec       	ldi	r30, 0xC4	; 196
    4970:	f4 e1       	ldi	r31, 0x14	; 20
*/

void  OS_MemClr (INT8U *pdest, INT16U size)
{
    while (size > 0) {
        *pdest++ = (INT8U)0;
    4972:	11 92       	st	Z+, r1
*********************************************************************************************************
*/

void  OS_MemClr (INT8U *pdest, INT16U size)
{
    while (size > 0) {
    4974:	97 e1       	ldi	r25, 0x17	; 23
    4976:	e8 3e       	cpi	r30, 0xE8	; 232
    4978:	f9 07       	cpc	r31, r25
    497a:	d9 f7       	brne	.-10     	; 0x4972 <OSInit+0xbc>
    OS_TCB  *ptcb1;
    OS_TCB  *ptcb2;


    OS_MemClr((INT8U *)&OSTCBTbl[0],     sizeof(OSTCBTbl));      /* Clear all the TCBs                 */
    OS_MemClr((INT8U *)&OSTCBPrioTbl[0], sizeof(OSTCBPrioTbl));  /* Clear the priority table           */
    497c:	e9 ee       	ldi	r30, 0xE9	; 233
    497e:	f7 e1       	ldi	r31, 0x17	; 23
*/

void  OS_MemClr (INT8U *pdest, INT16U size)
{
    while (size > 0) {
        *pdest++ = (INT8U)0;
    4980:	11 92       	st	Z+, r1
*********************************************************************************************************
*/

void  OS_MemClr (INT8U *pdest, INT16U size)
{
    while (size > 0) {
    4982:	88 e1       	ldi	r24, 0x18	; 24
    4984:	e9 36       	cpi	r30, 0x69	; 105
    4986:	f8 07       	cpc	r31, r24
    4988:	d9 f7       	brne	.-10     	; 0x4980 <OSInit+0xca>
    498a:	a7 ef       	ldi	r26, 0xF7	; 247
    498c:	b4 e1       	ldi	r27, 0x14	; 20
    ptcb1 = &OSTCBTbl[0];
    ptcb2 = &OSTCBTbl[1];
    for (i = 0; i < (OS_MAX_TASKS + OS_N_SYS_TASKS - 1); i++) {  /* Init. list of free TCBs            */
        ptcb1->OSTCBNext = ptcb2;
#if OS_TASK_NAME_SIZE > 1
        ptcb1->OSTCBTaskName[0] = '?';                           /* Unknown name                       */
    498e:	8f e3       	ldi	r24, 0x3F	; 63
    OS_MemClr((INT8U *)&OSTCBTbl[0],     sizeof(OSTCBTbl));      /* Clear all the TCBs                 */
    OS_MemClr((INT8U *)&OSTCBPrioTbl[0], sizeof(OSTCBPrioTbl));  /* Clear the priority table           */
    ptcb1 = &OSTCBTbl[0];
    ptcb2 = &OSTCBTbl[1];
    for (i = 0; i < (OS_MAX_TASKS + OS_N_SYS_TASKS - 1); i++) {  /* Init. list of free TCBs            */
        ptcb1->OSTCBNext = ptcb2;
    4990:	fd 01       	movw	r30, r26
    4992:	b5 97       	sbiw	r30, 0x25	; 37
    4994:	50 96       	adiw	r26, 0x10	; 16
    4996:	b1 83       	std	Z+1, r27	; 0x01
    4998:	a0 83       	st	Z, r26
    499a:	50 97       	sbiw	r26, 0x10	; 16
#if OS_TASK_NAME_SIZE > 1
        ptcb1->OSTCBTaskName[0] = '?';                           /* Unknown name                       */
    499c:	8c 93       	st	X, r24
        ptcb1->OSTCBTaskName[1] = OS_ASCII_NUL;
    499e:	11 96       	adiw	r26, 0x01	; 1
    49a0:	1c 92       	st	X, r1
    49a2:	11 97       	sbiw	r26, 0x01	; 1
    49a4:	ad 5b       	subi	r26, 0xBD	; 189
    49a6:	bf 4f       	sbci	r27, 0xFF	; 255

    OS_MemClr((INT8U *)&OSTCBTbl[0],     sizeof(OSTCBTbl));      /* Clear all the TCBs                 */
    OS_MemClr((INT8U *)&OSTCBPrioTbl[0], sizeof(OSTCBPrioTbl));  /* Clear the priority table           */
    ptcb1 = &OSTCBTbl[0];
    ptcb2 = &OSTCBTbl[1];
    for (i = 0; i < (OS_MAX_TASKS + OS_N_SYS_TASKS - 1); i++) {  /* Init. list of free TCBs            */
    49a8:	97 e1       	ldi	r25, 0x17	; 23
    49aa:	a8 3d       	cpi	r26, 0xD8	; 216
    49ac:	b9 07       	cpc	r27, r25
    49ae:	81 f7       	brne	.-32     	; 0x4990 <OSInit+0xda>
        ptcb1->OSTCBTaskName[1] = OS_ASCII_NUL;
#endif
        ptcb1++;
        ptcb2++;
    }
    ptcb1->OSTCBNext = (OS_TCB *)0;                              /* Last OS_TCB                        */
    49b0:	10 92 b4 17 	sts	0x17B4, r1
    49b4:	10 92 b3 17 	sts	0x17B3, r1
#if OS_TASK_NAME_SIZE > 1
    ptcb1->OSTCBTaskName[0] = '?';                               /* Unknown name                       */
    49b8:	8c 93       	st	X, r24
    ptcb1->OSTCBTaskName[1] = OS_ASCII_NUL;
    49ba:	11 96       	adiw	r26, 0x01	; 1
    49bc:	1c 92       	st	X, r1
#endif
    OSTCBList               = (OS_TCB *)0;                       /* TCB lists initializations          */
    49be:	10 92 c2 10 	sts	0x10C2, r1
    49c2:	10 92 c1 10 	sts	0x10C1, r1
    OSTCBFreeList           = &OSTCBTbl[0];
    49c6:	84 ec       	ldi	r24, 0xC4	; 196
    49c8:	94 e1       	ldi	r25, 0x14	; 20
    49ca:	90 93 cd 11 	sts	0x11CD, r25
    49ce:	80 93 cc 11 	sts	0x11CC, r24
    INT16U     i;
    OS_EVENT  *pevent1;
    OS_EVENT  *pevent2;


    OS_MemClr((INT8U *)&OSEventTbl[0], sizeof(OSEventTbl)); /* Clear the event table                   */
    49d2:	e4 ee       	ldi	r30, 0xE4	; 228
    49d4:	f2 e1       	ldi	r31, 0x12	; 18
*/

void  OS_MemClr (INT8U *pdest, INT16U size)
{
    while (size > 0) {
        *pdest++ = (INT8U)0;
    49d6:	11 92       	st	Z+, r1
*********************************************************************************************************
*/

void  OS_MemClr (INT8U *pdest, INT16U size)
{
    while (size > 0) {
    49d8:	84 e1       	ldi	r24, 0x14	; 20
    49da:	e4 3c       	cpi	r30, 0xC4	; 196
    49dc:	f8 07       	cpc	r31, r24
    49de:	d9 f7       	brne	.-10     	; 0x49d6 <OSInit+0x120>
    49e0:	e4 ee       	ldi	r30, 0xE4	; 228
    49e2:	f2 e1       	ldi	r31, 0x12	; 18
    pevent2 = &OSEventTbl[1];
    for (i = 0; i < (OS_MAX_EVENTS - 1); i++) {             /* Init. list of free EVENT control blocks */
        pevent1->OSEventType    = OS_EVENT_TYPE_UNUSED;
        pevent1->OSEventPtr     = pevent2;
#if OS_EVENT_NAME_SIZE > 1
        pevent1->OSEventName[0] = '?';                      /* Unknown name                            */
    49e4:	8f e3       	ldi	r24, 0x3F	; 63
*********************************************************************************************************
*/

void  OS_MemClr (INT8U *pdest, INT16U size)
{
    while (size > 0) {
    49e6:	df 01       	movw	r26, r30
    49e8:	5e 96       	adiw	r26, 0x1e	; 30

    OS_MemClr((INT8U *)&OSEventTbl[0], sizeof(OSEventTbl)); /* Clear the event table                   */
    pevent1 = &OSEventTbl[0];
    pevent2 = &OSEventTbl[1];
    for (i = 0; i < (OS_MAX_EVENTS - 1); i++) {             /* Init. list of free EVENT control blocks */
        pevent1->OSEventType    = OS_EVENT_TYPE_UNUSED;
    49ea:	10 82       	st	Z, r1
        pevent1->OSEventPtr     = pevent2;
    49ec:	b2 83       	std	Z+2, r27	; 0x02
    49ee:	a1 83       	std	Z+1, r26	; 0x01
#if OS_EVENT_NAME_SIZE > 1
        pevent1->OSEventName[0] = '?';                      /* Unknown name                            */
    49f0:	86 87       	std	Z+14, r24	; 0x0e
        pevent1->OSEventName[1] = OS_ASCII_NUL;
    49f2:	17 86       	std	Z+15, r1	; 0x0f


    OS_MemClr((INT8U *)&OSEventTbl[0], sizeof(OSEventTbl)); /* Clear the event table                   */
    pevent1 = &OSEventTbl[0];
    pevent2 = &OSEventTbl[1];
    for (i = 0; i < (OS_MAX_EVENTS - 1); i++) {             /* Init. list of free EVENT control blocks */
    49f4:	94 e1       	ldi	r25, 0x14	; 20
    49f6:	a6 3a       	cpi	r26, 0xA6	; 166
    49f8:	b9 07       	cpc	r27, r25
    49fa:	11 f0       	breq	.+4      	; 0x4a00 <OSInit+0x14a>
    49fc:	fd 01       	movw	r30, r26
    49fe:	f3 cf       	rjmp	.-26     	; 0x49e6 <OSInit+0x130>
        pevent1->OSEventName[1] = OS_ASCII_NUL;
#endif
        pevent1++;
        pevent2++;
    }
    pevent1->OSEventType            = OS_EVENT_TYPE_UNUSED;
    4a00:	1c 92       	st	X, r1
    pevent1->OSEventPtr             = (OS_EVENT *)0;
    4a02:	10 a2       	std	Z+32, r1	; 0x20
    4a04:	17 8e       	std	Z+31, r1	; 0x1f
#if OS_EVENT_NAME_SIZE > 1
    pevent1->OSEventName[0]         = '?';
    4a06:	84 a7       	std	Z+44, r24	; 0x2c
    pevent1->OSEventName[1]         = OS_ASCII_NUL;
    4a08:	15 a6       	std	Z+45, r1	; 0x2d
#endif
    OSEventFreeList                 = &OSEventTbl[0];
    4a0a:	84 ee       	ldi	r24, 0xE4	; 228
    4a0c:	92 e1       	ldi	r25, 0x12	; 18
    4a0e:	90 93 dc 11 	sts	0x11DC, r25
    4a12:	80 93 db 11 	sts	0x11DB, r24
#endif


#if OS_TASK_CREATE_EXT_EN > 0
    #if OS_STK_GROWTH == 1
    (void)OSTaskCreateExt(OS_TaskIdle,
    4a16:	0f 92       	push	r0
    4a18:	0f 92       	push	r0
    4a1a:	b3 e0       	ldi	r27, 0x03	; 3
    4a1c:	4b 2e       	mov	r4, r27
    4a1e:	51 2c       	mov	r5, r1
    4a20:	ed b7       	in	r30, 0x3d	; 61
    4a22:	fe b7       	in	r31, 0x3e	; 62
    4a24:	52 82       	std	Z+2, r5	; 0x02
    4a26:	41 82       	std	Z+1, r4	; 0x01
    4a28:	81 ea       	ldi	r24, 0xA1	; 161
    4a2a:	91 e2       	ldi	r25, 0x21	; 33
    4a2c:	60 e0       	ldi	r22, 0x00	; 0
    4a2e:	70 e0       	ldi	r23, 0x00	; 0
    4a30:	43 ee       	ldi	r20, 0xE3	; 227
    4a32:	52 e1       	ldi	r21, 0x12	; 18
    4a34:	2f e3       	ldi	r18, 0x3F	; 63
    4a36:	0f ef       	ldi	r16, 0xFF	; 255
    4a38:	1f ef       	ldi	r17, 0xFF	; 255
    4a3a:	a4 ee       	ldi	r26, 0xE4	; 228
    4a3c:	ea 2e       	mov	r14, r26
    4a3e:	a1 e1       	ldi	r26, 0x11	; 17
    4a40:	fa 2e       	mov	r15, r26
    4a42:	a1 2c       	mov	r10, r1
    4a44:	f1 e0       	ldi	r31, 0x01	; 1
    4a46:	bf 2e       	mov	r11, r31
    4a48:	c1 2c       	mov	r12, r1
    4a4a:	d1 2c       	mov	r13, r1
    4a4c:	88 24       	eor	r8, r8
    4a4e:	99 24       	eor	r9, r9
    4a50:	0e 94 97 2c 	call	0x592e	; 0x592e <OSTaskCreateExt>
                       OS_TASK_IDLE_PRIO);
    #endif
#endif

#if OS_TASK_NAME_SIZE > 14
    OSTaskNameSet(OS_TASK_IDLE_PRIO, (INT8U *)"uC/OS-II Idle", &err);
    4a54:	0f 90       	pop	r0
    4a56:	0f 90       	pop	r0
    4a58:	8f e3       	ldi	r24, 0x3F	; 63
    4a5a:	66 e0       	ldi	r22, 0x06	; 6
    4a5c:	72 e0       	ldi	r23, 0x02	; 2
    4a5e:	3e 01       	movw	r6, r28
    4a60:	08 94       	sec
    4a62:	61 1c       	adc	r6, r1
    4a64:	71 1c       	adc	r7, r1
    4a66:	a3 01       	movw	r20, r6
    4a68:	0e 94 1f 2c 	call	0x583e	; 0x583e <OSTaskNameSet>
#endif


#if OS_TASK_CREATE_EXT_EN > 0
    #if OS_STK_GROWTH == 1
    (void)OSTaskCreateExt(OS_TaskStat,
    4a6c:	0f 92       	push	r0
    4a6e:	0f 92       	push	r0
    4a70:	ed b7       	in	r30, 0x3d	; 61
    4a72:	fe b7       	in	r31, 0x3e	; 62
    4a74:	52 82       	std	Z+2, r5	; 0x02
    4a76:	41 82       	std	Z+1, r4	; 0x01
    4a78:	83 ec       	ldi	r24, 0xC3	; 195
    4a7a:	99 e3       	ldi	r25, 0x39	; 57
    4a7c:	60 e0       	ldi	r22, 0x00	; 0
    4a7e:	70 e0       	ldi	r23, 0x00	; 0
    4a80:	43 ec       	ldi	r20, 0xC3	; 195
    4a82:	51 e1       	ldi	r21, 0x11	; 17
    4a84:	2e e3       	ldi	r18, 0x3E	; 62
    4a86:	0e ef       	ldi	r16, 0xFE	; 254
    4a88:	1f ef       	ldi	r17, 0xFF	; 255
    4a8a:	e4 ec       	ldi	r30, 0xC4	; 196
    4a8c:	ee 2e       	mov	r14, r30
    4a8e:	e0 e1       	ldi	r30, 0x10	; 16
    4a90:	fe 2e       	mov	r15, r30
    4a92:	0e 94 97 2c 	call	0x592e	; 0x592e <OSTaskCreateExt>
                       OS_TASK_STAT_PRIO);                             /* One higher than the idle task  */
    #endif
#endif

#if OS_TASK_NAME_SIZE > 14
    OSTaskNameSet(OS_TASK_STAT_PRIO, (INT8U *)"uC/OS-II Stat", &err);
    4a96:	0f 90       	pop	r0
    4a98:	0f 90       	pop	r0
    4a9a:	8e e3       	ldi	r24, 0x3E	; 62
    4a9c:	64 e1       	ldi	r22, 0x14	; 20
    4a9e:	72 e0       	ldi	r23, 0x02	; 2
    4aa0:	a3 01       	movw	r20, r6
    4aa2:	0e 94 1f 2c 	call	0x583e	; 0x583e <OSTaskNameSet>

#if OS_TMR_EN > 0
    OSTmr_Init();                                                /* Initialize the Timer Manager             */
#endif

    OSInitHookEnd();                                             /* Call port specific init. code            */
    4aa6:	0e 94 a8 2e 	call	0x5d50	; 0x5d50 <OSInitHookEnd>

#if OS_DEBUG_EN > 0
    OSDebugInit();
#endif
}
    4aaa:	0f 90       	pop	r0
    4aac:	cf 91       	pop	r28
    4aae:	df 91       	pop	r29
    4ab0:	1f 91       	pop	r17
    4ab2:	0f 91       	pop	r16
    4ab4:	ff 90       	pop	r15
    4ab6:	ef 90       	pop	r14
    4ab8:	df 90       	pop	r13
    4aba:	cf 90       	pop	r12
    4abc:	bf 90       	pop	r11
    4abe:	af 90       	pop	r10
    4ac0:	9f 90       	pop	r9
    4ac2:	8f 90       	pop	r8
    4ac4:	7f 90       	pop	r7
    4ac6:	6f 90       	pop	r6
    4ac8:	5f 90       	pop	r5
    4aca:	4f 90       	pop	r4
    4acc:	08 95       	ret

00004ace <OSMboxAccept>:
*********************************************************************************************************
*/

#if OS_MBOX_ACCEPT_EN > 0
void  *OSMboxAccept (OS_EVENT *pevent)
{
    4ace:	fc 01       	movw	r30, r24
#if OS_ARG_CHK_EN > 0
    if (pevent == (OS_EVENT *)0) {                        /* Validate 'pevent'                         */
        return ((void *)0);
    }
#endif
    if (pevent->OSEventType != OS_EVENT_TYPE_MBOX) {      /* Validate event block type                 */
    4ad0:	80 81       	ld	r24, Z
    4ad2:	81 30       	cpi	r24, 0x01	; 1
    4ad4:	19 f0       	breq	.+6      	; 0x4adc <OSMboxAccept+0xe>
    4ad6:	20 e0       	ldi	r18, 0x00	; 0
    4ad8:	30 e0       	ldi	r19, 0x00	; 0
    4ada:	07 c0       	rjmp	.+14     	; 0x4aea <OSMboxAccept+0x1c>
        return ((void *)0);
    }
    OS_ENTER_CRITICAL();
    4adc:	8f b7       	in	r24, 0x3f	; 63
    4ade:	f8 94       	cli
    pmsg               = pevent->OSEventPtr;
    4ae0:	21 81       	ldd	r18, Z+1	; 0x01
    4ae2:	32 81       	ldd	r19, Z+2	; 0x02
    pevent->OSEventPtr = (void *)0;                       /* Clear the mailbox                         */
    4ae4:	12 82       	std	Z+2, r1	; 0x02
    4ae6:	11 82       	std	Z+1, r1	; 0x01
    OS_EXIT_CRITICAL();
    4ae8:	8f bf       	out	0x3f, r24	; 63
    return (pmsg);                                        /* Return the message received (or NULL)     */
}
    4aea:	c9 01       	movw	r24, r18
    4aec:	08 95       	ret

00004aee <OSMboxQuery>:
*********************************************************************************************************
*/

#if OS_MBOX_QUERY_EN > 0
INT8U  OSMboxQuery (OS_EVENT *pevent, OS_MBOX_DATA *p_mbox_data)
{
    4aee:	cf 93       	push	r28
    4af0:	df 93       	push	r29
    4af2:	fc 01       	movw	r30, r24
    4af4:	db 01       	movw	r26, r22
    }
    if (p_mbox_data == (OS_MBOX_DATA *)0) {                /* Validate 'p_mbox_data'                   */
        return (OS_ERR_PDATA_NULL);
    }
#endif
    if (pevent->OSEventType != OS_EVENT_TYPE_MBOX) {       /* Validate event block type                */
    4af6:	80 81       	ld	r24, Z
    4af8:	81 30       	cpi	r24, 0x01	; 1
    4afa:	11 f0       	breq	.+4      	; 0x4b00 <OSMboxQuery+0x12>
    4afc:	81 e0       	ldi	r24, 0x01	; 1
    4afe:	1b c0       	rjmp	.+54     	; 0x4b36 <OSMboxQuery+0x48>
        return (OS_ERR_EVENT_TYPE);
    }
    OS_ENTER_CRITICAL();
    4b00:	4f b7       	in	r20, 0x3f	; 63
    4b02:	f8 94       	cli
    p_mbox_data->OSEventGrp = pevent->OSEventGrp;          /* Copy message mailbox wait list           */
    4b04:	85 81       	ldd	r24, Z+5	; 0x05
    4b06:	1a 96       	adiw	r26, 0x0a	; 10
    4b08:	8c 93       	st	X, r24
    4b0a:	1a 97       	sbiw	r26, 0x0a	; 10
    psrc                    = &pevent->OSEventTbl[0];
    4b0c:	9f 01       	movw	r18, r30
    4b0e:	2a 5f       	subi	r18, 0xFA	; 250
    4b10:	3f 4f       	sbci	r19, 0xFF	; 255
    pdest                   = &p_mbox_data->OSEventTbl[0];
    4b12:	6e 5f       	subi	r22, 0xFE	; 254
    4b14:	7f 4f       	sbci	r23, 0xFF	; 255
    4b16:	90 e0       	ldi	r25, 0x00	; 0
    for (i = 0; i < OS_EVENT_TBL_SIZE; i++) {
        *pdest++ = *psrc++;
    4b18:	e9 01       	movw	r28, r18
    4b1a:	89 91       	ld	r24, Y+
    4b1c:	9e 01       	movw	r18, r28
    4b1e:	eb 01       	movw	r28, r22
    4b20:	89 93       	st	Y+, r24
    4b22:	be 01       	movw	r22, r28
    }
    OS_ENTER_CRITICAL();
    p_mbox_data->OSEventGrp = pevent->OSEventGrp;          /* Copy message mailbox wait list           */
    psrc                    = &pevent->OSEventTbl[0];
    pdest                   = &p_mbox_data->OSEventTbl[0];
    for (i = 0; i < OS_EVENT_TBL_SIZE; i++) {
    4b24:	9f 5f       	subi	r25, 0xFF	; 255
    4b26:	98 30       	cpi	r25, 0x08	; 8
    4b28:	b9 f7       	brne	.-18     	; 0x4b18 <OSMboxQuery+0x2a>
        *pdest++ = *psrc++;
    }
    p_mbox_data->OSMsg = pevent->OSEventPtr;               /* Get message from mailbox                 */
    4b2a:	81 81       	ldd	r24, Z+1	; 0x01
    4b2c:	92 81       	ldd	r25, Z+2	; 0x02
    4b2e:	8d 93       	st	X+, r24
    4b30:	9c 93       	st	X, r25
    OS_EXIT_CRITICAL();
    4b32:	4f bf       	out	0x3f, r20	; 63
    4b34:	80 e0       	ldi	r24, 0x00	; 0
    return (OS_ERR_NONE);
}
    4b36:	df 91       	pop	r29
    4b38:	cf 91       	pop	r28
    4b3a:	08 95       	ret

00004b3c <OSMboxPostOpt>:
*********************************************************************************************************
*/

#if OS_MBOX_POST_OPT_EN > 0
INT8U  OSMboxPostOpt (OS_EVENT *pevent, void *pmsg, INT8U opt)
{
    4b3c:	ef 92       	push	r14
    4b3e:	ff 92       	push	r15
    4b40:	0f 93       	push	r16
    4b42:	1f 93       	push	r17
    4b44:	cf 93       	push	r28
    4b46:	df 93       	push	r29
    4b48:	ec 01       	movw	r28, r24
    4b4a:	8b 01       	movw	r16, r22
    4b4c:	e4 2e       	mov	r14, r20
    }
    if (pmsg == (void *)0) {                          /* Make sure we are not posting a NULL pointer   */
        return (OS_ERR_POST_NULL_PTR);
    }
#endif
    if (pevent->OSEventType != OS_EVENT_TYPE_MBOX) {  /* Validate event block type                     */
    4b4e:	88 81       	ld	r24, Y
    4b50:	81 30       	cpi	r24, 0x01	; 1
    4b52:	11 f0       	breq	.+4      	; 0x4b58 <OSMboxPostOpt+0x1c>
    4b54:	81 e0       	ldi	r24, 0x01	; 1
    4b56:	28 c0       	rjmp	.+80     	; 0x4ba8 <OSMboxPostOpt+0x6c>
        return (OS_ERR_EVENT_TYPE);
    }
    OS_ENTER_CRITICAL();
    4b58:	ff b6       	in	r15, 0x3f	; 63
    4b5a:	f8 94       	cli
    if (pevent->OSEventGrp != 0) {                    /* See if any task pending on mailbox            */
    4b5c:	8d 81       	ldd	r24, Y+5	; 0x05
    4b5e:	88 23       	and	r24, r24
    4b60:	c1 f0       	breq	.+48     	; 0x4b92 <OSMboxPostOpt+0x56>
        if ((opt & OS_POST_OPT_BROADCAST) != 0x00) {  /* Do we need to post msg to ALL waiting tasks ? */
    4b62:	40 fd       	sbrc	r20, 0
    4b64:	07 c0       	rjmp	.+14     	; 0x4b74 <OSMboxPostOpt+0x38>
    4b66:	0a c0       	rjmp	.+20     	; 0x4b7c <OSMboxPostOpt+0x40>
            while (pevent->OSEventGrp != 0) {         /* Yes, Post to ALL tasks waiting on mailbox     */
                (void)OS_EventTaskRdy(pevent, pmsg, OS_STAT_MBOX, OS_STAT_PEND_OK);
    4b68:	ce 01       	movw	r24, r28
    4b6a:	b8 01       	movw	r22, r16
    4b6c:	42 e0       	ldi	r20, 0x02	; 2
    4b6e:	20 e0       	ldi	r18, 0x00	; 0
    4b70:	0e 94 3b 1f 	call	0x3e76	; 0x3e76 <OS_EventTaskRdy>
        return (OS_ERR_EVENT_TYPE);
    }
    OS_ENTER_CRITICAL();
    if (pevent->OSEventGrp != 0) {                    /* See if any task pending on mailbox            */
        if ((opt & OS_POST_OPT_BROADCAST) != 0x00) {  /* Do we need to post msg to ALL waiting tasks ? */
            while (pevent->OSEventGrp != 0) {         /* Yes, Post to ALL tasks waiting on mailbox     */
    4b74:	8d 81       	ldd	r24, Y+5	; 0x05
    4b76:	88 23       	and	r24, r24
    4b78:	b9 f7       	brne	.-18     	; 0x4b68 <OSMboxPostOpt+0x2c>
    4b7a:	05 c0       	rjmp	.+10     	; 0x4b86 <OSMboxPostOpt+0x4a>
                (void)OS_EventTaskRdy(pevent, pmsg, OS_STAT_MBOX, OS_STAT_PEND_OK);
            }
        } else {                                      /* No,  Post to HPT waiting on mbox              */
            (void)OS_EventTaskRdy(pevent, pmsg, OS_STAT_MBOX, OS_STAT_PEND_OK);
    4b7c:	ce 01       	movw	r24, r28
    4b7e:	42 e0       	ldi	r20, 0x02	; 2
    4b80:	20 e0       	ldi	r18, 0x00	; 0
    4b82:	0e 94 3b 1f 	call	0x3e76	; 0x3e76 <OS_EventTaskRdy>
        }
        OS_EXIT_CRITICAL();
    4b86:	ff be       	out	0x3f, r15	; 63
        if ((opt & OS_POST_OPT_NO_SCHED) == 0) {	  /* See if scheduler needs to be invoked          */
    4b88:	e2 fc       	sbrc	r14, 2
    4b8a:	0d c0       	rjmp	.+26     	; 0x4ba6 <OSMboxPostOpt+0x6a>
            OS_Sched();                               /* Find HPT ready to run                         */
    4b8c:	0e 94 ba 21 	call	0x4374	; 0x4374 <OS_Sched>
    4b90:	0a c0       	rjmp	.+20     	; 0x4ba6 <OSMboxPostOpt+0x6a>
        }
        return (OS_ERR_NONE);
    }
    if (pevent->OSEventPtr != (void *)0) {            /* Make sure mailbox doesn't already have a msg  */
    4b92:	89 81       	ldd	r24, Y+1	; 0x01
    4b94:	9a 81       	ldd	r25, Y+2	; 0x02
    4b96:	89 2b       	or	r24, r25
    4b98:	19 f0       	breq	.+6      	; 0x4ba0 <OSMboxPostOpt+0x64>
        OS_EXIT_CRITICAL();
    4b9a:	ff be       	out	0x3f, r15	; 63
    4b9c:	84 e1       	ldi	r24, 0x14	; 20
    4b9e:	04 c0       	rjmp	.+8      	; 0x4ba8 <OSMboxPostOpt+0x6c>
        return (OS_ERR_MBOX_FULL);
    }
    pevent->OSEventPtr = pmsg;                        /* Place message in mailbox                      */
    4ba0:	7a 83       	std	Y+2, r23	; 0x02
    4ba2:	69 83       	std	Y+1, r22	; 0x01
    OS_EXIT_CRITICAL();
    4ba4:	ff be       	out	0x3f, r15	; 63
    4ba6:	80 e0       	ldi	r24, 0x00	; 0
    return (OS_ERR_NONE);
}
    4ba8:	df 91       	pop	r29
    4baa:	cf 91       	pop	r28
    4bac:	1f 91       	pop	r17
    4bae:	0f 91       	pop	r16
    4bb0:	ff 90       	pop	r15
    4bb2:	ef 90       	pop	r14
    4bb4:	08 95       	ret

00004bb6 <OSMboxPost>:
*********************************************************************************************************
*/

#if OS_MBOX_POST_EN > 0
INT8U  OSMboxPost (OS_EVENT *pevent, void *pmsg)
{
    4bb6:	1f 93       	push	r17
    4bb8:	fc 01       	movw	r30, r24
    }
    if (pmsg == (void *)0) {                          /* Make sure we are not posting a NULL pointer   */
        return (OS_ERR_POST_NULL_PTR);
    }
#endif
    if (pevent->OSEventType != OS_EVENT_TYPE_MBOX) {  /* Validate event block type                     */
    4bba:	80 81       	ld	r24, Z
    4bbc:	81 30       	cpi	r24, 0x01	; 1
    4bbe:	11 f0       	breq	.+4      	; 0x4bc4 <OSMboxPost+0xe>
    4bc0:	81 e0       	ldi	r24, 0x01	; 1
    4bc2:	19 c0       	rjmp	.+50     	; 0x4bf6 <OSMboxPost+0x40>
        return (OS_ERR_EVENT_TYPE);
    }
    OS_ENTER_CRITICAL();
    4bc4:	1f b7       	in	r17, 0x3f	; 63
    4bc6:	f8 94       	cli
    if (pevent->OSEventGrp != 0) {                    /* See if any task pending on mailbox            */
    4bc8:	85 81       	ldd	r24, Z+5	; 0x05
    4bca:	88 23       	and	r24, r24
    4bcc:	49 f0       	breq	.+18     	; 0x4be0 <OSMboxPost+0x2a>
                                                      /* Ready HPT waiting on event                    */
        (void)OS_EventTaskRdy(pevent, pmsg, OS_STAT_MBOX, OS_STAT_PEND_OK);
    4bce:	cf 01       	movw	r24, r30
    4bd0:	42 e0       	ldi	r20, 0x02	; 2
    4bd2:	20 e0       	ldi	r18, 0x00	; 0
    4bd4:	0e 94 3b 1f 	call	0x3e76	; 0x3e76 <OS_EventTaskRdy>
        OS_EXIT_CRITICAL();
    4bd8:	1f bf       	out	0x3f, r17	; 63
        OS_Sched();                                   /* Find highest priority task ready to run       */
    4bda:	0e 94 ba 21 	call	0x4374	; 0x4374 <OS_Sched>
    4bde:	0a c0       	rjmp	.+20     	; 0x4bf4 <OSMboxPost+0x3e>
        return (OS_ERR_NONE);
    }
    if (pevent->OSEventPtr != (void *)0) {            /* Make sure mailbox doesn't already have a msg  */
    4be0:	81 81       	ldd	r24, Z+1	; 0x01
    4be2:	92 81       	ldd	r25, Z+2	; 0x02
    4be4:	89 2b       	or	r24, r25
    4be6:	19 f0       	breq	.+6      	; 0x4bee <OSMboxPost+0x38>
        OS_EXIT_CRITICAL();
    4be8:	1f bf       	out	0x3f, r17	; 63
    4bea:	84 e1       	ldi	r24, 0x14	; 20
    4bec:	04 c0       	rjmp	.+8      	; 0x4bf6 <OSMboxPost+0x40>
        return (OS_ERR_MBOX_FULL);
    }
    pevent->OSEventPtr = pmsg;                        /* Place message in mailbox                      */
    4bee:	72 83       	std	Z+2, r23	; 0x02
    4bf0:	61 83       	std	Z+1, r22	; 0x01
    OS_EXIT_CRITICAL();
    4bf2:	1f bf       	out	0x3f, r17	; 63
    4bf4:	80 e0       	ldi	r24, 0x00	; 0
    return (OS_ERR_NONE);
}
    4bf6:	1f 91       	pop	r17
    4bf8:	08 95       	ret

00004bfa <OSMboxPendAbort>:
*********************************************************************************************************
*/

#if OS_MBOX_PEND_ABORT_EN > 0
INT8U  OSMboxPendAbort (OS_EVENT *pevent, INT8U opt, INT8U *perr)
{
    4bfa:	ef 92       	push	r14
    4bfc:	ff 92       	push	r15
    4bfe:	0f 93       	push	r16
    4c00:	1f 93       	push	r17
    4c02:	cf 93       	push	r28
    4c04:	df 93       	push	r29
    4c06:	ec 01       	movw	r28, r24
    4c08:	7a 01       	movw	r14, r20
    if (pevent == (OS_EVENT *)0) {                         /* Validate 'pevent'                        */
        *perr = OS_ERR_PEVENT_NULL;
        return (0);
    }
#endif
    if (pevent->OSEventType != OS_EVENT_TYPE_MBOX) {       /* Validate event block type                */
    4c0a:	88 81       	ld	r24, Y
    4c0c:	81 30       	cpi	r24, 0x01	; 1
    4c0e:	21 f0       	breq	.+8      	; 0x4c18 <OSMboxPendAbort+0x1e>
        *perr = OS_ERR_EVENT_TYPE;
    4c10:	81 e0       	ldi	r24, 0x01	; 1
    4c12:	fa 01       	movw	r30, r20
    4c14:	80 83       	st	Z, r24
    4c16:	27 c0       	rjmp	.+78     	; 0x4c66 <OSMboxPendAbort+0x6c>
        return (0);
    }
    OS_ENTER_CRITICAL();
    4c18:	0f b7       	in	r16, 0x3f	; 63
    4c1a:	f8 94       	cli
    if (pevent->OSEventGrp != 0) {                         /* See if any task waiting on mailbox?      */
    4c1c:	8d 81       	ldd	r24, Y+5	; 0x05
    4c1e:	88 23       	and	r24, r24
    4c20:	f9 f0       	breq	.+62     	; 0x4c60 <OSMboxPendAbort+0x66>
        nbr_tasks = 0;
        switch (opt) {
    4c22:	61 30       	cpi	r22, 0x01	; 1
    4c24:	71 f4       	brne	.+28     	; 0x4c42 <OSMboxPendAbort+0x48>
    4c26:	10 e0       	ldi	r17, 0x00	; 0
    4c28:	08 c0       	rjmp	.+16     	; 0x4c3a <OSMboxPendAbort+0x40>
            case OS_PEND_OPT_BROADCAST:                    /* Do we need to abort ALL waiting tasks?   */
                 while (pevent->OSEventGrp != 0) {         /* Yes, ready ALL tasks waiting on mailbox  */
                     (void)OS_EventTaskRdy(pevent, (void *)0, OS_STAT_MBOX, OS_STAT_PEND_ABORT);
    4c2a:	ce 01       	movw	r24, r28
    4c2c:	60 e0       	ldi	r22, 0x00	; 0
    4c2e:	70 e0       	ldi	r23, 0x00	; 0
    4c30:	42 e0       	ldi	r20, 0x02	; 2
    4c32:	22 e0       	ldi	r18, 0x02	; 2
    4c34:	0e 94 3b 1f 	call	0x3e76	; 0x3e76 <OS_EventTaskRdy>
                     nbr_tasks++;
    4c38:	1f 5f       	subi	r17, 0xFF	; 255
    OS_ENTER_CRITICAL();
    if (pevent->OSEventGrp != 0) {                         /* See if any task waiting on mailbox?      */
        nbr_tasks = 0;
        switch (opt) {
            case OS_PEND_OPT_BROADCAST:                    /* Do we need to abort ALL waiting tasks?   */
                 while (pevent->OSEventGrp != 0) {         /* Yes, ready ALL tasks waiting on mailbox  */
    4c3a:	8d 81       	ldd	r24, Y+5	; 0x05
    4c3c:	88 23       	and	r24, r24
    4c3e:	a9 f7       	brne	.-22     	; 0x4c2a <OSMboxPendAbort+0x30>
    4c40:	08 c0       	rjmp	.+16     	; 0x4c52 <OSMboxPendAbort+0x58>
                 }
                 break;
             
            case OS_PEND_OPT_NONE:
            default:                                       /* No,  ready HPT       waiting on mailbox  */
                 (void)OS_EventTaskRdy(pevent, (void *)0, OS_STAT_MBOX, OS_STAT_PEND_ABORT);
    4c42:	ce 01       	movw	r24, r28
    4c44:	60 e0       	ldi	r22, 0x00	; 0
    4c46:	70 e0       	ldi	r23, 0x00	; 0
    4c48:	42 e0       	ldi	r20, 0x02	; 2
    4c4a:	22 e0       	ldi	r18, 0x02	; 2
    4c4c:	0e 94 3b 1f 	call	0x3e76	; 0x3e76 <OS_EventTaskRdy>
    4c50:	11 e0       	ldi	r17, 0x01	; 1
                 nbr_tasks++;
                 break;
        }
        OS_EXIT_CRITICAL();
    4c52:	0f bf       	out	0x3f, r16	; 63
        OS_Sched();                                        /* Find HPT ready to run                    */
    4c54:	0e 94 ba 21 	call	0x4374	; 0x4374 <OS_Sched>
        *perr = OS_ERR_PEND_ABORT;
    4c58:	8e e0       	ldi	r24, 0x0E	; 14
    4c5a:	f7 01       	movw	r30, r14
    4c5c:	80 83       	st	Z, r24
    4c5e:	04 c0       	rjmp	.+8      	; 0x4c68 <OSMboxPendAbort+0x6e>
        return (nbr_tasks);
    }
    OS_EXIT_CRITICAL();
    4c60:	0f bf       	out	0x3f, r16	; 63
    *perr = OS_ERR_NONE;
    4c62:	fa 01       	movw	r30, r20
    4c64:	10 82       	st	Z, r1
    4c66:	10 e0       	ldi	r17, 0x00	; 0
    return (0);                                            /* No tasks waiting on mailbox              */
}
    4c68:	81 2f       	mov	r24, r17
    4c6a:	df 91       	pop	r29
    4c6c:	cf 91       	pop	r28
    4c6e:	1f 91       	pop	r17
    4c70:	0f 91       	pop	r16
    4c72:	ff 90       	pop	r15
    4c74:	ef 90       	pop	r14
    4c76:	08 95       	ret

00004c78 <OSMboxPend>:
*                            if you didn't pass the proper pointer to the event control block.
*********************************************************************************************************
*/
/*$PAGE*/
void  *OSMboxPend (OS_EVENT *pevent, INT16U timeout, INT8U *perr)
{
    4c78:	df 92       	push	r13
    4c7a:	ef 92       	push	r14
    4c7c:	ff 92       	push	r15
    4c7e:	0f 93       	push	r16
    4c80:	1f 93       	push	r17
    4c82:	cf 93       	push	r28
    4c84:	df 93       	push	r29
    4c86:	7c 01       	movw	r14, r24
    4c88:	ea 01       	movw	r28, r20
    if (pevent == (OS_EVENT *)0) {                    /* Validate 'pevent'                             */
        *perr = OS_ERR_PEVENT_NULL;
        return ((void *)0);
    }
#endif
    if (pevent->OSEventType != OS_EVENT_TYPE_MBOX) {  /* Validate event block type                     */
    4c8a:	fc 01       	movw	r30, r24
    4c8c:	80 81       	ld	r24, Z
    4c8e:	81 30       	cpi	r24, 0x01	; 1
    4c90:	11 f0       	breq	.+4      	; 0x4c96 <OSMboxPend+0x1e>
        *perr = OS_ERR_EVENT_TYPE;
    4c92:	81 e0       	ldi	r24, 0x01	; 1
    4c94:	05 c0       	rjmp	.+10     	; 0x4ca0 <OSMboxPend+0x28>
        return ((void *)0);
    }
    if (OSIntNesting > 0) {                           /* See if called from ISR ...                    */
    4c96:	80 91 dd 11 	lds	r24, 0x11DD
    4c9a:	88 23       	and	r24, r24
    4c9c:	29 f0       	breq	.+10     	; 0x4ca8 <OSMboxPend+0x30>
        *perr = OS_ERR_PEND_ISR;                      /* ... can't PEND from an ISR                    */
    4c9e:	82 e0       	ldi	r24, 0x02	; 2
    4ca0:	88 83       	st	Y, r24
    4ca2:	00 e0       	ldi	r16, 0x00	; 0
    4ca4:	10 e0       	ldi	r17, 0x00	; 0
    4ca6:	48 c0       	rjmp	.+144    	; 0x4d38 <OSMboxPend+0xc0>
        return ((void *)0);
    }
    if (OSLockNesting > 0) {                          /* See if called with scheduler locked ...       */
    4ca8:	80 91 b9 10 	lds	r24, 0x10B9
    4cac:	88 23       	and	r24, r24
    4cae:	11 f0       	breq	.+4      	; 0x4cb4 <OSMboxPend+0x3c>
        *perr = OS_ERR_PEND_LOCKED;                   /* ... can't PEND when locked                    */
    4cb0:	8d e0       	ldi	r24, 0x0D	; 13
    4cb2:	f6 cf       	rjmp	.-20     	; 0x4ca0 <OSMboxPend+0x28>
        return ((void *)0);
    }
    OS_ENTER_CRITICAL();
    4cb4:	df b6       	in	r13, 0x3f	; 63
    4cb6:	f8 94       	cli
    pmsg = pevent->OSEventPtr;
    4cb8:	f7 01       	movw	r30, r14
    4cba:	01 81       	ldd	r16, Z+1	; 0x01
    4cbc:	12 81       	ldd	r17, Z+2	; 0x02
    if (pmsg != (void *)0) {                          /* See if there is already a message             */
    4cbe:	01 15       	cp	r16, r1
    4cc0:	11 05       	cpc	r17, r1
    4cc2:	29 f0       	breq	.+10     	; 0x4cce <OSMboxPend+0x56>
        pevent->OSEventPtr = (void *)0;               /* Clear the mailbox                             */
    4cc4:	12 82       	std	Z+2, r1	; 0x02
    4cc6:	11 82       	std	Z+1, r1	; 0x01
        OS_EXIT_CRITICAL();
    4cc8:	df be       	out	0x3f, r13	; 63
        *perr = OS_ERR_NONE;
    4cca:	18 82       	st	Y, r1
    4ccc:	35 c0       	rjmp	.+106    	; 0x4d38 <OSMboxPend+0xc0>
        return (pmsg);                                /* Return the message received (or NULL)         */
    }
    OSTCBCur->OSTCBStat     |= OS_STAT_MBOX;          /* Message not available, task will pend         */
    4cce:	e0 91 de 11 	lds	r30, 0x11DE
    4cd2:	f0 91 df 11 	lds	r31, 0x11DF
    4cd6:	82 8d       	ldd	r24, Z+26	; 0x1a
    4cd8:	82 60       	ori	r24, 0x02	; 2
    4cda:	82 8f       	std	Z+26, r24	; 0x1a
    OSTCBCur->OSTCBStatPend  = OS_STAT_PEND_OK;
    4cdc:	13 8e       	std	Z+27, r1	; 0x1b
    OSTCBCur->OSTCBDly       = timeout;               /* Load timeout in TCB                           */
    4cde:	71 8f       	std	Z+25, r23	; 0x19
    4ce0:	60 8f       	std	Z+24, r22	; 0x18
    OS_EventTaskWait(pevent);                         /* Suspend task until event or timeout occurs    */
    4ce2:	c7 01       	movw	r24, r14
    4ce4:	0e 94 cf 1f 	call	0x3f9e	; 0x3f9e <OS_EventTaskWait>
    OS_EXIT_CRITICAL();
    4ce8:	df be       	out	0x3f, r13	; 63
    OS_Sched();                                       /* Find next highest priority task ready to run  */
    4cea:	0e 94 ba 21 	call	0x4374	; 0x4374 <OS_Sched>
    OS_ENTER_CRITICAL();
    4cee:	df b6       	in	r13, 0x3f	; 63
    4cf0:	f8 94       	cli
    switch (OSTCBCur->OSTCBStatPend) {                /* See if we timed-out or aborted                */
    4cf2:	e0 91 de 11 	lds	r30, 0x11DE
    4cf6:	f0 91 df 11 	lds	r31, 0x11DF
    4cfa:	83 8d       	ldd	r24, Z+27	; 0x1b
    4cfc:	88 23       	and	r24, r24
    4cfe:	19 f0       	breq	.+6      	; 0x4d06 <OSMboxPend+0x8e>
    4d00:	82 30       	cpi	r24, 0x02	; 2
    4d02:	39 f4       	brne	.+14     	; 0x4d12 <OSMboxPend+0x9a>
    4d04:	04 c0       	rjmp	.+8      	; 0x4d0e <OSMboxPend+0x96>
        case OS_STAT_PEND_OK:
             pmsg =  OSTCBCur->OSTCBMsg;
    4d06:	06 89       	ldd	r16, Z+22	; 0x16
    4d08:	17 89       	ldd	r17, Z+23	; 0x17
            *perr =  OS_ERR_NONE;
    4d0a:	18 82       	st	Y, r1
    4d0c:	08 c0       	rjmp	.+16     	; 0x4d1e <OSMboxPend+0xa6>
             break;

        case OS_STAT_PEND_ABORT:
             pmsg = (void *)0;
            *perr =  OS_ERR_PEND_ABORT;               /* Indicate that we aborted                      */
    4d0e:	8e e0       	ldi	r24, 0x0E	; 14
    4d10:	05 c0       	rjmp	.+10     	; 0x4d1c <OSMboxPend+0xa4>
             break;

        case OS_STAT_PEND_TO:
        default:
             OS_EventTaskRemove(OSTCBCur, pevent);
    4d12:	cf 01       	movw	r24, r30
    4d14:	b7 01       	movw	r22, r14
    4d16:	0e 94 3c 20 	call	0x4078	; 0x4078 <OS_EventTaskRemove>
             pmsg = (void *)0;
            *perr =  OS_ERR_TIMEOUT;                  /* Indicate that we didn't get event within TO   */
    4d1a:	8a e0       	ldi	r24, 0x0A	; 10
    4d1c:	88 83       	st	Y, r24
             break;
    }
    OSTCBCur->OSTCBStat          =  OS_STAT_RDY;      /* Set   task  status to ready                   */
    4d1e:	e0 91 de 11 	lds	r30, 0x11DE
    4d22:	f0 91 df 11 	lds	r31, 0x11DF
    4d26:	12 8e       	std	Z+26, r1	; 0x1a
    OSTCBCur->OSTCBStatPend      =  OS_STAT_PEND_OK;  /* Clear pend  status                            */
    4d28:	13 8e       	std	Z+27, r1	; 0x1b
    OSTCBCur->OSTCBEventPtr      = (OS_EVENT  *)0;    /* Clear event pointers                          */
    4d2a:	13 8a       	std	Z+19, r1	; 0x13
    4d2c:	12 8a       	std	Z+18, r1	; 0x12
#if (OS_EVENT_MULTI_EN > 0)
    OSTCBCur->OSTCBEventMultiPtr = (OS_EVENT **)0;
    4d2e:	15 8a       	std	Z+21, r1	; 0x15
    4d30:	14 8a       	std	Z+20, r1	; 0x14
#endif
    OSTCBCur->OSTCBMsg           = (void      *)0;    /* Clear  received message                       */
    4d32:	17 8a       	std	Z+23, r1	; 0x17
    4d34:	16 8a       	std	Z+22, r1	; 0x16
    OS_EXIT_CRITICAL();
    4d36:	df be       	out	0x3f, r13	; 63
    return (pmsg);                                    /* Return received message                       */
}
    4d38:	c8 01       	movw	r24, r16
    4d3a:	df 91       	pop	r29
    4d3c:	cf 91       	pop	r28
    4d3e:	1f 91       	pop	r17
    4d40:	0f 91       	pop	r16
    4d42:	ff 90       	pop	r15
    4d44:	ef 90       	pop	r14
    4d46:	df 90       	pop	r13
    4d48:	08 95       	ret

00004d4a <OSMboxCreate>:
*              == (OS_EVENT *)0  if no event control blocks were available
*********************************************************************************************************
*/

OS_EVENT  *OSMboxCreate (void *pmsg)
{
    4d4a:	cf 93       	push	r28
    4d4c:	df 93       	push	r29
    4d4e:	ac 01       	movw	r20, r24
    OS_CPU_SR  cpu_sr = 0;
#endif



    if (OSIntNesting > 0) {                      /* See if called from ISR ...                         */
    4d50:	80 91 dd 11 	lds	r24, 0x11DD
    4d54:	88 23       	and	r24, r24
    4d56:	19 f0       	breq	.+6      	; 0x4d5e <OSMboxCreate+0x14>
    4d58:	c0 e0       	ldi	r28, 0x00	; 0
    4d5a:	d0 e0       	ldi	r29, 0x00	; 0
    4d5c:	1d c0       	rjmp	.+58     	; 0x4d98 <OSMboxCreate+0x4e>
        return ((OS_EVENT *)0);                  /* ... can't CREATE from an ISR                       */
    }
    OS_ENTER_CRITICAL();
    4d5e:	2f b7       	in	r18, 0x3f	; 63
    4d60:	f8 94       	cli
    pevent = OSEventFreeList;                    /* Get next free event control block                  */
    4d62:	c0 91 db 11 	lds	r28, 0x11DB
    4d66:	d0 91 dc 11 	lds	r29, 0x11DC
    if (OSEventFreeList != (OS_EVENT *)0) {      /* See if pool of free ECB pool was empty             */
    4d6a:	20 97       	sbiw	r28, 0x00	; 0
    4d6c:	31 f0       	breq	.+12     	; 0x4d7a <OSMboxCreate+0x30>
        OSEventFreeList = (OS_EVENT *)OSEventFreeList->OSEventPtr;
    4d6e:	89 81       	ldd	r24, Y+1	; 0x01
    4d70:	9a 81       	ldd	r25, Y+2	; 0x02
    4d72:	90 93 dc 11 	sts	0x11DC, r25
    4d76:	80 93 db 11 	sts	0x11DB, r24
    }
    OS_EXIT_CRITICAL();
    4d7a:	2f bf       	out	0x3f, r18	; 63
    if (pevent != (OS_EVENT *)0) {
    4d7c:	20 97       	sbiw	r28, 0x00	; 0
    4d7e:	61 f0       	breq	.+24     	; 0x4d98 <OSMboxCreate+0x4e>
        pevent->OSEventType    = OS_EVENT_TYPE_MBOX;
    4d80:	81 e0       	ldi	r24, 0x01	; 1
    4d82:	88 83       	st	Y, r24
        pevent->OSEventCnt     = 0;
    4d84:	1c 82       	std	Y+4, r1	; 0x04
    4d86:	1b 82       	std	Y+3, r1	; 0x03
        pevent->OSEventPtr     = pmsg;           /* Deposit message in event control block             */
    4d88:	5a 83       	std	Y+2, r21	; 0x02
    4d8a:	49 83       	std	Y+1, r20	; 0x01
#if OS_EVENT_NAME_SIZE > 1
        pevent->OSEventName[0] = '?';
    4d8c:	8f e3       	ldi	r24, 0x3F	; 63
    4d8e:	8e 87       	std	Y+14, r24	; 0x0e
        pevent->OSEventName[1] = OS_ASCII_NUL;
    4d90:	1f 86       	std	Y+15, r1	; 0x0f
#endif
        OS_EventWaitListInit(pevent);
    4d92:	ce 01       	movw	r24, r28
    4d94:	0e 94 7b 20 	call	0x40f6	; 0x40f6 <OS_EventWaitListInit>
    }
    return (pevent);                             /* Return pointer to event control block              */
}
    4d98:	ce 01       	movw	r24, r28
    4d9a:	df 91       	pop	r29
    4d9c:	cf 91       	pop	r28
    4d9e:	08 95       	ret

00004da0 <OSMutexAccept>:
*********************************************************************************************************
*/

#if OS_MUTEX_ACCEPT_EN > 0
BOOLEAN  OSMutexAccept (OS_EVENT *pevent, INT8U *perr)
{
    4da0:	cf 93       	push	r28
    4da2:	df 93       	push	r29
    4da4:	dc 01       	movw	r26, r24
    4da6:	eb 01       	movw	r28, r22
    if (pevent == (OS_EVENT *)0) {                     /* Validate 'pevent'                            */
        *perr = OS_ERR_PEVENT_NULL;
        return (OS_FALSE);
    }
#endif
    if (pevent->OSEventType != OS_EVENT_TYPE_MUTEX) {  /* Validate event block type                    */
    4da8:	8c 91       	ld	r24, X
    4daa:	84 30       	cpi	r24, 0x04	; 4
    4dac:	11 f0       	breq	.+4      	; 0x4db2 <OSMutexAccept+0x12>
        *perr = OS_ERR_EVENT_TYPE;
    4dae:	81 e0       	ldi	r24, 0x01	; 1
    4db0:	05 c0       	rjmp	.+10     	; 0x4dbc <OSMutexAccept+0x1c>
        return (OS_FALSE);
    }
    if (OSIntNesting > 0) {                            /* Make sure it's not called from an ISR        */
    4db2:	80 91 dd 11 	lds	r24, 0x11DD
    4db6:	88 23       	and	r24, r24
    4db8:	19 f0       	breq	.+6      	; 0x4dc0 <OSMutexAccept+0x20>
        *perr = OS_ERR_PEND_ISR;
    4dba:	82 e0       	ldi	r24, 0x02	; 2
    4dbc:	88 83       	st	Y, r24
    4dbe:	27 c0       	rjmp	.+78     	; 0x4e0e <OSMutexAccept+0x6e>
        return (OS_FALSE);
    }
    OS_ENTER_CRITICAL();                               /* Get value (0 or 1) of Mutex                  */
    4dc0:	5f b7       	in	r21, 0x3f	; 63
    4dc2:	f8 94       	cli
    pip = (INT8U)(pevent->OSEventCnt >> 8);            /* Get PIP from mutex                           */
    4dc4:	13 96       	adiw	r26, 0x03	; 3
    4dc6:	6d 91       	ld	r22, X+
    4dc8:	7c 91       	ld	r23, X
    4dca:	14 97       	sbiw	r26, 0x04	; 4
    if ((pevent->OSEventCnt & OS_MUTEX_KEEP_LOWER_8) == OS_MUTEX_AVAILABLE) {
    4dcc:	6f 3f       	cpi	r22, 0xFF	; 255
    4dce:	e9 f4       	brne	.+58     	; 0x4e0a <OSMutexAccept+0x6a>
        pevent->OSEventCnt &= OS_MUTEX_KEEP_UPPER_8;   /*      Mask off LSByte (Acquire Mutex)         */
        pevent->OSEventCnt |= OSTCBCur->OSTCBPrio;     /*      Save current task priority in LSByte    */
    4dd0:	e0 91 de 11 	lds	r30, 0x11DE
    4dd4:	f0 91 df 11 	lds	r31, 0x11DF
    4dd8:	44 8d       	ldd	r20, Z+28	; 0x1c
    4dda:	84 2f       	mov	r24, r20
    4ddc:	90 e0       	ldi	r25, 0x00	; 0
    4dde:	9b 01       	movw	r18, r22
    4de0:	20 70       	andi	r18, 0x00	; 0
    4de2:	82 2b       	or	r24, r18
    4de4:	93 2b       	or	r25, r19
    4de6:	14 96       	adiw	r26, 0x04	; 4
    4de8:	9c 93       	st	X, r25
    4dea:	8e 93       	st	-X, r24
    4dec:	13 97       	sbiw	r26, 0x03	; 3
        pevent->OSEventPtr  = (void *)OSTCBCur;        /*      Link TCB of task owning Mutex           */
    4dee:	12 96       	adiw	r26, 0x02	; 2
    4df0:	fc 93       	st	X, r31
    4df2:	ee 93       	st	-X, r30
    4df4:	11 97       	sbiw	r26, 0x01	; 1
        if (OSTCBCur->OSTCBPrio <= pip) {              /*      PIP 'must' have a SMALLER prio ...      */
    4df6:	74 17       	cp	r23, r20
    4df8:	20 f0       	brcs	.+8      	; 0x4e02 <OSMutexAccept+0x62>
            OS_EXIT_CRITICAL();                        /*      ... than current task!                  */
    4dfa:	5f bf       	out	0x3f, r21	; 63
            *perr = OS_ERR_PIP_LOWER;
    4dfc:	88 e7       	ldi	r24, 0x78	; 120
    4dfe:	88 83       	st	Y, r24
    4e00:	02 c0       	rjmp	.+4      	; 0x4e06 <OSMutexAccept+0x66>
        } else {
            OS_EXIT_CRITICAL();
    4e02:	5f bf       	out	0x3f, r21	; 63
            *perr = OS_ERR_NONE;
    4e04:	18 82       	st	Y, r1
    4e06:	81 e0       	ldi	r24, 0x01	; 1
    4e08:	03 c0       	rjmp	.+6      	; 0x4e10 <OSMutexAccept+0x70>
        }
        return (OS_TRUE);
    }
    OS_EXIT_CRITICAL();
    4e0a:	5f bf       	out	0x3f, r21	; 63
    *perr = OS_ERR_NONE;
    4e0c:	18 82       	st	Y, r1
    4e0e:	80 e0       	ldi	r24, 0x00	; 0
    return (OS_FALSE);
}
    4e10:	df 91       	pop	r29
    4e12:	cf 91       	pop	r28
    4e14:	08 95       	ret

00004e16 <OSMutexQuery>:
*********************************************************************************************************
*/

#if OS_MUTEX_QUERY_EN > 0
INT8U  OSMutexQuery (OS_EVENT *pevent, OS_MUTEX_DATA *p_mutex_data)
{
    4e16:	dc 01       	movw	r26, r24
    4e18:	fb 01       	movw	r30, r22
    OS_CPU_SR  cpu_sr = 0;
#endif



    if (OSIntNesting > 0) {                                /* See if called from ISR ...               */
    4e1a:	80 91 dd 11 	lds	r24, 0x11DD
    4e1e:	88 23       	and	r24, r24
    4e20:	11 f0       	breq	.+4      	; 0x4e26 <OSMutexQuery+0x10>
    4e22:	86 e0       	ldi	r24, 0x06	; 6
    4e24:	08 95       	ret
    }
    if (p_mutex_data == (OS_MUTEX_DATA *)0) {              /* Validate 'p_mutex_data'                  */
        return (OS_ERR_PDATA_NULL);
    }
#endif
    if (pevent->OSEventType != OS_EVENT_TYPE_MUTEX) {      /* Validate event block type                */
    4e26:	8c 91       	ld	r24, X
    4e28:	84 30       	cpi	r24, 0x04	; 4
    4e2a:	11 f0       	breq	.+4      	; 0x4e30 <OSMutexQuery+0x1a>
    4e2c:	81 e0       	ldi	r24, 0x01	; 1
    4e2e:	08 95       	ret
        return (OS_ERR_EVENT_TYPE);
    }
    OS_ENTER_CRITICAL();
    4e30:	2f b7       	in	r18, 0x3f	; 63
    4e32:	f8 94       	cli
    p_mutex_data->OSMutexPIP  = (INT8U)(pevent->OSEventCnt >> 8);
    4e34:	13 96       	adiw	r26, 0x03	; 3
    4e36:	9c 91       	ld	r25, X
    4e38:	13 97       	sbiw	r26, 0x03	; 3
    4e3a:	14 96       	adiw	r26, 0x04	; 4
    4e3c:	8c 91       	ld	r24, X
    4e3e:	14 97       	sbiw	r26, 0x04	; 4
    4e40:	83 87       	std	Z+11, r24	; 0x0b
    p_mutex_data->OSOwnerPrio = (INT8U)(pevent->OSEventCnt & OS_MUTEX_KEEP_LOWER_8);
    4e42:	92 87       	std	Z+10, r25	; 0x0a
    if (p_mutex_data->OSOwnerPrio == 0xFF) {
    4e44:	9f 3f       	cpi	r25, 0xFF	; 255
    4e46:	19 f4       	brne	.+6      	; 0x4e4e <OSMutexQuery+0x38>
        p_mutex_data->OSValue = OS_TRUE;
    4e48:	81 e0       	ldi	r24, 0x01	; 1
    4e4a:	81 87       	std	Z+9, r24	; 0x09
    4e4c:	01 c0       	rjmp	.+2      	; 0x4e50 <OSMutexQuery+0x3a>
    } else {
        p_mutex_data->OSValue = OS_FALSE;
    4e4e:	11 86       	std	Z+9, r1	; 0x09
    }
    p_mutex_data->OSEventGrp  = pevent->OSEventGrp;        /* Copy wait list                           */
    4e50:	15 96       	adiw	r26, 0x05	; 5
    4e52:	8c 91       	ld	r24, X
    4e54:	15 97       	sbiw	r26, 0x05	; 5
    4e56:	80 87       	std	Z+8, r24	; 0x08
    psrc                      = &pevent->OSEventTbl[0];
    4e58:	16 96       	adiw	r26, 0x06	; 6
    pdest                     = &p_mutex_data->OSEventTbl[0];
    4e5a:	90 e0       	ldi	r25, 0x00	; 0
    for (i = 0; i < OS_EVENT_TBL_SIZE; i++) {
        *pdest++ = *psrc++;
    4e5c:	8d 91       	ld	r24, X+
    4e5e:	81 93       	st	Z+, r24
        p_mutex_data->OSValue = OS_FALSE;
    }
    p_mutex_data->OSEventGrp  = pevent->OSEventGrp;        /* Copy wait list                           */
    psrc                      = &pevent->OSEventTbl[0];
    pdest                     = &p_mutex_data->OSEventTbl[0];
    for (i = 0; i < OS_EVENT_TBL_SIZE; i++) {
    4e60:	9f 5f       	subi	r25, 0xFF	; 255
    4e62:	98 30       	cpi	r25, 0x08	; 8
    4e64:	d9 f7       	brne	.-10     	; 0x4e5c <OSMutexQuery+0x46>
        *pdest++ = *psrc++;
    }
    OS_EXIT_CRITICAL();
    4e66:	2f bf       	out	0x3f, r18	; 63
    4e68:	80 e0       	ldi	r24, 0x00	; 0
    return (OS_ERR_NONE);
}
    4e6a:	08 95       	ret

00004e6c <OSMutexPost>:
*                                      what tasks will be using the Mutex.
*********************************************************************************************************
*/

INT8U  OSMutexPost (OS_EVENT *pevent)
{
    4e6c:	0f 93       	push	r16
    4e6e:	1f 93       	push	r17
    4e70:	cf 93       	push	r28
    4e72:	df 93       	push	r29
    4e74:	ec 01       	movw	r28, r24
    OS_CPU_SR  cpu_sr = 0;
#endif



    if (OSIntNesting > 0) {                           /* See if called from ISR ...                    */
    4e76:	80 91 dd 11 	lds	r24, 0x11DD
    4e7a:	88 23       	and	r24, r24
    4e7c:	11 f0       	breq	.+4      	; 0x4e82 <OSMutexPost+0x16>
    4e7e:	85 e0       	ldi	r24, 0x05	; 5
    4e80:	a5 c0       	rjmp	.+330    	; 0x4fcc <OSMutexPost+0x160>
#if OS_ARG_CHK_EN > 0
    if (pevent == (OS_EVENT *)0) {                    /* Validate 'pevent'                             */
        return (OS_ERR_PEVENT_NULL);
    }
#endif
    if (pevent->OSEventType != OS_EVENT_TYPE_MUTEX) { /* Validate event block type                     */
    4e82:	88 81       	ld	r24, Y
    4e84:	84 30       	cpi	r24, 0x04	; 4
    4e86:	11 f0       	breq	.+4      	; 0x4e8c <OSMutexPost+0x20>
    4e88:	81 e0       	ldi	r24, 0x01	; 1
    4e8a:	a0 c0       	rjmp	.+320    	; 0x4fcc <OSMutexPost+0x160>
        return (OS_ERR_EVENT_TYPE);
    }
    OS_ENTER_CRITICAL();
    4e8c:	1f b7       	in	r17, 0x3f	; 63
    4e8e:	f8 94       	cli
    pip  = (INT8U)(pevent->OSEventCnt >> 8);          /* Get priority inheritance priority of mutex    */
    4e90:	3b 81       	ldd	r19, Y+3	; 0x03
    4e92:	0c 81       	ldd	r16, Y+4	; 0x04
    prio = (INT8U)(pevent->OSEventCnt & OS_MUTEX_KEEP_LOWER_8);  /* Get owner's original priority      */
    if (OSTCBCur != (OS_TCB *)pevent->OSEventPtr) {   /* See if posting task owns the MUTEX            */
    4e94:	a0 91 de 11 	lds	r26, 0x11DE
    4e98:	b0 91 df 11 	lds	r27, 0x11DF
    4e9c:	89 81       	ldd	r24, Y+1	; 0x01
    4e9e:	9a 81       	ldd	r25, Y+2	; 0x02
    4ea0:	a8 17       	cp	r26, r24
    4ea2:	b9 07       	cpc	r27, r25
    4ea4:	19 f0       	breq	.+6      	; 0x4eac <OSMutexPost+0x40>
        OS_EXIT_CRITICAL();
    4ea6:	1f bf       	out	0x3f, r17	; 63
    4ea8:	84 e6       	ldi	r24, 0x64	; 100
    4eaa:	90 c0       	rjmp	.+288    	; 0x4fcc <OSMutexPost+0x160>
        return (OS_ERR_NOT_MUTEX_OWNER);
    }
    if (OSTCBCur->OSTCBPrio == pip) {                 /* Did we have to raise current task's priority? */
    4eac:	5c 96       	adiw	r26, 0x1c	; 28
    4eae:	8c 91       	ld	r24, X
    4eb0:	5c 97       	sbiw	r26, 0x1c	; 28
    4eb2:	80 17       	cp	r24, r16
    4eb4:	09 f0       	breq	.+2      	; 0x4eb8 <OSMutexPost+0x4c>
    4eb6:	51 c0       	rjmp	.+162    	; 0x4f5a <OSMutexPost+0xee>
{
    INT8U   y;


    y            =  ptcb->OSTCBY;                          /* Remove owner from ready list at 'pip'    */
    OSRdyTbl[y] &= ~ptcb->OSTCBBitX;
    4eb8:	5e 96       	adiw	r26, 0x1e	; 30
    4eba:	ec 91       	ld	r30, X
    4ebc:	5e 97       	sbiw	r26, 0x1e	; 30
    4ebe:	f0 e0       	ldi	r31, 0x00	; 0
    4ec0:	ed 52       	subi	r30, 0x2D	; 45
    4ec2:	fe 4e       	sbci	r31, 0xEE	; 238
    4ec4:	5f 96       	adiw	r26, 0x1f	; 31
    4ec6:	8c 91       	ld	r24, X
    4ec8:	5f 97       	sbiw	r26, 0x1f	; 31
    4eca:	80 95       	com	r24
    4ecc:	90 81       	ld	r25, Z
    4ece:	89 23       	and	r24, r25
    4ed0:	80 83       	st	Z, r24
    if (OSRdyTbl[y] == 0) {
    4ed2:	88 23       	and	r24, r24
    4ed4:	49 f4       	brne	.+18     	; 0x4ee8 <OSMutexPost+0x7c>
        OSRdyGrp &= ~ptcb->OSTCBBitY;
    4ed6:	90 96       	adiw	r26, 0x20	; 32
    4ed8:	9c 91       	ld	r25, X
    4eda:	90 97       	sbiw	r26, 0x20	; 32
    4edc:	90 95       	com	r25
    4ede:	80 91 d2 11 	lds	r24, 0x11D2
    4ee2:	89 23       	and	r24, r25
    4ee4:	80 93 d2 11 	sts	0x11D2, r24
    }
    ptcb->OSTCBPrio         = prio;
    4ee8:	5c 96       	adiw	r26, 0x1c	; 28
    4eea:	3c 93       	st	X, r19
    4eec:	5c 97       	sbiw	r26, 0x1c	; 28
#if OS_LOWEST_PRIO <= 63
    ptcb->OSTCBY            = (INT8U)((prio >> (INT8U)3) & (INT8U)0x07);
    4eee:	83 2f       	mov	r24, r19
    4ef0:	86 95       	lsr	r24
    4ef2:	86 95       	lsr	r24
    4ef4:	86 95       	lsr	r24
    4ef6:	87 70       	andi	r24, 0x07	; 7
    4ef8:	5e 96       	adiw	r26, 0x1e	; 30
    4efa:	8c 93       	st	X, r24
    4efc:	5e 97       	sbiw	r26, 0x1e	; 30
    ptcb->OSTCBX            = (INT8U) (prio & (INT8U)0x07);
    4efe:	23 2f       	mov	r18, r19
    4f00:	27 70       	andi	r18, 0x07	; 7
    4f02:	5d 96       	adiw	r26, 0x1d	; 29
    4f04:	2c 93       	st	X, r18
    4f06:	5d 97       	sbiw	r26, 0x1d	; 29
    ptcb->OSTCBBitY         = (INT8U)(1 << ptcb->OSTCBY);
    4f08:	41 e0       	ldi	r20, 0x01	; 1
    4f0a:	50 e0       	ldi	r21, 0x00	; 0
    4f0c:	ba 01       	movw	r22, r20
    4f0e:	02 c0       	rjmp	.+4      	; 0x4f14 <OSMutexPost+0xa8>
    4f10:	66 0f       	add	r22, r22
    4f12:	77 1f       	adc	r23, r23
    4f14:	8a 95       	dec	r24
    4f16:	e2 f7       	brpl	.-8      	; 0x4f10 <OSMutexPost+0xa4>
    4f18:	90 96       	adiw	r26, 0x20	; 32
    4f1a:	6c 93       	st	X, r22
    4f1c:	90 97       	sbiw	r26, 0x20	; 32
    ptcb->OSTCBBitX         = (INT8U)(1 << ptcb->OSTCBX);
    4f1e:	02 c0       	rjmp	.+4      	; 0x4f24 <OSMutexPost+0xb8>
    4f20:	44 0f       	add	r20, r20
    4f22:	55 1f       	adc	r21, r21
    4f24:	2a 95       	dec	r18
    4f26:	e2 f7       	brpl	.-8      	; 0x4f20 <OSMutexPost+0xb4>
    4f28:	5f 96       	adiw	r26, 0x1f	; 31
    4f2a:	4c 93       	st	X, r20
    4f2c:	5f 97       	sbiw	r26, 0x1f	; 31
    ptcb->OSTCBY            = (INT8U)((prio >> (INT8U)4) & (INT8U)0x0F);
    ptcb->OSTCBX            = (INT8U) (prio & (INT8U)0x0F);
    ptcb->OSTCBBitY         = (INT16U)(1 << ptcb->OSTCBY);
    ptcb->OSTCBBitX         = (INT16U)(1 << ptcb->OSTCBX);
#endif
    OSRdyGrp               |= ptcb->OSTCBBitY;             /* Make task ready at original priority     */
    4f2e:	20 91 d2 11 	lds	r18, 0x11D2
    4f32:	26 2b       	or	r18, r22
    4f34:	20 93 d2 11 	sts	0x11D2, r18
    OSRdyTbl[ptcb->OSTCBY] |= ptcb->OSTCBBitX;
    4f38:	5e 96       	adiw	r26, 0x1e	; 30
    4f3a:	ec 91       	ld	r30, X
    4f3c:	5e 97       	sbiw	r26, 0x1e	; 30
    4f3e:	f0 e0       	ldi	r31, 0x00	; 0
    4f40:	ed 52       	subi	r30, 0x2D	; 45
    4f42:	fe 4e       	sbci	r31, 0xEE	; 238
    4f44:	80 81       	ld	r24, Z
    4f46:	84 2b       	or	r24, r20
    4f48:	80 83       	st	Z, r24
    OSTCBPrioTbl[prio]      = ptcb;
    4f4a:	e3 2f       	mov	r30, r19
    4f4c:	f0 e0       	ldi	r31, 0x00	; 0
    4f4e:	ee 0f       	add	r30, r30
    4f50:	ff 1f       	adc	r31, r31
    4f52:	e7 51       	subi	r30, 0x17	; 23
    4f54:	f8 4e       	sbci	r31, 0xE8	; 232
    4f56:	b1 83       	std	Z+1, r27	; 0x01
    4f58:	a0 83       	st	Z, r26
        return (OS_ERR_NOT_MUTEX_OWNER);
    }
    if (OSTCBCur->OSTCBPrio == pip) {                 /* Did we have to raise current task's priority? */
        OSMutex_RdyAtPrio(OSTCBCur, prio);            /* Restore the task's original priority          */
    }
    OSTCBPrioTbl[pip] = OS_TCB_RESERVED;              /* Reserve table entry                           */
    4f5a:	e0 2f       	mov	r30, r16
    4f5c:	f0 e0       	ldi	r31, 0x00	; 0
    4f5e:	ee 0f       	add	r30, r30
    4f60:	ff 1f       	adc	r31, r31
    4f62:	e7 51       	subi	r30, 0x17	; 23
    4f64:	f8 4e       	sbci	r31, 0xE8	; 232
    4f66:	81 e0       	ldi	r24, 0x01	; 1
    4f68:	90 e0       	ldi	r25, 0x00	; 0
    4f6a:	91 83       	std	Z+1, r25	; 0x01
    4f6c:	80 83       	st	Z, r24
    if (pevent->OSEventGrp != 0) {                    /* Any task waiting for the mutex?               */
    4f6e:	8d 81       	ldd	r24, Y+5	; 0x05
    4f70:	88 23       	and	r24, r24
    4f72:	19 f1       	breq	.+70     	; 0x4fba <OSMutexPost+0x14e>
                                                      /* Yes, Make HPT waiting for mutex ready         */
        prio                = OS_EventTaskRdy(pevent, (void *)0, OS_STAT_MUTEX, OS_STAT_PEND_OK);
    4f74:	ce 01       	movw	r24, r28
    4f76:	60 e0       	ldi	r22, 0x00	; 0
    4f78:	70 e0       	ldi	r23, 0x00	; 0
    4f7a:	40 e1       	ldi	r20, 0x10	; 16
    4f7c:	20 e0       	ldi	r18, 0x00	; 0
    4f7e:	0e 94 3b 1f 	call	0x3e76	; 0x3e76 <OS_EventTaskRdy>
        pevent->OSEventCnt &= OS_MUTEX_KEEP_UPPER_8;  /*      Save priority of mutex's new owner       */
        pevent->OSEventCnt |= prio;
    4f82:	e8 2f       	mov	r30, r24
    4f84:	f0 e0       	ldi	r31, 0x00	; 0
    4f86:	2b 81       	ldd	r18, Y+3	; 0x03
    4f88:	3c 81       	ldd	r19, Y+4	; 0x04
    4f8a:	20 70       	andi	r18, 0x00	; 0
    4f8c:	2e 2b       	or	r18, r30
    4f8e:	3f 2b       	or	r19, r31
    4f90:	3c 83       	std	Y+4, r19	; 0x04
    4f92:	2b 83       	std	Y+3, r18	; 0x03
        pevent->OSEventPtr  = OSTCBPrioTbl[prio];     /*      Link to new mutex owner's OS_TCB         */
    4f94:	ee 0f       	add	r30, r30
    4f96:	ff 1f       	adc	r31, r31
    4f98:	e7 51       	subi	r30, 0x17	; 23
    4f9a:	f8 4e       	sbci	r31, 0xE8	; 232
    4f9c:	20 81       	ld	r18, Z
    4f9e:	31 81       	ldd	r19, Z+1	; 0x01
    4fa0:	3a 83       	std	Y+2, r19	; 0x02
    4fa2:	29 83       	std	Y+1, r18	; 0x01
        if (prio <= pip) {                            /*      PIP 'must' have a SMALLER prio ...       */
    4fa4:	08 17       	cp	r16, r24
    4fa6:	28 f0       	brcs	.+10     	; 0x4fb2 <OSMutexPost+0x146>
            OS_EXIT_CRITICAL();                       /*      ... than current task!                   */
    4fa8:	1f bf       	out	0x3f, r17	; 63
            OS_Sched();                               /*      Find highest priority task ready to run  */
    4faa:	0e 94 ba 21 	call	0x4374	; 0x4374 <OS_Sched>
    4fae:	88 e7       	ldi	r24, 0x78	; 120
    4fb0:	0d c0       	rjmp	.+26     	; 0x4fcc <OSMutexPost+0x160>
            return (OS_ERR_PIP_LOWER);
        } else {
            OS_EXIT_CRITICAL();
    4fb2:	1f bf       	out	0x3f, r17	; 63
            OS_Sched();                               /*      Find highest priority task ready to run  */
    4fb4:	0e 94 ba 21 	call	0x4374	; 0x4374 <OS_Sched>
    4fb8:	08 c0       	rjmp	.+16     	; 0x4fca <OSMutexPost+0x15e>
            return (OS_ERR_NONE);
        }
    }
    pevent->OSEventCnt |= OS_MUTEX_AVAILABLE;         /* No,  Mutex is now available                   */
    4fba:	8b 81       	ldd	r24, Y+3	; 0x03
    4fbc:	9c 81       	ldd	r25, Y+4	; 0x04
    4fbe:	8f 6f       	ori	r24, 0xFF	; 255
    4fc0:	9c 83       	std	Y+4, r25	; 0x04
    4fc2:	8b 83       	std	Y+3, r24	; 0x03
    pevent->OSEventPtr  = (void *)0;
    4fc4:	1a 82       	std	Y+2, r1	; 0x02
    4fc6:	19 82       	std	Y+1, r1	; 0x01
    OS_EXIT_CRITICAL();
    4fc8:	1f bf       	out	0x3f, r17	; 63
    4fca:	80 e0       	ldi	r24, 0x00	; 0
    return (OS_ERR_NONE);
}
    4fcc:	df 91       	pop	r29
    4fce:	cf 91       	pop	r28
    4fd0:	1f 91       	pop	r17
    4fd2:	0f 91       	pop	r16
    4fd4:	08 95       	ret

00004fd6 <OSMutexDel>:
*********************************************************************************************************
*/

#if OS_MUTEX_DEL_EN
OS_EVENT  *OSMutexDel (OS_EVENT *pevent, INT8U opt, INT8U *perr)
{
    4fd6:	ef 92       	push	r14
    4fd8:	ff 92       	push	r15
    4fda:	0f 93       	push	r16
    4fdc:	1f 93       	push	r17
    4fde:	cf 93       	push	r28
    4fe0:	df 93       	push	r29
    4fe2:	ec 01       	movw	r28, r24
    4fe4:	8a 01       	movw	r16, r20
    if (pevent == (OS_EVENT *)0) {                         /* Validate 'pevent'                        */
        *perr = OS_ERR_PEVENT_NULL;
        return (pevent);
    }
#endif
    if (pevent->OSEventType != OS_EVENT_TYPE_MUTEX) {      /* Validate event block type                */
    4fe6:	88 81       	ld	r24, Y
    4fe8:	84 30       	cpi	r24, 0x04	; 4
    4fea:	11 f0       	breq	.+4      	; 0x4ff0 <OSMutexDel+0x1a>
        *perr = OS_ERR_EVENT_TYPE;
    4fec:	81 e0       	ldi	r24, 0x01	; 1
    4fee:	c0 c0       	rjmp	.+384    	; 0x5170 <OSMutexDel+0x19a>
        return (pevent);
    }
    if (OSIntNesting > 0) {                                /* See if called from ISR ...               */
    4ff0:	80 91 dd 11 	lds	r24, 0x11DD
    4ff4:	88 23       	and	r24, r24
    4ff6:	11 f0       	breq	.+4      	; 0x4ffc <OSMutexDel+0x26>
        *perr = OS_ERR_DEL_ISR;                             /* ... can't DELETE from an ISR             */
    4ff8:	8f e0       	ldi	r24, 0x0F	; 15
    4ffa:	ba c0       	rjmp	.+372    	; 0x5170 <OSMutexDel+0x19a>
        return (pevent);
    }
    OS_ENTER_CRITICAL();
    4ffc:	ef b6       	in	r14, 0x3f	; 63
    4ffe:	f8 94       	cli
    5000:	fd 80       	ldd	r15, Y+5	; 0x05
    5002:	ff 20       	and	r15, r15
    5004:	11 f0       	breq	.+4      	; 0x500a <OSMutexDel+0x34>
    5006:	ff 24       	eor	r15, r15
    5008:	f3 94       	inc	r15
    if (pevent->OSEventGrp != 0) {                         /* See if any tasks waiting on mutex        */
        tasks_waiting = OS_TRUE;                           /* Yes                                      */
    } else {
        tasks_waiting = OS_FALSE;                          /* No                                       */
    }
    switch (opt) {
    500a:	66 23       	and	r22, r22
    500c:	21 f0       	breq	.+8      	; 0x5016 <OSMutexDel+0x40>
    500e:	61 30       	cpi	r22, 0x01	; 1
    5010:	09 f0       	breq	.+2      	; 0x5014 <OSMutexDel+0x3e>
    5012:	ac c0       	rjmp	.+344    	; 0x516c <OSMutexDel+0x196>
    5014:	1f c0       	rjmp	.+62     	; 0x5054 <OSMutexDel+0x7e>
        case OS_DEL_NO_PEND:                               /* DELETE MUTEX ONLY IF NO TASK WAITING --- */
             if (tasks_waiting == OS_FALSE) {
    5016:	ff 20       	and	r15, r15
    5018:	d1 f4       	brne	.+52     	; 0x504e <OSMutexDel+0x78>
#if OS_EVENT_NAME_SIZE > 1
                 pevent->OSEventName[0] = '?';             /* Unknown name                             */
    501a:	8f e3       	ldi	r24, 0x3F	; 63
    501c:	8e 87       	std	Y+14, r24	; 0x0e
                 pevent->OSEventName[1] = OS_ASCII_NUL;
    501e:	1f 86       	std	Y+15, r1	; 0x0f
#endif
                 pip                 = (INT8U)(pevent->OSEventCnt >> 8);
                 OSTCBPrioTbl[pip]   = (OS_TCB *)0;        /* Free up the PIP                          */
    5020:	ec 81       	ldd	r30, Y+4	; 0x04
    5022:	f0 e0       	ldi	r31, 0x00	; 0
    5024:	ee 0f       	add	r30, r30
    5026:	ff 1f       	adc	r31, r31
    5028:	e7 51       	subi	r30, 0x17	; 23
    502a:	f8 4e       	sbci	r31, 0xE8	; 232
    502c:	11 82       	std	Z+1, r1	; 0x01
    502e:	10 82       	st	Z, r1
                 pevent->OSEventType = OS_EVENT_TYPE_UNUSED;
    5030:	18 82       	st	Y, r1
                 pevent->OSEventPtr  = OSEventFreeList;    /* Return Event Control Block to free list  */
    5032:	80 91 db 11 	lds	r24, 0x11DB
    5036:	90 91 dc 11 	lds	r25, 0x11DC
    503a:	9a 83       	std	Y+2, r25	; 0x02
    503c:	89 83       	std	Y+1, r24	; 0x01
                 pevent->OSEventCnt  = 0;
    503e:	1c 82       	std	Y+4, r1	; 0x04
    5040:	1b 82       	std	Y+3, r1	; 0x03
                 OSEventFreeList     = pevent;
    5042:	d0 93 dc 11 	sts	0x11DC, r29
    5046:	c0 93 db 11 	sts	0x11DB, r28
                 OS_EXIT_CRITICAL();
    504a:	ef be       	out	0x3f, r14	; 63
    504c:	8a c0       	rjmp	.+276    	; 0x5162 <OSMutexDel+0x18c>
                 *perr               = OS_ERR_NONE;
                 pevent_return       = (OS_EVENT *)0;      /* Mutex has been deleted                   */
             } else {
                 OS_EXIT_CRITICAL();
    504e:	ef be       	out	0x3f, r14	; 63
                 *perr               = OS_ERR_TASK_WAITING;
    5050:	89 e4       	ldi	r24, 0x49	; 73
    5052:	8e c0       	rjmp	.+284    	; 0x5170 <OSMutexDel+0x19a>
                 pevent_return       = pevent;
             }
             break;

        case OS_DEL_ALWAYS:                                /* ALWAYS DELETE THE MUTEX ---------------- */
             pip  = (INT8U)(pevent->OSEventCnt >> 8);                     /* Get PIP of mutex          */
    5054:	3b 81       	ldd	r19, Y+3	; 0x03
    5056:	9c 81       	ldd	r25, Y+4	; 0x04
             prio = (INT8U)(pevent->OSEventCnt & OS_MUTEX_KEEP_LOWER_8);  /* Get owner's original prio */
             ptcb = (OS_TCB *)pevent->OSEventPtr;
    5058:	a9 81       	ldd	r26, Y+1	; 0x01
    505a:	ba 81       	ldd	r27, Y+2	; 0x02
             if (ptcb != (OS_TCB *)0) {                    /* See if any task owns the mutex           */
    505c:	10 97       	sbiw	r26, 0x00	; 0
    505e:	09 f4       	brne	.+2      	; 0x5062 <OSMutexDel+0x8c>
    5060:	5f c0       	rjmp	.+190    	; 0x5120 <OSMutexDel+0x14a>
                 if (ptcb->OSTCBPrio == pip) {             /* See if original prio was changed         */
    5062:	5c 96       	adiw	r26, 0x1c	; 28
    5064:	8c 91       	ld	r24, X
    5066:	5c 97       	sbiw	r26, 0x1c	; 28
    5068:	89 17       	cp	r24, r25
    506a:	09 f0       	breq	.+2      	; 0x506e <OSMutexDel+0x98>
    506c:	59 c0       	rjmp	.+178    	; 0x5120 <OSMutexDel+0x14a>
{
    INT8U   y;


    y            =  ptcb->OSTCBY;                          /* Remove owner from ready list at 'pip'    */
    OSRdyTbl[y] &= ~ptcb->OSTCBBitX;
    506e:	5e 96       	adiw	r26, 0x1e	; 30
    5070:	ec 91       	ld	r30, X
    5072:	5e 97       	sbiw	r26, 0x1e	; 30
    5074:	f0 e0       	ldi	r31, 0x00	; 0
    5076:	ed 52       	subi	r30, 0x2D	; 45
    5078:	fe 4e       	sbci	r31, 0xEE	; 238
    507a:	5f 96       	adiw	r26, 0x1f	; 31
    507c:	8c 91       	ld	r24, X
    507e:	5f 97       	sbiw	r26, 0x1f	; 31
    5080:	80 95       	com	r24
    5082:	90 81       	ld	r25, Z
    5084:	89 23       	and	r24, r25
    5086:	80 83       	st	Z, r24
    if (OSRdyTbl[y] == 0) {
    5088:	88 23       	and	r24, r24
    508a:	49 f4       	brne	.+18     	; 0x509e <OSMutexDel+0xc8>
        OSRdyGrp &= ~ptcb->OSTCBBitY;
    508c:	90 96       	adiw	r26, 0x20	; 32
    508e:	9c 91       	ld	r25, X
    5090:	90 97       	sbiw	r26, 0x20	; 32
    5092:	90 95       	com	r25
    5094:	80 91 d2 11 	lds	r24, 0x11D2
    5098:	89 23       	and	r24, r25
    509a:	80 93 d2 11 	sts	0x11D2, r24
    }
    ptcb->OSTCBPrio         = prio;
    509e:	5c 96       	adiw	r26, 0x1c	; 28
    50a0:	3c 93       	st	X, r19
    50a2:	5c 97       	sbiw	r26, 0x1c	; 28
#if OS_LOWEST_PRIO <= 63
    ptcb->OSTCBY            = (INT8U)((prio >> (INT8U)3) & (INT8U)0x07);
    50a4:	83 2f       	mov	r24, r19
    50a6:	86 95       	lsr	r24
    50a8:	86 95       	lsr	r24
    50aa:	86 95       	lsr	r24
    50ac:	87 70       	andi	r24, 0x07	; 7
    50ae:	5e 96       	adiw	r26, 0x1e	; 30
    50b0:	8c 93       	st	X, r24
    50b2:	5e 97       	sbiw	r26, 0x1e	; 30
    ptcb->OSTCBX            = (INT8U) (prio & (INT8U)0x07);
    50b4:	23 2f       	mov	r18, r19
    50b6:	27 70       	andi	r18, 0x07	; 7
    50b8:	5d 96       	adiw	r26, 0x1d	; 29
    50ba:	2c 93       	st	X, r18
    50bc:	5d 97       	sbiw	r26, 0x1d	; 29
    ptcb->OSTCBBitY         = (INT8U)(1 << ptcb->OSTCBY);
    50be:	41 e0       	ldi	r20, 0x01	; 1
    50c0:	50 e0       	ldi	r21, 0x00	; 0
    50c2:	ba 01       	movw	r22, r20
    50c4:	02 c0       	rjmp	.+4      	; 0x50ca <OSMutexDel+0xf4>
    50c6:	66 0f       	add	r22, r22
    50c8:	77 1f       	adc	r23, r23
    50ca:	8a 95       	dec	r24
    50cc:	e2 f7       	brpl	.-8      	; 0x50c6 <OSMutexDel+0xf0>
    50ce:	90 96       	adiw	r26, 0x20	; 32
    50d0:	6c 93       	st	X, r22
    50d2:	90 97       	sbiw	r26, 0x20	; 32
    ptcb->OSTCBBitX         = (INT8U)(1 << ptcb->OSTCBX);
    50d4:	02 c0       	rjmp	.+4      	; 0x50da <OSMutexDel+0x104>
    50d6:	44 0f       	add	r20, r20
    50d8:	55 1f       	adc	r21, r21
    50da:	2a 95       	dec	r18
    50dc:	e2 f7       	brpl	.-8      	; 0x50d6 <OSMutexDel+0x100>
    50de:	5f 96       	adiw	r26, 0x1f	; 31
    50e0:	4c 93       	st	X, r20
    50e2:	5f 97       	sbiw	r26, 0x1f	; 31
    ptcb->OSTCBY            = (INT8U)((prio >> (INT8U)4) & (INT8U)0x0F);
    ptcb->OSTCBX            = (INT8U) (prio & (INT8U)0x0F);
    ptcb->OSTCBBitY         = (INT16U)(1 << ptcb->OSTCBY);
    ptcb->OSTCBBitX         = (INT16U)(1 << ptcb->OSTCBX);
#endif
    OSRdyGrp               |= ptcb->OSTCBBitY;             /* Make task ready at original priority     */
    50e4:	20 91 d2 11 	lds	r18, 0x11D2
    50e8:	26 2b       	or	r18, r22
    50ea:	20 93 d2 11 	sts	0x11D2, r18
    OSRdyTbl[ptcb->OSTCBY] |= ptcb->OSTCBBitX;
    50ee:	5e 96       	adiw	r26, 0x1e	; 30
    50f0:	ec 91       	ld	r30, X
    50f2:	5e 97       	sbiw	r26, 0x1e	; 30
    50f4:	f0 e0       	ldi	r31, 0x00	; 0
    50f6:	ed 52       	subi	r30, 0x2D	; 45
    50f8:	fe 4e       	sbci	r31, 0xEE	; 238
    50fa:	80 81       	ld	r24, Z
    50fc:	84 2b       	or	r24, r20
    50fe:	80 83       	st	Z, r24
    OSTCBPrioTbl[prio]      = ptcb;
    5100:	e3 2f       	mov	r30, r19
    5102:	f0 e0       	ldi	r31, 0x00	; 0
    5104:	ee 0f       	add	r30, r30
    5106:	ff 1f       	adc	r31, r31
    5108:	e7 51       	subi	r30, 0x17	; 23
    510a:	f8 4e       	sbci	r31, 0xE8	; 232
    510c:	b1 83       	std	Z+1, r27	; 0x01
    510e:	a0 83       	st	Z, r26
    5110:	07 c0       	rjmp	.+14     	; 0x5120 <OSMutexDel+0x14a>
                 if (ptcb->OSTCBPrio == pip) {             /* See if original prio was changed         */
                     OSMutex_RdyAtPrio(ptcb, prio);        /* Yes, Restore the task's original prio    */
                 }
             }
             while (pevent->OSEventGrp != 0) {             /* Ready ALL tasks waiting for mutex        */
                 (void)OS_EventTaskRdy(pevent, (void *)0, OS_STAT_MUTEX, OS_STAT_PEND_OK);
    5112:	ce 01       	movw	r24, r28
    5114:	60 e0       	ldi	r22, 0x00	; 0
    5116:	70 e0       	ldi	r23, 0x00	; 0
    5118:	40 e1       	ldi	r20, 0x10	; 16
    511a:	20 e0       	ldi	r18, 0x00	; 0
    511c:	0e 94 3b 1f 	call	0x3e76	; 0x3e76 <OS_EventTaskRdy>
             if (ptcb != (OS_TCB *)0) {                    /* See if any task owns the mutex           */
                 if (ptcb->OSTCBPrio == pip) {             /* See if original prio was changed         */
                     OSMutex_RdyAtPrio(ptcb, prio);        /* Yes, Restore the task's original prio    */
                 }
             }
             while (pevent->OSEventGrp != 0) {             /* Ready ALL tasks waiting for mutex        */
    5120:	8d 81       	ldd	r24, Y+5	; 0x05
    5122:	88 23       	and	r24, r24
    5124:	b1 f7       	brne	.-20     	; 0x5112 <OSMutexDel+0x13c>
                 (void)OS_EventTaskRdy(pevent, (void *)0, OS_STAT_MUTEX, OS_STAT_PEND_OK);
             }
#if OS_EVENT_NAME_SIZE > 1
             pevent->OSEventName[0] = '?';                 /* Unknown name                             */
    5126:	8f e3       	ldi	r24, 0x3F	; 63
    5128:	8e 87       	std	Y+14, r24	; 0x0e
             pevent->OSEventName[1] = OS_ASCII_NUL;
    512a:	1f 86       	std	Y+15, r1	; 0x0f
#endif
             pip                 = (INT8U)(pevent->OSEventCnt >> 8);
             OSTCBPrioTbl[pip]   = (OS_TCB *)0;            /* Free up the PIP                          */
    512c:	ec 81       	ldd	r30, Y+4	; 0x04
    512e:	f0 e0       	ldi	r31, 0x00	; 0
    5130:	ee 0f       	add	r30, r30
    5132:	ff 1f       	adc	r31, r31
    5134:	e7 51       	subi	r30, 0x17	; 23
    5136:	f8 4e       	sbci	r31, 0xE8	; 232
    5138:	11 82       	std	Z+1, r1	; 0x01
    513a:	10 82       	st	Z, r1
             pevent->OSEventType = OS_EVENT_TYPE_UNUSED;
    513c:	18 82       	st	Y, r1
             pevent->OSEventPtr  = OSEventFreeList;        /* Return Event Control Block to free list  */
    513e:	80 91 db 11 	lds	r24, 0x11DB
    5142:	90 91 dc 11 	lds	r25, 0x11DC
    5146:	9a 83       	std	Y+2, r25	; 0x02
    5148:	89 83       	std	Y+1, r24	; 0x01
             pevent->OSEventCnt  = 0;
    514a:	1c 82       	std	Y+4, r1	; 0x04
    514c:	1b 82       	std	Y+3, r1	; 0x03
             OSEventFreeList     = pevent;                 /* Get next free event control block        */
    514e:	d0 93 dc 11 	sts	0x11DC, r29
    5152:	c0 93 db 11 	sts	0x11DB, r28
             OS_EXIT_CRITICAL();
    5156:	ef be       	out	0x3f, r14	; 63
             if (tasks_waiting == OS_TRUE) {               /* Reschedule only if task(s) were waiting  */
    5158:	71 e0       	ldi	r23, 0x01	; 1
    515a:	f7 16       	cp	r15, r23
    515c:	11 f4       	brne	.+4      	; 0x5162 <OSMutexDel+0x18c>
                 OS_Sched();                               /* Find highest priority task ready to run  */
    515e:	0e 94 ba 21 	call	0x4374	; 0x4374 <OS_Sched>
             }
             *perr         = OS_ERR_NONE;
    5162:	f8 01       	movw	r30, r16
    5164:	10 82       	st	Z, r1
    5166:	c0 e0       	ldi	r28, 0x00	; 0
    5168:	d0 e0       	ldi	r29, 0x00	; 0
    516a:	04 c0       	rjmp	.+8      	; 0x5174 <OSMutexDel+0x19e>
             pevent_return = (OS_EVENT *)0;                /* Mutex has been deleted                   */
             break;

        default:
             OS_EXIT_CRITICAL();
    516c:	ef be       	out	0x3f, r14	; 63
             *perr         = OS_ERR_INVALID_OPT;
    516e:	87 e0       	ldi	r24, 0x07	; 7
    5170:	f8 01       	movw	r30, r16
    5172:	80 83       	st	Z, r24
             pevent_return = pevent;
             break;
    }
    return (pevent_return);
}
    5174:	ce 01       	movw	r24, r28
    5176:	df 91       	pop	r29
    5178:	cf 91       	pop	r28
    517a:	1f 91       	pop	r17
    517c:	0f 91       	pop	r16
    517e:	ff 90       	pop	r15
    5180:	ef 90       	pop	r14
    5182:	08 95       	ret

00005184 <OSMutexPend>:
*              2) You MUST NOT change the priority of the task that owns the mutex
*********************************************************************************************************
*/

void  OSMutexPend (OS_EVENT *pevent, INT16U timeout, INT8U *perr)
{
    5184:	af 92       	push	r10
    5186:	bf 92       	push	r11
    5188:	df 92       	push	r13
    518a:	ef 92       	push	r14
    518c:	ff 92       	push	r15
    518e:	0f 93       	push	r16
    5190:	1f 93       	push	r17
    5192:	cf 93       	push	r28
    5194:	df 93       	push	r29
    5196:	8c 01       	movw	r16, r24
    5198:	5b 01       	movw	r10, r22
    519a:	7a 01       	movw	r14, r20
    if (pevent == (OS_EVENT *)0) {                         /* Validate 'pevent'                        */
        *perr = OS_ERR_PEVENT_NULL;
        return;
    }
#endif
    if (pevent->OSEventType != OS_EVENT_TYPE_MUTEX) {      /* Validate event block type                */
    519c:	dc 01       	movw	r26, r24
    519e:	8c 91       	ld	r24, X
    51a0:	84 30       	cpi	r24, 0x04	; 4
    51a2:	11 f0       	breq	.+4      	; 0x51a8 <OSMutexPend+0x24>
        *perr = OS_ERR_EVENT_TYPE;
    51a4:	81 e0       	ldi	r24, 0x01	; 1
    51a6:	33 c0       	rjmp	.+102    	; 0x520e <OSMutexPend+0x8a>
        return;
    }
    if (OSIntNesting > 0) {                                /* See if called from ISR ...               */
    51a8:	80 91 dd 11 	lds	r24, 0x11DD
    51ac:	88 23       	and	r24, r24
    51ae:	21 f0       	breq	.+8      	; 0x51b8 <OSMutexPend+0x34>
        *perr = OS_ERR_PEND_ISR;                           /* ... can't PEND from an ISR               */
    51b0:	82 e0       	ldi	r24, 0x02	; 2
    51b2:	da 01       	movw	r26, r20
    51b4:	8c 93       	st	X, r24
    51b6:	02 c1       	rjmp	.+516    	; 0x53bc <OSMutexPend+0x238>
        return;
    }
    if (OSLockNesting > 0) {                               /* See if called with scheduler locked ...  */
    51b8:	80 91 b9 10 	lds	r24, 0x10B9
    51bc:	88 23       	and	r24, r24
    51be:	11 f0       	breq	.+4      	; 0x51c4 <OSMutexPend+0x40>
        *perr = OS_ERR_PEND_LOCKED;                        /* ... can't PEND when locked               */
    51c0:	8d e0       	ldi	r24, 0x0D	; 13
    51c2:	25 c0       	rjmp	.+74     	; 0x520e <OSMutexPend+0x8a>
        return;
    }
/*$PAGE*/
    OS_ENTER_CRITICAL();
    51c4:	df b6       	in	r13, 0x3f	; 63
    51c6:	f8 94       	cli
    pip = (INT8U)(pevent->OSEventCnt >> 8);                /* Get PIP from mutex                       */
    51c8:	d8 01       	movw	r26, r16
    51ca:	13 96       	adiw	r26, 0x03	; 3
    51cc:	2d 91       	ld	r18, X+
    51ce:	3c 91       	ld	r19, X
    51d0:	14 97       	sbiw	r26, 0x04	; 4
    51d2:	43 2f       	mov	r20, r19
    51d4:	63 2f       	mov	r22, r19
                                                           /* Is Mutex available?                      */
    if ((INT8U)(pevent->OSEventCnt & OS_MUTEX_KEEP_LOWER_8) == OS_MUTEX_AVAILABLE) {
    51d6:	2f 3f       	cpi	r18, 0xFF	; 255
    51d8:	09 f5       	brne	.+66     	; 0x521c <OSMutexPend+0x98>
        pevent->OSEventCnt &= OS_MUTEX_KEEP_UPPER_8;       /* Yes, Acquire the resource                */
    51da:	20 70       	andi	r18, 0x00	; 0
    51dc:	14 96       	adiw	r26, 0x04	; 4
    51de:	3c 93       	st	X, r19
    51e0:	2e 93       	st	-X, r18
    51e2:	13 97       	sbiw	r26, 0x03	; 3
        pevent->OSEventCnt |= OSTCBCur->OSTCBPrio;         /*      Save priority of owning task        */
    51e4:	e0 91 de 11 	lds	r30, 0x11DE
    51e8:	f0 91 df 11 	lds	r31, 0x11DF
    51ec:	84 8d       	ldd	r24, Z+28	; 0x1c
    51ee:	90 e0       	ldi	r25, 0x00	; 0
    51f0:	82 2b       	or	r24, r18
    51f2:	93 2b       	or	r25, r19
    51f4:	14 96       	adiw	r26, 0x04	; 4
    51f6:	9c 93       	st	X, r25
    51f8:	8e 93       	st	-X, r24
    51fa:	13 97       	sbiw	r26, 0x03	; 3
        pevent->OSEventPtr  = (void *)OSTCBCur;            /*      Point to owning task's OS_TCB       */
    51fc:	12 96       	adiw	r26, 0x02	; 2
    51fe:	fc 93       	st	X, r31
    5200:	ee 93       	st	-X, r30
    5202:	11 97       	sbiw	r26, 0x01	; 1
        if (OSTCBCur->OSTCBPrio <= pip) {                  /*      PIP 'must' have a SMALLER prio ...  */
    5204:	84 8d       	ldd	r24, Z+28	; 0x1c
    5206:	48 17       	cp	r20, r24
    5208:	28 f0       	brcs	.+10     	; 0x5214 <OSMutexPend+0x90>
            OS_EXIT_CRITICAL();                            /*      ... than current task!              */
    520a:	df be       	out	0x3f, r13	; 63
            *perr = OS_ERR_PIP_LOWER;
    520c:	88 e7       	ldi	r24, 0x78	; 120
    520e:	f7 01       	movw	r30, r14
    5210:	80 83       	st	Z, r24
    5212:	d4 c0       	rjmp	.+424    	; 0x53bc <OSMutexPend+0x238>
        } else {
            OS_EXIT_CRITICAL();
    5214:	df be       	out	0x3f, r13	; 63
            *perr = OS_ERR_NONE;
    5216:	d7 01       	movw	r26, r14
    5218:	1c 92       	st	X, r1
    521a:	d0 c0       	rjmp	.+416    	; 0x53bc <OSMutexPend+0x238>
        }
        return;
    }
    mprio = (INT8U)(pevent->OSEventCnt & OS_MUTEX_KEEP_LOWER_8);  /* No, Get priority of mutex owner   */
    ptcb  = (OS_TCB *)(pevent->OSEventPtr);                       /*     Point to TCB of mutex owner   */
    521c:	f8 01       	movw	r30, r16
    521e:	a1 81       	ldd	r26, Z+1	; 0x01
    5220:	b2 81       	ldd	r27, Z+2	; 0x02
    if (ptcb->OSTCBPrio > pip) {                                  /*     Need to promote prio of owner?*/
    5222:	5c 96       	adiw	r26, 0x1c	; 28
    5224:	8c 91       	ld	r24, X
    5226:	5c 97       	sbiw	r26, 0x1c	; 28
    5228:	38 17       	cp	r19, r24
    522a:	08 f0       	brcs	.+2      	; 0x522e <OSMutexPend+0xaa>
    522c:	92 c0       	rjmp	.+292    	; 0x5352 <OSMutexPend+0x1ce>
        if (mprio > OSTCBCur->OSTCBPrio) {
    522e:	e0 91 de 11 	lds	r30, 0x11DE
    5232:	f0 91 df 11 	lds	r31, 0x11DF
    5236:	84 8d       	ldd	r24, Z+28	; 0x1c
    5238:	82 17       	cp	r24, r18
    523a:	08 f0       	brcs	.+2      	; 0x523e <OSMutexPend+0xba>
    523c:	8a c0       	rjmp	.+276    	; 0x5352 <OSMutexPend+0x1ce>
            y = ptcb->OSTCBY;
            if ((OSRdyTbl[y] & ptcb->OSTCBBitX) != 0) {           /*     See if mutex owner is ready   */
    523e:	5e 96       	adiw	r26, 0x1e	; 30
    5240:	8c 91       	ld	r24, X
    5242:	5e 97       	sbiw	r26, 0x1e	; 30
    5244:	28 2f       	mov	r18, r24
    5246:	30 e0       	ldi	r19, 0x00	; 0
    5248:	f9 01       	movw	r30, r18
    524a:	ed 52       	subi	r30, 0x2D	; 45
    524c:	fe 4e       	sbci	r31, 0xEE	; 238
    524e:	40 81       	ld	r20, Z
    5250:	5f 96       	adiw	r26, 0x1f	; 31
    5252:	9c 91       	ld	r25, X
    5254:	5f 97       	sbiw	r26, 0x1f	; 31
    5256:	84 2f       	mov	r24, r20
    5258:	89 23       	and	r24, r25
    525a:	89 f0       	breq	.+34     	; 0x527e <OSMutexPend+0xfa>
                OSRdyTbl[y] &= ~ptcb->OSTCBBitX;                  /*     Yes, Remove owner from Rdy ...*/
    525c:	89 2f       	mov	r24, r25
    525e:	80 95       	com	r24
    5260:	84 23       	and	r24, r20
    5262:	80 83       	st	Z, r24
                if (OSRdyTbl[y] == 0) {                           /*          ... list at current prio */
    5264:	88 23       	and	r24, r24
    5266:	49 f4       	brne	.+18     	; 0x527a <OSMutexPend+0xf6>
                    OSRdyGrp &= ~ptcb->OSTCBBitY;
    5268:	90 96       	adiw	r26, 0x20	; 32
    526a:	9c 91       	ld	r25, X
    526c:	90 97       	sbiw	r26, 0x20	; 32
    526e:	90 95       	com	r25
    5270:	80 91 d2 11 	lds	r24, 0x11D2
    5274:	89 23       	and	r24, r25
    5276:	80 93 d2 11 	sts	0x11D2, r24
    527a:	e1 e0       	ldi	r30, 0x01	; 1
    527c:	18 c0       	rjmp	.+48     	; 0x52ae <OSMutexPend+0x12a>
                }
                rdy = OS_TRUE;
            } else {
                pevent2 = ptcb->OSTCBEventPtr;
    527e:	52 96       	adiw	r26, 0x12	; 18
    5280:	cd 91       	ld	r28, X+
    5282:	dc 91       	ld	r29, X
    5284:	53 97       	sbiw	r26, 0x13	; 19
                if (pevent2 != (OS_EVENT *)0) {                   /* Remove from event wait list       */
    5286:	20 97       	sbiw	r28, 0x00	; 0
    5288:	89 f0       	breq	.+34     	; 0x52ac <OSMutexPend+0x128>
                    if ((pevent2->OSEventTbl[ptcb->OSTCBY] &= ~ptcb->OSTCBBitX) == 0) {
    528a:	fe 01       	movw	r30, r28
    528c:	e2 0f       	add	r30, r18
    528e:	f3 1f       	adc	r31, r19
    5290:	89 2f       	mov	r24, r25
    5292:	80 95       	com	r24
    5294:	96 81       	ldd	r25, Z+6	; 0x06
    5296:	89 23       	and	r24, r25
    5298:	86 83       	std	Z+6, r24	; 0x06
    529a:	88 23       	and	r24, r24
    529c:	39 f4       	brne	.+14     	; 0x52ac <OSMutexPend+0x128>
                        pevent2->OSEventGrp &= ~ptcb->OSTCBBitY;
    529e:	90 96       	adiw	r26, 0x20	; 32
    52a0:	9c 91       	ld	r25, X
    52a2:	90 97       	sbiw	r26, 0x20	; 32
    52a4:	90 95       	com	r25
    52a6:	8d 81       	ldd	r24, Y+5	; 0x05
    52a8:	89 23       	and	r24, r25
    52aa:	8d 83       	std	Y+5, r24	; 0x05
    52ac:	e0 e0       	ldi	r30, 0x00	; 0
                    }
                }
                rdy = OS_FALSE;                            /* No                                       */
            }
            ptcb->OSTCBPrio = pip;                         /* Change owner task prio to PIP            */
    52ae:	5c 96       	adiw	r26, 0x1c	; 28
    52b0:	6c 93       	st	X, r22
    52b2:	5c 97       	sbiw	r26, 0x1c	; 28
#if OS_LOWEST_PRIO <= 63
            ptcb->OSTCBY    = (INT8U)( ptcb->OSTCBPrio >> 3);
    52b4:	86 2f       	mov	r24, r22
    52b6:	86 95       	lsr	r24
    52b8:	86 95       	lsr	r24
    52ba:	86 95       	lsr	r24
    52bc:	5e 96       	adiw	r26, 0x1e	; 30
    52be:	8c 93       	st	X, r24
    52c0:	5e 97       	sbiw	r26, 0x1e	; 30
            ptcb->OSTCBX    = (INT8U)( ptcb->OSTCBPrio & 0x07);
    52c2:	96 2f       	mov	r25, r22
    52c4:	97 70       	andi	r25, 0x07	; 7
    52c6:	5d 96       	adiw	r26, 0x1d	; 29
    52c8:	9c 93       	st	X, r25
    52ca:	5d 97       	sbiw	r26, 0x1d	; 29
            ptcb->OSTCBBitY = (INT8U)(1 << ptcb->OSTCBY);
    52cc:	21 e0       	ldi	r18, 0x01	; 1
    52ce:	30 e0       	ldi	r19, 0x00	; 0
    52d0:	a9 01       	movw	r20, r18
    52d2:	02 c0       	rjmp	.+4      	; 0x52d8 <OSMutexPend+0x154>
    52d4:	44 0f       	add	r20, r20
    52d6:	55 1f       	adc	r21, r21
    52d8:	8a 95       	dec	r24
    52da:	e2 f7       	brpl	.-8      	; 0x52d4 <OSMutexPend+0x150>
    52dc:	90 96       	adiw	r26, 0x20	; 32
    52de:	4c 93       	st	X, r20
    52e0:	90 97       	sbiw	r26, 0x20	; 32
            ptcb->OSTCBBitX = (INT8U)(1 << ptcb->OSTCBX);
    52e2:	02 c0       	rjmp	.+4      	; 0x52e8 <OSMutexPend+0x164>
    52e4:	22 0f       	add	r18, r18
    52e6:	33 1f       	adc	r19, r19
    52e8:	9a 95       	dec	r25
    52ea:	e2 f7       	brpl	.-8      	; 0x52e4 <OSMutexPend+0x160>
    52ec:	5f 96       	adiw	r26, 0x1f	; 31
    52ee:	2c 93       	st	X, r18
    52f0:	5f 97       	sbiw	r26, 0x1f	; 31
            ptcb->OSTCBY    = (INT8U)((ptcb->OSTCBPrio >> 4) & 0xFF);
            ptcb->OSTCBX    = (INT8U)( ptcb->OSTCBPrio & 0x0F);
            ptcb->OSTCBBitY = (INT16U)(1 << ptcb->OSTCBY);
            ptcb->OSTCBBitX = (INT16U)(1 << ptcb->OSTCBX);
#endif
            if (rdy == OS_TRUE) {                          /* If task was ready at owner's priority ...*/
    52f2:	e1 30       	cpi	r30, 0x01	; 1
    52f4:	91 f4       	brne	.+36     	; 0x531a <OSMutexPend+0x196>
                OSRdyGrp               |= ptcb->OSTCBBitY; /* ... make it ready at new priority.       */
    52f6:	80 91 d2 11 	lds	r24, 0x11D2
    52fa:	84 2b       	or	r24, r20
    52fc:	80 93 d2 11 	sts	0x11D2, r24
                OSRdyTbl[ptcb->OSTCBY] |= ptcb->OSTCBBitX;
    5300:	5e 96       	adiw	r26, 0x1e	; 30
    5302:	ec 91       	ld	r30, X
    5304:	5e 97       	sbiw	r26, 0x1e	; 30
    5306:	f0 e0       	ldi	r31, 0x00	; 0
    5308:	ed 52       	subi	r30, 0x2D	; 45
    530a:	fe 4e       	sbci	r31, 0xEE	; 238
    530c:	80 81       	ld	r24, Z
    530e:	5f 96       	adiw	r26, 0x1f	; 31
    5310:	9c 91       	ld	r25, X
    5312:	5f 97       	sbiw	r26, 0x1f	; 31
    5314:	89 2b       	or	r24, r25
    5316:	80 83       	st	Z, r24
    5318:	14 c0       	rjmp	.+40     	; 0x5342 <OSMutexPend+0x1be>
            } else {
                pevent2 = ptcb->OSTCBEventPtr;
    531a:	52 96       	adiw	r26, 0x12	; 18
    531c:	ed 91       	ld	r30, X+
    531e:	fc 91       	ld	r31, X
    5320:	53 97       	sbiw	r26, 0x13	; 19
                if (pevent2 != (OS_EVENT *)0) {            /* Add to event wait list                   */
    5322:	30 97       	sbiw	r30, 0x00	; 0
    5324:	71 f0       	breq	.+28     	; 0x5342 <OSMutexPend+0x1be>
                    pevent2->OSEventGrp               |= ptcb->OSTCBBitY;
    5326:	85 81       	ldd	r24, Z+5	; 0x05
    5328:	84 2b       	or	r24, r20
    532a:	85 83       	std	Z+5, r24	; 0x05
                    pevent2->OSEventTbl[ptcb->OSTCBY] |= ptcb->OSTCBBitX;
    532c:	5e 96       	adiw	r26, 0x1e	; 30
    532e:	8c 91       	ld	r24, X
    5330:	5e 97       	sbiw	r26, 0x1e	; 30
    5332:	e8 0f       	add	r30, r24
    5334:	f1 1d       	adc	r31, r1
    5336:	86 81       	ldd	r24, Z+6	; 0x06
    5338:	5f 96       	adiw	r26, 0x1f	; 31
    533a:	9c 91       	ld	r25, X
    533c:	5f 97       	sbiw	r26, 0x1f	; 31
    533e:	89 2b       	or	r24, r25
    5340:	86 83       	std	Z+6, r24	; 0x06
                }
            }
            OSTCBPrioTbl[pip] = ptcb;
    5342:	e6 2f       	mov	r30, r22
    5344:	f0 e0       	ldi	r31, 0x00	; 0
    5346:	ee 0f       	add	r30, r30
    5348:	ff 1f       	adc	r31, r31
    534a:	e7 51       	subi	r30, 0x17	; 23
    534c:	f8 4e       	sbci	r31, 0xE8	; 232
    534e:	b1 83       	std	Z+1, r27	; 0x01
    5350:	a0 83       	st	Z, r26
        }
    }
    OSTCBCur->OSTCBStat     |= OS_STAT_MUTEX;         /* Mutex not available, pend current task        */
    5352:	e0 91 de 11 	lds	r30, 0x11DE
    5356:	f0 91 df 11 	lds	r31, 0x11DF
    535a:	82 8d       	ldd	r24, Z+26	; 0x1a
    535c:	80 61       	ori	r24, 0x10	; 16
    535e:	82 8f       	std	Z+26, r24	; 0x1a
    OSTCBCur->OSTCBStatPend  = OS_STAT_PEND_OK;
    5360:	13 8e       	std	Z+27, r1	; 0x1b
    OSTCBCur->OSTCBDly       = timeout;               /* Store timeout in current task's TCB           */
    5362:	b1 8e       	std	Z+25, r11	; 0x19
    5364:	a0 8e       	std	Z+24, r10	; 0x18
    OS_EventTaskWait(pevent);                         /* Suspend task until event or timeout occurs    */
    5366:	c8 01       	movw	r24, r16
    5368:	0e 94 cf 1f 	call	0x3f9e	; 0x3f9e <OS_EventTaskWait>
    OS_EXIT_CRITICAL();
    536c:	df be       	out	0x3f, r13	; 63
    OS_Sched();                                       /* Find next highest priority task ready         */
    536e:	0e 94 ba 21 	call	0x4374	; 0x4374 <OS_Sched>
    OS_ENTER_CRITICAL();
    5372:	df b6       	in	r13, 0x3f	; 63
    5374:	f8 94       	cli
    switch (OSTCBCur->OSTCBStatPend) {                /* See if we timed-out or aborted                */
    5376:	e0 91 de 11 	lds	r30, 0x11DE
    537a:	f0 91 df 11 	lds	r31, 0x11DF
    537e:	83 8d       	ldd	r24, Z+27	; 0x1b
    5380:	88 23       	and	r24, r24
    5382:	19 f0       	breq	.+6      	; 0x538a <OSMutexPend+0x206>
    5384:	82 30       	cpi	r24, 0x02	; 2
    5386:	41 f4       	brne	.+16     	; 0x5398 <OSMutexPend+0x214>
    5388:	03 c0       	rjmp	.+6      	; 0x5390 <OSMutexPend+0x20c>
        case OS_STAT_PEND_OK:
             *perr = OS_ERR_NONE;
    538a:	d7 01       	movw	r26, r14
    538c:	1c 92       	st	X, r1
    538e:	0b c0       	rjmp	.+22     	; 0x53a6 <OSMutexPend+0x222>
             break;

        case OS_STAT_PEND_ABORT:
             *perr = OS_ERR_PEND_ABORT;               /* Indicate that we aborted getting mutex        */
    5390:	8e e0       	ldi	r24, 0x0E	; 14
    5392:	f7 01       	movw	r30, r14
    5394:	80 83       	st	Z, r24
    5396:	07 c0       	rjmp	.+14     	; 0x53a6 <OSMutexPend+0x222>
             break;
             
        case OS_STAT_PEND_TO:
        default:
             OS_EventTaskRemove(OSTCBCur, pevent);
    5398:	cf 01       	movw	r24, r30
    539a:	b8 01       	movw	r22, r16
    539c:	0e 94 3c 20 	call	0x4078	; 0x4078 <OS_EventTaskRemove>
             *perr = OS_ERR_TIMEOUT;                  /* Indicate that we didn't get mutex within TO   */
    53a0:	8a e0       	ldi	r24, 0x0A	; 10
    53a2:	d7 01       	movw	r26, r14
    53a4:	8c 93       	st	X, r24
             break;
    }
    OSTCBCur->OSTCBStat          =  OS_STAT_RDY;      /* Set   task  status to ready                   */
    53a6:	e0 91 de 11 	lds	r30, 0x11DE
    53aa:	f0 91 df 11 	lds	r31, 0x11DF
    53ae:	12 8e       	std	Z+26, r1	; 0x1a
    OSTCBCur->OSTCBStatPend      =  OS_STAT_PEND_OK;  /* Clear pend  status                            */
    53b0:	13 8e       	std	Z+27, r1	; 0x1b
    OSTCBCur->OSTCBEventPtr      = (OS_EVENT  *)0;    /* Clear event pointers                          */
    53b2:	13 8a       	std	Z+19, r1	; 0x13
    53b4:	12 8a       	std	Z+18, r1	; 0x12
#if (OS_EVENT_MULTI_EN > 0)
    OSTCBCur->OSTCBEventMultiPtr = (OS_EVENT **)0;
    53b6:	15 8a       	std	Z+21, r1	; 0x15
    53b8:	14 8a       	std	Z+20, r1	; 0x14
#endif
    OS_EXIT_CRITICAL();
    53ba:	df be       	out	0x3f, r13	; 63
}
    53bc:	df 91       	pop	r29
    53be:	cf 91       	pop	r28
    53c0:	1f 91       	pop	r17
    53c2:	0f 91       	pop	r16
    53c4:	ff 90       	pop	r15
    53c6:	ef 90       	pop	r14
    53c8:	df 90       	pop	r13
    53ca:	bf 90       	pop	r11
    53cc:	af 90       	pop	r10
    53ce:	08 95       	ret

000053d0 <OSMutexCreate>:
*                 to use to reduce priority inversion.
*********************************************************************************************************
*/

OS_EVENT  *OSMutexCreate (INT8U prio, INT8U *perr)
{
    53d0:	0f 93       	push	r16
    53d2:	1f 93       	push	r17
    53d4:	cf 93       	push	r28
    53d6:	df 93       	push	r29
    53d8:	38 2f       	mov	r19, r24
    53da:	8b 01       	movw	r16, r22
    if (prio >= OS_LOWEST_PRIO) {                          /* Validate PIP                             */
        *perr = OS_ERR_PRIO_INVALID;
        return ((OS_EVENT *)0);
    }
#endif
    if (OSIntNesting > 0) {                                /* See if called from ISR ...               */
    53dc:	80 91 dd 11 	lds	r24, 0x11DD
    53e0:	88 23       	and	r24, r24
    53e2:	11 f0       	breq	.+4      	; 0x53e8 <OSMutexCreate+0x18>
        *perr = OS_ERR_CREATE_ISR;                         /* ... can't CREATE mutex from an ISR       */
    53e4:	80 e1       	ldi	r24, 0x10	; 16
    53e6:	0e c0       	rjmp	.+28     	; 0x5404 <OSMutexCreate+0x34>
        return ((OS_EVENT *)0);
    }
    OS_ENTER_CRITICAL();
    53e8:	2f b7       	in	r18, 0x3f	; 63
    53ea:	f8 94       	cli
    if (OSTCBPrioTbl[prio] != (OS_TCB *)0) {               /* Mutex priority must not already exist    */
    53ec:	e3 2f       	mov	r30, r19
    53ee:	f0 e0       	ldi	r31, 0x00	; 0
    53f0:	ee 0f       	add	r30, r30
    53f2:	ff 1f       	adc	r31, r31
    53f4:	e7 51       	subi	r30, 0x17	; 23
    53f6:	f8 4e       	sbci	r31, 0xE8	; 232
    53f8:	80 81       	ld	r24, Z
    53fa:	91 81       	ldd	r25, Z+1	; 0x01
    53fc:	89 2b       	or	r24, r25
    53fe:	39 f0       	breq	.+14     	; 0x540e <OSMutexCreate+0x3e>
        OS_EXIT_CRITICAL();                                /* Task already exist at priority ...       */
    5400:	2f bf       	out	0x3f, r18	; 63
        *perr = OS_ERR_PRIO_EXIST;                         /* ... inheritance priority                 */
    5402:	88 e2       	ldi	r24, 0x28	; 40
    5404:	f8 01       	movw	r30, r16
    5406:	80 83       	st	Z, r24
    5408:	c0 e0       	ldi	r28, 0x00	; 0
    540a:	d0 e0       	ldi	r29, 0x00	; 0
    540c:	29 c0       	rjmp	.+82     	; 0x5460 <OSMutexCreate+0x90>
        return ((OS_EVENT *)0);
    }
    OSTCBPrioTbl[prio] = OS_TCB_RESERVED;                  /* Reserve the table entry                  */
    540e:	81 e0       	ldi	r24, 0x01	; 1
    5410:	90 e0       	ldi	r25, 0x00	; 0
    5412:	91 83       	std	Z+1, r25	; 0x01
    5414:	80 83       	st	Z, r24
    pevent             = OSEventFreeList;                  /* Get next free event control block        */
    5416:	c0 91 db 11 	lds	r28, 0x11DB
    541a:	d0 91 dc 11 	lds	r29, 0x11DC
    if (pevent == (OS_EVENT *)0) {                         /* See if an ECB was available              */
    541e:	20 97       	sbiw	r28, 0x00	; 0
    5420:	39 f4       	brne	.+14     	; 0x5430 <OSMutexCreate+0x60>
        OSTCBPrioTbl[prio] = (OS_TCB *)0;                  /* No, Release the table entry              */
    5422:	11 82       	std	Z+1, r1	; 0x01
    5424:	10 82       	st	Z, r1
        OS_EXIT_CRITICAL();
    5426:	2f bf       	out	0x3f, r18	; 63
        *perr              = OS_ERR_PEVENT_NULL;           /* No more event control blocks             */
    5428:	84 e0       	ldi	r24, 0x04	; 4
    542a:	fb 01       	movw	r30, r22
    542c:	80 83       	st	Z, r24
    542e:	18 c0       	rjmp	.+48     	; 0x5460 <OSMutexCreate+0x90>
        return (pevent);
    }
    OSEventFreeList        = (OS_EVENT *)OSEventFreeList->OSEventPtr;   /* Adjust the free list        */
    5430:	89 81       	ldd	r24, Y+1	; 0x01
    5432:	9a 81       	ldd	r25, Y+2	; 0x02
    5434:	90 93 dc 11 	sts	0x11DC, r25
    5438:	80 93 db 11 	sts	0x11DB, r24
    OS_EXIT_CRITICAL();
    543c:	2f bf       	out	0x3f, r18	; 63
    pevent->OSEventType    = OS_EVENT_TYPE_MUTEX;
    543e:	84 e0       	ldi	r24, 0x04	; 4
    5440:	88 83       	st	Y, r24
    pevent->OSEventCnt     = (INT16U)((INT16U)prio << 8) | OS_MUTEX_AVAILABLE; /* Resource is avail.   */
    5442:	93 2f       	mov	r25, r19
    5444:	80 e0       	ldi	r24, 0x00	; 0
    5446:	8f 6f       	ori	r24, 0xFF	; 255
    5448:	9c 83       	std	Y+4, r25	; 0x04
    544a:	8b 83       	std	Y+3, r24	; 0x03
    pevent->OSEventPtr     = (void *)0;                                 /* No task owning the mutex    */
    544c:	1a 82       	std	Y+2, r1	; 0x02
    544e:	19 82       	std	Y+1, r1	; 0x01
#if OS_EVENT_NAME_SIZE > 1
    pevent->OSEventName[0] = '?';
    5450:	8f e3       	ldi	r24, 0x3F	; 63
    5452:	8e 87       	std	Y+14, r24	; 0x0e
    pevent->OSEventName[1] = OS_ASCII_NUL;
    5454:	1f 86       	std	Y+15, r1	; 0x0f
#endif
    OS_EventWaitListInit(pevent);
    5456:	ce 01       	movw	r24, r28
    5458:	0e 94 7b 20 	call	0x40f6	; 0x40f6 <OS_EventWaitListInit>
    *perr                  = OS_ERR_NONE;
    545c:	f8 01       	movw	r30, r16
    545e:	10 82       	st	Z, r1
    return (pevent);
}
    5460:	ce 01       	movw	r24, r28
    5462:	df 91       	pop	r29
    5464:	cf 91       	pop	r28
    5466:	1f 91       	pop	r17
    5468:	0f 91       	pop	r16
    546a:	08 95       	ret

0000546c <OSTaskStkChk>:
*              OS_ERR_PDATA_NULL      if 'p_stk_data' is a NULL pointer
*********************************************************************************************************
*/
#if (OS_TASK_STAT_STK_CHK_EN > 0) && (OS_TASK_CREATE_EXT_EN > 0)
INT8U  OSTaskStkChk (INT8U prio, OS_STK_DATA *p_stk_data)
{
    546c:	ef 92       	push	r14
    546e:	ff 92       	push	r15
    5470:	0f 93       	push	r16
    5472:	1f 93       	push	r17
    5474:	db 01       	movw	r26, r22
    }
    if (p_stk_data == (OS_STK_DATA *)0) {              /* Validate 'p_stk_data'                        */
        return (OS_ERR_PDATA_NULL);
    }
#endif
    p_stk_data->OSFree = 0;                            /* Assume failure, set to 0 size                */
    5476:	1d 92       	st	X+, r1
    5478:	1d 92       	st	X+, r1
    547a:	1d 92       	st	X+, r1
    547c:	1c 92       	st	X, r1
    547e:	13 97       	sbiw	r26, 0x03	; 3
    p_stk_data->OSUsed = 0;
    5480:	14 96       	adiw	r26, 0x04	; 4
    5482:	1d 92       	st	X+, r1
    5484:	1d 92       	st	X+, r1
    5486:	1d 92       	st	X+, r1
    5488:	1c 92       	st	X, r1
    548a:	17 97       	sbiw	r26, 0x07	; 7
    OS_ENTER_CRITICAL();
    548c:	9f b7       	in	r25, 0x3f	; 63
    548e:	f8 94       	cli
    if (prio == OS_PRIO_SELF) {                        /* See if check for SELF                        */
    5490:	8f 3f       	cpi	r24, 0xFF	; 255
    5492:	29 f4       	brne	.+10     	; 0x549e <OSTaskStkChk+0x32>
        prio = OSTCBCur->OSTCBPrio;
    5494:	e0 91 de 11 	lds	r30, 0x11DE
    5498:	f0 91 df 11 	lds	r31, 0x11DF
    549c:	84 8d       	ldd	r24, Z+28	; 0x1c
    }
    ptcb = OSTCBPrioTbl[prio];
    549e:	e8 2f       	mov	r30, r24
    54a0:	f0 e0       	ldi	r31, 0x00	; 0
    54a2:	ee 0f       	add	r30, r30
    54a4:	ff 1f       	adc	r31, r31
    54a6:	e7 51       	subi	r30, 0x17	; 23
    54a8:	f8 4e       	sbci	r31, 0xE8	; 232
    54aa:	01 90       	ld	r0, Z+
    54ac:	f0 81       	ld	r31, Z
    54ae:	e0 2d       	mov	r30, r0
    if (ptcb == (OS_TCB *)0) {                         /* Make sure task exist                         */
    54b0:	30 97       	sbiw	r30, 0x00	; 0
    54b2:	11 f4       	brne	.+4      	; 0x54b8 <OSTaskStkChk+0x4c>
        OS_EXIT_CRITICAL();
    54b4:	9f bf       	out	0x3f, r25	; 63
    54b6:	04 c0       	rjmp	.+8      	; 0x54c0 <OSTaskStkChk+0x54>
        return (OS_ERR_TASK_NOT_EXIST);
    }
    if (ptcb == OS_TCB_RESERVED) {
    54b8:	e1 30       	cpi	r30, 0x01	; 1
    54ba:	f1 05       	cpc	r31, r1
    54bc:	19 f4       	brne	.+6      	; 0x54c4 <OSTaskStkChk+0x58>
        OS_EXIT_CRITICAL();
    54be:	9f bf       	out	0x3f, r25	; 63
    54c0:	83 e4       	ldi	r24, 0x43	; 67
    54c2:	2c c0       	rjmp	.+88     	; 0x551c <OSTaskStkChk+0xb0>
        return (OS_ERR_TASK_NOT_EXIST);
    }
    if ((ptcb->OSTCBOpt & OS_TASK_OPT_STK_CHK) == 0) { /* Make sure stack checking option is set       */
    54c4:	82 85       	ldd	r24, Z+10	; 0x0a
    54c6:	80 fd       	sbrc	r24, 0
    54c8:	03 c0       	rjmp	.+6      	; 0x54d0 <OSTaskStkChk+0x64>
        OS_EXIT_CRITICAL();
    54ca:	9f bf       	out	0x3f, r25	; 63
    54cc:	85 e4       	ldi	r24, 0x45	; 69
    54ce:	26 c0       	rjmp	.+76     	; 0x551c <OSTaskStkChk+0xb0>
        return (OS_ERR_TASK_OPT);
    }
    nfree = 0;
    size  = ptcb->OSTCBStkSize;
    54d0:	e6 80       	ldd	r14, Z+6	; 0x06
    54d2:	f7 80       	ldd	r15, Z+7	; 0x07
    54d4:	00 85       	ldd	r16, Z+8	; 0x08
    54d6:	11 85       	ldd	r17, Z+9	; 0x09
    pchk  = ptcb->OSTCBStkBottom;
    54d8:	64 81       	ldd	r22, Z+4	; 0x04
    54da:	75 81       	ldd	r23, Z+5	; 0x05
    OS_EXIT_CRITICAL();
    54dc:	9f bf       	out	0x3f, r25	; 63
    54de:	20 e0       	ldi	r18, 0x00	; 0
    54e0:	30 e0       	ldi	r19, 0x00	; 0
    54e2:	40 e0       	ldi	r20, 0x00	; 0
    54e4:	50 e0       	ldi	r21, 0x00	; 0
    54e6:	04 c0       	rjmp	.+8      	; 0x54f0 <OSTaskStkChk+0x84>
#if OS_STK_GROWTH == 1
    while (*pchk++ == (OS_STK)0) {                    /* Compute the number of zero entries on the stk */
        nfree++;
    54e8:	2f 5f       	subi	r18, 0xFF	; 255
    54ea:	3f 4f       	sbci	r19, 0xFF	; 255
    54ec:	4f 4f       	sbci	r20, 0xFF	; 255
    54ee:	5f 4f       	sbci	r21, 0xFF	; 255
    nfree = 0;
    size  = ptcb->OSTCBStkSize;
    pchk  = ptcb->OSTCBStkBottom;
    OS_EXIT_CRITICAL();
#if OS_STK_GROWTH == 1
    while (*pchk++ == (OS_STK)0) {                    /* Compute the number of zero entries on the stk */
    54f0:	fb 01       	movw	r30, r22
    54f2:	e2 0f       	add	r30, r18
    54f4:	f3 1f       	adc	r31, r19
    54f6:	80 81       	ld	r24, Z
    54f8:	88 23       	and	r24, r24
    54fa:	b1 f3       	breq	.-20     	; 0x54e8 <OSTaskStkChk+0x7c>
#else
    while (*pchk-- == (OS_STK)0) {
        nfree++;
    }
#endif
    p_stk_data->OSFree = nfree * sizeof(OS_STK);          /* Compute number of free bytes on the stack */
    54fc:	2d 93       	st	X+, r18
    54fe:	3d 93       	st	X+, r19
    5500:	4d 93       	st	X+, r20
    5502:	5c 93       	st	X, r21
    5504:	13 97       	sbiw	r26, 0x03	; 3
    p_stk_data->OSUsed = (size - nfree) * sizeof(OS_STK); /* Compute number of bytes used on the stack */
    5506:	e2 1a       	sub	r14, r18
    5508:	f3 0a       	sbc	r15, r19
    550a:	04 0b       	sbc	r16, r20
    550c:	15 0b       	sbc	r17, r21
    550e:	14 96       	adiw	r26, 0x04	; 4
    5510:	ed 92       	st	X+, r14
    5512:	fd 92       	st	X+, r15
    5514:	0d 93       	st	X+, r16
    5516:	1c 93       	st	X, r17
    5518:	17 97       	sbiw	r26, 0x07	; 7
    551a:	80 e0       	ldi	r24, 0x00	; 0
    return (OS_ERR_NONE);
}
    551c:	1f 91       	pop	r17
    551e:	0f 91       	pop	r16
    5520:	ff 90       	pop	r15
    5522:	ef 90       	pop	r14
    5524:	08 95       	ret

00005526 <OS_TaskStkClr>:
* Returns    : none
*********************************************************************************************************
*/
#if (OS_TASK_STAT_STK_CHK_EN > 0) && (OS_TASK_CREATE_EXT_EN > 0)
void  OS_TaskStkClr (OS_STK *pbos, INT32U size, INT16U opt)
{
    5526:	fc 01       	movw	r30, r24
    if ((opt & OS_TASK_OPT_STK_CHK) != 0x0000) {       /* See if stack checking has been enabled       */
    5528:	20 ff       	sbrs	r18, 0
    552a:	0d c0       	rjmp	.+26     	; 0x5546 <OS_TaskStkClr+0x20>
        if ((opt & OS_TASK_OPT_STK_CLR) != 0x0000) {   /* See if stack needs to be cleared             */
    552c:	21 fd       	sbrc	r18, 1
    552e:	06 c0       	rjmp	.+12     	; 0x553c <OS_TaskStkClr+0x16>
    5530:	08 95       	ret
#if OS_STK_GROWTH == 1
            while (size > 0) {                         /* Stack grows from HIGH to LOW memory          */
                size--;
    5532:	41 50       	subi	r20, 0x01	; 1
    5534:	50 40       	sbci	r21, 0x00	; 0
    5536:	60 40       	sbci	r22, 0x00	; 0
    5538:	70 40       	sbci	r23, 0x00	; 0
                *pbos++ = (OS_STK)0;                   /* Clear from bottom of stack and up!           */
    553a:	11 92       	st	Z+, r1
void  OS_TaskStkClr (OS_STK *pbos, INT32U size, INT16U opt)
{
    if ((opt & OS_TASK_OPT_STK_CHK) != 0x0000) {       /* See if stack checking has been enabled       */
        if ((opt & OS_TASK_OPT_STK_CLR) != 0x0000) {   /* See if stack needs to be cleared             */
#if OS_STK_GROWTH == 1
            while (size > 0) {                         /* Stack grows from HIGH to LOW memory          */
    553c:	41 15       	cp	r20, r1
    553e:	51 05       	cpc	r21, r1
    5540:	61 05       	cpc	r22, r1
    5542:	71 05       	cpc	r23, r1
    5544:	b1 f7       	brne	.-20     	; 0x5532 <OS_TaskStkClr+0xc>
    5546:	08 95       	ret

00005548 <OSTaskSuspend>:
*********************************************************************************************************
*/

#if OS_TASK_SUSPEND_EN > 0
INT8U  OSTaskSuspend (INT8U prio)
{
    5548:	e8 2f       	mov	r30, r24
        if (prio != OS_PRIO_SELF) {
            return (OS_ERR_PRIO_INVALID);
        }
    }
#endif
    OS_ENTER_CRITICAL();
    554a:	3f b7       	in	r19, 0x3f	; 63
    554c:	f8 94       	cli
    554e:	a0 91 de 11 	lds	r26, 0x11DE
    5552:	b0 91 df 11 	lds	r27, 0x11DF
    if (prio == OS_PRIO_SELF) {                                 /* See if suspend SELF                 */
    5556:	8f 3f       	cpi	r24, 0xFF	; 255
    5558:	19 f4       	brne	.+6      	; 0x5560 <OSTaskSuspend+0x18>
        prio = OSTCBCur->OSTCBPrio;
    555a:	5c 96       	adiw	r26, 0x1c	; 28
    555c:	ec 91       	ld	r30, X
    555e:	06 c0       	rjmp	.+12     	; 0x556c <OSTaskSuspend+0x24>
        self = OS_TRUE;
    } else if (prio == OSTCBCur->OSTCBPrio) {                   /* See if suspending self              */
    5560:	5c 96       	adiw	r26, 0x1c	; 28
    5562:	8c 91       	ld	r24, X
    5564:	e8 17       	cp	r30, r24
    5566:	11 f0       	breq	.+4      	; 0x556c <OSTaskSuspend+0x24>
    5568:	20 e0       	ldi	r18, 0x00	; 0
    556a:	01 c0       	rjmp	.+2      	; 0x556e <OSTaskSuspend+0x26>
    556c:	21 e0       	ldi	r18, 0x01	; 1
        self = OS_TRUE;
    } else {
        self = OS_FALSE;                                        /* No suspending another task          */
    }
    ptcb = OSTCBPrioTbl[prio];
    556e:	f0 e0       	ldi	r31, 0x00	; 0
    5570:	ee 0f       	add	r30, r30
    5572:	ff 1f       	adc	r31, r31
    5574:	e7 51       	subi	r30, 0x17	; 23
    5576:	f8 4e       	sbci	r31, 0xE8	; 232
    5578:	a0 81       	ld	r26, Z
    557a:	b1 81       	ldd	r27, Z+1	; 0x01
    if (ptcb == (OS_TCB *)0) {                                  /* Task to suspend must exist          */
    557c:	10 97       	sbiw	r26, 0x00	; 0
    557e:	19 f4       	brne	.+6      	; 0x5586 <OSTaskSuspend+0x3e>
        OS_EXIT_CRITICAL();
    5580:	3f bf       	out	0x3f, r19	; 63
    5582:	88 e4       	ldi	r24, 0x48	; 72
    5584:	08 95       	ret
        return (OS_ERR_TASK_SUSPEND_PRIO);
    }
    if (ptcb == OS_TCB_RESERVED) {                              /* See if assigned to Mutex            */
    5586:	a1 30       	cpi	r26, 0x01	; 1
    5588:	b1 05       	cpc	r27, r1
    558a:	19 f4       	brne	.+6      	; 0x5592 <OSTaskSuspend+0x4a>
        OS_EXIT_CRITICAL();
    558c:	3f bf       	out	0x3f, r19	; 63
    558e:	83 e4       	ldi	r24, 0x43	; 67
    5590:	08 95       	ret
        return (OS_ERR_TASK_NOT_EXIST);
    }
    y            = ptcb->OSTCBY;
    OSRdyTbl[y] &= ~ptcb->OSTCBBitX;                            /* Make task not ready                 */
    5592:	5e 96       	adiw	r26, 0x1e	; 30
    5594:	ec 91       	ld	r30, X
    5596:	5e 97       	sbiw	r26, 0x1e	; 30
    5598:	f0 e0       	ldi	r31, 0x00	; 0
    559a:	ed 52       	subi	r30, 0x2D	; 45
    559c:	fe 4e       	sbci	r31, 0xEE	; 238
    559e:	5f 96       	adiw	r26, 0x1f	; 31
    55a0:	8c 91       	ld	r24, X
    55a2:	5f 97       	sbiw	r26, 0x1f	; 31
    55a4:	80 95       	com	r24
    55a6:	90 81       	ld	r25, Z
    55a8:	89 23       	and	r24, r25
    55aa:	80 83       	st	Z, r24
    if (OSRdyTbl[y] == 0) {
    55ac:	88 23       	and	r24, r24
    55ae:	49 f4       	brne	.+18     	; 0x55c2 <OSTaskSuspend+0x7a>
        OSRdyGrp &= ~ptcb->OSTCBBitY;
    55b0:	90 96       	adiw	r26, 0x20	; 32
    55b2:	9c 91       	ld	r25, X
    55b4:	90 97       	sbiw	r26, 0x20	; 32
    55b6:	90 95       	com	r25
    55b8:	80 91 d2 11 	lds	r24, 0x11D2
    55bc:	89 23       	and	r24, r25
    55be:	80 93 d2 11 	sts	0x11D2, r24
    }
    ptcb->OSTCBStat |= OS_STAT_SUSPEND;                         /* Status of task is 'SUSPENDED'       */
    55c2:	5a 96       	adiw	r26, 0x1a	; 26
    55c4:	8c 91       	ld	r24, X
    55c6:	5a 97       	sbiw	r26, 0x1a	; 26
    55c8:	88 60       	ori	r24, 0x08	; 8
    55ca:	5a 96       	adiw	r26, 0x1a	; 26
    55cc:	8c 93       	st	X, r24
    OS_EXIT_CRITICAL();
    55ce:	3f bf       	out	0x3f, r19	; 63
    if (self == OS_TRUE) {                                      /* Context switch only if SELF         */
    55d0:	21 30       	cpi	r18, 0x01	; 1
    55d2:	11 f0       	breq	.+4      	; 0x55d8 <OSTaskSuspend+0x90>
    55d4:	80 e0       	ldi	r24, 0x00	; 0
    55d6:	08 95       	ret
        OS_Sched();                                             /* Find new highest priority task      */
    55d8:	0e 94 ba 21 	call	0x4374	; 0x4374 <OS_Sched>
    55dc:	80 e0       	ldi	r24, 0x00	; 0
    }
    return (OS_ERR_NONE);
}
    55de:	08 95       	ret

000055e0 <OSTaskResume>:
*********************************************************************************************************
*/

#if OS_TASK_SUSPEND_EN > 0
INT8U  OSTaskResume (INT8U prio)
{
    55e0:	e8 2f       	mov	r30, r24
#if OS_ARG_CHK_EN > 0
    if (prio >= OS_LOWEST_PRIO) {                             /* Make sure task priority is valid      */
        return (OS_ERR_PRIO_INVALID);
    }
#endif
    OS_ENTER_CRITICAL();
    55e2:	2f b7       	in	r18, 0x3f	; 63
    55e4:	f8 94       	cli
    ptcb = OSTCBPrioTbl[prio];
    55e6:	f0 e0       	ldi	r31, 0x00	; 0
    55e8:	ee 0f       	add	r30, r30
    55ea:	ff 1f       	adc	r31, r31
    55ec:	e7 51       	subi	r30, 0x17	; 23
    55ee:	f8 4e       	sbci	r31, 0xE8	; 232
    55f0:	a0 81       	ld	r26, Z
    55f2:	b1 81       	ldd	r27, Z+1	; 0x01
    if (ptcb == (OS_TCB *)0) {                                /* Task to suspend must exist            */
    55f4:	10 97       	sbiw	r26, 0x00	; 0
    55f6:	19 f4       	brne	.+6      	; 0x55fe <OSTaskResume+0x1e>
        OS_EXIT_CRITICAL();
    55f8:	2f bf       	out	0x3f, r18	; 63
    55fa:	86 e4       	ldi	r24, 0x46	; 70
    55fc:	08 95       	ret
        return (OS_ERR_TASK_RESUME_PRIO);
    }
    if (ptcb == OS_TCB_RESERVED) {                            /* See if assigned to Mutex              */
    55fe:	a1 30       	cpi	r26, 0x01	; 1
    5600:	b1 05       	cpc	r27, r1
    5602:	19 f4       	brne	.+6      	; 0x560a <OSTaskResume+0x2a>
        OS_EXIT_CRITICAL();
    5604:	2f bf       	out	0x3f, r18	; 63
    5606:	83 e4       	ldi	r24, 0x43	; 67
    5608:	08 95       	ret
        return (OS_ERR_TASK_NOT_EXIST);
    }
    if ((ptcb->OSTCBStat & OS_STAT_SUSPEND) != OS_STAT_RDY) { /* Task must be suspended                */
    560a:	5a 96       	adiw	r26, 0x1a	; 26
    560c:	8c 91       	ld	r24, X
    560e:	5a 97       	sbiw	r26, 0x1a	; 26
    5610:	83 ff       	sbrs	r24, 3
    5612:	2c c0       	rjmp	.+88     	; 0x566c <OSTaskResume+0x8c>
        ptcb->OSTCBStat &= ~(INT8U)OS_STAT_SUSPEND;           /* Remove suspension                     */
    5614:	87 7f       	andi	r24, 0xF7	; 247
    5616:	5a 96       	adiw	r26, 0x1a	; 26
    5618:	8c 93       	st	X, r24
    561a:	5a 97       	sbiw	r26, 0x1a	; 26
        if (ptcb->OSTCBStat == OS_STAT_RDY) {                 /* See if task is now ready              */
    561c:	88 23       	and	r24, r24
    561e:	19 f5       	brne	.+70     	; 0x5666 <OSTaskResume+0x86>
            if (ptcb->OSTCBDly == 0) {
    5620:	58 96       	adiw	r26, 0x18	; 24
    5622:	8d 91       	ld	r24, X+
    5624:	9c 91       	ld	r25, X
    5626:	59 97       	sbiw	r26, 0x19	; 25
    5628:	89 2b       	or	r24, r25
    562a:	d9 f4       	brne	.+54     	; 0x5662 <OSTaskResume+0x82>
                OSRdyGrp               |= ptcb->OSTCBBitY;    /* Yes, Make task ready to run           */
    562c:	80 91 d2 11 	lds	r24, 0x11D2
    5630:	90 96       	adiw	r26, 0x20	; 32
    5632:	9c 91       	ld	r25, X
    5634:	90 97       	sbiw	r26, 0x20	; 32
    5636:	89 2b       	or	r24, r25
    5638:	80 93 d2 11 	sts	0x11D2, r24
                OSRdyTbl[ptcb->OSTCBY] |= ptcb->OSTCBBitX;
    563c:	5e 96       	adiw	r26, 0x1e	; 30
    563e:	ec 91       	ld	r30, X
    5640:	5e 97       	sbiw	r26, 0x1e	; 30
    5642:	f0 e0       	ldi	r31, 0x00	; 0
    5644:	ed 52       	subi	r30, 0x2D	; 45
    5646:	fe 4e       	sbci	r31, 0xEE	; 238
    5648:	80 81       	ld	r24, Z
    564a:	5f 96       	adiw	r26, 0x1f	; 31
    564c:	9c 91       	ld	r25, X
    564e:	89 2b       	or	r24, r25
    5650:	80 83       	st	Z, r24
                OS_EXIT_CRITICAL();
    5652:	2f bf       	out	0x3f, r18	; 63
                if (OSRunning == OS_TRUE) {
    5654:	80 91 ba 10 	lds	r24, 0x10BA
    5658:	81 30       	cpi	r24, 0x01	; 1
    565a:	31 f4       	brne	.+12     	; 0x5668 <OSTaskResume+0x88>
                    OS_Sched();                               /* Find new highest priority task        */
    565c:	0e 94 ba 21 	call	0x4374	; 0x4374 <OS_Sched>
    5660:	03 c0       	rjmp	.+6      	; 0x5668 <OSTaskResume+0x88>
                }
            } else {
                OS_EXIT_CRITICAL();
    5662:	2f bf       	out	0x3f, r18	; 63
    5664:	01 c0       	rjmp	.+2      	; 0x5668 <OSTaskResume+0x88>
            }
        } else {                                              /* Must be pending on event              */
            OS_EXIT_CRITICAL();
    5666:	2f bf       	out	0x3f, r18	; 63
    5668:	80 e0       	ldi	r24, 0x00	; 0
    566a:	08 95       	ret
        }
        return (OS_ERR_NONE);
    }
    OS_EXIT_CRITICAL();
    566c:	2f bf       	out	0x3f, r18	; 63
    566e:	84 e4       	ldi	r24, 0x44	; 68
    return (OS_ERR_TASK_NOT_SUSPENDED);
}
    5670:	08 95       	ret

00005672 <OSTaskChangePrio>:
*********************************************************************************************************
*/

#if OS_TASK_CHANGE_PRIO_EN > 0
INT8U  OSTaskChangePrio (INT8U oldprio, INT8U newprio)
{
    5672:	af 92       	push	r10
    5674:	bf 92       	push	r11
    5676:	cf 92       	push	r12
    5678:	df 92       	push	r13
    567a:	ef 92       	push	r14
    567c:	ff 92       	push	r15
    567e:	0f 93       	push	r16
    5680:	1f 93       	push	r17
    5682:	cf 93       	push	r28
    5684:	df 93       	push	r29
    5686:	28 2f       	mov	r18, r24
    5688:	d6 2e       	mov	r13, r22
    }
    if (newprio >= OS_LOWEST_PRIO) {
        return (OS_ERR_PRIO_INVALID);
    }
#endif
    OS_ENTER_CRITICAL();
    568a:	cf b6       	in	r12, 0x3f	; 63
    568c:	f8 94       	cli
    if (OSTCBPrioTbl[newprio] != (OS_TCB *)0) {             /* New priority must not already exist     */
    568e:	a6 2f       	mov	r26, r22
    5690:	b0 e0       	ldi	r27, 0x00	; 0
    5692:	fd 01       	movw	r30, r26
    5694:	ee 0f       	add	r30, r30
    5696:	ff 1f       	adc	r31, r31
    5698:	e7 51       	subi	r30, 0x17	; 23
    569a:	f8 4e       	sbci	r31, 0xE8	; 232
    569c:	80 81       	ld	r24, Z
    569e:	91 81       	ldd	r25, Z+1	; 0x01
    56a0:	89 2b       	or	r24, r25
    56a2:	19 f0       	breq	.+6      	; 0x56aa <OSTaskChangePrio+0x38>
        OS_EXIT_CRITICAL();
    56a4:	cf be       	out	0x3f, r12	; 63
    56a6:	88 e2       	ldi	r24, 0x28	; 40
    56a8:	bf c0       	rjmp	.+382    	; 0x5828 <OSTaskChangePrio+0x1b6>
        return (OS_ERR_PRIO_EXIST);
    }
    if (oldprio == OS_PRIO_SELF) {                          /* See if changing self                    */
    56aa:	2f 3f       	cpi	r18, 0xFF	; 255
    56ac:	29 f4       	brne	.+10     	; 0x56b8 <OSTaskChangePrio+0x46>
        oldprio = OSTCBCur->OSTCBPrio;                      /* Yes, get priority                       */
    56ae:	e0 91 de 11 	lds	r30, 0x11DE
    56b2:	f0 91 df 11 	lds	r31, 0x11DF
    56b6:	24 8d       	ldd	r18, Z+28	; 0x1c
    }
    ptcb = OSTCBPrioTbl[oldprio];
    56b8:	e2 2f       	mov	r30, r18
    56ba:	f0 e0       	ldi	r31, 0x00	; 0
    56bc:	ee 0f       	add	r30, r30
    56be:	ff 1f       	adc	r31, r31
    56c0:	e7 51       	subi	r30, 0x17	; 23
    56c2:	f8 4e       	sbci	r31, 0xE8	; 232
    56c4:	c0 81       	ld	r28, Z
    56c6:	d1 81       	ldd	r29, Z+1	; 0x01
    if (ptcb == (OS_TCB *)0) {                              /* Does task to change exist?              */
    56c8:	20 97       	sbiw	r28, 0x00	; 0
    56ca:	19 f4       	brne	.+6      	; 0x56d2 <OSTaskChangePrio+0x60>
        OS_EXIT_CRITICAL();                                 /* No, can't change its priority!          */
    56cc:	cf be       	out	0x3f, r12	; 63
    56ce:	89 e2       	ldi	r24, 0x29	; 41
    56d0:	ab c0       	rjmp	.+342    	; 0x5828 <OSTaskChangePrio+0x1b6>
        return (OS_ERR_PRIO);
    }
    if (ptcb == OS_TCB_RESERVED) {                          /* Is task assigned to Mutex               */
    56d2:	c1 30       	cpi	r28, 0x01	; 1
    56d4:	d1 05       	cpc	r29, r1
    56d6:	19 f4       	brne	.+6      	; 0x56de <OSTaskChangePrio+0x6c>
        OS_EXIT_CRITICAL();                                 /* No, can't change its priority!          */
    56d8:	cf be       	out	0x3f, r12	; 63
    56da:	83 e4       	ldi	r24, 0x43	; 67
    56dc:	a5 c0       	rjmp	.+330    	; 0x5828 <OSTaskChangePrio+0x1b6>
        return (OS_ERR_TASK_NOT_EXIST);
    }
#if OS_LOWEST_PRIO <= 63
    y_new                 = (INT8U)(newprio >> 3);          /* Yes, compute new TCB fields             */
    56de:	ad 2c       	mov	r10, r13
    56e0:	a6 94       	lsr	r10
    56e2:	a6 94       	lsr	r10
    56e4:	a6 94       	lsr	r10
    x_new                 = (INT8U)(newprio & 0x07);
    56e6:	57 e0       	ldi	r21, 0x07	; 7
    56e8:	b5 2e       	mov	r11, r21
    56ea:	bd 20       	and	r11, r13
    bity_new              = (INT8U)(1 << y_new);
    56ec:	6a 2d       	mov	r22, r10
    56ee:	70 e0       	ldi	r23, 0x00	; 0
    56f0:	21 e0       	ldi	r18, 0x01	; 1
    56f2:	30 e0       	ldi	r19, 0x00	; 0
    56f4:	c9 01       	movw	r24, r18
    56f6:	0a 2c       	mov	r0, r10
    56f8:	02 c0       	rjmp	.+4      	; 0x56fe <OSTaskChangePrio+0x8c>
    56fa:	88 0f       	add	r24, r24
    56fc:	99 1f       	adc	r25, r25
    56fe:	0a 94       	dec	r0
    5700:	e2 f7       	brpl	.-8      	; 0x56fa <OSTaskChangePrio+0x88>
    5702:	e8 2e       	mov	r14, r24
    bitx_new              = (INT8U)(1 << x_new);
    5704:	f2 2e       	mov	r15, r18
    5706:	0b 2c       	mov	r0, r11
    5708:	01 c0       	rjmp	.+2      	; 0x570c <OSTaskChangePrio+0x9a>
    570a:	ff 0c       	add	r15, r15
    570c:	0a 94       	dec	r0
    570e:	ea f7       	brpl	.-6      	; 0x570a <OSTaskChangePrio+0x98>
    x_new                 = (INT8U)( newprio & 0x0F);
    bity_new              = (INT16U)(1 << y_new);
    bitx_new              = (INT16U)(1 << x_new);
#endif

    OSTCBPrioTbl[oldprio] = (OS_TCB *)0;                    /* Remove TCB from old priority            */
    5710:	11 82       	std	Z+1, r1	; 0x01
    5712:	10 82       	st	Z, r1
    OSTCBPrioTbl[newprio] =  ptcb;                          /* Place pointer to TCB @ new priority     */
    5714:	aa 0f       	add	r26, r26
    5716:	bb 1f       	adc	r27, r27
    5718:	a7 51       	subi	r26, 0x17	; 23
    571a:	b8 4e       	sbci	r27, 0xE8	; 232
    571c:	cd 93       	st	X+, r28
    571e:	dc 93       	st	X, r29
    y_old                 =  ptcb->OSTCBY;
    bity_old              =  ptcb->OSTCBBitY;
    5720:	08 a1       	ldd	r16, Y+32	; 0x20
    bitx_old              =  ptcb->OSTCBBitX;
    5722:	1f 8d       	ldd	r17, Y+31	; 0x1f
    if ((OSRdyTbl[y_old] &   bitx_old) != 0) {              /* If task is ready make it not            */
    5724:	8e 8d       	ldd	r24, Y+30	; 0x1e
    5726:	28 2f       	mov	r18, r24
    5728:	30 e0       	ldi	r19, 0x00	; 0
    572a:	f9 01       	movw	r30, r18
    572c:	ed 52       	subi	r30, 0x2D	; 45
    572e:	fe 4e       	sbci	r31, 0xEE	; 238
    5730:	90 81       	ld	r25, Z
    5732:	89 2f       	mov	r24, r25
    5734:	81 23       	and	r24, r17
    5736:	c1 f0       	breq	.+48     	; 0x5768 <OSTaskChangePrio+0xf6>
         OSRdyTbl[y_old] &= ~bitx_old;
    5738:	81 2f       	mov	r24, r17
    573a:	80 95       	com	r24
    573c:	89 23       	and	r24, r25
    573e:	80 83       	st	Z, r24
         if (OSRdyTbl[y_old] == 0) {
    5740:	88 23       	and	r24, r24
    5742:	39 f4       	brne	.+14     	; 0x5752 <OSTaskChangePrio+0xe0>
             OSRdyGrp &= ~bity_old;
    5744:	90 2f       	mov	r25, r16
    5746:	90 95       	com	r25
    5748:	80 91 d2 11 	lds	r24, 0x11D2
    574c:	89 23       	and	r24, r25
    574e:	80 93 d2 11 	sts	0x11D2, r24
         }
         OSRdyGrp        |= bity_new;                       /* Make new priority ready to run          */
    5752:	80 91 d2 11 	lds	r24, 0x11D2
    5756:	8e 29       	or	r24, r14
    5758:	80 93 d2 11 	sts	0x11D2, r24
         OSRdyTbl[y_new] |= bitx_new;
    575c:	fb 01       	movw	r30, r22
    575e:	ed 52       	subi	r30, 0x2D	; 45
    5760:	fe 4e       	sbci	r31, 0xEE	; 238
    5762:	80 81       	ld	r24, Z
    5764:	8f 29       	or	r24, r15
    5766:	80 83       	st	Z, r24
    }

#if (OS_EVENT_EN)
    pevent = ptcb->OSTCBEventPtr;
    5768:	aa 89       	ldd	r26, Y+18	; 0x12
    576a:	bb 89       	ldd	r27, Y+19	; 0x13
    if (pevent != (OS_EVENT *)0) {
    576c:	10 97       	sbiw	r26, 0x00	; 0
    576e:	01 f1       	breq	.+64     	; 0x57b0 <OSTaskChangePrio+0x13e>
        pevent->OSEventTbl[y_old] &= ~bitx_old;             /* Remove old task prio from wait list     */
    5770:	fd 01       	movw	r30, r26
    5772:	e2 0f       	add	r30, r18
    5774:	f3 1f       	adc	r31, r19
    5776:	81 2f       	mov	r24, r17
    5778:	80 95       	com	r24
    577a:	96 81       	ldd	r25, Z+6	; 0x06
    577c:	89 23       	and	r24, r25
    577e:	86 83       	std	Z+6, r24	; 0x06
        if (pevent->OSEventTbl[y_old] == 0) {
    5780:	88 23       	and	r24, r24
    5782:	49 f4       	brne	.+18     	; 0x5796 <OSTaskChangePrio+0x124>
            pevent->OSEventGrp    &= ~bity_old;
    5784:	90 2f       	mov	r25, r16
    5786:	90 95       	com	r25
    5788:	15 96       	adiw	r26, 0x05	; 5
    578a:	8c 91       	ld	r24, X
    578c:	15 97       	sbiw	r26, 0x05	; 5
    578e:	89 23       	and	r24, r25
    5790:	15 96       	adiw	r26, 0x05	; 5
    5792:	8c 93       	st	X, r24
    5794:	15 97       	sbiw	r26, 0x05	; 5
        }
        pevent->OSEventGrp        |= bity_new;              /* Add    new task prio to   wait list     */
    5796:	15 96       	adiw	r26, 0x05	; 5
    5798:	8c 91       	ld	r24, X
    579a:	15 97       	sbiw	r26, 0x05	; 5
    579c:	8e 29       	or	r24, r14
    579e:	15 96       	adiw	r26, 0x05	; 5
    57a0:	8c 93       	st	X, r24
    57a2:	15 97       	sbiw	r26, 0x05	; 5
        pevent->OSEventTbl[y_new] |= bitx_new;
    57a4:	fd 01       	movw	r30, r26
    57a6:	e6 0f       	add	r30, r22
    57a8:	f7 1f       	adc	r31, r23
    57aa:	86 81       	ldd	r24, Z+6	; 0x06
    57ac:	8f 29       	or	r24, r15
    57ae:	86 83       	std	Z+6, r24	; 0x06
    }
#if (OS_EVENT_MULTI_EN > 0)
    if (ptcb->OSTCBEventMultiPtr != (OS_EVENT **)0) {
    57b0:	4c 89       	ldd	r20, Y+20	; 0x14
    57b2:	5d 89       	ldd	r21, Y+21	; 0x15
    57b4:	41 15       	cp	r20, r1
    57b6:	51 05       	cpc	r21, r1
    57b8:	51 f1       	breq	.+84     	; 0x580e <OSTaskChangePrio+0x19c>
        pevents =  ptcb->OSTCBEventMultiPtr;
        pevent  = *pevents;
    57ba:	fa 01       	movw	r30, r20
    57bc:	a0 81       	ld	r26, Z
    57be:	b1 81       	ldd	r27, Z+1	; 0x01
        while (pevent != (OS_EVENT *)0) {
            pevent->OSEventTbl[y_old] &= ~bitx_old;         /* Remove old task prio from wait lists    */
    57c0:	10 95       	com	r17
            if (pevent->OSEventTbl[y_old] == 0) {
                pevent->OSEventGrp    &= ~bity_old;
    57c2:	90 2f       	mov	r25, r16
    57c4:	90 95       	com	r25
    57c6:	21 c0       	rjmp	.+66     	; 0x580a <OSTaskChangePrio+0x198>
#if (OS_EVENT_MULTI_EN > 0)
    if (ptcb->OSTCBEventMultiPtr != (OS_EVENT **)0) {
        pevents =  ptcb->OSTCBEventMultiPtr;
        pevent  = *pevents;
        while (pevent != (OS_EVENT *)0) {
            pevent->OSEventTbl[y_old] &= ~bitx_old;         /* Remove old task prio from wait lists    */
    57c8:	fd 01       	movw	r30, r26
    57ca:	e2 0f       	add	r30, r18
    57cc:	f3 1f       	adc	r31, r19
    57ce:	86 81       	ldd	r24, Z+6	; 0x06
    57d0:	81 23       	and	r24, r17
    57d2:	86 83       	std	Z+6, r24	; 0x06
            if (pevent->OSEventTbl[y_old] == 0) {
    57d4:	88 23       	and	r24, r24
    57d6:	39 f4       	brne	.+14     	; 0x57e6 <OSTaskChangePrio+0x174>
                pevent->OSEventGrp    &= ~bity_old;
    57d8:	15 96       	adiw	r26, 0x05	; 5
    57da:	8c 91       	ld	r24, X
    57dc:	15 97       	sbiw	r26, 0x05	; 5
    57de:	89 23       	and	r24, r25
    57e0:	15 96       	adiw	r26, 0x05	; 5
    57e2:	8c 93       	st	X, r24
    57e4:	15 97       	sbiw	r26, 0x05	; 5
            }
            pevent->OSEventGrp        |= bity_new;          /* Add    new task prio to   wait lists    */
    57e6:	15 96       	adiw	r26, 0x05	; 5
    57e8:	8c 91       	ld	r24, X
    57ea:	15 97       	sbiw	r26, 0x05	; 5
    57ec:	8e 29       	or	r24, r14
    57ee:	15 96       	adiw	r26, 0x05	; 5
    57f0:	8c 93       	st	X, r24
    57f2:	15 97       	sbiw	r26, 0x05	; 5
            pevent->OSEventTbl[y_new] |= bitx_new;
    57f4:	fd 01       	movw	r30, r26
    57f6:	e6 0f       	add	r30, r22
    57f8:	f7 1f       	adc	r31, r23
    57fa:	86 81       	ldd	r24, Z+6	; 0x06
    57fc:	8f 29       	or	r24, r15
    57fe:	86 83       	std	Z+6, r24	; 0x06
            pevents++;
    5800:	4e 5f       	subi	r20, 0xFE	; 254
    5802:	5f 4f       	sbci	r21, 0xFF	; 255
            pevent                     = *pevents;
    5804:	fa 01       	movw	r30, r20
    5806:	a0 81       	ld	r26, Z
    5808:	b1 81       	ldd	r27, Z+1	; 0x01
    }
#if (OS_EVENT_MULTI_EN > 0)
    if (ptcb->OSTCBEventMultiPtr != (OS_EVENT **)0) {
        pevents =  ptcb->OSTCBEventMultiPtr;
        pevent  = *pevents;
        while (pevent != (OS_EVENT *)0) {
    580a:	10 97       	sbiw	r26, 0x00	; 0
    580c:	e9 f6       	brne	.-70     	; 0x57c8 <OSTaskChangePrio+0x156>
        }
    }
#endif
#endif

    ptcb->OSTCBPrio = newprio;                              /* Set new task priority                   */
    580e:	dc 8e       	std	Y+28, r13	; 0x1c
    ptcb->OSTCBY    = y_new;
    5810:	ae 8e       	std	Y+30, r10	; 0x1e
    ptcb->OSTCBX    = x_new;
    5812:	bd 8e       	std	Y+29, r11	; 0x1d
    ptcb->OSTCBBitY = bity_new;
    5814:	e8 a2       	std	Y+32, r14	; 0x20
    ptcb->OSTCBBitX = bitx_new;
    5816:	ff 8e       	std	Y+31, r15	; 0x1f
    OS_EXIT_CRITICAL();
    5818:	cf be       	out	0x3f, r12	; 63
    if (OSRunning == OS_TRUE) {
    581a:	80 91 ba 10 	lds	r24, 0x10BA
    581e:	81 30       	cpi	r24, 0x01	; 1
    5820:	11 f4       	brne	.+4      	; 0x5826 <OSTaskChangePrio+0x1b4>
        OS_Sched();                                         /* Find new highest priority task          */
    5822:	0e 94 ba 21 	call	0x4374	; 0x4374 <OS_Sched>
    5826:	80 e0       	ldi	r24, 0x00	; 0
    }
    return (OS_ERR_NONE);
}
    5828:	df 91       	pop	r29
    582a:	cf 91       	pop	r28
    582c:	1f 91       	pop	r17
    582e:	0f 91       	pop	r16
    5830:	ff 90       	pop	r15
    5832:	ef 90       	pop	r14
    5834:	df 90       	pop	r13
    5836:	cf 90       	pop	r12
    5838:	bf 90       	pop	r11
    583a:	af 90       	pop	r10
    583c:	08 95       	ret

0000583e <OSTaskNameSet>:
* Returns    : None
*********************************************************************************************************
*/
#if OS_TASK_NAME_SIZE > 1
void  OSTaskNameSet (INT8U prio, INT8U *pname, INT8U *perr)
{
    583e:	cf 92       	push	r12
    5840:	df 92       	push	r13
    5842:	ff 92       	push	r15
    5844:	0f 93       	push	r16
    5846:	1f 93       	push	r17
    5848:	cf 93       	push	r28
    584a:	df 93       	push	r29
    584c:	e8 2f       	mov	r30, r24
    584e:	6b 01       	movw	r12, r22
    5850:	8a 01       	movw	r16, r20
    if (pname == (INT8U *)0) {                       /* Is 'pname' a NULL pointer?                     */
        *perr = OS_ERR_PNAME_NULL;                   /* Yes                                            */
        return;
    }
#endif
    if (OSIntNesting > 0) {                          /* See if trying to call from an ISR              */
    5852:	80 91 dd 11 	lds	r24, 0x11DD
    5856:	88 23       	and	r24, r24
    5858:	11 f0       	breq	.+4      	; 0x585e <OSTaskNameSet+0x20>
        *perr = OS_ERR_NAME_SET_ISR;
    585a:	82 e1       	ldi	r24, 0x12	; 18
    585c:	21 c0       	rjmp	.+66     	; 0x58a0 <OSTaskNameSet+0x62>
        return;
    }
    OS_ENTER_CRITICAL();
    585e:	ff b6       	in	r15, 0x3f	; 63
    5860:	f8 94       	cli
    if (prio == OS_PRIO_SELF) {                      /* See if caller desires to set it's own name     */
    5862:	ef 3f       	cpi	r30, 0xFF	; 255
    5864:	29 f4       	brne	.+10     	; 0x5870 <OSTaskNameSet+0x32>
        prio = OSTCBCur->OSTCBPrio;
    5866:	e0 91 de 11 	lds	r30, 0x11DE
    586a:	f0 91 df 11 	lds	r31, 0x11DF
    586e:	e4 8d       	ldd	r30, Z+28	; 0x1c
    }
    ptcb = OSTCBPrioTbl[prio];
    5870:	f0 e0       	ldi	r31, 0x00	; 0
    5872:	ee 0f       	add	r30, r30
    5874:	ff 1f       	adc	r31, r31
    5876:	e7 51       	subi	r30, 0x17	; 23
    5878:	f8 4e       	sbci	r31, 0xE8	; 232
    587a:	c0 81       	ld	r28, Z
    587c:	d1 81       	ldd	r29, Z+1	; 0x01
    if (ptcb == (OS_TCB *)0) {                       /* Does task exist?                               */
    587e:	20 97       	sbiw	r28, 0x00	; 0
    5880:	11 f4       	brne	.+4      	; 0x5886 <OSTaskNameSet+0x48>
        OS_EXIT_CRITICAL();                          /* No                                             */
    5882:	ff be       	out	0x3f, r15	; 63
    5884:	04 c0       	rjmp	.+8      	; 0x588e <OSTaskNameSet+0x50>
        *perr = OS_ERR_TASK_NOT_EXIST;
        return;
    }
    if (ptcb == OS_TCB_RESERVED) {                   /* Task assigned to a Mutex?                      */
    5886:	c1 30       	cpi	r28, 0x01	; 1
    5888:	d1 05       	cpc	r29, r1
    588a:	19 f4       	brne	.+6      	; 0x5892 <OSTaskNameSet+0x54>
        OS_EXIT_CRITICAL();                          /* Yes                                            */
    588c:	ff be       	out	0x3f, r15	; 63
        *perr = OS_ERR_TASK_NOT_EXIST;
    588e:	83 e4       	ldi	r24, 0x43	; 67
    5890:	07 c0       	rjmp	.+14     	; 0x58a0 <OSTaskNameSet+0x62>
        return;
    }
    len = OS_StrLen(pname);                          /* Yes, Can we fit the string in the TCB?         */
    5892:	c6 01       	movw	r24, r12
    5894:	0e 94 a7 20 	call	0x414e	; 0x414e <OS_StrLen>
    if (len > (OS_TASK_NAME_SIZE - 1)) {             /*      No                                        */
    5898:	80 31       	cpi	r24, 0x10	; 16
    589a:	28 f0       	brcs	.+10     	; 0x58a6 <OSTaskNameSet+0x68>
        OS_EXIT_CRITICAL();
    589c:	ff be       	out	0x3f, r15	; 63
        *perr = OS_ERR_TASK_NAME_TOO_LONG;
    589e:	81 e4       	ldi	r24, 0x41	; 65
    58a0:	f8 01       	movw	r30, r16
    58a2:	80 83       	st	Z, r24
    58a4:	08 c0       	rjmp	.+16     	; 0x58b6 <OSTaskNameSet+0x78>
        return;
    }
    (void)OS_StrCopy(ptcb->OSTCBTaskName, pname);    /*      Yes, copy to TCB                          */
    58a6:	ce 01       	movw	r24, r28
    58a8:	c3 96       	adiw	r24, 0x33	; 51
    58aa:	b6 01       	movw	r22, r12
    58ac:	0e 94 98 20 	call	0x4130	; 0x4130 <OS_StrCopy>
    OS_EXIT_CRITICAL();
    58b0:	ff be       	out	0x3f, r15	; 63
    *perr = OS_ERR_NONE;
    58b2:	f8 01       	movw	r30, r16
    58b4:	10 82       	st	Z, r1
}
    58b6:	df 91       	pop	r29
    58b8:	cf 91       	pop	r28
    58ba:	1f 91       	pop	r17
    58bc:	0f 91       	pop	r16
    58be:	ff 90       	pop	r15
    58c0:	df 90       	pop	r13
    58c2:	cf 90       	pop	r12
    58c4:	08 95       	ret

000058c6 <OSTaskNameGet>:
*********************************************************************************************************
*/

#if OS_TASK_NAME_SIZE > 1
INT8U  OSTaskNameGet (INT8U prio, INT8U *pname, INT8U *perr)
{
    58c6:	1f 93       	push	r17
    58c8:	cf 93       	push	r28
    58ca:	df 93       	push	r29
    58cc:	e8 2f       	mov	r30, r24
    58ce:	9b 01       	movw	r18, r22
    58d0:	ea 01       	movw	r28, r20
    if (pname == (INT8U *)0) {                           /* Is 'pname' a NULL pointer?                 */
        *perr = OS_ERR_PNAME_NULL;                       /* Yes                                        */
        return (0);
    }
#endif
    if (OSIntNesting > 0) {                              /* See if trying to call from an ISR          */
    58d2:	80 91 dd 11 	lds	r24, 0x11DD
    58d6:	88 23       	and	r24, r24
    58d8:	11 f0       	breq	.+4      	; 0x58de <OSTaskNameGet+0x18>
        *perr = OS_ERR_NAME_GET_ISR;
    58da:	81 e1       	ldi	r24, 0x11	; 17
    58dc:	15 c0       	rjmp	.+42     	; 0x5908 <OSTaskNameGet+0x42>
        return (0);
    }
    OS_ENTER_CRITICAL();
    58de:	1f b7       	in	r17, 0x3f	; 63
    58e0:	f8 94       	cli
    if (prio == OS_PRIO_SELF) {                          /* See if caller desires it's own name        */
    58e2:	ef 3f       	cpi	r30, 0xFF	; 255
    58e4:	29 f4       	brne	.+10     	; 0x58f0 <OSTaskNameGet+0x2a>
        prio = OSTCBCur->OSTCBPrio;
    58e6:	e0 91 de 11 	lds	r30, 0x11DE
    58ea:	f0 91 df 11 	lds	r31, 0x11DF
    58ee:	e4 8d       	ldd	r30, Z+28	; 0x1c
    }
    ptcb = OSTCBPrioTbl[prio];
    58f0:	f0 e0       	ldi	r31, 0x00	; 0
    58f2:	ee 0f       	add	r30, r30
    58f4:	ff 1f       	adc	r31, r31
    58f6:	e7 51       	subi	r30, 0x17	; 23
    58f8:	f8 4e       	sbci	r31, 0xE8	; 232
    58fa:	60 81       	ld	r22, Z
    58fc:	71 81       	ldd	r23, Z+1	; 0x01
    if (ptcb == (OS_TCB *)0) {                           /* Does task exist?                           */
    58fe:	61 15       	cp	r22, r1
    5900:	71 05       	cpc	r23, r1
    5902:	29 f4       	brne	.+10     	; 0x590e <OSTaskNameGet+0x48>
        OS_EXIT_CRITICAL();                              /* No                                         */
    5904:	1f bf       	out	0x3f, r17	; 63
        *perr = OS_ERR_TASK_NOT_EXIST;
    5906:	83 e4       	ldi	r24, 0x43	; 67
    5908:	88 83       	st	Y, r24
    590a:	80 e0       	ldi	r24, 0x00	; 0
    590c:	0c c0       	rjmp	.+24     	; 0x5926 <OSTaskNameGet+0x60>
        return (0);
    }
    if (ptcb == OS_TCB_RESERVED) {                       /* Task assigned to a Mutex?                  */
    590e:	61 30       	cpi	r22, 0x01	; 1
    5910:	71 05       	cpc	r23, r1
    5912:	11 f4       	brne	.+4      	; 0x5918 <OSTaskNameGet+0x52>
        OS_EXIT_CRITICAL();                              /* Yes                                        */
    5914:	1f bf       	out	0x3f, r17	; 63
    5916:	f7 cf       	rjmp	.-18     	; 0x5906 <OSTaskNameGet+0x40>
        *perr = OS_ERR_TASK_NOT_EXIST;
        return (0);
    }
    len   = OS_StrCopy(pname, ptcb->OSTCBTaskName);      /* Yes, copy name from TCB                    */
    5918:	6d 5c       	subi	r22, 0xCD	; 205
    591a:	7f 4f       	sbci	r23, 0xFF	; 255
    591c:	c9 01       	movw	r24, r18
    591e:	0e 94 98 20 	call	0x4130	; 0x4130 <OS_StrCopy>
    OS_EXIT_CRITICAL();
    5922:	1f bf       	out	0x3f, r17	; 63
    *perr = OS_ERR_NONE;
    5924:	18 82       	st	Y, r1
    return (len);
}
    5926:	df 91       	pop	r29
    5928:	cf 91       	pop	r28
    592a:	1f 91       	pop	r17
    592c:	08 95       	ret

0000592e <OSTaskCreateExt>:
                        INT16U   id,
                        OS_STK  *pbos,
                        INT32U   stk_size,
                        void    *pext,
                        INT16U   opt)
{
    592e:	2f 92       	push	r2
    5930:	3f 92       	push	r3
    5932:	4f 92       	push	r4
    5934:	5f 92       	push	r5
    5936:	6f 92       	push	r6
    5938:	7f 92       	push	r7
    593a:	8f 92       	push	r8
    593c:	9f 92       	push	r9
    593e:	af 92       	push	r10
    5940:	bf 92       	push	r11
    5942:	cf 92       	push	r12
    5944:	df 92       	push	r13
    5946:	ef 92       	push	r14
    5948:	ff 92       	push	r15
    594a:	0f 93       	push	r16
    594c:	1f 93       	push	r17
    594e:	df 93       	push	r29
    5950:	cf 93       	push	r28
    5952:	00 d0       	rcall	.+0      	; 0x5954 <OSTaskCreateExt+0x26>
    5954:	0f 92       	push	r0
    5956:	0f 92       	push	r0
    5958:	cd b7       	in	r28, 0x3d	; 61
    595a:	de b7       	in	r29, 0x3e	; 62
    595c:	3c 01       	movw	r6, r24
    595e:	2b 01       	movw	r4, r22
    5960:	1a 01       	movw	r2, r20
    5962:	29 83       	std	Y+1, r18	; 0x01
    5964:	aa 82       	std	Y+2, r10	; 0x02
    5966:	cb 82       	std	Y+3, r12	; 0x03
    5968:	dc 82       	std	Y+4, r13	; 0x04
    596a:	64 01       	movw	r12, r8
    596c:	ab 8c       	ldd	r10, Y+27	; 0x1b
    596e:	2c 8d       	ldd	r18, Y+28	; 0x1c
    5970:	2d 83       	std	Y+5, r18	; 0x05
#if OS_ARG_CHK_EN > 0
    if (prio > OS_LOWEST_PRIO) {             /* Make sure priority is within allowable range           */
        return (OS_ERR_PRIO_INVALID);
    }
#endif
    OS_ENTER_CRITICAL();
    5972:	2f b7       	in	r18, 0x3f	; 63
    5974:	f8 94       	cli
    if (OSIntNesting > 0) {                  /* Make sure we don't create the task from within an ISR  */
    5976:	80 91 dd 11 	lds	r24, 0x11DD
    597a:	88 23       	and	r24, r24
    597c:	19 f0       	breq	.+6      	; 0x5984 <OSTaskCreateExt+0x56>
        OS_EXIT_CRITICAL();
    597e:	2f bf       	out	0x3f, r18	; 63
    5980:	1c e3       	ldi	r17, 0x3C	; 60
    5982:	55 c0       	rjmp	.+170    	; 0x5a2e <OSTaskCreateExt+0x100>
        return (OS_ERR_TASK_CREATE_ISR);
    }
    if (OSTCBPrioTbl[prio] == (OS_TCB *)0) { /* Make sure task doesn't already exist at this priority  */
    5984:	39 81       	ldd	r19, Y+1	; 0x01
    5986:	83 2e       	mov	r8, r19
    5988:	99 24       	eor	r9, r9
    598a:	f4 01       	movw	r30, r8
    598c:	ee 0f       	add	r30, r30
    598e:	ff 1f       	adc	r31, r31
    5990:	e7 51       	subi	r30, 0x17	; 23
    5992:	f8 4e       	sbci	r31, 0xE8	; 232
    5994:	80 81       	ld	r24, Z
    5996:	91 81       	ldd	r25, Z+1	; 0x01
    5998:	89 2b       	or	r24, r25
    599a:	09 f0       	breq	.+2      	; 0x599e <OSTaskCreateExt+0x70>
    599c:	46 c0       	rjmp	.+140    	; 0x5a2a <OSTaskCreateExt+0xfc>
        OSTCBPrioTbl[prio] = OS_TCB_RESERVED;/* Reserve the priority to prevent others from doing ...  */
    599e:	81 e0       	ldi	r24, 0x01	; 1
    59a0:	90 e0       	ldi	r25, 0x00	; 0
    59a2:	91 83       	std	Z+1, r25	; 0x01
    59a4:	80 83       	st	Z, r24
                                             /* ... the same thing until task is created.              */
        OS_EXIT_CRITICAL();
    59a6:	2f bf       	out	0x3f, r18	; 63
*********************************************************************************************************
*/
#if (OS_TASK_STAT_STK_CHK_EN > 0) && (OS_TASK_CREATE_EXT_EN > 0)
void  OS_TaskStkClr (OS_STK *pbos, INT32U size, INT16U opt)
{
    if ((opt & OS_TASK_OPT_STK_CHK) != 0x0000) {       /* See if stack checking has been enabled       */
    59a8:	a0 fe       	sbrs	r10, 0
    59aa:	16 c0       	rjmp	.+44     	; 0x59d8 <OSTaskCreateExt+0xaa>
        if ((opt & OS_TASK_OPT_STK_CLR) != 0x0000) {   /* See if stack needs to be cleared             */
    59ac:	a1 fe       	sbrs	r10, 1
    59ae:	14 c0       	rjmp	.+40     	; 0x59d8 <OSTaskCreateExt+0xaa>
    59b0:	2a 81       	ldd	r18, Y+2	; 0x02
    59b2:	3b 2d       	mov	r19, r11
    59b4:	4b 81       	ldd	r20, Y+3	; 0x03
    59b6:	5c 81       	ldd	r21, Y+4	; 0x04
    59b8:	c9 01       	movw	r24, r18
    59ba:	da 01       	movw	r26, r20
    59bc:	ac 01       	movw	r20, r24
    59be:	bd 01       	movw	r22, r26
    59c0:	f7 01       	movw	r30, r14
    59c2:	05 c0       	rjmp	.+10     	; 0x59ce <OSTaskCreateExt+0xa0>
#if OS_STK_GROWTH == 1
            while (size > 0) {                         /* Stack grows from HIGH to LOW memory          */
                size--;
    59c4:	41 50       	subi	r20, 0x01	; 1
    59c6:	50 40       	sbci	r21, 0x00	; 0
    59c8:	60 40       	sbci	r22, 0x00	; 0
    59ca:	70 40       	sbci	r23, 0x00	; 0
                *pbos++ = (OS_STK)0;                   /* Clear from bottom of stack and up!           */
    59cc:	11 92       	st	Z+, r1
void  OS_TaskStkClr (OS_STK *pbos, INT32U size, INT16U opt)
{
    if ((opt & OS_TASK_OPT_STK_CHK) != 0x0000) {       /* See if stack checking has been enabled       */
        if ((opt & OS_TASK_OPT_STK_CLR) != 0x0000) {   /* See if stack needs to be cleared             */
#if OS_STK_GROWTH == 1
            while (size > 0) {                         /* Stack grows from HIGH to LOW memory          */
    59ce:	41 15       	cp	r20, r1
    59d0:	51 05       	cpc	r21, r1
    59d2:	61 05       	cpc	r22, r1
    59d4:	71 05       	cpc	r23, r1
    59d6:	b1 f7       	brne	.-20     	; 0x59c4 <OSTaskCreateExt+0x96>

#if (OS_TASK_STAT_STK_CHK_EN > 0)
        OS_TaskStkClr(pbos, stk_size, opt);                    /* Clear the task stack (if needed)     */
#endif

        psp = OSTaskStkInit(task, p_arg, ptos, opt);           /* Initialize the task's stack          */
    59d8:	c3 01       	movw	r24, r6
    59da:	b2 01       	movw	r22, r4
    59dc:	a1 01       	movw	r20, r2
    59de:	2a 2d       	mov	r18, r10
    59e0:	3d 81       	ldd	r19, Y+5	; 0x05
    59e2:	0e 94 a9 2e 	call	0x5d52	; 0x5d52 <OSTaskStkInit>
    59e6:	bc 01       	movw	r22, r24
        err = OS_TCBInit(prio, psp, pbos, id, stk_size, pext, opt);
    59e8:	89 81       	ldd	r24, Y+1	; 0x01
    59ea:	a7 01       	movw	r20, r14
    59ec:	98 01       	movw	r18, r16
    59ee:	ea 80       	ldd	r14, Y+2	; 0x02
    59f0:	fb 2c       	mov	r15, r11
    59f2:	0b 81       	ldd	r16, Y+3	; 0x03
    59f4:	1c 81       	ldd	r17, Y+4	; 0x04
    59f6:	bd 80       	ldd	r11, Y+5	; 0x05
    59f8:	0e 94 b4 20 	call	0x4168	; 0x4168 <OS_TCBInit>
    59fc:	18 2f       	mov	r17, r24
        if (err == OS_ERR_NONE) {
    59fe:	88 23       	and	r24, r24
    5a00:	39 f4       	brne	.+14     	; 0x5a10 <OSTaskCreateExt+0xe2>
            if (OSRunning == OS_TRUE) {                        /* Find HPT if multitasking has started */
    5a02:	80 91 ba 10 	lds	r24, 0x10BA
    5a06:	81 30       	cpi	r24, 0x01	; 1
    5a08:	91 f4       	brne	.+36     	; 0x5a2e <OSTaskCreateExt+0x100>
                OS_Sched();
    5a0a:	0e 94 ba 21 	call	0x4374	; 0x4374 <OS_Sched>
    5a0e:	0f c0       	rjmp	.+30     	; 0x5a2e <OSTaskCreateExt+0x100>
            }
        } else {
            OS_ENTER_CRITICAL();
    5a10:	8f b7       	in	r24, 0x3f	; 63
    5a12:	f8 94       	cli
            OSTCBPrioTbl[prio] = (OS_TCB *)0;                  /* Make this priority avail. to others  */
    5a14:	88 0c       	add	r8, r8
    5a16:	99 1c       	adc	r9, r9
    5a18:	e9 ee       	ldi	r30, 0xE9	; 233
    5a1a:	f7 e1       	ldi	r31, 0x17	; 23
    5a1c:	8e 0e       	add	r8, r30
    5a1e:	9f 1e       	adc	r9, r31
    5a20:	f4 01       	movw	r30, r8
    5a22:	11 82       	std	Z+1, r1	; 0x01
    5a24:	10 82       	st	Z, r1
            OS_EXIT_CRITICAL();
    5a26:	8f bf       	out	0x3f, r24	; 63
    5a28:	02 c0       	rjmp	.+4      	; 0x5a2e <OSTaskCreateExt+0x100>
        }
        return (err);
    }
    OS_EXIT_CRITICAL();
    5a2a:	2f bf       	out	0x3f, r18	; 63
    5a2c:	18 e2       	ldi	r17, 0x28	; 40
    return (OS_ERR_PRIO_EXIST);
}
    5a2e:	81 2f       	mov	r24, r17
    5a30:	0f 90       	pop	r0
    5a32:	0f 90       	pop	r0
    5a34:	0f 90       	pop	r0
    5a36:	0f 90       	pop	r0
    5a38:	0f 90       	pop	r0
    5a3a:	cf 91       	pop	r28
    5a3c:	df 91       	pop	r29
    5a3e:	1f 91       	pop	r17
    5a40:	0f 91       	pop	r16
    5a42:	ff 90       	pop	r15
    5a44:	ef 90       	pop	r14
    5a46:	df 90       	pop	r13
    5a48:	cf 90       	pop	r12
    5a4a:	bf 90       	pop	r11
    5a4c:	af 90       	pop	r10
    5a4e:	9f 90       	pop	r9
    5a50:	8f 90       	pop	r8
    5a52:	7f 90       	pop	r7
    5a54:	6f 90       	pop	r6
    5a56:	5f 90       	pop	r5
    5a58:	4f 90       	pop	r4
    5a5a:	3f 90       	pop	r3
    5a5c:	2f 90       	pop	r2
    5a5e:	08 95       	ret

00005a60 <OSTaskCreate>:
*********************************************************************************************************
*/

#if OS_TASK_CREATE_EN > 0
INT8U  OSTaskCreate (void (*task)(void *p_arg), void *p_arg, OS_STK *ptos, INT8U prio)
{
    5a60:	af 92       	push	r10
    5a62:	bf 92       	push	r11
    5a64:	cf 92       	push	r12
    5a66:	df 92       	push	r13
    5a68:	ef 92       	push	r14
    5a6a:	ff 92       	push	r15
    5a6c:	0f 93       	push	r16
    5a6e:	1f 93       	push	r17
    5a70:	cf 93       	push	r28
    5a72:	df 93       	push	r29
    5a74:	dc 01       	movw	r26, r24
    5a76:	12 2f       	mov	r17, r18
#if OS_ARG_CHK_EN > 0
    if (prio > OS_LOWEST_PRIO) {             /* Make sure priority is within allowable range           */
        return (OS_ERR_PRIO_INVALID);
    }
#endif
    OS_ENTER_CRITICAL();
    5a78:	2f b7       	in	r18, 0x3f	; 63
    5a7a:	f8 94       	cli
    if (OSIntNesting > 0) {                  /* Make sure we don't create the task from within an ISR  */
    5a7c:	80 91 dd 11 	lds	r24, 0x11DD
    5a80:	88 23       	and	r24, r24
    5a82:	19 f0       	breq	.+6      	; 0x5a8a <OSTaskCreate+0x2a>
        OS_EXIT_CRITICAL();
    5a84:	2f bf       	out	0x3f, r18	; 63
    5a86:	1c e3       	ldi	r17, 0x3C	; 60
    5a88:	3a c0       	rjmp	.+116    	; 0x5afe <OSTaskCreate+0x9e>
        return (OS_ERR_TASK_CREATE_ISR);
    }
    if (OSTCBPrioTbl[prio] == (OS_TCB *)0) { /* Make sure task doesn't already exist at this priority  */
    5a8a:	c1 2f       	mov	r28, r17
    5a8c:	d0 e0       	ldi	r29, 0x00	; 0
    5a8e:	fe 01       	movw	r30, r28
    5a90:	ee 0f       	add	r30, r30
    5a92:	ff 1f       	adc	r31, r31
    5a94:	e7 51       	subi	r30, 0x17	; 23
    5a96:	f8 4e       	sbci	r31, 0xE8	; 232
    5a98:	80 81       	ld	r24, Z
    5a9a:	91 81       	ldd	r25, Z+1	; 0x01
    5a9c:	89 2b       	or	r24, r25
    5a9e:	69 f5       	brne	.+90     	; 0x5afa <OSTaskCreate+0x9a>
        OSTCBPrioTbl[prio] = OS_TCB_RESERVED;/* Reserve the priority to prevent others from doing ...  */
    5aa0:	81 e0       	ldi	r24, 0x01	; 1
    5aa2:	90 e0       	ldi	r25, 0x00	; 0
    5aa4:	91 83       	std	Z+1, r25	; 0x01
    5aa6:	80 83       	st	Z, r24
                                             /* ... the same thing until task is created.              */
        OS_EXIT_CRITICAL();
    5aa8:	2f bf       	out	0x3f, r18	; 63
        psp = OSTaskStkInit(task, p_arg, ptos, 0);              /* Initialize the task's stack         */
    5aaa:	cd 01       	movw	r24, r26
    5aac:	20 e0       	ldi	r18, 0x00	; 0
    5aae:	30 e0       	ldi	r19, 0x00	; 0
    5ab0:	0e 94 a9 2e 	call	0x5d52	; 0x5d52 <OSTaskStkInit>
    5ab4:	bc 01       	movw	r22, r24
        err = OS_TCBInit(prio, psp, (OS_STK *)0, 0, 0, (void *)0, 0);
    5ab6:	81 2f       	mov	r24, r17
    5ab8:	40 e0       	ldi	r20, 0x00	; 0
    5aba:	50 e0       	ldi	r21, 0x00	; 0
    5abc:	20 e0       	ldi	r18, 0x00	; 0
    5abe:	30 e0       	ldi	r19, 0x00	; 0
    5ac0:	ee 24       	eor	r14, r14
    5ac2:	ff 24       	eor	r15, r15
    5ac4:	87 01       	movw	r16, r14
    5ac6:	cc 24       	eor	r12, r12
    5ac8:	dd 24       	eor	r13, r13
    5aca:	aa 24       	eor	r10, r10
    5acc:	bb 24       	eor	r11, r11
    5ace:	0e 94 b4 20 	call	0x4168	; 0x4168 <OS_TCBInit>
    5ad2:	18 2f       	mov	r17, r24
        if (err == OS_ERR_NONE) {
    5ad4:	88 23       	and	r24, r24
    5ad6:	39 f4       	brne	.+14     	; 0x5ae6 <OSTaskCreate+0x86>
            if (OSRunning == OS_TRUE) {      /* Find highest priority task if multitasking has started */
    5ad8:	80 91 ba 10 	lds	r24, 0x10BA
    5adc:	81 30       	cpi	r24, 0x01	; 1
    5ade:	79 f4       	brne	.+30     	; 0x5afe <OSTaskCreate+0x9e>
                OS_Sched();
    5ae0:	0e 94 ba 21 	call	0x4374	; 0x4374 <OS_Sched>
    5ae4:	0c c0       	rjmp	.+24     	; 0x5afe <OSTaskCreate+0x9e>
            }
        } else {
            OS_ENTER_CRITICAL();
    5ae6:	8f b7       	in	r24, 0x3f	; 63
    5ae8:	f8 94       	cli
            OSTCBPrioTbl[prio] = (OS_TCB *)0;/* Make this priority available to others                 */
    5aea:	cc 0f       	add	r28, r28
    5aec:	dd 1f       	adc	r29, r29
    5aee:	c7 51       	subi	r28, 0x17	; 23
    5af0:	d8 4e       	sbci	r29, 0xE8	; 232
    5af2:	19 82       	std	Y+1, r1	; 0x01
    5af4:	18 82       	st	Y, r1
            OS_EXIT_CRITICAL();
    5af6:	8f bf       	out	0x3f, r24	; 63
    5af8:	02 c0       	rjmp	.+4      	; 0x5afe <OSTaskCreate+0x9e>
        }
        return (err);
    }
    OS_EXIT_CRITICAL();
    5afa:	2f bf       	out	0x3f, r18	; 63
    5afc:	18 e2       	ldi	r17, 0x28	; 40
    return (OS_ERR_PRIO_EXIST);
}
    5afe:	81 2f       	mov	r24, r17
    5b00:	df 91       	pop	r29
    5b02:	cf 91       	pop	r28
    5b04:	1f 91       	pop	r17
    5b06:	0f 91       	pop	r16
    5b08:	ff 90       	pop	r15
    5b0a:	ef 90       	pop	r14
    5b0c:	df 90       	pop	r13
    5b0e:	cf 90       	pop	r12
    5b10:	bf 90       	pop	r11
    5b12:	af 90       	pop	r10
    5b14:	08 95       	ret

00005b16 <OSTimeGet>:
    OS_CPU_SR  cpu_sr = 0;
#endif



    OS_ENTER_CRITICAL();
    5b16:	8f b7       	in	r24, 0x3f	; 63
    5b18:	f8 94       	cli
    ticks = OSTime;
    5b1a:	20 91 e0 11 	lds	r18, 0x11E0
    5b1e:	30 91 e1 11 	lds	r19, 0x11E1
    5b22:	40 91 e2 11 	lds	r20, 0x11E2
    5b26:	50 91 e3 11 	lds	r21, 0x11E3
    OS_EXIT_CRITICAL();
    5b2a:	8f bf       	out	0x3f, r24	; 63
    return (ticks);
}
    5b2c:	b9 01       	movw	r22, r18
    5b2e:	ca 01       	movw	r24, r20
    5b30:	08 95       	ret

00005b32 <OSTimeSet>:
    OS_CPU_SR  cpu_sr = 0;
#endif



    OS_ENTER_CRITICAL();
    5b32:	2f b7       	in	r18, 0x3f	; 63
    5b34:	f8 94       	cli
    OSTime = ticks;
    5b36:	60 93 e0 11 	sts	0x11E0, r22
    5b3a:	70 93 e1 11 	sts	0x11E1, r23
    5b3e:	80 93 e2 11 	sts	0x11E2, r24
    5b42:	90 93 e3 11 	sts	0x11E3, r25
    OS_EXIT_CRITICAL();
    5b46:	2f bf       	out	0x3f, r18	; 63
}
    5b48:	08 95       	ret

00005b4a <OSTimeDlyResume>:
    OS_CPU_SR  cpu_sr = 0;
#endif



    if (prio >= OS_LOWEST_PRIO) {
    5b4a:	8f 33       	cpi	r24, 0x3F	; 63
    5b4c:	10 f0       	brcs	.+4      	; 0x5b52 <OSTimeDlyResume+0x8>
    5b4e:	8a e2       	ldi	r24, 0x2A	; 42
    5b50:	08 95       	ret
        return (OS_ERR_PRIO_INVALID);
    }
    OS_ENTER_CRITICAL();
    5b52:	2f b7       	in	r18, 0x3f	; 63
    5b54:	f8 94       	cli
    ptcb = OSTCBPrioTbl[prio];                                 /* Make sure that task exist            */
    5b56:	e8 2f       	mov	r30, r24
    5b58:	f0 e0       	ldi	r31, 0x00	; 0
    5b5a:	ee 0f       	add	r30, r30
    5b5c:	ff 1f       	adc	r31, r31
    5b5e:	e7 51       	subi	r30, 0x17	; 23
    5b60:	f8 4e       	sbci	r31, 0xE8	; 232
    5b62:	a0 81       	ld	r26, Z
    5b64:	b1 81       	ldd	r27, Z+1	; 0x01
    if (ptcb == (OS_TCB *)0) {
    5b66:	10 97       	sbiw	r26, 0x00	; 0
    5b68:	11 f4       	brne	.+4      	; 0x5b6e <OSTimeDlyResume+0x24>
        OS_EXIT_CRITICAL();
    5b6a:	2f bf       	out	0x3f, r18	; 63
    5b6c:	04 c0       	rjmp	.+8      	; 0x5b76 <OSTimeDlyResume+0x2c>
        return (OS_ERR_TASK_NOT_EXIST);                        /* The task does not exist              */
    }
    if (ptcb == OS_TCB_RESERVED) {
    5b6e:	a1 30       	cpi	r26, 0x01	; 1
    5b70:	b1 05       	cpc	r27, r1
    5b72:	19 f4       	brne	.+6      	; 0x5b7a <OSTimeDlyResume+0x30>
        OS_EXIT_CRITICAL();
    5b74:	2f bf       	out	0x3f, r18	; 63
    5b76:	83 e4       	ldi	r24, 0x43	; 67
    5b78:	08 95       	ret
        return (OS_ERR_TASK_NOT_EXIST);                        /* The task does not exist              */
    }
    if (ptcb->OSTCBDly == 0) {                                 /* See if task is delayed               */
    5b7a:	58 96       	adiw	r26, 0x18	; 24
    5b7c:	8d 91       	ld	r24, X+
    5b7e:	9c 91       	ld	r25, X
    5b80:	59 97       	sbiw	r26, 0x19	; 25
    5b82:	89 2b       	or	r24, r25
    5b84:	19 f4       	brne	.+6      	; 0x5b8c <OSTimeDlyResume+0x42>
        OS_EXIT_CRITICAL();
    5b86:	2f bf       	out	0x3f, r18	; 63
    5b88:	80 e5       	ldi	r24, 0x50	; 80
    5b8a:	08 95       	ret
        return (OS_ERR_TIME_NOT_DLY);                          /* Indicate that task was not delayed   */
    }

    ptcb->OSTCBDly = 0;                                        /* Clear the time delay                 */
    5b8c:	59 96       	adiw	r26, 0x19	; 25
    5b8e:	1c 92       	st	X, r1
    5b90:	1e 92       	st	-X, r1
    5b92:	58 97       	sbiw	r26, 0x18	; 24
    if ((ptcb->OSTCBStat & OS_STAT_PEND_ANY) != OS_STAT_RDY) {
    5b94:	5a 96       	adiw	r26, 0x1a	; 26
    5b96:	9c 91       	ld	r25, X
    5b98:	5a 97       	sbiw	r26, 0x1a	; 26
    5b9a:	89 2f       	mov	r24, r25
    5b9c:	87 73       	andi	r24, 0x37	; 55
    5b9e:	49 f0       	breq	.+18     	; 0x5bb2 <OSTimeDlyResume+0x68>
        ptcb->OSTCBStat     &= ~OS_STAT_PEND_ANY;              /* Yes, Clear status flag               */
    5ba0:	98 7c       	andi	r25, 0xC8	; 200
    5ba2:	5a 96       	adiw	r26, 0x1a	; 26
    5ba4:	9c 93       	st	X, r25
    5ba6:	5a 97       	sbiw	r26, 0x1a	; 26
        ptcb->OSTCBStatPend  =  OS_STAT_PEND_TO;               /* Indicate PEND timeout                */
    5ba8:	81 e0       	ldi	r24, 0x01	; 1
    5baa:	5b 96       	adiw	r26, 0x1b	; 27
    5bac:	8c 93       	st	X, r24
    5bae:	5b 97       	sbiw	r26, 0x1b	; 27
    5bb0:	03 c0       	rjmp	.+6      	; 0x5bb8 <OSTimeDlyResume+0x6e>
    } else {
        ptcb->OSTCBStatPend  =  OS_STAT_PEND_OK;
    5bb2:	5b 96       	adiw	r26, 0x1b	; 27
    5bb4:	1c 92       	st	X, r1
    5bb6:	5b 97       	sbiw	r26, 0x1b	; 27
    }
    if ((ptcb->OSTCBStat & OS_STAT_SUSPEND) == OS_STAT_RDY) {  /* Is task suspended?                   */
    5bb8:	5a 96       	adiw	r26, 0x1a	; 26
    5bba:	8c 91       	ld	r24, X
    5bbc:	5a 97       	sbiw	r26, 0x1a	; 26
    5bbe:	83 fd       	sbrc	r24, 3
    5bc0:	18 c0       	rjmp	.+48     	; 0x5bf2 <OSTimeDlyResume+0xa8>
        OSRdyGrp               |= ptcb->OSTCBBitY;             /* No,  Make ready                      */
    5bc2:	80 91 d2 11 	lds	r24, 0x11D2
    5bc6:	90 96       	adiw	r26, 0x20	; 32
    5bc8:	9c 91       	ld	r25, X
    5bca:	90 97       	sbiw	r26, 0x20	; 32
    5bcc:	89 2b       	or	r24, r25
    5bce:	80 93 d2 11 	sts	0x11D2, r24
        OSRdyTbl[ptcb->OSTCBY] |= ptcb->OSTCBBitX;
    5bd2:	5e 96       	adiw	r26, 0x1e	; 30
    5bd4:	ec 91       	ld	r30, X
    5bd6:	5e 97       	sbiw	r26, 0x1e	; 30
    5bd8:	f0 e0       	ldi	r31, 0x00	; 0
    5bda:	ed 52       	subi	r30, 0x2D	; 45
    5bdc:	fe 4e       	sbci	r31, 0xEE	; 238
    5bde:	80 81       	ld	r24, Z
    5be0:	5f 96       	adiw	r26, 0x1f	; 31
    5be2:	9c 91       	ld	r25, X
    5be4:	89 2b       	or	r24, r25
    5be6:	80 83       	st	Z, r24
        OS_EXIT_CRITICAL();
    5be8:	2f bf       	out	0x3f, r18	; 63
        OS_Sched();                                            /* See if this is new highest priority  */
    5bea:	0e 94 ba 21 	call	0x4374	; 0x4374 <OS_Sched>
    5bee:	80 e0       	ldi	r24, 0x00	; 0
    5bf0:	08 95       	ret
    } else {
        OS_EXIT_CRITICAL();                                    /* Task may be suspended                */
    5bf2:	2f bf       	out	0x3f, r18	; 63
    5bf4:	80 e0       	ldi	r24, 0x00	; 0
    }
    return (OS_ERR_NONE);
}
    5bf6:	08 95       	ret

00005bf8 <OSTimeDly>:
* Returns    : none
*********************************************************************************************************
*/

void  OSTimeDly (INT16U ticks)
{
    5bf8:	9c 01       	movw	r18, r24
    OS_CPU_SR  cpu_sr = 0;
#endif



    if (OSIntNesting > 0) {                      /* See if trying to call from an ISR                  */
    5bfa:	80 91 dd 11 	lds	r24, 0x11DD
    5bfe:	88 23       	and	r24, r24
    5c00:	41 f5       	brne	.+80     	; 0x5c52 <OSTimeDly+0x5a>
        return;
    }
    if (ticks > 0) {                             /* 0 means no delay!                                  */
    5c02:	21 15       	cp	r18, r1
    5c04:	31 05       	cpc	r19, r1
    5c06:	29 f1       	breq	.+74     	; 0x5c52 <OSTimeDly+0x5a>
        OS_ENTER_CRITICAL();
    5c08:	4f b7       	in	r20, 0x3f	; 63
    5c0a:	f8 94       	cli
        y            =  OSTCBCur->OSTCBY;        /* Delay current task                                 */
    5c0c:	a0 91 de 11 	lds	r26, 0x11DE
    5c10:	b0 91 df 11 	lds	r27, 0x11DF
        OSRdyTbl[y] &= ~OSTCBCur->OSTCBBitX;
    5c14:	5e 96       	adiw	r26, 0x1e	; 30
    5c16:	ec 91       	ld	r30, X
    5c18:	5e 97       	sbiw	r26, 0x1e	; 30
    5c1a:	f0 e0       	ldi	r31, 0x00	; 0
    5c1c:	ed 52       	subi	r30, 0x2D	; 45
    5c1e:	fe 4e       	sbci	r31, 0xEE	; 238
    5c20:	5f 96       	adiw	r26, 0x1f	; 31
    5c22:	8c 91       	ld	r24, X
    5c24:	5f 97       	sbiw	r26, 0x1f	; 31
    5c26:	80 95       	com	r24
    5c28:	90 81       	ld	r25, Z
    5c2a:	89 23       	and	r24, r25
    5c2c:	80 83       	st	Z, r24
        if (OSRdyTbl[y] == 0) {
    5c2e:	88 23       	and	r24, r24
    5c30:	49 f4       	brne	.+18     	; 0x5c44 <OSTimeDly+0x4c>
            OSRdyGrp &= ~OSTCBCur->OSTCBBitY;
    5c32:	90 96       	adiw	r26, 0x20	; 32
    5c34:	9c 91       	ld	r25, X
    5c36:	90 97       	sbiw	r26, 0x20	; 32
    5c38:	90 95       	com	r25
    5c3a:	80 91 d2 11 	lds	r24, 0x11D2
    5c3e:	89 23       	and	r24, r25
    5c40:	80 93 d2 11 	sts	0x11D2, r24
        }
        OSTCBCur->OSTCBDly = ticks;              /* Load ticks in TCB                                  */
    5c44:	59 96       	adiw	r26, 0x19	; 25
    5c46:	3c 93       	st	X, r19
    5c48:	2e 93       	st	-X, r18
    5c4a:	58 97       	sbiw	r26, 0x18	; 24
        OS_EXIT_CRITICAL();
    5c4c:	4f bf       	out	0x3f, r20	; 63
        OS_Sched();                              /* Find next task to run!                             */
    5c4e:	0e 94 ba 21 	call	0x4374	; 0x4374 <OS_Sched>
    5c52:	08 95       	ret

00005c54 <OSTimeDlyHMSM>:
*********************************************************************************************************
*/

#if OS_TIME_DLY_HMSM_EN > 0
INT8U  OSTimeDlyHMSM (INT8U hours, INT8U minutes, INT8U seconds, INT16U ms)
{
    5c54:	8f 92       	push	r8
    5c56:	9f 92       	push	r9
    5c58:	af 92       	push	r10
    5c5a:	bf 92       	push	r11
    5c5c:	cf 92       	push	r12
    5c5e:	df 92       	push	r13
    5c60:	ef 92       	push	r14
    5c62:	ff 92       	push	r15
    5c64:	0f 93       	push	r16
    5c66:	1f 93       	push	r17
    5c68:	cf 93       	push	r28
    5c6a:	df 93       	push	r29
    5c6c:	88 2e       	mov	r8, r24
    5c6e:	e6 2e       	mov	r14, r22
    5c70:	94 2e       	mov	r9, r20
    INT32U ticks;
    INT16U loops;


    if (OSIntNesting > 0) {                      /* See if trying to call from an ISR                  */
    5c72:	80 91 dd 11 	lds	r24, 0x11DD
    5c76:	88 23       	and	r24, r24
    5c78:	11 f0       	breq	.+4      	; 0x5c7e <OSTimeDlyHMSM+0x2a>
    5c7a:	85 e5       	ldi	r24, 0x55	; 85
    5c7c:	5b c0       	rjmp	.+182    	; 0x5d34 <OSTimeDlyHMSM+0xe0>
        return (OS_ERR_TIME_INVALID_MS);
    }
#endif
                                                 /* Compute the total number of clock ticks required.. */
                                                 /* .. (rounded to the nearest tick)                   */
    ticks = ((INT32U)hours * 3600L + (INT32U)minutes * 60L + (INT32U)seconds) * OS_TICKS_PER_SEC
    5c7e:	b9 01       	movw	r22, r18
    5c80:	80 e0       	ldi	r24, 0x00	; 0
    5c82:	90 e0       	ldi	r25, 0x00	; 0
    5c84:	6d 5f       	subi	r22, 0xFD	; 253
    5c86:	7f 4f       	sbci	r23, 0xFF	; 255
    5c88:	8f 4f       	sbci	r24, 0xFF	; 255
    5c8a:	9f 4f       	sbci	r25, 0xFF	; 255
    5c8c:	37 e0       	ldi	r19, 0x07	; 7
    5c8e:	66 0f       	add	r22, r22
    5c90:	77 1f       	adc	r23, r23
    5c92:	88 1f       	adc	r24, r24
    5c94:	99 1f       	adc	r25, r25
    5c96:	3a 95       	dec	r19
    5c98:	d1 f7       	brne	.-12     	; 0x5c8e <OSTimeDlyHMSM+0x3a>
    5c9a:	28 ee       	ldi	r18, 0xE8	; 232
    5c9c:	33 e0       	ldi	r19, 0x03	; 3
    5c9e:	40 e0       	ldi	r20, 0x00	; 0
    5ca0:	50 e0       	ldi	r21, 0x00	; 0
    5ca2:	0e 94 24 f4 	call	0x1e848	; 0x1e848 <__udivmodsi4>
    5ca6:	59 01       	movw	r10, r18
    5ca8:	6a 01       	movw	r12, r20
    5caa:	6e 2d       	mov	r22, r14
    5cac:	70 e0       	ldi	r23, 0x00	; 0
    5cae:	80 e0       	ldi	r24, 0x00	; 0
    5cb0:	90 e0       	ldi	r25, 0x00	; 0
    5cb2:	2c e3       	ldi	r18, 0x3C	; 60
    5cb4:	30 e0       	ldi	r19, 0x00	; 0
    5cb6:	40 e0       	ldi	r20, 0x00	; 0
    5cb8:	50 e0       	ldi	r21, 0x00	; 0
    5cba:	0e 94 f2 f3 	call	0x1e7e4	; 0x1e7e4 <__mulsi3>
    5cbe:	7b 01       	movw	r14, r22
    5cc0:	8c 01       	movw	r16, r24
    5cc2:	e9 0c       	add	r14, r9
    5cc4:	f1 1c       	adc	r15, r1
    5cc6:	01 1d       	adc	r16, r1
    5cc8:	11 1d       	adc	r17, r1
    5cca:	68 2d       	mov	r22, r8
    5ccc:	70 e0       	ldi	r23, 0x00	; 0
    5cce:	80 e0       	ldi	r24, 0x00	; 0
    5cd0:	90 e0       	ldi	r25, 0x00	; 0
    5cd2:	20 e1       	ldi	r18, 0x10	; 16
    5cd4:	3e e0       	ldi	r19, 0x0E	; 14
    5cd6:	40 e0       	ldi	r20, 0x00	; 0
    5cd8:	50 e0       	ldi	r21, 0x00	; 0
    5cda:	0e 94 f2 f3 	call	0x1e7e4	; 0x1e7e4 <__mulsi3>
    5cde:	e6 0e       	add	r14, r22
    5ce0:	f7 1e       	adc	r15, r23
    5ce2:	08 1f       	adc	r16, r24
    5ce4:	19 1f       	adc	r17, r25
    5ce6:	27 e0       	ldi	r18, 0x07	; 7
    5ce8:	ee 0c       	add	r14, r14
    5cea:	ff 1c       	adc	r15, r15
    5cec:	00 1f       	adc	r16, r16
    5cee:	11 1f       	adc	r17, r17
    5cf0:	2a 95       	dec	r18
    5cf2:	d1 f7       	brne	.-12     	; 0x5ce8 <OSTimeDlyHMSM+0x94>
    5cf4:	ae 0c       	add	r10, r14
    5cf6:	bf 1c       	adc	r11, r15
    5cf8:	c0 1e       	adc	r12, r16
    5cfa:	d1 1e       	adc	r13, r17
          + OS_TICKS_PER_SEC * ((INT32U)ms + 500L / OS_TICKS_PER_SEC) / 1000L;
    loops = (INT16U)(ticks >> 16);               /* Compute the integral number of 65536 tick delays   */
    5cfc:	c6 01       	movw	r24, r12
    5cfe:	aa 27       	eor	r26, r26
    5d00:	bb 27       	eor	r27, r27
    5d02:	ec 01       	movw	r28, r24
    ticks = ticks & 0xFFFFL;                     /* Obtain  the fractional number of ticks             */
    OSTimeDly((INT16U)ticks);
    5d04:	8f ef       	ldi	r24, 0xFF	; 255
    5d06:	9f ef       	ldi	r25, 0xFF	; 255
    5d08:	a0 e0       	ldi	r26, 0x00	; 0
    5d0a:	b0 e0       	ldi	r27, 0x00	; 0
    5d0c:	a8 22       	and	r10, r24
    5d0e:	b9 22       	and	r11, r25
    5d10:	ca 22       	and	r12, r26
    5d12:	db 22       	and	r13, r27
    5d14:	c5 01       	movw	r24, r10
    5d16:	0e 94 fc 2d 	call	0x5bf8	; 0x5bf8 <OSTimeDly>
    5d1a:	09 c0       	rjmp	.+18     	; 0x5d2e <OSTimeDlyHMSM+0xda>
    while (loops > 0) {
        OSTimeDly((INT16U)32768u);
    5d1c:	80 e0       	ldi	r24, 0x00	; 0
    5d1e:	90 e8       	ldi	r25, 0x80	; 128
    5d20:	0e 94 fc 2d 	call	0x5bf8	; 0x5bf8 <OSTimeDly>
        OSTimeDly((INT16U)32768u);
    5d24:	80 e0       	ldi	r24, 0x00	; 0
    5d26:	90 e8       	ldi	r25, 0x80	; 128
    5d28:	0e 94 fc 2d 	call	0x5bf8	; 0x5bf8 <OSTimeDly>
        loops--;
    5d2c:	21 97       	sbiw	r28, 0x01	; 1
    ticks = ((INT32U)hours * 3600L + (INT32U)minutes * 60L + (INT32U)seconds) * OS_TICKS_PER_SEC
          + OS_TICKS_PER_SEC * ((INT32U)ms + 500L / OS_TICKS_PER_SEC) / 1000L;
    loops = (INT16U)(ticks >> 16);               /* Compute the integral number of 65536 tick delays   */
    ticks = ticks & 0xFFFFL;                     /* Obtain  the fractional number of ticks             */
    OSTimeDly((INT16U)ticks);
    while (loops > 0) {
    5d2e:	20 97       	sbiw	r28, 0x00	; 0
    5d30:	a9 f7       	brne	.-22     	; 0x5d1c <OSTimeDlyHMSM+0xc8>
    5d32:	80 e0       	ldi	r24, 0x00	; 0
        OSTimeDly((INT16U)32768u);
        OSTimeDly((INT16U)32768u);
        loops--;
    }
    return (OS_ERR_NONE);
}
    5d34:	df 91       	pop	r29
    5d36:	cf 91       	pop	r28
    5d38:	1f 91       	pop	r17
    5d3a:	0f 91       	pop	r16
    5d3c:	ff 90       	pop	r15
    5d3e:	ef 90       	pop	r14
    5d40:	df 90       	pop	r13
    5d42:	cf 90       	pop	r12
    5d44:	bf 90       	pop	r11
    5d46:	af 90       	pop	r10
    5d48:	9f 90       	pop	r9
    5d4a:	8f 90       	pop	r8
    5d4c:	08 95       	ret

00005d4e <OSInitHookBegin>:
void  OSInitHookBegin (void)
{
#if OS_VERSION >= 281 && OS_TMR_EN > 0
	OSTmrCtr = 0;
#endif
}
    5d4e:	08 95       	ret

00005d50 <OSInitHookEnd>:
*********************************************************************************************************
*/
#if OS_CPU_HOOKS_EN > 0 && OS_VERSION > 203
void  OSInitHookEnd (void)
{
}
    5d50:	08 95       	ret

00005d52 <OSTaskStkInit>:
    void (*fn)(void *);
    INT32U int32;
} function_ptr_t;

OS_STK  *OSTaskStkInit (void (*task)(void *pd), void *p_arg, OS_STK *ptos, INT16U opt)
{
    5d52:	fa 01       	movw	r30, r20

    (void)opt;                              /* 'opt' is not used, prevent warning                       */
    stack     = (INT8U *)ptos;
    tmp = (INT16U)task;

    *stack--  = (INT8U)(tmp & 0xFF);            // PCL
    5d54:	80 83       	st	Z, r24
    *stack--  = (INT8U)((tmp >> 8) & 0xFF);     // PCM
    5d56:	92 93       	st	-Z, r25
    *stack--  = (INT8U)0;                       // PCH 
    5d58:	12 92       	st	-Z, r1

    *stack--  = (INT8U)0x00;            // R0    = 0x00
    5d5a:	12 92       	st	-Z, r1
    *stack--  = (INT8U)0x16;            // R16   = 0x16
    5d5c:	86 e1       	ldi	r24, 0x16	; 22
    5d5e:	82 93       	st	-Z, r24
    *stack--  = (INT8U)0x28;            // R28   = 0x28
    5d60:	88 e2       	ldi	r24, 0x28	; 40
    5d62:	82 93       	st	-Z, r24
    *stack--  = (INT8U)0x29;            // R29   = 0x29
    5d64:	89 e2       	ldi	r24, 0x29	; 41
    5d66:	82 93       	st	-Z, r24
    *stack--  = (INT8U)0x80;            // SREG  = Interrupts enabled
    5d68:	80 e8       	ldi	r24, 0x80	; 128
    5d6a:	82 93       	st	-Z, r24
	*stack--  = (INT8U)0x00;            // R1    = 0x00 (required by compiler)
    5d6c:	12 92       	st	-Z, r1
    *stack--  = (INT8U)0x02;            // R2    = 0x02
    5d6e:	82 e0       	ldi	r24, 0x02	; 2
    5d70:	82 93       	st	-Z, r24
    *stack--  = (INT8U)0x03;            // R3    = 0x03
    5d72:	83 e0       	ldi	r24, 0x03	; 3
    5d74:	82 93       	st	-Z, r24
    *stack--  = (INT8U)0x04;            // R4    = 0x04
    5d76:	84 e0       	ldi	r24, 0x04	; 4
    5d78:	82 93       	st	-Z, r24
    *stack--  = (INT8U)0x05;            // R5    = 0x05
    5d7a:	85 e0       	ldi	r24, 0x05	; 5
    5d7c:	82 93       	st	-Z, r24
    *stack--  = (INT8U)0x06;            // R6    = 0x06
    5d7e:	86 e0       	ldi	r24, 0x06	; 6
    5d80:	82 93       	st	-Z, r24
    *stack--  = (INT8U)0x07;            // R7    = 0x07
    5d82:	87 e0       	ldi	r24, 0x07	; 7
    5d84:	82 93       	st	-Z, r24
    *stack--  = (INT8U)0x08;            // R8    = 0x08
    5d86:	88 e0       	ldi	r24, 0x08	; 8
    5d88:	82 93       	st	-Z, r24
    *stack--  = (INT8U)0x09;            // R9    = 0x09
    5d8a:	89 e0       	ldi	r24, 0x09	; 9
    5d8c:	82 93       	st	-Z, r24
    *stack--  = (INT8U)0x10;            // R10   = 0x10
    5d8e:	80 e1       	ldi	r24, 0x10	; 16
    5d90:	82 93       	st	-Z, r24
    *stack--  = (INT8U)0x11;            // R11   = 0x11
    5d92:	81 e1       	ldi	r24, 0x11	; 17
    5d94:	82 93       	st	-Z, r24
    *stack--  = (INT8U)0x12;            // R12   = 0x12
    5d96:	82 e1       	ldi	r24, 0x12	; 18
    5d98:	82 93       	st	-Z, r24
    *stack--  = (INT8U)0x13;            // R13   = 0x13
    5d9a:	83 e1       	ldi	r24, 0x13	; 19
    5d9c:	82 93       	st	-Z, r24
    *stack--  = (INT8U)0x14;            // R14   = 0x14
    5d9e:	84 e1       	ldi	r24, 0x14	; 20
    5da0:	82 93       	st	-Z, r24
    *stack--  = (INT8U)0x15;            // R15   = 0x15
    5da2:	85 e1       	ldi	r24, 0x15	; 21
    5da4:	82 93       	st	-Z, r24
	// R16 will be restored later
    *stack--  = (INT8U)0x17;            // R17   = 0x17
    5da6:	87 e1       	ldi	r24, 0x17	; 23
    5da8:	82 93       	st	-Z, r24
    *stack--  = (INT8U)0x18;            // R18   = 0x18
    5daa:	88 e1       	ldi	r24, 0x18	; 24
    5dac:	82 93       	st	-Z, r24
    *stack--  = (INT8U)0x19;            // R19   = 0x19
    5dae:	89 e1       	ldi	r24, 0x19	; 25
    5db0:	82 93       	st	-Z, r24
    *stack--  = (INT8U)0x20;            // R20   = 0x20
    5db2:	80 e2       	ldi	r24, 0x20	; 32
    5db4:	82 93       	st	-Z, r24
    *stack--  = (INT8U)0x21;            // R21   = 0x21
    5db6:	81 e2       	ldi	r24, 0x21	; 33
    5db8:	82 93       	st	-Z, r24
    *stack--  = (INT8U)0x22;            // R22   = 0x22                                             */
    5dba:	82 e2       	ldi	r24, 0x22	; 34
    5dbc:	82 93       	st	-Z, r24
    *stack--  = (INT8U)0x23;            // R23   = 0x23
    5dbe:	83 e2       	ldi	r24, 0x23	; 35
    5dc0:	82 93       	st	-Z, r24
    tmp       = (INT16U)p_arg;
    *stack--  = (INT8U)tmp;             /* 'p_arg' passed in R25:R24                                */
    5dc2:	62 93       	st	-Z, r22
    *stack--  = (INT8U)(tmp >> 8);
    5dc4:	72 93       	st	-Z, r23
    *stack--  = (INT8U)0x26;            // R26   = 0x26
    5dc6:	86 e2       	ldi	r24, 0x26	; 38
    5dc8:	82 93       	st	-Z, r24
    *stack--  = (INT8U)0x27;            // R27   = 0x27
    5dca:	87 e2       	ldi	r24, 0x27	; 39
    5dcc:	82 93       	st	-Z, r24
	// R28 will be restored later
	// R29 will be restored later
    *stack--  = (INT8U)0x30;            // R30   = 0x30
    5dce:	80 e3       	ldi	r24, 0x30	; 48
    5dd0:	82 93       	st	-Z, r24
    *stack--  = (INT8U)0x31;            // R31   = 0x31
    5dd2:	81 e3       	ldi	r24, 0x31	; 49
    5dd4:	82 93       	st	-Z, r24
    *stack--  = (INT8U)0x00;            // RAMPZ = 0x00
    5dd6:	12 92       	st	-Z, r1
    *stack--  = (INT8U)0x00;            // EIND  = 0x00
    5dd8:	12 92       	st	-Z, r1
    5dda:	31 97       	sbiw	r30, 0x01	; 1
    return ((OS_STK *)stack);
}
    5ddc:	cf 01       	movw	r24, r30
    5dde:	08 95       	ret

00005de0 <OSTimeTickHook>:
*/
#if (OS_CPU_HOOKS_EN > 0) && (OS_TIME_TICK_HOOK_EN > 0)
void  OSTimeTickHook (void)
{
#if OS_APP_HOOKS_EN > 0
    App_TimeTickHook();
    5de0:	0e 94 b1 33 	call	0x6762	; 0x6762 <App_TimeTickHook>
    if (OSTmrCtr >= (OS_TICKS_PER_SEC / OS_TMR_CFG_TICKS_PER_SEC)) {
        OSTmrCtr = 0;
        OSTmrSignal();
    }
#endif
}
    5de4:	08 95       	ret

00005de6 <OSTCBInitHook>:
*/
#if OS_CPU_HOOKS_EN > 0 && OS_VERSION > 203
void  OSTCBInitHook (OS_TCB *ptcb)
{
#if OS_APP_HOOKS_EN > 0
    App_TCBInitHook(ptcb);
    5de6:	0e 94 b0 33 	call	0x6760	; 0x6760 <App_TCBInitHook>
#else
    (void)ptcb;                                                         /* Prevent compiler warning                                 */
#endif
}
    5dea:	08 95       	ret

00005dec <OSTaskSwHook>:
*/
#if (OS_CPU_HOOKS_EN > 0) && (OS_TASK_SW_HOOK_EN > 0)
void  OSTaskSwHook (void)
{
#if OS_APP_HOOKS_EN > 0
    App_TaskSwHook();
    5dec:	0e 94 c3 33 	call	0x6786	; 0x6786 <App_TaskSwHook>
#endif
}
    5df0:	08 95       	ret

00005df2 <OSTaskStatHook>:

#if OS_CPU_HOOKS_EN > 0
void  OSTaskStatHook (void)
{
#if OS_APP_HOOKS_EN > 0
    App_TaskStatHook();
    5df2:	0e 94 af 33 	call	0x675e	; 0x675e <App_TaskStatHook>
#endif
}
    5df6:	08 95       	ret

00005df8 <OSTaskIdleHook>:
*/
#if OS_CPU_HOOKS_EN > 0 && OS_VERSION >= 251
void  OSTaskIdleHook (void)
{
#if OS_APP_HOOKS_EN > 0
    App_TaskIdleHook();
    5df8:	0e 94 b2 33 	call	0x6764	; 0x6764 <App_TaskIdleHook>
#endif
}
    5dfc:	08 95       	ret

00005dfe <OSTaskDelHook>:
*/
#if OS_CPU_HOOKS_EN > 0
void  OSTaskDelHook (OS_TCB *ptcb)
{
#if OS_APP_HOOKS_EN > 0
    App_TaskDelHook(ptcb);
    5dfe:	0e 94 ae 33 	call	0x675c	; 0x675c <App_TaskDelHook>
#else
    (void)ptcb;                                                         /* Prevent compiler warning                                 */
#endif
}
    5e02:	08 95       	ret

00005e04 <OSTaskCreateHook>:
*/
#if OS_CPU_HOOKS_EN > 0
void  OSTaskCreateHook (OS_TCB *ptcb)
{
#if OS_APP_HOOKS_EN > 0
    App_TaskCreateHook(ptcb);
    5e04:	0e 94 ad 33 	call	0x675a	; 0x675a <App_TaskCreateHook>
#else
    (void)ptcb;                                                         /* Prevent compiler warning                                 */
#endif
}
    5e08:	08 95       	ret

00005e0a <OSStartHighRdy>:

    .global OSStartHighRdy
    .func   OSStartHighRdy
OSStartHighRdy:
    #if OS_TASK_SW_HOOK_EN == 1
        rcall  OSTaskSwHook                 ; Invoke user defined context switch hook
    5e0a:	f0 df       	rcall	.-32     	; 0x5dec <OSTaskSwHook>
    #endif
    LDS     R16, OSRunning                  ; Indicate that we are multitasking
    5e0c:	00 91 ba 10 	lds	r16, 0x10BA
    INC     R16 
    5e10:	03 95       	inc	r16
    STS     OSRunning, R16
    5e12:	00 93 ba 10 	sts	0x10BA, r16

    LDS     R30, OSTCBHighRdy               ; Let Z point to TCB of highest priority task
    5e16:	e0 91 d0 11 	lds	r30, 0x11D0
    LDS     R31, OSTCBHighRdy+1             ; ready to run
    5e1a:	f0 91 d1 11 	lds	r31, 0x11D1
                                            ; clear interrupts to prevent a scrambled stack pointer
    LD      R16,Z+                          ; Load Stack pointer
    5e1e:	01 91       	ld	r16, Z+
    OUT     _SFR_IO_ADDR(SPL), R16              
    5e20:	0d bf       	out	0x3d, r16	; 61
    LD      R16,Z+
    5e22:	01 91       	ld	r16, Z+
    OUT     _SFR_IO_ADDR(SPH), R16              
    5e24:	0e bf       	out	0x3e, r16	; 62

    POP_REST
    5e26:	0f 91       	pop	r16
    5e28:	0c bf       	out	0x3c, r16	; 60
    5e2a:	0f 91       	pop	r16
    5e2c:	0b bf       	out	0x3b, r16	; 59
    5e2e:	ff 91       	pop	r31
    5e30:	ef 91       	pop	r30
    5e32:	bf 91       	pop	r27
    5e34:	af 91       	pop	r26
    5e36:	9f 91       	pop	r25
    5e38:	8f 91       	pop	r24
    5e3a:	7f 91       	pop	r23
    5e3c:	6f 91       	pop	r22
    5e3e:	5f 91       	pop	r21
    5e40:	4f 91       	pop	r20
    5e42:	3f 91       	pop	r19
    5e44:	2f 91       	pop	r18
    5e46:	1f 91       	pop	r17
    5e48:	ff 90       	pop	r15
    5e4a:	ef 90       	pop	r14
    5e4c:	df 90       	pop	r13
    5e4e:	cf 90       	pop	r12
    5e50:	bf 90       	pop	r11
    5e52:	af 90       	pop	r10
    5e54:	9f 90       	pop	r9
    5e56:	8f 90       	pop	r8
    5e58:	7f 90       	pop	r7
    5e5a:	6f 90       	pop	r6
    5e5c:	5f 90       	pop	r5
    5e5e:	4f 90       	pop	r4
    5e60:	3f 90       	pop	r3
    5e62:	2f 90       	pop	r2
    5e64:	1f 90       	pop	r1
    POP_SREG_NOINT
    5e66:	0f 91       	pop	r16
    5e68:	0f 77       	andi	r16, 0x7F	; 127
    5e6a:	0f bf       	out	0x3f, r16	; 63
    POP_MIN_NO_SR
    5e6c:	df 91       	pop	r29
    5e6e:	cf 91       	pop	r28
    5e70:	0f 91       	pop	r16
    5e72:	0f 90       	pop	r0
    reti
    5e74:	18 95       	reti

00005e76 <OSCtxSw>:
;
;********************************************************************************************************/
    .global OSCtxSw
    .func   OSCtxSw
OSCtxSw:
    PUSH_ALL
    5e76:	0f 92       	push	r0
    5e78:	0f 93       	push	r16
    5e7a:	cf 93       	push	r28
    5e7c:	df 93       	push	r29
    5e7e:	0f b7       	in	r16, 0x3f	; 63
    5e80:	0f 93       	push	r16
    5e82:	1f 92       	push	r1
    5e84:	2f 92       	push	r2
    5e86:	3f 92       	push	r3
    5e88:	4f 92       	push	r4
    5e8a:	5f 92       	push	r5
    5e8c:	6f 92       	push	r6
    5e8e:	7f 92       	push	r7
    5e90:	8f 92       	push	r8
    5e92:	9f 92       	push	r9
    5e94:	af 92       	push	r10
    5e96:	bf 92       	push	r11
    5e98:	cf 92       	push	r12
    5e9a:	df 92       	push	r13
    5e9c:	ef 92       	push	r14
    5e9e:	ff 92       	push	r15
    5ea0:	1f 93       	push	r17
    5ea2:	2f 93       	push	r18
    5ea4:	3f 93       	push	r19
    5ea6:	4f 93       	push	r20
    5ea8:	5f 93       	push	r21
    5eaa:	6f 93       	push	r22
    5eac:	7f 93       	push	r23
    5eae:	8f 93       	push	r24
    5eb0:	9f 93       	push	r25
    5eb2:	af 93       	push	r26
    5eb4:	bf 93       	push	r27
    5eb6:	ef 93       	push	r30
    5eb8:	ff 93       	push	r31
    5eba:	0b b7       	in	r16, 0x3b	; 59
    5ebc:	0f 93       	push	r16
    5ebe:	0c b7       	in	r16, 0x3c	; 60
    5ec0:	0f 93       	push	r16
    5ec2:	11 24       	eor	r1, r1
    LDS     r30,OSTCBCur                ; Z = OSTCBCur->OSTCBStkPtr
    5ec4:	e0 91 de 11 	lds	r30, 0x11DE
    LDS     r31,OSTCBCur+1            
    5ec8:	f0 91 df 11 	lds	r31, 0x11DF
; interrupts are disabled!
    IN      r16, _SFR_IO_ADDR(SPL)
    5ecc:	0d b7       	in	r16, 0x3d	; 61
    ST      Z+,R16                      ; Save Stack pointer
    5ece:	01 93       	st	Z+, r16
    IN      r16, _SFR_IO_ADDR(SPH)
    5ed0:	0e b7       	in	r16, 0x3e	; 62
    ST      Z+,R16                      ;
    5ed2:	01 93       	st	Z+, r16

    #if OS_TASK_SW_HOOK_EN == 1
        CALL    OSTaskSwHook            ; Call user defined task switch hook
    5ed4:	0e 94 f6 2e 	call	0x5dec	; 0x5dec <OSTaskSwHook>
    #endif

    LDS     R16,OSPrioHighRdy           ; OSPrioCur = OSPrioHighRdy
    5ed8:	00 91 bf 10 	lds	r16, 0x10BF
    STS     OSPrioCur,R16
    5edc:	00 93 c0 10 	sts	0x10C0, r16

    LDS     R30,OSTCBHighRdy            ; Let Z point to TCB of highest priority task
    5ee0:	e0 91 d0 11 	lds	r30, 0x11D0
    LDS     R31,OSTCBHighRdy+1          ; ready to run
    5ee4:	f0 91 d1 11 	lds	r31, 0x11D1
    STS     OSTCBCur,R30                ; OSTCBCur = OSTCBHighRdy
    5ee8:	e0 93 de 11 	sts	0x11DE, r30
    STS     OSTCBCur+1,R31              ;
    5eec:	f0 93 df 11 	sts	0x11DF, r31

    LD      R16,Z+                      ; Restore stack pointer
    5ef0:	01 91       	ld	r16, Z+
    OUT     _SFR_IO_ADDR(SPL), R16
    5ef2:	0d bf       	out	0x3d, r16	; 61
    LD      R16,Z+                      ; Interrupts are ALWAYS disabled so this is OK
    5ef4:	01 91       	ld	r16, Z+
    OUT     _SFR_IO_ADDR(SPH), R16
    5ef6:	0e bf       	out	0x3e, r16	; 62

    POP_REST
    5ef8:	0f 91       	pop	r16
    5efa:	0c bf       	out	0x3c, r16	; 60
    5efc:	0f 91       	pop	r16
    5efe:	0b bf       	out	0x3b, r16	; 59
    5f00:	ff 91       	pop	r31
    5f02:	ef 91       	pop	r30
    5f04:	bf 91       	pop	r27
    5f06:	af 91       	pop	r26
    5f08:	9f 91       	pop	r25
    5f0a:	8f 91       	pop	r24
    5f0c:	7f 91       	pop	r23
    5f0e:	6f 91       	pop	r22
    5f10:	5f 91       	pop	r21
    5f12:	4f 91       	pop	r20
    5f14:	3f 91       	pop	r19
    5f16:	2f 91       	pop	r18
    5f18:	1f 91       	pop	r17
    5f1a:	ff 90       	pop	r15
    5f1c:	ef 90       	pop	r14
    5f1e:	df 90       	pop	r13
    5f20:	cf 90       	pop	r12
    5f22:	bf 90       	pop	r11
    5f24:	af 90       	pop	r10
    5f26:	9f 90       	pop	r9
    5f28:	8f 90       	pop	r8
    5f2a:	7f 90       	pop	r7
    5f2c:	6f 90       	pop	r6
    5f2e:	5f 90       	pop	r5
    5f30:	4f 90       	pop	r4
    5f32:	3f 90       	pop	r3
    5f34:	2f 90       	pop	r2
    5f36:	1f 90       	pop	r1
    ; Restore the status register
    POP     R16                         ; Restore status register
    5f38:	0f 91       	pop	r16
    SBRC    R16,7                       ; Skip next instruction in interrupts DISABLED
    5f3a:	07 fd       	sbrc	r16, 7
    RJMP    OSCtxSw_1
    5f3c:	06 c0       	rjmp	.+12     	; 0x5f4a <OSCtxSw_1>

    OUT     _SFR_IO_ADDR(SREG),R16      ; Interrupts of task to return to are DISABLED
    5f3e:	0f bf       	out	0x3f, r16	; 63
    POP_MIN_NO_SR
    5f40:	df 91       	pop	r29
    5f42:	cf 91       	pop	r28
    5f44:	0f 91       	pop	r16
    5f46:	0f 90       	pop	r0
    RET
    5f48:	08 95       	ret

00005f4a <OSCtxSw_1>:

OSCtxSw_1:
    CBR     R16, 0x80                   ; Interrupts of task to return to are ENABLED
    5f4a:	0f 77       	andi	r16, 0x7F	; 127
    OUT     _SFR_IO_ADDR(SREG),R16
    5f4c:	0f bf       	out	0x3f, r16	; 63
    POP_MIN_NO_SR                       ; Restore the rest of the registers
    5f4e:	df 91       	pop	r29
    5f50:	cf 91       	pop	r28
    5f52:	0f 91       	pop	r16
    5f54:	0f 90       	pop	r0
    reti                                ; interrupts are enabled
    5f56:	18 95       	reti

00005f58 <OSIntCtxSw>:
    .global OSIntCtxSw
    .func   OSIntCtxSw
OSIntCtxSw:

    #if OS_TASK_SW_HOOK_EN == 1
        CALL    OSTaskSwHook            ; Call user defined task switch hook
    5f58:	0e 94 f6 2e 	call	0x5dec	; 0x5dec <OSTaskSwHook>
    #endif

    LDS     R16,OSPrioHighRdy           ; OSPrioCur = OSPrioHighRdy
    5f5c:	00 91 bf 10 	lds	r16, 0x10BF
    STS     OSPrioCur,R16
    5f60:	00 93 c0 10 	sts	0x10C0, r16

    LDS     R30,OSTCBHighRdy            ; Let Z point to TCB of highest priority task
    5f64:	e0 91 d0 11 	lds	r30, 0x11D0
    LDS     R31,OSTCBHighRdy+1          ; ready to run
    5f68:	f0 91 d1 11 	lds	r31, 0x11D1
    STS     OSTCBCur,R30                ; OSTCBCur = OSTCBHighRdy
    5f6c:	e0 93 de 11 	sts	0x11DE, r30
    STS     OSTCBCur+1,R31              ;
    5f70:	f0 93 df 11 	sts	0x11DF, r31

    LD      R16,Z+                      ; Restore stack pointer
    5f74:	01 91       	ld	r16, Z+
    OUT     _SFR_IO_ADDR(SPL), R16
    5f76:	0d bf       	out	0x3d, r16	; 61
    LD      R16,Z+                      ; Interrupts are ALWAYS disabled so this is OK
    5f78:	01 91       	ld	r16, Z+
    OUT     _SFR_IO_ADDR(SPH), R16
    5f7a:	0e bf       	out	0x3e, r16	; 62

    POP_REST
    5f7c:	0f 91       	pop	r16
    5f7e:	0c bf       	out	0x3c, r16	; 60
    5f80:	0f 91       	pop	r16
    5f82:	0b bf       	out	0x3b, r16	; 59
    5f84:	ff 91       	pop	r31
    5f86:	ef 91       	pop	r30
    5f88:	bf 91       	pop	r27
    5f8a:	af 91       	pop	r26
    5f8c:	9f 91       	pop	r25
    5f8e:	8f 91       	pop	r24
    5f90:	7f 91       	pop	r23
    5f92:	6f 91       	pop	r22
    5f94:	5f 91       	pop	r21
    5f96:	4f 91       	pop	r20
    5f98:	3f 91       	pop	r19
    5f9a:	2f 91       	pop	r18
    5f9c:	1f 91       	pop	r17
    5f9e:	ff 90       	pop	r15
    5fa0:	ef 90       	pop	r14
    5fa2:	df 90       	pop	r13
    5fa4:	cf 90       	pop	r12
    5fa6:	bf 90       	pop	r11
    5fa8:	af 90       	pop	r10
    5faa:	9f 90       	pop	r9
    5fac:	8f 90       	pop	r8
    5fae:	7f 90       	pop	r7
    5fb0:	6f 90       	pop	r6
    5fb2:	5f 90       	pop	r5
    5fb4:	4f 90       	pop	r4
    5fb6:	3f 90       	pop	r3
    5fb8:	2f 90       	pop	r2
    5fba:	1f 90       	pop	r1
    ; Restore the status register
    POP     R16                         ; Restore status register
    5fbc:	0f 91       	pop	r16
    SBRC    R16,7                       ; Skip next instruction in interrupts DISABLED
    5fbe:	07 fd       	sbrc	r16, 7
    RJMP    OSCtxSw_1
    5fc0:	c4 cf       	rjmp	.-120    	; 0x5f4a <OSCtxSw_1>

    OUT     _SFR_IO_ADDR(SREG),R16      ; Interrupts of task to return to are DISABLED
    5fc2:	0f bf       	out	0x3f, r16	; 63
    POP_MIN_NO_SR
    5fc4:	df 91       	pop	r29
    5fc6:	cf 91       	pop	r28
    5fc8:	0f 91       	pop	r16
    5fca:	0f 90       	pop	r0
    RET
    5fcc:	08 95       	ret

00005fce <OSIntCtxSw_1>:

OSIntCtxSw_1:
    CBR     R16, 0x80                   ; Interrupts of task to return to are ENABLED
    5fce:	0f 77       	andi	r16, 0x7F	; 127
    OUT     _SFR_IO_ADDR(SREG),R16
    5fd0:	0f bf       	out	0x3f, r16	; 63
    POP_MIN_NO_SR                       ; Restore the rest of the registers
    5fd2:	df 91       	pop	r29
    5fd4:	cf 91       	pop	r28
    5fd6:	0f 91       	pop	r16
    5fd8:	0f 90       	pop	r0
    reti                                ; interrupts are enabled
    5fda:	18 95       	reti

00005fdc <OSuartUpdatePort>:
 *
 * Notes:			
 *******************************************************************************
 */
uint8_t OSuartUpdatePort(uint8_t uart_id, uint32_t baud_rate, uint8_t databits, uint8_t stopbits, uint8_t parity)
{
    5fdc:	af 92       	push	r10
    5fde:	bf 92       	push	r11
    5fe0:	cf 92       	push	r12
    5fe2:	df 92       	push	r13
    5fe4:	ef 92       	push	r14
    5fe6:	0f 93       	push	r16
    5fe8:	1f 93       	push	r17
    5fea:	cf 93       	push	r28
    5fec:	df 93       	push	r29
    5fee:	5a 01       	movw	r10, r20
    5ff0:	6b 01       	movw	r12, r22
    5ff2:	12 2f       	mov	r17, r18
	if (uart_id >= UART_NUM_PORTS)
    5ff4:	84 30       	cpi	r24, 0x04	; 4
    5ff6:	10 f0       	brcs	.+4      	; 0x5ffc <OSuartUpdatePort+0x20>
    5ff8:	87 e9       	ldi	r24, 0x97	; 151
    5ffa:	38 c0       	rjmp	.+112    	; 0x606c <OSuartUpdatePort+0x90>
		return OS_ERR_UART_ID_INVALID;
		
	uart_t* puart = &uart_devctl[uart_id];
    5ffc:	28 2f       	mov	r18, r24
    5ffe:	30 e0       	ldi	r19, 0x00	; 0
	uart_regs_t* pregs = &uart_regs[uart_id];
	uart_peripheral_t* pper = pregs->pper;
    6000:	f9 01       	movw	r30, r18
    6002:	ee 0f       	add	r30, r30
    6004:	ff 1f       	adc	r31, r31
    6006:	e2 0f       	add	r30, r18
    6008:	f3 1f       	adc	r31, r19
    600a:	ee 0f       	add	r30, r30
    600c:	ff 1f       	adc	r31, r31
    600e:	ec 5d       	subi	r30, 0xDC	; 220
    6010:	fc 4f       	sbci	r31, 0xFC	; 252
    6012:	c1 81       	ldd	r28, Z+1	; 0x01
    6014:	d2 81       	ldd	r29, Z+2	; 0x02
	uint16_t brrVal = (uint16_t) UART_BRR(baud_rate);
	
	if (!puart->prxevent)
    6016:	84 e1       	ldi	r24, 0x14	; 20
    6018:	90 e0       	ldi	r25, 0x00	; 0
    601a:	28 9f       	mul	r18, r24
    601c:	f0 01       	movw	r30, r0
    601e:	29 9f       	mul	r18, r25
    6020:	f0 0d       	add	r31, r0
    6022:	38 9f       	mul	r19, r24
    6024:	f0 0d       	add	r31, r0
    6026:	11 24       	eor	r1, r1
    6028:	e3 59       	subi	r30, 0x93	; 147
    602a:	f7 4e       	sbci	r31, 0xE7	; 231
    602c:	86 85       	ldd	r24, Z+14	; 0x0e
    602e:	97 85       	ldd	r25, Z+15	; 0x0f
    6030:	89 2b       	or	r24, r25
    6032:	11 f4       	brne	.+4      	; 0x6038 <OSuartUpdatePort+0x5c>
    6034:	86 e9       	ldi	r24, 0x96	; 150
    6036:	1a c0       	rjmp	.+52     	; 0x606c <OSuartUpdatePort+0x90>
		return OS_ERR_UART_ID_INVALID;
		
	uart_t* puart = &uart_devctl[uart_id];
	uart_regs_t* pregs = &uart_regs[uart_id];
	uart_peripheral_t* pper = pregs->pper;
	uint16_t brrVal = (uint16_t) UART_BRR(baud_rate);
    6038:	08 94       	sec
    603a:	a1 1c       	adc	r10, r1
    603c:	b1 1c       	adc	r11, r1
    603e:	c1 1c       	adc	r12, r1
    6040:	d1 1c       	adc	r13, r1
    6042:	60 e0       	ldi	r22, 0x00	; 0
    6044:	78 e0       	ldi	r23, 0x08	; 8
    6046:	87 e0       	ldi	r24, 0x07	; 7
    6048:	90 e0       	ldi	r25, 0x00	; 0
    604a:	a6 01       	movw	r20, r12
    604c:	95 01       	movw	r18, r10
    604e:	0e 94 24 f4 	call	0x1e848	; 0x1e848 <__udivmodsi4>
	
	if (!puart->prxevent)
		return OS_ERR_UART_NOT_INITIALIZED;

    ATOMIC_BLOCK(ATOMIC_RESTORESTATE)
    6052:	9f b7       	in	r25, 0x3f	; 63
    return 1;
}

static __inline__ uint8_t __iCliRetVal(void)
{
    cli();
    6054:	f8 94       	cli
	{
		pper->ucsrb = 0;			//_BV(RXCIE0) | _BV(RXEN0) | _BV(TXEN0);
    6056:	19 82       	std	Y+1, r1	; 0x01

		pper->ubrrH = (uint8_t) (brrVal >> 8);
    6058:	3d 83       	std	Y+5, r19	; 0x05
		pper->ubrrL = (uint8_t) brrVal;
    605a:	2c 83       	std	Y+4, r18	; 0x04
		pper->ucsra = 0;
    605c:	18 82       	st	Y, r1
		pper->ucsrb = _BV(RXCIE0) | _BV(RXEN0) | _BV(TXEN0);
    605e:	88 e9       	ldi	r24, 0x98	; 152
    6060:	89 83       	std	Y+1, r24	; 0x01
		pper->ucsrc = UART_MODE(UART_MODE_ASYNCH, databits, stopbits, parity);
    6062:	01 2b       	or	r16, r17
    6064:	0e 29       	or	r16, r14
    6066:	0a 83       	std	Y+2, r16	; 0x02
    (void)__s;
}

static __inline__ void __iRestore(const  uint8_t *__s)
{
    SREG = *__s;
    6068:	9f bf       	out	0x3f, r25	; 63
    __asm__ volatile ("" ::: "memory");
    606a:	80 e0       	ldi	r24, 0x00	; 0
	}

	return OS_ERR_NONE;
}
    606c:	df 91       	pop	r29
    606e:	cf 91       	pop	r28
    6070:	1f 91       	pop	r17
    6072:	0f 91       	pop	r16
    6074:	ef 90       	pop	r14
    6076:	df 90       	pop	r13
    6078:	cf 90       	pop	r12
    607a:	bf 90       	pop	r11
    607c:	af 90       	pop	r10
    607e:	08 95       	ret

00006080 <OSuartEnableDriver>:
 *
 * Notes:
 *******************************************************************************
 */
void OSuartEnableDriver(uart_regs_t* pregs, uint8_t state)
{
    6080:	fc 01       	movw	r30, r24
#if 1
	switch(pregs->uart_id)
    6082:	e0 81       	ld	r30, Z
    6084:	e1 30       	cpi	r30, 0x01	; 1
    6086:	01 f1       	breq	.+64     	; 0x60c8 <OSuartEnableDriver+0x48>
    6088:	e1 30       	cpi	r30, 0x01	; 1
    608a:	30 f0       	brcs	.+12     	; 0x6098 <OSuartEnableDriver+0x18>
    608c:	e2 30       	cpi	r30, 0x02	; 2
    608e:	b9 f1       	breq	.+110    	; 0x60fe <OSuartEnableDriver+0x7e>
    6090:	e3 30       	cpi	r30, 0x03	; 3
    6092:	09 f0       	breq	.+2      	; 0x6096 <OSuartEnableDriver+0x16>
    6094:	64 c0       	rjmp	.+200    	; 0x615e <OSuartEnableDriver+0xde>
    6096:	4b c0       	rjmp	.+150    	; 0x612e <OSuartEnableDriver+0xae>
	{
		case 0:		UART_CONFIG_PORT_0(state);	break;
    6098:	66 23       	and	r22, r22
    609a:	21 f4       	brne	.+8      	; 0x60a4 <OSuartEnableDriver+0x24>
    609c:	80 91 64 00 	lds	r24, 0x0064
    60a0:	82 60       	ori	r24, 0x02	; 2
    60a2:	03 c0       	rjmp	.+6      	; 0x60aa <OSuartEnableDriver+0x2a>
    60a4:	80 91 64 00 	lds	r24, 0x0064
    60a8:	8d 7f       	andi	r24, 0xFD	; 253
    60aa:	80 93 64 00 	sts	0x0064, r24
    60ae:	8d b1       	in	r24, 0x0d	; 13
    60b0:	84 7f       	andi	r24, 0xF4	; 244
    60b2:	8a 60       	ori	r24, 0x0A	; 10
    60b4:	8d b9       	out	0x0d, r24	; 13
    60b6:	66 23       	and	r22, r22
    60b8:	19 f0       	breq	.+6      	; 0x60c0 <OSuartEnableDriver+0x40>
    60ba:	8e b1       	in	r24, 0x0e	; 14
    60bc:	88 60       	ori	r24, 0x08	; 8
    60be:	02 c0       	rjmp	.+4      	; 0x60c4 <OSuartEnableDriver+0x44>
    60c0:	8e b1       	in	r24, 0x0e	; 14
    60c2:	87 7f       	andi	r24, 0xF7	; 247
    60c4:	8e b9       	out	0x0e, r24	; 14
    60c6:	08 95       	ret
		case 1:		UART_CONFIG_PORT_1(state);	break;
    60c8:	66 23       	and	r22, r22
    60ca:	21 f4       	brne	.+8      	; 0x60d4 <OSuartEnableDriver+0x54>
    60cc:	80 91 65 00 	lds	r24, 0x0065
    60d0:	81 60       	ori	r24, 0x01	; 1
    60d2:	03 c0       	rjmp	.+6      	; 0x60da <OSuartEnableDriver+0x5a>
    60d4:	80 91 65 00 	lds	r24, 0x0065
    60d8:	8e 7f       	andi	r24, 0xFE	; 254
    60da:	80 93 65 00 	sts	0x0065, r24
    60de:	8a b1       	in	r24, 0x0a	; 10
    60e0:	83 7f       	andi	r24, 0xF3	; 243
    60e2:	88 60       	ori	r24, 0x08	; 8
    60e4:	8a b9       	out	0x0a, r24	; 10
    60e6:	80 91 07 01 	lds	r24, 0x0107
    60ea:	83 60       	ori	r24, 0x03	; 3
    60ec:	80 93 07 01 	sts	0x0107, r24
    60f0:	80 91 08 01 	lds	r24, 0x0108
    60f4:	8c 7f       	andi	r24, 0xFC	; 252
    60f6:	82 60       	ori	r24, 0x02	; 2
    60f8:	80 93 08 01 	sts	0x0108, r24
    60fc:	08 95       	ret
		case 2:		UART_CONFIG_PORT_2(state);	break;
    60fe:	66 23       	and	r22, r22
    6100:	21 f4       	brne	.+8      	; 0x610a <OSuartEnableDriver+0x8a>
    6102:	80 91 65 00 	lds	r24, 0x0065
    6106:	82 60       	ori	r24, 0x02	; 2
    6108:	03 c0       	rjmp	.+6      	; 0x6110 <OSuartEnableDriver+0x90>
    610a:	80 91 65 00 	lds	r24, 0x0065
    610e:	8d 7f       	andi	r24, 0xFD	; 253
    6110:	80 93 65 00 	sts	0x0065, r24
    6114:	80 91 01 01 	lds	r24, 0x0101
    6118:	8c 7c       	andi	r24, 0xCC	; 204
    611a:	82 63       	ori	r24, 0x32	; 50
    611c:	80 93 01 01 	sts	0x0101, r24
    6120:	80 91 02 01 	lds	r24, 0x0102
    6124:	8f 7c       	andi	r24, 0xCF	; 207
    6126:	80 62       	ori	r24, 0x20	; 32
    6128:	80 93 02 01 	sts	0x0102, r24
    612c:	08 95       	ret
		case 3:		UART_CONFIG_PORT_3(state);	break;
    612e:	66 23       	and	r22, r22
    6130:	21 f4       	brne	.+8      	; 0x613a <OSuartEnableDriver+0xba>
    6132:	80 91 65 00 	lds	r24, 0x0065
    6136:	84 60       	ori	r24, 0x04	; 4
    6138:	03 c0       	rjmp	.+6      	; 0x6140 <OSuartEnableDriver+0xc0>
    613a:	80 91 65 00 	lds	r24, 0x0065
    613e:	8b 7f       	andi	r24, 0xFB	; 251
    6140:	80 93 65 00 	sts	0x0065, r24
    6144:	80 91 04 01 	lds	r24, 0x0104
    6148:	8c 7f       	andi	r24, 0xFC	; 252
    614a:	82 60       	ori	r24, 0x02	; 2
    614c:	80 93 04 01 	sts	0x0104, r24
    6150:	80 b3       	in	r24, 0x10	; 16
    6152:	83 60       	ori	r24, 0x03	; 3
    6154:	80 bb       	out	0x10, r24	; 16
    6156:	81 b3       	in	r24, 0x11	; 17
    6158:	8c 7f       	andi	r24, 0xFC	; 252
    615a:	82 60       	ori	r24, 0x02	; 2
    615c:	81 bb       	out	0x11, r24	; 17
    615e:	08 95       	ret

00006160 <OSuartClearDevctl>:
 *
 * Notes:
 *******************************************************************************
 */
void OSuartClearDevctl(uart_t* puart)
{
    6160:	fc 01       	movw	r30, r24
	puart->frame_errors = 0;
    6162:	11 82       	std	Z+1, r1	; 0x01
    6164:	10 82       	st	Z, r1
	puart->uart_overrun_errors = 0;
    6166:	13 82       	std	Z+3, r1	; 0x03
    6168:	12 82       	std	Z+2, r1	; 0x02
	puart->fifo_overrun_errors = 0;
    616a:	15 82       	std	Z+5, r1	; 0x05
    616c:	14 82       	std	Z+4, r1	; 0x04
	puart->rxinptr = 0;
    616e:	16 82       	std	Z+6, r1	; 0x06
	puart->rxoutptr = 0;
    6170:	17 82       	std	Z+7, r1	; 0x07
	puart->txinptr = 0;
    6172:	10 86       	std	Z+8, r1	; 0x08
	puart->txoutptr = 0;
    6174:	11 86       	std	Z+9, r1	; 0x09
	puart->rxcnt = 0;
    6176:	13 86       	std	Z+11, r1	; 0x0b
    6178:	12 86       	std	Z+10, r1	; 0x0a
	puart->uart_base = (uint8_t*) 0;
    617a:	15 86       	std	Z+13, r1	; 0x0d
    617c:	14 86       	std	Z+12, r1	; 0x0c
	puart->prxevent = (OS_EVENT*) 0;
    617e:	17 86       	std	Z+15, r1	; 0x0f
    6180:	16 86       	std	Z+14, r1	; 0x0e
	puart->stale_EMPTY = 1;
    6182:	80 89       	ldd	r24, Z+16	; 0x10
    6184:	81 60       	ori	r24, 0x01	; 1
    6186:	80 8b       	std	Z+16, r24	; 0x10
	puart->stale_STALE = 0;
    6188:	80 89       	ldd	r24, Z+16	; 0x10
    618a:	8d 7f       	andi	r24, 0xFD	; 253
    618c:	80 8b       	std	Z+16, r24	; 0x10
	puart->ptxevent = (OS_EVENT*) 0;
    618e:	12 8a       	std	Z+18, r1	; 0x12
    6190:	11 8a       	std	Z+17, r1	; 0x11
	puart->txcnt = 0;
    6192:	13 8a       	std	Z+19, r1	; 0x13
}
    6194:	08 95       	ret

00006196 <OSuartDefaultState>:
 *
 * Notes:
 *******************************************************************************
 */
void OSuartDefaultState()
{
    6196:	0f 93       	push	r16
    6198:	1f 93       	push	r17
    619a:	cf 93       	push	r28
    619c:	df 93       	push	r29
    619e:	0d e6       	ldi	r16, 0x6D	; 109
    61a0:	18 e1       	ldi	r17, 0x18	; 24
    61a2:	c4 e2       	ldi	r28, 0x24	; 36
    61a4:	d3 e0       	ldi	r29, 0x03	; 3
	uint8_t portnum = 0;
	uart_regs_t* pregs = uart_regs;

	for ( ; portnum < UART_NUM_PORTS; ++portnum, ++pregs)
	{
		pregs->pper->ucsrb = 0;							// turns off all interrupts
    61a6:	e9 81       	ldd	r30, Y+1	; 0x01
    61a8:	fa 81       	ldd	r31, Y+2	; 0x02
    61aa:	11 82       	std	Z+1, r1	; 0x01
		OSuartEnableDriver(pregs, OS_FALSE);			// disable the driver for the port
    61ac:	ce 01       	movw	r24, r28
    61ae:	60 e0       	ldi	r22, 0x00	; 0
    61b0:	0e 94 40 30 	call	0x6080	; 0x6080 <OSuartEnableDriver>
		OSuartClearDevctl(&uart_devctl[portnum]);		// clears the device control block
    61b4:	c8 01       	movw	r24, r16
    61b6:	0e 94 b0 30 	call	0x6160	; 0x6160 <OSuartClearDevctl>
void OSuartDefaultState()
{
	uint8_t portnum = 0;
	uart_regs_t* pregs = uart_regs;

	for ( ; portnum < UART_NUM_PORTS; ++portnum, ++pregs)
    61ba:	26 96       	adiw	r28, 0x06	; 6
    61bc:	0c 5e       	subi	r16, 0xEC	; 236
    61be:	1f 4f       	sbci	r17, 0xFF	; 255
    61c0:	83 e0       	ldi	r24, 0x03	; 3
    61c2:	cc 33       	cpi	r28, 0x3C	; 60
    61c4:	d8 07       	cpc	r29, r24
    61c6:	79 f7       	brne	.-34     	; 0x61a6 <OSuartDefaultState+0x10>
	{
		pregs->pper->ucsrb = 0;							// turns off all interrupts
		OSuartEnableDriver(pregs, OS_FALSE);			// disable the driver for the port
		OSuartClearDevctl(&uart_devctl[portnum]);		// clears the device control block
	}
}
    61c8:	df 91       	pop	r29
    61ca:	cf 91       	pop	r28
    61cc:	1f 91       	pop	r17
    61ce:	0f 91       	pop	r16
    61d0:	08 95       	ret

000061d2 <OSuartGetReadStats>:
 *
 * Notes       :    
 *******************************************************************************
 */
uint8_t OSuartGetReadStats(uint8_t uart_id, uint16_t* pRxCount, uint16_t* pFrameErrors, uint16_t* pUARTOverruns, uint16_t* pFIFOOverruns)
{
    61d2:	0f 93       	push	r16
    61d4:	1f 93       	push	r17
    61d6:	cf 93       	push	r28
    61d8:	df 93       	push	r29
    61da:	98 2f       	mov	r25, r24
    61dc:	db 01       	movw	r26, r22
    61de:	ea 01       	movw	r28, r20
    61e0:	a8 01       	movw	r20, r16
	if (uart_id >= UART_NUM_PORTS)
    61e2:	84 30       	cpi	r24, 0x04	; 4
    61e4:	10 f0       	brcs	.+4      	; 0x61ea <OSuartGetReadStats+0x18>
    61e6:	87 e9       	ldi	r24, 0x97	; 151
    61e8:	2c c0       	rjmp	.+88     	; 0x6242 <OSuartGetReadStats+0x70>
		return OS_ERR_UART_ID_INVALID;

	uart_t* puart = &uart_devctl[uart_id];
    61ea:	84 e1       	ldi	r24, 0x14	; 20
    61ec:	98 9f       	mul	r25, r24
    61ee:	f0 01       	movw	r30, r0
    61f0:	11 24       	eor	r1, r1
    61f2:	e3 59       	subi	r30, 0x93	; 147
    61f4:	f7 4e       	sbci	r31, 0xE7	; 231

	if (!puart->prxevent)
    61f6:	86 85       	ldd	r24, Z+14	; 0x0e
    61f8:	97 85       	ldd	r25, Z+15	; 0x0f
    61fa:	89 2b       	or	r24, r25
    61fc:	11 f4       	brne	.+4      	; 0x6202 <OSuartGetReadStats+0x30>
    61fe:	86 e9       	ldi	r24, 0x96	; 150
    6200:	20 c0       	rjmp	.+64     	; 0x6242 <OSuartGetReadStats+0x70>
		return OS_ERR_UART_NOT_INITIALIZED;

	OS_CPU_SR cpu_sr;
	OS_ENTER_CRITICAL();
    6202:	6f b7       	in	r22, 0x3f	; 63
    6204:	f8 94       	cli

	if (pRxCount)		*pRxCount = puart->rxcnt;
    6206:	10 97       	sbiw	r26, 0x00	; 0
    6208:	21 f0       	breq	.+8      	; 0x6212 <OSuartGetReadStats+0x40>
    620a:	82 85       	ldd	r24, Z+10	; 0x0a
    620c:	93 85       	ldd	r25, Z+11	; 0x0b
    620e:	8d 93       	st	X+, r24
    6210:	9c 93       	st	X, r25
	if (pFrameErrors)	*pFrameErrors = puart->frame_errors;
    6212:	20 97       	sbiw	r28, 0x00	; 0
    6214:	21 f0       	breq	.+8      	; 0x621e <OSuartGetReadStats+0x4c>
    6216:	80 81       	ld	r24, Z
    6218:	91 81       	ldd	r25, Z+1	; 0x01
    621a:	99 83       	std	Y+1, r25	; 0x01
    621c:	88 83       	st	Y, r24
	if (pUARTOverruns)	*pUARTOverruns = puart->uart_overrun_errors;
    621e:	21 15       	cp	r18, r1
    6220:	31 05       	cpc	r19, r1
    6222:	29 f0       	breq	.+10     	; 0x622e <OSuartGetReadStats+0x5c>
    6224:	82 81       	ldd	r24, Z+2	; 0x02
    6226:	93 81       	ldd	r25, Z+3	; 0x03
    6228:	d9 01       	movw	r26, r18
    622a:	8d 93       	st	X+, r24
    622c:	9c 93       	st	X, r25
	if (pFIFOOverruns)	*pFIFOOverruns = puart->fifo_overrun_errors;
    622e:	41 15       	cp	r20, r1
    6230:	51 05       	cpc	r21, r1
    6232:	29 f0       	breq	.+10     	; 0x623e <OSuartGetReadStats+0x6c>
    6234:	84 81       	ldd	r24, Z+4	; 0x04
    6236:	95 81       	ldd	r25, Z+5	; 0x05
    6238:	fa 01       	movw	r30, r20
    623a:	91 83       	std	Z+1, r25	; 0x01
    623c:	80 83       	st	Z, r24

	OS_EXIT_CRITICAL();
    623e:	6f bf       	out	0x3f, r22	; 63
    6240:	80 e0       	ldi	r24, 0x00	; 0
	return OS_ERR_NONE;
}
    6242:	df 91       	pop	r29
    6244:	cf 91       	pop	r28
    6246:	1f 91       	pop	r17
    6248:	0f 91       	pop	r16
    624a:	08 95       	ret

0000624c <OSuartGetWriteStats>:
 *
 * Notes       :    
 *******************************************************************************
 */
uint8_t OSuartGetWriteStats(uint8_t uart_id, uint16_t* pTxCount)
{
    624c:	98 2f       	mov	r25, r24
    624e:	db 01       	movw	r26, r22
	if (uart_id >= UART_NUM_PORTS)
    6250:	84 30       	cpi	r24, 0x04	; 4
    6252:	10 f0       	brcs	.+4      	; 0x6258 <OSuartGetWriteStats+0xc>
    6254:	87 e9       	ldi	r24, 0x97	; 151
    6256:	08 95       	ret
		return OS_ERR_UART_ID_INVALID;

	uart_t* puart = &uart_devctl[uart_id];
    6258:	84 e1       	ldi	r24, 0x14	; 20
    625a:	98 9f       	mul	r25, r24
    625c:	f0 01       	movw	r30, r0
    625e:	11 24       	eor	r1, r1
    6260:	e3 59       	subi	r30, 0x93	; 147
    6262:	f7 4e       	sbci	r31, 0xE7	; 231

	if (!puart->prxevent)
    6264:	86 85       	ldd	r24, Z+14	; 0x0e
    6266:	97 85       	ldd	r25, Z+15	; 0x0f
    6268:	89 2b       	or	r24, r25
    626a:	11 f4       	brne	.+4      	; 0x6270 <OSuartGetWriteStats+0x24>
    626c:	86 e9       	ldi	r24, 0x96	; 150
    626e:	08 95       	ret
		return OS_ERR_UART_NOT_INITIALIZED;

	OS_CPU_SR cpu_sr;
	OS_ENTER_CRITICAL();
    6270:	9f b7       	in	r25, 0x3f	; 63
    6272:	f8 94       	cli

	if (pTxCount)		*pTxCount = puart->txcnt;
    6274:	61 15       	cp	r22, r1
    6276:	71 05       	cpc	r23, r1
    6278:	21 f0       	breq	.+8      	; 0x6282 <OSuartGetWriteStats+0x36>
    627a:	83 89       	ldd	r24, Z+19	; 0x13
    627c:	8c 93       	st	X, r24
    627e:	11 96       	adiw	r26, 0x01	; 1
    6280:	1c 92       	st	X, r1

	OS_EXIT_CRITICAL();
    6282:	9f bf       	out	0x3f, r25	; 63
    6284:	80 e0       	ldi	r24, 0x00	; 0
	return OS_ERR_NONE;
}
    6286:	08 95       	ret

00006288 <OSuartGetBufferOffsets>:
 *
 * Notes       :    
 *******************************************************************************
 */
uint8_t OSuartGetBufferOffsets(uint8_t uart_id, uint8_t* pRxIn, uint8_t* pRxOut, uint8_t* pTxIn, uint8_t* pTxOut)
{
    6288:	0f 93       	push	r16
    628a:	1f 93       	push	r17
    628c:	cf 93       	push	r28
    628e:	df 93       	push	r29
    6290:	98 2f       	mov	r25, r24
    6292:	db 01       	movw	r26, r22
    6294:	ea 01       	movw	r28, r20
    6296:	a8 01       	movw	r20, r16
	if (uart_id >= UART_NUM_PORTS)
    6298:	84 30       	cpi	r24, 0x04	; 4
    629a:	10 f0       	brcs	.+4      	; 0x62a0 <OSuartGetBufferOffsets+0x18>
    629c:	87 e9       	ldi	r24, 0x97	; 151
    629e:	25 c0       	rjmp	.+74     	; 0x62ea <OSuartGetBufferOffsets+0x62>
		return OS_ERR_UART_ID_INVALID;

	uart_t* puart = &uart_devctl[uart_id];
    62a0:	84 e1       	ldi	r24, 0x14	; 20
    62a2:	98 9f       	mul	r25, r24
    62a4:	f0 01       	movw	r30, r0
    62a6:	11 24       	eor	r1, r1
    62a8:	e3 59       	subi	r30, 0x93	; 147
    62aa:	f7 4e       	sbci	r31, 0xE7	; 231

	if (!puart->prxevent)
    62ac:	86 85       	ldd	r24, Z+14	; 0x0e
    62ae:	97 85       	ldd	r25, Z+15	; 0x0f
    62b0:	89 2b       	or	r24, r25
    62b2:	11 f4       	brne	.+4      	; 0x62b8 <OSuartGetBufferOffsets+0x30>
    62b4:	86 e9       	ldi	r24, 0x96	; 150
    62b6:	19 c0       	rjmp	.+50     	; 0x62ea <OSuartGetBufferOffsets+0x62>
		return OS_ERR_UART_NOT_INITIALIZED;

	OS_CPU_SR cpu_sr;
	OS_ENTER_CRITICAL();
    62b8:	9f b7       	in	r25, 0x3f	; 63
    62ba:	f8 94       	cli

	if (pRxIn)			*pRxIn = puart->rxinptr;
    62bc:	61 15       	cp	r22, r1
    62be:	71 05       	cpc	r23, r1
    62c0:	11 f0       	breq	.+4      	; 0x62c6 <OSuartGetBufferOffsets+0x3e>
    62c2:	86 81       	ldd	r24, Z+6	; 0x06
    62c4:	8c 93       	st	X, r24
	if (pRxOut)			*pRxOut = puart->rxoutptr;
    62c6:	20 97       	sbiw	r28, 0x00	; 0
    62c8:	11 f0       	breq	.+4      	; 0x62ce <OSuartGetBufferOffsets+0x46>
    62ca:	87 81       	ldd	r24, Z+7	; 0x07
    62cc:	88 83       	st	Y, r24
	if (pTxIn)			*pTxIn = puart->txinptr;
    62ce:	21 15       	cp	r18, r1
    62d0:	31 05       	cpc	r19, r1
    62d2:	19 f0       	breq	.+6      	; 0x62da <OSuartGetBufferOffsets+0x52>
    62d4:	80 85       	ldd	r24, Z+8	; 0x08
    62d6:	d9 01       	movw	r26, r18
    62d8:	8c 93       	st	X, r24
	if (pTxOut)			*pTxOut = puart->txoutptr;
    62da:	41 15       	cp	r20, r1
    62dc:	51 05       	cpc	r21, r1
    62de:	19 f0       	breq	.+6      	; 0x62e6 <OSuartGetBufferOffsets+0x5e>
    62e0:	81 85       	ldd	r24, Z+9	; 0x09
    62e2:	fa 01       	movw	r30, r20
    62e4:	80 83       	st	Z, r24

	OS_EXIT_CRITICAL();
    62e6:	9f bf       	out	0x3f, r25	; 63
    62e8:	80 e0       	ldi	r24, 0x00	; 0
	return OS_ERR_NONE;
}
    62ea:	df 91       	pop	r29
    62ec:	cf 91       	pop	r28
    62ee:	1f 91       	pop	r17
    62f0:	0f 91       	pop	r16
    62f2:	08 95       	ret

000062f4 <OSuartFlushBuffers>:
 *
 * Notes       :    
 *******************************************************************************
 */
uint8_t OSuartFlushBuffers(uint8_t uart_id, uint8_t flags)
{
    62f4:	98 2f       	mov	r25, r24
	if (uart_id >= UART_NUM_PORTS)
    62f6:	84 30       	cpi	r24, 0x04	; 4
    62f8:	10 f0       	brcs	.+4      	; 0x62fe <OSuartFlushBuffers+0xa>
    62fa:	87 e9       	ldi	r24, 0x97	; 151
    62fc:	08 95       	ret
		return OS_ERR_UART_ID_INVALID;

	uart_t* puart = &uart_devctl[uart_id];
    62fe:	84 e1       	ldi	r24, 0x14	; 20
    6300:	98 9f       	mul	r25, r24
    6302:	f0 01       	movw	r30, r0
    6304:	11 24       	eor	r1, r1
    6306:	e3 59       	subi	r30, 0x93	; 147
    6308:	f7 4e       	sbci	r31, 0xE7	; 231

	if (!puart->prxevent)
    630a:	86 85       	ldd	r24, Z+14	; 0x0e
    630c:	97 85       	ldd	r25, Z+15	; 0x0f
    630e:	89 2b       	or	r24, r25
    6310:	11 f4       	brne	.+4      	; 0x6316 <OSuartFlushBuffers+0x22>
    6312:	86 e9       	ldi	r24, 0x96	; 150
    6314:	08 95       	ret
		return OS_ERR_UART_NOT_INITIALIZED;

	OS_CPU_SR cpu_sr;
	OS_ENTER_CRITICAL();
    6316:	9f b7       	in	r25, 0x3f	; 63
    6318:	f8 94       	cli

	if(flags & UART_RX_BUFFER)
    631a:	60 ff       	sbrs	r22, 0
    631c:	0a c0       	rjmp	.+20     	; 0x6332 <OSuartFlushBuffers+0x3e>
	{
		puart->rxinptr = 0;
    631e:	16 82       	std	Z+6, r1	; 0x06
		puart->rxoutptr = 0;
    6320:	17 82       	std	Z+7, r1	; 0x07
		puart->rxcnt = 0;
    6322:	13 86       	std	Z+11, r1	; 0x0b
    6324:	12 86       	std	Z+10, r1	; 0x0a
		puart->stale_EMPTY = 1;
    6326:	80 89       	ldd	r24, Z+16	; 0x10
    6328:	81 60       	ori	r24, 0x01	; 1
    632a:	80 8b       	std	Z+16, r24	; 0x10
		puart->stale_STALE = 0;
    632c:	80 89       	ldd	r24, Z+16	; 0x10
    632e:	8d 7f       	andi	r24, 0xFD	; 253
    6330:	80 8b       	std	Z+16, r24	; 0x10
	}

	if(flags & UART_TX_BUFFER)
    6332:	61 ff       	sbrs	r22, 1
    6334:	03 c0       	rjmp	.+6      	; 0x633c <OSuartFlushBuffers+0x48>
	{
		puart->txinptr = 0;
    6336:	10 86       	std	Z+8, r1	; 0x08
		puart->txoutptr = 0;
    6338:	11 86       	std	Z+9, r1	; 0x09
		puart->txcnt = 0;
    633a:	13 8a       	std	Z+19, r1	; 0x13
	}

	OS_EXIT_CRITICAL();
    633c:	9f bf       	out	0x3f, r25	; 63
    633e:	80 e0       	ldi	r24, 0x00	; 0
	return OS_ERR_NONE;
}
    6340:	08 95       	ret

00006342 <OSuartGetRxFifoCount>:
 *
 * Notes       :    
 *******************************************************************************
 */
uint8_t OSuartGetRxFifoCount(uint8_t uart_id, uint8_t* pCount)
{
    6342:	98 2f       	mov	r25, r24
    6344:	db 01       	movw	r26, r22
	if (uart_id >= UART_NUM_PORTS)
    6346:	84 30       	cpi	r24, 0x04	; 4
    6348:	10 f0       	brcs	.+4      	; 0x634e <OSuartGetRxFifoCount+0xc>
    634a:	87 e9       	ldi	r24, 0x97	; 151
    634c:	08 95       	ret
		return OS_ERR_UART_ID_INVALID;

	uart_t* puart = &uart_devctl[uart_id];
    634e:	84 e1       	ldi	r24, 0x14	; 20
    6350:	98 9f       	mul	r25, r24
    6352:	f0 01       	movw	r30, r0
    6354:	11 24       	eor	r1, r1
    6356:	e3 59       	subi	r30, 0x93	; 147
    6358:	f7 4e       	sbci	r31, 0xE7	; 231

	if (!puart->prxevent)
    635a:	86 85       	ldd	r24, Z+14	; 0x0e
    635c:	97 85       	ldd	r25, Z+15	; 0x0f
    635e:	89 2b       	or	r24, r25
    6360:	11 f4       	brne	.+4      	; 0x6366 <OSuartGetRxFifoCount+0x24>
    6362:	86 e9       	ldi	r24, 0x96	; 150
    6364:	08 95       	ret
		return OS_ERR_UART_NOT_INITIALIZED;

	OS_CPU_SR cpu_sr;
	OS_ENTER_CRITICAL();
    6366:	2f b7       	in	r18, 0x3f	; 63
    6368:	f8 94       	cli

	*pCount = puart->rxcnt;
    636a:	82 85       	ldd	r24, Z+10	; 0x0a
    636c:	93 85       	ldd	r25, Z+11	; 0x0b
    636e:	8c 93       	st	X, r24

	OS_EXIT_CRITICAL();
    6370:	2f bf       	out	0x3f, r18	; 63
    6372:	80 e0       	ldi	r24, 0x00	; 0
	return OS_ERR_NONE;
}
    6374:	08 95       	ret

00006376 <OSuartTimerTickHandler>:
 *
 * Notes       :    Call only from the timer tick ISR with interrupts disabled.
 *******************************************************************************
 */
void OSuartTimerTickHandler(void)
{
    6376:	0f 93       	push	r16
    6378:	1f 93       	push	r17
    637a:	cf 93       	push	r28
    637c:	df 93       	push	r29
    637e:	cd e6       	ldi	r28, 0x6D	; 109
    6380:	d8 e1       	ldi	r29, 0x18	; 24
    6382:	00 e0       	ldi	r16, 0x00	; 0
    6384:	12 e0       	ldi	r17, 0x02	; 2

	// for each port ...
  for ( ; portNum < UART_NUM_PORTS; ++puart, ++portNum)
	{
		// if the port is configured
		if (puart->prxevent)
    6386:	ee 85       	ldd	r30, Y+14	; 0x0e
    6388:	ff 85       	ldd	r31, Y+15	; 0x0f
    638a:	30 97       	sbiw	r30, 0x00	; 0
    638c:	f9 f0       	breq	.+62     	; 0x63cc <OSuartTimerTickHandler+0x56>
		{
			// if the receiver fifo is not empty
			if (!puart->stale_EMPTY)
    638e:	88 89       	ldd	r24, Y+16	; 0x10
    6390:	80 fd       	sbrc	r24, 0
    6392:	10 c0       	rjmp	.+32     	; 0x63b4 <OSuartTimerTickHandler+0x3e>
			{
				// if the data is already marked stale, wake up any task that is sleeping
				if (puart->stale_STALE)
    6394:	88 89       	ldd	r24, Y+16	; 0x10
    6396:	81 ff       	sbrs	r24, 1
    6398:	0a c0       	rjmp	.+20     	; 0x63ae <OSuartTimerTickHandler+0x38>
				{
					if (puart->prxevent->OSEventGrp != 0)
    639a:	85 81       	ldd	r24, Z+5	; 0x05
    639c:	88 23       	and	r24, r24
    639e:	51 f0       	breq	.+20     	; 0x63b4 <OSuartTimerTickHandler+0x3e>
            OSMboxPost(puart->prxevent, (void*) (0x100+portNum));
    63a0:	b8 01       	movw	r22, r16
    63a2:	60 50       	subi	r22, 0x00	; 0
    63a4:	71 40       	sbci	r23, 0x01	; 1
    63a6:	cf 01       	movw	r24, r30
    63a8:	0e 94 db 25 	call	0x4bb6	; 0x4bb6 <OSMboxPost>
    63ac:	03 c0       	rjmp	.+6      	; 0x63b4 <OSuartTimerTickHandler+0x3e>
				}

				// otherwise, 
				else
					puart->stale_STALE = 1;
    63ae:	88 89       	ldd	r24, Y+16	; 0x10
    63b0:	82 60       	ori	r24, 0x02	; 2
    63b2:	88 8b       	std	Y+16, r24	; 0x10
			}

			// if the transmitter fifo is empty and one or more tasks waiting, wake up
			if (!puart->txcnt && (puart->ptxevent->OSEventGrp != 0))
    63b4:	8b 89       	ldd	r24, Y+19	; 0x13
    63b6:	88 23       	and	r24, r24
    63b8:	49 f4       	brne	.+18     	; 0x63cc <OSuartTimerTickHandler+0x56>
    63ba:	e9 89       	ldd	r30, Y+17	; 0x11
    63bc:	fa 89       	ldd	r31, Y+18	; 0x12
    63be:	85 81       	ldd	r24, Z+5	; 0x05
    63c0:	88 23       	and	r24, r24
    63c2:	21 f0       	breq	.+8      	; 0x63cc <OSuartTimerTickHandler+0x56>
        OSMboxPost(puart->ptxevent, (void*) (0x200+portNum));
    63c4:	cf 01       	movw	r24, r30
    63c6:	b8 01       	movw	r22, r16
    63c8:	0e 94 db 25 	call	0x4bb6	; 0x4bb6 <OSMboxPost>
    63cc:	0f 5f       	subi	r16, 0xFF	; 255
    63ce:	1f 4f       	sbci	r17, 0xFF	; 255
{
	uart_t* puart = uart_devctl;			// point to start of devctl blocks
  uint8_t portNum = 0;          // current port number

	// for each port ...
  for ( ; portNum < UART_NUM_PORTS; ++puart, ++portNum)
    63d0:	88 e1       	ldi	r24, 0x18	; 24
    63d2:	c9 3a       	cpi	r28, 0xA9	; 169
    63d4:	d8 07       	cpc	r29, r24
    63d6:	11 f0       	breq	.+4      	; 0x63dc <OSuartTimerTickHandler+0x66>
    63d8:	64 96       	adiw	r28, 0x14	; 20
    63da:	d5 cf       	rjmp	.-86     	; 0x6386 <OSuartTimerTickHandler+0x10>
			// if the transmitter fifo is empty and one or more tasks waiting, wake up
			if (!puart->txcnt && (puart->ptxevent->OSEventGrp != 0))
        OSMboxPost(puart->ptxevent, (void*) (0x200+portNum));
		}
	}
}
    63dc:	df 91       	pop	r29
    63de:	cf 91       	pop	r28
    63e0:	1f 91       	pop	r17
    63e2:	0f 91       	pop	r16
    63e4:	08 95       	ret

000063e6 <OSuartPutCharWait>:
 *
 * Notes       :    
 *******************************************************************************
 */
uint8_t OSuartPutCharWait(uint8_t uart_id, uint8_t ch, uint16_t timeout)
{
    63e6:	6f 92       	push	r6
    63e8:	7f 92       	push	r7
    63ea:	9f 92       	push	r9
    63ec:	af 92       	push	r10
    63ee:	bf 92       	push	r11
    63f0:	cf 92       	push	r12
    63f2:	df 92       	push	r13
    63f4:	ef 92       	push	r14
    63f6:	ff 92       	push	r15
    63f8:	0f 93       	push	r16
    63fa:	1f 93       	push	r17
    63fc:	df 93       	push	r29
    63fe:	cf 93       	push	r28
    6400:	0f 92       	push	r0
    6402:	cd b7       	in	r28, 0x3d	; 61
    6404:	de b7       	in	r29, 0x3e	; 62
    6406:	28 2f       	mov	r18, r24
    6408:	96 2e       	mov	r9, r22
    640a:	5a 01       	movw	r10, r20
	if (uart_id >= UART_NUM_PORTS)
    640c:	84 30       	cpi	r24, 0x04	; 4
    640e:	10 f0       	brcs	.+4      	; 0x6414 <OSuartPutCharWait+0x2e>
    6410:	87 e9       	ldi	r24, 0x97	; 151
    6412:	53 c0       	rjmp	.+166    	; 0x64ba <OSuartPutCharWait+0xd4>
		return OS_ERR_UART_ID_INVALID;

	uart_t* puart = &uart_devctl[uart_id];
    6414:	84 e1       	ldi	r24, 0x14	; 20
    6416:	28 9f       	mul	r18, r24
    6418:	80 01       	movw	r16, r0
    641a:	11 24       	eor	r1, r1
    641c:	03 59       	subi	r16, 0x93	; 147
    641e:	17 4e       	sbci	r17, 0xE7	; 231

	if (!puart->prxevent)
    6420:	f8 01       	movw	r30, r16
    6422:	86 85       	ldd	r24, Z+14	; 0x0e
    6424:	97 85       	ldd	r25, Z+15	; 0x0f
    6426:	89 2b       	or	r24, r25
    6428:	11 f4       	brne	.+4      	; 0x642e <OSuartPutCharWait+0x48>
    642a:	86 e9       	ldi	r24, 0x96	; 150
    642c:	46 c0       	rjmp	.+140    	; 0x64ba <OSuartPutCharWait+0xd4>
		return OS_ERR_UART_NOT_INITIALIZED;

    uint8_t res = OS_ERR_NONE;
    642e:	19 82       	std	Y+1, r1	; 0x01
	uart_peripheral_t* pper = uart_regs[uart_id].pper;
    6430:	82 2f       	mov	r24, r18
    6432:	90 e0       	ldi	r25, 0x00	; 0
    6434:	fc 01       	movw	r30, r24
    6436:	ee 0f       	add	r30, r30
    6438:	ff 1f       	adc	r31, r31
    643a:	e8 0f       	add	r30, r24
    643c:	f9 1f       	adc	r31, r25
    643e:	ee 0f       	add	r30, r30
    6440:	ff 1f       	adc	r31, r31
    6442:	ec 5d       	subi	r30, 0xDC	; 220
    6444:	fc 4f       	sbci	r31, 0xFC	; 252
    6446:	e1 80       	ldd	r14, Z+1	; 0x01
    6448:	f2 80       	ldd	r15, Z+2	; 0x02
		// if there's enough space to write another character, then write it
		// and enable interrupts
		if (!written && (puart->txcnt < (UART_TX_BUFFER_SIZE-1))) // txcnt is only 8 bits, so don't fill completely
		{
			++puart->txcnt;
			txbuffer[uart_id][puart->txinptr++] = ch;
    644a:	d8 2e       	mov	r13, r24
    644c:	cc 24       	eor	r12, r12
		OS_EXIT_CRITICAL();


        // if no character written, wait for the task to wake up
		if (!written)
        	OSMboxPend(puart->ptxevent, timeout, &res);
    644e:	3e 01       	movw	r6, r28
    6450:	08 94       	sec
    6452:	61 1c       	adc	r6, r1
    6454:	71 1c       	adc	r7, r1
    do {

		// while checking for interrupts enabled and inserting into FIFO, keep
		// interrupts disabled
		OS_CPU_SR cpu_sr;
		OS_ENTER_CRITICAL();
    6456:	9f b7       	in	r25, 0x3f	; 63
    6458:	f8 94       	cli

		// if interrupts are disabled ...			
		if ((pper->ucsrb & _BV(UDRIE0)) == 0)
    645a:	f7 01       	movw	r30, r14
    645c:	81 81       	ldd	r24, Z+1	; 0x01
    645e:	85 fd       	sbrc	r24, 5
    6460:	05 c0       	rjmp	.+10     	; 0x646c <OSuartPutCharWait+0x86>
		{
			// if the data register is empty, just write the character
			if (pper->ucsra & _BV(UDRE0))
    6462:	80 81       	ld	r24, Z
    6464:	85 ff       	sbrs	r24, 5
    6466:	02 c0       	rjmp	.+4      	; 0x646c <OSuartPutCharWait+0x86>
			{
				pper->udr = ch;
    6468:	96 82       	std	Z+6, r9	; 0x06
    646a:	18 c0       	rjmp	.+48     	; 0x649c <OSuartPutCharWait+0xb6>
			}
		}

		// if there's enough space to write another character, then write it
		// and enable interrupts
		if (!written && (puart->txcnt < (UART_TX_BUFFER_SIZE-1))) // txcnt is only 8 bits, so don't fill completely
    646c:	f8 01       	movw	r30, r16
    646e:	83 89       	ldd	r24, Z+19	; 0x13
    6470:	8f 3f       	cpi	r24, 0xFF	; 255
    6472:	11 f4       	brne	.+4      	; 0x6478 <OSuartPutCharWait+0x92>
    6474:	80 e0       	ldi	r24, 0x00	; 0
    6476:	13 c0       	rjmp	.+38     	; 0x649e <OSuartPutCharWait+0xb8>
		{
			++puart->txcnt;
    6478:	f8 01       	movw	r30, r16
    647a:	83 89       	ldd	r24, Z+19	; 0x13
    647c:	8f 5f       	subi	r24, 0xFF	; 255
    647e:	83 8b       	std	Z+19, r24	; 0x13
			txbuffer[uart_id][puart->txinptr++] = ch;
    6480:	80 85       	ldd	r24, Z+8	; 0x08
    6482:	f6 01       	movw	r30, r12
    6484:	e8 0f       	add	r30, r24
    6486:	f1 1d       	adc	r31, r1
    6488:	e0 50       	subi	r30, 0x00	; 0
    648a:	fc 47       	sbci	r31, 0x7C	; 124
    648c:	90 82       	st	Z, r9
    648e:	8f 5f       	subi	r24, 0xFF	; 255
    6490:	f8 01       	movw	r30, r16
    6492:	80 87       	std	Z+8, r24	; 0x08
			pper->ucsrb |= _BV(UDRIE0);
    6494:	f7 01       	movw	r30, r14
    6496:	81 81       	ldd	r24, Z+1	; 0x01
    6498:	80 62       	ori	r24, 0x20	; 32
    649a:	81 83       	std	Z+1, r24	; 0x01
    649c:	81 e0       	ldi	r24, 0x01	; 1
			written = OS_TRUE;
		}

		OS_EXIT_CRITICAL();
    649e:	9f bf       	out	0x3f, r25	; 63


        // if no character written, wait for the task to wake up
		if (!written)
    64a0:	88 23       	and	r24, r24
    64a2:	51 f4       	brne	.+20     	; 0x64b8 <OSuartPutCharWait+0xd2>
        	OSMboxPend(puart->ptxevent, timeout, &res);
    64a4:	f8 01       	movw	r30, r16
    64a6:	81 89       	ldd	r24, Z+17	; 0x11
    64a8:	92 89       	ldd	r25, Z+18	; 0x12
    64aa:	b5 01       	movw	r22, r10
    64ac:	a3 01       	movw	r20, r6
    64ae:	0e 94 3c 26 	call	0x4c78	; 0x4c78 <OSMboxPend>

    } while(!written && (res == OS_ERR_NONE));
    64b2:	89 81       	ldd	r24, Y+1	; 0x01
    64b4:	88 23       	and	r24, r24
    64b6:	79 f2       	breq	.-98     	; 0x6456 <OSuartPutCharWait+0x70>

    return res;   // returns the result
    64b8:	89 81       	ldd	r24, Y+1	; 0x01
}
    64ba:	0f 90       	pop	r0
    64bc:	cf 91       	pop	r28
    64be:	df 91       	pop	r29
    64c0:	1f 91       	pop	r17
    64c2:	0f 91       	pop	r16
    64c4:	ff 90       	pop	r15
    64c6:	ef 90       	pop	r14
    64c8:	df 90       	pop	r13
    64ca:	cf 90       	pop	r12
    64cc:	bf 90       	pop	r11
    64ce:	af 90       	pop	r10
    64d0:	9f 90       	pop	r9
    64d2:	7f 90       	pop	r7
    64d4:	6f 90       	pop	r6
    64d6:	08 95       	ret

000064d8 <OSuartPutBlockWait>:
 *
 * Notes       :    
 *******************************************************************************
 */
uint16_t OSuartPutBlockWait(uint8_t uart_id, uint8_t* pdata, uint16_t count, uint16_t timeout, uint8_t* err)
{
    64d8:	9f 92       	push	r9
    64da:	af 92       	push	r10
    64dc:	bf 92       	push	r11
    64de:	cf 92       	push	r12
    64e0:	df 92       	push	r13
    64e2:	ef 92       	push	r14
    64e4:	ff 92       	push	r15
    64e6:	0f 93       	push	r16
    64e8:	1f 93       	push	r17
    64ea:	cf 93       	push	r28
    64ec:	df 93       	push	r29
    64ee:	98 2e       	mov	r9, r24
    64f0:	5b 01       	movw	r10, r22
    64f2:	7a 01       	movw	r14, r20
    64f4:	69 01       	movw	r12, r18
    64f6:	eb 01       	movw	r28, r22
    64f8:	01 c0       	rjmp	.+2      	; 0x64fc <OSuartPutBlockWait+0x24>
	uint8_t* pdata2 = pdata;
	uint8_t localerr = OS_ERR_NONE;
    
	while(count-- && ((localerr = OSuartPutCharWait(uart_id, *pdata2, timeout)) == OS_ERR_NONE))
		++pdata2;
    64fa:	21 96       	adiw	r28, 0x01	; 1
uint16_t OSuartPutBlockWait(uint8_t uart_id, uint8_t* pdata, uint16_t count, uint16_t timeout, uint8_t* err)
{
	uint8_t* pdata2 = pdata;
	uint8_t localerr = OS_ERR_NONE;
    
	while(count-- && ((localerr = OSuartPutCharWait(uart_id, *pdata2, timeout)) == OS_ERR_NONE))
    64fc:	e1 14       	cp	r14, r1
    64fe:	f1 04       	cpc	r15, r1
    6500:	11 f4       	brne	.+4      	; 0x6506 <OSuartPutBlockWait+0x2e>
    6502:	80 e0       	ldi	r24, 0x00	; 0
    6504:	0a c0       	rjmp	.+20     	; 0x651a <OSuartPutBlockWait+0x42>
    6506:	89 2d       	mov	r24, r9
    6508:	68 81       	ld	r22, Y
    650a:	a6 01       	movw	r20, r12
    650c:	0e 94 f3 31 	call	0x63e6	; 0x63e6 <OSuartPutCharWait>
    6510:	08 94       	sec
    6512:	e1 08       	sbc	r14, r1
    6514:	f1 08       	sbc	r15, r1
    6516:	88 23       	and	r24, r24
    6518:	81 f3       	breq	.-32     	; 0x64fa <OSuartPutBlockWait+0x22>
		++pdata2;

	if (err) *err = localerr;
    651a:	01 15       	cp	r16, r1
    651c:	11 05       	cpc	r17, r1
    651e:	11 f0       	breq	.+4      	; 0x6524 <OSuartPutBlockWait+0x4c>
    6520:	f8 01       	movw	r30, r16
    6522:	80 83       	st	Z, r24
    6524:	9e 01       	movw	r18, r28
    6526:	2a 19       	sub	r18, r10
    6528:	3b 09       	sbc	r19, r11

	return pdata2-pdata;
}
    652a:	c9 01       	movw	r24, r18
    652c:	df 91       	pop	r29
    652e:	cf 91       	pop	r28
    6530:	1f 91       	pop	r17
    6532:	0f 91       	pop	r16
    6534:	ff 90       	pop	r15
    6536:	ef 90       	pop	r14
    6538:	df 90       	pop	r13
    653a:	cf 90       	pop	r12
    653c:	bf 90       	pop	r11
    653e:	af 90       	pop	r10
    6540:	9f 90       	pop	r9
    6542:	08 95       	ret

00006544 <OSuartPutStrWait>:
 *
 * Notes       :    
 *******************************************************************************
 */
uint16_t OSuartPutStrWait(uint8_t uart_id, char* pstr, uint16_t timeout, uint8_t* err)
{
    6544:	ef 92       	push	r14
    6546:	ff 92       	push	r15
    6548:	0f 93       	push	r16
    654a:	1f 93       	push	r17
    654c:	7a 01       	movw	r14, r20
    654e:	89 01       	movw	r16, r18
	return OSuartPutBlockWait(uart_id, (uint8_t*) pstr, (uint16_t) strlen(pstr), timeout, err);
    6550:	db 01       	movw	r26, r22
    6552:	0d 90       	ld	r0, X+
    6554:	00 20       	and	r0, r0
    6556:	e9 f7       	brne	.-6      	; 0x6552 <OSuartPutStrWait+0xe>
    6558:	11 97       	sbiw	r26, 0x01	; 1
    655a:	a6 1b       	sub	r26, r22
    655c:	b7 0b       	sbc	r27, r23
    655e:	ad 01       	movw	r20, r26
    6560:	97 01       	movw	r18, r14
    6562:	0e 94 6c 32 	call	0x64d8	; 0x64d8 <OSuartPutBlockWait>
}
    6566:	1f 91       	pop	r17
    6568:	0f 91       	pop	r16
    656a:	ff 90       	pop	r15
    656c:	ef 90       	pop	r14
    656e:	08 95       	ret

00006570 <OSuartGetCharWait>:
 * 
 * Notes       :    
 *******************************************************************************
 */
uint8_t OSuartGetCharWait(uint8_t uart_id, uint16_t max_wait, uint8_t *err)
{
    6570:	6f 92       	push	r6
    6572:	7f 92       	push	r7
    6574:	8f 92       	push	r8
    6576:	9f 92       	push	r9
    6578:	af 92       	push	r10
    657a:	bf 92       	push	r11
    657c:	cf 92       	push	r12
    657e:	df 92       	push	r13
    6580:	ef 92       	push	r14
    6582:	ff 92       	push	r15
    6584:	0f 93       	push	r16
    6586:	1f 93       	push	r17
    6588:	df 93       	push	r29
    658a:	cf 93       	push	r28
    658c:	0f 92       	push	r0
    658e:	cd b7       	in	r28, 0x3d	; 61
    6590:	de b7       	in	r29, 0x3e	; 62
    6592:	a8 2e       	mov	r10, r24
    6594:	4b 01       	movw	r8, r22
    6596:	6a 01       	movw	r12, r20
	if (uart_id >= UART_NUM_PORTS)
    6598:	83 e0       	ldi	r24, 0x03	; 3
    659a:	8a 15       	cp	r24, r10
    659c:	30 f4       	brcc	.+12     	; 0x65aa <OSuartGetCharWait+0x3a>
	{
		if (err) *err = OS_ERR_UART_ID_INVALID;
    659e:	41 15       	cp	r20, r1
    65a0:	51 05       	cpc	r21, r1
    65a2:	09 f4       	brne	.+2      	; 0x65a6 <OSuartGetCharWait+0x36>
    65a4:	53 c0       	rjmp	.+166    	; 0x664c <OSuartGetCharWait+0xdc>
    65a6:	87 e9       	ldi	r24, 0x97	; 151
    65a8:	10 c0       	rjmp	.+32     	; 0x65ca <OSuartGetCharWait+0x5a>
		return 0;
	}

	uart_t* puart = &uart_devctl[uart_id];
    65aa:	84 e1       	ldi	r24, 0x14	; 20
    65ac:	a8 9e       	mul	r10, r24
    65ae:	80 01       	movw	r16, r0
    65b0:	11 24       	eor	r1, r1
    65b2:	03 59       	subi	r16, 0x93	; 147
    65b4:	17 4e       	sbci	r17, 0xE7	; 231

	if (!puart->prxevent)
    65b6:	f8 01       	movw	r30, r16
    65b8:	86 85       	ldd	r24, Z+14	; 0x0e
    65ba:	97 85       	ldd	r25, Z+15	; 0x0f
    65bc:	89 2b       	or	r24, r25
    65be:	41 f4       	brne	.+16     	; 0x65d0 <OSuartGetCharWait+0x60>
	{
		if (err) *err = OS_ERR_UART_NOT_INITIALIZED;
    65c0:	41 15       	cp	r20, r1
    65c2:	51 05       	cpc	r21, r1
    65c4:	09 f4       	brne	.+2      	; 0x65c8 <OSuartGetCharWait+0x58>
    65c6:	42 c0       	rjmp	.+132    	; 0x664c <OSuartGetCharWait+0xdc>
    65c8:	86 e9       	ldi	r24, 0x96	; 150
    65ca:	f6 01       	movw	r30, r12
    65cc:	80 83       	st	Z, r24
    65ce:	3e c0       	rjmp	.+124    	; 0x664c <OSuartGetCharWait+0xdc>
		return 0;
	}

	uint8_t localerr = OS_ERR_NONE;
    65d0:	19 82       	std	Y+1, r1	; 0x01
    65d2:	bb 24       	eor	r11, r11

		OS_EXIT_CRITICAL();

        // there was no character so wait for the event to be posted
		if (!dataRead)
        	OSMboxPend(puart->prxevent, max_wait, &localerr);
    65d4:	3e 01       	movw	r6, r28
    65d6:	08 94       	sec
    65d8:	61 1c       	adc	r6, r1
    65da:	71 1c       	adc	r7, r1

    do {

        // pull a character from the buffer atomically (if the buffer is not empty)
		OS_CPU_SR cpu_sr;
		OS_ENTER_CRITICAL();
    65dc:	2f b7       	in	r18, 0x3f	; 63
    65de:	f8 94       	cli

        if (puart->rxcnt)
    65e0:	f8 01       	movw	r30, r16
    65e2:	82 85       	ldd	r24, Z+10	; 0x0a
    65e4:	93 85       	ldd	r25, Z+11	; 0x0b
    65e6:	89 2b       	or	r24, r25
    65e8:	11 f4       	brne	.+4      	; 0x65ee <OSuartGetCharWait+0x7e>
    65ea:	80 e0       	ldi	r24, 0x00	; 0
    65ec:	1b c0       	rjmp	.+54     	; 0x6624 <OSuartGetCharWait+0xb4>
		{
			if (!--puart->rxcnt)
    65ee:	f8 01       	movw	r30, r16
    65f0:	82 85       	ldd	r24, Z+10	; 0x0a
    65f2:	93 85       	ldd	r25, Z+11	; 0x0b
    65f4:	01 97       	sbiw	r24, 0x01	; 1
    65f6:	93 87       	std	Z+11, r25	; 0x0b
    65f8:	82 87       	std	Z+10, r24	; 0x0a
    65fa:	82 85       	ldd	r24, Z+10	; 0x0a
    65fc:	93 85       	ldd	r25, Z+11	; 0x0b
    65fe:	89 2b       	or	r24, r25
    6600:	19 f4       	brne	.+6      	; 0x6608 <OSuartGetCharWait+0x98>
				puart->stale_EMPTY = 1;
    6602:	80 89       	ldd	r24, Z+16	; 0x10
    6604:	81 60       	ori	r24, 0x01	; 1
    6606:	80 8b       	std	Z+16, r24	; 0x10

            data = rxbuffer[uart_id][puart->rxoutptr++];
    6608:	f8 01       	movw	r30, r16
    660a:	87 81       	ldd	r24, Z+7	; 0x07
    660c:	fa 2c       	mov	r15, r10
    660e:	ee 24       	eor	r14, r14
    6610:	f7 01       	movw	r30, r14
    6612:	e8 0f       	add	r30, r24
    6614:	f1 1d       	adc	r31, r1
    6616:	e0 50       	subi	r30, 0x00	; 0
    6618:	f0 48       	sbci	r31, 0x80	; 128
    661a:	b0 80       	ld	r11, Z
    661c:	8f 5f       	subi	r24, 0xFF	; 255
    661e:	f8 01       	movw	r30, r16
    6620:	87 83       	std	Z+7, r24	; 0x07
    6622:	81 e0       	ldi	r24, 0x01	; 1
			dataRead = OS_TRUE;
        }

		OS_EXIT_CRITICAL();
    6624:	2f bf       	out	0x3f, r18	; 63

        // there was no character so wait for the event to be posted
		if (!dataRead)
    6626:	88 23       	and	r24, r24
    6628:	51 f4       	brne	.+20     	; 0x663e <OSuartGetCharWait+0xce>
        	OSMboxPend(puart->prxevent, max_wait, &localerr);
    662a:	f8 01       	movw	r30, r16
    662c:	86 85       	ldd	r24, Z+14	; 0x0e
    662e:	97 85       	ldd	r25, Z+15	; 0x0f
    6630:	b4 01       	movw	r22, r8
    6632:	a3 01       	movw	r20, r6
    6634:	0e 94 3c 26 	call	0x4c78	; 0x4c78 <OSMboxPend>
//        	OSMboxPend(puart->prxevent, max_wait, err);


    } while (!dataRead && (localerr == OS_ERR_NONE));
    6638:	89 81       	ldd	r24, Y+1	; 0x01
    663a:	88 23       	and	r24, r24
    663c:	79 f2       	breq	.-98     	; 0x65dc <OSuartGetCharWait+0x6c>



	if (err) *err = localerr;
    663e:	c1 14       	cp	r12, r1
    6640:	d1 04       	cpc	r13, r1
    6642:	29 f0       	breq	.+10     	; 0x664e <OSuartGetCharWait+0xde>
    6644:	89 81       	ldd	r24, Y+1	; 0x01
    6646:	f6 01       	movw	r30, r12
    6648:	80 83       	st	Z, r24
    664a:	01 c0       	rjmp	.+2      	; 0x664e <OSuartGetCharWait+0xde>
    664c:	bb 24       	eor	r11, r11
    return data;
}
    664e:	8b 2d       	mov	r24, r11
    6650:	0f 90       	pop	r0
    6652:	cf 91       	pop	r28
    6654:	df 91       	pop	r29
    6656:	1f 91       	pop	r17
    6658:	0f 91       	pop	r16
    665a:	ff 90       	pop	r15
    665c:	ef 90       	pop	r14
    665e:	df 90       	pop	r13
    6660:	cf 90       	pop	r12
    6662:	bf 90       	pop	r11
    6664:	af 90       	pop	r10
    6666:	9f 90       	pop	r9
    6668:	8f 90       	pop	r8
    666a:	7f 90       	pop	r7
    666c:	6f 90       	pop	r6
    666e:	08 95       	ret

00006670 <OSuartInitPort>:
 *
 * Notes:			
 *******************************************************************************
 */
uint8_t OSuartInitPort(uint8_t uart_id, uint32_t baud_rate, uint8_t databits, uint8_t stopbits, uint8_t parity)
{
    6670:	5f 92       	push	r5
    6672:	6f 92       	push	r6
    6674:	7f 92       	push	r7
    6676:	8f 92       	push	r8
    6678:	9f 92       	push	r9
    667a:	af 92       	push	r10
    667c:	bf 92       	push	r11
    667e:	cf 92       	push	r12
    6680:	df 92       	push	r13
    6682:	ef 92       	push	r14
    6684:	ff 92       	push	r15
    6686:	0f 93       	push	r16
    6688:	1f 93       	push	r17
    668a:	cf 93       	push	r28
    668c:	df 93       	push	r29
    668e:	5a 01       	movw	r10, r20
    6690:	6b 01       	movw	r12, r22
    6692:	52 2e       	mov	r5, r18
    6694:	70 2e       	mov	r7, r16
    6696:	6e 2c       	mov	r6, r14
	if (uart_id >= UART_NUM_PORTS)
    6698:	84 30       	cpi	r24, 0x04	; 4
    669a:	10 f0       	brcs	.+4      	; 0x66a0 <OSuartInitPort+0x30>
    669c:	87 e9       	ldi	r24, 0x97	; 151
    669e:	4d c0       	rjmp	.+154    	; 0x673a <OSuartInitPort+0xca>
		return OS_ERR_UART_ID_INVALID;
		
	uart_t* puart = &uart_devctl[uart_id];
    66a0:	90 e0       	ldi	r25, 0x00	; 0
    66a2:	24 e1       	ldi	r18, 0x14	; 20
    66a4:	30 e0       	ldi	r19, 0x00	; 0
    66a6:	82 9f       	mul	r24, r18
    66a8:	70 01       	movw	r14, r0
    66aa:	83 9f       	mul	r24, r19
    66ac:	f0 0c       	add	r15, r0
    66ae:	92 9f       	mul	r25, r18
    66b0:	f0 0c       	add	r15, r0
    66b2:	11 24       	eor	r1, r1
    66b4:	2d e6       	ldi	r18, 0x6D	; 109
    66b6:	38 e1       	ldi	r19, 0x18	; 24
    66b8:	e2 0e       	add	r14, r18
    66ba:	f3 1e       	adc	r15, r19
	uart_regs_t* pregs = &uart_regs[uart_id];
    66bc:	ec 01       	movw	r28, r24
    66be:	cc 0f       	add	r28, r28
    66c0:	dd 1f       	adc	r29, r29
    66c2:	c8 0f       	add	r28, r24
    66c4:	d9 1f       	adc	r29, r25
    66c6:	cc 0f       	add	r28, r28
    66c8:	dd 1f       	adc	r29, r29
    66ca:	cc 5d       	subi	r28, 0xDC	; 220
    66cc:	dc 4f       	sbci	r29, 0xFC	; 252
	uart_peripheral_t* pper = pregs->pper;
    66ce:	89 80       	ldd	r8, Y+1	; 0x01
    66d0:	9a 80       	ldd	r9, Y+2	; 0x02
	uint16_t brrVal = (uint16_t) UART_BRR(baud_rate);
	
	if (puart->prxevent)
    66d2:	f7 01       	movw	r30, r14
    66d4:	86 85       	ldd	r24, Z+14	; 0x0e
    66d6:	97 85       	ldd	r25, Z+15	; 0x0f
    66d8:	89 2b       	or	r24, r25
    66da:	11 f0       	breq	.+4      	; 0x66e0 <OSuartInitPort+0x70>
    66dc:	88 e9       	ldi	r24, 0x98	; 152
    66de:	2d c0       	rjmp	.+90     	; 0x673a <OSuartInitPort+0xca>
		return OS_ERR_UART_ID_INVALID;
		
	uart_t* puart = &uart_devctl[uart_id];
	uart_regs_t* pregs = &uart_regs[uart_id];
	uart_peripheral_t* pper = pregs->pper;
	uint16_t brrVal = (uint16_t) UART_BRR(baud_rate);
    66e0:	08 94       	sec
    66e2:	a1 1c       	adc	r10, r1
    66e4:	b1 1c       	adc	r11, r1
    66e6:	c1 1c       	adc	r12, r1
    66e8:	d1 1c       	adc	r13, r1
    66ea:	60 e0       	ldi	r22, 0x00	; 0
    66ec:	78 e0       	ldi	r23, 0x08	; 8
    66ee:	87 e0       	ldi	r24, 0x07	; 7
    66f0:	90 e0       	ldi	r25, 0x00	; 0
    66f2:	a6 01       	movw	r20, r12
    66f4:	95 01       	movw	r18, r10
    66f6:	0e 94 24 f4 	call	0x1e848	; 0x1e848 <__udivmodsi4>
    66fa:	89 01       	movw	r16, r18
	
	if (puart->prxevent)
		return OS_ERR_UART_DUPLICATE_INIT;

	puart->prxevent = OSMboxCreate((void*) 0);
    66fc:	80 e0       	ldi	r24, 0x00	; 0
    66fe:	90 e0       	ldi	r25, 0x00	; 0
    6700:	0e 94 a5 26 	call	0x4d4a	; 0x4d4a <OSMboxCreate>
    6704:	f7 01       	movw	r30, r14
    6706:	97 87       	std	Z+15, r25	; 0x0f
    6708:	86 87       	std	Z+14, r24	; 0x0e
	puart->ptxevent = OSMboxCreate((void*) 0);
    670a:	80 e0       	ldi	r24, 0x00	; 0
    670c:	90 e0       	ldi	r25, 0x00	; 0
    670e:	0e 94 a5 26 	call	0x4d4a	; 0x4d4a <OSMboxCreate>
    6712:	f7 01       	movw	r30, r14
    6714:	92 8b       	std	Z+18, r25	; 0x12
    6716:	81 8b       	std	Z+17, r24	; 0x11

    ATOMIC_BLOCK(ATOMIC_RESTORESTATE)
    6718:	ff b6       	in	r15, 0x3f	; 63
    return 1;
}

static __inline__ uint8_t __iCliRetVal(void)
{
    cli();
    671a:	f8 94       	cli
	{
		OSuartEnableDriver(pregs, OS_TRUE);
    671c:	ce 01       	movw	r24, r28
    671e:	61 e0       	ldi	r22, 0x01	; 1
    6720:	0e 94 40 30 	call	0x6080	; 0x6080 <OSuartEnableDriver>
		pper->ubrrH = (uint8_t) (brrVal >> 8);
    6724:	f4 01       	movw	r30, r8
    6726:	15 83       	std	Z+5, r17	; 0x05
		pper->ubrrL = (uint8_t) brrVal;
    6728:	04 83       	std	Z+4, r16	; 0x04
		pper->ucsra = 0;
    672a:	10 82       	st	Z, r1
		pper->ucsrb = _BV(RXCIE0) | _BV(RXEN0) | _BV(TXEN0);
    672c:	88 e9       	ldi	r24, 0x98	; 152
    672e:	81 83       	std	Z+1, r24	; 0x01
		pper->ucsrc = UART_MODE(UART_MODE_ASYNCH, databits, stopbits, parity);
    6730:	75 28       	or	r7, r5
    6732:	76 28       	or	r7, r6
    6734:	72 82       	std	Z+2, r7	; 0x02
    (void)__s;
}

static __inline__ void __iRestore(const  uint8_t *__s)
{
    SREG = *__s;
    6736:	ff be       	out	0x3f, r15	; 63
    __asm__ volatile ("" ::: "memory");
    6738:	80 e0       	ldi	r24, 0x00	; 0
	}

	return OS_ERR_NONE;
}
    673a:	df 91       	pop	r29
    673c:	cf 91       	pop	r28
    673e:	1f 91       	pop	r17
    6740:	0f 91       	pop	r16
    6742:	ff 90       	pop	r15
    6744:	ef 90       	pop	r14
    6746:	df 90       	pop	r13
    6748:	cf 90       	pop	r12
    674a:	bf 90       	pop	r11
    674c:	af 90       	pop	r10
    674e:	9f 90       	pop	r9
    6750:	8f 90       	pop	r8
    6752:	7f 90       	pop	r7
    6754:	6f 90       	pop	r6
    6756:	5f 90       	pop	r5
    6758:	08 95       	ret

0000675a <App_TaskCreateHook>:
#if (uC_PROBE_OS_PLUGIN > 0) && (OS_PROBE_HOOKS_EN > 0)
    OSProbe_TaskCreateHook(ptcb);
#else
    (void)ptcb;
#endif
}
    675a:	08 95       	ret

0000675c <App_TaskDelHook>:
*/

void  App_TaskDelHook (OS_TCB *ptcb)
{
    (void)ptcb;
}
    675c:	08 95       	ret

0000675e <App_TaskStatHook>:
*********************************************************************************************************
*/

void  App_TaskStatHook (void)
{
}
    675e:	08 95       	ret

00006760 <App_TCBInitHook>:

#if OS_VERSION >= 204
void  App_TCBInitHook (OS_TCB *ptcb)
{
    (void)ptcb;
}
    6760:	08 95       	ret

00006762 <App_TimeTickHook>:
void  App_TimeTickHook (void)
{
#if (uC_PROBE_OS_PLUGIN > 0) && (OS_PROBE_HOOKS_EN > 0)
    OSProbe_TickHook();
#endif
}
    6762:	08 95       	ret

00006764 <App_TaskIdleHook>:

#if OS_VERSION >= 251
void  App_TaskIdleHook (void)
{
#if WDTRIG_ENABLED != 0
	OSwatchdogTrigger(WDTRIG_IDLE_CTX);		// retrigger the idle watchdog
    6764:	61 e0       	ldi	r22, 0x01	; 1
    6766:	70 e0       	ldi	r23, 0x00	; 0
    6768:	80 e0       	ldi	r24, 0x00	; 0
    676a:	90 e0       	ldi	r25, 0x00	; 0
    676c:	0e 94 e8 3b 	call	0x77d0	; 0x77d0 <OSwatchdogTrigger>
#endif
	set_sleep_mode(SLEEP_MODE_IDLE);		// configure IDLE sleep mode
    6770:	83 b7       	in	r24, 0x33	; 51
    6772:	81 7f       	andi	r24, 0xF1	; 241
    6774:	83 bf       	out	0x33, r24	; 51
	sleep_mode();							// go to sleep
    6776:	83 b7       	in	r24, 0x33	; 51
    6778:	81 60       	ori	r24, 0x01	; 1
    677a:	83 bf       	out	0x33, r24	; 51
    677c:	88 95       	sleep
    677e:	83 b7       	in	r24, 0x33	; 51
    6780:	8e 7f       	andi	r24, 0xFE	; 254
    6782:	83 bf       	out	0x33, r24	; 51
	//SMCR = _BV(SE);						// enables sleep mode for idle sleeping
	//asm volatile ( "cli\r\nsei\r\nsleep\r\n" ); // enable interrupts and then sleep
	//SMCR = 0;							// disable sleep mode
}
    6784:	08 95       	ret

00006786 <App_TaskSwHook>:
{
#if (uC_PROBE_OS_PLUGIN > 0) && (OS_PROBE_HOOKS_EN > 0)
    OSProbe_TaskSwHook();
#endif
#if WDTRIG_ENABLED != 0
	if (OSTCBCur->OSTCBPrio || OSTCBHighRdy->OSTCBPrio)
    6786:	e0 91 de 11 	lds	r30, 0x11DE
    678a:	f0 91 df 11 	lds	r31, 0x11DF
    678e:	84 8d       	ldd	r24, Z+28	; 0x1c
    6790:	88 23       	and	r24, r24
    6792:	39 f4       	brne	.+14     	; 0x67a2 <App_TaskSwHook+0x1c>
    6794:	e0 91 d0 11 	lds	r30, 0x11D0
    6798:	f0 91 d1 11 	lds	r31, 0x11D1
    679c:	84 8d       	ldd	r24, Z+28	; 0x1c
    679e:	88 23       	and	r24, r24
    67a0:	31 f0       	breq	.+12     	; 0x67ae <App_TaskSwHook+0x28>
		OSwatchdogTrigger(WDTRIG_NON_IDLE_CTX);
    67a2:	62 e0       	ldi	r22, 0x02	; 2
    67a4:	70 e0       	ldi	r23, 0x00	; 0
    67a6:	80 e0       	ldi	r24, 0x00	; 0
    67a8:	90 e0       	ldi	r25, 0x00	; 0
    67aa:	0e 94 e8 3b 	call	0x77d0	; 0x77d0 <OSwatchdogTrigger>
#endif
	SPIDEBUG_REPORT_PRIO(OSTCBHighRdy->OSTCBPrio);
#if OS_TASK_STAT_EN > 0
	LRStat_AttributeTime(OSTCBCur);
    67ae:	80 91 de 11 	lds	r24, 0x11DE
    67b2:	90 91 df 11 	lds	r25, 0x11DF
    67b6:	0e 94 60 39 	call	0x72c0	; 0x72c0 <LRStat_AttributeTime>
#endif
}
    67ba:	08 95       	ret

000067bc <OStmrDefault>:
 *						switching.
 *******************************************************************************
 */
void OStmrDefault(void)
{
	power_timer1_disable();			// turn off power to timer/counter 1 (used as a general purpose counter)
    67bc:	e4 e6       	ldi	r30, 0x64	; 100
    67be:	f0 e0       	ldi	r31, 0x00	; 0
    67c0:	80 81       	ld	r24, Z
    67c2:	88 60       	ori	r24, 0x08	; 8
    67c4:	80 83       	st	Z, r24
	power_timer2_disable();			// turn off power to timer/counter 2 (used for the timer ISR)
    67c6:	80 81       	ld	r24, Z
    67c8:	80 64       	ori	r24, 0x40	; 64
    67ca:	80 83       	st	Z, r24
}
    67cc:	08 95       	ret

000067ce <OStmrInit>:
{
	// using timer1 for general purpose counter/timer
	// using timer2 for counter/timer interrupts

	OS_CPU_SR cpu_sr;
	OS_ENTER_CRITICAL();
    67ce:	2f b7       	in	r18, 0x3f	; 63
    67d0:	f8 94       	cli

//JGK	power_timer1_enable();			// turn on power to timer 1 (used as general purpose counter)
	power_timer3_enable();			// turn on power to timer 1 (used as general purpose counter)
    67d2:	80 91 65 00 	lds	r24, 0x0065
    67d6:	87 7f       	andi	r24, 0xF7	; 247
    67d8:	80 93 65 00 	sts	0x0065, r24
    power_timer2_enable();			// turn on power to timer 2 (used for timer ISR)
    67dc:	80 91 64 00 	lds	r24, 0x0064
    67e0:	8f 7b       	andi	r24, 0xBF	; 191
    67e2:	80 93 64 00 	sts	0x0064, r24
//JGK	TCCR1B = _BV(CS12);				// clock divisor is 256 (calculated not to overflow in 2 seconds)
//JGK	TCCR1C = 0;
//JGK	TCNT1H = 0;
//JGK	TCNT1L = 0;

	TCCR3A = 0;						// normal mode counter
    67e6:	10 92 90 00 	sts	0x0090, r1
	TCCR3B = _BV(CS12);				// clock divisor is 256 (calculated not to overflow in 2 seconds)
    67ea:	84 e0       	ldi	r24, 0x04	; 4
    67ec:	80 93 91 00 	sts	0x0091, r24
	TCCR3C = 0;
    67f0:	10 92 92 00 	sts	0x0092, r1
	TCNT3H = 0;
    67f4:	10 92 95 00 	sts	0x0095, r1
	TCNT3L = 0;
    67f8:	10 92 94 00 	sts	0x0094, r1

	ASSR = _BV(AS2);				// enable asynchronous mode with external input
    67fc:	80 e2       	ldi	r24, 0x20	; 32
    67fe:	80 93 b6 00 	sts	0x00B6, r24
	TCCR2A = _BV(WGM21);			// WGM wave form mode 2 (counter/timer) with
    6802:	82 e0       	ldi	r24, 0x02	; 2
    6804:	80 93 b0 00 	sts	0x00B0, r24
	TCCR2B = _BV(CS20);				//   no additional prescalar 32768/256/1 for 128/sec
    6808:	81 e0       	ldi	r24, 0x01	; 1
    680a:	80 93 b1 00 	sts	0x00B1, r24
	TCNT2 = 0;						// inits the actual counter to 0
    680e:	10 92 b2 00 	sts	0x00B2, r1
	OCR2A = 32768/OSTMR_TICKS_PER_SECOND - 1; // sets the comparison value
    6812:	8f ef       	ldi	r24, 0xFF	; 255
    6814:	80 93 b3 00 	sts	0x00B3, r24
	while (ASSR & 0x1F) {};			// wait for changes to be applied
    6818:	80 91 b6 00 	lds	r24, 0x00B6
    681c:	90 e0       	ldi	r25, 0x00	; 0
    681e:	8f 71       	andi	r24, 0x1F	; 31
    6820:	90 70       	andi	r25, 0x00	; 0
    6822:	89 2b       	or	r24, r25
    6824:	c9 f7       	brne	.-14     	; 0x6818 <OStmrInit+0x4a>
	TIFR2 = 7;						// this clears the interrupts?  it seems like it would cause one
    6826:	87 e0       	ldi	r24, 0x07	; 7
    6828:	87 bb       	out	0x17, r24	; 23
	TIMSK2 = _BV(OCIE2A);			// enable timer2 interrupt A (overflow interrupt and B match interrupt are disabled
    682a:	82 e0       	ldi	r24, 0x02	; 2
    682c:	80 93 70 00 	sts	0x0070, r24

	OS_EXIT_CRITICAL();
    6830:	2f bf       	out	0x3f, r18	; 63
}
    6832:	08 95       	ret

00006834 <OStmrToggleMask>:
 *******************************************************************************
 */
uint8_t OStmrToggleMask(uint8_t newVal)
{
	OS_CPU_SR cpu_sr;
	OS_ENTER_CRITICAL();
    6834:	9f b7       	in	r25, 0x3f	; 63
    6836:	f8 94       	cli

	uint8_t savedVal = TIMSK2;
    6838:	e0 e7       	ldi	r30, 0x70	; 112
    683a:	f0 e0       	ldi	r31, 0x00	; 0
    683c:	20 81       	ld	r18, Z
	TIMSK2 = newVal;
    683e:	80 83       	st	Z, r24

	OS_EXIT_CRITICAL();
    6840:	9f bf       	out	0x3f, r25	; 63
	return savedVal;
}
    6842:	82 2f       	mov	r24, r18
    6844:	08 95       	ret

00006846 <getsecondtick>:

uint32_t getsecondtick()
{
	uint32_t ticks;
	OS_CPU_SR cpu_sr;
	OS_ENTER_CRITICAL();
    6846:	2f b7       	in	r18, 0x3f	; 63
    6848:	f8 94       	cli
		ticks = secondTick;
    684a:	60 91 80 06 	lds	r22, 0x0680
    684e:	70 91 81 06 	lds	r23, 0x0681
    6852:	80 91 82 06 	lds	r24, 0x0682
    6856:	90 91 83 06 	lds	r25, 0x0683
	OS_EXIT_CRITICAL();
    685a:	2f bf       	out	0x3f, r18	; 63
	return ticks;
}	
    685c:	08 95       	ret

0000685e <settime>:

uint8_t settime(time_t time)
{
	OS_CPU_SR cpu_sr;
	OS_ENTER_CRITICAL();
    685e:	2f b7       	in	r18, 0x3f	; 63
    6860:	f8 94       	cli
		timeTick = time;
    6862:	60 93 7c 06 	sts	0x067C, r22
    6866:	70 93 7d 06 	sts	0x067D, r23
    686a:	80 93 7e 06 	sts	0x067E, r24
    686e:	90 93 7f 06 	sts	0x067F, r25
	OS_EXIT_CRITICAL();
    6872:	2f bf       	out	0x3f, r18	; 63
	return 0;
}	
    6874:	80 e0       	ldi	r24, 0x00	; 0
    6876:	08 95       	ret

00006878 <gettime>:
time_t gettime()
{
	OS_CPU_SR cpu_sr;
	time_t temp;

	OS_ENTER_CRITICAL();
    6878:	2f b7       	in	r18, 0x3f	; 63
    687a:	f8 94       	cli
		temp = timeTick;
    687c:	60 91 7c 06 	lds	r22, 0x067C
    6880:	70 91 7d 06 	lds	r23, 0x067D
    6884:	80 91 7e 06 	lds	r24, 0x067E
    6888:	90 91 7f 06 	lds	r25, 0x067F
	OS_EXIT_CRITICAL();
    688c:	2f bf       	out	0x3f, r18	; 63

	return temp;
}	
    688e:	08 95       	ret

00006890 <mktime>:


time_t mktime(tm time)
{
    6890:	2f 92       	push	r2
    6892:	3f 92       	push	r3
    6894:	4f 92       	push	r4
    6896:	5f 92       	push	r5
    6898:	6f 92       	push	r6
    689a:	7f 92       	push	r7
    689c:	8f 92       	push	r8
    689e:	9f 92       	push	r9
    68a0:	af 92       	push	r10
    68a2:	bf 92       	push	r11
    68a4:	cf 92       	push	r12
    68a6:	df 92       	push	r13
    68a8:	ef 92       	push	r14
    68aa:	ff 92       	push	r15
    68ac:	0f 93       	push	r16
    68ae:	1f 93       	push	r17
    68b0:	df 93       	push	r29
    68b2:	cf 93       	push	r28
    68b4:	cd b7       	in	r28, 0x3d	; 61
    68b6:	de b7       	in	r29, 0x3e	; 62
    68b8:	62 97       	sbiw	r28, 0x12	; 18
    68ba:	0f b6       	in	r0, 0x3f	; 63
    68bc:	f8 94       	cli
    68be:	de bf       	out	0x3e, r29	; 62
    68c0:	0f be       	out	0x3f, r0	; 63
    68c2:	cd bf       	out	0x3d, r28	; 61
    68c4:	89 82       	std	Y+1, r8	; 0x01
    68c6:	9a 82       	std	Y+2, r9	; 0x02
    68c8:	ab 82       	std	Y+3, r10	; 0x03
    68ca:	bc 82       	std	Y+4, r11	; 0x04
    68cc:	cd 82       	std	Y+5, r12	; 0x05
    68ce:	de 82       	std	Y+6, r13	; 0x06
    68d0:	ef 82       	std	Y+7, r14	; 0x07
    68d2:	f8 86       	std	Y+8, r15	; 0x08
    68d4:	2b 87       	std	Y+11, r18	; 0x0b
    68d6:	3c 87       	std	Y+12, r19	; 0x0c
    68d8:	8b 85       	ldd	r24, Y+11	; 0x0b
    68da:	9c 85       	ldd	r25, Y+12	; 0x0c
    68dc:	69 80       	ldd	r6, Y+1	; 0x01
    68de:	7a 80       	ldd	r7, Y+2	; 0x02
    68e0:	2f 81       	ldd	r18, Y+7	; 0x07
    68e2:	38 85       	ldd	r19, Y+8	; 0x08
    68e4:	4d 80       	ldd	r4, Y+5	; 0x05
    68e6:	5e 80       	ldd	r5, Y+6	; 0x06
    68e8:	2b 80       	ldd	r2, Y+3	; 0x03
    68ea:	3c 80       	ldd	r3, Y+4	; 0x04
	int16_t year = time.tm_year;
	int16_t c = 0;


	
	if(time.tm_sec != -1)
    68ec:	4f ef       	ldi	r20, 0xFF	; 255
    68ee:	64 16       	cp	r6, r20
    68f0:	4f ef       	ldi	r20, 0xFF	; 255
    68f2:	74 06       	cpc	r7, r20
    68f4:	29 f4       	brne	.+10     	; 0x6900 <mktime+0x70>
    68f6:	20 e0       	ldi	r18, 0x00	; 0
    68f8:	30 e0       	ldi	r19, 0x00	; 0
    68fa:	40 e0       	ldi	r20, 0x00	; 0
    68fc:	50 e0       	ldi	r21, 0x00	; 0
    68fe:	97 c0       	rjmp	.+302    	; 0x6a2e <mktime+0x19e>

time_t mktime(tm time)
{
	time_t result = 0;
	uint32_t jdn = 0;
	uint8_t month = time.tm_mon;
    6900:	90 2e       	mov	r9, r16


	
	if(time.tm_sec != -1)
	{
		if(month < 3)
    6902:	52 e0       	ldi	r21, 0x02	; 2
    6904:	50 17       	cp	r21, r16
    6906:	10 f4       	brcc	.+4      	; 0x690c <mktime+0x7c>
    6908:	5c 01       	movw	r10, r24
    690a:	06 c0       	rjmp	.+12     	; 0x6918 <mktime+0x88>
		{
			month+=12;
    690c:	ac e0       	ldi	r26, 0x0C	; 12
    690e:	9a 0e       	add	r9, r26
			year--;
    6910:	5c 01       	movw	r10, r24
    6912:	08 94       	sec
    6914:	a1 08       	sbc	r10, r1
    6916:	b1 08       	sbc	r11, r1

		c = 2 - year/100 + year/400;

	    jdn = 1461L*(year + 4716)/4 + 153*(month + 1)/5 + time.tm_mday + c - 2442112L;

		result = 60*(60*(24*jdn + time.tm_hour) + time.tm_min) + time.tm_sec;
    6918:	69 01       	movw	r12, r18
    691a:	ee 24       	eor	r14, r14
    691c:	d7 fc       	sbrc	r13, 7
    691e:	e0 94       	com	r14
    6920:	fe 2c       	mov	r15, r14
    6922:	80 e8       	ldi	r24, 0x80	; 128
    6924:	9c eb       	ldi	r25, 0xBC	; 188
    6926:	aa ed       	ldi	r26, 0xDA	; 218
    6928:	bf ef       	ldi	r27, 0xFF	; 255
    692a:	c8 0e       	add	r12, r24
    692c:	d9 1e       	adc	r13, r25
    692e:	ea 1e       	adc	r14, r26
    6930:	fb 1e       	adc	r15, r27
    6932:	b5 01       	movw	r22, r10
    6934:	88 27       	eor	r24, r24
    6936:	77 fd       	sbrc	r23, 7
    6938:	80 95       	com	r24
    693a:	98 2f       	mov	r25, r24
    693c:	25 eb       	ldi	r18, 0xB5	; 181
    693e:	35 e0       	ldi	r19, 0x05	; 5
    6940:	40 e0       	ldi	r20, 0x00	; 0
    6942:	50 e0       	ldi	r21, 0x00	; 0
    6944:	0e 94 f2 f3 	call	0x1e7e4	; 0x1e7e4 <__mulsi3>
    6948:	64 5a       	subi	r22, 0xA4	; 164
    694a:	7d 4d       	sbci	r23, 0xDD	; 221
    694c:	86 49       	sbci	r24, 0x96	; 150
    694e:	9f 4f       	sbci	r25, 0xFF	; 255
    6950:	24 e0       	ldi	r18, 0x04	; 4
    6952:	30 e0       	ldi	r19, 0x00	; 0
    6954:	40 e0       	ldi	r20, 0x00	; 0
    6956:	50 e0       	ldi	r21, 0x00	; 0
    6958:	0e 94 46 f4 	call	0x1e88c	; 0x1e88c <__divmodsi4>
    695c:	c2 0e       	add	r12, r18
    695e:	d3 1e       	adc	r13, r19
    6960:	e4 1e       	adc	r14, r20
    6962:	f5 1e       	adc	r15, r21
    6964:	c5 01       	movw	r24, r10
    6966:	6c e9       	ldi	r22, 0x9C	; 156
    6968:	7f ef       	ldi	r23, 0xFF	; 255
    696a:	0e 94 11 f4 	call	0x1e822	; 0x1e822 <__divmodhi4>
    696e:	8b 01       	movw	r16, r22
    6970:	c5 01       	movw	r24, r10
    6972:	60 e9       	ldi	r22, 0x90	; 144
    6974:	71 e0       	ldi	r23, 0x01	; 1
    6976:	0e 94 11 f4 	call	0x1e822	; 0x1e822 <__divmodhi4>
    697a:	06 0f       	add	r16, r22
    697c:	17 1f       	adc	r17, r23
    697e:	0e 5f       	subi	r16, 0xFE	; 254
    6980:	1f 4f       	sbci	r17, 0xFF	; 255
    6982:	22 27       	eor	r18, r18
    6984:	17 fd       	sbrc	r17, 7
    6986:	20 95       	com	r18
    6988:	32 2f       	mov	r19, r18
    698a:	c0 0e       	add	r12, r16
    698c:	d1 1e       	adc	r13, r17
    698e:	e2 1e       	adc	r14, r18
    6990:	f3 1e       	adc	r15, r19
    6992:	89 2d       	mov	r24, r9
    6994:	90 e0       	ldi	r25, 0x00	; 0
    6996:	01 96       	adiw	r24, 0x01	; 1
    6998:	29 e9       	ldi	r18, 0x99	; 153
    699a:	30 e0       	ldi	r19, 0x00	; 0
    699c:	dc 01       	movw	r26, r24
    699e:	a2 9f       	mul	r26, r18
    69a0:	c0 01       	movw	r24, r0
    69a2:	a3 9f       	mul	r26, r19
    69a4:	90 0d       	add	r25, r0
    69a6:	b2 9f       	mul	r27, r18
    69a8:	90 0d       	add	r25, r0
    69aa:	11 24       	eor	r1, r1
    69ac:	65 e0       	ldi	r22, 0x05	; 5
    69ae:	70 e0       	ldi	r23, 0x00	; 0
    69b0:	0e 94 11 f4 	call	0x1e822	; 0x1e822 <__divmodhi4>
    69b4:	88 27       	eor	r24, r24
    69b6:	77 fd       	sbrc	r23, 7
    69b8:	80 95       	com	r24
    69ba:	98 2f       	mov	r25, r24
    69bc:	c6 0e       	add	r12, r22
    69be:	d7 1e       	adc	r13, r23
    69c0:	e8 1e       	adc	r14, r24
    69c2:	f9 1e       	adc	r15, r25
    69c4:	c7 01       	movw	r24, r14
    69c6:	b6 01       	movw	r22, r12
    69c8:	28 e1       	ldi	r18, 0x18	; 24
    69ca:	30 e0       	ldi	r19, 0x00	; 0
    69cc:	40 e0       	ldi	r20, 0x00	; 0
    69ce:	50 e0       	ldi	r21, 0x00	; 0
    69d0:	0e 94 f2 f3 	call	0x1e7e4	; 0x1e7e4 <__mulsi3>
    69d4:	9b 01       	movw	r18, r22
    69d6:	ac 01       	movw	r20, r24
    69d8:	b2 01       	movw	r22, r4
    69da:	88 27       	eor	r24, r24
    69dc:	77 fd       	sbrc	r23, 7
    69de:	80 95       	com	r24
    69e0:	98 2f       	mov	r25, r24
    69e2:	62 0f       	add	r22, r18
    69e4:	73 1f       	adc	r23, r19
    69e6:	84 1f       	adc	r24, r20
    69e8:	95 1f       	adc	r25, r21
    69ea:	2c e3       	ldi	r18, 0x3C	; 60
    69ec:	30 e0       	ldi	r19, 0x00	; 0
    69ee:	40 e0       	ldi	r20, 0x00	; 0
    69f0:	50 e0       	ldi	r21, 0x00	; 0
    69f2:	0e 94 f2 f3 	call	0x1e7e4	; 0x1e7e4 <__mulsi3>
    69f6:	9b 01       	movw	r18, r22
    69f8:	ac 01       	movw	r20, r24
    69fa:	b1 01       	movw	r22, r2
    69fc:	88 27       	eor	r24, r24
    69fe:	77 fd       	sbrc	r23, 7
    6a00:	80 95       	com	r24
    6a02:	98 2f       	mov	r25, r24
    6a04:	62 0f       	add	r22, r18
    6a06:	73 1f       	adc	r23, r19
    6a08:	84 1f       	adc	r24, r20
    6a0a:	95 1f       	adc	r25, r21
    6a0c:	2c e3       	ldi	r18, 0x3C	; 60
    6a0e:	30 e0       	ldi	r19, 0x00	; 0
    6a10:	40 e0       	ldi	r20, 0x00	; 0
    6a12:	50 e0       	ldi	r21, 0x00	; 0
    6a14:	0e 94 f2 f3 	call	0x1e7e4	; 0x1e7e4 <__mulsi3>
    6a18:	9b 01       	movw	r18, r22
    6a1a:	ac 01       	movw	r20, r24
    6a1c:	c3 01       	movw	r24, r6
    6a1e:	aa 27       	eor	r26, r26
    6a20:	97 fd       	sbrc	r25, 7
    6a22:	a0 95       	com	r26
    6a24:	ba 2f       	mov	r27, r26
    6a26:	28 0f       	add	r18, r24
    6a28:	39 1f       	adc	r19, r25
    6a2a:	4a 1f       	adc	r20, r26
    6a2c:	5b 1f       	adc	r21, r27
	}

	return result;
}
    6a2e:	b9 01       	movw	r22, r18
    6a30:	ca 01       	movw	r24, r20
    6a32:	62 96       	adiw	r28, 0x12	; 18
    6a34:	0f b6       	in	r0, 0x3f	; 63
    6a36:	f8 94       	cli
    6a38:	de bf       	out	0x3e, r29	; 62
    6a3a:	0f be       	out	0x3f, r0	; 63
    6a3c:	cd bf       	out	0x3d, r28	; 61
    6a3e:	cf 91       	pop	r28
    6a40:	df 91       	pop	r29
    6a42:	1f 91       	pop	r17
    6a44:	0f 91       	pop	r16
    6a46:	ff 90       	pop	r15
    6a48:	ef 90       	pop	r14
    6a4a:	df 90       	pop	r13
    6a4c:	cf 90       	pop	r12
    6a4e:	bf 90       	pop	r11
    6a50:	af 90       	pop	r10
    6a52:	9f 90       	pop	r9
    6a54:	8f 90       	pop	r8
    6a56:	7f 90       	pop	r7
    6a58:	6f 90       	pop	r6
    6a5a:	5f 90       	pop	r5
    6a5c:	4f 90       	pop	r4
    6a5e:	3f 90       	pop	r3
    6a60:	2f 90       	pop	r2
    6a62:	08 95       	ret

00006a64 <gmtime>:


	
tm*	gmtime(time_t *timer)
	{
    6a64:	af 92       	push	r10
    6a66:	bf 92       	push	r11
    6a68:	cf 92       	push	r12
    6a6a:	df 92       	push	r13
    6a6c:	ef 92       	push	r14
    6a6e:	ff 92       	push	r15
    6a70:	0f 93       	push	r16
    6a72:	1f 93       	push	r17
    6a74:	fc 01       	movw	r30, r24
        tm *timep = &br_time;
        time_t time = *timer;
        uint32_t dayclock, dayno;
        int16_t year = EPOCH_YR;

        dayclock = (uint32_t)time % SECS_DAY;
    6a76:	e0 80       	ld	r14, Z
    6a78:	f1 80       	ldd	r15, Z+1	; 0x01
    6a7a:	02 81       	ldd	r16, Z+2	; 0x02
    6a7c:	13 81       	ldd	r17, Z+3	; 0x03
    6a7e:	c8 01       	movw	r24, r16
    6a80:	b7 01       	movw	r22, r14
    6a82:	20 e8       	ldi	r18, 0x80	; 128
    6a84:	31 e5       	ldi	r19, 0x51	; 81
    6a86:	41 e0       	ldi	r20, 0x01	; 1
    6a88:	50 e0       	ldi	r21, 0x00	; 0
    6a8a:	0e 94 24 f4 	call	0x1e848	; 0x1e848 <__udivmodsi4>
    6a8e:	d6 2e       	mov	r13, r22
    6a90:	c7 2e       	mov	r12, r23
    6a92:	b8 2e       	mov	r11, r24
    6a94:	a9 2e       	mov	r10, r25
        dayno = (uint32_t)time / SECS_DAY;
    6a96:	c8 01       	movw	r24, r16
    6a98:	b7 01       	movw	r22, r14
    6a9a:	20 e8       	ldi	r18, 0x80	; 128
    6a9c:	31 e5       	ldi	r19, 0x51	; 81
    6a9e:	41 e0       	ldi	r20, 0x01	; 1
    6aa0:	50 e0       	ldi	r21, 0x00	; 0
    6aa2:	0e 94 24 f4 	call	0x1e848	; 0x1e848 <__udivmodsi4>
    6aa6:	c9 01       	movw	r24, r18
    6aa8:	da 01       	movw	r26, r20
    6aaa:	7c 01       	movw	r14, r24
    6aac:	8d 01       	movw	r16, r26

        timep->tm_sec = dayclock % 60;
    6aae:	6d 2d       	mov	r22, r13
    6ab0:	7c 2d       	mov	r23, r12
    6ab2:	8b 2d       	mov	r24, r11
    6ab4:	9a 2d       	mov	r25, r10
    6ab6:	2c e3       	ldi	r18, 0x3C	; 60
    6ab8:	30 e0       	ldi	r19, 0x00	; 0
    6aba:	40 e0       	ldi	r20, 0x00	; 0
    6abc:	50 e0       	ldi	r21, 0x00	; 0
    6abe:	0e 94 24 f4 	call	0x1e848	; 0x1e848 <__udivmodsi4>
    6ac2:	70 93 86 06 	sts	0x0686, r23
    6ac6:	60 93 85 06 	sts	0x0685, r22
        timep->tm_min = (dayclock % 3600) / 60;
    6aca:	6d 2d       	mov	r22, r13
    6acc:	7c 2d       	mov	r23, r12
    6ace:	8b 2d       	mov	r24, r11
    6ad0:	9a 2d       	mov	r25, r10
    6ad2:	20 e1       	ldi	r18, 0x10	; 16
    6ad4:	3e e0       	ldi	r19, 0x0E	; 14
    6ad6:	40 e0       	ldi	r20, 0x00	; 0
    6ad8:	50 e0       	ldi	r21, 0x00	; 0
    6ada:	0e 94 24 f4 	call	0x1e848	; 0x1e848 <__udivmodsi4>
    6ade:	2c e3       	ldi	r18, 0x3C	; 60
    6ae0:	30 e0       	ldi	r19, 0x00	; 0
    6ae2:	40 e0       	ldi	r20, 0x00	; 0
    6ae4:	50 e0       	ldi	r21, 0x00	; 0
    6ae6:	0e 94 24 f4 	call	0x1e848	; 0x1e848 <__udivmodsi4>
    6aea:	30 93 88 06 	sts	0x0688, r19
    6aee:	20 93 87 06 	sts	0x0687, r18
        timep->tm_hour = dayclock / 3600;
    6af2:	6d 2d       	mov	r22, r13
    6af4:	7c 2d       	mov	r23, r12
    6af6:	8b 2d       	mov	r24, r11
    6af8:	9a 2d       	mov	r25, r10
    6afa:	20 e1       	ldi	r18, 0x10	; 16
    6afc:	3e e0       	ldi	r19, 0x0E	; 14
    6afe:	40 e0       	ldi	r20, 0x00	; 0
    6b00:	50 e0       	ldi	r21, 0x00	; 0
    6b02:	0e 94 24 f4 	call	0x1e848	; 0x1e848 <__udivmodsi4>
    6b06:	30 93 8a 06 	sts	0x068A, r19
    6b0a:	20 93 89 06 	sts	0x0689, r18
        timep->tm_wday = (dayno + 4) % 7;       // day 0 was a thursday 
    6b0e:	c8 01       	movw	r24, r16
    6b10:	b7 01       	movw	r22, r14
    6b12:	6c 5f       	subi	r22, 0xFC	; 252
    6b14:	7f 4f       	sbci	r23, 0xFF	; 255
    6b16:	8f 4f       	sbci	r24, 0xFF	; 255
    6b18:	9f 4f       	sbci	r25, 0xFF	; 255
    6b1a:	27 e0       	ldi	r18, 0x07	; 7
    6b1c:	30 e0       	ldi	r19, 0x00	; 0
    6b1e:	40 e0       	ldi	r20, 0x00	; 0
    6b20:	50 e0       	ldi	r21, 0x00	; 0
    6b22:	0e 94 24 f4 	call	0x1e848	; 0x1e848 <__udivmodsi4>
    6b26:	70 93 92 06 	sts	0x0692, r23
    6b2a:	60 93 91 06 	sts	0x0691, r22
    6b2e:	22 eb       	ldi	r18, 0xB2	; 178
    6b30:	37 e0       	ldi	r19, 0x07	; 7
    6b32:	1f c0       	rjmp	.+62     	; 0x6b72 <gmtime+0x10e>
        while (dayno >= YEARSIZE(year)) 
		{
        	dayno -= YEARSIZE(year);
    6b34:	ab 28       	or	r10, r11
    6b36:	99 f4       	brne	.+38     	; 0x6b5e <gmtime+0xfa>
    6b38:	c9 01       	movw	r24, r18
    6b3a:	64 e6       	ldi	r22, 0x64	; 100
    6b3c:	70 e0       	ldi	r23, 0x00	; 0
    6b3e:	0e 94 11 f4 	call	0x1e822	; 0x1e822 <__divmodhi4>
    6b42:	89 2b       	or	r24, r25
    6b44:	39 f4       	brne	.+14     	; 0x6b54 <gmtime+0xf0>
    6b46:	c9 01       	movw	r24, r18
    6b48:	60 e9       	ldi	r22, 0x90	; 144
    6b4a:	71 e0       	ldi	r23, 0x01	; 1
    6b4c:	0e 94 11 f4 	call	0x1e822	; 0x1e822 <__divmodhi4>
    6b50:	89 2b       	or	r24, r25
    6b52:	29 f4       	brne	.+10     	; 0x6b5e <gmtime+0xfa>
    6b54:	8e e6       	ldi	r24, 0x6E	; 110
    6b56:	91 e0       	ldi	r25, 0x01	; 1
    6b58:	a0 e0       	ldi	r26, 0x00	; 0
    6b5a:	b0 e0       	ldi	r27, 0x00	; 0
    6b5c:	04 c0       	rjmp	.+8      	; 0x6b66 <gmtime+0x102>
    6b5e:	8d e6       	ldi	r24, 0x6D	; 109
    6b60:	91 e0       	ldi	r25, 0x01	; 1
    6b62:	a0 e0       	ldi	r26, 0x00	; 0
    6b64:	b0 e0       	ldi	r27, 0x00	; 0
    6b66:	e8 1a       	sub	r14, r24
    6b68:	f9 0a       	sbc	r15, r25
    6b6a:	0a 0b       	sbc	r16, r26
    6b6c:	1b 0b       	sbc	r17, r27
        	year++;
    6b6e:	2f 5f       	subi	r18, 0xFF	; 255
    6b70:	3f 4f       	sbci	r19, 0xFF	; 255

        timep->tm_sec = dayclock % 60;
        timep->tm_min = (dayclock % 3600) / 60;
        timep->tm_hour = dayclock / 3600;
        timep->tm_wday = (dayno + 4) % 7;       // day 0 was a thursday 
        while (dayno >= YEARSIZE(year)) 
    6b72:	83 e0       	ldi	r24, 0x03	; 3
    6b74:	a8 2e       	mov	r10, r24
    6b76:	b1 2c       	mov	r11, r1
    6b78:	a2 22       	and	r10, r18
    6b7a:	b3 22       	and	r11, r19
    6b7c:	a1 14       	cp	r10, r1
    6b7e:	b1 04       	cpc	r11, r1
    6b80:	99 f4       	brne	.+38     	; 0x6ba8 <gmtime+0x144>
    6b82:	c9 01       	movw	r24, r18
    6b84:	64 e6       	ldi	r22, 0x64	; 100
    6b86:	70 e0       	ldi	r23, 0x00	; 0
    6b88:	0e 94 11 f4 	call	0x1e822	; 0x1e822 <__divmodhi4>
    6b8c:	89 2b       	or	r24, r25
    6b8e:	39 f4       	brne	.+14     	; 0x6b9e <gmtime+0x13a>
    6b90:	c9 01       	movw	r24, r18
    6b92:	60 e9       	ldi	r22, 0x90	; 144
    6b94:	71 e0       	ldi	r23, 0x01	; 1
    6b96:	0e 94 11 f4 	call	0x1e822	; 0x1e822 <__divmodhi4>
    6b9a:	89 2b       	or	r24, r25
    6b9c:	29 f4       	brne	.+10     	; 0x6ba8 <gmtime+0x144>
    6b9e:	8e e6       	ldi	r24, 0x6E	; 110
    6ba0:	91 e0       	ldi	r25, 0x01	; 1
    6ba2:	a0 e0       	ldi	r26, 0x00	; 0
    6ba4:	b0 e0       	ldi	r27, 0x00	; 0
    6ba6:	04 c0       	rjmp	.+8      	; 0x6bb0 <gmtime+0x14c>
    6ba8:	8d e6       	ldi	r24, 0x6D	; 109
    6baa:	91 e0       	ldi	r25, 0x01	; 1
    6bac:	a0 e0       	ldi	r26, 0x00	; 0
    6bae:	b0 e0       	ldi	r27, 0x00	; 0
    6bb0:	e8 16       	cp	r14, r24
    6bb2:	f9 06       	cpc	r15, r25
    6bb4:	0a 07       	cpc	r16, r26
    6bb6:	1b 07       	cpc	r17, r27
    6bb8:	08 f0       	brcs	.+2      	; 0x6bbc <gmtime+0x158>
    6bba:	bc cf       	rjmp	.-136    	; 0x6b34 <gmtime+0xd0>
		{
        	dayno -= YEARSIZE(year);
        	year++;
        }
        timep->tm_year = year - YEAR0;
    6bbc:	2c 56       	subi	r18, 0x6C	; 108
    6bbe:	37 40       	sbci	r19, 0x07	; 7
    6bc0:	30 93 90 06 	sts	0x0690, r19
    6bc4:	20 93 8f 06 	sts	0x068F, r18
    6bc8:	24 59       	subi	r18, 0x94	; 148
    6bca:	38 4f       	sbci	r19, 0xF8	; 248
        timep->tm_yday = dayno;
    6bcc:	c7 01       	movw	r24, r14
    6bce:	e0 92 93 06 	sts	0x0693, r14
    6bd2:	90 93 94 06 	sts	0x0694, r25
        timep->tm_mon = 0;
        while (dayno >= _ytab[LEAPYEAR(year)][timep->tm_mon]) 
    6bd6:	c9 01       	movw	r24, r18
    6bd8:	64 e6       	ldi	r22, 0x64	; 100
    6bda:	70 e0       	ldi	r23, 0x00	; 0
    6bdc:	0e 94 11 f4 	call	0x1e822	; 0x1e822 <__divmodhi4>
    6be0:	6c 01       	movw	r12, r24
    6be2:	c9 01       	movw	r24, r18
    6be4:	60 e9       	ldi	r22, 0x90	; 144
    6be6:	71 e0       	ldi	r23, 0x01	; 1
    6be8:	0e 94 11 f4 	call	0x1e822	; 0x1e822 <__divmodhi4>
    6bec:	9c 01       	movw	r18, r24
    6bee:	40 e0       	ldi	r20, 0x00	; 0
    6bf0:	50 e0       	ldi	r21, 0x00	; 0
    6bf2:	2f c0       	rjmp	.+94     	; 0x6c52 <gmtime+0x1ee>
		{
        	dayno -= _ytab[LEAPYEAR(year)][timep->tm_mon];
    6bf4:	a1 14       	cp	r10, r1
    6bf6:	b1 04       	cpc	r11, r1
    6bf8:	19 f0       	breq	.+6      	; 0x6c00 <gmtime+0x19c>
    6bfa:	80 e0       	ldi	r24, 0x00	; 0
    6bfc:	90 e0       	ldi	r25, 0x00	; 0
    6bfe:	0e c0       	rjmp	.+28     	; 0x6c1c <gmtime+0x1b8>
    6c00:	c1 14       	cp	r12, r1
    6c02:	d1 04       	cpc	r13, r1
    6c04:	19 f0       	breq	.+6      	; 0x6c0c <gmtime+0x1a8>
    6c06:	81 e0       	ldi	r24, 0x01	; 1
    6c08:	90 e0       	ldi	r25, 0x00	; 0
    6c0a:	08 c0       	rjmp	.+16     	; 0x6c1c <gmtime+0x1b8>
    6c0c:	e0 e0       	ldi	r30, 0x00	; 0
    6c0e:	f0 e0       	ldi	r31, 0x00	; 0
    6c10:	21 15       	cp	r18, r1
    6c12:	31 05       	cpc	r19, r1
    6c14:	11 f4       	brne	.+4      	; 0x6c1a <gmtime+0x1b6>
    6c16:	e1 e0       	ldi	r30, 0x01	; 1
    6c18:	f0 e0       	ldi	r31, 0x00	; 0
    6c1a:	cf 01       	movw	r24, r30
    6c1c:	fc 01       	movw	r30, r24
    6c1e:	ee 0f       	add	r30, r30
    6c20:	ff 1f       	adc	r31, r31
    6c22:	e8 0f       	add	r30, r24
    6c24:	f9 1f       	adc	r31, r25
    6c26:	ee 0f       	add	r30, r30
    6c28:	ff 1f       	adc	r31, r31
    6c2a:	ee 0f       	add	r30, r30
    6c2c:	ff 1f       	adc	r31, r31
    6c2e:	e4 0f       	add	r30, r20
    6c30:	f5 1f       	adc	r31, r21
    6c32:	ee 0f       	add	r30, r30
    6c34:	ff 1f       	adc	r31, r31
    6c36:	e4 5c       	subi	r30, 0xC4	; 196
    6c38:	fc 4f       	sbci	r31, 0xFC	; 252
    6c3a:	80 81       	ld	r24, Z
    6c3c:	91 81       	ldd	r25, Z+1	; 0x01
    6c3e:	aa 27       	eor	r26, r26
    6c40:	97 fd       	sbrc	r25, 7
    6c42:	a0 95       	com	r26
    6c44:	ba 2f       	mov	r27, r26
    6c46:	e8 1a       	sub	r14, r24
    6c48:	f9 0a       	sbc	r15, r25
    6c4a:	0a 0b       	sbc	r16, r26
    6c4c:	1b 0b       	sbc	r17, r27
    6c4e:	4f 5f       	subi	r20, 0xFF	; 255
    6c50:	5f 4f       	sbci	r21, 0xFF	; 255
        	year++;
        }
        timep->tm_year = year - YEAR0;
        timep->tm_yday = dayno;
        timep->tm_mon = 0;
        while (dayno >= _ytab[LEAPYEAR(year)][timep->tm_mon]) 
    6c52:	a1 14       	cp	r10, r1
    6c54:	b1 04       	cpc	r11, r1
    6c56:	19 f0       	breq	.+6      	; 0x6c5e <gmtime+0x1fa>
    6c58:	80 e0       	ldi	r24, 0x00	; 0
    6c5a:	90 e0       	ldi	r25, 0x00	; 0
    6c5c:	0e c0       	rjmp	.+28     	; 0x6c7a <gmtime+0x216>
    6c5e:	c1 14       	cp	r12, r1
    6c60:	d1 04       	cpc	r13, r1
    6c62:	19 f0       	breq	.+6      	; 0x6c6a <gmtime+0x206>
    6c64:	81 e0       	ldi	r24, 0x01	; 1
    6c66:	90 e0       	ldi	r25, 0x00	; 0
    6c68:	08 c0       	rjmp	.+16     	; 0x6c7a <gmtime+0x216>
    6c6a:	e0 e0       	ldi	r30, 0x00	; 0
    6c6c:	f0 e0       	ldi	r31, 0x00	; 0
    6c6e:	21 15       	cp	r18, r1
    6c70:	31 05       	cpc	r19, r1
    6c72:	11 f4       	brne	.+4      	; 0x6c78 <gmtime+0x214>
    6c74:	e1 e0       	ldi	r30, 0x01	; 1
    6c76:	f0 e0       	ldi	r31, 0x00	; 0
    6c78:	cf 01       	movw	r24, r30
    6c7a:	fc 01       	movw	r30, r24
    6c7c:	ee 0f       	add	r30, r30
    6c7e:	ff 1f       	adc	r31, r31
    6c80:	e8 0f       	add	r30, r24
    6c82:	f9 1f       	adc	r31, r25
    6c84:	ee 0f       	add	r30, r30
    6c86:	ff 1f       	adc	r31, r31
    6c88:	ee 0f       	add	r30, r30
    6c8a:	ff 1f       	adc	r31, r31
    6c8c:	e4 0f       	add	r30, r20
    6c8e:	f5 1f       	adc	r31, r21
    6c90:	ee 0f       	add	r30, r30
    6c92:	ff 1f       	adc	r31, r31
    6c94:	e4 5c       	subi	r30, 0xC4	; 196
    6c96:	fc 4f       	sbci	r31, 0xFC	; 252
    6c98:	80 81       	ld	r24, Z
    6c9a:	91 81       	ldd	r25, Z+1	; 0x01
    6c9c:	aa 27       	eor	r26, r26
    6c9e:	97 fd       	sbrc	r25, 7
    6ca0:	a0 95       	com	r26
    6ca2:	ba 2f       	mov	r27, r26
    6ca4:	e8 16       	cp	r14, r24
    6ca6:	f9 06       	cpc	r15, r25
    6ca8:	0a 07       	cpc	r16, r26
    6caa:	1b 07       	cpc	r17, r27
    6cac:	08 f0       	brcs	.+2      	; 0x6cb0 <gmtime+0x24c>
    6cae:	a2 cf       	rjmp	.-188    	; 0x6bf4 <gmtime+0x190>
    6cb0:	50 93 8e 06 	sts	0x068E, r21
    6cb4:	40 93 8d 06 	sts	0x068D, r20
		{
        	dayno -= _ytab[LEAPYEAR(year)][timep->tm_mon];
			timep->tm_mon++;
        }
        timep->tm_mday = dayno + 1;
    6cb8:	c7 01       	movw	r24, r14
    6cba:	01 96       	adiw	r24, 0x01	; 1
    6cbc:	90 93 8c 06 	sts	0x068C, r25
    6cc0:	80 93 8b 06 	sts	0x068B, r24
        timep->tm_isdst = 0;
    6cc4:	10 92 96 06 	sts	0x0696, r1
    6cc8:	10 92 95 06 	sts	0x0695, r1

        return timep;
}
    6ccc:	85 e8       	ldi	r24, 0x85	; 133
    6cce:	96 e0       	ldi	r25, 0x06	; 6
    6cd0:	1f 91       	pop	r17
    6cd2:	0f 91       	pop	r16
    6cd4:	ff 90       	pop	r15
    6cd6:	ef 90       	pop	r14
    6cd8:	df 90       	pop	r13
    6cda:	cf 90       	pop	r12
    6cdc:	bf 90       	pop	r11
    6cde:	af 90       	pop	r10
    6ce0:	08 95       	ret

00006ce2 <__vector_13>:
 *						   latency at the cost of some stack space.
 *******************************************************************************
 */
ISR(TIMER2_COMPA_vect, ISR_NAKED)
{
    OSINTPUSH();						// custom register save routine
    6ce2:	0f 92       	push	r0
    6ce4:	0f 93       	push	r16
    6ce6:	cf 93       	push	r28
    6ce8:	df 93       	push	r29
    6cea:	0f b7       	in	r16, 0x3f	; 63
    6cec:	00 68       	ori	r16, 0x80	; 128
    6cee:	0f 93       	push	r16
    6cf0:	1f 92       	push	r1
    6cf2:	2f 92       	push	r2
    6cf4:	3f 92       	push	r3
    6cf6:	4f 92       	push	r4
    6cf8:	5f 92       	push	r5
    6cfa:	6f 92       	push	r6
    6cfc:	7f 92       	push	r7
    6cfe:	8f 92       	push	r8
    6d00:	9f 92       	push	r9
    6d02:	af 92       	push	r10
    6d04:	bf 92       	push	r11
    6d06:	cf 92       	push	r12
    6d08:	df 92       	push	r13
    6d0a:	ef 92       	push	r14
    6d0c:	ff 92       	push	r15
    6d0e:	1f 93       	push	r17
    6d10:	2f 93       	push	r18
    6d12:	3f 93       	push	r19
    6d14:	4f 93       	push	r20
    6d16:	5f 93       	push	r21
    6d18:	6f 93       	push	r22
    6d1a:	7f 93       	push	r23
    6d1c:	8f 93       	push	r24
    6d1e:	9f 93       	push	r25
    6d20:	af 93       	push	r26
    6d22:	bf 93       	push	r27
    6d24:	ef 93       	push	r30
    6d26:	ff 93       	push	r31
    6d28:	0b b7       	in	r16, 0x3b	; 59
    6d2a:	0f 93       	push	r16
    6d2c:	0c b7       	in	r16, 0x3c	; 60
    6d2e:	0f 93       	push	r16
    6d30:	11 24       	eor	r1, r1
	
	// hand-optimized OSIntEnter(), also saves SP in TCB in preparation for 
	// context switch
	OSINTENTER_AND_SAVE_SP();
    6d32:	00 91 dd 11 	lds	r16, 0x11DD
    6d36:	03 95       	inc	r16
    6d38:	00 93 dd 11 	sts	0x11DD, r16
    6d3c:	01 30       	cpi	r16, 0x01	; 1
    6d3e:	41 f4       	brne	.+16     	; 0x6d50 <__vector_13+0x6e>
    6d40:	e0 91 de 11 	lds	r30, 0x11DE
    6d44:	f0 91 df 11 	lds	r31, 0x11DF
    6d48:	0d b7       	in	r16, 0x3d	; 61
    6d4a:	01 93       	st	Z+, r16
    6d4c:	0e b7       	in	r16, 0x3e	; 62
    6d4e:	01 93       	st	Z+, r16

	// disable the timer tick overflow interrupt and re-enable the global interrupt mask
#if OSTMR_NESTED_ISR != 0
	TIMSK2 &= ~_BV(OCIE2A);
    6d50:	80 91 70 00 	lds	r24, 0x0070
    6d54:	8d 7f       	andi	r24, 0xFD	; 253
    6d56:	80 93 70 00 	sts	0x0070, r24
	sei();
    6d5a:	78 94       	sei
#endif

    OSTimeTick();						// handle the timers (MicroC/OS)
    6d5c:	0e 94 55 23 	call	0x46aa	; 0x46aa <OSTimeTick>

	// wake up any sleeping tasks where the intercharacter gap is sufficient
	OSuartTimerTickHandler();			
    6d60:	0e 94 bb 31 	call	0x6376	; 0x6376 <OSuartTimerTickHandler>

	(rtcTick < 127)?(rtcTick++):({rtcTick=0; secondTick++; if(timeTick)timeTick++;});
    6d64:	80 91 84 06 	lds	r24, 0x0684
    6d68:	8f 37       	cpi	r24, 0x7F	; 127
    6d6a:	21 f0       	breq	.+8      	; 0x6d74 <__vector_13+0x92>
    6d6c:	8f 5f       	subi	r24, 0xFF	; 255
    6d6e:	80 93 84 06 	sts	0x0684, r24
    6d72:	2c c0       	rjmp	.+88     	; 0x6dcc <__vector_13+0xea>
    6d74:	10 92 84 06 	sts	0x0684, r1
    6d78:	80 91 80 06 	lds	r24, 0x0680
    6d7c:	90 91 81 06 	lds	r25, 0x0681
    6d80:	a0 91 82 06 	lds	r26, 0x0682
    6d84:	b0 91 83 06 	lds	r27, 0x0683
    6d88:	01 96       	adiw	r24, 0x01	; 1
    6d8a:	a1 1d       	adc	r26, r1
    6d8c:	b1 1d       	adc	r27, r1
    6d8e:	80 93 80 06 	sts	0x0680, r24
    6d92:	90 93 81 06 	sts	0x0681, r25
    6d96:	a0 93 82 06 	sts	0x0682, r26
    6d9a:	b0 93 83 06 	sts	0x0683, r27
    6d9e:	80 91 7c 06 	lds	r24, 0x067C
    6da2:	90 91 7d 06 	lds	r25, 0x067D
    6da6:	a0 91 7e 06 	lds	r26, 0x067E
    6daa:	b0 91 7f 06 	lds	r27, 0x067F
    6dae:	00 97       	sbiw	r24, 0x00	; 0
    6db0:	a1 05       	cpc	r26, r1
    6db2:	b1 05       	cpc	r27, r1
    6db4:	59 f0       	breq	.+22     	; 0x6dcc <__vector_13+0xea>
    6db6:	01 96       	adiw	r24, 0x01	; 1
    6db8:	a1 1d       	adc	r26, r1
    6dba:	b1 1d       	adc	r27, r1
    6dbc:	80 93 7c 06 	sts	0x067C, r24
    6dc0:	90 93 7d 06 	sts	0x067D, r25
    6dc4:	a0 93 7e 06 	sts	0x067E, r26
    6dc8:	b0 93 7f 06 	sts	0x067F, r27
	// re-enable the timer tick overflow interrupt and disable the global interrupt mask
#if OSTMR_NESTED_ISR != 0
	cli();
    6dcc:	f8 94       	cli
	TIMSK2 |= _BV(OCIE2A);
    6dce:	80 91 70 00 	lds	r24, 0x0070
    6dd2:	82 60       	ori	r24, 0x02	; 2
    6dd4:	80 93 70 00 	sts	0x0070, r24
#endif

	// notify MicroC/OS that ISR is complete (may perform a task switch)
    OSIntExit();
    6dd8:	0e 94 f8 23 	call	0x47f0	; 0x47f0 <OSIntExit>

	// note that control will not return from OSIntExit unless no context switch has occurred

    OSINTPOP();							// custom register restore routine
    6ddc:	0f 91       	pop	r16
    6dde:	0c bf       	out	0x3c, r16	; 60
    6de0:	0f 91       	pop	r16
    6de2:	0b bf       	out	0x3b, r16	; 59
    6de4:	ff 91       	pop	r31
    6de6:	ef 91       	pop	r30
    6de8:	bf 91       	pop	r27
    6dea:	af 91       	pop	r26
    6dec:	9f 91       	pop	r25
    6dee:	8f 91       	pop	r24
    6df0:	7f 91       	pop	r23
    6df2:	6f 91       	pop	r22
    6df4:	5f 91       	pop	r21
    6df6:	4f 91       	pop	r20
    6df8:	3f 91       	pop	r19
    6dfa:	2f 91       	pop	r18
    6dfc:	1f 91       	pop	r17
    6dfe:	ff 90       	pop	r15
    6e00:	ef 90       	pop	r14
    6e02:	df 90       	pop	r13
    6e04:	cf 90       	pop	r12
    6e06:	bf 90       	pop	r11
    6e08:	af 90       	pop	r10
    6e0a:	9f 90       	pop	r9
    6e0c:	8f 90       	pop	r8
    6e0e:	7f 90       	pop	r7
    6e10:	6f 90       	pop	r6
    6e12:	5f 90       	pop	r5
    6e14:	4f 90       	pop	r4
    6e16:	3f 90       	pop	r3
    6e18:	2f 90       	pop	r2
    6e1a:	1f 90       	pop	r1
    6e1c:	0f 91       	pop	r16
    6e1e:	0f 77       	andi	r16, 0x7F	; 127
    6e20:	0f bf       	out	0x3f, r16	; 63
    6e22:	df 91       	pop	r29
    6e24:	cf 91       	pop	r28
    6e26:	0f 91       	pop	r16
    6e28:	0f 90       	pop	r0
    6e2a:	18 95       	reti

00006e2c <DisableAllPIBModules>:
 *
 * Notes       :    
 *******************************************************************************
 */
void DisableAllPIBModules()
{
    6e2c:	41 e0       	ldi	r20, 0x01	; 1
    6e2e:	50 e0       	ldi	r21, 0x00	; 0
	uint8_t pibNum;

	for (pibNum = 1; pibNum <= 3; ++pibNum)
	{
		pib_module_configure(pibNum);
    6e30:	68 e0       	ldi	r22, 0x08	; 8
    6e32:	70 e0       	ldi	r23, 0x00	; 0
    6e34:	20 91 07 01 	lds	r18, 0x0107
    6e38:	cb 01       	movw	r24, r22
    6e3a:	04 2e       	mov	r0, r20
    6e3c:	02 c0       	rjmp	.+4      	; 0x6e42 <DisableAllPIBModules+0x16>
    6e3e:	88 0f       	add	r24, r24
    6e40:	99 1f       	adc	r25, r25
    6e42:	0a 94       	dec	r0
    6e44:	e2 f7       	brpl	.-8      	; 0x6e3e <DisableAllPIBModules+0x12>
    6e46:	38 2f       	mov	r19, r24
    6e48:	30 95       	com	r19
    6e4a:	23 23       	and	r18, r19
    6e4c:	20 93 07 01 	sts	0x0107, r18
    6e50:	20 91 0a 01 	lds	r18, 0x010A
    6e54:	82 2b       	or	r24, r18
    6e56:	80 93 0a 01 	sts	0x010A, r24
		pib_module_power_off(pibNum);
    6e5a:	80 91 0b 01 	lds	r24, 0x010B
    6e5e:	38 23       	and	r19, r24
    6e60:	30 93 0b 01 	sts	0x010B, r19
    6e64:	4f 5f       	subi	r20, 0xFF	; 255
    6e66:	5f 4f       	sbci	r21, 0xFF	; 255
 */
void DisableAllPIBModules()
{
	uint8_t pibNum;

	for (pibNum = 1; pibNum <= 3; ++pibNum)
    6e68:	44 30       	cpi	r20, 0x04	; 4
    6e6a:	51 05       	cpc	r21, r1
    6e6c:	19 f7       	brne	.-58     	; 0x6e34 <DisableAllPIBModules+0x8>
	{
		pib_module_configure(pibNum);
		pib_module_power_off(pibNum);
	}
}
    6e6e:	08 95       	ret

00006e70 <EepromReadByte>:

#define EEPROM_FAIL		0x00
#define EEPROM_SUCCESS	0xFF

uint8_t EepromReadByte(void* eepromAddr, void* pData)
{
    6e70:	fb 01       	movw	r30, r22
	unsigned retval = EEPROM_FAIL;

	if((uint16_t)eepromAddr < EEPROM_MAX)
    6e72:	9c 01       	movw	r18, r24
    6e74:	80 e1       	ldi	r24, 0x10	; 16
    6e76:	20 30       	cpi	r18, 0x00	; 0
    6e78:	38 07       	cpc	r19, r24
    6e7a:	18 f0       	brcs	.+6      	; 0x6e82 <EepromReadByte+0x12>
    6e7c:	80 e0       	ldi	r24, 0x00	; 0
    6e7e:	90 e0       	ldi	r25, 0x00	; 0
    6e80:	08 95       	ret
	{
		eeprom_busy_wait();
    6e82:	f9 99       	sbic	0x1f, 1	; 31
    6e84:	fe cf       	rjmp	.-4      	; 0x6e82 <EepromReadByte+0x12>
/** \ingroup avr_eeprom
    Read one byte from EEPROM address \a __p.
 */
__ATTR_PURE__ static __inline__ uint8_t eeprom_read_byte (const uint8_t *__p)
{
    do {} while (!eeprom_is_ready ());
    6e86:	f9 99       	sbic	0x1f, 1	; 31
    6e88:	fe cf       	rjmp	.-4      	; 0x6e86 <EepromReadByte+0x16>
#if E2END <= 0xFF
    EEARL = (size_t)__p;
#else
    EEAR = (size_t)__p;
    6e8a:	32 bd       	out	0x22, r19	; 34
    6e8c:	21 bd       	out	0x21, r18	; 33
    /* Use inline assembly below as some AVRs have problems with accessing
    EECR with STS instructions. For example, see errata for ATmega64. 
    The code below also assumes that EECR and EEDR are in the I/O space.
    */
    uint8_t __result;
    __asm__ __volatile__
    6e8e:	f8 9a       	sbi	0x1f, 0	; 31
    6e90:	80 b5       	in	r24, 0x20	; 32
		*((uint8_t*)pData) = eeprom_read_byte ((const uint8_t *)eepromAddr);
    6e92:	80 83       	st	Z, r24
    6e94:	8f ef       	ldi	r24, 0xFF	; 255
    6e96:	90 e0       	ldi	r25, 0x00	; 0
		retval = EEPROM_SUCCESS;
	}

	return retval;
}
    6e98:	08 95       	ret

00006e9a <EepromReadWord>:


uint8_t EepromReadWord(void* eepromAddr, void* pData)
{
    6e9a:	fb 01       	movw	r30, r22
	uint8_t retval = EEPROM_FAIL;

	if((uint16_t)eepromAddr < (EEPROM_MAX - 1))
    6e9c:	2f e0       	ldi	r18, 0x0F	; 15
    6e9e:	8f 3f       	cpi	r24, 0xFF	; 255
    6ea0:	92 07       	cpc	r25, r18
    6ea2:	10 f0       	brcs	.+4      	; 0x6ea8 <EepromReadWord+0xe>
    6ea4:	80 e0       	ldi	r24, 0x00	; 0
    6ea6:	08 95       	ret
	{
		eeprom_busy_wait();
    6ea8:	f9 99       	sbic	0x1f, 1	; 31
    6eaa:	fe cf       	rjmp	.-4      	; 0x6ea8 <EepromReadWord+0xe>
/** \ingroup avr_eeprom
    Read one byte from EEPROM address \a __p.
 */
__ATTR_PURE__ static __inline__ uint8_t eeprom_read_byte (const uint8_t *__p)
{
    do {} while (!eeprom_is_ready ());
    6eac:	f9 99       	sbic	0x1f, 1	; 31
    6eae:	fe cf       	rjmp	.-4      	; 0x6eac <EepromReadWord+0x12>
#if E2END <= 0xFF
    EEARL = (size_t)__p;
#else
    EEAR = (size_t)__p;
    6eb0:	92 bd       	out	0x22, r25	; 34
    6eb2:	81 bd       	out	0x21, r24	; 33
    /* Use inline assembly below as some AVRs have problems with accessing
    EECR with STS instructions. For example, see errata for ATmega64. 
    The code below also assumes that EECR and EEDR are in the I/O space.
    */
    uint8_t __result;
    __asm__ __volatile__
    6eb4:	f8 9a       	sbi	0x1f, 0	; 31
    6eb6:	20 b5       	in	r18, 0x20	; 32
/** \ingroup avr_eeprom
    Read one byte from EEPROM address \a __p.
 */
__ATTR_PURE__ static __inline__ uint8_t eeprom_read_byte (const uint8_t *__p)
{
    do {} while (!eeprom_is_ready ());
    6eb8:	f9 99       	sbic	0x1f, 1	; 31
    6eba:	fe cf       	rjmp	.-4      	; 0x6eb8 <EepromReadWord+0x1e>
#if E2END <= 0xFF
    EEARL = (size_t)__p;
#else
    EEAR = (size_t)__p;
    6ebc:	01 96       	adiw	r24, 0x01	; 1
    6ebe:	92 bd       	out	0x22, r25	; 34
    6ec0:	81 bd       	out	0x21, r24	; 33
    /* Use inline assembly below as some AVRs have problems with accessing
    EECR with STS instructions. For example, see errata for ATmega64. 
    The code below also assumes that EECR and EEDR are in the I/O space.
    */
    uint8_t __result;
    __asm__ __volatile__
    6ec2:	f8 9a       	sbi	0x1f, 0	; 31
    6ec4:	80 b5       	in	r24, 0x20	; 32
		*((uint16_t*)pData) = eeprom_read_word ((const uint16_t *)eepromAddr);
    6ec6:	20 83       	st	Z, r18
    6ec8:	81 83       	std	Z+1, r24	; 0x01
    6eca:	8f ef       	ldi	r24, 0xFF	; 255
		retval = EEPROM_SUCCESS;
	}

	return retval;
}
    6ecc:	08 95       	ret

00006ece <EepromReadBlock>:


uint8_t EepromReadBlock(void* eepromAddr, void* pData, uint16_t length)
{
    6ece:	fb 01       	movw	r30, r22
	uint8_t retval = EEPROM_FAIL;

	if((uint16_t)eepromAddr < EEPROM_MAX)
    6ed0:	9c 01       	movw	r18, r24
    6ed2:	80 e1       	ldi	r24, 0x10	; 16
    6ed4:	20 30       	cpi	r18, 0x00	; 0
    6ed6:	38 07       	cpc	r19, r24
    6ed8:	d0 f4       	brcc	.+52     	; 0x6f0e <EepromReadBlock+0x40>
	{
		if((EEPROM_MAX - (uint16_t)eepromAddr) >= length)
    6eda:	80 e0       	ldi	r24, 0x00	; 0
    6edc:	90 e1       	ldi	r25, 0x10	; 16
    6ede:	82 1b       	sub	r24, r18
    6ee0:	93 0b       	sbc	r25, r19
    6ee2:	84 17       	cp	r24, r20
    6ee4:	95 07       	cpc	r25, r21
    6ee6:	98 f0       	brcs	.+38     	; 0x6f0e <EepromReadBlock+0x40>
		{
			eeprom_busy_wait();
    6ee8:	f9 99       	sbic	0x1f, 1	; 31
    6eea:	fe cf       	rjmp	.-4      	; 0x6ee8 <EepromReadBlock+0x1a>
    6eec:	0b c0       	rjmp	.+22     	; 0x6f04 <EepromReadBlock+0x36>
/** \ingroup avr_eeprom
    Read one byte from EEPROM address \a __p.
 */
__ATTR_PURE__ static __inline__ uint8_t eeprom_read_byte (const uint8_t *__p)
{
    do {} while (!eeprom_is_ready ());
    6eee:	f9 99       	sbic	0x1f, 1	; 31
    6ef0:	fe cf       	rjmp	.-4      	; 0x6eee <EepromReadBlock+0x20>
#if E2END <= 0xFF
    EEARL = (size_t)__p;
#else
    EEAR = (size_t)__p;
    6ef2:	32 bd       	out	0x22, r19	; 34
    6ef4:	21 bd       	out	0x21, r18	; 33
    /* Use inline assembly below as some AVRs have problems with accessing
    EECR with STS instructions. For example, see errata for ATmega64. 
    The code below also assumes that EECR and EEDR are in the I/O space.
    */
    uint8_t __result;
    __asm__ __volatile__
    6ef6:	f8 9a       	sbi	0x1f, 0	; 31
    6ef8:	80 b5       	in	r24, 0x20	; 32
    __eerd_block (__dst, __src, __n, eeprom_read_byte);
#else
    /* If ATmega256x device, do not call function. */
    while (__n--)
    {
        *(char *)__dst++ = eeprom_read_byte(__src++);
    6efa:	81 93       	st	Z+, r24
    6efc:	2f 5f       	subi	r18, 0xFF	; 255
    6efe:	3f 4f       	sbci	r19, 0xFF	; 255
    6f00:	41 50       	subi	r20, 0x01	; 1
    6f02:	50 40       	sbci	r21, 0x00	; 0
{
#if (! (defined(__AVR_ATmega2560__) || defined(__AVR_ATmega2561__)) )
    __eerd_block (__dst, __src, __n, eeprom_read_byte);
#else
    /* If ATmega256x device, do not call function. */
    while (__n--)
    6f04:	41 15       	cp	r20, r1
    6f06:	51 05       	cpc	r21, r1
    6f08:	91 f7       	brne	.-28     	; 0x6eee <EepromReadBlock+0x20>
    6f0a:	8f ef       	ldi	r24, 0xFF	; 255
    6f0c:	08 95       	ret
    6f0e:	80 e0       	ldi	r24, 0x00	; 0
			retval = EEPROM_SUCCESS;
		}
	}
	 	
	return retval;
}
    6f10:	08 95       	ret

00006f12 <EepromWriteByteSigned>:

uint8_t EepromWriteByteSigned(void* eepromAddr, int8_t data)
{
	uint8_t retval = EEPROM_FAIL;

	if((uint16_t)eepromAddr < EEPROM_MAX)
    6f12:	9c 01       	movw	r18, r24
    6f14:	80 e1       	ldi	r24, 0x10	; 16
    6f16:	20 30       	cpi	r18, 0x00	; 0
    6f18:	38 07       	cpc	r19, r24
    6f1a:	10 f0       	brcs	.+4      	; 0x6f20 <EepromWriteByteSigned+0xe>
    6f1c:	80 e0       	ldi	r24, 0x00	; 0
    6f1e:	08 95       	ret
	{
		eeprom_busy_wait();
    6f20:	f9 99       	sbic	0x1f, 1	; 31
    6f22:	fe cf       	rjmp	.-4      	; 0x6f20 <EepromWriteByteSigned+0xe>
/** \ingroup avr_eeprom
    Write a byte \a __value to EEPROM address \a __p.
 */
static __inline__ void eeprom_write_byte (uint8_t *__p, uint8_t __value)
{
    do {} while (!eeprom_is_ready ());
    6f24:	f9 99       	sbic	0x1f, 1	; 31
    6f26:	fe cf       	rjmp	.-4      	; 0x6f24 <EepromWriteByteSigned+0x12>

#if	defined(EEPM0) && defined(EEPM1)
    EECR = 0;		/* Set programming mode: erase and write.	*/
    6f28:	1f ba       	out	0x1f, r1	; 31
#endif

#if	E2END <= 0xFF
    EEARL = (size_t)__p;
#else
    EEAR = (size_t)__p;
    6f2a:	32 bd       	out	0x22, r19	; 34
    6f2c:	21 bd       	out	0x21, r18	; 33
#endif
    EEDR = __value;
    6f2e:	60 bd       	out	0x20, r22	; 32

    __asm__ __volatile__ (
    6f30:	0f b6       	in	r0, 0x3f	; 63
    6f32:	f8 94       	cli
    6f34:	fa 9a       	sbi	0x1f, 2	; 31
    6f36:	f9 9a       	sbi	0x1f, 1	; 31
    6f38:	0f be       	out	0x3f, r0	; 63
    6f3a:	8f ef       	ldi	r24, 0xFF	; 255
		eeprom_write_byte((uint8_t*)eepromAddr, (uint8_t)data); 		
		retval = EEPROM_SUCCESS;
	}

	return retval;
}
    6f3c:	08 95       	ret

00006f3e <EepromWriteByteUnSigned>:

uint8_t EepromWriteByteUnSigned(void* eepromAddr, uint8_t data)
{
	uint8_t retval = EEPROM_FAIL;

	if((uint16_t)eepromAddr < EEPROM_MAX)
    6f3e:	9c 01       	movw	r18, r24
    6f40:	80 e1       	ldi	r24, 0x10	; 16
    6f42:	20 30       	cpi	r18, 0x00	; 0
    6f44:	38 07       	cpc	r19, r24
    6f46:	10 f0       	brcs	.+4      	; 0x6f4c <EepromWriteByteUnSigned+0xe>
    6f48:	80 e0       	ldi	r24, 0x00	; 0
    6f4a:	08 95       	ret
	{
		eeprom_busy_wait();
    6f4c:	f9 99       	sbic	0x1f, 1	; 31
    6f4e:	fe cf       	rjmp	.-4      	; 0x6f4c <EepromWriteByteUnSigned+0xe>
/** \ingroup avr_eeprom
    Write a byte \a __value to EEPROM address \a __p.
 */
static __inline__ void eeprom_write_byte (uint8_t *__p, uint8_t __value)
{
    do {} while (!eeprom_is_ready ());
    6f50:	f9 99       	sbic	0x1f, 1	; 31
    6f52:	fe cf       	rjmp	.-4      	; 0x6f50 <EepromWriteByteUnSigned+0x12>

#if	defined(EEPM0) && defined(EEPM1)
    EECR = 0;		/* Set programming mode: erase and write.	*/
    6f54:	1f ba       	out	0x1f, r1	; 31
#endif

#if	E2END <= 0xFF
    EEARL = (size_t)__p;
#else
    EEAR = (size_t)__p;
    6f56:	32 bd       	out	0x22, r19	; 34
    6f58:	21 bd       	out	0x21, r18	; 33
#endif
    EEDR = __value;
    6f5a:	60 bd       	out	0x20, r22	; 32

    __asm__ __volatile__ (
    6f5c:	0f b6       	in	r0, 0x3f	; 63
    6f5e:	f8 94       	cli
    6f60:	fa 9a       	sbi	0x1f, 2	; 31
    6f62:	f9 9a       	sbi	0x1f, 1	; 31
    6f64:	0f be       	out	0x3f, r0	; 63
    6f66:	8f ef       	ldi	r24, 0xFF	; 255
		eeprom_write_byte((uint8_t*)eepromAddr, data); 		
		retval = EEPROM_SUCCESS;
	}

	return retval;
}
    6f68:	08 95       	ret

00006f6a <EepromWriteWordSigned>:

uint8_t EepromWriteWordSigned(void* eepromAddr, int16_t data)
{
	uint8_t retval = EEPROM_FAIL;

	if((uint16_t)eepromAddr < (EEPROM_MAX - 1))
    6f6a:	2f e0       	ldi	r18, 0x0F	; 15
    6f6c:	8f 3f       	cpi	r24, 0xFF	; 255
    6f6e:	92 07       	cpc	r25, r18
    6f70:	10 f0       	brcs	.+4      	; 0x6f76 <EepromWriteWordSigned+0xc>
    6f72:	80 e0       	ldi	r24, 0x00	; 0
    6f74:	08 95       	ret
	{
		eeprom_busy_wait();
    6f76:	f9 99       	sbic	0x1f, 1	; 31
    6f78:	fe cf       	rjmp	.-4      	; 0x6f76 <EepromWriteWordSigned+0xc>
/** \ingroup avr_eeprom
    Write a byte \a __value to EEPROM address \a __p.
 */
static __inline__ void eeprom_write_byte (uint8_t *__p, uint8_t __value)
{
    do {} while (!eeprom_is_ready ());
    6f7a:	f9 99       	sbic	0x1f, 1	; 31
    6f7c:	fe cf       	rjmp	.-4      	; 0x6f7a <EepromWriteWordSigned+0x10>

#if	defined(EEPM0) && defined(EEPM1)
    EECR = 0;		/* Set programming mode: erase and write.	*/
    6f7e:	1f ba       	out	0x1f, r1	; 31
#endif

#if	E2END <= 0xFF
    EEARL = (size_t)__p;
#else
    EEAR = (size_t)__p;
    6f80:	92 bd       	out	0x22, r25	; 34
    6f82:	81 bd       	out	0x21, r24	; 33
#endif
    EEDR = __value;
    6f84:	60 bd       	out	0x20, r22	; 32

    __asm__ __volatile__ (
    6f86:	0f b6       	in	r0, 0x3f	; 63
    6f88:	f8 94       	cli
    6f8a:	fa 9a       	sbi	0x1f, 2	; 31
    6f8c:	f9 9a       	sbi	0x1f, 1	; 31
    6f8e:	0f be       	out	0x3f, r0	; 63
/** \ingroup avr_eeprom
    Write a byte \a __value to EEPROM address \a __p.
 */
static __inline__ void eeprom_write_byte (uint8_t *__p, uint8_t __value)
{
    do {} while (!eeprom_is_ready ());
    6f90:	f9 99       	sbic	0x1f, 1	; 31
    6f92:	fe cf       	rjmp	.-4      	; 0x6f90 <EepromWriteWordSigned+0x26>

#if	defined(EEPM0) && defined(EEPM1)
    EECR = 0;		/* Set programming mode: erase and write.	*/
    6f94:	1f ba       	out	0x1f, r1	; 31
#endif

#if	E2END <= 0xFF
    EEARL = (size_t)__p;
#else
    EEAR = (size_t)__p;
    6f96:	01 96       	adiw	r24, 0x01	; 1
    6f98:	92 bd       	out	0x22, r25	; 34
    6f9a:	81 bd       	out	0x21, r24	; 33
#endif
    EEDR = __value;
    6f9c:	70 bd       	out	0x20, r23	; 32

    __asm__ __volatile__ (
    6f9e:	0f b6       	in	r0, 0x3f	; 63
    6fa0:	f8 94       	cli
    6fa2:	fa 9a       	sbi	0x1f, 2	; 31
    6fa4:	f9 9a       	sbi	0x1f, 1	; 31
    6fa6:	0f be       	out	0x3f, r0	; 63
    6fa8:	8f ef       	ldi	r24, 0xFF	; 255
		eeprom_write_word((uint16_t*)eepromAddr, (uint16_t)data); 		
		retval = EEPROM_SUCCESS;
	}

	return retval;
}
    6faa:	08 95       	ret

00006fac <EepromWriteWordUnSigned>:

uint8_t EepromWriteWordUnSigned(void* eepromAddr, uint16_t data)
{
	uint8_t retval = EEPROM_FAIL;

	if((uint16_t)eepromAddr < (EEPROM_MAX - 1))
    6fac:	2f e0       	ldi	r18, 0x0F	; 15
    6fae:	8f 3f       	cpi	r24, 0xFF	; 255
    6fb0:	92 07       	cpc	r25, r18
    6fb2:	10 f0       	brcs	.+4      	; 0x6fb8 <EepromWriteWordUnSigned+0xc>
    6fb4:	80 e0       	ldi	r24, 0x00	; 0
    6fb6:	08 95       	ret
	{
		eeprom_busy_wait();
    6fb8:	f9 99       	sbic	0x1f, 1	; 31
    6fba:	fe cf       	rjmp	.-4      	; 0x6fb8 <EepromWriteWordUnSigned+0xc>
/** \ingroup avr_eeprom
    Write a byte \a __value to EEPROM address \a __p.
 */
static __inline__ void eeprom_write_byte (uint8_t *__p, uint8_t __value)
{
    do {} while (!eeprom_is_ready ());
    6fbc:	f9 99       	sbic	0x1f, 1	; 31
    6fbe:	fe cf       	rjmp	.-4      	; 0x6fbc <EepromWriteWordUnSigned+0x10>

#if	defined(EEPM0) && defined(EEPM1)
    EECR = 0;		/* Set programming mode: erase and write.	*/
    6fc0:	1f ba       	out	0x1f, r1	; 31
#endif

#if	E2END <= 0xFF
    EEARL = (size_t)__p;
#else
    EEAR = (size_t)__p;
    6fc2:	92 bd       	out	0x22, r25	; 34
    6fc4:	81 bd       	out	0x21, r24	; 33
#endif
    EEDR = __value;
    6fc6:	60 bd       	out	0x20, r22	; 32

    __asm__ __volatile__ (
    6fc8:	0f b6       	in	r0, 0x3f	; 63
    6fca:	f8 94       	cli
    6fcc:	fa 9a       	sbi	0x1f, 2	; 31
    6fce:	f9 9a       	sbi	0x1f, 1	; 31
    6fd0:	0f be       	out	0x3f, r0	; 63
/** \ingroup avr_eeprom
    Write a byte \a __value to EEPROM address \a __p.
 */
static __inline__ void eeprom_write_byte (uint8_t *__p, uint8_t __value)
{
    do {} while (!eeprom_is_ready ());
    6fd2:	f9 99       	sbic	0x1f, 1	; 31
    6fd4:	fe cf       	rjmp	.-4      	; 0x6fd2 <EepromWriteWordUnSigned+0x26>

#if	defined(EEPM0) && defined(EEPM1)
    EECR = 0;		/* Set programming mode: erase and write.	*/
    6fd6:	1f ba       	out	0x1f, r1	; 31
#endif

#if	E2END <= 0xFF
    EEARL = (size_t)__p;
#else
    EEAR = (size_t)__p;
    6fd8:	01 96       	adiw	r24, 0x01	; 1
    6fda:	92 bd       	out	0x22, r25	; 34
    6fdc:	81 bd       	out	0x21, r24	; 33
#endif
    EEDR = __value;
    6fde:	70 bd       	out	0x20, r23	; 32

    __asm__ __volatile__ (
    6fe0:	0f b6       	in	r0, 0x3f	; 63
    6fe2:	f8 94       	cli
    6fe4:	fa 9a       	sbi	0x1f, 2	; 31
    6fe6:	f9 9a       	sbi	0x1f, 1	; 31
    6fe8:	0f be       	out	0x3f, r0	; 63
    6fea:	8f ef       	ldi	r24, 0xFF	; 255
		eeprom_write_word((uint16_t*)eepromAddr, data); 		
		retval = EEPROM_SUCCESS;
	}

	return retval;
}
    6fec:	08 95       	ret

00006fee <EepromWriteBlock>:



uint8_t EepromWriteBlock(void* eepromAddr, void* pData, uint16_t length)
{
    6fee:	fb 01       	movw	r30, r22
	uint8_t retval = EEPROM_FAIL;

	if((uint16_t)eepromAddr < EEPROM_MAX)
    6ff0:	9c 01       	movw	r18, r24
    6ff2:	80 e1       	ldi	r24, 0x10	; 16
    6ff4:	20 30       	cpi	r18, 0x00	; 0
    6ff6:	38 07       	cpc	r19, r24
    6ff8:	00 f5       	brcc	.+64     	; 0x703a <EepromWriteBlock+0x4c>
	{
		if((EEPROM_MAX - (uint16_t)eepromAddr) >= length)
    6ffa:	80 e0       	ldi	r24, 0x00	; 0
    6ffc:	90 e1       	ldi	r25, 0x10	; 16
    6ffe:	82 1b       	sub	r24, r18
    7000:	93 0b       	sbc	r25, r19
    7002:	84 17       	cp	r24, r20
    7004:	95 07       	cpc	r25, r21
    7006:	c8 f0       	brcs	.+50     	; 0x703a <EepromWriteBlock+0x4c>
		{
			eeprom_busy_wait();
    7008:	f9 99       	sbic	0x1f, 1	; 31
    700a:	fe cf       	rjmp	.-4      	; 0x7008 <EepromWriteBlock+0x1a>
    700c:	11 c0       	rjmp	.+34     	; 0x7030 <EepromWriteBlock+0x42>
#if (! (defined(__AVR_ATmega2560__) || defined(__AVR_ATmega2561__)) )
    __eewr_block (__dst, __src, __n, eeprom_write_byte);
#else
    /* If ATmega256x device, do not call function. */
    while (__n--)
        eeprom_write_byte (__dst++, *(uint8_t *)__src++);
    700e:	80 81       	ld	r24, Z
/** \ingroup avr_eeprom
    Write a byte \a __value to EEPROM address \a __p.
 */
static __inline__ void eeprom_write_byte (uint8_t *__p, uint8_t __value)
{
    do {} while (!eeprom_is_ready ());
    7010:	f9 99       	sbic	0x1f, 1	; 31
    7012:	fe cf       	rjmp	.-4      	; 0x7010 <EepromWriteBlock+0x22>
#if (! (defined(__AVR_ATmega2560__) || defined(__AVR_ATmega2561__)) )
    __eewr_block (__dst, __src, __n, eeprom_write_byte);
#else
    /* If ATmega256x device, do not call function. */
    while (__n--)
        eeprom_write_byte (__dst++, *(uint8_t *)__src++);
    7014:	31 96       	adiw	r30, 0x01	; 1
static __inline__ void eeprom_write_byte (uint8_t *__p, uint8_t __value)
{
    do {} while (!eeprom_is_ready ());

#if	defined(EEPM0) && defined(EEPM1)
    EECR = 0;		/* Set programming mode: erase and write.	*/
    7016:	1f ba       	out	0x1f, r1	; 31
#endif

#if	E2END <= 0xFF
    EEARL = (size_t)__p;
#else
    EEAR = (size_t)__p;
    7018:	32 bd       	out	0x22, r19	; 34
    701a:	21 bd       	out	0x21, r18	; 33
#endif
    EEDR = __value;
    701c:	80 bd       	out	0x20, r24	; 32

    __asm__ __volatile__ (
    701e:	0f b6       	in	r0, 0x3f	; 63
    7020:	f8 94       	cli
    7022:	fa 9a       	sbi	0x1f, 2	; 31
    7024:	f9 9a       	sbi	0x1f, 1	; 31
    7026:	0f be       	out	0x3f, r0	; 63
    7028:	2f 5f       	subi	r18, 0xFF	; 255
    702a:	3f 4f       	sbci	r19, 0xFF	; 255
    702c:	41 50       	subi	r20, 0x01	; 1
    702e:	50 40       	sbci	r21, 0x00	; 0
{
#if (! (defined(__AVR_ATmega2560__) || defined(__AVR_ATmega2561__)) )
    __eewr_block (__dst, __src, __n, eeprom_write_byte);
#else
    /* If ATmega256x device, do not call function. */
    while (__n--)
    7030:	41 15       	cp	r20, r1
    7032:	51 05       	cpc	r21, r1
    7034:	61 f7       	brne	.-40     	; 0x700e <EepromWriteBlock+0x20>
    7036:	8f ef       	ldi	r24, 0xFF	; 255
    7038:	08 95       	ret
    703a:	80 e0       	ldi	r24, 0x00	; 0
			retval = EEPROM_SUCCESS;
		}
	}
	 		
	return retval;
}
    703c:	08 95       	ret

0000703e <getCommand>:



//Command Parsing Routine
char getCommand(char** myCommand, prog_char* cmdListLong_P, uint8_t cmdSize, uint8_t numCmds, prog_char* cmdList_P, char* pParserList)
{
    703e:	4f 92       	push	r4
    7040:	5f 92       	push	r5
    7042:	6f 92       	push	r6
    7044:	7f 92       	push	r7
    7046:	8f 92       	push	r8
    7048:	9f 92       	push	r9
    704a:	af 92       	push	r10
    704c:	bf 92       	push	r11
    704e:	cf 92       	push	r12
    7050:	df 92       	push	r13
    7052:	ef 92       	push	r14
    7054:	ff 92       	push	r15
    7056:	0f 93       	push	r16
    7058:	1f 93       	push	r17
    705a:	df 93       	push	r29
    705c:	cf 93       	push	r28
    705e:	0f 92       	push	r0
    7060:	cd b7       	in	r28, 0x3d	; 61
    7062:	de b7       	in	r29, 0x3e	; 62
    7064:	6c 01       	movw	r12, r24
    7066:	5b 01       	movw	r10, r22
    7068:	44 2e       	mov	r4, r20
    706a:	52 2e       	mov	r5, r18
    706c:	48 01       	movw	r8, r16
	char command = 0;
    706e:	19 82       	std	Y+1, r1	; 0x01
	char* result = NULL;

	if(strncmp(*myCommand, "--", 2) == 0)
    7070:	fc 01       	movw	r30, r24
    7072:	00 81       	ld	r16, Z
    7074:	11 81       	ldd	r17, Z+1	; 0x01
    7076:	c8 01       	movw	r24, r16
    7078:	6c e6       	ldi	r22, 0x6C	; 108
    707a:	73 e0       	ldi	r23, 0x03	; 3
    707c:	42 e0       	ldi	r20, 0x02	; 2
    707e:	50 e0       	ldi	r21, 0x00	; 0
    7080:	0e 94 59 f0 	call	0x1e0b2	; 0x1e0b2 <strncmp>
    7084:	00 97       	sbiw	r24, 0x00	; 0
    7086:	79 f5       	brne	.+94     	; 0x70e6 <getCommand+0xa8>
	{
		//long command
		*myCommand+=2;
    7088:	0e 5f       	subi	r16, 0xFE	; 254
    708a:	1f 4f       	sbci	r17, 0xFF	; 255
    708c:	f6 01       	movw	r30, r12
    708e:	11 83       	std	Z+1, r17	; 0x01
    7090:	00 83       	st	Z, r16
		result = strtok_r(NULL, pParserList, myCommand);
    7092:	80 e0       	ldi	r24, 0x00	; 0
    7094:	90 e0       	ldi	r25, 0x00	; 0
    7096:	b7 01       	movw	r22, r14
    7098:	a6 01       	movw	r20, r12
    709a:	0e 94 a0 f0 	call	0x1e140	; 0x1e140 <strtok_r>
    709e:	3c 01       	movw	r6, r24
    70a0:	00 e0       	ldi	r16, 0x00	; 0
    70a2:	10 e0       	ldi	r17, 0x00	; 0

		for(int i = 0; i<numCmds; i++)
    70a4:	c5 2c       	mov	r12, r5
    70a6:	dd 24       	eor	r13, r13



//Command Parsing Routine
char getCommand(char** myCommand, prog_char* cmdListLong_P, uint8_t cmdSize, uint8_t numCmds, prog_char* cmdList_P, char* pParserList)
{
    70a8:	e4 2c       	mov	r14, r4
    70aa:	ff 24       	eor	r15, r15
    70ac:	18 c0       	rjmp	.+48     	; 0x70de <getCommand+0xa0>
		*myCommand+=2;
		result = strtok_r(NULL, pParserList, myCommand);

		for(int i = 0; i<numCmds; i++)
		{
			if(strncasecmp_P(result, cmdListLong_P, strlen_P(cmdListLong_P)) == 0)
    70ae:	c5 01       	movw	r24, r10
    70b0:	0e 94 c6 ef 	call	0x1df8c	; 0x1df8c <strlen_P>
    70b4:	ac 01       	movw	r20, r24
    70b6:	c3 01       	movw	r24, r6
    70b8:	b5 01       	movw	r22, r10
    70ba:	0e 94 cf ef 	call	0x1df9e	; 0x1df9e <strncasecmp_P>
    70be:	89 2b       	or	r24, r25
    70c0:	51 f4       	brne	.+20     	; 0x70d6 <getCommand+0x98>
			{
				memcpy_P(&command, &cmdList_P[i], 1);
    70c2:	08 0d       	add	r16, r8
    70c4:	19 1d       	adc	r17, r9
    70c6:	ce 01       	movw	r24, r28
    70c8:	01 96       	adiw	r24, 0x01	; 1
    70ca:	b8 01       	movw	r22, r16
    70cc:	41 e0       	ldi	r20, 0x01	; 1
    70ce:	50 e0       	ldi	r21, 0x00	; 0
    70d0:	0e 94 ab ef 	call	0x1df56	; 0x1df56 <memcpy_P>
    70d4:	24 c0       	rjmp	.+72     	; 0x711e <getCommand+0xe0>



//Command Parsing Routine
char getCommand(char** myCommand, prog_char* cmdListLong_P, uint8_t cmdSize, uint8_t numCmds, prog_char* cmdList_P, char* pParserList)
{
    70d6:	ae 0c       	add	r10, r14
    70d8:	bf 1c       	adc	r11, r15
	{
		//long command
		*myCommand+=2;
		result = strtok_r(NULL, pParserList, myCommand);

		for(int i = 0; i<numCmds; i++)
    70da:	0f 5f       	subi	r16, 0xFF	; 255
    70dc:	1f 4f       	sbci	r17, 0xFF	; 255
    70de:	0c 15       	cp	r16, r12
    70e0:	1d 05       	cpc	r17, r13
    70e2:	2c f3       	brlt	.-54     	; 0x70ae <getCommand+0x70>
    70e4:	1c c0       	rjmp	.+56     	; 0x711e <getCommand+0xe0>
				break;
			}
			cmdListLong_P += cmdSize;
		}
	}
	else if(strncmp(*myCommand, "-", 1) == 0)
    70e6:	f8 01       	movw	r30, r16
    70e8:	80 81       	ld	r24, Z
    70ea:	8d 32       	cpi	r24, 0x2D	; 45
    70ec:	c1 f4       	brne	.+48     	; 0x711e <getCommand+0xe0>
	{
		//short Command
		*myCommand+=1;
    70ee:	c8 01       	movw	r24, r16
    70f0:	01 96       	adiw	r24, 0x01	; 1
    70f2:	f6 01       	movw	r30, r12
    70f4:	91 83       	std	Z+1, r25	; 0x01
    70f6:	80 83       	st	Z, r24
		command = **myCommand;
    70f8:	f8 01       	movw	r30, r16
    70fa:	11 81       	ldd	r17, Z+1	; 0x01
    70fc:	19 83       	std	Y+1, r17	; 0x01
		*myCommand+=1;
    70fe:	01 96       	adiw	r24, 0x01	; 1
    7100:	f6 01       	movw	r30, r12
    7102:	91 83       	std	Z+1, r25	; 0x01
    7104:	80 83       	st	Z, r24

		if(memchr_P(cmdList_P, command, strlen_P(cmdList_P)) == NULL)
    7106:	c4 01       	movw	r24, r8
    7108:	0e 94 c6 ef 	call	0x1df8c	; 0x1df8c <strlen_P>
    710c:	ac 01       	movw	r20, r24
    710e:	c4 01       	movw	r24, r8
    7110:	61 2f       	mov	r22, r17
    7112:	70 e0       	ldi	r23, 0x00	; 0
    7114:	0e 94 9e ef 	call	0x1df3c	; 0x1df3c <memchr_P>
    7118:	89 2b       	or	r24, r25
    711a:	09 f4       	brne	.+2      	; 0x711e <getCommand+0xe0>
			command = 0;
    711c:	19 82       	std	Y+1, r1	; 0x01
	}

	return command;
}
    711e:	89 81       	ldd	r24, Y+1	; 0x01
    7120:	0f 90       	pop	r0
    7122:	cf 91       	pop	r28
    7124:	df 91       	pop	r29
    7126:	1f 91       	pop	r17
    7128:	0f 91       	pop	r16
    712a:	ff 90       	pop	r15
    712c:	ef 90       	pop	r14
    712e:	df 90       	pop	r13
    7130:	cf 90       	pop	r12
    7132:	bf 90       	pop	r11
    7134:	af 90       	pop	r10
    7136:	9f 90       	pop	r9
    7138:	8f 90       	pop	r8
    713a:	7f 90       	pop	r7
    713c:	6f 90       	pop	r6
    713e:	5f 90       	pop	r5
    7140:	4f 90       	pop	r4
    7142:	08 95       	ret

00007144 <EnablePIBModule>:
 *
 * Notes       :    
 *******************************************************************************
 */
BOOLEAN EnablePIBModule(uint8_t pibNum, BOOLEAN enablePIB, BOOLEAN detectEnable)
{
    7144:	ff 92       	push	r15
    7146:	0f 93       	push	r16
    7148:	1f 93       	push	r17
    714a:	cf 93       	push	r28
    714c:	df 93       	push	r29
    714e:	98 2f       	mov	r25, r24
    7150:	f6 2e       	mov	r15, r22
	// fail if hte pib module is out of range
	if (!valid_pib_module(pibNum))
    7152:	81 50       	subi	r24, 0x01	; 1
    7154:	83 30       	cpi	r24, 0x03	; 3
    7156:	10 f0       	brcs	.+4      	; 0x715c <EnablePIBModule+0x18>
    7158:	90 e0       	ldi	r25, 0x00	; 0
    715a:	53 c0       	rjmp	.+166    	; 0x7202 <EnablePIBModule+0xbe>
		return OS_FALSE;

	// set up the basic configuration for the PIB module (pins, etc.)
	pib_module_configure(pibNum);
    715c:	80 91 07 01 	lds	r24, 0x0107
    7160:	c8 e0       	ldi	r28, 0x08	; 8
    7162:	d0 e0       	ldi	r29, 0x00	; 0
    7164:	02 c0       	rjmp	.+4      	; 0x716a <EnablePIBModule+0x26>
    7166:	cc 0f       	add	r28, r28
    7168:	dd 1f       	adc	r29, r29
    716a:	9a 95       	dec	r25
    716c:	e2 f7       	brpl	.-8      	; 0x7166 <EnablePIBModule+0x22>
    716e:	9c 2f       	mov	r25, r28
    7170:	0c 2f       	mov	r16, r28
    7172:	00 95       	com	r16
    7174:	80 23       	and	r24, r16
    7176:	80 93 07 01 	sts	0x0107, r24
    717a:	80 91 0a 01 	lds	r24, 0x010A
    717e:	8c 2b       	or	r24, r28
    7180:	80 93 0a 01 	sts	0x010A, r24

	// power the PIB on or off, according to parameter
	if (enablePIB)
    7184:	66 23       	and	r22, r22
    7186:	31 f0       	breq	.+12     	; 0x7194 <EnablePIBModule+0x50>
		pib_module_power_on(pibNum);
    7188:	80 91 0b 01 	lds	r24, 0x010B
    718c:	98 2b       	or	r25, r24
    718e:	90 93 0b 01 	sts	0x010B, r25
    7192:	05 c0       	rjmp	.+10     	; 0x719e <EnablePIBModule+0x5a>
	else
		pib_module_power_off(pibNum);
    7194:	80 91 0b 01 	lds	r24, 0x010B
    7198:	80 23       	and	r24, r16
    719a:	80 93 0b 01 	sts	0x010B, r24

	// if the result should bechecked ...
	if (detectEnable)
    719e:	44 23       	and	r20, r20
    71a0:	79 f1       	breq	.+94     	; 0x7200 <EnablePIBModule+0xbc>
		// -- checking loop --

		do
		{
			// wait for 100 ms after switching the state
			OSTimeDlyHMSM(0,0,0,100);
    71a2:	80 e0       	ldi	r24, 0x00	; 0
    71a4:	60 e0       	ldi	r22, 0x00	; 0
    71a6:	40 e0       	ldi	r20, 0x00	; 0
    71a8:	24 e6       	ldi	r18, 0x64	; 100
    71aa:	30 e0       	ldi	r19, 0x00	; 0
    71ac:	0e 94 2a 2e 	call	0x5c54	; 0x5c54 <OSTimeDlyHMSM>

			// set the success flag (power OK state should match enable state)
			success = (!!enablePIB == pib_module_power_OK(pibNum));
    71b0:	10 e0       	ldi	r17, 0x00	; 0
    71b2:	ff 20       	and	r15, r15
    71b4:	09 f4       	brne	.+2      	; 0x71b8 <EnablePIBModule+0x74>
    71b6:	11 e0       	ldi	r17, 0x01	; 1
    71b8:	80 91 06 01 	lds	r24, 0x0106
		}
		while(--times && !success);
    71bc:	20 e0       	ldi	r18, 0x00	; 0
    71be:	90 e0       	ldi	r25, 0x00	; 0
    71c0:	8c 23       	and	r24, r28
    71c2:	9d 23       	and	r25, r29
    71c4:	89 2b       	or	r24, r25
    71c6:	09 f0       	breq	.+2      	; 0x71ca <EnablePIBModule+0x86>
    71c8:	21 e0       	ldi	r18, 0x01	; 1
    71ca:	12 17       	cp	r17, r18
    71cc:	c9 f4       	brne	.+50     	; 0x7200 <EnablePIBModule+0xbc>
		// -- checking loop --

		do
		{
			// wait for 100 ms after switching the state
			OSTimeDlyHMSM(0,0,0,100);
    71ce:	80 e0       	ldi	r24, 0x00	; 0
    71d0:	60 e0       	ldi	r22, 0x00	; 0
    71d2:	40 e0       	ldi	r20, 0x00	; 0
    71d4:	24 e6       	ldi	r18, 0x64	; 100
    71d6:	30 e0       	ldi	r19, 0x00	; 0
    71d8:	0e 94 2a 2e 	call	0x5c54	; 0x5c54 <OSTimeDlyHMSM>

			// set the success flag (power OK state should match enable state)
			success = (!!enablePIB == pib_module_power_OK(pibNum));
    71dc:	80 91 06 01 	lds	r24, 0x0106
    71e0:	20 e0       	ldi	r18, 0x00	; 0
    71e2:	90 e0       	ldi	r25, 0x00	; 0
    71e4:	8c 23       	and	r24, r28
    71e6:	9d 23       	and	r25, r29
    71e8:	89 2b       	or	r24, r25
    71ea:	09 f0       	breq	.+2      	; 0x71ee <EnablePIBModule+0xaa>
    71ec:	21 e0       	ldi	r18, 0x01	; 1
    71ee:	91 2f       	mov	r25, r17
    71f0:	92 27       	eor	r25, r18
		}
		while(--times && !success);

		// if at the end the operation was not successful, then power off the PIB
		if (!success)
    71f2:	39 f4       	brne	.+14     	; 0x7202 <EnablePIBModule+0xbe>
			pib_module_power_off(pibNum);
    71f4:	80 91 0b 01 	lds	r24, 0x010B
    71f8:	08 23       	and	r16, r24
    71fa:	00 93 0b 01 	sts	0x010B, r16
    71fe:	01 c0       	rjmp	.+2      	; 0x7202 <EnablePIBModule+0xbe>
    7200:	91 e0       	ldi	r25, 0x01	; 1

		return success;				// returns the success or failure state
	}
	else
		return OS_TRUE;				// if not checking result, just return TRUE
}
    7202:	89 2f       	mov	r24, r25
    7204:	df 91       	pop	r29
    7206:	cf 91       	pop	r28
    7208:	1f 91       	pop	r17
    720a:	0f 91       	pop	r16
    720c:	ff 90       	pop	r15
    720e:	08 95       	ret

00007210 <OStmrGetAccumulatedTime>:

	.global OStmrGetAccumulatedTime
	.func	OStmrGetAccumulatedTime
OStmrGetAccumulatedTime:

	in		r20,_SFR_IO_ADDR(SREG)		; read the status register (r0 does not have to be preserved)
    7210:	4f b7       	in	r20, 0x3f	; 63
	cli									; interrupts off during read
    7212:	f8 94       	cli
	lds		r24,_SFR_MEM_ADDR(TCNT3L)	; read the LSB
    7214:	80 91 94 00 	lds	r24, 0x0094
	lds		r25,_SFR_MEM_ADDR(TCNT3H)	; read the MSB
    7218:	90 91 95 00 	lds	r25, 0x0095
	sts		_SFR_MEM_ADDR(TCNT3H),r1	; zero the MSB
    721c:	10 92 95 00 	sts	0x0095, r1
	sts		_SFR_MEM_ADDR(TCNT3L),r1	; zero the LSB
    7220:	10 92 94 00 	sts	0x0094, r1
	out		_SFR_IO_ADDR(SREG),r20		; restore the interrupt state
    7224:	4f bf       	out	0x3f, r20	; 63
	ret									; return to caller
    7226:	08 95       	ret

00007228 <LRState_CalculateAccumulatedTime>:
#if OS_CRITICAL_METHOD == 3                      /* Allocate storage for CPU status register           */
    OS_CPU_SR  cpu_sr = 0;
#endif
	OS_TCB* ptcb;

    OS_ENTER_CRITICAL();
    7228:	5f b7       	in	r21, 0x3f	; 63
    722a:	f8 94       	cli

	lrstatRunCtr = lrstatRunningAccumulated;
    722c:	80 91 f1 18 	lds	r24, 0x18F1
    7230:	90 91 f2 18 	lds	r25, 0x18F2
    7234:	90 93 f0 18 	sts	0x18F0, r25
    7238:	80 93 ef 18 	sts	0x18EF, r24
	lrstatRunningAccumulated = 0;
    723c:	10 92 f2 18 	sts	0x18F2, r1
    7240:	10 92 f1 18 	sts	0x18F1, r1

	for (ptcb = OSTCBList; ptcb; ptcb = ptcb->OSTCBNext)
    7244:	a0 91 c1 10 	lds	r26, 0x10C1
    7248:	b0 91 c2 10 	lds	r27, 0x10C2
    724c:	40 91 bd 18 	lds	r20, 0x18BD
    7250:	30 91 be 18 	lds	r19, 0x18BE
	{
		TCBTOLRSTATDATA(ptcb).accumTimeSave = TCBTOLRSTATDATA(ptcb).accumTime;
    7254:	6b e6       	ldi	r22, 0x6B	; 107
    7256:	7c e4       	ldi	r23, 0x4C	; 76
    7258:	27 c0       	rjmp	.+78     	; 0x72a8 <LRState_CalculateAccumulatedTime+0x80>
    725a:	cd 01       	movw	r24, r26
    725c:	84 5c       	subi	r24, 0xC4	; 196
    725e:	94 41       	sbci	r25, 0x14	; 20
    7260:	86 9f       	mul	r24, r22
    7262:	f0 01       	movw	r30, r0
    7264:	87 9f       	mul	r24, r23
    7266:	f0 0d       	add	r31, r0
    7268:	96 9f       	mul	r25, r22
    726a:	f0 0d       	add	r31, r0
    726c:	11 24       	eor	r1, r1
    726e:	ee 0f       	add	r30, r30
    7270:	ff 1f       	adc	r31, r31
    7272:	ee 0f       	add	r30, r30
    7274:	ff 1f       	adc	r31, r31
    7276:	e1 54       	subi	r30, 0x41	; 65
    7278:	f7 4e       	sbci	r31, 0xE7	; 231
    727a:	90 81       	ld	r25, Z
    727c:	21 81       	ldd	r18, Z+1	; 0x01
    727e:	92 83       	std	Z+2, r25	; 0x02
    7280:	23 83       	std	Z+3, r18	; 0x03
		TCBTOLRSTATDATA(ptcb).accumTime = 0;
    7282:	11 82       	std	Z+1, r1	; 0x01
    7284:	10 82       	st	Z, r1
		ptcb->OSTCBCtxSwCtr = 0;
    7286:	91 96       	adiw	r26, 0x21	; 33
    7288:	1d 92       	st	X+, r1
    728a:	1d 92       	st	X+, r1
    728c:	1d 92       	st	X+, r1
    728e:	1c 92       	st	X, r1
    7290:	94 97       	sbiw	r26, 0x24	; 36

		if (ptcb->OSTCBPrio == OS_TASK_IDLE_PRIO)
    7292:	5c 96       	adiw	r26, 0x1c	; 28
    7294:	8c 91       	ld	r24, X
    7296:	5c 97       	sbiw	r26, 0x1c	; 28
    7298:	8f 33       	cpi	r24, 0x3F	; 63
    729a:	11 f4       	brne	.+4      	; 0x72a0 <LRState_CalculateAccumulatedTime+0x78>
			lrstatIdleCtr = TCBTOLRSTATDATA(ptcb).accumTimeSave;
    729c:	49 2f       	mov	r20, r25
    729e:	32 2f       	mov	r19, r18
    OS_ENTER_CRITICAL();

	lrstatRunCtr = lrstatRunningAccumulated;
	lrstatRunningAccumulated = 0;

	for (ptcb = OSTCBList; ptcb; ptcb = ptcb->OSTCBNext)
    72a0:	1e 96       	adiw	r26, 0x0e	; 14
    72a2:	0d 90       	ld	r0, X+
    72a4:	bc 91       	ld	r27, X
    72a6:	a0 2d       	mov	r26, r0
    72a8:	10 97       	sbiw	r26, 0x00	; 0
    72aa:	b9 f6       	brne	.-82     	; 0x725a <LRState_CalculateAccumulatedTime+0x32>
    72ac:	40 93 bd 18 	sts	0x18BD, r20
    72b0:	30 93 be 18 	sts	0x18BE, r19

		if (ptcb->OSTCBPrio == OS_TASK_IDLE_PRIO)
			lrstatIdleCtr = TCBTOLRSTATDATA(ptcb).accumTimeSave;
	}

    OS_EXIT_CRITICAL();
    72b4:	5f bf       	out	0x3f, r21	; 63
	return lrstatRunCtr;
}
    72b6:	80 91 ef 18 	lds	r24, 0x18EF
    72ba:	90 91 f0 18 	lds	r25, 0x18F0
    72be:	08 95       	ret

000072c0 <LRStat_AttributeTime>:
 * Notes:			This method should be called from the context switch hook,
 *					passing in the TCB for the task that is reliquishing control
 *******************************************************************************
 */
void LRStat_AttributeTime(OS_TCB* ptcb)
{
    72c0:	cf 93       	push	r28
    72c2:	df 93       	push	r29
    72c4:	ec 01       	movw	r28, r24
	// get accumulated time from timer
	uint16_t accumTime = OStmrGetAccumulatedTime();
    72c6:	0e 94 08 39 	call	0x7210	; 0x7210 <OStmrGetAccumulatedTime>
    72ca:	ac 01       	movw	r20, r24

	// if the statistics task is ready. then add the accumulate time to the
	// running total and to the indicated task
	if (OSStatRdy)
    72cc:	80 91 e8 17 	lds	r24, 0x17E8
    72d0:	88 23       	and	r24, r24
    72d2:	21 f1       	breq	.+72     	; 0x731c <LRStat_AttributeTime+0x5c>
	{
#if OS_CRITICAL_METHOD == 3
	    OS_CPU_SR  cpu_sr = 0;
#endif

    	OS_ENTER_CRITICAL();
    72d4:	2f b7       	in	r18, 0x3f	; 63
    72d6:	f8 94       	cli

		lrstatRunningAccumulated += accumTime;
    72d8:	80 91 f1 18 	lds	r24, 0x18F1
    72dc:	90 91 f2 18 	lds	r25, 0x18F2
    72e0:	84 0f       	add	r24, r20
    72e2:	95 1f       	adc	r25, r21
    72e4:	90 93 f2 18 	sts	0x18F2, r25
    72e8:	80 93 f1 18 	sts	0x18F1, r24
		TCBTOLRSTATDATA(ptcb).accumTime += accumTime;
    72ec:	c4 5c       	subi	r28, 0xC4	; 196
    72ee:	d4 41       	sbci	r29, 0x14	; 20
    72f0:	8b e6       	ldi	r24, 0x6B	; 107
    72f2:	9c e4       	ldi	r25, 0x4C	; 76
    72f4:	c8 9f       	mul	r28, r24
    72f6:	f0 01       	movw	r30, r0
    72f8:	c9 9f       	mul	r28, r25
    72fa:	f0 0d       	add	r31, r0
    72fc:	d8 9f       	mul	r29, r24
    72fe:	f0 0d       	add	r31, r0
    7300:	11 24       	eor	r1, r1
    7302:	ee 0f       	add	r30, r30
    7304:	ff 1f       	adc	r31, r31
    7306:	ee 0f       	add	r30, r30
    7308:	ff 1f       	adc	r31, r31
    730a:	e1 54       	subi	r30, 0x41	; 65
    730c:	f7 4e       	sbci	r31, 0xE7	; 231
    730e:	80 81       	ld	r24, Z
    7310:	91 81       	ldd	r25, Z+1	; 0x01
    7312:	84 0f       	add	r24, r20
    7314:	95 1f       	adc	r25, r21
    7316:	91 83       	std	Z+1, r25	; 0x01
    7318:	80 83       	st	Z, r24

	    OS_EXIT_CRITICAL();
    731a:	2f bf       	out	0x3f, r18	; 63
	}
}
    731c:	df 91       	pop	r29
    731e:	cf 91       	pop	r28
    7320:	08 95       	ret

00007322 <OSStatInit>:
{
#if OS_CRITICAL_METHOD == 3
    OS_CPU_SR  cpu_sr = 0;
#endif

    OSTimeDly(2);				// synch with timer tick (from original implementation)
    7322:	82 e0       	ldi	r24, 0x02	; 2
    7324:	90 e0       	ldi	r25, 0x00	; 0
    7326:	0e 94 fc 2d 	call	0x5bf8	; 0x5bf8 <OSTimeDly>

    OS_ENTER_CRITICAL();
    732a:	9f b7       	in	r25, 0x3f	; 63
    732c:	f8 94       	cli

	// zero the counters
	lrstatIdleCtr = 0;
    732e:	10 92 be 18 	sts	0x18BE, r1
    7332:	10 92 bd 18 	sts	0x18BD, r1
	lrstatRunCtr = 0;
    7336:	10 92 f0 18 	sts	0x18F0, r1
    733a:	10 92 ef 18 	sts	0x18EF, r1
	lrstatRunningAccumulated = 0;
    733e:	10 92 f2 18 	sts	0x18F2, r1
    7342:	10 92 f1 18 	sts	0x18F1, r1
    7346:	ef eb       	ldi	r30, 0xBF	; 191
    7348:	f8 e1       	ldi	r31, 0x18	; 24

	// zero the accumulated time per task
	uint8_t idx;
	for (idx = 0; idx < (OS_MAX_TASKS+OS_N_SYS_TASKS); ++idx)
	{
		lrstatTaskData[idx].accumTime = 0;
    734a:	11 82       	std	Z+1, r1	; 0x01
    734c:	10 82       	st	Z, r1
		lrstatTaskData[idx].accumTimeSave = 0;
    734e:	13 82       	std	Z+3, r1	; 0x03
    7350:	12 82       	std	Z+2, r1	; 0x02
    7352:	34 96       	adiw	r30, 0x04	; 4
	lrstatRunCtr = 0;
	lrstatRunningAccumulated = 0;

	// zero the accumulated time per task
	uint8_t idx;
	for (idx = 0; idx < (OS_MAX_TASKS+OS_N_SYS_TASKS); ++idx)
    7354:	88 e1       	ldi	r24, 0x18	; 24
    7356:	ef 3e       	cpi	r30, 0xEF	; 239
    7358:	f8 07       	cpc	r31, r24
    735a:	b9 f7       	brne	.-18     	; 0x734a <OSStatInit+0x28>
	{
		lrstatTaskData[idx].accumTime = 0;
		lrstatTaskData[idx].accumTimeSave = 0;
	}

    OSIdleCtr    = 0L; 			// clear idle counter (from original implementation)
    735c:	10 92 bb 10 	sts	0x10BB, r1
    7360:	10 92 bc 10 	sts	0x10BC, r1
    7364:	10 92 bd 10 	sts	0x10BD, r1
    7368:	10 92 be 10 	sts	0x10BE, r1
	OSIdleCtrMax = 0L;			// clear max counts in idle (from original implementation, not used)
    736c:	10 92 c8 11 	sts	0x11C8, r1
    7370:	10 92 c9 11 	sts	0x11C9, r1
    7374:	10 92 ca 11 	sts	0x11CA, r1
    7378:	10 92 cb 11 	sts	0x11CB, r1
    OSStatRdy    = OS_TRUE;		// mark the statistics task as ready
    737c:	81 e0       	ldi	r24, 0x01	; 1
    737e:	80 93 e8 17 	sts	0x17E8, r24

    OS_EXIT_CRITICAL();
    7382:	9f bf       	out	0x3f, r25	; 63
}
    7384:	08 95       	ret

00007386 <OS_TaskStat>:
 *
 * Notes:			
 *******************************************************************************
 */
void  OS_TaskStat (void *p_arg)
{
    7386:	0f 93       	push	r16
    7388:	1f 93       	push	r17
    738a:	cf 93       	push	r28
    738c:	df 93       	push	r29
    738e:	04 c0       	rjmp	.+8      	; 0x7398 <OS_TaskStat+0x12>
    (void)p_arg;                                 // Prevent compiler warning for not using 'p_arg'

	// wait until the statistics task is running
	while(!OSStatRdy)
        OSTimeDly(2 * OS_TICKS_PER_SEC / 10);
    7390:	89 e1       	ldi	r24, 0x19	; 25
    7392:	90 e0       	ldi	r25, 0x00	; 0
    7394:	0e 94 fc 2d 	call	0x5bf8	; 0x5bf8 <OSTimeDly>
void  OS_TaskStat (void *p_arg)
{
    (void)p_arg;                                 // Prevent compiler warning for not using 'p_arg'

	// wait until the statistics task is running
	while(!OSStatRdy)
    7398:	80 91 e8 17 	lds	r24, 0x17E8
    739c:	88 23       	and	r24, r24
    739e:	c1 f3       	breq	.-16     	; 0x7390 <OS_TaskStat+0xa>
    73a0:	1a e0       	ldi	r17, 0x0A	; 10

			// update the CPU usage number
			if (lrstatRunCtr)
	        	OSCPUUsage = ((INT8U)(100L - lrstatIdleCtr * 100L / lrstatRunCtr));
			else
				OSCPUUsage = 0xFF;
    73a2:	0f ef       	ldi	r16, 0xFF	; 255
	// -- main task loop --

    for (;;) {

		// if it's time to generate statistics ...
		if (!period--)
    73a4:	11 23       	and	r17, r17
    73a6:	11 f0       	breq	.+4      	; 0x73ac <OS_TaskStat+0x26>
    73a8:	11 50       	subi	r17, 0x01	; 1
    73aa:	20 c0       	rjmp	.+64     	; 0x73ec <OS_TaskStat+0x66>
		{
			period = LRSTAT_CALCULATION_PERIOD;		// reload the down-counter
			LRState_CalculateAccumulatedTime();		// run time calculations
    73ac:	0e 94 14 39 	call	0x7228	; 0x7228 <LRState_CalculateAccumulatedTime>

			// update the CPU usage number
			if (lrstatRunCtr)
    73b0:	c0 91 ef 18 	lds	r28, 0x18EF
    73b4:	d0 91 f0 18 	lds	r29, 0x18F0
    73b8:	20 97       	sbiw	r28, 0x00	; 0
    73ba:	a9 f0       	breq	.+42     	; 0x73e6 <OS_TaskStat+0x60>
	        	OSCPUUsage = ((INT8U)(100L - lrstatIdleCtr * 100L / lrstatRunCtr));
    73bc:	60 91 bd 18 	lds	r22, 0x18BD
    73c0:	70 91 be 18 	lds	r23, 0x18BE
    73c4:	80 e0       	ldi	r24, 0x00	; 0
    73c6:	90 e0       	ldi	r25, 0x00	; 0
    73c8:	2c e9       	ldi	r18, 0x9C	; 156
    73ca:	3f ef       	ldi	r19, 0xFF	; 255
    73cc:	4f ef       	ldi	r20, 0xFF	; 255
    73ce:	5f ef       	ldi	r21, 0xFF	; 255
    73d0:	0e 94 f2 f3 	call	0x1e7e4	; 0x1e7e4 <__mulsi3>
    73d4:	9e 01       	movw	r18, r28
    73d6:	40 e0       	ldi	r20, 0x00	; 0
    73d8:	50 e0       	ldi	r21, 0x00	; 0
    73da:	0e 94 46 f4 	call	0x1e88c	; 0x1e88c <__divmodsi4>
    73de:	2c 59       	subi	r18, 0x9C	; 156
    73e0:	20 93 ce 11 	sts	0x11CE, r18
    73e4:	02 c0       	rjmp	.+4      	; 0x73ea <OS_TaskStat+0x64>
			else
				OSCPUUsage = 0xFF;
    73e6:	00 93 ce 11 	sts	0x11CE, r16
    73ea:	1a e0       	ldi	r17, 0x0A	; 10
		}

        OSTaskStatHook();							// Invoke user definable hook on each pass
    73ec:	0e 94 f9 2e 	call	0x5df2	; 0x5df2 <OSTaskStatHook>
#if (OS_TASK_STAT_STK_CHK_EN > 0) && (OS_TASK_CREATE_EXT_EN > 0)
        OS_TaskStatStkChk();                     	// Check the stacks for each task on each pass
    73f0:	0e 94 59 21 	call	0x42b2	; 0x42b2 <OS_TaskStatStkChk>
#endif
        OSTimeDly(LRSTAT_DELAY);        			// delay to collect more data
    73f4:	8c e0       	ldi	r24, 0x0C	; 12
    73f6:	90 e0       	ldi	r25, 0x00	; 0
    73f8:	0e 94 fc 2d 	call	0x5bf8	; 0x5bf8 <OSTimeDly>
    73fc:	d3 cf       	rjmp	.-90     	; 0x73a4 <OS_TaskStat+0x1e>

000073fe <putJustified>:
 *
 * Notes:
 *******************************************************************************
 */
static void putJustified(uint8_t portID, char* pstr, uint8_t fieldLen, BOOLEAN rightJustified)
{
    73fe:	cf 92       	push	r12
    7400:	df 92       	push	r13
    7402:	ef 92       	push	r14
    7404:	ff 92       	push	r15
    7406:	0f 93       	push	r16
    7408:	1f 93       	push	r17
    740a:	df 93       	push	r29
    740c:	cf 93       	push	r28
    740e:	0f 92       	push	r0
    7410:	cd b7       	in	r28, 0x3d	; 61
    7412:	de b7       	in	r29, 0x3e	; 62
    7414:	08 2f       	mov	r16, r24
    7416:	f6 2e       	mov	r15, r22
    7418:	e7 2e       	mov	r14, r23
    741a:	14 2f       	mov	r17, r20
    741c:	d2 2e       	mov	r13, r18
	uint8_t len = strlen(pstr);
    741e:	a6 2f       	mov	r26, r22
    7420:	b7 2f       	mov	r27, r23
    7422:	fd 01       	movw	r30, r26
    7424:	01 90       	ld	r0, Z+
    7426:	00 20       	and	r0, r0
    7428:	e9 f7       	brne	.-6      	; 0x7424 <putJustified+0x26>
    742a:	31 97       	sbiw	r30, 0x01	; 1
    742c:	ce 2e       	mov	r12, r30
    742e:	c6 1a       	sub	r12, r22
	uint8_t err;

	if (rightJustified)
    7430:	22 23       	and	r18, r18
    7432:	39 f4       	brne	.+14     	; 0x7442 <putJustified+0x44>
    7434:	0b c0       	rjmp	.+22     	; 0x744c <putJustified+0x4e>
		while(len < fieldLen--)
			OSuartPutCharWait(portID, ' ', 0);
    7436:	80 2f       	mov	r24, r16
    7438:	60 e2       	ldi	r22, 0x20	; 32
    743a:	40 e0       	ldi	r20, 0x00	; 0
    743c:	50 e0       	ldi	r21, 0x00	; 0
    743e:	0e 94 f3 31 	call	0x63e6	; 0x63e6 <OSuartPutCharWait>
{
	uint8_t len = strlen(pstr);
	uint8_t err;

	if (rightJustified)
		while(len < fieldLen--)
    7442:	11 50       	subi	r17, 0x01	; 1
    7444:	81 2f       	mov	r24, r17
    7446:	8f 5f       	subi	r24, 0xFF	; 255
    7448:	c8 16       	cp	r12, r24
    744a:	a8 f3       	brcs	.-22     	; 0x7436 <putJustified+0x38>
			OSuartPutCharWait(portID, ' ', 0);

	MON_PUTS(pstr);
    744c:	80 2f       	mov	r24, r16
    744e:	6f 2d       	mov	r22, r15
    7450:	7e 2d       	mov	r23, r14
    7452:	40 e0       	ldi	r20, 0x00	; 0
    7454:	50 e0       	ldi	r21, 0x00	; 0
    7456:	9e 01       	movw	r18, r28
    7458:	2f 5f       	subi	r18, 0xFF	; 255
    745a:	3f 4f       	sbci	r19, 0xFF	; 255
    745c:	0e 94 a2 32 	call	0x6544	; 0x6544 <OSuartPutStrWait>

	if (!rightJustified)
    7460:	dd 20       	and	r13, r13
    7462:	41 f0       	breq	.+16     	; 0x7474 <putJustified+0x76>
    7464:	09 c0       	rjmp	.+18     	; 0x7478 <putJustified+0x7a>
		while(len < fieldLen--)
			OSuartPutCharWait(portID, ' ', 0);
    7466:	80 2f       	mov	r24, r16
    7468:	60 e2       	ldi	r22, 0x20	; 32
    746a:	40 e0       	ldi	r20, 0x00	; 0
    746c:	50 e0       	ldi	r21, 0x00	; 0
    746e:	0e 94 f3 31 	call	0x63e6	; 0x63e6 <OSuartPutCharWait>
    7472:	11 50       	subi	r17, 0x01	; 1
			OSuartPutCharWait(portID, ' ', 0);

	MON_PUTS(pstr);

	if (!rightJustified)
		while(len < fieldLen--)
    7474:	c1 16       	cp	r12, r17
    7476:	b8 f3       	brcs	.-18     	; 0x7466 <putJustified+0x68>
			OSuartPutCharWait(portID, ' ', 0);
}
    7478:	0f 90       	pop	r0
    747a:	cf 91       	pop	r28
    747c:	df 91       	pop	r29
    747e:	1f 91       	pop	r17
    7480:	0f 91       	pop	r16
    7482:	ff 90       	pop	r15
    7484:	ef 90       	pop	r14
    7486:	df 90       	pop	r13
    7488:	cf 90       	pop	r12
    748a:	08 95       	ret

0000748c <LRPS_Command>:
 *						which is an alternate implementation of the statistics
 *						task.
 *******************************************************************************
 */
void LRPS_Command(uint8_t portID)
{
    748c:	2f 92       	push	r2
    748e:	3f 92       	push	r3
    7490:	4f 92       	push	r4
    7492:	5f 92       	push	r5
    7494:	6f 92       	push	r6
    7496:	7f 92       	push	r7
    7498:	8f 92       	push	r8
    749a:	9f 92       	push	r9
    749c:	af 92       	push	r10
    749e:	bf 92       	push	r11
    74a0:	cf 92       	push	r12
    74a2:	df 92       	push	r13
    74a4:	ef 92       	push	r14
    74a6:	ff 92       	push	r15
    74a8:	0f 93       	push	r16
    74aa:	1f 93       	push	r17
    74ac:	df 93       	push	r29
    74ae:	cf 93       	push	r28
    74b0:	cd b7       	in	r28, 0x3d	; 61
    74b2:	de b7       	in	r29, 0x3e	; 62
    74b4:	2c 97       	sbiw	r28, 0x0c	; 12
    74b6:	0f b6       	in	r0, 0x3f	; 63
    74b8:	f8 94       	cli
    74ba:	de bf       	out	0x3e, r29	; 62
    74bc:	0f be       	out	0x3f, r0	; 63
    74be:	cd bf       	out	0x3d, r28	; 61
    74c0:	b8 2e       	mov	r11, r24
	uint16_t run;				// captured number of ticks elapsed in the last interval
	char buffer[11];			// buffer for formatting numbers

	// capture the state of the system
	OS_CPU_SR cpu_sr;
	OS_ENTER_CRITICAL();
    74c2:	6f b7       	in	r22, 0x3f	; 63
    74c4:	f8 94       	cli

	cpu = OSCPUUsage;
    74c6:	f0 90 ce 11 	lds	r15, 0x11CE
	run = lrstatRunCtr;
    74ca:	20 90 ef 18 	lds	r2, 0x18EF
    74ce:	30 90 f0 18 	lds	r3, 0x18F0

	for (pTCB = OSTCBList, pInfo = taskinfo; pTCB; pTCB = pTCB->OSTCBNext, ++pInfo)
    74d2:	20 91 c1 10 	lds	r18, 0x10C1
    74d6:	30 91 c2 10 	lds	r19, 0x10C2
    74da:	e7 e9       	ldi	r30, 0x97	; 151
    74dc:	ce 2e       	mov	r12, r30
    74de:	e6 e0       	ldi	r30, 0x06	; 6
    74e0:	de 2e       	mov	r13, r30
		pInfo->prio = pTCB->OSTCBPrio;
		pInfo->id = pTCB->OSTCBId;
		pInfo->ctxsw = pTCB->OSTCBCtxSwCtr;
		pInfo->stksize = pTCB->OSTCBStkSize;
		pInfo->stkused = pTCB->OSTCBStkUsed;
		pInfo->lrclocks = TCBTOLRSTATDATA(pTCB).accumTimeSave;
    74e2:	4b e6       	ldi	r20, 0x6B	; 107
    74e4:	5c e4       	ldi	r21, 0x4C	; 76
    74e6:	4b c0       	rjmp	.+150    	; 0x757e <LRPS_Command+0xf2>
	cpu = OSCPUUsage;
	run = lrstatRunCtr;

	for (pTCB = OSTCBList, pInfo = taskinfo; pTCB; pTCB = pTCB->OSTCBNext, ++pInfo)
	{
		pInfo->name = (char*) pTCB->OSTCBTaskName;
    74e8:	2d 5c       	subi	r18, 0xCD	; 205
    74ea:	3f 4f       	sbci	r19, 0xFF	; 255
    74ec:	f6 01       	movw	r30, r12
    74ee:	31 83       	std	Z+1, r19	; 0x01
    74f0:	20 83       	st	Z, r18
    74f2:	23 53       	subi	r18, 0x33	; 51
    74f4:	30 40       	sbci	r19, 0x00	; 0
		pInfo->prio = pTCB->OSTCBPrio;
    74f6:	f9 01       	movw	r30, r18
    74f8:	84 8d       	ldd	r24, Z+28	; 0x1c
    74fa:	f6 01       	movw	r30, r12
    74fc:	82 83       	std	Z+2, r24	; 0x02
		pInfo->id = pTCB->OSTCBId;
    74fe:	f9 01       	movw	r30, r18
    7500:	84 85       	ldd	r24, Z+12	; 0x0c
    7502:	95 85       	ldd	r25, Z+13	; 0x0d
    7504:	f6 01       	movw	r30, r12
    7506:	94 83       	std	Z+4, r25	; 0x04
    7508:	83 83       	std	Z+3, r24	; 0x03
		pInfo->ctxsw = pTCB->OSTCBCtxSwCtr;
    750a:	f9 01       	movw	r30, r18
    750c:	81 a1       	ldd	r24, Z+33	; 0x21
    750e:	92 a1       	ldd	r25, Z+34	; 0x22
    7510:	a3 a1       	ldd	r26, Z+35	; 0x23
    7512:	b4 a1       	ldd	r27, Z+36	; 0x24
    7514:	f6 01       	movw	r30, r12
    7516:	85 83       	std	Z+5, r24	; 0x05
    7518:	96 83       	std	Z+6, r25	; 0x06
    751a:	a7 83       	std	Z+7, r26	; 0x07
    751c:	b0 87       	std	Z+8, r27	; 0x08
		pInfo->stksize = pTCB->OSTCBStkSize;
    751e:	f9 01       	movw	r30, r18
    7520:	86 81       	ldd	r24, Z+6	; 0x06
    7522:	97 81       	ldd	r25, Z+7	; 0x07
    7524:	a0 85       	ldd	r26, Z+8	; 0x08
    7526:	b1 85       	ldd	r27, Z+9	; 0x09
    7528:	f6 01       	movw	r30, r12
    752a:	81 87       	std	Z+9, r24	; 0x09
    752c:	92 87       	std	Z+10, r25	; 0x0a
    752e:	a3 87       	std	Z+11, r26	; 0x0b
    7530:	b4 87       	std	Z+12, r27	; 0x0c
		pInfo->stkused = pTCB->OSTCBStkUsed;
    7532:	f9 01       	movw	r30, r18
    7534:	87 a5       	ldd	r24, Z+47	; 0x2f
    7536:	90 a9       	ldd	r25, Z+48	; 0x30
    7538:	a1 a9       	ldd	r26, Z+49	; 0x31
    753a:	b2 a9       	ldd	r27, Z+50	; 0x32
    753c:	f6 01       	movw	r30, r12
    753e:	85 87       	std	Z+13, r24	; 0x0d
    7540:	96 87       	std	Z+14, r25	; 0x0e
    7542:	a7 87       	std	Z+15, r26	; 0x0f
    7544:	b0 8b       	std	Z+16, r27	; 0x10
		pInfo->lrclocks = TCBTOLRSTATDATA(pTCB).accumTimeSave;
    7546:	c9 01       	movw	r24, r18
    7548:	84 5c       	subi	r24, 0xC4	; 196
    754a:	94 41       	sbci	r25, 0x14	; 20
    754c:	84 9f       	mul	r24, r20
    754e:	f0 01       	movw	r30, r0
    7550:	85 9f       	mul	r24, r21
    7552:	f0 0d       	add	r31, r0
    7554:	94 9f       	mul	r25, r20
    7556:	f0 0d       	add	r31, r0
    7558:	11 24       	eor	r1, r1
    755a:	ee 0f       	add	r30, r30
    755c:	ff 1f       	adc	r31, r31
    755e:	ee 0f       	add	r30, r30
    7560:	ff 1f       	adc	r31, r31
    7562:	e1 54       	subi	r30, 0x41	; 65
    7564:	f7 4e       	sbci	r31, 0xE7	; 231
    7566:	82 81       	ldd	r24, Z+2	; 0x02
    7568:	93 81       	ldd	r25, Z+3	; 0x03
    756a:	f6 01       	movw	r30, r12
    756c:	92 8b       	std	Z+18, r25	; 0x12
    756e:	81 8b       	std	Z+17, r24	; 0x11
	OS_ENTER_CRITICAL();

	cpu = OSCPUUsage;
	run = lrstatRunCtr;

	for (pTCB = OSTCBList, pInfo = taskinfo; pTCB; pTCB = pTCB->OSTCBNext, ++pInfo)
    7570:	f9 01       	movw	r30, r18
    7572:	26 85       	ldd	r18, Z+14	; 0x0e
    7574:	37 85       	ldd	r19, Z+15	; 0x0f
    7576:	83 e1       	ldi	r24, 0x13	; 19
    7578:	90 e0       	ldi	r25, 0x00	; 0
    757a:	c8 0e       	add	r12, r24
    757c:	d9 1e       	adc	r13, r25
    757e:	21 15       	cp	r18, r1
    7580:	31 05       	cpc	r19, r1
    7582:	09 f0       	breq	.+2      	; 0x7586 <LRPS_Command+0xfa>
    7584:	b1 cf       	rjmp	.-158    	; 0x74e8 <LRPS_Command+0x5c>
		pInfo->stksize = pTCB->OSTCBStkSize;
		pInfo->stkused = pTCB->OSTCBStkUsed;
		pInfo->lrclocks = TCBTOLRSTATDATA(pTCB).accumTimeSave;
	}

	OS_EXIT_CRITICAL();
    7586:	6f bf       	out	0x3f, r22	; 63

	// now display the report on the UART associated with port ID
	MON_PUTS("CPU Used (%): ");
    7588:	8b 2d       	mov	r24, r11
    758a:	6f e6       	ldi	r22, 0x6F	; 111
    758c:	73 e0       	ldi	r23, 0x03	; 3
    758e:	40 e0       	ldi	r20, 0x00	; 0
    7590:	50 e0       	ldi	r21, 0x00	; 0
    7592:	8e 01       	movw	r16, r28
    7594:	0f 5f       	subi	r16, 0xFF	; 255
    7596:	1f 4f       	sbci	r17, 0xFF	; 255
    7598:	98 01       	movw	r18, r16
    759a:	0e 94 a2 32 	call	0x6544	; 0x6544 <OSuartPutStrWait>
	putNum(portID, cpu, 0);
    759e:	6f 2d       	mov	r22, r15
    75a0:	70 e0       	ldi	r23, 0x00	; 0
    75a2:	80 e0       	ldi	r24, 0x00	; 0
    75a4:	90 e0       	ldi	r25, 0x00	; 0
    75a6:	22 e0       	ldi	r18, 0x02	; 2
    75a8:	e2 2e       	mov	r14, r18
    75aa:	f1 2c       	mov	r15, r1
    75ac:	ec 0e       	add	r14, r28
    75ae:	fd 1e       	adc	r15, r29
    75b0:	a7 01       	movw	r20, r14
    75b2:	2a e0       	ldi	r18, 0x0A	; 10
    75b4:	30 e0       	ldi	r19, 0x00	; 0
    75b6:	0e 94 dc f0 	call	0x1e1b8	; 0x1e1b8 <ltoa>
    75ba:	bc 01       	movw	r22, r24
    75bc:	8b 2d       	mov	r24, r11
    75be:	40 e0       	ldi	r20, 0x00	; 0
    75c0:	21 e0       	ldi	r18, 0x01	; 1
    75c2:	0e 94 ff 39 	call	0x73fe	; 0x73fe <putJustified>
	MON_PUTS("\r\n\nPrio  ID     ");
    75c6:	8b 2d       	mov	r24, r11
    75c8:	6e e7       	ldi	r22, 0x7E	; 126
    75ca:	73 e0       	ldi	r23, 0x03	; 3
    75cc:	40 e0       	ldi	r20, 0x00	; 0
    75ce:	50 e0       	ldi	r21, 0x00	; 0
    75d0:	98 01       	movw	r18, r16
    75d2:	0e 94 a2 32 	call	0x6544	; 0x6544 <OSuartPutStrWait>
	putJustified(portID, "Name", OS_TASK_NAME_SIZE, OS_FALSE);
    75d6:	8b 2d       	mov	r24, r11
    75d8:	6f e8       	ldi	r22, 0x8F	; 143
    75da:	73 e0       	ldi	r23, 0x03	; 3
    75dc:	40 e1       	ldi	r20, 0x10	; 16
    75de:	20 e0       	ldi	r18, 0x00	; 0
    75e0:	0e 94 ff 39 	call	0x73fe	; 0x73fe <putJustified>
	MON_PUTS("  CtxSw   CPU(%)  StkUsed  StkSize\r\n");
    75e4:	8b 2d       	mov	r24, r11
    75e6:	64 e9       	ldi	r22, 0x94	; 148
    75e8:	73 e0       	ldi	r23, 0x03	; 3
    75ea:	40 e0       	ldi	r20, 0x00	; 0
    75ec:	50 e0       	ldi	r21, 0x00	; 0
    75ee:	98 01       	movw	r18, r16
    75f0:	0e 94 a2 32 	call	0x6544	; 0x6544 <OSuartPutStrWait>

	uint8_t remaining = pInfo-taskinfo;
    75f4:	e7 e9       	ldi	r30, 0x97	; 151
    75f6:	f6 e0       	ldi	r31, 0x06	; 6
    75f8:	ce 1a       	sub	r12, r30
    75fa:	df 0a       	sbc	r13, r31
    75fc:	8b e1       	ldi	r24, 0x1B	; 27
    75fe:	9a ec       	ldi	r25, 0xCA	; 202
    7600:	c8 9e       	mul	r12, r24
    7602:	80 2d       	mov	r24, r0
    7604:	11 24       	eor	r1, r1
    7606:	6f 01       	movw	r12, r30
	
	for (pInfo = taskinfo; remaining--; ++pInfo)
    7608:	23 e1       	ldi	r18, 0x13	; 19
    760a:	82 9f       	mul	r24, r18
    760c:	40 01       	movw	r8, r0
    760e:	11 24       	eor	r1, r1
    7610:	8e 0e       	add	r8, r30
    7612:	9f 1e       	adc	r9, r31
	{
		putNum(portID, pInfo->prio, 4);
    7614:	ae 2c       	mov	r10, r14
    7616:	ef 2c       	mov	r14, r15
		putNum(portID, pInfo->id, 7);
		MON_PUTS("  ");
    7618:	f0 2e       	mov	r15, r16
    761a:	01 2f       	mov	r16, r17
		putNum(portID, pInfo->ctxsw, 7);

		if (run == 0)
			MON_PUTS("     ---");
		else
			putNum(portID, pInfo->lrclocks*1000L/run/10, 8);
    761c:	21 01       	movw	r4, r2
    761e:	66 24       	eor	r6, r6
    7620:	77 24       	eor	r7, r7
    7622:	9d c0       	rjmp	.+314    	; 0x775e <LRPS_Command+0x2d2>

	uint8_t remaining = pInfo-taskinfo;
	
	for (pInfo = taskinfo; remaining--; ++pInfo)
	{
		putNum(portID, pInfo->prio, 4);
    7624:	f6 01       	movw	r30, r12
    7626:	62 81       	ldd	r22, Z+2	; 0x02
    7628:	70 e0       	ldi	r23, 0x00	; 0
    762a:	80 e0       	ldi	r24, 0x00	; 0
    762c:	90 e0       	ldi	r25, 0x00	; 0
    762e:	4a 2d       	mov	r20, r10
    7630:	5e 2d       	mov	r21, r14
    7632:	2a e0       	ldi	r18, 0x0A	; 10
    7634:	30 e0       	ldi	r19, 0x00	; 0
    7636:	0e 94 dc f0 	call	0x1e1b8	; 0x1e1b8 <ltoa>
    763a:	bc 01       	movw	r22, r24
    763c:	8b 2d       	mov	r24, r11
    763e:	44 e0       	ldi	r20, 0x04	; 4
    7640:	21 e0       	ldi	r18, 0x01	; 1
    7642:	0e 94 ff 39 	call	0x73fe	; 0x73fe <putJustified>
		putNum(portID, pInfo->id, 7);
    7646:	f6 01       	movw	r30, r12
    7648:	63 81       	ldd	r22, Z+3	; 0x03
    764a:	74 81       	ldd	r23, Z+4	; 0x04
    764c:	80 e0       	ldi	r24, 0x00	; 0
    764e:	90 e0       	ldi	r25, 0x00	; 0
    7650:	4a 2d       	mov	r20, r10
    7652:	5e 2d       	mov	r21, r14
    7654:	2a e0       	ldi	r18, 0x0A	; 10
    7656:	30 e0       	ldi	r19, 0x00	; 0
    7658:	0e 94 dc f0 	call	0x1e1b8	; 0x1e1b8 <ltoa>
    765c:	bc 01       	movw	r22, r24
    765e:	8b 2d       	mov	r24, r11
    7660:	47 e0       	ldi	r20, 0x07	; 7
    7662:	21 e0       	ldi	r18, 0x01	; 1
    7664:	0e 94 ff 39 	call	0x73fe	; 0x73fe <putJustified>
		MON_PUTS("  ");
    7668:	8b 2d       	mov	r24, r11
    766a:	69 eb       	ldi	r22, 0xB9	; 185
    766c:	73 e0       	ldi	r23, 0x03	; 3
    766e:	40 e0       	ldi	r20, 0x00	; 0
    7670:	50 e0       	ldi	r21, 0x00	; 0
    7672:	2f 2d       	mov	r18, r15
    7674:	30 2f       	mov	r19, r16
    7676:	0e 94 a2 32 	call	0x6544	; 0x6544 <OSuartPutStrWait>
		putJustified(portID, pInfo->name, OS_TASK_NAME_SIZE, OS_FALSE);
    767a:	f6 01       	movw	r30, r12
    767c:	60 81       	ld	r22, Z
    767e:	71 81       	ldd	r23, Z+1	; 0x01
    7680:	8b 2d       	mov	r24, r11
    7682:	40 e1       	ldi	r20, 0x10	; 16
    7684:	20 e0       	ldi	r18, 0x00	; 0
    7686:	0e 94 ff 39 	call	0x73fe	; 0x73fe <putJustified>
		putNum(portID, pInfo->ctxsw, 7);
    768a:	f6 01       	movw	r30, r12
    768c:	65 81       	ldd	r22, Z+5	; 0x05
    768e:	76 81       	ldd	r23, Z+6	; 0x06
    7690:	87 81       	ldd	r24, Z+7	; 0x07
    7692:	90 85       	ldd	r25, Z+8	; 0x08
    7694:	4a 2d       	mov	r20, r10
    7696:	5e 2d       	mov	r21, r14
    7698:	2a e0       	ldi	r18, 0x0A	; 10
    769a:	30 e0       	ldi	r19, 0x00	; 0
    769c:	0e 94 dc f0 	call	0x1e1b8	; 0x1e1b8 <ltoa>
    76a0:	bc 01       	movw	r22, r24
    76a2:	8b 2d       	mov	r24, r11
    76a4:	47 e0       	ldi	r20, 0x07	; 7
    76a6:	21 e0       	ldi	r18, 0x01	; 1
    76a8:	0e 94 ff 39 	call	0x73fe	; 0x73fe <putJustified>

		if (run == 0)
    76ac:	21 14       	cp	r2, r1
    76ae:	31 04       	cpc	r3, r1
    76b0:	51 f4       	brne	.+20     	; 0x76c6 <LRPS_Command+0x23a>
			MON_PUTS("     ---");
    76b2:	8b 2d       	mov	r24, r11
    76b4:	6c eb       	ldi	r22, 0xBC	; 188
    76b6:	73 e0       	ldi	r23, 0x03	; 3
    76b8:	40 e0       	ldi	r20, 0x00	; 0
    76ba:	50 e0       	ldi	r21, 0x00	; 0
    76bc:	2f 2d       	mov	r18, r15
    76be:	30 2f       	mov	r19, r16
    76c0:	0e 94 a2 32 	call	0x6544	; 0x6544 <OSuartPutStrWait>
    76c4:	1d c0       	rjmp	.+58     	; 0x7700 <LRPS_Command+0x274>
		else
			putNum(portID, pInfo->lrclocks*1000L/run/10, 8);
    76c6:	f6 01       	movw	r30, r12
    76c8:	61 89       	ldd	r22, Z+17	; 0x11
    76ca:	72 89       	ldd	r23, Z+18	; 0x12
    76cc:	80 e0       	ldi	r24, 0x00	; 0
    76ce:	90 e0       	ldi	r25, 0x00	; 0
    76d0:	24 e6       	ldi	r18, 0x64	; 100
    76d2:	30 e0       	ldi	r19, 0x00	; 0
    76d4:	40 e0       	ldi	r20, 0x00	; 0
    76d6:	50 e0       	ldi	r21, 0x00	; 0
    76d8:	0e 94 f2 f3 	call	0x1e7e4	; 0x1e7e4 <__mulsi3>
    76dc:	a3 01       	movw	r20, r6
    76de:	92 01       	movw	r18, r4
    76e0:	0e 94 46 f4 	call	0x1e88c	; 0x1e88c <__divmodsi4>
    76e4:	ca 01       	movw	r24, r20
    76e6:	b9 01       	movw	r22, r18
    76e8:	4a 2d       	mov	r20, r10
    76ea:	5e 2d       	mov	r21, r14
    76ec:	2a e0       	ldi	r18, 0x0A	; 10
    76ee:	30 e0       	ldi	r19, 0x00	; 0
    76f0:	0e 94 dc f0 	call	0x1e1b8	; 0x1e1b8 <ltoa>
    76f4:	bc 01       	movw	r22, r24
    76f6:	8b 2d       	mov	r24, r11
    76f8:	48 e0       	ldi	r20, 0x08	; 8
    76fa:	21 e0       	ldi	r18, 0x01	; 1
    76fc:	0e 94 ff 39 	call	0x73fe	; 0x73fe <putJustified>

		putNum(portID, pInfo->stkused, 9);
    7700:	f6 01       	movw	r30, r12
    7702:	65 85       	ldd	r22, Z+13	; 0x0d
    7704:	76 85       	ldd	r23, Z+14	; 0x0e
    7706:	87 85       	ldd	r24, Z+15	; 0x0f
    7708:	90 89       	ldd	r25, Z+16	; 0x10
    770a:	4a 2d       	mov	r20, r10
    770c:	5e 2d       	mov	r21, r14
    770e:	2a e0       	ldi	r18, 0x0A	; 10
    7710:	30 e0       	ldi	r19, 0x00	; 0
    7712:	0e 94 dc f0 	call	0x1e1b8	; 0x1e1b8 <ltoa>
    7716:	bc 01       	movw	r22, r24
    7718:	8b 2d       	mov	r24, r11
    771a:	49 e0       	ldi	r20, 0x09	; 9
    771c:	21 e0       	ldi	r18, 0x01	; 1
    771e:	0e 94 ff 39 	call	0x73fe	; 0x73fe <putJustified>
		putNum(portID, pInfo->stksize, 9);
    7722:	f6 01       	movw	r30, r12
    7724:	61 85       	ldd	r22, Z+9	; 0x09
    7726:	72 85       	ldd	r23, Z+10	; 0x0a
    7728:	83 85       	ldd	r24, Z+11	; 0x0b
    772a:	94 85       	ldd	r25, Z+12	; 0x0c
    772c:	4a 2d       	mov	r20, r10
    772e:	5e 2d       	mov	r21, r14
    7730:	2a e0       	ldi	r18, 0x0A	; 10
    7732:	30 e0       	ldi	r19, 0x00	; 0
    7734:	0e 94 dc f0 	call	0x1e1b8	; 0x1e1b8 <ltoa>
    7738:	bc 01       	movw	r22, r24
    773a:	8b 2d       	mov	r24, r11
    773c:	49 e0       	ldi	r20, 0x09	; 9
    773e:	21 e0       	ldi	r18, 0x01	; 1
    7740:	0e 94 ff 39 	call	0x73fe	; 0x73fe <putJustified>
		MON_PUTS("\r\n");
    7744:	8b 2d       	mov	r24, r11
    7746:	65 ec       	ldi	r22, 0xC5	; 197
    7748:	73 e0       	ldi	r23, 0x03	; 3
    774a:	40 e0       	ldi	r20, 0x00	; 0
    774c:	50 e0       	ldi	r21, 0x00	; 0
    774e:	2f 2d       	mov	r18, r15
    7750:	30 2f       	mov	r19, r16
    7752:	0e 94 a2 32 	call	0x6544	; 0x6544 <OSuartPutStrWait>
	putJustified(portID, "Name", OS_TASK_NAME_SIZE, OS_FALSE);
	MON_PUTS("  CtxSw   CPU(%)  StkUsed  StkSize\r\n");

	uint8_t remaining = pInfo-taskinfo;
	
	for (pInfo = taskinfo; remaining--; ++pInfo)
    7756:	83 e1       	ldi	r24, 0x13	; 19
    7758:	90 e0       	ldi	r25, 0x00	; 0
    775a:	c8 0e       	add	r12, r24
    775c:	d9 1e       	adc	r13, r25
    775e:	c8 14       	cp	r12, r8
    7760:	d9 04       	cpc	r13, r9
    7762:	09 f0       	breq	.+2      	; 0x7766 <LRPS_Command+0x2da>
    7764:	5f cf       	rjmp	.-322    	; 0x7624 <LRPS_Command+0x198>

		putNum(portID, pInfo->stkused, 9);
		putNum(portID, pInfo->stksize, 9);
		MON_PUTS("\r\n");
	}
}
    7766:	2c 96       	adiw	r28, 0x0c	; 12
    7768:	0f b6       	in	r0, 0x3f	; 63
    776a:	f8 94       	cli
    776c:	de bf       	out	0x3e, r29	; 62
    776e:	0f be       	out	0x3f, r0	; 63
    7770:	cd bf       	out	0x3d, r28	; 61
    7772:	cf 91       	pop	r28
    7774:	df 91       	pop	r29
    7776:	1f 91       	pop	r17
    7778:	0f 91       	pop	r16
    777a:	ff 90       	pop	r15
    777c:	ef 90       	pop	r14
    777e:	df 90       	pop	r13
    7780:	cf 90       	pop	r12
    7782:	bf 90       	pop	r11
    7784:	af 90       	pop	r10
    7786:	9f 90       	pop	r9
    7788:	8f 90       	pop	r8
    778a:	7f 90       	pop	r7
    778c:	6f 90       	pop	r6
    778e:	5f 90       	pop	r5
    7790:	4f 90       	pop	r4
    7792:	3f 90       	pop	r3
    7794:	2f 90       	pop	r2
    7796:	08 95       	ret

00007798 <OSwatchdogInit>:
 *******************************************************************************
 */
#if WDTRIG_ENABLED != 0
void OSwatchdogInit(uint32_t trigMask)
{
	WDTRIG_CONFIG_WATCHDOG();			// enables and configures the watchdog
    7798:	49 e2       	ldi	r20, 0x29	; 41
    779a:	28 e1       	ldi	r18, 0x18	; 24
    779c:	30 e0       	ldi	r19, 0x00	; 0
    779e:	0f b6       	in	r0, 0x3f	; 63
    77a0:	f8 94       	cli
    77a2:	a8 95       	wdr
    77a4:	20 93 60 00 	sts	0x0060, r18
    77a8:	0f be       	out	0x3f, r0	; 63
    77aa:	40 93 60 00 	sts	0x0060, r20

	watchdogCurrentMask = 0;			// clear the current bits
    77ae:	10 92 7f 07 	sts	0x077F, r1
    77b2:	10 92 80 07 	sts	0x0780, r1
    77b6:	10 92 81 07 	sts	0x0781, r1
    77ba:	10 92 82 07 	sts	0x0782, r1
	watchdogTriggerMask = trigMask;		// save the trigger mask
    77be:	60 93 7b 07 	sts	0x077B, r22
    77c2:	70 93 7c 07 	sts	0x077C, r23
    77c6:	80 93 7d 07 	sts	0x077D, r24
    77ca:	90 93 7e 07 	sts	0x077E, r25
}
    77ce:	08 95       	ret

000077d0 <OSwatchdogTrigger>:
 * Notes:			
 *******************************************************************************
 */
#if WDTRIG_ENABLED != 0
void OSwatchdogTrigger(uint32_t mask)
{
    77d0:	ef 92       	push	r14
    77d2:	ff 92       	push	r15
    77d4:	0f 93       	push	r16
    77d6:	1f 93       	push	r17
	// if adding the "mask" bits results in the watchdog trigger mask
	// bits being set, then retrigger the watchdog
	OS_CPU_SR cpu_sr;
	OS_ENTER_CRITICAL();
    77d8:	ef b7       	in	r30, 0x3f	; 63
    77da:	f8 94       	cli

	long temp = watchdogCurrentMask |= mask;
    77dc:	20 91 7f 07 	lds	r18, 0x077F
    77e0:	30 91 80 07 	lds	r19, 0x0780
    77e4:	40 91 81 07 	lds	r20, 0x0781
    77e8:	50 91 82 07 	lds	r21, 0x0782
    77ec:	26 2b       	or	r18, r22
    77ee:	37 2b       	or	r19, r23
    77f0:	48 2b       	or	r20, r24
    77f2:	59 2b       	or	r21, r25
    77f4:	20 93 7f 07 	sts	0x077F, r18
    77f8:	30 93 80 07 	sts	0x0780, r19
    77fc:	40 93 81 07 	sts	0x0781, r20
    7800:	50 93 82 07 	sts	0x0782, r21
    7804:	e0 90 7f 07 	lds	r14, 0x077F
    7808:	f0 90 80 07 	lds	r15, 0x0780
    780c:	00 91 81 07 	lds	r16, 0x0781
    7810:	10 91 82 07 	lds	r17, 0x0782

	OS_EXIT_CRITICAL();
    7814:	ef bf       	out	0x3f, r30	; 63

	if ((temp & watchdogTriggerMask) == watchdogTriggerMask)
    7816:	80 91 7b 07 	lds	r24, 0x077B
    781a:	90 91 7c 07 	lds	r25, 0x077C
    781e:	a0 91 7d 07 	lds	r26, 0x077D
    7822:	b0 91 7e 07 	lds	r27, 0x077E
    7826:	20 91 7b 07 	lds	r18, 0x077B
    782a:	30 91 7c 07 	lds	r19, 0x077C
    782e:	40 91 7d 07 	lds	r20, 0x077D
    7832:	50 91 7e 07 	lds	r21, 0x077E
    7836:	8e 21       	and	r24, r14
    7838:	9f 21       	and	r25, r15
    783a:	a0 23       	and	r26, r16
    783c:	b1 23       	and	r27, r17
    783e:	82 17       	cp	r24, r18
    7840:	93 07       	cpc	r25, r19
    7842:	a4 07       	cpc	r26, r20
    7844:	b5 07       	cpc	r27, r21
    7846:	61 f4       	brne	.+24     	; 0x7860 <OSwatchdogTrigger+0x90>
	{
		OS_ENTER_CRITICAL();
    7848:	8f b7       	in	r24, 0x3f	; 63
    784a:	f8 94       	cli
		watchdogCurrentMask = 0;
    784c:	10 92 7f 07 	sts	0x077F, r1
    7850:	10 92 80 07 	sts	0x0780, r1
    7854:	10 92 81 07 	sts	0x0781, r1
    7858:	10 92 82 07 	sts	0x0782, r1
		OS_EXIT_CRITICAL();
    785c:	8f bf       	out	0x3f, r24	; 63

		wdt_reset();
    785e:	a8 95       	wdr
	}
}
    7860:	1f 91       	pop	r17
    7862:	0f 91       	pop	r16
    7864:	ff 90       	pop	r15
    7866:	ef 90       	pop	r14
    7868:	08 95       	ret

0000786a <PIBToFloatSendNAK>:

void PIBToFloatSendNAK(uint16_t command, uint16_t msgSeq, uint16_t destination)
{

	return;
}
    786a:	08 95       	ret

0000786c <ValidateCRC16>:
//
//	Validates A CRC value passed in a communication -- assumes crc is passed at the end of the buffer
//
//---------------------------------------------------------------------------------
uint8_t ValidateCRC16(uint8_t* pBuffer, uint16_t size, uint16_t initValue)
{
    786c:	cf 93       	push	r28
    786e:	df 93       	push	r29
    7870:	ec 01       	movw	r28, r24
    7872:	db 01       	movw	r26, r22
    7874:	20 e0       	ldi	r18, 0x00	; 0
    7876:	30 e0       	ldi	r19, 0x00	; 0
	uint8_t retval = FALSE;
	uint16_t crc = initValue;
	uint16_t* pRxCRC = NULL;
	int i = 0;

	for(i = 0; i < (size - CRC16_SIZE); i++)
    7878:	12 97       	sbiw	r26, 0x02	; 2
    787a:	1d c0       	rjmp	.+58     	; 0x78b6 <ValidateCRC16+0x4a>
_crc16_update(uint16_t __crc, uint8_t __data)
{
	uint8_t __tmp;
	uint16_t __ret;

	__asm__ __volatile__ (
    787c:	fe 01       	movw	r30, r28
    787e:	e2 0f       	add	r30, r18
    7880:	f3 1f       	adc	r31, r19
    7882:	80 81       	ld	r24, Z
    7884:	48 27       	eor	r20, r24
    7886:	84 2f       	mov	r24, r20
    7888:	82 95       	swap	r24
    788a:	84 27       	eor	r24, r20
    788c:	08 2e       	mov	r0, r24
    788e:	86 95       	lsr	r24
    7890:	86 95       	lsr	r24
    7892:	80 25       	eor	r24, r0
    7894:	08 2e       	mov	r0, r24
    7896:	86 95       	lsr	r24
    7898:	80 25       	eor	r24, r0
    789a:	87 70       	andi	r24, 0x07	; 7
    789c:	04 2e       	mov	r0, r20
    789e:	45 2f       	mov	r20, r21
    78a0:	86 95       	lsr	r24
    78a2:	07 94       	ror	r0
    78a4:	87 95       	ror	r24
    78a6:	50 2d       	mov	r21, r0
    78a8:	48 27       	eor	r20, r24
    78aa:	06 94       	lsr	r0
    78ac:	87 95       	ror	r24
    78ae:	50 25       	eor	r21, r0
    78b0:	48 27       	eor	r20, r24
    78b2:	2f 5f       	subi	r18, 0xFF	; 255
    78b4:	3f 4f       	sbci	r19, 0xFF	; 255
    78b6:	2a 17       	cp	r18, r26
    78b8:	3b 07       	cpc	r19, r27
    78ba:	00 f3       	brcs	.-64     	; 0x787c <ValidateCRC16+0x10>
		crc = _crc16_update(crc, *(pBuffer + i));
	}

	pRxCRC = (uint16_t*)(pBuffer + i);

	if(crc == *pRxCRC)
    78bc:	ac 0f       	add	r26, r28
    78be:	bd 1f       	adc	r27, r29
    78c0:	8d 91       	ld	r24, X+
    78c2:	9c 91       	ld	r25, X
    78c4:	48 17       	cp	r20, r24
    78c6:	59 07       	cpc	r21, r25
    78c8:	11 f4       	brne	.+4      	; 0x78ce <ValidateCRC16+0x62>
    78ca:	8f ef       	ldi	r24, 0xFF	; 255
    78cc:	01 c0       	rjmp	.+2      	; 0x78d0 <ValidateCRC16+0x64>
    78ce:	80 e0       	ldi	r24, 0x00	; 0
	{
		retval = SUCCESS;
	}

	return retval;
}
    78d0:	df 91       	pop	r29
    78d2:	cf 91       	pop	r28
    78d4:	08 95       	ret

000078d6 <CalculateCRC16>:
//
//	Calculates A CRC value for an outbound communication
//
//---------------------------------------------------------------------------------
uint16_t CalculateCRC16(uint8_t* pBuffer, uint16_t size, uint16_t initValue)
{
    78d6:	dc 01       	movw	r26, r24
    78d8:	20 e0       	ldi	r18, 0x00	; 0
    78da:	30 e0       	ldi	r19, 0x00	; 0
    78dc:	1d c0       	rjmp	.+58     	; 0x7918 <CalculateCRC16+0x42>
    78de:	fd 01       	movw	r30, r26
    78e0:	e2 0f       	add	r30, r18
    78e2:	f3 1f       	adc	r31, r19
    78e4:	80 81       	ld	r24, Z
    78e6:	48 27       	eor	r20, r24
    78e8:	84 2f       	mov	r24, r20
    78ea:	82 95       	swap	r24
    78ec:	84 27       	eor	r24, r20
    78ee:	08 2e       	mov	r0, r24
    78f0:	86 95       	lsr	r24
    78f2:	86 95       	lsr	r24
    78f4:	80 25       	eor	r24, r0
    78f6:	08 2e       	mov	r0, r24
    78f8:	86 95       	lsr	r24
    78fa:	80 25       	eor	r24, r0
    78fc:	87 70       	andi	r24, 0x07	; 7
    78fe:	04 2e       	mov	r0, r20
    7900:	45 2f       	mov	r20, r21
    7902:	86 95       	lsr	r24
    7904:	07 94       	ror	r0
    7906:	87 95       	ror	r24
    7908:	50 2d       	mov	r21, r0
    790a:	48 27       	eor	r20, r24
    790c:	06 94       	lsr	r0
    790e:	87 95       	ror	r24
    7910:	50 25       	eor	r21, r0
    7912:	48 27       	eor	r20, r24
	uint16_t crc = initValue;

	for(int i = 0; i < (size); i++)
    7914:	2f 5f       	subi	r18, 0xFF	; 255
    7916:	3f 4f       	sbci	r19, 0xFF	; 255
    7918:	26 17       	cp	r18, r22
    791a:	37 07       	cpc	r19, r23
    791c:	00 f3       	brcs	.-64     	; 0x78de <CalculateCRC16+0x8>
	{
		crc = _crc16_update(crc, *(pBuffer + i));
	}

	return crc;
}
    791e:	ca 01       	movw	r24, r20
    7920:	08 95       	ret

00007922 <SendDebugMsg>:
		}
	}
}

uint8_t SendDebugMsg(PDEBUG_OUTPUT_INFO pDbgInfo)
{
    7922:	0f 93       	push	r16
    7924:	1f 93       	push	r17
    7926:	df 93       	push	r29
    7928:	cf 93       	push	r28
    792a:	0f 92       	push	r0
    792c:	cd b7       	in	r28, 0x3d	; 61
    792e:	de b7       	in	r29, 0x3e	; 62
    7930:	8c 01       	movw	r16, r24
	uint8_t retval = SUCCESS;
    7932:	8f ef       	ldi	r24, 0xFF	; 255
    7934:	89 83       	std	Y+1, r24	; 0x01

	if(pDbgInfo->lenBuffer <= 192)
    7936:	d8 01       	movw	r26, r16
    7938:	12 96       	adiw	r26, 0x02	; 2
    793a:	8c 91       	ld	r24, X
    793c:	81 3c       	cpi	r24, 0xC1	; 193
    793e:	08 f0       	brcs	.+2      	; 0x7942 <SendDebugMsg+0x20>
    7940:	5b c0       	rjmp	.+182    	; 0x79f8 <SendDebugMsg+0xd6>
	{
		PDEBUG_MSG_OUTPUT pReport = NULL;

		OSMutexPend(pMutexFloatQueue, INFINITE, &retval);
    7942:	80 91 51 19 	lds	r24, 0x1951
    7946:	90 91 52 19 	lds	r25, 0x1952
    794a:	60 e0       	ldi	r22, 0x00	; 0
    794c:	70 e0       	ldi	r23, 0x00	; 0
    794e:	ae 01       	movw	r20, r28
    7950:	4f 5f       	subi	r20, 0xFF	; 255
    7952:	5f 4f       	sbci	r21, 0xFF	; 255
    7954:	0e 94 c2 28 	call	0x5184	; 0x5184 <OSMutexPend>
		{
			pReport = (PDEBUG_MSG_OUTPUT)&(txFloatData[headFloatTx]);
    7958:	80 91 93 07 	lds	r24, 0x0793
    795c:	90 e0       	ldi	r25, 0x00	; 0
    795e:	26 e3       	ldi	r18, 0x36	; 54
    7960:	31 e0       	ldi	r19, 0x01	; 1
    7962:	82 9f       	mul	r24, r18
    7964:	f0 01       	movw	r30, r0
    7966:	83 9f       	mul	r24, r19
    7968:	f0 0d       	add	r31, r0
    796a:	92 9f       	mul	r25, r18
    796c:	f0 0d       	add	r31, r0
    796e:	11 24       	eor	r1, r1
    7970:	e3 5a       	subi	r30, 0xA3	; 163
    7972:	f6 45       	sbci	r31, 0x56	; 86

			pReport->comm.headers.length  = sizeof(COMM_XBEE_DATA_XMIT) + pDbgInfo->lenBuffer + CRC16_SIZE;
    7974:	d8 01       	movw	r26, r16
    7976:	12 96       	adiw	r26, 0x02	; 2
    7978:	4c 91       	ld	r20, X
    797a:	12 97       	sbiw	r26, 0x02	; 2
    797c:	50 e0       	ldi	r21, 0x00	; 0
    797e:	4e 5e       	subi	r20, 0xEE	; 238
    7980:	5f 4f       	sbci	r21, 0xFF	; 255
    7982:	51 83       	std	Z+1, r21	; 0x01
    7984:	40 83       	st	Z, r20
    7986:	42 51       	subi	r20, 0x12	; 18
    7988:	50 40       	sbci	r21, 0x00	; 0
			pReport->comm.headers.destination = FLOAT_DEBUG_INTERFACE;
    798a:	83 e0       	ldi	r24, 0x03	; 3
    798c:	90 e0       	ldi	r25, 0x00	; 0
    798e:	93 83       	std	Z+3, r25	; 0x03
    7990:	82 83       	std	Z+2, r24	; 0x02

			pReport->comm.debugInfo.outputFormat = pDbgInfo->fmtBuffer;
    7992:	13 96       	adiw	r26, 0x03	; 3
    7994:	8c 91       	ld	r24, X
    7996:	13 97       	sbiw	r26, 0x03	; 3
    7998:	84 87       	std	Z+12, r24	; 0x0c
			pReport->comm.debugInfo.debugLevel 	 = pDbgInfo->dbgLevel;
    799a:	14 96       	adiw	r26, 0x04	; 4
    799c:	8c 91       	ld	r24, X
    799e:	14 97       	sbiw	r26, 0x04	; 4
    79a0:	85 87       	std	Z+13, r24	; 0x0d
			pReport->comm.debugInfo.size         = pDbgInfo->lenBuffer;
    79a2:	57 87       	std	Z+15, r21	; 0x0f
    79a4:	46 87       	std	Z+14, r20	; 0x0e

			memcpy(pReport->msg, pDbgInfo->pBuffer, pDbgInfo->lenBuffer);
    79a6:	70 96       	adiw	r30, 0x10	; 16
    79a8:	6c 91       	ld	r22, X
    79aa:	11 96       	adiw	r26, 0x01	; 1
    79ac:	7c 91       	ld	r23, X
    79ae:	cf 01       	movw	r24, r30
    79b0:	50 e0       	ldi	r21, 0x00	; 0
    79b2:	0e 94 1c f0 	call	0x1e038	; 0x1e038 <memcpy>

			(headFloatTx < MAX_FLOAT_BUFFERS - 1) ? (headFloatTx++) : (headFloatTx = 0);
    79b6:	80 91 93 07 	lds	r24, 0x0793
    79ba:	87 30       	cpi	r24, 0x07	; 7
    79bc:	20 f4       	brcc	.+8      	; 0x79c6 <SendDebugMsg+0xa4>
    79be:	8f 5f       	subi	r24, 0xFF	; 255
    79c0:	80 93 93 07 	sts	0x0793, r24
    79c4:	02 c0       	rjmp	.+4      	; 0x79ca <SendDebugMsg+0xa8>
    79c6:	10 92 93 07 	sts	0x0793, r1

			if(headFloatTx == tailFloatTx)
    79ca:	90 91 93 07 	lds	r25, 0x0793
    79ce:	80 91 94 07 	lds	r24, 0x0794
    79d2:	98 17       	cp	r25, r24
    79d4:	41 f4       	brne	.+16     	; 0x79e6 <SendDebugMsg+0xc4>
				(tailFloatTx < MAX_FLOAT_BUFFERS - 1) ? (tailFloatTx++) : (tailFloatTx = 0);
    79d6:	97 30       	cpi	r25, 0x07	; 7
    79d8:	20 f4       	brcc	.+8      	; 0x79e2 <SendDebugMsg+0xc0>
    79da:	9f 5f       	subi	r25, 0xFF	; 255
    79dc:	90 93 94 07 	sts	0x0794, r25
    79e0:	02 c0       	rjmp	.+4      	; 0x79e6 <SendDebugMsg+0xc4>
    79e2:	10 92 94 07 	sts	0x0794, r1
		}
		OSMutexPost(pMutexFloatQueue);
    79e6:	80 91 51 19 	lds	r24, 0x1951
    79ea:	90 91 52 19 	lds	r25, 0x1952
    79ee:	0e 94 36 27 	call	0x4e6c	; 0x4e6c <OSMutexPost>

		retval = SUCCESS;
    79f2:	8f ef       	ldi	r24, 0xFF	; 255
    79f4:	89 83       	std	Y+1, r24	; 0x01
    79f6:	01 c0       	rjmp	.+2      	; 0x79fa <SendDebugMsg+0xd8>
	}
	else
	{
		retval = FAIL;
    79f8:	19 82       	std	Y+1, r1	; 0x01
	}

	return retval;
}
    79fa:	89 81       	ldd	r24, Y+1	; 0x01
    79fc:	0f 90       	pop	r0
    79fe:	cf 91       	pop	r28
    7a00:	df 91       	pop	r29
    7a02:	1f 91       	pop	r17
    7a04:	0f 91       	pop	r16
    7a06:	08 95       	ret

00007a08 <SerialPortPassThroughFloat>:
	OSMutexPost(pMutexFloatQueue);

	return;
}
void SerialPortPassThroughFloat(uint8_t port)
{
    7a08:	1f 93       	push	r17
    7a0a:	18 2f       	mov	r17, r24
	uint8_t c = _BV(RXC0);

	UCSR0B = _BV(RXEN0) | _BV(TXEN0);
    7a0c:	88 e1       	ldi	r24, 0x18	; 24
    7a0e:	80 93 c1 00 	sts	0x00C1, r24
	UCSR1B = _BV(RXEN0) | _BV(TXEN0);
    7a12:	80 93 c9 00 	sts	0x00C9, r24
	UCSR2B = _BV(RXEN0) | _BV(TXEN0);
    7a16:	80 93 d1 00 	sts	0x00D1, r24
	UCSR3B = _BV(RXEN0) | _BV(TXEN0);
    7a1a:	80 93 31 01 	sts	0x0131, r24
    7a1e:	07 c0       	rjmp	.+14     	; 0x7a2e <SerialPortPassThroughFloat+0x26>

	while(readyForSerialPassThru == FALSE)
		OSTimeDlyHMSM(0,0,0,100);
    7a20:	80 e0       	ldi	r24, 0x00	; 0
    7a22:	60 e0       	ldi	r22, 0x00	; 0
    7a24:	40 e0       	ldi	r20, 0x00	; 0
    7a26:	24 e6       	ldi	r18, 0x64	; 100
    7a28:	30 e0       	ldi	r19, 0x00	; 0
    7a2a:	0e 94 2a 2e 	call	0x5c54	; 0x5c54 <OSTimeDlyHMSM>
	UCSR0B = _BV(RXEN0) | _BV(TXEN0);
	UCSR1B = _BV(RXEN0) | _BV(TXEN0);
	UCSR2B = _BV(RXEN0) | _BV(TXEN0);
	UCSR3B = _BV(RXEN0) | _BV(TXEN0);

	while(readyForSerialPassThru == FALSE)
    7a2e:	80 91 9e a1 	lds	r24, 0xA19E
    7a32:	88 23       	and	r24, r24
    7a34:	a9 f3       	breq	.-22     	; 0x7a20 <SerialPortPassThroughFloat+0x18>
		OSTimeDlyHMSM(0,0,0,100);

	wdt_disable();  	
    7a36:	88 e1       	ldi	r24, 0x18	; 24
    7a38:	0f b6       	in	r0, 0x3f	; 63
    7a3a:	f8 94       	cli
    7a3c:	80 93 60 00 	sts	0x0060, r24
    7a40:	10 92 60 00 	sts	0x0060, r1
    7a44:	0f be       	out	0x3f, r0	; 63
	cli();
    7a46:	f8 94       	cli

	switch(port)
    7a48:	12 30       	cpi	r17, 0x02	; 2
    7a4a:	a9 f0       	breq	.+42     	; 0x7a76 <SerialPortPassThroughFloat+0x6e>
    7a4c:	13 30       	cpi	r17, 0x03	; 3
    7a4e:	21 f1       	breq	.+72     	; 0x7a98 <SerialPortPassThroughFloat+0x90>
    7a50:	11 30       	cpi	r17, 0x01	; 1
    7a52:	99 f5       	brne	.+102    	; 0x7aba <SerialPortPassThroughFloat+0xb2>
	{
		case 1:
		{
			while(1)
			{
				if(UCSR0A & c)
    7a54:	80 91 c0 00 	lds	r24, 0x00C0
    7a58:	87 ff       	sbrs	r24, 7
    7a5a:	04 c0       	rjmp	.+8      	; 0x7a64 <SerialPortPassThroughFloat+0x5c>
					UDR1 = UDR0;
    7a5c:	80 91 c6 00 	lds	r24, 0x00C6
    7a60:	80 93 ce 00 	sts	0x00CE, r24
				if(UCSR1A & c)
    7a64:	80 91 c8 00 	lds	r24, 0x00C8
    7a68:	87 ff       	sbrs	r24, 7
    7a6a:	f4 cf       	rjmp	.-24     	; 0x7a54 <SerialPortPassThroughFloat+0x4c>
					UDR0 = UDR1;
    7a6c:	80 91 ce 00 	lds	r24, 0x00CE
    7a70:	80 93 c6 00 	sts	0x00C6, r24
    7a74:	ef cf       	rjmp	.-34     	; 0x7a54 <SerialPortPassThroughFloat+0x4c>
		}
		case 2:
		{
			while(1)
			{
				if(UCSR0A & c)
    7a76:	80 91 c0 00 	lds	r24, 0x00C0
    7a7a:	87 ff       	sbrs	r24, 7
    7a7c:	04 c0       	rjmp	.+8      	; 0x7a86 <SerialPortPassThroughFloat+0x7e>
					UDR2 = UDR0;
    7a7e:	80 91 c6 00 	lds	r24, 0x00C6
    7a82:	80 93 d6 00 	sts	0x00D6, r24
				if(UCSR2A & c)
    7a86:	80 91 d0 00 	lds	r24, 0x00D0
    7a8a:	87 ff       	sbrs	r24, 7
    7a8c:	f4 cf       	rjmp	.-24     	; 0x7a76 <SerialPortPassThroughFloat+0x6e>
					UDR0 = UDR2;
    7a8e:	80 91 d6 00 	lds	r24, 0x00D6
    7a92:	80 93 c6 00 	sts	0x00C6, r24
    7a96:	ef cf       	rjmp	.-34     	; 0x7a76 <SerialPortPassThroughFloat+0x6e>
		}
		case 3:
		{
			while(1)
			{
				if(UCSR0A & c)
    7a98:	80 91 c0 00 	lds	r24, 0x00C0
    7a9c:	87 ff       	sbrs	r24, 7
    7a9e:	04 c0       	rjmp	.+8      	; 0x7aa8 <SerialPortPassThroughFloat+0xa0>
					UDR3 = UDR0;
    7aa0:	80 91 c6 00 	lds	r24, 0x00C6
    7aa4:	80 93 36 01 	sts	0x0136, r24
				if(UCSR3A & c)
    7aa8:	80 91 30 01 	lds	r24, 0x0130
    7aac:	87 ff       	sbrs	r24, 7
    7aae:	f4 cf       	rjmp	.-24     	; 0x7a98 <SerialPortPassThroughFloat+0x90>
					UDR0 = UDR3;
    7ab0:	80 91 36 01 	lds	r24, 0x0136
    7ab4:	80 93 c6 00 	sts	0x00C6, r24
    7ab8:	ef cf       	rjmp	.-34     	; 0x7a98 <SerialPortPassThroughFloat+0x90>
    7aba:	ff cf       	rjmp	.-2      	; 0x7aba <SerialPortPassThroughFloat+0xb2>

00007abc <FloatCommsQueueConsoleResponse>:
	return SUCCESS;
}


void FloatCommsQueueConsoleResponse(PPYLD_MGR_FILE_RX_BUFFER pHeaders, char* response)
{
    7abc:	af 92       	push	r10
    7abe:	bf 92       	push	r11
    7ac0:	cf 92       	push	r12
    7ac2:	df 92       	push	r13
    7ac4:	ef 92       	push	r14
    7ac6:	ff 92       	push	r15
    7ac8:	0f 93       	push	r16
    7aca:	1f 93       	push	r17
    7acc:	df 93       	push	r29
    7ace:	cf 93       	push	r28
    7ad0:	0f 92       	push	r0
    7ad2:	cd b7       	in	r28, 0x3d	; 61
    7ad4:	de b7       	in	r29, 0x3e	; 62
    7ad6:	8c 01       	movw	r16, r24
    7ad8:	d6 2e       	mov	r13, r22
    7ada:	c7 2e       	mov	r12, r23

	PCONSOLE_ACK_XMIT_2 pReport;
	uint8_t err = 0;
    7adc:	19 82       	std	Y+1, r1	; 0x01
	char* pData;

	OSMutexPend(pMutexFloatQueue, INFINITE, &err);
    7ade:	80 91 51 19 	lds	r24, 0x1951
    7ae2:	90 91 52 19 	lds	r25, 0x1952
    7ae6:	60 e0       	ldi	r22, 0x00	; 0
    7ae8:	70 e0       	ldi	r23, 0x00	; 0
    7aea:	ae 01       	movw	r20, r28
    7aec:	4f 5f       	subi	r20, 0xFF	; 255
    7aee:	5f 4f       	sbci	r21, 0xFF	; 255
    7af0:	0e 94 c2 28 	call	0x5184	; 0x5184 <OSMutexPend>

	pReport = (PCONSOLE_ACK_XMIT_2)&(txFloatAck[headFloatAckTx]);
    7af4:	80 91 95 07 	lds	r24, 0x0795
    7af8:	90 e0       	ldi	r25, 0x00	; 0
    7afa:	26 e3       	ldi	r18, 0x36	; 54
    7afc:	31 e0       	ldi	r19, 0x01	; 1
    7afe:	82 9f       	mul	r24, r18
    7b00:	70 01       	movw	r14, r0
    7b02:	83 9f       	mul	r24, r19
    7b04:	f0 0c       	add	r15, r0
    7b06:	92 9f       	mul	r25, r18
    7b08:	f0 0c       	add	r15, r0
    7b0a:	11 24       	eor	r1, r1
    7b0c:	8d e0       	ldi	r24, 0x0D	; 13
    7b0e:	93 eb       	ldi	r25, 0xB3	; 179
    7b10:	e8 0e       	add	r14, r24
    7b12:	f9 1e       	adc	r15, r25
	pData = (char*)pReport;

	pReport->comm.headers.destination = FLOAT_TASK_FORWARD_MESSAGE;		//pTaskInfo->pBuf->responseInfo.source;
    7b14:	80 e2       	ldi	r24, 0x20	; 32
    7b16:	90 e0       	ldi	r25, 0x00	; 0
    7b18:	d7 01       	movw	r26, r14
    7b1a:	13 96       	adiw	r26, 0x03	; 3
    7b1c:	9c 93       	st	X, r25
    7b1e:	8e 93       	st	-X, r24
    7b20:	12 97       	sbiw	r26, 0x02	; 2

	pReport->comm.fwdInfo.msgFormat = MSG_FORMAT_SHIP_TO_SHORE;
    7b22:	82 e0       	ldi	r24, 0x02	; 2
    7b24:	1c 96       	adiw	r26, 0x0c	; 12
    7b26:	8c 93       	st	X, r24
    7b28:	1c 97       	sbiw	r26, 0x0c	; 12
	pReport->comm.fwdInfo.destination = pHeaders->wrapper.source;
    7b2a:	f8 01       	movw	r30, r16
    7b2c:	84 81       	ldd	r24, Z+4	; 0x04
    7b2e:	95 81       	ldd	r25, Z+5	; 0x05
    7b30:	1e 96       	adiw	r26, 0x0e	; 14
    7b32:	9c 93       	st	X, r25
    7b34:	8e 93       	st	-X, r24
    7b36:	1d 97       	sbiw	r26, 0x0d	; 13
	pReport->comm.fwdInfo.source = mainTaskAddress;	
    7b38:	80 91 e4 03 	lds	r24, 0x03E4
    7b3c:	90 91 e5 03 	lds	r25, 0x03E5
    7b40:	50 96       	adiw	r26, 0x10	; 16
    7b42:	9c 93       	st	X, r25
    7b44:	8e 93       	st	-X, r24
    7b46:	1f 97       	sbiw	r26, 0x0f	; 15

	if(floatCommsConsoleResponse < CONSOLE_RESPONSE_UNKNOWN_CMD)
    7b48:	20 91 e7 03 	lds	r18, 0x03E7
    7b4c:	83 ef       	ldi	r24, 0xF3	; 243
    7b4e:	a8 2e       	mov	r10, r24
    7b50:	88 e1       	ldi	r24, 0x18	; 24
    7b52:	b8 2e       	mov	r11, r24
    7b54:	2a 30       	cpi	r18, 0x0A	; 10
    7b56:	08 f0       	brcs	.+2      	; 0x7b5a <FloatCommsQueueConsoleResponse+0x9e>
    7b58:	62 c0       	rjmp	.+196    	; 0x7c1e <FloatCommsQueueConsoleResponse+0x162>
	{

		pReport->comm.headers.length = sizeof(PIB_DATA_FORWARD_MESSAGE) + sizeof(CONSOLE_ACK) + strlen(response) + CRC16_SIZE;
    7b5a:	ad 2d       	mov	r26, r13
    7b5c:	bc 2d       	mov	r27, r12
    7b5e:	fd 01       	movw	r30, r26
    7b60:	01 90       	ld	r0, Z+
    7b62:	00 20       	and	r0, r0
    7b64:	e9 f7       	brne	.-6      	; 0x7b60 <FloatCommsQueueConsoleResponse+0xa4>
    7b66:	ea 1b       	sub	r30, r26
    7b68:	fb 0b       	sbc	r31, r27
    7b6a:	7d 96       	adiw	r30, 0x1d	; 29
    7b6c:	d7 01       	movw	r26, r14
    7b6e:	11 96       	adiw	r26, 0x01	; 1
    7b70:	fc 93       	st	X, r31
    7b72:	ee 93       	st	-X, r30

		pReport->comm.iridiumInfo.headerICD.type = ACK_CONSOLE_DATA;
    7b74:	8d e3       	ldi	r24, 0x3D	; 61
    7b76:	51 96       	adiw	r26, 0x11	; 17
    7b78:	8c 93       	st	X, r24

		pReport->consoleAck.len = strlen(response);
    7b7a:	ad 2d       	mov	r26, r13
    7b7c:	bc 2d       	mov	r27, r12
    7b7e:	fd 01       	movw	r30, r26
    7b80:	01 90       	ld	r0, Z+
    7b82:	00 20       	and	r0, r0
    7b84:	e9 f7       	brne	.-6      	; 0x7b80 <FloatCommsQueueConsoleResponse+0xc4>
    7b86:	31 97       	sbiw	r30, 0x01	; 1
    7b88:	ea 1b       	sub	r30, r26
    7b8a:	fb 0b       	sbc	r31, r27
    7b8c:	d7 01       	movw	r26, r14
    7b8e:	5b 96       	adiw	r26, 0x1b	; 27
    7b90:	fc 93       	st	X, r31
    7b92:	ee 93       	st	-X, r30
    7b94:	5a 97       	sbiw	r26, 0x1a	; 26
		pReport->consoleAck.disposition = 3;
    7b96:	83 e0       	ldi	r24, 0x03	; 3
    7b98:	59 96       	adiw	r26, 0x19	; 25
    7b9a:	8c 93       	st	X, r24
    7b9c:	59 97       	sbiw	r26, 0x19	; 25
		pReport->consoleAck.format = 0;
    7b9e:	58 96       	adiw	r26, 0x18	; 24
    7ba0:	1c 92       	st	X, r1
		pData = pData + sizeof(PIB_DATA_FORWARD_MESSAGE) + sizeof(CONSOLE_ACK);
    7ba2:	87 01       	movw	r16, r14
    7ba4:	04 5e       	subi	r16, 0xE4	; 228
    7ba6:	1f 4f       	sbci	r17, 0xFF	; 255
		memcpy(pData, response, strlen(response));
    7ba8:	ed 2d       	mov	r30, r13
    7baa:	fc 2d       	mov	r31, r12
    7bac:	df 01       	movw	r26, r30
    7bae:	0d 90       	ld	r0, X+
    7bb0:	00 20       	and	r0, r0
    7bb2:	e9 f7       	brne	.-6      	; 0x7bae <FloatCommsQueueConsoleResponse+0xf2>
    7bb4:	11 97       	sbiw	r26, 0x01	; 1
    7bb6:	ae 1b       	sub	r26, r30
    7bb8:	bf 0b       	sbc	r27, r31
    7bba:	c8 01       	movw	r24, r16
    7bbc:	6d 2d       	mov	r22, r13
    7bbe:	7c 2d       	mov	r23, r12
    7bc0:	ad 01       	movw	r20, r26
    7bc2:	0e 94 1c f0 	call	0x1e038	; 0x1e038 <memcpy>
		memcpy(dbgMsg, pData, strlen(response));
    7bc6:	ed 2d       	mov	r30, r13
    7bc8:	fc 2d       	mov	r31, r12
    7bca:	df 01       	movw	r26, r30
    7bcc:	0d 90       	ld	r0, X+
    7bce:	00 20       	and	r0, r0
    7bd0:	e9 f7       	brne	.-6      	; 0x7bcc <FloatCommsQueueConsoleResponse+0x110>
    7bd2:	11 97       	sbiw	r26, 0x01	; 1
    7bd4:	ae 1b       	sub	r26, r30
    7bd6:	bf 0b       	sbc	r27, r31
    7bd8:	c5 01       	movw	r24, r10
    7bda:	b8 01       	movw	r22, r16
    7bdc:	ad 01       	movw	r20, r26
    7bde:	0e 94 1c f0 	call	0x1e038	; 0x1e038 <memcpy>
		dbgMsg[strlen(response)]=0;
    7be2:	ad 2d       	mov	r26, r13
    7be4:	bc 2d       	mov	r27, r12
    7be6:	fd 01       	movw	r30, r26
    7be8:	01 90       	ld	r0, Z+
    7bea:	00 20       	and	r0, r0
    7bec:	e9 f7       	brne	.-6      	; 0x7be8 <FloatCommsQueueConsoleResponse+0x12c>
    7bee:	31 97       	sbiw	r30, 0x01	; 1
    7bf0:	ea 1b       	sub	r30, r26
    7bf2:	fb 0b       	sbc	r31, r27
    7bf4:	ea 0d       	add	r30, r10
    7bf6:	fb 1d       	adc	r31, r11
    7bf8:	10 82       	st	Z, r1
		SEND_MSG;
		
		sprintf_P(dbgMsg, PSTR("Sending ACK from 0x%04X to 0x%04X"), pReport->comm.fwdInfo.source, pReport->comm.fwdInfo.destination);
    7bfa:	ed b7       	in	r30, 0x3d	; 61
    7bfc:	fe b7       	in	r31, 0x3e	; 62
    7bfe:	38 97       	sbiw	r30, 0x08	; 8
    7c00:	0f b6       	in	r0, 0x3f	; 63
    7c02:	f8 94       	cli
    7c04:	fe bf       	out	0x3e, r31	; 62
    7c06:	0f be       	out	0x3f, r0	; 63
    7c08:	ed bf       	out	0x3d, r30	; 61
    7c0a:	31 96       	adiw	r30, 0x01	; 1
    7c0c:	ad b7       	in	r26, 0x3d	; 61
    7c0e:	be b7       	in	r27, 0x3e	; 62
    7c10:	12 96       	adiw	r26, 0x02	; 2
    7c12:	bc 92       	st	X, r11
    7c14:	ae 92       	st	-X, r10
    7c16:	11 97       	sbiw	r26, 0x01	; 1
    7c18:	83 eb       	ldi	r24, 0xB3	; 179
    7c1a:	92 e0       	ldi	r25, 0x02	; 2
    7c1c:	23 c0       	rjmp	.+70     	; 0x7c64 <FloatCommsQueueConsoleResponse+0x1a8>
		SEND_MSG;

	}
	else
	{
		pReport->comm.headers.length = sizeof(PIB_DATA_FORWARD_MESSAGE) + sizeof(CONSOLE_NACK) + CRC16_SIZE;
    7c1e:	8d e1       	ldi	r24, 0x1D	; 29
    7c20:	90 e0       	ldi	r25, 0x00	; 0
    7c22:	d7 01       	movw	r26, r14
    7c24:	11 96       	adiw	r26, 0x01	; 1
    7c26:	9c 93       	st	X, r25
    7c28:	8e 93       	st	-X, r24
		pReport->comm.iridiumInfo.headerICD.type = NACK_CONSOLE_DATA;
    7c2a:	86 e2       	ldi	r24, 0x26	; 38
    7c2c:	51 96       	adiw	r26, 0x11	; 17
    7c2e:	8c 93       	st	X, r24
    7c30:	51 97       	sbiw	r26, 0x11	; 17
		pReport->consoleNack.numDispositions = 1;
    7c32:	81 e0       	ldi	r24, 0x01	; 1
    7c34:	90 e0       	ldi	r25, 0x00	; 0
    7c36:	59 96       	adiw	r26, 0x19	; 25
    7c38:	9c 93       	st	X, r25
    7c3a:	8e 93       	st	-X, r24
    7c3c:	58 97       	sbiw	r26, 0x18	; 24
		pReport->consoleNack.disposition[0] = floatCommsConsoleResponse;
    7c3e:	5a 96       	adiw	r26, 0x1a	; 26
    7c40:	2c 93       	st	X, r18

		sprintf_P(dbgMsg, PSTR("Sending NAK from 0x%04X to 0x%04X"), pReport->comm.fwdInfo.source, pReport->comm.fwdInfo.destination);
    7c42:	ed b7       	in	r30, 0x3d	; 61
    7c44:	fe b7       	in	r31, 0x3e	; 62
    7c46:	38 97       	sbiw	r30, 0x08	; 8
    7c48:	0f b6       	in	r0, 0x3f	; 63
    7c4a:	f8 94       	cli
    7c4c:	fe bf       	out	0x3e, r31	; 62
    7c4e:	0f be       	out	0x3f, r0	; 63
    7c50:	ed bf       	out	0x3d, r30	; 61
    7c52:	31 96       	adiw	r30, 0x01	; 1
    7c54:	ad b7       	in	r26, 0x3d	; 61
    7c56:	be b7       	in	r27, 0x3e	; 62
    7c58:	12 96       	adiw	r26, 0x02	; 2
    7c5a:	bc 92       	st	X, r11
    7c5c:	ae 92       	st	-X, r10
    7c5e:	11 97       	sbiw	r26, 0x01	; 1
    7c60:	81 e9       	ldi	r24, 0x91	; 145
    7c62:	92 e0       	ldi	r25, 0x02	; 2
    7c64:	93 83       	std	Z+3, r25	; 0x03
    7c66:	82 83       	std	Z+2, r24	; 0x02
    7c68:	d7 01       	movw	r26, r14
    7c6a:	1f 96       	adiw	r26, 0x0f	; 15
    7c6c:	8d 91       	ld	r24, X+
    7c6e:	9c 91       	ld	r25, X
    7c70:	50 97       	sbiw	r26, 0x10	; 16
    7c72:	95 83       	std	Z+5, r25	; 0x05
    7c74:	84 83       	std	Z+4, r24	; 0x04
    7c76:	1d 96       	adiw	r26, 0x0d	; 13
    7c78:	8d 91       	ld	r24, X+
    7c7a:	9c 91       	ld	r25, X
    7c7c:	1e 97       	sbiw	r26, 0x0e	; 14
    7c7e:	97 83       	std	Z+7, r25	; 0x07
    7c80:	86 83       	std	Z+6, r24	; 0x06
    7c82:	0e 94 51 f1 	call	0x1e2a2	; 0x1e2a2 <sprintf_P>
    7c86:	ed b7       	in	r30, 0x3d	; 61
    7c88:	fe b7       	in	r31, 0x3e	; 62
    7c8a:	38 96       	adiw	r30, 0x08	; 8
    7c8c:	0f b6       	in	r0, 0x3f	; 63
    7c8e:	f8 94       	cli
    7c90:	fe bf       	out	0x3e, r31	; 62
    7c92:	0f be       	out	0x3f, r0	; 63
    7c94:	ed bf       	out	0x3d, r30	; 61
		SEND_MSG;
	}

	pReport->comm.iridiumInfo.headerICD.packetID = consoleIn[0].id;
    7c96:	80 91 6e 9d 	lds	r24, 0x9D6E
    7c9a:	90 91 6f 9d 	lds	r25, 0x9D6F
    7c9e:	a0 91 70 9d 	lds	r26, 0x9D70
    7ca2:	b0 91 71 9d 	lds	r27, 0x9D71
    7ca6:	f7 01       	movw	r30, r14
    7ca8:	82 8b       	std	Z+18, r24	; 0x12
    7caa:	93 8b       	std	Z+19, r25	; 0x13
    7cac:	a4 8b       	std	Z+20, r26	; 0x14
    7cae:	b5 8b       	std	Z+21, r27	; 0x15
	pReport->comm.iridiumInfo.headerICD.size = pReport->comm.headers.length - sizeof(PIB_DATA_FORWARD_MESSAGE) - CRC16_SIZE;
    7cb0:	80 81       	ld	r24, Z
    7cb2:	91 81       	ldd	r25, Z+1	; 0x01
    7cb4:	4a 97       	sbiw	r24, 0x1a	; 26
    7cb6:	97 8b       	std	Z+23, r25	; 0x17
    7cb8:	86 8b       	std	Z+22, r24	; 0x16

	

	(headFloatAckTx < MAX_ACK_BUFFERS - 1) ? (headFloatAckTx++) : (headFloatAckTx = 0);
    7cba:	80 91 95 07 	lds	r24, 0x0795
    7cbe:	83 30       	cpi	r24, 0x03	; 3
    7cc0:	20 f4       	brcc	.+8      	; 0x7cca <FloatCommsQueueConsoleResponse+0x20e>
    7cc2:	8f 5f       	subi	r24, 0xFF	; 255
    7cc4:	80 93 95 07 	sts	0x0795, r24
    7cc8:	02 c0       	rjmp	.+4      	; 0x7cce <FloatCommsQueueConsoleResponse+0x212>
    7cca:	10 92 95 07 	sts	0x0795, r1

	if(headFloatAckTx == tailFloatAckTx)
    7cce:	90 91 95 07 	lds	r25, 0x0795
    7cd2:	80 91 96 07 	lds	r24, 0x0796
    7cd6:	98 17       	cp	r25, r24
    7cd8:	41 f4       	brne	.+16     	; 0x7cea <FloatCommsQueueConsoleResponse+0x22e>
	{
		(tailFloatAckTx < MAX_ACK_BUFFERS - 1) ? (tailFloatAckTx++) : (tailFloatAckTx = 0);
    7cda:	93 30       	cpi	r25, 0x03	; 3
    7cdc:	20 f4       	brcc	.+8      	; 0x7ce6 <FloatCommsQueueConsoleResponse+0x22a>
    7cde:	9f 5f       	subi	r25, 0xFF	; 255
    7ce0:	90 93 96 07 	sts	0x0796, r25
    7ce4:	02 c0       	rjmp	.+4      	; 0x7cea <FloatCommsQueueConsoleResponse+0x22e>
    7ce6:	10 92 96 07 	sts	0x0796, r1
	}

	OSMutexPost(pMutexFloatQueue);
    7cea:	80 91 51 19 	lds	r24, 0x1951
    7cee:	90 91 52 19 	lds	r25, 0x1952
    7cf2:	0e 94 36 27 	call	0x4e6c	; 0x4e6c <OSMutexPost>

	return;
}
    7cf6:	0f 90       	pop	r0
    7cf8:	cf 91       	pop	r28
    7cfa:	df 91       	pop	r29
    7cfc:	1f 91       	pop	r17
    7cfe:	0f 91       	pop	r16
    7d00:	ff 90       	pop	r15
    7d02:	ef 90       	pop	r14
    7d04:	df 90       	pop	r13
    7d06:	cf 90       	pop	r12
    7d08:	bf 90       	pop	r11
    7d0a:	af 90       	pop	r10
    7d0c:	08 95       	ret

00007d0e <DotToPad>:

	return retval;
}

uint8_t	DotToPad(char* pad, char* dot)
{
    7d0e:	cf 92       	push	r12
    7d10:	df 92       	push	r13
    7d12:	ef 92       	push	r14
    7d14:	ff 92       	push	r15
    7d16:	0f 93       	push	r16
    7d18:	1f 93       	push	r17
    7d1a:	cf 93       	push	r28
    7d1c:	df 93       	push	r29
    7d1e:	6c 01       	movw	r12, r24
    7d20:	7b 01       	movw	r14, r22
	uint8_t retval = FAIL;
	int dotpos = -1;
	int len = -1;
	int i = 0;

	memset(pad, ' ', 11);
    7d22:	60 e2       	ldi	r22, 0x20	; 32
    7d24:	70 e0       	ldi	r23, 0x00	; 0
    7d26:	4b e0       	ldi	r20, 0x0B	; 11
    7d28:	50 e0       	ldi	r21, 0x00	; 0
    7d2a:	0e 94 25 f0 	call	0x1e04a	; 0x1e04a <memset>
	len = strlen(dot);
    7d2e:	d7 01       	movw	r26, r14
    7d30:	0d 90       	ld	r0, X+
    7d32:	00 20       	and	r0, r0
    7d34:	e9 f7       	brne	.-6      	; 0x7d30 <DotToPad+0x22>
    7d36:	8d 01       	movw	r16, r26
    7d38:	01 50       	subi	r16, 0x01	; 1
    7d3a:	10 40       	sbci	r17, 0x00	; 0
    7d3c:	0e 19       	sub	r16, r14
    7d3e:	1f 09       	sbc	r17, r15
    7d40:	20 e0       	ldi	r18, 0x00	; 0
    7d42:	30 e0       	ldi	r19, 0x00	; 0
    7d44:	0a c0       	rjmp	.+20     	; 0x7d5a <DotToPad+0x4c>
	
	for(i = 0; i<len; i++)
	{
		if(dot[i] == '.')
    7d46:	f7 01       	movw	r30, r14
    7d48:	e2 0f       	add	r30, r18
    7d4a:	f3 1f       	adc	r31, r19
    7d4c:	80 81       	ld	r24, Z
    7d4e:	8e 32       	cpi	r24, 0x2E	; 46
    7d50:	11 f4       	brne	.+4      	; 0x7d56 <DotToPad+0x48>
    7d52:	e9 01       	movw	r28, r18
    7d54:	07 c0       	rjmp	.+14     	; 0x7d64 <DotToPad+0x56>
	int i = 0;

	memset(pad, ' ', 11);
	len = strlen(dot);
	
	for(i = 0; i<len; i++)
    7d56:	2f 5f       	subi	r18, 0xFF	; 255
    7d58:	3f 4f       	sbci	r19, 0xFF	; 255
    7d5a:	20 17       	cp	r18, r16
    7d5c:	31 07       	cpc	r19, r17
    7d5e:	9c f3       	brlt	.-26     	; 0x7d46 <DotToPad+0x38>
    7d60:	cf ef       	ldi	r28, 0xFF	; 255
    7d62:	df ef       	ldi	r29, 0xFF	; 255
			dotpos = i;
			break;
		}
	}

	if((len > 0) && (len < 13))
    7d64:	c8 01       	movw	r24, r16
    7d66:	01 97       	sbiw	r24, 0x01	; 1
    7d68:	0c 97       	sbiw	r24, 0x0c	; 12
    7d6a:	10 f0       	brcs	.+4      	; 0x7d70 <DotToPad+0x62>
    7d6c:	80 e0       	ldi	r24, 0x00	; 0
    7d6e:	22 c0       	rjmp	.+68     	; 0x7db4 <DotToPad+0xa6>
	{
		if(dotpos > 0)
    7d70:	1c 16       	cp	r1, r28
    7d72:	1d 06       	cpc	r1, r29
    7d74:	cc f4       	brge	.+50     	; 0x7da8 <DotToPad+0x9a>
		{
			memcpy(pad, dot, dotpos);
    7d76:	c6 01       	movw	r24, r12
    7d78:	b7 01       	movw	r22, r14
    7d7a:	ae 01       	movw	r20, r28
    7d7c:	0e 94 1c f0 	call	0x1e038	; 0x1e038 <memcpy>
			if(len > dotpos)
    7d80:	c0 17       	cp	r28, r16
    7d82:	d1 07       	cpc	r29, r17
    7d84:	b4 f4       	brge	.+44     	; 0x7db2 <DotToPad+0xa4>
				memcpy(&pad[8], &dot[dotpos+1], (len-(dotpos+1)));
    7d86:	a6 01       	movw	r20, r12
    7d88:	48 5f       	subi	r20, 0xF8	; 248
    7d8a:	5f 4f       	sbci	r21, 0xFF	; 255
    7d8c:	fe 01       	movw	r30, r28
    7d8e:	e0 95       	com	r30
    7d90:	f0 95       	com	r31
    7d92:	e0 0f       	add	r30, r16
    7d94:	f1 1f       	adc	r31, r17
    7d96:	9e 01       	movw	r18, r28
    7d98:	2f 5f       	subi	r18, 0xFF	; 255
    7d9a:	3f 4f       	sbci	r19, 0xFF	; 255
    7d9c:	2e 0d       	add	r18, r14
    7d9e:	3f 1d       	adc	r19, r15
    7da0:	ca 01       	movw	r24, r20
    7da2:	b9 01       	movw	r22, r18
    7da4:	af 01       	movw	r20, r30
    7da6:	03 c0       	rjmp	.+6      	; 0x7dae <DotToPad+0xa0>
		}
		else
		{
			memcpy(pad, dot, len);
    7da8:	c6 01       	movw	r24, r12
    7daa:	b7 01       	movw	r22, r14
    7dac:	a8 01       	movw	r20, r16
    7dae:	0e 94 1c f0 	call	0x1e038	; 0x1e038 <memcpy>
    7db2:	8f ef       	ldi	r24, 0xFF	; 255
		}
		retval = SUCCESS;
	}

	return retval;
}
    7db4:	df 91       	pop	r29
    7db6:	cf 91       	pop	r28
    7db8:	1f 91       	pop	r17
    7dba:	0f 91       	pop	r16
    7dbc:	ff 90       	pop	r15
    7dbe:	ef 90       	pop	r14
    7dc0:	df 90       	pop	r13
    7dc2:	cf 90       	pop	r12
    7dc4:	08 95       	ret

00007dc6 <PadToDot>:
		BootRestart(TRUE);
}


uint8_t	PadToDot(char* pad, char* dot)
{
    7dc6:	cf 93       	push	r28
    7dc8:	df 93       	push	r29
    7dca:	ac 01       	movw	r20, r24
    7dcc:	eb 01       	movw	r28, r22
	uint8_t retval = FAIL;
	int dotpos = -1;
	int i = 0;

	memset(dot, 0, 13);
    7dce:	8d e0       	ldi	r24, 0x0D	; 13
    7dd0:	fb 01       	movw	r30, r22
    7dd2:	11 92       	st	Z+, r1
    7dd4:	8a 95       	dec	r24
    7dd6:	e9 f7       	brne	.-6      	; 0x7dd2 <PadToDot+0xc>
	memcpy(dot, pad, 8);
    7dd8:	db 01       	movw	r26, r22
    7dda:	fa 01       	movw	r30, r20
    7ddc:	88 e0       	ldi	r24, 0x08	; 8
    7dde:	01 90       	ld	r0, Z+
    7de0:	0d 92       	st	X+, r0
    7de2:	81 50       	subi	r24, 0x01	; 1
    7de4:	e1 f7       	brne	.-8      	; 0x7dde <PadToDot+0x18>
    7de6:	67 e0       	ldi	r22, 0x07	; 7
    7de8:	70 e0       	ldi	r23, 0x00	; 0
	for(i = 7; i>=0; i--)
	{
		if(pad[i] != ' ')
    7dea:	fa 01       	movw	r30, r20
    7dec:	e6 0f       	add	r30, r22
    7dee:	f7 1f       	adc	r31, r23
    7df0:	80 81       	ld	r24, Z
    7df2:	80 32       	cpi	r24, 0x20	; 32
    7df4:	39 f0       	breq	.+14     	; 0x7e04 <PadToDot+0x3e>
		{
			dotpos = i+1;
    7df6:	9b 01       	movw	r18, r22
    7df8:	2f 5f       	subi	r18, 0xFF	; 255
    7dfa:	3f 4f       	sbci	r19, 0xFF	; 255
			retval = SUCCESS;
			break;
		}
	}

	if(dotpos > 0)
    7dfc:	12 16       	cp	r1, r18
    7dfe:	13 06       	cpc	r1, r19
    7e00:	4c f0       	brlt	.+18     	; 0x7e14 <PadToDot+0x4e>
    7e02:	27 c0       	rjmp	.+78     	; 0x7e52 <PadToDot+0x8c>
	int dotpos = -1;
	int i = 0;

	memset(dot, 0, 13);
	memcpy(dot, pad, 8);
	for(i = 7; i>=0; i--)
    7e04:	61 50       	subi	r22, 0x01	; 1
    7e06:	70 40       	sbci	r23, 0x00	; 0
    7e08:	ff ef       	ldi	r31, 0xFF	; 255
    7e0a:	6f 3f       	cpi	r22, 0xFF	; 255
    7e0c:	7f 07       	cpc	r23, r31
    7e0e:	69 f7       	brne	.-38     	; 0x7dea <PadToDot+0x24>
    7e10:	80 e0       	ldi	r24, 0x00	; 0
    7e12:	20 c0       	rjmp	.+64     	; 0x7e54 <PadToDot+0x8e>
		}
	}

	if(dotpos > 0)
	{
		dot[dotpos] = '.';
    7e14:	fe 01       	movw	r30, r28
    7e16:	e2 0f       	add	r30, r18
    7e18:	f3 1f       	adc	r31, r19
    7e1a:	8e e2       	ldi	r24, 0x2E	; 46
    7e1c:	80 83       	st	Z, r24
		memcpy(&dot[dotpos + 1], &pad[8], 3);
    7e1e:	d9 01       	movw	r26, r18
    7e20:	11 96       	adiw	r26, 0x01	; 1
    7e22:	ac 0f       	add	r26, r28
    7e24:	bd 1f       	adc	r27, r29
    7e26:	fa 01       	movw	r30, r20
    7e28:	38 96       	adiw	r30, 0x08	; 8
    7e2a:	83 e0       	ldi	r24, 0x03	; 3
    7e2c:	01 90       	ld	r0, Z+
    7e2e:	0d 92       	st	X+, r0
    7e30:	81 50       	subi	r24, 0x01	; 1
    7e32:	e1 f7       	brne	.-8      	; 0x7e2c <PadToDot+0x66>
    7e34:	fe 01       	movw	r30, r28
    7e36:	e6 0f       	add	r30, r22
    7e38:	f7 1f       	adc	r31, r23
    7e3a:	20 e0       	ldi	r18, 0x00	; 0
    7e3c:	30 e0       	ldi	r19, 0x00	; 0
		for(i = (dotpos + 3); i>dotpos; i--)
		{
			if(dot[i] == ' ')
    7e3e:	84 81       	ldd	r24, Z+4	; 0x04
    7e40:	80 32       	cpi	r24, 0x20	; 32
    7e42:	09 f4       	brne	.+2      	; 0x7e46 <PadToDot+0x80>
				dot[i] = 0;
    7e44:	14 82       	std	Z+4, r1	; 0x04
    7e46:	2f 5f       	subi	r18, 0xFF	; 255
    7e48:	3f 4f       	sbci	r19, 0xFF	; 255
    7e4a:	31 97       	sbiw	r30, 0x01	; 1

	if(dotpos > 0)
	{
		dot[dotpos] = '.';
		memcpy(&dot[dotpos + 1], &pad[8], 3);
		for(i = (dotpos + 3); i>dotpos; i--)
    7e4c:	23 30       	cpi	r18, 0x03	; 3
    7e4e:	31 05       	cpc	r19, r1
    7e50:	b1 f7       	brne	.-20     	; 0x7e3e <PadToDot+0x78>
    7e52:	8f ef       	ldi	r24, 0xFF	; 255
				dot[i] = 0;
		}
	}

	return retval;
}
    7e54:	df 91       	pop	r29
    7e56:	cf 91       	pop	r28
    7e58:	08 95       	ret

00007e5a <CancelWriteInProgress>:
//File Handling routines

void CancelWriteInProgress()
{
	//Delete writingFile.tempFileName
	memset(&writingFile, 0, sizeof(FILE_WRITE_IN_PROGRESS));
    7e5a:	86 e5       	ldi	r24, 0x56	; 86
    7e5c:	e7 ef       	ldi	r30, 0xF7	; 247
    7e5e:	f8 e8       	ldi	r31, 0x88	; 136
    7e60:	df 01       	movw	r26, r30
    7e62:	1d 92       	st	X+, r1
    7e64:	8a 95       	dec	r24
    7e66:	e9 f7       	brne	.-6      	; 0x7e62 <CancelWriteInProgress+0x8>
	writingFile.writeStatus = NO_WRITE_IN_PROGRESS;
    7e68:	10 92 f7 88 	sts	0x88F7, r1

	return;
}
    7e6c:	08 95       	ret

00007e6e <FloatCommsParseCommand>:

	return;
}

uint8_t FloatCommsParseCommand(char command, char* cmdParams, char* response)
{
    7e6e:	2f 92       	push	r2
    7e70:	3f 92       	push	r3
    7e72:	4f 92       	push	r4
    7e74:	5f 92       	push	r5
    7e76:	6f 92       	push	r6
    7e78:	7f 92       	push	r7
    7e7a:	8f 92       	push	r8
    7e7c:	9f 92       	push	r9
    7e7e:	af 92       	push	r10
    7e80:	bf 92       	push	r11
    7e82:	cf 92       	push	r12
    7e84:	df 92       	push	r13
    7e86:	ef 92       	push	r14
    7e88:	ff 92       	push	r15
    7e8a:	0f 93       	push	r16
    7e8c:	1f 93       	push	r17
    7e8e:	df 93       	push	r29
    7e90:	cf 93       	push	r28
    7e92:	cd b7       	in	r28, 0x3d	; 61
    7e94:	de b7       	in	r29, 0x3e	; 62
    7e96:	60 97       	sbiw	r28, 0x10	; 16
    7e98:	0f b6       	in	r0, 0x3f	; 63
    7e9a:	f8 94       	cli
    7e9c:	de bf       	out	0x3e, r29	; 62
    7e9e:	0f be       	out	0x3f, r0	; 63
    7ea0:	cd bf       	out	0x3d, r28	; 61
    7ea2:	f8 2e       	mov	r15, r24
    7ea4:	cb 01       	movw	r24, r22
    7ea6:	78 8b       	std	Y+16, r23	; 0x10
    7ea8:	6f 87       	std	Y+15, r22	; 0x0f
    7eaa:	4a 01       	movw	r8, r20
	// Advance cmdParams past token separator
	//cmdParams++;
	cmdParams = strtok_r(cmdParams, floatCommSeparatorList, &cmdParams);
    7eac:	63 ea       	ldi	r22, 0xA3	; 163
    7eae:	78 eb       	ldi	r23, 0xB8	; 184
    7eb0:	ae 01       	movw	r20, r28
    7eb2:	41 5f       	subi	r20, 0xF1	; 241
    7eb4:	5f 4f       	sbci	r21, 0xFF	; 255
    7eb6:	0e 94 a0 f0 	call	0x1e140	; 0x1e140 <strtok_r>
    7eba:	98 8b       	std	Y+16, r25	; 0x10
    7ebc:	8f 87       	std	Y+15, r24	; 0x0f

	sprintf_P(dbgMsg, PSTR("Command is: <%c>"), command);
    7ebe:	00 d0       	rcall	.+0      	; 0x7ec0 <FloatCommsParseCommand+0x52>
    7ec0:	00 d0       	rcall	.+0      	; 0x7ec2 <FloatCommsParseCommand+0x54>
    7ec2:	ed b7       	in	r30, 0x3d	; 61
    7ec4:	fe b7       	in	r31, 0x3e	; 62
    7ec6:	31 96       	adiw	r30, 0x01	; 1
    7ec8:	03 ef       	ldi	r16, 0xF3	; 243
    7eca:	18 e1       	ldi	r17, 0x18	; 24
    7ecc:	ad b7       	in	r26, 0x3d	; 61
    7ece:	be b7       	in	r27, 0x3e	; 62
    7ed0:	12 96       	adiw	r26, 0x02	; 2
    7ed2:	1c 93       	st	X, r17
    7ed4:	0e 93       	st	-X, r16
    7ed6:	11 97       	sbiw	r26, 0x01	; 1
    7ed8:	8e ef       	ldi	r24, 0xFE	; 254
    7eda:	93 e0       	ldi	r25, 0x03	; 3
    7edc:	93 83       	std	Z+3, r25	; 0x03
    7ede:	82 83       	std	Z+2, r24	; 0x02
    7ee0:	f4 82       	std	Z+4, r15	; 0x04
    7ee2:	15 82       	std	Z+5, r1	; 0x05
    7ee4:	0e 94 51 f1 	call	0x1e2a2	; 0x1e2a2 <sprintf_P>
	SEND_MSG;

	sprintf_P(dbgMsg, PSTR("Command params: <%s>"), cmdParams);
    7ee8:	ed b7       	in	r30, 0x3d	; 61
    7eea:	fe b7       	in	r31, 0x3e	; 62
    7eec:	31 96       	adiw	r30, 0x01	; 1
    7eee:	ad b7       	in	r26, 0x3d	; 61
    7ef0:	be b7       	in	r27, 0x3e	; 62
    7ef2:	12 96       	adiw	r26, 0x02	; 2
    7ef4:	1c 93       	st	X, r17
    7ef6:	0e 93       	st	-X, r16
    7ef8:	11 97       	sbiw	r26, 0x01	; 1
    7efa:	89 ee       	ldi	r24, 0xE9	; 233
    7efc:	93 e0       	ldi	r25, 0x03	; 3
    7efe:	93 83       	std	Z+3, r25	; 0x03
    7f00:	82 83       	std	Z+2, r24	; 0x02
    7f02:	8f 85       	ldd	r24, Y+15	; 0x0f
    7f04:	98 89       	ldd	r25, Y+16	; 0x10
    7f06:	95 83       	std	Z+5, r25	; 0x05
    7f08:	84 83       	std	Z+4, r24	; 0x04
    7f0a:	0e 94 51 f1 	call	0x1e2a2	; 0x1e2a2 <sprintf_P>
	uint8_t deviceToSet, deviceCurrent;
	uint16_t eepromAddress;
	
	uint8_t powerDelay, boardID;

	switch(command)
    7f0e:	ed b7       	in	r30, 0x3d	; 61
    7f10:	fe b7       	in	r31, 0x3e	; 62
    7f12:	36 96       	adiw	r30, 0x06	; 6
    7f14:	0f b6       	in	r0, 0x3f	; 63
    7f16:	f8 94       	cli
    7f18:	fe bf       	out	0x3e, r31	; 62
    7f1a:	0f be       	out	0x3f, r0	; 63
    7f1c:	ed bf       	out	0x3d, r30	; 61
    7f1e:	f4 e4       	ldi	r31, 0x44	; 68
    7f20:	ff 16       	cp	r15, r31
    7f22:	09 f4       	brne	.+2      	; 0x7f26 <FloatCommsParseCommand+0xb8>
    7f24:	af c2       	rjmp	.+1374   	; 0x8484 <FloatCommsParseCommand+0x616>
    7f26:	ff 15       	cp	r31, r15
    7f28:	b0 f0       	brcs	.+44     	; 0x7f56 <FloatCommsParseCommand+0xe8>
    7f2a:	23 e3       	ldi	r18, 0x33	; 51
    7f2c:	f2 16       	cp	r15, r18
    7f2e:	59 f1       	breq	.+86     	; 0x7f86 <FloatCommsParseCommand+0x118>
    7f30:	2f 15       	cp	r18, r15
    7f32:	40 f0       	brcs	.+16     	; 0x7f44 <FloatCommsParseCommand+0xd6>
    7f34:	31 e3       	ldi	r19, 0x31	; 49
    7f36:	f3 16       	cp	r15, r19
    7f38:	49 f1       	breq	.+82     	; 0x7f8c <FloatCommsParseCommand+0x11e>
    7f3a:	62 e3       	ldi	r22, 0x32	; 50
    7f3c:	f6 16       	cp	r15, r22
    7f3e:	09 f0       	breq	.+2      	; 0x7f42 <FloatCommsParseCommand+0xd4>
    7f40:	01 c3       	rjmp	.+1538   	; 0x8544 <FloatCommsParseCommand+0x6d6>
    7f42:	26 c0       	rjmp	.+76     	; 0x7f90 <FloatCommsParseCommand+0x122>
    7f44:	82 e4       	ldi	r24, 0x42	; 66
    7f46:	f8 16       	cp	r15, r24
    7f48:	09 f4       	brne	.+2      	; 0x7f4c <FloatCommsParseCommand+0xde>
    7f4a:	50 c2       	rjmp	.+1184   	; 0x83ec <FloatCommsParseCommand+0x57e>
    7f4c:	93 e4       	ldi	r25, 0x43	; 67
    7f4e:	f9 16       	cp	r15, r25
    7f50:	09 f0       	breq	.+2      	; 0x7f54 <FloatCommsParseCommand+0xe6>
    7f52:	f8 c2       	rjmp	.+1520   	; 0x8544 <FloatCommsParseCommand+0x6d6>
    7f54:	f5 c0       	rjmp	.+490    	; 0x8140 <FloatCommsParseCommand+0x2d2>
    7f56:	a3 e6       	ldi	r26, 0x63	; 99
    7f58:	fa 16       	cp	r15, r26
    7f5a:	09 f4       	brne	.+2      	; 0x7f5e <FloatCommsParseCommand+0xf0>
    7f5c:	f1 c0       	rjmp	.+482    	; 0x8140 <FloatCommsParseCommand+0x2d2>
    7f5e:	af 15       	cp	r26, r15
    7f60:	48 f0       	brcs	.+18     	; 0x7f74 <FloatCommsParseCommand+0x106>
    7f62:	b9 e4       	ldi	r27, 0x49	; 73
    7f64:	fb 16       	cp	r15, r27
    7f66:	09 f4       	brne	.+2      	; 0x7f6a <FloatCommsParseCommand+0xfc>
    7f68:	b0 c2       	rjmp	.+1376   	; 0x84ca <FloatCommsParseCommand+0x65c>
    7f6a:	e2 e6       	ldi	r30, 0x62	; 98
    7f6c:	fe 16       	cp	r15, r30
    7f6e:	09 f0       	breq	.+2      	; 0x7f72 <FloatCommsParseCommand+0x104>
    7f70:	e9 c2       	rjmp	.+1490   	; 0x8544 <FloatCommsParseCommand+0x6d6>
    7f72:	3c c2       	rjmp	.+1144   	; 0x83ec <FloatCommsParseCommand+0x57e>
    7f74:	f4 e6       	ldi	r31, 0x64	; 100
    7f76:	ff 16       	cp	r15, r31
    7f78:	09 f4       	brne	.+2      	; 0x7f7c <FloatCommsParseCommand+0x10e>
    7f7a:	84 c2       	rjmp	.+1288   	; 0x8484 <FloatCommsParseCommand+0x616>
    7f7c:	29 e6       	ldi	r18, 0x69	; 105
    7f7e:	f2 16       	cp	r15, r18
    7f80:	09 f0       	breq	.+2      	; 0x7f84 <FloatCommsParseCommand+0x116>
    7f82:	e0 c2       	rjmp	.+1472   	; 0x8544 <FloatCommsParseCommand+0x6d6>
    7f84:	a2 c2       	rjmp	.+1348   	; 0x84ca <FloatCommsParseCommand+0x65c>
    7f86:	22 e0       	ldi	r18, 0x02	; 2
    7f88:	d2 2e       	mov	r13, r18
    7f8a:	05 c0       	rjmp	.+10     	; 0x7f96 <FloatCommsParseCommand+0x128>
    7f8c:	81 e0       	ldi	r24, 0x01	; 1
    7f8e:	01 c0       	rjmp	.+2      	; 0x7f92 <FloatCommsParseCommand+0x124>
    7f90:	82 e0       	ldi	r24, 0x02	; 2
	{
		case '1':
			pm--;
		case '2':
			pm--;
    7f92:	d8 2e       	mov	r13, r24
    7f94:	da 94       	dec	r13
		case '3':
			// Set the appropriate PM to the appropriate sensor

			if (strncasecmp_P(cmdParams, emptyParserID, strlen_P(emptyParserID))==0)
    7f96:	0f 85       	ldd	r16, Y+15	; 0x0f
    7f98:	18 89       	ldd	r17, Y+16	; 0x10
    7f9a:	81 e4       	ldi	r24, 0x41	; 65
    7f9c:	9b e1       	ldi	r25, 0x1B	; 27
    7f9e:	0e 94 c6 ef 	call	0x1df8c	; 0x1df8c <strlen_P>
    7fa2:	ac 01       	movw	r20, r24
    7fa4:	c8 01       	movw	r24, r16
    7fa6:	61 e4       	ldi	r22, 0x41	; 65
    7fa8:	7b e1       	ldi	r23, 0x1B	; 27
    7faa:	0e 94 cf ef 	call	0x1df9e	; 0x1df9e <strncasecmp_P>
    7fae:	89 2b       	or	r24, r25
    7fb0:	09 f4       	brne	.+2      	; 0x7fb4 <FloatCommsParseCommand+0x146>
    7fb2:	a5 c0       	rjmp	.+330    	; 0x80fe <FloatCommsParseCommand+0x290>
			{
				deviceToSet = EMPTY;
			}
			else if (strncasecmp_P(cmdParams, powerParserID, strlen_P(powerParserID))==0)
    7fb4:	81 ea       	ldi	r24, 0xA1	; 161
    7fb6:	9b e1       	ldi	r25, 0x1B	; 27
    7fb8:	0e 94 c6 ef 	call	0x1df8c	; 0x1df8c <strlen_P>
    7fbc:	ac 01       	movw	r20, r24
    7fbe:	c8 01       	movw	r24, r16
    7fc0:	61 ea       	ldi	r22, 0xA1	; 161
    7fc2:	7b e1       	ldi	r23, 0x1B	; 27
    7fc4:	0e 94 cf ef 	call	0x1df9e	; 0x1df9e <strncasecmp_P>
    7fc8:	89 2b       	or	r24, r25
    7fca:	19 f4       	brne	.+6      	; 0x7fd2 <FloatCommsParseCommand+0x164>
    7fcc:	96 e0       	ldi	r25, 0x06	; 6
    7fce:	f9 2e       	mov	r15, r25
    7fd0:	97 c0       	rjmp	.+302    	; 0x8100 <FloatCommsParseCommand+0x292>
			{
				deviceToSet = POWER;
			}
			else if (strncasecmp_P(cmdParams, gpctdParserID, strlen_P(gpctdParserID))==0)
    7fd2:	82 e1       	ldi	r24, 0x12	; 18
    7fd4:	9c e0       	ldi	r25, 0x0C	; 12
    7fd6:	0e 94 c6 ef 	call	0x1df8c	; 0x1df8c <strlen_P>
    7fda:	ac 01       	movw	r20, r24
    7fdc:	c8 01       	movw	r24, r16
    7fde:	62 e1       	ldi	r22, 0x12	; 18
    7fe0:	7c e0       	ldi	r23, 0x0C	; 12
    7fe2:	0e 94 cf ef 	call	0x1df9e	; 0x1df9e <strncasecmp_P>
    7fe6:	89 2b       	or	r24, r25
    7fe8:	19 f4       	brne	.+6      	; 0x7ff0 <FloatCommsParseCommand+0x182>
    7fea:	84 e0       	ldi	r24, 0x04	; 4
    7fec:	f8 2e       	mov	r15, r24
    7fee:	88 c0       	rjmp	.+272    	; 0x8100 <FloatCommsParseCommand+0x292>
			{
				deviceToSet = GPCTD;
			}
			else if (strncasecmp_P(cmdParams, ctd37SIParserID, strlen_P(SB37SIParserID))==0)
    7ff0:	88 ee       	ldi	r24, 0xE8	; 232
    7ff2:	90 e1       	ldi	r25, 0x10	; 16
    7ff4:	0e 94 c6 ef 	call	0x1df8c	; 0x1df8c <strlen_P>
    7ff8:	ac 01       	movw	r20, r24
    7ffa:	c8 01       	movw	r24, r16
    7ffc:	65 e5       	ldi	r22, 0x55	; 85
    7ffe:	7d e0       	ldi	r23, 0x0D	; 13
    8000:	0e 94 cf ef 	call	0x1df9e	; 0x1df9e <strncasecmp_P>
    8004:	89 2b       	or	r24, r25
    8006:	19 f4       	brne	.+6      	; 0x800e <FloatCommsParseCommand+0x1a0>
    8008:	03 e0       	ldi	r16, 0x03	; 3
    800a:	f0 2e       	mov	r15, r16
    800c:	79 c0       	rjmp	.+242    	; 0x8100 <FloatCommsParseCommand+0x292>
			{
				deviceToSet = CTD37SI;
			}
			else if (strncasecmp_P(cmdParams, teledyneATM88XParserID, strlen_P(teledyneATM88XParserID))==0)
    800e:	84 ed       	ldi	r24, 0xD4	; 212
    8010:	91 e1       	ldi	r25, 0x11	; 17
    8012:	0e 94 c6 ef 	call	0x1df8c	; 0x1df8c <strlen_P>
    8016:	ac 01       	movw	r20, r24
    8018:	c8 01       	movw	r24, r16
    801a:	64 ed       	ldi	r22, 0xD4	; 212
    801c:	71 e1       	ldi	r23, 0x11	; 17
    801e:	0e 94 cf ef 	call	0x1df9e	; 0x1df9e <strncasecmp_P>
    8022:	89 2b       	or	r24, r25
    8024:	19 f4       	brne	.+6      	; 0x802c <FloatCommsParseCommand+0x1be>
    8026:	17 e0       	ldi	r17, 0x07	; 7
    8028:	f1 2e       	mov	r15, r17
    802a:	6a c0       	rjmp	.+212    	; 0x8100 <FloatCommsParseCommand+0x292>
			{
				deviceToSet = ATM;
			}
			else if (strncasecmp_P(cmdParams, c3OrigParserID, strlen_P(c3OrigParserID))==0)
    802c:	88 e5       	ldi	r24, 0x58	; 88
    802e:	9a e1       	ldi	r25, 0x1A	; 26
    8030:	0e 94 c6 ef 	call	0x1df8c	; 0x1df8c <strlen_P>
    8034:	ac 01       	movw	r20, r24
    8036:	c8 01       	movw	r24, r16
    8038:	68 e5       	ldi	r22, 0x58	; 88
    803a:	7a e1       	ldi	r23, 0x1A	; 26
    803c:	0e 94 cf ef 	call	0x1df9e	; 0x1df9e <strncasecmp_P>
    8040:	89 2b       	or	r24, r25
    8042:	19 f4       	brne	.+6      	; 0x804a <FloatCommsParseCommand+0x1dc>
    8044:	b5 e0       	ldi	r27, 0x05	; 5
    8046:	fb 2e       	mov	r15, r27
    8048:	5b c0       	rjmp	.+182    	; 0x8100 <FloatCommsParseCommand+0x292>
			{
				deviceToSet = C3;
			}
			else if (strncasecmp_P(cmdParams, MBARI_CO2_ParserID, strlen_P(MBARI_CO2_ParserID))==0)
    804a:	8a e3       	ldi	r24, 0x3A	; 58
    804c:	99 e0       	ldi	r25, 0x09	; 9
    804e:	0e 94 c6 ef 	call	0x1df8c	; 0x1df8c <strlen_P>
    8052:	ac 01       	movw	r20, r24
    8054:	c8 01       	movw	r24, r16
    8056:	6a e3       	ldi	r22, 0x3A	; 58
    8058:	79 e0       	ldi	r23, 0x09	; 9
    805a:	0e 94 cf ef 	call	0x1df9e	; 0x1df9e <strncasecmp_P>
    805e:	89 2b       	or	r24, r25
    8060:	19 f4       	brne	.+6      	; 0x8068 <FloatCommsParseCommand+0x1fa>
    8062:	a8 e0       	ldi	r26, 0x08	; 8
    8064:	fa 2e       	mov	r15, r26
    8066:	4c c0       	rjmp	.+152    	; 0x8100 <FloatCommsParseCommand+0x292>
			{
				deviceToSet = CO2;
			}
			else if (strncasecmp_P(cmdParams, PSTR("COMM"), 4)==0)
    8068:	c8 01       	movw	r24, r16
    806a:	64 ee       	ldi	r22, 0xE4	; 228
    806c:	73 e0       	ldi	r23, 0x03	; 3
    806e:	44 e0       	ldi	r20, 0x04	; 4
    8070:	50 e0       	ldi	r21, 0x00	; 0
    8072:	0e 94 cf ef 	call	0x1df9e	; 0x1df9e <strncasecmp_P>
    8076:	89 2b       	or	r24, r25
    8078:	19 f4       	brne	.+6      	; 0x8080 <FloatCommsParseCommand+0x212>
    807a:	ff 24       	eor	r15, r15
    807c:	f3 94       	inc	r15
    807e:	40 c0       	rjmp	.+128    	; 0x8100 <FloatCommsParseCommand+0x292>
			{
				deviceToSet = PYLDCOMM;
			}
			else if (strncasecmp_P(cmdParams, PSTR("SMC"), 3)==0)
    8080:	c8 01       	movw	r24, r16
    8082:	60 ee       	ldi	r22, 0xE0	; 224
    8084:	73 e0       	ldi	r23, 0x03	; 3
    8086:	43 e0       	ldi	r20, 0x03	; 3
    8088:	50 e0       	ldi	r21, 0x00	; 0
    808a:	0e 94 cf ef 	call	0x1df9e	; 0x1df9e <strncasecmp_P>
    808e:	89 2b       	or	r24, r25
    8090:	19 f4       	brne	.+6      	; 0x8098 <FloatCommsParseCommand+0x22a>
    8092:	f2 e0       	ldi	r31, 0x02	; 2
    8094:	ff 2e       	mov	r15, r31
    8096:	34 c0       	rjmp	.+104    	; 0x8100 <FloatCommsParseCommand+0x292>
			{
				deviceToSet = SMC;
			}
			else if (*cmdParams>='0' && *cmdParams<='9')
    8098:	d8 01       	movw	r26, r16
    809a:	8c 91       	ld	r24, X
    809c:	80 53       	subi	r24, 0x30	; 48
    809e:	23 ef       	ldi	r18, 0xF3	; 243
    80a0:	38 e1       	ldi	r19, 0x18	; 24
    80a2:	8a 30       	cpi	r24, 0x0A	; 10
    80a4:	b0 f4       	brcc	.+44     	; 0x80d2 <FloatCommsParseCommand+0x264>
			{
				sprintf_P(dbgMsg, PSTR("number...")); SEND_MSG;
    80a6:	00 d0       	rcall	.+0      	; 0x80a8 <FloatCommsParseCommand+0x23a>
    80a8:	0f 92       	push	r0
    80aa:	ed b7       	in	r30, 0x3d	; 61
    80ac:	fe b7       	in	r31, 0x3e	; 62
    80ae:	32 83       	std	Z+2, r19	; 0x02
    80b0:	21 83       	std	Z+1, r18	; 0x01
    80b2:	86 ed       	ldi	r24, 0xD6	; 214
    80b4:	93 e0       	ldi	r25, 0x03	; 3
    80b6:	94 83       	std	Z+4, r25	; 0x04
    80b8:	83 83       	std	Z+3, r24	; 0x03
    80ba:	0e 94 51 f1 	call	0x1e2a2	; 0x1e2a2 <sprintf_P>
				deviceToSet = atoi(cmdParams);
    80be:	0f 90       	pop	r0
    80c0:	0f 90       	pop	r0
    80c2:	0f 90       	pop	r0
    80c4:	0f 90       	pop	r0
    80c6:	8f 85       	ldd	r24, Y+15	; 0x0f
    80c8:	98 89       	ldd	r25, Y+16	; 0x10
    80ca:	0e 94 59 ef 	call	0x1deb2	; 0x1deb2 <atoi>
    80ce:	f8 2e       	mov	r15, r24
    80d0:	17 c0       	rjmp	.+46     	; 0x8100 <FloatCommsParseCommand+0x292>
			}
			else
			{
				sprintf_P(dbgMsg, PSTR("Failing...")); SEND_MSG;
    80d2:	00 d0       	rcall	.+0      	; 0x80d4 <FloatCommsParseCommand+0x266>
    80d4:	0f 92       	push	r0
    80d6:	ad b7       	in	r26, 0x3d	; 61
    80d8:	be b7       	in	r27, 0x3e	; 62
    80da:	12 96       	adiw	r26, 0x02	; 2
    80dc:	3c 93       	st	X, r19
    80de:	2e 93       	st	-X, r18
    80e0:	11 97       	sbiw	r26, 0x01	; 1
    80e2:	8b ec       	ldi	r24, 0xCB	; 203
    80e4:	93 e0       	ldi	r25, 0x03	; 3
    80e6:	14 96       	adiw	r26, 0x04	; 4
    80e8:	9c 93       	st	X, r25
    80ea:	8e 93       	st	-X, r24
    80ec:	13 97       	sbiw	r26, 0x03	; 3
    80ee:	0e 94 51 f1 	call	0x1e2a2	; 0x1e2a2 <sprintf_P>
    80f2:	80 e0       	ldi	r24, 0x00	; 0
    80f4:	0f 90       	pop	r0
    80f6:	0f 90       	pop	r0
    80f8:	0f 90       	pop	r0
    80fa:	0f 90       	pop	r0
    80fc:	24 c2       	rjmp	.+1096   	; 0x8546 <FloatCommsParseCommand+0x6d8>
				return FAIL;
    80fe:	ff 24       	eor	r15, r15
			}

			deviceCurrent = -1;
    8100:	ee 24       	eor	r14, r14
    8102:	ea 94       	dec	r14
    8104:	e9 82       	std	Y+1, r14	; 0x01
			eepromAddress = EEPROM_SYSTEM_PARAMS_START + EEPROM_TASK1_OFFSET + ( pm * EEPROM_TASK_SIZE);
    8106:	0d 2d       	mov	r16, r13
    8108:	10 e0       	ldi	r17, 0x00	; 0

			EepromReadByte((void*)eepromAddress, (void*) &deviceCurrent);
    810a:	0f 5e       	subi	r16, 0xEF	; 239
    810c:	1f 4f       	sbci	r17, 0xFF	; 255
    810e:	68 01       	movw	r12, r16
    8110:	e4 e0       	ldi	r30, 0x04	; 4
    8112:	cc 0c       	add	r12, r12
    8114:	dd 1c       	adc	r13, r13
    8116:	ea 95       	dec	r30
    8118:	e1 f7       	brne	.-8      	; 0x8112 <FloatCommsParseCommand+0x2a4>
    811a:	01 51       	subi	r16, 0x11	; 17
    811c:	10 40       	sbci	r17, 0x00	; 0
    811e:	c6 01       	movw	r24, r12
    8120:	be 01       	movw	r22, r28
    8122:	6f 5f       	subi	r22, 0xFF	; 255
    8124:	7f 4f       	sbci	r23, 0xFF	; 255
    8126:	0e 94 38 37 	call	0x6e70	; 0x6e70 <EepromReadByte>

			if (deviceToSet!=deviceCurrent)
    812a:	89 81       	ldd	r24, Y+1	; 0x01
    812c:	f8 16       	cp	r15, r24
    812e:	11 f1       	breq	.+68     	; 0x8174 <FloatCommsParseCommand+0x306>
			{
				kill[pm+1] = TRUE;				
    8130:	0e 56       	subi	r16, 0x6E	; 110
    8132:	1e 45       	sbci	r17, 0x5E	; 94
    8134:	f8 01       	movw	r30, r16
    8136:	e0 82       	st	Z, r14
				EepromWriteByteUnSigned((void*)eepromAddress, deviceToSet);
    8138:	c6 01       	movw	r24, r12
    813a:	6f 2d       	mov	r22, r15
    813c:	0e 94 9f 37 	call	0x6f3e	; 0x6f3e <EepromWriteByteUnSigned>
    8140:	70 e1       	ldi	r23, 0x10	; 16
    8142:	c7 2e       	mov	r12, r23
    8144:	71 e0       	ldi	r23, 0x01	; 1
    8146:	d7 2e       	mov	r13, r23
    8148:	61 e0       	ldi	r22, 0x01	; 1
    814a:	e6 2e       	mov	r14, r22
    814c:	f1 2c       	mov	r15, r1
			{
				uint16_t eepromAddress;
				uint8_t task;
				eepromAddress = EEPROM_SYSTEM_PARAMS_START + EEPROM_TASK1_OFFSET + (i * EEPROM_TASK_SIZE);
				EepromReadByte((void*)eepromAddress, (void*)&task);
				memset(pmCfg, 0, 20);
    814e:	5a ef       	ldi	r21, 0xFA	; 250
    8150:	a5 2e       	mov	r10, r21
    8152:	58 eb       	ldi	r21, 0xB8	; 184
    8154:	b5 2e       	mov	r11, r21

				char parserID[10];
				memset(parserID, 0, 10);
    8156:	8e 01       	movw	r16, r28
    8158:	0b 5f       	subi	r16, 0xFB	; 251
    815a:	1f 4f       	sbci	r17, 0xFF	; 255
					case PYLDCOMM:
						sprintf_P(parserID, PSTR("COMM"), 8);
						break;

					case SMC:
						sprintf_P(parserID, PSTR("SMC"), 3);
    815c:	48 ea       	ldi	r20, 0xA8	; 168
    815e:	24 2e       	mov	r2, r20
    8160:	43 e0       	ldi	r20, 0x03	; 3
    8162:	34 2e       	mov	r3, r20
    8164:	33 e0       	ldi	r19, 0x03	; 3
    8166:	43 2e       	mov	r4, r19
    8168:	51 2c       	mov	r5, r1
						memcpy_P(parserID, MBARI_CO2_ParserID, strlen_P(MBARI_CO2_ParserID));
						break;

				}

				sprintf_P(pmCfg, PSTR("PM%d=%s "), i+1, parserID);
    816a:	2f e9       	ldi	r18, 0x9F	; 159
    816c:	62 2e       	mov	r6, r18
    816e:	23 e0       	ldi	r18, 0x03	; 3
    8170:	72 2e       	mov	r7, r18
    8172:	29 c0       	rjmp	.+82     	; 0x81c6 <FloatCommsParseCommand+0x358>
				kill[pm+1] = TRUE;				
				EepromWriteByteUnSigned((void*)eepromAddress, deviceToSet);
			}
			else
			{
				sprintf_P(dbgMsg, PSTR("PM%d, Device already here"), pm+1, deviceToSet);
    8174:	2d b7       	in	r18, 0x3d	; 61
    8176:	3e b7       	in	r19, 0x3e	; 62
    8178:	28 50       	subi	r18, 0x08	; 8
    817a:	30 40       	sbci	r19, 0x00	; 0
    817c:	0f b6       	in	r0, 0x3f	; 63
    817e:	f8 94       	cli
    8180:	3e bf       	out	0x3e, r19	; 62
    8182:	0f be       	out	0x3f, r0	; 63
    8184:	2d bf       	out	0x3d, r18	; 61
    8186:	ed b7       	in	r30, 0x3d	; 61
    8188:	fe b7       	in	r31, 0x3e	; 62
    818a:	31 96       	adiw	r30, 0x01	; 1
    818c:	83 ef       	ldi	r24, 0xF3	; 243
    818e:	98 e1       	ldi	r25, 0x18	; 24
    8190:	ad b7       	in	r26, 0x3d	; 61
    8192:	be b7       	in	r27, 0x3e	; 62
    8194:	12 96       	adiw	r26, 0x02	; 2
    8196:	9c 93       	st	X, r25
    8198:	8e 93       	st	-X, r24
    819a:	11 97       	sbiw	r26, 0x01	; 1
    819c:	81 eb       	ldi	r24, 0xB1	; 177
    819e:	93 e0       	ldi	r25, 0x03	; 3
    81a0:	93 83       	std	Z+3, r25	; 0x03
    81a2:	82 83       	std	Z+2, r24	; 0x02
    81a4:	0f 5f       	subi	r16, 0xFF	; 255
    81a6:	1f 4f       	sbci	r17, 0xFF	; 255
    81a8:	15 83       	std	Z+5, r17	; 0x05
    81aa:	04 83       	std	Z+4, r16	; 0x04
    81ac:	f6 82       	std	Z+6, r15	; 0x06
    81ae:	17 82       	std	Z+7, r1	; 0x07
    81b0:	0e 94 51 f1 	call	0x1e2a2	; 0x1e2a2 <sprintf_P>
    81b4:	ed b7       	in	r30, 0x3d	; 61
    81b6:	fe b7       	in	r31, 0x3e	; 62
    81b8:	38 96       	adiw	r30, 0x08	; 8
    81ba:	0f b6       	in	r0, 0x3f	; 63
    81bc:	f8 94       	cli
    81be:	fe bf       	out	0x3e, r31	; 62
    81c0:	0f be       	out	0x3f, r0	; 63
    81c2:	ed bf       	out	0x3d, r30	; 61
    81c4:	bd cf       	rjmp	.-134    	; 0x8140 <FloatCommsParseCommand+0x2d2>
			for(uint8_t i=0; i<3; i++)
			{
				uint16_t eepromAddress;
				uint8_t task;
				eepromAddress = EEPROM_SYSTEM_PARAMS_START + EEPROM_TASK1_OFFSET + (i * EEPROM_TASK_SIZE);
				EepromReadByte((void*)eepromAddress, (void*)&task);
    81c6:	c6 01       	movw	r24, r12
    81c8:	be 01       	movw	r22, r28
    81ca:	6c 5f       	subi	r22, 0xFC	; 252
    81cc:	7f 4f       	sbci	r23, 0xFF	; 255
    81ce:	0e 94 38 37 	call	0x6e70	; 0x6e70 <EepromReadByte>
				memset(pmCfg, 0, 20);
    81d2:	d5 01       	movw	r26, r10
    81d4:	e4 e1       	ldi	r30, 0x14	; 20
    81d6:	1d 92       	st	X+, r1
    81d8:	ea 95       	dec	r30
    81da:	e9 f7       	brne	.-6      	; 0x81d6 <FloatCommsParseCommand+0x368>

				char parserID[10];
				memset(parserID, 0, 10);
    81dc:	d8 01       	movw	r26, r16
    81de:	ea e0       	ldi	r30, 0x0A	; 10
    81e0:	1d 92       	st	X+, r1
    81e2:	ea 95       	dec	r30
    81e4:	e9 f7       	brne	.-6      	; 0x81e0 <FloatCommsParseCommand+0x372>
								
				switch(task)
    81e6:	8c 81       	ldd	r24, Y+4	; 0x04
    81e8:	84 30       	cpi	r24, 0x04	; 4
    81ea:	09 f4       	brne	.+2      	; 0x81ee <FloatCommsParseCommand+0x380>
    81ec:	63 c0       	rjmp	.+198    	; 0x82b4 <FloatCommsParseCommand+0x446>
    81ee:	85 30       	cpi	r24, 0x05	; 5
    81f0:	50 f4       	brcc	.+20     	; 0x8206 <FloatCommsParseCommand+0x398>
    81f2:	81 30       	cpi	r24, 0x01	; 1
    81f4:	f1 f0       	breq	.+60     	; 0x8232 <FloatCommsParseCommand+0x3c4>
    81f6:	81 30       	cpi	r24, 0x01	; 1
    81f8:	98 f0       	brcs	.+38     	; 0x8220 <FloatCommsParseCommand+0x3b2>
    81fa:	82 30       	cpi	r24, 0x02	; 2
    81fc:	c1 f1       	breq	.+112    	; 0x826e <FloatCommsParseCommand+0x400>
    81fe:	83 30       	cpi	r24, 0x03	; 3
    8200:	09 f0       	breq	.+2      	; 0x8204 <FloatCommsParseCommand+0x396>
    8202:	86 c0       	rjmp	.+268    	; 0x8310 <FloatCommsParseCommand+0x4a2>
    8204:	4e c0       	rjmp	.+156    	; 0x82a2 <FloatCommsParseCommand+0x434>
    8206:	86 30       	cpi	r24, 0x06	; 6
    8208:	09 f4       	brne	.+2      	; 0x820c <FloatCommsParseCommand+0x39e>
    820a:	66 c0       	rjmp	.+204    	; 0x82d8 <FloatCommsParseCommand+0x46a>
    820c:	86 30       	cpi	r24, 0x06	; 6
    820e:	08 f4       	brcc	.+2      	; 0x8212 <FloatCommsParseCommand+0x3a4>
    8210:	5a c0       	rjmp	.+180    	; 0x82c6 <FloatCommsParseCommand+0x458>
    8212:	87 30       	cpi	r24, 0x07	; 7
    8214:	09 f4       	brne	.+2      	; 0x8218 <FloatCommsParseCommand+0x3aa>
    8216:	69 c0       	rjmp	.+210    	; 0x82ea <FloatCommsParseCommand+0x47c>
    8218:	88 30       	cpi	r24, 0x08	; 8
    821a:	09 f0       	breq	.+2      	; 0x821e <FloatCommsParseCommand+0x3b0>
    821c:	79 c0       	rjmp	.+242    	; 0x8310 <FloatCommsParseCommand+0x4a2>
    821e:	6e c0       	rjmp	.+220    	; 0x82fc <FloatCommsParseCommand+0x48e>
				{
					case EMPTY:
						memcpy_P(parserID, emptyParserID, strlen_P(emptyParserID));
    8220:	81 e4       	ldi	r24, 0x41	; 65
    8222:	9b e1       	ldi	r25, 0x1B	; 27
    8224:	0e 94 c6 ef 	call	0x1df8c	; 0x1df8c <strlen_P>
    8228:	ac 01       	movw	r20, r24
    822a:	c8 01       	movw	r24, r16
    822c:	61 e4       	ldi	r22, 0x41	; 65
    822e:	7b e1       	ldi	r23, 0x1B	; 27
    8230:	6d c0       	rjmp	.+218    	; 0x830c <FloatCommsParseCommand+0x49e>
						break;

					case PYLDCOMM:
						sprintf_P(parserID, PSTR("COMM"), 8);
    8232:	00 d0       	rcall	.+0      	; 0x8234 <FloatCommsParseCommand+0x3c6>
    8234:	00 d0       	rcall	.+0      	; 0x8236 <FloatCommsParseCommand+0x3c8>
    8236:	ed b7       	in	r30, 0x3d	; 61
    8238:	fe b7       	in	r31, 0x3e	; 62
    823a:	31 96       	adiw	r30, 0x01	; 1
    823c:	ad b7       	in	r26, 0x3d	; 61
    823e:	be b7       	in	r27, 0x3e	; 62
    8240:	12 96       	adiw	r26, 0x02	; 2
    8242:	1c 93       	st	X, r17
    8244:	0e 93       	st	-X, r16
    8246:	11 97       	sbiw	r26, 0x01	; 1
    8248:	2c ea       	ldi	r18, 0xAC	; 172
    824a:	33 e0       	ldi	r19, 0x03	; 3
    824c:	33 83       	std	Z+3, r19	; 0x03
    824e:	22 83       	std	Z+2, r18	; 0x02
    8250:	88 e0       	ldi	r24, 0x08	; 8
    8252:	90 e0       	ldi	r25, 0x00	; 0
    8254:	95 83       	std	Z+5, r25	; 0x05
    8256:	84 83       	std	Z+4, r24	; 0x04
    8258:	0e 94 51 f1 	call	0x1e2a2	; 0x1e2a2 <sprintf_P>
    825c:	ad b7       	in	r26, 0x3d	; 61
    825e:	be b7       	in	r27, 0x3e	; 62
    8260:	16 96       	adiw	r26, 0x06	; 6
    8262:	0f b6       	in	r0, 0x3f	; 63
    8264:	f8 94       	cli
    8266:	be bf       	out	0x3e, r27	; 62
    8268:	0f be       	out	0x3f, r0	; 63
    826a:	ad bf       	out	0x3d, r26	; 61
    826c:	51 c0       	rjmp	.+162    	; 0x8310 <FloatCommsParseCommand+0x4a2>
						break;

					case SMC:
						sprintf_P(parserID, PSTR("SMC"), 3);
    826e:	00 d0       	rcall	.+0      	; 0x8270 <FloatCommsParseCommand+0x402>
    8270:	00 d0       	rcall	.+0      	; 0x8272 <FloatCommsParseCommand+0x404>
    8272:	ed b7       	in	r30, 0x3d	; 61
    8274:	fe b7       	in	r31, 0x3e	; 62
    8276:	31 96       	adiw	r30, 0x01	; 1
    8278:	ad b7       	in	r26, 0x3d	; 61
    827a:	be b7       	in	r27, 0x3e	; 62
    827c:	12 96       	adiw	r26, 0x02	; 2
    827e:	1c 93       	st	X, r17
    8280:	0e 93       	st	-X, r16
    8282:	11 97       	sbiw	r26, 0x01	; 1
    8284:	33 82       	std	Z+3, r3	; 0x03
    8286:	22 82       	std	Z+2, r2	; 0x02
    8288:	55 82       	std	Z+5, r5	; 0x05
    828a:	44 82       	std	Z+4, r4	; 0x04
    828c:	0e 94 51 f1 	call	0x1e2a2	; 0x1e2a2 <sprintf_P>
    8290:	ed b7       	in	r30, 0x3d	; 61
    8292:	fe b7       	in	r31, 0x3e	; 62
    8294:	36 96       	adiw	r30, 0x06	; 6
    8296:	0f b6       	in	r0, 0x3f	; 63
    8298:	f8 94       	cli
    829a:	fe bf       	out	0x3e, r31	; 62
    829c:	0f be       	out	0x3f, r0	; 63
    829e:	ed bf       	out	0x3d, r30	; 61
    82a0:	37 c0       	rjmp	.+110    	; 0x8310 <FloatCommsParseCommand+0x4a2>
						break;
					
					case CTD37SI:
						memcpy_P(parserID, ctd37SIParserID, strlen_P(ctd37SIParserID));
    82a2:	85 e5       	ldi	r24, 0x55	; 85
    82a4:	9d e0       	ldi	r25, 0x0D	; 13
    82a6:	0e 94 c6 ef 	call	0x1df8c	; 0x1df8c <strlen_P>
    82aa:	ac 01       	movw	r20, r24
    82ac:	c8 01       	movw	r24, r16
    82ae:	65 e5       	ldi	r22, 0x55	; 85
    82b0:	7d e0       	ldi	r23, 0x0D	; 13
    82b2:	2c c0       	rjmp	.+88     	; 0x830c <FloatCommsParseCommand+0x49e>
						break;

					case GPCTD:
						memcpy_P(parserID, gpctdParserID, strlen_P(gpctdParserID));
    82b4:	82 e1       	ldi	r24, 0x12	; 18
    82b6:	9c e0       	ldi	r25, 0x0C	; 12
    82b8:	0e 94 c6 ef 	call	0x1df8c	; 0x1df8c <strlen_P>
    82bc:	ac 01       	movw	r20, r24
    82be:	c8 01       	movw	r24, r16
    82c0:	62 e1       	ldi	r22, 0x12	; 18
    82c2:	7c e0       	ldi	r23, 0x0C	; 12
    82c4:	23 c0       	rjmp	.+70     	; 0x830c <FloatCommsParseCommand+0x49e>
						break;

					case C3:
						memcpy_P(parserID, c3OrigParserID, strlen_P(c3OrigParserID));
    82c6:	88 e5       	ldi	r24, 0x58	; 88
    82c8:	9a e1       	ldi	r25, 0x1A	; 26
    82ca:	0e 94 c6 ef 	call	0x1df8c	; 0x1df8c <strlen_P>
    82ce:	ac 01       	movw	r20, r24
    82d0:	c8 01       	movw	r24, r16
    82d2:	68 e5       	ldi	r22, 0x58	; 88
    82d4:	7a e1       	ldi	r23, 0x1A	; 26
    82d6:	1a c0       	rjmp	.+52     	; 0x830c <FloatCommsParseCommand+0x49e>
						break;

					case POWER:
						memcpy_P(parserID, powerParserID, strlen_P(powerParserID));
    82d8:	81 ea       	ldi	r24, 0xA1	; 161
    82da:	9b e1       	ldi	r25, 0x1B	; 27
    82dc:	0e 94 c6 ef 	call	0x1df8c	; 0x1df8c <strlen_P>
    82e0:	ac 01       	movw	r20, r24
    82e2:	c8 01       	movw	r24, r16
    82e4:	61 ea       	ldi	r22, 0xA1	; 161
    82e6:	7b e1       	ldi	r23, 0x1B	; 27
    82e8:	11 c0       	rjmp	.+34     	; 0x830c <FloatCommsParseCommand+0x49e>
						break;

					case ATM:
						memcpy_P(parserID, teledyneATM88XParserID, strlen_P(teledyneATM88XParserID));
    82ea:	84 ed       	ldi	r24, 0xD4	; 212
    82ec:	91 e1       	ldi	r25, 0x11	; 17
    82ee:	0e 94 c6 ef 	call	0x1df8c	; 0x1df8c <strlen_P>
    82f2:	ac 01       	movw	r20, r24
    82f4:	c8 01       	movw	r24, r16
    82f6:	64 ed       	ldi	r22, 0xD4	; 212
    82f8:	71 e1       	ldi	r23, 0x11	; 17
    82fa:	08 c0       	rjmp	.+16     	; 0x830c <FloatCommsParseCommand+0x49e>
						break;

					case CO2:
						memcpy_P(parserID, MBARI_CO2_ParserID, strlen_P(MBARI_CO2_ParserID));
    82fc:	8a e3       	ldi	r24, 0x3A	; 58
    82fe:	99 e0       	ldi	r25, 0x09	; 9
    8300:	0e 94 c6 ef 	call	0x1df8c	; 0x1df8c <strlen_P>
    8304:	ac 01       	movw	r20, r24
    8306:	c8 01       	movw	r24, r16
    8308:	6a e3       	ldi	r22, 0x3A	; 58
    830a:	79 e0       	ldi	r23, 0x09	; 9
    830c:	0e 94 ab ef 	call	0x1df56	; 0x1df56 <memcpy_P>
						break;

				}

				sprintf_P(pmCfg, PSTR("PM%d=%s "), i+1, parserID);
    8310:	2d b7       	in	r18, 0x3d	; 61
    8312:	3e b7       	in	r19, 0x3e	; 62
    8314:	28 50       	subi	r18, 0x08	; 8
    8316:	30 40       	sbci	r19, 0x00	; 0
    8318:	0f b6       	in	r0, 0x3f	; 63
    831a:	f8 94       	cli
    831c:	3e bf       	out	0x3e, r19	; 62
    831e:	0f be       	out	0x3f, r0	; 63
    8320:	2d bf       	out	0x3d, r18	; 61
    8322:	ed b7       	in	r30, 0x3d	; 61
    8324:	fe b7       	in	r31, 0x3e	; 62
    8326:	31 96       	adiw	r30, 0x01	; 1
    8328:	ad b7       	in	r26, 0x3d	; 61
    832a:	be b7       	in	r27, 0x3e	; 62
    832c:	12 96       	adiw	r26, 0x02	; 2
    832e:	bc 92       	st	X, r11
    8330:	ae 92       	st	-X, r10
    8332:	11 97       	sbiw	r26, 0x01	; 1
    8334:	73 82       	std	Z+3, r7	; 0x03
    8336:	62 82       	std	Z+2, r6	; 0x02
    8338:	f5 82       	std	Z+5, r15	; 0x05
    833a:	e4 82       	std	Z+4, r14	; 0x04
    833c:	17 83       	std	Z+7, r17	; 0x07
    833e:	06 83       	std	Z+6, r16	; 0x06
    8340:	0e 94 51 f1 	call	0x1e2a2	; 0x1e2a2 <sprintf_P>
				strcat(response, pmCfg);
    8344:	ed b7       	in	r30, 0x3d	; 61
    8346:	fe b7       	in	r31, 0x3e	; 62
    8348:	38 96       	adiw	r30, 0x08	; 8
    834a:	0f b6       	in	r0, 0x3f	; 63
    834c:	f8 94       	cli
    834e:	fe bf       	out	0x3e, r31	; 62
    8350:	0f be       	out	0x3f, r0	; 63
    8352:	ed bf       	out	0x3d, r30	; 61
    8354:	c4 01       	movw	r24, r8
    8356:	b5 01       	movw	r22, r10
    8358:	0e 94 2c f0 	call	0x1e058	; 0x1e058 <strcat>
    835c:	20 e1       	ldi	r18, 0x10	; 16
    835e:	30 e0       	ldi	r19, 0x00	; 0
    8360:	c2 0e       	add	r12, r18
    8362:	d3 1e       	adc	r13, r19
    8364:	08 94       	sec
    8366:	e1 1c       	adc	r14, r1
    8368:	f1 1c       	adc	r15, r1

		case 'c':
		case 'C':
			// Send sensor configuration information
			
			for(uint8_t i=0; i<3; i++)
    836a:	30 e4       	ldi	r19, 0x40	; 64
    836c:	c3 16       	cp	r12, r19
    836e:	31 e0       	ldi	r19, 0x01	; 1
    8370:	d3 06       	cpc	r13, r19
    8372:	09 f0       	breq	.+2      	; 0x8376 <FloatCommsParseCommand+0x508>
    8374:	28 cf       	rjmp	.-432    	; 0x81c6 <FloatCommsParseCommand+0x358>

				sprintf_P(pmCfg, PSTR("PM%d=%s "), i+1, parserID);
				strcat(response, pmCfg);
			}

			EepromReadByte((void*)(EEPROM_SYSTEM_PARAMS_START + EEPROM_POWER_DOWN_DELAY_OFFSET), &powerDelay);
    8376:	82 e0       	ldi	r24, 0x02	; 2
    8378:	91 e0       	ldi	r25, 0x01	; 1
    837a:	be 01       	movw	r22, r28
    837c:	6e 5f       	subi	r22, 0xFE	; 254
    837e:	7f 4f       	sbci	r23, 0xFF	; 255
    8380:	0e 94 38 37 	call	0x6e70	; 0x6e70 <EepromReadByte>
			sprintf_P(pmCfg, PSTR("Power Down Delay = %d seconds"), powerDelay); 
    8384:	00 d0       	rcall	.+0      	; 0x8386 <FloatCommsParseCommand+0x518>
    8386:	00 d0       	rcall	.+0      	; 0x8388 <FloatCommsParseCommand+0x51a>
    8388:	ed b7       	in	r30, 0x3d	; 61
    838a:	fe b7       	in	r31, 0x3e	; 62
    838c:	31 96       	adiw	r30, 0x01	; 1
    838e:	ad b7       	in	r26, 0x3d	; 61
    8390:	be b7       	in	r27, 0x3e	; 62
    8392:	12 96       	adiw	r26, 0x02	; 2
    8394:	bc 92       	st	X, r11
    8396:	ae 92       	st	-X, r10
    8398:	11 97       	sbiw	r26, 0x01	; 1
    839a:	81 e8       	ldi	r24, 0x81	; 129
    839c:	93 e0       	ldi	r25, 0x03	; 3
    839e:	93 83       	std	Z+3, r25	; 0x03
    83a0:	82 83       	std	Z+2, r24	; 0x02
    83a2:	8a 81       	ldd	r24, Y+2	; 0x02
    83a4:	84 83       	std	Z+4, r24	; 0x04
    83a6:	15 82       	std	Z+5, r1	; 0x05
    83a8:	0e 94 51 f1 	call	0x1e2a2	; 0x1e2a2 <sprintf_P>
			strcat(response, pmCfg);
    83ac:	ed b7       	in	r30, 0x3d	; 61
    83ae:	fe b7       	in	r31, 0x3e	; 62
    83b0:	36 96       	adiw	r30, 0x06	; 6
    83b2:	0f b6       	in	r0, 0x3f	; 63
    83b4:	f8 94       	cli
    83b6:	fe bf       	out	0x3e, r31	; 62
    83b8:	0f be       	out	0x3f, r0	; 63
    83ba:	ed bf       	out	0x3d, r30	; 61
    83bc:	c4 01       	movw	r24, r8
    83be:	b5 01       	movw	r22, r10
    83c0:	0e 94 2c f0 	call	0x1e058	; 0x1e058 <strcat>

			sprintf_P(dbgMsg, PSTR("cfg result: <%s>"), response); SEND_MSG;
    83c4:	00 d0       	rcall	.+0      	; 0x83c6 <FloatCommsParseCommand+0x558>
    83c6:	00 d0       	rcall	.+0      	; 0x83c8 <FloatCommsParseCommand+0x55a>
    83c8:	ed b7       	in	r30, 0x3d	; 61
    83ca:	fe b7       	in	r31, 0x3e	; 62
    83cc:	31 96       	adiw	r30, 0x01	; 1
    83ce:	83 ef       	ldi	r24, 0xF3	; 243
    83d0:	98 e1       	ldi	r25, 0x18	; 24
    83d2:	ad b7       	in	r26, 0x3d	; 61
    83d4:	be b7       	in	r27, 0x3e	; 62
    83d6:	12 96       	adiw	r26, 0x02	; 2
    83d8:	9c 93       	st	X, r25
    83da:	8e 93       	st	-X, r24
    83dc:	11 97       	sbiw	r26, 0x01	; 1
    83de:	80 e7       	ldi	r24, 0x70	; 112
    83e0:	93 e0       	ldi	r25, 0x03	; 3
    83e2:	93 83       	std	Z+3, r25	; 0x03
    83e4:	82 83       	std	Z+2, r24	; 0x02
    83e6:	95 82       	std	Z+5, r9	; 0x05
    83e8:	84 82       	std	Z+4, r8	; 0x04
    83ea:	40 c0       	rjmp	.+128    	; 0x846c <FloatCommsParseCommand+0x5fe>
		case 'B':
		{
			// Set board ID
			int32_t templong = 0;

			templong = strtol(cmdParams, NULL, 0);
    83ec:	8f 85       	ldd	r24, Y+15	; 0x0f
    83ee:	98 89       	ldd	r25, Y+16	; 0x10
    83f0:	60 e0       	ldi	r22, 0x00	; 0
    83f2:	70 e0       	ldi	r23, 0x00	; 0
    83f4:	40 e0       	ldi	r20, 0x00	; 0
    83f6:	50 e0       	ldi	r21, 0x00	; 0
    83f8:	0e 94 2a ee 	call	0x1dc54	; 0x1dc54 <strtol>
    83fc:	9b 01       	movw	r18, r22
    83fe:	ac 01       	movw	r20, r24

			if((templong >= 0x100) && (templong < 0xFF00) && ((templong & 0x000000FF) == 0))
    8400:	dc 01       	movw	r26, r24
    8402:	cb 01       	movw	r24, r22
    8404:	80 50       	subi	r24, 0x00	; 0
    8406:	91 40       	sbci	r25, 0x01	; 1
    8408:	a0 40       	sbci	r26, 0x00	; 0
    840a:	b0 40       	sbci	r27, 0x00	; 0
    840c:	80 50       	subi	r24, 0x00	; 0
    840e:	9e 4f       	sbci	r25, 0xFE	; 254
    8410:	a0 40       	sbci	r26, 0x00	; 0
    8412:	b0 40       	sbci	r27, 0x00	; 0
    8414:	40 f4       	brcc	.+16     	; 0x8426 <FloatCommsParseCommand+0x5b8>
    8416:	22 23       	and	r18, r18
    8418:	31 f4       	brne	.+12     	; 0x8426 <FloatCommsParseCommand+0x5b8>
				templong = templong >> 8;
    841a:	23 2f       	mov	r18, r19
    841c:	34 2f       	mov	r19, r20
    841e:	45 2f       	mov	r20, r21
    8420:	55 27       	eor	r21, r21
    8422:	47 fd       	sbrc	r20, 7
    8424:	5a 95       	dec	r21

			if (templong>0x00 && templong<0xFF)
    8426:	da 01       	movw	r26, r20
    8428:	c9 01       	movw	r24, r18
    842a:	01 97       	sbiw	r24, 0x01	; 1
    842c:	a1 09       	sbc	r26, r1
    842e:	b1 09       	sbc	r27, r1
    8430:	8e 3f       	cpi	r24, 0xFE	; 254
    8432:	91 05       	cpc	r25, r1
    8434:	a1 05       	cpc	r26, r1
    8436:	b1 05       	cpc	r27, r1
    8438:	08 f0       	brcs	.+2      	; 0x843c <FloatCommsParseCommand+0x5ce>
    843a:	84 c0       	rjmp	.+264    	; 0x8544 <FloatCommsParseCommand+0x6d6>
			{
				boardID = templong;
    843c:	2b 83       	std	Y+3, r18	; 0x03
				EepromWriteByteUnSigned((void*)(EEPROM_SYSTEM_PARAMS_START + EEPROM_BOARD_ID_OFFSET), boardID);
    843e:	81 e0       	ldi	r24, 0x01	; 1
    8440:	91 e0       	ldi	r25, 0x01	; 1
    8442:	62 2f       	mov	r22, r18
    8444:	0e 94 9f 37 	call	0x6f3e	; 0x6f3e <EepromWriteByteUnSigned>
			}
			else 
				return FAIL;

			sprintf_P(response, PSTR("OK -- Board ID will be %02X after payload reboot"), boardID);
    8448:	00 d0       	rcall	.+0      	; 0x844a <FloatCommsParseCommand+0x5dc>
    844a:	00 d0       	rcall	.+0      	; 0x844c <FloatCommsParseCommand+0x5de>
    844c:	ed b7       	in	r30, 0x3d	; 61
    844e:	fe b7       	in	r31, 0x3e	; 62
    8450:	31 96       	adiw	r30, 0x01	; 1
    8452:	ad b7       	in	r26, 0x3d	; 61
    8454:	be b7       	in	r27, 0x3e	; 62
    8456:	12 96       	adiw	r26, 0x02	; 2
    8458:	9c 92       	st	X, r9
    845a:	8e 92       	st	-X, r8
    845c:	11 97       	sbiw	r26, 0x01	; 1
    845e:	8f e3       	ldi	r24, 0x3F	; 63
    8460:	93 e0       	ldi	r25, 0x03	; 3
    8462:	93 83       	std	Z+3, r25	; 0x03
    8464:	82 83       	std	Z+2, r24	; 0x02
    8466:	8b 81       	ldd	r24, Y+3	; 0x03
    8468:	84 83       	std	Z+4, r24	; 0x04
    846a:	15 82       	std	Z+5, r1	; 0x05
    846c:	0e 94 51 f1 	call	0x1e2a2	; 0x1e2a2 <sprintf_P>
    8470:	8f ef       	ldi	r24, 0xFF	; 255
    8472:	ed b7       	in	r30, 0x3d	; 61
    8474:	fe b7       	in	r31, 0x3e	; 62
    8476:	36 96       	adiw	r30, 0x06	; 6
    8478:	0f b6       	in	r0, 0x3f	; 63
    847a:	f8 94       	cli
    847c:	fe bf       	out	0x3e, r31	; 62
    847e:	0f be       	out	0x3f, r0	; 63
    8480:	ed bf       	out	0x3d, r30	; 61
    8482:	61 c0       	rjmp	.+194    	; 0x8546 <FloatCommsParseCommand+0x6d8>
			
		case 'd':
		case 'D':
			// Set Power Down Delay

			if (!*cmdParams)
    8484:	ef 85       	ldd	r30, Y+15	; 0x0f
    8486:	f8 89       	ldd	r31, Y+16	; 0x10
    8488:	80 81       	ld	r24, Z
    848a:	88 23       	and	r24, r24
    848c:	09 f4       	brne	.+2      	; 0x8490 <FloatCommsParseCommand+0x622>
    848e:	5a c0       	rjmp	.+180    	; 0x8544 <FloatCommsParseCommand+0x6d6>
				return FAIL;

			powerDelay = atoi(cmdParams);
    8490:	cf 01       	movw	r24, r30
    8492:	0e 94 59 ef 	call	0x1deb2	; 0x1deb2 <atoi>
    8496:	68 2f       	mov	r22, r24
			if(powerDelay < 255)
    8498:	8f 3f       	cpi	r24, 0xFF	; 255
    849a:	09 f4       	brne	.+2      	; 0x849e <FloatCommsParseCommand+0x630>
    849c:	53 c0       	rjmp	.+166    	; 0x8544 <FloatCommsParseCommand+0x6d6>
			// Set Power Down Delay

			if (!*cmdParams)
				return FAIL;

			powerDelay = atoi(cmdParams);
    849e:	8a 83       	std	Y+2, r24	; 0x02
			if(powerDelay < 255)
			{
				EepromWriteByteUnSigned((void*)(EEPROM_SYSTEM_PARAMS_START + EEPROM_POWER_DOWN_DELAY_OFFSET), powerDelay);
    84a0:	82 e0       	ldi	r24, 0x02	; 2
    84a2:	91 e0       	ldi	r25, 0x01	; 1
    84a4:	0e 94 9f 37 	call	0x6f3e	; 0x6f3e <EepromWriteByteUnSigned>
				sprintf_P(response, PSTR("OK -- Power down delay set to %d seconds"), powerDelay);
    84a8:	00 d0       	rcall	.+0      	; 0x84aa <FloatCommsParseCommand+0x63c>
    84aa:	00 d0       	rcall	.+0      	; 0x84ac <FloatCommsParseCommand+0x63e>
    84ac:	ed b7       	in	r30, 0x3d	; 61
    84ae:	fe b7       	in	r31, 0x3e	; 62
    84b0:	31 96       	adiw	r30, 0x01	; 1
    84b2:	ad b7       	in	r26, 0x3d	; 61
    84b4:	be b7       	in	r27, 0x3e	; 62
    84b6:	12 96       	adiw	r26, 0x02	; 2
    84b8:	9c 92       	st	X, r9
    84ba:	8e 92       	st	-X, r8
    84bc:	11 97       	sbiw	r26, 0x01	; 1
    84be:	86 e1       	ldi	r24, 0x16	; 22
    84c0:	93 e0       	ldi	r25, 0x03	; 3
    84c2:	93 83       	std	Z+3, r25	; 0x03
    84c4:	82 83       	std	Z+2, r24	; 0x02
    84c6:	8a 81       	ldd	r24, Y+2	; 0x02
    84c8:	cf cf       	rjmp	.-98     	; 0x8468 <FloatCommsParseCommand+0x5fa>

		case 'i':
		case 'I':
			// Get ID

			EepromReadByte((void*)(EEPROM_SYSTEM_PARAMS_START + EEPROM_BOARD_ID_OFFSET), &boardID);
    84ca:	81 e0       	ldi	r24, 0x01	; 1
    84cc:	91 e0       	ldi	r25, 0x01	; 1
    84ce:	be 01       	movw	r22, r28
    84d0:	6d 5f       	subi	r22, 0xFD	; 253
    84d2:	7f 4f       	sbci	r23, 0xFF	; 255
    84d4:	0e 94 38 37 	call	0x6e70	; 0x6e70 <EepromReadByte>
			EepromReadByte((void*)(EEPROM_SYSTEM_PARAMS_START + EEPROM_POWER_DOWN_DELAY_OFFSET), &powerDelay);
    84d8:	82 e0       	ldi	r24, 0x02	; 2
    84da:	91 e0       	ldi	r25, 0x01	; 1
    84dc:	be 01       	movw	r22, r28
    84de:	6e 5f       	subi	r22, 0xFE	; 254
    84e0:	7f 4f       	sbci	r23, 0xFF	; 255
    84e2:	0e 94 38 37 	call	0x6e70	; 0x6e70 <EepromReadByte>

			sprintf_P(response, PSTR("PIB ver. %d.%d.%d. Board ID = 0x%02X. Power Down Delay = %d sec."), MAJOR, MINOR, BUILD, boardID, powerDelay);
    84e6:	2d b7       	in	r18, 0x3d	; 61
    84e8:	3e b7       	in	r19, 0x3e	; 62
    84ea:	2e 50       	subi	r18, 0x0E	; 14
    84ec:	30 40       	sbci	r19, 0x00	; 0
    84ee:	0f b6       	in	r0, 0x3f	; 63
    84f0:	f8 94       	cli
    84f2:	3e bf       	out	0x3e, r19	; 62
    84f4:	0f be       	out	0x3f, r0	; 63
    84f6:	2d bf       	out	0x3d, r18	; 61
    84f8:	ed b7       	in	r30, 0x3d	; 61
    84fa:	fe b7       	in	r31, 0x3e	; 62
    84fc:	31 96       	adiw	r30, 0x01	; 1
    84fe:	ad b7       	in	r26, 0x3d	; 61
    8500:	be b7       	in	r27, 0x3e	; 62
    8502:	12 96       	adiw	r26, 0x02	; 2
    8504:	9c 92       	st	X, r9
    8506:	8e 92       	st	-X, r8
    8508:	11 97       	sbiw	r26, 0x01	; 1
    850a:	85 ed       	ldi	r24, 0xD5	; 213
    850c:	92 e0       	ldi	r25, 0x02	; 2
    850e:	93 83       	std	Z+3, r25	; 0x03
    8510:	82 83       	std	Z+2, r24	; 0x02
    8512:	82 e0       	ldi	r24, 0x02	; 2
    8514:	90 e0       	ldi	r25, 0x00	; 0
    8516:	95 83       	std	Z+5, r25	; 0x05
    8518:	84 83       	std	Z+4, r24	; 0x04
    851a:	81 e0       	ldi	r24, 0x01	; 1
    851c:	90 e0       	ldi	r25, 0x00	; 0
    851e:	97 83       	std	Z+7, r25	; 0x07
    8520:	86 83       	std	Z+6, r24	; 0x06
    8522:	8b e8       	ldi	r24, 0x8B	; 139
    8524:	91 e0       	ldi	r25, 0x01	; 1
    8526:	91 87       	std	Z+9, r25	; 0x09
    8528:	80 87       	std	Z+8, r24	; 0x08
    852a:	8b 81       	ldd	r24, Y+3	; 0x03
    852c:	82 87       	std	Z+10, r24	; 0x0a
    852e:	13 86       	std	Z+11, r1	; 0x0b
    8530:	8a 81       	ldd	r24, Y+2	; 0x02
    8532:	84 87       	std	Z+12, r24	; 0x0c
    8534:	15 86       	std	Z+13, r1	; 0x0d
    8536:	0e 94 51 f1 	call	0x1e2a2	; 0x1e2a2 <sprintf_P>
    853a:	8f ef       	ldi	r24, 0xFF	; 255
    853c:	ed b7       	in	r30, 0x3d	; 61
    853e:	fe b7       	in	r31, 0x3e	; 62
    8540:	3e 96       	adiw	r30, 0x0e	; 14
    8542:	9a cf       	rjmp	.-204    	; 0x8478 <FloatCommsParseCommand+0x60a>

			break;
    8544:	80 e0       	ldi	r24, 0x00	; 0
		default:
			return FAIL;
	}

	return SUCCESS;
}
    8546:	60 96       	adiw	r28, 0x10	; 16
    8548:	0f b6       	in	r0, 0x3f	; 63
    854a:	f8 94       	cli
    854c:	de bf       	out	0x3e, r29	; 62
    854e:	0f be       	out	0x3f, r0	; 63
    8550:	cd bf       	out	0x3d, r28	; 61
    8552:	cf 91       	pop	r28
    8554:	df 91       	pop	r29
    8556:	1f 91       	pop	r17
    8558:	0f 91       	pop	r16
    855a:	ff 90       	pop	r15
    855c:	ef 90       	pop	r14
    855e:	df 90       	pop	r13
    8560:	cf 90       	pop	r12
    8562:	bf 90       	pop	r11
    8564:	af 90       	pop	r10
    8566:	9f 90       	pop	r9
    8568:	8f 90       	pop	r8
    856a:	7f 90       	pop	r7
    856c:	6f 90       	pop	r6
    856e:	5f 90       	pop	r5
    8570:	4f 90       	pop	r4
    8572:	3f 90       	pop	r3
    8574:	2f 90       	pop	r2
    8576:	08 95       	ret

00008578 <FloatCommParseConsole>:

char consoleResponse[80] __attribute__((section(".xdata")));
char pmCfg[20] __attribute__((section(".xdata")));

void FloatCommParseConsole(PPYLD_MGR_FILE_RX_BUFFER pHeaders)
{
    8578:	cf 92       	push	r12
    857a:	df 92       	push	r13
    857c:	ef 92       	push	r14
    857e:	ff 92       	push	r15
    8580:	0f 93       	push	r16
    8582:	1f 93       	push	r17
    8584:	df 93       	push	r29
    8586:	cf 93       	push	r28
    8588:	0f 92       	push	r0
    858a:	0f 92       	push	r0
    858c:	cd b7       	in	r28, 0x3d	; 61
    858e:	de b7       	in	r29, 0x3e	; 62
    8590:	6c 01       	movw	r12, r24
	char* myCommand = consoleIn[0].cmd; 
    8592:	22 e7       	ldi	r18, 0x72	; 114
    8594:	3d e9       	ldi	r19, 0x9D	; 157
    8596:	3a 83       	std	Y+2, r19	; 0x02
    8598:	29 83       	std	Y+1, r18	; 0x01
	char* result = NULL;
	char command = 0;
	BOOL goodCommand = FALSE;
	uint8_t resultCode = 0;
	
	sprintf_P(dbgMsg, PSTR("Processing console input: <%s>"), myCommand); SEND_MSG;
    859a:	00 d0       	rcall	.+0      	; 0x859c <FloatCommParseConsole+0x24>
    859c:	00 d0       	rcall	.+0      	; 0x859e <FloatCommParseConsole+0x26>
    859e:	ed b7       	in	r30, 0x3d	; 61
    85a0:	fe b7       	in	r31, 0x3e	; 62
    85a2:	31 96       	adiw	r30, 0x01	; 1
    85a4:	83 ef       	ldi	r24, 0xF3	; 243
    85a6:	98 e1       	ldi	r25, 0x18	; 24
    85a8:	ad b7       	in	r26, 0x3d	; 61
    85aa:	be b7       	in	r27, 0x3e	; 62
    85ac:	12 96       	adiw	r26, 0x02	; 2
    85ae:	9c 93       	st	X, r25
    85b0:	8e 93       	st	-X, r24
    85b2:	11 97       	sbiw	r26, 0x01	; 1
    85b4:	82 e3       	ldi	r24, 0x32	; 50
    85b6:	94 e0       	ldi	r25, 0x04	; 4
    85b8:	93 83       	std	Z+3, r25	; 0x03
    85ba:	82 83       	std	Z+2, r24	; 0x02
    85bc:	35 83       	std	Z+5, r19	; 0x05
    85be:	24 83       	std	Z+4, r18	; 0x04
    85c0:	0e 94 51 f1 	call	0x1e2a2	; 0x1e2a2 <sprintf_P>

	myCommand[MAX_FILE_SIZE_IN - 1] = 0;			//Make sure command string is NULL terminated
    85c4:	e9 81       	ldd	r30, Y+1	; 0x01
    85c6:	fa 81       	ldd	r31, Y+2	; 0x02
    85c8:	e1 50       	subi	r30, 0x01	; 1
    85ca:	ff 4f       	sbci	r31, 0xFF	; 255
    85cc:	10 82       	st	Z, r1

	memset(floatCommSeparatorList, 0, 7);
    85ce:	33 ea       	ldi	r19, 0xA3	; 163
    85d0:	e3 2e       	mov	r14, r19
    85d2:	38 eb       	ldi	r19, 0xB8	; 184
    85d4:	f3 2e       	mov	r15, r19
    85d6:	87 e0       	ldi	r24, 0x07	; 7
    85d8:	f7 01       	movw	r30, r14
    85da:	11 92       	st	Z+, r1
    85dc:	8a 95       	dec	r24
    85de:	e9 f7       	brne	.-6      	; 0x85da <FloatCommParseConsole+0x62>
	strcat_P(floatCommSeparatorList, floatCommSeparators);
    85e0:	2d b7       	in	r18, 0x3d	; 61
    85e2:	3e b7       	in	r19, 0x3e	; 62
    85e4:	2a 5f       	subi	r18, 0xFA	; 250
    85e6:	3f 4f       	sbci	r19, 0xFF	; 255
    85e8:	0f b6       	in	r0, 0x3f	; 63
    85ea:	f8 94       	cli
    85ec:	3e bf       	out	0x3e, r19	; 62
    85ee:	0f be       	out	0x3f, r0	; 63
    85f0:	2d bf       	out	0x3d, r18	; 61
    85f2:	c7 01       	movw	r24, r14
    85f4:	6f e3       	ldi	r22, 0x3F	; 63
    85f6:	72 e0       	ldi	r23, 0x02	; 2
    85f8:	0e 94 b4 ef 	call	0x1df68	; 0x1df68 <strcat_P>

	result = strtok_r(myCommand, floatCommSeparatorList, &myCommand);
    85fc:	89 81       	ldd	r24, Y+1	; 0x01
    85fe:	9a 81       	ldd	r25, Y+2	; 0x02
    8600:	b7 01       	movw	r22, r14
    8602:	8e 01       	movw	r16, r28
    8604:	0f 5f       	subi	r16, 0xFF	; 255
    8606:	1f 4f       	sbci	r17, 0xFF	; 255
    8608:	a8 01       	movw	r20, r16
    860a:	0e 94 a0 f0 	call	0x1e140	; 0x1e140 <strtok_r>
	resultCode = 1;				//No Command Received
	if(result != NULL)
    860e:	00 97       	sbiw	r24, 0x00	; 0
    8610:	21 f4       	brne	.+8      	; 0x861a <FloatCommParseConsole+0xa2>
    8612:	20 e0       	ldi	r18, 0x00	; 0
    8614:	90 e0       	ldi	r25, 0x00	; 0
    8616:	11 e0       	ldi	r17, 0x01	; 1
    8618:	1c c0       	rjmp	.+56     	; 0x8652 <FloatCommParseConsole+0xda>
	{
		resultCode = 2;			//Unknown Parser Code
		if(strncasecmp_P(result, PSTR("PIB"), 3) == 0)
    861a:	6e e2       	ldi	r22, 0x2E	; 46
    861c:	74 e0       	ldi	r23, 0x04	; 4
    861e:	43 e0       	ldi	r20, 0x03	; 3
    8620:	50 e0       	ldi	r21, 0x00	; 0
    8622:	0e 94 cf ef 	call	0x1df9e	; 0x1df9e <strncasecmp_P>
    8626:	89 2b       	or	r24, r25
    8628:	21 f0       	breq	.+8      	; 0x8632 <FloatCommParseConsole+0xba>
    862a:	20 e0       	ldi	r18, 0x00	; 0
    862c:	90 e0       	ldi	r25, 0x00	; 0
    862e:	12 e0       	ldi	r17, 0x02	; 2
    8630:	10 c0       	rjmp	.+32     	; 0x8652 <FloatCommParseConsole+0xda>
		{
			resultCode = 3;		//Unknown command
			command = getCommand(&myCommand, floatCommCommands[0], LEN_PIB_COMMANDS, NUM_PIB_COMMANDS, floatCommCmdList, floatCommSeparatorList);
    8632:	c8 01       	movw	r24, r16
    8634:	66 e4       	ldi	r22, 0x46	; 70
    8636:	72 e0       	ldi	r23, 0x02	; 2
    8638:	48 e0       	ldi	r20, 0x08	; 8
    863a:	27 e0       	ldi	r18, 0x07	; 7
    863c:	0e e7       	ldi	r16, 0x7E	; 126
    863e:	12 e0       	ldi	r17, 0x02	; 2
    8640:	0e 94 1f 38 	call	0x703e	; 0x703e <getCommand>
    8644:	28 2f       	mov	r18, r24

			if(command != 0)
    8646:	88 23       	and	r24, r24
    8648:	11 f0       	breq	.+4      	; 0x864e <FloatCommParseConsole+0xd6>
    864a:	9f ef       	ldi	r25, 0xFF	; 255
    864c:	01 c0       	rjmp	.+2      	; 0x8650 <FloatCommParseConsole+0xd8>
    864e:	90 e0       	ldi	r25, 0x00	; 0
    8650:	13 e0       	ldi	r17, 0x03	; 3
				goodCommand = TRUE;
		}
	}

//	char consoleResponse[80];
	memset(consoleResponse, 0, 80);
    8652:	ea ea       	ldi	r30, 0xAA	; 170
    8654:	f8 eb       	ldi	r31, 0xB8	; 184
    8656:	80 e5       	ldi	r24, 0x50	; 80
    8658:	df 01       	movw	r26, r30
    865a:	1d 92       	st	X+, r1
    865c:	8a 95       	dec	r24
    865e:	e9 f7       	brne	.-6      	; 0x865a <FloatCommParseConsole+0xe2>

	if(goodCommand == TRUE)
    8660:	9f 3f       	cpi	r25, 0xFF	; 255
    8662:	51 f4       	brne	.+20     	; 0x8678 <FloatCommParseConsole+0x100>
	{
		//sprintf_P(dbgMsg, PSTR("Good command")); SEND_MSG;
		resultCode = FloatCommsParseCommand(command, myCommand, consoleResponse);
    8664:	69 81       	ldd	r22, Y+1	; 0x01
    8666:	7a 81       	ldd	r23, Y+2	; 0x02
    8668:	82 2f       	mov	r24, r18
    866a:	af 01       	movw	r20, r30
    866c:	0e 94 37 3f 	call	0x7e6e	; 0x7e6e <FloatCommsParseCommand>
    8670:	18 2f       	mov	r17, r24
	{
		sprintf_P(dbgMsg, PSTR("Bad command. Result code: <%d>"), resultCode); 
		SEND_MSG;
	}

	if(resultCode != SUCCESS)
    8672:	8f 3f       	cpi	r24, 0xFF	; 255
    8674:	79 f1       	breq	.+94     	; 0x86d4 <FloatCommParseConsole+0x15c>
    8676:	1d c0       	rjmp	.+58     	; 0x86b2 <FloatCommParseConsole+0x13a>
		//sprintf_P(dbgMsg, PSTR("Good command")); SEND_MSG;
		resultCode = FloatCommsParseCommand(command, myCommand, consoleResponse);
	} 
	else
	{
		sprintf_P(dbgMsg, PSTR("Bad command. Result code: <%d>"), resultCode); 
    8678:	00 d0       	rcall	.+0      	; 0x867a <FloatCommParseConsole+0x102>
    867a:	00 d0       	rcall	.+0      	; 0x867c <FloatCommParseConsole+0x104>
    867c:	ed b7       	in	r30, 0x3d	; 61
    867e:	fe b7       	in	r31, 0x3e	; 62
    8680:	31 96       	adiw	r30, 0x01	; 1
    8682:	83 ef       	ldi	r24, 0xF3	; 243
    8684:	98 e1       	ldi	r25, 0x18	; 24
    8686:	ad b7       	in	r26, 0x3d	; 61
    8688:	be b7       	in	r27, 0x3e	; 62
    868a:	12 96       	adiw	r26, 0x02	; 2
    868c:	9c 93       	st	X, r25
    868e:	8e 93       	st	-X, r24
    8690:	11 97       	sbiw	r26, 0x01	; 1
    8692:	8f e0       	ldi	r24, 0x0F	; 15
    8694:	94 e0       	ldi	r25, 0x04	; 4
    8696:	93 83       	std	Z+3, r25	; 0x03
    8698:	82 83       	std	Z+2, r24	; 0x02
    869a:	14 83       	std	Z+4, r17	; 0x04
    869c:	15 82       	std	Z+5, r1	; 0x05
    869e:	0e 94 51 f1 	call	0x1e2a2	; 0x1e2a2 <sprintf_P>
    86a2:	ed b7       	in	r30, 0x3d	; 61
    86a4:	fe b7       	in	r31, 0x3e	; 62
    86a6:	36 96       	adiw	r30, 0x06	; 6
    86a8:	0f b6       	in	r0, 0x3f	; 63
    86aa:	f8 94       	cli
    86ac:	fe bf       	out	0x3e, r31	; 62
    86ae:	0f be       	out	0x3f, r0	; 63
    86b0:	ed bf       	out	0x3d, r30	; 61
		SEND_MSG;
	}

	if(resultCode != SUCCESS)
	{
		switch(resultCode)
    86b2:	11 30       	cpi	r17, 0x01	; 1
    86b4:	39 f0       	breq	.+14     	; 0x86c4 <FloatCommParseConsole+0x14c>
    86b6:	11 30       	cpi	r17, 0x01	; 1
    86b8:	58 f0       	brcs	.+22     	; 0x86d0 <FloatCommParseConsole+0x158>
    86ba:	12 30       	cpi	r17, 0x02	; 2
    86bc:	29 f0       	breq	.+10     	; 0x86c8 <FloatCommParseConsole+0x150>
    86be:	13 30       	cpi	r17, 0x03	; 3
    86c0:	39 f4       	brne	.+14     	; 0x86d0 <FloatCommParseConsole+0x158>
    86c2:	04 c0       	rjmp	.+8      	; 0x86cc <FloatCommParseConsole+0x154>
		{
			case FAIL:
				floatCommsConsoleResponse = CONSOLE_RESPONSE_CMD_FAILED;
				break;
			case 1:
				floatCommsConsoleResponse = CONSOLE_RESPONSE_EMPTY_CMD;
    86c4:	8d e0       	ldi	r24, 0x0D	; 13
    86c6:	07 c0       	rjmp	.+14     	; 0x86d6 <FloatCommParseConsole+0x15e>
				break;
			case 2:
				floatCommsConsoleResponse = CONSOLE_RESPONSE_WRONG_DEVICE;
    86c8:	8e e0       	ldi	r24, 0x0E	; 14
    86ca:	05 c0       	rjmp	.+10     	; 0x86d6 <FloatCommParseConsole+0x15e>
				break;
			case 3:
				floatCommsConsoleResponse = CONSOLE_RESPONSE_UNKNOWN_CMD;
    86cc:	8a e0       	ldi	r24, 0x0A	; 10
    86ce:	03 c0       	rjmp	.+6      	; 0x86d6 <FloatCommParseConsole+0x15e>
				break;
			default:
				floatCommsConsoleResponse = CONSOLE_RESPONSE_CMD_FAILED;
    86d0:	8f e0       	ldi	r24, 0x0F	; 15
    86d2:	01 c0       	rjmp	.+2      	; 0x86d6 <FloatCommParseConsole+0x15e>
				break;
		}
	}
	else
	{
		floatCommsConsoleResponse = CONSOLE_RESPONSE_OK;
    86d4:	81 e0       	ldi	r24, 0x01	; 1
    86d6:	80 93 e7 03 	sts	0x03E7, r24
	}

	FloatCommsQueueConsoleResponse(pHeaders, consoleResponse);
    86da:	c6 01       	movw	r24, r12
    86dc:	6a ea       	ldi	r22, 0xAA	; 170
    86de:	78 eb       	ldi	r23, 0xB8	; 184
    86e0:	0e 94 5e 3d 	call	0x7abc	; 0x7abc <FloatCommsQueueConsoleResponse>

	memset(consoleIn[0].cmd, 0, MAX_FILE_SIZE_IN);
    86e4:	80 e0       	ldi	r24, 0x00	; 0
    86e6:	91 e0       	ldi	r25, 0x01	; 1
    86e8:	e2 e7       	ldi	r30, 0x72	; 114
    86ea:	fd e9       	ldi	r31, 0x9D	; 157
    86ec:	df 01       	movw	r26, r30
    86ee:	9c 01       	movw	r18, r24
    86f0:	1d 92       	st	X+, r1
    86f2:	21 50       	subi	r18, 0x01	; 1
    86f4:	30 40       	sbci	r19, 0x00	; 0
    86f6:	e1 f7       	brne	.-8      	; 0x86f0 <FloatCommParseConsole+0x178>
	consoleIn[0].cmdSrcAddress = 0;
    86f8:	10 92 6a 9d 	sts	0x9D6A, r1
    86fc:	10 92 69 9d 	sts	0x9D69, r1
	consoleIn[0].functionCode = 0;
    8700:	10 92 6b 9d 	sts	0x9D6B, r1
	consoleIn[0].cmdSize = 0;
    8704:	10 92 6d 9d 	sts	0x9D6D, r1
    8708:	10 92 6c 9d 	sts	0x9D6C, r1
	consoleIn[0].id = 0;
    870c:	10 92 6e 9d 	sts	0x9D6E, r1
    8710:	10 92 6f 9d 	sts	0x9D6F, r1
    8714:	10 92 70 9d 	sts	0x9D70, r1
    8718:	10 92 71 9d 	sts	0x9D71, r1

	return;
}
    871c:	0f 90       	pop	r0
    871e:	0f 90       	pop	r0
    8720:	cf 91       	pop	r28
    8722:	df 91       	pop	r29
    8724:	1f 91       	pop	r17
    8726:	0f 91       	pop	r16
    8728:	ff 90       	pop	r15
    872a:	ef 90       	pop	r14
    872c:	df 90       	pop	r13
    872e:	cf 90       	pop	r12
    8730:	08 95       	ret

00008732 <PM_RxHDLC>:
	}
	return lenRxHDLCBuf;
}

uint16_t PM_RxHDLC(char *pHDLCBuf, uint8_t port, uint16_t timeout)
{
    8732:	4f 92       	push	r4
    8734:	5f 92       	push	r5
    8736:	6f 92       	push	r6
    8738:	7f 92       	push	r7
    873a:	8f 92       	push	r8
    873c:	9f 92       	push	r9
    873e:	af 92       	push	r10
    8740:	bf 92       	push	r11
    8742:	cf 92       	push	r12
    8744:	df 92       	push	r13
    8746:	ef 92       	push	r14
    8748:	ff 92       	push	r15
    874a:	0f 93       	push	r16
    874c:	1f 93       	push	r17
    874e:	df 93       	push	r29
    8750:	cf 93       	push	r28
    8752:	0f 92       	push	r0
    8754:	0f 92       	push	r0
    8756:	cd b7       	in	r28, 0x3d	; 61
    8758:	de b7       	in	r29, 0x3e	; 62
    875a:	7c 01       	movw	r14, r24
    875c:	a6 2e       	mov	r10, r22
    875e:	3a 01       	movw	r6, r20
	uint16_t msgLength = 3;
	BOOL rxInProgHDLC = FALSE;
	uint16_t lenRxHDLCBuf = 0;
	BOOL escapedHDLC = FALSE;
	uint16_t*	lenHDLCMsg = (uint16_t*)(pHDLCBuf + 1);
    8760:	4c 01       	movw	r8, r24
    8762:	08 94       	sec
    8764:	81 1c       	adc	r8, r1
    8766:	91 1c       	adc	r9, r1
	BOOL waitingForPacket = TRUE;
	uint8_t err = 0;
    8768:	19 82       	std	Y+1, r1	; 0x01
    876a:	43 e0       	ldi	r20, 0x03	; 3
    876c:	c4 2e       	mov	r12, r20
    876e:	d1 2c       	mov	r13, r1
    8770:	1a 82       	std	Y+2, r1	; 0x02
    8772:	00 e0       	ldi	r16, 0x00	; 0
    8774:	10 e0       	ldi	r17, 0x00	; 0
    8776:	bb 24       	eor	r11, r11
	char c;
	BOOL error = FALSE;

	while(waitingForPacket == TRUE)
	{
		c = (char) OSuartGetCharWait(port, timeout, &err);
    8778:	2e 01       	movw	r4, r28
    877a:	08 94       	sec
    877c:	41 1c       	adc	r4, r1
    877e:	51 1c       	adc	r5, r1
    8780:	8a 2d       	mov	r24, r10
    8782:	b3 01       	movw	r22, r6
    8784:	a2 01       	movw	r20, r4
    8786:	0e 94 b8 32 	call	0x6570	; 0x6570 <OSuartGetCharWait>
    878a:	98 2f       	mov	r25, r24

		if(err != OS_ERR_NONE)
    878c:	89 81       	ldd	r24, Y+1	; 0x01
    878e:	88 23       	and	r24, r24
    8790:	19 f0       	breq	.+6      	; 0x8798 <PM_RxHDLC+0x66>
    8792:	00 e0       	ldi	r16, 0x00	; 0
    8794:	10 e0       	ldi	r17, 0x00	; 0
    8796:	3e c0       	rjmp	.+124    	; 0x8814 <PM_RxHDLC+0xe2>
			waitingForPacket = FALSE;
			error = TRUE;
			return 0;
		}

		if(rxInProgHDLC == TRUE)
    8798:	8a 81       	ldd	r24, Y+2	; 0x02
    879a:	8f 3f       	cpi	r24, 0xFF	; 255
    879c:	69 f5       	brne	.+90     	; 0x87f8 <PM_RxHDLC+0xc6>
		{
			switch (c)
    879e:	9d 37       	cpi	r25, 0x7D	; 125
    87a0:	19 f4       	brne	.+6      	; 0x87a8 <PM_RxHDLC+0x76>
    87a2:	bb 24       	eor	r11, r11
    87a4:	ba 94       	dec	r11
    87a6:	12 c0       	rjmp	.+36     	; 0x87cc <PM_RxHDLC+0x9a>
					escapedHDLC = TRUE;
					break;
				}
				default:
				{
					switch (escapedHDLC)
    87a8:	bb 20       	and	r11, r11
    87aa:	59 f0       	breq	.+22     	; 0x87c2 <PM_RxHDLC+0x90>
    87ac:	ef ef       	ldi	r30, 0xFF	; 255
    87ae:	be 16       	cp	r11, r30
    87b0:	69 f4       	brne	.+26     	; 0x87cc <PM_RxHDLC+0x9a>
					{
						case TRUE:
						{
							c |= HDLC_RX_OR_MASK;
							escapedHDLC = FALSE;
							*pHDLCBuf = c;
    87b2:	90 62       	ori	r25, 0x20	; 32
    87b4:	f7 01       	movw	r30, r14
    87b6:	91 93       	st	Z+, r25
    87b8:	7f 01       	movw	r14, r30
							pHDLCBuf++;
							lenRxHDLCBuf++;
    87ba:	0f 5f       	subi	r16, 0xFF	; 255
    87bc:	1f 4f       	sbci	r17, 0xFF	; 255
    87be:	bb 24       	eor	r11, r11
    87c0:	05 c0       	rjmp	.+10     	; 0x87cc <PM_RxHDLC+0x9a>
							break;
						}
						case FALSE:
						{
							*pHDLCBuf = c;
    87c2:	f7 01       	movw	r30, r14
    87c4:	91 93       	st	Z+, r25
    87c6:	7f 01       	movw	r14, r30
							pHDLCBuf++;
							lenRxHDLCBuf++;
    87c8:	0f 5f       	subi	r16, 0xFF	; 255
    87ca:	1f 4f       	sbci	r17, 0xFF	; 255
					}

					break;
				}
			}
			if(lenRxHDLCBuf == 3)
    87cc:	03 30       	cpi	r16, 0x03	; 3
    87ce:	11 05       	cpc	r17, r1
    87d0:	61 f4       	brne	.+24     	; 0x87ea <PM_RxHDLC+0xb8>
			{
				msgLength = *lenHDLCMsg;
    87d2:	f4 01       	movw	r30, r8
    87d4:	c0 80       	ld	r12, Z
    87d6:	d1 80       	ldd	r13, Z+1	; 0x01
				if(msgLength >= HDLC_MAX_LENGTH)
    87d8:	f0 e3       	ldi	r31, 0x30	; 48
    87da:	cf 16       	cp	r12, r31
    87dc:	f2 e0       	ldi	r31, 0x02	; 2
    87de:	df 06       	cpc	r13, r31
    87e0:	20 f0       	brcs	.+8      	; 0x87ea <PM_RxHDLC+0xb8>
    87e2:	cc 24       	eor	r12, r12
    87e4:	dd 24       	eor	r13, r13
    87e6:	20 e0       	ldi	r18, 0x00	; 0
    87e8:	01 c0       	rjmp	.+2      	; 0x87ec <PM_RxHDLC+0xba>
    87ea:	2f ef       	ldi	r18, 0xFF	; 255
				{
					msgLength = 0;
					waitingForPacket = FALSE;
				}
			}
			if(lenRxHDLCBuf >= msgLength + 1) 
    87ec:	c6 01       	movw	r24, r12
    87ee:	01 96       	adiw	r24, 0x01	; 1
    87f0:	08 17       	cp	r16, r24
    87f2:	19 07       	cpc	r17, r25
    87f4:	78 f4       	brcc	.+30     	; 0x8814 <PM_RxHDLC+0xe2>
    87f6:	0b c0       	rjmp	.+22     	; 0x880e <PM_RxHDLC+0xdc>
				escapedHDLC = FALSE;
			}
		}
		else
		{
			if(c == HDLC_SOF)
    87f8:	9e 37       	cpi	r25, 0x7E	; 126
    87fa:	11 f6       	brne	.-124    	; 0x8780 <PM_RxHDLC+0x4e>
			{
				rxInProgHDLC = TRUE;
				*pHDLCBuf = c;
    87fc:	f7 01       	movw	r30, r14
    87fe:	91 93       	st	Z+, r25
    8800:	7f 01       	movw	r14, r30
				pHDLCBuf++;
				lenRxHDLCBuf++;
    8802:	0f 5f       	subi	r16, 0xFF	; 255
    8804:	1f 4f       	sbci	r17, 0xFF	; 255
    8806:	ff ef       	ldi	r31, 0xFF	; 255
    8808:	fa 83       	std	Y+2, r31	; 0x02
    880a:	bb 24       	eor	r11, r11
    880c:	b9 cf       	rjmp	.-142    	; 0x8780 <PM_RxHDLC+0x4e>
	BOOL waitingForPacket = TRUE;
	uint8_t err = 0;
	char c;
	BOOL error = FALSE;

	while(waitingForPacket == TRUE)
    880e:	2f 3f       	cpi	r18, 0xFF	; 255
    8810:	09 f4       	brne	.+2      	; 0x8814 <PM_RxHDLC+0xe2>
    8812:	b6 cf       	rjmp	.-148    	; 0x8780 <PM_RxHDLC+0x4e>

	if(error == TRUE)
		lenRxHDLCBuf = 0;

	return lenRxHDLCBuf;
}
    8814:	c8 01       	movw	r24, r16
    8816:	0f 90       	pop	r0
    8818:	0f 90       	pop	r0
    881a:	cf 91       	pop	r28
    881c:	df 91       	pop	r29
    881e:	1f 91       	pop	r17
    8820:	0f 91       	pop	r16
    8822:	ff 90       	pop	r15
    8824:	ef 90       	pop	r14
    8826:	df 90       	pop	r13
    8828:	cf 90       	pop	r12
    882a:	bf 90       	pop	r11
    882c:	af 90       	pop	r10
    882e:	9f 90       	pop	r9
    8830:	8f 90       	pop	r8
    8832:	7f 90       	pop	r7
    8834:	6f 90       	pop	r6
    8836:	5f 90       	pop	r5
    8838:	4f 90       	pop	r4
    883a:	08 95       	ret

0000883c <RxHDLC>:
	return error;
}


uint16_t RxHDLC(char *pHDLCBuf)
{
    883c:	6f 92       	push	r6
    883e:	7f 92       	push	r7
    8840:	8f 92       	push	r8
    8842:	9f 92       	push	r9
    8844:	bf 92       	push	r11
    8846:	cf 92       	push	r12
    8848:	df 92       	push	r13
    884a:	ef 92       	push	r14
    884c:	ff 92       	push	r15
    884e:	0f 93       	push	r16
    8850:	1f 93       	push	r17
    8852:	df 93       	push	r29
    8854:	cf 93       	push	r28
    8856:	0f 92       	push	r0
    8858:	0f 92       	push	r0
    885a:	cd b7       	in	r28, 0x3d	; 61
    885c:	de b7       	in	r29, 0x3e	; 62
    885e:	7c 01       	movw	r14, r24
	uint16_t msgLength = 3;
	BOOL rxInProgHDLC = FALSE;
	uint16_t lenRxHDLCBuf = 0;
	BOOL escapedHDLC = FALSE;
	uint16_t*	lenHDLCMsg = (uint16_t*)(pHDLCBuf + 1);
    8860:	4c 01       	movw	r8, r24
    8862:	08 94       	sec
    8864:	81 1c       	adc	r8, r1
    8866:	91 1c       	adc	r9, r1
	BOOL waitingForPacket = TRUE;
	uint8_t err = 0;
    8868:	19 82       	std	Y+1, r1	; 0x01
    886a:	53 e0       	ldi	r21, 0x03	; 3
    886c:	c5 2e       	mov	r12, r21
    886e:	d1 2c       	mov	r13, r1
    8870:	1a 82       	std	Y+2, r1	; 0x02
    8872:	00 e0       	ldi	r16, 0x00	; 0
    8874:	10 e0       	ldi	r17, 0x00	; 0
    8876:	bb 24       	eor	r11, r11
	char c;

	while(waitingForPacket == TRUE)
	{
		c = (char) OSuartGetCharWait(FLOAT_PORT, INFINITE, &err);
    8878:	3e 01       	movw	r6, r28
    887a:	08 94       	sec
    887c:	61 1c       	adc	r6, r1
    887e:	71 1c       	adc	r7, r1
    8880:	80 e0       	ldi	r24, 0x00	; 0
    8882:	60 e0       	ldi	r22, 0x00	; 0
    8884:	70 e0       	ldi	r23, 0x00	; 0
    8886:	a3 01       	movw	r20, r6
    8888:	0e 94 b8 32 	call	0x6570	; 0x6570 <OSuartGetCharWait>

		if(rxInProgHDLC == TRUE)
    888c:	9a 81       	ldd	r25, Y+2	; 0x02
    888e:	9f 3f       	cpi	r25, 0xFF	; 255
    8890:	69 f5       	brne	.+90     	; 0x88ec <RxHDLC+0xb0>
		{
			switch (c)
    8892:	8d 37       	cpi	r24, 0x7D	; 125
    8894:	19 f4       	brne	.+6      	; 0x889c <RxHDLC+0x60>
    8896:	bb 24       	eor	r11, r11
    8898:	ba 94       	dec	r11
    889a:	12 c0       	rjmp	.+36     	; 0x88c0 <RxHDLC+0x84>
					escapedHDLC = TRUE;
					break;
				}
				default:
				{
					switch (escapedHDLC)
    889c:	bb 20       	and	r11, r11
    889e:	59 f0       	breq	.+22     	; 0x88b6 <RxHDLC+0x7a>
    88a0:	ef ef       	ldi	r30, 0xFF	; 255
    88a2:	be 16       	cp	r11, r30
    88a4:	69 f4       	brne	.+26     	; 0x88c0 <RxHDLC+0x84>
					{
						case TRUE:
						{
							c |= HDLC_RX_OR_MASK;
							escapedHDLC = FALSE;
							*pHDLCBuf = c;
    88a6:	80 62       	ori	r24, 0x20	; 32
    88a8:	f7 01       	movw	r30, r14
    88aa:	81 93       	st	Z+, r24
    88ac:	7f 01       	movw	r14, r30
							pHDLCBuf++;
							lenRxHDLCBuf++;
    88ae:	0f 5f       	subi	r16, 0xFF	; 255
    88b0:	1f 4f       	sbci	r17, 0xFF	; 255
    88b2:	bb 24       	eor	r11, r11
    88b4:	05 c0       	rjmp	.+10     	; 0x88c0 <RxHDLC+0x84>
							break;
						}
						case FALSE:
						{
							*pHDLCBuf = c;
    88b6:	f7 01       	movw	r30, r14
    88b8:	81 93       	st	Z+, r24
    88ba:	7f 01       	movw	r14, r30
							pHDLCBuf++;
							lenRxHDLCBuf++;
    88bc:	0f 5f       	subi	r16, 0xFF	; 255
    88be:	1f 4f       	sbci	r17, 0xFF	; 255
					}

					break;
				}
			}
			if(lenRxHDLCBuf == 3)
    88c0:	03 30       	cpi	r16, 0x03	; 3
    88c2:	11 05       	cpc	r17, r1
    88c4:	61 f4       	brne	.+24     	; 0x88de <RxHDLC+0xa2>
			{
				msgLength = *lenHDLCMsg;
    88c6:	f4 01       	movw	r30, r8
    88c8:	c0 80       	ld	r12, Z
    88ca:	d1 80       	ldd	r13, Z+1	; 0x01
				if(msgLength >= HDLC_MAX_LENGTH)
    88cc:	f0 e3       	ldi	r31, 0x30	; 48
    88ce:	cf 16       	cp	r12, r31
    88d0:	f2 e0       	ldi	r31, 0x02	; 2
    88d2:	df 06       	cpc	r13, r31
    88d4:	20 f0       	brcs	.+8      	; 0x88de <RxHDLC+0xa2>
    88d6:	cc 24       	eor	r12, r12
    88d8:	dd 24       	eor	r13, r13
    88da:	20 e0       	ldi	r18, 0x00	; 0
    88dc:	01 c0       	rjmp	.+2      	; 0x88e0 <RxHDLC+0xa4>
    88de:	2f ef       	ldi	r18, 0xFF	; 255
				{
					msgLength = 0;
					waitingForPacket = FALSE;
				}
			}
			if(lenRxHDLCBuf >= msgLength + 1) 
    88e0:	c6 01       	movw	r24, r12
    88e2:	01 96       	adiw	r24, 0x01	; 1
    88e4:	08 17       	cp	r16, r24
    88e6:	19 07       	cpc	r17, r25
    88e8:	78 f4       	brcc	.+30     	; 0x8908 <RxHDLC+0xcc>
    88ea:	0b c0       	rjmp	.+22     	; 0x8902 <RxHDLC+0xc6>
				escapedHDLC = FALSE;
			}
		}
		else
		{
			if(c == HDLC_SOF)
    88ec:	8e 37       	cpi	r24, 0x7E	; 126
    88ee:	41 f6       	brne	.-112    	; 0x8880 <RxHDLC+0x44>
			{
				rxInProgHDLC = TRUE;
				*pHDLCBuf = c;
    88f0:	f7 01       	movw	r30, r14
    88f2:	81 93       	st	Z+, r24
    88f4:	7f 01       	movw	r14, r30
				pHDLCBuf++;
				lenRxHDLCBuf++;
    88f6:	0f 5f       	subi	r16, 0xFF	; 255
    88f8:	1f 4f       	sbci	r17, 0xFF	; 255
    88fa:	ff ef       	ldi	r31, 0xFF	; 255
    88fc:	fa 83       	std	Y+2, r31	; 0x02
    88fe:	bb 24       	eor	r11, r11
    8900:	bf cf       	rjmp	.-130    	; 0x8880 <RxHDLC+0x44>
	uint16_t*	lenHDLCMsg = (uint16_t*)(pHDLCBuf + 1);
	BOOL waitingForPacket = TRUE;
	uint8_t err = 0;
	char c;

	while(waitingForPacket == TRUE)
    8902:	2f 3f       	cpi	r18, 0xFF	; 255
    8904:	09 f4       	brne	.+2      	; 0x8908 <RxHDLC+0xcc>
    8906:	bc cf       	rjmp	.-136    	; 0x8880 <RxHDLC+0x44>
				escapedHDLC = FALSE;
			}
		}
	}
	return lenRxHDLCBuf;
}
    8908:	c8 01       	movw	r24, r16
    890a:	0f 90       	pop	r0
    890c:	0f 90       	pop	r0
    890e:	cf 91       	pop	r28
    8910:	df 91       	pop	r29
    8912:	1f 91       	pop	r17
    8914:	0f 91       	pop	r16
    8916:	ff 90       	pop	r15
    8918:	ef 90       	pop	r14
    891a:	df 90       	pop	r13
    891c:	cf 90       	pop	r12
    891e:	bf 90       	pop	r11
    8920:	9f 90       	pop	r9
    8922:	8f 90       	pop	r8
    8924:	7f 90       	pop	r7
    8926:	6f 90       	pop	r6
    8928:	08 95       	ret

0000892a <PM_TxHDLC>:
	return;
}


BOOL PM_TxHDLC(uint8_t* pTxHDLCBuf, uint16_t activeTxLen, uint8_t port, uint16_t timeout)
{
    892a:	8f 92       	push	r8
    892c:	9f 92       	push	r9
    892e:	af 92       	push	r10
    8930:	bf 92       	push	r11
    8932:	cf 92       	push	r12
    8934:	df 92       	push	r13
    8936:	ef 92       	push	r14
    8938:	ff 92       	push	r15
    893a:	0f 93       	push	r16
    893c:	1f 93       	push	r17
    893e:	cf 93       	push	r28
    8940:	df 93       	push	r29
    8942:	ec 01       	movw	r28, r24
    8944:	5b 01       	movw	r10, r22
    8946:	d4 2e       	mov	r13, r20
    8948:	79 01       	movw	r14, r18
	uint8_t err;
	BOOL error = TRUE;
	static BOOL escaped[4] = {FALSE, FALSE, FALSE, FALSE};

	if((activeTxLen >0) && (activeTxLen < HDLC_MAX_LENGTH))
    894a:	cb 01       	movw	r24, r22
    894c:	01 97       	sbiw	r24, 0x01	; 1
    894e:	8f 52       	subi	r24, 0x2F	; 47
    8950:	92 40       	sbci	r25, 0x02	; 2
    8952:	08 f0       	brcs	.+2      	; 0x8956 <PM_TxHDLC+0x2c>
    8954:	51 c0       	rjmp	.+162    	; 0x89f8 <PM_TxHDLC+0xce>
	{
		error = FALSE;

		// --- Before starting, flush the buffers to ignore any earlier transmissions ---
		OSuartFlushBuffers(port, UART_ALL_BUFFERS);
    8956:	84 2f       	mov	r24, r20
    8958:	63 e0       	ldi	r22, 0x03	; 3
    895a:	0e 94 7a 31 	call	0x62f4	; 0x62f4 <OSuartFlushBuffers>

		if(commPortState.pmState[port] == PM_SMC_COMM)
    895e:	8d 2c       	mov	r8, r13
    8960:	99 24       	eor	r9, r9
    8962:	f4 01       	movw	r30, r8
    8964:	ea 56       	subi	r30, 0x6A	; 106
    8966:	f7 44       	sbci	r31, 0x47	; 71
    8968:	80 81       	ld	r24, Z
    896a:	82 30       	cpi	r24, 0x02	; 2
    896c:	99 f4       	brne	.+38     	; 0x8994 <PM_TxHDLC+0x6a>
    896e:	1a e0       	ldi	r17, 0x0A	; 10
    8970:	05 c0       	rjmp	.+10     	; 0x897c <PM_TxHDLC+0x52>
		{
			for (err = 10; err--; )
				OSuartPutCharWait(port, 0, timeout);
    8972:	8d 2d       	mov	r24, r13
    8974:	60 e0       	ldi	r22, 0x00	; 0
    8976:	a7 01       	movw	r20, r14
    8978:	0e 94 f3 31 	call	0x63e6	; 0x63e6 <OSuartPutCharWait>
		// --- Before starting, flush the buffers to ignore any earlier transmissions ---
		OSuartFlushBuffers(port, UART_ALL_BUFFERS);

		if(commPortState.pmState[port] == PM_SMC_COMM)
		{
			for (err = 10; err--; )
    897c:	11 50       	subi	r17, 0x01	; 1
    897e:	c8 f7       	brcc	.-14     	; 0x8972 <PM_TxHDLC+0x48>
				OSuartPutCharWait(port, 0, timeout);

			OSuartPutCharWait(port, 0x55, timeout);
    8980:	8d 2d       	mov	r24, r13
    8982:	65 e5       	ldi	r22, 0x55	; 85
    8984:	a7 01       	movw	r20, r14
    8986:	0e 94 f3 31 	call	0x63e6	; 0x63e6 <OSuartPutCharWait>
			OSuartPutCharWait(port, 0xAA, timeout);
    898a:	8d 2d       	mov	r24, r13
    898c:	6a ea       	ldi	r22, 0xAA	; 170
    898e:	a7 01       	movw	r20, r14
    8990:	0e 94 f3 31 	call	0x63e6	; 0x63e6 <OSuartPutCharWait>
		}
		err = OSuartPutCharWait(port, HDLC_SOF, timeout);
    8994:	8d 2d       	mov	r24, r13
    8996:	6e e7       	ldi	r22, 0x7E	; 126
    8998:	a7 01       	movw	r20, r14
    899a:	0e 94 f3 31 	call	0x63e6	; 0x63e6 <OSuartPutCharWait>
		if(err != OS_ERR_NONE)
    899e:	88 23       	and	r24, r24
    89a0:	29 f0       	breq	.+10     	; 0x89ac <PM_TxHDLC+0x82>
    89a2:	aa 24       	eor	r10, r10
    89a4:	bb 24       	eor	r11, r11
    89a6:	cc 24       	eor	r12, r12
    89a8:	ca 94       	dec	r12
    89aa:	29 c0       	rjmp	.+82     	; 0x89fe <PM_TxHDLC+0xd4>
    89ac:	cc 24       	eor	r12, r12
    89ae:	27 c0       	rjmp	.+78     	; 0x89fe <PM_TxHDLC+0xd4>
			error = TRUE;
		}

		while(activeTxLen > 0)
		{
			switch (*pTxHDLCBuf)
    89b0:	68 81       	ld	r22, Y
    89b2:	86 2f       	mov	r24, r22
    89b4:	8d 57       	subi	r24, 0x7D	; 125
    89b6:	82 30       	cpi	r24, 0x02	; 2
    89b8:	60 f4       	brcc	.+24     	; 0x89d2 <PM_TxHDLC+0xa8>
			{
				case HDLC_SOF:
				case HDLC_ESC:
				{
					err = OSuartPutCharWait(port, HDLC_ESC, timeout);
    89ba:	8d 2d       	mov	r24, r13
    89bc:	6d e7       	ldi	r22, 0x7D	; 125
    89be:	a7 01       	movw	r20, r14
    89c0:	0e 94 f3 31 	call	0x63e6	; 0x63e6 <OSuartPutCharWait>
    89c4:	98 2f       	mov	r25, r24
					*pTxHDLCBuf &= HDLC_TX_AND_MASK;
    89c6:	88 81       	ld	r24, Y
    89c8:	8f 7d       	andi	r24, 0xDF	; 223
    89ca:	88 83       	st	Y, r24

					escaped[port] = TRUE;
    89cc:	f8 01       	movw	r30, r16
    89ce:	90 82       	st	Z, r9
    89d0:	11 c0       	rjmp	.+34     	; 0x89f4 <PM_TxHDLC+0xca>
					break;
				}
				default:
				{
					err = OSuartPutCharWait(port, *pTxHDLCBuf, timeout);
    89d2:	8d 2d       	mov	r24, r13
    89d4:	a7 01       	movw	r20, r14
    89d6:	0e 94 f3 31 	call	0x63e6	; 0x63e6 <OSuartPutCharWait>
    89da:	98 2f       	mov	r25, r24
					if(escaped[port])
    89dc:	f8 01       	movw	r30, r16
    89de:	80 81       	ld	r24, Z
    89e0:	88 23       	and	r24, r24
    89e2:	21 f0       	breq	.+8      	; 0x89ec <PM_TxHDLC+0xc2>
					{
						*pTxHDLCBuf |= HDLC_RX_OR_MASK;
    89e4:	88 81       	ld	r24, Y
    89e6:	80 62       	ori	r24, 0x20	; 32
    89e8:	88 83       	st	Y, r24
						escaped[port] = FALSE;
    89ea:	10 82       	st	Z, r1
					}
					pTxHDLCBuf++;
    89ec:	21 96       	adiw	r28, 0x01	; 1
					activeTxLen--;
    89ee:	08 94       	sec
    89f0:	a1 08       	sbc	r10, r1
    89f2:	b1 08       	sbc	r11, r1
					break;
				}
			}
			if(err != OS_ERR_NONE)
    89f4:	99 23       	and	r25, r25
    89f6:	41 f0       	breq	.+16     	; 0x8a08 <PM_TxHDLC+0xde>
    89f8:	cc 24       	eor	r12, r12
    89fa:	ca 94       	dec	r12
    89fc:	08 c0       	rjmp	.+16     	; 0x8a0e <PM_TxHDLC+0xe4>
    89fe:	84 01       	movw	r16, r8
    8a00:	04 56       	subi	r16, 0x64	; 100
    8a02:	18 4f       	sbci	r17, 0xF8	; 248
				case HDLC_ESC:
				{
					err = OSuartPutCharWait(port, HDLC_ESC, timeout);
					*pTxHDLCBuf &= HDLC_TX_AND_MASK;

					escaped[port] = TRUE;
    8a04:	99 24       	eor	r9, r9
    8a06:	9a 94       	dec	r9
		{
			activeTxLen = 0;
			error = TRUE;
		}

		while(activeTxLen > 0)
    8a08:	a1 14       	cp	r10, r1
    8a0a:	b1 04       	cpc	r11, r1
    8a0c:	89 f6       	brne	.-94     	; 0x89b0 <PM_TxHDLC+0x86>
				error = TRUE;
			}
		}
	}
	return error;
}
    8a0e:	8c 2d       	mov	r24, r12
    8a10:	df 91       	pop	r29
    8a12:	cf 91       	pop	r28
    8a14:	1f 91       	pop	r17
    8a16:	0f 91       	pop	r16
    8a18:	ff 90       	pop	r15
    8a1a:	ef 90       	pop	r14
    8a1c:	df 90       	pop	r13
    8a1e:	cf 90       	pop	r12
    8a20:	bf 90       	pop	r11
    8a22:	af 90       	pop	r10
    8a24:	9f 90       	pop	r9
    8a26:	8f 90       	pop	r8
    8a28:	08 95       	ret

00008a2a <PIBToPMGetID>:
}



void PIBToPMGetID(PLRI_COMM_WRAPPER pHeaders)
{
    8a2a:	5f 92       	push	r5
    8a2c:	6f 92       	push	r6
    8a2e:	7f 92       	push	r7
    8a30:	8f 92       	push	r8
    8a32:	9f 92       	push	r9
    8a34:	af 92       	push	r10
    8a36:	bf 92       	push	r11
    8a38:	cf 92       	push	r12
    8a3a:	df 92       	push	r13
    8a3c:	ef 92       	push	r14
    8a3e:	ff 92       	push	r15
    8a40:	0f 93       	push	r16
    8a42:	1f 93       	push	r17
    8a44:	cf 93       	push	r28
    8a46:	df 93       	push	r29
    8a48:	7c 01       	movw	r14, r24
	int i = 0;
	PPIB_ID_RESPONSE pIDReply = (PPIB_ID_RESPONSE)(rxPMData + 1);
    8a4a:	fe ef       	ldi	r31, 0xFE	; 254
    8a4c:	cf 2e       	mov	r12, r31
    8a4e:	f4 ea       	ldi	r31, 0xA4	; 164
    8a50:	df 2e       	mov	r13, r31
	BOOL error;
	uint16_t length;
	uint8_t loopcount = 0;
	commTargets = 0;
    8a52:	10 92 98 07 	sts	0x0798, r1
    8a56:	c1 e0       	ldi	r28, 0x01	; 1
    8a58:	d0 e0       	ldi	r29, 0x00	; 0
		{
		    uint8_t retryCt = 0;
		    while(retryCt < 2)
		    {
		    	retryCt++;
			    memset(rxPMData, 0, HDLC_MAX_LENGTH);
    8a5a:	36 01       	movw	r6, r12
    8a5c:	08 94       	sec
    8a5e:	61 08       	sbc	r6, r1
    8a60:	71 08       	sbc	r7, r1
    8a62:	e0 e3       	ldi	r30, 0x30	; 48
    8a64:	8e 2e       	mov	r8, r30
    8a66:	e2 e0       	ldi	r30, 0x02	; 2
    8a68:	9e 2e       	mov	r9, r30
					    if(ValidateCRC16((uint8_t*)pIDReply, pIDReply->headers.length, OTHER_CRC_START) == SUCCESS)
					    {
						    loopcount = 0;
							while((commTargets < MAX_COMM_TARGETS) && (pIDReply->idCount.totalNumber >= 1))
							{
								memcpy(&personalityIDs[commTargets], &pIDReply->idPacket[loopcount], sizeof(LRI_ID_PACKET));
    8a6a:	7a e2       	ldi	r23, 0x2A	; 42
    8a6c:	57 2e       	mov	r5, r23
							    personalityIDs[commTargets].port = i;
    8a6e:	6a e2       	ldi	r22, 0x2A	; 42
    8a70:	a6 2e       	mov	r10, r22
    8a72:	b1 2c       	mov	r11, r1
	uint8_t loopcount = 0;
	commTargets = 0;

	for(i=1; i<4; i++)
	{
		if((commPortState.pmState[i] == PM_STANDARD_COMM) || (commPortState.pmState[i] == PM_SMC_COMM))
    8a74:	fe 01       	movw	r30, r28
    8a76:	ea 56       	subi	r30, 0x6A	; 106
    8a78:	f7 44       	sbci	r31, 0x47	; 71
    8a7a:	80 81       	ld	r24, Z
    8a7c:	81 50       	subi	r24, 0x01	; 1
    8a7e:	82 30       	cpi	r24, 0x02	; 2
    8a80:	08 f0       	brcs	.+2      	; 0x8a84 <PIBToPMGetID+0x5a>
    8a82:	87 c0       	rjmp	.+270    	; 0x8b92 <PIBToPMGetID+0x168>
    8a84:	10 e0       	ldi	r17, 0x00	; 0
		{
		    uint8_t retryCt = 0;
		    while(retryCt < 2)
		    {
		    	retryCt++;
			    memset(rxPMData, 0, HDLC_MAX_LENGTH);
    8a86:	0c 2f       	mov	r16, r28
    8a88:	f3 01       	movw	r30, r6
    8a8a:	c4 01       	movw	r24, r8
    8a8c:	11 92       	st	Z+, r1
    8a8e:	01 97       	sbiw	r24, 0x01	; 1
    8a90:	e9 f7       	brne	.-6      	; 0x8a8c <PIBToPMGetID+0x62>
			    error = PM_TxHDLC((uint8_t*)pHeaders, pHeaders->length, i, 0);
    8a92:	f7 01       	movw	r30, r14
    8a94:	60 81       	ld	r22, Z
    8a96:	71 81       	ldd	r23, Z+1	; 0x01
    8a98:	c7 01       	movw	r24, r14
    8a9a:	40 2f       	mov	r20, r16
    8a9c:	20 e0       	ldi	r18, 0x00	; 0
    8a9e:	30 e0       	ldi	r19, 0x00	; 0
    8aa0:	0e 94 95 44 	call	0x892a	; 0x892a <PM_TxHDLC>
			    if(error == FALSE)
    8aa4:	88 23       	and	r24, r24
    8aa6:	09 f0       	breq	.+2      	; 0x8aaa <PIBToPMGetID+0x80>
    8aa8:	70 c0       	rjmp	.+224    	; 0x8b8a <PIBToPMGetID+0x160>
			    {
			    	length = PM_RxHDLC(rxPMData, i, 64);
    8aaa:	8d ef       	ldi	r24, 0xFD	; 253
    8aac:	94 ea       	ldi	r25, 0xA4	; 164
    8aae:	60 2f       	mov	r22, r16
    8ab0:	40 e4       	ldi	r20, 0x40	; 64
    8ab2:	50 e0       	ldi	r21, 0x00	; 0
    8ab4:	0e 94 99 43 	call	0x8732	; 0x8732 <PM_RxHDLC>
				    if(length > 0)
    8ab8:	89 2b       	or	r24, r25
    8aba:	09 f4       	brne	.+2      	; 0x8abe <PIBToPMGetID+0x94>
    8abc:	66 c0       	rjmp	.+204    	; 0x8b8a <PIBToPMGetID+0x160>
				    {
					    if(ValidateCRC16((uint8_t*)pIDReply, pIDReply->headers.length, OTHER_CRC_START) == SUCCESS)
    8abe:	80 91 fe a4 	lds	r24, 0xA4FE
    8ac2:	90 91 ff a4 	lds	r25, 0xA4FF
    8ac6:	ee ef       	ldi	r30, 0xFE	; 254
    8ac8:	f4 ea       	ldi	r31, 0xA4	; 164
    8aca:	20 e0       	ldi	r18, 0x00	; 0
    8acc:	30 e0       	ldi	r19, 0x00	; 0
	uint8_t retval = FALSE;
	uint16_t crc = initValue;
	uint16_t* pRxCRC = NULL;
	int i = 0;

	for(i = 0; i < (size - CRC16_SIZE); i++)
    8ace:	dc 01       	movw	r26, r24
    8ad0:	12 97       	sbiw	r26, 0x02	; 2
    8ad2:	ac 01       	movw	r20, r24
    8ad4:	44 50       	subi	r20, 0x04	; 4
    8ad6:	5b 45       	sbci	r21, 0x5B	; 91
    8ad8:	18 c0       	rjmp	.+48     	; 0x8b0a <PIBToPMGetID+0xe0>
    8ada:	81 91       	ld	r24, Z+
    8adc:	28 27       	eor	r18, r24
    8ade:	82 2f       	mov	r24, r18
    8ae0:	82 95       	swap	r24
    8ae2:	82 27       	eor	r24, r18
    8ae4:	08 2e       	mov	r0, r24
    8ae6:	86 95       	lsr	r24
    8ae8:	86 95       	lsr	r24
    8aea:	80 25       	eor	r24, r0
    8aec:	08 2e       	mov	r0, r24
    8aee:	86 95       	lsr	r24
    8af0:	80 25       	eor	r24, r0
    8af2:	87 70       	andi	r24, 0x07	; 7
    8af4:	02 2e       	mov	r0, r18
    8af6:	23 2f       	mov	r18, r19
    8af8:	86 95       	lsr	r24
    8afa:	07 94       	ror	r0
    8afc:	87 95       	ror	r24
    8afe:	30 2d       	mov	r19, r0
    8b00:	28 27       	eor	r18, r24
    8b02:	06 94       	lsr	r0
    8b04:	87 95       	ror	r24
    8b06:	30 25       	eor	r19, r0
    8b08:	28 27       	eor	r18, r24
    8b0a:	e4 17       	cp	r30, r20
    8b0c:	f5 07       	cpc	r31, r21
    8b0e:	29 f7       	brne	.-54     	; 0x8ada <PIBToPMGetID+0xb0>
		crc = _crc16_update(crc, *(pBuffer + i));
	}

	pRxCRC = (uint16_t*)(pBuffer + i);

	if(crc == *pRxCRC)
    8b10:	a2 50       	subi	r26, 0x02	; 2
    8b12:	bb 45       	sbci	r27, 0x5B	; 91
    8b14:	8d 91       	ld	r24, X+
    8b16:	9c 91       	ld	r25, X
    8b18:	28 17       	cp	r18, r24
    8b1a:	39 07       	cpc	r19, r25
    8b1c:	b1 f5       	brne	.+108    	; 0x8b8a <PIBToPMGetID+0x160>
    8b1e:	30 e0       	ldi	r19, 0x00	; 0
    8b20:	29 c0       	rjmp	.+82     	; 0x8b74 <PIBToPMGetID+0x14a>
					    if(ValidateCRC16((uint8_t*)pIDReply, pIDReply->headers.length, OTHER_CRC_START) == SUCCESS)
					    {
						    loopcount = 0;
							while((commTargets < MAX_COMM_TARGETS) && (pIDReply->idCount.totalNumber >= 1))
							{
								memcpy(&personalityIDs[commTargets], &pIDReply->idPacket[loopcount], sizeof(LRI_ID_PACKET));
    8b22:	25 9d       	mul	r18, r5
    8b24:	d0 01       	movw	r26, r0
    8b26:	11 24       	eor	r1, r1
    8b28:	35 9d       	mul	r19, r5
    8b2a:	f0 01       	movw	r30, r0
    8b2c:	11 24       	eor	r1, r1
    8b2e:	a2 51       	subi	r26, 0x12	; 18
    8b30:	b8 44       	sbci	r27, 0x48	; 72
    8b32:	e2 5f       	subi	r30, 0xF2	; 242
    8b34:	fa 45       	sbci	r31, 0x5A	; 90
    8b36:	8a e2       	ldi	r24, 0x2A	; 42
    8b38:	01 90       	ld	r0, Z+
    8b3a:	0d 92       	st	X+, r0
    8b3c:	81 50       	subi	r24, 0x01	; 1
    8b3e:	e1 f7       	brne	.-8      	; 0x8b38 <PIBToPMGetID+0x10e>
							    personalityIDs[commTargets].port = i;
    8b40:	20 91 98 07 	lds	r18, 0x0798
    8b44:	82 2f       	mov	r24, r18
    8b46:	90 e0       	ldi	r25, 0x00	; 0
    8b48:	8a 9d       	mul	r24, r10
    8b4a:	f0 01       	movw	r30, r0
    8b4c:	8b 9d       	mul	r24, r11
    8b4e:	f0 0d       	add	r31, r0
    8b50:	9a 9d       	mul	r25, r10
    8b52:	f0 0d       	add	r31, r0
    8b54:	11 24       	eor	r1, r1
    8b56:	e2 51       	subi	r30, 0x12	; 18
    8b58:	f8 44       	sbci	r31, 0x48	; 72
    8b5a:	04 87       	std	Z+12, r16	; 0x0c
								loopcount++;
    8b5c:	3f 5f       	subi	r19, 0xFF	; 255
							    commTargets++;
    8b5e:	2f 5f       	subi	r18, 0xFF	; 255
    8b60:	20 93 98 07 	sts	0x0798, r18
								pIDReply->idCount.totalNumber--;
    8b64:	80 91 0a a5 	lds	r24, 0xA50A
    8b68:	90 91 0b a5 	lds	r25, 0xA50B
    8b6c:	01 97       	sbiw	r24, 0x01	; 1
    8b6e:	f6 01       	movw	r30, r12
    8b70:	95 87       	std	Z+13, r25	; 0x0d
    8b72:	84 87       	std	Z+12, r24	; 0x0c
				    if(length > 0)
				    {
					    if(ValidateCRC16((uint8_t*)pIDReply, pIDReply->headers.length, OTHER_CRC_START) == SUCCESS)
					    {
						    loopcount = 0;
							while((commTargets < MAX_COMM_TARGETS) && (pIDReply->idCount.totalNumber >= 1))
    8b74:	20 91 98 07 	lds	r18, 0x0798
    8b78:	24 30       	cpi	r18, 0x04	; 4
    8b7a:	58 f4       	brcc	.+22     	; 0x8b92 <PIBToPMGetID+0x168>
    8b7c:	80 91 0a a5 	lds	r24, 0xA50A
    8b80:	90 91 0b a5 	lds	r25, 0xA50B
    8b84:	89 2b       	or	r24, r25
    8b86:	69 f6       	brne	.-102    	; 0x8b22 <PIBToPMGetID+0xf8>
    8b88:	04 c0       	rjmp	.+8      	; 0x8b92 <PIBToPMGetID+0x168>
		if((commPortState.pmState[i] == PM_STANDARD_COMM) || (commPortState.pmState[i] == PM_SMC_COMM))
		{
		    uint8_t retryCt = 0;
		    while(retryCt < 2)
		    {
		    	retryCt++;
    8b8a:	1f 5f       	subi	r17, 0xFF	; 255
	for(i=1; i<4; i++)
	{
		if((commPortState.pmState[i] == PM_STANDARD_COMM) || (commPortState.pmState[i] == PM_SMC_COMM))
		{
		    uint8_t retryCt = 0;
		    while(retryCt < 2)
    8b8c:	12 30       	cpi	r17, 0x02	; 2
    8b8e:	09 f0       	breq	.+2      	; 0x8b92 <PIBToPMGetID+0x168>
    8b90:	7b cf       	rjmp	.-266    	; 0x8a88 <PIBToPMGetID+0x5e>
	BOOL error;
	uint16_t length;
	uint8_t loopcount = 0;
	commTargets = 0;

	for(i=1; i<4; i++)
    8b92:	21 96       	adiw	r28, 0x01	; 1
    8b94:	c4 30       	cpi	r28, 0x04	; 4
    8b96:	d1 05       	cpc	r29, r1
    8b98:	09 f0       	breq	.+2      	; 0x8b9c <PIBToPMGetID+0x172>
    8b9a:	6c cf       	rjmp	.-296    	; 0x8a74 <PIBToPMGetID+0x4a>
		    }
	    }
	}

	return;
}
    8b9c:	df 91       	pop	r29
    8b9e:	cf 91       	pop	r28
    8ba0:	1f 91       	pop	r17
    8ba2:	0f 91       	pop	r16
    8ba4:	ff 90       	pop	r15
    8ba6:	ef 90       	pop	r14
    8ba8:	df 90       	pop	r13
    8baa:	cf 90       	pop	r12
    8bac:	bf 90       	pop	r11
    8bae:	af 90       	pop	r10
    8bb0:	9f 90       	pop	r9
    8bb2:	8f 90       	pop	r8
    8bb4:	7f 90       	pop	r7
    8bb6:	6f 90       	pop	r6
    8bb8:	5f 90       	pop	r5
    8bba:	08 95       	ret

00008bbc <PIBToPMBroadcastPacket>:
	return;
}

//Only support No ACK on this one currently
void PIBToPMBroadcastPacket(PLRI_COMM_WRAPPER pHeaders)
{
    8bbc:	0f 93       	push	r16
    8bbe:	1f 93       	push	r17
    8bc0:	cf 93       	push	r28
    8bc2:	df 93       	push	r29
    8bc4:	8c 01       	movw	r16, r24
    8bc6:	c1 e0       	ldi	r28, 0x01	; 1
    8bc8:	d0 e0       	ldi	r29, 0x00	; 0
	BOOL error;


	for(i=1; i<4; i++)
	{
		if((commPortState.pmState[i] == PM_STANDARD_COMM) || (commPortState.pmState[i] == PM_SMC_COMM))
    8bca:	fe 01       	movw	r30, r28
    8bcc:	ea 56       	subi	r30, 0x6A	; 106
    8bce:	f7 44       	sbci	r31, 0x47	; 71
    8bd0:	80 81       	ld	r24, Z
    8bd2:	81 50       	subi	r24, 0x01	; 1
    8bd4:	82 30       	cpi	r24, 0x02	; 2
    8bd6:	48 f4       	brcc	.+18     	; 0x8bea <PIBToPMBroadcastPacket+0x2e>
		    error = PM_TxHDLC((uint8_t*)pHeaders, pHeaders->length, i, 10);
    8bd8:	f8 01       	movw	r30, r16
    8bda:	60 81       	ld	r22, Z
    8bdc:	71 81       	ldd	r23, Z+1	; 0x01
    8bde:	c8 01       	movw	r24, r16
    8be0:	4c 2f       	mov	r20, r28
    8be2:	2a e0       	ldi	r18, 0x0A	; 10
    8be4:	30 e0       	ldi	r19, 0x00	; 0
    8be6:	0e 94 95 44 	call	0x892a	; 0x892a <PM_TxHDLC>

	int i = 0;
	BOOL error;


	for(i=1; i<4; i++)
    8bea:	21 96       	adiw	r28, 0x01	; 1
    8bec:	c4 30       	cpi	r28, 0x04	; 4
    8bee:	d1 05       	cpc	r29, r1
    8bf0:	61 f7       	brne	.-40     	; 0x8bca <PIBToPMBroadcastPacket+0xe>
		    error = PM_TxHDLC((uint8_t*)pHeaders, pHeaders->length, i, 10);
	}


	return;
}
    8bf2:	df 91       	pop	r29
    8bf4:	cf 91       	pop	r28
    8bf6:	1f 91       	pop	r17
    8bf8:	0f 91       	pop	r16
    8bfa:	08 95       	ret

00008bfc <TxHDLC>:
	return;
}


void TxHDLC(uint8_t* pTxHDLCBuf, uint16_t activeTxLen)
{
    8bfc:	ff 92       	push	r15
    8bfe:	0f 93       	push	r16
    8c00:	1f 93       	push	r17
    8c02:	cf 93       	push	r28
    8c04:	df 93       	push	r29
    8c06:	ec 01       	movw	r28, r24
    8c08:	8b 01       	movw	r16, r22
	static BOOL fltEscaped = FALSE;

	if((activeTxLen >0) && (activeTxLen < HDLC_MAX_LENGTH))
    8c0a:	cb 01       	movw	r24, r22
    8c0c:	01 97       	sbiw	r24, 0x01	; 1
    8c0e:	8f 52       	subi	r24, 0x2F	; 47
    8c10:	92 40       	sbci	r25, 0x02	; 2
    8c12:	70 f5       	brcc	.+92     	; 0x8c70 <TxHDLC+0x74>
	{
		OSuartPutCharWait(FLOAT_PORT, HDLC_SOF, INFINITE);
    8c14:	80 e0       	ldi	r24, 0x00	; 0
    8c16:	6e e7       	ldi	r22, 0x7E	; 126
    8c18:	40 e0       	ldi	r20, 0x00	; 0
    8c1a:	50 e0       	ldi	r21, 0x00	; 0
    8c1c:	0e 94 f3 31 	call	0x63e6	; 0x63e6 <OSuartPutCharWait>
				case HDLC_SOF:
				case HDLC_ESC:
				{
					OSuartPutCharWait(FLOAT_PORT, HDLC_ESC, INFINITE);
					*pTxHDLCBuf &= HDLC_TX_AND_MASK;
					fltEscaped = TRUE;
    8c20:	ff 24       	eor	r15, r15
    8c22:	fa 94       	dec	r15
    8c24:	22 c0       	rjmp	.+68     	; 0x8c6a <TxHDLC+0x6e>
	{
		OSuartPutCharWait(FLOAT_PORT, HDLC_SOF, INFINITE);

		while(activeTxLen > 0)
		{
			switch (*pTxHDLCBuf)
    8c26:	68 81       	ld	r22, Y
    8c28:	86 2f       	mov	r24, r22
    8c2a:	8d 57       	subi	r24, 0x7D	; 125
    8c2c:	82 30       	cpi	r24, 0x02	; 2
    8c2e:	60 f4       	brcc	.+24     	; 0x8c48 <TxHDLC+0x4c>
			{
				case HDLC_SOF:
				case HDLC_ESC:
				{
					OSuartPutCharWait(FLOAT_PORT, HDLC_ESC, INFINITE);
    8c30:	80 e0       	ldi	r24, 0x00	; 0
    8c32:	6d e7       	ldi	r22, 0x7D	; 125
    8c34:	40 e0       	ldi	r20, 0x00	; 0
    8c36:	50 e0       	ldi	r21, 0x00	; 0
    8c38:	0e 94 f3 31 	call	0x63e6	; 0x63e6 <OSuartPutCharWait>
					*pTxHDLCBuf &= HDLC_TX_AND_MASK;
    8c3c:	88 81       	ld	r24, Y
    8c3e:	8f 7d       	andi	r24, 0xDF	; 223
    8c40:	88 83       	st	Y, r24
					fltEscaped = TRUE;
    8c42:	f0 92 a0 07 	sts	0x07A0, r15
    8c46:	11 c0       	rjmp	.+34     	; 0x8c6a <TxHDLC+0x6e>
					break;
				}
				default:
				{
					OSuartPutCharWait(FLOAT_PORT, *pTxHDLCBuf, INFINITE);
    8c48:	80 e0       	ldi	r24, 0x00	; 0
    8c4a:	40 e0       	ldi	r20, 0x00	; 0
    8c4c:	50 e0       	ldi	r21, 0x00	; 0
    8c4e:	0e 94 f3 31 	call	0x63e6	; 0x63e6 <OSuartPutCharWait>
					if(fltEscaped)
    8c52:	80 91 a0 07 	lds	r24, 0x07A0
    8c56:	88 23       	and	r24, r24
    8c58:	29 f0       	breq	.+10     	; 0x8c64 <TxHDLC+0x68>
					{
						*pTxHDLCBuf |= HDLC_RX_OR_MASK;
    8c5a:	88 81       	ld	r24, Y
    8c5c:	80 62       	ori	r24, 0x20	; 32
    8c5e:	88 83       	st	Y, r24
						fltEscaped = FALSE;
    8c60:	10 92 a0 07 	sts	0x07A0, r1
					}
					pTxHDLCBuf++;
    8c64:	21 96       	adiw	r28, 0x01	; 1
					activeTxLen--;
    8c66:	01 50       	subi	r16, 0x01	; 1
    8c68:	10 40       	sbci	r17, 0x00	; 0

	if((activeTxLen >0) && (activeTxLen < HDLC_MAX_LENGTH))
	{
		OSuartPutCharWait(FLOAT_PORT, HDLC_SOF, INFINITE);

		while(activeTxLen > 0)
    8c6a:	01 15       	cp	r16, r1
    8c6c:	11 05       	cpc	r17, r1
    8c6e:	d9 f6       	brne	.-74     	; 0x8c26 <TxHDLC+0x2a>
				}
			}
		}
	}
	return;
}
    8c70:	df 91       	pop	r29
    8c72:	cf 91       	pop	r28
    8c74:	1f 91       	pop	r17
    8c76:	0f 91       	pop	r16
    8c78:	ff 90       	pop	r15
    8c7a:	08 95       	ret

00008c7c <ConsoleInput>:

	return retval;
}

void ConsoleInput(PPYLD_MGR_FILE_RX_BUFFER pHeaders)
{
    8c7c:	ef 92       	push	r14
    8c7e:	ff 92       	push	r15
    8c80:	0f 93       	push	r16
    8c82:	1f 93       	push	r17
    8c84:	cf 93       	push	r28
    8c86:	df 93       	push	r29
    8c88:	ec 01       	movw	r28, r24
	BOOL proceed = TRUE;
	uint8_t myTaskID = (pHeaders->wrapper.destination & 0x00FF);
    8c8a:	ea 80       	ldd	r14, Y+2	; 0x02
    8c8c:	fb 80       	ldd	r15, Y+3	; 0x03
	uint8_t myBoardID = (pHeaders->wrapper.destination & 0xFF00) >> 8;
	uint8_t nakType = 0;
	
	sprintf_P(dbgMsg, PSTR("Processing Console Input...."));
    8c8e:	00 d0       	rcall	.+0      	; 0x8c90 <ConsoleInput+0x14>
    8c90:	0f 92       	push	r0
    8c92:	03 ef       	ldi	r16, 0xF3	; 243
    8c94:	18 e1       	ldi	r17, 0x18	; 24
    8c96:	ad b7       	in	r26, 0x3d	; 61
    8c98:	be b7       	in	r27, 0x3e	; 62
    8c9a:	12 96       	adiw	r26, 0x02	; 2
    8c9c:	1c 93       	st	X, r17
    8c9e:	0e 93       	st	-X, r16
    8ca0:	11 97       	sbiw	r26, 0x01	; 1
    8ca2:	82 ec       	ldi	r24, 0xC2	; 194
    8ca4:	94 e0       	ldi	r25, 0x04	; 4
    8ca6:	14 96       	adiw	r26, 0x04	; 4
    8ca8:	9c 93       	st	X, r25
    8caa:	8e 93       	st	-X, r24
    8cac:	13 97       	sbiw	r26, 0x03	; 3
    8cae:	0e 94 51 f1 	call	0x1e2a2	; 0x1e2a2 <sprintf_P>
	SEND_MSG;
			
	if((proceed == TRUE) && (pHeaders->consoleInput.dataLength >= MAX_FILE_SIZE_IN))
    8cb2:	0f 90       	pop	r0
    8cb4:	0f 90       	pop	r0
    8cb6:	0f 90       	pop	r0
    8cb8:	0f 90       	pop	r0
    8cba:	8a 8d       	ldd	r24, Y+26	; 0x1a
    8cbc:	9b 8d       	ldd	r25, Y+27	; 0x1b
    8cbe:	8f 3f       	cpi	r24, 0xFF	; 255
    8cc0:	91 05       	cpc	r25, r1
    8cc2:	09 f0       	breq	.+2      	; 0x8cc6 <ConsoleInput+0x4a>
    8cc4:	08 f4       	brcc	.+2      	; 0x8cc8 <ConsoleInput+0x4c>
    8cc6:	a1 c1       	rjmp	.+834    	; 0x900a <ConsoleInput+0x38e>
	{
		nakType = CONSOLE_RESPONSE_INVALID_CMD_LENGTH;	//Need new NAK type for Console
		proceed = FALSE;
		sprintf_P(dbgMsg, PSTR("Length too large")); SEND_MSG;
    8cc8:	00 d0       	rcall	.+0      	; 0x8cca <ConsoleInput+0x4e>
    8cca:	0f 92       	push	r0
    8ccc:	ed b7       	in	r30, 0x3d	; 61
    8cce:	fe b7       	in	r31, 0x3e	; 62
    8cd0:	12 83       	std	Z+2, r17	; 0x02
    8cd2:	01 83       	std	Z+1, r16	; 0x01
    8cd4:	81 eb       	ldi	r24, 0xB1	; 177
    8cd6:	94 e0       	ldi	r25, 0x04	; 4
    8cd8:	94 83       	std	Z+4, r25	; 0x04
    8cda:	83 83       	std	Z+3, r24	; 0x03
    8cdc:	0e 94 51 f1 	call	0x1e2a2	; 0x1e2a2 <sprintf_P>
    8ce0:	1e e1       	ldi	r17, 0x1E	; 30
    8ce2:	15 c0       	rjmp	.+42     	; 0x8d0e <ConsoleInput+0x92>
		sprintf_P(dbgMsg, PSTR("Length too small")); SEND_MSG;
	}

	if(proceed)
	{
		if((myBoardID != mainBoardID) && (myTaskID >= NUM_TASK_FILES))
    8ce4:	f3 e0       	ldi	r31, 0x03	; 3
    8ce6:	fe 15       	cp	r31, r14
    8ce8:	08 f0       	brcs	.+2      	; 0x8cec <ConsoleInput+0x70>
    8cea:	73 c0       	rjmp	.+230    	; 0x8dd2 <ConsoleInput+0x156>
		{
			nakType = CONSOLE_RESPONSE_UNKNOWN_DESTINATION;	//Need new NAK type for Console
			proceed = FALSE;
			sprintf_P(dbgMsg, PSTR("Unknown destination")); SEND_MSG;
    8cec:	00 d0       	rcall	.+0      	; 0x8cee <ConsoleInput+0x72>
    8cee:	0f 92       	push	r0
    8cf0:	ad b7       	in	r26, 0x3d	; 61
    8cf2:	be b7       	in	r27, 0x3e	; 62
    8cf4:	12 96       	adiw	r26, 0x02	; 2
    8cf6:	1c 93       	st	X, r17
    8cf8:	0e 93       	st	-X, r16
    8cfa:	11 97       	sbiw	r26, 0x01	; 1
    8cfc:	8d e9       	ldi	r24, 0x9D	; 157
    8cfe:	94 e0       	ldi	r25, 0x04	; 4
    8d00:	14 96       	adiw	r26, 0x04	; 4
    8d02:	9c 93       	st	X, r25
    8d04:	8e 93       	st	-X, r24
    8d06:	13 97       	sbiw	r26, 0x03	; 3
    8d08:	0e 94 51 f1 	call	0x1e2a2	; 0x1e2a2 <sprintf_P>
    8d0c:	1f e1       	ldi	r17, 0x1F	; 31
    8d0e:	0f 90       	pop	r0
    8d10:	0f 90       	pop	r0
    8d12:	0f 90       	pop	r0
    8d14:	0f 90       	pop	r0
		sprintf_P(dbgMsg, PSTR("Sending ACK to 0x%04x from 0x%04x"), pyldFileAcks.headers.destination, pyldFileAcks.headers.source); 
		SEND_MSG;
	}
	else
	{
		sprintf_P(dbgMsg, PSTR("Sending NAK")); SEND_MSG;
    8d16:	00 d0       	rcall	.+0      	; 0x8d18 <ConsoleInput+0x9c>
    8d18:	0f 92       	push	r0
    8d1a:	83 ef       	ldi	r24, 0xF3	; 243
    8d1c:	98 e1       	ldi	r25, 0x18	; 24
    8d1e:	ad b7       	in	r26, 0x3d	; 61
    8d20:	be b7       	in	r27, 0x3e	; 62
    8d22:	12 96       	adiw	r26, 0x02	; 2
    8d24:	9c 93       	st	X, r25
    8d26:	8e 93       	st	-X, r24
    8d28:	11 97       	sbiw	r26, 0x01	; 1
    8d2a:	8d e5       	ldi	r24, 0x5D	; 93
    8d2c:	94 e0       	ldi	r25, 0x04	; 4
    8d2e:	14 96       	adiw	r26, 0x04	; 4
    8d30:	9c 93       	st	X, r25
    8d32:	8e 93       	st	-X, r24
    8d34:	13 97       	sbiw	r26, 0x03	; 3
    8d36:	0e 94 51 f1 	call	0x1e2a2	; 0x1e2a2 <sprintf_P>
		pyldFileNaks.headers.destination = pHeaders->wrapper.source;
    8d3a:	8c 81       	ldd	r24, Y+4	; 0x04
    8d3c:	9d 81       	ldd	r25, Y+5	; 0x05
    8d3e:	90 93 e1 88 	sts	0x88E1, r25
    8d42:	80 93 e0 88 	sts	0x88E0, r24
		pyldFileNaks.headers.source = pHeaders->wrapper.destination;
    8d46:	8a 81       	ldd	r24, Y+2	; 0x02
    8d48:	9b 81       	ldd	r25, Y+3	; 0x03
    8d4a:	90 93 e3 88 	sts	0x88E3, r25
    8d4e:	80 93 e2 88 	sts	0x88E2, r24
		pyldFileNaks.headers.msgID = pHeaders->wrapper.msgID;
    8d52:	8e 81       	ldd	r24, Y+6	; 0x06
    8d54:	9f 81       	ldd	r25, Y+7	; 0x07
    8d56:	90 93 e5 88 	sts	0x88E5, r25
    8d5a:	80 93 e4 88 	sts	0x88E4, r24
		pyldFileNaks.headers.length = sizeof(LRI_COMM_WRAPPER) + sizeof(LRI_GENERIC_NAK) + sizeof(COMM_HEADER) + sizeof(NAK_FILE);
    8d5e:	89 e1       	ldi	r24, 0x19	; 25
    8d60:	90 e0       	ldi	r25, 0x00	; 0
    8d62:	90 93 df 88 	sts	0x88DF, r25
    8d66:	80 93 de 88 	sts	0x88DE, r24
		pyldFileNaks.headers.msgType = 0x04;
    8d6a:	84 e0       	ldi	r24, 0x04	; 4
    8d6c:	90 e0       	ldi	r25, 0x00	; 0
    8d6e:	90 93 e7 88 	sts	0x88E7, r25
    8d72:	80 93 e6 88 	sts	0x88E6, r24
		pyldFileNaks.nakInfo.originalCmd = pHeaders->wrapper.msgType;
    8d76:	88 85       	ldd	r24, Y+8	; 0x08
    8d78:	99 85       	ldd	r25, Y+9	; 0x09
    8d7a:	90 93 e9 88 	sts	0x88E9, r25
    8d7e:	80 93 e8 88 	sts	0x88E8, r24
		pyldFileNaks.nakInfo.nakSummary = 0;
    8d82:	10 92 ea 88 	sts	0x88EA, r1
		pyldFileNaks.toShoreheader.packetID = pHeaders->header.packetID;
    8d86:	8e 85       	ldd	r24, Y+14	; 0x0e
    8d88:	9f 85       	ldd	r25, Y+15	; 0x0f
    8d8a:	a8 89       	ldd	r26, Y+16	; 0x10
    8d8c:	b9 89       	ldd	r27, Y+17	; 0x11
    8d8e:	80 93 ec 88 	sts	0x88EC, r24
    8d92:	90 93 ed 88 	sts	0x88ED, r25
    8d96:	a0 93 ee 88 	sts	0x88EE, r26
    8d9a:	b0 93 ef 88 	sts	0x88EF, r27
		pyldFileNaks.toShoreheader.size = 3;
    8d9e:	83 e0       	ldi	r24, 0x03	; 3
    8da0:	90 e0       	ldi	r25, 0x00	; 0
    8da2:	90 93 f1 88 	sts	0x88F1, r25
    8da6:	80 93 f0 88 	sts	0x88F0, r24
		pyldFileNaks.toShoreheader.type = 0x26;
    8daa:	86 e2       	ldi	r24, 0x26	; 38
    8dac:	80 93 eb 88 	sts	0x88EB, r24
		pyldFileNaks.nakFile.count = 1;
    8db0:	81 e0       	ldi	r24, 0x01	; 1
    8db2:	90 e0       	ldi	r25, 0x00	; 0
    8db4:	90 93 f3 88 	sts	0x88F3, r25
    8db8:	80 93 f2 88 	sts	0x88F2, r24
		pyldFileNaks.nakFile.result = nakType;
    8dbc:	10 93 f4 88 	sts	0x88F4, r17
		pyldFileNaks.nakFile.crc = CalculateCRC16((uint8_t*) &pyldFileAcks, sizeof(LRI_COMM_WRAPPER) + sizeof(LRI_GENERIC_NAK) + sizeof(COMM_HEADER) + sizeof(NAK_FILE) - CRC16_SIZE, OTHER_CRC_START);
    8dc0:	e0 e0       	ldi	r30, 0x00	; 0
    8dc2:	f8 e8       	ldi	r31, 0x88	; 136
    8dc4:	20 e0       	ldi	r18, 0x00	; 0
    8dc6:	30 e0       	ldi	r19, 0x00	; 0
    8dc8:	0f 90       	pop	r0
    8dca:	0f 90       	pop	r0
    8dcc:	0f 90       	pop	r0
    8dce:	0f 90       	pop	r0
    8dd0:	f4 c0       	rjmp	.+488    	; 0x8fba <ConsoleInput+0x33e>
		}
	}

	if(proceed)
	{
		if(consoleAvailable[myTaskID] == TRUE)
    8dd2:	4e 2d       	mov	r20, r14
    8dd4:	50 e0       	ldi	r21, 0x00	; 0
    8dd6:	8a 01       	movw	r16, r20
    8dd8:	03 57       	subi	r16, 0x73	; 115
    8dda:	1e 45       	sbci	r17, 0x5E	; 94
    8ddc:	f8 01       	movw	r30, r16
    8dde:	80 81       	ld	r24, Z
    8de0:	8f 3f       	cpi	r24, 0xFF	; 255
    8de2:	a1 f4       	brne	.+40     	; 0x8e0c <ConsoleInput+0x190>
		{
			nakType = NAKDISP_DATA;
			proceed = FALSE;
			nakType = NAKDISP_TOO_MANY_COMMANDS;
			proceed = FALSE;
			sprintf_P(dbgMsg, PSTR("Too many commands")); SEND_MSG;
    8de4:	00 d0       	rcall	.+0      	; 0x8de6 <ConsoleInput+0x16a>
    8de6:	0f 92       	push	r0
    8de8:	83 ef       	ldi	r24, 0xF3	; 243
    8dea:	98 e1       	ldi	r25, 0x18	; 24
    8dec:	ad b7       	in	r26, 0x3d	; 61
    8dee:	be b7       	in	r27, 0x3e	; 62
    8df0:	12 96       	adiw	r26, 0x02	; 2
    8df2:	9c 93       	st	X, r25
    8df4:	8e 93       	st	-X, r24
    8df6:	11 97       	sbiw	r26, 0x01	; 1
    8df8:	8b e8       	ldi	r24, 0x8B	; 139
    8dfa:	94 e0       	ldi	r25, 0x04	; 4
    8dfc:	14 96       	adiw	r26, 0x04	; 4
    8dfe:	9c 93       	st	X, r25
    8e00:	8e 93       	st	-X, r24
    8e02:	13 97       	sbiw	r26, 0x03	; 3
    8e04:	0e 94 51 f1 	call	0x1e2a2	; 0x1e2a2 <sprintf_P>
    8e08:	11 e1       	ldi	r17, 0x11	; 17
    8e0a:	81 cf       	rjmp	.-254    	; 0x8d0e <ConsoleInput+0x92>
		}
	}
		
	if(proceed)
	{
		consoleIn[myTaskID].cmdSrcAddress = pHeaders->wrapper.source;
    8e0c:	89 e0       	ldi	r24, 0x09	; 9
    8e0e:	91 e0       	ldi	r25, 0x01	; 1
    8e10:	48 9f       	mul	r20, r24
    8e12:	90 01       	movw	r18, r0
    8e14:	49 9f       	mul	r20, r25
    8e16:	30 0d       	add	r19, r0
    8e18:	58 9f       	mul	r21, r24
    8e1a:	30 0d       	add	r19, r0
    8e1c:	11 24       	eor	r1, r1
    8e1e:	f9 01       	movw	r30, r18
    8e20:	e7 59       	subi	r30, 0x97	; 151
    8e22:	f2 46       	sbci	r31, 0x62	; 98
    8e24:	8c 81       	ldd	r24, Y+4	; 0x04
    8e26:	9d 81       	ldd	r25, Y+5	; 0x05
    8e28:	91 83       	std	Z+1, r25	; 0x01
    8e2a:	80 83       	st	Z, r24
		consoleIn[myTaskID].functionCode = pHeaders->consoleInput.function;
    8e2c:	89 8d       	ldd	r24, Y+25	; 0x19
    8e2e:	82 83       	std	Z+2, r24	; 0x02
		consoleIn[myTaskID].cmdSize = pHeaders->consoleInput.dataLength;
    8e30:	8a 8d       	ldd	r24, Y+26	; 0x1a
    8e32:	9b 8d       	ldd	r25, Y+27	; 0x1b
    8e34:	94 83       	std	Z+4, r25	; 0x04
    8e36:	83 83       	std	Z+3, r24	; 0x03
		consoleIn[myTaskID].id = pHeaders->header.packetID;
    8e38:	8e 85       	ldd	r24, Y+14	; 0x0e
    8e3a:	9f 85       	ldd	r25, Y+15	; 0x0f
    8e3c:	a8 89       	ldd	r26, Y+16	; 0x10
    8e3e:	b9 89       	ldd	r27, Y+17	; 0x11
    8e40:	85 83       	std	Z+5, r24	; 0x05
    8e42:	96 83       	std	Z+6, r25	; 0x06
    8e44:	a7 83       	std	Z+7, r26	; 0x07
    8e46:	b0 87       	std	Z+8, r27	; 0x08
		memset(consoleIn[myTaskID].cmd, 0, 256);
    8e48:	2e 58       	subi	r18, 0x8E	; 142
    8e4a:	32 46       	sbci	r19, 0x62	; 98
    8e4c:	80 e0       	ldi	r24, 0x00	; 0
    8e4e:	91 e0       	ldi	r25, 0x01	; 1
    8e50:	f9 01       	movw	r30, r18
    8e52:	ac 01       	movw	r20, r24
    8e54:	11 92       	st	Z+, r1
    8e56:	41 50       	subi	r20, 0x01	; 1
    8e58:	50 40       	sbci	r21, 0x00	; 0
    8e5a:	e1 f7       	brne	.-8      	; 0x8e54 <ConsoleInput+0x1d8>
		memcpy(consoleIn[myTaskID].cmd, pHeaders->consoleInput.consoleData, pHeaders->consoleInput.dataLength);
    8e5c:	fe 01       	movw	r30, r28
    8e5e:	7c 96       	adiw	r30, 0x1c	; 28
    8e60:	4a 8d       	ldd	r20, Y+26	; 0x1a
    8e62:	5b 8d       	ldd	r21, Y+27	; 0x1b
    8e64:	c9 01       	movw	r24, r18
    8e66:	bf 01       	movw	r22, r30
    8e68:	0e 94 1c f0 	call	0x1e038	; 0x1e038 <memcpy>
		consoleAvailable[myTaskID] = TRUE;
    8e6c:	8f ef       	ldi	r24, 0xFF	; 255
    8e6e:	d8 01       	movw	r26, r16
    8e70:	8c 93       	st	X, r24
	}

	if(nakType == 0)
	{
		pyldFileAcks.headers.destination = pHeaders->wrapper.source;
    8e72:	8c 81       	ldd	r24, Y+4	; 0x04
    8e74:	9d 81       	ldd	r25, Y+5	; 0x05
    8e76:	90 93 03 88 	sts	0x8803, r25
    8e7a:	80 93 02 88 	sts	0x8802, r24
		pyldFileAcks.headers.source = pHeaders->wrapper.destination;
    8e7e:	8a 81       	ldd	r24, Y+2	; 0x02
    8e80:	9b 81       	ldd	r25, Y+3	; 0x03
    8e82:	90 93 05 88 	sts	0x8805, r25
    8e86:	80 93 04 88 	sts	0x8804, r24
		pyldFileAcks.headers.msgID = pHeaders->wrapper.msgID;
    8e8a:	8e 81       	ldd	r24, Y+6	; 0x06
    8e8c:	9f 81       	ldd	r25, Y+7	; 0x07
    8e8e:	90 93 07 88 	sts	0x8807, r25
    8e92:	80 93 06 88 	sts	0x8806, r24
		pyldFileAcks.headers.length = sizeof(LRI_COMM_WRAPPER) + sizeof(LRI_GENERIC_ACK) + sizeof(COMM_HEADER) + CRC16_SIZE;
    8e96:	85 e1       	ldi	r24, 0x15	; 21
    8e98:	90 e0       	ldi	r25, 0x00	; 0
    8e9a:	90 93 01 88 	sts	0x8801, r25
    8e9e:	80 93 00 88 	sts	0x8800, r24
		pyldFileAcks.headers.msgType = LRI_ACK;
    8ea2:	81 e0       	ldi	r24, 0x01	; 1
    8ea4:	90 e0       	ldi	r25, 0x00	; 0
    8ea6:	90 93 09 88 	sts	0x8809, r25
    8eaa:	80 93 08 88 	sts	0x8808, r24
		pyldFileAcks.ackInfo.originalCmd = pHeaders->wrapper.msgType;
    8eae:	88 85       	ldd	r24, Y+8	; 0x08
    8eb0:	99 85       	ldd	r25, Y+9	; 0x09
    8eb2:	90 93 0b 88 	sts	0x880B, r25
    8eb6:	80 93 0a 88 	sts	0x880A, r24
		pyldFileAcks.toShoreheader.packetID = pHeaders->header.packetID;
    8eba:	8e 85       	ldd	r24, Y+14	; 0x0e
    8ebc:	9f 85       	ldd	r25, Y+15	; 0x0f
    8ebe:	a8 89       	ldd	r26, Y+16	; 0x10
    8ec0:	b9 89       	ldd	r27, Y+17	; 0x11
    8ec2:	80 93 0d 88 	sts	0x880D, r24
    8ec6:	90 93 0e 88 	sts	0x880E, r25
    8eca:	a0 93 0f 88 	sts	0x880F, r26
    8ece:	b0 93 10 88 	sts	0x8810, r27
		pyldFileAcks.toShoreheader.size = 0;
    8ed2:	10 92 12 88 	sts	0x8812, r1
    8ed6:	10 92 11 88 	sts	0x8811, r1
		pyldFileAcks.toShoreheader.type = 0x13;
    8eda:	83 e1       	ldi	r24, 0x13	; 19
    8edc:	80 93 0c 88 	sts	0x880C, r24
		pyldFileAcks.crc = CalculateCRC16((uint8_t*) &pyldFileAcks, sizeof(LRI_COMM_WRAPPER) + sizeof(LRI_GENERIC_ACK) + sizeof(COMM_HEADER), OTHER_CRC_START);
    8ee0:	e0 e0       	ldi	r30, 0x00	; 0
    8ee2:	f8 e8       	ldi	r31, 0x88	; 136
    8ee4:	20 e0       	ldi	r18, 0x00	; 0
    8ee6:	30 e0       	ldi	r19, 0x00	; 0
    8ee8:	18 c0       	rjmp	.+48     	; 0x8f1a <ConsoleInput+0x29e>
    8eea:	81 91       	ld	r24, Z+
    8eec:	28 27       	eor	r18, r24
    8eee:	82 2f       	mov	r24, r18
    8ef0:	82 95       	swap	r24
    8ef2:	82 27       	eor	r24, r18
    8ef4:	08 2e       	mov	r0, r24
    8ef6:	86 95       	lsr	r24
    8ef8:	86 95       	lsr	r24
    8efa:	80 25       	eor	r24, r0
    8efc:	08 2e       	mov	r0, r24
    8efe:	86 95       	lsr	r24
    8f00:	80 25       	eor	r24, r0
    8f02:	87 70       	andi	r24, 0x07	; 7
    8f04:	02 2e       	mov	r0, r18
    8f06:	23 2f       	mov	r18, r19
    8f08:	86 95       	lsr	r24
    8f0a:	07 94       	ror	r0
    8f0c:	87 95       	ror	r24
    8f0e:	30 2d       	mov	r19, r0
    8f10:	28 27       	eor	r18, r24
    8f12:	06 94       	lsr	r0
    8f14:	87 95       	ror	r24
    8f16:	30 25       	eor	r19, r0
    8f18:	28 27       	eor	r18, r24
//---------------------------------------------------------------------------------
uint16_t CalculateCRC16(uint8_t* pBuffer, uint16_t size, uint16_t initValue)
{
	uint16_t crc = initValue;

	for(int i = 0; i < (size); i++)
    8f1a:	b8 e8       	ldi	r27, 0x88	; 136
    8f1c:	e3 31       	cpi	r30, 0x13	; 19
    8f1e:	fb 07       	cpc	r31, r27
    8f20:	21 f7       	brne	.-56     	; 0x8eea <ConsoleInput+0x26e>
		pyldFileAcks.headers.msgType = LRI_ACK;
		pyldFileAcks.ackInfo.originalCmd = pHeaders->wrapper.msgType;
		pyldFileAcks.toShoreheader.packetID = pHeaders->header.packetID;
		pyldFileAcks.toShoreheader.size = 0;
		pyldFileAcks.toShoreheader.type = 0x13;
		pyldFileAcks.crc = CalculateCRC16((uint8_t*) &pyldFileAcks, sizeof(LRI_COMM_WRAPPER) + sizeof(LRI_GENERIC_ACK) + sizeof(COMM_HEADER), OTHER_CRC_START);
    8f22:	31 83       	std	Z+1, r19	; 0x01
    8f24:	20 83       	st	Z, r18
		TxHDLC((uint8_t*)&pyldFileAcks, pyldFileAcks.headers.length);
    8f26:	cf 01       	movw	r24, r30
    8f28:	43 97       	sbiw	r24, 0x13	; 19
    8f2a:	65 e1       	ldi	r22, 0x15	; 21
    8f2c:	70 e0       	ldi	r23, 0x00	; 0
    8f2e:	0e 94 fe 45 	call	0x8bfc	; 0x8bfc <TxHDLC>
		
		sprintf_P(dbgMsg, PSTR("Sending ACK to 0x%04x from 0x%04x"), pyldFileAcks.headers.destination, pyldFileAcks.headers.source); 
    8f32:	ed b7       	in	r30, 0x3d	; 61
    8f34:	fe b7       	in	r31, 0x3e	; 62
    8f36:	38 97       	sbiw	r30, 0x08	; 8
    8f38:	0f b6       	in	r0, 0x3f	; 63
    8f3a:	f8 94       	cli
    8f3c:	fe bf       	out	0x3e, r31	; 62
    8f3e:	0f be       	out	0x3f, r0	; 63
    8f40:	ed bf       	out	0x3d, r30	; 61
    8f42:	31 96       	adiw	r30, 0x01	; 1
    8f44:	83 ef       	ldi	r24, 0xF3	; 243
    8f46:	98 e1       	ldi	r25, 0x18	; 24
    8f48:	ad b7       	in	r26, 0x3d	; 61
    8f4a:	be b7       	in	r27, 0x3e	; 62
    8f4c:	12 96       	adiw	r26, 0x02	; 2
    8f4e:	9c 93       	st	X, r25
    8f50:	8e 93       	st	-X, r24
    8f52:	11 97       	sbiw	r26, 0x01	; 1
    8f54:	89 e6       	ldi	r24, 0x69	; 105
    8f56:	94 e0       	ldi	r25, 0x04	; 4
    8f58:	93 83       	std	Z+3, r25	; 0x03
    8f5a:	82 83       	std	Z+2, r24	; 0x02
    8f5c:	80 91 02 88 	lds	r24, 0x8802
    8f60:	90 91 03 88 	lds	r25, 0x8803
    8f64:	95 83       	std	Z+5, r25	; 0x05
    8f66:	84 83       	std	Z+4, r24	; 0x04
    8f68:	80 91 04 88 	lds	r24, 0x8804
    8f6c:	90 91 05 88 	lds	r25, 0x8805
    8f70:	97 83       	std	Z+7, r25	; 0x07
    8f72:	86 83       	std	Z+6, r24	; 0x06
    8f74:	0e 94 51 f1 	call	0x1e2a2	; 0x1e2a2 <sprintf_P>
    8f78:	ed b7       	in	r30, 0x3d	; 61
    8f7a:	fe b7       	in	r31, 0x3e	; 62
    8f7c:	38 96       	adiw	r30, 0x08	; 8
    8f7e:	0f b6       	in	r0, 0x3f	; 63
    8f80:	f8 94       	cli
    8f82:	fe bf       	out	0x3e, r31	; 62
    8f84:	0f be       	out	0x3f, r0	; 63
    8f86:	ed bf       	out	0x3d, r30	; 61
    8f88:	38 c0       	rjmp	.+112    	; 0x8ffa <ConsoleInput+0x37e>
    8f8a:	81 91       	ld	r24, Z+
    8f8c:	28 27       	eor	r18, r24
    8f8e:	82 2f       	mov	r24, r18
    8f90:	82 95       	swap	r24
    8f92:	82 27       	eor	r24, r18
    8f94:	08 2e       	mov	r0, r24
    8f96:	86 95       	lsr	r24
    8f98:	86 95       	lsr	r24
    8f9a:	80 25       	eor	r24, r0
    8f9c:	08 2e       	mov	r0, r24
    8f9e:	86 95       	lsr	r24
    8fa0:	80 25       	eor	r24, r0
    8fa2:	87 70       	andi	r24, 0x07	; 7
    8fa4:	02 2e       	mov	r0, r18
    8fa6:	23 2f       	mov	r18, r19
    8fa8:	86 95       	lsr	r24
    8faa:	07 94       	ror	r0
    8fac:	87 95       	ror	r24
    8fae:	30 2d       	mov	r19, r0
    8fb0:	28 27       	eor	r18, r24
    8fb2:	06 94       	lsr	r0
    8fb4:	87 95       	ror	r24
    8fb6:	30 25       	eor	r19, r0
    8fb8:	28 27       	eor	r18, r24
//---------------------------------------------------------------------------------
uint16_t CalculateCRC16(uint8_t* pBuffer, uint16_t size, uint16_t initValue)
{
	uint16_t crc = initValue;

	for(int i = 0; i < (size); i++)
    8fba:	b8 e8       	ldi	r27, 0x88	; 136
    8fbc:	e7 31       	cpi	r30, 0x17	; 23
    8fbe:	fb 07       	cpc	r31, r27
    8fc0:	21 f7       	brne	.-56     	; 0x8f8a <ConsoleInput+0x30e>
		pyldFileNaks.toShoreheader.packetID = pHeaders->header.packetID;
		pyldFileNaks.toShoreheader.size = 3;
		pyldFileNaks.toShoreheader.type = 0x26;
		pyldFileNaks.nakFile.count = 1;
		pyldFileNaks.nakFile.result = nakType;
		pyldFileNaks.nakFile.crc = CalculateCRC16((uint8_t*) &pyldFileAcks, sizeof(LRI_COMM_WRAPPER) + sizeof(LRI_GENERIC_NAK) + sizeof(COMM_HEADER) + sizeof(NAK_FILE) - CRC16_SIZE, OTHER_CRC_START);
    8fc2:	30 93 f6 88 	sts	0x88F6, r19
    8fc6:	20 93 f5 88 	sts	0x88F5, r18
		TxHDLC((uint8_t*)&pyldFileAcks, pyldFileAcks.headers.length);
    8fca:	77 97       	sbiw	r30, 0x17	; 23
    8fcc:	60 81       	ld	r22, Z
    8fce:	71 81       	ldd	r23, Z+1	; 0x01
    8fd0:	cf 01       	movw	r24, r30
    8fd2:	0e 94 fe 45 	call	0x8bfc	; 0x8bfc <TxHDLC>

		sprintf_P(dbgMsg, PSTR("Sent NAK...")); SEND_MSG;
    8fd6:	00 d0       	rcall	.+0      	; 0x8fd8 <ConsoleInput+0x35c>
    8fd8:	0f 92       	push	r0
    8fda:	83 ef       	ldi	r24, 0xF3	; 243
    8fdc:	98 e1       	ldi	r25, 0x18	; 24
    8fde:	ed b7       	in	r30, 0x3d	; 61
    8fe0:	fe b7       	in	r31, 0x3e	; 62
    8fe2:	92 83       	std	Z+2, r25	; 0x02
    8fe4:	81 83       	std	Z+1, r24	; 0x01
    8fe6:	81 e5       	ldi	r24, 0x51	; 81
    8fe8:	94 e0       	ldi	r25, 0x04	; 4
    8fea:	94 83       	std	Z+4, r25	; 0x04
    8fec:	83 83       	std	Z+3, r24	; 0x03
    8fee:	0e 94 51 f1 	call	0x1e2a2	; 0x1e2a2 <sprintf_P>
    8ff2:	0f 90       	pop	r0
    8ff4:	0f 90       	pop	r0
    8ff6:	0f 90       	pop	r0
    8ff8:	0f 90       	pop	r0
	}

	if(myTaskID == 0)
    8ffa:	ee 20       	and	r14, r14
    8ffc:	61 f4       	brne	.+24     	; 0x9016 <ConsoleInput+0x39a>
	{
		//Process Console Command)
		FloatCommParseConsole(pHeaders);
    8ffe:	ce 01       	movw	r24, r28
    9000:	0e 94 bc 42 	call	0x8578	; 0x8578 <FloatCommParseConsole>
		consoleAvailable[myTaskID] = FALSE;
    9004:	10 92 8d a1 	sts	0xA18D, r1
    9008:	06 c0       	rjmp	.+12     	; 0x9016 <ConsoleInput+0x39a>
		sprintf_P(dbgMsg, PSTR("Length too small")); SEND_MSG;
	}

	if(proceed)
	{
		if((myBoardID != mainBoardID) && (myTaskID >= NUM_TASK_FILES))
    900a:	80 91 e6 03 	lds	r24, 0x03E6
    900e:	8f 15       	cp	r24, r15
    9010:	09 f0       	breq	.+2      	; 0x9014 <ConsoleInput+0x398>
    9012:	68 ce       	rjmp	.-816    	; 0x8ce4 <ConsoleInput+0x68>
    9014:	de ce       	rjmp	.-580    	; 0x8dd2 <ConsoleInput+0x156>
		//Process Console Command)
		FloatCommParseConsole(pHeaders);
		consoleAvailable[myTaskID] = FALSE;
	}

}
    9016:	df 91       	pop	r29
    9018:	cf 91       	pop	r28
    901a:	1f 91       	pop	r17
    901c:	0f 91       	pop	r16
    901e:	ff 90       	pop	r15
    9020:	ef 90       	pop	r14
    9022:	08 95       	ret

00009024 <SelectProgram>:
	}
	return;
}

void SelectProgram(PPYLD_MGR_FILE_RX_BUFFER pRX)
{
    9024:	1f 93       	push	r17
    9026:	cf 93       	push	r28
    9028:	df 93       	push	r29
    902a:	ec 01       	movw	r28, r24
	uint8_t retval = NAKSUMMARY_UNKNOWN_COMMAND;
	BOOL reboot = FALSE;
	
	if ((pRX->flagSendFwd == EXECUTE_CMD) 
    902c:	8a 85       	ldd	r24, Y+10	; 0x0a
    902e:	81 30       	cpi	r24, 0x01	; 1
    9030:	b9 f5       	brne	.+110    	; 0x90a0 <SelectProgram+0x7c>
    9032:	8b 85       	ldd	r24, Y+11	; 0x0b
    9034:	9c 85       	ldd	r25, Y+12	; 0x0c
    9036:	01 97       	sbiw	r24, 0x01	; 1
    9038:	b9 f5       	brne	.+110    	; 0x90a8 <SelectProgram+0x84>
	 && (pRX->cmdFormat == SHIP_SHORE_ICD))
	{
		if (pRX->header.type == RCV_CMD)
    903a:	8d 85       	ldd	r24, Y+13	; 0x0d
    903c:	8a 30       	cpi	r24, 0x0A	; 10
    903e:	a1 f5       	brne	.+104    	; 0x90a8 <SelectProgram+0x84>
		{
			if (pRX->type.fmtID == FMT_RCV_CMD)
    9040:	8c 89       	ldd	r24, Y+20	; 0x14
    9042:	80 31       	cpi	r24, 0x10	; 16
    9044:	89 f5       	brne	.+98     	; 0x90a8 <SelectProgram+0x84>
			{
				if (pRX->type.command == CMD_SELECT_PROGRAM)
    9046:	8d 89       	ldd	r24, Y+21	; 0x15
    9048:	9e 89       	ldd	r25, Y+22	; 0x16
    904a:	85 50       	subi	r24, 0x05	; 5
    904c:	90 49       	sbci	r25, 0x90	; 144
    904e:	61 f5       	brne	.+88     	; 0x90a8 <SelectProgram+0x84>
				{
					uint16_t storageController = (((uint16_t) pRX->command.field4) << 8) + pRX->command.field3;
    9050:	38 8d       	ldd	r19, Y+24	; 0x18
    9052:	5f 89       	ldd	r21, Y+23	; 0x17
					uint16_t numItems = (((uint16_t) pRX->command.field6) << 8) + pRX->command.field5;
					PFT_PROGSEL_ITEM pItems = (PFT_PROGSEL_ITEM) &pRX->command.field7;

					// TODO: verify the packet length for the number of items selected

					if ((numItems != 1)
    9054:	9a 8d       	ldd	r25, Y+26	; 0x1a
    9056:	80 e0       	ldi	r24, 0x00	; 0
    9058:	29 8d       	ldd	r18, Y+25	; 0x19
    905a:	82 0f       	add	r24, r18
    905c:	91 1d       	adc	r25, r1
    905e:	01 97       	sbiw	r24, 0x01	; 1
    9060:	29 f5       	brne	.+74     	; 0x90ac <SelectProgram+0x88>
			{
				if (pRX->type.command == CMD_SELECT_PROGRAM)
				{
					uint16_t storageController = (((uint16_t) pRX->command.field4) << 8) + pRX->command.field3;
					uint16_t numItems = (((uint16_t) pRX->command.field6) << 8) + pRX->command.field5;
					PFT_PROGSEL_ITEM pItems = (PFT_PROGSEL_ITEM) &pRX->command.field7;
    9062:	fe 01       	movw	r30, r28
    9064:	7b 96       	adiw	r30, 0x1b	; 27

					// TODO: verify the packet length for the number of items selected

					if ((numItems != 1)
    9066:	4b 8d       	ldd	r20, Y+27	; 0x1b
    9068:	43 30       	cpi	r20, 0x03	; 3
    906a:	00 f5       	brcc	.+64     	; 0x90ac <SelectProgram+0x88>
		{
			if (pRX->type.fmtID == FMT_RCV_CMD)
			{
				if (pRX->type.command == CMD_SELECT_PROGRAM)
				{
					uint16_t storageController = (((uint16_t) pRX->command.field4) << 8) + pRX->command.field3;
    906c:	93 2f       	mov	r25, r19
    906e:	80 e0       	ldi	r24, 0x00	; 0
    9070:	9c 01       	movw	r18, r24
    9072:	25 0f       	add	r18, r21
    9074:	31 1d       	adc	r19, r1
					uint16_t numItems = (((uint16_t) pRX->command.field6) << 8) + pRX->command.field5;
					PFT_PROGSEL_ITEM pItems = (PFT_PROGSEL_ITEM) &pRX->command.field7;

					// TODO: verify the packet length for the number of items selected

					if ((numItems != 1)
    9076:	80 91 e4 03 	lds	r24, 0x03E4
    907a:	90 91 e5 03 	lds	r25, 0x03E5
    907e:	28 17       	cp	r18, r24
    9080:	39 07       	cpc	r19, r25
    9082:	a1 f4       	brne	.+40     	; 0x90ac <SelectProgram+0x88>
    9084:	85 81       	ldd	r24, Z+5	; 0x05
    9086:	96 81       	ldd	r25, Z+6	; 0x06
    9088:	82 17       	cp	r24, r18
    908a:	93 07       	cpc	r25, r19
    908c:	79 f4       	brne	.+30     	; 0x90ac <SelectProgram+0x88>
					
						retval = NAKSUMMARY_INVALID_DATA;

					else
					{
						BootSelectProgram(pItems->operation == 1);
    908e:	80 e0       	ldi	r24, 0x00	; 0
    9090:	41 30       	cpi	r20, 0x01	; 1
    9092:	09 f4       	brne	.+2      	; 0x9096 <SelectProgram+0x72>
    9094:	81 e0       	ldi	r24, 0x01	; 1
    9096:	0e 94 3c eb 	call	0x1d678	; 0x1d678 <BootSelectProgram>
    909a:	4f ef       	ldi	r20, 0xFF	; 255
    909c:	1f ef       	ldi	r17, 0xFF	; 255
    909e:	08 c0       	rjmp	.+16     	; 0x90b0 <SelectProgram+0x8c>
					}
				}
			}
		}
	}
	else if (pRX->flagSendFwd == INFORMATION)
    90a0:	88 23       	and	r24, r24
    90a2:	11 f4       	brne	.+4      	; 0x90a8 <SelectProgram+0x84>
    90a4:	4f ef       	ldi	r20, 0xFF	; 255
    90a6:	03 c0       	rjmp	.+6      	; 0x90ae <SelectProgram+0x8a>
    90a8:	41 e0       	ldi	r20, 0x01	; 1
    90aa:	01 c0       	rjmp	.+2      	; 0x90ae <SelectProgram+0x8a>
    90ac:	42 e0       	ldi	r20, 0x02	; 2
    90ae:	10 e0       	ldi	r17, 0x00	; 0
		retval = SUCCESS;

	if (!(pRX->wrapper.msgType & 0x8000))
    90b0:	28 85       	ldd	r18, Y+8	; 0x08
    90b2:	39 85       	ldd	r19, Y+9	; 0x09
    90b4:	37 fd       	sbrc	r19, 7
    90b6:	67 c0       	rjmp	.+206    	; 0x9186 <SelectProgram+0x162>
	{
		PLRI_COMM_WRAPPER response = (PLRI_COMM_WRAPPER) txHDLCBuffer;
		response->source = mainTaskAddress;
    90b8:	80 91 e4 03 	lds	r24, 0x03E4
    90bc:	90 91 e5 03 	lds	r25, 0x03E5
    90c0:	90 93 32 a7 	sts	0xA732, r25
    90c4:	80 93 31 a7 	sts	0xA731, r24
		response->destination = pRX->wrapper.source;
    90c8:	8c 81       	ldd	r24, Y+4	; 0x04
    90ca:	9d 81       	ldd	r25, Y+5	; 0x05
    90cc:	90 93 30 a7 	sts	0xA730, r25
    90d0:	80 93 2f a7 	sts	0xA72F, r24
		response->msgID = pRX->wrapper.msgID;
    90d4:	8e 81       	ldd	r24, Y+6	; 0x06
    90d6:	9f 81       	ldd	r25, Y+7	; 0x07
    90d8:	90 93 34 a7 	sts	0xA734, r25
    90dc:	80 93 33 a7 	sts	0xA733, r24
		response->msgType = (retval == SUCCESS) ? LRI_ACK : LRI_NAK;
    90e0:	10 92 36 a7 	sts	0xA736, r1
    90e4:	10 92 35 a7 	sts	0xA735, r1
    90e8:	4f 3f       	cpi	r20, 0xFF	; 255
    90ea:	31 f4       	brne	.+12     	; 0x90f8 <SelectProgram+0xd4>
    90ec:	81 e0       	ldi	r24, 0x01	; 1
    90ee:	90 e0       	ldi	r25, 0x00	; 0
    90f0:	90 93 36 a7 	sts	0xA736, r25
    90f4:	80 93 35 a7 	sts	0xA735, r24
    90f8:	87 e3       	ldi	r24, 0x37	; 55
    90fa:	97 ea       	ldi	r25, 0xA7	; 167

		uint8_t* pStart = (uint8_t*) response;
		uint8_t* pEnd;
	
		if (retval == SUCCESS)
    90fc:	4f 3f       	cpi	r20, 0xFF	; 255
    90fe:	39 f4       	brne	.+14     	; 0x910e <SelectProgram+0xea>
		{
			PLRI_GENERIC_ACK pAck = (PLRI_GENERIC_ACK) &response[1];
			pAck->originalCmd = pRX->wrapper.msgType;
    9100:	30 93 38 a7 	sts	0xA738, r19
    9104:	20 93 37 a7 	sts	0xA737, r18
			pEnd = (uint8_t*) &pAck[1];
    9108:	dc 01       	movw	r26, r24
    910a:	12 96       	adiw	r26, 0x02	; 2
    910c:	08 c0       	rjmp	.+16     	; 0x911e <SelectProgram+0xfa>
		}
		else
		{
			PLRI_GENERIC_NAK pNak = (PLRI_GENERIC_NAK) &response[1];
			pNak->originalCmd = pRX->wrapper.msgType;
    910e:	30 93 38 a7 	sts	0xA738, r19
    9112:	20 93 37 a7 	sts	0xA737, r18
			pNak->nakSummary = retval;
    9116:	40 93 39 a7 	sts	0xA739, r20
			pEnd = (uint8_t*) &pNak[1];
    911a:	dc 01       	movw	r26, r24
    911c:	13 96       	adiw	r26, 0x03	; 3
		}

		response->length = pEnd-pStart+CRC16_SIZE;
    911e:	cd 01       	movw	r24, r26
    9120:	8b 52       	subi	r24, 0x2B	; 43
    9122:	97 4a       	sbci	r25, 0xA7	; 167
    9124:	90 93 2e a7 	sts	0xA72E, r25
    9128:	80 93 2d a7 	sts	0xA72D, r24
    912c:	ed e2       	ldi	r30, 0x2D	; 45
    912e:	f7 ea       	ldi	r31, 0xA7	; 167
    9130:	20 e0       	ldi	r18, 0x00	; 0
    9132:	30 e0       	ldi	r19, 0x00	; 0
//---------------------------------------------------------------------------------
uint16_t CalculateCRC16(uint8_t* pBuffer, uint16_t size, uint16_t initValue)
{
	uint16_t crc = initValue;

	for(int i = 0; i < (size); i++)
    9134:	ac 01       	movw	r20, r24
    9136:	45 5d       	subi	r20, 0xD5	; 213
    9138:	58 45       	sbci	r21, 0x58	; 88
    913a:	18 c0       	rjmp	.+48     	; 0x916c <SelectProgram+0x148>
    913c:	81 91       	ld	r24, Z+
    913e:	28 27       	eor	r18, r24
    9140:	82 2f       	mov	r24, r18
    9142:	82 95       	swap	r24
    9144:	82 27       	eor	r24, r18
    9146:	08 2e       	mov	r0, r24
    9148:	86 95       	lsr	r24
    914a:	86 95       	lsr	r24
    914c:	80 25       	eor	r24, r0
    914e:	08 2e       	mov	r0, r24
    9150:	86 95       	lsr	r24
    9152:	80 25       	eor	r24, r0
    9154:	87 70       	andi	r24, 0x07	; 7
    9156:	02 2e       	mov	r0, r18
    9158:	23 2f       	mov	r18, r19
    915a:	86 95       	lsr	r24
    915c:	07 94       	ror	r0
    915e:	87 95       	ror	r24
    9160:	30 2d       	mov	r19, r0
    9162:	28 27       	eor	r18, r24
    9164:	06 94       	lsr	r0
    9166:	87 95       	ror	r24
    9168:	30 25       	eor	r19, r0
    916a:	28 27       	eor	r18, r24
    916c:	e4 17       	cp	r30, r20
    916e:	f5 07       	cpc	r31, r21
    9170:	29 f7       	brne	.-54     	; 0x913c <SelectProgram+0x118>
			pNak->nakSummary = retval;
			pEnd = (uint8_t*) &pNak[1];
		}

		response->length = pEnd-pStart+CRC16_SIZE;
		*((uint16_t*) pEnd) = CalculateCRC16(pStart, response->length - CRC16_SIZE, OTHER_CRC_START);
    9172:	2d 93       	st	X+, r18
    9174:	3c 93       	st	X, r19
		TxHDLC(pStart, response->length);
    9176:	60 91 2d a7 	lds	r22, 0xA72D
    917a:	70 91 2e a7 	lds	r23, 0xA72E
    917e:	8d e2       	ldi	r24, 0x2D	; 45
    9180:	97 ea       	ldi	r25, 0xA7	; 167
    9182:	0e 94 fe 45 	call	0x8bfc	; 0x8bfc <TxHDLC>
	}

	if (reboot)
    9186:	11 23       	and	r17, r17
    9188:	19 f0       	breq	.+6      	; 0x9190 <SelectProgram+0x16c>
		BootRestart(TRUE);
    918a:	8f ef       	ldi	r24, 0xFF	; 255
    918c:	0e 94 58 eb 	call	0x1d6b0	; 0x1d6b0 <BootRestart>
}
    9190:	df 91       	pop	r29
    9192:	cf 91       	pop	r28
    9194:	1f 91       	pop	r17
    9196:	08 95       	ret

00009198 <FileGetDetail>:
	return;
}


void FileGetDetail(PPYLD_MGR_FILE_RX_BUFFER pHeaders)
{
    9198:	bf 92       	push	r11
    919a:	cf 92       	push	r12
    919c:	df 92       	push	r13
    919e:	ef 92       	push	r14
    91a0:	ff 92       	push	r15
    91a2:	0f 93       	push	r16
    91a4:	1f 93       	push	r17
    91a6:	df 93       	push	r29
    91a8:	cf 93       	push	r28
    91aa:	cd b7       	in	r28, 0x3d	; 61
    91ac:	de b7       	in	r29, 0x3e	; 62
    91ae:	2d 97       	sbiw	r28, 0x0d	; 13
    91b0:	0f b6       	in	r0, 0x3f	; 63
    91b2:	f8 94       	cli
    91b4:	de bf       	out	0x3e, r29	; 62
    91b6:	0f be       	out	0x3f, r0	; 63
    91b8:	cd bf       	out	0x3d, r28	; 61
    91ba:	8c 01       	movw	r16, r24
	char fileName[13] = {0};
    91bc:	fe 01       	movw	r30, r28
    91be:	31 96       	adiw	r30, 0x01	; 1
    91c0:	8d e0       	ldi	r24, 0x0D	; 13
    91c2:	df 01       	movw	r26, r30
    91c4:	1d 92       	st	X+, r1
    91c6:	8a 95       	dec	r24
    91c8:	e9 f7       	brne	.-6      	; 0x91c4 <FileGetDetail+0x2c>
	int nakType = 0;
	uint8_t fileAttributes = 0;
	uint32_t fileSize = 0;
	uint8_t retval = FAIL;

	uint8_t mytaskid = (pHeaders->wrapper.destination & 0x00FF);
    91ca:	d8 01       	movw	r26, r16
    91cc:	12 96       	adiw	r26, 0x02	; 2
    91ce:	bc 90       	ld	r11, X
    91d0:	12 97       	sbiw	r26, 0x02	; 2

	hyperionID = pHeaders->getFileList.fileID;
    91d2:	94 96       	adiw	r26, 0x24	; 36
    91d4:	cd 90       	ld	r12, X+
    91d6:	dd 90       	ld	r13, X+
    91d8:	ed 90       	ld	r14, X+
    91da:	fc 90       	ld	r15, X
    91dc:	97 97       	sbiw	r26, 0x27	; 39
	if(hyperionID != 0xFFFFFFFF)
    91de:	bf ef       	ldi	r27, 0xFF	; 255
    91e0:	cb 16       	cp	r12, r27
    91e2:	bf ef       	ldi	r27, 0xFF	; 255
    91e4:	db 06       	cpc	r13, r27
    91e6:	bf ef       	ldi	r27, 0xFF	; 255
    91e8:	eb 06       	cpc	r14, r27
    91ea:	bf ef       	ldi	r27, 0xFF	; 255
    91ec:	fb 06       	cpc	r15, r27
    91ee:	11 f0       	breq	.+4      	; 0x91f4 <FileGetDetail+0x5c>
	{
		//Get File Name from Hyperion ID
		if(fileName[0] == 0)
    91f0:	89 81       	ldd	r24, Y+1	; 0x01
    91f2:	05 c0       	rjmp	.+10     	; 0x91fe <FileGetDetail+0x66>
			proceed = FALSE;
		}
	}
	else
	{
		retval = PadToDot(pHeaders->getFileList.fileName, fileName);
    91f4:	c8 01       	movw	r24, r16
    91f6:	49 96       	adiw	r24, 0x19	; 25
    91f8:	bf 01       	movw	r22, r30
    91fa:	0e 94 e3 3e 	call	0x7dc6	; 0x7dc6 <PadToDot>

		if(retval == FAIL)
    91fe:	88 23       	and	r24, r24
    9200:	09 f0       	breq	.+2      	; 0x9204 <FileGetDetail+0x6c>
    9202:	a0 c0       	rjmp	.+320    	; 0x9344 <FileGetDetail+0x1ac>

		TxHDLC((uint8_t*)&pyldFileAcks, pyldFileAcks.headers.length);
	}
	else
	{
		pyldFileNaks.headers.destination = pHeaders->wrapper.source;
    9204:	f8 01       	movw	r30, r16
    9206:	84 81       	ldd	r24, Z+4	; 0x04
    9208:	95 81       	ldd	r25, Z+5	; 0x05
    920a:	90 93 e1 88 	sts	0x88E1, r25
    920e:	80 93 e0 88 	sts	0x88E0, r24
		pyldFileNaks.headers.source = pHeaders->wrapper.destination;
    9212:	82 81       	ldd	r24, Z+2	; 0x02
    9214:	93 81       	ldd	r25, Z+3	; 0x03
    9216:	90 93 e3 88 	sts	0x88E3, r25
    921a:	80 93 e2 88 	sts	0x88E2, r24
		pyldFileNaks.headers.msgID = pHeaders->wrapper.msgID;
    921e:	86 81       	ldd	r24, Z+6	; 0x06
    9220:	97 81       	ldd	r25, Z+7	; 0x07
    9222:	90 93 e5 88 	sts	0x88E5, r25
    9226:	80 93 e4 88 	sts	0x88E4, r24
		pyldFileNaks.headers.length = sizeof(LRI_COMM_WRAPPER) + sizeof(LRI_GENERIC_NAK) + sizeof(COMM_HEADER) + sizeof(NAK_FILE);
    922a:	89 e1       	ldi	r24, 0x19	; 25
    922c:	90 e0       	ldi	r25, 0x00	; 0
    922e:	90 93 df 88 	sts	0x88DF, r25
    9232:	80 93 de 88 	sts	0x88DE, r24
		pyldFileNaks.headers.msgType = 0x04;
    9236:	84 e0       	ldi	r24, 0x04	; 4
    9238:	90 e0       	ldi	r25, 0x00	; 0
    923a:	90 93 e7 88 	sts	0x88E7, r25
    923e:	80 93 e6 88 	sts	0x88E6, r24
		pyldFileNaks.nakInfo.originalCmd = pHeaders->wrapper.msgType;
    9242:	80 85       	ldd	r24, Z+8	; 0x08
    9244:	91 85       	ldd	r25, Z+9	; 0x09
    9246:	90 93 e9 88 	sts	0x88E9, r25
    924a:	80 93 e8 88 	sts	0x88E8, r24
		pyldFileNaks.nakInfo.nakSummary = 0;
    924e:	10 92 ea 88 	sts	0x88EA, r1
		pyldFileNaks.toShoreheader.packetID = pHeaders->header.packetID;
    9252:	86 85       	ldd	r24, Z+14	; 0x0e
    9254:	97 85       	ldd	r25, Z+15	; 0x0f
    9256:	a0 89       	ldd	r26, Z+16	; 0x10
    9258:	b1 89       	ldd	r27, Z+17	; 0x11
    925a:	80 93 ec 88 	sts	0x88EC, r24
    925e:	90 93 ed 88 	sts	0x88ED, r25
    9262:	a0 93 ee 88 	sts	0x88EE, r26
    9266:	b0 93 ef 88 	sts	0x88EF, r27
		pyldFileNaks.toShoreheader.size = 3;
    926a:	83 e0       	ldi	r24, 0x03	; 3
    926c:	90 e0       	ldi	r25, 0x00	; 0
    926e:	90 93 f1 88 	sts	0x88F1, r25
    9272:	80 93 f0 88 	sts	0x88F0, r24
		pyldFileNaks.toShoreheader.type = 0x24;
    9276:	84 e2       	ldi	r24, 0x24	; 36
    9278:	80 93 eb 88 	sts	0x88EB, r24
		pyldFileNaks.nakFile.count = 1;
    927c:	81 e0       	ldi	r24, 0x01	; 1
    927e:	90 e0       	ldi	r25, 0x00	; 0
    9280:	90 93 f3 88 	sts	0x88F3, r25
    9284:	80 93 f2 88 	sts	0x88F2, r24
		pyldFileNaks.nakFile.result = nakType;
    9288:	85 e0       	ldi	r24, 0x05	; 5
    928a:	80 93 f4 88 	sts	0x88F4, r24
		pyldFileNaks.nakFile.crc = CalculateCRC16((uint8_t*) &pyldFileAcks, sizeof(LRI_COMM_WRAPPER) + sizeof(LRI_GENERIC_NAK) + sizeof(COMM_HEADER) + sizeof(NAK_FILE) - CRC16_SIZE, OTHER_CRC_START);
    928e:	e0 e0       	ldi	r30, 0x00	; 0
    9290:	f8 e8       	ldi	r31, 0x88	; 136
    9292:	20 e0       	ldi	r18, 0x00	; 0
    9294:	30 e0       	ldi	r19, 0x00	; 0
    9296:	38 c0       	rjmp	.+112    	; 0x9308 <FileGetDetail+0x170>
    9298:	81 91       	ld	r24, Z+
    929a:	28 27       	eor	r18, r24
    929c:	82 2f       	mov	r24, r18
    929e:	82 95       	swap	r24
    92a0:	82 27       	eor	r24, r18
    92a2:	08 2e       	mov	r0, r24
    92a4:	86 95       	lsr	r24
    92a6:	86 95       	lsr	r24
    92a8:	80 25       	eor	r24, r0
    92aa:	08 2e       	mov	r0, r24
    92ac:	86 95       	lsr	r24
    92ae:	80 25       	eor	r24, r0
    92b0:	87 70       	andi	r24, 0x07	; 7
    92b2:	02 2e       	mov	r0, r18
    92b4:	23 2f       	mov	r18, r19
    92b6:	86 95       	lsr	r24
    92b8:	07 94       	ror	r0
    92ba:	87 95       	ror	r24
    92bc:	30 2d       	mov	r19, r0
    92be:	28 27       	eor	r18, r24
    92c0:	06 94       	lsr	r0
    92c2:	87 95       	ror	r24
    92c4:	30 25       	eor	r19, r0
    92c6:	28 27       	eor	r18, r24
//---------------------------------------------------------------------------------
uint16_t CalculateCRC16(uint8_t* pBuffer, uint16_t size, uint16_t initValue)
{
	uint16_t crc = initValue;

	for(int i = 0; i < (size); i++)
    92c8:	88 e8       	ldi	r24, 0x88	; 136
    92ca:	ee 32       	cpi	r30, 0x2E	; 46
    92cc:	f8 07       	cpc	r31, r24
    92ce:	21 f7       	brne	.-56     	; 0x9298 <FileGetDetail+0x100>
		pyldFileAcks.ackFileInfo.records[0].fileID = hyperionID;	//Hyperion ID needs to be filled in
		pyldFileAcks.ackFileInfo.records[0].fileSize = fileSize;	//File Size needs to be filled in

		DotToPad(pyldFileAcks.ackFileInfo.records[0].fileName, fileName);

		pyldFileAcks.ackFileInfo.crc = CalculateCRC16((uint8_t*) &pyldFileAcks, sizeof(LRI_COMM_WRAPPER) + sizeof(LRI_GENERIC_ACK) + sizeof(COMM_HEADER)+ sizeof(ACK_FILE_LIST) - CRC16_SIZE, OTHER_CRC_START);
    92d0:	31 83       	std	Z+1, r19	; 0x01
    92d2:	20 83       	st	Z, r18

		TxHDLC((uint8_t*)&pyldFileAcks, pyldFileAcks.headers.length);
    92d4:	be 97       	sbiw	r30, 0x2e	; 46
    92d6:	21 c0       	rjmp	.+66     	; 0x931a <FileGetDetail+0x182>
    92d8:	81 91       	ld	r24, Z+
    92da:	28 27       	eor	r18, r24
    92dc:	82 2f       	mov	r24, r18
    92de:	82 95       	swap	r24
    92e0:	82 27       	eor	r24, r18
    92e2:	08 2e       	mov	r0, r24
    92e4:	86 95       	lsr	r24
    92e6:	86 95       	lsr	r24
    92e8:	80 25       	eor	r24, r0
    92ea:	08 2e       	mov	r0, r24
    92ec:	86 95       	lsr	r24
    92ee:	80 25       	eor	r24, r0
    92f0:	87 70       	andi	r24, 0x07	; 7
    92f2:	02 2e       	mov	r0, r18
    92f4:	23 2f       	mov	r18, r19
    92f6:	86 95       	lsr	r24
    92f8:	07 94       	ror	r0
    92fa:	87 95       	ror	r24
    92fc:	30 2d       	mov	r19, r0
    92fe:	28 27       	eor	r18, r24
    9300:	06 94       	lsr	r0
    9302:	87 95       	ror	r24
    9304:	30 25       	eor	r19, r0
    9306:	28 27       	eor	r18, r24
//---------------------------------------------------------------------------------
uint16_t CalculateCRC16(uint8_t* pBuffer, uint16_t size, uint16_t initValue)
{
	uint16_t crc = initValue;

	for(int i = 0; i < (size); i++)
    9308:	a8 e8       	ldi	r26, 0x88	; 136
    930a:	e7 31       	cpi	r30, 0x17	; 23
    930c:	fa 07       	cpc	r31, r26
    930e:	21 f7       	brne	.-56     	; 0x92d8 <FileGetDetail+0x140>
		pyldFileNaks.toShoreheader.packetID = pHeaders->header.packetID;
		pyldFileNaks.toShoreheader.size = 3;
		pyldFileNaks.toShoreheader.type = 0x24;
		pyldFileNaks.nakFile.count = 1;
		pyldFileNaks.nakFile.result = nakType;
		pyldFileNaks.nakFile.crc = CalculateCRC16((uint8_t*) &pyldFileAcks, sizeof(LRI_COMM_WRAPPER) + sizeof(LRI_GENERIC_NAK) + sizeof(COMM_HEADER) + sizeof(NAK_FILE) - CRC16_SIZE, OTHER_CRC_START);
    9310:	30 93 f6 88 	sts	0x88F6, r19
    9314:	20 93 f5 88 	sts	0x88F5, r18
		TxHDLC((uint8_t*)&pyldFileAcks, pyldFileAcks.headers.length);
    9318:	77 97       	sbiw	r30, 0x17	; 23
    931a:	60 81       	ld	r22, Z
    931c:	71 81       	ldd	r23, Z+1	; 0x01
    931e:	cf 01       	movw	r24, r30
    9320:	0e 94 fe 45 	call	0x8bfc	; 0x8bfc <TxHDLC>
	}
	return;
}
    9324:	2d 96       	adiw	r28, 0x0d	; 13
    9326:	0f b6       	in	r0, 0x3f	; 63
    9328:	f8 94       	cli
    932a:	de bf       	out	0x3e, r29	; 62
    932c:	0f be       	out	0x3f, r0	; 63
    932e:	cd bf       	out	0x3d, r28	; 61
    9330:	cf 91       	pop	r28
    9332:	df 91       	pop	r29
    9334:	1f 91       	pop	r17
    9336:	0f 91       	pop	r16
    9338:	ff 90       	pop	r15
    933a:	ef 90       	pop	r14
    933c:	df 90       	pop	r13
    933e:	cf 90       	pop	r12
    9340:	bf 90       	pop	r11
    9342:	08 95       	ret
		}
	}

	if(proceed)
	{
		fileSize = fileOutSize[mytaskid];
    9344:	eb 2d       	mov	r30, r11
    9346:	f0 e0       	ldi	r31, 0x00	; 0
    9348:	ee 0f       	add	r30, r30
    934a:	ff 1f       	adc	r31, r31
    934c:	ef 5a       	subi	r30, 0xAF	; 175
    934e:	f2 46       	sbci	r31, 0x62	; 98
    9350:	20 81       	ld	r18, Z
    9352:	31 81       	ldd	r19, Z+1	; 0x01
    9354:	40 e0       	ldi	r20, 0x00	; 0
    9356:	50 e0       	ldi	r21, 0x00	; 0
	}

	//Return File information (size, etc.) -- need to expand to Detailed Ack
	if(nakType == 0)
	{
		pyldFileAcks.headers.destination = pHeaders->wrapper.source;
    9358:	f8 01       	movw	r30, r16
    935a:	84 81       	ldd	r24, Z+4	; 0x04
    935c:	95 81       	ldd	r25, Z+5	; 0x05
    935e:	90 93 03 88 	sts	0x8803, r25
    9362:	80 93 02 88 	sts	0x8802, r24
		pyldFileAcks.headers.source = pHeaders->wrapper.destination;
    9366:	82 81       	ldd	r24, Z+2	; 0x02
    9368:	93 81       	ldd	r25, Z+3	; 0x03
    936a:	90 93 05 88 	sts	0x8805, r25
    936e:	80 93 04 88 	sts	0x8804, r24
		pyldFileAcks.headers.msgID = pHeaders->wrapper.msgID;
    9372:	86 81       	ldd	r24, Z+6	; 0x06
    9374:	97 81       	ldd	r25, Z+7	; 0x07
    9376:	90 93 07 88 	sts	0x8807, r25
    937a:	80 93 06 88 	sts	0x8806, r24
		pyldFileAcks.headers.length = sizeof(LRI_COMM_WRAPPER) + sizeof(LRI_GENERIC_ACK) + sizeof(COMM_HEADER) + sizeof(ACK_FILE_LIST);
    937e:	80 e3       	ldi	r24, 0x30	; 48
    9380:	90 e0       	ldi	r25, 0x00	; 0
    9382:	90 93 01 88 	sts	0x8801, r25
    9386:	80 93 00 88 	sts	0x8800, r24
		pyldFileAcks.headers.msgType = LRI_ACK;		//0x05;
    938a:	61 e0       	ldi	r22, 0x01	; 1
    938c:	70 e0       	ldi	r23, 0x00	; 0
    938e:	70 93 09 88 	sts	0x8809, r23
    9392:	60 93 08 88 	sts	0x8808, r22
		pyldFileAcks.ackInfo.originalCmd = pHeaders->wrapper.msgType;
    9396:	80 85       	ldd	r24, Z+8	; 0x08
    9398:	91 85       	ldd	r25, Z+9	; 0x09
    939a:	90 93 0b 88 	sts	0x880B, r25
    939e:	80 93 0a 88 	sts	0x880A, r24
		pyldFileAcks.toShoreheader.packetID = pHeaders->header.packetID;
    93a2:	86 85       	ldd	r24, Z+14	; 0x0e
    93a4:	97 85       	ldd	r25, Z+15	; 0x0f
    93a6:	a0 89       	ldd	r26, Z+16	; 0x10
    93a8:	b1 89       	ldd	r27, Z+17	; 0x11
    93aa:	80 93 0d 88 	sts	0x880D, r24
    93ae:	90 93 0e 88 	sts	0x880E, r25
    93b2:	a0 93 0f 88 	sts	0x880F, r26
    93b6:	b0 93 10 88 	sts	0x8810, r27
		pyldFileAcks.toShoreheader.size = sizeof(ACK_FILE_LIST) - CRC16_SIZE;
    93ba:	8b e1       	ldi	r24, 0x1B	; 27
    93bc:	90 e0       	ldi	r25, 0x00	; 0
    93be:	90 93 12 88 	sts	0x8812, r25
    93c2:	80 93 11 88 	sts	0x8811, r24
		pyldFileAcks.toShoreheader.type = 0x31;
    93c6:	81 e3       	ldi	r24, 0x31	; 49
    93c8:	80 93 0c 88 	sts	0x880C, r24
		pyldFileAcks.ackFileInfo.common.lastReport = 0xFF;
    93cc:	8f ef       	ldi	r24, 0xFF	; 255
    93ce:	80 93 17 88 	sts	0x8817, r24
		pyldFileAcks.ackFileInfo.common.numFiles = 1;
    93d2:	70 93 19 88 	sts	0x8819, r23
    93d6:	60 93 18 88 	sts	0x8818, r22
		pyldFileAcks.ackFileInfo.common.offset = 0;
    93da:	10 92 16 88 	sts	0x8816, r1
    93de:	10 92 15 88 	sts	0x8815, r1
		pyldFileAcks.ackFileInfo.common.storageControllerAddress = pHeaders->getFileList.storageControllerAddress;
    93e2:	87 89       	ldd	r24, Z+23	; 0x17
    93e4:	90 8d       	ldd	r25, Z+24	; 0x18
    93e6:	90 93 14 88 	sts	0x8814, r25
    93ea:	80 93 13 88 	sts	0x8813, r24

		pyldFileAcks.ackFileInfo.records[0].fileAttributes = fileAttributes;		//File Attributes fneed to be filled in
    93ee:	10 92 2d 88 	sts	0x882D, r1
		pyldFileAcks.ackFileInfo.records[0].fileID = hyperionID;	//Hyperion ID needs to be filled in
    93f2:	c0 92 25 88 	sts	0x8825, r12
    93f6:	d0 92 26 88 	sts	0x8826, r13
    93fa:	e0 92 27 88 	sts	0x8827, r14
    93fe:	f0 92 28 88 	sts	0x8828, r15
		pyldFileAcks.ackFileInfo.records[0].fileSize = fileSize;	//File Size needs to be filled in
    9402:	20 93 29 88 	sts	0x8829, r18
    9406:	30 93 2a 88 	sts	0x882A, r19
    940a:	40 93 2b 88 	sts	0x882B, r20
    940e:	50 93 2c 88 	sts	0x882C, r21

		DotToPad(pyldFileAcks.ackFileInfo.records[0].fileName, fileName);
    9412:	8a e1       	ldi	r24, 0x1A	; 26
    9414:	98 e8       	ldi	r25, 0x88	; 136
    9416:	be 01       	movw	r22, r28
    9418:	6f 5f       	subi	r22, 0xFF	; 255
    941a:	7f 4f       	sbci	r23, 0xFF	; 255
    941c:	0e 94 87 3e 	call	0x7d0e	; 0x7d0e <DotToPad>

		pyldFileAcks.ackFileInfo.crc = CalculateCRC16((uint8_t*) &pyldFileAcks, sizeof(LRI_COMM_WRAPPER) + sizeof(LRI_GENERIC_ACK) + sizeof(COMM_HEADER)+ sizeof(ACK_FILE_LIST) - CRC16_SIZE, OTHER_CRC_START);
    9420:	e0 e0       	ldi	r30, 0x00	; 0
    9422:	f8 e8       	ldi	r31, 0x88	; 136
    9424:	20 e0       	ldi	r18, 0x00	; 0
    9426:	30 e0       	ldi	r19, 0x00	; 0
    9428:	4f cf       	rjmp	.-354    	; 0x92c8 <FileGetDetail+0x130>

0000942a <FileGetInfo>:
}



void FileGetInfo(PPYLD_MGR_FILE_RX_BUFFER pHeaders)
{
    942a:	cf 92       	push	r12
    942c:	df 92       	push	r13
    942e:	ff 92       	push	r15
    9430:	0f 93       	push	r16
    9432:	1f 93       	push	r17
    9434:	df 93       	push	r29
    9436:	cf 93       	push	r28
    9438:	cd b7       	in	r28, 0x3d	; 61
    943a:	de b7       	in	r29, 0x3e	; 62
    943c:	2d 97       	sbiw	r28, 0x0d	; 13
    943e:	0f b6       	in	r0, 0x3f	; 63
    9440:	f8 94       	cli
    9442:	de bf       	out	0x3e, r29	; 62
    9444:	0f be       	out	0x3f, r0	; 63
    9446:	cd bf       	out	0x3d, r28	; 61
    9448:	8c 01       	movw	r16, r24
	char fileName[13] = {0};
    944a:	6e 01       	movw	r12, r28
    944c:	08 94       	sec
    944e:	c1 1c       	adc	r12, r1
    9450:	d1 1c       	adc	r13, r1
    9452:	8d e0       	ldi	r24, 0x0D	; 13
    9454:	f6 01       	movw	r30, r12
    9456:	11 92       	st	Z+, r1
    9458:	8a 95       	dec	r24
    945a:	e9 f7       	brne	.-6      	; 0x9456 <FileGetInfo+0x2c>
	int nakType = 0;
	uint8_t fileAttributes = 0;
	uint32_t fileSize = 0;
	uint8_t retval = FAIL;

	uint8_t mytaskid = (pHeaders->wrapper.destination & 0x00FF);
    945c:	f8 01       	movw	r30, r16
    945e:	f2 80       	ldd	r15, Z+2	; 0x02
			proceed = FALSE;
		}
	}
	else
	{
		retval = PadToDot(pHeaders->getFileList.fileName, fileName);
    9460:	c8 01       	movw	r24, r16
    9462:	49 96       	adiw	r24, 0x19	; 25
    9464:	b6 01       	movw	r22, r12
    9466:	0e 94 e3 3e 	call	0x7dc6	; 0x7dc6 <PadToDot>
    946a:	f8 01       	movw	r30, r16
    946c:	64 81       	ldd	r22, Z+4	; 0x04
    946e:	75 81       	ldd	r23, Z+5	; 0x05
    9470:	a6 81       	ldd	r26, Z+6	; 0x06
    9472:	b7 81       	ldd	r27, Z+7	; 0x07
		if(retval == FAIL)
    9474:	88 23       	and	r24, r24
    9476:	09 f0       	breq	.+2      	; 0x947a <FileGetInfo+0x50>
    9478:	99 c0       	rjmp	.+306    	; 0x95ac <FileGetInfo+0x182>

		TxHDLC((uint8_t*)&pyldFileAcks, pyldFileAcks.headers.length);
	}
	else
	{
		pyldFileNaks.headers.destination = pHeaders->wrapper.source;
    947a:	70 93 e1 88 	sts	0x88E1, r23
    947e:	60 93 e0 88 	sts	0x88E0, r22
		pyldFileNaks.headers.source = pHeaders->wrapper.destination;
    9482:	82 81       	ldd	r24, Z+2	; 0x02
    9484:	93 81       	ldd	r25, Z+3	; 0x03
    9486:	90 93 e3 88 	sts	0x88E3, r25
    948a:	80 93 e2 88 	sts	0x88E2, r24
		pyldFileNaks.headers.msgID = pHeaders->wrapper.msgID;
    948e:	b0 93 e5 88 	sts	0x88E5, r27
    9492:	a0 93 e4 88 	sts	0x88E4, r26
		pyldFileNaks.headers.length = sizeof(LRI_COMM_WRAPPER) + sizeof(LRI_GENERIC_NAK) + sizeof(COMM_HEADER) + sizeof(NAK_FILE);
    9496:	89 e1       	ldi	r24, 0x19	; 25
    9498:	90 e0       	ldi	r25, 0x00	; 0
    949a:	90 93 df 88 	sts	0x88DF, r25
    949e:	80 93 de 88 	sts	0x88DE, r24
		pyldFileNaks.headers.msgType = 0x04;
    94a2:	84 e0       	ldi	r24, 0x04	; 4
    94a4:	90 e0       	ldi	r25, 0x00	; 0
    94a6:	90 93 e7 88 	sts	0x88E7, r25
    94aa:	80 93 e6 88 	sts	0x88E6, r24
		pyldFileNaks.nakInfo.originalCmd = pHeaders->wrapper.msgType;
    94ae:	80 85       	ldd	r24, Z+8	; 0x08
    94b0:	91 85       	ldd	r25, Z+9	; 0x09
    94b2:	90 93 e9 88 	sts	0x88E9, r25
    94b6:	80 93 e8 88 	sts	0x88E8, r24
		pyldFileNaks.nakInfo.nakSummary = 0;
    94ba:	10 92 ea 88 	sts	0x88EA, r1
		pyldFileNaks.toShoreheader.packetID = pHeaders->header.packetID;
    94be:	86 85       	ldd	r24, Z+14	; 0x0e
    94c0:	97 85       	ldd	r25, Z+15	; 0x0f
    94c2:	a0 89       	ldd	r26, Z+16	; 0x10
    94c4:	b1 89       	ldd	r27, Z+17	; 0x11
    94c6:	80 93 ec 88 	sts	0x88EC, r24
    94ca:	90 93 ed 88 	sts	0x88ED, r25
    94ce:	a0 93 ee 88 	sts	0x88EE, r26
    94d2:	b0 93 ef 88 	sts	0x88EF, r27
		pyldFileNaks.toShoreheader.size = 3;
    94d6:	83 e0       	ldi	r24, 0x03	; 3
    94d8:	90 e0       	ldi	r25, 0x00	; 0
    94da:	90 93 f1 88 	sts	0x88F1, r25
    94de:	80 93 f0 88 	sts	0x88F0, r24
		pyldFileNaks.toShoreheader.type = 0x24;
    94e2:	84 e2       	ldi	r24, 0x24	; 36
    94e4:	80 93 eb 88 	sts	0x88EB, r24
		pyldFileNaks.nakFile.count = 1;
    94e8:	81 e0       	ldi	r24, 0x01	; 1
    94ea:	90 e0       	ldi	r25, 0x00	; 0
    94ec:	90 93 f3 88 	sts	0x88F3, r25
    94f0:	80 93 f2 88 	sts	0x88F2, r24
		pyldFileNaks.nakFile.result = nakType;
    94f4:	85 e0       	ldi	r24, 0x05	; 5
    94f6:	80 93 f4 88 	sts	0x88F4, r24
		pyldFileNaks.nakFile.crc = CalculateCRC16((uint8_t*) &pyldFileAcks, sizeof(LRI_COMM_WRAPPER) + sizeof(LRI_GENERIC_NAK) + sizeof(COMM_HEADER) + sizeof(NAK_FILE) - CRC16_SIZE, OTHER_CRC_START);
    94fa:	e0 e0       	ldi	r30, 0x00	; 0
    94fc:	f8 e8       	ldi	r31, 0x88	; 136
    94fe:	20 e0       	ldi	r18, 0x00	; 0
    9500:	30 e0       	ldi	r19, 0x00	; 0
    9502:	38 c0       	rjmp	.+112    	; 0x9574 <FileGetInfo+0x14a>
    9504:	81 91       	ld	r24, Z+
    9506:	28 27       	eor	r18, r24
    9508:	82 2f       	mov	r24, r18
    950a:	82 95       	swap	r24
    950c:	82 27       	eor	r24, r18
    950e:	08 2e       	mov	r0, r24
    9510:	86 95       	lsr	r24
    9512:	86 95       	lsr	r24
    9514:	80 25       	eor	r24, r0
    9516:	08 2e       	mov	r0, r24
    9518:	86 95       	lsr	r24
    951a:	80 25       	eor	r24, r0
    951c:	87 70       	andi	r24, 0x07	; 7
    951e:	02 2e       	mov	r0, r18
    9520:	23 2f       	mov	r18, r19
    9522:	86 95       	lsr	r24
    9524:	07 94       	ror	r0
    9526:	87 95       	ror	r24
    9528:	30 2d       	mov	r19, r0
    952a:	28 27       	eor	r18, r24
    952c:	06 94       	lsr	r0
    952e:	87 95       	ror	r24
    9530:	30 25       	eor	r19, r0
    9532:	28 27       	eor	r18, r24
//---------------------------------------------------------------------------------
uint16_t CalculateCRC16(uint8_t* pBuffer, uint16_t size, uint16_t initValue)
{
	uint16_t crc = initValue;

	for(int i = 0; i < (size); i++)
    9534:	88 e8       	ldi	r24, 0x88	; 136
    9536:	ee 32       	cpi	r30, 0x2E	; 46
    9538:	f8 07       	cpc	r31, r24
    953a:	21 f7       	brne	.-56     	; 0x9504 <FileGetInfo+0xda>
		pyldFileAcks.ackFileInfo.records[0].fileID = hyperionID;	//Hyperion ID needs to be filled in
		pyldFileAcks.ackFileInfo.records[0].fileSize = fileSize;	//File Size needs to be filled in

		DotToPad(pyldFileAcks.ackFileInfo.records[0].fileName, fileName);

		pyldFileAcks.ackFileInfo.crc = CalculateCRC16((uint8_t*) &pyldFileAcks, sizeof(LRI_COMM_WRAPPER) + sizeof(LRI_GENERIC_ACK) + sizeof(COMM_HEADER)+ sizeof(ACK_FILE_LIST) - CRC16_SIZE, OTHER_CRC_START);
    953c:	31 83       	std	Z+1, r19	; 0x01
    953e:	20 83       	st	Z, r18

		TxHDLC((uint8_t*)&pyldFileAcks, pyldFileAcks.headers.length);
    9540:	be 97       	sbiw	r30, 0x2e	; 46
    9542:	21 c0       	rjmp	.+66     	; 0x9586 <FileGetInfo+0x15c>
    9544:	81 91       	ld	r24, Z+
    9546:	28 27       	eor	r18, r24
    9548:	82 2f       	mov	r24, r18
    954a:	82 95       	swap	r24
    954c:	82 27       	eor	r24, r18
    954e:	08 2e       	mov	r0, r24
    9550:	86 95       	lsr	r24
    9552:	86 95       	lsr	r24
    9554:	80 25       	eor	r24, r0
    9556:	08 2e       	mov	r0, r24
    9558:	86 95       	lsr	r24
    955a:	80 25       	eor	r24, r0
    955c:	87 70       	andi	r24, 0x07	; 7
    955e:	02 2e       	mov	r0, r18
    9560:	23 2f       	mov	r18, r19
    9562:	86 95       	lsr	r24
    9564:	07 94       	ror	r0
    9566:	87 95       	ror	r24
    9568:	30 2d       	mov	r19, r0
    956a:	28 27       	eor	r18, r24
    956c:	06 94       	lsr	r0
    956e:	87 95       	ror	r24
    9570:	30 25       	eor	r19, r0
    9572:	28 27       	eor	r18, r24
//---------------------------------------------------------------------------------
uint16_t CalculateCRC16(uint8_t* pBuffer, uint16_t size, uint16_t initValue)
{
	uint16_t crc = initValue;

	for(int i = 0; i < (size); i++)
    9574:	88 e8       	ldi	r24, 0x88	; 136
    9576:	e7 31       	cpi	r30, 0x17	; 23
    9578:	f8 07       	cpc	r31, r24
    957a:	21 f7       	brne	.-56     	; 0x9544 <FileGetInfo+0x11a>
		pyldFileNaks.toShoreheader.packetID = pHeaders->header.packetID;
		pyldFileNaks.toShoreheader.size = 3;
		pyldFileNaks.toShoreheader.type = 0x24;
		pyldFileNaks.nakFile.count = 1;
		pyldFileNaks.nakFile.result = nakType;
		pyldFileNaks.nakFile.crc = CalculateCRC16((uint8_t*) &pyldFileAcks, sizeof(LRI_COMM_WRAPPER) + sizeof(LRI_GENERIC_NAK) + sizeof(COMM_HEADER) + sizeof(NAK_FILE) - CRC16_SIZE, OTHER_CRC_START);
    957c:	30 93 f6 88 	sts	0x88F6, r19
    9580:	20 93 f5 88 	sts	0x88F5, r18
		TxHDLC((uint8_t*)&pyldFileAcks, pyldFileAcks.headers.length);
    9584:	77 97       	sbiw	r30, 0x17	; 23
    9586:	60 81       	ld	r22, Z
    9588:	71 81       	ldd	r23, Z+1	; 0x01
    958a:	cf 01       	movw	r24, r30
    958c:	0e 94 fe 45 	call	0x8bfc	; 0x8bfc <TxHDLC>
	}
	return;
}
    9590:	2d 96       	adiw	r28, 0x0d	; 13
    9592:	0f b6       	in	r0, 0x3f	; 63
    9594:	f8 94       	cli
    9596:	de bf       	out	0x3e, r29	; 62
    9598:	0f be       	out	0x3f, r0	; 63
    959a:	cd bf       	out	0x3d, r28	; 61
    959c:	cf 91       	pop	r28
    959e:	df 91       	pop	r29
    95a0:	1f 91       	pop	r17
    95a2:	0f 91       	pop	r16
    95a4:	ff 90       	pop	r15
    95a6:	df 90       	pop	r13
    95a8:	cf 90       	pop	r12
    95aa:	08 95       	ret
		}
	}

	if(proceed)
	{
		fileSize = fileOutSize[mytaskid];
    95ac:	ef 2d       	mov	r30, r15
    95ae:	f0 e0       	ldi	r31, 0x00	; 0
    95b0:	ee 0f       	add	r30, r30
    95b2:	ff 1f       	adc	r31, r31
    95b4:	ef 5a       	subi	r30, 0xAF	; 175
    95b6:	f2 46       	sbci	r31, 0x62	; 98
    95b8:	20 81       	ld	r18, Z
    95ba:	31 81       	ldd	r19, Z+1	; 0x01
    95bc:	40 e0       	ldi	r20, 0x00	; 0
    95be:	50 e0       	ldi	r21, 0x00	; 0
	}

	//Return File information (size, etc.)
	if(nakType == 0)
	{
		pyldFileAcks.headers.destination = pHeaders->wrapper.source;
    95c0:	70 93 03 88 	sts	0x8803, r23
    95c4:	60 93 02 88 	sts	0x8802, r22
		pyldFileAcks.headers.source = pHeaders->wrapper.destination;
    95c8:	f8 01       	movw	r30, r16
    95ca:	82 81       	ldd	r24, Z+2	; 0x02
    95cc:	93 81       	ldd	r25, Z+3	; 0x03
    95ce:	90 93 05 88 	sts	0x8805, r25
    95d2:	80 93 04 88 	sts	0x8804, r24
		pyldFileAcks.headers.msgID = pHeaders->wrapper.msgID;
    95d6:	b0 93 07 88 	sts	0x8807, r27
    95da:	a0 93 06 88 	sts	0x8806, r26
		pyldFileAcks.headers.length = sizeof(LRI_COMM_WRAPPER) + sizeof(LRI_GENERIC_ACK) + sizeof(COMM_HEADER) + sizeof(ACK_FILE_LIST);
    95de:	80 e3       	ldi	r24, 0x30	; 48
    95e0:	90 e0       	ldi	r25, 0x00	; 0
    95e2:	90 93 01 88 	sts	0x8801, r25
    95e6:	80 93 00 88 	sts	0x8800, r24
		pyldFileAcks.headers.msgType = LRI_ACK;		//0x05;
    95ea:	61 e0       	ldi	r22, 0x01	; 1
    95ec:	70 e0       	ldi	r23, 0x00	; 0
    95ee:	70 93 09 88 	sts	0x8809, r23
    95f2:	60 93 08 88 	sts	0x8808, r22
		pyldFileAcks.ackInfo.originalCmd = pHeaders->wrapper.msgType;
    95f6:	80 85       	ldd	r24, Z+8	; 0x08
    95f8:	91 85       	ldd	r25, Z+9	; 0x09
    95fa:	90 93 0b 88 	sts	0x880B, r25
    95fe:	80 93 0a 88 	sts	0x880A, r24
		pyldFileAcks.toShoreheader.packetID = pHeaders->header.packetID;
    9602:	86 85       	ldd	r24, Z+14	; 0x0e
    9604:	97 85       	ldd	r25, Z+15	; 0x0f
    9606:	a0 89       	ldd	r26, Z+16	; 0x10
    9608:	b1 89       	ldd	r27, Z+17	; 0x11
    960a:	80 93 0d 88 	sts	0x880D, r24
    960e:	90 93 0e 88 	sts	0x880E, r25
    9612:	a0 93 0f 88 	sts	0x880F, r26
    9616:	b0 93 10 88 	sts	0x8810, r27
		pyldFileAcks.toShoreheader.size = sizeof(ACK_FILE_LIST) - CRC16_SIZE;
    961a:	8b e1       	ldi	r24, 0x1B	; 27
    961c:	90 e0       	ldi	r25, 0x00	; 0
    961e:	90 93 12 88 	sts	0x8812, r25
    9622:	80 93 11 88 	sts	0x8811, r24
		pyldFileAcks.toShoreheader.type = 0x31;
    9626:	81 e3       	ldi	r24, 0x31	; 49
    9628:	80 93 0c 88 	sts	0x880C, r24
		pyldFileAcks.ackFileInfo.common.lastReport = 0xFF;
    962c:	8f ef       	ldi	r24, 0xFF	; 255
    962e:	80 93 17 88 	sts	0x8817, r24
		pyldFileAcks.ackFileInfo.common.numFiles = 1;
    9632:	70 93 19 88 	sts	0x8819, r23
    9636:	60 93 18 88 	sts	0x8818, r22
		pyldFileAcks.ackFileInfo.common.offset = 0;
    963a:	10 92 16 88 	sts	0x8816, r1
    963e:	10 92 15 88 	sts	0x8815, r1
		pyldFileAcks.ackFileInfo.common.storageControllerAddress = pHeaders->getFileList.storageControllerAddress;
    9642:	87 89       	ldd	r24, Z+23	; 0x17
    9644:	90 8d       	ldd	r25, Z+24	; 0x18
    9646:	90 93 14 88 	sts	0x8814, r25
    964a:	80 93 13 88 	sts	0x8813, r24

		pyldFileAcks.ackFileInfo.records[0].fileAttributes = fileAttributes;		//File Attributes fneed to be filled in
    964e:	10 92 2d 88 	sts	0x882D, r1
		pyldFileAcks.ackFileInfo.records[0].fileID = hyperionID;	//Hyperion ID needs to be filled in
    9652:	8f ef       	ldi	r24, 0xFF	; 255
    9654:	9f ef       	ldi	r25, 0xFF	; 255
    9656:	af ef       	ldi	r26, 0xFF	; 255
    9658:	bf ef       	ldi	r27, 0xFF	; 255
    965a:	80 93 25 88 	sts	0x8825, r24
    965e:	90 93 26 88 	sts	0x8826, r25
    9662:	a0 93 27 88 	sts	0x8827, r26
    9666:	b0 93 28 88 	sts	0x8828, r27
		pyldFileAcks.ackFileInfo.records[0].fileSize = fileSize;	//File Size needs to be filled in
    966a:	20 93 29 88 	sts	0x8829, r18
    966e:	30 93 2a 88 	sts	0x882A, r19
    9672:	40 93 2b 88 	sts	0x882B, r20
    9676:	50 93 2c 88 	sts	0x882C, r21

		DotToPad(pyldFileAcks.ackFileInfo.records[0].fileName, fileName);
    967a:	8a e1       	ldi	r24, 0x1A	; 26
    967c:	98 e8       	ldi	r25, 0x88	; 136
    967e:	b6 01       	movw	r22, r12
    9680:	0e 94 87 3e 	call	0x7d0e	; 0x7d0e <DotToPad>

		pyldFileAcks.ackFileInfo.crc = CalculateCRC16((uint8_t*) &pyldFileAcks, sizeof(LRI_COMM_WRAPPER) + sizeof(LRI_GENERIC_ACK) + sizeof(COMM_HEADER)+ sizeof(ACK_FILE_LIST) - CRC16_SIZE, OTHER_CRC_START);
    9684:	e0 e0       	ldi	r30, 0x00	; 0
    9686:	f8 e8       	ldi	r31, 0x88	; 136
    9688:	20 e0       	ldi	r18, 0x00	; 0
    968a:	30 e0       	ldi	r19, 0x00	; 0
    968c:	53 cf       	rjmp	.-346    	; 0x9534 <FileGetInfo+0x10a>

0000968e <FileReadBlock>:
	return;
}


void FileReadBlock(PPYLD_MGR_FILE_RX_BUFFER pHeaders)
{
    968e:	4f 92       	push	r4
    9690:	5f 92       	push	r5
    9692:	6f 92       	push	r6
    9694:	7f 92       	push	r7
    9696:	9f 92       	push	r9
    9698:	af 92       	push	r10
    969a:	bf 92       	push	r11
    969c:	cf 92       	push	r12
    969e:	df 92       	push	r13
    96a0:	ef 92       	push	r14
    96a2:	ff 92       	push	r15
    96a4:	0f 93       	push	r16
    96a6:	1f 93       	push	r17
    96a8:	df 93       	push	r29
    96aa:	cf 93       	push	r28
    96ac:	cd b7       	in	r28, 0x3d	; 61
    96ae:	de b7       	in	r29, 0x3e	; 62
    96b0:	2d 97       	sbiw	r28, 0x0d	; 13
    96b2:	0f b6       	in	r0, 0x3f	; 63
    96b4:	f8 94       	cli
    96b6:	de bf       	out	0x3e, r29	; 62
    96b8:	0f be       	out	0x3f, r0	; 63
    96ba:	cd bf       	out	0x3d, r28	; 61
    96bc:	7c 01       	movw	r14, r24
	char fileName[13] = {0};
    96be:	fe 01       	movw	r30, r28
    96c0:	31 96       	adiw	r30, 0x01	; 1
    96c2:	8d e0       	ldi	r24, 0x0D	; 13
    96c4:	df 01       	movw	r26, r30
    96c6:	1d 92       	st	X+, r1
    96c8:	8a 95       	dec	r24
    96ca:	e9 f7       	brne	.-6      	; 0x96c6 <FileReadBlock+0x38>
	BOOL proceed = TRUE;
	int nakType = 0;
	int bytesRead = 0;
	uint8_t retval = FAIL;

	uint8_t mytaskid = (pHeaders->wrapper.destination & 0x00FF);
    96cc:	d7 01       	movw	r26, r14
    96ce:	12 96       	adiw	r26, 0x02	; 2
    96d0:	9c 90       	ld	r9, X
    96d2:	12 97       	sbiw	r26, 0x02	; 2
    96d4:	13 96       	adiw	r26, 0x03	; 3
    96d6:	0c 91       	ld	r16, X
	uint8_t myboardid = (pHeaders->wrapper.destination & 0xFF00) >> 8;
			
	retval = PadToDot(pHeaders->readFile.fileName, fileName);
    96d8:	c7 01       	movw	r24, r14
    96da:	49 96       	adiw	r24, 0x19	; 25
    96dc:	bf 01       	movw	r22, r30
    96de:	0e 94 e3 3e 	call	0x7dc6	; 0x7dc6 <PadToDot>

	if(retval == FAIL)
    96e2:	88 23       	and	r24, r24
    96e4:	21 f4       	brne	.+8      	; 0x96ee <FileReadBlock+0x60>
    96e6:	10 e0       	ldi	r17, 0x00	; 0
    96e8:	65 e0       	ldi	r22, 0x05	; 5
    96ea:	70 e0       	ldi	r23, 0x00	; 0
    96ec:	0c c0       	rjmp	.+24     	; 0x9706 <FileReadBlock+0x78>
		proceed = FALSE;
	}

	if(proceed)
	{
		if((myboardid != mainBoardID) && (mytaskid >= NUM_TASK_FILES))
    96ee:	80 91 e6 03 	lds	r24, 0x03E6
    96f2:	80 17       	cp	r24, r16
    96f4:	09 f4       	brne	.+2      	; 0x96f8 <FileReadBlock+0x6a>
    96f6:	56 c1       	rjmp	.+684    	; 0x99a4 <FileReadBlock+0x316>
    96f8:	b3 e0       	ldi	r27, 0x03	; 3
    96fa:	b9 15       	cp	r27, r9
    96fc:	08 f0       	brcs	.+2      	; 0x9700 <FileReadBlock+0x72>
    96fe:	52 c1       	rjmp	.+676    	; 0x99a4 <FileReadBlock+0x316>
    9700:	10 e0       	ldi	r17, 0x00	; 0
    9702:	6a e0       	ldi	r22, 0x0A	; 10
    9704:	70 e0       	ldi	r23, 0x00	; 0
    9706:	cc 24       	eor	r12, r12
    9708:	dd 24       	eor	r13, r13
    970a:	0a c0       	rjmp	.+20     	; 0x9720 <FileReadBlock+0x92>

	if(proceed)
	{
		bytesRead = fileOutSize[mytaskid] - pHeaders->readFile.offset;
		if(bytesRead > pHeaders->readFile.readLength)
			bytesRead = pHeaders->readFile.readLength;
    970c:	69 01       	movw	r12, r18

		if(bytesRead < 0)
    970e:	d7 fc       	sbrc	r13, 7
    9710:	04 c0       	rjmp	.+8      	; 0x971a <FileReadBlock+0x8c>
    9712:	1f ef       	ldi	r17, 0xFF	; 255
    9714:	60 e0       	ldi	r22, 0x00	; 0
    9716:	70 e0       	ldi	r23, 0x00	; 0
    9718:	03 c0       	rjmp	.+6      	; 0x9720 <FileReadBlock+0x92>
    971a:	10 e0       	ldi	r17, 0x00	; 0
    971c:	65 e0       	ldi	r22, 0x05	; 5
    971e:	70 e0       	ldi	r23, 0x00	; 0
			nakType = NAKDISP_DATA;
			proceed = FALSE;
		}
	}

	if((bytesRead + pHeaders->readFile.offset) >= fileOutSize[mytaskid])
    9720:	e9 2d       	mov	r30, r9
    9722:	f0 e0       	ldi	r31, 0x00	; 0
    9724:	96 01       	movw	r18, r12
    9726:	44 27       	eor	r20, r20
    9728:	37 fd       	sbrc	r19, 7
    972a:	40 95       	com	r20
    972c:	54 2f       	mov	r21, r20
    972e:	d7 01       	movw	r26, r14
    9730:	98 96       	adiw	r26, 0x28	; 40
    9732:	4d 90       	ld	r4, X+
    9734:	5d 90       	ld	r5, X+
    9736:	6d 90       	ld	r6, X+
    9738:	7c 90       	ld	r7, X
    973a:	9b 97       	sbiw	r26, 0x2b	; 43
    973c:	24 0d       	add	r18, r4
    973e:	35 1d       	adc	r19, r5
    9740:	46 1d       	adc	r20, r6
    9742:	57 1d       	adc	r21, r7
    9744:	ee 0f       	add	r30, r30
    9746:	ff 1f       	adc	r31, r31
    9748:	ef 5a       	subi	r30, 0xAF	; 175
    974a:	f2 46       	sbci	r31, 0x62	; 98
    974c:	80 81       	ld	r24, Z
    974e:	91 81       	ldd	r25, Z+1	; 0x01
    9750:	a0 e0       	ldi	r26, 0x00	; 0
    9752:	b0 e0       	ldi	r27, 0x00	; 0
    9754:	28 17       	cp	r18, r24
    9756:	39 07       	cpc	r19, r25
    9758:	4a 07       	cpc	r20, r26
    975a:	5b 07       	cpc	r21, r27
    975c:	10 f0       	brcs	.+4      	; 0x9762 <FileReadBlock+0xd4>
	{
		fileOutSize[mytaskid] = 0;
    975e:	11 82       	std	Z+1, r1	; 0x01
    9760:	10 82       	st	Z, r1
	}

	if((nakType == 0) && (proceed == TRUE))
    9762:	61 15       	cp	r22, r1
    9764:	71 05       	cpc	r23, r1
    9766:	09 f0       	breq	.+2      	; 0x976a <FileReadBlock+0xdc>
    9768:	98 c0       	rjmp	.+304    	; 0x989a <FileReadBlock+0x20c>
    976a:	1f 3f       	cpi	r17, 0xFF	; 255
    976c:	09 f0       	breq	.+2      	; 0x9770 <FileReadBlock+0xe2>
    976e:	95 c0       	rjmp	.+298    	; 0x989a <FileReadBlock+0x20c>
	{
		pyldFileAcks.headers.destination = pHeaders->wrapper.source;
    9770:	f7 01       	movw	r30, r14
    9772:	84 81       	ldd	r24, Z+4	; 0x04
    9774:	95 81       	ldd	r25, Z+5	; 0x05
    9776:	90 93 03 88 	sts	0x8803, r25
    977a:	80 93 02 88 	sts	0x8802, r24
		pyldFileAcks.headers.source = pHeaders->wrapper.destination;
    977e:	82 81       	ldd	r24, Z+2	; 0x02
    9780:	93 81       	ldd	r25, Z+3	; 0x03
    9782:	90 93 05 88 	sts	0x8805, r25
    9786:	80 93 04 88 	sts	0x8804, r24
		pyldFileAcks.headers.msgID = pHeaders->wrapper.msgID;
    978a:	86 81       	ldd	r24, Z+6	; 0x06
    978c:	97 81       	ldd	r25, Z+7	; 0x07
    978e:	90 93 07 88 	sts	0x8807, r25
    9792:	80 93 06 88 	sts	0x8806, r24
		pyldFileAcks.headers.length = sizeof(LRI_COMM_WRAPPER) + sizeof(LRI_GENERIC_ACK) + sizeof(COMM_HEADER) + sizeof(ACK_READ_FILE);
    9796:	8e ed       	ldi	r24, 0xDE	; 222
    9798:	90 e0       	ldi	r25, 0x00	; 0
    979a:	90 93 01 88 	sts	0x8801, r25
    979e:	80 93 00 88 	sts	0x8800, r24
		pyldFileAcks.headers.msgType = LRI_ACK;		//0x05;
    97a2:	81 e0       	ldi	r24, 0x01	; 1
    97a4:	90 e0       	ldi	r25, 0x00	; 0
    97a6:	90 93 09 88 	sts	0x8809, r25
    97aa:	80 93 08 88 	sts	0x8808, r24
		pyldFileAcks.ackInfo.originalCmd = pHeaders->wrapper.msgType;
    97ae:	80 85       	ldd	r24, Z+8	; 0x08
    97b0:	91 85       	ldd	r25, Z+9	; 0x09
    97b2:	90 93 0b 88 	sts	0x880B, r25
    97b6:	80 93 0a 88 	sts	0x880A, r24
		pyldFileAcks.toShoreheader.packetID = pHeaders->header.packetID;
    97ba:	86 85       	ldd	r24, Z+14	; 0x0e
    97bc:	97 85       	ldd	r25, Z+15	; 0x0f
    97be:	a0 89       	ldd	r26, Z+16	; 0x10
    97c0:	b1 89       	ldd	r27, Z+17	; 0x11
    97c2:	80 93 0d 88 	sts	0x880D, r24
    97c6:	90 93 0e 88 	sts	0x880E, r25
    97ca:	a0 93 0f 88 	sts	0x880F, r26
    97ce:	b0 93 10 88 	sts	0x8810, r27
		pyldFileAcks.toShoreheader.size = sizeof(ACK_READ_FILE) - CRC16_SIZE;
    97d2:	89 ec       	ldi	r24, 0xC9	; 201
    97d4:	90 e0       	ldi	r25, 0x00	; 0
    97d6:	90 93 12 88 	sts	0x8812, r25
    97da:	80 93 11 88 	sts	0x8811, r24
		pyldFileAcks.toShoreheader.type = 0x1B;
    97de:	8b e1       	ldi	r24, 0x1B	; 27
    97e0:	80 93 0c 88 	sts	0x880C, r24
		pyldFileAcks.ackRead.numDataBytes = bytesRead;
    97e4:	2a e1       	ldi	r18, 0x1A	; 26
    97e6:	a2 2e       	mov	r10, r18
    97e8:	28 e8       	ldi	r18, 0x88	; 136
    97ea:	b2 2e       	mov	r11, r18
    97ec:	c0 92 1a 88 	sts	0x881A, r12
    97f0:	d0 92 1b 88 	sts	0x881B, r13
		pyldFileAcks.ackRead.seekOffset = pHeaders->readFile.offset;
    97f4:	80 a5       	ldd	r24, Z+40	; 0x28
    97f6:	91 a5       	ldd	r25, Z+41	; 0x29
    97f8:	a2 a5       	ldd	r26, Z+42	; 0x2a
    97fa:	b3 a5       	ldd	r27, Z+43	; 0x2b
    97fc:	80 93 15 88 	sts	0x8815, r24
    9800:	90 93 16 88 	sts	0x8816, r25
    9804:	a0 93 17 88 	sts	0x8817, r26
    9808:	b0 93 18 88 	sts	0x8818, r27
		memcpy(pyldFileAcks.ackRead.data, &(fileOut[mytaskid][pHeaders->readFile.offset]), bytesRead);
    980c:	a5 01       	movw	r20, r10
    980e:	4e 5f       	subi	r20, 0xFE	; 254
    9810:	5f 4f       	sbci	r21, 0xFF	; 255
    9812:	99 2d       	mov	r25, r9
    9814:	99 0f       	add	r25, r25
    9816:	99 0f       	add	r25, r25
    9818:	80 e0       	ldi	r24, 0x00	; 0
    981a:	20 a5       	ldd	r18, Z+40	; 0x28
    981c:	31 a5       	ldd	r19, Z+41	; 0x29
    981e:	28 0f       	add	r18, r24
    9820:	39 1f       	adc	r19, r25
    9822:	2f 5a       	subi	r18, 0xAF	; 175
    9824:	32 47       	sbci	r19, 0x72	; 114
    9826:	ca 01       	movw	r24, r20
    9828:	b9 01       	movw	r22, r18
    982a:	a6 01       	movw	r20, r12
    982c:	0e 94 1c f0 	call	0x1e038	; 0x1e038 <memcpy>
		pyldFileAcks.ackRead.eofFlag = 0xFF;
    9830:	10 93 19 88 	sts	0x8819, r17
		pyldFileAcks.ackRead.storageControllerAddress = pHeaders->readFile.storageControllerAddress;
    9834:	d7 01       	movw	r26, r14
    9836:	57 96       	adiw	r26, 0x17	; 23
    9838:	8d 91       	ld	r24, X+
    983a:	9c 91       	ld	r25, X
    983c:	58 97       	sbiw	r26, 0x18	; 24
    983e:	90 93 14 88 	sts	0x8814, r25
    9842:	80 93 13 88 	sts	0x8813, r24
		pyldFileAcks.ackRead.crc = CalculateCRC16((uint8_t*) &pyldFileAcks, sizeof(LRI_COMM_WRAPPER) + sizeof(LRI_GENERIC_ACK) + sizeof(COMM_HEADER)+ sizeof(ACK_READ_FILE) - CRC16_SIZE, OTHER_CRC_START);
    9846:	f5 01       	movw	r30, r10
    9848:	7a 97       	sbiw	r30, 0x1a	; 26
    984a:	20 e0       	ldi	r18, 0x00	; 0
    984c:	30 e0       	ldi	r19, 0x00	; 0
    984e:	18 c0       	rjmp	.+48     	; 0x9880 <FileReadBlock+0x1f2>
    9850:	81 91       	ld	r24, Z+
    9852:	28 27       	eor	r18, r24
    9854:	82 2f       	mov	r24, r18
    9856:	82 95       	swap	r24
    9858:	82 27       	eor	r24, r18
    985a:	08 2e       	mov	r0, r24
    985c:	86 95       	lsr	r24
    985e:	86 95       	lsr	r24
    9860:	80 25       	eor	r24, r0
    9862:	08 2e       	mov	r0, r24
    9864:	86 95       	lsr	r24
    9866:	80 25       	eor	r24, r0
    9868:	87 70       	andi	r24, 0x07	; 7
    986a:	02 2e       	mov	r0, r18
    986c:	23 2f       	mov	r18, r19
    986e:	86 95       	lsr	r24
    9870:	07 94       	ror	r0
    9872:	87 95       	ror	r24
    9874:	30 2d       	mov	r19, r0
    9876:	28 27       	eor	r18, r24
    9878:	06 94       	lsr	r0
    987a:	87 95       	ror	r24
    987c:	30 25       	eor	r19, r0
    987e:	28 27       	eor	r18, r24
//---------------------------------------------------------------------------------
uint16_t CalculateCRC16(uint8_t* pBuffer, uint16_t size, uint16_t initValue)
{
	uint16_t crc = initValue;

	for(int i = 0; i < (size); i++)
    9880:	b8 e8       	ldi	r27, 0x88	; 136
    9882:	ec 3d       	cpi	r30, 0xDC	; 220
    9884:	fb 07       	cpc	r31, r27
    9886:	21 f7       	brne	.-56     	; 0x9850 <FileReadBlock+0x1c2>
		pyldFileAcks.ackRead.numDataBytes = bytesRead;
		pyldFileAcks.ackRead.seekOffset = pHeaders->readFile.offset;
		memcpy(pyldFileAcks.ackRead.data, &(fileOut[mytaskid][pHeaders->readFile.offset]), bytesRead);
		pyldFileAcks.ackRead.eofFlag = 0xFF;
		pyldFileAcks.ackRead.storageControllerAddress = pHeaders->readFile.storageControllerAddress;
		pyldFileAcks.ackRead.crc = CalculateCRC16((uint8_t*) &pyldFileAcks, sizeof(LRI_COMM_WRAPPER) + sizeof(LRI_GENERIC_ACK) + sizeof(COMM_HEADER)+ sizeof(ACK_READ_FILE) - CRC16_SIZE, OTHER_CRC_START);
    9888:	31 83       	std	Z+1, r19	; 0x01
    988a:	20 83       	st	Z, r18
		TxHDLC((uint8_t*)&pyldFileAcks, pyldFileAcks.headers.length);
    988c:	60 91 00 88 	lds	r22, 0x8800
    9890:	70 91 01 88 	lds	r23, 0x8801
    9894:	80 e0       	ldi	r24, 0x00	; 0
    9896:	98 e8       	ldi	r25, 0x88	; 136
    9898:	6d c0       	rjmp	.+218    	; 0x9974 <FileReadBlock+0x2e6>
	}
	else
	{
		pyldFileNaks.headers.destination = pHeaders->wrapper.source;
    989a:	f7 01       	movw	r30, r14
    989c:	84 81       	ldd	r24, Z+4	; 0x04
    989e:	95 81       	ldd	r25, Z+5	; 0x05
    98a0:	90 93 e1 88 	sts	0x88E1, r25
    98a4:	80 93 e0 88 	sts	0x88E0, r24
		pyldFileNaks.headers.source = pHeaders->wrapper.destination;
    98a8:	82 81       	ldd	r24, Z+2	; 0x02
    98aa:	93 81       	ldd	r25, Z+3	; 0x03
    98ac:	90 93 e3 88 	sts	0x88E3, r25
    98b0:	80 93 e2 88 	sts	0x88E2, r24
		pyldFileNaks.headers.msgID = pHeaders->wrapper.msgID;
    98b4:	86 81       	ldd	r24, Z+6	; 0x06
    98b6:	97 81       	ldd	r25, Z+7	; 0x07
    98b8:	90 93 e5 88 	sts	0x88E5, r25
    98bc:	80 93 e4 88 	sts	0x88E4, r24
		pyldFileNaks.headers.length = sizeof(LRI_COMM_WRAPPER) + sizeof(LRI_GENERIC_NAK) + sizeof(COMM_HEADER) + sizeof(NAK_FILE);
    98c0:	89 e1       	ldi	r24, 0x19	; 25
    98c2:	90 e0       	ldi	r25, 0x00	; 0
    98c4:	90 93 df 88 	sts	0x88DF, r25
    98c8:	80 93 de 88 	sts	0x88DE, r24
		pyldFileNaks.headers.msgType = 0x04;
    98cc:	84 e0       	ldi	r24, 0x04	; 4
    98ce:	90 e0       	ldi	r25, 0x00	; 0
    98d0:	90 93 e7 88 	sts	0x88E7, r25
    98d4:	80 93 e6 88 	sts	0x88E6, r24
		pyldFileNaks.nakInfo.originalCmd = pHeaders->wrapper.msgType;
    98d8:	80 85       	ldd	r24, Z+8	; 0x08
    98da:	91 85       	ldd	r25, Z+9	; 0x09
    98dc:	90 93 e9 88 	sts	0x88E9, r25
    98e0:	80 93 e8 88 	sts	0x88E8, r24
		pyldFileNaks.nakInfo.nakSummary = 0;
    98e4:	10 92 ea 88 	sts	0x88EA, r1
		pyldFileNaks.toShoreheader.packetID = pHeaders->header.packetID;
    98e8:	86 85       	ldd	r24, Z+14	; 0x0e
    98ea:	97 85       	ldd	r25, Z+15	; 0x0f
    98ec:	a0 89       	ldd	r26, Z+16	; 0x10
    98ee:	b1 89       	ldd	r27, Z+17	; 0x11
    98f0:	80 93 ec 88 	sts	0x88EC, r24
    98f4:	90 93 ed 88 	sts	0x88ED, r25
    98f8:	a0 93 ee 88 	sts	0x88EE, r26
    98fc:	b0 93 ef 88 	sts	0x88EF, r27
		pyldFileNaks.toShoreheader.size = 3;
    9900:	83 e0       	ldi	r24, 0x03	; 3
    9902:	90 e0       	ldi	r25, 0x00	; 0
    9904:	90 93 f1 88 	sts	0x88F1, r25
    9908:	80 93 f0 88 	sts	0x88F0, r24
		pyldFileNaks.toShoreheader.type = 0x24;
    990c:	84 e2       	ldi	r24, 0x24	; 36
    990e:	80 93 eb 88 	sts	0x88EB, r24
		pyldFileNaks.nakFile.count = 1;
    9912:	81 e0       	ldi	r24, 0x01	; 1
    9914:	90 e0       	ldi	r25, 0x00	; 0
    9916:	90 93 f3 88 	sts	0x88F3, r25
    991a:	80 93 f2 88 	sts	0x88F2, r24
		pyldFileNaks.nakFile.result = nakType;
    991e:	60 93 f4 88 	sts	0x88F4, r22
		pyldFileNaks.nakFile.crc = CalculateCRC16((uint8_t*) &pyldFileAcks, sizeof(LRI_COMM_WRAPPER) + sizeof(LRI_GENERIC_NAK) + sizeof(COMM_HEADER) + sizeof(NAK_FILE) - CRC16_SIZE, OTHER_CRC_START);
    9922:	e0 e0       	ldi	r30, 0x00	; 0
    9924:	f8 e8       	ldi	r31, 0x88	; 136
    9926:	20 e0       	ldi	r18, 0x00	; 0
    9928:	30 e0       	ldi	r19, 0x00	; 0
    992a:	18 c0       	rjmp	.+48     	; 0x995c <FileReadBlock+0x2ce>
    992c:	81 91       	ld	r24, Z+
    992e:	28 27       	eor	r18, r24
    9930:	82 2f       	mov	r24, r18
    9932:	82 95       	swap	r24
    9934:	82 27       	eor	r24, r18
    9936:	08 2e       	mov	r0, r24
    9938:	86 95       	lsr	r24
    993a:	86 95       	lsr	r24
    993c:	80 25       	eor	r24, r0
    993e:	08 2e       	mov	r0, r24
    9940:	86 95       	lsr	r24
    9942:	80 25       	eor	r24, r0
    9944:	87 70       	andi	r24, 0x07	; 7
    9946:	02 2e       	mov	r0, r18
    9948:	23 2f       	mov	r18, r19
    994a:	86 95       	lsr	r24
    994c:	07 94       	ror	r0
    994e:	87 95       	ror	r24
    9950:	30 2d       	mov	r19, r0
    9952:	28 27       	eor	r18, r24
    9954:	06 94       	lsr	r0
    9956:	87 95       	ror	r24
    9958:	30 25       	eor	r19, r0
    995a:	28 27       	eor	r18, r24
//---------------------------------------------------------------------------------
uint16_t CalculateCRC16(uint8_t* pBuffer, uint16_t size, uint16_t initValue)
{
	uint16_t crc = initValue;

	for(int i = 0; i < (size); i++)
    995c:	88 e8       	ldi	r24, 0x88	; 136
    995e:	e7 31       	cpi	r30, 0x17	; 23
    9960:	f8 07       	cpc	r31, r24
    9962:	21 f7       	brne	.-56     	; 0x992c <FileReadBlock+0x29e>
		pyldFileNaks.toShoreheader.packetID = pHeaders->header.packetID;
		pyldFileNaks.toShoreheader.size = 3;
		pyldFileNaks.toShoreheader.type = 0x24;
		pyldFileNaks.nakFile.count = 1;
		pyldFileNaks.nakFile.result = nakType;
		pyldFileNaks.nakFile.crc = CalculateCRC16((uint8_t*) &pyldFileAcks, sizeof(LRI_COMM_WRAPPER) + sizeof(LRI_GENERIC_NAK) + sizeof(COMM_HEADER) + sizeof(NAK_FILE) - CRC16_SIZE, OTHER_CRC_START);
    9964:	30 93 f6 88 	sts	0x88F6, r19
    9968:	20 93 f5 88 	sts	0x88F5, r18
		TxHDLC((uint8_t*)&pyldFileAcks, pyldFileAcks.headers.length);
    996c:	77 97       	sbiw	r30, 0x17	; 23
    996e:	60 81       	ld	r22, Z
    9970:	71 81       	ldd	r23, Z+1	; 0x01
    9972:	cf 01       	movw	r24, r30
    9974:	0e 94 fe 45 	call	0x8bfc	; 0x8bfc <TxHDLC>
	}
	return;
}
    9978:	2d 96       	adiw	r28, 0x0d	; 13
    997a:	0f b6       	in	r0, 0x3f	; 63
    997c:	f8 94       	cli
    997e:	de bf       	out	0x3e, r29	; 62
    9980:	0f be       	out	0x3f, r0	; 63
    9982:	cd bf       	out	0x3d, r28	; 61
    9984:	cf 91       	pop	r28
    9986:	df 91       	pop	r29
    9988:	1f 91       	pop	r17
    998a:	0f 91       	pop	r16
    998c:	ff 90       	pop	r15
    998e:	ef 90       	pop	r14
    9990:	df 90       	pop	r13
    9992:	cf 90       	pop	r12
    9994:	bf 90       	pop	r11
    9996:	af 90       	pop	r10
    9998:	9f 90       	pop	r9
    999a:	7f 90       	pop	r7
    999c:	6f 90       	pop	r6
    999e:	5f 90       	pop	r5
    99a0:	4f 90       	pop	r4
    99a2:	08 95       	ret
		}
	}

	if(proceed)
	{
		bytesRead = fileOutSize[mytaskid] - pHeaders->readFile.offset;
    99a4:	e9 2d       	mov	r30, r9
    99a6:	f0 e0       	ldi	r31, 0x00	; 0
    99a8:	ee 0f       	add	r30, r30
    99aa:	ff 1f       	adc	r31, r31
    99ac:	ef 5a       	subi	r30, 0xAF	; 175
    99ae:	f2 46       	sbci	r31, 0x62	; 98
    99b0:	c0 80       	ld	r12, Z
    99b2:	d1 80       	ldd	r13, Z+1	; 0x01
    99b4:	d7 01       	movw	r26, r14
    99b6:	98 96       	adiw	r26, 0x28	; 40
    99b8:	8d 91       	ld	r24, X+
    99ba:	9c 91       	ld	r25, X
    99bc:	99 97       	sbiw	r26, 0x29	; 41
    99be:	c8 1a       	sub	r12, r24
    99c0:	d9 0a       	sbc	r13, r25
		if(bytesRead > pHeaders->readFile.readLength)
    99c2:	9c 96       	adiw	r26, 0x2c	; 44
    99c4:	2d 91       	ld	r18, X+
    99c6:	3d 91       	ld	r19, X+
    99c8:	4d 91       	ld	r20, X+
    99ca:	5c 91       	ld	r21, X
    99cc:	9f 97       	sbiw	r26, 0x2f	; 47
    99ce:	c6 01       	movw	r24, r12
    99d0:	aa 27       	eor	r26, r26
    99d2:	97 fd       	sbrc	r25, 7
    99d4:	a0 95       	com	r26
    99d6:	ba 2f       	mov	r27, r26
    99d8:	28 17       	cp	r18, r24
    99da:	39 07       	cpc	r19, r25
    99dc:	4a 07       	cpc	r20, r26
    99de:	5b 07       	cpc	r21, r27
    99e0:	08 f4       	brcc	.+2      	; 0x99e4 <FileReadBlock+0x356>
    99e2:	94 ce       	rjmp	.-728    	; 0x970c <FileReadBlock+0x7e>
    99e4:	94 ce       	rjmp	.-728    	; 0x970e <FileReadBlock+0x80>

000099e6 <FileDelete>:
	return;
}


void FileDelete(PPYLD_MGR_FILE_RX_BUFFER pHeaders)
{
    99e6:	0f 93       	push	r16
    99e8:	1f 93       	push	r17
    99ea:	df 93       	push	r29
    99ec:	cf 93       	push	r28
    99ee:	cd b7       	in	r28, 0x3d	; 61
    99f0:	de b7       	in	r29, 0x3e	; 62
    99f2:	2d 97       	sbiw	r28, 0x0d	; 13
    99f4:	0f b6       	in	r0, 0x3f	; 63
    99f6:	f8 94       	cli
    99f8:	de bf       	out	0x3e, r29	; 62
    99fa:	0f be       	out	0x3f, r0	; 63
    99fc:	cd bf       	out	0x3d, r28	; 61
    99fe:	8c 01       	movw	r16, r24
	char fileName[13] = {0};
    9a00:	fe 01       	movw	r30, r28
    9a02:	31 96       	adiw	r30, 0x01	; 1
    9a04:	8d e0       	ldi	r24, 0x0D	; 13
    9a06:	df 01       	movw	r26, r30
    9a08:	1d 92       	st	X+, r1
    9a0a:	8a 95       	dec	r24
    9a0c:	e9 f7       	brne	.-6      	; 0x9a08 <FileDelete+0x22>
	BOOL proceed = TRUE;
	int nakType = 0;
	uint8_t retval = FAIL;
			
	hyperionID = pHeaders->deleteFile.fileID;
	if(hyperionID != 0xFFFFFFFF)
    9a0e:	d8 01       	movw	r26, r16
    9a10:	94 96       	adiw	r26, 0x24	; 36
    9a12:	2d 91       	ld	r18, X+
    9a14:	3d 91       	ld	r19, X+
    9a16:	4d 91       	ld	r20, X+
    9a18:	5c 91       	ld	r21, X
    9a1a:	97 97       	sbiw	r26, 0x27	; 39
    9a1c:	2f 5f       	subi	r18, 0xFF	; 255
    9a1e:	3f 4f       	sbci	r19, 0xFF	; 255
    9a20:	4f 4f       	sbci	r20, 0xFF	; 255
    9a22:	5f 4f       	sbci	r21, 0xFF	; 255
    9a24:	11 f0       	breq	.+4      	; 0x9a2a <FileDelete+0x44>
	{
		//Find Hyperion ID in log file and get file name
		if(fileName[0] == 0)
    9a26:	89 81       	ldd	r24, Y+1	; 0x01
    9a28:	05 c0       	rjmp	.+10     	; 0x9a34 <FileDelete+0x4e>
			//Don't need to do anything
		}
	}
	else
	{
		retval = PadToDot(pHeaders->deleteFile.fileName, fileName);
    9a2a:	c8 01       	movw	r24, r16
    9a2c:	49 96       	adiw	r24, 0x19	; 25
    9a2e:	bf 01       	movw	r22, r30
    9a30:	0e 94 e3 3e 	call	0x7dc6	; 0x7dc6 <PadToDot>

		if(retval == FAIL)
    9a34:	88 23       	and	r24, r24
    9a36:	09 f0       	breq	.+2      	; 0x9a3a <FileDelete+0x54>
    9a38:	9e c0       	rjmp	.+316    	; 0x9b76 <FileDelete+0x190>
		pyldFileAcks.crc = CalculateCRC16((uint8_t*) &pyldFileAcks, sizeof(LRI_COMM_WRAPPER) + sizeof(LRI_GENERIC_ACK) + sizeof(COMM_HEADER), OTHER_CRC_START);
		TxHDLC((uint8_t*)&pyldFileAcks, pyldFileAcks.headers.length);
	}
	else
	{
		pyldFileNaks.headers.destination = pHeaders->wrapper.source;
    9a3a:	f8 01       	movw	r30, r16
    9a3c:	84 81       	ldd	r24, Z+4	; 0x04
    9a3e:	95 81       	ldd	r25, Z+5	; 0x05
    9a40:	90 93 e1 88 	sts	0x88E1, r25
    9a44:	80 93 e0 88 	sts	0x88E0, r24
		pyldFileNaks.headers.source = pHeaders->wrapper.destination;
    9a48:	82 81       	ldd	r24, Z+2	; 0x02
    9a4a:	93 81       	ldd	r25, Z+3	; 0x03
    9a4c:	90 93 e3 88 	sts	0x88E3, r25
    9a50:	80 93 e2 88 	sts	0x88E2, r24
		pyldFileNaks.headers.msgID = pHeaders->wrapper.msgID;
    9a54:	86 81       	ldd	r24, Z+6	; 0x06
    9a56:	97 81       	ldd	r25, Z+7	; 0x07
    9a58:	90 93 e5 88 	sts	0x88E5, r25
    9a5c:	80 93 e4 88 	sts	0x88E4, r24
		pyldFileNaks.headers.length = sizeof(LRI_COMM_WRAPPER) + sizeof(LRI_GENERIC_NAK) + sizeof(COMM_HEADER) + sizeof(NAK_FILE);
    9a60:	89 e1       	ldi	r24, 0x19	; 25
    9a62:	90 e0       	ldi	r25, 0x00	; 0
    9a64:	90 93 df 88 	sts	0x88DF, r25
    9a68:	80 93 de 88 	sts	0x88DE, r24
		pyldFileNaks.headers.msgType = 0x04;
    9a6c:	84 e0       	ldi	r24, 0x04	; 4
    9a6e:	90 e0       	ldi	r25, 0x00	; 0
    9a70:	90 93 e7 88 	sts	0x88E7, r25
    9a74:	80 93 e6 88 	sts	0x88E6, r24
		pyldFileNaks.nakInfo.originalCmd = pHeaders->wrapper.msgType;
    9a78:	80 85       	ldd	r24, Z+8	; 0x08
    9a7a:	91 85       	ldd	r25, Z+9	; 0x09
    9a7c:	90 93 e9 88 	sts	0x88E9, r25
    9a80:	80 93 e8 88 	sts	0x88E8, r24
		pyldFileNaks.nakInfo.nakSummary = 0;
    9a84:	10 92 ea 88 	sts	0x88EA, r1
		pyldFileNaks.toShoreheader.packetID = pHeaders->header.packetID;
    9a88:	86 85       	ldd	r24, Z+14	; 0x0e
    9a8a:	97 85       	ldd	r25, Z+15	; 0x0f
    9a8c:	a0 89       	ldd	r26, Z+16	; 0x10
    9a8e:	b1 89       	ldd	r27, Z+17	; 0x11
    9a90:	80 93 ec 88 	sts	0x88EC, r24
    9a94:	90 93 ed 88 	sts	0x88ED, r25
    9a98:	a0 93 ee 88 	sts	0x88EE, r26
    9a9c:	b0 93 ef 88 	sts	0x88EF, r27
		pyldFileNaks.toShoreheader.size = 3;
    9aa0:	83 e0       	ldi	r24, 0x03	; 3
    9aa2:	90 e0       	ldi	r25, 0x00	; 0
    9aa4:	90 93 f1 88 	sts	0x88F1, r25
    9aa8:	80 93 f0 88 	sts	0x88F0, r24
		pyldFileNaks.toShoreheader.type = 0x24;
    9aac:	84 e2       	ldi	r24, 0x24	; 36
    9aae:	80 93 eb 88 	sts	0x88EB, r24
		pyldFileNaks.nakFile.count = 1;
    9ab2:	81 e0       	ldi	r24, 0x01	; 1
    9ab4:	90 e0       	ldi	r25, 0x00	; 0
    9ab6:	90 93 f3 88 	sts	0x88F3, r25
    9aba:	80 93 f2 88 	sts	0x88F2, r24
		pyldFileNaks.nakFile.result = nakType;
    9abe:	85 e0       	ldi	r24, 0x05	; 5
    9ac0:	80 93 f4 88 	sts	0x88F4, r24
		pyldFileNaks.nakFile.crc = CalculateCRC16((uint8_t*) &pyldFileAcks, sizeof(LRI_COMM_WRAPPER) + sizeof(LRI_GENERIC_NAK) + sizeof(COMM_HEADER) + sizeof(NAK_FILE) - CRC16_SIZE, OTHER_CRC_START);
    9ac4:	e0 e0       	ldi	r30, 0x00	; 0
    9ac6:	f8 e8       	ldi	r31, 0x88	; 136
    9ac8:	20 e0       	ldi	r18, 0x00	; 0
    9aca:	30 e0       	ldi	r19, 0x00	; 0
    9acc:	3b c0       	rjmp	.+118    	; 0x9b44 <FileDelete+0x15e>
    9ace:	81 91       	ld	r24, Z+
    9ad0:	28 27       	eor	r18, r24
    9ad2:	82 2f       	mov	r24, r18
    9ad4:	82 95       	swap	r24
    9ad6:	82 27       	eor	r24, r18
    9ad8:	08 2e       	mov	r0, r24
    9ada:	86 95       	lsr	r24
    9adc:	86 95       	lsr	r24
    9ade:	80 25       	eor	r24, r0
    9ae0:	08 2e       	mov	r0, r24
    9ae2:	86 95       	lsr	r24
    9ae4:	80 25       	eor	r24, r0
    9ae6:	87 70       	andi	r24, 0x07	; 7
    9ae8:	02 2e       	mov	r0, r18
    9aea:	23 2f       	mov	r18, r19
    9aec:	86 95       	lsr	r24
    9aee:	07 94       	ror	r0
    9af0:	87 95       	ror	r24
    9af2:	30 2d       	mov	r19, r0
    9af4:	28 27       	eor	r18, r24
    9af6:	06 94       	lsr	r0
    9af8:	87 95       	ror	r24
    9afa:	30 25       	eor	r19, r0
    9afc:	28 27       	eor	r18, r24
//---------------------------------------------------------------------------------
uint16_t CalculateCRC16(uint8_t* pBuffer, uint16_t size, uint16_t initValue)
{
	uint16_t crc = initValue;

	for(int i = 0; i < (size); i++)
    9afe:	88 e8       	ldi	r24, 0x88	; 136
    9b00:	e3 31       	cpi	r30, 0x13	; 19
    9b02:	f8 07       	cpc	r31, r24
    9b04:	21 f7       	brne	.-56     	; 0x9ace <FileDelete+0xe8>
		pyldFileAcks.headers.msgType = LRI_ACK;		//0x05;
		pyldFileAcks.ackInfo.originalCmd = pHeaders->wrapper.msgType;
		pyldFileAcks.toShoreheader.packetID = pHeaders->header.packetID;
		pyldFileAcks.toShoreheader.size = 0;
		pyldFileAcks.toShoreheader.type = 0x13;
		pyldFileAcks.crc = CalculateCRC16((uint8_t*) &pyldFileAcks, sizeof(LRI_COMM_WRAPPER) + sizeof(LRI_GENERIC_ACK) + sizeof(COMM_HEADER), OTHER_CRC_START);
    9b06:	31 83       	std	Z+1, r19	; 0x01
    9b08:	20 83       	st	Z, r18
		TxHDLC((uint8_t*)&pyldFileAcks, pyldFileAcks.headers.length);
    9b0a:	cf 01       	movw	r24, r30
    9b0c:	43 97       	sbiw	r24, 0x13	; 19
    9b0e:	65 e1       	ldi	r22, 0x15	; 21
    9b10:	70 e0       	ldi	r23, 0x00	; 0
    9b12:	24 c0       	rjmp	.+72     	; 0x9b5c <FileDelete+0x176>
    9b14:	81 91       	ld	r24, Z+
    9b16:	28 27       	eor	r18, r24
    9b18:	82 2f       	mov	r24, r18
    9b1a:	82 95       	swap	r24
    9b1c:	82 27       	eor	r24, r18
    9b1e:	08 2e       	mov	r0, r24
    9b20:	86 95       	lsr	r24
    9b22:	86 95       	lsr	r24
    9b24:	80 25       	eor	r24, r0
    9b26:	08 2e       	mov	r0, r24
    9b28:	86 95       	lsr	r24
    9b2a:	80 25       	eor	r24, r0
    9b2c:	87 70       	andi	r24, 0x07	; 7
    9b2e:	02 2e       	mov	r0, r18
    9b30:	23 2f       	mov	r18, r19
    9b32:	86 95       	lsr	r24
    9b34:	07 94       	ror	r0
    9b36:	87 95       	ror	r24
    9b38:	30 2d       	mov	r19, r0
    9b3a:	28 27       	eor	r18, r24
    9b3c:	06 94       	lsr	r0
    9b3e:	87 95       	ror	r24
    9b40:	30 25       	eor	r19, r0
    9b42:	28 27       	eor	r18, r24
//---------------------------------------------------------------------------------
uint16_t CalculateCRC16(uint8_t* pBuffer, uint16_t size, uint16_t initValue)
{
	uint16_t crc = initValue;

	for(int i = 0; i < (size); i++)
    9b44:	a8 e8       	ldi	r26, 0x88	; 136
    9b46:	e7 31       	cpi	r30, 0x17	; 23
    9b48:	fa 07       	cpc	r31, r26
    9b4a:	21 f7       	brne	.-56     	; 0x9b14 <FileDelete+0x12e>
		pyldFileNaks.toShoreheader.packetID = pHeaders->header.packetID;
		pyldFileNaks.toShoreheader.size = 3;
		pyldFileNaks.toShoreheader.type = 0x24;
		pyldFileNaks.nakFile.count = 1;
		pyldFileNaks.nakFile.result = nakType;
		pyldFileNaks.nakFile.crc = CalculateCRC16((uint8_t*) &pyldFileAcks, sizeof(LRI_COMM_WRAPPER) + sizeof(LRI_GENERIC_NAK) + sizeof(COMM_HEADER) + sizeof(NAK_FILE) - CRC16_SIZE, OTHER_CRC_START);
    9b4c:	30 93 f6 88 	sts	0x88F6, r19
    9b50:	20 93 f5 88 	sts	0x88F5, r18
		TxHDLC((uint8_t*)&pyldFileAcks, pyldFileAcks.headers.length);
    9b54:	77 97       	sbiw	r30, 0x17	; 23
    9b56:	60 81       	ld	r22, Z
    9b58:	71 81       	ldd	r23, Z+1	; 0x01
    9b5a:	cf 01       	movw	r24, r30
    9b5c:	0e 94 fe 45 	call	0x8bfc	; 0x8bfc <TxHDLC>
	}
	return;
}
    9b60:	2d 96       	adiw	r28, 0x0d	; 13
    9b62:	0f b6       	in	r0, 0x3f	; 63
    9b64:	f8 94       	cli
    9b66:	de bf       	out	0x3e, r29	; 62
    9b68:	0f be       	out	0x3f, r0	; 63
    9b6a:	cd bf       	out	0x3d, r28	; 61
    9b6c:	cf 91       	pop	r28
    9b6e:	df 91       	pop	r29
    9b70:	1f 91       	pop	r17
    9b72:	0f 91       	pop	r16
    9b74:	08 95       	ret
		}
	}

	if(nakType == 0)
	{
		pyldFileAcks.headers.destination = pHeaders->wrapper.source;
    9b76:	f8 01       	movw	r30, r16
    9b78:	84 81       	ldd	r24, Z+4	; 0x04
    9b7a:	95 81       	ldd	r25, Z+5	; 0x05
    9b7c:	90 93 03 88 	sts	0x8803, r25
    9b80:	80 93 02 88 	sts	0x8802, r24
		pyldFileAcks.headers.source = pHeaders->wrapper.destination;
    9b84:	82 81       	ldd	r24, Z+2	; 0x02
    9b86:	93 81       	ldd	r25, Z+3	; 0x03
    9b88:	90 93 05 88 	sts	0x8805, r25
    9b8c:	80 93 04 88 	sts	0x8804, r24
		pyldFileAcks.headers.msgID = pHeaders->wrapper.msgID;
    9b90:	86 81       	ldd	r24, Z+6	; 0x06
    9b92:	97 81       	ldd	r25, Z+7	; 0x07
    9b94:	90 93 07 88 	sts	0x8807, r25
    9b98:	80 93 06 88 	sts	0x8806, r24
		pyldFileAcks.headers.length = sizeof(LRI_COMM_WRAPPER) + sizeof(LRI_GENERIC_ACK) + sizeof(COMM_HEADER) + CRC16_SIZE;
    9b9c:	85 e1       	ldi	r24, 0x15	; 21
    9b9e:	90 e0       	ldi	r25, 0x00	; 0
    9ba0:	90 93 01 88 	sts	0x8801, r25
    9ba4:	80 93 00 88 	sts	0x8800, r24
		pyldFileAcks.headers.msgType = LRI_ACK;		//0x05;
    9ba8:	81 e0       	ldi	r24, 0x01	; 1
    9baa:	90 e0       	ldi	r25, 0x00	; 0
    9bac:	90 93 09 88 	sts	0x8809, r25
    9bb0:	80 93 08 88 	sts	0x8808, r24
		pyldFileAcks.ackInfo.originalCmd = pHeaders->wrapper.msgType;
    9bb4:	80 85       	ldd	r24, Z+8	; 0x08
    9bb6:	91 85       	ldd	r25, Z+9	; 0x09
    9bb8:	90 93 0b 88 	sts	0x880B, r25
    9bbc:	80 93 0a 88 	sts	0x880A, r24
		pyldFileAcks.toShoreheader.packetID = pHeaders->header.packetID;
    9bc0:	86 85       	ldd	r24, Z+14	; 0x0e
    9bc2:	97 85       	ldd	r25, Z+15	; 0x0f
    9bc4:	a0 89       	ldd	r26, Z+16	; 0x10
    9bc6:	b1 89       	ldd	r27, Z+17	; 0x11
    9bc8:	80 93 0d 88 	sts	0x880D, r24
    9bcc:	90 93 0e 88 	sts	0x880E, r25
    9bd0:	a0 93 0f 88 	sts	0x880F, r26
    9bd4:	b0 93 10 88 	sts	0x8810, r27
		pyldFileAcks.toShoreheader.size = 0;
    9bd8:	10 92 12 88 	sts	0x8812, r1
    9bdc:	10 92 11 88 	sts	0x8811, r1
		pyldFileAcks.toShoreheader.type = 0x13;
    9be0:	83 e1       	ldi	r24, 0x13	; 19
    9be2:	80 93 0c 88 	sts	0x880C, r24
		pyldFileAcks.crc = CalculateCRC16((uint8_t*) &pyldFileAcks, sizeof(LRI_COMM_WRAPPER) + sizeof(LRI_GENERIC_ACK) + sizeof(COMM_HEADER), OTHER_CRC_START);
    9be6:	e0 e0       	ldi	r30, 0x00	; 0
    9be8:	f8 e8       	ldi	r31, 0x88	; 136
    9bea:	20 e0       	ldi	r18, 0x00	; 0
    9bec:	30 e0       	ldi	r19, 0x00	; 0
    9bee:	87 cf       	rjmp	.-242    	; 0x9afe <FileDelete+0x118>

00009bf0 <FileWriteBlock>:
	return;
}


void FileWriteBlock(PPYLD_MGR_FILE_RX_BUFFER pHeaders)
{
    9bf0:	7f 92       	push	r7
    9bf2:	8f 92       	push	r8
    9bf4:	9f 92       	push	r9
    9bf6:	af 92       	push	r10
    9bf8:	bf 92       	push	r11
    9bfa:	cf 92       	push	r12
    9bfc:	df 92       	push	r13
    9bfe:	ef 92       	push	r14
    9c00:	ff 92       	push	r15
    9c02:	0f 93       	push	r16
    9c04:	1f 93       	push	r17
    9c06:	df 93       	push	r29
    9c08:	cf 93       	push	r28
    9c0a:	cd b7       	in	r28, 0x3d	; 61
    9c0c:	de b7       	in	r29, 0x3e	; 62
    9c0e:	2d 97       	sbiw	r28, 0x0d	; 13
    9c10:	0f b6       	in	r0, 0x3f	; 63
    9c12:	f8 94       	cli
    9c14:	de bf       	out	0x3e, r29	; 62
    9c16:	0f be       	out	0x3f, r0	; 63
    9c18:	cd bf       	out	0x3d, r28	; 61
    9c1a:	6c 01       	movw	r12, r24
	char fileName[13] = {0};
    9c1c:	fe 01       	movw	r30, r28
    9c1e:	31 96       	adiw	r30, 0x01	; 1
    9c20:	8d e0       	ldi	r24, 0x0D	; 13
    9c22:	df 01       	movw	r26, r30
    9c24:	1d 92       	st	X+, r1
    9c26:	8a 95       	dec	r24
    9c28:	e9 f7       	brne	.-6      	; 0x9c24 <FileWriteBlock+0x34>
	BOOL proceed = TRUE;
	int nakType = 0;
	int numBytes = 0;


	uint8_t mytaskid = (pHeaders->wrapper.destination & 0x00FF);
    9c2a:	d6 01       	movw	r26, r12
    9c2c:	12 96       	adiw	r26, 0x02	; 2
    9c2e:	7c 90       	ld	r7, X
    9c30:	12 97       	sbiw	r26, 0x02	; 2
    9c32:	13 96       	adiw	r26, 0x03	; 3
    9c34:	2c 91       	ld	r18, X
    9c36:	13 97       	sbiw	r26, 0x03	; 3
	uint8_t myboardid = (pHeaders->wrapper.destination & 0xFF00) >> 8;
			
	hyperionID = pHeaders->writeFile.fileID;
    9c38:	59 96       	adiw	r26, 0x19	; 25
    9c3a:	8d 90       	ld	r8, X+
    9c3c:	9d 90       	ld	r9, X+
    9c3e:	ad 90       	ld	r10, X+
    9c40:	bc 90       	ld	r11, X
    9c42:	5c 97       	sbiw	r26, 0x1c	; 28

	//Get Filename from log file based on Hyperion ID or use writingFile structure with only 1 allowed write at a time
	//Get final File Size from Hyperion ID
	if((writingFile.writeStatus == WRITE_IN_PROGRESS) && (hyperionID == writingFile.fileID))
    9c44:	80 91 f7 88 	lds	r24, 0x88F7
    9c48:	81 30       	cpi	r24, 0x01	; 1
    9c4a:	b1 f4       	brne	.+44     	; 0x9c78 <FileWriteBlock+0x88>
    9c4c:	80 91 23 89 	lds	r24, 0x8923
    9c50:	90 91 24 89 	lds	r25, 0x8924
    9c54:	a0 91 25 89 	lds	r26, 0x8925
    9c58:	b0 91 26 89 	lds	r27, 0x8926
    9c5c:	88 16       	cp	r8, r24
    9c5e:	99 06       	cpc	r9, r25
    9c60:	aa 06       	cpc	r10, r26
    9c62:	bb 06       	cpc	r11, r27
    9c64:	49 f4       	brne	.+18     	; 0x9c78 <FileWriteBlock+0x88>
		memcpy(fileName, writingFile.tempFileName, 13);
    9c66:	df 01       	movw	r26, r30
    9c68:	e8 ef       	ldi	r30, 0xF8	; 248
    9c6a:	f8 e8       	ldi	r31, 0x88	; 136
    9c6c:	8d e0       	ldi	r24, 0x0D	; 13
    9c6e:	01 90       	ld	r0, Z+
    9c70:	0d 92       	st	X+, r0
    9c72:	81 50       	subi	r24, 0x01	; 1
    9c74:	e1 f7       	brne	.-8      	; 0x9c6e <FileWriteBlock+0x7e>
    9c76:	01 c0       	rjmp	.+2      	; 0x9c7a <FileWriteBlock+0x8a>
	else
		fileName[0] = 0;
    9c78:	19 82       	std	Y+1, r1	; 0x01

	if(fileName[0] == 0)
    9c7a:	89 81       	ldd	r24, Y+1	; 0x01
    9c7c:	88 23       	and	r24, r24
    9c7e:	19 f4       	brne	.+6      	; 0x9c86 <FileWriteBlock+0x96>
    9c80:	25 e0       	ldi	r18, 0x05	; 5
    9c82:	30 e0       	ldi	r19, 0x00	; 0
    9c84:	cc c0       	rjmp	.+408    	; 0x9e1e <FileWriteBlock+0x22e>
		proceed = FALSE;
	}

	if(proceed)
	{
		if((myboardid != mainBoardID) && (mytaskid >= NUM_TASK_FILES))
    9c86:	80 91 e6 03 	lds	r24, 0x03E6
    9c8a:	82 17       	cp	r24, r18
    9c8c:	21 f0       	breq	.+8      	; 0x9c96 <FileWriteBlock+0xa6>
    9c8e:	b3 e0       	ldi	r27, 0x03	; 3
    9c90:	b7 15       	cp	r27, r7
    9c92:	08 f4       	brcc	.+2      	; 0x9c96 <FileWriteBlock+0xa6>
    9c94:	c2 c0       	rjmp	.+388    	; 0x9e1a <FileWriteBlock+0x22a>
		}
	}

	if(proceed)
	{
		numBytes = pHeaders->writeFile.numDataBytes;
    9c96:	d6 01       	movw	r26, r12
    9c98:	91 96       	adiw	r26, 0x21	; 33
    9c9a:	ed 91       	ld	r30, X+
    9c9c:	fc 91       	ld	r31, X
    9c9e:	92 97       	sbiw	r26, 0x22	; 34
		if((numBytes + pHeaders->writeFile.offset) <= MAX_FILE_SIZE_IN)
    9ca0:	7f 01       	movw	r14, r30
    9ca2:	00 27       	eor	r16, r16
    9ca4:	f7 fc       	sbrc	r15, 7
    9ca6:	00 95       	com	r16
    9ca8:	10 2f       	mov	r17, r16
    9caa:	5d 96       	adiw	r26, 0x1d	; 29
    9cac:	4d 91       	ld	r20, X+
    9cae:	5d 91       	ld	r21, X+
    9cb0:	6d 91       	ld	r22, X+
    9cb2:	7c 91       	ld	r23, X
    9cb4:	90 97       	sbiw	r26, 0x20	; 32
    9cb6:	d8 01       	movw	r26, r16
    9cb8:	c7 01       	movw	r24, r14
    9cba:	84 0f       	add	r24, r20
    9cbc:	95 1f       	adc	r25, r21
    9cbe:	a6 1f       	adc	r26, r22
    9cc0:	b7 1f       	adc	r27, r23
    9cc2:	81 50       	subi	r24, 0x01	; 1
    9cc4:	91 40       	sbci	r25, 0x01	; 1
    9cc6:	a0 40       	sbci	r26, 0x00	; 0
    9cc8:	b0 40       	sbci	r27, 0x00	; 0
    9cca:	18 f0       	brcs	.+6      	; 0x9cd2 <FileWriteBlock+0xe2>
    9ccc:	25 e0       	ldi	r18, 0x05	; 5
    9cce:	30 e0       	ldi	r19, 0x00	; 0
    9cd0:	10 c0       	rjmp	.+32     	; 0x9cf2 <FileWriteBlock+0x102>
			memcpy(&(fileIn[mytaskid][pHeaders->writeFile.offset]), pHeaders->writeFile.data, numBytes);
    9cd2:	37 2d       	mov	r19, r7
    9cd4:	20 e0       	ldi	r18, 0x00	; 0
    9cd6:	24 0f       	add	r18, r20
    9cd8:	35 1f       	adc	r19, r21
    9cda:	2f 5a       	subi	r18, 0xAF	; 175
    9cdc:	36 47       	sbci	r19, 0x76	; 118
    9cde:	a6 01       	movw	r20, r12
    9ce0:	4d 5d       	subi	r20, 0xDD	; 221
    9ce2:	5f 4f       	sbci	r21, 0xFF	; 255
    9ce4:	c9 01       	movw	r24, r18
    9ce6:	ba 01       	movw	r22, r20
    9ce8:	af 01       	movw	r20, r30
    9cea:	0e 94 1c f0 	call	0x1e038	; 0x1e038 <memcpy>
    9cee:	20 e0       	ldi	r18, 0x00	; 0
    9cf0:	30 e0       	ldi	r19, 0x00	; 0
		else
			nakType = NAKDISP_DATA;

		if((pHeaders->writeFile.offset + numBytes) >= writingFile.fileSize)
    9cf2:	f6 01       	movw	r30, r12
    9cf4:	85 8d       	ldd	r24, Z+29	; 0x1d
    9cf6:	96 8d       	ldd	r25, Z+30	; 0x1e
    9cf8:	a7 8d       	ldd	r26, Z+31	; 0x1f
    9cfa:	b0 a1       	ldd	r27, Z+32	; 0x20
    9cfc:	e8 0e       	add	r14, r24
    9cfe:	f9 1e       	adc	r15, r25
    9d00:	0a 1f       	adc	r16, r26
    9d02:	1b 1f       	adc	r17, r27
    9d04:	80 91 27 89 	lds	r24, 0x8927
    9d08:	90 91 28 89 	lds	r25, 0x8928
    9d0c:	a0 91 29 89 	lds	r26, 0x8929
    9d10:	b0 91 2a 89 	lds	r27, 0x892A
    9d14:	e8 16       	cp	r14, r24
    9d16:	f9 06       	cpc	r15, r25
    9d18:	0a 07       	cpc	r16, r26
    9d1a:	1b 07       	cpc	r17, r27
    9d1c:	d0 f0       	brcs	.+52     	; 0x9d52 <FileWriteBlock+0x162>
		{
			//Rename writingFile.tempFileName to writingFile.finalFileName
			//Log information in log file 
			memset(&writingFile, 0, sizeof(FILE_WRITE_IN_PROGRESS));
    9d1e:	86 e5       	ldi	r24, 0x56	; 86
    9d20:	e7 ef       	ldi	r30, 0xF7	; 247
    9d22:	f8 e8       	ldi	r31, 0x88	; 136
    9d24:	df 01       	movw	r26, r30
    9d26:	1d 92       	st	X+, r1
    9d28:	8a 95       	dec	r24
    9d2a:	e9 f7       	brne	.-6      	; 0x9d26 <FileWriteBlock+0x136>
			writingFile.writeStatus = NO_WRITE_IN_PROGRESS;
    9d2c:	10 92 f7 88 	sts	0x88F7, r1
			fileAvailableID[mytaskid] = hyperionID;
    9d30:	a7 2d       	mov	r26, r7
    9d32:	b0 e0       	ldi	r27, 0x00	; 0
    9d34:	fd 01       	movw	r30, r26
    9d36:	ee 0f       	add	r30, r30
    9d38:	ff 1f       	adc	r31, r31
    9d3a:	ee 0f       	add	r30, r30
    9d3c:	ff 1f       	adc	r31, r31
    9d3e:	ed 57       	subi	r30, 0x7D	; 125
    9d40:	f8 4f       	sbci	r31, 0xF8	; 248
    9d42:	80 82       	st	Z, r8
    9d44:	91 82       	std	Z+1, r9	; 0x01
    9d46:	a2 82       	std	Z+2, r10	; 0x02
    9d48:	b3 82       	std	Z+3, r11	; 0x03
			fileAvailable[mytaskid] = TRUE;
    9d4a:	af 59       	subi	r26, 0x9F	; 159
    9d4c:	b2 46       	sbci	r27, 0x62	; 98
    9d4e:	8f ef       	ldi	r24, 0xFF	; 255
    9d50:	8c 93       	st	X, r24
			//Set flag for task that data is available
		}
	}

	if(nakType == 0)
    9d52:	21 15       	cp	r18, r1
    9d54:	31 05       	cpc	r19, r1
    9d56:	09 f0       	breq	.+2      	; 0x9d5a <FileWriteBlock+0x16a>
    9d58:	62 c0       	rjmp	.+196    	; 0x9e1e <FileWriteBlock+0x22e>
	{
		pyldFileAcks.headers.destination = pHeaders->wrapper.source;
    9d5a:	f6 01       	movw	r30, r12
    9d5c:	84 81       	ldd	r24, Z+4	; 0x04
    9d5e:	95 81       	ldd	r25, Z+5	; 0x05
    9d60:	90 93 03 88 	sts	0x8803, r25
    9d64:	80 93 02 88 	sts	0x8802, r24
		pyldFileAcks.headers.source = pHeaders->wrapper.destination;
    9d68:	82 81       	ldd	r24, Z+2	; 0x02
    9d6a:	93 81       	ldd	r25, Z+3	; 0x03
    9d6c:	90 93 05 88 	sts	0x8805, r25
    9d70:	80 93 04 88 	sts	0x8804, r24
		pyldFileAcks.headers.msgID = pHeaders->wrapper.msgID;
    9d74:	86 81       	ldd	r24, Z+6	; 0x06
    9d76:	97 81       	ldd	r25, Z+7	; 0x07
    9d78:	90 93 07 88 	sts	0x8807, r25
    9d7c:	80 93 06 88 	sts	0x8806, r24
		pyldFileAcks.headers.length = sizeof(LRI_COMM_WRAPPER) + sizeof(LRI_GENERIC_ACK) + sizeof(COMM_HEADER) + CRC16_SIZE;
    9d80:	85 e1       	ldi	r24, 0x15	; 21
    9d82:	90 e0       	ldi	r25, 0x00	; 0
    9d84:	90 93 01 88 	sts	0x8801, r25
    9d88:	80 93 00 88 	sts	0x8800, r24
		pyldFileAcks.headers.msgType = LRI_ACK;		//0x05;
    9d8c:	81 e0       	ldi	r24, 0x01	; 1
    9d8e:	90 e0       	ldi	r25, 0x00	; 0
    9d90:	90 93 09 88 	sts	0x8809, r25
    9d94:	80 93 08 88 	sts	0x8808, r24
		pyldFileAcks.ackInfo.originalCmd = pHeaders->wrapper.msgType;
    9d98:	80 85       	ldd	r24, Z+8	; 0x08
    9d9a:	91 85       	ldd	r25, Z+9	; 0x09
    9d9c:	90 93 0b 88 	sts	0x880B, r25
    9da0:	80 93 0a 88 	sts	0x880A, r24
		pyldFileAcks.toShoreheader.packetID = pHeaders->header.packetID;
    9da4:	86 85       	ldd	r24, Z+14	; 0x0e
    9da6:	97 85       	ldd	r25, Z+15	; 0x0f
    9da8:	a0 89       	ldd	r26, Z+16	; 0x10
    9daa:	b1 89       	ldd	r27, Z+17	; 0x11
    9dac:	80 93 0d 88 	sts	0x880D, r24
    9db0:	90 93 0e 88 	sts	0x880E, r25
    9db4:	a0 93 0f 88 	sts	0x880F, r26
    9db8:	b0 93 10 88 	sts	0x8810, r27
		pyldFileAcks.toShoreheader.size = 0;
    9dbc:	10 92 12 88 	sts	0x8812, r1
    9dc0:	10 92 11 88 	sts	0x8811, r1
		pyldFileAcks.toShoreheader.type = 0x13;
    9dc4:	83 e1       	ldi	r24, 0x13	; 19
    9dc6:	80 93 0c 88 	sts	0x880C, r24
		pyldFileAcks.crc = CalculateCRC16((uint8_t*) &pyldFileAcks, sizeof(LRI_COMM_WRAPPER) + sizeof(LRI_GENERIC_ACK) + sizeof(COMM_HEADER), OTHER_CRC_START);
    9dca:	e0 e0       	ldi	r30, 0x00	; 0
    9dcc:	f8 e8       	ldi	r31, 0x88	; 136
    9dce:	20 e0       	ldi	r18, 0x00	; 0
    9dd0:	30 e0       	ldi	r19, 0x00	; 0
    9dd2:	18 c0       	rjmp	.+48     	; 0x9e04 <FileWriteBlock+0x214>
    9dd4:	81 91       	ld	r24, Z+
    9dd6:	28 27       	eor	r18, r24
    9dd8:	82 2f       	mov	r24, r18
    9dda:	82 95       	swap	r24
    9ddc:	82 27       	eor	r24, r18
    9dde:	08 2e       	mov	r0, r24
    9de0:	86 95       	lsr	r24
    9de2:	86 95       	lsr	r24
    9de4:	80 25       	eor	r24, r0
    9de6:	08 2e       	mov	r0, r24
    9de8:	86 95       	lsr	r24
    9dea:	80 25       	eor	r24, r0
    9dec:	87 70       	andi	r24, 0x07	; 7
    9dee:	02 2e       	mov	r0, r18
    9df0:	23 2f       	mov	r18, r19
    9df2:	86 95       	lsr	r24
    9df4:	07 94       	ror	r0
    9df6:	87 95       	ror	r24
    9df8:	30 2d       	mov	r19, r0
    9dfa:	28 27       	eor	r18, r24
    9dfc:	06 94       	lsr	r0
    9dfe:	87 95       	ror	r24
    9e00:	30 25       	eor	r19, r0
    9e02:	28 27       	eor	r18, r24
//---------------------------------------------------------------------------------
uint16_t CalculateCRC16(uint8_t* pBuffer, uint16_t size, uint16_t initValue)
{
	uint16_t crc = initValue;

	for(int i = 0; i < (size); i++)
    9e04:	88 e8       	ldi	r24, 0x88	; 136
    9e06:	e3 31       	cpi	r30, 0x13	; 19
    9e08:	f8 07       	cpc	r31, r24
    9e0a:	21 f7       	brne	.-56     	; 0x9dd4 <FileWriteBlock+0x1e4>
		pyldFileAcks.headers.msgType = LRI_ACK;		//0x05;
		pyldFileAcks.ackInfo.originalCmd = pHeaders->wrapper.msgType;
		pyldFileAcks.toShoreheader.packetID = pHeaders->header.packetID;
		pyldFileAcks.toShoreheader.size = 0;
		pyldFileAcks.toShoreheader.type = 0x13;
		pyldFileAcks.crc = CalculateCRC16((uint8_t*) &pyldFileAcks, sizeof(LRI_COMM_WRAPPER) + sizeof(LRI_GENERIC_ACK) + sizeof(COMM_HEADER), OTHER_CRC_START);
    9e0c:	31 83       	std	Z+1, r19	; 0x01
    9e0e:	20 83       	st	Z, r18
		TxHDLC((uint8_t*)&pyldFileAcks, pyldFileAcks.headers.length);
    9e10:	cf 01       	movw	r24, r30
    9e12:	43 97       	sbiw	r24, 0x13	; 19
    9e14:	65 e1       	ldi	r22, 0x15	; 21
    9e16:	70 e0       	ldi	r23, 0x00	; 0
    9e18:	80 c0       	rjmp	.+256    	; 0x9f1a <FileWriteBlock+0x32a>
    9e1a:	2a e0       	ldi	r18, 0x0A	; 10
    9e1c:	30 e0       	ldi	r19, 0x00	; 0
	}
	else
	{
		memset(&writingFile, 0, sizeof(FILE_WRITE_IN_PROGRESS));
    9e1e:	86 e5       	ldi	r24, 0x56	; 86
    9e20:	e7 ef       	ldi	r30, 0xF7	; 247
    9e22:	f8 e8       	ldi	r31, 0x88	; 136
    9e24:	df 01       	movw	r26, r30
    9e26:	1d 92       	st	X+, r1
    9e28:	8a 95       	dec	r24
    9e2a:	e9 f7       	brne	.-6      	; 0x9e26 <FileWriteBlock+0x236>
		fileInSize[mytaskid] = 0;
    9e2c:	e7 2d       	mov	r30, r7
    9e2e:	f0 e0       	ldi	r31, 0x00	; 0
    9e30:	ee 0f       	add	r30, r30
    9e32:	ff 1f       	adc	r31, r31
    9e34:	e7 5a       	subi	r30, 0xA7	; 167
    9e36:	f2 46       	sbci	r31, 0x62	; 98
    9e38:	11 82       	std	Z+1, r1	; 0x01
    9e3a:	10 82       	st	Z, r1
		writingFile.writeStatus = NO_WRITE_IN_PROGRESS;
    9e3c:	10 92 f7 88 	sts	0x88F7, r1
		pyldFileNaks.headers.destination = pHeaders->wrapper.source;
    9e40:	f6 01       	movw	r30, r12
    9e42:	84 81       	ldd	r24, Z+4	; 0x04
    9e44:	95 81       	ldd	r25, Z+5	; 0x05
    9e46:	90 93 e1 88 	sts	0x88E1, r25
    9e4a:	80 93 e0 88 	sts	0x88E0, r24
		pyldFileNaks.headers.source = pHeaders->wrapper.destination;
    9e4e:	82 81       	ldd	r24, Z+2	; 0x02
    9e50:	93 81       	ldd	r25, Z+3	; 0x03
    9e52:	90 93 e3 88 	sts	0x88E3, r25
    9e56:	80 93 e2 88 	sts	0x88E2, r24
		pyldFileNaks.headers.msgID = pHeaders->wrapper.msgID;
    9e5a:	86 81       	ldd	r24, Z+6	; 0x06
    9e5c:	97 81       	ldd	r25, Z+7	; 0x07
    9e5e:	90 93 e5 88 	sts	0x88E5, r25
    9e62:	80 93 e4 88 	sts	0x88E4, r24
		pyldFileNaks.headers.length = sizeof(LRI_COMM_WRAPPER) + sizeof(LRI_GENERIC_NAK) + sizeof(COMM_HEADER) + sizeof(NAK_FILE);
    9e66:	89 e1       	ldi	r24, 0x19	; 25
    9e68:	90 e0       	ldi	r25, 0x00	; 0
    9e6a:	90 93 df 88 	sts	0x88DF, r25
    9e6e:	80 93 de 88 	sts	0x88DE, r24
		pyldFileNaks.headers.msgType = 0x04;
    9e72:	84 e0       	ldi	r24, 0x04	; 4
    9e74:	90 e0       	ldi	r25, 0x00	; 0
    9e76:	90 93 e7 88 	sts	0x88E7, r25
    9e7a:	80 93 e6 88 	sts	0x88E6, r24
		pyldFileNaks.nakInfo.originalCmd = pHeaders->wrapper.msgType;
    9e7e:	80 85       	ldd	r24, Z+8	; 0x08
    9e80:	91 85       	ldd	r25, Z+9	; 0x09
    9e82:	90 93 e9 88 	sts	0x88E9, r25
    9e86:	80 93 e8 88 	sts	0x88E8, r24
		pyldFileNaks.nakInfo.nakSummary = 0;
    9e8a:	10 92 ea 88 	sts	0x88EA, r1
		pyldFileNaks.toShoreheader.packetID = pHeaders->header.packetID;
    9e8e:	86 85       	ldd	r24, Z+14	; 0x0e
    9e90:	97 85       	ldd	r25, Z+15	; 0x0f
    9e92:	a0 89       	ldd	r26, Z+16	; 0x10
    9e94:	b1 89       	ldd	r27, Z+17	; 0x11
    9e96:	80 93 ec 88 	sts	0x88EC, r24
    9e9a:	90 93 ed 88 	sts	0x88ED, r25
    9e9e:	a0 93 ee 88 	sts	0x88EE, r26
    9ea2:	b0 93 ef 88 	sts	0x88EF, r27
		pyldFileNaks.toShoreheader.size = 3;
    9ea6:	83 e0       	ldi	r24, 0x03	; 3
    9ea8:	90 e0       	ldi	r25, 0x00	; 0
    9eaa:	90 93 f1 88 	sts	0x88F1, r25
    9eae:	80 93 f0 88 	sts	0x88F0, r24
		pyldFileNaks.toShoreheader.type = 0x24;
    9eb2:	84 e2       	ldi	r24, 0x24	; 36
    9eb4:	80 93 eb 88 	sts	0x88EB, r24
		pyldFileNaks.nakFile.count = 1;
    9eb8:	81 e0       	ldi	r24, 0x01	; 1
    9eba:	90 e0       	ldi	r25, 0x00	; 0
    9ebc:	90 93 f3 88 	sts	0x88F3, r25
    9ec0:	80 93 f2 88 	sts	0x88F2, r24
		pyldFileNaks.nakFile.result = nakType;
    9ec4:	20 93 f4 88 	sts	0x88F4, r18
		pyldFileNaks.nakFile.crc = CalculateCRC16((uint8_t*) &pyldFileAcks, sizeof(LRI_COMM_WRAPPER) + sizeof(LRI_GENERIC_NAK) + sizeof(COMM_HEADER) + sizeof(NAK_FILE) - CRC16_SIZE, OTHER_CRC_START);
    9ec8:	e0 e0       	ldi	r30, 0x00	; 0
    9eca:	f8 e8       	ldi	r31, 0x88	; 136
    9ecc:	20 e0       	ldi	r18, 0x00	; 0
    9ece:	30 e0       	ldi	r19, 0x00	; 0
    9ed0:	18 c0       	rjmp	.+48     	; 0x9f02 <FileWriteBlock+0x312>
    9ed2:	81 91       	ld	r24, Z+
    9ed4:	28 27       	eor	r18, r24
    9ed6:	82 2f       	mov	r24, r18
    9ed8:	82 95       	swap	r24
    9eda:	82 27       	eor	r24, r18
    9edc:	08 2e       	mov	r0, r24
    9ede:	86 95       	lsr	r24
    9ee0:	86 95       	lsr	r24
    9ee2:	80 25       	eor	r24, r0
    9ee4:	08 2e       	mov	r0, r24
    9ee6:	86 95       	lsr	r24
    9ee8:	80 25       	eor	r24, r0
    9eea:	87 70       	andi	r24, 0x07	; 7
    9eec:	02 2e       	mov	r0, r18
    9eee:	23 2f       	mov	r18, r19
    9ef0:	86 95       	lsr	r24
    9ef2:	07 94       	ror	r0
    9ef4:	87 95       	ror	r24
    9ef6:	30 2d       	mov	r19, r0
    9ef8:	28 27       	eor	r18, r24
    9efa:	06 94       	lsr	r0
    9efc:	87 95       	ror	r24
    9efe:	30 25       	eor	r19, r0
    9f00:	28 27       	eor	r18, r24
//---------------------------------------------------------------------------------
uint16_t CalculateCRC16(uint8_t* pBuffer, uint16_t size, uint16_t initValue)
{
	uint16_t crc = initValue;

	for(int i = 0; i < (size); i++)
    9f02:	88 e8       	ldi	r24, 0x88	; 136
    9f04:	e7 31       	cpi	r30, 0x17	; 23
    9f06:	f8 07       	cpc	r31, r24
    9f08:	21 f7       	brne	.-56     	; 0x9ed2 <FileWriteBlock+0x2e2>
		pyldFileNaks.toShoreheader.packetID = pHeaders->header.packetID;
		pyldFileNaks.toShoreheader.size = 3;
		pyldFileNaks.toShoreheader.type = 0x24;
		pyldFileNaks.nakFile.count = 1;
		pyldFileNaks.nakFile.result = nakType;
		pyldFileNaks.nakFile.crc = CalculateCRC16((uint8_t*) &pyldFileAcks, sizeof(LRI_COMM_WRAPPER) + sizeof(LRI_GENERIC_NAK) + sizeof(COMM_HEADER) + sizeof(NAK_FILE) - CRC16_SIZE, OTHER_CRC_START);
    9f0a:	30 93 f6 88 	sts	0x88F6, r19
    9f0e:	20 93 f5 88 	sts	0x88F5, r18
		TxHDLC((uint8_t*)&pyldFileAcks, pyldFileAcks.headers.length);
    9f12:	77 97       	sbiw	r30, 0x17	; 23
    9f14:	60 81       	ld	r22, Z
    9f16:	71 81       	ldd	r23, Z+1	; 0x01
    9f18:	cf 01       	movw	r24, r30
    9f1a:	0e 94 fe 45 	call	0x8bfc	; 0x8bfc <TxHDLC>
	}
	return;
}
    9f1e:	2d 96       	adiw	r28, 0x0d	; 13
    9f20:	0f b6       	in	r0, 0x3f	; 63
    9f22:	f8 94       	cli
    9f24:	de bf       	out	0x3e, r29	; 62
    9f26:	0f be       	out	0x3f, r0	; 63
    9f28:	cd bf       	out	0x3d, r28	; 61
    9f2a:	cf 91       	pop	r28
    9f2c:	df 91       	pop	r29
    9f2e:	1f 91       	pop	r17
    9f30:	0f 91       	pop	r16
    9f32:	ff 90       	pop	r15
    9f34:	ef 90       	pop	r14
    9f36:	df 90       	pop	r13
    9f38:	cf 90       	pop	r12
    9f3a:	bf 90       	pop	r11
    9f3c:	af 90       	pop	r10
    9f3e:	9f 90       	pop	r9
    9f40:	8f 90       	pop	r8
    9f42:	7f 90       	pop	r7
    9f44:	08 95       	ret

00009f46 <FileInitializeWrite>:
	}	
	return;
}

void FileInitializeWrite(PPYLD_MGR_FILE_RX_BUFFER pHeaders)
{
    9f46:	bf 92       	push	r11
    9f48:	cf 92       	push	r12
    9f4a:	df 92       	push	r13
    9f4c:	ef 92       	push	r14
    9f4e:	ff 92       	push	r15
    9f50:	0f 93       	push	r16
    9f52:	1f 93       	push	r17
    9f54:	df 93       	push	r29
    9f56:	cf 93       	push	r28
    9f58:	cd b7       	in	r28, 0x3d	; 61
    9f5a:	de b7       	in	r29, 0x3e	; 62
    9f5c:	2d 97       	sbiw	r28, 0x0d	; 13
    9f5e:	0f b6       	in	r0, 0x3f	; 63
    9f60:	f8 94       	cli
    9f62:	de bf       	out	0x3e, r29	; 62
    9f64:	0f be       	out	0x3f, r0	; 63
    9f66:	cd bf       	out	0x3d, r28	; 61
    9f68:	8c 01       	movw	r16, r24
	char fileName[13] = {0};
    9f6a:	fe 01       	movw	r30, r28
    9f6c:	31 96       	adiw	r30, 0x01	; 1
    9f6e:	8d e0       	ldi	r24, 0x0D	; 13
    9f70:	df 01       	movw	r26, r30
    9f72:	1d 92       	st	X+, r1
    9f74:	8a 95       	dec	r24
    9f76:	e9 f7       	brne	.-6      	; 0x9f72 <FileInitializeWrite+0x2c>
	BOOL proceed = TRUE;
	int nakType = 0;
	uint8_t retval = FAIL;

	uint8_t mytaskid = (pHeaders->wrapper.destination & 0x00FF);
    9f78:	d8 01       	movw	r26, r16
    9f7a:	12 96       	adiw	r26, 0x02	; 2
    9f7c:	bc 90       	ld	r11, X
    9f7e:	12 97       	sbiw	r26, 0x02	; 2
    9f80:	13 96       	adiw	r26, 0x03	; 3
    9f82:	fc 90       	ld	r15, X
	uint8_t myboardid = (pHeaders->wrapper.destination & 0xFF00) >> 8;
			
	memcpy(fileName, pHeaders->initFileWrite.fileName, 11);
    9f84:	39 e1       	ldi	r19, 0x19	; 25
    9f86:	c3 2e       	mov	r12, r19
    9f88:	d1 2c       	mov	r13, r1
    9f8a:	c0 0e       	add	r12, r16
    9f8c:	d1 1e       	adc	r13, r17
    9f8e:	d6 01       	movw	r26, r12
    9f90:	8b e0       	ldi	r24, 0x0B	; 11
    9f92:	0d 90       	ld	r0, X+
    9f94:	01 92       	st	Z+, r0
    9f96:	81 50       	subi	r24, 0x01	; 1
    9f98:	e1 f7       	brne	.-8      	; 0x9f92 <FileInitializeWrite+0x4c>


	memset(fileName, 0, 13);
    9f9a:	fe 01       	movw	r30, r28
    9f9c:	31 96       	adiw	r30, 0x01	; 1
    9f9e:	8d e0       	ldi	r24, 0x0D	; 13
    9fa0:	df 01       	movw	r26, r30
    9fa2:	1d 92       	st	X+, r1
    9fa4:	8a 95       	dec	r24
    9fa6:	e9 f7       	brne	.-6      	; 0x9fa2 <FileInitializeWrite+0x5c>

	//Check for WGMS File ID in logs to see if it already exists for current files -- if so, then this new
	//one will delete the old one, even if different names

	if(writingFile.writeStatus == NO_WRITE_IN_PROGRESS)
    9fa8:	80 91 f7 88 	lds	r24, 0x88F7
    9fac:	88 23       	and	r24, r24
    9fae:	09 f0       	breq	.+2      	; 0x9fb2 <FileInitializeWrite+0x6c>
    9fb0:	ab c1       	rjmp	.+854    	; 0xa308 <FileInitializeWrite+0x3c2>
	{
		retval = PadToDot(pHeaders->initFileWrite.fileName, fileName);
    9fb2:	c6 01       	movw	r24, r12
    9fb4:	bf 01       	movw	r22, r30
    9fb6:	0e 94 e3 3e 	call	0x7dc6	; 0x7dc6 <PadToDot>
		if(retval == FAIL)
    9fba:	88 23       	and	r24, r24
    9fbc:	09 f0       	breq	.+2      	; 0x9fc0 <FileInitializeWrite+0x7a>
    9fbe:	95 c1       	rjmp	.+810    	; 0xa2ea <FileInitializeWrite+0x3a4>
    9fc0:	25 e0       	ldi	r18, 0x05	; 5
    9fc2:	30 e0       	ldi	r19, 0x00	; 0
    9fc4:	02 c1       	rjmp	.+516    	; 0xa1ca <FileInitializeWrite+0x284>
	}

	
	if(proceed)
	{
		if((myboardid != mainBoardID) && (mytaskid >= NUM_TASK_FILES))
    9fc6:	80 91 e6 03 	lds	r24, 0x03E6
    9fca:	8f 15       	cp	r24, r15
    9fcc:	21 f0       	breq	.+8      	; 0x9fd6 <FileInitializeWrite+0x90>
    9fce:	b3 e0       	ldi	r27, 0x03	; 3
    9fd0:	bb 15       	cp	r27, r11
    9fd2:	08 f4       	brcc	.+2      	; 0x9fd6 <FileInitializeWrite+0x90>
    9fd4:	f8 c0       	rjmp	.+496    	; 0xa1c6 <FileInitializeWrite+0x280>
			nakType = NAKDISP_MISSING_STORAGE;
			proceed = FALSE;
		}
		if(proceed)
		{
			if(fileAllowed[mytaskid] == FALSE)
    9fd6:	eb 2c       	mov	r14, r11
    9fd8:	ff 24       	eor	r15, r15
    9fda:	f7 01       	movw	r30, r14
    9fdc:	e3 5b       	subi	r30, 0xB3	; 179
    9fde:	f6 47       	sbci	r31, 0x76	; 118
    9fe0:	80 81       	ld	r24, Z
    9fe2:	88 23       	and	r24, r24
    9fe4:	09 f4       	brne	.+2      	; 0x9fe8 <FileInitializeWrite+0xa2>
    9fe6:	ef c0       	rjmp	.+478    	; 0xa1c6 <FileInitializeWrite+0x280>
		}
	}

	if(proceed)
	{
		if(fileOutSize[mytaskid] > 0)
    9fe8:	f7 01       	movw	r30, r14
    9fea:	ee 0f       	add	r30, r30
    9fec:	ff 1f       	adc	r31, r31
    9fee:	ef 5a       	subi	r30, 0xAF	; 175
    9ff0:	f2 46       	sbci	r31, 0x62	; 98
    9ff2:	80 81       	ld	r24, Z
    9ff4:	91 81       	ldd	r25, Z+1	; 0x01
    9ff6:	89 2b       	or	r24, r25
    9ff8:	09 f0       	breq	.+2      	; 0x9ffc <FileInitializeWrite+0xb6>
    9ffa:	86 c1       	rjmp	.+780    	; 0xa308 <FileInitializeWrite+0x3c2>
		}
	}

	if(proceed)
	{
		memcpy(writingFile.finalFileName, fileName, 13);
    9ffc:	a5 e0       	ldi	r26, 0x05	; 5
    9ffe:	b9 e8       	ldi	r27, 0x89	; 137
    a000:	fe 01       	movw	r30, r28
    a002:	31 96       	adiw	r30, 0x01	; 1
    a004:	8d e0       	ldi	r24, 0x0D	; 13
    a006:	01 90       	ld	r0, Z+
    a008:	0d 92       	st	X+, r0
    a00a:	81 50       	subi	r24, 0x01	; 1
    a00c:	e1 f7       	brne	.-8      	; 0xa006 <FileInitializeWrite+0xc0>
		writingFile.contentCRC = pHeaders->initFileWrite.contentCRC;
    a00e:	f8 01       	movw	r30, r16
    a010:	82 ad       	ldd	r24, Z+58	; 0x3a
    a012:	93 ad       	ldd	r25, Z+59	; 0x3b
    a014:	90 93 3a 89 	sts	0x893A, r25
    a018:	80 93 39 89 	sts	0x8939, r24
		memcpy(&writingFile.contentMD5, &(pHeaders->initFileWrite.contentMD5), sizeof(MD5));
    a01c:	ab e3       	ldi	r26, 0x3B	; 59
    a01e:	b9 e8       	ldi	r27, 0x89	; 137
    a020:	fc 96       	adiw	r30, 0x3c	; 60
    a022:	80 e1       	ldi	r24, 0x10	; 16
    a024:	01 90       	ld	r0, Z+
    a026:	0d 92       	st	X+, r0
    a028:	81 50       	subi	r24, 0x01	; 1
    a02a:	e1 f7       	brne	.-8      	; 0xa024 <FileInitializeWrite+0xde>
		memcpy(&writingFile.creationDate, &(pHeaders->initFileWrite.creationDate), sizeof(DATE_TIME));
    a02c:	ab e2       	ldi	r26, 0x2B	; 43
    a02e:	b9 e8       	ldi	r27, 0x89	; 137
    a030:	f8 01       	movw	r30, r16
    a032:	bc 96       	adiw	r30, 0x2c	; 44
    a034:	86 e0       	ldi	r24, 0x06	; 6
    a036:	01 90       	ld	r0, Z+
    a038:	0d 92       	st	X+, r0
    a03a:	81 50       	subi	r24, 0x01	; 1
    a03c:	e1 f7       	brne	.-8      	; 0xa036 <FileInitializeWrite+0xf0>
		memcpy(&writingFile.modifiedDate, &(pHeaders->initFileWrite.modifiedDate), sizeof(DATE_TIME));
    a03e:	a1 e3       	ldi	r26, 0x31	; 49
    a040:	b9 e8       	ldi	r27, 0x89	; 137
    a042:	f8 01       	movw	r30, r16
    a044:	f2 96       	adiw	r30, 0x32	; 50
    a046:	86 e0       	ldi	r24, 0x06	; 6
    a048:	01 90       	ld	r0, Z+
    a04a:	0d 92       	st	X+, r0
    a04c:	81 50       	subi	r24, 0x01	; 1
    a04e:	e1 f7       	brne	.-8      	; 0xa048 <FileInitializeWrite+0x102>
		writingFile.fileAttributes = pHeaders->initFileWrite.fileAttributes;
    a050:	d8 01       	movw	r26, r16
    a052:	d8 96       	adiw	r26, 0x38	; 56
    a054:	8c 91       	ld	r24, X
    a056:	d8 97       	sbiw	r26, 0x38	; 56
    a058:	80 93 37 89 	sts	0x8937, r24
		writingFile.fileID = pHeaders->initFileWrite.fileID;
    a05c:	94 96       	adiw	r26, 0x24	; 36
    a05e:	8d 91       	ld	r24, X+
    a060:	9d 91       	ld	r25, X+
    a062:	0d 90       	ld	r0, X+
    a064:	bc 91       	ld	r27, X
    a066:	a0 2d       	mov	r26, r0
    a068:	80 93 23 89 	sts	0x8923, r24
    a06c:	90 93 24 89 	sts	0x8924, r25
    a070:	a0 93 25 89 	sts	0x8925, r26
    a074:	b0 93 26 89 	sts	0x8926, r27
		memcpy(writingFile.fileName, pHeaders->initFileWrite.fileName, 11);
    a078:	a8 e1       	ldi	r26, 0x18	; 24
    a07a:	b9 e8       	ldi	r27, 0x89	; 137
    a07c:	f6 01       	movw	r30, r12
    a07e:	8b e0       	ldi	r24, 0x0B	; 11
    a080:	01 90       	ld	r0, Z+
    a082:	0d 92       	st	X+, r0
    a084:	81 50       	subi	r24, 0x01	; 1
    a086:	e1 f7       	brne	.-8      	; 0xa080 <FileInitializeWrite+0x13a>
		PadToDot(pHeaders->initFileWrite.fileName, writingFile.tempFileName);
    a088:	c6 01       	movw	r24, r12
    a08a:	68 ef       	ldi	r22, 0xF8	; 248
    a08c:	78 e8       	ldi	r23, 0x88	; 136
    a08e:	0e 94 e3 3e 	call	0x7dc6	; 0x7dc6 <PadToDot>
		writingFile.fileSize = pHeaders->initFileWrite.fileSize;
    a092:	f8 01       	movw	r30, r16
    a094:	80 a5       	ldd	r24, Z+40	; 0x28
    a096:	91 a5       	ldd	r25, Z+41	; 0x29
    a098:	a2 a5       	ldd	r26, Z+42	; 0x2a
    a09a:	b3 a5       	ldd	r27, Z+43	; 0x2b
    a09c:	80 93 27 89 	sts	0x8927, r24
    a0a0:	90 93 28 89 	sts	0x8928, r25
    a0a4:	a0 93 29 89 	sts	0x8929, r26
    a0a8:	b0 93 2a 89 	sts	0x892A, r27
		writingFile.writeStatus = WRITE_IN_PROGRESS;
    a0ac:	81 e0       	ldi	r24, 0x01	; 1
    a0ae:	80 93 f7 88 	sts	0x88F7, r24
		// if want a time-out on file writes -- writingFile.tickCount = (current Tick value)

		//Log WGMS ID, file attributes, creation date, modified date, CRC, MD5 with file name for future reference
		//Need to at least save WGMS ID and File Name correlation -- others are nice but may not be necessary
		//or use writingFile structure with only 1 allowed write at a time
		if(pHeaders->initFileWrite.overwriteFile == 0)
    a0b2:	81 ad       	ldd	r24, Z+57	; 0x39
    a0b4:	88 23       	and	r24, r24
    a0b6:	19 f4       	brne	.+6      	; 0xa0be <FileInitializeWrite+0x178>
    a0b8:	28 e0       	ldi	r18, 0x08	; 8
    a0ba:	30 e0       	ldi	r19, 0x00	; 0
    a0bc:	86 c0       	rjmp	.+268    	; 0xa1ca <FileInitializeWrite+0x284>
			proceed = FALSE;
		}

		if(proceed)
		{
			memset(&(fileIn[mytaskid][0]), 0, MAX_FILE_SIZE_IN);
    a0be:	9b 2d       	mov	r25, r11
    a0c0:	80 e0       	ldi	r24, 0x00	; 0
    a0c2:	8f 5a       	subi	r24, 0xAF	; 175
    a0c4:	96 47       	sbci	r25, 0x76	; 118
    a0c6:	fc 01       	movw	r30, r24
    a0c8:	80 e0       	ldi	r24, 0x00	; 0
    a0ca:	91 e0       	ldi	r25, 0x01	; 1
    a0cc:	df 01       	movw	r26, r30
    a0ce:	9c 01       	movw	r18, r24
    a0d0:	1d 92       	st	X+, r1
    a0d2:	21 50       	subi	r18, 0x01	; 1
    a0d4:	30 40       	sbci	r19, 0x00	; 0
    a0d6:	e1 f7       	brne	.-8      	; 0xa0d0 <FileInitializeWrite+0x18a>
			fileInSize[mytaskid] = pHeaders->initFileWrite.fileSize;
    a0d8:	ee 0c       	add	r14, r14
    a0da:	ff 1c       	adc	r15, r15
    a0dc:	89 e5       	ldi	r24, 0x59	; 89
    a0de:	9d e9       	ldi	r25, 0x9D	; 157
    a0e0:	e8 0e       	add	r14, r24
    a0e2:	f9 1e       	adc	r15, r25
    a0e4:	d8 01       	movw	r26, r16
    a0e6:	98 96       	adiw	r26, 0x28	; 40
    a0e8:	8d 91       	ld	r24, X+
    a0ea:	9c 91       	ld	r25, X
    a0ec:	99 97       	sbiw	r26, 0x29	; 41
    a0ee:	f7 01       	movw	r30, r14
    a0f0:	91 83       	std	Z+1, r25	; 0x01
    a0f2:	80 83       	st	Z, r24
		}
	}
	if(nakType == 0)
	{
		pyldFileAcks.headers.destination = pHeaders->wrapper.source;
    a0f4:	14 96       	adiw	r26, 0x04	; 4
    a0f6:	8d 91       	ld	r24, X+
    a0f8:	9c 91       	ld	r25, X
    a0fa:	15 97       	sbiw	r26, 0x05	; 5
    a0fc:	90 93 03 88 	sts	0x8803, r25
    a100:	80 93 02 88 	sts	0x8802, r24
		pyldFileAcks.headers.source = pHeaders->wrapper.destination;
    a104:	12 96       	adiw	r26, 0x02	; 2
    a106:	8d 91       	ld	r24, X+
    a108:	9c 91       	ld	r25, X
    a10a:	13 97       	sbiw	r26, 0x03	; 3
    a10c:	90 93 05 88 	sts	0x8805, r25
    a110:	80 93 04 88 	sts	0x8804, r24
		pyldFileAcks.headers.msgID = pHeaders->wrapper.msgID;
    a114:	16 96       	adiw	r26, 0x06	; 6
    a116:	8d 91       	ld	r24, X+
    a118:	9c 91       	ld	r25, X
    a11a:	17 97       	sbiw	r26, 0x07	; 7
    a11c:	90 93 07 88 	sts	0x8807, r25
    a120:	80 93 06 88 	sts	0x8806, r24
		pyldFileAcks.headers.length = sizeof(LRI_COMM_WRAPPER) + sizeof(LRI_GENERIC_ACK) + sizeof(COMM_HEADER) + CRC16_SIZE;
    a124:	85 e1       	ldi	r24, 0x15	; 21
    a126:	90 e0       	ldi	r25, 0x00	; 0
    a128:	90 93 01 88 	sts	0x8801, r25
    a12c:	80 93 00 88 	sts	0x8800, r24
		pyldFileAcks.headers.msgType = LRI_ACK;		//0x05;
    a130:	81 e0       	ldi	r24, 0x01	; 1
    a132:	90 e0       	ldi	r25, 0x00	; 0
    a134:	90 93 09 88 	sts	0x8809, r25
    a138:	80 93 08 88 	sts	0x8808, r24
		pyldFileAcks.ackInfo.originalCmd = pHeaders->wrapper.msgType;
    a13c:	18 96       	adiw	r26, 0x08	; 8
    a13e:	8d 91       	ld	r24, X+
    a140:	9c 91       	ld	r25, X
    a142:	19 97       	sbiw	r26, 0x09	; 9
    a144:	90 93 0b 88 	sts	0x880B, r25
    a148:	80 93 0a 88 	sts	0x880A, r24
		pyldFileAcks.toShoreheader.packetID = pHeaders->header.packetID;
    a14c:	1e 96       	adiw	r26, 0x0e	; 14
    a14e:	8d 91       	ld	r24, X+
    a150:	9d 91       	ld	r25, X+
    a152:	0d 90       	ld	r0, X+
    a154:	bc 91       	ld	r27, X
    a156:	a0 2d       	mov	r26, r0
    a158:	80 93 0d 88 	sts	0x880D, r24
    a15c:	90 93 0e 88 	sts	0x880E, r25
    a160:	a0 93 0f 88 	sts	0x880F, r26
    a164:	b0 93 10 88 	sts	0x8810, r27
		pyldFileAcks.toShoreheader.size = 0;
    a168:	10 92 12 88 	sts	0x8812, r1
    a16c:	10 92 11 88 	sts	0x8811, r1
		pyldFileAcks.toShoreheader.type = 0x13;
    a170:	83 e1       	ldi	r24, 0x13	; 19
    a172:	80 93 0c 88 	sts	0x880C, r24
		pyldFileAcks.crc = CalculateCRC16((uint8_t*) &pyldFileAcks, sizeof(LRI_COMM_WRAPPER) + sizeof(LRI_GENERIC_ACK) + sizeof(COMM_HEADER), OTHER_CRC_START);
    a176:	e0 e0       	ldi	r30, 0x00	; 0
    a178:	f8 e8       	ldi	r31, 0x88	; 136
    a17a:	20 e0       	ldi	r18, 0x00	; 0
    a17c:	30 e0       	ldi	r19, 0x00	; 0
    a17e:	18 c0       	rjmp	.+48     	; 0xa1b0 <FileInitializeWrite+0x26a>
    a180:	81 91       	ld	r24, Z+
    a182:	28 27       	eor	r18, r24
    a184:	82 2f       	mov	r24, r18
    a186:	82 95       	swap	r24
    a188:	82 27       	eor	r24, r18
    a18a:	08 2e       	mov	r0, r24
    a18c:	86 95       	lsr	r24
    a18e:	86 95       	lsr	r24
    a190:	80 25       	eor	r24, r0
    a192:	08 2e       	mov	r0, r24
    a194:	86 95       	lsr	r24
    a196:	80 25       	eor	r24, r0
    a198:	87 70       	andi	r24, 0x07	; 7
    a19a:	02 2e       	mov	r0, r18
    a19c:	23 2f       	mov	r18, r19
    a19e:	86 95       	lsr	r24
    a1a0:	07 94       	ror	r0
    a1a2:	87 95       	ror	r24
    a1a4:	30 2d       	mov	r19, r0
    a1a6:	28 27       	eor	r18, r24
    a1a8:	06 94       	lsr	r0
    a1aa:	87 95       	ror	r24
    a1ac:	30 25       	eor	r19, r0
    a1ae:	28 27       	eor	r18, r24
//---------------------------------------------------------------------------------
uint16_t CalculateCRC16(uint8_t* pBuffer, uint16_t size, uint16_t initValue)
{
	uint16_t crc = initValue;

	for(int i = 0; i < (size); i++)
    a1b0:	88 e8       	ldi	r24, 0x88	; 136
    a1b2:	e3 31       	cpi	r30, 0x13	; 19
    a1b4:	f8 07       	cpc	r31, r24
    a1b6:	21 f7       	brne	.-56     	; 0xa180 <FileInitializeWrite+0x23a>
		pyldFileAcks.headers.msgType = LRI_ACK;		//0x05;
		pyldFileAcks.ackInfo.originalCmd = pHeaders->wrapper.msgType;
		pyldFileAcks.toShoreheader.packetID = pHeaders->header.packetID;
		pyldFileAcks.toShoreheader.size = 0;
		pyldFileAcks.toShoreheader.type = 0x13;
		pyldFileAcks.crc = CalculateCRC16((uint8_t*) &pyldFileAcks, sizeof(LRI_COMM_WRAPPER) + sizeof(LRI_GENERIC_ACK) + sizeof(COMM_HEADER), OTHER_CRC_START);
    a1b8:	31 83       	std	Z+1, r19	; 0x01
    a1ba:	20 83       	st	Z, r18
		TxHDLC((uint8_t*)&pyldFileAcks, pyldFileAcks.headers.length);
    a1bc:	cf 01       	movw	r24, r30
    a1be:	43 97       	sbiw	r24, 0x13	; 19
    a1c0:	65 e1       	ldi	r22, 0x15	; 21
    a1c2:	70 e0       	ldi	r23, 0x00	; 0
    a1c4:	80 c0       	rjmp	.+256    	; 0xa2c6 <FileInitializeWrite+0x380>
    a1c6:	2a e0       	ldi	r18, 0x0A	; 10
    a1c8:	30 e0       	ldi	r19, 0x00	; 0
	}
	else
	{
		memset(&writingFile, 0, sizeof(FILE_WRITE_IN_PROGRESS));
    a1ca:	86 e5       	ldi	r24, 0x56	; 86
    a1cc:	e7 ef       	ldi	r30, 0xF7	; 247
    a1ce:	f8 e8       	ldi	r31, 0x88	; 136
    a1d0:	df 01       	movw	r26, r30
    a1d2:	1d 92       	st	X+, r1
    a1d4:	8a 95       	dec	r24
    a1d6:	e9 f7       	brne	.-6      	; 0xa1d2 <FileInitializeWrite+0x28c>
		fileInSize[mytaskid] = 0;
    a1d8:	eb 2d       	mov	r30, r11
    a1da:	f0 e0       	ldi	r31, 0x00	; 0
    a1dc:	ee 0f       	add	r30, r30
    a1de:	ff 1f       	adc	r31, r31
    a1e0:	e7 5a       	subi	r30, 0xA7	; 167
    a1e2:	f2 46       	sbci	r31, 0x62	; 98
    a1e4:	11 82       	std	Z+1, r1	; 0x01
    a1e6:	10 82       	st	Z, r1
		writingFile.writeStatus = NO_WRITE_IN_PROGRESS;
    a1e8:	10 92 f7 88 	sts	0x88F7, r1
		pyldFileNaks.headers.destination = pHeaders->wrapper.source;
    a1ec:	f8 01       	movw	r30, r16
    a1ee:	84 81       	ldd	r24, Z+4	; 0x04
    a1f0:	95 81       	ldd	r25, Z+5	; 0x05
    a1f2:	90 93 e1 88 	sts	0x88E1, r25
    a1f6:	80 93 e0 88 	sts	0x88E0, r24
		pyldFileNaks.headers.source = pHeaders->wrapper.destination;
    a1fa:	82 81       	ldd	r24, Z+2	; 0x02
    a1fc:	93 81       	ldd	r25, Z+3	; 0x03
    a1fe:	90 93 e3 88 	sts	0x88E3, r25
    a202:	80 93 e2 88 	sts	0x88E2, r24
		pyldFileNaks.headers.msgID = pHeaders->wrapper.msgID;
    a206:	86 81       	ldd	r24, Z+6	; 0x06
    a208:	97 81       	ldd	r25, Z+7	; 0x07
    a20a:	90 93 e5 88 	sts	0x88E5, r25
    a20e:	80 93 e4 88 	sts	0x88E4, r24
		pyldFileNaks.headers.length = sizeof(LRI_COMM_WRAPPER) + sizeof(LRI_GENERIC_NAK) + sizeof(COMM_HEADER) + sizeof(NAK_FILE);
    a212:	89 e1       	ldi	r24, 0x19	; 25
    a214:	90 e0       	ldi	r25, 0x00	; 0
    a216:	90 93 df 88 	sts	0x88DF, r25
    a21a:	80 93 de 88 	sts	0x88DE, r24
		pyldFileNaks.headers.msgType = 0x04;
    a21e:	84 e0       	ldi	r24, 0x04	; 4
    a220:	90 e0       	ldi	r25, 0x00	; 0
    a222:	90 93 e7 88 	sts	0x88E7, r25
    a226:	80 93 e6 88 	sts	0x88E6, r24
		pyldFileNaks.nakInfo.originalCmd = pHeaders->wrapper.msgType;
    a22a:	80 85       	ldd	r24, Z+8	; 0x08
    a22c:	91 85       	ldd	r25, Z+9	; 0x09
    a22e:	90 93 e9 88 	sts	0x88E9, r25
    a232:	80 93 e8 88 	sts	0x88E8, r24
		pyldFileNaks.nakInfo.nakSummary = 0;
    a236:	10 92 ea 88 	sts	0x88EA, r1
		pyldFileNaks.toShoreheader.packetID = pHeaders->header.packetID;
    a23a:	86 85       	ldd	r24, Z+14	; 0x0e
    a23c:	97 85       	ldd	r25, Z+15	; 0x0f
    a23e:	a0 89       	ldd	r26, Z+16	; 0x10
    a240:	b1 89       	ldd	r27, Z+17	; 0x11
    a242:	80 93 ec 88 	sts	0x88EC, r24
    a246:	90 93 ed 88 	sts	0x88ED, r25
    a24a:	a0 93 ee 88 	sts	0x88EE, r26
    a24e:	b0 93 ef 88 	sts	0x88EF, r27
		pyldFileNaks.toShoreheader.size = 3;
    a252:	83 e0       	ldi	r24, 0x03	; 3
    a254:	90 e0       	ldi	r25, 0x00	; 0
    a256:	90 93 f1 88 	sts	0x88F1, r25
    a25a:	80 93 f0 88 	sts	0x88F0, r24
		pyldFileNaks.toShoreheader.type = 0x24;
    a25e:	84 e2       	ldi	r24, 0x24	; 36
    a260:	80 93 eb 88 	sts	0x88EB, r24
		pyldFileNaks.nakFile.count = 1;
    a264:	81 e0       	ldi	r24, 0x01	; 1
    a266:	90 e0       	ldi	r25, 0x00	; 0
    a268:	90 93 f3 88 	sts	0x88F3, r25
    a26c:	80 93 f2 88 	sts	0x88F2, r24
		pyldFileNaks.nakFile.result = nakType;
    a270:	20 93 f4 88 	sts	0x88F4, r18
		pyldFileNaks.nakFile.crc = CalculateCRC16((uint8_t*) &pyldFileAcks, sizeof(LRI_COMM_WRAPPER) + sizeof(LRI_GENERIC_NAK) + sizeof(COMM_HEADER) + sizeof(NAK_FILE) - CRC16_SIZE, OTHER_CRC_START);
    a274:	e0 e0       	ldi	r30, 0x00	; 0
    a276:	f8 e8       	ldi	r31, 0x88	; 136
    a278:	20 e0       	ldi	r18, 0x00	; 0
    a27a:	30 e0       	ldi	r19, 0x00	; 0
    a27c:	18 c0       	rjmp	.+48     	; 0xa2ae <FileInitializeWrite+0x368>
    a27e:	81 91       	ld	r24, Z+
    a280:	28 27       	eor	r18, r24
    a282:	82 2f       	mov	r24, r18
    a284:	82 95       	swap	r24
    a286:	82 27       	eor	r24, r18
    a288:	08 2e       	mov	r0, r24
    a28a:	86 95       	lsr	r24
    a28c:	86 95       	lsr	r24
    a28e:	80 25       	eor	r24, r0
    a290:	08 2e       	mov	r0, r24
    a292:	86 95       	lsr	r24
    a294:	80 25       	eor	r24, r0
    a296:	87 70       	andi	r24, 0x07	; 7
    a298:	02 2e       	mov	r0, r18
    a29a:	23 2f       	mov	r18, r19
    a29c:	86 95       	lsr	r24
    a29e:	07 94       	ror	r0
    a2a0:	87 95       	ror	r24
    a2a2:	30 2d       	mov	r19, r0
    a2a4:	28 27       	eor	r18, r24
    a2a6:	06 94       	lsr	r0
    a2a8:	87 95       	ror	r24
    a2aa:	30 25       	eor	r19, r0
    a2ac:	28 27       	eor	r18, r24
//---------------------------------------------------------------------------------
uint16_t CalculateCRC16(uint8_t* pBuffer, uint16_t size, uint16_t initValue)
{
	uint16_t crc = initValue;

	for(int i = 0; i < (size); i++)
    a2ae:	88 e8       	ldi	r24, 0x88	; 136
    a2b0:	e7 31       	cpi	r30, 0x17	; 23
    a2b2:	f8 07       	cpc	r31, r24
    a2b4:	21 f7       	brne	.-56     	; 0xa27e <FileInitializeWrite+0x338>
		pyldFileNaks.toShoreheader.packetID = pHeaders->header.packetID;
		pyldFileNaks.toShoreheader.size = 3;
		pyldFileNaks.toShoreheader.type = 0x24;
		pyldFileNaks.nakFile.count = 1;
		pyldFileNaks.nakFile.result = nakType;
		pyldFileNaks.nakFile.crc = CalculateCRC16((uint8_t*) &pyldFileAcks, sizeof(LRI_COMM_WRAPPER) + sizeof(LRI_GENERIC_NAK) + sizeof(COMM_HEADER) + sizeof(NAK_FILE) - CRC16_SIZE, OTHER_CRC_START);
    a2b6:	30 93 f6 88 	sts	0x88F6, r19
    a2ba:	20 93 f5 88 	sts	0x88F5, r18
		TxHDLC((uint8_t*)&pyldFileAcks, pyldFileAcks.headers.length);
    a2be:	77 97       	sbiw	r30, 0x17	; 23
    a2c0:	60 81       	ld	r22, Z
    a2c2:	71 81       	ldd	r23, Z+1	; 0x01
    a2c4:	cf 01       	movw	r24, r30
    a2c6:	0e 94 fe 45 	call	0x8bfc	; 0x8bfc <TxHDLC>
	}
	return;
}
    a2ca:	2d 96       	adiw	r28, 0x0d	; 13
    a2cc:	0f b6       	in	r0, 0x3f	; 63
    a2ce:	f8 94       	cli
    a2d0:	de bf       	out	0x3e, r29	; 62
    a2d2:	0f be       	out	0x3f, r0	; 63
    a2d4:	cd bf       	out	0x3d, r28	; 61
    a2d6:	cf 91       	pop	r28
    a2d8:	df 91       	pop	r29
    a2da:	1f 91       	pop	r17
    a2dc:	0f 91       	pop	r16
    a2de:	ff 90       	pop	r15
    a2e0:	ef 90       	pop	r14
    a2e2:	df 90       	pop	r13
    a2e4:	cf 90       	pop	r12
    a2e6:	bf 90       	pop	r11
    a2e8:	08 95       	ret
		nakType = NAKDISP_TOO_MANY_COMMANDS;
		proceed = FALSE;
	}
	

	if((proceed == TRUE) && (pHeaders->initFileWrite.fileSize >= MAX_FILE_SIZE_IN))
    a2ea:	f8 01       	movw	r30, r16
    a2ec:	80 a5       	ldd	r24, Z+40	; 0x28
    a2ee:	91 a5       	ldd	r25, Z+41	; 0x29
    a2f0:	a2 a5       	ldd	r26, Z+42	; 0x2a
    a2f2:	b3 a5       	ldd	r27, Z+43	; 0x2b
    a2f4:	8f 3f       	cpi	r24, 0xFF	; 255
    a2f6:	91 05       	cpc	r25, r1
    a2f8:	a1 05       	cpc	r26, r1
    a2fa:	b1 05       	cpc	r27, r1
    a2fc:	09 f0       	breq	.+2      	; 0xa300 <FileInitializeWrite+0x3ba>
    a2fe:	08 f4       	brcc	.+2      	; 0xa302 <FileInitializeWrite+0x3bc>
    a300:	62 ce       	rjmp	.-828    	; 0x9fc6 <FileInitializeWrite+0x80>
    a302:	2d e0       	ldi	r18, 0x0D	; 13
    a304:	30 e0       	ldi	r19, 0x00	; 0
    a306:	61 cf       	rjmp	.-318    	; 0xa1ca <FileInitializeWrite+0x284>
    a308:	21 e1       	ldi	r18, 0x11	; 17
    a30a:	30 e0       	ldi	r19, 0x00	; 0
    a30c:	5e cf       	rjmp	.-324    	; 0xa1ca <FileInitializeWrite+0x284>

0000a30e <PIBRcvdFloatCmd>:

	return;
}

void PIBRcvdFloatCmd(PPYLD_MGR_FILE_RX_BUFFER pHeaders)
{
    a30e:	fc 01       	movw	r30, r24
	switch(pHeaders->type.command)
    a310:	85 89       	ldd	r24, Z+21	; 0x15
    a312:	96 89       	ldd	r25, Z+22	; 0x16
    a314:	20 e9       	ldi	r18, 0x90	; 144
    a316:	84 30       	cpi	r24, 0x04	; 4
    a318:	92 07       	cpc	r25, r18
    a31a:	09 f4       	brne	.+2      	; 0xa31e <PIBRcvdFloatCmd+0x10>
    a31c:	3d c0       	rjmp	.+122    	; 0xa398 <PIBRcvdFloatCmd+0x8a>
    a31e:	20 e9       	ldi	r18, 0x90	; 144
    a320:	85 30       	cpi	r24, 0x05	; 5
    a322:	92 07       	cpc	r25, r18
    a324:	a0 f4       	brcc	.+40     	; 0xa34e <PIBRcvdFloatCmd+0x40>
    a326:	20 e9       	ldi	r18, 0x90	; 144
    a328:	81 30       	cpi	r24, 0x01	; 1
    a32a:	92 07       	cpc	r25, r18
    a32c:	29 f1       	breq	.+74     	; 0xa378 <PIBRcvdFloatCmd+0x6a>
    a32e:	20 e9       	ldi	r18, 0x90	; 144
    a330:	82 30       	cpi	r24, 0x02	; 2
    a332:	92 07       	cpc	r25, r18
    a334:	20 f4       	brcc	.+8      	; 0xa33e <PIBRcvdFloatCmd+0x30>
    a336:	80 50       	subi	r24, 0x00	; 0
    a338:	90 49       	sbci	r25, 0x90	; 144
    a33a:	c9 f5       	brne	.+114    	; 0xa3ae <PIBRcvdFloatCmd+0xa0>
    a33c:	19 c0       	rjmp	.+50     	; 0xa370 <PIBRcvdFloatCmd+0x62>
    a33e:	20 e9       	ldi	r18, 0x90	; 144
    a340:	82 30       	cpi	r24, 0x02	; 2
    a342:	92 07       	cpc	r25, r18
    a344:	e9 f0       	breq	.+58     	; 0xa380 <PIBRcvdFloatCmd+0x72>
    a346:	83 50       	subi	r24, 0x03	; 3
    a348:	90 49       	sbci	r25, 0x90	; 144
    a34a:	89 f5       	brne	.+98     	; 0xa3ae <PIBRcvdFloatCmd+0xa0>
    a34c:	1d c0       	rjmp	.+58     	; 0xa388 <PIBRcvdFloatCmd+0x7a>
    a34e:	20 e9       	ldi	r18, 0x90	; 144
    a350:	88 30       	cpi	r24, 0x08	; 8
    a352:	92 07       	cpc	r25, r18
    a354:	e9 f0       	breq	.+58     	; 0xa390 <PIBRcvdFloatCmd+0x82>
    a356:	20 e9       	ldi	r18, 0x90	; 144
    a358:	89 30       	cpi	r24, 0x09	; 9
    a35a:	92 07       	cpc	r25, r18
    a35c:	20 f4       	brcc	.+8      	; 0xa366 <PIBRcvdFloatCmd+0x58>
    a35e:	85 50       	subi	r24, 0x05	; 5
    a360:	90 49       	sbci	r25, 0x90	; 144
    a362:	29 f5       	brne	.+74     	; 0xa3ae <PIBRcvdFloatCmd+0xa0>
    a364:	1d c0       	rjmp	.+58     	; 0xa3a0 <PIBRcvdFloatCmd+0x92>
    a366:	80 50       	subi	r24, 0x00	; 0
    a368:	91 49       	sbci	r25, 0x91	; 145
    a36a:	02 97       	sbiw	r24, 0x02	; 2
    a36c:	00 f5       	brcc	.+64     	; 0xa3ae <PIBRcvdFloatCmd+0xa0>
    a36e:	1c c0       	rjmp	.+56     	; 0xa3a8 <PIBRcvdFloatCmd+0x9a>
	{
	case FILE_INIT_WRITE:
		{
			FileInitializeWrite(pHeaders);
    a370:	cf 01       	movw	r24, r30
    a372:	0e 94 a3 4f 	call	0x9f46	; 0x9f46 <FileInitializeWrite>
    a376:	08 95       	ret
			break;
		}
	case FILE_WRITE_BLOCK:
		{
			FileWriteBlock(pHeaders);
    a378:	cf 01       	movw	r24, r30
    a37a:	0e 94 f8 4d 	call	0x9bf0	; 0x9bf0 <FileWriteBlock>
    a37e:	08 95       	ret
			break;
		}
	case FILE_DELETE:
		{
			FileDelete(pHeaders);
    a380:	cf 01       	movw	r24, r30
    a382:	0e 94 f3 4c 	call	0x99e6	; 0x99e6 <FileDelete>
    a386:	08 95       	ret
			break;
		}
	case FILE_READ_BLOCK:
		{
			FileReadBlock(pHeaders);
    a388:	cf 01       	movw	r24, r30
    a38a:	0e 94 47 4b 	call	0x968e	; 0x968e <FileReadBlock>
    a38e:	08 95       	ret
			break;
		}
	case FILE_GET_INFO:
		{
			FileGetInfo(pHeaders);
    a390:	cf 01       	movw	r24, r30
    a392:	0e 94 15 4a 	call	0x942a	; 0x942a <FileGetInfo>
    a396:	08 95       	ret
			break;
		}
	case FILE_GET_DETAIL:
		{
			FileGetDetail(pHeaders);
    a398:	cf 01       	movw	r24, r30
    a39a:	0e 94 cc 48 	call	0x9198	; 0x9198 <FileGetDetail>
    a39e:	08 95       	ret
			break;
		}
	case CMD_SELECT_PROGRAM:
		{
			SelectProgram(pHeaders);
    a3a0:	cf 01       	movw	r24, r30
    a3a2:	0e 94 12 48 	call	0x9024	; 0x9024 <SelectProgram>
    a3a6:	08 95       	ret
			break;
		}
	case CMD_WRITE_CNSL_CMD_ASCII:
	case CMD_WRITE_CNSL_CMD_BINARY:
		{
			ConsoleInput(pHeaders);
    a3a8:	cf 01       	movw	r24, r30
    a3aa:	0e 94 3e 46 	call	0x8c7c	; 0x8c7c <ConsoleInput>
    a3ae:	08 95       	ret

0000a3b0 <PIBToFloatSendPowerReply>:
	return;
}


void PIBToFloatSendPowerReply(PLRI_COMM_WRAPPER pBuffer)
{
    a3b0:	fc 01       	movw	r30, r24
	pibPowerResponse.headers.length = sizeof(PIB_POWER_RESPONSE);
    a3b2:	88 e1       	ldi	r24, 0x18	; 24
    a3b4:	90 e0       	ldi	r25, 0x00	; 0
    a3b6:	90 93 a2 a2 	sts	0xA2A2, r25
    a3ba:	80 93 a1 a2 	sts	0xA2A1, r24
	pibPowerResponse.headers.destination = pBuffer->source;
    a3be:	84 81       	ldd	r24, Z+4	; 0x04
    a3c0:	95 81       	ldd	r25, Z+5	; 0x05
    a3c2:	90 93 a4 a2 	sts	0xA2A4, r25
    a3c6:	80 93 a3 a2 	sts	0xA2A3, r24
	pibPowerResponse.headers.source = mainTaskAddress;
    a3ca:	40 91 e4 03 	lds	r20, 0x03E4
    a3ce:	50 91 e5 03 	lds	r21, 0x03E5
    a3d2:	50 93 a6 a2 	sts	0xA2A6, r21
    a3d6:	40 93 a5 a2 	sts	0xA2A5, r20
	pibPowerResponse.headers.msgID = pBuffer->msgID;
    a3da:	86 81       	ldd	r24, Z+6	; 0x06
    a3dc:	97 81       	ldd	r25, Z+7	; 0x07
    a3de:	90 93 a8 a2 	sts	0xA2A8, r25
    a3e2:	80 93 a7 a2 	sts	0xA2A7, r24
	pibPowerResponse.headers.msgType = LRI_ACK;
    a3e6:	21 e0       	ldi	r18, 0x01	; 1
    a3e8:	30 e0       	ldi	r19, 0x00	; 0
    a3ea:	30 93 aa a2 	sts	0xA2AA, r19
    a3ee:	20 93 a9 a2 	sts	0xA2A9, r18

	pibPowerResponse.ackInfo.originalCmd = pBuffer->msgType;
    a3f2:	80 85       	ldd	r24, Z+8	; 0x08
    a3f4:	91 85       	ldd	r25, Z+9	; 0x09
    a3f6:	90 93 ac a2 	sts	0xA2AC, r25
    a3fa:	80 93 ab a2 	sts	0xA2AB, r24

	pibPowerResponse.powerCount.totalNumber = 1;
    a3fe:	30 93 ae a2 	sts	0xA2AE, r19
    a402:	20 93 ad a2 	sts	0xA2AD, r18
	pibPowerResponse.powerCount.numberOfReplies = 1;
    a406:	30 93 b0 a2 	sts	0xA2B0, r19
    a40a:	20 93 af a2 	sts	0xA2AF, r18

	pibPowerResponse.powerState.address = mainTaskAddress;
    a40e:	50 93 b2 a2 	sts	0xA2B2, r21
    a412:	40 93 b1 a2 	sts	0xA2B1, r20
	pibPowerResponse.powerState.boardID = mainBoardID;
    a416:	80 91 e6 03 	lds	r24, 0x03E6
    a41a:	80 93 b3 a2 	sts	0xA2B3, r24
	pibPowerResponse.powerState.state = 1;
    a41e:	91 e0       	ldi	r25, 0x01	; 1
    a420:	90 93 b4 a2 	sts	0xA2B4, r25

	pibPowerResponse.powerState.delayOff = delay;	
    a424:	80 91 43 19 	lds	r24, 0x1943
    a428:	80 93 b5 a2 	sts	0xA2B5, r24
	pibPowerResponse.powerState.delayOn = 1;
    a42c:	90 93 b6 a2 	sts	0xA2B6, r25

	pibPowerResponse.crc = CalculateCRC16((uint8_t*)&pibPowerResponse, pibPowerResponse.headers.length - CRC16_SIZE, OTHER_CRC_START);
    a430:	e1 ea       	ldi	r30, 0xA1	; 161
    a432:	f2 ea       	ldi	r31, 0xA2	; 162
    a434:	20 e0       	ldi	r18, 0x00	; 0
    a436:	30 e0       	ldi	r19, 0x00	; 0
    a438:	18 c0       	rjmp	.+48     	; 0xa46a <PIBToFloatSendPowerReply+0xba>
    a43a:	81 91       	ld	r24, Z+
    a43c:	28 27       	eor	r18, r24
    a43e:	82 2f       	mov	r24, r18
    a440:	82 95       	swap	r24
    a442:	82 27       	eor	r24, r18
    a444:	08 2e       	mov	r0, r24
    a446:	86 95       	lsr	r24
    a448:	86 95       	lsr	r24
    a44a:	80 25       	eor	r24, r0
    a44c:	08 2e       	mov	r0, r24
    a44e:	86 95       	lsr	r24
    a450:	80 25       	eor	r24, r0
    a452:	87 70       	andi	r24, 0x07	; 7
    a454:	02 2e       	mov	r0, r18
    a456:	23 2f       	mov	r18, r19
    a458:	86 95       	lsr	r24
    a45a:	07 94       	ror	r0
    a45c:	87 95       	ror	r24
    a45e:	30 2d       	mov	r19, r0
    a460:	28 27       	eor	r18, r24
    a462:	06 94       	lsr	r0
    a464:	87 95       	ror	r24
    a466:	30 25       	eor	r19, r0
    a468:	28 27       	eor	r18, r24
//---------------------------------------------------------------------------------
uint16_t CalculateCRC16(uint8_t* pBuffer, uint16_t size, uint16_t initValue)
{
	uint16_t crc = initValue;

	for(int i = 0; i < (size); i++)
    a46a:	82 ea       	ldi	r24, 0xA2	; 162
    a46c:	e7 3b       	cpi	r30, 0xB7	; 183
    a46e:	f8 07       	cpc	r31, r24
    a470:	21 f7       	brne	.-56     	; 0xa43a <PIBToFloatSendPowerReply+0x8a>
	pibPowerResponse.powerState.state = 1;

	pibPowerResponse.powerState.delayOff = delay;	
	pibPowerResponse.powerState.delayOn = 1;

	pibPowerResponse.crc = CalculateCRC16((uint8_t*)&pibPowerResponse, pibPowerResponse.headers.length - CRC16_SIZE, OTHER_CRC_START);
    a472:	31 83       	std	Z+1, r19	; 0x01
    a474:	20 83       	st	Z, r18
	
	TxHDLC((uint8_t*)&pibPowerResponse, pibPowerResponse.headers.length);
    a476:	cf 01       	movw	r24, r30
    a478:	46 97       	sbiw	r24, 0x16	; 22
    a47a:	68 e1       	ldi	r22, 0x18	; 24
    a47c:	70 e0       	ldi	r23, 0x00	; 0
    a47e:	0e 94 fe 45 	call	0x8bfc	; 0x8bfc <TxHDLC>

	return;
}
    a482:	08 95       	ret

0000a484 <PIBToFloatSendWaitingData>:
uint8_t* tail1 __attribute__((section(".xdata")));
uint8_t* head1 __attribute__((section(".xdata")));
PPIB_IRIDIUM_DATA_XMIT comms __attribute__((section(".xdata")));
uint8_t tempTail __attribute__((section(".xdata")));
void PIBToFloatSendWaitingData(uint16_t command, uint16_t msgSeq, uint16_t destination)
{
    a484:	af 92       	push	r10
    a486:	bf 92       	push	r11
    a488:	df 92       	push	r13
    a48a:	ef 92       	push	r14
    a48c:	ff 92       	push	r15
    a48e:	0f 93       	push	r16
    a490:	1f 93       	push	r17
    a492:	df 93       	push	r29
    a494:	cf 93       	push	r28
    a496:	0f 92       	push	r0
    a498:	cd b7       	in	r28, 0x3d	; 61
    a49a:	de b7       	in	r29, 0x3e	; 62
    a49c:	7c 01       	movw	r14, r24
    a49e:	5b 01       	movw	r10, r22
    a4a0:	8a 01       	movw	r16, r20
	uint8_t tempTail = 0;
	uint16_t* pCRC = NULL;
	uint8_t* temp;
	uint8_t err = 0;
    a4a2:	19 82       	std	Y+1, r1	; 0x01
	uint8_t numBuffs = MAX_FLOAT_BUFFERS;

	pCRC = NULL;
	tail1 = NULL;
    a4a4:	10 92 9d b8 	sts	0xB89D, r1
    a4a8:	10 92 9c b8 	sts	0xB89C, r1
	head1 = NULL;
    a4ac:	10 92 9f b8 	sts	0xB89F, r1
    a4b0:	10 92 9e b8 	sts	0xB89E, r1
	comms = NULL;
    a4b4:	10 92 a1 b8 	sts	0xB8A1, r1
    a4b8:	10 92 a0 b8 	sts	0xB8A0, r1
	tempTail = 0;

	OSMutexPend(pMutexFloatQueue, INFINITE, &err);
    a4bc:	80 91 51 19 	lds	r24, 0x1951
    a4c0:	90 91 52 19 	lds	r25, 0x1952
    a4c4:	60 e0       	ldi	r22, 0x00	; 0
    a4c6:	70 e0       	ldi	r23, 0x00	; 0
    a4c8:	ae 01       	movw	r20, r28
    a4ca:	4f 5f       	subi	r20, 0xFF	; 255
    a4cc:	5f 4f       	sbci	r21, 0xFF	; 255
    a4ce:	0e 94 c2 28 	call	0x5184	; 0x5184 <OSMutexPend>

	if(headFloatAckTx != tailFloatAckTx)
    a4d2:	20 91 96 07 	lds	r18, 0x0796
    a4d6:	80 91 95 07 	lds	r24, 0x0795
    a4da:	82 17       	cp	r24, r18
    a4dc:	f9 f0       	breq	.+62     	; 0xa51c <PIBToFloatSendWaitingData+0x98>
	{
		tail1 = &tailFloatAckTx;
    a4de:	86 e9       	ldi	r24, 0x96	; 150
    a4e0:	97 e0       	ldi	r25, 0x07	; 7
    a4e2:	90 93 9d b8 	sts	0xB89D, r25
    a4e6:	80 93 9c b8 	sts	0xB89C, r24
		head1 = &headFloatAckTx;
    a4ea:	85 e9       	ldi	r24, 0x95	; 149
    a4ec:	97 e0       	ldi	r25, 0x07	; 7
    a4ee:	90 93 9f b8 	sts	0xB89F, r25
    a4f2:	80 93 9e b8 	sts	0xB89E, r24
		numBuffs = MAX_ACK_BUFFERS;

		temp = (uint8_t*)&(txFloatAck[*tail1]);
    a4f6:	30 e0       	ldi	r19, 0x00	; 0
    a4f8:	86 e3       	ldi	r24, 0x36	; 54
    a4fa:	91 e0       	ldi	r25, 0x01	; 1
    a4fc:	28 9f       	mul	r18, r24
    a4fe:	a0 01       	movw	r20, r0
    a500:	29 9f       	mul	r18, r25
    a502:	50 0d       	add	r21, r0
    a504:	38 9f       	mul	r19, r24
    a506:	50 0d       	add	r21, r0
    a508:	11 24       	eor	r1, r1
    a50a:	43 5f       	subi	r20, 0xF3	; 243
    a50c:	5c 44       	sbci	r21, 0x4C	; 76
		comms = (PPIB_IRIDIUM_DATA_XMIT)&(txFloatAck[*tail1]);
    a50e:	50 93 a1 b8 	sts	0xB8A1, r21
    a512:	40 93 a0 b8 	sts	0xB8A0, r20
    a516:	74 e0       	ldi	r23, 0x04	; 4
    a518:	d7 2e       	mov	r13, r23
    a51a:	20 c0       	rjmp	.+64     	; 0xa55c <PIBToFloatSendWaitingData+0xd8>
	}
	else
	{
		tail1 = &tailFloatTx;
    a51c:	84 e9       	ldi	r24, 0x94	; 148
    a51e:	97 e0       	ldi	r25, 0x07	; 7
    a520:	90 93 9d b8 	sts	0xB89D, r25
    a524:	80 93 9c b8 	sts	0xB89C, r24
		head1 = &headFloatTx;
    a528:	83 e9       	ldi	r24, 0x93	; 147
    a52a:	97 e0       	ldi	r25, 0x07	; 7
    a52c:	90 93 9f b8 	sts	0xB89F, r25
    a530:	80 93 9e b8 	sts	0xB89E, r24
		numBuffs = MAX_FLOAT_BUFFERS;

		temp = (uint8_t*)&(txFloatData[*tail1]);
    a534:	80 91 94 07 	lds	r24, 0x0794
    a538:	90 e0       	ldi	r25, 0x00	; 0
    a53a:	26 e3       	ldi	r18, 0x36	; 54
    a53c:	31 e0       	ldi	r19, 0x01	; 1
    a53e:	82 9f       	mul	r24, r18
    a540:	a0 01       	movw	r20, r0
    a542:	83 9f       	mul	r24, r19
    a544:	50 0d       	add	r21, r0
    a546:	92 9f       	mul	r25, r18
    a548:	50 0d       	add	r21, r0
    a54a:	11 24       	eor	r1, r1
    a54c:	43 5a       	subi	r20, 0xA3	; 163
    a54e:	56 45       	sbci	r21, 0x56	; 86
		comms = (PPIB_IRIDIUM_DATA_XMIT)&(txFloatData[*tail1]);
    a550:	50 93 a1 b8 	sts	0xB8A1, r21
    a554:	40 93 a0 b8 	sts	0xB8A0, r20
    a558:	68 e0       	ldi	r22, 0x08	; 8
    a55a:	d6 2e       	mov	r13, r22
	}		

	tempTail = *tail1 + 1;
    a55c:	e0 91 9c b8 	lds	r30, 0xB89C
    a560:	f0 91 9d b8 	lds	r31, 0xB89D
    a564:	20 81       	ld	r18, Z
    a566:	2f 5f       	subi	r18, 0xFF	; 255
	if(tempTail >= numBuffs) tempTail = 0;
    a568:	2d 15       	cp	r18, r13
    a56a:	08 f0       	brcs	.+2      	; 0xa56e <PIBToFloatSendWaitingData+0xea>
    a56c:	20 e0       	ldi	r18, 0x00	; 0

	comms->headers.destination |= (destination & 0xFF00);		// | FLOAT_IRIDIUM_INTERFACE;
    a56e:	a0 91 a0 b8 	lds	r26, 0xB8A0
    a572:	b0 91 a1 b8 	lds	r27, 0xB8A1
    a576:	00 70       	andi	r16, 0x00	; 0
    a578:	12 96       	adiw	r26, 0x02	; 2
    a57a:	8d 91       	ld	r24, X+
    a57c:	9c 91       	ld	r25, X
    a57e:	13 97       	sbiw	r26, 0x03	; 3
    a580:	80 2b       	or	r24, r16
    a582:	91 2b       	or	r25, r17
    a584:	13 96       	adiw	r26, 0x03	; 3
    a586:	9c 93       	st	X, r25
    a588:	8e 93       	st	-X, r24
    a58a:	12 97       	sbiw	r26, 0x02	; 2
	comms->headers.source = mainTaskAddress;
    a58c:	80 91 e4 03 	lds	r24, 0x03E4
    a590:	90 91 e5 03 	lds	r25, 0x03E5
    a594:	15 96       	adiw	r26, 0x05	; 5
    a596:	9c 93       	st	X, r25
    a598:	8e 93       	st	-X, r24
    a59a:	14 97       	sbiw	r26, 0x04	; 4
	comms->headers.msgID = msgSeq;
    a59c:	17 96       	adiw	r26, 0x07	; 7
    a59e:	bc 92       	st	X, r11
    a5a0:	ae 92       	st	-X, r10
    a5a2:	16 97       	sbiw	r26, 0x06	; 6
	comms->headers.msgType = LRI_ACK;
    a5a4:	81 e0       	ldi	r24, 0x01	; 1
    a5a6:	90 e0       	ldi	r25, 0x00	; 0
    a5a8:	19 96       	adiw	r26, 0x09	; 9
    a5aa:	9c 93       	st	X, r25
    a5ac:	8e 93       	st	-X, r24
    a5ae:	18 97       	sbiw	r26, 0x08	; 8

	comms->ackInfo.originalCmd = command;
    a5b0:	1b 96       	adiw	r26, 0x0b	; 11
    a5b2:	fc 92       	st	X, r15
    a5b4:	ee 92       	st	-X, r14
    a5b6:	1a 97       	sbiw	r26, 0x0a	; 10
	if(tempTail != *head1)
    a5b8:	e0 91 9e b8 	lds	r30, 0xB89E
    a5bc:	f0 91 9f b8 	lds	r31, 0xB89F
    a5c0:	80 81       	ld	r24, Z
    a5c2:	28 17       	cp	r18, r24
    a5c4:	41 f0       	breq	.+16     	; 0xa5d6 <PIBToFloatSendWaitingData+0x152>
	{
		comms->ackInfo.originalCmd |= 0x8000;
    a5c6:	80 e0       	ldi	r24, 0x00	; 0
    a5c8:	90 e8       	ldi	r25, 0x80	; 128
    a5ca:	e8 2a       	or	r14, r24
    a5cc:	f9 2a       	or	r15, r25
    a5ce:	1b 96       	adiw	r26, 0x0b	; 11
    a5d0:	fc 92       	st	X, r15
    a5d2:	ee 92       	st	-X, r14
    a5d4:	1a 97       	sbiw	r26, 0x0a	; 10
	}
	
	temp += comms->headers.length;
    a5d6:	2d 91       	ld	r18, X+
    a5d8:	3c 91       	ld	r19, X
    a5da:	11 97       	sbiw	r26, 0x01	; 1
	temp -= CRC16_SIZE;

	pCRC = (uint16_t*)temp;
	*pCRC = CalculateCRC16((uint8_t*)comms, comms->headers.length - CRC16_SIZE, OTHER_CRC_START);
    a5dc:	fa 2e       	mov	r15, r26
    a5de:	9b 2f       	mov	r25, r27
    a5e0:	fd 01       	movw	r30, r26
    a5e2:	60 e0       	ldi	r22, 0x00	; 0
    a5e4:	70 e0       	ldi	r23, 0x00	; 0
//---------------------------------------------------------------------------------
uint16_t CalculateCRC16(uint8_t* pBuffer, uint16_t size, uint16_t initValue)
{
	uint16_t crc = initValue;

	for(int i = 0; i < (size); i++)
    a5e6:	22 50       	subi	r18, 0x02	; 2
    a5e8:	30 40       	sbci	r19, 0x00	; 0
    a5ea:	8d 01       	movw	r16, r26
    a5ec:	02 0f       	add	r16, r18
    a5ee:	13 1f       	adc	r17, r19
    a5f0:	2e 5f       	subi	r18, 0xFE	; 254
    a5f2:	3f 4f       	sbci	r19, 0xFF	; 255
    a5f4:	18 c0       	rjmp	.+48     	; 0xa626 <PIBToFloatSendWaitingData+0x1a2>
    a5f6:	81 91       	ld	r24, Z+
    a5f8:	68 27       	eor	r22, r24
    a5fa:	86 2f       	mov	r24, r22
    a5fc:	82 95       	swap	r24
    a5fe:	86 27       	eor	r24, r22
    a600:	08 2e       	mov	r0, r24
    a602:	86 95       	lsr	r24
    a604:	86 95       	lsr	r24
    a606:	80 25       	eor	r24, r0
    a608:	08 2e       	mov	r0, r24
    a60a:	86 95       	lsr	r24
    a60c:	80 25       	eor	r24, r0
    a60e:	87 70       	andi	r24, 0x07	; 7
    a610:	06 2e       	mov	r0, r22
    a612:	67 2f       	mov	r22, r23
    a614:	86 95       	lsr	r24
    a616:	07 94       	ror	r0
    a618:	87 95       	ror	r24
    a61a:	70 2d       	mov	r23, r0
    a61c:	68 27       	eor	r22, r24
    a61e:	06 94       	lsr	r0
    a620:	87 95       	ror	r24
    a622:	70 25       	eor	r23, r0
    a624:	68 27       	eor	r22, r24
    a626:	e0 17       	cp	r30, r16
    a628:	f1 07       	cpc	r31, r17
    a62a:	29 f7       	brne	.-54     	; 0xa5f6 <PIBToFloatSendWaitingData+0x172>
	if(tempTail != *head1)
	{
		comms->ackInfo.originalCmd |= 0x8000;
	}
	
	temp += comms->headers.length;
    a62c:	42 0f       	add	r20, r18
    a62e:	53 1f       	adc	r21, r19
	temp -= CRC16_SIZE;

	pCRC = (uint16_t*)temp;
	*pCRC = CalculateCRC16((uint8_t*)comms, comms->headers.length - CRC16_SIZE, OTHER_CRC_START);
    a630:	42 50       	subi	r20, 0x02	; 2
    a632:	50 40       	sbci	r21, 0x00	; 0
    a634:	fa 01       	movw	r30, r20
    a636:	71 83       	std	Z+1, r23	; 0x01
    a638:	60 83       	st	Z, r22

	TxHDLC((uint8_t*)comms, comms->headers.length);
    a63a:	6d 91       	ld	r22, X+
    a63c:	7c 91       	ld	r23, X
    a63e:	8f 2d       	mov	r24, r15
    a640:	0e 94 fe 45 	call	0x8bfc	; 0x8bfc <TxHDLC>

	(*tail1 < numBuffs - 1) ? (*tail1 = *tail1 + 1) : (*tail1 = 0);
    a644:	e0 91 9c b8 	lds	r30, 0xB89C
    a648:	f0 91 9d b8 	lds	r31, 0xB89D
    a64c:	40 81       	ld	r20, Z
    a64e:	24 2f       	mov	r18, r20
    a650:	30 e0       	ldi	r19, 0x00	; 0
    a652:	8d 2d       	mov	r24, r13
    a654:	90 e0       	ldi	r25, 0x00	; 0
    a656:	01 97       	sbiw	r24, 0x01	; 1
    a658:	28 17       	cp	r18, r24
    a65a:	39 07       	cpc	r19, r25
    a65c:	1c f4       	brge	.+6      	; 0xa664 <PIBToFloatSendWaitingData+0x1e0>
    a65e:	4f 5f       	subi	r20, 0xFF	; 255
    a660:	40 83       	st	Z, r20
    a662:	01 c0       	rjmp	.+2      	; 0xa666 <PIBToFloatSendWaitingData+0x1e2>
    a664:	10 82       	st	Z, r1

	OSMutexPost(pMutexFloatQueue);
    a666:	80 91 51 19 	lds	r24, 0x1951
    a66a:	90 91 52 19 	lds	r25, 0x1952
    a66e:	0e 94 36 27 	call	0x4e6c	; 0x4e6c <OSMutexPost>

	return;
}
    a672:	0f 90       	pop	r0
    a674:	cf 91       	pop	r28
    a676:	df 91       	pop	r29
    a678:	1f 91       	pop	r17
    a67a:	0f 91       	pop	r16
    a67c:	ff 90       	pop	r15
    a67e:	ef 90       	pop	r14
    a680:	df 90       	pop	r13
    a682:	bf 90       	pop	r11
    a684:	af 90       	pop	r10
    a686:	08 95       	ret

0000a688 <PIBToFloatSendPIBStatus>:
}


void PIBToFloatSendPIBStatus(uint16_t command, uint16_t msgSeq, uint16_t destination)
{
	pibStatusResponse.headers.length = sizeof(PIB_STATUS_RESPONSE);
    a688:	2e e1       	ldi	r18, 0x1E	; 30
    a68a:	30 e0       	ldi	r19, 0x00	; 0
    a68c:	30 93 84 a2 	sts	0xA284, r19
    a690:	20 93 83 a2 	sts	0xA283, r18
	pibStatusResponse.headers.destination = destination;
    a694:	50 93 86 a2 	sts	0xA286, r21
    a698:	40 93 85 a2 	sts	0xA285, r20
	pibStatusResponse.headers.source = mainTaskAddress;
    a69c:	40 91 e4 03 	lds	r20, 0x03E4
    a6a0:	50 91 e5 03 	lds	r21, 0x03E5
    a6a4:	50 93 88 a2 	sts	0xA288, r21
    a6a8:	40 93 87 a2 	sts	0xA287, r20
	pibStatusResponse.headers.msgID = msgSeq;
    a6ac:	70 93 8a a2 	sts	0xA28A, r23
    a6b0:	60 93 89 a2 	sts	0xA289, r22
	pibStatusResponse.headers.msgType = LRI_ACK;
    a6b4:	21 e0       	ldi	r18, 0x01	; 1
    a6b6:	30 e0       	ldi	r19, 0x00	; 0
    a6b8:	30 93 8c a2 	sts	0xA28C, r19
    a6bc:	20 93 8b a2 	sts	0xA28B, r18

	pibStatusResponse.ackInfo.originalCmd = command;
    a6c0:	90 93 8e a2 	sts	0xA28E, r25
    a6c4:	80 93 8d a2 	sts	0xA28D, r24

	pibStatusResponse.pibCount.totalNumber = 1;
    a6c8:	30 93 90 a2 	sts	0xA290, r19
    a6cc:	20 93 8f a2 	sts	0xA28F, r18
	pibStatusResponse.pibCount.numberOfReplies = 1;
    a6d0:	30 93 92 a2 	sts	0xA292, r19
    a6d4:	20 93 91 a2 	sts	0xA291, r18

	pibStatusResponse.pibPacket.version = 1;
    a6d8:	30 93 94 a2 	sts	0xA294, r19
    a6dc:	20 93 93 a2 	sts	0xA293, r18
	if((headFloatTx != tailFloatTx) || (headFloatAckTx != tailFloatAckTx))
    a6e0:	90 91 93 07 	lds	r25, 0x0793
    a6e4:	80 91 94 07 	lds	r24, 0x0794
    a6e8:	98 17       	cp	r25, r24
    a6ea:	31 f4       	brne	.+12     	; 0xa6f8 <PIBToFloatSendPIBStatus+0x70>
    a6ec:	90 91 95 07 	lds	r25, 0x0795
    a6f0:	80 91 96 07 	lds	r24, 0x0796
    a6f4:	98 17       	cp	r25, r24
    a6f6:	31 f0       	breq	.+12     	; 0xa704 <PIBToFloatSendPIBStatus+0x7c>
	{
		pibStatusResponse.pibPacket.version |= 0x8000;
    a6f8:	81 e0       	ldi	r24, 0x01	; 1
    a6fa:	90 e8       	ldi	r25, 0x80	; 128
    a6fc:	90 93 94 a2 	sts	0xA294, r25
    a700:	80 93 93 a2 	sts	0xA293, r24
	}
	pibStatusResponse.pibPacket.address = mainTaskAddress;
    a704:	50 93 96 a2 	sts	0xA296, r21
    a708:	40 93 95 a2 	sts	0xA295, r20
	pibStatusResponse.pibPacket.alarms = 0;
    a70c:	10 92 98 a2 	sts	0xA298, r1
    a710:	10 92 97 a2 	sts	0xA297, r1
	pibStatusResponse.pibPacket.leak1 = 0;
    a714:	10 92 99 a2 	sts	0xA299, r1
	pibStatusResponse.pibPacket.leak2 = 0;
    a718:	10 92 9a a2 	sts	0xA29A, r1
	pibStatusResponse.pibPacket.humidTemp = pibTempHum;
    a71c:	80 91 4a 19 	lds	r24, 0x194A
    a720:	80 93 9b a2 	sts	0xA29B, r24
	pibStatusResponse.pibPacket.humidity = pibHumidity;
    a724:	80 91 44 19 	lds	r24, 0x1944
    a728:	80 93 9c a2 	sts	0xA29C, r24
	pibStatusResponse.pibPacket.presTemp = pibTempPres;	// pibPressure;
    a72c:	80 91 48 19 	lds	r24, 0x1948
    a730:	80 93 9d a2 	sts	0xA29D, r24
	pibStatusResponse.pibPacket.pressure = pibPressure;	// pibTempPres;
    a734:	80 91 46 19 	lds	r24, 0x1946
    a738:	80 93 9e a2 	sts	0xA29E, r24

	pibStatusResponse.crc = CalculateCRC16((uint8_t*)&pibStatusResponse, pibStatusResponse.headers.length - CRC16_SIZE, OTHER_CRC_START);
    a73c:	e3 e8       	ldi	r30, 0x83	; 131
    a73e:	f2 ea       	ldi	r31, 0xA2	; 162
    a740:	20 e0       	ldi	r18, 0x00	; 0
    a742:	30 e0       	ldi	r19, 0x00	; 0
    a744:	18 c0       	rjmp	.+48     	; 0xa776 <PIBToFloatSendPIBStatus+0xee>
    a746:	81 91       	ld	r24, Z+
    a748:	28 27       	eor	r18, r24
    a74a:	82 2f       	mov	r24, r18
    a74c:	82 95       	swap	r24
    a74e:	82 27       	eor	r24, r18
    a750:	08 2e       	mov	r0, r24
    a752:	86 95       	lsr	r24
    a754:	86 95       	lsr	r24
    a756:	80 25       	eor	r24, r0
    a758:	08 2e       	mov	r0, r24
    a75a:	86 95       	lsr	r24
    a75c:	80 25       	eor	r24, r0
    a75e:	87 70       	andi	r24, 0x07	; 7
    a760:	02 2e       	mov	r0, r18
    a762:	23 2f       	mov	r18, r19
    a764:	86 95       	lsr	r24
    a766:	07 94       	ror	r0
    a768:	87 95       	ror	r24
    a76a:	30 2d       	mov	r19, r0
    a76c:	28 27       	eor	r18, r24
    a76e:	06 94       	lsr	r0
    a770:	87 95       	ror	r24
    a772:	30 25       	eor	r19, r0
    a774:	28 27       	eor	r18, r24
//---------------------------------------------------------------------------------
uint16_t CalculateCRC16(uint8_t* pBuffer, uint16_t size, uint16_t initValue)
{
	uint16_t crc = initValue;

	for(int i = 0; i < (size); i++)
    a776:	82 ea       	ldi	r24, 0xA2	; 162
    a778:	ef 39       	cpi	r30, 0x9F	; 159
    a77a:	f8 07       	cpc	r31, r24
    a77c:	21 f7       	brne	.-56     	; 0xa746 <PIBToFloatSendPIBStatus+0xbe>
	pibStatusResponse.pibPacket.humidTemp = pibTempHum;
	pibStatusResponse.pibPacket.humidity = pibHumidity;
	pibStatusResponse.pibPacket.presTemp = pibTempPres;	// pibPressure;
	pibStatusResponse.pibPacket.pressure = pibPressure;	// pibTempPres;

	pibStatusResponse.crc = CalculateCRC16((uint8_t*)&pibStatusResponse, pibStatusResponse.headers.length - CRC16_SIZE, OTHER_CRC_START);
    a77e:	31 83       	std	Z+1, r19	; 0x01
    a780:	20 83       	st	Z, r18
	
	TxHDLC((uint8_t*)&pibStatusResponse, pibStatusResponse.headers.length);
    a782:	cf 01       	movw	r24, r30
    a784:	4c 97       	sbiw	r24, 0x1c	; 28
    a786:	6e e1       	ldi	r22, 0x1E	; 30
    a788:	70 e0       	ldi	r23, 0x00	; 0
    a78a:	0e 94 fe 45 	call	0x8bfc	; 0x8bfc <TxHDLC>


	return;
}
    a78e:	08 95       	ret

0000a790 <PIBToFloatSendID>:
}



void PIBToFloatSendID(uint16_t command, uint16_t msgSeq, uint16_t destination)
{
    a790:	cf 93       	push	r28
    a792:	df 93       	push	r29
	pCRC = NULL;
    a794:	10 92 9b b8 	sts	0xB89B, r1
    a798:	10 92 9a b8 	sts	0xB89A, r1

	memset(&pibIDResponse, 0, sizeof(PIB_ID_RESPONSE));
    a79c:	af e9       	ldi	r26, 0x9F	; 159
    a79e:	b1 ea       	ldi	r27, 0xA1	; 161
    a7a0:	24 ee       	ldi	r18, 0xE4	; 228
    a7a2:	ed 01       	movw	r28, r26
    a7a4:	19 92       	st	Y+, r1
    a7a6:	2a 95       	dec	r18
    a7a8:	e9 f7       	brne	.-6      	; 0xa7a4 <PIBToFloatSendID+0x14>
	pibIDResponse.headers.length = sizeof(LRI_COMM_WRAPPER) + sizeof(LRI_GENERIC_ACK) + sizeof(LRI_ACK_COUNT_WRAPPER)
    a7aa:	e0 91 98 07 	lds	r30, 0x0798
    a7ae:	f0 e0       	ldi	r31, 0x00	; 0
    a7b0:	31 96       	adiw	r30, 0x01	; 1
    a7b2:	2a e2       	ldi	r18, 0x2A	; 42
    a7b4:	30 e0       	ldi	r19, 0x00	; 0
    a7b6:	e9 01       	movw	r28, r18
    a7b8:	ec 9f       	mul	r30, r28
    a7ba:	90 01       	movw	r18, r0
    a7bc:	ed 9f       	mul	r30, r29
    a7be:	30 0d       	add	r19, r0
    a7c0:	fc 9f       	mul	r31, r28
    a7c2:	30 0d       	add	r19, r0
    a7c4:	11 24       	eor	r1, r1
    a7c6:	2e 5e       	subi	r18, 0xEE	; 238
    a7c8:	3f 4f       	sbci	r19, 0xFF	; 255
    a7ca:	30 93 a0 a1 	sts	0xA1A0, r19
    a7ce:	20 93 9f a1 	sts	0xA19F, r18
									+ sizeof(LRI_ID_PACKET) * (commTargets + 1) + sizeof(uint16_t);
	pibIDResponse.headers.destination = destination;
    a7d2:	50 93 a2 a1 	sts	0xA1A2, r21
    a7d6:	40 93 a1 a1 	sts	0xA1A1, r20
	pibIDResponse.headers.source = mainTaskAddress;
    a7da:	40 91 e4 03 	lds	r20, 0x03E4
    a7de:	50 91 e5 03 	lds	r21, 0x03E5
    a7e2:	50 93 a4 a1 	sts	0xA1A4, r21
    a7e6:	40 93 a3 a1 	sts	0xA1A3, r20
	pibIDResponse.headers.msgID = msgSeq;
    a7ea:	70 93 a6 a1 	sts	0xA1A6, r23
    a7ee:	60 93 a5 a1 	sts	0xA1A5, r22
	pibIDResponse.headers.msgType = LRI_ACK;
    a7f2:	21 e0       	ldi	r18, 0x01	; 1
    a7f4:	30 e0       	ldi	r19, 0x00	; 0
    a7f6:	30 93 a8 a1 	sts	0xA1A8, r19
    a7fa:	20 93 a7 a1 	sts	0xA1A7, r18

	pibIDResponse.ackInfo.originalCmd = command;
    a7fe:	90 93 aa a1 	sts	0xA1AA, r25
    a802:	80 93 a9 a1 	sts	0xA1A9, r24

	pibIDResponse.idCount.totalNumber = commTargets + 1;
    a806:	f0 93 ac a1 	sts	0xA1AC, r31
    a80a:	e0 93 ab a1 	sts	0xA1AB, r30
	pibIDResponse.idCount.numberOfReplies = commTargets + 1;
    a80e:	f0 93 ae a1 	sts	0xA1AE, r31
    a812:	e0 93 ad a1 	sts	0xA1AD, r30

	pibIDResponse.idPacket[0].version = 0x0001;
    a816:	30 93 b0 a1 	sts	0xA1B0, r19
    a81a:	20 93 af a1 	sts	0xA1AF, r18
	pibIDResponse.idPacket[0].deviceType = 0x01;
    a81e:	30 93 b2 a1 	sts	0xA1B2, r19
    a822:	20 93 b1 a1 	sts	0xA1B1, r18
	pibIDResponse.idPacket[0].address = mainTaskAddress;
    a826:	50 93 b4 a1 	sts	0xA1B4, r21
    a82a:	40 93 b3 a1 	sts	0xA1B3, r20
	memcpy(&(pibIDResponse.idPacket[0].serialNum[0]), "123456", 6);
    a82e:	56 96       	adiw	r26, 0x16	; 22
    a830:	e8 ec       	ldi	r30, 0xC8	; 200
    a832:	f3 e0       	ldi	r31, 0x03	; 3
    a834:	86 e0       	ldi	r24, 0x06	; 6
    a836:	01 90       	ld	r0, Z+
    a838:	0d 92       	st	X+, r0
    a83a:	81 50       	subi	r24, 0x01	; 1
    a83c:	e1 f7       	brne	.-8      	; 0xa836 <PIBToFloatSendID+0xa6>
	pibIDResponse.idPacket[0].port = 0;
    a83e:	10 92 bb a1 	sts	0xA1BB, r1
	pibIDResponse.idPacket[0].pollingRate = 20;
    a842:	84 e1       	ldi	r24, 0x14	; 20
    a844:	90 e0       	ldi	r25, 0x00	; 0
    a846:	a0 e0       	ldi	r26, 0x00	; 0
    a848:	b0 e0       	ldi	r27, 0x00	; 0
    a84a:	80 93 bc a1 	sts	0xA1BC, r24
    a84e:	90 93 bd a1 	sts	0xA1BD, r25
    a852:	a0 93 be a1 	sts	0xA1BE, r26
    a856:	b0 93 bf a1 	sts	0xA1BF, r27
	pibIDResponse.idPacket[0].extraInfo = 0;
    a85a:	10 92 c0 a1 	sts	0xA1C0, r1
	pibIDResponse.idPacket[0].firmwareMajor = MAJOR;
    a85e:	82 e0       	ldi	r24, 0x02	; 2
    a860:	80 93 c1 a1 	sts	0xA1C1, r24
	pibIDResponse.idPacket[0].firmwareMinor = MINOR;
    a864:	81 e0       	ldi	r24, 0x01	; 1
    a866:	80 93 c2 a1 	sts	0xA1C2, r24
	pibIDResponse.idPacket[0].firmwareRev = BUILD;
    a86a:	8b e8       	ldi	r24, 0x8B	; 139
    a86c:	91 e0       	ldi	r25, 0x01	; 1
    a86e:	90 93 c4 a1 	sts	0xA1C4, r25
    a872:	80 93 c3 a1 	sts	0xA1C3, r24
	memcpy(&(pibIDResponse.idPacket[0].description[0]), "Full PIB            ", 20);
    a876:	a5 ec       	ldi	r26, 0xC5	; 197
    a878:	b1 ea       	ldi	r27, 0xA1	; 161
    a87a:	ef ec       	ldi	r30, 0xCF	; 207
    a87c:	f3 e0       	ldi	r31, 0x03	; 3
    a87e:	84 e1       	ldi	r24, 0x14	; 20
    a880:	01 90       	ld	r0, Z+
    a882:	0d 92       	st	X+, r0
    a884:	81 50       	subi	r24, 0x01	; 1
    a886:	e1 f7       	brne	.-8      	; 0xa880 <PIBToFloatSendID+0xf0>
    a888:	40 e0       	ldi	r20, 0x00	; 0
    a88a:	50 e0       	ldi	r21, 0x00	; 0
    a88c:	20 e0       	ldi	r18, 0x00	; 0
    a88e:	30 e0       	ldi	r19, 0x00	; 0
    a890:	0f c0       	rjmp	.+30     	; 0xa8b0 <PIBToFloatSendID+0x120>

	for(int i = 0; i<commTargets; i++)
	{
		memcpy(&(pibIDResponse.idPacket[i + 1]), &personalityIDs[i], sizeof(LRI_ID_PACKET));
    a892:	d9 01       	movw	r26, r18
    a894:	a7 52       	subi	r26, 0x27	; 39
    a896:	be 45       	sbci	r27, 0x5E	; 94
    a898:	f9 01       	movw	r30, r18
    a89a:	e2 51       	subi	r30, 0x12	; 18
    a89c:	f8 44       	sbci	r31, 0x48	; 72
    a89e:	8a e2       	ldi	r24, 0x2A	; 42
    a8a0:	01 90       	ld	r0, Z+
    a8a2:	0d 92       	st	X+, r0
    a8a4:	81 50       	subi	r24, 0x01	; 1
    a8a6:	e1 f7       	brne	.-8      	; 0xa8a0 <PIBToFloatSendID+0x110>
	pibIDResponse.idPacket[0].firmwareMajor = MAJOR;
	pibIDResponse.idPacket[0].firmwareMinor = MINOR;
	pibIDResponse.idPacket[0].firmwareRev = BUILD;
	memcpy(&(pibIDResponse.idPacket[0].description[0]), "Full PIB            ", 20);

	for(int i = 0; i<commTargets; i++)
    a8a8:	4f 5f       	subi	r20, 0xFF	; 255
    a8aa:	5f 4f       	sbci	r21, 0xFF	; 255
    a8ac:	26 5d       	subi	r18, 0xD6	; 214
    a8ae:	3f 4f       	sbci	r19, 0xFF	; 255
    a8b0:	80 91 98 07 	lds	r24, 0x0798
    a8b4:	90 e0       	ldi	r25, 0x00	; 0
    a8b6:	48 17       	cp	r20, r24
    a8b8:	59 07       	cpc	r21, r25
    a8ba:	5c f3       	brlt	.-42     	; 0xa892 <PIBToFloatSendID+0x102>
	{
		memcpy(&(pibIDResponse.idPacket[i + 1]), &personalityIDs[i], sizeof(LRI_ID_PACKET));
	}

	pCRC = (uint16_t*)(((uint8_t*)&pibIDResponse) + pibIDResponse.headers.length - CRC16_SIZE);
    a8bc:	e0 91 9f a1 	lds	r30, 0xA19F
    a8c0:	f0 91 a0 a1 	lds	r31, 0xA1A0
    a8c4:	e3 56       	subi	r30, 0x63	; 99
    a8c6:	fe 45       	sbci	r31, 0x5E	; 94
    a8c8:	f0 93 9b b8 	sts	0xB89B, r31
    a8cc:	e0 93 9a b8 	sts	0xB89A, r30
	*pCRC = CalculateCRC16((uint8_t*)&pibIDResponse, pibIDResponse.headers.length - CRC16_SIZE, OTHER_CRC_START);
    a8d0:	af e9       	ldi	r26, 0x9F	; 159
    a8d2:	b1 ea       	ldi	r27, 0xA1	; 161
    a8d4:	20 e0       	ldi	r18, 0x00	; 0
    a8d6:	30 e0       	ldi	r19, 0x00	; 0
//---------------------------------------------------------------------------------
uint16_t CalculateCRC16(uint8_t* pBuffer, uint16_t size, uint16_t initValue)
{
	uint16_t crc = initValue;

	for(int i = 0; i < (size); i++)
    a8d8:	af 01       	movw	r20, r30
    a8da:	18 c0       	rjmp	.+48     	; 0xa90c <PIBToFloatSendID+0x17c>
    a8dc:	8d 91       	ld	r24, X+
    a8de:	28 27       	eor	r18, r24
    a8e0:	82 2f       	mov	r24, r18
    a8e2:	82 95       	swap	r24
    a8e4:	82 27       	eor	r24, r18
    a8e6:	08 2e       	mov	r0, r24
    a8e8:	86 95       	lsr	r24
    a8ea:	86 95       	lsr	r24
    a8ec:	80 25       	eor	r24, r0
    a8ee:	08 2e       	mov	r0, r24
    a8f0:	86 95       	lsr	r24
    a8f2:	80 25       	eor	r24, r0
    a8f4:	87 70       	andi	r24, 0x07	; 7
    a8f6:	02 2e       	mov	r0, r18
    a8f8:	23 2f       	mov	r18, r19
    a8fa:	86 95       	lsr	r24
    a8fc:	07 94       	ror	r0
    a8fe:	87 95       	ror	r24
    a900:	30 2d       	mov	r19, r0
    a902:	28 27       	eor	r18, r24
    a904:	06 94       	lsr	r0
    a906:	87 95       	ror	r24
    a908:	30 25       	eor	r19, r0
    a90a:	28 27       	eor	r18, r24
    a90c:	a4 17       	cp	r26, r20
    a90e:	b5 07       	cpc	r27, r21
    a910:	29 f7       	brne	.-54     	; 0xa8dc <PIBToFloatSendID+0x14c>
	{
		memcpy(&(pibIDResponse.idPacket[i + 1]), &personalityIDs[i], sizeof(LRI_ID_PACKET));
	}

	pCRC = (uint16_t*)(((uint8_t*)&pibIDResponse) + pibIDResponse.headers.length - CRC16_SIZE);
	*pCRC = CalculateCRC16((uint8_t*)&pibIDResponse, pibIDResponse.headers.length - CRC16_SIZE, OTHER_CRC_START);
    a912:	31 83       	std	Z+1, r19	; 0x01
    a914:	20 83       	st	Z, r18

	TxHDLC((uint8_t*)&pibIDResponse, pibIDResponse.headers.length);
    a916:	60 91 9f a1 	lds	r22, 0xA19F
    a91a:	70 91 a0 a1 	lds	r23, 0xA1A0
    a91e:	8f e9       	ldi	r24, 0x9F	; 159
    a920:	91 ea       	ldi	r25, 0xA1	; 161
    a922:	0e 94 fe 45 	call	0x8bfc	; 0x8bfc <TxHDLC>

	return;
}
    a926:	df 91       	pop	r29
    a928:	cf 91       	pop	r28
    a92a:	08 95       	ret

0000a92c <PIBToPMForwardPacket>:
	return;
}


void PIBToPMForwardPacket(PLRI_COMM_WRAPPER pHeaders)
{
    a92c:	0f 93       	push	r16
    a92e:	1f 93       	push	r17
    a930:	cf 93       	push	r28
    a932:	df 93       	push	r29
    a934:	dc 01       	movw	r26, r24
	int i = 0;
	uint16_t destID;
	int16_t index = -1;
	destID = pHeaders->destination;
    a936:	12 96       	adiw	r26, 0x02	; 2
    a938:	cd 91       	ld	r28, X+
    a93a:	dc 91       	ld	r29, X
    a93c:	13 97       	sbiw	r26, 0x03	; 3
	BOOL error = FALSE;
	uint16_t length;

	uint16_t myTimeout = 64;

	switch (pHeaders->msgType)
    a93e:	18 96       	adiw	r26, 0x08	; 8
    a940:	8d 91       	ld	r24, X+
    a942:	9c 91       	ld	r25, X
    a944:	19 97       	sbiw	r26, 0x09	; 9
    a946:	20 e2       	ldi	r18, 0x20	; 32
    a948:	80 31       	cpi	r24, 0x10	; 16
    a94a:	92 07       	cpc	r25, r18
    a94c:	f9 f0       	breq	.+62     	; 0xa98c <PIBToPMForwardPacket+0x60>
    a94e:	e0 e2       	ldi	r30, 0x20	; 32
    a950:	81 31       	cpi	r24, 0x11	; 17
    a952:	9e 07       	cpc	r25, r30
    a954:	60 f4       	brcc	.+24     	; 0xa96e <PIBToPMForwardPacket+0x42>
    a956:	f0 e2       	ldi	r31, 0x20	; 32
    a958:	80 30       	cpi	r24, 0x00	; 0
    a95a:	9f 07       	cpc	r25, r31
    a95c:	a0 f0       	brcs	.+40     	; 0xa986 <PIBToPMForwardPacket+0x5a>
    a95e:	20 e2       	ldi	r18, 0x20	; 32
    a960:	85 30       	cpi	r24, 0x05	; 5
    a962:	92 07       	cpc	r25, r18
    a964:	98 f0       	brcs	.+38     	; 0xa98c <PIBToPMForwardPacket+0x60>
    a966:	86 50       	subi	r24, 0x06	; 6
    a968:	90 42       	sbci	r25, 0x20	; 32
    a96a:	69 f4       	brne	.+26     	; 0xa986 <PIBToPMForwardPacket+0x5a>
    a96c:	0f c0       	rjmp	.+30     	; 0xa98c <PIBToPMForwardPacket+0x60>
    a96e:	f0 e2       	ldi	r31, 0x20	; 32
    a970:	80 32       	cpi	r24, 0x20	; 32
    a972:	9f 07       	cpc	r25, r31
    a974:	40 f0       	brcs	.+16     	; 0xa986 <PIBToPMForwardPacket+0x5a>
    a976:	20 e2       	ldi	r18, 0x20	; 32
    a978:	83 32       	cpi	r24, 0x23	; 35
    a97a:	92 07       	cpc	r25, r18
    a97c:	38 f0       	brcs	.+14     	; 0xa98c <PIBToPMForwardPacket+0x60>
    a97e:	80 53       	subi	r24, 0x30	; 48
    a980:	90 42       	sbci	r25, 0x20	; 32
    a982:	03 97       	sbiw	r24, 0x03	; 3
    a984:	18 f0       	brcs	.+6      	; 0xa98c <PIBToPMForwardPacket+0x60>
    a986:	00 e4       	ldi	r16, 0x40	; 64
    a988:	10 e0       	ldi	r17, 0x00	; 0
    a98a:	02 c0       	rjmp	.+4      	; 0xa990 <PIBToPMForwardPacket+0x64>
    a98c:	00 e8       	ldi	r16, 0x80	; 128
    a98e:	16 e1       	ldi	r17, 0x16	; 22
    a990:	4f ef       	ldi	r20, 0xFF	; 255
    a992:	5f ef       	ldi	r21, 0xFF	; 255
    a994:	20 e0       	ldi	r18, 0x00	; 0
    a996:	30 e0       	ldi	r19, 0x00	; 0
		}
	}

	for(i=0; i<MAX_COMM_TARGETS; i++)
	{
		if((personalityIDs[i].address & 0xFF00) == (destID & 0xFF00))
    a998:	6a e2       	ldi	r22, 0x2A	; 42
    a99a:	70 e0       	ldi	r23, 0x00	; 0
    a99c:	26 9f       	mul	r18, r22
    a99e:	f0 01       	movw	r30, r0
    a9a0:	27 9f       	mul	r18, r23
    a9a2:	f0 0d       	add	r31, r0
    a9a4:	36 9f       	mul	r19, r22
    a9a6:	f0 0d       	add	r31, r0
    a9a8:	11 24       	eor	r1, r1
    a9aa:	e2 51       	subi	r30, 0x12	; 18
    a9ac:	f8 44       	sbci	r31, 0x48	; 72
    a9ae:	84 81       	ldd	r24, Z+4	; 0x04
    a9b0:	95 81       	ldd	r25, Z+5	; 0x05
    a9b2:	8c 27       	eor	r24, r28
    a9b4:	9d 27       	eor	r25, r29
    a9b6:	80 70       	andi	r24, 0x00	; 0
    a9b8:	89 2b       	or	r24, r25
    a9ba:	19 f4       	brne	.+6      	; 0xa9c2 <PIBToPMForwardPacket+0x96>
    a9bc:	a9 01       	movw	r20, r18
    a9be:	24 e0       	ldi	r18, 0x04	; 4
    a9c0:	30 e0       	ldi	r19, 0x00	; 0
			myTimeout = 64;
			break;
		}
	}

	for(i=0; i<MAX_COMM_TARGETS; i++)
    a9c2:	2f 5f       	subi	r18, 0xFF	; 255
    a9c4:	3f 4f       	sbci	r19, 0xFF	; 255
    a9c6:	24 30       	cpi	r18, 0x04	; 4
    a9c8:	31 05       	cpc	r19, r1
    a9ca:	44 f3       	brlt	.-48     	; 0xa99c <PIBToPMForwardPacket+0x70>
			index = i;
			i=MAX_COMM_TARGETS;
		}	
	}

	if((index >= 0) && (index < MAX_COMM_TARGETS))
    a9cc:	44 30       	cpi	r20, 0x04	; 4
    a9ce:	51 05       	cpc	r21, r1
    a9d0:	b0 f5       	brcc	.+108    	; 0xaa3e <PIBToPMForwardPacket+0x112>
	{
		if(personalityIDs[index].address != 0000)
    a9d2:	8a e2       	ldi	r24, 0x2A	; 42
    a9d4:	90 e0       	ldi	r25, 0x00	; 0
    a9d6:	48 9f       	mul	r20, r24
    a9d8:	e0 01       	movw	r28, r0
    a9da:	49 9f       	mul	r20, r25
    a9dc:	d0 0d       	add	r29, r0
    a9de:	58 9f       	mul	r21, r24
    a9e0:	d0 0d       	add	r29, r0
    a9e2:	11 24       	eor	r1, r1
    a9e4:	c2 51       	subi	r28, 0x12	; 18
    a9e6:	d8 44       	sbci	r29, 0x48	; 72
    a9e8:	8c 81       	ldd	r24, Y+4	; 0x04
    a9ea:	9d 81       	ldd	r25, Y+5	; 0x05
    a9ec:	89 2b       	or	r24, r25
    a9ee:	e1 f0       	breq	.+56     	; 0xaa28 <PIBToPMForwardPacket+0xfc>
		{
			error = PM_TxHDLC((uint8_t*)pHeaders, pHeaders->length, personalityIDs[index].port, 10);
    a9f0:	6d 91       	ld	r22, X+
    a9f2:	7c 91       	ld	r23, X
    a9f4:	11 97       	sbiw	r26, 0x01	; 1
    a9f6:	cd 01       	movw	r24, r26
    a9f8:	4c 85       	ldd	r20, Y+12	; 0x0c
    a9fa:	2a e0       	ldi	r18, 0x0A	; 10
    a9fc:	30 e0       	ldi	r19, 0x00	; 0
    a9fe:	0e 94 95 44 	call	0x892a	; 0x892a <PM_TxHDLC>
			if(error == FALSE)
    aa02:	88 23       	and	r24, r24
    aa04:	71 f5       	brne	.+92     	; 0xaa62 <PIBToPMForwardPacket+0x136>
			{
				length = PM_RxHDLC(rxPMData, personalityIDs[index].port, myTimeout);
    aa06:	8d ef       	ldi	r24, 0xFD	; 253
    aa08:	94 ea       	ldi	r25, 0xA4	; 164
    aa0a:	6c 85       	ldd	r22, Y+12	; 0x0c
    aa0c:	a8 01       	movw	r20, r16
    aa0e:	0e 94 99 43 	call	0x8732	; 0x8732 <PM_RxHDLC>
				if(length != 0)
    aa12:	89 2b       	or	r24, r25
    aa14:	31 f1       	breq	.+76     	; 0xaa62 <PIBToPMForwardPacket+0x136>
				{
					TxHDLC((uint8_t*)pReply, pReply->length);
    aa16:	60 91 fe a4 	lds	r22, 0xA4FE
    aa1a:	70 91 ff a4 	lds	r23, 0xA4FF
    aa1e:	8e ef       	ldi	r24, 0xFE	; 254
    aa20:	94 ea       	ldi	r25, 0xA4	; 164
    aa22:	0e 94 fe 45 	call	0x8bfc	; 0x8bfc <TxHDLC>
    aa26:	1d c0       	rjmp	.+58     	; 0xaa62 <PIBToPMForwardPacket+0x136>
			}
		}
		else
		{
			//Send NAK
			sprintf_P(dbgMsg, PSTR("Address==0000.")); 
    aa28:	00 d0       	rcall	.+0      	; 0xaa2a <PIBToPMForwardPacket+0xfe>
    aa2a:	0f 92       	push	r0
    aa2c:	83 ef       	ldi	r24, 0xF3	; 243
    aa2e:	98 e1       	ldi	r25, 0x18	; 24
    aa30:	ed b7       	in	r30, 0x3d	; 61
    aa32:	fe b7       	in	r31, 0x3e	; 62
    aa34:	92 83       	std	Z+2, r25	; 0x02
    aa36:	81 83       	std	Z+1, r24	; 0x01
    aa38:	85 ef       	ldi	r24, 0xF5	; 245
    aa3a:	94 e0       	ldi	r25, 0x04	; 4
    aa3c:	0a c0       	rjmp	.+20     	; 0xaa52 <PIBToPMForwardPacket+0x126>
		}
	}
	else
	{
		//Send NAK
		sprintf_P(dbgMsg, PSTR("Address out of range.")); 
    aa3e:	00 d0       	rcall	.+0      	; 0xaa40 <PIBToPMForwardPacket+0x114>
    aa40:	0f 92       	push	r0
    aa42:	83 ef       	ldi	r24, 0xF3	; 243
    aa44:	98 e1       	ldi	r25, 0x18	; 24
    aa46:	ed b7       	in	r30, 0x3d	; 61
    aa48:	fe b7       	in	r31, 0x3e	; 62
    aa4a:	92 83       	std	Z+2, r25	; 0x02
    aa4c:	81 83       	std	Z+1, r24	; 0x01
    aa4e:	8f ed       	ldi	r24, 0xDF	; 223
    aa50:	94 e0       	ldi	r25, 0x04	; 4
    aa52:	94 83       	std	Z+4, r25	; 0x04
    aa54:	83 83       	std	Z+3, r24	; 0x03
    aa56:	0e 94 51 f1 	call	0x1e2a2	; 0x1e2a2 <sprintf_P>
    aa5a:	0f 90       	pop	r0
    aa5c:	0f 90       	pop	r0
    aa5e:	0f 90       	pop	r0
    aa60:	0f 90       	pop	r0
		SEND_MSG;
	}

	return;
}
    aa62:	df 91       	pop	r29
    aa64:	cf 91       	pop	r28
    aa66:	1f 91       	pop	r17
    aa68:	0f 91       	pop	r16
    aa6a:	08 95       	ret

0000aa6c <FloatComms>:
	}
}


void FloatComms(void* pParam)
{
    aa6c:	2f 92       	push	r2
    aa6e:	3f 92       	push	r3
    aa70:	4f 92       	push	r4
    aa72:	5f 92       	push	r5
    aa74:	6f 92       	push	r6
    aa76:	7f 92       	push	r7
    aa78:	8f 92       	push	r8
    aa7a:	9f 92       	push	r9
    aa7c:	af 92       	push	r10
    aa7e:	bf 92       	push	r11
    aa80:	cf 92       	push	r12
    aa82:	df 92       	push	r13
    aa84:	ef 92       	push	r14
    aa86:	ff 92       	push	r15
    aa88:	0f 93       	push	r16
    aa8a:	1f 93       	push	r17
    aa8c:	df 93       	push	r29
    aa8e:	cf 93       	push	r28
    aa90:	cd b7       	in	r28, 0x3d	; 61
    aa92:	de b7       	in	r29, 0x3e	; 62
    aa94:	62 97       	sbiw	r28, 0x12	; 18
    aa96:	0f b6       	in	r0, 0x3f	; 63
    aa98:	f8 94       	cli
    aa9a:	de bf       	out	0x3e, r29	; 62
    aa9c:	0f be       	out	0x3f, r0	; 63
    aa9e:	cd bf       	out	0x3d, r28	; 61

	PLRI_COMM_WRAPPER pHeaders= (PLRI_COMM_WRAPPER)(rxFloatData + 1);
	PLRI_REQUEST_PIB_STATUS pStatus = (PLRI_REQUEST_PIB_STATUS)(rxFloatData + 1 + sizeof(LRI_COMM_WRAPPER));
	PLRI_REQUEST_SERIAL_PORT_PASS_THROUGH pPassThrough;
 	pGenericNak = (PLRI_GENERIC_NAK_PACKET)txHDLCBuffer;
    aaa0:	8d e2       	ldi	r24, 0x2D	; 45
    aaa2:	97 ea       	ldi	r25, 0xA7	; 167
    aaa4:	90 93 cc a2 	sts	0xA2CC, r25
    aaa8:	80 93 cb a2 	sts	0xA2CB, r24
    aaac:	b1 e9       	ldi	r27, 0x91	; 145
    aaae:	eb 2e       	mov	r14, r27
    aab0:	b1 ea       	ldi	r27, 0xA1	; 161
    aab2:	fb 2e       	mov	r15, r27
    aab4:	10 e0       	ldi	r17, 0x00	; 0

	uint8_t err = 0;

	for(int i = 0; i<4; i++)
	{
		OSuartFlushBuffers(i, UART_ALL_BUFFERS);
    aab6:	81 2f       	mov	r24, r17
    aab8:	63 e0       	ldi	r22, 0x03	; 3
    aaba:	0e 94 7a 31 	call	0x62f4	; 0x62f4 <OSuartFlushBuffers>
		kill[i] = FALSE;
    aabe:	d7 01       	movw	r26, r14
    aac0:	1d 92       	st	X+, r1
    aac2:	7d 01       	movw	r14, r26
    aac4:	1f 5f       	subi	r17, 0xFF	; 255

	uint8_t nakCode = 0;

	uint8_t err = 0;

	for(int i = 0; i<4; i++)
    aac6:	14 30       	cpi	r17, 0x04	; 4
    aac8:	b1 f7       	brne	.-20     	; 0xaab6 <FloatComms+0x4a>
    aaca:	55 24       	eor	r5, r5
		
		if(msgLen != 0)
		{
			if(ValidateCRC16((uint8_t*)pHeaders, pHeaders->length, OTHER_CRC_START) == SUCCESS)
			{
				dbgMsg[0] = 0; SEND_MSG;
    aacc:	a3 ef       	ldi	r26, 0xF3	; 243
    aace:	6a 2e       	mov	r6, r26
    aad0:	a8 e1       	ldi	r26, 0x18	; 24
    aad2:	7a 2e       	mov	r7, r26
							sprintf_P(dbgMsg, PSTR("Received serial port pass through request"));
							SEND_MSG;

							uint8_t myTOCount = 0;
							serialPortPassThroughOK = FALSE;
							serialPortPassThrough[pPassThrough->personalityModuleNumber] = TRUE;
    aad4:	44 24       	eor	r4, r4
    aad6:	4a 94       	dec	r4
							pibGenericAck.headers.source = mainTaskAddress;
							pibGenericAck.headers.msgID = pHeaders->msgID;

							pibGenericAck.ackInfo.originalCmd = pHeaders->msgType;

							pibGenericAck.pibCount.totalNumber = 1;
    aad8:	f1 e0       	ldi	r31, 0x01	; 1
    aada:	2f 2e       	mov	r2, r31
    aadc:	31 2c       	mov	r3, r1
		pHeaders= (PLRI_COMM_WRAPPER)(rxFloatData + 1);
		pStatus = (PLRI_REQUEST_PIB_STATUS)(rxFloatData + 1 + sizeof(LRI_COMM_WRAPPER));
		pPassThrough = (PLRI_REQUEST_SERIAL_PORT_PASS_THROUGH)(rxFloatData + 1 + sizeof(LRI_COMM_WRAPPER));
		uint16_t msgLen;

		memset(rxFloatData, 0, HDLC_MAX_LENGTH);
    aade:	ed ec       	ldi	r30, 0xCD	; 205
    aae0:	f2 ea       	ldi	r31, 0xA2	; 162
    aae2:	20 e3       	ldi	r18, 0x30	; 48
    aae4:	32 e0       	ldi	r19, 0x02	; 2
    aae6:	11 92       	st	Z+, r1
    aae8:	21 50       	subi	r18, 0x01	; 1
    aaea:	30 40       	sbci	r19, 0x00	; 0
    aaec:	e1 f7       	brne	.-8      	; 0xaae6 <FloatComms+0x7a>
		msgLen = RxHDLC(rxFloatData);
    aaee:	8d ec       	ldi	r24, 0xCD	; 205
    aaf0:	92 ea       	ldi	r25, 0xA2	; 162
    aaf2:	0e 94 1e 44 	call	0x883c	; 0x883c <RxHDLC>
		
		if(msgLen != 0)
    aaf6:	89 2b       	or	r24, r25
    aaf8:	91 f3       	breq	.-28     	; 0xaade <FloatComms+0x72>
		{
			if(ValidateCRC16((uint8_t*)pHeaders, pHeaders->length, OTHER_CRC_START) == SUCCESS)
    aafa:	80 91 ce a2 	lds	r24, 0xA2CE
    aafe:	90 91 cf a2 	lds	r25, 0xA2CF
    ab02:	ee ec       	ldi	r30, 0xCE	; 206
    ab04:	f2 ea       	ldi	r31, 0xA2	; 162
    ab06:	20 e0       	ldi	r18, 0x00	; 0
    ab08:	30 e0       	ldi	r19, 0x00	; 0
	uint8_t retval = FALSE;
	uint16_t crc = initValue;
	uint16_t* pRxCRC = NULL;
	int i = 0;

	for(i = 0; i < (size - CRC16_SIZE); i++)
    ab0a:	dc 01       	movw	r26, r24
    ab0c:	12 97       	sbiw	r26, 0x02	; 2
    ab0e:	ac 01       	movw	r20, r24
    ab10:	44 53       	subi	r20, 0x34	; 52
    ab12:	5d 45       	sbci	r21, 0x5D	; 93
    ab14:	18 c0       	rjmp	.+48     	; 0xab46 <FloatComms+0xda>
    ab16:	81 91       	ld	r24, Z+
    ab18:	28 27       	eor	r18, r24
    ab1a:	82 2f       	mov	r24, r18
    ab1c:	82 95       	swap	r24
    ab1e:	82 27       	eor	r24, r18
    ab20:	08 2e       	mov	r0, r24
    ab22:	86 95       	lsr	r24
    ab24:	86 95       	lsr	r24
    ab26:	80 25       	eor	r24, r0
    ab28:	08 2e       	mov	r0, r24
    ab2a:	86 95       	lsr	r24
    ab2c:	80 25       	eor	r24, r0
    ab2e:	87 70       	andi	r24, 0x07	; 7
    ab30:	02 2e       	mov	r0, r18
    ab32:	23 2f       	mov	r18, r19
    ab34:	86 95       	lsr	r24
    ab36:	07 94       	ror	r0
    ab38:	87 95       	ror	r24
    ab3a:	30 2d       	mov	r19, r0
    ab3c:	28 27       	eor	r18, r24
    ab3e:	06 94       	lsr	r0
    ab40:	87 95       	ror	r24
    ab42:	30 25       	eor	r19, r0
    ab44:	28 27       	eor	r18, r24
    ab46:	e4 17       	cp	r30, r20
    ab48:	f5 07       	cpc	r31, r21
    ab4a:	29 f7       	brne	.-54     	; 0xab16 <FloatComms+0xaa>
		crc = _crc16_update(crc, *(pBuffer + i));
	}

	pRxCRC = (uint16_t*)(pBuffer + i);

	if(crc == *pRxCRC)
    ab4c:	a2 53       	subi	r26, 0x32	; 50
    ab4e:	bd 45       	sbci	r27, 0x5D	; 93
    ab50:	8d 91       	ld	r24, X+
    ab52:	9c 91       	ld	r25, X
    ab54:	28 17       	cp	r18, r24
    ab56:	39 07       	cpc	r19, r25
    ab58:	09 f0       	breq	.+2      	; 0xab5c <FloatComms+0xf0>
    ab5a:	c1 cf       	rjmp	.-126    	; 0xaade <FloatComms+0x72>
		
		if(msgLen != 0)
		{
			if(ValidateCRC16((uint8_t*)pHeaders, pHeaders->length, OTHER_CRC_START) == SUCCESS)
			{
				dbgMsg[0] = 0; SEND_MSG;
    ab5c:	10 92 f3 18 	sts	0x18F3, r1
				sprintf_P(dbgMsg, PSTR("RECV:\tSrc:0x%04X\tDest:0x%04X\tType:0x%04X"), pHeaders->source, pHeaders->destination, pHeaders->msgType & ~0x8000);
    ab60:	4d b7       	in	r20, 0x3d	; 61
    ab62:	5e b7       	in	r21, 0x3e	; 62
    ab64:	4a 50       	subi	r20, 0x0A	; 10
    ab66:	50 40       	sbci	r21, 0x00	; 0
    ab68:	0f b6       	in	r0, 0x3f	; 63
    ab6a:	f8 94       	cli
    ab6c:	5e bf       	out	0x3e, r21	; 62
    ab6e:	0f be       	out	0x3f, r0	; 63
    ab70:	4d bf       	out	0x3d, r20	; 61
    ab72:	ed b7       	in	r30, 0x3d	; 61
    ab74:	fe b7       	in	r31, 0x3e	; 62
    ab76:	31 96       	adiw	r30, 0x01	; 1
    ab78:	ad b7       	in	r26, 0x3d	; 61
    ab7a:	be b7       	in	r27, 0x3e	; 62
    ab7c:	12 96       	adiw	r26, 0x02	; 2
    ab7e:	7c 92       	st	X, r7
    ab80:	6e 92       	st	-X, r6
    ab82:	11 97       	sbiw	r26, 0x01	; 1
    ab84:	26 ef       	ldi	r18, 0xF6	; 246
    ab86:	35 e0       	ldi	r19, 0x05	; 5
    ab88:	33 83       	std	Z+3, r19	; 0x03
    ab8a:	22 83       	std	Z+2, r18	; 0x02
    ab8c:	80 91 d2 a2 	lds	r24, 0xA2D2
    ab90:	90 91 d3 a2 	lds	r25, 0xA2D3
    ab94:	95 83       	std	Z+5, r25	; 0x05
    ab96:	84 83       	std	Z+4, r24	; 0x04
    ab98:	80 91 d0 a2 	lds	r24, 0xA2D0
    ab9c:	90 91 d1 a2 	lds	r25, 0xA2D1
    aba0:	97 83       	std	Z+7, r25	; 0x07
    aba2:	86 83       	std	Z+6, r24	; 0x06
    aba4:	80 91 d6 a2 	lds	r24, 0xA2D6
    aba8:	90 91 d7 a2 	lds	r25, 0xA2D7
    abac:	9f 77       	andi	r25, 0x7F	; 127
    abae:	91 87       	std	Z+9, r25	; 0x09
    abb0:	80 87       	std	Z+8, r24	; 0x08
    abb2:	0e 94 51 f1 	call	0x1e2a2	; 0x1e2a2 <sprintf_P>
				SEND_MSG;

				if(((pHeaders->destination & 0xFF00) == (mainTaskAddress & 0xFF00)) ||
    abb6:	20 91 d0 a2 	lds	r18, 0xA2D0
    abba:	30 91 d1 a2 	lds	r19, 0xA2D1
    abbe:	80 91 e4 03 	lds	r24, 0x03E4
    abc2:	90 91 e5 03 	lds	r25, 0x03E5
    abc6:	82 27       	eor	r24, r18
    abc8:	93 27       	eor	r25, r19
    abca:	80 70       	andi	r24, 0x00	; 0
    abcc:	4d b7       	in	r20, 0x3d	; 61
    abce:	5e b7       	in	r21, 0x3e	; 62
    abd0:	46 5f       	subi	r20, 0xF6	; 246
    abd2:	5f 4f       	sbci	r21, 0xFF	; 255
    abd4:	0f b6       	in	r0, 0x3f	; 63
    abd6:	f8 94       	cli
    abd8:	5e bf       	out	0x3e, r21	; 62
    abda:	0f be       	out	0x3f, r0	; 63
    abdc:	4d bf       	out	0x3d, r20	; 61
    abde:	89 2b       	or	r24, r25
    abe0:	61 f0       	breq	.+24     	; 0xabfa <FloatComms+0x18e>
    abe2:	20 70       	andi	r18, 0x00	; 0
    abe4:	20 50       	subi	r18, 0x00	; 0
    abe6:	3f 4f       	sbci	r19, 0xFF	; 255
    abe8:	09 f0       	breq	.+2      	; 0xabec <FloatComms+0x180>
    abea:	67 c2       	rjmp	.+1230   	; 0xb0ba <FloatComms+0x64e>
    abec:	80 91 d6 a2 	lds	r24, 0xA2D6
    abf0:	90 91 d7 a2 	lds	r25, 0xA2D7
    abf4:	40 97       	sbiw	r24, 0x10	; 16
    abf6:	09 f0       	breq	.+2      	; 0xabfa <FloatComms+0x18e>
    abf8:	60 c2       	rjmp	.+1216   	; 0xb0ba <FloatComms+0x64e>
					(((pHeaders->destination & 0xFF00) == 0xFF00) && (pHeaders->msgType == REQUEST_ID)))
				{	
						
					switch(pHeaders->msgType & ~0x8000)
    abfa:	80 91 d6 a2 	lds	r24, 0xA2D6
    abfe:	90 91 d7 a2 	lds	r25, 0xA2D7
    ac02:	9f 77       	andi	r25, 0x7F	; 127
    ac04:	84 32       	cpi	r24, 0x24	; 36
    ac06:	91 05       	cpc	r25, r1
    ac08:	09 f4       	brne	.+2      	; 0xac0c <FloatComms+0x1a0>
    ac0a:	2d c1       	rjmp	.+602    	; 0xae66 <FloatComms+0x3fa>
    ac0c:	85 32       	cpi	r24, 0x25	; 37
    ac0e:	91 05       	cpc	r25, r1
    ac10:	40 f4       	brcc	.+16     	; 0xac22 <FloatComms+0x1b6>
    ac12:	80 31       	cpi	r24, 0x10	; 16
    ac14:	91 05       	cpc	r25, r1
    ac16:	99 f0       	breq	.+38     	; 0xac3e <FloatComms+0x1d2>
    ac18:	82 32       	cpi	r24, 0x22	; 34
    ac1a:	91 05       	cpc	r25, r1
    ac1c:	09 f0       	breq	.+2      	; 0xac20 <FloatComms+0x1b4>
    ac1e:	2e c2       	rjmp	.+1116   	; 0xb07c <FloatComms+0x610>
    ac20:	3c c0       	rjmp	.+120    	; 0xac9a <FloatComms+0x22e>
    ac22:	80 34       	cpi	r24, 0x40	; 64
    ac24:	91 05       	cpc	r25, r1
    ac26:	09 f4       	brne	.+2      	; 0xac2a <FloatComms+0x1be>
    ac28:	c5 c0       	rjmp	.+394    	; 0xadb4 <FloatComms+0x348>
    ac2a:	af e0       	ldi	r26, 0x0F	; 15
    ac2c:	8d 3a       	cpi	r24, 0xAD	; 173
    ac2e:	9a 07       	cpc	r25, r26
    ac30:	09 f4       	brne	.+2      	; 0xac34 <FloatComms+0x1c8>
    ac32:	36 c1       	rjmp	.+620    	; 0xaea0 <FloatComms+0x434>
    ac34:	80 33       	cpi	r24, 0x30	; 48
    ac36:	91 05       	cpc	r25, r1
    ac38:	09 f0       	breq	.+2      	; 0xac3c <FloatComms+0x1d0>
    ac3a:	20 c2       	rjmp	.+1088   	; 0xb07c <FloatComms+0x610>
    ac3c:	ef c0       	rjmp	.+478    	; 0xae1c <FloatComms+0x3b0>
					{
						case REQUEST_ID:
						{
							sprintf_P(dbgMsg, PSTR("Received id request"));
    ac3e:	00 d0       	rcall	.+0      	; 0xac40 <FloatComms+0x1d4>
    ac40:	0f 92       	push	r0
    ac42:	ed b7       	in	r30, 0x3d	; 61
    ac44:	fe b7       	in	r31, 0x3e	; 62
    ac46:	72 82       	std	Z+2, r7	; 0x02
    ac48:	61 82       	std	Z+1, r6	; 0x01
    ac4a:	22 ee       	ldi	r18, 0xE2	; 226
    ac4c:	35 e0       	ldi	r19, 0x05	; 5
    ac4e:	34 83       	std	Z+4, r19	; 0x04
    ac50:	23 83       	std	Z+3, r18	; 0x03
    ac52:	0e 94 51 f1 	call	0x1e2a2	; 0x1e2a2 <sprintf_P>
							SEND_MSG;

							OSuartFlushBuffers(FLOAT_PORT, UART_RX_BUFFER);
    ac56:	0f 90       	pop	r0
    ac58:	0f 90       	pop	r0
    ac5a:	0f 90       	pop	r0
    ac5c:	0f 90       	pop	r0
    ac5e:	80 e0       	ldi	r24, 0x00	; 0
    ac60:	61 e0       	ldi	r22, 0x01	; 1
    ac62:	0e 94 7a 31 	call	0x62f4	; 0x62f4 <OSuartFlushBuffers>
							if(pHeaders->length == 0x10)
    ac66:	80 91 ce a2 	lds	r24, 0xA2CE
    ac6a:	90 91 cf a2 	lds	r25, 0xA2CF
    ac6e:	40 97       	sbiw	r24, 0x10	; 16
    ac70:	09 f0       	breq	.+2      	; 0xac74 <FloatComms+0x208>
    ac72:	54 c2       	rjmp	.+1192   	; 0xb11c <FloatComms+0x6b0>
							{
								PIBToPMGetID(pHeaders);
    ac74:	8e ec       	ldi	r24, 0xCE	; 206
    ac76:	92 ea       	ldi	r25, 0xA2	; 162
    ac78:	0e 94 15 45 	call	0x8a2a	; 0x8a2a <PIBToPMGetID>
								PIBToFloatSendID(pHeaders->msgType, pHeaders->msgID, pHeaders->source);
    ac7c:	60 91 d4 a2 	lds	r22, 0xA2D4
    ac80:	70 91 d5 a2 	lds	r23, 0xA2D5
    ac84:	40 91 d2 a2 	lds	r20, 0xA2D2
    ac88:	50 91 d3 a2 	lds	r21, 0xA2D3
    ac8c:	80 91 d6 a2 	lds	r24, 0xA2D6
    ac90:	90 91 d7 a2 	lds	r25, 0xA2D7
    ac94:	0e 94 c8 53 	call	0xa790	; 0xa790 <PIBToFloatSendID>
    ac98:	41 c2       	rjmp	.+1154   	; 0xb11c <FloatComms+0x6b0>
							}
							break;
						}
						case REQUEST_PIB_STATUS:
						{
							sprintf_P(dbgMsg, PSTR("Received PIB status request"));
    ac9a:	00 d0       	rcall	.+0      	; 0xac9c <FloatComms+0x230>
    ac9c:	0f 92       	push	r0
    ac9e:	ad b7       	in	r26, 0x3d	; 61
    aca0:	be b7       	in	r27, 0x3e	; 62
    aca2:	12 96       	adiw	r26, 0x02	; 2
    aca4:	7c 92       	st	X, r7
    aca6:	6e 92       	st	-X, r6
    aca8:	11 97       	sbiw	r26, 0x01	; 1
    acaa:	e6 ec       	ldi	r30, 0xC6	; 198
    acac:	f5 e0       	ldi	r31, 0x05	; 5
    acae:	14 96       	adiw	r26, 0x04	; 4
    acb0:	fc 93       	st	X, r31
    acb2:	ee 93       	st	-X, r30
    acb4:	13 97       	sbiw	r26, 0x03	; 3
    acb6:	0e 94 51 f1 	call	0x1e2a2	; 0x1e2a2 <sprintf_P>
							SEND_MSG;

							tm time;

							OSuartFlushBuffers(FLOAT_PORT, UART_RX_BUFFER);
    acba:	0f 90       	pop	r0
    acbc:	0f 90       	pop	r0
    acbe:	0f 90       	pop	r0
    acc0:	0f 90       	pop	r0
    acc2:	80 e0       	ldi	r24, 0x00	; 0
    acc4:	61 e0       	ldi	r22, 0x01	; 1
    acc6:	0e 94 7a 31 	call	0x62f4	; 0x62f4 <OSuartFlushBuffers>

							time.tm_sec = pStatus->timestamp.second;
    acca:	80 91 d8 a2 	lds	r24, 0xA2D8
    acce:	99 27       	eor	r25, r25
    acd0:	87 fd       	sbrc	r24, 7
    acd2:	90 95       	com	r25
    acd4:	88 2e       	mov	r8, r24
    acd6:	9a 83       	std	Y+2, r25	; 0x02
    acd8:	89 83       	std	Y+1, r24	; 0x01
							time.tm_min = pStatus->timestamp.minute;
    acda:	80 91 d9 a2 	lds	r24, 0xA2D9
    acde:	99 27       	eor	r25, r25
    ace0:	87 fd       	sbrc	r24, 7
    ace2:	90 95       	com	r25
    ace4:	a8 2e       	mov	r10, r24
    ace6:	9c 83       	std	Y+4, r25	; 0x04
    ace8:	8b 83       	std	Y+3, r24	; 0x03
							time.tm_hour = pStatus->timestamp.hour;
    acea:	80 91 da a2 	lds	r24, 0xA2DA
    acee:	99 27       	eor	r25, r25
    acf0:	87 fd       	sbrc	r24, 7
    acf2:	90 95       	com	r25
    acf4:	c8 2e       	mov	r12, r24
    acf6:	9e 83       	std	Y+6, r25	; 0x06
    acf8:	8d 83       	std	Y+5, r24	; 0x05
							time.tm_mday = pStatus->timestamp.day;
    acfa:	80 91 db a2 	lds	r24, 0xA2DB
    acfe:	99 27       	eor	r25, r25
    ad00:	87 fd       	sbrc	r24, 7
    ad02:	90 95       	com	r25
    ad04:	e8 2e       	mov	r14, r24
    ad06:	98 87       	std	Y+8, r25	; 0x08
    ad08:	8f 83       	std	Y+7, r24	; 0x07
							time.tm_mon = pStatus->timestamp.month;
    ad0a:	80 91 dc a2 	lds	r24, 0xA2DC
    ad0e:	99 27       	eor	r25, r25
    ad10:	87 fd       	sbrc	r24, 7
    ad12:	90 95       	com	r25
    ad14:	08 2f       	mov	r16, r24
    ad16:	9a 87       	std	Y+10, r25	; 0x0a
    ad18:	89 87       	std	Y+9, r24	; 0x09
							time.tm_year = pStatus->timestamp.year + 2000;
    ad1a:	80 91 dd a2 	lds	r24, 0xA2DD
    ad1e:	90 e0       	ldi	r25, 0x00	; 0
    ad20:	80 53       	subi	r24, 0x30	; 48
    ad22:	98 4f       	sbci	r25, 0xF8	; 248
    ad24:	28 2f       	mov	r18, r24
    ad26:	9c 87       	std	Y+12, r25	; 0x0c
    ad28:	8b 87       	std	Y+11, r24	; 0x0b

							settime(mktime(time));
    ad2a:	9a 80       	ldd	r9, Y+2	; 0x02
    ad2c:	bc 80       	ldd	r11, Y+4	; 0x04
    ad2e:	de 80       	ldd	r13, Y+6	; 0x06
    ad30:	f8 84       	ldd	r15, Y+8	; 0x08
    ad32:	1a 85       	ldd	r17, Y+10	; 0x0a
    ad34:	3c 85       	ldd	r19, Y+12	; 0x0c
    ad36:	4d 85       	ldd	r20, Y+13	; 0x0d
    ad38:	5e 85       	ldd	r21, Y+14	; 0x0e
    ad3a:	6f 85       	ldd	r22, Y+15	; 0x0f
    ad3c:	78 89       	ldd	r23, Y+16	; 0x10
    ad3e:	89 89       	ldd	r24, Y+17	; 0x11
    ad40:	9a 89       	ldd	r25, Y+18	; 0x12
    ad42:	0e 94 48 34 	call	0x6890	; 0x6890 <mktime>
    ad46:	0e 94 2f 34 	call	0x685e	; 0x685e <settime>

							latitude = pStatus->latitude;
    ad4a:	80 91 de a2 	lds	r24, 0xA2DE
    ad4e:	90 91 df a2 	lds	r25, 0xA2DF
    ad52:	a0 91 e0 a2 	lds	r26, 0xA2E0
    ad56:	b0 91 e1 a2 	lds	r27, 0xA2E1
    ad5a:	80 93 e5 b7 	sts	0xB7E5, r24
    ad5e:	90 93 e6 b7 	sts	0xB7E6, r25
    ad62:	a0 93 e7 b7 	sts	0xB7E7, r26
    ad66:	b0 93 e8 b7 	sts	0xB7E8, r27
							longitude = pStatus->longitude;
    ad6a:	80 91 e2 a2 	lds	r24, 0xA2E2
    ad6e:	90 91 e3 a2 	lds	r25, 0xA2E3
    ad72:	a0 91 e4 a2 	lds	r26, 0xA2E4
    ad76:	b0 91 e5 a2 	lds	r27, 0xA2E5
    ad7a:	80 93 e9 b7 	sts	0xB7E9, r24
    ad7e:	90 93 ea b7 	sts	0xB7EA, r25
    ad82:	a0 93 eb b7 	sts	0xB7EB, r26
    ad86:	b0 93 ec b7 	sts	0xB7EC, r27
							fixValid = pStatus->fixValid;
    ad8a:	80 91 e6 a2 	lds	r24, 0xA2E6
    ad8e:	80 93 ed b7 	sts	0xB7ED, r24
							PIBToFloatSendPIBStatus(pHeaders->msgType, pHeaders->msgID, pHeaders->source);
    ad92:	60 91 d4 a2 	lds	r22, 0xA2D4
    ad96:	70 91 d5 a2 	lds	r23, 0xA2D5
    ad9a:	40 91 d2 a2 	lds	r20, 0xA2D2
    ad9e:	50 91 d3 a2 	lds	r21, 0xA2D3
    ada2:	80 91 d6 a2 	lds	r24, 0xA2D6
    ada6:	90 91 d7 a2 	lds	r25, 0xA2D7
    adaa:	0e 94 44 53 	call	0xa688	; 0xa688 <PIBToFloatSendPIBStatus>

							handledStatusRequest = TRUE;
    adae:	40 92 97 07 	sts	0x0797, r4
    adb2:	b4 c1       	rjmp	.+872    	; 0xb11c <FloatComms+0x6b0>
							break;
						}
						case REQUEST_WAITING_PACKET:
						{
							sprintf_P(dbgMsg, PSTR("Received request waiting packet"));
    adb4:	00 d0       	rcall	.+0      	; 0xadb6 <FloatComms+0x34a>
    adb6:	0f 92       	push	r0
    adb8:	ad b7       	in	r26, 0x3d	; 61
    adba:	be b7       	in	r27, 0x3e	; 62
    adbc:	12 96       	adiw	r26, 0x02	; 2
    adbe:	7c 92       	st	X, r7
    adc0:	6e 92       	st	-X, r6
    adc2:	11 97       	sbiw	r26, 0x01	; 1
    adc4:	e6 ea       	ldi	r30, 0xA6	; 166
    adc6:	f5 e0       	ldi	r31, 0x05	; 5
    adc8:	14 96       	adiw	r26, 0x04	; 4
    adca:	fc 93       	st	X, r31
    adcc:	ee 93       	st	-X, r30
    adce:	13 97       	sbiw	r26, 0x03	; 3
    add0:	0e 94 51 f1 	call	0x1e2a2	; 0x1e2a2 <sprintf_P>
							SEND_MSG;

							OSuartFlushBuffers(FLOAT_PORT, UART_RX_BUFFER);
    add4:	0f 90       	pop	r0
    add6:	0f 90       	pop	r0
    add8:	0f 90       	pop	r0
    adda:	0f 90       	pop	r0
    addc:	80 e0       	ldi	r24, 0x00	; 0
    adde:	61 e0       	ldi	r22, 0x01	; 1
    ade0:	0e 94 7a 31 	call	0x62f4	; 0x62f4 <OSuartFlushBuffers>

							if((headFloatTx != tailFloatTx) || (headFloatAckTx != tailFloatAckTx))
    ade4:	90 91 93 07 	lds	r25, 0x0793
    ade8:	80 91 94 07 	lds	r24, 0x0794
    adec:	98 17       	cp	r25, r24
    adee:	39 f4       	brne	.+14     	; 0xadfe <FloatComms+0x392>
    adf0:	90 91 95 07 	lds	r25, 0x0795
    adf4:	80 91 96 07 	lds	r24, 0x0796
    adf8:	98 17       	cp	r25, r24
    adfa:	09 f4       	brne	.+2      	; 0xadfe <FloatComms+0x392>
    adfc:	e1 c1       	rjmp	.+962    	; 0xb1c0 <FloatComms+0x754>
								PIBToFloatSendWaitingData(pHeaders->msgType, pHeaders->msgID, pHeaders->source);
    adfe:	60 91 d4 a2 	lds	r22, 0xA2D4
    ae02:	70 91 d5 a2 	lds	r23, 0xA2D5
    ae06:	40 91 d2 a2 	lds	r20, 0xA2D2
    ae0a:	50 91 d3 a2 	lds	r21, 0xA2D3
    ae0e:	80 91 d6 a2 	lds	r24, 0xA2D6
    ae12:	90 91 d7 a2 	lds	r25, 0xA2D7
    ae16:	0e 94 42 52 	call	0xa484	; 0xa484 <PIBToFloatSendWaitingData>
    ae1a:	80 c1       	rjmp	.+768    	; 0xb11c <FloatComms+0x6b0>
					
							break;
						}
						case POWER_NOTIFICATION:
						{
							sprintf_P(dbgMsg, PSTR("Received power notification"));
    ae1c:	00 d0       	rcall	.+0      	; 0xae1e <FloatComms+0x3b2>
    ae1e:	0f 92       	push	r0
    ae20:	ad b7       	in	r26, 0x3d	; 61
    ae22:	be b7       	in	r27, 0x3e	; 62
    ae24:	12 96       	adiw	r26, 0x02	; 2
    ae26:	7c 92       	st	X, r7
    ae28:	6e 92       	st	-X, r6
    ae2a:	11 97       	sbiw	r26, 0x01	; 1
    ae2c:	ea e8       	ldi	r30, 0x8A	; 138
    ae2e:	f5 e0       	ldi	r31, 0x05	; 5
    ae30:	14 96       	adiw	r26, 0x04	; 4
    ae32:	fc 93       	st	X, r31
    ae34:	ee 93       	st	-X, r30
    ae36:	13 97       	sbiw	r26, 0x03	; 3
    ae38:	0e 94 51 f1 	call	0x1e2a2	; 0x1e2a2 <sprintf_P>
							SEND_MSG;

							OSuartFlushBuffers(FLOAT_PORT, UART_RX_BUFFER);
    ae3c:	0f 90       	pop	r0
    ae3e:	0f 90       	pop	r0
    ae40:	0f 90       	pop	r0
    ae42:	0f 90       	pop	r0
    ae44:	80 e0       	ldi	r24, 0x00	; 0
    ae46:	61 e0       	ldi	r22, 0x01	; 1
    ae48:	0e 94 7a 31 	call	0x62f4	; 0x62f4 <OSuartFlushBuffers>

							for (uint8_t i=0; i<NUM_TASK_FILES; i++)
								powerDown[i] = TRUE;
    ae4c:	40 92 95 a1 	sts	0xA195, r4
    ae50:	40 92 96 a1 	sts	0xA196, r4
    ae54:	40 92 97 a1 	sts	0xA197, r4
    ae58:	40 92 98 a1 	sts	0xA198, r4

							PIBToFloatSendPowerReply(pHeaders);
    ae5c:	8e ec       	ldi	r24, 0xCE	; 206
    ae5e:	92 ea       	ldi	r25, 0xA2	; 162
    ae60:	0e 94 d8 51 	call	0xa3b0	; 0xa3b0 <PIBToFloatSendPowerReply>
    ae64:	5b c1       	rjmp	.+694    	; 0xb11c <FloatComms+0x6b0>
							break;
						}
						case SEND_FWD_ICD_CMD:
						{
							sprintf_P(dbgMsg, PSTR("Received forward command"));
    ae66:	00 d0       	rcall	.+0      	; 0xae68 <FloatComms+0x3fc>
    ae68:	0f 92       	push	r0
    ae6a:	ad b7       	in	r26, 0x3d	; 61
    ae6c:	be b7       	in	r27, 0x3e	; 62
    ae6e:	12 96       	adiw	r26, 0x02	; 2
    ae70:	7c 92       	st	X, r7
    ae72:	6e 92       	st	-X, r6
    ae74:	11 97       	sbiw	r26, 0x01	; 1
    ae76:	e1 e7       	ldi	r30, 0x71	; 113
    ae78:	f5 e0       	ldi	r31, 0x05	; 5
    ae7a:	14 96       	adiw	r26, 0x04	; 4
    ae7c:	fc 93       	st	X, r31
    ae7e:	ee 93       	st	-X, r30
    ae80:	13 97       	sbiw	r26, 0x03	; 3
    ae82:	0e 94 51 f1 	call	0x1e2a2	; 0x1e2a2 <sprintf_P>
							SEND_MSG;

							OSuartFlushBuffers(FLOAT_PORT, UART_RX_BUFFER);
    ae86:	0f 90       	pop	r0
    ae88:	0f 90       	pop	r0
    ae8a:	0f 90       	pop	r0
    ae8c:	0f 90       	pop	r0
    ae8e:	80 e0       	ldi	r24, 0x00	; 0
    ae90:	61 e0       	ldi	r22, 0x01	; 1
    ae92:	0e 94 7a 31 	call	0x62f4	; 0x62f4 <OSuartFlushBuffers>
							//printf("Received File Request\r\n");
							PIBRcvdFloatCmd((PPYLD_MGR_FILE_RX_BUFFER)pHeaders);
    ae96:	8e ec       	ldi	r24, 0xCE	; 206
    ae98:	92 ea       	ldi	r25, 0xA2	; 162
    ae9a:	0e 94 87 51 	call	0xa30e	; 0xa30e <PIBRcvdFloatCmd>
    ae9e:	3e c1       	rjmp	.+636    	; 0xb11c <FloatComms+0x6b0>
							break;
						}
						case REQUEST_SERIAL_PORT_PASS_THRU:
						{
							sprintf_P(dbgMsg, PSTR("Received serial port pass through request"));
    aea0:	00 d0       	rcall	.+0      	; 0xaea2 <FloatComms+0x436>
    aea2:	0f 92       	push	r0
    aea4:	ad b7       	in	r26, 0x3d	; 61
    aea6:	be b7       	in	r27, 0x3e	; 62
    aea8:	12 96       	adiw	r26, 0x02	; 2
    aeaa:	7c 92       	st	X, r7
    aeac:	6e 92       	st	-X, r6
    aeae:	11 97       	sbiw	r26, 0x01	; 1
    aeb0:	e7 e4       	ldi	r30, 0x47	; 71
    aeb2:	f5 e0       	ldi	r31, 0x05	; 5
    aeb4:	14 96       	adiw	r26, 0x04	; 4
    aeb6:	fc 93       	st	X, r31
    aeb8:	ee 93       	st	-X, r30
    aeba:	13 97       	sbiw	r26, 0x03	; 3
    aebc:	0e 94 51 f1 	call	0x1e2a2	; 0x1e2a2 <sprintf_P>
							SEND_MSG;

							uint8_t myTOCount = 0;
							serialPortPassThroughOK = FALSE;
    aec0:	10 92 9d a1 	sts	0xA19D, r1
							serialPortPassThrough[pPassThrough->personalityModuleNumber] = TRUE;
    aec4:	e0 91 d8 a2 	lds	r30, 0xA2D8
    aec8:	f0 e0       	ldi	r31, 0x00	; 0
    aeca:	e7 56       	subi	r30, 0x67	; 103
    aecc:	fe 45       	sbci	r31, 0x5E	; 94
    aece:	40 82       	st	Z, r4
    aed0:	10 e0       	ldi	r17, 0x00	; 0
    aed2:	0f 90       	pop	r0
    aed4:	0f 90       	pop	r0
    aed6:	0f 90       	pop	r0
    aed8:	0f 90       	pop	r0
    aeda:	08 c0       	rjmp	.+16     	; 0xaeec <FloatComms+0x480>

							while((serialPortPassThroughOK == FALSE) && (myTOCount < 15))
							{
								myTOCount++;
    aedc:	1f 5f       	subi	r17, 0xFF	; 255
								OSTimeDlyHMSM(0,0,1,0);
    aede:	80 e0       	ldi	r24, 0x00	; 0
    aee0:	60 e0       	ldi	r22, 0x00	; 0
    aee2:	41 e0       	ldi	r20, 0x01	; 1
    aee4:	20 e0       	ldi	r18, 0x00	; 0
    aee6:	30 e0       	ldi	r19, 0x00	; 0
    aee8:	0e 94 2a 2e 	call	0x5c54	; 0x5c54 <OSTimeDlyHMSM>

							uint8_t myTOCount = 0;
							serialPortPassThroughOK = FALSE;
							serialPortPassThrough[pPassThrough->personalityModuleNumber] = TRUE;

							while((serialPortPassThroughOK == FALSE) && (myTOCount < 15))
    aeec:	80 91 9d a1 	lds	r24, 0xA19D
    aef0:	88 23       	and	r24, r24
    aef2:	19 f4       	brne	.+6      	; 0xaefa <FloatComms+0x48e>
    aef4:	1f 30       	cpi	r17, 0x0F	; 15
    aef6:	91 f7       	brne	.-28     	; 0xaedc <FloatComms+0x470>
    aef8:	07 c0       	rjmp	.+14     	; 0xaf08 <FloatComms+0x49c>
							{
								myTOCount++;
								OSTimeDlyHMSM(0,0,1,0);
							}

							if(serialPortPassThroughOK == TRUE)
    aefa:	8f 3f       	cpi	r24, 0xFF	; 255
    aefc:	29 f4       	brne	.+10     	; 0xaf08 <FloatComms+0x49c>
								pibGenericAck.headers.msgType = LRI_ACK;
    aefe:	30 92 c2 a2 	sts	0xA2C2, r3
    af02:	20 92 c1 a2 	sts	0xA2C1, r2
    af06:	04 c0       	rjmp	.+8      	; 0xaf10 <FloatComms+0x4a4>
							else
								pibGenericAck.headers.msgType = LRI_NAK;
    af08:	10 92 c2 a2 	sts	0xA2C2, r1
    af0c:	10 92 c1 a2 	sts	0xA2C1, r1

							pibGenericAck.headers.length = sizeof(PIB_GENERIC_ACK);
    af10:	22 e1       	ldi	r18, 0x12	; 18
    af12:	30 e0       	ldi	r19, 0x00	; 0
    af14:	30 93 ba a2 	sts	0xA2BA, r19
    af18:	20 93 b9 a2 	sts	0xA2B9, r18
							pibGenericAck.headers.destination = pHeaders->source;
    af1c:	80 91 d2 a2 	lds	r24, 0xA2D2
    af20:	90 91 d3 a2 	lds	r25, 0xA2D3
    af24:	90 93 bc a2 	sts	0xA2BC, r25
    af28:	80 93 bb a2 	sts	0xA2BB, r24
							pibGenericAck.headers.source = mainTaskAddress;
    af2c:	80 91 e4 03 	lds	r24, 0x03E4
    af30:	90 91 e5 03 	lds	r25, 0x03E5
    af34:	90 93 be a2 	sts	0xA2BE, r25
    af38:	80 93 bd a2 	sts	0xA2BD, r24
							pibGenericAck.headers.msgID = pHeaders->msgID;
    af3c:	80 91 d4 a2 	lds	r24, 0xA2D4
    af40:	90 91 d5 a2 	lds	r25, 0xA2D5
    af44:	90 93 c0 a2 	sts	0xA2C0, r25
    af48:	80 93 bf a2 	sts	0xA2BF, r24

							pibGenericAck.ackInfo.originalCmd = pHeaders->msgType;
    af4c:	80 91 d6 a2 	lds	r24, 0xA2D6
    af50:	90 91 d7 a2 	lds	r25, 0xA2D7
    af54:	90 93 c4 a2 	sts	0xA2C4, r25
    af58:	80 93 c3 a2 	sts	0xA2C3, r24

							pibGenericAck.pibCount.totalNumber = 1;
    af5c:	30 92 c6 a2 	sts	0xA2C6, r3
    af60:	20 92 c5 a2 	sts	0xA2C5, r2
							pibGenericAck.pibCount.numberOfReplies = 1;
    af64:	30 92 c8 a2 	sts	0xA2C8, r3
    af68:	20 92 c7 a2 	sts	0xA2C7, r2

							pibGenericAck.crc = CalculateCRC16((uint8_t*)&pibGenericAck, pibGenericAck.headers.length - CRC16_SIZE, OTHER_CRC_START);
    af6c:	e9 eb       	ldi	r30, 0xB9	; 185
    af6e:	f2 ea       	ldi	r31, 0xA2	; 162
    af70:	20 e0       	ldi	r18, 0x00	; 0
    af72:	30 e0       	ldi	r19, 0x00	; 0
    af74:	18 c0       	rjmp	.+48     	; 0xafa6 <FloatComms+0x53a>
    af76:	81 91       	ld	r24, Z+
    af78:	28 27       	eor	r18, r24
    af7a:	82 2f       	mov	r24, r18
    af7c:	82 95       	swap	r24
    af7e:	82 27       	eor	r24, r18
    af80:	08 2e       	mov	r0, r24
    af82:	86 95       	lsr	r24
    af84:	86 95       	lsr	r24
    af86:	80 25       	eor	r24, r0
    af88:	08 2e       	mov	r0, r24
    af8a:	86 95       	lsr	r24
    af8c:	80 25       	eor	r24, r0
    af8e:	87 70       	andi	r24, 0x07	; 7
    af90:	02 2e       	mov	r0, r18
    af92:	23 2f       	mov	r18, r19
    af94:	86 95       	lsr	r24
    af96:	07 94       	ror	r0
    af98:	87 95       	ror	r24
    af9a:	30 2d       	mov	r19, r0
    af9c:	28 27       	eor	r18, r24
    af9e:	06 94       	lsr	r0
    afa0:	87 95       	ror	r24
    afa2:	30 25       	eor	r19, r0
    afa4:	28 27       	eor	r18, r24
//---------------------------------------------------------------------------------
uint16_t CalculateCRC16(uint8_t* pBuffer, uint16_t size, uint16_t initValue)
{
	uint16_t crc = initValue;

	for(int i = 0; i < (size); i++)
    afa6:	42 ea       	ldi	r20, 0xA2	; 162
    afa8:	e9 3c       	cpi	r30, 0xC9	; 201
    afaa:	f4 07       	cpc	r31, r20
    afac:	21 f7       	brne	.-56     	; 0xaf76 <FloatComms+0x50a>
							pibGenericAck.ackInfo.originalCmd = pHeaders->msgType;

							pibGenericAck.pibCount.totalNumber = 1;
							pibGenericAck.pibCount.numberOfReplies = 1;

							pibGenericAck.crc = CalculateCRC16((uint8_t*)&pibGenericAck, pibGenericAck.headers.length - CRC16_SIZE, OTHER_CRC_START);
    afae:	31 83       	std	Z+1, r19	; 0x01
    afb0:	20 83       	st	Z, r18

							TxHDLC((uint8_t*)&pibGenericAck, pibGenericAck.headers.length);
    afb2:	cf 01       	movw	r24, r30
    afb4:	40 97       	sbiw	r24, 0x10	; 16
    afb6:	62 e1       	ldi	r22, 0x12	; 18
    afb8:	70 e0       	ldi	r23, 0x00	; 0
    afba:	0e 94 fe 45 	call	0x8bfc	; 0x8bfc <TxHDLC>

							OSTimeDlyHMSM(0,0,2,0);
    afbe:	80 e0       	ldi	r24, 0x00	; 0
    afc0:	60 e0       	ldi	r22, 0x00	; 0
    afc2:	42 e0       	ldi	r20, 0x02	; 2
    afc4:	20 e0       	ldi	r18, 0x00	; 0
    afc6:	30 e0       	ldi	r19, 0x00	; 0
    afc8:	0e 94 2a 2e 	call	0x5c54	; 0x5c54 <OSTimeDlyHMSM>

							if(serialPortPassThroughOK == TRUE)
    afcc:	80 91 9d a1 	lds	r24, 0xA19D
    afd0:	8f 3f       	cpi	r24, 0xFF	; 255
    afd2:	09 f0       	breq	.+2      	; 0xafd6 <FloatComms+0x56a>
    afd4:	4c c0       	rjmp	.+152    	; 0xb06e <FloatComms+0x602>
							{
								switch(pPassThrough->passThroughDataBits)
    afd6:	80 91 de a2 	lds	r24, 0xA2DE
    afda:	86 30       	cpi	r24, 0x06	; 6
    afdc:	39 f0       	breq	.+14     	; 0xafec <FloatComms+0x580>
    afde:	87 30       	cpi	r24, 0x07	; 7
    afe0:	49 f0       	breq	.+18     	; 0xaff4 <FloatComms+0x588>
    afe2:	85 30       	cpi	r24, 0x05	; 5
    afe4:	49 f4       	brne	.+18     	; 0xaff8 <FloatComms+0x58c>
								{
									case 5:
										newData = UART_MODE_FIVE_DATA_BITS;
    afe6:	10 92 99 07 	sts	0x0799, r1
    afea:	09 c0       	rjmp	.+18     	; 0xaffe <FloatComms+0x592>
										break;
									case 6:
										newData = UART_MODE_SIX_DATA_BITS;
    afec:	52 e0       	ldi	r21, 0x02	; 2
    afee:	50 93 99 07 	sts	0x0799, r21
    aff2:	05 c0       	rjmp	.+10     	; 0xaffe <FloatComms+0x592>
										break;
									case 7:
										newData = UART_MODE_SEVEN_DATA_BITS;
    aff4:	84 e0       	ldi	r24, 0x04	; 4
    aff6:	01 c0       	rjmp	.+2      	; 0xaffa <FloatComms+0x58e>
										break;
									default:
										newData = UART_MODE_EIGHT_DATA_BITS;
    aff8:	86 e0       	ldi	r24, 0x06	; 6
    affa:	80 93 99 07 	sts	0x0799, r24
										break;
								}

								switch(pPassThrough->passThroughStopBits)
    affe:	80 91 df a2 	lds	r24, 0xA2DF
    b002:	82 30       	cpi	r24, 0x02	; 2
    b004:	21 f4       	brne	.+8      	; 0xb00e <FloatComms+0x5a2>
								{
									case 2:
										newStop = UART_MODE_TWO_STOP_BITS;
    b006:	98 e0       	ldi	r25, 0x08	; 8
    b008:	90 93 9a 07 	sts	0x079A, r25
    b00c:	02 c0       	rjmp	.+4      	; 0xb012 <FloatComms+0x5a6>
										break;
									default:
										newStop = UART_MODE_ONE_STOP_BIT;
    b00e:	10 92 9a 07 	sts	0x079A, r1
										break;
								}

								switch(pPassThrough->passThroughParity)
    b012:	80 91 dd a2 	lds	r24, 0xA2DD
    b016:	8f 34       	cpi	r24, 0x4F	; 79
    b018:	71 f0       	breq	.+28     	; 0xb036 <FloatComms+0x5ca>
    b01a:	80 35       	cpi	r24, 0x50	; 80
    b01c:	18 f4       	brcc	.+6      	; 0xb024 <FloatComms+0x5b8>
    b01e:	85 34       	cpi	r24, 0x45	; 69
    b020:	71 f4       	brne	.+28     	; 0xb03e <FloatComms+0x5d2>
    b022:	05 c0       	rjmp	.+10     	; 0xb02e <FloatComms+0x5c2>
    b024:	85 36       	cpi	r24, 0x65	; 101
    b026:	19 f0       	breq	.+6      	; 0xb02e <FloatComms+0x5c2>
    b028:	8f 36       	cpi	r24, 0x6F	; 111
    b02a:	49 f4       	brne	.+18     	; 0xb03e <FloatComms+0x5d2>
    b02c:	04 c0       	rjmp	.+8      	; 0xb036 <FloatComms+0x5ca>
								{
									case 'E':
									case 'e':
										newParity = UART_MODE_EVEN_PARITY;
    b02e:	a0 e2       	ldi	r26, 0x20	; 32
    b030:	a0 93 9b 07 	sts	0x079B, r26
    b034:	06 c0       	rjmp	.+12     	; 0xb042 <FloatComms+0x5d6>
										break;
									case 'O':
									case 'o':
										newParity = UART_MODE_ODD_PARITY;
    b036:	b0 e3       	ldi	r27, 0x30	; 48
    b038:	b0 93 9b 07 	sts	0x079B, r27
    b03c:	02 c0       	rjmp	.+4      	; 0xb042 <FloatComms+0x5d6>
										break;
									default:
										newParity = UART_MODE_NO_PARITY;
    b03e:	10 92 9b 07 	sts	0x079B, r1
										break;
								}

								OSuartUpdatePort(FLOAT_PORT, 
    b042:	40 91 d9 a2 	lds	r20, 0xA2D9
    b046:	50 91 da a2 	lds	r21, 0xA2DA
    b04a:	60 91 db a2 	lds	r22, 0xA2DB
    b04e:	70 91 dc a2 	lds	r23, 0xA2DC
    b052:	80 e0       	ldi	r24, 0x00	; 0
    b054:	20 91 99 07 	lds	r18, 0x0799
    b058:	00 91 9a 07 	lds	r16, 0x079A
    b05c:	e0 90 9b 07 	lds	r14, 0x079B
    b060:	0e 94 ee 2f 	call	0x5fdc	; 0x5fdc <OSuartUpdatePort>
												pPassThrough->passThroughBaud, 
												newData, 
												newStop, 
												newParity);

								SerialPortPassThroughFloat(pPassThrough->personalityModuleNumber);
    b064:	80 91 d8 a2 	lds	r24, 0xA2D8
    b068:	0e 94 04 3d 	call	0x7a08	; 0x7a08 <SerialPortPassThroughFloat>
    b06c:	57 c0       	rjmp	.+174    	; 0xb11c <FloatComms+0x6b0>

							}
							else
							{
								serialPortPassThrough[pPassThrough->personalityModuleNumber] = FALSE;
    b06e:	e0 91 d8 a2 	lds	r30, 0xA2D8
    b072:	f0 e0       	ldi	r31, 0x00	; 0
    b074:	e7 56       	subi	r30, 0x67	; 103
    b076:	fe 45       	sbci	r31, 0x5E	; 94
    b078:	10 82       	st	Z, r1
    b07a:	50 c0       	rjmp	.+160    	; 0xb11c <FloatComms+0x6b0>
							
							break;
						}
						default:
						{
							sprintf_P(dbgMsg, PSTR("Received unknown message type: 0x%x"), pHeaders->msgType & ~0x8000);
    b07c:	00 d0       	rcall	.+0      	; 0xb07e <FloatComms+0x612>
    b07e:	00 d0       	rcall	.+0      	; 0xb080 <FloatComms+0x614>
    b080:	ed b7       	in	r30, 0x3d	; 61
    b082:	fe b7       	in	r31, 0x3e	; 62
    b084:	31 96       	adiw	r30, 0x01	; 1
    b086:	ad b7       	in	r26, 0x3d	; 61
    b088:	be b7       	in	r27, 0x3e	; 62
    b08a:	12 96       	adiw	r26, 0x02	; 2
    b08c:	7c 92       	st	X, r7
    b08e:	6e 92       	st	-X, r6
    b090:	11 97       	sbiw	r26, 0x01	; 1
    b092:	23 e2       	ldi	r18, 0x23	; 35
    b094:	35 e0       	ldi	r19, 0x05	; 5
    b096:	33 83       	std	Z+3, r19	; 0x03
    b098:	22 83       	std	Z+2, r18	; 0x02
    b09a:	95 83       	std	Z+5, r25	; 0x05
    b09c:	84 83       	std	Z+4, r24	; 0x04
    b09e:	0e 94 51 f1 	call	0x1e2a2	; 0x1e2a2 <sprintf_P>
    b0a2:	55 24       	eor	r5, r5
    b0a4:	53 94       	inc	r5
    b0a6:	4d b7       	in	r20, 0x3d	; 61
    b0a8:	5e b7       	in	r21, 0x3e	; 62
    b0aa:	4a 5f       	subi	r20, 0xFA	; 250
    b0ac:	5f 4f       	sbci	r21, 0xFF	; 255
    b0ae:	0f b6       	in	r0, 0x3f	; 63
    b0b0:	f8 94       	cli
    b0b2:	5e bf       	out	0x3e, r21	; 62
    b0b4:	0f be       	out	0x3f, r0	; 63
    b0b6:	4d bf       	out	0x3d, r20	; 61
    b0b8:	34 c0       	rjmp	.+104    	; 0xb122 <FloatComms+0x6b6>
						}
					}
				}
				else
				{
	                OSuartFlushBuffers(FLOAT_PORT, UART_RX_BUFFER);
    b0ba:	80 e0       	ldi	r24, 0x00	; 0
    b0bc:	61 e0       	ldi	r22, 0x01	; 1
    b0be:	0e 94 7a 31 	call	0x62f4	; 0x62f4 <OSuartFlushBuffers>

				

					if((pHeaders->destination & 0xFF00) == 0xFF00)
    b0c2:	20 91 d0 a2 	lds	r18, 0xA2D0
    b0c6:	30 91 d1 a2 	lds	r19, 0xA2D1
    b0ca:	c9 01       	movw	r24, r18
    b0cc:	80 70       	andi	r24, 0x00	; 0
    b0ce:	80 50       	subi	r24, 0x00	; 0
    b0d0:	9f 4f       	sbci	r25, 0xFF	; 255
    b0d2:	29 f4       	brne	.+10     	; 0xb0de <FloatComms+0x672>
					{
						PIBToPMBroadcastPacket(pHeaders);
    b0d4:	8e ec       	ldi	r24, 0xCE	; 206
    b0d6:	92 ea       	ldi	r25, 0xA2	; 162
    b0d8:	0e 94 de 45 	call	0x8bbc	; 0x8bbc <PIBToPMBroadcastPacket>
    b0dc:	1f c0       	rjmp	.+62     	; 0xb11c <FloatComms+0x6b0>
					}
					else
					{
						sprintf_P(dbgMsg, PSTR("Forwarding message to 0x%04x\r\n"), pHeaders->destination);
    b0de:	00 d0       	rcall	.+0      	; 0xb0e0 <FloatComms+0x674>
    b0e0:	00 d0       	rcall	.+0      	; 0xb0e2 <FloatComms+0x676>
    b0e2:	ed b7       	in	r30, 0x3d	; 61
    b0e4:	fe b7       	in	r31, 0x3e	; 62
    b0e6:	31 96       	adiw	r30, 0x01	; 1
    b0e8:	ad b7       	in	r26, 0x3d	; 61
    b0ea:	be b7       	in	r27, 0x3e	; 62
    b0ec:	12 96       	adiw	r26, 0x02	; 2
    b0ee:	7c 92       	st	X, r7
    b0f0:	6e 92       	st	-X, r6
    b0f2:	11 97       	sbiw	r26, 0x01	; 1
    b0f4:	44 e0       	ldi	r20, 0x04	; 4
    b0f6:	55 e0       	ldi	r21, 0x05	; 5
    b0f8:	53 83       	std	Z+3, r21	; 0x03
    b0fa:	42 83       	std	Z+2, r20	; 0x02
    b0fc:	35 83       	std	Z+5, r19	; 0x05
    b0fe:	24 83       	std	Z+4, r18	; 0x04
    b100:	0e 94 51 f1 	call	0x1e2a2	; 0x1e2a2 <sprintf_P>
						SEND_MSG;
						PIBToPMForwardPacket(pHeaders);
    b104:	8d b7       	in	r24, 0x3d	; 61
    b106:	9e b7       	in	r25, 0x3e	; 62
    b108:	06 96       	adiw	r24, 0x06	; 6
    b10a:	0f b6       	in	r0, 0x3f	; 63
    b10c:	f8 94       	cli
    b10e:	9e bf       	out	0x3e, r25	; 62
    b110:	0f be       	out	0x3f, r0	; 63
    b112:	8d bf       	out	0x3d, r24	; 61
    b114:	8e ec       	ldi	r24, 0xCE	; 206
    b116:	92 ea       	ldi	r25, 0xA2	; 162
    b118:	0e 94 96 54 	call	0xa92c	; 0xa92c <PIBToPMForwardPacket>
					}
				}

				if(nakCode != 0)
    b11c:	55 20       	and	r5, r5
    b11e:	09 f4       	brne	.+2      	; 0xb122 <FloatComms+0x6b6>
    b120:	de cc       	rjmp	.-1604   	; 0xaade <FloatComms+0x72>
				{
					uint16_t* pCRC;

					OSuartFlushBuffers(FLOAT_PORT, UART_RX_BUFFER);
    b122:	80 e0       	ldi	r24, 0x00	; 0
    b124:	61 e0       	ldi	r22, 0x01	; 1
    b126:	0e 94 7a 31 	call	0x62f4	; 0x62f4 <OSuartFlushBuffers>

					pGenericNak->headers.destination = pHeaders->source;
    b12a:	e0 91 cb a2 	lds	r30, 0xA2CB
    b12e:	f0 91 cc a2 	lds	r31, 0xA2CC
    b132:	80 91 d2 a2 	lds	r24, 0xA2D2
    b136:	90 91 d3 a2 	lds	r25, 0xA2D3
    b13a:	93 83       	std	Z+3, r25	; 0x03
    b13c:	82 83       	std	Z+2, r24	; 0x02
					pGenericNak->headers.source = pHeaders->destination;
    b13e:	80 91 d0 a2 	lds	r24, 0xA2D0
    b142:	90 91 d1 a2 	lds	r25, 0xA2D1
    b146:	95 83       	std	Z+5, r25	; 0x05
    b148:	84 83       	std	Z+4, r24	; 0x04
					pGenericNak->headers.msgID = pHeaders->msgID;
    b14a:	80 91 d4 a2 	lds	r24, 0xA2D4
    b14e:	90 91 d5 a2 	lds	r25, 0xA2D5
    b152:	97 83       	std	Z+7, r25	; 0x07
    b154:	86 83       	std	Z+6, r24	; 0x06
					pGenericNak->headers.msgType = LRI_ACK;

					pGenericNak->headers.msgType = LRI_NAK;
    b156:	11 86       	std	Z+9, r1	; 0x09
    b158:	10 86       	std	Z+8, r1	; 0x08
					pGenericNak->headers.length = sizeof(LRI_GENERIC_NAK_PACKET) + CRC16_SIZE;
    b15a:	af e0       	ldi	r26, 0x0F	; 15
    b15c:	b0 e0       	ldi	r27, 0x00	; 0
    b15e:	b1 83       	std	Z+1, r27	; 0x01
    b160:	a0 83       	st	Z, r26
					pGenericNak->nakInfo.nakSummary = nakCode;
    b162:	54 86       	std	Z+12, r5	; 0x0c

					pCRC = (uint16_t*)(txHDLCBuffer + pGenericNak->headers.length - CRC16_SIZE);
					*pCRC = CalculateCRC16((uint8_t*)pGenericNak, pGenericNak->headers.length - CRC16_SIZE, OTHER_CRC_START);
    b164:	1e 2f       	mov	r17, r30
    b166:	9f 2f       	mov	r25, r31
    b168:	df 01       	movw	r26, r30
    b16a:	20 e0       	ldi	r18, 0x00	; 0
    b16c:	30 e0       	ldi	r19, 0x00	; 0
//---------------------------------------------------------------------------------
uint16_t CalculateCRC16(uint8_t* pBuffer, uint16_t size, uint16_t initValue)
{
	uint16_t crc = initValue;

	for(int i = 0; i < (size); i++)
    b16e:	af 01       	movw	r20, r30
    b170:	43 5f       	subi	r20, 0xF3	; 243
    b172:	5f 4f       	sbci	r21, 0xFF	; 255
    b174:	18 c0       	rjmp	.+48     	; 0xb1a6 <FloatComms+0x73a>
    b176:	8d 91       	ld	r24, X+
    b178:	28 27       	eor	r18, r24
    b17a:	82 2f       	mov	r24, r18
    b17c:	82 95       	swap	r24
    b17e:	82 27       	eor	r24, r18
    b180:	08 2e       	mov	r0, r24
    b182:	86 95       	lsr	r24
    b184:	86 95       	lsr	r24
    b186:	80 25       	eor	r24, r0
    b188:	08 2e       	mov	r0, r24
    b18a:	86 95       	lsr	r24
    b18c:	80 25       	eor	r24, r0
    b18e:	87 70       	andi	r24, 0x07	; 7
    b190:	02 2e       	mov	r0, r18
    b192:	23 2f       	mov	r18, r19
    b194:	86 95       	lsr	r24
    b196:	07 94       	ror	r0
    b198:	87 95       	ror	r24
    b19a:	30 2d       	mov	r19, r0
    b19c:	28 27       	eor	r18, r24
    b19e:	06 94       	lsr	r0
    b1a0:	87 95       	ror	r24
    b1a2:	30 25       	eor	r19, r0
    b1a4:	28 27       	eor	r18, r24
    b1a6:	a4 17       	cp	r26, r20
    b1a8:	b5 07       	cpc	r27, r21
    b1aa:	29 f7       	brne	.-54     	; 0xb176 <FloatComms+0x70a>
					pGenericNak->headers.msgType = LRI_NAK;
					pGenericNak->headers.length = sizeof(LRI_GENERIC_NAK_PACKET) + CRC16_SIZE;
					pGenericNak->nakInfo.nakSummary = nakCode;

					pCRC = (uint16_t*)(txHDLCBuffer + pGenericNak->headers.length - CRC16_SIZE);
					*pCRC = CalculateCRC16((uint8_t*)pGenericNak, pGenericNak->headers.length - CRC16_SIZE, OTHER_CRC_START);
    b1ac:	30 93 3b a7 	sts	0xA73B, r19
    b1b0:	20 93 3a a7 	sts	0xA73A, r18
					TxHDLC((uint8_t*)pGenericNak, pGenericNak->headers.length);
    b1b4:	60 81       	ld	r22, Z
    b1b6:	71 81       	ldd	r23, Z+1	; 0x01
    b1b8:	81 2f       	mov	r24, r17
    b1ba:	0e 94 fe 45 	call	0x8bfc	; 0x8bfc <TxHDLC>
    b1be:	8f cc       	rjmp	.-1762   	; 0xaade <FloatComms+0x72>
    b1c0:	e2 e0       	ldi	r30, 0x02	; 2
    b1c2:	5e 2e       	mov	r5, r30
    b1c4:	ae cf       	rjmp	.-164    	; 0xb122 <FloatComms+0x6b6>

0000b1c6 <Float_Comm_Init>:

uint16_t* pCRC __attribute__((section(".xdata")));


void Float_Comm_Init(void)
{
    b1c6:	cf 92       	push	r12
    b1c8:	df 92       	push	r13
    b1ca:	ef 92       	push	r14
    b1cc:	0f 93       	push	r16
    b1ce:	df 93       	push	r29
    b1d0:	cf 93       	push	r28
    b1d2:	0f 92       	push	r0
    b1d4:	cd b7       	in	r28, 0x3d	; 61
    b1d6:	de b7       	in	r29, 0x3e	; 62
	uint8_t temp;

	memset(&txFloatData[0], 0, sizeof(FLOAT_TX_BUFFER) * MAX_FLOAT_BUFFERS);
    b1d8:	80 eb       	ldi	r24, 0xB0	; 176
    b1da:	99 e0       	ldi	r25, 0x09	; 9
    b1dc:	ed e5       	ldi	r30, 0x5D	; 93
    b1de:	f9 ea       	ldi	r31, 0xA9	; 169
    b1e0:	df 01       	movw	r26, r30
    b1e2:	9c 01       	movw	r18, r24
    b1e4:	1d 92       	st	X+, r1
    b1e6:	21 50       	subi	r18, 0x01	; 1
    b1e8:	30 40       	sbci	r19, 0x00	; 0
    b1ea:	e1 f7       	brne	.-8      	; 0xb1e4 <Float_Comm_Init+0x1e>
	OSuartInitPort(FLOAT_PORT, 115200, UART_MODE_EIGHT_DATA_BITS, UART_MODE_ONE_STOP_BIT, UART_MODE_NO_PARITY);
    b1ec:	80 e0       	ldi	r24, 0x00	; 0
    b1ee:	40 e0       	ldi	r20, 0x00	; 0
    b1f0:	52 ec       	ldi	r21, 0xC2	; 194
    b1f2:	61 e0       	ldi	r22, 0x01	; 1
    b1f4:	70 e0       	ldi	r23, 0x00	; 0
    b1f6:	26 e0       	ldi	r18, 0x06	; 6
    b1f8:	00 e0       	ldi	r16, 0x00	; 0
    b1fa:	ee 24       	eor	r14, r14
    b1fc:	0e 94 38 33 	call	0x6670	; 0x6670 <OSuartInitPort>


	memset((char*)fileOutSize , 0, sizeof(uint16_t) * sizeof(NUM_TASK_FILES));
    b200:	10 92 51 9d 	sts	0x9D51, r1
    b204:	10 92 52 9d 	sts	0x9D52, r1
    b208:	10 92 53 9d 	sts	0x9D53, r1
    b20c:	10 92 54 9d 	sts	0x9D54, r1
	memset((char*)fileInSize , 0, sizeof(uint16_t) * sizeof(NUM_TASK_FILES));
    b210:	10 92 59 9d 	sts	0x9D59, r1
    b214:	10 92 5a 9d 	sts	0x9D5A, r1
    b218:	10 92 5b 9d 	sts	0x9D5B, r1
    b21c:	10 92 5c 9d 	sts	0x9D5C, r1
	memset((char*)fileAvailable , 0, sizeof(BOOL) * sizeof(NUM_TASK_FILES));
    b220:	10 92 62 9d 	sts	0x9D62, r1
    b224:	10 92 61 9d 	sts	0x9D61, r1
	memset((char*)fileAvailableID , 0, sizeof(uint32_t) * sizeof(NUM_TASK_FILES));
    b228:	88 e0       	ldi	r24, 0x08	; 8
    b22a:	e3 e8       	ldi	r30, 0x83	; 131
    b22c:	f7 e0       	ldi	r31, 0x07	; 7
    b22e:	df 01       	movw	r26, r30
    b230:	1d 92       	st	X+, r1
    b232:	8a 95       	dec	r24
    b234:	e9 f7       	brne	.-6      	; 0xb230 <Float_Comm_Init+0x6a>
	memset((char*)transmitPending , 0, sizeof(BOOL) * sizeof(NUM_TASK_FILES));
    b236:	10 92 66 9d 	sts	0x9D66, r1
    b23a:	10 92 65 9d 	sts	0x9D65, r1
	memset((char*)consoleAvailable , 0, sizeof(BOOL) * sizeof(NUM_TASK_FILES));
    b23e:	10 92 8e a1 	sts	0xA18E, r1
    b242:	10 92 8d a1 	sts	0xA18D, r1
	memset((char*)serialPortPassThrough , 0, sizeof(BOOL) * sizeof(NUM_TASK_FILES));
    b246:	10 92 9a a1 	sts	0xA19A, r1
    b24a:	10 92 99 a1 	sts	0xA199, r1

	serialPortPassThroughOK = FALSE;
    b24e:	10 92 9d a1 	sts	0xA19D, r1
	readyForSerialPassThru = FALSE;
    b252:	10 92 9e a1 	sts	0xA19E, r1

	memset(personalityIDs, 0, MAX_COMM_TARGETS * sizeof(LRI_ID_PACKET));
    b256:	88 ea       	ldi	r24, 0xA8	; 168
    b258:	ee ee       	ldi	r30, 0xEE	; 238
    b25a:	f7 eb       	ldi	r31, 0xB7	; 183
    b25c:	df 01       	movw	r26, r30
    b25e:	1d 92       	st	X+, r1
    b260:	8a 95       	dec	r24
    b262:	e9 f7       	brne	.-6      	; 0xb25e <Float_Comm_Init+0x98>

	EepromReadByte((void*)(EEPROM_SYSTEM_PARAMS_START + EEPROM_BOARD_ID_OFFSET), &temp);
    b264:	81 e0       	ldi	r24, 0x01	; 1
    b266:	91 e0       	ldi	r25, 0x01	; 1
    b268:	be 01       	movw	r22, r28
    b26a:	6f 5f       	subi	r22, 0xFF	; 255
    b26c:	7f 4f       	sbci	r23, 0xFF	; 255
    b26e:	0e 94 38 37 	call	0x6e70	; 0x6e70 <EepromReadByte>

	if((temp == 0xFF) || (temp == 0x00))
    b272:	89 81       	ldd	r24, Y+1	; 0x01
    b274:	81 50       	subi	r24, 0x01	; 1
    b276:	8e 3f       	cpi	r24, 0xFE	; 254
    b278:	38 f0       	brcs	.+14     	; 0xb288 <Float_Comm_Init+0xc2>
	{
		temp = (mainTaskAddress >> 8);
    b27a:	60 91 e5 03 	lds	r22, 0x03E5
    b27e:	69 83       	std	Y+1, r22	; 0x01
		EepromWriteByteUnSigned((void*)(EEPROM_SYSTEM_PARAMS_START + EEPROM_BOARD_ID_OFFSET), temp);
    b280:	81 e0       	ldi	r24, 0x01	; 1
    b282:	91 e0       	ldi	r25, 0x01	; 1
    b284:	0e 94 9f 37 	call	0x6f3e	; 0x6f3e <EepromWriteByteUnSigned>
	}

	EepromReadByte((void*) (EEPROM_SYSTEM_PARAMS_START + EEPROM_POWER_DOWN_DELAY_OFFSET), &delay);
    b288:	82 e0       	ldi	r24, 0x02	; 2
    b28a:	91 e0       	ldi	r25, 0x01	; 1
    b28c:	63 e4       	ldi	r22, 0x43	; 67
    b28e:	79 e1       	ldi	r23, 0x19	; 25
    b290:	0e 94 38 37 	call	0x6e70	; 0x6e70 <EepromReadByte>
	if(delay == 0xFF)
    b294:	80 91 43 19 	lds	r24, 0x1943
    b298:	8f 3f       	cpi	r24, 0xFF	; 255
    b29a:	41 f4       	brne	.+16     	; 0xb2ac <Float_Comm_Init+0xe6>
	{
		delay = 1;
    b29c:	81 e0       	ldi	r24, 0x01	; 1
    b29e:	80 93 43 19 	sts	0x1943, r24
		EepromWriteByteUnSigned((void*)(EEPROM_SYSTEM_PARAMS_START + EEPROM_POWER_DOWN_DELAY_OFFSET), delay);
    b2a2:	82 e0       	ldi	r24, 0x02	; 2
    b2a4:	91 e0       	ldi	r25, 0x01	; 1
    b2a6:	61 e0       	ldi	r22, 0x01	; 1
    b2a8:	0e 94 9f 37 	call	0x6f3e	; 0x6f3e <EepromWriteByteUnSigned>
	}

	mainTaskAddress = temp;
    b2ac:	89 81       	ldd	r24, Y+1	; 0x01
	mainBoardID = temp;
    b2ae:	80 93 e6 03 	sts	0x03E6, r24
	mainTaskAddress = mainTaskAddress<<8;
    b2b2:	10 92 e4 03 	sts	0x03E4, r1
    b2b6:	80 93 e5 03 	sts	0x03E5, r24

	memset(fileIn , 0, NUM_TASK_FILES*MAX_FILE_SIZE_IN);
    b2ba:	80 e0       	ldi	r24, 0x00	; 0
    b2bc:	94 e0       	ldi	r25, 0x04	; 4
    b2be:	e1 e5       	ldi	r30, 0x51	; 81
    b2c0:	f9 e8       	ldi	r31, 0x89	; 137
    b2c2:	df 01       	movw	r26, r30
    b2c4:	9c 01       	movw	r18, r24
    b2c6:	1d 92       	st	X+, r1
    b2c8:	21 50       	subi	r18, 0x01	; 1
    b2ca:	30 40       	sbci	r19, 0x00	; 0
    b2cc:	e1 f7       	brne	.-8      	; 0xb2c6 <Float_Comm_Init+0x100>
	memset(fileOut , 0, NUM_TASK_FILES*MAX_FILE_SIZE_OUT);
    b2ce:	80 e0       	ldi	r24, 0x00	; 0
    b2d0:	90 e1       	ldi	r25, 0x10	; 16
    b2d2:	e1 e5       	ldi	r30, 0x51	; 81
    b2d4:	fd e8       	ldi	r31, 0x8D	; 141
    b2d6:	df 01       	movw	r26, r30
    b2d8:	9c 01       	movw	r18, r24
    b2da:	1d 92       	st	X+, r1
    b2dc:	21 50       	subi	r18, 0x01	; 1
    b2de:	30 40       	sbci	r19, 0x00	; 0
    b2e0:	e1 f7       	brne	.-8      	; 0xb2da <Float_Comm_Init+0x114>

	for(int i=0; i<NUM_TASK_FILES; i++)
	{
		serialPortPassThrough[i] = FALSE;
    b2e2:	10 92 99 a1 	sts	0xA199, r1
    b2e6:	10 92 9a a1 	sts	0xA19A, r1
    b2ea:	10 92 9b a1 	sts	0xA19B, r1
    b2ee:	10 92 9c a1 	sts	0xA19C, r1
    b2f2:	01 e0       	ldi	r16, 0x01	; 1
    b2f4:	c0 2e       	mov	r12, r16
    b2f6:	d1 2c       	mov	r13, r1
	}

	for(int i = USER_PORT_1; i<=USER_PORT_3; i++)
	{
		switch(commPortState.pmState[i])
    b2f8:	f6 01       	movw	r30, r12
    b2fa:	ea 56       	subi	r30, 0x6A	; 106
    b2fc:	f7 44       	sbci	r31, 0x47	; 71
    b2fe:	e0 81       	ld	r30, Z
    b300:	e1 30       	cpi	r30, 0x01	; 1
    b302:	19 f0       	breq	.+6      	; 0xb30a <Float_Comm_Init+0x144>
    b304:	e2 30       	cpi	r30, 0x02	; 2
    b306:	c1 f4       	brne	.+48     	; 0xb338 <Float_Comm_Init+0x172>
    b308:	08 c0       	rjmp	.+16     	; 0xb31a <Float_Comm_Init+0x154>
		{
			case PM_STANDARD_COMM:
				OSuartInitPort(i, 115200, UART_MODE_EIGHT_DATA_BITS, UART_MODE_ONE_STOP_BIT, UART_MODE_NO_PARITY);
    b30a:	8c 2d       	mov	r24, r12
    b30c:	40 e0       	ldi	r20, 0x00	; 0
    b30e:	52 ec       	ldi	r21, 0xC2	; 194
    b310:	61 e0       	ldi	r22, 0x01	; 1
    b312:	70 e0       	ldi	r23, 0x00	; 0
    b314:	26 e0       	ldi	r18, 0x06	; 6
    b316:	00 e0       	ldi	r16, 0x00	; 0
    b318:	07 c0       	rjmp	.+14     	; 0xb328 <Float_Comm_Init+0x162>
				EnablePIBModule(i, TRUE, TRUE);
				break;
			case PM_SMC_COMM:
				OSuartInitPort(i, 115200, UART_MODE_EIGHT_DATA_BITS, UART_MODE_TWO_STOP_BITS, UART_MODE_NO_PARITY);
    b31a:	8c 2d       	mov	r24, r12
    b31c:	40 e0       	ldi	r20, 0x00	; 0
    b31e:	52 ec       	ldi	r21, 0xC2	; 194
    b320:	61 e0       	ldi	r22, 0x01	; 1
    b322:	70 e0       	ldi	r23, 0x00	; 0
    b324:	26 e0       	ldi	r18, 0x06	; 6
    b326:	08 e0       	ldi	r16, 0x08	; 8
    b328:	ee 24       	eor	r14, r14
    b32a:	0e 94 38 33 	call	0x6670	; 0x6670 <OSuartInitPort>
				EnablePIBModule(i, TRUE, TRUE);
    b32e:	8c 2d       	mov	r24, r12
    b330:	6f ef       	ldi	r22, 0xFF	; 255
    b332:	4f ef       	ldi	r20, 0xFF	; 255
    b334:	0e 94 a2 38 	call	0x7144	; 0x7144 <EnablePIBModule>
	for(int i=0; i<NUM_TASK_FILES; i++)
	{
		serialPortPassThrough[i] = FALSE;
	}

	for(int i = USER_PORT_1; i<=USER_PORT_3; i++)
    b338:	08 94       	sec
    b33a:	c1 1c       	adc	r12, r1
    b33c:	d1 1c       	adc	r13, r1
    b33e:	34 e0       	ldi	r19, 0x04	; 4
    b340:	c3 16       	cp	r12, r19
    b342:	d1 04       	cpc	r13, r1
    b344:	c9 f6       	brne	.-78     	; 0xb2f8 <Float_Comm_Init+0x132>
			default:
				//Do Nothing
				break;
		}
	}
}
    b346:	0f 90       	pop	r0
    b348:	cf 91       	pop	r28
    b34a:	df 91       	pop	r29
    b34c:	0f 91       	pop	r16
    b34e:	ef 90       	pop	r14
    b350:	df 90       	pop	r13
    b352:	cf 90       	pop	r12
    b354:	08 95       	ret

0000b356 <init_pressure>:
    tmp = SPDR;
}


void init_pressure(void)
{
    b356:	df 93       	push	r29
    b358:	cf 93       	push	r28
    b35a:	0f 92       	push	r0
    b35c:	cd b7       	in	r28, 0x3d	; 61
    b35e:	de b7       	in	r29, 0x3e	; 62

    power_spi_enable();
    b360:	80 91 64 00 	lds	r24, 0x0064
    b364:	8b 7f       	andi	r24, 0xFB	; 251
    b366:	80 93 64 00 	sts	0x0064, r24
    power_timer1_enable();
    b36a:	80 91 64 00 	lds	r24, 0x0064
    b36e:	87 7f       	andi	r24, 0xF7	; 247
    b370:	80 93 64 00 	sts	0x0064, r24

    // set sclk and MOSI as outputs (Bit 0 must be set to avoid SPI port lockup)
    DDRB |= _BV(5) | _BV(2) | _BV(1) | _BV(0);
    b374:	84 b1       	in	r24, 0x04	; 4
    b376:	87 62       	ori	r24, 0x27	; 39
    b378:	84 b9       	out	0x04, r24	; 4
    PORTB |= _BV(0);    // set this bit high to avoid SPI port lockup
    b37a:	28 9a       	sbi	0x05, 0	; 5

    // set up the SPI port. Serial clock is 500KHz maximum (/16)
    // spi mode is set up fclk/16, master operation, and clock phase 0
    SPCR = _BV(SPE) | _BV(SPR0) | _BV(MSTR) | _BV2(0, CPHA);
    b37c:	81 e5       	ldi	r24, 0x51	; 81
    b37e:	8c bd       	out	0x2c, r24	; 44

    TCCR1A = (1 << COM5A0); // toggle on output compare, WGM 4
    b380:	80 e4       	ldi	r24, 0x40	; 64
    b382:	80 93 80 00 	sts	0x0080, r24
    TCCR1B = (1 << WGM52);  // WGM = 4, initially stopped
    b386:	88 e0       	ldi	r24, 0x08	; 8
    b388:	80 93 81 00 	sts	0x0081, r24
    TCNT1 = 0;
    b38c:	10 92 85 00 	sts	0x0085, r1
    b390:	10 92 84 00 	sts	0x0084, r1
    OCR1A = 244/2;
    b394:	8a e7       	ldi	r24, 0x7A	; 122
    b396:	90 e0       	ldi	r25, 0x00	; 0
    b398:	90 93 89 00 	sts	0x0089, r25
    b39c:	80 93 88 00 	sts	0x0088, r24
static void reset_pressure_seq(void)
{
    volatile uint8_t tmp;

    // this sequence resets the pressure sensor
    SPDR = 0x15;
    b3a0:	85 e1       	ldi	r24, 0x15	; 21
    b3a2:	8e bd       	out	0x2e, r24	; 46
    loop_until_bit_is_set(SPSR, SPIF);
    b3a4:	0d b4       	in	r0, 0x2d	; 45
    b3a6:	07 fe       	sbrs	r0, 7
    b3a8:	fd cf       	rjmp	.-6      	; 0xb3a4 <init_pressure+0x4e>
    SPDR = 0x55;
    b3aa:	85 e5       	ldi	r24, 0x55	; 85
    b3ac:	8e bd       	out	0x2e, r24	; 46
    tmp = SPDR;
    b3ae:	8e b5       	in	r24, 0x2e	; 46
    b3b0:	89 83       	std	Y+1, r24	; 0x01
    loop_until_bit_is_set(SPSR, SPIF);
    b3b2:	0d b4       	in	r0, 0x2d	; 45
    b3b4:	07 fe       	sbrs	r0, 7
    b3b6:	fd cf       	rjmp	.-6      	; 0xb3b2 <init_pressure+0x5c>
    SPDR = 0x40;
    b3b8:	80 e4       	ldi	r24, 0x40	; 64
    b3ba:	8e bd       	out	0x2e, r24	; 46
    tmp = SPDR;
    b3bc:	8e b5       	in	r24, 0x2e	; 46
    b3be:	89 83       	std	Y+1, r24	; 0x01
    loop_until_bit_is_set(SPSR, SPIF);
    b3c0:	0d b4       	in	r0, 0x2d	; 45
    b3c2:	07 fe       	sbrs	r0, 7
    b3c4:	fd cf       	rjmp	.-6      	; 0xb3c0 <init_pressure+0x6a>
    tmp = SPDR;
    b3c6:	8e b5       	in	r24, 0x2e	; 46
    b3c8:	89 83       	std	Y+1, r24	; 0x01
static void spi_outw(uint16_t data)
{
    volatile uint8_t tmp;

    // assume SPI is idle
    SPCR &= ~_BV(CPHA); // set clock phase to zero (data changes on falling edge)
    b3ca:	8c b5       	in	r24, 0x2c	; 44
    b3cc:	8b 7f       	andi	r24, 0xFB	; 251
    b3ce:	8c bd       	out	0x2c, r24	; 44

    SPDR = data >> 8;
    b3d0:	8d e1       	ldi	r24, 0x1D	; 29
    b3d2:	8e bd       	out	0x2e, r24	; 46
    loop_until_bit_is_set(SPSR, SPIF);
    b3d4:	0d b4       	in	r0, 0x2d	; 45
    b3d6:	07 fe       	sbrs	r0, 7
    b3d8:	fd cf       	rjmp	.-6      	; 0xb3d4 <init_pressure+0x7e>
    SPDR = data & 0xFF;
    b3da:	80 e5       	ldi	r24, 0x50	; 80
    b3dc:	8e bd       	out	0x2e, r24	; 46
    tmp = SPDR;             // empty the receive
    b3de:	8e b5       	in	r24, 0x2e	; 46
    b3e0:	89 83       	std	Y+1, r24	; 0x01
    loop_until_bit_is_set(SPSR, SPIF);
    b3e2:	0d b4       	in	r0, 0x2d	; 45
    b3e4:	07 fe       	sbrs	r0, 7
    b3e6:	fd cf       	rjmp	.-6      	; 0xb3e2 <init_pressure+0x8c>
    tmp = SPDR;             // empty the receive
    b3e8:	8e b5       	in	r24, 0x2e	; 46
    b3ea:	89 83       	std	Y+1, r24	; 0x01
static uint16_t spi_inw(void)
{
    uint16_t tmp;

    // assume SPI is idle...
    SPCR |= _BV(CPHA);   // clock phase = 1 (data sampled on rising edge)
    b3ec:	8c b5       	in	r24, 0x2c	; 44
    b3ee:	84 60       	ori	r24, 0x04	; 4
    b3f0:	8c bd       	out	0x2c, r24	; 44

    SPDR = 0;
    b3f2:	1e bc       	out	0x2e, r1	; 46
    loop_until_bit_is_set(SPSR, SPIF);
    b3f4:	0d b4       	in	r0, 0x2d	; 45
    b3f6:	07 fe       	sbrs	r0, 7
    b3f8:	fd cf       	rjmp	.-6      	; 0xb3f4 <init_pressure+0x9e>
    SPDR = 0;
    b3fa:	1e bc       	out	0x2e, r1	; 46
    tmp = SPDR << 8;             // empty the receive
    b3fc:	3e b5       	in	r19, 0x2e	; 46
    loop_until_bit_is_set(SPSR, SPIF);
    b3fe:	0d b4       	in	r0, 0x2d	; 45
    b400:	07 fe       	sbrs	r0, 7
    b402:	fd cf       	rjmp	.-6      	; 0xb3fe <init_pressure+0xa8>
    tmp |= SPDR;             // empty the receive
    b404:	2e b5       	in	r18, 0x2e	; 46
    b406:	93 2f       	mov	r25, r19
    b408:	80 e0       	ldi	r24, 0x00	; 0
    b40a:	62 2f       	mov	r22, r18
    b40c:	70 e0       	ldi	r23, 0x00	; 0
    b40e:	68 2b       	or	r22, r24
    b410:	79 2b       	or	r23, r25
static void spi_outw(uint16_t data)
{
    volatile uint8_t tmp;

    // assume SPI is idle
    SPCR &= ~_BV(CPHA); // set clock phase to zero (data changes on falling edge)
    b412:	8c b5       	in	r24, 0x2c	; 44
    b414:	8b 7f       	andi	r24, 0xFB	; 251
    b416:	8c bd       	out	0x2c, r24	; 44

    SPDR = data >> 8;
    b418:	8d e1       	ldi	r24, 0x1D	; 29
    b41a:	8e bd       	out	0x2e, r24	; 46
    loop_until_bit_is_set(SPSR, SPIF);
    b41c:	0d b4       	in	r0, 0x2d	; 45
    b41e:	07 fe       	sbrs	r0, 7
    b420:	fd cf       	rjmp	.-6      	; 0xb41c <init_pressure+0xc6>
    SPDR = data & 0xFF;
    b422:	80 e6       	ldi	r24, 0x60	; 96
    b424:	8e bd       	out	0x2e, r24	; 46
    tmp = SPDR;             // empty the receive
    b426:	8e b5       	in	r24, 0x2e	; 46
    b428:	89 83       	std	Y+1, r24	; 0x01
    loop_until_bit_is_set(SPSR, SPIF);
    b42a:	0d b4       	in	r0, 0x2d	; 45
    b42c:	07 fe       	sbrs	r0, 7
    b42e:	fd cf       	rjmp	.-6      	; 0xb42a <init_pressure+0xd4>
    tmp = SPDR;             // empty the receive
    b430:	8e b5       	in	r24, 0x2e	; 46
    b432:	89 83       	std	Y+1, r24	; 0x01
static uint16_t spi_inw(void)
{
    uint16_t tmp;

    // assume SPI is idle...
    SPCR |= _BV(CPHA);   // clock phase = 1 (data sampled on rising edge)
    b434:	8c b5       	in	r24, 0x2c	; 44
    b436:	84 60       	ori	r24, 0x04	; 4
    b438:	8c bd       	out	0x2c, r24	; 44

    SPDR = 0;
    b43a:	1e bc       	out	0x2e, r1	; 46
    loop_until_bit_is_set(SPSR, SPIF);
    b43c:	0d b4       	in	r0, 0x2d	; 45
    b43e:	07 fe       	sbrs	r0, 7
    b440:	fd cf       	rjmp	.-6      	; 0xb43c <init_pressure+0xe6>
    SPDR = 0;
    b442:	1e bc       	out	0x2e, r1	; 46
    tmp = SPDR << 8;             // empty the receive
    b444:	3e b5       	in	r19, 0x2e	; 46
    loop_until_bit_is_set(SPSR, SPIF);
    b446:	0d b4       	in	r0, 0x2d	; 45
    b448:	07 fe       	sbrs	r0, 7
    b44a:	fd cf       	rjmp	.-6      	; 0xb446 <init_pressure+0xf0>
    tmp |= SPDR;             // empty the receive
    b44c:	2e b5       	in	r18, 0x2e	; 46
    b44e:	93 2f       	mov	r25, r19
    b450:	80 e0       	ldi	r24, 0x00	; 0
    b452:	42 2f       	mov	r20, r18
    b454:	50 e0       	ldi	r21, 0x00	; 0
    b456:	48 2b       	or	r20, r24
    b458:	59 2b       	or	r21, r25
static void spi_outw(uint16_t data)
{
    volatile uint8_t tmp;

    // assume SPI is idle
    SPCR &= ~_BV(CPHA); // set clock phase to zero (data changes on falling edge)
    b45a:	8c b5       	in	r24, 0x2c	; 44
    b45c:	8b 7f       	andi	r24, 0xFB	; 251
    b45e:	8c bd       	out	0x2c, r24	; 44

    SPDR = data >> 8;
    b460:	8d e1       	ldi	r24, 0x1D	; 29
    b462:	8e bd       	out	0x2e, r24	; 46
    loop_until_bit_is_set(SPSR, SPIF);
    b464:	0d b4       	in	r0, 0x2d	; 45
    b466:	07 fe       	sbrs	r0, 7
    b468:	fd cf       	rjmp	.-6      	; 0xb464 <init_pressure+0x10e>
    SPDR = data & 0xFF;
    b46a:	80 e9       	ldi	r24, 0x90	; 144
    b46c:	8e bd       	out	0x2e, r24	; 46
    tmp = SPDR;             // empty the receive
    b46e:	8e b5       	in	r24, 0x2e	; 46
    b470:	89 83       	std	Y+1, r24	; 0x01
    loop_until_bit_is_set(SPSR, SPIF);
    b472:	0d b4       	in	r0, 0x2d	; 45
    b474:	07 fe       	sbrs	r0, 7
    b476:	fd cf       	rjmp	.-6      	; 0xb472 <init_pressure+0x11c>
    tmp = SPDR;             // empty the receive
    b478:	8e b5       	in	r24, 0x2e	; 46
    b47a:	89 83       	std	Y+1, r24	; 0x01
static uint16_t spi_inw(void)
{
    uint16_t tmp;

    // assume SPI is idle...
    SPCR |= _BV(CPHA);   // clock phase = 1 (data sampled on rising edge)
    b47c:	8c b5       	in	r24, 0x2c	; 44
    b47e:	84 60       	ori	r24, 0x04	; 4
    b480:	8c bd       	out	0x2c, r24	; 44

    SPDR = 0;
    b482:	1e bc       	out	0x2e, r1	; 46
    loop_until_bit_is_set(SPSR, SPIF);
    b484:	0d b4       	in	r0, 0x2d	; 45
    b486:	07 fe       	sbrs	r0, 7
    b488:	fd cf       	rjmp	.-6      	; 0xb484 <init_pressure+0x12e>
    SPDR = 0;
    b48a:	1e bc       	out	0x2e, r1	; 46
    tmp = SPDR << 8;             // empty the receive
    b48c:	3e b5       	in	r19, 0x2e	; 46
    loop_until_bit_is_set(SPSR, SPIF);
    b48e:	0d b4       	in	r0, 0x2d	; 45
    b490:	07 fe       	sbrs	r0, 7
    b492:	fd cf       	rjmp	.-6      	; 0xb48e <init_pressure+0x138>
    tmp |= SPDR;             // empty the receive
    b494:	2e b5       	in	r18, 0x2e	; 46
    b496:	93 2f       	mov	r25, r19
    b498:	80 e0       	ldi	r24, 0x00	; 0
    b49a:	e2 2f       	mov	r30, r18
    b49c:	f0 e0       	ldi	r31, 0x00	; 0
    b49e:	e8 2b       	or	r30, r24
    b4a0:	f9 2b       	or	r31, r25
static void spi_outw(uint16_t data)
{
    volatile uint8_t tmp;

    // assume SPI is idle
    SPCR &= ~_BV(CPHA); // set clock phase to zero (data changes on falling edge)
    b4a2:	8c b5       	in	r24, 0x2c	; 44
    b4a4:	8b 7f       	andi	r24, 0xFB	; 251
    b4a6:	8c bd       	out	0x2c, r24	; 44

    SPDR = data >> 8;
    b4a8:	8d e1       	ldi	r24, 0x1D	; 29
    b4aa:	8e bd       	out	0x2e, r24	; 46
    loop_until_bit_is_set(SPSR, SPIF);
    b4ac:	0d b4       	in	r0, 0x2d	; 45
    b4ae:	07 fe       	sbrs	r0, 7
    b4b0:	fd cf       	rjmp	.-6      	; 0xb4ac <init_pressure+0x156>
    SPDR = data & 0xFF;
    b4b2:	80 ea       	ldi	r24, 0xA0	; 160
    b4b4:	8e bd       	out	0x2e, r24	; 46
    tmp = SPDR;             // empty the receive
    b4b6:	8e b5       	in	r24, 0x2e	; 46
    b4b8:	89 83       	std	Y+1, r24	; 0x01
    loop_until_bit_is_set(SPSR, SPIF);
    b4ba:	0d b4       	in	r0, 0x2d	; 45
    b4bc:	07 fe       	sbrs	r0, 7
    b4be:	fd cf       	rjmp	.-6      	; 0xb4ba <init_pressure+0x164>
    tmp = SPDR;             // empty the receive
    b4c0:	8e b5       	in	r24, 0x2e	; 46
    b4c2:	89 83       	std	Y+1, r24	; 0x01
static uint16_t spi_inw(void)
{
    uint16_t tmp;

    // assume SPI is idle...
    SPCR |= _BV(CPHA);   // clock phase = 1 (data sampled on rising edge)
    b4c4:	8c b5       	in	r24, 0x2c	; 44
    b4c6:	84 60       	ori	r24, 0x04	; 4
    b4c8:	8c bd       	out	0x2c, r24	; 44

    SPDR = 0;
    b4ca:	1e bc       	out	0x2e, r1	; 46
    loop_until_bit_is_set(SPSR, SPIF);
    b4cc:	0d b4       	in	r0, 0x2d	; 45
    b4ce:	07 fe       	sbrs	r0, 7
    b4d0:	fd cf       	rjmp	.-6      	; 0xb4cc <init_pressure+0x176>
    SPDR = 0;
    b4d2:	1e bc       	out	0x2e, r1	; 46
    tmp = SPDR << 8;             // empty the receive
    b4d4:	3e b5       	in	r19, 0x2e	; 46
    loop_until_bit_is_set(SPSR, SPIF);
    b4d6:	0d b4       	in	r0, 0x2d	; 45
    b4d8:	07 fe       	sbrs	r0, 7
    b4da:	fd cf       	rjmp	.-6      	; 0xb4d6 <init_pressure+0x180>
    tmp |= SPDR;             // empty the receive
    b4dc:	2e b5       	in	r18, 0x2e	; 46
    b4de:	93 2f       	mov	r25, r19
    b4e0:	80 e0       	ldi	r24, 0x00	; 0
    b4e2:	30 e0       	ldi	r19, 0x00	; 0
    b4e4:	28 2b       	or	r18, r24
    b4e6:	39 2b       	or	r19, r25
    spi_outw(0x1DA0);   // read cal word 4
    cal4 = spi_inw();

// unpack the parameters. Assume they're all positive. Go ahead and
// perform the constant math on the constants
    pressure_cal.c1 = (cal1 >> 4) + 3000;
    b4e8:	cb 01       	movw	r24, r22
    b4ea:	a4 e0       	ldi	r26, 0x04	; 4
    b4ec:	96 95       	lsr	r25
    b4ee:	87 95       	ror	r24
    b4f0:	aa 95       	dec	r26
    b4f2:	e1 f7       	brne	.-8      	; 0xb4ec <init_pressure+0x196>
    b4f4:	88 54       	subi	r24, 0x48	; 72
    b4f6:	94 4f       	sbci	r25, 0xF4	; 244
    b4f8:	90 93 a2 07 	sts	0x07A2, r25
    b4fc:	80 93 a1 07 	sts	0x07A1, r24
    pressure_cal.c2 = (((cal1 & 7) << 10) | (cal2 >> 6)) + 10000;
    b500:	67 70       	andi	r22, 0x07	; 7
    b502:	70 70       	andi	r23, 0x00	; 0
    b504:	76 2f       	mov	r23, r22
    b506:	66 27       	eor	r22, r22
    b508:	77 0f       	add	r23, r23
    b50a:	77 0f       	add	r23, r23
    b50c:	ca 01       	movw	r24, r20
    b50e:	a6 e0       	ldi	r26, 0x06	; 6
    b510:	96 95       	lsr	r25
    b512:	87 95       	ror	r24
    b514:	aa 95       	dec	r26
    b516:	e1 f7       	brne	.-8      	; 0xb510 <init_pressure+0x1ba>
    b518:	68 2b       	or	r22, r24
    b51a:	79 2b       	or	r23, r25
    b51c:	60 5f       	subi	r22, 0xF0	; 240
    b51e:	78 4d       	sbci	r23, 0xD8	; 216
    b520:	70 93 a4 07 	sts	0x07A4, r23
    b524:	60 93 a3 07 	sts	0x07A3, r22
    pressure_cal.c3 = (cal3 >> 6) + 200;
    b528:	cf 01       	movw	r24, r30
    b52a:	76 e0       	ldi	r23, 0x06	; 6
    b52c:	96 95       	lsr	r25
    b52e:	87 95       	ror	r24
    b530:	7a 95       	dec	r23
    b532:	e1 f7       	brne	.-8      	; 0xb52c <init_pressure+0x1d6>
    b534:	88 53       	subi	r24, 0x38	; 56
    b536:	9f 4f       	sbci	r25, 0xFF	; 255
    b538:	90 93 a6 07 	sts	0x07A6, r25
    b53c:	80 93 a5 07 	sts	0x07A5, r24
    pressure_cal.c4 = (cal4 >> 7) - 250;
    b540:	c9 01       	movw	r24, r18
    b542:	88 0f       	add	r24, r24
    b544:	89 2f       	mov	r24, r25
    b546:	88 1f       	adc	r24, r24
    b548:	99 0b       	sbc	r25, r25
    b54a:	91 95       	neg	r25
    b54c:	8a 5f       	subi	r24, 0xFA	; 250
    b54e:	90 40       	sbci	r25, 0x00	; 0
    b550:	90 93 a8 07 	sts	0x07A8, r25
    b554:	80 93 a7 07 	sts	0x07A7, r24
    pressure_cal.ut1 = 8*(((cal2 & 63) << 6) | (cal3 & 63)) + 10000;
    b558:	4f 73       	andi	r20, 0x3F	; 63
    b55a:	50 70       	andi	r21, 0x00	; 0
    b55c:	96 e0       	ldi	r25, 0x06	; 6
    b55e:	44 0f       	add	r20, r20
    b560:	55 1f       	adc	r21, r21
    b562:	9a 95       	dec	r25
    b564:	e1 f7       	brne	.-8      	; 0xb55e <init_pressure+0x208>
    b566:	ef 73       	andi	r30, 0x3F	; 63
    b568:	f0 70       	andi	r31, 0x00	; 0
    b56a:	4e 2b       	or	r20, r30
    b56c:	5f 2b       	or	r21, r31
    b56e:	4e 51       	subi	r20, 0x1E	; 30
    b570:	5b 4f       	sbci	r21, 0xFB	; 251
    b572:	83 e0       	ldi	r24, 0x03	; 3
    b574:	44 0f       	add	r20, r20
    b576:	55 1f       	adc	r21, r21
    b578:	8a 95       	dec	r24
    b57a:	e1 f7       	brne	.-8      	; 0xb574 <init_pressure+0x21e>
    b57c:	50 93 aa 07 	sts	0x07AA, r21
    b580:	40 93 a9 07 	sts	0x07A9, r20
    pressure_cal.c6 = (cal4 & 127) + 100;
    b584:	2f 77       	andi	r18, 0x7F	; 127
    b586:	30 70       	andi	r19, 0x00	; 0
    b588:	2c 59       	subi	r18, 0x9C	; 156
    b58a:	3f 4f       	sbci	r19, 0xFF	; 255
    b58c:	30 93 ac 07 	sts	0x07AC, r19
    b590:	20 93 ab 07 	sts	0x07AB, r18
    TCNT1 = 0;
    OCR1A = 244/2;

    reset_pressure_seq();
    read_pressure_cal();
}
    b594:	0f 90       	pop	r0
    b596:	cf 91       	pop	r28
    b598:	df 91       	pop	r29
    b59a:	08 95       	ret

0000b59c <get_temp_pres>:

}


void get_temp_pres(int16_t * t, int16_t * p)
{
    b59c:	fc 01       	movw	r30, r24
    b59e:	9b 01       	movw	r18, r22
    *t = temp / 10;
    b5a0:	80 91 b1 07 	lds	r24, 0x07B1
    b5a4:	90 91 b2 07 	lds	r25, 0x07B2
    b5a8:	6a e0       	ldi	r22, 0x0A	; 10
    b5aa:	70 e0       	ldi	r23, 0x00	; 0
    b5ac:	0e 94 11 f4 	call	0x1e822	; 0x1e822 <__divmodhi4>
    b5b0:	71 83       	std	Z+1, r23	; 0x01
    b5b2:	60 83       	st	Z, r22
    *p = pressure / 10;
    b5b4:	80 91 b3 07 	lds	r24, 0x07B3
    b5b8:	90 91 b4 07 	lds	r25, 0x07B4
    b5bc:	6a e0       	ldi	r22, 0x0A	; 10
    b5be:	70 e0       	ldi	r23, 0x00	; 0
    b5c0:	0e 94 11 f4 	call	0x1e822	; 0x1e822 <__divmodhi4>
    b5c4:	f9 01       	movw	r30, r18
    b5c6:	71 83       	std	Z+1, r23	; 0x01
    b5c8:	60 83       	st	Z, r22
}
    b5ca:	08 95       	ret

0000b5cc <measure_pressure_start>:




void measure_pressure_start(void) 
{
    b5cc:	af 92       	push	r10
    b5ce:	bf 92       	push	r11
    b5d0:	cf 92       	push	r12
    b5d2:	df 92       	push	r13
    b5d4:	ef 92       	push	r14
    b5d6:	ff 92       	push	r15
    b5d8:	0f 93       	push	r16
    b5da:	1f 93       	push	r17
    b5dc:	df 93       	push	r29
    b5de:	cf 93       	push	r28
    b5e0:	0f 92       	push	r0
    b5e2:	cd b7       	in	r28, 0x3d	; 61
    b5e4:	de b7       	in	r29, 0x3e	; 62
    int16_t offs, sens;

    power_spi_enable();
    b5e6:	80 91 64 00 	lds	r24, 0x0064
    b5ea:	8b 7f       	andi	r24, 0xFB	; 251
    b5ec:	80 93 64 00 	sts	0x0064, r24
    power_timer1_enable();
    b5f0:	80 91 64 00 	lds	r24, 0x0064
    b5f4:	87 7f       	andi	r24, 0xF7	; 247
    b5f6:	80 93 64 00 	sts	0x0064, r24

    // turn on the clock source
    TCCR1B |= 1;
    b5fa:	80 91 81 00 	lds	r24, 0x0081
    b5fe:	81 60       	ori	r24, 0x01	; 1
    b600:	80 93 81 00 	sts	0x0081, r24
static void spi_outw(uint16_t data)
{
    volatile uint8_t tmp;

    // assume SPI is idle
    SPCR &= ~_BV(CPHA); // set clock phase to zero (data changes on falling edge)
    b604:	8c b5       	in	r24, 0x2c	; 44
    b606:	8b 7f       	andi	r24, 0xFB	; 251
    b608:	8c bd       	out	0x2c, r24	; 44

    SPDR = data >> 8;
    b60a:	8f e0       	ldi	r24, 0x0F	; 15
    b60c:	8e bd       	out	0x2e, r24	; 46
    loop_until_bit_is_set(SPSR, SPIF);
    b60e:	0d b4       	in	r0, 0x2d	; 45
    b610:	07 fe       	sbrs	r0, 7
    b612:	fd cf       	rjmp	.-6      	; 0xb60e <measure_pressure_start+0x42>
    SPDR = data & 0xFF;
    b614:	80 e4       	ldi	r24, 0x40	; 64
    b616:	8e bd       	out	0x2e, r24	; 46
    tmp = SPDR;             // empty the receive
    b618:	8e b5       	in	r24, 0x2e	; 46
    b61a:	89 83       	std	Y+1, r24	; 0x01
    loop_until_bit_is_set(SPSR, SPIF);
    b61c:	0d b4       	in	r0, 0x2d	; 45
    b61e:	07 fe       	sbrs	r0, 7
    b620:	fd cf       	rjmp	.-6      	; 0xb61c <measure_pressure_start+0x50>
    tmp = SPDR;             // empty the receive
    b622:	8e b5       	in	r24, 0x2e	; 46
    b624:	89 83       	std	Y+1, r24	; 0x01
    TCCR1B |= 1;

    // send the conversion command for the temperature (D1)
    spi_outw(0x0F40);

	OSTimeDlyHMSM(0,0,0,50);
    b626:	80 e0       	ldi	r24, 0x00	; 0
    b628:	60 e0       	ldi	r22, 0x00	; 0
    b62a:	40 e0       	ldi	r20, 0x00	; 0
    b62c:	22 e3       	ldi	r18, 0x32	; 50
    b62e:	30 e0       	ldi	r19, 0x00	; 0
    b630:	0e 94 2a 2e 	call	0x5c54	; 0x5c54 <OSTimeDlyHMSM>
static uint16_t spi_inw(void)
{
    uint16_t tmp;

    // assume SPI is idle...
    SPCR |= _BV(CPHA);   // clock phase = 1 (data sampled on rising edge)
    b634:	8c b5       	in	r24, 0x2c	; 44
    b636:	84 60       	ori	r24, 0x04	; 4
    b638:	8c bd       	out	0x2c, r24	; 44

    SPDR = 0;
    b63a:	1e bc       	out	0x2e, r1	; 46
    loop_until_bit_is_set(SPSR, SPIF);
    b63c:	0d b4       	in	r0, 0x2d	; 45
    b63e:	07 fe       	sbrs	r0, 7
    b640:	fd cf       	rjmp	.-6      	; 0xb63c <measure_pressure_start+0x70>
    SPDR = 0;
    b642:	1e bc       	out	0x2e, r1	; 46
    tmp = SPDR << 8;             // empty the receive
    b644:	3e b5       	in	r19, 0x2e	; 46
    loop_until_bit_is_set(SPSR, SPIF);
    b646:	0d b4       	in	r0, 0x2d	; 45
    b648:	07 fe       	sbrs	r0, 7
    b64a:	fd cf       	rjmp	.-6      	; 0xb646 <measure_pressure_start+0x7a>
    tmp |= SPDR;             // empty the receive
    b64c:	2e b5       	in	r18, 0x2e	; 46
    SPCR |= _BV(CPHA);   // clock phase = 1 (data sampled on rising edge)

    SPDR = 0;
    loop_until_bit_is_set(SPSR, SPIF);
    SPDR = 0;
    tmp = SPDR << 8;             // empty the receive
    b64e:	93 2f       	mov	r25, r19
    b650:	80 e0       	ldi	r24, 0x00	; 0
    // send the conversion command for the temperature (D1)
    spi_outw(0x0F40);

	OSTimeDlyHMSM(0,0,0,50);

    d1 = spi_inw();
    b652:	30 e0       	ldi	r19, 0x00	; 0
    b654:	82 2b       	or	r24, r18
    b656:	93 2b       	or	r25, r19
    b658:	90 93 ae 07 	sts	0x07AE, r25
    b65c:	80 93 ad 07 	sts	0x07AD, r24
static void spi_outw(uint16_t data)
{
    volatile uint8_t tmp;

    // assume SPI is idle
    SPCR &= ~_BV(CPHA); // set clock phase to zero (data changes on falling edge)
    b660:	8c b5       	in	r24, 0x2c	; 44
    b662:	8b 7f       	andi	r24, 0xFB	; 251
    b664:	8c bd       	out	0x2c, r24	; 44

    SPDR = data >> 8;
    b666:	8f e0       	ldi	r24, 0x0F	; 15
    b668:	8e bd       	out	0x2e, r24	; 46
    loop_until_bit_is_set(SPSR, SPIF);
    b66a:	0d b4       	in	r0, 0x2d	; 45
    b66c:	07 fe       	sbrs	r0, 7
    b66e:	fd cf       	rjmp	.-6      	; 0xb66a <measure_pressure_start+0x9e>
    SPDR = data & 0xFF;
    b670:	80 e2       	ldi	r24, 0x20	; 32
    b672:	8e bd       	out	0x2e, r24	; 46
    tmp = SPDR;             // empty the receive
    b674:	8e b5       	in	r24, 0x2e	; 46
    b676:	89 83       	std	Y+1, r24	; 0x01
    loop_until_bit_is_set(SPSR, SPIF);
    b678:	0d b4       	in	r0, 0x2d	; 45
    b67a:	07 fe       	sbrs	r0, 7
    b67c:	fd cf       	rjmp	.-6      	; 0xb678 <measure_pressure_start+0xac>
    tmp = SPDR;             // empty the receive
    b67e:	8e b5       	in	r24, 0x2e	; 46
    b680:	89 83       	std	Y+1, r24	; 0x01
	OSTimeDlyHMSM(0,0,0,50);

    d1 = spi_inw();
    spi_outw(0x0F20);       // setup to read D2

	OSTimeDlyHMSM(0,0,0,50);
    b682:	80 e0       	ldi	r24, 0x00	; 0
    b684:	60 e0       	ldi	r22, 0x00	; 0
    b686:	40 e0       	ldi	r20, 0x00	; 0
    b688:	22 e3       	ldi	r18, 0x32	; 50
    b68a:	30 e0       	ldi	r19, 0x00	; 0
    b68c:	0e 94 2a 2e 	call	0x5c54	; 0x5c54 <OSTimeDlyHMSM>
static uint16_t spi_inw(void)
{
    uint16_t tmp;

    // assume SPI is idle...
    SPCR |= _BV(CPHA);   // clock phase = 1 (data sampled on rising edge)
    b690:	8c b5       	in	r24, 0x2c	; 44
    b692:	84 60       	ori	r24, 0x04	; 4
    b694:	8c bd       	out	0x2c, r24	; 44

    SPDR = 0;
    b696:	1e bc       	out	0x2e, r1	; 46
    loop_until_bit_is_set(SPSR, SPIF);
    b698:	0d b4       	in	r0, 0x2d	; 45
    b69a:	07 fe       	sbrs	r0, 7
    b69c:	fd cf       	rjmp	.-6      	; 0xb698 <measure_pressure_start+0xcc>
    SPDR = 0;
    b69e:	1e bc       	out	0x2e, r1	; 46
    tmp = SPDR << 8;             // empty the receive
    b6a0:	2e b5       	in	r18, 0x2e	; 46
    loop_until_bit_is_set(SPSR, SPIF);
    b6a2:	0d b4       	in	r0, 0x2d	; 45
    b6a4:	07 fe       	sbrs	r0, 7
    b6a6:	fd cf       	rjmp	.-6      	; 0xb6a2 <measure_pressure_start+0xd6>
    tmp |= SPDR;             // empty the receive
    b6a8:	ee b4       	in	r14, 0x2e	; 46
    SPCR |= _BV(CPHA);   // clock phase = 1 (data sampled on rising edge)

    SPDR = 0;
    loop_until_bit_is_set(SPSR, SPIF);
    SPDR = 0;
    tmp = SPDR << 8;             // empty the receive
    b6aa:	92 2f       	mov	r25, r18
    b6ac:	80 e0       	ldi	r24, 0x00	; 0
    d1 = spi_inw();
    spi_outw(0x0F20);       // setup to read D2

	OSTimeDlyHMSM(0,0,0,50);

    d2 = spi_inw();
    b6ae:	ff 24       	eor	r15, r15
    b6b0:	e8 2a       	or	r14, r24
    b6b2:	f9 2a       	or	r15, r25
    b6b4:	f0 92 b0 07 	sts	0x07B0, r15
    b6b8:	e0 92 af 07 	sts	0x07AF, r14
    TCCR1A &= ~7;           // clock off
    b6bc:	80 91 80 00 	lds	r24, 0x0080
    b6c0:	88 7f       	andi	r24, 0xF8	; 248
    b6c2:	80 93 80 00 	sts	0x0080, r24

    // compute temperature
    dt = d2 - pressure_cal.ut1;
    b6c6:	80 91 a9 07 	lds	r24, 0x07A9
    b6ca:	90 91 aa 07 	lds	r25, 0x07AA
    b6ce:	e8 1a       	sub	r14, r24
    b6d0:	f9 0a       	sbc	r15, r25
    b6d2:	f0 92 b6 07 	sts	0x07B6, r15
    b6d6:	e0 92 b5 07 	sts	0x07B5, r14
    temp = 200 + (int16_t)(((int32_t)dt * pressure_cal.c6) >> 11);
    b6da:	00 27       	eor	r16, r16
    b6dc:	f7 fc       	sbrc	r15, 7
    b6de:	00 95       	com	r16
    b6e0:	10 2f       	mov	r17, r16
    b6e2:	20 91 ab 07 	lds	r18, 0x07AB
    b6e6:	30 91 ac 07 	lds	r19, 0x07AC
    b6ea:	44 27       	eor	r20, r20
    b6ec:	37 fd       	sbrc	r19, 7
    b6ee:	40 95       	com	r20
    b6f0:	54 2f       	mov	r21, r20
    b6f2:	c8 01       	movw	r24, r16
    b6f4:	b7 01       	movw	r22, r14
    b6f6:	0e 94 f2 f3 	call	0x1e7e4	; 0x1e7e4 <__mulsi3>
    b6fa:	3b e0       	ldi	r19, 0x0B	; 11
    b6fc:	95 95       	asr	r25
    b6fe:	87 95       	ror	r24
    b700:	77 95       	ror	r23
    b702:	67 95       	ror	r22
    b704:	3a 95       	dec	r19
    b706:	d1 f7       	brne	.-12     	; 0xb6fc <measure_pressure_start+0x130>
    b708:	68 53       	subi	r22, 0x38	; 56
    b70a:	7f 4f       	sbci	r23, 0xFF	; 255
    b70c:	70 93 b2 07 	sts	0x07B2, r23
    b710:	60 93 b1 07 	sts	0x07B1, r22

    // compute the pressure
    offs = pressure_cal.c2 + (int16_t)(((int32_t)pressure_cal.c4 * dt) >> 12);
    sens = pressure_cal.c1 + (int16_t)(((int32_t)pressure_cal.c3 * dt) >> 13);
    pressure = (int16_t)(((int32_t)sens * (d1 - offs)) >> 12) + 1000;
    b714:	a0 90 ad 07 	lds	r10, 0x07AD
    b718:	b0 90 ae 07 	lds	r11, 0x07AE
    b71c:	80 91 a3 07 	lds	r24, 0x07A3
    b720:	90 91 a4 07 	lds	r25, 0x07A4
    b724:	a8 1a       	sub	r10, r24
    b726:	b9 0a       	sbc	r11, r25
    b728:	20 91 a7 07 	lds	r18, 0x07A7
    b72c:	30 91 a8 07 	lds	r19, 0x07A8
    b730:	44 27       	eor	r20, r20
    b732:	37 fd       	sbrc	r19, 7
    b734:	40 95       	com	r20
    b736:	54 2f       	mov	r21, r20
    b738:	c8 01       	movw	r24, r16
    b73a:	b7 01       	movw	r22, r14
    b73c:	0e 94 f2 f3 	call	0x1e7e4	; 0x1e7e4 <__mulsi3>
    b740:	2c e0       	ldi	r18, 0x0C	; 12
    b742:	95 95       	asr	r25
    b744:	87 95       	ror	r24
    b746:	77 95       	ror	r23
    b748:	67 95       	ror	r22
    b74a:	2a 95       	dec	r18
    b74c:	d1 f7       	brne	.-12     	; 0xb742 <measure_pressure_start+0x176>
    b74e:	a6 1a       	sub	r10, r22
    b750:	b7 0a       	sbc	r11, r23
    b752:	cc 24       	eor	r12, r12
    b754:	b7 fc       	sbrc	r11, 7
    b756:	c0 94       	com	r12
    b758:	dc 2c       	mov	r13, r12
    b75a:	20 91 a5 07 	lds	r18, 0x07A5
    b75e:	30 91 a6 07 	lds	r19, 0x07A6
    b762:	44 27       	eor	r20, r20
    b764:	37 fd       	sbrc	r19, 7
    b766:	40 95       	com	r20
    b768:	54 2f       	mov	r21, r20
    b76a:	c8 01       	movw	r24, r16
    b76c:	b7 01       	movw	r22, r14
    b76e:	0e 94 f2 f3 	call	0x1e7e4	; 0x1e7e4 <__mulsi3>
    b772:	1d e0       	ldi	r17, 0x0D	; 13
    b774:	95 95       	asr	r25
    b776:	87 95       	ror	r24
    b778:	77 95       	ror	r23
    b77a:	67 95       	ror	r22
    b77c:	1a 95       	dec	r17
    b77e:	d1 f7       	brne	.-12     	; 0xb774 <measure_pressure_start+0x1a8>
    b780:	20 91 a1 07 	lds	r18, 0x07A1
    b784:	30 91 a2 07 	lds	r19, 0x07A2
    b788:	26 0f       	add	r18, r22
    b78a:	37 1f       	adc	r19, r23
    b78c:	44 27       	eor	r20, r20
    b78e:	37 fd       	sbrc	r19, 7
    b790:	40 95       	com	r20
    b792:	54 2f       	mov	r21, r20
    b794:	c6 01       	movw	r24, r12
    b796:	b5 01       	movw	r22, r10
    b798:	0e 94 f2 f3 	call	0x1e7e4	; 0x1e7e4 <__mulsi3>
    b79c:	bc e0       	ldi	r27, 0x0C	; 12
    b79e:	95 95       	asr	r25
    b7a0:	87 95       	ror	r24
    b7a2:	77 95       	ror	r23
    b7a4:	67 95       	ror	r22
    b7a6:	ba 95       	dec	r27
    b7a8:	d1 f7       	brne	.-12     	; 0xb79e <measure_pressure_start+0x1d2>
    b7aa:	68 51       	subi	r22, 0x18	; 24
    b7ac:	7c 4f       	sbci	r23, 0xFC	; 252
    b7ae:	70 93 b4 07 	sts	0x07B4, r23
    b7b2:	60 93 b3 07 	sts	0x07B3, r22
    power_timer1_disable();
    b7b6:	80 91 64 00 	lds	r24, 0x0064
    b7ba:	88 60       	ori	r24, 0x08	; 8
    b7bc:	80 93 64 00 	sts	0x0064, r24
    power_spi_disable();
    b7c0:	80 91 64 00 	lds	r24, 0x0064
    b7c4:	84 60       	ori	r24, 0x04	; 4
    b7c6:	80 93 64 00 	sts	0x0064, r24

}
    b7ca:	0f 90       	pop	r0
    b7cc:	cf 91       	pop	r28
    b7ce:	df 91       	pop	r29
    b7d0:	1f 91       	pop	r17
    b7d2:	0f 91       	pop	r16
    b7d4:	ff 90       	pop	r15
    b7d6:	ef 90       	pop	r14
    b7d8:	df 90       	pop	r13
    b7da:	cf 90       	pop	r12
    b7dc:	bf 90       	pop	r11
    b7de:	af 90       	pop	r10
    b7e0:	08 95       	ret

0000b7e2 <UserHealthInit>:
int16_t	pibTempHum;


void UserHealthInit(void)
{
	init_humid();
    b7e2:	0e 94 15 5c 	call	0xb82a	; 0xb82a <init_humid>
	init_pressure();
    b7e6:	0e 94 ab 59 	call	0xb356	; 0xb356 <init_pressure>

	return;
}
    b7ea:	08 95       	ret

0000b7ec <UserHealthStatus>:


void UserHealthStatus(void* pdata)
{
	UserHealthInit();
    b7ec:	0e 94 f1 5b 	call	0xb7e2	; 0xb7e2 <UserHealthInit>
	OSTimeDlyHMSM(0,0,0,500);
    b7f0:	80 e0       	ldi	r24, 0x00	; 0
    b7f2:	60 e0       	ldi	r22, 0x00	; 0
    b7f4:	40 e0       	ldi	r20, 0x00	; 0
    b7f6:	24 ef       	ldi	r18, 0xF4	; 244
    b7f8:	31 e0       	ldi	r19, 0x01	; 1
    b7fa:	0e 94 2a 2e 	call	0x5c54	; 0x5c54 <OSTimeDlyHMSM>

	while(OS_TRUE)
	{
		measure_pressure_start();
    b7fe:	0e 94 e6 5a 	call	0xb5cc	; 0xb5cc <measure_pressure_start>
		measure_humid_start();
    b802:	0e 94 98 5c 	call	0xb930	; 0xb930 <measure_humid_start>


		get_temp_humid(&pibTempHum, &pibHumidity);
    b806:	8a e4       	ldi	r24, 0x4A	; 74
    b808:	99 e1       	ldi	r25, 0x19	; 25
    b80a:	64 e4       	ldi	r22, 0x44	; 68
    b80c:	79 e1       	ldi	r23, 0x19	; 25
    b80e:	0e 94 89 5c 	call	0xb912	; 0xb912 <get_temp_humid>
		get_temp_pres(&pibTempPres, &pibPressure);
    b812:	88 e4       	ldi	r24, 0x48	; 72
    b814:	99 e1       	ldi	r25, 0x19	; 25
    b816:	66 e4       	ldi	r22, 0x46	; 70
    b818:	79 e1       	ldi	r23, 0x19	; 25
    b81a:	0e 94 ce 5a 	call	0xb59c	; 0xb59c <get_temp_pres>

		OSTimeDlyHMSM(0,1,0,0);
    b81e:	80 e0       	ldi	r24, 0x00	; 0
    b820:	61 e0       	ldi	r22, 0x01	; 1
    b822:	40 e0       	ldi	r20, 0x00	; 0
    b824:	20 e0       	ldi	r18, 0x00	; 0
    b826:	30 e0       	ldi	r19, 0x00	; 0
    b828:	e8 cf       	rjmp	.-48     	; 0xb7fa <UserHealthStatus+0xe>

0000b82a <init_humid>:

    // the humidity sensor uses SCLK (PE6) and SDAT (PE7)
    // PE7 is a bidirectional pin so enable the onboard pullup
    // and set to "0" by making it an output, and set to "1" by
    // making it an input
    DDRE  |= _BV(7);        // SCLK output
    b82a:	6f 9a       	sbi	0x0d, 7	; 13
//    EICRB |= _BV(ISC61);    // falling edge triggered

}
    b82c:	08 95       	ret

0000b82e <humid_start>:

static void humid_start(uint8_t rst) 
{
    if (rst) 
    b82e:	88 23       	and	r24, r24
    b830:	91 f0       	breq	.+36     	; 0xb856 <humid_start+0x28>
	{
    // give 9 clock cycles to reset the interface
        SCL_HIGH;
    b832:	77 9a       	sbi	0x0e, 7	; 14
        SCL_LOW;
    b834:	77 98       	cbi	0x0e, 7	; 14
        SCL_HIGH;
    b836:	77 9a       	sbi	0x0e, 7	; 14
        SCL_LOW;
    b838:	77 98       	cbi	0x0e, 7	; 14
        SCL_HIGH;
    b83a:	77 9a       	sbi	0x0e, 7	; 14
        SCL_LOW;
    b83c:	77 98       	cbi	0x0e, 7	; 14
        SCL_HIGH;
    b83e:	77 9a       	sbi	0x0e, 7	; 14
        SCL_LOW;
    b840:	77 98       	cbi	0x0e, 7	; 14
        SCL_HIGH;
    b842:	77 9a       	sbi	0x0e, 7	; 14
        SCL_LOW;
    b844:	77 98       	cbi	0x0e, 7	; 14
        SCL_HIGH;
    b846:	77 9a       	sbi	0x0e, 7	; 14
        SCL_LOW;
    b848:	77 98       	cbi	0x0e, 7	; 14
        SCL_HIGH;
    b84a:	77 9a       	sbi	0x0e, 7	; 14
        SCL_LOW;
    b84c:	77 98       	cbi	0x0e, 7	; 14
        SCL_HIGH;
    b84e:	77 9a       	sbi	0x0e, 7	; 14
        SCL_LOW;
    b850:	77 98       	cbi	0x0e, 7	; 14
        SCL_HIGH;
    b852:	77 9a       	sbi	0x0e, 7	; 14
        SCL_LOW;
    b854:	77 98       	cbi	0x0e, 7	; 14
    }

    // the start sequence is indicated by dropping SDA while
    // SCL is high
    SCL_HIGH;
    b856:	77 9a       	sbi	0x0e, 7	; 14
    SDA_LOW;
    b858:	6e 9a       	sbi	0x0d, 6	; 13
    SCL_LOW;
    b85a:	77 98       	cbi	0x0e, 7	; 14
    SCL_HIGH;
    b85c:	77 9a       	sbi	0x0e, 7	; 14
    SDA_HIGH;
    b85e:	6e 98       	cbi	0x0d, 6	; 13
    SCL_LOW;
    b860:	77 98       	cbi	0x0e, 7	; 14
}
    b862:	08 95       	ret

0000b864 <humid_send_byte>:

static uint16_t humid_send_byte(uint8_t b, uint8_t ack) 
{
    uint8_t tmp;

    b = ~b;
    b864:	80 95       	com	r24
    ack = ~ack;
    b866:	60 95       	com	r22
    tmp = DDRE;
    b868:	9d b1       	in	r25, 0x0d	; 13
    asm volatile("set");                                        \
    asm volatile("bld %0, " #n "\n" : "=r" (reg) : "0" (reg));  \
    BCLR(PORTE, _BV(7))                                         \


    X(7, b);
    b86a:	87 fb       	bst	r24, 7
    b86c:	96 f9       	bld	r25, 6
    b86e:	9d b9       	out	0x0d, r25	; 13
    b870:	77 9a       	sbi	0x0e, 7	; 14
    b872:	e8 94       	clt
    b874:	66 99       	sbic	0x0c, 6	; 12
    b876:	68 94       	set
    b878:	87 f9       	bld	r24, 7
    b87a:	77 98       	cbi	0x0e, 7	; 14
    X(6, b);
    b87c:	86 fb       	bst	r24, 6
    b87e:	96 f9       	bld	r25, 6
    b880:	9d b9       	out	0x0d, r25	; 13
    b882:	77 9a       	sbi	0x0e, 7	; 14
    b884:	e8 94       	clt
    b886:	66 99       	sbic	0x0c, 6	; 12
    b888:	68 94       	set
    b88a:	86 f9       	bld	r24, 6
    b88c:	77 98       	cbi	0x0e, 7	; 14
    X(5, b);
    b88e:	85 fb       	bst	r24, 5
    b890:	96 f9       	bld	r25, 6
    b892:	9d b9       	out	0x0d, r25	; 13
    b894:	77 9a       	sbi	0x0e, 7	; 14
    b896:	e8 94       	clt
    b898:	66 99       	sbic	0x0c, 6	; 12
    b89a:	68 94       	set
    b89c:	85 f9       	bld	r24, 5
    b89e:	77 98       	cbi	0x0e, 7	; 14
    X(4, b);
    b8a0:	84 fb       	bst	r24, 4
    b8a2:	96 f9       	bld	r25, 6
    b8a4:	9d b9       	out	0x0d, r25	; 13
    b8a6:	77 9a       	sbi	0x0e, 7	; 14
    b8a8:	e8 94       	clt
    b8aa:	66 99       	sbic	0x0c, 6	; 12
    b8ac:	68 94       	set
    b8ae:	84 f9       	bld	r24, 4
    b8b0:	77 98       	cbi	0x0e, 7	; 14
    X(3, b);
    b8b2:	83 fb       	bst	r24, 3
    b8b4:	96 f9       	bld	r25, 6
    b8b6:	9d b9       	out	0x0d, r25	; 13
    b8b8:	77 9a       	sbi	0x0e, 7	; 14
    b8ba:	e8 94       	clt
    b8bc:	66 99       	sbic	0x0c, 6	; 12
    b8be:	68 94       	set
    b8c0:	83 f9       	bld	r24, 3
    b8c2:	77 98       	cbi	0x0e, 7	; 14
    X(2, b);
    b8c4:	82 fb       	bst	r24, 2
    b8c6:	96 f9       	bld	r25, 6
    b8c8:	9d b9       	out	0x0d, r25	; 13
    b8ca:	77 9a       	sbi	0x0e, 7	; 14
    b8cc:	e8 94       	clt
    b8ce:	66 99       	sbic	0x0c, 6	; 12
    b8d0:	68 94       	set
    b8d2:	82 f9       	bld	r24, 2
    b8d4:	77 98       	cbi	0x0e, 7	; 14
    X(1, b);
    b8d6:	81 fb       	bst	r24, 1
    b8d8:	96 f9       	bld	r25, 6
    b8da:	9d b9       	out	0x0d, r25	; 13
    b8dc:	77 9a       	sbi	0x0e, 7	; 14
    b8de:	e8 94       	clt
    b8e0:	66 99       	sbic	0x0c, 6	; 12
    b8e2:	68 94       	set
    b8e4:	81 f9       	bld	r24, 1
    b8e6:	77 98       	cbi	0x0e, 7	; 14
    X(0, b);
    b8e8:	80 fb       	bst	r24, 0
    b8ea:	96 f9       	bld	r25, 6
    b8ec:	9d b9       	out	0x0d, r25	; 13
    b8ee:	77 9a       	sbi	0x0e, 7	; 14
    b8f0:	e8 94       	clt
    b8f2:	66 99       	sbic	0x0c, 6	; 12
    b8f4:	68 94       	set
    b8f6:	80 f9       	bld	r24, 0
    b8f8:	77 98       	cbi	0x0e, 7	; 14
    X(0, ack);
    b8fa:	60 fb       	bst	r22, 0
    b8fc:	96 f9       	bld	r25, 6
    b8fe:	9d b9       	out	0x0d, r25	; 13
    b900:	77 9a       	sbi	0x0e, 7	; 14
    b902:	e8 94       	clt
    b904:	66 99       	sbic	0x0c, 6	; 12
    b906:	68 94       	set
    b908:	60 f9       	bld	r22, 0
    b90a:	77 98       	cbi	0x0e, 7	; 14
    BCLR(DDRE, _BV(6)); // leave it in high-z state
    b90c:	6e 98       	cbi	0x0d, 6	; 13

#undef X

    return b;
}
    b90e:	90 e0       	ldi	r25, 0x00	; 0
    b910:	08 95       	ret

0000b912 <get_temp_humid>:
}



void get_temp_humid(int16_t * t, int16_t * h)
{
    b912:	fc 01       	movw	r30, r24
    b914:	db 01       	movw	r26, r22
    *t = hs_temp;
    b916:	80 91 4e 19 	lds	r24, 0x194E
    b91a:	90 91 4f 19 	lds	r25, 0x194F
    b91e:	91 83       	std	Z+1, r25	; 0x01
    b920:	80 83       	st	Z, r24
    *h = humidity;
    b922:	80 91 4c 19 	lds	r24, 0x194C
    b926:	90 91 4d 19 	lds	r25, 0x194D
    b92a:	8d 93       	st	X+, r24
    b92c:	9c 93       	st	X, r25
}
    b92e:	08 95       	ret

0000b930 <measure_humid_start>:

    return b;
}

int8_t measure_humid_start(void) 
{
    b930:	0f 93       	push	r16
    b932:	1f 93       	push	r17
    uint16_t result;
    int16_t tmp;

    humid_start(1);
    b934:	81 e0       	ldi	r24, 0x01	; 1
    b936:	0e 94 17 5c 	call	0xb82e	; 0xb82e <humid_start>

    // read humidity command
    result = humid_send_byte(5, 1);
    b93a:	85 e0       	ldi	r24, 0x05	; 5
    b93c:	61 e0       	ldi	r22, 0x01	; 1
    b93e:	0e 94 32 5c 	call	0xb864	; 0xb864 <humid_send_byte>
    if (result > 256)
    b942:	81 50       	subi	r24, 0x01	; 1
    b944:	91 40       	sbci	r25, 0x01	; 1
    b946:	10 f0       	brcs	.+4      	; 0xb94c <measure_humid_start+0x1c>
    b948:	80 e0       	ldi	r24, 0x00	; 0
    b94a:	b3 c0       	rjmp	.+358    	; 0xbab2 <measure_humid_start+0x182>
	{
        return 0;
	}
    else 
	{
		OSTimeDlyHMSM(0,0,0,400);
    b94c:	80 e0       	ldi	r24, 0x00	; 0
    b94e:	60 e0       	ldi	r22, 0x00	; 0
    b950:	40 e0       	ldi	r20, 0x00	; 0
    b952:	20 e9       	ldi	r18, 0x90	; 144
    b954:	31 e0       	ldi	r19, 0x01	; 1
    b956:	0e 94 2a 2e 	call	0x5c54	; 0x5c54 <OSTimeDlyHMSM>

        so_rh = humid_send_byte(0xFF, 0) << 8; 
    b95a:	8f ef       	ldi	r24, 0xFF	; 255
    b95c:	60 e0       	ldi	r22, 0x00	; 0
    b95e:	0e 94 32 5c 	call	0xb864	; 0xb864 <humid_send_byte>
    b962:	18 2f       	mov	r17, r24
        so_rh |= 0xFF & humid_send_byte(0xFF, 1);
    b964:	8f ef       	ldi	r24, 0xFF	; 255
    b966:	61 e0       	ldi	r22, 0x01	; 1
    b968:	0e 94 32 5c 	call	0xb864	; 0xb864 <humid_send_byte>
    b96c:	68 2f       	mov	r22, r24
    b96e:	70 e0       	ldi	r23, 0x00	; 0
    b970:	91 2f       	mov	r25, r17
    b972:	80 e0       	ldi	r24, 0x00	; 0
    b974:	68 2b       	or	r22, r24
    b976:	79 2b       	or	r23, r25
    b978:	70 93 b8 07 	sts	0x07B8, r23
    b97c:	60 93 b7 07 	sts	0x07B7, r22

	    humidity = (umult16x16(umult16x16(14464 - so_rh, so_rh) >> 10, 37581) >> 17) - 400;
    b980:	80 e8       	ldi	r24, 0x80	; 128
    b982:	98 e3       	ldi	r25, 0x38	; 56
    b984:	86 1b       	sub	r24, r22
    b986:	97 0b       	sbc	r25, r23
    b988:	0e 94 43 d8 	call	0x1b086	; 0x1b086 <umult16x16>
    b98c:	dc 01       	movw	r26, r24
    b98e:	cb 01       	movw	r24, r22
    b990:	5a e0       	ldi	r21, 0x0A	; 10
    b992:	b6 95       	lsr	r27
    b994:	a7 95       	ror	r26
    b996:	97 95       	ror	r25
    b998:	87 95       	ror	r24
    b99a:	5a 95       	dec	r21
    b99c:	d1 f7       	brne	.-12     	; 0xb992 <measure_humid_start+0x62>
    b99e:	6d ec       	ldi	r22, 0xCD	; 205
    b9a0:	72 e9       	ldi	r23, 0x92	; 146
    b9a2:	0e 94 43 d8 	call	0x1b086	; 0x1b086 <umult16x16>
    b9a6:	41 e1       	ldi	r20, 0x11	; 17
    b9a8:	96 95       	lsr	r25
    b9aa:	87 95       	ror	r24
    b9ac:	77 95       	ror	r23
    b9ae:	67 95       	ror	r22
    b9b0:	4a 95       	dec	r20
    b9b2:	d1 f7       	brne	.-12     	; 0xb9a8 <measure_humid_start+0x78>
    b9b4:	60 59       	subi	r22, 0x90	; 144
    b9b6:	71 40       	sbci	r23, 0x01	; 1
    b9b8:	70 93 4d 19 	sts	0x194D, r23
    b9bc:	60 93 4c 19 	sts	0x194C, r22

        // measure temperature
        humid_start(0);
    b9c0:	80 e0       	ldi	r24, 0x00	; 0
    b9c2:	0e 94 17 5c 	call	0xb82e	; 0xb82e <humid_start>
        humid_send_byte(3, 1);
    b9c6:	83 e0       	ldi	r24, 0x03	; 3
    b9c8:	61 e0       	ldi	r22, 0x01	; 1
    b9ca:	0e 94 32 5c 	call	0xb864	; 0xb864 <humid_send_byte>

		OSTimeDlyHMSM(0,0,0,400);
    b9ce:	80 e0       	ldi	r24, 0x00	; 0
    b9d0:	60 e0       	ldi	r22, 0x00	; 0
    b9d2:	40 e0       	ldi	r20, 0x00	; 0
    b9d4:	20 e9       	ldi	r18, 0x90	; 144
    b9d6:	31 e0       	ldi	r19, 0x01	; 1
    b9d8:	0e 94 2a 2e 	call	0x5c54	; 0x5c54 <OSTimeDlyHMSM>

        hs_temp = humid_send_byte(0xFF, 0) << 8; 
    b9dc:	8f ef       	ldi	r24, 0xFF	; 255
    b9de:	60 e0       	ldi	r22, 0x00	; 0
    b9e0:	0e 94 32 5c 	call	0xb864	; 0xb864 <humid_send_byte>
    b9e4:	18 2f       	mov	r17, r24
    b9e6:	00 e0       	ldi	r16, 0x00	; 0
    b9e8:	10 93 4f 19 	sts	0x194F, r17
    b9ec:	00 93 4e 19 	sts	0x194E, r16
        hs_temp |= 0xFF & humid_send_byte(0xFF, 1);
    b9f0:	8f ef       	ldi	r24, 0xFF	; 255
    b9f2:	61 e0       	ldi	r22, 0x01	; 1
    b9f4:	0e 94 32 5c 	call	0xb864	; 0xb864 <humid_send_byte>

        // temp is in units of 0.01°C
        hs_temp -= 3966;
    b9f8:	90 e0       	ldi	r25, 0x00	; 0
    b9fa:	80 2b       	or	r24, r16
    b9fc:	91 2b       	or	r25, r17
    b9fe:	8e 57       	subi	r24, 0x7E	; 126
    ba00:	9f 40       	sbci	r25, 0x0F	; 15
    ba02:	90 93 4f 19 	sts	0x194F, r25
    ba06:	80 93 4e 19 	sts	0x194E, r24

        // temperature correct the humidity...
        tmp = (int16_t)(smult16x16(hs_temp - 2500, 1250 + so_rh) >> 10);
    ba0a:	60 91 b7 07 	lds	r22, 0x07B7
    ba0e:	70 91 b8 07 	lds	r23, 0x07B8
    ba12:	6e 51       	subi	r22, 0x1E	; 30
    ba14:	7b 4f       	sbci	r23, 0xFB	; 251
    ba16:	84 5c       	subi	r24, 0xC4	; 196
    ba18:	99 40       	sbci	r25, 0x09	; 9
    ba1a:	0e 94 54 d8 	call	0x1b0a8	; 0x1b0a8 <smult16x16>
    ba1e:	dc 01       	movw	r26, r24
    ba20:	cb 01       	movw	r24, r22
        humidity += (int16_t)(smult16x16(tmp, 17180) >> 21);
    ba22:	00 91 4c 19 	lds	r16, 0x194C
    ba26:	10 91 4d 19 	lds	r17, 0x194D
    ba2a:	3a e0       	ldi	r19, 0x0A	; 10
    ba2c:	b5 95       	asr	r27
    ba2e:	a7 95       	ror	r26
    ba30:	97 95       	ror	r25
    ba32:	87 95       	ror	r24
    ba34:	3a 95       	dec	r19
    ba36:	d1 f7       	brne	.-12     	; 0xba2c <measure_humid_start+0xfc>
    ba38:	6c e1       	ldi	r22, 0x1C	; 28
    ba3a:	73 e4       	ldi	r23, 0x43	; 67
    ba3c:	0e 94 54 d8 	call	0x1b0a8	; 0x1b0a8 <smult16x16>
    ba40:	25 e1       	ldi	r18, 0x15	; 21
    ba42:	95 95       	asr	r25
    ba44:	87 95       	ror	r24
    ba46:	77 95       	ror	r23
    ba48:	67 95       	ror	r22
    ba4a:	2a 95       	dec	r18
    ba4c:	d1 f7       	brne	.-12     	; 0xba42 <measure_humid_start+0x112>
    ba4e:	06 0f       	add	r16, r22
    ba50:	17 1f       	adc	r17, r23
    ba52:	10 93 4d 19 	sts	0x194D, r17
    ba56:	00 93 4c 19 	sts	0x194C, r16

        // force the humidity to lie between 0 and 100%
        if (humidity < 0) humidity = 0;
    ba5a:	17 ff       	sbrs	r17, 7
    ba5c:	04 c0       	rjmp	.+8      	; 0xba66 <measure_humid_start+0x136>
    ba5e:	10 92 4d 19 	sts	0x194D, r1
    ba62:	10 92 4c 19 	sts	0x194C, r1
        if (humidity > 100*100) humidity = 100*100;
    ba66:	80 91 4c 19 	lds	r24, 0x194C
    ba6a:	90 91 4d 19 	lds	r25, 0x194D
    ba6e:	81 51       	subi	r24, 0x11	; 17
    ba70:	97 42       	sbci	r25, 0x27	; 39
    ba72:	34 f0       	brlt	.+12     	; 0xba80 <measure_humid_start+0x150>
    ba74:	80 e1       	ldi	r24, 0x10	; 16
    ba76:	97 e2       	ldi	r25, 0x27	; 39
    ba78:	90 93 4d 19 	sts	0x194D, r25
    ba7c:	80 93 4c 19 	sts	0x194C, r24

		humidity = humidity / 100;
    ba80:	80 91 4c 19 	lds	r24, 0x194C
    ba84:	90 91 4d 19 	lds	r25, 0x194D
    ba88:	64 e6       	ldi	r22, 0x64	; 100
    ba8a:	70 e0       	ldi	r23, 0x00	; 0
    ba8c:	0e 94 11 f4 	call	0x1e822	; 0x1e822 <__divmodhi4>
    ba90:	70 93 4d 19 	sts	0x194D, r23
    ba94:	60 93 4c 19 	sts	0x194C, r22
		hs_temp = hs_temp / 100;
    ba98:	80 91 4e 19 	lds	r24, 0x194E
    ba9c:	90 91 4f 19 	lds	r25, 0x194F
    baa0:	64 e6       	ldi	r22, 0x64	; 100
    baa2:	70 e0       	ldi	r23, 0x00	; 0
    baa4:	0e 94 11 f4 	call	0x1e822	; 0x1e822 <__divmodhi4>
    baa8:	70 93 4f 19 	sts	0x194F, r23
    baac:	60 93 4e 19 	sts	0x194E, r22
    bab0:	8f ef       	ldi	r24, 0xFF	; 255
		
        return -1;
    }

	return 0;
}
    bab2:	1f 91       	pop	r17
    bab4:	0f 91       	pop	r16
    bab6:	08 95       	ret

0000bab8 <BusyTask>:
	}
}


void BusyTask(void* pdata)
{
    bab8:	80 e1       	ldi	r24, 0x10	; 16
    baba:	97 e2       	ldi	r25, 0x27	; 39
    babc:	a0 e0       	ldi	r26, 0x00	; 0
    babe:	b0 e0       	ldi	r27, 0x00	; 0
	while(OS_TRUE)
	{
		uint32_t cdown = 10000;
		while(--cdown);
    bac0:	01 97       	sbiw	r24, 0x01	; 1
    bac2:	a1 09       	sbc	r26, r1
    bac4:	b1 09       	sbc	r27, r1
    bac6:	e1 f7       	brne	.-8      	; 0xbac0 <BusyTask+0x8>
		OSTimeDlyHMSM(0,0,0,100);
    bac8:	80 e0       	ldi	r24, 0x00	; 0
    baca:	60 e0       	ldi	r22, 0x00	; 0
    bacc:	40 e0       	ldi	r20, 0x00	; 0
    bace:	24 e6       	ldi	r18, 0x64	; 100
    bad0:	30 e0       	ldi	r19, 0x00	; 0
    bad2:	0e 94 2a 2e 	call	0x5c54	; 0x5c54 <OSTimeDlyHMSM>
    bad6:	f0 cf       	rjmp	.-32     	; 0xbab8 <BusyTask>

0000bad8 <AppContinuation>:
	OSTimeDlyHMSM(0,0,1,0);
#endif

	while(OS_TRUE)
	{
		OSTimeDlyHMSM(0,0,10,0);
    bad8:	80 e0       	ldi	r24, 0x00	; 0
    bada:	60 e0       	ldi	r22, 0x00	; 0
    badc:	4a e0       	ldi	r20, 0x0A	; 10
    bade:	20 e0       	ldi	r18, 0x00	; 0
    bae0:	30 e0       	ldi	r19, 0x00	; 0
    bae2:	0e 94 2a 2e 	call	0x5c54	; 0x5c54 <OSTimeDlyHMSM>
    bae6:	f8 cf       	rjmp	.-16     	; 0xbad8 <AppContinuation>

0000bae8 <AppStartTasks>:

DEBUG_OUTPUT_INFO	descTaskInfo __attribute__((section(".xdata")));
char 				descTaskMsg[80] __attribute__((section(".xdata")));

AppStartContinuationTask_t AppStartTasks(void)
{
    bae8:	2f 92       	push	r2
    baea:	3f 92       	push	r3
    baec:	4f 92       	push	r4
    baee:	5f 92       	push	r5
    baf0:	6f 92       	push	r6
    baf2:	7f 92       	push	r7
    baf4:	8f 92       	push	r8
    baf6:	9f 92       	push	r9
    baf8:	af 92       	push	r10
    bafa:	bf 92       	push	r11
    bafc:	cf 92       	push	r12
    bafe:	df 92       	push	r13
    bb00:	ef 92       	push	r14
    bb02:	ff 92       	push	r15
    bb04:	0f 93       	push	r16
    bb06:	1f 93       	push	r17
    bb08:	df 93       	push	r29
    bb0a:	cf 93       	push	r28
    bb0c:	cd b7       	in	r28, 0x3d	; 61
    bb0e:	de b7       	in	r29, 0x3e	; 62
    bb10:	29 97       	sbiw	r28, 0x09	; 9
    bb12:	0f b6       	in	r0, 0x3f	; 63
    bb14:	f8 94       	cli
    bb16:	de bf       	out	0x3e, r29	; 62
    bb18:	0f be       	out	0x3f, r0	; 63
    bb1a:	cd bf       	out	0x3d, r28	; 61
	void BusyTask(void* pdata);
	INT8U oserr;
	uint8_t task;
	uint8_t flagOutput = 0;

	DisableAllPIBModules();
    bb1c:	0e 94 16 37 	call	0x6e2c	; 0x6e2c <DisableAllPIBModules>
	OStmrInit();
    bb20:	0e 94 e7 33 	call	0x67ce	; 0x67ce <OStmrInit>
#if OS_TASK_STAT_EN
	OSStatInit();
    bb24:	0e 94 91 39 	call	0x7322	; 0x7322 <OSStatInit>
#endif


	

	pMutexFloatQueue = OSMutexCreate(29, &oserr);	
    bb28:	8d e1       	ldi	r24, 0x1D	; 29
    bb2a:	3e 01       	movw	r6, r28
    bb2c:	08 94       	sec
    bb2e:	61 1c       	adc	r6, r1
    bb30:	71 1c       	adc	r7, r1
    bb32:	b3 01       	movw	r22, r6
    bb34:	0e 94 e8 29 	call	0x53d0	; 0x53d0 <OSMutexCreate>
    bb38:	90 93 52 19 	sts	0x1952, r25
    bb3c:	80 93 51 19 	sts	0x1951, r24


	DEFINE_TASK_STACK_AND_LAUNCH(HealthStatus, 256, UserHealthStatus, (void*) 0, 60, 1001, (void*) 0, OS_TASK_OPT_STK_CHK, oserr);
    bb40:	0f 92       	push	r0
    bb42:	0f 92       	push	r0
    bb44:	81 e0       	ldi	r24, 0x01	; 1
    bb46:	90 e0       	ldi	r25, 0x00	; 0
    bb48:	ad b7       	in	r26, 0x3d	; 61
    bb4a:	be b7       	in	r27, 0x3e	; 62
    bb4c:	12 96       	adiw	r26, 0x02	; 2
    bb4e:	9c 93       	st	X, r25
    bb50:	8e 93       	st	-X, r24
    bb52:	11 97       	sbiw	r26, 0x01	; 1
    bb54:	86 ef       	ldi	r24, 0xF6	; 246
    bb56:	9b e5       	ldi	r25, 0x5B	; 91
    bb58:	60 e0       	ldi	r22, 0x00	; 0
    bb5a:	70 e0       	ldi	r23, 0x00	; 0
    bb5c:	48 eb       	ldi	r20, 0xB8	; 184
    bb5e:	50 e1       	ldi	r21, 0x10	; 16
    bb60:	2c e3       	ldi	r18, 0x3C	; 60
    bb62:	09 ee       	ldi	r16, 0xE9	; 233
    bb64:	13 e0       	ldi	r17, 0x03	; 3
    bb66:	e9 eb       	ldi	r30, 0xB9	; 185
    bb68:	ee 2e       	mov	r14, r30
    bb6a:	ef e0       	ldi	r30, 0x0F	; 15
    bb6c:	fe 2e       	mov	r15, r30
    bb6e:	a1 2c       	mov	r10, r1
    bb70:	31 e0       	ldi	r19, 0x01	; 1
    bb72:	b3 2e       	mov	r11, r19
    bb74:	c1 2c       	mov	r12, r1
    bb76:	d1 2c       	mov	r13, r1
    bb78:	88 24       	eor	r8, r8
    bb7a:	99 24       	eor	r9, r9
    bb7c:	0e 94 97 2c 	call	0x592e	; 0x592e <OSTaskCreateExt>
    bb80:	0f 90       	pop	r0
    bb82:	0f 90       	pop	r0
    bb84:	8c e3       	ldi	r24, 0x3C	; 60
    bb86:	68 ee       	ldi	r22, 0xE8	; 232
    bb88:	73 e0       	ldi	r23, 0x03	; 3
    bb8a:	a3 01       	movw	r20, r6
    bb8c:	0e 94 1f 2c 	call	0x583e	; 0x583e <OSTaskNameSet>

	
	commPortState.pmState[0] = PM_STANDARD_COMM;	//Float - Always set to standard comm at this point -- have it hear for ease of indexing
    bb90:	81 e0       	ldi	r24, 0x01	; 1
    bb92:	80 93 96 b8 	sts	0xB896, r24
    bb96:	17 e9       	ldi	r17, 0x97	; 151
    bb98:	e1 2e       	mov	r14, r17
    bb9a:	18 eb       	ldi	r17, 0xB8	; 184
    bb9c:	f1 2e       	mov	r15, r17
    bb9e:	b3 e0       	ldi	r27, 0x03	; 3
    bba0:	cb 2e       	mov	r12, r27
    bba2:	d1 2c       	mov	r13, r1
    bba4:	cc 0e       	add	r12, r28
    bba6:	dd 1e       	adc	r13, r29
    bba8:	00 e1       	ldi	r16, 0x10	; 16
    bbaa:	11 e0       	ldi	r17, 0x01	; 1
	{
		uint16_t eepromAddress;

		eepromAddress = EEPROM_SYSTEM_PARAMS_START + EEPROM_TASK1_OFFSET + (i * EEPROM_TASK_SIZE);

		EepromReadByte((void*)eepromAddress, (void*)&task);
    bbac:	a2 e0       	ldi	r26, 0x02	; 2
    bbae:	aa 2e       	mov	r10, r26
    bbb0:	b1 2c       	mov	r11, r1
    bbb2:	ac 0e       	add	r10, r28
    bbb4:	bd 1e       	adc	r11, r29
    bbb6:	c8 01       	movw	r24, r16
    bbb8:	b5 01       	movw	r22, r10
    bbba:	0e 94 38 37 	call	0x6e70	; 0x6e70 <EepromReadByte>
		if(task == 0xFF)
    bbbe:	8a 81       	ldd	r24, Y+2	; 0x02
    bbc0:	8f 3f       	cpi	r24, 0xFF	; 255
    bbc2:	29 f4       	brne	.+10     	; 0xbbce <AppStartTasks+0xe6>
		{
			task = 0;
    bbc4:	1a 82       	std	Y+2, r1	; 0x02
			EepromWriteByteUnSigned((void*)eepromAddress, task);
    bbc6:	c8 01       	movw	r24, r16
    bbc8:	60 e0       	ldi	r22, 0x00	; 0
    bbca:	0e 94 9f 37 	call	0x6f3e	; 0x6f3e <EepromWriteByteUnSigned>
		}

		tasks[i] = task;
    bbce:	8a 81       	ldd	r24, Y+2	; 0x02
    bbd0:	f6 01       	movw	r30, r12
    bbd2:	80 83       	st	Z, r24

		switch(task)
    bbd4:	81 30       	cpi	r24, 0x01	; 1
    bbd6:	19 f0       	breq	.+6      	; 0xbbde <AppStartTasks+0xf6>
    bbd8:	82 30       	cpi	r24, 0x02	; 2
    bbda:	39 f4       	brne	.+14     	; 0xbbea <AppStartTasks+0x102>
    bbdc:	03 c0       	rjmp	.+6      	; 0xbbe4 <AppStartTasks+0xfc>
		{
			case PYLDCOMM:
				commPortState.pmState[i+1] = PM_STANDARD_COMM;
    bbde:	d7 01       	movw	r26, r14
    bbe0:	8c 93       	st	X, r24
    bbe2:	05 c0       	rjmp	.+10     	; 0xbbee <AppStartTasks+0x106>
				break;

			case SMC:
				commPortState.pmState[i+1] = PM_SMC_COMM;
    bbe4:	f7 01       	movw	r30, r14
    bbe6:	80 83       	st	Z, r24
    bbe8:	02 c0       	rjmp	.+4      	; 0xbbee <AppStartTasks+0x106>
				break;

			default:
				commPortState.pmState[i+1] = PM_COMM_NOT_USED;				
    bbea:	d7 01       	movw	r26, r14
    bbec:	1c 92       	st	X, r1
    bbee:	00 5f       	subi	r16, 0xF0	; 240
    bbf0:	1f 4f       	sbci	r17, 0xFF	; 255
    bbf2:	08 94       	sec
    bbf4:	e1 1c       	adc	r14, r1
    bbf6:	f1 1c       	adc	r15, r1
    bbf8:	08 94       	sec
    bbfa:	c1 1c       	adc	r12, r1
    bbfc:	d1 1c       	adc	r13, r1
	


	// Load  Tasks
	uint8_t tasks[3];
	for(int i=0; i<3; i++)
    bbfe:	b1 e0       	ldi	r27, 0x01	; 1
    bc00:	00 34       	cpi	r16, 0x40	; 64
    bc02:	1b 07       	cpc	r17, r27
    bc04:	c1 f6       	brne	.-80     	; 0xbbb6 <AppStartTasks+0xce>

		}
	}


	fileAllowed[0] = FALSE;
    bc06:	10 92 4d 89 	sts	0x894D, r1

	Float_Comm_Init();
    bc0a:	0e 94 e3 58 	call	0xb1c6	; 0xb1c6 <Float_Comm_Init>

	DEFINE_TASK_STACK_AND_LAUNCH(FloatComm, 512, FloatComms, (void*) 0, 20, 1002, (void*) 0, OS_TASK_OPT_STK_CHK, oserr);
    bc0e:	0f 92       	push	r0
    bc10:	0f 92       	push	r0
    bc12:	81 e0       	ldi	r24, 0x01	; 1
    bc14:	90 e0       	ldi	r25, 0x00	; 0
    bc16:	ed b7       	in	r30, 0x3d	; 61
    bc18:	fe b7       	in	r31, 0x3e	; 62
    bc1a:	92 83       	std	Z+2, r25	; 0x02
    bc1c:	81 83       	std	Z+1, r24	; 0x01
    bc1e:	86 e3       	ldi	r24, 0x36	; 54
    bc20:	95 e5       	ldi	r25, 0x55	; 85
    bc22:	60 e0       	ldi	r22, 0x00	; 0
    bc24:	70 e0       	ldi	r23, 0x00	; 0
    bc26:	48 eb       	ldi	r20, 0xB8	; 184
    bc28:	5f e0       	ldi	r21, 0x0F	; 15
    bc2a:	24 e1       	ldi	r18, 0x14	; 20
    bc2c:	0a ee       	ldi	r16, 0xEA	; 234
    bc2e:	13 e0       	ldi	r17, 0x03	; 3
    bc30:	f9 eb       	ldi	r31, 0xB9	; 185
    bc32:	ef 2e       	mov	r14, r31
    bc34:	fd e0       	ldi	r31, 0x0D	; 13
    bc36:	ff 2e       	mov	r15, r31
    bc38:	a1 2c       	mov	r10, r1
    bc3a:	e2 e0       	ldi	r30, 0x02	; 2
    bc3c:	be 2e       	mov	r11, r30
    bc3e:	c1 2c       	mov	r12, r1
    bc40:	d1 2c       	mov	r13, r1
    bc42:	88 24       	eor	r8, r8
    bc44:	99 24       	eor	r9, r9
    bc46:	0e 94 97 2c 	call	0x592e	; 0x592e <OSTaskCreateExt>
    bc4a:	0f 90       	pop	r0
    bc4c:	0f 90       	pop	r0
    bc4e:	84 e1       	ldi	r24, 0x14	; 20
    bc50:	65 ef       	ldi	r22, 0xF5	; 245
    bc52:	73 e0       	ldi	r23, 0x03	; 3
    bc54:	ae 01       	movw	r20, r28
    bc56:	4f 5f       	subi	r20, 0xFF	; 255
    bc58:	5f 4f       	sbci	r21, 0xFF	; 255
    bc5a:	0e 94 1f 2c 	call	0x583e	; 0x583e <OSTaskNameSet>
    bc5e:	2e ee       	ldi	r18, 0xEE	; 238
    bc60:	37 ee       	ldi	r19, 0xE7	; 231
    bc62:	39 87       	std	Y+9, r19	; 0x09
    bc64:	28 87       	std	Y+8, r18	; 0x08
    bc66:	8e e0       	ldi	r24, 0x0E	; 14
    bc68:	99 eb       	ldi	r25, 0xB9	; 185
    bc6a:	9f 83       	std	Y+7, r25	; 0x07
    bc6c:	8e 83       	std	Y+6, r24	; 0x06
    bc6e:	5e e4       	ldi	r21, 0x4E	; 78
    bc70:	45 2e       	mov	r4, r21
    bc72:	59 e8       	ldi	r21, 0x89	; 137
    bc74:	55 2e       	mov	r5, r21
    bc76:	22 24       	eor	r2, r2
    bc78:	33 24       	eor	r3, r3
    bc7a:	41 e0       	ldi	r20, 0x01	; 1
    bc7c:	64 2e       	mov	r6, r20
    bc7e:	71 2c       	mov	r7, r1

	for(int i=0; i<3; i++)
	{
		task = tasks[i];
    bc80:	e3 e0       	ldi	r30, 0x03	; 3
    bc82:	f0 e0       	ldi	r31, 0x00	; 0
    bc84:	ec 0f       	add	r30, r28
    bc86:	fd 1f       	adc	r31, r29
    bc88:	e2 0d       	add	r30, r2
    bc8a:	f3 1d       	adc	r31, r3
    bc8c:	80 81       	ld	r24, Z
    bc8e:	8a 83       	std	Y+2, r24	; 0x02

		sprintf_P(dbgMsg, PSTR("i=%d, tsk=%d"), i, task);
    bc90:	ad b7       	in	r26, 0x3d	; 61
    bc92:	be b7       	in	r27, 0x3e	; 62
    bc94:	18 97       	sbiw	r26, 0x08	; 8
    bc96:	0f b6       	in	r0, 0x3f	; 63
    bc98:	f8 94       	cli
    bc9a:	be bf       	out	0x3e, r27	; 62
    bc9c:	0f be       	out	0x3f, r0	; 63
    bc9e:	ad bf       	out	0x3d, r26	; 61
    bca0:	ed b7       	in	r30, 0x3d	; 61
    bca2:	fe b7       	in	r31, 0x3e	; 62
    bca4:	31 96       	adiw	r30, 0x01	; 1
    bca6:	23 ef       	ldi	r18, 0xF3	; 243
    bca8:	38 e1       	ldi	r19, 0x18	; 24
    bcaa:	12 96       	adiw	r26, 0x02	; 2
    bcac:	3c 93       	st	X, r19
    bcae:	2e 93       	st	-X, r18
    bcb0:	11 97       	sbiw	r26, 0x01	; 1
    bcb2:	ad ed       	ldi	r26, 0xDD	; 221
    bcb4:	b8 e0       	ldi	r27, 0x08	; 8
    bcb6:	b3 83       	std	Z+3, r27	; 0x03
    bcb8:	a2 83       	std	Z+2, r26	; 0x02
    bcba:	35 82       	std	Z+5, r3	; 0x05
    bcbc:	24 82       	std	Z+4, r2	; 0x04
    bcbe:	86 83       	std	Z+6, r24	; 0x06
    bcc0:	17 82       	std	Z+7, r1	; 0x07
    bcc2:	0e 94 51 f1 	call	0x1e2a2	; 0x1e2a2 <sprintf_P>
		SEND_MSG;		

		memset(descTaskMsg, 0, 80);
    bcc6:	80 e5       	ldi	r24, 0x50	; 80
    bcc8:	e5 e0       	ldi	r30, 0x05	; 5
    bcca:	f8 ee       	ldi	r31, 0xE8	; 232
    bccc:	11 92       	st	Z+, r1
    bcce:	8a 95       	dec	r24
    bcd0:	e9 f7       	brne	.-6      	; 0xbccc <AppStartTasks+0x1e4>

		void *taskToLaunch = NULL;


		switch(task)
    bcd2:	2d b7       	in	r18, 0x3d	; 61
    bcd4:	3e b7       	in	r19, 0x3e	; 62
    bcd6:	28 5f       	subi	r18, 0xF8	; 248
    bcd8:	3f 4f       	sbci	r19, 0xFF	; 255
    bcda:	0f b6       	in	r0, 0x3f	; 63
    bcdc:	f8 94       	cli
    bcde:	3e bf       	out	0x3e, r19	; 62
    bce0:	0f be       	out	0x3f, r0	; 63
    bce2:	2d bf       	out	0x3d, r18	; 61
    bce4:	8a 81       	ldd	r24, Y+2	; 0x02
    bce6:	84 30       	cpi	r24, 0x04	; 4
    bce8:	09 f4       	brne	.+2      	; 0xbcec <AppStartTasks+0x204>
    bcea:	6f c0       	rjmp	.+222    	; 0xbdca <AppStartTasks+0x2e2>
    bcec:	85 30       	cpi	r24, 0x05	; 5
    bcee:	58 f4       	brcc	.+22     	; 0xbd06 <AppStartTasks+0x21e>
    bcf0:	81 30       	cpi	r24, 0x01	; 1
    bcf2:	b1 f0       	breq	.+44     	; 0xbd20 <AppStartTasks+0x238>
    bcf4:	81 30       	cpi	r24, 0x01	; 1
    bcf6:	08 f4       	brcc	.+2      	; 0xbcfa <AppStartTasks+0x212>
    bcf8:	b4 c0       	rjmp	.+360    	; 0xbe62 <AppStartTasks+0x37a>
    bcfa:	82 30       	cpi	r24, 0x02	; 2
    bcfc:	39 f1       	breq	.+78     	; 0xbd4c <AppStartTasks+0x264>
    bcfe:	83 30       	cpi	r24, 0x03	; 3
    bd00:	09 f0       	breq	.+2      	; 0xbd04 <AppStartTasks+0x21c>
    bd02:	45 c1       	rjmp	.+650    	; 0xbf8e <AppStartTasks+0x4a6>
    bd04:	3c c0       	rjmp	.+120    	; 0xbd7e <AppStartTasks+0x296>
    bd06:	86 30       	cpi	r24, 0x06	; 6
    bd08:	09 f4       	brne	.+2      	; 0xbd0c <AppStartTasks+0x224>
    bd0a:	d0 c0       	rjmp	.+416    	; 0xbeac <AppStartTasks+0x3c4>
    bd0c:	86 30       	cpi	r24, 0x06	; 6
    bd0e:	08 f4       	brcc	.+2      	; 0xbd12 <AppStartTasks+0x22a>
    bd10:	82 c0       	rjmp	.+260    	; 0xbe16 <AppStartTasks+0x32e>
    bd12:	87 30       	cpi	r24, 0x07	; 7
    bd14:	09 f4       	brne	.+2      	; 0xbd18 <AppStartTasks+0x230>
    bd16:	ef c0       	rjmp	.+478    	; 0xbef6 <AppStartTasks+0x40e>
    bd18:	88 30       	cpi	r24, 0x08	; 8
    bd1a:	09 f0       	breq	.+2      	; 0xbd1e <AppStartTasks+0x236>
    bd1c:	38 c1       	rjmp	.+624    	; 0xbf8e <AppStartTasks+0x4a6>
    bd1e:	11 c1       	rjmp	.+546    	; 0xbf42 <AppStartTasks+0x45a>
		{
			case PYLDCOMM:				
				fileAllowed[i+1] = FALSE;
    bd20:	d2 01       	movw	r26, r4
    bd22:	1c 92       	st	X, r1

				flagOutput = 1;
				sprintf_P(descTaskMsg, PSTR("\r\nBoard ID=%02d, Task ID=%02d, Task Running is the Payload Comm Support\r\n\r\n"), mainBoardID, i+1);
    bd24:	ed b7       	in	r30, 0x3d	; 61
    bd26:	fe b7       	in	r31, 0x3e	; 62
    bd28:	38 97       	sbiw	r30, 0x08	; 8
    bd2a:	0f b6       	in	r0, 0x3f	; 63
    bd2c:	f8 94       	cli
    bd2e:	fe bf       	out	0x3e, r31	; 62
    bd30:	0f be       	out	0x3f, r0	; 63
    bd32:	ed bf       	out	0x3d, r30	; 61
    bd34:	31 96       	adiw	r30, 0x01	; 1
    bd36:	25 e0       	ldi	r18, 0x05	; 5
    bd38:	38 ee       	ldi	r19, 0xE8	; 232
    bd3a:	ad b7       	in	r26, 0x3d	; 61
    bd3c:	be b7       	in	r27, 0x3e	; 62
    bd3e:	12 96       	adiw	r26, 0x02	; 2
    bd40:	3c 93       	st	X, r19
    bd42:	2e 93       	st	-X, r18
    bd44:	11 97       	sbiw	r26, 0x01	; 1
    bd46:	81 e9       	ldi	r24, 0x91	; 145
    bd48:	98 e0       	ldi	r25, 0x08	; 8
    bd4a:	39 c1       	rjmp	.+626    	; 0xbfbe <AppStartTasks+0x4d6>

				break;

			case SMC:				
				fileAllowed[i+1] = FALSE;
    bd4c:	f2 01       	movw	r30, r4
    bd4e:	10 82       	st	Z, r1

				flagOutput = 1;
				sprintf_P(descTaskMsg, PSTR("\r\nBoard ID=%02d, Task ID=%02d, Task Running is the SMC Comm Support\r\n\r\n"), mainBoardID, i+1);
    bd50:	2d b7       	in	r18, 0x3d	; 61
    bd52:	3e b7       	in	r19, 0x3e	; 62
    bd54:	28 50       	subi	r18, 0x08	; 8
    bd56:	30 40       	sbci	r19, 0x00	; 0
    bd58:	0f b6       	in	r0, 0x3f	; 63
    bd5a:	f8 94       	cli
    bd5c:	3e bf       	out	0x3e, r19	; 62
    bd5e:	0f be       	out	0x3f, r0	; 63
    bd60:	2d bf       	out	0x3d, r18	; 61
    bd62:	ed b7       	in	r30, 0x3d	; 61
    bd64:	fe b7       	in	r31, 0x3e	; 62
    bd66:	31 96       	adiw	r30, 0x01	; 1
    bd68:	25 e0       	ldi	r18, 0x05	; 5
    bd6a:	38 ee       	ldi	r19, 0xE8	; 232
    bd6c:	ad b7       	in	r26, 0x3d	; 61
    bd6e:	be b7       	in	r27, 0x3e	; 62
    bd70:	12 96       	adiw	r26, 0x02	; 2
    bd72:	3c 93       	st	X, r19
    bd74:	2e 93       	st	-X, r18
    bd76:	11 97       	sbiw	r26, 0x01	; 1
    bd78:	89 e4       	ldi	r24, 0x49	; 73
    bd7a:	98 e0       	ldi	r25, 0x08	; 8
    bd7c:	20 c1       	rjmp	.+576    	; 0xbfbe <AppStartTasks+0x4d6>
				break;

			case CTD37SI:				
				fileAllowed[i+1] = TRUE;
    bd7e:	8f ef       	ldi	r24, 0xFF	; 255
    bd80:	f2 01       	movw	r30, r4
    bd82:	80 83       	st	Z, r24

				flagOutput = 1;
				sprintf_P(descTaskMsg, PSTR("\r\nBoard ID=%02d, Task ID=%02d, Task Running is the Seabird 37SI CTD\r\n\r\n"), mainBoardID, i+1);
    bd84:	2d b7       	in	r18, 0x3d	; 61
    bd86:	3e b7       	in	r19, 0x3e	; 62
    bd88:	28 50       	subi	r18, 0x08	; 8
    bd8a:	30 40       	sbci	r19, 0x00	; 0
    bd8c:	0f b6       	in	r0, 0x3f	; 63
    bd8e:	f8 94       	cli
    bd90:	3e bf       	out	0x3e, r19	; 62
    bd92:	0f be       	out	0x3f, r0	; 63
    bd94:	2d bf       	out	0x3d, r18	; 61
    bd96:	ed b7       	in	r30, 0x3d	; 61
    bd98:	fe b7       	in	r31, 0x3e	; 62
    bd9a:	31 96       	adiw	r30, 0x01	; 1
    bd9c:	25 e0       	ldi	r18, 0x05	; 5
    bd9e:	38 ee       	ldi	r19, 0xE8	; 232
    bda0:	ad b7       	in	r26, 0x3d	; 61
    bda2:	be b7       	in	r27, 0x3e	; 62
    bda4:	12 96       	adiw	r26, 0x02	; 2
    bda6:	3c 93       	st	X, r19
    bda8:	2e 93       	st	-X, r18
    bdaa:	11 97       	sbiw	r26, 0x01	; 1
    bdac:	81 e0       	ldi	r24, 0x01	; 1
    bdae:	98 e0       	ldi	r25, 0x08	; 8
    bdb0:	93 83       	std	Z+3, r25	; 0x03
    bdb2:	82 83       	std	Z+2, r24	; 0x02
    bdb4:	80 91 e6 03 	lds	r24, 0x03E6
    bdb8:	84 83       	std	Z+4, r24	; 0x04
    bdba:	15 82       	std	Z+5, r1	; 0x05
    bdbc:	77 82       	std	Z+7, r7	; 0x07
    bdbe:	66 82       	std	Z+6, r6	; 0x06
    bdc0:	0e 94 51 f1 	call	0x1e2a2	; 0x1e2a2 <sprintf_P>
    bdc4:	04 ea       	ldi	r16, 0xA4	; 164
    bdc6:	13 e1       	ldi	r17, 0x13	; 19
    bdc8:	06 c1       	rjmp	.+524    	; 0xbfd6 <AppStartTasks+0x4ee>
				//taskToLaunch = Sbrd37SI;
				taskToLaunch = SB37SI;
				break;

			case GPCTD:
				fileAllowed[i+1] = TRUE;
    bdca:	8f ef       	ldi	r24, 0xFF	; 255
    bdcc:	f2 01       	movw	r30, r4
    bdce:	80 83       	st	Z, r24

				flagOutput = 1;
				sprintf_P(descTaskMsg, PSTR("\r\nBoard ID=%02d, Task ID=%02d, Task Running is the Seabird GPCTD\r\n\r\n"), mainBoardID, i+1);
    bdd0:	2d b7       	in	r18, 0x3d	; 61
    bdd2:	3e b7       	in	r19, 0x3e	; 62
    bdd4:	28 50       	subi	r18, 0x08	; 8
    bdd6:	30 40       	sbci	r19, 0x00	; 0
    bdd8:	0f b6       	in	r0, 0x3f	; 63
    bdda:	f8 94       	cli
    bddc:	3e bf       	out	0x3e, r19	; 62
    bdde:	0f be       	out	0x3f, r0	; 63
    bde0:	2d bf       	out	0x3d, r18	; 61
    bde2:	ed b7       	in	r30, 0x3d	; 61
    bde4:	fe b7       	in	r31, 0x3e	; 62
    bde6:	31 96       	adiw	r30, 0x01	; 1
    bde8:	25 e0       	ldi	r18, 0x05	; 5
    bdea:	38 ee       	ldi	r19, 0xE8	; 232
    bdec:	ad b7       	in	r26, 0x3d	; 61
    bdee:	be b7       	in	r27, 0x3e	; 62
    bdf0:	12 96       	adiw	r26, 0x02	; 2
    bdf2:	3c 93       	st	X, r19
    bdf4:	2e 93       	st	-X, r18
    bdf6:	11 97       	sbiw	r26, 0x01	; 1
    bdf8:	8c eb       	ldi	r24, 0xBC	; 188
    bdfa:	97 e0       	ldi	r25, 0x07	; 7
    bdfc:	93 83       	std	Z+3, r25	; 0x03
    bdfe:	82 83       	std	Z+2, r24	; 0x02
    be00:	80 91 e6 03 	lds	r24, 0x03E6
    be04:	84 83       	std	Z+4, r24	; 0x04
    be06:	15 82       	std	Z+5, r1	; 0x05
    be08:	77 82       	std	Z+7, r7	; 0x07
    be0a:	66 82       	std	Z+6, r6	; 0x06
    be0c:	0e 94 51 f1 	call	0x1e2a2	; 0x1e2a2 <sprintf_P>
    be10:	0e e3       	ldi	r16, 0x3E	; 62
    be12:	1f e0       	ldi	r17, 0x0F	; 15
    be14:	e0 c0       	rjmp	.+448    	; 0xbfd6 <AppStartTasks+0x4ee>
				taskToLaunch = SbrdGPCTD;
				break;

			case C3:
				fileAllowed[i+1] = TRUE;
    be16:	8f ef       	ldi	r24, 0xFF	; 255
    be18:	f2 01       	movw	r30, r4
    be1a:	80 83       	st	Z, r24

				flagOutput = 1;
				sprintf_P(descTaskMsg, PSTR("\r\nBoard ID=%02d, Task ID=%02d, Task Running is the Turner C3 Flourometer\r\n\r\n"), mainBoardID, i+1);
    be1c:	2d b7       	in	r18, 0x3d	; 61
    be1e:	3e b7       	in	r19, 0x3e	; 62
    be20:	28 50       	subi	r18, 0x08	; 8
    be22:	30 40       	sbci	r19, 0x00	; 0
    be24:	0f b6       	in	r0, 0x3f	; 63
    be26:	f8 94       	cli
    be28:	3e bf       	out	0x3e, r19	; 62
    be2a:	0f be       	out	0x3f, r0	; 63
    be2c:	2d bf       	out	0x3d, r18	; 61
    be2e:	ed b7       	in	r30, 0x3d	; 61
    be30:	fe b7       	in	r31, 0x3e	; 62
    be32:	31 96       	adiw	r30, 0x01	; 1
    be34:	25 e0       	ldi	r18, 0x05	; 5
    be36:	38 ee       	ldi	r19, 0xE8	; 232
    be38:	ad b7       	in	r26, 0x3d	; 61
    be3a:	be b7       	in	r27, 0x3e	; 62
    be3c:	12 96       	adiw	r26, 0x02	; 2
    be3e:	3c 93       	st	X, r19
    be40:	2e 93       	st	-X, r18
    be42:	11 97       	sbiw	r26, 0x01	; 1
    be44:	8f e6       	ldi	r24, 0x6F	; 111
    be46:	97 e0       	ldi	r25, 0x07	; 7
    be48:	93 83       	std	Z+3, r25	; 0x03
    be4a:	82 83       	std	Z+2, r24	; 0x02
    be4c:	80 91 e6 03 	lds	r24, 0x03E6
    be50:	84 83       	std	Z+4, r24	; 0x04
    be52:	15 82       	std	Z+5, r1	; 0x05
    be54:	77 82       	std	Z+7, r7	; 0x07
    be56:	66 82       	std	Z+6, r6	; 0x06
    be58:	0e 94 51 f1 	call	0x1e2a2	; 0x1e2a2 <sprintf_P>
    be5c:	04 ec       	ldi	r16, 0xC4	; 196
    be5e:	18 e1       	ldi	r17, 0x18	; 24
    be60:	ba c0       	rjmp	.+372    	; 0xbfd6 <AppStartTasks+0x4ee>
				taskToLaunch = TurnerC3_Orig;

				break;

			case EMPTY:
				fileAllowed[i+1] = FALSE;
    be62:	f2 01       	movw	r30, r4
    be64:	10 82       	st	Z, r1

				flagOutput = 1;
				sprintf_P(descTaskMsg, PSTR("\r\nBoard ID=%02d, Task ID=%02d, Task Running is an Empty PM Sensor\r\n\r\n"), mainBoardID, i+1);
    be66:	2d b7       	in	r18, 0x3d	; 61
    be68:	3e b7       	in	r19, 0x3e	; 62
    be6a:	28 50       	subi	r18, 0x08	; 8
    be6c:	30 40       	sbci	r19, 0x00	; 0
    be6e:	0f b6       	in	r0, 0x3f	; 63
    be70:	f8 94       	cli
    be72:	3e bf       	out	0x3e, r19	; 62
    be74:	0f be       	out	0x3f, r0	; 63
    be76:	2d bf       	out	0x3d, r18	; 61
    be78:	ed b7       	in	r30, 0x3d	; 61
    be7a:	fe b7       	in	r31, 0x3e	; 62
    be7c:	31 96       	adiw	r30, 0x01	; 1
    be7e:	25 e0       	ldi	r18, 0x05	; 5
    be80:	38 ee       	ldi	r19, 0xE8	; 232
    be82:	ad b7       	in	r26, 0x3d	; 61
    be84:	be b7       	in	r27, 0x3e	; 62
    be86:	12 96       	adiw	r26, 0x02	; 2
    be88:	3c 93       	st	X, r19
    be8a:	2e 93       	st	-X, r18
    be8c:	11 97       	sbiw	r26, 0x01	; 1
    be8e:	89 e2       	ldi	r24, 0x29	; 41
    be90:	97 e0       	ldi	r25, 0x07	; 7
    be92:	93 83       	std	Z+3, r25	; 0x03
    be94:	82 83       	std	Z+2, r24	; 0x02
    be96:	80 91 e6 03 	lds	r24, 0x03E6
    be9a:	84 83       	std	Z+4, r24	; 0x04
    be9c:	15 82       	std	Z+5, r1	; 0x05
    be9e:	77 82       	std	Z+7, r7	; 0x07
    bea0:	66 82       	std	Z+6, r6	; 0x06
    bea2:	0e 94 51 f1 	call	0x1e2a2	; 0x1e2a2 <sprintf_P>
    bea6:	06 e9       	ldi	r16, 0x96	; 150
    bea8:	1a e1       	ldi	r17, 0x1A	; 26
    beaa:	95 c0       	rjmp	.+298    	; 0xbfd6 <AppStartTasks+0x4ee>
				taskToLaunch = Empty;

				break;

			case POWER:
				fileAllowed[i+1] = FALSE;
    beac:	f2 01       	movw	r30, r4
    beae:	10 82       	st	Z, r1

				flagOutput = 1;
				sprintf_P(descTaskMsg, PSTR("\r\nBoard ID=%02d, Task ID=%02d, Task Running is a Power On/Off Sensor\r\n\r\n"), mainBoardID, i+1);
    beb0:	2d b7       	in	r18, 0x3d	; 61
    beb2:	3e b7       	in	r19, 0x3e	; 62
    beb4:	28 50       	subi	r18, 0x08	; 8
    beb6:	30 40       	sbci	r19, 0x00	; 0
    beb8:	0f b6       	in	r0, 0x3f	; 63
    beba:	f8 94       	cli
    bebc:	3e bf       	out	0x3e, r19	; 62
    bebe:	0f be       	out	0x3f, r0	; 63
    bec0:	2d bf       	out	0x3d, r18	; 61
    bec2:	ed b7       	in	r30, 0x3d	; 61
    bec4:	fe b7       	in	r31, 0x3e	; 62
    bec6:	31 96       	adiw	r30, 0x01	; 1
    bec8:	25 e0       	ldi	r18, 0x05	; 5
    beca:	38 ee       	ldi	r19, 0xE8	; 232
    becc:	ad b7       	in	r26, 0x3d	; 61
    bece:	be b7       	in	r27, 0x3e	; 62
    bed0:	12 96       	adiw	r26, 0x02	; 2
    bed2:	3c 93       	st	X, r19
    bed4:	2e 93       	st	-X, r18
    bed6:	11 97       	sbiw	r26, 0x01	; 1
    bed8:	80 ee       	ldi	r24, 0xE0	; 224
    beda:	96 e0       	ldi	r25, 0x06	; 6
    bedc:	93 83       	std	Z+3, r25	; 0x03
    bede:	82 83       	std	Z+2, r24	; 0x02
    bee0:	80 91 e6 03 	lds	r24, 0x03E6
    bee4:	84 83       	std	Z+4, r24	; 0x04
    bee6:	15 82       	std	Z+5, r1	; 0x05
    bee8:	77 82       	std	Z+7, r7	; 0x07
    beea:	66 82       	std	Z+6, r6	; 0x06
    beec:	0e 94 51 f1 	call	0x1e2a2	; 0x1e2a2 <sprintf_P>
    bef0:	0a e6       	ldi	r16, 0x6A	; 106
    bef2:	17 ed       	ldi	r17, 0xD7	; 215
    bef4:	70 c0       	rjmp	.+224    	; 0xbfd6 <AppStartTasks+0x4ee>
				taskToLaunch = Power;

				break;

			case ATM:
				fileAllowed[i+1] = TRUE;
    bef6:	8f ef       	ldi	r24, 0xFF	; 255
    bef8:	f2 01       	movw	r30, r4
    befa:	80 83       	st	Z, r24

				flagOutput = 1;
				sprintf_P(descTaskMsg, PSTR("\r\nBoard ID=%02d, Task ID=%02d, Task Running is Teledyne ATM\r\n\r\n"), mainBoardID, i+1);
    befc:	2d b7       	in	r18, 0x3d	; 61
    befe:	3e b7       	in	r19, 0x3e	; 62
    bf00:	28 50       	subi	r18, 0x08	; 8
    bf02:	30 40       	sbci	r19, 0x00	; 0
    bf04:	0f b6       	in	r0, 0x3f	; 63
    bf06:	f8 94       	cli
    bf08:	3e bf       	out	0x3e, r19	; 62
    bf0a:	0f be       	out	0x3f, r0	; 63
    bf0c:	2d bf       	out	0x3d, r18	; 61
    bf0e:	ed b7       	in	r30, 0x3d	; 61
    bf10:	fe b7       	in	r31, 0x3e	; 62
    bf12:	31 96       	adiw	r30, 0x01	; 1
    bf14:	25 e0       	ldi	r18, 0x05	; 5
    bf16:	38 ee       	ldi	r19, 0xE8	; 232
    bf18:	ad b7       	in	r26, 0x3d	; 61
    bf1a:	be b7       	in	r27, 0x3e	; 62
    bf1c:	12 96       	adiw	r26, 0x02	; 2
    bf1e:	3c 93       	st	X, r19
    bf20:	2e 93       	st	-X, r18
    bf22:	11 97       	sbiw	r26, 0x01	; 1
    bf24:	80 ea       	ldi	r24, 0xA0	; 160
    bf26:	96 e0       	ldi	r25, 0x06	; 6
    bf28:	93 83       	std	Z+3, r25	; 0x03
    bf2a:	82 83       	std	Z+2, r24	; 0x02
    bf2c:	80 91 e6 03 	lds	r24, 0x03E6
    bf30:	84 83       	std	Z+4, r24	; 0x04
    bf32:	15 82       	std	Z+5, r1	; 0x05
    bf34:	77 82       	std	Z+7, r7	; 0x07
    bf36:	66 82       	std	Z+6, r6	; 0x06
    bf38:	0e 94 51 f1 	call	0x1e2a2	; 0x1e2a2 <sprintf_P>
    bf3c:	00 ea       	ldi	r16, 0xA0	; 160
    bf3e:	15 e1       	ldi	r17, 0x15	; 21
    bf40:	4a c0       	rjmp	.+148    	; 0xbfd6 <AppStartTasks+0x4ee>
				taskToLaunch = TeledyneATM88X;

				break;

			case CO2:
				fileAllowed[i+1] = TRUE;
    bf42:	8f ef       	ldi	r24, 0xFF	; 255
    bf44:	f2 01       	movw	r30, r4
    bf46:	80 83       	st	Z, r24

				flagOutput = 1;
				sprintf_P(descTaskMsg, PSTR("\r\nBoard ID=%02d, Task ID=%02d, Task Running is MBARI CO2 Sensor\r\n\r\n"), mainBoardID, i+1);
    bf48:	2d b7       	in	r18, 0x3d	; 61
    bf4a:	3e b7       	in	r19, 0x3e	; 62
    bf4c:	28 50       	subi	r18, 0x08	; 8
    bf4e:	30 40       	sbci	r19, 0x00	; 0
    bf50:	0f b6       	in	r0, 0x3f	; 63
    bf52:	f8 94       	cli
    bf54:	3e bf       	out	0x3e, r19	; 62
    bf56:	0f be       	out	0x3f, r0	; 63
    bf58:	2d bf       	out	0x3d, r18	; 61
    bf5a:	ed b7       	in	r30, 0x3d	; 61
    bf5c:	fe b7       	in	r31, 0x3e	; 62
    bf5e:	31 96       	adiw	r30, 0x01	; 1
    bf60:	25 e0       	ldi	r18, 0x05	; 5
    bf62:	38 ee       	ldi	r19, 0xE8	; 232
    bf64:	ad b7       	in	r26, 0x3d	; 61
    bf66:	be b7       	in	r27, 0x3e	; 62
    bf68:	12 96       	adiw	r26, 0x02	; 2
    bf6a:	3c 93       	st	X, r19
    bf6c:	2e 93       	st	-X, r18
    bf6e:	11 97       	sbiw	r26, 0x01	; 1
    bf70:	8c e5       	ldi	r24, 0x5C	; 92
    bf72:	96 e0       	ldi	r25, 0x06	; 6
    bf74:	93 83       	std	Z+3, r25	; 0x03
    bf76:	82 83       	std	Z+2, r24	; 0x02
    bf78:	80 91 e6 03 	lds	r24, 0x03E6
    bf7c:	84 83       	std	Z+4, r24	; 0x04
    bf7e:	15 82       	std	Z+5, r1	; 0x05
    bf80:	77 82       	std	Z+7, r7	; 0x07
    bf82:	66 82       	std	Z+6, r6	; 0x06
    bf84:	0e 94 51 f1 	call	0x1e2a2	; 0x1e2a2 <sprintf_P>
    bf88:	05 e0       	ldi	r16, 0x05	; 5
    bf8a:	1e e0       	ldi	r17, 0x0E	; 14
    bf8c:	24 c0       	rjmp	.+72     	; 0xbfd6 <AppStartTasks+0x4ee>
				taskToLaunch = MBARI_CO2;

				break;

			default:
				fileAllowed[i+1] = FALSE;
    bf8e:	f2 01       	movw	r30, r4
    bf90:	10 82       	st	Z, r1

				flagOutput = 1;
				sprintf_P(descTaskMsg, PSTR("\r\nBoard ID=%02d, Task ID=%02d, Task is not used/unknkown\r\n\r\n"), mainBoardID, i+1);
    bf92:	2d b7       	in	r18, 0x3d	; 61
    bf94:	3e b7       	in	r19, 0x3e	; 62
    bf96:	28 50       	subi	r18, 0x08	; 8
    bf98:	30 40       	sbci	r19, 0x00	; 0
    bf9a:	0f b6       	in	r0, 0x3f	; 63
    bf9c:	f8 94       	cli
    bf9e:	3e bf       	out	0x3e, r19	; 62
    bfa0:	0f be       	out	0x3f, r0	; 63
    bfa2:	2d bf       	out	0x3d, r18	; 61
    bfa4:	ed b7       	in	r30, 0x3d	; 61
    bfa6:	fe b7       	in	r31, 0x3e	; 62
    bfa8:	31 96       	adiw	r30, 0x01	; 1
    bfaa:	25 e0       	ldi	r18, 0x05	; 5
    bfac:	38 ee       	ldi	r19, 0xE8	; 232
    bfae:	ad b7       	in	r26, 0x3d	; 61
    bfb0:	be b7       	in	r27, 0x3e	; 62
    bfb2:	12 96       	adiw	r26, 0x02	; 2
    bfb4:	3c 93       	st	X, r19
    bfb6:	2e 93       	st	-X, r18
    bfb8:	11 97       	sbiw	r26, 0x01	; 1
    bfba:	8f e1       	ldi	r24, 0x1F	; 31
    bfbc:	96 e0       	ldi	r25, 0x06	; 6
    bfbe:	93 83       	std	Z+3, r25	; 0x03
    bfc0:	82 83       	std	Z+2, r24	; 0x02
    bfc2:	80 91 e6 03 	lds	r24, 0x03E6
    bfc6:	84 83       	std	Z+4, r24	; 0x04
    bfc8:	15 82       	std	Z+5, r1	; 0x05
    bfca:	77 82       	std	Z+7, r7	; 0x07
    bfcc:	66 82       	std	Z+6, r6	; 0x06
    bfce:	0e 94 51 f1 	call	0x1e2a2	; 0x1e2a2 <sprintf_P>
    bfd2:	00 e0       	ldi	r16, 0x00	; 0
    bfd4:	10 e0       	ldi	r17, 0x00	; 0
    bfd6:	ad b7       	in	r26, 0x3d	; 61
    bfd8:	be b7       	in	r27, 0x3e	; 62
    bfda:	18 96       	adiw	r26, 0x08	; 8
    bfdc:	0f b6       	in	r0, 0x3f	; 63
    bfde:	f8 94       	cli
    bfe0:	be bf       	out	0x3e, r27	; 62
    bfe2:	0f be       	out	0x3f, r0	; 63
    bfe4:	ad bf       	out	0x3d, r26	; 61
				break;
		}
								
								
		memcpy(dbgMsg, descTaskMsg, 80);
    bfe6:	a3 ef       	ldi	r26, 0xF3	; 243
    bfe8:	b8 e1       	ldi	r27, 0x18	; 24
    bfea:	e5 e0       	ldi	r30, 0x05	; 5
    bfec:	f8 ee       	ldi	r31, 0xE8	; 232
    bfee:	80 e5       	ldi	r24, 0x50	; 80
    bff0:	01 90       	ld	r0, Z+
    bff2:	0d 92       	st	X+, r0
    bff4:	81 50       	subi	r24, 0x01	; 1
    bff6:	e1 f7       	brne	.-8      	; 0xbff0 <AppStartTasks+0x508>
		SEND_MSG;
			
		if(flagOutput != 0)
		{
			descTaskInfo.pBuffer = descTaskMsg;
    bff8:	e5 e0       	ldi	r30, 0x05	; 5
    bffa:	f8 ee       	ldi	r31, 0xE8	; 232
    bffc:	f0 93 01 e8 	sts	0xE801, r31
    c000:	e0 93 00 e8 	sts	0xE800, r30
			descTaskInfo.lenBuffer = strlen(descTaskMsg);
    c004:	01 90       	ld	r0, Z+
    c006:	00 20       	and	r0, r0
    c008:	e9 f7       	brne	.-6      	; 0xc004 <AppStartTasks+0x51c>
    c00a:	31 97       	sbiw	r30, 0x01	; 1
    c00c:	e5 50       	subi	r30, 0x05	; 5
    c00e:	f8 4e       	sbci	r31, 0xE8	; 232
    c010:	e0 93 02 e8 	sts	0xE802, r30
			descTaskInfo.fmtBuffer = DEBUG_ASCII;
    c014:	10 92 03 e8 	sts	0xE803, r1
			descTaskInfo.dbgLevel = 5;
    c018:	85 e0       	ldi	r24, 0x05	; 5
    c01a:	80 93 04 e8 	sts	0xE804, r24

			SendDebugMsg(&descTaskInfo);
    c01e:	80 e0       	ldi	r24, 0x00	; 0
    c020:	98 ee       	ldi	r25, 0xE8	; 232
    c022:	0e 94 91 3c 	call	0x7922	; 0x7922 <SendDebugMsg>
			flagOutput = 0;
		}

		if(taskToLaunch!=NULL)
    c026:	01 15       	cp	r16, r1
    c028:	11 05       	cpc	r17, r1
    c02a:	09 f4       	brne	.+2      	; 0xc02e <AppStartTasks+0x546>
    c02c:	88 c0       	rjmp	.+272    	; 0xc13e <AppStartTasks+0x656>
		{
			taskInit[i].taskID = i+1;
    c02e:	a8 85       	ldd	r26, Y+8	; 0x08
    c030:	b9 85       	ldd	r27, Y+9	; 0x09
    c032:	6c 92       	st	X, r6
			taskInit[i].portNum = i+1;
    c034:	11 96       	adiw	r26, 0x01	; 1
    c036:	6c 92       	st	X, r6
    c038:	11 97       	sbiw	r26, 0x01	; 1
			taskInit[i].pBuf = &taskBuffers[i * TASK_BUF_SIZE];
    c03a:	ee 81       	ldd	r30, Y+6	; 0x06
    c03c:	ff 81       	ldd	r31, Y+7	; 0x07
    c03e:	15 96       	adiw	r26, 0x05	; 5
    c040:	fc 93       	st	X, r31
    c042:	ee 93       	st	-X, r30
    c044:	14 97       	sbiw	r26, 0x04	; 4
		
				
			switch(i)
    c046:	f1 e0       	ldi	r31, 0x01	; 1
    c048:	2f 16       	cp	r2, r31
    c04a:	31 04       	cpc	r3, r1
    c04c:	71 f1       	breq	.+92     	; 0xc0aa <AppStartTasks+0x5c2>
    c04e:	22 e0       	ldi	r18, 0x02	; 2
    c050:	22 16       	cp	r2, r18
    c052:	31 04       	cpc	r3, r1
    c054:	09 f4       	brne	.+2      	; 0xc058 <AppStartTasks+0x570>
    c056:	4a c0       	rjmp	.+148    	; 0xc0ec <AppStartTasks+0x604>
    c058:	21 14       	cp	r2, r1
    c05a:	31 04       	cpc	r3, r1
    c05c:	09 f0       	breq	.+2      	; 0xc060 <AppStartTasks+0x578>
    c05e:	6f c0       	rjmp	.+222    	; 0xc13e <AppStartTasks+0x656>
			{
				case 0:
					DEFINE_TASK_STACK_AND_LAUNCH(PM1, 512, taskToLaunch, (void*) &taskInit[i], 30 + (10 * i), 1003 + i, (void*) 0, OS_TASK_OPT_STK_CHK, oserr);
    c060:	0f 92       	push	r0
    c062:	0f 92       	push	r0
    c064:	81 e0       	ldi	r24, 0x01	; 1
    c066:	90 e0       	ldi	r25, 0x00	; 0
    c068:	ad b7       	in	r26, 0x3d	; 61
    c06a:	be b7       	in	r27, 0x3e	; 62
    c06c:	12 96       	adiw	r26, 0x02	; 2
    c06e:	9c 93       	st	X, r25
    c070:	8e 93       	st	-X, r24
    c072:	11 97       	sbiw	r26, 0x01	; 1
    c074:	c8 01       	movw	r24, r16
    c076:	6e ee       	ldi	r22, 0xEE	; 238
    c078:	77 ee       	ldi	r23, 0xE7	; 231
    c07a:	48 eb       	ldi	r20, 0xB8	; 184
    c07c:	5d e0       	ldi	r21, 0x0D	; 13
    c07e:	2e e1       	ldi	r18, 0x1E	; 30
    c080:	0b ee       	ldi	r16, 0xEB	; 235
    c082:	13 e0       	ldi	r17, 0x03	; 3
    c084:	39 eb       	ldi	r19, 0xB9	; 185
    c086:	e3 2e       	mov	r14, r19
    c088:	3b e0       	ldi	r19, 0x0B	; 11
    c08a:	f3 2e       	mov	r15, r19
    c08c:	a1 2c       	mov	r10, r1
    c08e:	b2 e0       	ldi	r27, 0x02	; 2
    c090:	bb 2e       	mov	r11, r27
    c092:	c1 2c       	mov	r12, r1
    c094:	d1 2c       	mov	r13, r1
    c096:	88 24       	eor	r8, r8
    c098:	99 24       	eor	r9, r9
    c09a:	0e 94 97 2c 	call	0x592e	; 0x592e <OSTaskCreateExt>
    c09e:	0f 90       	pop	r0
    c0a0:	0f 90       	pop	r0
    c0a2:	8e e1       	ldi	r24, 0x1E	; 30
    c0a4:	6f ef       	ldi	r22, 0xFF	; 255
    c0a6:	73 e0       	ldi	r23, 0x03	; 3
    c0a8:	45 c0       	rjmp	.+138    	; 0xc134 <AppStartTasks+0x64c>
					break;

				case 1:
					DEFINE_TASK_STACK_AND_LAUNCH(PM2, 512, taskToLaunch, (void*) &taskInit[i], 30 + (10 * i), 1003 + i, (void*) 0, OS_TASK_OPT_STK_CHK, oserr);
    c0aa:	0f 92       	push	r0
    c0ac:	0f 92       	push	r0
    c0ae:	ed b7       	in	r30, 0x3d	; 61
    c0b0:	fe b7       	in	r31, 0x3e	; 62
    c0b2:	32 82       	std	Z+2, r3	; 0x02
    c0b4:	21 82       	std	Z+1, r2	; 0x01
    c0b6:	c8 01       	movw	r24, r16
    c0b8:	64 ef       	ldi	r22, 0xF4	; 244
    c0ba:	77 ee       	ldi	r23, 0xE7	; 231
    c0bc:	48 eb       	ldi	r20, 0xB8	; 184
    c0be:	5b e0       	ldi	r21, 0x0B	; 11
    c0c0:	28 e2       	ldi	r18, 0x28	; 40
    c0c2:	0c ee       	ldi	r16, 0xEC	; 236
    c0c4:	13 e0       	ldi	r17, 0x03	; 3
    c0c6:	a9 eb       	ldi	r26, 0xB9	; 185
    c0c8:	ea 2e       	mov	r14, r26
    c0ca:	a9 e0       	ldi	r26, 0x09	; 9
    c0cc:	fa 2e       	mov	r15, r26
    c0ce:	a1 2c       	mov	r10, r1
    c0d0:	f2 e0       	ldi	r31, 0x02	; 2
    c0d2:	bf 2e       	mov	r11, r31
    c0d4:	c1 2c       	mov	r12, r1
    c0d6:	d1 2c       	mov	r13, r1
    c0d8:	88 24       	eor	r8, r8
    c0da:	99 24       	eor	r9, r9
    c0dc:	0e 94 97 2c 	call	0x592e	; 0x592e <OSTaskCreateExt>
    c0e0:	0f 90       	pop	r0
    c0e2:	0f 90       	pop	r0
    c0e4:	88 e2       	ldi	r24, 0x28	; 40
    c0e6:	63 e0       	ldi	r22, 0x03	; 3
    c0e8:	74 e0       	ldi	r23, 0x04	; 4
    c0ea:	24 c0       	rjmp	.+72     	; 0xc134 <AppStartTasks+0x64c>
					break;

				case 2:
					DEFINE_TASK_STACK_AND_LAUNCH(PM3, 512, taskToLaunch, (void*) &taskInit[i], 30 + (10 * i), 1003 + i, (void*) 0, OS_TASK_OPT_STK_CHK, oserr);
    c0ec:	0f 92       	push	r0
    c0ee:	0f 92       	push	r0
    c0f0:	81 e0       	ldi	r24, 0x01	; 1
    c0f2:	90 e0       	ldi	r25, 0x00	; 0
    c0f4:	ad b7       	in	r26, 0x3d	; 61
    c0f6:	be b7       	in	r27, 0x3e	; 62
    c0f8:	12 96       	adiw	r26, 0x02	; 2
    c0fa:	9c 93       	st	X, r25
    c0fc:	8e 93       	st	-X, r24
    c0fe:	11 97       	sbiw	r26, 0x01	; 1
    c100:	c8 01       	movw	r24, r16
    c102:	6a ef       	ldi	r22, 0xFA	; 250
    c104:	77 ee       	ldi	r23, 0xE7	; 231
    c106:	48 eb       	ldi	r20, 0xB8	; 184
    c108:	59 e0       	ldi	r21, 0x09	; 9
    c10a:	22 e3       	ldi	r18, 0x32	; 50
    c10c:	0d ee       	ldi	r16, 0xED	; 237
    c10e:	13 e0       	ldi	r17, 0x03	; 3
    c110:	e9 eb       	ldi	r30, 0xB9	; 185
    c112:	ee 2e       	mov	r14, r30
    c114:	e7 e0       	ldi	r30, 0x07	; 7
    c116:	fe 2e       	mov	r15, r30
    c118:	a1 2c       	mov	r10, r1
    c11a:	32 e0       	ldi	r19, 0x02	; 2
    c11c:	b3 2e       	mov	r11, r19
    c11e:	c1 2c       	mov	r12, r1
    c120:	d1 2c       	mov	r13, r1
    c122:	88 24       	eor	r8, r8
    c124:	99 24       	eor	r9, r9
    c126:	0e 94 97 2c 	call	0x592e	; 0x592e <OSTaskCreateExt>
    c12a:	0f 90       	pop	r0
    c12c:	0f 90       	pop	r0
    c12e:	82 e3       	ldi	r24, 0x32	; 50
    c130:	67 e0       	ldi	r22, 0x07	; 7
    c132:	74 e0       	ldi	r23, 0x04	; 4
    c134:	ae 01       	movw	r20, r28
    c136:	4f 5f       	subi	r20, 0xFF	; 255
    c138:	5f 4f       	sbci	r21, 0xFF	; 255
    c13a:	0e 94 1f 2c 	call	0x583e	; 0x583e <OSTaskNameSet>

	Float_Comm_Init();

	DEFINE_TASK_STACK_AND_LAUNCH(FloatComm, 512, FloatComms, (void*) 0, 20, 1002, (void*) 0, OS_TASK_OPT_STK_CHK, oserr);

	for(int i=0; i<3; i++)
    c13e:	08 94       	sec
    c140:	21 1c       	adc	r2, r1
    c142:	31 1c       	adc	r3, r1
    c144:	08 94       	sec
    c146:	61 1c       	adc	r6, r1
    c148:	71 1c       	adc	r7, r1
    c14a:	e8 85       	ldd	r30, Y+8	; 0x08
    c14c:	f9 85       	ldd	r31, Y+9	; 0x09
    c14e:	36 96       	adiw	r30, 0x06	; 6
    c150:	f9 87       	std	Y+9, r31	; 0x09
    c152:	e8 87       	std	Y+8, r30	; 0x08
    c154:	2e 81       	ldd	r18, Y+6	; 0x06
    c156:	3f 81       	ldd	r19, Y+7	; 0x07
    c158:	20 56       	subi	r18, 0x60	; 96
    c15a:	30 4f       	sbci	r19, 0xF0	; 240
    c15c:	3f 83       	std	Y+7, r19	; 0x07
    c15e:	2e 83       	std	Y+6, r18	; 0x06
    c160:	08 94       	sec
    c162:	41 1c       	adc	r4, r1
    c164:	51 1c       	adc	r5, r1
    c166:	33 e0       	ldi	r19, 0x03	; 3
    c168:	23 16       	cp	r2, r19
    c16a:	31 04       	cpc	r3, r1
    c16c:	09 f0       	breq	.+2      	; 0xc170 <AppStartTasks+0x688>
    c16e:	88 cd       	rjmp	.-1264   	; 0xbc80 <AppStartTasks+0x198>

		}
	}	

	// I'm going to wait for 5 minutes and then clear the "tentative" flag
	OSTimeDlyHMSM(0,5,0,0);
    c170:	80 e0       	ldi	r24, 0x00	; 0
    c172:	65 e0       	ldi	r22, 0x05	; 5
    c174:	40 e0       	ldi	r20, 0x00	; 0
    c176:	20 e0       	ldi	r18, 0x00	; 0
    c178:	30 e0       	ldi	r19, 0x00	; 0
    c17a:	0e 94 2a 2e 	call	0x5c54	; 0x5c54 <OSTimeDlyHMSM>

	extern BOOL handledStatusRequest;

	if (handledStatusRequest)
    c17e:	80 91 97 07 	lds	r24, 0x0797
    c182:	88 23       	and	r24, r24
    c184:	19 f0       	breq	.+6      	; 0xc18c <AppStartTasks+0x6a4>
		BootClearTentativeImage();
    c186:	0e 94 7f eb 	call	0x1d6fe	; 0x1d6fe <BootClearTentativeImage>
    c18a:	07 c0       	rjmp	.+14     	; 0xc19a <AppStartTasks+0x6b2>
	else if (BootImageIsTentative())
    c18c:	0e 94 1c eb 	call	0x1d638	; 0x1d638 <BootImageIsTentative>
    c190:	88 23       	and	r24, r24
    c192:	19 f0       	breq	.+6      	; 0xc19a <AppStartTasks+0x6b2>
		BootRestart(FALSE);
    c194:	80 e0       	ldi	r24, 0x00	; 0
    c196:	0e 94 58 eb 	call	0x1d6b0	; 0x1d6b0 <BootRestart>

	return (AppStartContinuationTask_t)0;
}
    c19a:	80 e0       	ldi	r24, 0x00	; 0
    c19c:	90 e0       	ldi	r25, 0x00	; 0
    c19e:	29 96       	adiw	r28, 0x09	; 9
    c1a0:	0f b6       	in	r0, 0x3f	; 63
    c1a2:	f8 94       	cli
    c1a4:	de bf       	out	0x3e, r29	; 62
    c1a6:	0f be       	out	0x3f, r0	; 63
    c1a8:	cd bf       	out	0x3d, r28	; 61
    c1aa:	cf 91       	pop	r28
    c1ac:	df 91       	pop	r29
    c1ae:	1f 91       	pop	r17
    c1b0:	0f 91       	pop	r16
    c1b2:	ff 90       	pop	r15
    c1b4:	ef 90       	pop	r14
    c1b6:	df 90       	pop	r13
    c1b8:	cf 90       	pop	r12
    c1ba:	bf 90       	pop	r11
    c1bc:	af 90       	pop	r10
    c1be:	9f 90       	pop	r9
    c1c0:	8f 90       	pop	r8
    c1c2:	7f 90       	pop	r7
    c1c4:	6f 90       	pop	r6
    c1c6:	5f 90       	pop	r5
    c1c8:	4f 90       	pop	r4
    c1ca:	3f 90       	pop	r3
    c1cc:	2f 90       	pop	r2
    c1ce:	08 95       	ret

0000c1d0 <AppInit>:

char taskBuffers[TASK_BUF_SIZE * NUM_TASK_BUFS] __attribute__((section(".xdata")));

void AppInit(void)
{
	MCUSR = 0;
    c1d0:	14 be       	out	0x34, r1	; 52
	wdt_disable();
    c1d2:	88 e1       	ldi	r24, 0x18	; 24
    c1d4:	0f b6       	in	r0, 0x3f	; 63
    c1d6:	f8 94       	cli
    c1d8:	80 93 60 00 	sts	0x0060, r24
    c1dc:	10 92 60 00 	sts	0x0060, r1
    c1e0:	0f be       	out	0x3f, r0	; 63

	//Port A -- If External Memory Enabled, It Overrides Settings Here
	PORTA = 0x00;	//Disable Pull-Ups
    c1e2:	12 b8       	out	0x02, r1	; 2
	DDRA = 0x00;	//Set All Pin to Input
    c1e4:	11 b8       	out	0x01, r1	; 1


	//Port B -- If SPI enabled, It Overrides Pins 3:0, Pins 7:0 are PCINT 7:0
	PORTB = 0x00;	//Disable Pull-Ups
    c1e6:	15 b8       	out	0x05, r1	; 5
	DDRB = 0x00;	//Set All Pin to Input
    c1e8:	14 b8       	out	0x04, r1	; 4

	//Port C -- If External Memory Enabled, It Overrides Settings Here
	PORTC = 0x00;	//Disable Pull-Ups
    c1ea:	18 b8       	out	0x08, r1	; 8
	DDRC = 0x00;	//Set All Pin to Input
    c1ec:	17 b8       	out	0x07, r1	; 7

	//Port D -- If USART1 is Enabled, it overrides Pins 3:2, If TWI is enabled, it
	//Overrides Pins 1:0, Pins 3:0 are also INT 3:0
	PORTD = 0x00;	//Disable Pull-Ups
    c1ee:	1b b8       	out	0x0b, r1	; 11
	DDRD = 0x00;	//Set All Pin to Input
    c1f0:	1a b8       	out	0x0a, r1	; 10

	//Port E -- If USART0 is Enabled, it overrides Pins 1:0, Pins 7:4 are INT 7:4, Pin0 is PCINT8
	PORTE = 0x00;	//Disable Pull-Ups
    c1f2:	1e b8       	out	0x0e, r1	; 14
	DDRE = 0x00;	//Set All Pin to Input
    c1f4:	1d b8       	out	0x0d, r1	; 13

	//Port F -- If JTAG is enabled, it overrides Pins 7:4, Pins 7:0 are ADC inputs 7:0
	PORTF = 0x00;	//Disable Pull-Ups
    c1f6:	11 ba       	out	0x11, r1	; 17
	DDRF = 0x00;	//Set All Pin to Input
    c1f8:	10 ba       	out	0x10, r1	; 16

	//Port G -- Only 6 Pins on Port G, 32KHz Oscillator Enabled overrides Pins 4:3
	// If External Memory is enabled, it overrides Pins 2:0
	PORTG = 0x00;	//Disable Pull-Ups
    c1fa:	14 ba       	out	0x14, r1	; 20
	DDRG = 0x00;	//Set All Pin to Input
    c1fc:	13 ba       	out	0x13, r1	; 19

	//Port H -- If USART2 is Enabled, it overrides Pins 1:0
	PORTH = 0x00;	//Disable Pull-Ups
    c1fe:	10 92 02 01 	sts	0x0102, r1
//		DDRH = 0x00;	//Set All Pin to Input

	//Port J -- If USART3 is Enabled, it overrides Pins 1:0, Pins 6:0 are PCINT 15:9
	PORTJ = 0x00;	//Disable Pull-Ups
    c202:	10 92 05 01 	sts	0x0105, r1
	DDRJ = 0x00;	//Set All Pin to Input
    c206:	10 92 04 01 	sts	0x0104, r1

	//Port K -- Pins 7:0 are ADC INputs 7:0, Pins 7:0 are PCINT 23:16
	PORTK = 0x00;	//Disable Pull-Ups
    c20a:	10 92 08 01 	sts	0x0108, r1
	DDRK = 0x00;	//Set All Pin to Input
    c20e:	10 92 07 01 	sts	0x0107, r1

	//Port L 
	PORTL = 0x00;	//Disable Pull-Ups
    c212:	10 92 0b 01 	sts	0x010B, r1
	DDRL = 0x00;	//Set All Pin to Input
    c216:	10 92 0a 01 	sts	0x010A, r1

	power_all_disable();
    c21a:	e4 e6       	ldi	r30, 0x64	; 100
    c21c:	f0 e0       	ldi	r31, 0x00	; 0
    c21e:	80 81       	ld	r24, Z
    c220:	8f 6e       	ori	r24, 0xEF	; 239
    c222:	80 83       	st	Z, r24
    c224:	e5 e6       	ldi	r30, 0x65	; 101
    c226:	f0 e0       	ldi	r31, 0x00	; 0
    c228:	80 81       	ld	r24, Z
    c22a:	8f 63       	ori	r24, 0x3F	; 63
    c22c:	80 83       	st	Z, r24
	OStmrDefault();
    c22e:	0e 94 de 33 	call	0x67bc	; 0x67bc <OStmrDefault>
	OSuartDefaultState();
    c232:	0e 94 cb 30 	call	0x6196	; 0x6196 <OSuartDefaultState>
	BootCheckProgramImage();
    c236:	0e 94 48 ec 	call	0x1d890	; 0x1d890 <BootCheckProgramImage>
	restartCause_Watchdog = BootCausedByWatchdog();
    c23a:	0e 94 2e eb 	call	0x1d65c	; 0x1d65c <BootCausedByWatchdog>
    c23e:	80 93 50 19 	sts	0x1950, r24
//	OSwatchdogInit(WDTRIG_CONFIG);
//#endif
#if SPIDEBUG_ENABLED != 0
	OSspiDebugInit();
#endif
}
    c242:	08 95       	ret

0000c244 <SerialPortPassThroughMBARI_CO2>:
	return retval;
}

void SerialPortPassThroughMBARI_CO2(uint8_t port)
{
	readyForSerialPassThru = TRUE;
    c244:	8f ef       	ldi	r24, 0xFF	; 255
    c246:	80 93 9e a1 	sts	0xA19E, r24

	while(1)
	{
		OSTimeDlyHMSM(1,0,0,0);
    c24a:	81 e0       	ldi	r24, 0x01	; 1
    c24c:	60 e0       	ldi	r22, 0x00	; 0
    c24e:	40 e0       	ldi	r20, 0x00	; 0
    c250:	20 e0       	ldi	r18, 0x00	; 0
    c252:	30 e0       	ldi	r19, 0x00	; 0
    c254:	0e 94 2a 2e 	call	0x5c54	; 0x5c54 <OSTimeDlyHMSM>
    c258:	f8 cf       	rjmp	.-16     	; 0xc24a <SerialPortPassThroughMBARI_CO2+0x6>

0000c25a <MBARI_CO2_PowerDown>:
	return retval;

}

uint8_t MBARI_CO2_PowerDown(PMBARI_CO2_TASK pTaskInfo)
{
    c25a:	cf 93       	push	r28
    c25c:	df 93       	push	r29
    c25e:	ec 01       	movw	r28, r24
	uint8_t retval = EnablePIBModule(pTaskInfo->portNum, FALSE, FALSE);
    c260:	89 81       	ldd	r24, Y+1	; 0x01
    c262:	60 e0       	ldi	r22, 0x00	; 0
    c264:	40 e0       	ldi	r20, 0x00	; 0
    c266:	0e 94 a2 38 	call	0x7144	; 0x7144 <EnablePIBModule>
    c26a:	28 2f       	mov	r18, r24
	
	if (retval == SUCCESS)
    c26c:	8f 3f       	cpi	r24, 0xFF	; 255
    c26e:	d9 f4       	brne	.+54     	; 0xc2a6 <MBARI_CO2_PowerDown+0x4c>
	{
		pTaskInfo->pBuf->isPowered = FALSE;
    c270:	ec 81       	ldd	r30, Y+4	; 0x04
    c272:	fd 81       	ldd	r31, Y+5	; 0x05
    c274:	e0 50       	subi	r30, 0x00	; 0
    c276:	fb 4f       	sbci	r31, 0xFB	; 251
    c278:	10 82       	st	Z, r1
		pTaskInfo->pBuf->isSampling = FALSE;
    c27a:	ec 81       	ldd	r30, Y+4	; 0x04
    c27c:	fd 81       	ldd	r31, Y+5	; 0x05
    c27e:	ef 5f       	subi	r30, 0xFF	; 255
    c280:	fa 4f       	sbci	r31, 0xFA	; 250
    c282:	10 82       	st	Z, r1

		pTaskInfo->pBuf->pendingPowerDown = FALSE;
    c284:	ec 81       	ldd	r30, Y+4	; 0x04
    c286:	fd 81       	ldd	r31, Y+5	; 0x05
    c288:	ee 5f       	subi	r30, 0xFE	; 254
    c28a:	fa 4f       	sbci	r31, 0xFA	; 250
    c28c:	10 82       	st	Z, r1
		pTaskInfo->pBuf->powerDownTime = -1;
    c28e:	ec 81       	ldd	r30, Y+4	; 0x04
    c290:	fd 81       	ldd	r31, Y+5	; 0x05
    c292:	ed 5f       	subi	r30, 0xFD	; 253
    c294:	fa 4f       	sbci	r31, 0xFA	; 250
    c296:	8f ef       	ldi	r24, 0xFF	; 255
    c298:	9f ef       	ldi	r25, 0xFF	; 255
    c29a:	af ef       	ldi	r26, 0xFF	; 255
    c29c:	bf ef       	ldi	r27, 0xFF	; 255
    c29e:	80 83       	st	Z, r24
    c2a0:	91 83       	std	Z+1, r25	; 0x01
    c2a2:	a2 83       	std	Z+2, r26	; 0x02
    c2a4:	b3 83       	std	Z+3, r27	; 0x03
	}

	return retval;
}
    c2a6:	82 2f       	mov	r24, r18
    c2a8:	df 91       	pop	r29
    c2aa:	cf 91       	pop	r28
    c2ac:	08 95       	ret

0000c2ae <MBARI_CO2_Rx>:

	return retval;
}

uint8_t MBARI_CO2_Rx(PMBARI_CO2_TASK pTaskInfo)
{
    c2ae:	cf 92       	push	r12
    c2b0:	df 92       	push	r13
    c2b2:	ef 92       	push	r14
    c2b4:	ff 92       	push	r15
    c2b6:	1f 93       	push	r17
    c2b8:	df 93       	push	r29
    c2ba:	cf 93       	push	r28
    c2bc:	0f 92       	push	r0
    c2be:	cd b7       	in	r28, 0x3d	; 61
    c2c0:	de b7       	in	r29, 0x3e	; 62
    c2c2:	7c 01       	movw	r14, r24
	uint8_t retval = FAIL;
	uint8_t err = 0;
    c2c4:	19 82       	std	Y+1, r1	; 0x01
    c2c6:	10 e0       	ldi	r17, 0x00	; 0
	
	uint8_t i = 0;

	while(i < sizeof(pTaskInfo->pBuf->bufferRx))
	{
		char c = OSuartGetCharWait(pTaskInfo->portNum, 64, &err);
    c2c8:	6e 01       	movw	r12, r28
    c2ca:	08 94       	sec
    c2cc:	c1 1c       	adc	r12, r1
    c2ce:	d1 1c       	adc	r13, r1
    c2d0:	d7 01       	movw	r26, r14
    c2d2:	11 96       	adiw	r26, 0x01	; 1
    c2d4:	8c 91       	ld	r24, X
    c2d6:	60 e4       	ldi	r22, 0x40	; 64
    c2d8:	70 e0       	ldi	r23, 0x00	; 0
    c2da:	a6 01       	movw	r20, r12
    c2dc:	0e 94 b8 32 	call	0x6570	; 0x6570 <OSuartGetCharWait>
    c2e0:	98 2f       	mov	r25, r24

		if (err != OS_ERR_NONE)
    c2e2:	89 81       	ldd	r24, Y+1	; 0x01
    c2e4:	88 23       	and	r24, r24
    c2e6:	51 f0       	breq	.+20     	; 0xc2fc <MBARI_CO2_Rx+0x4e>
		pTaskInfo->pBuf->bufferRx[i++] = c;

	}

	return retval;
}
    c2e8:	8f ef       	ldi	r24, 0xFF	; 255
    c2ea:	0f 90       	pop	r0
    c2ec:	cf 91       	pop	r28
    c2ee:	df 91       	pop	r29
    c2f0:	1f 91       	pop	r17
    c2f2:	ff 90       	pop	r15
    c2f4:	ef 90       	pop	r14
    c2f6:	df 90       	pop	r13
    c2f8:	cf 90       	pop	r12
    c2fa:	08 95       	ret
		char c = OSuartGetCharWait(pTaskInfo->portNum, 64, &err);

		if (err != OS_ERR_NONE)
			return SUCCESS;

		pTaskInfo->pBuf->bufferRx[i++] = c;
    c2fc:	d7 01       	movw	r26, r14
    c2fe:	14 96       	adiw	r26, 0x04	; 4
    c300:	ed 91       	ld	r30, X+
    c302:	fc 91       	ld	r31, X
    c304:	15 97       	sbiw	r26, 0x05	; 5
    c306:	e1 0f       	add	r30, r17
    c308:	f1 1d       	adc	r31, r1
    c30a:	e0 50       	subi	r30, 0x00	; 0
    c30c:	ff 4f       	sbci	r31, 0xFF	; 255
    c30e:	90 83       	st	Z, r25
    c310:	1f 5f       	subi	r17, 0xFF	; 255
    c312:	de cf       	rjmp	.-68     	; 0xc2d0 <MBARI_CO2_Rx+0x22>

0000c314 <MBARI_CO2_QueueConsoleResponse>:
	return;

}

void MBARI_CO2_QueueConsoleResponse(PMBARI_CO2_TASK pTaskInfo)
{
    c314:	ef 92       	push	r14
    c316:	ff 92       	push	r15
    c318:	0f 93       	push	r16
    c31a:	1f 93       	push	r17
    c31c:	df 93       	push	r29
    c31e:	cf 93       	push	r28
    c320:	0f 92       	push	r0
    c322:	cd b7       	in	r28, 0x3d	; 61
    c324:	de b7       	in	r29, 0x3e	; 62
    c326:	7c 01       	movw	r14, r24
	PCONSOLE_ACK_XMIT_2 pReport;
	uint8_t err = 0;
    c328:	19 82       	std	Y+1, r1	; 0x01
	char* pData;

	OSMutexPend(pMutexFloatQueue, INFINITE, &err);
    c32a:	80 91 51 19 	lds	r24, 0x1951
    c32e:	90 91 52 19 	lds	r25, 0x1952
    c332:	60 e0       	ldi	r22, 0x00	; 0
    c334:	70 e0       	ldi	r23, 0x00	; 0
    c336:	ae 01       	movw	r20, r28
    c338:	4f 5f       	subi	r20, 0xFF	; 255
    c33a:	5f 4f       	sbci	r21, 0xFF	; 255
    c33c:	0e 94 c2 28 	call	0x5184	; 0x5184 <OSMutexPend>

	pReport = (PCONSOLE_ACK_XMIT_2)&(txFloatAck[headFloatAckTx]);
    c340:	80 91 95 07 	lds	r24, 0x0795
    c344:	90 e0       	ldi	r25, 0x00	; 0
    c346:	26 e3       	ldi	r18, 0x36	; 54
    c348:	31 e0       	ldi	r19, 0x01	; 1
    c34a:	82 9f       	mul	r24, r18
    c34c:	80 01       	movw	r16, r0
    c34e:	83 9f       	mul	r24, r19
    c350:	10 0d       	add	r17, r0
    c352:	92 9f       	mul	r25, r18
    c354:	10 0d       	add	r17, r0
    c356:	11 24       	eor	r1, r1
    c358:	03 5f       	subi	r16, 0xF3	; 243
    c35a:	1c 44       	sbci	r17, 0x4C	; 76
	pData = (char*)pReport;

	pReport->comm.headers.destination = FLOAT_TASK_FORWARD_MESSAGE;		//pTaskInfo->pBuf->responseInfo.source;
    c35c:	80 e2       	ldi	r24, 0x20	; 32
    c35e:	90 e0       	ldi	r25, 0x00	; 0
    c360:	d8 01       	movw	r26, r16
    c362:	13 96       	adiw	r26, 0x03	; 3
    c364:	9c 93       	st	X, r25
    c366:	8e 93       	st	-X, r24
    c368:	12 97       	sbiw	r26, 0x02	; 2

	pReport->comm.fwdInfo.msgFormat = MSG_FORMAT_SHIP_TO_SHORE;
    c36a:	82 e0       	ldi	r24, 0x02	; 2
    c36c:	1c 96       	adiw	r26, 0x0c	; 12
    c36e:	8c 93       	st	X, r24
	pReport->comm.fwdInfo.destination = pTaskInfo->pBuf->responseInfo.source;
    c370:	d7 01       	movw	r26, r14
    c372:	14 96       	adiw	r26, 0x04	; 4
    c374:	ed 91       	ld	r30, X+
    c376:	fc 91       	ld	r31, X
    c378:	15 97       	sbiw	r26, 0x05	; 5
    c37a:	e2 5e       	subi	r30, 0xE2	; 226
    c37c:	f9 4f       	sbci	r31, 0xF9	; 249
    c37e:	81 91       	ld	r24, Z+
    c380:	91 91       	ld	r25, Z+
    c382:	d8 01       	movw	r26, r16
    c384:	1e 96       	adiw	r26, 0x0e	; 14
    c386:	9c 93       	st	X, r25
    c388:	8e 93       	st	-X, r24
    c38a:	1d 97       	sbiw	r26, 0x0d	; 13
	pReport->comm.fwdInfo.source = mainTaskAddress | pTaskInfo->taskID;
    c38c:	d7 01       	movw	r26, r14
    c38e:	8c 91       	ld	r24, X
    c390:	90 e0       	ldi	r25, 0x00	; 0
    c392:	20 91 e4 03 	lds	r18, 0x03E4
    c396:	30 91 e5 03 	lds	r19, 0x03E5
    c39a:	82 2b       	or	r24, r18
    c39c:	93 2b       	or	r25, r19
    c39e:	d8 01       	movw	r26, r16
    c3a0:	50 96       	adiw	r26, 0x10	; 16
    c3a2:	9c 93       	st	X, r25
    c3a4:	8e 93       	st	-X, r24
    c3a6:	1f 97       	sbiw	r26, 0x0f	; 15

	if(pTaskInfo->pBuf->responseInfo.status < CONSOLE_RESPONSE_UNKNOWN_CMD)
    c3a8:	20 81       	ld	r18, Z
    c3aa:	e0 52       	subi	r30, 0x20	; 32
    c3ac:	f6 40       	sbci	r31, 0x06	; 6
    c3ae:	2a 30       	cpi	r18, 0x0A	; 10
    c3b0:	18 f5       	brcc	.+70     	; 0xc3f8 <MBARI_CO2_QueueConsoleResponse+0xe4>
	{
		pReport->comm.headers.length = sizeof(PIB_DATA_FORWARD_MESSAGE) + sizeof(CONSOLE_ACK) + pTaskInfo->pBuf->responseInfo.length + CRC16_SIZE;
    c3b2:	ee 5d       	subi	r30, 0xDE	; 222
    c3b4:	f9 4f       	sbci	r31, 0xF9	; 249
    c3b6:	40 81       	ld	r20, Z
    c3b8:	50 e0       	ldi	r21, 0x00	; 0
    c3ba:	42 5e       	subi	r20, 0xE2	; 226
    c3bc:	5f 4f       	sbci	r21, 0xFF	; 255
    c3be:	11 96       	adiw	r26, 0x01	; 1
    c3c0:	5c 93       	st	X, r21
    c3c2:	4e 93       	st	-X, r20
    c3c4:	4e 51       	subi	r20, 0x1E	; 30
    c3c6:	50 40       	sbci	r21, 0x00	; 0

		pReport->comm.iridiumInfo.headerICD.type = ACK_CONSOLE_DATA;
    c3c8:	8d e3       	ldi	r24, 0x3D	; 61
    c3ca:	51 96       	adiw	r26, 0x11	; 17
    c3cc:	8c 93       	st	X, r24
    c3ce:	51 97       	sbiw	r26, 0x11	; 17

		pReport->consoleAck.len = pTaskInfo->pBuf->responseInfo.length;
    c3d0:	5b 96       	adiw	r26, 0x1b	; 27
    c3d2:	5c 93       	st	X, r21
    c3d4:	4e 93       	st	-X, r20
    c3d6:	5a 97       	sbiw	r26, 0x1a	; 26
		pReport->consoleAck.disposition = pTaskInfo->pBuf->responseInfo.status;
    c3d8:	59 96       	adiw	r26, 0x19	; 25
    c3da:	2c 93       	st	X, r18
    c3dc:	59 97       	sbiw	r26, 0x19	; 25
		pReport->consoleAck.format = pTaskInfo->pBuf->responseInfo.format;
    c3de:	82 91       	ld	r24, -Z
    c3e0:	58 96       	adiw	r26, 0x18	; 24
    c3e2:	8c 93       	st	X, r24
		pData = pData + sizeof(PIB_DATA_FORWARD_MESSAGE) + sizeof(CONSOLE_ACK);
		memcpy(pData, pTaskInfo->pBuf->consoleResponse, pTaskInfo->pBuf->responseInfo.length);
    c3e4:	98 01       	movw	r18, r16
    c3e6:	24 5e       	subi	r18, 0xE4	; 228
    c3e8:	3f 4f       	sbci	r19, 0xFF	; 255
    c3ea:	36 96       	adiw	r30, 0x06	; 6
    c3ec:	c9 01       	movw	r24, r18
    c3ee:	bf 01       	movw	r22, r30
    c3f0:	50 e0       	ldi	r21, 0x00	; 0
    c3f2:	0e 94 1c f0 	call	0x1e038	; 0x1e038 <memcpy>
    c3f6:	0c c0       	rjmp	.+24     	; 0xc410 <MBARI_CO2_QueueConsoleResponse+0xfc>
	}
	else
	{
		pReport->comm.headers.length = sizeof(PIB_DATA_FORWARD_MESSAGE) + sizeof(CONSOLE_NACK) + CRC16_SIZE;
    c3f8:	8d e1       	ldi	r24, 0x1D	; 29
    c3fa:	90 e0       	ldi	r25, 0x00	; 0
    c3fc:	f8 01       	movw	r30, r16
    c3fe:	91 83       	std	Z+1, r25	; 0x01
    c400:	80 83       	st	Z, r24
		pReport->comm.iridiumInfo.headerICD.type = NACK_CONSOLE_DATA;
    c402:	86 e2       	ldi	r24, 0x26	; 38
    c404:	81 8b       	std	Z+17, r24	; 0x11
		pReport->consoleNack.numDispositions = 1;
    c406:	81 e0       	ldi	r24, 0x01	; 1
    c408:	90 e0       	ldi	r25, 0x00	; 0
    c40a:	91 8f       	std	Z+25, r25	; 0x19
    c40c:	80 8f       	std	Z+24, r24	; 0x18
		pReport->consoleNack.disposition[0] = pTaskInfo->pBuf->responseInfo.status;
    c40e:	22 8f       	std	Z+26, r18	; 0x1a
	}

	pReport->comm.iridiumInfo.headerICD.packetID = pTaskInfo->pBuf->responseInfo.id;
    c410:	d7 01       	movw	r26, r14
    c412:	14 96       	adiw	r26, 0x04	; 4
    c414:	ed 91       	ld	r30, X+
    c416:	fc 91       	ld	r31, X
    c418:	15 97       	sbiw	r26, 0x05	; 5
    c41a:	ed 5d       	subi	r30, 0xDD	; 221
    c41c:	f9 4f       	sbci	r31, 0xF9	; 249
    c41e:	80 81       	ld	r24, Z
    c420:	91 81       	ldd	r25, Z+1	; 0x01
    c422:	a2 81       	ldd	r26, Z+2	; 0x02
    c424:	b3 81       	ldd	r27, Z+3	; 0x03
    c426:	f8 01       	movw	r30, r16
    c428:	82 8b       	std	Z+18, r24	; 0x12
    c42a:	93 8b       	std	Z+19, r25	; 0x13
    c42c:	a4 8b       	std	Z+20, r26	; 0x14
    c42e:	b5 8b       	std	Z+21, r27	; 0x15
	pReport->comm.iridiumInfo.headerICD.size = pReport->comm.headers.length - sizeof(PIB_DATA_FORWARD_MESSAGE) - CRC16_SIZE;
    c430:	80 81       	ld	r24, Z
    c432:	91 81       	ldd	r25, Z+1	; 0x01
    c434:	4a 97       	sbiw	r24, 0x1a	; 26
    c436:	97 8b       	std	Z+23, r25	; 0x17
    c438:	86 8b       	std	Z+22, r24	; 0x16


	(headFloatAckTx < MAX_ACK_BUFFERS - 1) ? (headFloatAckTx++) : (headFloatAckTx = 0);
    c43a:	80 91 95 07 	lds	r24, 0x0795
    c43e:	83 30       	cpi	r24, 0x03	; 3
    c440:	20 f4       	brcc	.+8      	; 0xc44a <MBARI_CO2_QueueConsoleResponse+0x136>
    c442:	8f 5f       	subi	r24, 0xFF	; 255
    c444:	80 93 95 07 	sts	0x0795, r24
    c448:	02 c0       	rjmp	.+4      	; 0xc44e <MBARI_CO2_QueueConsoleResponse+0x13a>
    c44a:	10 92 95 07 	sts	0x0795, r1

	if(headFloatAckTx == tailFloatAckTx)
    c44e:	90 91 95 07 	lds	r25, 0x0795
    c452:	80 91 96 07 	lds	r24, 0x0796
    c456:	98 17       	cp	r25, r24
    c458:	41 f4       	brne	.+16     	; 0xc46a <MBARI_CO2_QueueConsoleResponse+0x156>
	{
		(tailFloatAckTx < MAX_ACK_BUFFERS - 1) ? (tailFloatAckTx++) : (tailFloatAckTx = 0);
    c45a:	93 30       	cpi	r25, 0x03	; 3
    c45c:	20 f4       	brcc	.+8      	; 0xc466 <MBARI_CO2_QueueConsoleResponse+0x152>
    c45e:	9f 5f       	subi	r25, 0xFF	; 255
    c460:	90 93 96 07 	sts	0x0796, r25
    c464:	02 c0       	rjmp	.+4      	; 0xc46a <MBARI_CO2_QueueConsoleResponse+0x156>
    c466:	10 92 96 07 	sts	0x0796, r1
	}

	OSMutexPost(pMutexFloatQueue);
    c46a:	80 91 51 19 	lds	r24, 0x1951
    c46e:	90 91 52 19 	lds	r25, 0x1952
    c472:	0e 94 36 27 	call	0x4e6c	; 0x4e6c <OSMutexPost>

	return;
}
    c476:	0f 90       	pop	r0
    c478:	cf 91       	pop	r28
    c47a:	df 91       	pop	r29
    c47c:	1f 91       	pop	r17
    c47e:	0f 91       	pop	r16
    c480:	ff 90       	pop	r15
    c482:	ef 90       	pop	r14
    c484:	08 95       	ret

0000c486 <MBARI_CO2_ReportXmit>:

	return retval;
}

uint8_t MBARI_CO2_ReportXmit(PMBARI_CO2_TASK pTaskInfo)
{
    c486:	ef 92       	push	r14
    c488:	ff 92       	push	r15
    c48a:	0f 93       	push	r16
    c48c:	1f 93       	push	r17
    c48e:	df 93       	push	r29
    c490:	cf 93       	push	r28
    c492:	0f 92       	push	r0
    c494:	cd b7       	in	r28, 0x3d	; 61
    c496:	de b7       	in	r29, 0x3e	; 62
    c498:	7c 01       	movw	r14, r24
	uint8_t err = 0;
    c49a:	19 82       	std	Y+1, r1	; 0x01
	PMBARI_CO2_XMIT pReport = NULL;

	OSMutexPend(pMutexFloatQueue, INFINITE, &err);
    c49c:	80 91 51 19 	lds	r24, 0x1951
    c4a0:	90 91 52 19 	lds	r25, 0x1952
    c4a4:	60 e0       	ldi	r22, 0x00	; 0
    c4a6:	70 e0       	ldi	r23, 0x00	; 0
    c4a8:	ae 01       	movw	r20, r28
    c4aa:	4f 5f       	subi	r20, 0xFF	; 255
    c4ac:	5f 4f       	sbci	r21, 0xFF	; 255
    c4ae:	0e 94 c2 28 	call	0x5184	; 0x5184 <OSMutexPend>

	pReport = (PMBARI_CO2_XMIT)&(txFloatData[headFloatTx]);
    c4b2:	80 91 93 07 	lds	r24, 0x0793
    c4b6:	90 e0       	ldi	r25, 0x00	; 0
    c4b8:	26 e3       	ldi	r18, 0x36	; 54
    c4ba:	31 e0       	ldi	r19, 0x01	; 1
    c4bc:	82 9f       	mul	r24, r18
    c4be:	80 01       	movw	r16, r0
    c4c0:	83 9f       	mul	r24, r19
    c4c2:	10 0d       	add	r17, r0
    c4c4:	92 9f       	mul	r25, r18
    c4c6:	10 0d       	add	r17, r0
    c4c8:	11 24       	eor	r1, r1
    c4ca:	03 5a       	subi	r16, 0xA3	; 163
    c4cc:	16 45       	sbci	r17, 0x56	; 86

	pReport->reportHeader.payloadType = 0x90;
    c4ce:	80 e9       	ldi	r24, 0x90	; 144
    c4d0:	90 e0       	ldi	r25, 0x00	; 0
    c4d2:	a0 e0       	ldi	r26, 0x00	; 0
    c4d4:	b0 e0       	ldi	r27, 0x00	; 0
    c4d6:	f8 01       	movw	r30, r16
    c4d8:	87 87       	std	Z+15, r24	; 0x0f
    c4da:	90 8b       	std	Z+16, r25	; 0x10
    c4dc:	a1 8b       	std	Z+17, r26	; 0x11
    c4de:	b2 8b       	std	Z+18, r27	; 0x12
	pReport->reportHeader.boardID = mainBoardID;
    c4e0:	80 91 e6 03 	lds	r24, 0x03E6
    c4e4:	83 8b       	std	Z+19, r24	; 0x13
	pReport->reportHeader.taskID = pTaskInfo->taskID;
    c4e6:	d7 01       	movw	r26, r14
    c4e8:	8c 91       	ld	r24, X
    c4ea:	84 8b       	std	Z+20, r24	; 0x14
	pReport->reportHeader.dataFormat = 1;
	pReport->reportHeader.parser = 1;
	pReport->reportHeader.priority = 1;
    c4ec:	81 e3       	ldi	r24, 0x31	; 49
    c4ee:	85 8b       	std	Z+21, r24	; 0x15
	pReport->reportHeader.repeatCount = 1;
    c4f0:	81 e0       	ldi	r24, 0x01	; 1
    c4f2:	86 8b       	std	Z+22, r24	; 0x16

	pReport->comm.headers.length = sizeof(PIB_IRIDIUM_DATA_XMIT)+sizeof(TYPE_91_REPORT_HEADER)+sizeof(TYPE_90_91_DATA_HEADER)+pTaskInfo->pBuf->reportData.length + CRC16_SIZE;
    c4f4:	14 96       	adiw	r26, 0x04	; 4
    c4f6:	ed 91       	ld	r30, X+
    c4f8:	fc 91       	ld	r31, X
    c4fa:	15 97       	sbiw	r26, 0x05	; 5
    c4fc:	e8 5f       	subi	r30, 0xF8	; 248
    c4fe:	fa 4f       	sbci	r31, 0xFA	; 250
    c500:	80 81       	ld	r24, Z
    c502:	90 e0       	ldi	r25, 0x00	; 0
    c504:	85 96       	adiw	r24, 0x25	; 37
    c506:	f8 01       	movw	r30, r16
    c508:	91 83       	std	Z+1, r25	; 0x01
    c50a:	80 83       	st	Z, r24
	pReport->comm.headers.destination = FLOAT_IRIDIUM_INTERFACE;
    c50c:	22 e0       	ldi	r18, 0x02	; 2
    c50e:	30 e0       	ldi	r19, 0x00	; 0
    c510:	33 83       	std	Z+3, r19	; 0x03
    c512:	22 83       	std	Z+2, r18	; 0x02

	pReport->comm.iridiumInfo.structureType = 0x91;
    c514:	21 e9       	ldi	r18, 0x91	; 145
    c516:	24 87       	std	Z+12, r18	; 0x0c
	pReport->comm.iridiumInfo.size = pReport->comm.headers.length - sizeof(PIB_IRIDIUM_DATA_XMIT)-CRC16_SIZE;
    c518:	41 97       	sbiw	r24, 0x11	; 17
    c51a:	96 87       	std	Z+14, r25	; 0x0e
    c51c:	85 87       	std	Z+13, r24	; 0x0d

	pReport->dataHeader.latitude = latitude;
    c51e:	80 91 e5 b7 	lds	r24, 0xB7E5
    c522:	90 91 e6 b7 	lds	r25, 0xB7E6
    c526:	a0 91 e7 b7 	lds	r26, 0xB7E7
    c52a:	b0 91 e8 b7 	lds	r27, 0xB7E8
    c52e:	87 8b       	std	Z+23, r24	; 0x17
    c530:	90 8f       	std	Z+24, r25	; 0x18
    c532:	a1 8f       	std	Z+25, r26	; 0x19
    c534:	b2 8f       	std	Z+26, r27	; 0x1a
	pReport->dataHeader.longitude = longitude;
    c536:	80 91 e9 b7 	lds	r24, 0xB7E9
    c53a:	90 91 ea b7 	lds	r25, 0xB7EA
    c53e:	a0 91 eb b7 	lds	r26, 0xB7EB
    c542:	b0 91 ec b7 	lds	r27, 0xB7EC
    c546:	83 8f       	std	Z+27, r24	; 0x1b
    c548:	94 8f       	std	Z+28, r25	; 0x1c
    c54a:	a5 8f       	std	Z+29, r26	; 0x1d
    c54c:	b6 8f       	std	Z+30, r27	; 0x1e
	pReport->dataHeader.timestamp = gettime();
    c54e:	0e 94 3c 34 	call	0x6878	; 0x6878 <gettime>
    c552:	d8 01       	movw	r26, r16
    c554:	5f 96       	adiw	r26, 0x1f	; 31
    c556:	6d 93       	st	X+, r22
    c558:	7d 93       	st	X+, r23
    c55a:	8d 93       	st	X+, r24
    c55c:	9c 93       	st	X, r25
    c55e:	92 97       	sbiw	r26, 0x22	; 34

	memcpy(&(pReport->data), &(pTaskInfo->pBuf->reportData.data), pTaskInfo->pBuf->reportData.length);
    c560:	d7 01       	movw	r26, r14
    c562:	14 96       	adiw	r26, 0x04	; 4
    c564:	ed 91       	ld	r30, X+
    c566:	fc 91       	ld	r31, X
    c568:	15 97       	sbiw	r26, 0x05	; 5
    c56a:	0d 5d       	subi	r16, 0xDD	; 221
    c56c:	1f 4f       	sbci	r17, 0xFF	; 255
    c56e:	e8 5f       	subi	r30, 0xF8	; 248
    c570:	fa 4f       	sbci	r31, 0xFA	; 250
    c572:	41 91       	ld	r20, Z+
    c574:	bf 01       	movw	r22, r30
    c576:	c8 01       	movw	r24, r16
    c578:	50 e0       	ldi	r21, 0x00	; 0
    c57a:	0e 94 1c f0 	call	0x1e038	; 0x1e038 <memcpy>


	(headFloatTx < MAX_FLOAT_BUFFERS - 1) ? (headFloatTx++) : (headFloatTx = 0);
    c57e:	80 91 93 07 	lds	r24, 0x0793
    c582:	87 30       	cpi	r24, 0x07	; 7
    c584:	20 f4       	brcc	.+8      	; 0xc58e <MBARI_CO2_ReportXmit+0x108>
    c586:	8f 5f       	subi	r24, 0xFF	; 255
    c588:	80 93 93 07 	sts	0x0793, r24
    c58c:	02 c0       	rjmp	.+4      	; 0xc592 <MBARI_CO2_ReportXmit+0x10c>
    c58e:	10 92 93 07 	sts	0x0793, r1

	if(headFloatTx == tailFloatTx)
    c592:	90 91 93 07 	lds	r25, 0x0793
    c596:	80 91 94 07 	lds	r24, 0x0794
    c59a:	98 17       	cp	r25, r24
    c59c:	41 f4       	brne	.+16     	; 0xc5ae <MBARI_CO2_ReportXmit+0x128>
	{
		(tailFloatTx < MAX_FLOAT_BUFFERS - 1) ? (tailFloatTx++) : (tailFloatTx = 0);
    c59e:	97 30       	cpi	r25, 0x07	; 7
    c5a0:	20 f4       	brcc	.+8      	; 0xc5aa <MBARI_CO2_ReportXmit+0x124>
    c5a2:	9f 5f       	subi	r25, 0xFF	; 255
    c5a4:	90 93 94 07 	sts	0x0794, r25
    c5a8:	02 c0       	rjmp	.+4      	; 0xc5ae <MBARI_CO2_ReportXmit+0x128>
    c5aa:	10 92 94 07 	sts	0x0794, r1
//		ovfFloatStaticCt++;
	}

	//sprintf_P(dbgMsg, PSTR("going back to shore")); SEND_MSG;

	OSMutexPost(pMutexFloatQueue);
    c5ae:	80 91 51 19 	lds	r24, 0x1951
    c5b2:	90 91 52 19 	lds	r25, 0x1952
    c5b6:	0e 94 36 27 	call	0x4e6c	; 0x4e6c <OSMutexPost>

	return SUCCESS;
}
    c5ba:	8f ef       	ldi	r24, 0xFF	; 255
    c5bc:	0f 90       	pop	r0
    c5be:	cf 91       	pop	r28
    c5c0:	df 91       	pop	r29
    c5c2:	1f 91       	pop	r17
    c5c4:	0f 91       	pop	r16
    c5c6:	ff 90       	pop	r15
    c5c8:	ef 90       	pop	r14
    c5ca:	08 95       	ret

0000c5cc <MBARI_CO2_RxDataSample>:

	return retval;
}

uint8_t MBARI_CO2_RxDataSample(PMBARI_CO2_TASK pTaskInfo)
{
    c5cc:	cf 92       	push	r12
    c5ce:	df 92       	push	r13
    c5d0:	ef 92       	push	r14
    c5d2:	ff 92       	push	r15
    c5d4:	0f 93       	push	r16
    c5d6:	1f 93       	push	r17
    c5d8:	df 93       	push	r29
    c5da:	cf 93       	push	r28
    c5dc:	0f 92       	push	r0
    c5de:	cd b7       	in	r28, 0x3d	; 61
    c5e0:	de b7       	in	r29, 0x3e	; 62
    c5e2:	7c 01       	movw	r14, r24
	uint8_t retval = FAIL;

	uint16_t count = 0;
	uint8_t err = 0;
    c5e4:	19 82       	std	Y+1, r1	; 0x01
	uint8_t c = 0;

	
	do
	{
		c = (uint8_t) OSuartGetCharWait(pTaskInfo->portNum, 64, &err);	//Read until you get to CO2_SOF
    c5e6:	8e 01       	movw	r16, r28
    c5e8:	0f 5f       	subi	r16, 0xFF	; 255
    c5ea:	1f 4f       	sbci	r17, 0xFF	; 255
    c5ec:	d7 01       	movw	r26, r14
    c5ee:	11 96       	adiw	r26, 0x01	; 1
    c5f0:	8c 91       	ld	r24, X
    c5f2:	60 e4       	ldi	r22, 0x40	; 64
    c5f4:	70 e0       	ldi	r23, 0x00	; 0
    c5f6:	a8 01       	movw	r20, r16
    c5f8:	0e 94 b8 32 	call	0x6570	; 0x6570 <OSuartGetCharWait>
    c5fc:	98 2f       	mov	r25, r24
	} while (c!=CO2_SOF && err == OS_ERR_NONE);
    c5fe:	8e 37       	cpi	r24, 0x7E	; 126
    c600:	19 f0       	breq	.+6      	; 0xc608 <MBARI_CO2_RxDataSample+0x3c>
    c602:	89 81       	ldd	r24, Y+1	; 0x01
    c604:	88 23       	and	r24, r24
    c606:	91 f3       	breq	.-28     	; 0xc5ec <MBARI_CO2_RxDataSample+0x20>
			
	if(err != OS_ERR_NONE)
    c608:	89 81       	ldd	r24, Y+1	; 0x01
    c60a:	88 23       	and	r24, r24
    c60c:	09 f0       	breq	.+2      	; 0xc610 <MBARI_CO2_RxDataSample+0x44>
    c60e:	57 c0       	rjmp	.+174    	; 0xc6be <MBARI_CO2_RxDataSample+0xf2>
	{
		return retval;
	}

	if (c != CO2_SOF)
    c610:	9e 37       	cpi	r25, 0x7E	; 126
    c612:	09 f0       	breq	.+2      	; 0xc616 <MBARI_CO2_RxDataSample+0x4a>
    c614:	54 c0       	rjmp	.+168    	; 0xc6be <MBARI_CO2_RxDataSample+0xf2>
		//sprintf_P(dbgMsg, PSTR("wrong char <%c>"), c); SEND_MSG;
		return retval;
	}


	pTaskInfo->pBuf->reportData.length = 0;	
    c616:	f7 01       	movw	r30, r14
    c618:	04 81       	ldd	r16, Z+4	; 0x04
    c61a:	15 81       	ldd	r17, Z+5	; 0x05
    c61c:	08 5f       	subi	r16, 0xF8	; 248
    c61e:	1a 4f       	sbci	r17, 0xFA	; 250
    c620:	d8 01       	movw	r26, r16
    c622:	1c 92       	st	X, r1
	pTaskInfo->pBuf->reportData.length = (uint8_t) OSuartGetCharWait(pTaskInfo->portNum, 64, &err);
    c624:	81 81       	ldd	r24, Z+1	; 0x01
    c626:	60 e4       	ldi	r22, 0x40	; 64
    c628:	70 e0       	ldi	r23, 0x00	; 0
    c62a:	6e 01       	movw	r12, r28
    c62c:	08 94       	sec
    c62e:	c1 1c       	adc	r12, r1
    c630:	d1 1c       	adc	r13, r1
    c632:	a6 01       	movw	r20, r12
    c634:	0e 94 b8 32 	call	0x6570	; 0x6570 <OSuartGetCharWait>
    c638:	f8 01       	movw	r30, r16
    c63a:	80 83       	st	Z, r24
	
	if(err != OS_ERR_NONE || pTaskInfo->pBuf->reportData.length == 0)
    c63c:	89 81       	ldd	r24, Y+1	; 0x01
    c63e:	88 23       	and	r24, r24
    c640:	f1 f5       	brne	.+124    	; 0xc6be <MBARI_CO2_RxDataSample+0xf2>
    c642:	d7 01       	movw	r26, r14
    c644:	14 96       	adiw	r26, 0x04	; 4
    c646:	ed 91       	ld	r30, X+
    c648:	fc 91       	ld	r31, X
    c64a:	15 97       	sbiw	r26, 0x05	; 5
    c64c:	e8 5f       	subi	r30, 0xF8	; 248
    c64e:	fa 4f       	sbci	r31, 0xFA	; 250
    c650:	80 81       	ld	r24, Z
    c652:	88 23       	and	r24, r24
    c654:	a1 f1       	breq	.+104    	; 0xc6be <MBARI_CO2_RxDataSample+0xf2>
    c656:	00 e0       	ldi	r16, 0x00	; 0
    c658:	10 e0       	ldi	r17, 0x00	; 0
    c65a:	17 c0       	rjmp	.+46     	; 0xc68a <MBARI_CO2_RxDataSample+0xbe>
	count = 0;

	// Get Data and CRC
	while(count < pTaskInfo->pBuf->reportData.length + CRC16_SIZE)
	{
		c = (uint8_t) OSuartGetCharWait(pTaskInfo->portNum, 64, &err);
    c65c:	f7 01       	movw	r30, r14
    c65e:	81 81       	ldd	r24, Z+1	; 0x01
    c660:	60 e4       	ldi	r22, 0x40	; 64
    c662:	70 e0       	ldi	r23, 0x00	; 0
    c664:	a6 01       	movw	r20, r12
    c666:	0e 94 b8 32 	call	0x6570	; 0x6570 <OSuartGetCharWait>
    c66a:	98 2f       	mov	r25, r24
			
		if(err != OS_ERR_NONE)
    c66c:	89 81       	ldd	r24, Y+1	; 0x01
    c66e:	88 23       	and	r24, r24
    c670:	31 f5       	brne	.+76     	; 0xc6be <MBARI_CO2_RxDataSample+0xf2>
		{
			return retval;
		}

		pTaskInfo->pBuf->reportData.data[count++] = c;
    c672:	d7 01       	movw	r26, r14
    c674:	14 96       	adiw	r26, 0x04	; 4
    c676:	ed 91       	ld	r30, X+
    c678:	fc 91       	ld	r31, X
    c67a:	15 97       	sbiw	r26, 0x05	; 5
    c67c:	e0 0f       	add	r30, r16
    c67e:	f1 1f       	adc	r31, r17
    c680:	e7 5f       	subi	r30, 0xF7	; 247
    c682:	fa 4f       	sbci	r31, 0xFA	; 250
    c684:	90 83       	st	Z, r25
    c686:	0f 5f       	subi	r16, 0xFF	; 255
    c688:	1f 4f       	sbci	r17, 0xFF	; 255
		return retval;
	
	count = 0;

	// Get Data and CRC
	while(count < pTaskInfo->pBuf->reportData.length + CRC16_SIZE)
    c68a:	d7 01       	movw	r26, r14
    c68c:	14 96       	adiw	r26, 0x04	; 4
    c68e:	ed 91       	ld	r30, X+
    c690:	fc 91       	ld	r31, X
    c692:	15 97       	sbiw	r26, 0x05	; 5
    c694:	e8 5f       	subi	r30, 0xF8	; 248
    c696:	fa 4f       	sbci	r31, 0xFA	; 250
    c698:	80 81       	ld	r24, Z
    c69a:	68 2f       	mov	r22, r24
    c69c:	70 e0       	ldi	r23, 0x00	; 0
    c69e:	cb 01       	movw	r24, r22
    c6a0:	02 96       	adiw	r24, 0x02	; 2
    c6a2:	08 17       	cp	r16, r24
    c6a4:	19 07       	cpc	r17, r25
    c6a6:	d0 f2       	brcs	.-76     	; 0xc65c <MBARI_CO2_RxDataSample+0x90>

		pTaskInfo->pBuf->reportData.data[count++] = c;

	}

	if(ValidateCRC16((uint8_t*) (&pTaskInfo->pBuf->reportData.length), (uint16_t) pTaskInfo->pBuf->reportData.length + 1 + CRC16_SIZE, 0xFFFF))
    c6a8:	6d 5f       	subi	r22, 0xFD	; 253
    c6aa:	7f 4f       	sbci	r23, 0xFF	; 255
    c6ac:	cf 01       	movw	r24, r30
    c6ae:	4f ef       	ldi	r20, 0xFF	; 255
    c6b0:	5f ef       	ldi	r21, 0xFF	; 255
    c6b2:	0e 94 36 3c 	call	0x786c	; 0x786c <ValidateCRC16>
    c6b6:	88 23       	and	r24, r24
    c6b8:	11 f0       	breq	.+4      	; 0xc6be <MBARI_CO2_RxDataSample+0xf2>
    c6ba:	8f ef       	ldi	r24, 0xFF	; 255
    c6bc:	01 c0       	rjmp	.+2      	; 0xc6c0 <MBARI_CO2_RxDataSample+0xf4>
    c6be:	80 e0       	ldi	r24, 0x00	; 0
		return FAIL;
	}


	//return SUCCESS;
}
    c6c0:	0f 90       	pop	r0
    c6c2:	cf 91       	pop	r28
    c6c4:	df 91       	pop	r29
    c6c6:	1f 91       	pop	r17
    c6c8:	0f 91       	pop	r16
    c6ca:	ff 90       	pop	r15
    c6cc:	ef 90       	pop	r14
    c6ce:	df 90       	pop	r13
    c6d0:	cf 90       	pop	r12
    c6d2:	08 95       	ret

0000c6d4 <MBARI_CO2_GetDataSample>:


uint8_t MBARI_CO2_GetDataSample(PMBARI_CO2_TASK pTaskInfo)
{
    c6d4:	cf 93       	push	r28
    c6d6:	df 93       	push	r29
    c6d8:	ec 01       	movw	r28, r24

	memset(&(pTaskInfo->pBuf->reportData), 0, sizeof(MBARI_CO2_REPORT));
    c6da:	8c 81       	ldd	r24, Y+4	; 0x04
    c6dc:	9d 81       	ldd	r25, Y+5	; 0x05
    c6de:	88 5f       	subi	r24, 0xF8	; 248
    c6e0:	9a 4f       	sbci	r25, 0xFA	; 250
    c6e2:	fc 01       	movw	r30, r24
    c6e4:	82 e0       	ldi	r24, 0x02	; 2
    c6e6:	91 e0       	ldi	r25, 0x01	; 1
    c6e8:	df 01       	movw	r26, r30
    c6ea:	9c 01       	movw	r18, r24
    c6ec:	1d 92       	st	X+, r1
    c6ee:	21 50       	subi	r18, 0x01	; 1
    c6f0:	30 40       	sbci	r19, 0x00	; 0
    c6f2:	e1 f7       	brne	.-8      	; 0xc6ec <MBARI_CO2_GetDataSample+0x18>

	uint8_t retval = MBARI_CO2_RxDataSample(pTaskInfo);
    c6f4:	ce 01       	movw	r24, r28
    c6f6:	0e 94 e6 62 	call	0xc5cc	; 0xc5cc <MBARI_CO2_RxDataSample>

	if(retval == SUCCESS)
    c6fa:	8f 3f       	cpi	r24, 0xFF	; 255
    c6fc:	19 f4       	brne	.+6      	; 0xc704 <MBARI_CO2_GetDataSample+0x30>
	{
		retval = MBARI_CO2_ReportXmit(pTaskInfo);
    c6fe:	ce 01       	movw	r24, r28
    c700:	0e 94 43 62 	call	0xc486	; 0xc486 <MBARI_CO2_ReportXmit>
	}

	return retval;
}
    c704:	df 91       	pop	r29
    c706:	cf 91       	pop	r28
    c708:	08 95       	ret

0000c70a <MBARI_CO2_Tx>:
	return retval;
}


uint8_t MBARI_CO2_Tx(PMBARI_CO2_TASK pTaskInfo, uint8_t len)
{
    c70a:	0f 93       	push	r16
    c70c:	1f 93       	push	r17
    c70e:	cf 93       	push	r28
    c710:	df 93       	push	r29
    c712:	ec 01       	movw	r28, r24
    c714:	06 2f       	mov	r16, r22
	uint8_t retval = FAIL;
	uint8_t err = 0;
	
	uint8_t i = 0;

	if((len > 0) && (len <= 255))
    c716:	66 23       	and	r22, r22
    c718:	99 f0       	breq	.+38     	; 0xc740 <MBARI_CO2_Tx+0x36>
    c71a:	10 e0       	ldi	r17, 0x00	; 0
    c71c:	0d c0       	rjmp	.+26     	; 0xc738 <MBARI_CO2_Tx+0x2e>
	{
		while(len > i)
		{
			char c = pTaskInfo->pBuf->bufferTx[i++];
			err = OSuartPutCharWait(pTaskInfo->portNum, c, 10);
    c71e:	ec 81       	ldd	r30, Y+4	; 0x04
    c720:	fd 81       	ldd	r31, Y+5	; 0x05
    c722:	e1 0f       	add	r30, r17
    c724:	f1 1d       	adc	r31, r1
    c726:	89 81       	ldd	r24, Y+1	; 0x01
    c728:	60 81       	ld	r22, Z
    c72a:	4a e0       	ldi	r20, 0x0A	; 10
    c72c:	50 e0       	ldi	r21, 0x00	; 0
    c72e:	0e 94 f3 31 	call	0x63e6	; 0x63e6 <OSuartPutCharWait>
			if(err != OS_ERR_NONE)
    c732:	88 23       	and	r24, r24
    c734:	29 f4       	brne	.+10     	; 0xc740 <MBARI_CO2_Tx+0x36>

	if((len > 0) && (len <= 255))
	{
		while(len > i)
		{
			char c = pTaskInfo->pBuf->bufferTx[i++];
    c736:	1f 5f       	subi	r17, 0xFF	; 255
	
	uint8_t i = 0;

	if((len > 0) && (len <= 255))
	{
		while(len > i)
    c738:	10 17       	cp	r17, r16
    c73a:	88 f3       	brcs	.-30     	; 0xc71e <MBARI_CO2_Tx+0x14>
    c73c:	8f ef       	ldi	r24, 0xFF	; 255
    c73e:	01 c0       	rjmp	.+2      	; 0xc742 <MBARI_CO2_Tx+0x38>
    c740:	80 e0       	ldi	r24, 0x00	; 0

		retval = SUCCESS;
	}

	return retval;
}
    c742:	df 91       	pop	r29
    c744:	cf 91       	pop	r28
    c746:	1f 91       	pop	r17
    c748:	0f 91       	pop	r16
    c74a:	08 95       	ret

0000c74c <MBARI_CO2_PowerOff>:
	}
	return;
}

uint8_t MBARI_CO2_PowerOff(PMBARI_CO2_TASK pTaskInfo)
{
    c74c:	ff 92       	push	r15
    c74e:	0f 93       	push	r16
    c750:	1f 93       	push	r17
    c752:	8c 01       	movw	r16, r24
	memset(pTaskInfo->pBuf->bufferTx, 0, sizeof(pTaskInfo->pBuf->bufferTx));
    c754:	dc 01       	movw	r26, r24
    c756:	14 96       	adiw	r26, 0x04	; 4
    c758:	ec 91       	ld	r30, X
    c75a:	14 97       	sbiw	r26, 0x04	; 4
    c75c:	15 96       	adiw	r26, 0x05	; 5
    c75e:	fc 91       	ld	r31, X
    c760:	80 e0       	ldi	r24, 0x00	; 0
    c762:	91 e0       	ldi	r25, 0x01	; 1
    c764:	df 01       	movw	r26, r30
    c766:	9c 01       	movw	r18, r24
    c768:	1d 92       	st	X+, r1
    c76a:	21 50       	subi	r18, 0x01	; 1
    c76c:	30 40       	sbci	r19, 0x00	; 0
    c76e:	e1 f7       	brne	.-8      	; 0xc768 <MBARI_CO2_PowerOff+0x1c>
	sprintf_P(pTaskInfo->pBuf->bufferTx, PSTR("Power down\r"));
    c770:	00 d0       	rcall	.+0      	; 0xc772 <MBARI_CO2_PowerOff+0x26>
    c772:	0f 92       	push	r0
    c774:	d8 01       	movw	r26, r16
    c776:	14 96       	adiw	r26, 0x04	; 4
    c778:	8d 91       	ld	r24, X+
    c77a:	9c 91       	ld	r25, X
    c77c:	15 97       	sbiw	r26, 0x05	; 5
    c77e:	ed b7       	in	r30, 0x3d	; 61
    c780:	fe b7       	in	r31, 0x3e	; 62
    c782:	92 83       	std	Z+2, r25	; 0x02
    c784:	81 83       	std	Z+1, r24	; 0x01
    c786:	8c e9       	ldi	r24, 0x9C	; 156
    c788:	99 e0       	ldi	r25, 0x09	; 9
    c78a:	94 83       	std	Z+4, r25	; 0x04
    c78c:	83 83       	std	Z+3, r24	; 0x03
    c78e:	0e 94 51 f1 	call	0x1e2a2	; 0x1e2a2 <sprintf_P>

	uint8_t retval = MBARI_CO2_Tx(pTaskInfo, 11);
    c792:	0f 90       	pop	r0
    c794:	0f 90       	pop	r0
    c796:	0f 90       	pop	r0
    c798:	0f 90       	pop	r0
    c79a:	c8 01       	movw	r24, r16
    c79c:	6b e0       	ldi	r22, 0x0B	; 11
    c79e:	0e 94 85 63 	call	0xc70a	; 0xc70a <MBARI_CO2_Tx>
    c7a2:	f8 2e       	mov	r15, r24

	
	// Don't power down here
	// Must wait for 60 seconds before actually turning power off
	pTaskInfo->pBuf->pendingPowerDown = TRUE;
    c7a4:	d8 01       	movw	r26, r16
    c7a6:	14 96       	adiw	r26, 0x04	; 4
    c7a8:	ed 91       	ld	r30, X+
    c7aa:	fc 91       	ld	r31, X
    c7ac:	15 97       	sbiw	r26, 0x05	; 5
    c7ae:	ee 5f       	subi	r30, 0xFE	; 254
    c7b0:	fa 4f       	sbci	r31, 0xFA	; 250
    c7b2:	8f ef       	ldi	r24, 0xFF	; 255
    c7b4:	80 83       	st	Z, r24
	pTaskInfo->pBuf->powerDownTime = getsecondtick() + CO2_POWER_DOWN_DELAY;
    c7b6:	14 96       	adiw	r26, 0x04	; 4
    c7b8:	0d 91       	ld	r16, X+
    c7ba:	1c 91       	ld	r17, X
    c7bc:	15 97       	sbiw	r26, 0x05	; 5
    c7be:	0e 94 23 34 	call	0x6846	; 0x6846 <getsecondtick>
    c7c2:	0d 5f       	subi	r16, 0xFD	; 253
    c7c4:	1a 4f       	sbci	r17, 0xFA	; 250
    c7c6:	64 5c       	subi	r22, 0xC4	; 196
    c7c8:	7f 4f       	sbci	r23, 0xFF	; 255
    c7ca:	8f 4f       	sbci	r24, 0xFF	; 255
    c7cc:	9f 4f       	sbci	r25, 0xFF	; 255
    c7ce:	f8 01       	movw	r30, r16
    c7d0:	60 83       	st	Z, r22
    c7d2:	71 83       	std	Z+1, r23	; 0x01
    c7d4:	82 83       	std	Z+2, r24	; 0x02
    c7d6:	93 83       	std	Z+3, r25	; 0x03

	return retval;

}
    c7d8:	8f 2d       	mov	r24, r15
    c7da:	1f 91       	pop	r17
    c7dc:	0f 91       	pop	r16
    c7de:	ff 90       	pop	r15
    c7e0:	08 95       	ret

0000c7e2 <MBARI_CO2_ParseCommand>:
	*context = &retval[strlen(retval)];
	return retval;
}

uint8_t MBARI_CO2_ParseCommand(PMBARI_CO2_TASK pTaskInfo, char command, char* myCommand)
{
    c7e2:	cf 92       	push	r12
    c7e4:	df 92       	push	r13
    c7e6:	ef 92       	push	r14
    c7e8:	ff 92       	push	r15
    c7ea:	0f 93       	push	r16
    c7ec:	1f 93       	push	r17
    c7ee:	df 93       	push	r29
    c7f0:	cf 93       	push	r28
    c7f2:	00 d0       	rcall	.+0      	; 0xc7f4 <MBARI_CO2_ParseCommand+0x12>
    c7f4:	cd b7       	in	r28, 0x3d	; 61
    c7f6:	de b7       	in	r29, 0x3e	; 62
    c7f8:	7c 01       	movw	r14, r24
    c7fa:	5b 83       	std	Y+3, r21	; 0x03
    c7fc:	4a 83       	std	Y+2, r20	; 0x02
	uint8_t retval = FAIL;

	switch(command)
    c7fe:	68 35       	cpi	r22, 0x58	; 88
    c800:	09 f4       	brne	.+2      	; 0xc804 <MBARI_CO2_ParseCommand+0x22>
    c802:	4c c0       	rjmp	.+152    	; 0xc89c <MBARI_CO2_ParseCommand+0xba>
    c804:	69 35       	cpi	r22, 0x59	; 89
    c806:	b8 f4       	brcc	.+46     	; 0xc836 <MBARI_CO2_ParseCommand+0x54>
    c808:	69 34       	cpi	r22, 0x49	; 73
    c80a:	09 f4       	brne	.+2      	; 0xc80e <MBARI_CO2_ParseCommand+0x2c>
    c80c:	5a c1       	rjmp	.+692    	; 0xcac2 <MBARI_CO2_ParseCommand+0x2e0>
    c80e:	6a 34       	cpi	r22, 0x4A	; 74
    c810:	50 f4       	brcc	.+20     	; 0xc826 <MBARI_CO2_ParseCommand+0x44>
    c812:	63 34       	cpi	r22, 0x43	; 67
    c814:	09 f4       	brne	.+2      	; 0xc818 <MBARI_CO2_ParseCommand+0x36>
    c816:	c5 c0       	rjmp	.+394    	; 0xc9a2 <MBARI_CO2_ParseCommand+0x1c0>
    c818:	66 34       	cpi	r22, 0x46	; 70
    c81a:	09 f4       	brne	.+2      	; 0xc81e <MBARI_CO2_ParseCommand+0x3c>
    c81c:	3f c0       	rjmp	.+126    	; 0xc89c <MBARI_CO2_ParseCommand+0xba>
    c81e:	61 34       	cpi	r22, 0x41	; 65
    c820:	09 f0       	breq	.+2      	; 0xc824 <MBARI_CO2_ParseCommand+0x42>
    c822:	5f c2       	rjmp	.+1214   	; 0xcce2 <MBARI_CO2_ParseCommand+0x500>
    c824:	83 c1       	rjmp	.+774    	; 0xcb2c <MBARI_CO2_ParseCommand+0x34a>
    c826:	62 35       	cpi	r22, 0x52	; 82
    c828:	11 f1       	breq	.+68     	; 0xc86e <MBARI_CO2_ParseCommand+0x8c>
    c82a:	63 35       	cpi	r22, 0x53	; 83
    c82c:	f1 f1       	breq	.+124    	; 0xc8aa <MBARI_CO2_ParseCommand+0xc8>
    c82e:	6f 34       	cpi	r22, 0x4F	; 79
    c830:	09 f0       	breq	.+2      	; 0xc834 <MBARI_CO2_ParseCommand+0x52>
    c832:	57 c2       	rjmp	.+1198   	; 0xcce2 <MBARI_CO2_ParseCommand+0x500>
    c834:	1c c0       	rjmp	.+56     	; 0xc86e <MBARI_CO2_ParseCommand+0x8c>
    c836:	69 36       	cpi	r22, 0x69	; 105
    c838:	09 f4       	brne	.+2      	; 0xc83c <MBARI_CO2_ParseCommand+0x5a>
    c83a:	43 c1       	rjmp	.+646    	; 0xcac2 <MBARI_CO2_ParseCommand+0x2e0>
    c83c:	6a 36       	cpi	r22, 0x6A	; 106
    c83e:	48 f4       	brcc	.+18     	; 0xc852 <MBARI_CO2_ParseCommand+0x70>
    c840:	63 36       	cpi	r22, 0x63	; 99
    c842:	09 f4       	brne	.+2      	; 0xc846 <MBARI_CO2_ParseCommand+0x64>
    c844:	ae c0       	rjmp	.+348    	; 0xc9a2 <MBARI_CO2_ParseCommand+0x1c0>
    c846:	66 36       	cpi	r22, 0x66	; 102
    c848:	49 f1       	breq	.+82     	; 0xc89c <MBARI_CO2_ParseCommand+0xba>
    c84a:	61 36       	cpi	r22, 0x61	; 97
    c84c:	09 f0       	breq	.+2      	; 0xc850 <MBARI_CO2_ParseCommand+0x6e>
    c84e:	49 c2       	rjmp	.+1170   	; 0xcce2 <MBARI_CO2_ParseCommand+0x500>
    c850:	6d c1       	rjmp	.+730    	; 0xcb2c <MBARI_CO2_ParseCommand+0x34a>
    c852:	62 37       	cpi	r22, 0x72	; 114
    c854:	61 f0       	breq	.+24     	; 0xc86e <MBARI_CO2_ParseCommand+0x8c>
    c856:	63 37       	cpi	r22, 0x73	; 115
    c858:	20 f4       	brcc	.+8      	; 0xc862 <MBARI_CO2_ParseCommand+0x80>
    c85a:	6f 36       	cpi	r22, 0x6F	; 111
    c85c:	09 f0       	breq	.+2      	; 0xc860 <MBARI_CO2_ParseCommand+0x7e>
    c85e:	41 c2       	rjmp	.+1154   	; 0xcce2 <MBARI_CO2_ParseCommand+0x500>
    c860:	06 c0       	rjmp	.+12     	; 0xc86e <MBARI_CO2_ParseCommand+0x8c>
    c862:	63 37       	cpi	r22, 0x73	; 115
    c864:	11 f1       	breq	.+68     	; 0xc8aa <MBARI_CO2_ParseCommand+0xc8>
    c866:	68 37       	cpi	r22, 0x78	; 120
    c868:	09 f0       	breq	.+2      	; 0xc86c <MBARI_CO2_ParseCommand+0x8a>
    c86a:	3b c2       	rjmp	.+1142   	; 0xcce2 <MBARI_CO2_ParseCommand+0x500>
    c86c:	17 c0       	rjmp	.+46     	; 0xc89c <MBARI_CO2_ParseCommand+0xba>
		case 'O':
		case 'r':
		case 'R':
			// ON

			EnablePIBModule(pTaskInfo->portNum, TRUE, FALSE);
    c86e:	d7 01       	movw	r26, r14
    c870:	11 96       	adiw	r26, 0x01	; 1
    c872:	8c 91       	ld	r24, X
    c874:	6f ef       	ldi	r22, 0xFF	; 255
    c876:	40 e0       	ldi	r20, 0x00	; 0
    c878:	0e 94 a2 38 	call	0x7144	; 0x7144 <EnablePIBModule>
			pTaskInfo->pBuf->isPowered = TRUE;
    c87c:	d7 01       	movw	r26, r14
    c87e:	14 96       	adiw	r26, 0x04	; 4
    c880:	ed 91       	ld	r30, X+
    c882:	fc 91       	ld	r31, X
    c884:	15 97       	sbiw	r26, 0x05	; 5
    c886:	e0 50       	subi	r30, 0x00	; 0
    c888:	fb 4f       	sbci	r31, 0xFB	; 251
    c88a:	8f ef       	ldi	r24, 0xFF	; 255
    c88c:	80 83       	st	Z, r24
			pTaskInfo->pBuf->isSampling = TRUE;
    c88e:	14 96       	adiw	r26, 0x04	; 4
    c890:	ed 91       	ld	r30, X+
    c892:	fc 91       	ld	r31, X
    c894:	15 97       	sbiw	r26, 0x05	; 5
    c896:	ef 5f       	subi	r30, 0xFF	; 255
    c898:	fa 4f       	sbci	r31, 0xFA	; 250
    c89a:	11 c1       	rjmp	.+546    	; 0xcabe <MBARI_CO2_ParseCommand+0x2dc>
		case 'x':
		case 'X':
		case 'f':
		case 'F':
			// OFF
			retval = MBARI_CO2_PowerOff(pTaskInfo);			
    c89c:	c7 01       	movw	r24, r14
    c89e:	0e 94 a6 63 	call	0xc74c	; 0xc74c <MBARI_CO2_PowerOff>
			}
			break;
		}
	}

	if(retval == SUCCESS)
    c8a2:	8f 3f       	cpi	r24, 0xFF	; 255
    c8a4:	09 f0       	breq	.+2      	; 0xc8a8 <MBARI_CO2_ParseCommand+0xc6>
    c8a6:	1e c2       	rjmp	.+1084   	; 0xcce4 <MBARI_CO2_ParseCommand+0x502>
    c8a8:	fc c1       	rjmp	.+1016   	; 0xcca2 <MBARI_CO2_ParseCommand+0x4c0>


		case 's':
		case 'S':

			sprintf_P(pTaskInfo->pBuf->consoleResponse, PSTR("Power is %s. Sampling is %s. Autorun is %s"), pTaskInfo->pBuf->isPowered ? (pTaskInfo->pBuf->pendingPowerDown ? "PENDING OFF":"ON"):"OFF", pTaskInfo->pBuf->isSampling ? "ON":"OFF", (pTaskInfo->pBuf->initState == AUTORUN_ON) ? "ON":"OFF");
    c8aa:	f7 01       	movw	r30, r14
    c8ac:	a4 81       	ldd	r26, Z+4	; 0x04
    c8ae:	b5 81       	ldd	r27, Z+5	; 0x05
    c8b0:	a0 50       	subi	r26, 0x00	; 0
    c8b2:	bb 4f       	sbci	r27, 0xFB	; 251
    c8b4:	8c 91       	ld	r24, X
    c8b6:	a0 50       	subi	r26, 0x00	; 0
    c8b8:	b5 40       	sbci	r27, 0x05	; 5
    c8ba:	88 23       	and	r24, r24
    c8bc:	19 f4       	brne	.+6      	; 0xc8c4 <MBARI_CO2_ParseCommand+0xe2>
    c8be:	2b e0       	ldi	r18, 0x0B	; 11
    c8c0:	34 e0       	ldi	r19, 0x04	; 4
    c8c2:	0c c0       	rjmp	.+24     	; 0xc8dc <MBARI_CO2_ParseCommand+0xfa>
    c8c4:	ae 5f       	subi	r26, 0xFE	; 254
    c8c6:	ba 4f       	sbci	r27, 0xFA	; 250
    c8c8:	8c 91       	ld	r24, X
    c8ca:	a2 50       	subi	r26, 0x02	; 2
    c8cc:	b5 40       	sbci	r27, 0x05	; 5
    c8ce:	88 23       	and	r24, r24
    c8d0:	19 f4       	brne	.+6      	; 0xc8d8 <MBARI_CO2_ParseCommand+0xf6>
    c8d2:	2f e0       	ldi	r18, 0x0F	; 15
    c8d4:	34 e0       	ldi	r19, 0x04	; 4
    c8d6:	02 c0       	rjmp	.+4      	; 0xc8dc <MBARI_CO2_ParseCommand+0xfa>
    c8d8:	22 e1       	ldi	r18, 0x12	; 18
    c8da:	34 e0       	ldi	r19, 0x04	; 4
    c8dc:	af 5f       	subi	r26, 0xFF	; 255
    c8de:	ba 4f       	sbci	r27, 0xFA	; 250
    c8e0:	8c 91       	ld	r24, X
    c8e2:	a1 50       	subi	r26, 0x01	; 1
    c8e4:	b5 40       	sbci	r27, 0x05	; 5
    c8e6:	88 23       	and	r24, r24
    c8e8:	19 f4       	brne	.+6      	; 0xc8f0 <MBARI_CO2_ParseCommand+0x10e>
    c8ea:	6b e0       	ldi	r22, 0x0B	; 11
    c8ec:	74 e0       	ldi	r23, 0x04	; 4
    c8ee:	02 c0       	rjmp	.+4      	; 0xc8f4 <MBARI_CO2_ParseCommand+0x112>
    c8f0:	6f e0       	ldi	r22, 0x0F	; 15
    c8f2:	74 e0       	ldi	r23, 0x04	; 4
    c8f4:	a9 5f       	subi	r26, 0xF9	; 249
    c8f6:	ba 4f       	sbci	r27, 0xFA	; 250
    c8f8:	8c 91       	ld	r24, X
    c8fa:	a7 50       	subi	r26, 0x07	; 7
    c8fc:	b5 40       	sbci	r27, 0x05	; 5
    c8fe:	81 30       	cpi	r24, 0x01	; 1
    c900:	19 f0       	breq	.+6      	; 0xc908 <MBARI_CO2_ParseCommand+0x126>
    c902:	4b e0       	ldi	r20, 0x0B	; 11
    c904:	54 e0       	ldi	r21, 0x04	; 4
    c906:	02 c0       	rjmp	.+4      	; 0xc90c <MBARI_CO2_ParseCommand+0x12a>
    c908:	4f e0       	ldi	r20, 0x0F	; 15
    c90a:	54 e0       	ldi	r21, 0x04	; 4
    c90c:	8d b7       	in	r24, 0x3d	; 61
    c90e:	9e b7       	in	r25, 0x3e	; 62
    c910:	0a 97       	sbiw	r24, 0x0a	; 10
    c912:	0f b6       	in	r0, 0x3f	; 63
    c914:	f8 94       	cli
    c916:	9e bf       	out	0x3e, r25	; 62
    c918:	0f be       	out	0x3f, r0	; 63
    c91a:	8d bf       	out	0x3d, r24	; 61
    c91c:	0d b7       	in	r16, 0x3d	; 61
    c91e:	1e b7       	in	r17, 0x3e	; 62
    c920:	0f 5f       	subi	r16, 0xFF	; 255
    c922:	1f 4f       	sbci	r17, 0xFF	; 255
    c924:	a9 5d       	subi	r26, 0xD9	; 217
    c926:	b9 4f       	sbci	r27, 0xF9	; 249
    c928:	ed b7       	in	r30, 0x3d	; 61
    c92a:	fe b7       	in	r31, 0x3e	; 62
    c92c:	b2 83       	std	Z+2, r27	; 0x02
    c92e:	a1 83       	std	Z+1, r26	; 0x01
    c930:	81 e7       	ldi	r24, 0x71	; 113
    c932:	99 e0       	ldi	r25, 0x09	; 9
    c934:	d8 01       	movw	r26, r16
    c936:	13 96       	adiw	r26, 0x03	; 3
    c938:	9c 93       	st	X, r25
    c93a:	8e 93       	st	-X, r24
    c93c:	12 97       	sbiw	r26, 0x02	; 2
    c93e:	15 96       	adiw	r26, 0x05	; 5
    c940:	3c 93       	st	X, r19
    c942:	2e 93       	st	-X, r18
    c944:	14 97       	sbiw	r26, 0x04	; 4
    c946:	17 96       	adiw	r26, 0x07	; 7
    c948:	7c 93       	st	X, r23
    c94a:	6e 93       	st	-X, r22
    c94c:	16 97       	sbiw	r26, 0x06	; 6
    c94e:	19 96       	adiw	r26, 0x09	; 9
    c950:	5c 93       	st	X, r21
    c952:	4e 93       	st	-X, r20
    c954:	18 97       	sbiw	r26, 0x08	; 8
    c956:	0e 94 51 f1 	call	0x1e2a2	; 0x1e2a2 <sprintf_P>
			pTaskInfo->pBuf->responseInfo.status = CONSOLE_RESPONSE_OK;
    c95a:	d7 01       	movw	r26, r14
    c95c:	14 96       	adiw	r26, 0x04	; 4
    c95e:	ed 91       	ld	r30, X+
    c960:	fc 91       	ld	r31, X
    c962:	15 97       	sbiw	r26, 0x05	; 5
    c964:	e0 5e       	subi	r30, 0xE0	; 224
    c966:	f9 4f       	sbci	r31, 0xF9	; 249
    c968:	81 e0       	ldi	r24, 0x01	; 1
    c96a:	80 83       	st	Z, r24
			pTaskInfo->pBuf->responseInfo.length = strlen(pTaskInfo->pBuf->consoleResponse);	
    c96c:	14 96       	adiw	r26, 0x04	; 4
    c96e:	0d 90       	ld	r0, X+
    c970:	bc 91       	ld	r27, X
    c972:	a0 2d       	mov	r26, r0
    c974:	cd 01       	movw	r24, r26
    c976:	89 5d       	subi	r24, 0xD9	; 217
    c978:	99 4f       	sbci	r25, 0xF9	; 249
    c97a:	fc 01       	movw	r30, r24
    c97c:	01 90       	ld	r0, Z+
    c97e:	00 20       	and	r0, r0
    c980:	e9 f7       	brne	.-6      	; 0xc97c <MBARI_CO2_ParseCommand+0x19a>
    c982:	31 97       	sbiw	r30, 0x01	; 1
    c984:	e8 1b       	sub	r30, r24
    c986:	f9 0b       	sbc	r31, r25
    c988:	ae 5d       	subi	r26, 0xDE	; 222
    c98a:	b9 4f       	sbci	r27, 0xF9	; 249
    c98c:	ec 93       	st	X, r30
    c98e:	8f ef       	ldi	r24, 0xFF	; 255
    c990:	ed b7       	in	r30, 0x3d	; 61
    c992:	fe b7       	in	r31, 0x3e	; 62
    c994:	3a 96       	adiw	r30, 0x0a	; 10
    c996:	0f b6       	in	r0, 0x3f	; 63
    c998:	f8 94       	cli
    c99a:	fe bf       	out	0x3e, r31	; 62
    c99c:	0f be       	out	0x3f, r0	; 63
    c99e:	ed bf       	out	0x3d, r30	; 61
    c9a0:	a1 c1       	rjmp	.+834    	; 0xcce4 <MBARI_CO2_ParseCommand+0x502>
			break;

		case 'c':
		case 'C':

			OSTimeDlyHMSM(0,0,0,100);
    c9a2:	80 e0       	ldi	r24, 0x00	; 0
    c9a4:	60 e0       	ldi	r22, 0x00	; 0
    c9a6:	40 e0       	ldi	r20, 0x00	; 0
    c9a8:	24 e6       	ldi	r18, 0x64	; 100
    c9aa:	30 e0       	ldi	r19, 0x00	; 0
    c9ac:	0e 94 2a 2e 	call	0x5c54	; 0x5c54 <OSTimeDlyHMSM>

			char* tail = ThreadSafeStrTokTail(&myCommand, pTaskInfo->pBuf->tokenSeparatorList);
    c9b0:	d7 01       	movw	r26, r14
    c9b2:	14 96       	adiw	r26, 0x04	; 4
    c9b4:	cd 90       	ld	r12, X+
    c9b6:	dc 90       	ld	r13, X
    c9b8:	15 97       	sbiw	r26, 0x05	; 5
	return;
}

static char* ThreadSafeStrTokTail(char** context, char* sep)
{
	if (!context || !*context) return "";
    c9ba:	0a 81       	ldd	r16, Y+2	; 0x02
    c9bc:	1b 81       	ldd	r17, Y+3	; 0x03
    c9be:	01 15       	cp	r16, r1
    c9c0:	11 05       	cpc	r17, r1
    c9c2:	19 f4       	brne	.+6      	; 0xc9ca <MBARI_CO2_ParseCommand+0x1e8>
    c9c4:	2e e1       	ldi	r18, 0x1E	; 30
    c9c6:	34 e0       	ldi	r19, 0x04	; 4
    c9c8:	14 c0       	rjmp	.+40     	; 0xc9f2 <MBARI_CO2_ParseCommand+0x210>

	char* retval = &(*context)[strspn(*context, sep)];
    c9ca:	b6 01       	movw	r22, r12
    c9cc:	66 5f       	subi	r22, 0xF6	; 246
    c9ce:	79 4f       	sbci	r23, 0xF9	; 249
    c9d0:	c8 01       	movw	r24, r16
    c9d2:	0e 94 77 f0 	call	0x1e0ee	; 0x1e0ee <strspn>
    c9d6:	9c 01       	movw	r18, r24
    c9d8:	20 0f       	add	r18, r16
    c9da:	31 1f       	adc	r19, r17
	
	*context = &retval[strlen(retval)];
    c9dc:	f9 01       	movw	r30, r18
    c9de:	01 90       	ld	r0, Z+
    c9e0:	00 20       	and	r0, r0
    c9e2:	e9 f7       	brne	.-6      	; 0xc9de <MBARI_CO2_ParseCommand+0x1fc>
    c9e4:	31 97       	sbiw	r30, 0x01	; 1
    c9e6:	e2 1b       	sub	r30, r18
    c9e8:	f3 0b       	sbc	r31, r19
    c9ea:	e2 0f       	add	r30, r18
    c9ec:	f3 1f       	adc	r31, r19
    c9ee:	fb 83       	std	Y+3, r31	; 0x03
    c9f0:	ea 83       	std	Y+2, r30	; 0x02
		case 'C':

			OSTimeDlyHMSM(0,0,0,100);

			char* tail = ThreadSafeStrTokTail(&myCommand, pTaskInfo->pBuf->tokenSeparatorList);
			uint16_t tailLen = strlen(tail);
    c9f2:	d9 01       	movw	r26, r18
    c9f4:	0d 90       	ld	r0, X+
    c9f6:	00 20       	and	r0, r0
    c9f8:	e9 f7       	brne	.-6      	; 0xc9f4 <MBARI_CO2_ParseCommand+0x212>
    c9fa:	8d 01       	movw	r16, r26
    c9fc:	01 50       	subi	r16, 0x01	; 1
    c9fe:	10 40       	sbci	r17, 0x00	; 0
    ca00:	02 1b       	sub	r16, r18
    ca02:	13 0b       	sbc	r17, r19

			//We have a Command to send

			if (tailLen)
    ca04:	09 f4       	brne	.+2      	; 0xca08 <MBARI_CO2_ParseCommand+0x226>
    ca06:	6d c1       	rjmp	.+730    	; 0xcce2 <MBARI_CO2_ParseCommand+0x500>
			{	
				uint8_t err;
				

				memset(pTaskInfo->pBuf->bufferRx, 0, 1024);
    ca08:	c6 01       	movw	r24, r12
    ca0a:	80 50       	subi	r24, 0x00	; 0
    ca0c:	9f 4f       	sbci	r25, 0xFF	; 255
    ca0e:	fc 01       	movw	r30, r24
    ca10:	80 e0       	ldi	r24, 0x00	; 0
    ca12:	94 e0       	ldi	r25, 0x04	; 4
    ca14:	df 01       	movw	r26, r30
    ca16:	ac 01       	movw	r20, r24
    ca18:	1d 92       	st	X+, r1
    ca1a:	41 50       	subi	r20, 0x01	; 1
    ca1c:	50 40       	sbci	r21, 0x00	; 0
    ca1e:	e1 f7       	brne	.-8      	; 0xca18 <MBARI_CO2_ParseCommand+0x236>
				memcpy(pTaskInfo->pBuf->bufferTx, tail, tailLen);
    ca20:	d7 01       	movw	r26, r14
    ca22:	14 96       	adiw	r26, 0x04	; 4
    ca24:	8c 91       	ld	r24, X
    ca26:	14 97       	sbiw	r26, 0x04	; 4
    ca28:	15 96       	adiw	r26, 0x05	; 5
    ca2a:	9c 91       	ld	r25, X
    ca2c:	b9 01       	movw	r22, r18
    ca2e:	a8 01       	movw	r20, r16
    ca30:	0e 94 1c f0 	call	0x1e038	; 0x1e038 <memcpy>

				err = OS_ERR_NONE;		
    ca34:	19 82       	std	Y+1, r1	; 0x01
				while(err == OS_ERR_NONE)
				{
					OSuartGetCharWait(pTaskInfo->portNum, 64, &err);		//wait .05 seconds -- basically clearing buffer
    ca36:	6e 01       	movw	r12, r28
    ca38:	08 94       	sec
    ca3a:	c1 1c       	adc	r12, r1
    ca3c:	d1 1c       	adc	r13, r1
    ca3e:	07 c0       	rjmp	.+14     	; 0xca4e <MBARI_CO2_ParseCommand+0x26c>
    ca40:	f7 01       	movw	r30, r14
    ca42:	81 81       	ldd	r24, Z+1	; 0x01
    ca44:	60 e4       	ldi	r22, 0x40	; 64
    ca46:	70 e0       	ldi	r23, 0x00	; 0
    ca48:	a6 01       	movw	r20, r12
    ca4a:	0e 94 b8 32 	call	0x6570	; 0x6570 <OSuartGetCharWait>

				memset(pTaskInfo->pBuf->bufferRx, 0, 1024);
				memcpy(pTaskInfo->pBuf->bufferTx, tail, tailLen);

				err = OS_ERR_NONE;		
				while(err == OS_ERR_NONE)
    ca4e:	89 81       	ldd	r24, Y+1	; 0x01
    ca50:	88 23       	and	r24, r24
    ca52:	b1 f3       	breq	.-20     	; 0xca40 <MBARI_CO2_ParseCommand+0x25e>
				{
					OSuartGetCharWait(pTaskInfo->portNum, 64, &err);		//wait .05 seconds -- basically clearing buffer
				}
	
				MBARI_CO2_Tx(pTaskInfo, tailLen);
    ca54:	c7 01       	movw	r24, r14
    ca56:	60 2f       	mov	r22, r16
    ca58:	0e 94 85 63 	call	0xc70a	; 0xc70a <MBARI_CO2_Tx>
				MBARI_CO2_Rx(pTaskInfo);
    ca5c:	c7 01       	movw	r24, r14
    ca5e:	0e 94 57 61 	call	0xc2ae	; 0xc2ae <MBARI_CO2_Rx>

				memcpy(pTaskInfo->pBuf->consoleResponse, pTaskInfo->pBuf->bufferRx, strlen(pTaskInfo->pBuf->bufferRx));
    ca62:	d7 01       	movw	r26, r14
    ca64:	14 96       	adiw	r26, 0x04	; 4
    ca66:	2d 91       	ld	r18, X+
    ca68:	3c 91       	ld	r19, X
    ca6a:	15 97       	sbiw	r26, 0x05	; 5
    ca6c:	a9 01       	movw	r20, r18
    ca6e:	40 50       	subi	r20, 0x00	; 0
    ca70:	5f 4f       	sbci	r21, 0xFF	; 255
    ca72:	da 01       	movw	r26, r20
    ca74:	0d 90       	ld	r0, X+
    ca76:	00 20       	and	r0, r0
    ca78:	e9 f7       	brne	.-6      	; 0xca74 <MBARI_CO2_ParseCommand+0x292>
    ca7a:	11 97       	sbiw	r26, 0x01	; 1
    ca7c:	a4 1b       	sub	r26, r20
    ca7e:	b5 0b       	sbc	r27, r21
    ca80:	29 5d       	subi	r18, 0xD9	; 217
    ca82:	39 4f       	sbci	r19, 0xF9	; 249
    ca84:	c9 01       	movw	r24, r18
    ca86:	ba 01       	movw	r22, r20
    ca88:	ad 01       	movw	r20, r26
    ca8a:	0e 94 1c f0 	call	0x1e038	; 0x1e038 <memcpy>
				pTaskInfo->pBuf->responseInfo.length = strlen(pTaskInfo->pBuf->consoleResponse);
    ca8e:	f7 01       	movw	r30, r14
    ca90:	a4 81       	ldd	r26, Z+4	; 0x04
    ca92:	b5 81       	ldd	r27, Z+5	; 0x05
    ca94:	cd 01       	movw	r24, r26
    ca96:	89 5d       	subi	r24, 0xD9	; 217
    ca98:	99 4f       	sbci	r25, 0xF9	; 249
    ca9a:	fc 01       	movw	r30, r24
    ca9c:	01 90       	ld	r0, Z+
    ca9e:	00 20       	and	r0, r0
    caa0:	e9 f7       	brne	.-6      	; 0xca9c <MBARI_CO2_ParseCommand+0x2ba>
    caa2:	31 97       	sbiw	r30, 0x01	; 1
    caa4:	e8 1b       	sub	r30, r24
    caa6:	f9 0b       	sbc	r31, r25
    caa8:	ae 5d       	subi	r26, 0xDE	; 222
    caaa:	b9 4f       	sbci	r27, 0xF9	; 249
    caac:	ec 93       	st	X, r30
				pTaskInfo->pBuf->responseInfo.status = CONSOLE_RESPONSE_OK;
    caae:	d7 01       	movw	r26, r14
    cab0:	14 96       	adiw	r26, 0x04	; 4
    cab2:	ed 91       	ld	r30, X+
    cab4:	fc 91       	ld	r31, X
    cab6:	15 97       	sbiw	r26, 0x05	; 5
    cab8:	e0 5e       	subi	r30, 0xE0	; 224
    caba:	f9 4f       	sbci	r31, 0xF9	; 249
    cabc:	81 e0       	ldi	r24, 0x01	; 1
    cabe:	80 83       	st	Z, r24
    cac0:	f0 c0       	rjmp	.+480    	; 0xcca2 <MBARI_CO2_ParseCommand+0x4c0>
			break;

		case 'i':
		case 'I':

			sprintf_P(pTaskInfo->pBuf->consoleResponse, PSTR("MBARI CO2 Sensor"));
    cac2:	00 d0       	rcall	.+0      	; 0xcac4 <MBARI_CO2_ParseCommand+0x2e2>
    cac4:	0f 92       	push	r0
    cac6:	f7 01       	movw	r30, r14
    cac8:	84 81       	ldd	r24, Z+4	; 0x04
    caca:	95 81       	ldd	r25, Z+5	; 0x05
    cacc:	89 5d       	subi	r24, 0xD9	; 217
    cace:	99 4f       	sbci	r25, 0xF9	; 249
    cad0:	ad b7       	in	r26, 0x3d	; 61
    cad2:	be b7       	in	r27, 0x3e	; 62
    cad4:	12 96       	adiw	r26, 0x02	; 2
    cad6:	9c 93       	st	X, r25
    cad8:	8e 93       	st	-X, r24
    cada:	11 97       	sbiw	r26, 0x01	; 1
    cadc:	80 e6       	ldi	r24, 0x60	; 96
    cade:	99 e0       	ldi	r25, 0x09	; 9
    cae0:	14 96       	adiw	r26, 0x04	; 4
    cae2:	9c 93       	st	X, r25
    cae4:	8e 93       	st	-X, r24
    cae6:	13 97       	sbiw	r26, 0x03	; 3
    cae8:	0e 94 51 f1 	call	0x1e2a2	; 0x1e2a2 <sprintf_P>
			pTaskInfo->pBuf->responseInfo.status = CONSOLE_RESPONSE_OK;
    caec:	d7 01       	movw	r26, r14
    caee:	14 96       	adiw	r26, 0x04	; 4
    caf0:	ed 91       	ld	r30, X+
    caf2:	fc 91       	ld	r31, X
    caf4:	15 97       	sbiw	r26, 0x05	; 5
    caf6:	e0 5e       	subi	r30, 0xE0	; 224
    caf8:	f9 4f       	sbci	r31, 0xF9	; 249
    cafa:	81 e0       	ldi	r24, 0x01	; 1
    cafc:	80 83       	st	Z, r24
			pTaskInfo->pBuf->responseInfo.length = strlen(pTaskInfo->pBuf->consoleResponse);			
    cafe:	14 96       	adiw	r26, 0x04	; 4
    cb00:	0d 90       	ld	r0, X+
    cb02:	bc 91       	ld	r27, X
    cb04:	a0 2d       	mov	r26, r0
    cb06:	cd 01       	movw	r24, r26
    cb08:	89 5d       	subi	r24, 0xD9	; 217
    cb0a:	99 4f       	sbci	r25, 0xF9	; 249
    cb0c:	fc 01       	movw	r30, r24
    cb0e:	01 90       	ld	r0, Z+
    cb10:	00 20       	and	r0, r0
    cb12:	e9 f7       	brne	.-6      	; 0xcb0e <MBARI_CO2_ParseCommand+0x32c>
    cb14:	31 97       	sbiw	r30, 0x01	; 1
    cb16:	e8 1b       	sub	r30, r24
    cb18:	f9 0b       	sbc	r31, r25
    cb1a:	ae 5d       	subi	r26, 0xDE	; 222
    cb1c:	b9 4f       	sbci	r27, 0xF9	; 249
    cb1e:	ec 93       	st	X, r30
    cb20:	8f ef       	ldi	r24, 0xFF	; 255
    cb22:	0f 90       	pop	r0
    cb24:	0f 90       	pop	r0
    cb26:	0f 90       	pop	r0
    cb28:	0f 90       	pop	r0
    cb2a:	dc c0       	rjmp	.+440    	; 0xcce4 <MBARI_CO2_ParseCommand+0x502>
		case 'a':
		case 'A':
		{
			char* result = NULL;

			memset(pTaskInfo->pBuf->tokenSeparatorList, 0, MAX_TOKEN_SEPARATORS);
    cb2c:	f7 01       	movw	r30, r14
    cb2e:	84 81       	ldd	r24, Z+4	; 0x04
    cb30:	95 81       	ldd	r25, Z+5	; 0x05
    cb32:	86 5f       	subi	r24, 0xF6	; 246
    cb34:	99 4f       	sbci	r25, 0xF9	; 249
    cb36:	fc 01       	movw	r30, r24
    cb38:	84 e1       	ldi	r24, 0x14	; 20
    cb3a:	df 01       	movw	r26, r30
    cb3c:	1d 92       	st	X+, r1
    cb3e:	8a 95       	dec	r24
    cb40:	e9 f7       	brne	.-6      	; 0xcb3c <MBARI_CO2_ParseCommand+0x35a>
			strcat_P(pTaskInfo->pBuf->tokenSeparatorList, tokenListConsole);
    cb42:	f7 01       	movw	r30, r14
    cb44:	84 81       	ldd	r24, Z+4	; 0x04
    cb46:	95 81       	ldd	r25, Z+5	; 0x05
    cb48:	86 5f       	subi	r24, 0xF6	; 246
    cb4a:	99 4f       	sbci	r25, 0xF9	; 249
    cb4c:	68 e3       	ldi	r22, 0x38	; 56
    cb4e:	72 e0       	ldi	r23, 0x02	; 2
    cb50:	0e 94 b4 ef 	call	0x1df68	; 0x1df68 <strcat_P>

			result = strtok_r(myCommand, pTaskInfo->pBuf->tokenSeparatorList, &myCommand);
    cb54:	d7 01       	movw	r26, r14
    cb56:	14 96       	adiw	r26, 0x04	; 4
    cb58:	6d 91       	ld	r22, X+
    cb5a:	7c 91       	ld	r23, X
    cb5c:	15 97       	sbiw	r26, 0x05	; 5
    cb5e:	66 5f       	subi	r22, 0xF6	; 246
    cb60:	79 4f       	sbci	r23, 0xF9	; 249
    cb62:	8a 81       	ldd	r24, Y+2	; 0x02
    cb64:	9b 81       	ldd	r25, Y+3	; 0x03
    cb66:	ae 01       	movw	r20, r28
    cb68:	4e 5f       	subi	r20, 0xFE	; 254
    cb6a:	5f 4f       	sbci	r21, 0xFF	; 255
    cb6c:	0e 94 a0 f0 	call	0x1e140	; 0x1e140 <strtok_r>
    cb70:	fc 01       	movw	r30, r24

			if(result != NULL)
    cb72:	00 97       	sbiw	r24, 0x00	; 0
    cb74:	09 f4       	brne	.+2      	; 0xcb78 <MBARI_CO2_ParseCommand+0x396>
    cb76:	b5 c0       	rjmp	.+362    	; 0xcce2 <MBARI_CO2_ParseCommand+0x500>
			{
				char* pTest = result;
				if((*pTest == 'o') || (*pTest == 'O'))
    cb78:	80 81       	ld	r24, Z
    cb7a:	8f 36       	cpi	r24, 0x6F	; 111
    cb7c:	11 f0       	breq	.+4      	; 0xcb82 <MBARI_CO2_ParseCommand+0x3a0>
    cb7e:	8f 34       	cpi	r24, 0x4F	; 79
    cb80:	31 f4       	brne	.+12     	; 0xcb8e <MBARI_CO2_ParseCommand+0x3ac>
				{
					pTest++;
				
					if((*pTest == 'f') || (*pTest == 'F'))
    cb82:	81 81       	ldd	r24, Z+1	; 0x01
    cb84:	86 36       	cpi	r24, 0x66	; 102
    cb86:	11 f0       	breq	.+4      	; 0xcb8c <MBARI_CO2_ParseCommand+0x3aa>
    cb88:	86 34       	cpi	r24, 0x46	; 70
    cb8a:	09 f4       	brne	.+2      	; 0xcb8e <MBARI_CO2_ParseCommand+0x3ac>
						*result = *pTest;
    cb8c:	80 83       	st	Z, r24
				}

				switch(*result)
    cb8e:	80 81       	ld	r24, Z
    cb90:	8f 34       	cpi	r24, 0x4F	; 79
    cb92:	f9 f0       	breq	.+62     	; 0xcbd2 <MBARI_CO2_ParseCommand+0x3f0>
    cb94:	80 35       	cpi	r24, 0x50	; 80
    cb96:	70 f4       	brcc	.+28     	; 0xcbb4 <MBARI_CO2_ParseCommand+0x3d2>
    cb98:	81 33       	cpi	r24, 0x31	; 49
    cb9a:	d9 f0       	breq	.+54     	; 0xcbd2 <MBARI_CO2_ParseCommand+0x3f0>
    cb9c:	82 33       	cpi	r24, 0x32	; 50
    cb9e:	20 f4       	brcc	.+8      	; 0xcba8 <MBARI_CO2_ParseCommand+0x3c6>
    cba0:	80 33       	cpi	r24, 0x30	; 48
    cba2:	09 f0       	breq	.+2      	; 0xcba6 <MBARI_CO2_ParseCommand+0x3c4>
    cba4:	9e c0       	rjmp	.+316    	; 0xcce2 <MBARI_CO2_ParseCommand+0x500>
    cba6:	1f c0       	rjmp	.+62     	; 0xcbe6 <MBARI_CO2_ParseCommand+0x404>
    cba8:	86 34       	cpi	r24, 0x46	; 70
    cbaa:	e9 f0       	breq	.+58     	; 0xcbe6 <MBARI_CO2_ParseCommand+0x404>
    cbac:	8e 34       	cpi	r24, 0x4E	; 78
    cbae:	09 f0       	breq	.+2      	; 0xcbb2 <MBARI_CO2_ParseCommand+0x3d0>
    cbb0:	98 c0       	rjmp	.+304    	; 0xcce2 <MBARI_CO2_ParseCommand+0x500>
    cbb2:	19 c0       	rjmp	.+50     	; 0xcbe6 <MBARI_CO2_ParseCommand+0x404>
    cbb4:	8e 36       	cpi	r24, 0x6E	; 110
    cbb6:	b9 f0       	breq	.+46     	; 0xcbe6 <MBARI_CO2_ParseCommand+0x404>
    cbb8:	8f 36       	cpi	r24, 0x6F	; 111
    cbba:	30 f4       	brcc	.+12     	; 0xcbc8 <MBARI_CO2_ParseCommand+0x3e6>
    cbbc:	89 35       	cpi	r24, 0x59	; 89
    cbbe:	49 f0       	breq	.+18     	; 0xcbd2 <MBARI_CO2_ParseCommand+0x3f0>
    cbc0:	86 36       	cpi	r24, 0x66	; 102
    cbc2:	09 f0       	breq	.+2      	; 0xcbc6 <MBARI_CO2_ParseCommand+0x3e4>
    cbc4:	8e c0       	rjmp	.+284    	; 0xcce2 <MBARI_CO2_ParseCommand+0x500>
    cbc6:	0f c0       	rjmp	.+30     	; 0xcbe6 <MBARI_CO2_ParseCommand+0x404>
    cbc8:	8f 36       	cpi	r24, 0x6F	; 111
    cbca:	19 f0       	breq	.+6      	; 0xcbd2 <MBARI_CO2_ParseCommand+0x3f0>
    cbcc:	89 37       	cpi	r24, 0x79	; 121
    cbce:	09 f0       	breq	.+2      	; 0xcbd2 <MBARI_CO2_ParseCommand+0x3f0>
    cbd0:	88 c0       	rjmp	.+272    	; 0xcce2 <MBARI_CO2_ParseCommand+0x500>
					case 'y':
					case 'Y':
					case 'o':
					case 'O':
					case '1':
						pTaskInfo->pBuf->initState = AUTORUN_ON;
    cbd2:	d7 01       	movw	r26, r14
    cbd4:	14 96       	adiw	r26, 0x04	; 4
    cbd6:	ed 91       	ld	r30, X+
    cbd8:	fc 91       	ld	r31, X
    cbda:	15 97       	sbiw	r26, 0x05	; 5
    cbdc:	e9 5f       	subi	r30, 0xF9	; 249
    cbde:	fa 4f       	sbci	r31, 0xFA	; 250
    cbe0:	81 e0       	ldi	r24, 0x01	; 1
    cbe2:	80 83       	st	Z, r24
    cbe4:	08 c0       	rjmp	.+16     	; 0xcbf6 <MBARI_CO2_ParseCommand+0x414>
					case 'n':
					case 'N':
					case 'f':
					case 'F':
					case '0':
						pTaskInfo->pBuf->initState = AUTORUN_OFF;
    cbe6:	d7 01       	movw	r26, r14
    cbe8:	14 96       	adiw	r26, 0x04	; 4
    cbea:	ed 91       	ld	r30, X+
    cbec:	fc 91       	ld	r31, X
    cbee:	15 97       	sbiw	r26, 0x05	; 5
    cbf0:	e9 5f       	subi	r30, 0xF9	; 249
    cbf2:	fa 4f       	sbci	r31, 0xFA	; 250
    cbf4:	10 82       	st	Z, r1
				}


				if(retval == SUCCESS)
				{
					EepromWriteByteUnSigned((void*)(pTaskInfo->eepromAddress + CO2_AUTORUN_STATE_OFFSET), pTaskInfo->pBuf->initState);
    cbf6:	f7 01       	movw	r30, r14
    cbf8:	82 81       	ldd	r24, Z+2	; 0x02
    cbfa:	93 81       	ldd	r25, Z+3	; 0x03
    cbfc:	04 80       	ldd	r0, Z+4	; 0x04
    cbfe:	f5 81       	ldd	r31, Z+5	; 0x05
    cc00:	e0 2d       	mov	r30, r0
    cc02:	e9 5f       	subi	r30, 0xF9	; 249
    cc04:	fa 4f       	sbci	r31, 0xFA	; 250
    cc06:	80 5c       	subi	r24, 0xC0	; 192
    cc08:	9f 4f       	sbci	r25, 0xFF	; 255
    cc0a:	60 81       	ld	r22, Z
    cc0c:	0e 94 9f 37 	call	0x6f3e	; 0x6f3e <EepromWriteByteUnSigned>

					sprintf_P(pTaskInfo->pBuf->consoleResponse, PSTR("AutoRun is %s"), (pTaskInfo->pBuf->initState==AUTORUN_ON) ? "ON":"OFF");
    cc10:	f7 01       	movw	r30, r14
    cc12:	a4 81       	ldd	r26, Z+4	; 0x04
    cc14:	b5 81       	ldd	r27, Z+5	; 0x05
    cc16:	a9 5f       	subi	r26, 0xF9	; 249
    cc18:	ba 4f       	sbci	r27, 0xFA	; 250
    cc1a:	8c 91       	ld	r24, X
    cc1c:	a7 50       	subi	r26, 0x07	; 7
    cc1e:	b5 40       	sbci	r27, 0x05	; 5
    cc20:	81 30       	cpi	r24, 0x01	; 1
    cc22:	19 f0       	breq	.+6      	; 0xcc2a <MBARI_CO2_ParseCommand+0x448>
    cc24:	2b e0       	ldi	r18, 0x0B	; 11
    cc26:	34 e0       	ldi	r19, 0x04	; 4
    cc28:	02 c0       	rjmp	.+4      	; 0xcc2e <MBARI_CO2_ParseCommand+0x44c>
    cc2a:	2f e0       	ldi	r18, 0x0F	; 15
    cc2c:	34 e0       	ldi	r19, 0x04	; 4
    cc2e:	00 d0       	rcall	.+0      	; 0xcc30 <MBARI_CO2_ParseCommand+0x44e>
    cc30:	00 d0       	rcall	.+0      	; 0xcc32 <MBARI_CO2_ParseCommand+0x450>
    cc32:	4d b7       	in	r20, 0x3d	; 61
    cc34:	5e b7       	in	r21, 0x3e	; 62
    cc36:	4f 5f       	subi	r20, 0xFF	; 255
    cc38:	5f 4f       	sbci	r21, 0xFF	; 255
    cc3a:	a9 5d       	subi	r26, 0xD9	; 217
    cc3c:	b9 4f       	sbci	r27, 0xF9	; 249
    cc3e:	ed b7       	in	r30, 0x3d	; 61
    cc40:	fe b7       	in	r31, 0x3e	; 62
    cc42:	b2 83       	std	Z+2, r27	; 0x02
    cc44:	a1 83       	std	Z+1, r26	; 0x01
    cc46:	82 e5       	ldi	r24, 0x52	; 82
    cc48:	99 e0       	ldi	r25, 0x09	; 9
    cc4a:	da 01       	movw	r26, r20
    cc4c:	13 96       	adiw	r26, 0x03	; 3
    cc4e:	9c 93       	st	X, r25
    cc50:	8e 93       	st	-X, r24
    cc52:	12 97       	sbiw	r26, 0x02	; 2
    cc54:	15 96       	adiw	r26, 0x05	; 5
    cc56:	3c 93       	st	X, r19
    cc58:	2e 93       	st	-X, r18
    cc5a:	14 97       	sbiw	r26, 0x04	; 4
    cc5c:	0e 94 51 f1 	call	0x1e2a2	; 0x1e2a2 <sprintf_P>
					pTaskInfo->pBuf->responseInfo.length = strlen(pTaskInfo->pBuf->consoleResponse);
    cc60:	f7 01       	movw	r30, r14
    cc62:	a4 81       	ldd	r26, Z+4	; 0x04
    cc64:	b5 81       	ldd	r27, Z+5	; 0x05
    cc66:	cd 01       	movw	r24, r26
    cc68:	89 5d       	subi	r24, 0xD9	; 217
    cc6a:	99 4f       	sbci	r25, 0xF9	; 249
    cc6c:	fc 01       	movw	r30, r24
    cc6e:	01 90       	ld	r0, Z+
    cc70:	00 20       	and	r0, r0
    cc72:	e9 f7       	brne	.-6      	; 0xcc6e <MBARI_CO2_ParseCommand+0x48c>
    cc74:	31 97       	sbiw	r30, 0x01	; 1
    cc76:	e8 1b       	sub	r30, r24
    cc78:	f9 0b       	sbc	r31, r25
    cc7a:	ae 5d       	subi	r26, 0xDE	; 222
    cc7c:	b9 4f       	sbci	r27, 0xF9	; 249
    cc7e:	ec 93       	st	X, r30
					pTaskInfo->pBuf->responseInfo.status = CONSOLE_RESPONSE_OK;
    cc80:	d7 01       	movw	r26, r14
    cc82:	14 96       	adiw	r26, 0x04	; 4
    cc84:	ed 91       	ld	r30, X+
    cc86:	fc 91       	ld	r31, X
    cc88:	15 97       	sbiw	r26, 0x05	; 5
    cc8a:	e0 5e       	subi	r30, 0xE0	; 224
    cc8c:	f9 4f       	sbci	r31, 0xF9	; 249
    cc8e:	81 e0       	ldi	r24, 0x01	; 1
    cc90:	80 83       	st	Z, r24
    cc92:	ed b7       	in	r30, 0x3d	; 61
    cc94:	fe b7       	in	r31, 0x3e	; 62
    cc96:	36 96       	adiw	r30, 0x06	; 6
    cc98:	0f b6       	in	r0, 0x3f	; 63
    cc9a:	f8 94       	cli
    cc9c:	fe bf       	out	0x3e, r31	; 62
    cc9e:	0f be       	out	0x3f, r0	; 63
    cca0:	ed bf       	out	0x3d, r30	; 61
		}
	}

	if(retval == SUCCESS)
	{
		memcpy_P(pTaskInfo->pBuf->consoleResponse, PSTR("OK"), 2);
    cca2:	d7 01       	movw	r26, r14
    cca4:	14 96       	adiw	r26, 0x04	; 4
    cca6:	8d 91       	ld	r24, X+
    cca8:	9c 91       	ld	r25, X
    ccaa:	15 97       	sbiw	r26, 0x05	; 5
    ccac:	89 5d       	subi	r24, 0xD9	; 217
    ccae:	99 4f       	sbci	r25, 0xF9	; 249
    ccb0:	6f e4       	ldi	r22, 0x4F	; 79
    ccb2:	79 e0       	ldi	r23, 0x09	; 9
    ccb4:	42 e0       	ldi	r20, 0x02	; 2
    ccb6:	50 e0       	ldi	r21, 0x00	; 0
    ccb8:	0e 94 ab ef 	call	0x1df56	; 0x1df56 <memcpy_P>
		pTaskInfo->pBuf->responseInfo.status = CONSOLE_RESPONSE_OK;
    ccbc:	d7 01       	movw	r26, r14
    ccbe:	14 96       	adiw	r26, 0x04	; 4
    ccc0:	ed 91       	ld	r30, X+
    ccc2:	fc 91       	ld	r31, X
    ccc4:	15 97       	sbiw	r26, 0x05	; 5
    ccc6:	e0 5e       	subi	r30, 0xE0	; 224
    ccc8:	f9 4f       	sbci	r31, 0xF9	; 249
    ccca:	81 e0       	ldi	r24, 0x01	; 1
    cccc:	80 83       	st	Z, r24
		pTaskInfo->pBuf->responseInfo.length = 2;
    ccce:	14 96       	adiw	r26, 0x04	; 4
    ccd0:	ed 91       	ld	r30, X+
    ccd2:	fc 91       	ld	r31, X
    ccd4:	15 97       	sbiw	r26, 0x05	; 5
    ccd6:	ee 5d       	subi	r30, 0xDE	; 222
    ccd8:	f9 4f       	sbci	r31, 0xF9	; 249
    ccda:	82 e0       	ldi	r24, 0x02	; 2
    ccdc:	80 83       	st	Z, r24
    ccde:	8f ef       	ldi	r24, 0xFF	; 255
    cce0:	01 c0       	rjmp	.+2      	; 0xcce4 <MBARI_CO2_ParseCommand+0x502>
    cce2:	80 e0       	ldi	r24, 0x00	; 0
	}

	return retval;
}
    cce4:	0f 90       	pop	r0
    cce6:	0f 90       	pop	r0
    cce8:	0f 90       	pop	r0
    ccea:	cf 91       	pop	r28
    ccec:	df 91       	pop	r29
    ccee:	1f 91       	pop	r17
    ccf0:	0f 91       	pop	r16
    ccf2:	ff 90       	pop	r15
    ccf4:	ef 90       	pop	r14
    ccf6:	df 90       	pop	r13
    ccf8:	cf 90       	pop	r12
    ccfa:	08 95       	ret

0000ccfc <MBARI_CO2_ParseConsole>:

	return SUCCESS;
}

void MBARI_CO2_ParseConsole(PMBARI_CO2_TASK pTaskInfo)
{
    ccfc:	cf 92       	push	r12
    ccfe:	df 92       	push	r13
    cd00:	ef 92       	push	r14
    cd02:	ff 92       	push	r15
    cd04:	0f 93       	push	r16
    cd06:	1f 93       	push	r17
    cd08:	df 93       	push	r29
    cd0a:	cf 93       	push	r28
    cd0c:	0f 92       	push	r0
    cd0e:	0f 92       	push	r0
    cd10:	cd b7       	in	r28, 0x3d	; 61
    cd12:	de b7       	in	r29, 0x3e	; 62
    cd14:	6c 01       	movw	r12, r24
	char* myCommand = consoleIn[pTaskInfo->taskID].cmd; 
    cd16:	dc 01       	movw	r26, r24
    cd18:	8c 91       	ld	r24, X
    cd1a:	90 e0       	ldi	r25, 0x00	; 0
    cd1c:	29 e0       	ldi	r18, 0x09	; 9
    cd1e:	31 e0       	ldi	r19, 0x01	; 1
    cd20:	82 9f       	mul	r24, r18
    cd22:	f0 01       	movw	r30, r0
    cd24:	83 9f       	mul	r24, r19
    cd26:	f0 0d       	add	r31, r0
    cd28:	92 9f       	mul	r25, r18
    cd2a:	f0 0d       	add	r31, r0
    cd2c:	11 24       	eor	r1, r1
    cd2e:	cf 01       	movw	r24, r30
    cd30:	8e 58       	subi	r24, 0x8E	; 142
    cd32:	92 46       	sbci	r25, 0x62	; 98
    cd34:	9a 83       	std	Y+2, r25	; 0x02
    cd36:	89 83       	std	Y+1, r24	; 0x01
	BOOL goodCommand = FALSE;
	uint8_t resultCode = 0;

	//sprintf_P(dbgMsg, PSTR("Parsing console: <%s>"), myCommand); SEND_MSG;

	myCommand[MAX_FILE_SIZE_IN - 1] = 0;			//Make sure command string is NULL terminated
    cd38:	ef 58       	subi	r30, 0x8F	; 143
    cd3a:	f1 46       	sbci	r31, 0x61	; 97
    cd3c:	10 82       	st	Z, r1

	memset(pTaskInfo->pBuf->tokenSeparatorList, 0, MAX_TOKEN_SEPARATORS);
    cd3e:	14 96       	adiw	r26, 0x04	; 4
    cd40:	8d 91       	ld	r24, X+
    cd42:	9c 91       	ld	r25, X
    cd44:	15 97       	sbiw	r26, 0x05	; 5
    cd46:	86 5f       	subi	r24, 0xF6	; 246
    cd48:	99 4f       	sbci	r25, 0xF9	; 249
    cd4a:	fc 01       	movw	r30, r24
    cd4c:	84 e1       	ldi	r24, 0x14	; 20
    cd4e:	df 01       	movw	r26, r30
    cd50:	1d 92       	st	X+, r1
    cd52:	8a 95       	dec	r24
    cd54:	e9 f7       	brne	.-6      	; 0xcd50 <MBARI_CO2_ParseConsole+0x54>
	strcat_P(pTaskInfo->pBuf->tokenSeparatorList, tokenListConsole);
    cd56:	f6 01       	movw	r30, r12
    cd58:	84 81       	ldd	r24, Z+4	; 0x04
    cd5a:	95 81       	ldd	r25, Z+5	; 0x05
    cd5c:	86 5f       	subi	r24, 0xF6	; 246
    cd5e:	99 4f       	sbci	r25, 0xF9	; 249
    cd60:	68 e3       	ldi	r22, 0x38	; 56
    cd62:	72 e0       	ldi	r23, 0x02	; 2
    cd64:	0e 94 b4 ef 	call	0x1df68	; 0x1df68 <strcat_P>

	result = strtok_r(myCommand, pTaskInfo->pBuf->tokenSeparatorList, &myCommand);
    cd68:	d6 01       	movw	r26, r12
    cd6a:	14 96       	adiw	r26, 0x04	; 4
    cd6c:	6d 91       	ld	r22, X+
    cd6e:	7c 91       	ld	r23, X
    cd70:	15 97       	sbiw	r26, 0x05	; 5
    cd72:	66 5f       	subi	r22, 0xF6	; 246
    cd74:	79 4f       	sbci	r23, 0xF9	; 249
    cd76:	89 81       	ldd	r24, Y+1	; 0x01
    cd78:	9a 81       	ldd	r25, Y+2	; 0x02
    cd7a:	7e 01       	movw	r14, r28
    cd7c:	08 94       	sec
    cd7e:	e1 1c       	adc	r14, r1
    cd80:	f1 1c       	adc	r15, r1
    cd82:	a7 01       	movw	r20, r14
    cd84:	0e 94 a0 f0 	call	0x1e140	; 0x1e140 <strtok_r>
    cd88:	8c 01       	movw	r16, r24
	resultCode = 1;				//No Command Received
	

	if(result != NULL)
    cd8a:	00 97       	sbiw	r24, 0x00	; 0
    cd8c:	11 f4       	brne	.+4      	; 0xcd92 <MBARI_CO2_ParseConsole+0x96>
    cd8e:	81 e0       	ldi	r24, 0x01	; 1
    cd90:	26 c0       	rjmp	.+76     	; 0xcdde <MBARI_CO2_ParseConsole+0xe2>
	{
		resultCode = 2;			//Unknown Parser Code
		if(strncasecmp_P(result, MBARI_CO2_ParserID, strlen_P(MBARI_CO2_ParserID)) == 0)
    cd92:	8a e3       	ldi	r24, 0x3A	; 58
    cd94:	99 e0       	ldi	r25, 0x09	; 9
    cd96:	0e 94 c6 ef 	call	0x1df8c	; 0x1df8c <strlen_P>
    cd9a:	ac 01       	movw	r20, r24
    cd9c:	c8 01       	movw	r24, r16
    cd9e:	6a e3       	ldi	r22, 0x3A	; 58
    cda0:	79 e0       	ldi	r23, 0x09	; 9
    cda2:	0e 94 cf ef 	call	0x1df9e	; 0x1df9e <strncasecmp_P>
    cda6:	89 2b       	or	r24, r25
    cda8:	29 f5       	brne	.+74     	; 0xcdf4 <MBARI_CO2_ParseConsole+0xf8>
		{
			resultCode = 3;		//Unknown command

			command = getCommand(&myCommand, MBARI_CO2_Commands[0], LEN_CO2_COMMANDS, NUM_CO2_COMMANDS, MBARI_CO2_CmdList, pTaskInfo->pBuf->tokenSeparatorList);
    cdaa:	d6 01       	movw	r26, r12
    cdac:	14 96       	adiw	r26, 0x04	; 4
    cdae:	ed 91       	ld	r30, X+
    cdb0:	fc 91       	ld	r31, X
    cdb2:	15 97       	sbiw	r26, 0x05	; 5
    cdb4:	e6 5f       	subi	r30, 0xF6	; 246
    cdb6:	f9 4f       	sbci	r31, 0xF9	; 249
    cdb8:	c7 01       	movw	r24, r14
    cdba:	6a ee       	ldi	r22, 0xEA	; 234
    cdbc:	78 e0       	ldi	r23, 0x08	; 8
    cdbe:	4a e0       	ldi	r20, 0x0A	; 10
    cdc0:	28 e0       	ldi	r18, 0x08	; 8
    cdc2:	0e e3       	ldi	r16, 0x3E	; 62
    cdc4:	19 e0       	ldi	r17, 0x09	; 9
    cdc6:	7f 01       	movw	r14, r30
    cdc8:	0e 94 1f 38 	call	0x703e	; 0x703e <getCommand>
    cdcc:	68 2f       	mov	r22, r24

			if(command != 0)
    cdce:	88 23       	and	r24, r24
    cdd0:	09 f0       	breq	.+2      	; 0xcdd4 <MBARI_CO2_ParseConsole+0xd8>
    cdd2:	82 c0       	rjmp	.+260    	; 0xced8 <MBARI_CO2_ParseConsole+0x1dc>
    cdd4:	18 c0       	rjmp	.+48     	; 0xce06 <MBARI_CO2_ParseConsole+0x10a>
		//sprintf_P(dbgMsg, PSTR("cmd = <%s><%s>"), myCommand, result); SEND_MSG;
	}

	if(resultCode != SUCCESS)
	{
		switch(resultCode)
    cdd6:	82 30       	cpi	r24, 0x02	; 2
    cdd8:	69 f0       	breq	.+26     	; 0xcdf4 <MBARI_CO2_ParseConsole+0xf8>
    cdda:	83 30       	cpi	r24, 0x03	; 3
    cddc:	a1 f0       	breq	.+40     	; 0xce06 <MBARI_CO2_ParseConsole+0x10a>
    cdde:	d6 01       	movw	r26, r12
    cde0:	14 96       	adiw	r26, 0x04	; 4
    cde2:	ed 91       	ld	r30, X+
    cde4:	fc 91       	ld	r31, X
    cde6:	15 97       	sbiw	r26, 0x05	; 5
    cde8:	81 30       	cpi	r24, 0x01	; 1
    cdea:	b1 f4       	brne	.+44     	; 0xce18 <MBARI_CO2_ParseConsole+0x11c>
		{
			case 1:
				pTaskInfo->pBuf->responseInfo.status = CONSOLE_RESPONSE_EMPTY_CMD;
    cdec:	e0 5e       	subi	r30, 0xE0	; 224
    cdee:	f9 4f       	sbci	r31, 0xF9	; 249
    cdf0:	8d e0       	ldi	r24, 0x0D	; 13
    cdf2:	15 c0       	rjmp	.+42     	; 0xce1e <MBARI_CO2_ParseConsole+0x122>
				break;
			case 2:
				pTaskInfo->pBuf->responseInfo.status = CONSOLE_RESPONSE_WRONG_DEVICE;
    cdf4:	d6 01       	movw	r26, r12
    cdf6:	14 96       	adiw	r26, 0x04	; 4
    cdf8:	ed 91       	ld	r30, X+
    cdfa:	fc 91       	ld	r31, X
    cdfc:	15 97       	sbiw	r26, 0x05	; 5
    cdfe:	e0 5e       	subi	r30, 0xE0	; 224
    ce00:	f9 4f       	sbci	r31, 0xF9	; 249
    ce02:	8e e0       	ldi	r24, 0x0E	; 14
    ce04:	0c c0       	rjmp	.+24     	; 0xce1e <MBARI_CO2_ParseConsole+0x122>
				break;
			case 3:
				pTaskInfo->pBuf->responseInfo.status = CONSOLE_RESPONSE_UNKNOWN_CMD;
    ce06:	d6 01       	movw	r26, r12
    ce08:	14 96       	adiw	r26, 0x04	; 4
    ce0a:	ed 91       	ld	r30, X+
    ce0c:	fc 91       	ld	r31, X
    ce0e:	15 97       	sbiw	r26, 0x05	; 5
    ce10:	e0 5e       	subi	r30, 0xE0	; 224
    ce12:	f9 4f       	sbci	r31, 0xF9	; 249
    ce14:	8a e0       	ldi	r24, 0x0A	; 10
    ce16:	03 c0       	rjmp	.+6      	; 0xce1e <MBARI_CO2_ParseConsole+0x122>
				break;
			default:
				pTaskInfo->pBuf->responseInfo.status = CONSOLE_RESPONSE_CMD_FAILED;
    ce18:	e0 5e       	subi	r30, 0xE0	; 224
    ce1a:	f9 4f       	sbci	r31, 0xF9	; 249
    ce1c:	8f e0       	ldi	r24, 0x0F	; 15
    ce1e:	80 83       	st	Z, r24
				break;
		}
	}

	MBARI_CO2_QueueConsoleResponse(pTaskInfo);
    ce20:	c6 01       	movw	r24, r12
    ce22:	0e 94 8a 61 	call	0xc314	; 0xc314 <MBARI_CO2_QueueConsoleResponse>

	memset(consoleIn[pTaskInfo->taskID].cmd, 0, MAX_FILE_SIZE_IN);
    ce26:	f6 01       	movw	r30, r12
    ce28:	80 81       	ld	r24, Z
    ce2a:	90 e0       	ldi	r25, 0x00	; 0
    ce2c:	29 e0       	ldi	r18, 0x09	; 9
    ce2e:	31 e0       	ldi	r19, 0x01	; 1
    ce30:	ac 01       	movw	r20, r24
    ce32:	42 9f       	mul	r20, r18
    ce34:	c0 01       	movw	r24, r0
    ce36:	43 9f       	mul	r20, r19
    ce38:	90 0d       	add	r25, r0
    ce3a:	52 9f       	mul	r21, r18
    ce3c:	90 0d       	add	r25, r0
    ce3e:	11 24       	eor	r1, r1
    ce40:	8e 58       	subi	r24, 0x8E	; 142
    ce42:	92 46       	sbci	r25, 0x62	; 98
    ce44:	fc 01       	movw	r30, r24
    ce46:	80 e0       	ldi	r24, 0x00	; 0
    ce48:	91 e0       	ldi	r25, 0x01	; 1
    ce4a:	df 01       	movw	r26, r30
    ce4c:	ac 01       	movw	r20, r24
    ce4e:	1d 92       	st	X+, r1
    ce50:	41 50       	subi	r20, 0x01	; 1
    ce52:	50 40       	sbci	r21, 0x00	; 0
    ce54:	e1 f7       	brne	.-8      	; 0xce4e <MBARI_CO2_ParseConsole+0x152>
	consoleIn[pTaskInfo->taskID].cmdSrcAddress = 0;
    ce56:	d6 01       	movw	r26, r12
    ce58:	8c 91       	ld	r24, X
    ce5a:	90 e0       	ldi	r25, 0x00	; 0
    ce5c:	82 9f       	mul	r24, r18
    ce5e:	f0 01       	movw	r30, r0
    ce60:	83 9f       	mul	r24, r19
    ce62:	f0 0d       	add	r31, r0
    ce64:	92 9f       	mul	r25, r18
    ce66:	f0 0d       	add	r31, r0
    ce68:	11 24       	eor	r1, r1
    ce6a:	e7 59       	subi	r30, 0x97	; 151
    ce6c:	f2 46       	sbci	r31, 0x62	; 98
    ce6e:	11 82       	std	Z+1, r1	; 0x01
    ce70:	10 82       	st	Z, r1
	consoleIn[pTaskInfo->taskID].functionCode = 0;
    ce72:	8c 91       	ld	r24, X
    ce74:	90 e0       	ldi	r25, 0x00	; 0
    ce76:	82 9f       	mul	r24, r18
    ce78:	f0 01       	movw	r30, r0
    ce7a:	83 9f       	mul	r24, r19
    ce7c:	f0 0d       	add	r31, r0
    ce7e:	92 9f       	mul	r25, r18
    ce80:	f0 0d       	add	r31, r0
    ce82:	11 24       	eor	r1, r1
    ce84:	e7 59       	subi	r30, 0x97	; 151
    ce86:	f2 46       	sbci	r31, 0x62	; 98
    ce88:	12 82       	std	Z+2, r1	; 0x02
	consoleIn[pTaskInfo->taskID].cmdSize = 0;
    ce8a:	8c 91       	ld	r24, X
    ce8c:	90 e0       	ldi	r25, 0x00	; 0
    ce8e:	82 9f       	mul	r24, r18
    ce90:	f0 01       	movw	r30, r0
    ce92:	83 9f       	mul	r24, r19
    ce94:	f0 0d       	add	r31, r0
    ce96:	92 9f       	mul	r25, r18
    ce98:	f0 0d       	add	r31, r0
    ce9a:	11 24       	eor	r1, r1
    ce9c:	e7 59       	subi	r30, 0x97	; 151
    ce9e:	f2 46       	sbci	r31, 0x62	; 98
    cea0:	14 82       	std	Z+4, r1	; 0x04
    cea2:	13 82       	std	Z+3, r1	; 0x03
	consoleIn[pTaskInfo->taskID].id = 0;
    cea4:	8c 91       	ld	r24, X
    cea6:	90 e0       	ldi	r25, 0x00	; 0
    cea8:	82 9f       	mul	r24, r18
    ceaa:	f0 01       	movw	r30, r0
    ceac:	83 9f       	mul	r24, r19
    ceae:	f0 0d       	add	r31, r0
    ceb0:	92 9f       	mul	r25, r18
    ceb2:	f0 0d       	add	r31, r0
    ceb4:	11 24       	eor	r1, r1
    ceb6:	e7 59       	subi	r30, 0x97	; 151
    ceb8:	f2 46       	sbci	r31, 0x62	; 98
    ceba:	15 82       	std	Z+5, r1	; 0x05
    cebc:	16 82       	std	Z+6, r1	; 0x06
    cebe:	17 82       	std	Z+7, r1	; 0x07
    cec0:	10 86       	std	Z+8, r1	; 0x08

	return;

}
    cec2:	0f 90       	pop	r0
    cec4:	0f 90       	pop	r0
    cec6:	cf 91       	pop	r28
    cec8:	df 91       	pop	r29
    ceca:	1f 91       	pop	r17
    cecc:	0f 91       	pop	r16
    cece:	ff 90       	pop	r15
    ced0:	ef 90       	pop	r14
    ced2:	df 90       	pop	r13
    ced4:	cf 90       	pop	r12
    ced6:	08 95       	ret
	}

	if(goodCommand == TRUE)
	{
		//sprintf_P(dbgMsg, PSTR("good message")); SEND_MSG;
		resultCode = MBARI_CO2_ParseCommand(pTaskInfo, command, myCommand);
    ced8:	49 81       	ldd	r20, Y+1	; 0x01
    ceda:	5a 81       	ldd	r21, Y+2	; 0x02
    cedc:	c6 01       	movw	r24, r12
    cede:	0e 94 f1 63 	call	0xc7e2	; 0xc7e2 <MBARI_CO2_ParseCommand>
	{
		//sprintf_P(dbgMsg, PSTR("bad .. code=%d"), resultCode); SEND_MSG;
		//sprintf_P(dbgMsg, PSTR("cmd = <%s><%s>"), myCommand, result); SEND_MSG;
	}

	if(resultCode != SUCCESS)
    cee2:	8f 3f       	cpi	r24, 0xFF	; 255
    cee4:	09 f0       	breq	.+2      	; 0xcee8 <MBARI_CO2_ParseConsole+0x1ec>
    cee6:	77 cf       	rjmp	.-274    	; 0xcdd6 <MBARI_CO2_ParseConsole+0xda>
    cee8:	9b cf       	rjmp	.-202    	; 0xce20 <MBARI_CO2_ParseConsole+0x124>

0000ceea <MBARI_CO2_Init>:
prog_char MBARI_CO2_CmdList[] = "ofarxsicOFARXSIC";

extern uint8_t ValidateCRC16(uint8_t* pBuffer, uint16_t size, uint16_t initValue);

uint8_t MBARI_CO2_Init(PMBARI_CO2_TASK pTaskInfo)
{
    ceea:	cf 92       	push	r12
    ceec:	df 92       	push	r13
    ceee:	ef 92       	push	r14
    cef0:	0f 93       	push	r16
    cef2:	df 93       	push	r29
    cef4:	cf 93       	push	r28
    cef6:	0f 92       	push	r0
    cef8:	0f 92       	push	r0
    cefa:	cd b7       	in	r28, 0x3d	; 61
    cefc:	de b7       	in	r29, 0x3e	; 62
    cefe:	6c 01       	movw	r12, r24
	uint8_t retval = SUCCESS;

	if(pTaskInfo->portNum == USER_PORT_1)
    cf00:	dc 01       	movw	r26, r24
    cf02:	11 96       	adiw	r26, 0x01	; 1
    cf04:	8c 91       	ld	r24, X
    cf06:	11 97       	sbiw	r26, 0x01	; 1
    cf08:	81 30       	cpi	r24, 0x01	; 1
    cf0a:	31 f4       	brne	.+12     	; 0xcf18 <MBARI_CO2_Init+0x2e>
		pTaskInfo->eepromAddress = EEPROM_PM1_START;
    cf0c:	80 e0       	ldi	r24, 0x00	; 0
    cf0e:	93 e0       	ldi	r25, 0x03	; 3
    cf10:	13 96       	adiw	r26, 0x03	; 3
    cf12:	9c 93       	st	X, r25
    cf14:	8e 93       	st	-X, r24
    cf16:	12 97       	sbiw	r26, 0x02	; 2
	if(pTaskInfo->portNum == USER_PORT_2)
    cf18:	f6 01       	movw	r30, r12
    cf1a:	81 81       	ldd	r24, Z+1	; 0x01
    cf1c:	82 30       	cpi	r24, 0x02	; 2
    cf1e:	21 f4       	brne	.+8      	; 0xcf28 <MBARI_CO2_Init+0x3e>
		pTaskInfo->eepromAddress = EEPROM_PM2_START;
    cf20:	80 e0       	ldi	r24, 0x00	; 0
    cf22:	95 e0       	ldi	r25, 0x05	; 5
    cf24:	93 83       	std	Z+3, r25	; 0x03
    cf26:	82 83       	std	Z+2, r24	; 0x02
	if(pTaskInfo->portNum == USER_PORT_3)
    cf28:	d6 01       	movw	r26, r12
    cf2a:	11 96       	adiw	r26, 0x01	; 1
    cf2c:	8c 91       	ld	r24, X
    cf2e:	11 97       	sbiw	r26, 0x01	; 1
    cf30:	83 30       	cpi	r24, 0x03	; 3
    cf32:	31 f4       	brne	.+12     	; 0xcf40 <MBARI_CO2_Init+0x56>
		pTaskInfo->eepromAddress = EEPROM_PM3_START;
    cf34:	80 e0       	ldi	r24, 0x00	; 0
    cf36:	97 e0       	ldi	r25, 0x07	; 7
    cf38:	13 96       	adiw	r26, 0x03	; 3
    cf3a:	9c 93       	st	X, r25
    cf3c:	8e 93       	st	-X, r24
    cf3e:	12 97       	sbiw	r26, 0x02	; 2


	if(pTaskInfo->pBuf != NULL)
    cf40:	d6 01       	movw	r26, r12
    cf42:	14 96       	adiw	r26, 0x04	; 4
    cf44:	ed 91       	ld	r30, X+
    cf46:	fc 91       	ld	r31, X
    cf48:	15 97       	sbiw	r26, 0x05	; 5
    cf4a:	30 97       	sbiw	r30, 0x00	; 0
    cf4c:	41 f0       	breq	.+16     	; 0xcf5e <MBARI_CO2_Init+0x74>
		memset(pTaskInfo->pBuf, 0, sizeof(MBARI_CO2_BUFFER));
    cf4e:	87 e2       	ldi	r24, 0x27	; 39
    cf50:	97 e0       	ldi	r25, 0x07	; 7
    cf52:	df 01       	movw	r26, r30
    cf54:	9c 01       	movw	r18, r24
    cf56:	1d 92       	st	X+, r1
    cf58:	21 50       	subi	r18, 0x01	; 1
    cf5a:	30 40       	sbci	r19, 0x00	; 0
    cf5c:	e1 f7       	brne	.-8      	; 0xcf56 <MBARI_CO2_Init+0x6c>

	OSuartInitPort(pTaskInfo->portNum, 38400, UART_MODE_EIGHT_DATA_BITS, UART_MODE_ONE_STOP_BIT, UART_MODE_NO_PARITY);	
    cf5e:	d6 01       	movw	r26, r12
    cf60:	11 96       	adiw	r26, 0x01	; 1
    cf62:	8c 91       	ld	r24, X
    cf64:	40 e0       	ldi	r20, 0x00	; 0
    cf66:	56 e9       	ldi	r21, 0x96	; 150
    cf68:	60 e0       	ldi	r22, 0x00	; 0
    cf6a:	70 e0       	ldi	r23, 0x00	; 0
    cf6c:	26 e0       	ldi	r18, 0x06	; 6
    cf6e:	00 e0       	ldi	r16, 0x00	; 0
    cf70:	ee 24       	eor	r14, r14
    cf72:	0e 94 38 33 	call	0x6670	; 0x6670 <OSuartInitPort>
	
	OSTimeDlyHMSM(0,0,1,0);
    cf76:	80 e0       	ldi	r24, 0x00	; 0
    cf78:	60 e0       	ldi	r22, 0x00	; 0
    cf7a:	41 e0       	ldi	r20, 0x01	; 1
    cf7c:	20 e0       	ldi	r18, 0x00	; 0
    cf7e:	30 e0       	ldi	r19, 0x00	; 0
    cf80:	0e 94 2a 2e 	call	0x5c54	; 0x5c54 <OSTimeDlyHMSM>
	
	
	EnablePIBModule(pTaskInfo->portNum, FALSE, FALSE);
    cf84:	f6 01       	movw	r30, r12
    cf86:	81 81       	ldd	r24, Z+1	; 0x01
    cf88:	60 e0       	ldi	r22, 0x00	; 0
    cf8a:	40 e0       	ldi	r20, 0x00	; 0
    cf8c:	0e 94 a2 38 	call	0x7144	; 0x7144 <EnablePIBModule>
	pTaskInfo->pBuf->isPowered = FALSE;
    cf90:	d6 01       	movw	r26, r12
    cf92:	14 96       	adiw	r26, 0x04	; 4
    cf94:	ed 91       	ld	r30, X+
    cf96:	fc 91       	ld	r31, X
    cf98:	15 97       	sbiw	r26, 0x05	; 5
    cf9a:	e0 50       	subi	r30, 0x00	; 0
    cf9c:	fb 4f       	sbci	r31, 0xFB	; 251
    cf9e:	11 92       	st	Z+, r1
	pTaskInfo->pBuf->isSampling = FALSE;
    cfa0:	10 82       	st	Z, r1

	pTaskInfo->pBuf->initState = 0xFF;
    cfa2:	36 96       	adiw	r30, 0x06	; 6
    cfa4:	8f ef       	ldi	r24, 0xFF	; 255
    cfa6:	80 83       	st	Z, r24
	EepromReadByte((void*)(pTaskInfo->eepromAddress + CO2_AUTORUN_STATE_OFFSET), (void*)&pTaskInfo->pBuf->initState);
    cfa8:	12 96       	adiw	r26, 0x02	; 2
    cfaa:	8d 91       	ld	r24, X+
    cfac:	9c 91       	ld	r25, X
    cfae:	13 97       	sbiw	r26, 0x03	; 3
    cfb0:	80 5c       	subi	r24, 0xC0	; 192
    cfb2:	9f 4f       	sbci	r25, 0xFF	; 255
    cfb4:	bf 01       	movw	r22, r30
    cfb6:	0e 94 38 37 	call	0x6e70	; 0x6e70 <EepromReadByte>
	if((pTaskInfo->pBuf->initState != AUTORUN_ON) && (pTaskInfo->pBuf->initState != AUTORUN_OFF))
    cfba:	d6 01       	movw	r26, r12
    cfbc:	14 96       	adiw	r26, 0x04	; 4
    cfbe:	ed 91       	ld	r30, X+
    cfc0:	fc 91       	ld	r31, X
    cfc2:	15 97       	sbiw	r26, 0x05	; 5
    cfc4:	e9 5f       	subi	r30, 0xF9	; 249
    cfc6:	fa 4f       	sbci	r31, 0xFA	; 250
    cfc8:	80 81       	ld	r24, Z
    cfca:	82 30       	cpi	r24, 0x02	; 2
    cfcc:	58 f0       	brcs	.+22     	; 0xcfe4 <MBARI_CO2_Init+0xfa>
	{
		pTaskInfo->pBuf->initState = AUTORUN_ON;
    cfce:	81 e0       	ldi	r24, 0x01	; 1
    cfd0:	80 83       	st	Z, r24
		EepromWriteByteUnSigned((void*)(pTaskInfo->eepromAddress + CO2_AUTORUN_STATE_OFFSET), pTaskInfo->pBuf->initState);
    cfd2:	12 96       	adiw	r26, 0x02	; 2
    cfd4:	8d 91       	ld	r24, X+
    cfd6:	9c 91       	ld	r25, X
    cfd8:	13 97       	sbiw	r26, 0x03	; 3
    cfda:	80 5c       	subi	r24, 0xC0	; 192
    cfdc:	9f 4f       	sbci	r25, 0xFF	; 255
    cfde:	61 e0       	ldi	r22, 0x01	; 1
    cfe0:	0e 94 9f 37 	call	0x6f3e	; 0x6f3e <EepromWriteByteUnSigned>
	}

	pTaskInfo->pBuf->isPowered = FALSE;
    cfe4:	d6 01       	movw	r26, r12
    cfe6:	14 96       	adiw	r26, 0x04	; 4
    cfe8:	ed 91       	ld	r30, X+
    cfea:	fc 91       	ld	r31, X
    cfec:	15 97       	sbiw	r26, 0x05	; 5
    cfee:	e0 50       	subi	r30, 0x00	; 0
    cff0:	fb 4f       	sbci	r31, 0xFB	; 251
    cff2:	11 92       	st	Z+, r1
	pTaskInfo->pBuf->isSampling = FALSE;
    cff4:	10 82       	st	Z, r1

	if(pTaskInfo->pBuf->initState == AUTORUN_ON)
    cff6:	36 96       	adiw	r30, 0x06	; 6
    cff8:	80 81       	ld	r24, Z
    cffa:	81 30       	cpi	r24, 0x01	; 1
    cffc:	69 f4       	brne	.+26     	; 0xd018 <MBARI_CO2_Init+0x12e>
	{
		char tempBuf[2] = " ";
    cffe:	80 91 1f 04 	lds	r24, 0x041F
    d002:	90 91 20 04 	lds	r25, 0x0420
    d006:	9a 83       	std	Y+2, r25	; 0x02
    d008:	89 83       	std	Y+1, r24	; 0x01
		MBARI_CO2_ParseCommand(pTaskInfo, 'r', tempBuf);
    d00a:	c6 01       	movw	r24, r12
    d00c:	62 e7       	ldi	r22, 0x72	; 114
    d00e:	ae 01       	movw	r20, r28
    d010:	4f 5f       	subi	r20, 0xFF	; 255
    d012:	5f 4f       	sbci	r21, 0xFF	; 255
    d014:	0e 94 f1 63 	call	0xc7e2	; 0xc7e2 <MBARI_CO2_ParseCommand>

//	EnablePIBModule(pTaskInfo->portNum, TRUE, FALSE);
//	pTaskInfo->pBuf->isPowered = TRUE;
//	pTaskInfo->pBuf->isSampling = TRUE;

	if(delay < CO2_POWER_DOWN_DELAY)
    d018:	80 91 43 19 	lds	r24, 0x1943
    d01c:	8c 33       	cpi	r24, 0x3C	; 60
    d01e:	18 f4       	brcc	.+6      	; 0xd026 <MBARI_CO2_Init+0x13c>
		delay = CO2_POWER_DOWN_DELAY;
    d020:	8c e3       	ldi	r24, 0x3C	; 60
    d022:	80 93 43 19 	sts	0x1943, r24
	EnablePIBModule(pTaskInfo->portNum, TRUE, FALSE);
	pTaskInfo->pBuf->isPowered = TRUE;
	pTaskInfo->pBuf->isSampling = TRUE;
	*/
	return retval;
}
    d026:	8f ef       	ldi	r24, 0xFF	; 255
    d028:	0f 90       	pop	r0
    d02a:	0f 90       	pop	r0
    d02c:	cf 91       	pop	r28
    d02e:	df 91       	pop	r29
    d030:	0f 91       	pop	r16
    d032:	ef 90       	pop	r14
    d034:	df 90       	pop	r13
    d036:	cf 90       	pop	r12
    d038:	08 95       	ret

0000d03a <SerialPortPassThroughGPCTD>:
}


void SerialPortPassThroughGPCTD(uint8_t port)
{
	readyForSerialPassThru = TRUE;
    d03a:	8f ef       	ldi	r24, 0xFF	; 255
    d03c:	80 93 9e a1 	sts	0xA19E, r24

	while(1)
	{
		OSTimeDlyHMSM(1,0,0,0);
    d040:	81 e0       	ldi	r24, 0x01	; 1
    d042:	60 e0       	ldi	r22, 0x00	; 0
    d044:	40 e0       	ldi	r20, 0x00	; 0
    d046:	20 e0       	ldi	r18, 0x00	; 0
    d048:	30 e0       	ldi	r19, 0x00	; 0
    d04a:	0e 94 2a 2e 	call	0x5c54	; 0x5c54 <OSTimeDlyHMSM>
    d04e:	f8 cf       	rjmp	.-16     	; 0xd040 <SerialPortPassThroughGPCTD+0x6>

0000d050 <SBGPCTD_QueueFile>:
	return SUCCESS;
}


uint8_t SBGPCTD_QueueFile(PSEABIRD_GPCTD_TASK pTaskInfo)
{
    d050:	cf 92       	push	r12
    d052:	df 92       	push	r13
    d054:	ef 92       	push	r14
    d056:	ff 92       	push	r15
    d058:	0f 93       	push	r16
    d05a:	1f 93       	push	r17
    d05c:	df 93       	push	r29
    d05e:	cf 93       	push	r28
    d060:	cd b7       	in	r28, 0x3d	; 61
    d062:	de b7       	in	r29, 0x3e	; 62
    d064:	62 97       	sbiw	r28, 0x12	; 18
    d066:	0f b6       	in	r0, 0x3f	; 63
    d068:	f8 94       	cli
    d06a:	de bf       	out	0x3e, r29	; 62
    d06c:	0f be       	out	0x3f, r0	; 63
    d06e:	cd bf       	out	0x3d, r28	; 61
    d070:	6c 01       	movw	r12, r24
	uint8_t retval = FAIL;
	PFS_REPORT pReport;
	uint8_t err = 0;
    d072:	19 82       	std	Y+1, r1	; 0x01
	tm* dateTime;
	time_t time;

	OSMutexPend(pMutexFloatQueue, INFINITE, &err);
    d074:	80 91 51 19 	lds	r24, 0x1951
    d078:	90 91 52 19 	lds	r25, 0x1952
    d07c:	60 e0       	ldi	r22, 0x00	; 0
    d07e:	70 e0       	ldi	r23, 0x00	; 0
    d080:	ae 01       	movw	r20, r28
    d082:	4f 5f       	subi	r20, 0xFF	; 255
    d084:	5f 4f       	sbci	r21, 0xFF	; 255
    d086:	0e 94 c2 28 	call	0x5184	; 0x5184 <OSMutexPend>

	pReport = (PFS_REPORT)&(txFloatData[headFloatTx]);
    d08a:	80 91 93 07 	lds	r24, 0x0793
    d08e:	90 e0       	ldi	r25, 0x00	; 0
    d090:	26 e3       	ldi	r18, 0x36	; 54
    d092:	31 e0       	ldi	r19, 0x01	; 1
    d094:	82 9f       	mul	r24, r18
    d096:	80 01       	movw	r16, r0
    d098:	83 9f       	mul	r24, r19
    d09a:	10 0d       	add	r17, r0
    d09c:	92 9f       	mul	r25, r18
    d09e:	10 0d       	add	r17, r0
    d0a0:	11 24       	eor	r1, r1
    d0a2:	03 5a       	subi	r16, 0xA3	; 163
    d0a4:	16 45       	sbci	r17, 0x56	; 86

	memset(pReport, 0, sizeof(FS_REPORT));
    d0a6:	8a e5       	ldi	r24, 0x5A	; 90
    d0a8:	d8 01       	movw	r26, r16
    d0aa:	1d 92       	st	X+, r1
    d0ac:	8a 95       	dec	r24
    d0ae:	e9 f7       	brne	.-6      	; 0xd0aa <SBGPCTD_QueueFile+0x5a>

	pReport->headers.length  = sizeof(FS_REPORT) + CRC16_SIZE;
    d0b0:	8c e5       	ldi	r24, 0x5C	; 92
    d0b2:	90 e0       	ldi	r25, 0x00	; 0
    d0b4:	f8 01       	movw	r30, r16
    d0b6:	91 83       	std	Z+1, r25	; 0x01
    d0b8:	80 83       	st	Z, r24
	pReport->headers.destination = FLOAT_FS_INTERFACE;
    d0ba:	85 e0       	ldi	r24, 0x05	; 5
    d0bc:	90 e0       	ldi	r25, 0x00	; 0
    d0be:	93 83       	std	Z+3, r25	; 0x03
    d0c0:	82 83       	std	Z+2, r24	; 0x02
	pReport->type = NEW_FILE_AVAILABLE;
    d0c2:	80 e6       	ldi	r24, 0x60	; 96
    d0c4:	84 87       	std	Z+12, r24	; 0x0c

	time=gettime();
    d0c6:	0e 94 3c 34 	call	0x6878	; 0x6878 <gettime>
    d0ca:	6a 83       	std	Y+2, r22	; 0x02
    d0cc:	7b 83       	std	Y+3, r23	; 0x03
    d0ce:	8c 83       	std	Y+4, r24	; 0x04
    d0d0:	9d 83       	std	Y+5, r25	; 0x05

	//Need to fill in these values appropriately
	pReport->newFile.fileSize = fileOutSize[pTaskInfo->portNum];
    d0d2:	d6 01       	movw	r26, r12
    d0d4:	11 96       	adiw	r26, 0x01	; 1
    d0d6:	ec 91       	ld	r30, X
    d0d8:	f0 e0       	ldi	r31, 0x00	; 0
    d0da:	ee 0f       	add	r30, r30
    d0dc:	ff 1f       	adc	r31, r31
    d0de:	ef 5a       	subi	r30, 0xAF	; 175
    d0e0:	f2 46       	sbci	r31, 0x62	; 98
    d0e2:	80 81       	ld	r24, Z
    d0e4:	91 81       	ldd	r25, Z+1	; 0x01
    d0e6:	a0 e0       	ldi	r26, 0x00	; 0
    d0e8:	b0 e0       	ldi	r27, 0x00	; 0
    d0ea:	f8 01       	movw	r30, r16
    d0ec:	82 8f       	std	Z+26, r24	; 0x1a
    d0ee:	93 8f       	std	Z+27, r25	; 0x1b
    d0f0:	a4 8f       	std	Z+28, r26	; 0x1c
    d0f2:	b5 8f       	std	Z+29, r27	; 0x1d
	dateTime = gmtime(&time);
    d0f4:	92 e0       	ldi	r25, 0x02	; 2
    d0f6:	e9 2e       	mov	r14, r25
    d0f8:	f1 2c       	mov	r15, r1
    d0fa:	ec 0e       	add	r14, r28
    d0fc:	fd 1e       	adc	r15, r29
    d0fe:	c7 01       	movw	r24, r14
    d100:	0e 94 32 35 	call	0x6a64	; 0x6a64 <gmtime>
    d104:	fc 01       	movw	r30, r24
	pReport->newFile.creationDate.day = dateTime->tm_mday;
    d106:	86 81       	ldd	r24, Z+6	; 0x06
    d108:	d8 01       	movw	r26, r16
    d10a:	92 96       	adiw	r26, 0x22	; 34
    d10c:	8c 93       	st	X, r24
    d10e:	92 97       	sbiw	r26, 0x22	; 34
	pReport->newFile.creationDate.hour = dateTime->tm_hour;
    d110:	84 81       	ldd	r24, Z+4	; 0x04
    d112:	5e 96       	adiw	r26, 0x1e	; 30
    d114:	8c 93       	st	X, r24
    d116:	5e 97       	sbiw	r26, 0x1e	; 30
	pReport->newFile.creationDate.minute = dateTime->tm_min;
    d118:	82 81       	ldd	r24, Z+2	; 0x02
    d11a:	5f 96       	adiw	r26, 0x1f	; 31
    d11c:	8c 93       	st	X, r24
    d11e:	5f 97       	sbiw	r26, 0x1f	; 31
	pReport->newFile.creationDate.month = dateTime->tm_mon + 1;
    d120:	80 85       	ldd	r24, Z+8	; 0x08
    d122:	8f 5f       	subi	r24, 0xFF	; 255
    d124:	91 96       	adiw	r26, 0x21	; 33
    d126:	8c 93       	st	X, r24
    d128:	91 97       	sbiw	r26, 0x21	; 33
	pReport->newFile.creationDate.second = dateTime->tm_sec;
    d12a:	80 81       	ld	r24, Z
    d12c:	90 96       	adiw	r26, 0x20	; 32
    d12e:	8c 93       	st	X, r24
    d130:	90 97       	sbiw	r26, 0x20	; 32
	pReport->newFile.creationDate.year = (uint8_t)(dateTime->tm_year - 100);
    d132:	82 85       	ldd	r24, Z+10	; 0x0a
    d134:	84 56       	subi	r24, 0x64	; 100
    d136:	93 96       	adiw	r26, 0x23	; 35
    d138:	8c 93       	st	X, r24
	dateTime = gmtime(&time);
    d13a:	c7 01       	movw	r24, r14
    d13c:	0e 94 32 35 	call	0x6a64	; 0x6a64 <gmtime>
    d140:	fc 01       	movw	r30, r24
	pReport->newFile.modifiedDate.day = dateTime->tm_mday;
    d142:	86 81       	ldd	r24, Z+6	; 0x06
    d144:	d8 01       	movw	r26, r16
    d146:	98 96       	adiw	r26, 0x28	; 40
    d148:	8c 93       	st	X, r24
    d14a:	98 97       	sbiw	r26, 0x28	; 40
	pReport->newFile.modifiedDate.hour = dateTime->tm_hour;
    d14c:	84 81       	ldd	r24, Z+4	; 0x04
    d14e:	94 96       	adiw	r26, 0x24	; 36
    d150:	8c 93       	st	X, r24
    d152:	94 97       	sbiw	r26, 0x24	; 36
	pReport->newFile.modifiedDate.minute = dateTime->tm_min;
    d154:	82 81       	ldd	r24, Z+2	; 0x02
    d156:	95 96       	adiw	r26, 0x25	; 37
    d158:	8c 93       	st	X, r24
    d15a:	95 97       	sbiw	r26, 0x25	; 37
	pReport->newFile.modifiedDate.month = dateTime->tm_mon + 1;
    d15c:	80 85       	ldd	r24, Z+8	; 0x08
    d15e:	8f 5f       	subi	r24, 0xFF	; 255
    d160:	97 96       	adiw	r26, 0x27	; 39
    d162:	8c 93       	st	X, r24
    d164:	97 97       	sbiw	r26, 0x27	; 39
	pReport->newFile.modifiedDate.second = dateTime->tm_sec;
    d166:	80 81       	ld	r24, Z
    d168:	96 96       	adiw	r26, 0x26	; 38
    d16a:	8c 93       	st	X, r24
    d16c:	96 97       	sbiw	r26, 0x26	; 38
	pReport->newFile.modifiedDate.year = (uint8_t)(dateTime->tm_year - 100);
    d16e:	82 85       	ldd	r24, Z+10	; 0x0a
    d170:	84 56       	subi	r24, 0x64	; 100
    d172:	99 96       	adiw	r26, 0x29	; 41
    d174:	8c 93       	st	X, r24
    d176:	99 97       	sbiw	r26, 0x29	; 41

	pReport->newFile.fileAttributes = 0;
    d178:	9a 96       	adiw	r26, 0x2a	; 42
    d17a:	1c 92       	st	X, r1
	memset(&pReport->newFile.calculatedMD5, 0, sizeof(MD5));
    d17c:	c8 01       	movw	r24, r16
    d17e:	cf 96       	adiw	r24, 0x3f	; 63
    d180:	20 e1       	ldi	r18, 0x10	; 16
    d182:	dc 01       	movw	r26, r24
    d184:	82 2f       	mov	r24, r18
    d186:	1d 92       	st	X+, r1
    d188:	8a 95       	dec	r24
    d18a:	e9 f7       	brne	.-6      	; 0xd186 <SBGPCTD_QueueFile+0x136>
	memset(&pReport->newFile.providedMD5, 0, sizeof(MD5));
    d18c:	c8 01       	movw	r24, r16
    d18e:	8d 96       	adiw	r24, 0x2d	; 45
    d190:	dc 01       	movw	r26, r24
    d192:	1d 92       	st	X+, r1
    d194:	2a 95       	dec	r18
    d196:	e9 f7       	brne	.-6      	; 0xd192 <SBGPCTD_QueueFile+0x142>
	pReport->newFile.calculatedCRC = 0;
    d198:	f8 01       	movw	r30, r16
    d19a:	16 ae       	std	Z+62, r1	; 0x3e
    d19c:	15 ae       	std	Z+61, r1	; 0x3d
	pReport->newFile.providedCRC = 0;
    d19e:	14 a6       	std	Z+44, r1	; 0x2c
    d1a0:	13 a6       	std	Z+43, r1	; 0x2b
	pReport->newFile.storageControllerAddress = mainTaskAddress | pTaskInfo->portNum;
    d1a2:	d6 01       	movw	r26, r12
    d1a4:	11 96       	adiw	r26, 0x01	; 1
    d1a6:	8c 91       	ld	r24, X
    d1a8:	90 e0       	ldi	r25, 0x00	; 0
    d1aa:	20 91 e4 03 	lds	r18, 0x03E4
    d1ae:	30 91 e5 03 	lds	r19, 0x03E5
    d1b2:	82 2b       	or	r24, r18
    d1b4:	93 2b       	or	r25, r19
    d1b6:	96 87       	std	Z+14, r25	; 0x0e
    d1b8:	85 87       	std	Z+13, r24	; 0x0d

	char fileName[13];
	sprintf(fileName, "%.8lX.txt", pTaskInfo->pBuf->fileID);
    d1ba:	ed b7       	in	r30, 0x3d	; 61
    d1bc:	fe b7       	in	r31, 0x3e	; 62
    d1be:	38 97       	sbiw	r30, 0x08	; 8
    d1c0:	0f b6       	in	r0, 0x3f	; 63
    d1c2:	f8 94       	cli
    d1c4:	fe bf       	out	0x3e, r31	; 62
    d1c6:	0f be       	out	0x3f, r0	; 63
    d1c8:	ed bf       	out	0x3d, r30	; 61
    d1ca:	2d b7       	in	r18, 0x3d	; 61
    d1cc:	3e b7       	in	r19, 0x3e	; 62
    d1ce:	2f 5f       	subi	r18, 0xFF	; 255
    d1d0:	3f 4f       	sbci	r19, 0xFF	; 255
    d1d2:	86 e0       	ldi	r24, 0x06	; 6
    d1d4:	e8 2e       	mov	r14, r24
    d1d6:	f1 2c       	mov	r15, r1
    d1d8:	ec 0e       	add	r14, r28
    d1da:	fd 1e       	adc	r15, r29
    d1dc:	f2 82       	std	Z+2, r15	; 0x02
    d1de:	e1 82       	std	Z+1, r14	; 0x01
    d1e0:	81 e2       	ldi	r24, 0x21	; 33
    d1e2:	94 e0       	ldi	r25, 0x04	; 4
    d1e4:	d9 01       	movw	r26, r18
    d1e6:	13 96       	adiw	r26, 0x03	; 3
    d1e8:	9c 93       	st	X, r25
    d1ea:	8e 93       	st	-X, r24
    d1ec:	12 97       	sbiw	r26, 0x02	; 2
    d1ee:	d6 01       	movw	r26, r12
    d1f0:	14 96       	adiw	r26, 0x04	; 4
    d1f2:	ed 91       	ld	r30, X+
    d1f4:	fc 91       	ld	r31, X
    d1f6:	15 97       	sbiw	r26, 0x05	; 5
    d1f8:	e0 5f       	subi	r30, 0xF0	; 240
    d1fa:	f6 4f       	sbci	r31, 0xF6	; 246
    d1fc:	80 81       	ld	r24, Z
    d1fe:	91 81       	ldd	r25, Z+1	; 0x01
    d200:	a2 81       	ldd	r26, Z+2	; 0x02
    d202:	b3 81       	ldd	r27, Z+3	; 0x03
    d204:	f9 01       	movw	r30, r18
    d206:	84 83       	std	Z+4, r24	; 0x04
    d208:	95 83       	std	Z+5, r25	; 0x05
    d20a:	a6 83       	std	Z+6, r26	; 0x06
    d20c:	b7 83       	std	Z+7, r27	; 0x07
    d20e:	0e 94 2d f1 	call	0x1e25a	; 0x1e25a <sprintf>

	DotToPad(pReport->newFile.fileName, fileName);
    d212:	8d b7       	in	r24, 0x3d	; 61
    d214:	9e b7       	in	r25, 0x3e	; 62
    d216:	08 96       	adiw	r24, 0x08	; 8
    d218:	0f b6       	in	r0, 0x3f	; 63
    d21a:	f8 94       	cli
    d21c:	9e bf       	out	0x3e, r25	; 62
    d21e:	0f be       	out	0x3f, r0	; 63
    d220:	8d bf       	out	0x3d, r24	; 61
    d222:	c8 01       	movw	r24, r16
    d224:	0f 96       	adiw	r24, 0x0f	; 15
    d226:	b7 01       	movw	r22, r14
    d228:	0e 94 87 3e 	call	0x7d0e	; 0x7d0e <DotToPad>

	(headFloatTx < (MAX_FLOAT_BUFFERS - 1)) ? (headFloatTx++) : (headFloatTx = 0);
    d22c:	80 91 93 07 	lds	r24, 0x0793
    d230:	87 30       	cpi	r24, 0x07	; 7
    d232:	20 f4       	brcc	.+8      	; 0xd23c <SBGPCTD_QueueFile+0x1ec>
    d234:	8f 5f       	subi	r24, 0xFF	; 255
    d236:	80 93 93 07 	sts	0x0793, r24
    d23a:	02 c0       	rjmp	.+4      	; 0xd240 <SBGPCTD_QueueFile+0x1f0>
    d23c:	10 92 93 07 	sts	0x0793, r1
	
	if(headFloatTx == tailFloatTx)
    d240:	90 91 93 07 	lds	r25, 0x0793
    d244:	80 91 94 07 	lds	r24, 0x0794
    d248:	98 17       	cp	r25, r24
    d24a:	41 f4       	brne	.+16     	; 0xd25c <SBGPCTD_QueueFile+0x20c>
	{
		(tailFloatTx < (MAX_FLOAT_BUFFERS - 1)) ? (tailFloatTx++) : (tailFloatTx = 0);
    d24c:	97 30       	cpi	r25, 0x07	; 7
    d24e:	20 f4       	brcc	.+8      	; 0xd258 <SBGPCTD_QueueFile+0x208>
    d250:	9f 5f       	subi	r25, 0xFF	; 255
    d252:	90 93 94 07 	sts	0x0794, r25
    d256:	02 c0       	rjmp	.+4      	; 0xd25c <SBGPCTD_QueueFile+0x20c>
    d258:	10 92 94 07 	sts	0x0794, r1
	}

	OSMutexPost(pMutexFloatQueue);
    d25c:	80 91 51 19 	lds	r24, 0x1951
    d260:	90 91 52 19 	lds	r25, 0x1952
    d264:	0e 94 36 27 	call	0x4e6c	; 0x4e6c <OSMutexPost>

	return retval;
}
    d268:	80 e0       	ldi	r24, 0x00	; 0
    d26a:	62 96       	adiw	r28, 0x12	; 18
    d26c:	0f b6       	in	r0, 0x3f	; 63
    d26e:	f8 94       	cli
    d270:	de bf       	out	0x3e, r29	; 62
    d272:	0f be       	out	0x3f, r0	; 63
    d274:	cd bf       	out	0x3d, r28	; 61
    d276:	cf 91       	pop	r28
    d278:	df 91       	pop	r29
    d27a:	1f 91       	pop	r17
    d27c:	0f 91       	pop	r16
    d27e:	ff 90       	pop	r15
    d280:	ef 90       	pop	r14
    d282:	df 90       	pop	r13
    d284:	cf 90       	pop	r12
    d286:	08 95       	ret

0000d288 <SBGPCTD_CreateStatusResponse>:
	return retval;
}


uint8_t SBGPCTD_CreateStatusResponse(PSEABIRD_GPCTD_TASK pTaskInfo, uint8_t status)
{
    d288:	ef 92       	push	r14
    d28a:	ff 92       	push	r15
    d28c:	0f 93       	push	r16
    d28e:	1f 93       	push	r17
    d290:	cf 93       	push	r28
    d292:	df 93       	push	r29
    d294:	ec 01       	movw	r28, r24
	memset(pTaskInfo->pBuf->statusConstructor, 0, 192);
    d296:	8c 81       	ldd	r24, Y+4	; 0x04
    d298:	9d 81       	ldd	r25, Y+5	; 0x05
    d29a:	80 57       	subi	r24, 0x70	; 112
    d29c:	98 4f       	sbci	r25, 0xF8	; 248
    d29e:	fc 01       	movw	r30, r24
    d2a0:	80 ec       	ldi	r24, 0xC0	; 192
    d2a2:	df 01       	movw	r26, r30
    d2a4:	1d 92       	st	X+, r1
    d2a6:	8a 95       	dec	r24
    d2a8:	e9 f7       	brne	.-6      	; 0xd2a4 <SBGPCTD_CreateStatusResponse+0x1c>
	memset(pTaskInfo->pBuf->consoleResponse, 0, 256);
    d2aa:	8c 81       	ldd	r24, Y+4	; 0x04
    d2ac:	9d 81       	ldd	r25, Y+5	; 0x05
    d2ae:	80 5f       	subi	r24, 0xF0	; 240
    d2b0:	97 4f       	sbci	r25, 0xF7	; 247
    d2b2:	fc 01       	movw	r30, r24
    d2b4:	80 e0       	ldi	r24, 0x00	; 0
    d2b6:	91 e0       	ldi	r25, 0x01	; 1
    d2b8:	df 01       	movw	r26, r30
    d2ba:	9c 01       	movw	r18, r24
    d2bc:	1d 92       	st	X+, r1
    d2be:	21 50       	subi	r18, 0x01	; 1
    d2c0:	30 40       	sbci	r19, 0x00	; 0
    d2c2:	e1 f7       	brne	.-8      	; 0xd2bc <SBGPCTD_CreateStatusResponse+0x34>
    d2c4:	8c 81       	ldd	r24, Y+4	; 0x04
    d2c6:	9d 81       	ldd	r25, Y+5	; 0x05

	if(status == SUCCESS)
    d2c8:	6f 3f       	cpi	r22, 0xFF	; 255
    d2ca:	29 f4       	brne	.+10     	; 0xd2d6 <SBGPCTD_CreateStatusResponse+0x4e>
		strcat_P(pTaskInfo->pBuf->statusConstructor, statusGPCTD_OK);
    d2cc:	80 57       	subi	r24, 0x70	; 112
    d2ce:	98 4f       	sbci	r25, 0xF8	; 248
    d2d0:	64 ed       	ldi	r22, 0xD4	; 212
    d2d2:	7a e0       	ldi	r23, 0x0A	; 10
    d2d4:	04 c0       	rjmp	.+8      	; 0xd2de <SBGPCTD_CreateStatusResponse+0x56>
	else
		strcat_P(pTaskInfo->pBuf->statusConstructor, statusGPCTD_Fail);
    d2d6:	80 57       	subi	r24, 0x70	; 112
    d2d8:	98 4f       	sbci	r25, 0xF8	; 248
    d2da:	6d ed       	ldi	r22, 0xDD	; 221
    d2dc:	7a e0       	ldi	r23, 0x0A	; 10
    d2de:	0e 94 b4 ef 	call	0x1df68	; 0x1df68 <strcat_P>

	strcat_P(pTaskInfo->pBuf->statusConstructor, statusGPCTD_Msg2);
    d2e2:	8c 81       	ldd	r24, Y+4	; 0x04
    d2e4:	9d 81       	ldd	r25, Y+5	; 0x05
    d2e6:	80 57       	subi	r24, 0x70	; 112
    d2e8:	98 4f       	sbci	r25, 0xF8	; 248
    d2ea:	65 ee       	ldi	r22, 0xE5	; 229
    d2ec:	7a e0       	ldi	r23, 0x0A	; 10
    d2ee:	0e 94 b4 ef 	call	0x1df68	; 0x1df68 <strcat_P>
	if(pTaskInfo->pBuf->powerCTD == TRUE)
    d2f2:	ec 81       	ldd	r30, Y+4	; 0x04
    d2f4:	fd 81       	ldd	r31, Y+5	; 0x05
    d2f6:	e8 5a       	subi	r30, 0xA8	; 168
    d2f8:	fa 4f       	sbci	r31, 0xFA	; 250
    d2fa:	80 81       	ld	r24, Z
    d2fc:	e8 5c       	subi	r30, 0xC8	; 200
    d2fe:	fd 4f       	sbci	r31, 0xFD	; 253
    d300:	8f 3f       	cpi	r24, 0xFF	; 255
    d302:	21 f4       	brne	.+8      	; 0xd30c <SBGPCTD_CreateStatusResponse+0x84>
		strcat_P(pTaskInfo->pBuf->statusConstructor, statusGPCTD_On);
    d304:	cf 01       	movw	r24, r30
    d306:	6d ec       	ldi	r22, 0xCD	; 205
    d308:	7a e0       	ldi	r23, 0x0A	; 10
    d30a:	03 c0       	rjmp	.+6      	; 0xd312 <SBGPCTD_CreateStatusResponse+0x8a>
	else
		strcat_P(pTaskInfo->pBuf->statusConstructor, statusGPCTD_Off);
    d30c:	cf 01       	movw	r24, r30
    d30e:	60 ed       	ldi	r22, 0xD0	; 208
    d310:	7a e0       	ldi	r23, 0x0A	; 10
    d312:	0e 94 b4 ef 	call	0x1df68	; 0x1df68 <strcat_P>

	strcat_P(pTaskInfo->pBuf->statusConstructor, statusGPCTD_Msg3);
    d316:	8c 81       	ldd	r24, Y+4	; 0x04
    d318:	9d 81       	ldd	r25, Y+5	; 0x05
    d31a:	80 57       	subi	r24, 0x70	; 112
    d31c:	98 4f       	sbci	r25, 0xF8	; 248
    d31e:	6b ee       	ldi	r22, 0xEB	; 235
    d320:	7a e0       	ldi	r23, 0x0A	; 10
    d322:	0e 94 b4 ef 	call	0x1df68	; 0x1df68 <strcat_P>
	if(pTaskInfo->pBuf->sampleCTD == TRUE)
    d326:	ec 81       	ldd	r30, Y+4	; 0x04
    d328:	fd 81       	ldd	r31, Y+5	; 0x05
    d32a:	e9 5a       	subi	r30, 0xA9	; 169
    d32c:	fa 4f       	sbci	r31, 0xFA	; 250
    d32e:	80 81       	ld	r24, Z
    d330:	e7 5c       	subi	r30, 0xC7	; 199
    d332:	fd 4f       	sbci	r31, 0xFD	; 253
    d334:	8f 3f       	cpi	r24, 0xFF	; 255
    d336:	21 f4       	brne	.+8      	; 0xd340 <SBGPCTD_CreateStatusResponse+0xb8>
		strcat_P(pTaskInfo->pBuf->statusConstructor, statusGPCTD_On);
    d338:	cf 01       	movw	r24, r30
    d33a:	6d ec       	ldi	r22, 0xCD	; 205
    d33c:	7a e0       	ldi	r23, 0x0A	; 10
    d33e:	03 c0       	rjmp	.+6      	; 0xd346 <SBGPCTD_CreateStatusResponse+0xbe>
	else
		strcat_P(pTaskInfo->pBuf->statusConstructor, statusGPCTD_Off);
    d340:	cf 01       	movw	r24, r30
    d342:	60 ed       	ldi	r22, 0xD0	; 208
    d344:	7a e0       	ldi	r23, 0x0A	; 10
    d346:	0e 94 b4 ef 	call	0x1df68	; 0x1df68 <strcat_P>



	if(pTaskInfo->pBuf->destination >= 0x100)
    d34a:	ec 81       	ldd	r30, Y+4	; 0x04
    d34c:	fd 81       	ldd	r31, Y+5	; 0x05
    d34e:	eb 5f       	subi	r30, 0xFB	; 251
    d350:	fa 4f       	sbci	r31, 0xFA	; 250
    d352:	80 81       	ld	r24, Z
    d354:	91 81       	ldd	r25, Z+1	; 0x01
    d356:	e5 57       	subi	r30, 0x75	; 117
    d358:	fd 4f       	sbci	r31, 0xFD	; 253
    d35a:	8f 3f       	cpi	r24, 0xFF	; 255
    d35c:	91 05       	cpc	r25, r1
    d35e:	29 f0       	breq	.+10     	; 0xd36a <SBGPCTD_CreateStatusResponse+0xe2>
    d360:	20 f0       	brcs	.+8      	; 0xd36a <SBGPCTD_CreateStatusResponse+0xe2>
		strcat_P(pTaskInfo->pBuf->statusConstructor, statusGPCTD_Msg4);
    d362:	cf 01       	movw	r24, r30
    d364:	63 ef       	ldi	r22, 0xF3	; 243
    d366:	7a e0       	ldi	r23, 0x0A	; 10
    d368:	03 c0       	rjmp	.+6      	; 0xd370 <SBGPCTD_CreateStatusResponse+0xe8>
	else
		strcat_P(pTaskInfo->pBuf->statusConstructor, statusGPCTD_Msg5);
    d36a:	cf 01       	movw	r24, r30
    d36c:	61 e4       	ldi	r22, 0x41	; 65
    d36e:	7b e0       	ldi	r23, 0x0B	; 11
    d370:	0e 94 b4 ef 	call	0x1df68	; 0x1df68 <strcat_P>

	strcat_P(pTaskInfo->pBuf->statusConstructor, statusGPCTD_Msg6);
    d374:	8c 81       	ldd	r24, Y+4	; 0x04
    d376:	9d 81       	ldd	r25, Y+5	; 0x05
    d378:	80 57       	subi	r24, 0x70	; 112
    d37a:	98 4f       	sbci	r25, 0xF8	; 248
    d37c:	6e e8       	ldi	r22, 0x8E	; 142
    d37e:	7b e0       	ldi	r23, 0x0B	; 11
    d380:	0e 94 b4 ef 	call	0x1df68	; 0x1df68 <strcat_P>
	if(pTaskInfo->pBuf->useO2 != USE_O2)
    d384:	ec 81       	ldd	r30, Y+4	; 0x04
    d386:	fd 81       	ldd	r31, Y+5	; 0x05
    d388:	e7 5a       	subi	r30, 0xA7	; 167
    d38a:	fa 4f       	sbci	r31, 0xFA	; 250
    d38c:	80 81       	ld	r24, Z
    d38e:	e9 5c       	subi	r30, 0xC9	; 201
    d390:	fd 4f       	sbci	r31, 0xFD	; 253
    d392:	81 30       	cpi	r24, 0x01	; 1
    d394:	21 f0       	breq	.+8      	; 0xd39e <SBGPCTD_CreateStatusResponse+0x116>
		strcat_P(pTaskInfo->pBuf->statusConstructor, statusGPCTD_No);
    d396:	cf 01       	movw	r24, r30
    d398:	67 ea       	ldi	r22, 0xA7	; 167
    d39a:	7b e0       	ldi	r23, 0x0B	; 11
    d39c:	03 c0       	rjmp	.+6      	; 0xd3a4 <SBGPCTD_CreateStatusResponse+0x11c>
	else
		strcat_P(pTaskInfo->pBuf->statusConstructor, statusGPCTD_Yes);
    d39e:	cf 01       	movw	r24, r30
    d3a0:	63 ea       	ldi	r22, 0xA3	; 163
    d3a2:	7b e0       	ldi	r23, 0x0B	; 11
    d3a4:	0e 94 b4 ef 	call	0x1df68	; 0x1df68 <strcat_P>

	strcat_P(pTaskInfo->pBuf->statusConstructor, statusGPCTD_Msg7);
    d3a8:	8c 81       	ldd	r24, Y+4	; 0x04
    d3aa:	9d 81       	ldd	r25, Y+5	; 0x05
    d3ac:	80 57       	subi	r24, 0x70	; 112
    d3ae:	98 4f       	sbci	r25, 0xF8	; 248
    d3b0:	68 e9       	ldi	r22, 0x98	; 152
    d3b2:	7b e0       	ldi	r23, 0x0B	; 11
    d3b4:	0e 94 b4 ef 	call	0x1df68	; 0x1df68 <strcat_P>
	if(pTaskInfo->pBuf->initState == AUTORUN_ON)
    d3b8:	ec 81       	ldd	r30, Y+4	; 0x04
    d3ba:	fd 81       	ldd	r31, Y+5	; 0x05
    d3bc:	e0 50       	subi	r30, 0x00	; 0
    d3be:	fb 4f       	sbci	r31, 0xFB	; 251
    d3c0:	80 81       	ld	r24, Z
    d3c2:	e0 57       	subi	r30, 0x70	; 112
    d3c4:	fd 4f       	sbci	r31, 0xFD	; 253
    d3c6:	81 30       	cpi	r24, 0x01	; 1
    d3c8:	21 f4       	brne	.+8      	; 0xd3d2 <SBGPCTD_CreateStatusResponse+0x14a>
		strcat_P(pTaskInfo->pBuf->statusConstructor, statusGPCTD_On);
    d3ca:	cf 01       	movw	r24, r30
    d3cc:	6d ec       	ldi	r22, 0xCD	; 205
    d3ce:	7a e0       	ldi	r23, 0x0A	; 10
    d3d0:	03 c0       	rjmp	.+6      	; 0xd3d8 <SBGPCTD_CreateStatusResponse+0x150>
	else
		strcat_P(pTaskInfo->pBuf->statusConstructor, statusGPCTD_Off);
    d3d2:	cf 01       	movw	r24, r30
    d3d4:	60 ed       	ldi	r22, 0xD0	; 208
    d3d6:	7a e0       	ldi	r23, 0x0A	; 10
    d3d8:	0e 94 b4 ef 	call	0x1df68	; 0x1df68 <strcat_P>




	sprintf((char*)pTaskInfo->pBuf->consoleResponse, pTaskInfo->pBuf->statusConstructor, 
    d3dc:	ac 81       	ldd	r26, Y+4	; 0x04
    d3de:	bd 81       	ldd	r27, Y+5	; 0x05
    d3e0:	af 5f       	subi	r26, 0xFF	; 255
    d3e2:	ba 4f       	sbci	r27, 0xFA	; 250
    d3e4:	0d 91       	ld	r16, X+
    d3e6:	1d 91       	ld	r17, X+
    d3e8:	6d 91       	ld	r22, X+
    d3ea:	7c 91       	ld	r23, X
    d3ec:	11 97       	sbiw	r26, 0x01	; 1
    d3ee:	aa 5e       	subi	r26, 0xEA	; 234
    d3f0:	bb 4f       	sbci	r27, 0xFB	; 251
    d3f2:	4d 91       	ld	r20, X+
    d3f4:	5c 91       	ld	r21, X
    d3f6:	11 97       	sbiw	r26, 0x01	; 1
    d3f8:	17 96       	adiw	r26, 0x07	; 7
    d3fa:	2d 91       	ld	r18, X+
    d3fc:	3c 91       	ld	r19, X
    d3fe:	11 97       	sbiw	r26, 0x01	; 1
    d400:	8e 91       	ld	r24, -X
    d402:	af 51       	subi	r26, 0x1F	; 31
    d404:	b9 40       	sbci	r27, 0x09	; 9
    d406:	88 23       	and	r24, r24
    d408:	19 f4       	brne	.+6      	; 0xd410 <SBGPCTD_CreateStatusResponse+0x188>
    d40a:	8b e2       	ldi	r24, 0x2B	; 43
    d40c:	94 e0       	ldi	r25, 0x04	; 4
    d40e:	02 c0       	rjmp	.+4      	; 0xd414 <SBGPCTD_CreateStatusResponse+0x18c>
    d410:	8f e2       	ldi	r24, 0x2F	; 47
    d412:	94 e0       	ldi	r25, 0x04	; 4
    d414:	ed b7       	in	r30, 0x3d	; 61
    d416:	fe b7       	in	r31, 0x3e	; 62
    d418:	70 97       	sbiw	r30, 0x10	; 16
    d41a:	0f b6       	in	r0, 0x3f	; 63
    d41c:	f8 94       	cli
    d41e:	fe bf       	out	0x3e, r31	; 62
    d420:	0f be       	out	0x3f, r0	; 63
    d422:	ed bf       	out	0x3d, r30	; 61
    d424:	ed b6       	in	r14, 0x3d	; 61
    d426:	fe b6       	in	r15, 0x3e	; 62
    d428:	08 94       	sec
    d42a:	e1 1c       	adc	r14, r1
    d42c:	f1 1c       	adc	r15, r1
    d42e:	a0 5f       	subi	r26, 0xF0	; 240
    d430:	b7 4f       	sbci	r27, 0xF7	; 247
    d432:	b2 83       	std	Z+2, r27	; 0x02
    d434:	a1 83       	std	Z+1, r26	; 0x01
    d436:	a0 58       	subi	r26, 0x80	; 128
    d438:	b0 40       	sbci	r27, 0x00	; 0
    d43a:	f7 01       	movw	r30, r14
    d43c:	b3 83       	std	Z+3, r27	; 0x03
    d43e:	a2 83       	std	Z+2, r26	; 0x02
    d440:	15 83       	std	Z+5, r17	; 0x05
    d442:	04 83       	std	Z+4, r16	; 0x04
    d444:	77 83       	std	Z+7, r23	; 0x07
    d446:	66 83       	std	Z+6, r22	; 0x06
    d448:	51 87       	std	Z+9, r21	; 0x09
    d44a:	40 87       	std	Z+8, r20	; 0x08
    d44c:	33 87       	std	Z+11, r19	; 0x0b
    d44e:	22 87       	std	Z+10, r18	; 0x0a
    d450:	95 87       	std	Z+13, r25	; 0x0d
    d452:	84 87       	std	Z+12, r24	; 0x0c
    d454:	ab 58       	subi	r26, 0x8B	; 139
    d456:	b2 40       	sbci	r27, 0x02	; 2
    d458:	8d 91       	ld	r24, X+
    d45a:	9c 91       	ld	r25, X
    d45c:	97 87       	std	Z+15, r25	; 0x0f
    d45e:	86 87       	std	Z+14, r24	; 0x0e
    d460:	0e 94 2d f1 	call	0x1e25a	; 0x1e25a <sprintf>
			pTaskInfo->pBuf->sampleRate, pTaskInfo->pBuf->samplePacketSize, 
			pTaskInfo->pBuf->offTime, pTaskInfo->pBuf->flushTime, 
			pTaskInfo->pBuf->sleeping ? "ON":"OFF", pTaskInfo->pBuf->destination);

	pTaskInfo->pBuf->responseInfo.status = CONSOLE_RESPONSE_OK;
    d464:	ec 81       	ldd	r30, Y+4	; 0x04
    d466:	fd 81       	ldd	r31, Y+5	; 0x05
    d468:	eb 58       	subi	r30, 0x8B	; 139
    d46a:	f8 4f       	sbci	r31, 0xF8	; 248
    d46c:	81 e0       	ldi	r24, 0x01	; 1
    d46e:	80 83       	st	Z, r24
	pTaskInfo->pBuf->responseInfo.length = strlen(pTaskInfo->pBuf->consoleResponse);
    d470:	ac 81       	ldd	r26, Y+4	; 0x04
    d472:	bd 81       	ldd	r27, Y+5	; 0x05
    d474:	cd 01       	movw	r24, r26
    d476:	80 5f       	subi	r24, 0xF0	; 240
    d478:	97 4f       	sbci	r25, 0xF7	; 247
    d47a:	fc 01       	movw	r30, r24
    d47c:	01 90       	ld	r0, Z+
    d47e:	00 20       	and	r0, r0
    d480:	e9 f7       	brne	.-6      	; 0xd47c <SBGPCTD_CreateStatusResponse+0x1f4>
    d482:	31 97       	sbiw	r30, 0x01	; 1
    d484:	e8 1b       	sub	r30, r24
    d486:	f9 0b       	sbc	r31, r25
    d488:	a9 58       	subi	r26, 0x89	; 137
    d48a:	b8 4f       	sbci	r27, 0xF8	; 248
    d48c:	ec 93       	st	X, r30
    d48e:	2d b7       	in	r18, 0x3d	; 61
    d490:	3e b7       	in	r19, 0x3e	; 62
    d492:	20 5f       	subi	r18, 0xF0	; 240
    d494:	3f 4f       	sbci	r19, 0xFF	; 255
    d496:	0f b6       	in	r0, 0x3f	; 63
    d498:	f8 94       	cli
    d49a:	3e bf       	out	0x3e, r19	; 62
    d49c:	0f be       	out	0x3f, r0	; 63
    d49e:	2d bf       	out	0x3d, r18	; 61

	return SUCCESS;
}
    d4a0:	8f ef       	ldi	r24, 0xFF	; 255
    d4a2:	df 91       	pop	r29
    d4a4:	cf 91       	pop	r28
    d4a6:	1f 91       	pop	r17
    d4a8:	0f 91       	pop	r16
    d4aa:	ff 90       	pop	r15
    d4ac:	ef 90       	pop	r14
    d4ae:	08 95       	ret

0000d4b0 <SBGPCTD_Id>:

	return retval;
}

uint8_t SBGPCTD_Id(PSEABIRD_GPCTD_TASK pTaskInfo)
{
    d4b0:	cf 93       	push	r28
    d4b2:	df 93       	push	r29
    d4b4:	ec 01       	movw	r28, r24
	uint8_t retval = SUCCESS;

	memset((char*)pTaskInfo->pBuf->consoleResponse, 0, 256);
    d4b6:	8c 81       	ldd	r24, Y+4	; 0x04
    d4b8:	9d 81       	ldd	r25, Y+5	; 0x05
    d4ba:	80 5f       	subi	r24, 0xF0	; 240
    d4bc:	97 4f       	sbci	r25, 0xF7	; 247
    d4be:	fc 01       	movw	r30, r24
    d4c0:	80 e0       	ldi	r24, 0x00	; 0
    d4c2:	91 e0       	ldi	r25, 0x01	; 1
    d4c4:	df 01       	movw	r26, r30
    d4c6:	9c 01       	movw	r18, r24
    d4c8:	1d 92       	st	X+, r1
    d4ca:	21 50       	subi	r18, 0x01	; 1
    d4cc:	30 40       	sbci	r19, 0x00	; 0
    d4ce:	e1 f7       	brne	.-8      	; 0xd4c8 <SBGPCTD_Id+0x18>
	if(strlen(pTaskInfo->pBuf->ctdInfo) > 0)
    d4d0:	8c 81       	ldd	r24, Y+4	; 0x04
    d4d2:	9d 81       	ldd	r25, Y+5	; 0x05
    d4d4:	fc 01       	movw	r30, r24
    d4d6:	e9 5e       	subi	r30, 0xE9	; 233
    d4d8:	fa 4f       	sbci	r31, 0xFA	; 250
    d4da:	20 81       	ld	r18, Z
    d4dc:	80 5f       	subi	r24, 0xF0	; 240
    d4de:	97 4f       	sbci	r25, 0xF7	; 247
    d4e0:	22 23       	and	r18, r18
    d4e2:	21 f0       	breq	.+8      	; 0xd4ec <SBGPCTD_Id+0x3c>
		strcat(pTaskInfo->pBuf->consoleResponse, pTaskInfo->pBuf->ctdInfo);
    d4e4:	bf 01       	movw	r22, r30
    d4e6:	0e 94 2c f0 	call	0x1e058	; 0x1e058 <strcat>
    d4ea:	04 c0       	rjmp	.+8      	; 0xd4f4 <SBGPCTD_Id+0x44>
	else
		strcat_P(pTaskInfo->pBuf->consoleResponse, PSTR("CTD Version and Serial Number is not available."));
    d4ec:	6f e6       	ldi	r22, 0x6F	; 111
    d4ee:	7c e0       	ldi	r23, 0x0C	; 12
    d4f0:	0e 94 b4 ef 	call	0x1df68	; 0x1df68 <strcat_P>

	pTaskInfo->pBuf->responseInfo.length = strlen(pTaskInfo->pBuf->consoleResponse);
    d4f4:	ec 81       	ldd	r30, Y+4	; 0x04
    d4f6:	fd 81       	ldd	r31, Y+5	; 0x05
    d4f8:	cf 01       	movw	r24, r30
    d4fa:	80 5f       	subi	r24, 0xF0	; 240
    d4fc:	97 4f       	sbci	r25, 0xF7	; 247
    d4fe:	dc 01       	movw	r26, r24
    d500:	0d 90       	ld	r0, X+
    d502:	00 20       	and	r0, r0
    d504:	e9 f7       	brne	.-6      	; 0xd500 <SBGPCTD_Id+0x50>
    d506:	11 97       	sbiw	r26, 0x01	; 1
    d508:	a8 1b       	sub	r26, r24
    d50a:	b9 0b       	sbc	r27, r25
    d50c:	e9 58       	subi	r30, 0x89	; 137
    d50e:	f8 4f       	sbci	r31, 0xF8	; 248
    d510:	a0 83       	st	Z, r26

	return retval;
}
    d512:	8f ef       	ldi	r24, 0xFF	; 255
    d514:	df 91       	pop	r29
    d516:	cf 91       	pop	r28
    d518:	08 95       	ret

0000d51a <SBGPCTD_QueueConsoleResponse>:
}



void SBGPCTD_QueueConsoleResponse(PSEABIRD_GPCTD_TASK pTaskInfo)
{
    d51a:	ef 92       	push	r14
    d51c:	ff 92       	push	r15
    d51e:	0f 93       	push	r16
    d520:	1f 93       	push	r17
    d522:	df 93       	push	r29
    d524:	cf 93       	push	r28
    d526:	0f 92       	push	r0
    d528:	cd b7       	in	r28, 0x3d	; 61
    d52a:	de b7       	in	r29, 0x3e	; 62
    d52c:	7c 01       	movw	r14, r24
	PCONSOLE_ACK_XMIT_2 pReport;
	uint8_t err = 0;
    d52e:	19 82       	std	Y+1, r1	; 0x01
	char* pData;

	OSMutexPend(pMutexFloatQueue, INFINITE, &err);
    d530:	80 91 51 19 	lds	r24, 0x1951
    d534:	90 91 52 19 	lds	r25, 0x1952
    d538:	60 e0       	ldi	r22, 0x00	; 0
    d53a:	70 e0       	ldi	r23, 0x00	; 0
    d53c:	ae 01       	movw	r20, r28
    d53e:	4f 5f       	subi	r20, 0xFF	; 255
    d540:	5f 4f       	sbci	r21, 0xFF	; 255
    d542:	0e 94 c2 28 	call	0x5184	; 0x5184 <OSMutexPend>

	pReport = (PCONSOLE_ACK_XMIT_2)&(txFloatAck[headFloatAckTx]);
    d546:	80 91 95 07 	lds	r24, 0x0795
    d54a:	90 e0       	ldi	r25, 0x00	; 0
    d54c:	26 e3       	ldi	r18, 0x36	; 54
    d54e:	31 e0       	ldi	r19, 0x01	; 1
    d550:	82 9f       	mul	r24, r18
    d552:	80 01       	movw	r16, r0
    d554:	83 9f       	mul	r24, r19
    d556:	10 0d       	add	r17, r0
    d558:	92 9f       	mul	r25, r18
    d55a:	10 0d       	add	r17, r0
    d55c:	11 24       	eor	r1, r1
    d55e:	03 5f       	subi	r16, 0xF3	; 243
    d560:	1c 44       	sbci	r17, 0x4C	; 76
	pData = (char*)pReport;

	pReport->comm.headers.destination = FLOAT_TASK_FORWARD_MESSAGE;		//pTaskInfo->pBuf->responseInfo.source;
    d562:	80 e2       	ldi	r24, 0x20	; 32
    d564:	90 e0       	ldi	r25, 0x00	; 0
    d566:	d8 01       	movw	r26, r16
    d568:	13 96       	adiw	r26, 0x03	; 3
    d56a:	9c 93       	st	X, r25
    d56c:	8e 93       	st	-X, r24
    d56e:	12 97       	sbiw	r26, 0x02	; 2

	pReport->comm.fwdInfo.msgFormat = MSG_FORMAT_SHIP_TO_SHORE;
    d570:	82 e0       	ldi	r24, 0x02	; 2
    d572:	1c 96       	adiw	r26, 0x0c	; 12
    d574:	8c 93       	st	X, r24
	pReport->comm.fwdInfo.destination = pTaskInfo->pBuf->responseInfo.source;
    d576:	d7 01       	movw	r26, r14
    d578:	14 96       	adiw	r26, 0x04	; 4
    d57a:	ed 91       	ld	r30, X+
    d57c:	fc 91       	ld	r31, X
    d57e:	15 97       	sbiw	r26, 0x05	; 5
    d580:	ed 58       	subi	r30, 0x8D	; 141
    d582:	f8 4f       	sbci	r31, 0xF8	; 248
    d584:	81 91       	ld	r24, Z+
    d586:	91 91       	ld	r25, Z+
    d588:	d8 01       	movw	r26, r16
    d58a:	1e 96       	adiw	r26, 0x0e	; 14
    d58c:	9c 93       	st	X, r25
    d58e:	8e 93       	st	-X, r24
    d590:	1d 97       	sbiw	r26, 0x0d	; 13
	pReport->comm.fwdInfo.source = mainTaskAddress | pTaskInfo->taskID;
    d592:	d7 01       	movw	r26, r14
    d594:	8c 91       	ld	r24, X
    d596:	90 e0       	ldi	r25, 0x00	; 0
    d598:	20 91 e4 03 	lds	r18, 0x03E4
    d59c:	30 91 e5 03 	lds	r19, 0x03E5
    d5a0:	82 2b       	or	r24, r18
    d5a2:	93 2b       	or	r25, r19
    d5a4:	d8 01       	movw	r26, r16
    d5a6:	50 96       	adiw	r26, 0x10	; 16
    d5a8:	9c 93       	st	X, r25
    d5aa:	8e 93       	st	-X, r24
    d5ac:	1f 97       	sbiw	r26, 0x0f	; 15

	if(pTaskInfo->pBuf->responseInfo.status < CONSOLE_RESPONSE_UNKNOWN_CMD)
    d5ae:	20 81       	ld	r18, Z
    d5b0:	e5 57       	subi	r30, 0x75	; 117
    d5b2:	f7 40       	sbci	r31, 0x07	; 7
    d5b4:	2a 30       	cpi	r18, 0x0A	; 10
    d5b6:	20 f5       	brcc	.+72     	; 0xd600 <SBGPCTD_QueueConsoleResponse+0xe6>
	{
		pReport->comm.headers.length = sizeof(PIB_DATA_FORWARD_MESSAGE) + sizeof(CONSOLE_ACK) + pTaskInfo->pBuf->responseInfo.length + CRC16_SIZE;
    d5b8:	e9 58       	subi	r30, 0x89	; 137
    d5ba:	f8 4f       	sbci	r31, 0xF8	; 248
    d5bc:	40 81       	ld	r20, Z
    d5be:	50 e0       	ldi	r21, 0x00	; 0
    d5c0:	42 5e       	subi	r20, 0xE2	; 226
    d5c2:	5f 4f       	sbci	r21, 0xFF	; 255
    d5c4:	11 96       	adiw	r26, 0x01	; 1
    d5c6:	5c 93       	st	X, r21
    d5c8:	4e 93       	st	-X, r20
    d5ca:	4e 51       	subi	r20, 0x1E	; 30
    d5cc:	50 40       	sbci	r21, 0x00	; 0

		pReport->comm.iridiumInfo.headerICD.type = ACK_CONSOLE_DATA;
    d5ce:	8d e3       	ldi	r24, 0x3D	; 61
    d5d0:	51 96       	adiw	r26, 0x11	; 17
    d5d2:	8c 93       	st	X, r24
    d5d4:	51 97       	sbiw	r26, 0x11	; 17

		pReport->consoleAck.len = pTaskInfo->pBuf->responseInfo.length;
    d5d6:	5b 96       	adiw	r26, 0x1b	; 27
    d5d8:	5c 93       	st	X, r21
    d5da:	4e 93       	st	-X, r20
    d5dc:	5a 97       	sbiw	r26, 0x1a	; 26
		pReport->consoleAck.disposition = pTaskInfo->pBuf->responseInfo.status;
    d5de:	59 96       	adiw	r26, 0x19	; 25
    d5e0:	2c 93       	st	X, r18
    d5e2:	59 97       	sbiw	r26, 0x19	; 25
		pReport->consoleAck.format = pTaskInfo->pBuf->responseInfo.format;
    d5e4:	82 91       	ld	r24, -Z
    d5e6:	58 96       	adiw	r26, 0x18	; 24
    d5e8:	8c 93       	st	X, r24
		pData = pData + sizeof(PIB_DATA_FORWARD_MESSAGE) + sizeof(CONSOLE_ACK);
		memcpy(pData, pTaskInfo->pBuf->consoleResponse, pTaskInfo->pBuf->responseInfo.length);
    d5ea:	98 01       	movw	r18, r16
    d5ec:	24 5e       	subi	r18, 0xE4	; 228
    d5ee:	3f 4f       	sbci	r19, 0xFF	; 255
    d5f0:	e6 56       	subi	r30, 0x66	; 102
    d5f2:	ff 4f       	sbci	r31, 0xFF	; 255
    d5f4:	c9 01       	movw	r24, r18
    d5f6:	bf 01       	movw	r22, r30
    d5f8:	50 e0       	ldi	r21, 0x00	; 0
    d5fa:	0e 94 1c f0 	call	0x1e038	; 0x1e038 <memcpy>
    d5fe:	0c c0       	rjmp	.+24     	; 0xd618 <SBGPCTD_QueueConsoleResponse+0xfe>
	}
	else
	{
		pReport->comm.headers.length = sizeof(PIB_DATA_FORWARD_MESSAGE) + sizeof(CONSOLE_NACK) + CRC16_SIZE;
    d600:	8d e1       	ldi	r24, 0x1D	; 29
    d602:	90 e0       	ldi	r25, 0x00	; 0
    d604:	f8 01       	movw	r30, r16
    d606:	91 83       	std	Z+1, r25	; 0x01
    d608:	80 83       	st	Z, r24
		pReport->comm.iridiumInfo.headerICD.type = NACK_CONSOLE_DATA;
    d60a:	86 e2       	ldi	r24, 0x26	; 38
    d60c:	81 8b       	std	Z+17, r24	; 0x11
		pReport->consoleNack.numDispositions = 1;
    d60e:	81 e0       	ldi	r24, 0x01	; 1
    d610:	90 e0       	ldi	r25, 0x00	; 0
    d612:	91 8f       	std	Z+25, r25	; 0x19
    d614:	80 8f       	std	Z+24, r24	; 0x18
		pReport->consoleNack.disposition[0] = pTaskInfo->pBuf->responseInfo.status;
    d616:	22 8f       	std	Z+26, r18	; 0x1a
	}

	pReport->comm.iridiumInfo.headerICD.packetID = pTaskInfo->pBuf->responseInfo.id;
    d618:	d7 01       	movw	r26, r14
    d61a:	14 96       	adiw	r26, 0x04	; 4
    d61c:	ed 91       	ld	r30, X+
    d61e:	fc 91       	ld	r31, X
    d620:	15 97       	sbiw	r26, 0x05	; 5
    d622:	e8 58       	subi	r30, 0x88	; 136
    d624:	f8 4f       	sbci	r31, 0xF8	; 248
    d626:	80 81       	ld	r24, Z
    d628:	91 81       	ldd	r25, Z+1	; 0x01
    d62a:	a2 81       	ldd	r26, Z+2	; 0x02
    d62c:	b3 81       	ldd	r27, Z+3	; 0x03
    d62e:	f8 01       	movw	r30, r16
    d630:	82 8b       	std	Z+18, r24	; 0x12
    d632:	93 8b       	std	Z+19, r25	; 0x13
    d634:	a4 8b       	std	Z+20, r26	; 0x14
    d636:	b5 8b       	std	Z+21, r27	; 0x15
	pReport->comm.iridiumInfo.headerICD.size = pReport->comm.headers.length - sizeof(PIB_DATA_FORWARD_MESSAGE) - CRC16_SIZE;
    d638:	80 81       	ld	r24, Z
    d63a:	91 81       	ldd	r25, Z+1	; 0x01
    d63c:	4a 97       	sbiw	r24, 0x1a	; 26
    d63e:	97 8b       	std	Z+23, r25	; 0x17
    d640:	86 8b       	std	Z+22, r24	; 0x16


	(headFloatAckTx < MAX_ACK_BUFFERS - 1) ? (headFloatAckTx++) : (headFloatAckTx = 0);
    d642:	80 91 95 07 	lds	r24, 0x0795
    d646:	83 30       	cpi	r24, 0x03	; 3
    d648:	20 f4       	brcc	.+8      	; 0xd652 <SBGPCTD_QueueConsoleResponse+0x138>
    d64a:	8f 5f       	subi	r24, 0xFF	; 255
    d64c:	80 93 95 07 	sts	0x0795, r24
    d650:	02 c0       	rjmp	.+4      	; 0xd656 <SBGPCTD_QueueConsoleResponse+0x13c>
    d652:	10 92 95 07 	sts	0x0795, r1

	if(headFloatAckTx == tailFloatAckTx)
    d656:	90 91 95 07 	lds	r25, 0x0795
    d65a:	80 91 96 07 	lds	r24, 0x0796
    d65e:	98 17       	cp	r25, r24
    d660:	41 f4       	brne	.+16     	; 0xd672 <SBGPCTD_QueueConsoleResponse+0x158>
	{
		(tailFloatAckTx < MAX_ACK_BUFFERS - 1) ? (tailFloatAckTx++) : (tailFloatAckTx = 0);
    d662:	93 30       	cpi	r25, 0x03	; 3
    d664:	20 f4       	brcc	.+8      	; 0xd66e <SBGPCTD_QueueConsoleResponse+0x154>
    d666:	9f 5f       	subi	r25, 0xFF	; 255
    d668:	90 93 96 07 	sts	0x0796, r25
    d66c:	02 c0       	rjmp	.+4      	; 0xd672 <SBGPCTD_QueueConsoleResponse+0x158>
    d66e:	10 92 96 07 	sts	0x0796, r1
	}

	OSMutexPost(pMutexFloatQueue);
    d672:	80 91 51 19 	lds	r24, 0x1951
    d676:	90 91 52 19 	lds	r25, 0x1952
    d67a:	0e 94 36 27 	call	0x4e6c	; 0x4e6c <OSMutexPost>

	return;
}
    d67e:	0f 90       	pop	r0
    d680:	cf 91       	pop	r28
    d682:	df 91       	pop	r29
    d684:	1f 91       	pop	r17
    d686:	0f 91       	pop	r16
    d688:	ff 90       	pop	r15
    d68a:	ef 90       	pop	r14
    d68c:	08 95       	ret

0000d68e <SBGPCTD_CTDReportXmitWithO2>:




uint8_t SBGPCTD_CTDReportXmitWithO2(PSEABIRD_GPCTD_TASK pTaskInfo)
{
    d68e:	0f 93       	push	r16
    d690:	1f 93       	push	r17
    d692:	df 93       	push	r29
    d694:	cf 93       	push	r28
    d696:	0f 92       	push	r0
    d698:	cd b7       	in	r28, 0x3d	; 61
    d69a:	de b7       	in	r29, 0x3e	; 62
    d69c:	8c 01       	movw	r16, r24
	uint8_t retval = 0;
	uint8_t err = 0;
    d69e:	19 82       	std	Y+1, r1	; 0x01
//	PPIB_DATA_FORWARD_MESSAGE pReport = NULL;
	PSEABIRD_GPCTD_DATA_REPORT_XMIT_2 pReport= NULL;

	OSMutexPend(pMutexFloatQueue, INFINITE, &err);
    d6a0:	80 91 51 19 	lds	r24, 0x1951
    d6a4:	90 91 52 19 	lds	r25, 0x1952
    d6a8:	60 e0       	ldi	r22, 0x00	; 0
    d6aa:	70 e0       	ldi	r23, 0x00	; 0
    d6ac:	ae 01       	movw	r20, r28
    d6ae:	4f 5f       	subi	r20, 0xFF	; 255
    d6b0:	5f 4f       	sbci	r21, 0xFF	; 255
    d6b2:	0e 94 c2 28 	call	0x5184	; 0x5184 <OSMutexPend>


	pReport = (PSEABIRD_GPCTD_DATA_REPORT_XMIT_2)&(txFloatData[headFloatTx]);
    d6b6:	80 91 93 07 	lds	r24, 0x0793
    d6ba:	90 e0       	ldi	r25, 0x00	; 0
    d6bc:	26 e3       	ldi	r18, 0x36	; 54
    d6be:	31 e0       	ldi	r19, 0x01	; 1
    d6c0:	82 9f       	mul	r24, r18
    d6c2:	d0 01       	movw	r26, r0
    d6c4:	83 9f       	mul	r24, r19
    d6c6:	b0 0d       	add	r27, r0
    d6c8:	92 9f       	mul	r25, r18
    d6ca:	b0 0d       	add	r27, r0
    d6cc:	11 24       	eor	r1, r1
    d6ce:	a3 5a       	subi	r26, 0xA3	; 163
    d6d0:	b6 45       	sbci	r27, 0x56	; 86
	memset(pReport, 0, sizeof(FLOAT_TX_BUFFER));
    d6d2:	fd 01       	movw	r30, r26
    d6d4:	c9 01       	movw	r24, r18
    d6d6:	11 92       	st	Z+, r1
    d6d8:	01 97       	sbiw	r24, 0x01	; 1
    d6da:	e9 f7       	brne	.-6      	; 0xd6d6 <SBGPCTD_CTDReportXmitWithO2+0x48>


	pReport->comm.headers.length  = sizeof(PIB_IRIDIUM_DATA_XMIT) + CRC16_SIZE;
    d6dc:	81 e1       	ldi	r24, 0x11	; 17
    d6de:	90 e0       	ldi	r25, 0x00	; 0
    d6e0:	11 96       	adiw	r26, 0x01	; 1
    d6e2:	9c 93       	st	X, r25
    d6e4:	8e 93       	st	-X, r24
	pReport->comm.headers.length  += pTaskInfo->pBuf->reportData2.headerReport.repeatCount * sizeof(GPCTD_DATA_REPORT_BLOCK_2);	
	pReport->comm.headers.length  += sizeof(TYPE_91_REPORT_HEADER);	
    d6e6:	f8 01       	movw	r30, r16
    d6e8:	84 81       	ldd	r24, Z+4	; 0x04
    d6ea:	95 81       	ldd	r25, Z+5	; 0x05
    d6ec:	86 5a       	subi	r24, 0xA6	; 166
    d6ee:	99 4f       	sbci	r25, 0xF9	; 249
    d6f0:	fc 01       	movw	r30, r24
    d6f2:	90 81       	ld	r25, Z
    d6f4:	8c e1       	ldi	r24, 0x1C	; 28
    d6f6:	98 9f       	mul	r25, r24
    d6f8:	f0 01       	movw	r30, r0
    d6fa:	11 24       	eor	r1, r1
    d6fc:	79 96       	adiw	r30, 0x19	; 25
    d6fe:	11 96       	adiw	r26, 0x01	; 1
    d700:	fc 93       	st	X, r31
    d702:	ee 93       	st	-X, r30
	
	pReport->comm.headers.destination = FLOAT_IRIDIUM_INTERFACE;
    d704:	82 e0       	ldi	r24, 0x02	; 2
    d706:	90 e0       	ldi	r25, 0x00	; 0
    d708:	13 96       	adiw	r26, 0x03	; 3
    d70a:	9c 93       	st	X, r25
    d70c:	8e 93       	st	-X, r24
    d70e:	12 97       	sbiw	r26, 0x02	; 2

	pReport->comm.iridiumInfo.structureType = 0x91;
    d710:	81 e9       	ldi	r24, 0x91	; 145
    d712:	1c 96       	adiw	r26, 0x0c	; 12
    d714:	8c 93       	st	X, r24
    d716:	1c 97       	sbiw	r26, 0x0c	; 12
	pReport->comm.iridiumInfo.size = pReport->comm.headers.length - sizeof(PIB_IRIDIUM_DATA_XMIT) - CRC16_SIZE;
    d718:	71 97       	sbiw	r30, 0x11	; 17
    d71a:	1e 96       	adiw	r26, 0x0e	; 14
    d71c:	fc 93       	st	X, r31
    d71e:	ee 93       	st	-X, r30
    d720:	1d 97       	sbiw	r26, 0x0d	; 13


	memcpy((char*)&(pReport->reportData), &pTaskInfo->pBuf->reportData2, pReport->comm.iridiumInfo.size);
    d722:	ad 01       	movw	r20, r26
    d724:	41 5f       	subi	r20, 0xF1	; 241
    d726:	5f 4f       	sbci	r21, 0xFF	; 255
    d728:	d8 01       	movw	r26, r16
    d72a:	14 96       	adiw	r26, 0x04	; 4
    d72c:	2d 91       	ld	r18, X+
    d72e:	3c 91       	ld	r19, X
    d730:	15 97       	sbiw	r26, 0x05	; 5
    d732:	2d 5a       	subi	r18, 0xAD	; 173
    d734:	39 4f       	sbci	r19, 0xF9	; 249
    d736:	ca 01       	movw	r24, r20
    d738:	b9 01       	movw	r22, r18
    d73a:	af 01       	movw	r20, r30
    d73c:	0e 94 1c f0 	call	0x1e038	; 0x1e038 <memcpy>

	(headFloatTx < MAX_FLOAT_BUFFERS - 1) ? (headFloatTx++) : (headFloatTx = 0);
    d740:	80 91 93 07 	lds	r24, 0x0793
    d744:	87 30       	cpi	r24, 0x07	; 7
    d746:	20 f4       	brcc	.+8      	; 0xd750 <SBGPCTD_CTDReportXmitWithO2+0xc2>
    d748:	8f 5f       	subi	r24, 0xFF	; 255
    d74a:	80 93 93 07 	sts	0x0793, r24
    d74e:	02 c0       	rjmp	.+4      	; 0xd754 <SBGPCTD_CTDReportXmitWithO2+0xc6>
    d750:	10 92 93 07 	sts	0x0793, r1

	if(headFloatTx == tailFloatTx)
    d754:	90 91 93 07 	lds	r25, 0x0793
    d758:	80 91 94 07 	lds	r24, 0x0794
    d75c:	98 17       	cp	r25, r24
    d75e:	41 f4       	brne	.+16     	; 0xd770 <SBGPCTD_CTDReportXmitWithO2+0xe2>
		(tailFloatTx < MAX_FLOAT_BUFFERS - 1) ? (tailFloatTx++) : (tailFloatTx = 0);
    d760:	97 30       	cpi	r25, 0x07	; 7
    d762:	20 f4       	brcc	.+8      	; 0xd76c <SBGPCTD_CTDReportXmitWithO2+0xde>
    d764:	9f 5f       	subi	r25, 0xFF	; 255
    d766:	90 93 94 07 	sts	0x0794, r25
    d76a:	02 c0       	rjmp	.+4      	; 0xd770 <SBGPCTD_CTDReportXmitWithO2+0xe2>
    d76c:	10 92 94 07 	sts	0x0794, r1

	OSMutexPost(pMutexFloatQueue);
    d770:	80 91 51 19 	lds	r24, 0x1951
    d774:	90 91 52 19 	lds	r25, 0x1952
    d778:	0e 94 36 27 	call	0x4e6c	; 0x4e6c <OSMutexPost>
//	OSMutexPost(pMutexFloatQueue);
//
//	return retval;
///////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////
}
    d77c:	80 e0       	ldi	r24, 0x00	; 0
    d77e:	0f 90       	pop	r0
    d780:	cf 91       	pop	r28
    d782:	df 91       	pop	r29
    d784:	1f 91       	pop	r17
    d786:	0f 91       	pop	r16
    d788:	08 95       	ret

0000d78a <SBGPCTD_CTDReportXmitNoO2>:
		}
	}
}

uint8_t SBGPCTD_CTDReportXmitNoO2(PSEABIRD_GPCTD_TASK pTaskInfo)
{
    d78a:	0f 93       	push	r16
    d78c:	1f 93       	push	r17
    d78e:	df 93       	push	r29
    d790:	cf 93       	push	r28
    d792:	0f 92       	push	r0
    d794:	cd b7       	in	r28, 0x3d	; 61
    d796:	de b7       	in	r29, 0x3e	; 62
    d798:	8c 01       	movw	r16, r24
	uint8_t retval = 0;
	uint8_t err = 0;
    d79a:	19 82       	std	Y+1, r1	; 0x01
//	PPIB_DATA_FORWARD_MESSAGE pReport = NULL;
	PSEABIRD_GPCTD_DATA_REPORT_XMIT pReport = NULL;


	OSMutexPend(pMutexFloatQueue, INFINITE, &err);
    d79c:	80 91 51 19 	lds	r24, 0x1951
    d7a0:	90 91 52 19 	lds	r25, 0x1952
    d7a4:	60 e0       	ldi	r22, 0x00	; 0
    d7a6:	70 e0       	ldi	r23, 0x00	; 0
    d7a8:	ae 01       	movw	r20, r28
    d7aa:	4f 5f       	subi	r20, 0xFF	; 255
    d7ac:	5f 4f       	sbci	r21, 0xFF	; 255
    d7ae:	0e 94 c2 28 	call	0x5184	; 0x5184 <OSMutexPend>


	pReport = (PSEABIRD_GPCTD_DATA_REPORT_XMIT)&(txFloatData[headFloatTx]);
    d7b2:	80 91 93 07 	lds	r24, 0x0793
    d7b6:	90 e0       	ldi	r25, 0x00	; 0
    d7b8:	26 e3       	ldi	r18, 0x36	; 54
    d7ba:	31 e0       	ldi	r19, 0x01	; 1
    d7bc:	82 9f       	mul	r24, r18
    d7be:	d0 01       	movw	r26, r0
    d7c0:	83 9f       	mul	r24, r19
    d7c2:	b0 0d       	add	r27, r0
    d7c4:	92 9f       	mul	r25, r18
    d7c6:	b0 0d       	add	r27, r0
    d7c8:	11 24       	eor	r1, r1
    d7ca:	a3 5a       	subi	r26, 0xA3	; 163
    d7cc:	b6 45       	sbci	r27, 0x56	; 86
	memset(pReport, 0, sizeof(FLOAT_TX_BUFFER));
    d7ce:	fd 01       	movw	r30, r26
    d7d0:	c9 01       	movw	r24, r18
    d7d2:	11 92       	st	Z+, r1
    d7d4:	01 97       	sbiw	r24, 0x01	; 1
    d7d6:	e9 f7       	brne	.-6      	; 0xd7d2 <SBGPCTD_CTDReportXmitNoO2+0x48>


	pReport->comm.headers.length  = sizeof(PIB_IRIDIUM_DATA_XMIT) + CRC16_SIZE;
    d7d8:	81 e1       	ldi	r24, 0x11	; 17
    d7da:	90 e0       	ldi	r25, 0x00	; 0
    d7dc:	11 96       	adiw	r26, 0x01	; 1
    d7de:	9c 93       	st	X, r25
    d7e0:	8e 93       	st	-X, r24
	pReport->comm.headers.length  += pTaskInfo->pBuf->reportData.headerReport.repeatCount * sizeof(GPCTD_DATA_REPORT_BLOCK);	
	pReport->comm.headers.length  += sizeof(TYPE_91_REPORT_HEADER);	
    d7e2:	f8 01       	movw	r30, r16
    d7e4:	84 81       	ldd	r24, Z+4	; 0x04
    d7e6:	95 81       	ldd	r25, Z+5	; 0x05
    d7e8:	8e 59       	subi	r24, 0x9E	; 158
    d7ea:	9a 4f       	sbci	r25, 0xFA	; 250
    d7ec:	fc 01       	movw	r30, r24
    d7ee:	90 81       	ld	r25, Z
    d7f0:	88 e1       	ldi	r24, 0x18	; 24
    d7f2:	98 9f       	mul	r25, r24
    d7f4:	f0 01       	movw	r30, r0
    d7f6:	11 24       	eor	r1, r1
    d7f8:	79 96       	adiw	r30, 0x19	; 25
    d7fa:	11 96       	adiw	r26, 0x01	; 1
    d7fc:	fc 93       	st	X, r31
    d7fe:	ee 93       	st	-X, r30
	
	pReport->comm.headers.destination = FLOAT_IRIDIUM_INTERFACE;
    d800:	82 e0       	ldi	r24, 0x02	; 2
    d802:	90 e0       	ldi	r25, 0x00	; 0
    d804:	13 96       	adiw	r26, 0x03	; 3
    d806:	9c 93       	st	X, r25
    d808:	8e 93       	st	-X, r24
    d80a:	12 97       	sbiw	r26, 0x02	; 2

	pReport->comm.iridiumInfo.structureType = 0x91;
    d80c:	81 e9       	ldi	r24, 0x91	; 145
    d80e:	1c 96       	adiw	r26, 0x0c	; 12
    d810:	8c 93       	st	X, r24
    d812:	1c 97       	sbiw	r26, 0x0c	; 12
	pReport->comm.iridiumInfo.size = pReport->comm.headers.length - sizeof(PIB_IRIDIUM_DATA_XMIT) - CRC16_SIZE;
    d814:	71 97       	sbiw	r30, 0x11	; 17
    d816:	1e 96       	adiw	r26, 0x0e	; 14
    d818:	fc 93       	st	X, r31
    d81a:	ee 93       	st	-X, r30
    d81c:	1d 97       	sbiw	r26, 0x0d	; 13


	memcpy((char*)&(pReport->reportData), &pTaskInfo->pBuf->reportData, pReport->comm.iridiumInfo.size);
    d81e:	ad 01       	movw	r20, r26
    d820:	41 5f       	subi	r20, 0xF1	; 241
    d822:	5f 4f       	sbci	r21, 0xFF	; 255
    d824:	d8 01       	movw	r26, r16
    d826:	14 96       	adiw	r26, 0x04	; 4
    d828:	2d 91       	ld	r18, X+
    d82a:	3c 91       	ld	r19, X
    d82c:	15 97       	sbiw	r26, 0x05	; 5
    d82e:	25 5a       	subi	r18, 0xA5	; 165
    d830:	3a 4f       	sbci	r19, 0xFA	; 250
    d832:	ca 01       	movw	r24, r20
    d834:	b9 01       	movw	r22, r18
    d836:	af 01       	movw	r20, r30
    d838:	0e 94 1c f0 	call	0x1e038	; 0x1e038 <memcpy>

	(headFloatTx < MAX_FLOAT_BUFFERS - 1) ? (headFloatTx++) : (headFloatTx = 0);
    d83c:	80 91 93 07 	lds	r24, 0x0793
    d840:	87 30       	cpi	r24, 0x07	; 7
    d842:	20 f4       	brcc	.+8      	; 0xd84c <SBGPCTD_CTDReportXmitNoO2+0xc2>
    d844:	8f 5f       	subi	r24, 0xFF	; 255
    d846:	80 93 93 07 	sts	0x0793, r24
    d84a:	02 c0       	rjmp	.+4      	; 0xd850 <SBGPCTD_CTDReportXmitNoO2+0xc6>
    d84c:	10 92 93 07 	sts	0x0793, r1

	if(headFloatTx == tailFloatTx)
    d850:	90 91 93 07 	lds	r25, 0x0793
    d854:	80 91 94 07 	lds	r24, 0x0794
    d858:	98 17       	cp	r25, r24
    d85a:	41 f4       	brne	.+16     	; 0xd86c <SBGPCTD_CTDReportXmitNoO2+0xe2>
		(tailFloatTx < MAX_FLOAT_BUFFERS - 1) ? (tailFloatTx++) : (tailFloatTx = 0);
    d85c:	97 30       	cpi	r25, 0x07	; 7
    d85e:	20 f4       	brcc	.+8      	; 0xd868 <SBGPCTD_CTDReportXmitNoO2+0xde>
    d860:	9f 5f       	subi	r25, 0xFF	; 255
    d862:	90 93 94 07 	sts	0x0794, r25
    d866:	02 c0       	rjmp	.+4      	; 0xd86c <SBGPCTD_CTDReportXmitNoO2+0xe2>
    d868:	10 92 94 07 	sts	0x0794, r1

	OSMutexPost(pMutexFloatQueue);
    d86c:	80 91 51 19 	lds	r24, 0x1951
    d870:	90 91 52 19 	lds	r25, 0x1952
    d874:	0e 94 36 27 	call	0x4e6c	; 0x4e6c <OSMutexPost>
//
//	return retval;
//
////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////
}
    d878:	80 e0       	ldi	r24, 0x00	; 0
    d87a:	0f 90       	pop	r0
    d87c:	cf 91       	pop	r28
    d87e:	df 91       	pop	r29
    d880:	1f 91       	pop	r17
    d882:	0f 91       	pop	r16
    d884:	08 95       	ret

0000d886 <SBGPCTD_SetPumpFlushTime>:

	return retval;
}

uint8_t SBGPCTD_SetPumpFlushTime(PSEABIRD_GPCTD_TASK pTaskInfo, uint16_t newFlushTime)
{
    d886:	0f 93       	push	r16
    d888:	1f 93       	push	r17
    d88a:	cf 93       	push	r28
    d88c:	df 93       	push	r29
    d88e:	8c 01       	movw	r16, r24
    d890:	eb 01       	movw	r28, r22
	uint8_t retval = FAIL;

	if((newFlushTime >= 0) && (newFlushTime <= MAX_FLUSH_TIME))
    d892:	6f 36       	cpi	r22, 0x6F	; 111
    d894:	71 05       	cpc	r23, r1
    d896:	10 f0       	brcs	.+4      	; 0xd89c <SBGPCTD_SetPumpFlushTime+0x16>
    d898:	80 e0       	ldi	r24, 0x00	; 0
    d89a:	13 c0       	rjmp	.+38     	; 0xd8c2 <SBGPCTD_SetPumpFlushTime+0x3c>
	{
		retval = SUCCESS;

		EepromWriteWordUnSigned((void*)(pTaskInfo->eepromAddress + SEABIRD_GPCTD_PUMP_FLUSH_OFFSET), newFlushTime);
    d89c:	dc 01       	movw	r26, r24
    d89e:	12 96       	adiw	r26, 0x02	; 2
    d8a0:	8d 91       	ld	r24, X+
    d8a2:	9c 91       	ld	r25, X
    d8a4:	13 97       	sbiw	r26, 0x03	; 3
    d8a6:	80 5b       	subi	r24, 0xB0	; 176
    d8a8:	9f 4f       	sbci	r25, 0xFF	; 255
    d8aa:	0e 94 d6 37 	call	0x6fac	; 0x6fac <EepromWriteWordUnSigned>
		pTaskInfo->pBuf->flushTime = newFlushTime;
    d8ae:	d8 01       	movw	r26, r16
    d8b0:	14 96       	adiw	r26, 0x04	; 4
    d8b2:	ed 91       	ld	r30, X+
    d8b4:	fc 91       	ld	r31, X
    d8b6:	15 97       	sbiw	r26, 0x05	; 5
    d8b8:	e0 5e       	subi	r30, 0xE0	; 224
    d8ba:	f6 4f       	sbci	r31, 0xF6	; 246
    d8bc:	d1 83       	std	Z+1, r29	; 0x01
    d8be:	c0 83       	st	Z, r28
    d8c0:	8f ef       	ldi	r24, 0xFF	; 255
	}

	return retval;
}
    d8c2:	df 91       	pop	r29
    d8c4:	cf 91       	pop	r28
    d8c6:	1f 91       	pop	r17
    d8c8:	0f 91       	pop	r16
    d8ca:	08 95       	ret

0000d8cc <SBGPCTD_SetDutyCycleOffTime>:
	return retval;
}


uint8_t SBGPCTD_SetDutyCycleOffTime(PSEABIRD_GPCTD_TASK pTaskInfo, uint16_t newOffTime)
{
    d8cc:	0f 93       	push	r16
    d8ce:	1f 93       	push	r17
    d8d0:	cf 93       	push	r28
    d8d2:	df 93       	push	r29
    d8d4:	8c 01       	movw	r16, r24
    d8d6:	eb 01       	movw	r28, r22
	uint8_t retval = FAIL;

	if((newOffTime >= 0) && (newOffTime <= MAX_OFF_TIME))
    d8d8:	88 ea       	ldi	r24, 0xA8	; 168
    d8da:	61 3c       	cpi	r22, 0xC1	; 193
    d8dc:	78 07       	cpc	r23, r24
    d8de:	10 f0       	brcs	.+4      	; 0xd8e4 <SBGPCTD_SetDutyCycleOffTime+0x18>
    d8e0:	80 e0       	ldi	r24, 0x00	; 0
    d8e2:	13 c0       	rjmp	.+38     	; 0xd90a <SBGPCTD_SetDutyCycleOffTime+0x3e>
	{
		retval = SUCCESS;

		EepromWriteWordUnSigned((void*)(pTaskInfo->eepromAddress + SEABIRD_GPCTD_PACKET_CYCLE_OFFSET), newOffTime);
    d8e4:	d8 01       	movw	r26, r16
    d8e6:	12 96       	adiw	r26, 0x02	; 2
    d8e8:	8d 91       	ld	r24, X+
    d8ea:	9c 91       	ld	r25, X
    d8ec:	13 97       	sbiw	r26, 0x03	; 3
    d8ee:	89 5b       	subi	r24, 0xB9	; 185
    d8f0:	9f 4f       	sbci	r25, 0xFF	; 255
    d8f2:	0e 94 d6 37 	call	0x6fac	; 0x6fac <EepromWriteWordUnSigned>
		pTaskInfo->pBuf->offTime = newOffTime;
    d8f6:	d8 01       	movw	r26, r16
    d8f8:	14 96       	adiw	r26, 0x04	; 4
    d8fa:	ed 91       	ld	r30, X+
    d8fc:	fc 91       	ld	r31, X
    d8fe:	15 97       	sbiw	r26, 0x05	; 5
    d900:	e7 5e       	subi	r30, 0xE7	; 231
    d902:	f6 4f       	sbci	r31, 0xF6	; 246
    d904:	d1 83       	std	Z+1, r29	; 0x01
    d906:	c0 83       	st	Z, r28
    d908:	8f ef       	ldi	r24, 0xFF	; 255
	}

	return retval;
}
    d90a:	df 91       	pop	r29
    d90c:	cf 91       	pop	r28
    d90e:	1f 91       	pop	r17
    d910:	0f 91       	pop	r16
    d912:	08 95       	ret

0000d914 <SBGPCTD_SetPacketDest>:

	return retval;
}

uint8_t SBGPCTD_SetPacketDest(PSEABIRD_GPCTD_TASK pTaskInfo, uint16_t newDest)
{
    d914:	0f 93       	push	r16
    d916:	1f 93       	push	r17
    d918:	cf 93       	push	r28
    d91a:	df 93       	push	r29
    d91c:	8c 01       	movw	r16, r24
    d91e:	eb 01       	movw	r28, r22
	uint8_t retval = FAIL;

	if(newDest == 0)
    d920:	61 15       	cp	r22, r1
    d922:	71 05       	cpc	r23, r1
    d924:	11 f4       	brne	.+4      	; 0xd92a <SBGPCTD_SetPacketDest+0x16>
    d926:	c2 e0       	ldi	r28, 0x02	; 2
    d928:	d0 e0       	ldi	r29, 0x00	; 0
		newDest = FLOAT_TO_SHORE_VIA_DEFAULT;

	if((newDest > 0) && (newDest < 0xFF00))
    d92a:	ce 01       	movw	r24, r28
    d92c:	01 97       	sbiw	r24, 0x01	; 1
    d92e:	8f 5f       	subi	r24, 0xFF	; 255
    d930:	9e 4f       	sbci	r25, 0xFE	; 254
    d932:	10 f0       	brcs	.+4      	; 0xd938 <SBGPCTD_SetPacketDest+0x24>
    d934:	80 e0       	ldi	r24, 0x00	; 0
    d936:	14 c0       	rjmp	.+40     	; 0xd960 <SBGPCTD_SetPacketDest+0x4c>
	{
		retval = SUCCESS;

		EepromWriteWordUnSigned((void*)(pTaskInfo->eepromAddress + SEABIRD_GPCTD_PACKET_DESTINATION_OFFSET), newDest);
    d938:	d8 01       	movw	r26, r16
    d93a:	12 96       	adiw	r26, 0x02	; 2
    d93c:	8d 91       	ld	r24, X+
    d93e:	9c 91       	ld	r25, X
    d940:	13 97       	sbiw	r26, 0x03	; 3
    d942:	8c 5b       	subi	r24, 0xBC	; 188
    d944:	9f 4f       	sbci	r25, 0xFF	; 255
    d946:	be 01       	movw	r22, r28
    d948:	0e 94 d6 37 	call	0x6fac	; 0x6fac <EepromWriteWordUnSigned>
		pTaskInfo->pBuf->samplePacketSize = newDest;
    d94c:	d8 01       	movw	r26, r16
    d94e:	14 96       	adiw	r26, 0x04	; 4
    d950:	ed 91       	ld	r30, X+
    d952:	fc 91       	ld	r31, X
    d954:	15 97       	sbiw	r26, 0x05	; 5
    d956:	ed 5f       	subi	r30, 0xFD	; 253
    d958:	fa 4f       	sbci	r31, 0xFA	; 250
    d95a:	d1 83       	std	Z+1, r29	; 0x01
    d95c:	c0 83       	st	Z, r28
    d95e:	8f ef       	ldi	r24, 0xFF	; 255
	}

	return retval;
}
    d960:	df 91       	pop	r29
    d962:	cf 91       	pop	r28
    d964:	1f 91       	pop	r17
    d966:	0f 91       	pop	r16
    d968:	08 95       	ret

0000d96a <SBGPCTD_SetPacketSize>:
	}
	return retval;
}

uint8_t SBGPCTD_SetPacketSize(PSEABIRD_GPCTD_TASK pTaskInfo, uint8_t newPacketSize)
{
    d96a:	1f 93       	push	r17
    d96c:	cf 93       	push	r28
    d96e:	df 93       	push	r29
    d970:	ec 01       	movw	r28, r24
    d972:	16 2f       	mov	r17, r22
	uint8_t retval = FAIL;

	if((newPacketSize > 0) && (newPacketSize <= MAX_GPCTD_SAMPLES))
    d974:	86 2f       	mov	r24, r22
    d976:	81 50       	subi	r24, 0x01	; 1
    d978:	8a 30       	cpi	r24, 0x0A	; 10
    d97a:	10 f0       	brcs	.+4      	; 0xd980 <SBGPCTD_SetPacketSize+0x16>
    d97c:	80 e0       	ldi	r24, 0x00	; 0
    d97e:	0e c0       	rjmp	.+28     	; 0xd99c <SBGPCTD_SetPacketSize+0x32>
	{
		retval = SUCCESS;

		EepromWriteWordUnSigned((void*)(pTaskInfo->eepromAddress + SEABIRD_GPCTD_PACKET_SIZE_OFFSET), newPacketSize);
    d980:	8a 81       	ldd	r24, Y+2	; 0x02
    d982:	9b 81       	ldd	r25, Y+3	; 0x03
    d984:	8e 5b       	subi	r24, 0xBE	; 190
    d986:	9f 4f       	sbci	r25, 0xFF	; 255
    d988:	70 e0       	ldi	r23, 0x00	; 0
    d98a:	0e 94 d6 37 	call	0x6fac	; 0x6fac <EepromWriteWordUnSigned>
		pTaskInfo->pBuf->samplePacketSize = newPacketSize;
    d98e:	ec 81       	ldd	r30, Y+4	; 0x04
    d990:	fd 81       	ldd	r31, Y+5	; 0x05
    d992:	ed 5f       	subi	r30, 0xFD	; 253
    d994:	fa 4f       	sbci	r31, 0xFA	; 250
    d996:	10 83       	st	Z, r17
    d998:	11 82       	std	Z+1, r1	; 0x01
    d99a:	8f ef       	ldi	r24, 0xFF	; 255
			//Send current data to shore
		}
	}

	return retval;
}
    d99c:	df 91       	pop	r29
    d99e:	cf 91       	pop	r28
    d9a0:	1f 91       	pop	r17
    d9a2:	08 95       	ret

0000d9a4 <SBGPCTD_TurnOff>:

	return retval;
}

uint8_t SBGPCTD_TurnOff(PSEABIRD_GPCTD_TASK pTaskInfo)
{
    d9a4:	cf 93       	push	r28
    d9a6:	df 93       	push	r29
    d9a8:	ec 01       	movw	r28, r24
	uint8_t retval = FAIL;

	pTaskInfo->pBuf->sampleCTD = FALSE;
    d9aa:	ec 81       	ldd	r30, Y+4	; 0x04
    d9ac:	fd 81       	ldd	r31, Y+5	; 0x05
    d9ae:	e9 5a       	subi	r30, 0xA9	; 169
    d9b0:	fa 4f       	sbci	r31, 0xFA	; 250
    d9b2:	11 92       	st	Z+, r1
	pTaskInfo->pBuf->powerCTD = FALSE;
    d9b4:	10 82       	st	Z, r1

	EnablePIBModule(pTaskInfo->portNum, FALSE, FALSE);
    d9b6:	89 81       	ldd	r24, Y+1	; 0x01
    d9b8:	60 e0       	ldi	r22, 0x00	; 0
    d9ba:	40 e0       	ldi	r20, 0x00	; 0
    d9bc:	0e 94 a2 38 	call	0x7144	; 0x7144 <EnablePIBModule>



	if(pTaskInfo->pBuf->reportData.headerReport.repeatCount != 0)
    d9c0:	ec 81       	ldd	r30, Y+4	; 0x04
    d9c2:	fd 81       	ldd	r31, Y+5	; 0x05
    d9c4:	ee 59       	subi	r30, 0x9E	; 158
    d9c6:	fa 4f       	sbci	r31, 0xFA	; 250
    d9c8:	80 81       	ld	r24, Z
    d9ca:	e2 56       	subi	r30, 0x62	; 98
    d9cc:	f5 40       	sbci	r31, 0x05	; 5
    d9ce:	88 23       	and	r24, r24
    d9d0:	a1 f0       	breq	.+40     	; 0xd9fa <SBGPCTD_TurnOff+0x56>
	{
		pTaskInfo->pBuf->reportData.headerReport.payloadType = 0x00000070;
    d9d2:	e5 5a       	subi	r30, 0xA5	; 165
    d9d4:	fa 4f       	sbci	r31, 0xFA	; 250
    d9d6:	80 e7       	ldi	r24, 0x70	; 112
    d9d8:	90 e0       	ldi	r25, 0x00	; 0
    d9da:	a0 e0       	ldi	r26, 0x00	; 0
    d9dc:	b0 e0       	ldi	r27, 0x00	; 0
    d9de:	81 93       	st	Z+, r24
    d9e0:	91 93       	st	Z+, r25
    d9e2:	a1 93       	st	Z+, r26
    d9e4:	b1 93       	st	Z+, r27
		pTaskInfo->pBuf->reportData.headerReport.boardID = mainBoardID;
    d9e6:	80 91 e6 03 	lds	r24, 0x03E6
    d9ea:	81 93       	st	Z+, r24
		pTaskInfo->pBuf->reportData.headerReport.taskID = pTaskInfo->taskID;
    d9ec:	88 81       	ld	r24, Y
    d9ee:	81 93       	st	Z+, r24
		pTaskInfo->pBuf->reportData.headerReport.dataFormat = 8;
		pTaskInfo->pBuf->reportData.headerReport.parser = 0;
		pTaskInfo->pBuf->reportData.headerReport.priority = 2;
    d9f0:	88 e4       	ldi	r24, 0x48	; 72
    d9f2:	80 83       	st	Z, r24
		SBGPCTD_CTDReportXmitNoO2(pTaskInfo);
    d9f4:	ce 01       	movw	r24, r28
    d9f6:	0e 94 c5 6b 	call	0xd78a	; 0xd78a <SBGPCTD_CTDReportXmitNoO2>
	}

	if(pTaskInfo->pBuf->reportData2.headerReport.repeatCount != 0)
    d9fa:	ec 81       	ldd	r30, Y+4	; 0x04
    d9fc:	fd 81       	ldd	r31, Y+5	; 0x05
    d9fe:	e6 5a       	subi	r30, 0xA6	; 166
    da00:	f9 4f       	sbci	r31, 0xF9	; 249
    da02:	80 81       	ld	r24, Z
    da04:	ea 55       	subi	r30, 0x5A	; 90
    da06:	f6 40       	sbci	r31, 0x06	; 6
    da08:	88 23       	and	r24, r24
    da0a:	a1 f0       	breq	.+40     	; 0xda34 <SBGPCTD_TurnOff+0x90>
	{
		pTaskInfo->pBuf->reportData2.headerReport.payloadType = 0x00000070;
    da0c:	ed 5a       	subi	r30, 0xAD	; 173
    da0e:	f9 4f       	sbci	r31, 0xF9	; 249
    da10:	80 e7       	ldi	r24, 0x70	; 112
    da12:	90 e0       	ldi	r25, 0x00	; 0
    da14:	a0 e0       	ldi	r26, 0x00	; 0
    da16:	b0 e0       	ldi	r27, 0x00	; 0
    da18:	81 93       	st	Z+, r24
    da1a:	91 93       	st	Z+, r25
    da1c:	a1 93       	st	Z+, r26
    da1e:	b1 93       	st	Z+, r27
		pTaskInfo->pBuf->reportData2.headerReport.boardID = mainBoardID;
    da20:	80 91 e6 03 	lds	r24, 0x03E6
    da24:	81 93       	st	Z+, r24
		pTaskInfo->pBuf->reportData2.headerReport.taskID = pTaskInfo->taskID;
    da26:	88 81       	ld	r24, Y
    da28:	81 93       	st	Z+, r24
		pTaskInfo->pBuf->reportData2.headerReport.dataFormat = 9;
		pTaskInfo->pBuf->reportData2.headerReport.parser = 0;
		pTaskInfo->pBuf->reportData2.headerReport.priority = 2;
    da2a:	89 e4       	ldi	r24, 0x49	; 73
    da2c:	80 83       	st	Z, r24
		SBGPCTD_CTDReportXmitWithO2(pTaskInfo);
    da2e:	ce 01       	movw	r24, r28
    da30:	0e 94 47 6b 	call	0xd68e	; 0xd68e <SBGPCTD_CTDReportXmitWithO2>
	}

	pTaskInfo->pBuf->reportData.headerReport.repeatCount = 0;
    da34:	ec 81       	ldd	r30, Y+4	; 0x04
    da36:	fd 81       	ldd	r31, Y+5	; 0x05
    da38:	ee 59       	subi	r30, 0x9E	; 158
    da3a:	fa 4f       	sbci	r31, 0xFA	; 250
    da3c:	10 82       	st	Z, r1

	return retval;
}
    da3e:	80 e0       	ldi	r24, 0x00	; 0
    da40:	df 91       	pop	r29
    da42:	cf 91       	pop	r28
    da44:	08 95       	ret

0000da46 <SBGPCTD_GetCTDSampleWithO2>:

	return;
}

void SBGPCTD_GetCTDSampleWithO2(PSEABIRD_GPCTD_TASK pTaskInfo)
{
    da46:	9f 92       	push	r9
    da48:	af 92       	push	r10
    da4a:	bf 92       	push	r11
    da4c:	cf 92       	push	r12
    da4e:	df 92       	push	r13
    da50:	ef 92       	push	r14
    da52:	ff 92       	push	r15
    da54:	0f 93       	push	r16
    da56:	1f 93       	push	r17
    da58:	df 93       	push	r29
    da5a:	cf 93       	push	r28
    da5c:	cd b7       	in	r28, 0x3d	; 61
    da5e:	de b7       	in	r29, 0x3e	; 62
    da60:	27 97       	sbiw	r28, 0x07	; 7
    da62:	0f b6       	in	r0, 0x3f	; 63
    da64:	f8 94       	cli
    da66:	de bf       	out	0x3e, r29	; 62
    da68:	0f be       	out	0x3f, r0	; 63
    da6a:	cd bf       	out	0x3d, r28	; 61
    da6c:	5c 01       	movw	r10, r24
#define X_GPCTD3	pTaskInfo->pBuf->reportData2.dataBlock2
#define X_GPCTD4	pTaskInfo->pBuf->reportData2.headerReport.repeatCount

	uint8_t count = 0;
	uint8_t err = OS_ERR_NONE;
    da6e:	19 82       	std	Y+1, r1	; 0x01
	char tempString[6] = {0};
    da70:	fe 01       	movw	r30, r28
    da72:	32 96       	adiw	r30, 0x02	; 2
    da74:	86 e0       	ldi	r24, 0x06	; 6
    da76:	df 01       	movw	r26, r30
    da78:	1d 92       	st	X+, r1
    da7a:	8a 95       	dec	r24
    da7c:	e9 f7       	brne	.-6      	; 0xda78 <SBGPCTD_GetCTDSampleWithO2+0x32>
	
	memset(pTaskInfo->pBuf->bufferRx, 0, GPCTD_SAMPLE_WITH_O2_LEN);
    da7e:	f5 01       	movw	r30, r10
    da80:	84 81       	ldd	r24, Z+4	; 0x04
    da82:	95 81       	ldd	r25, Z+5	; 0x05
    da84:	80 50       	subi	r24, 0x00	; 0
    da86:	9f 4f       	sbci	r25, 0xFF	; 255
    da88:	fc 01       	movw	r30, r24
    da8a:	86 e1       	ldi	r24, 0x16	; 22
    da8c:	df 01       	movw	r26, r30
    da8e:	1d 92       	st	X+, r1
    da90:	8a 95       	dec	r24
    da92:	e9 f7       	brne	.-6      	; 0xda8e <SBGPCTD_GetCTDSampleWithO2+0x48>

	pTaskInfo->pBuf->bufferRx[0] = 0;
    da94:	d5 01       	movw	r26, r10
    da96:	14 96       	adiw	r26, 0x04	; 4
    da98:	ed 91       	ld	r30, X+
    da9a:	fc 91       	ld	r31, X
    da9c:	15 97       	sbiw	r26, 0x05	; 5
    da9e:	e0 50       	subi	r30, 0x00	; 0
    daa0:	ff 4f       	sbci	r31, 0xFF	; 255
    daa2:	10 82       	st	Z, r1
    daa4:	cc 24       	eor	r12, r12
    daa6:	dd 24       	eor	r13, r13

	while((count < GPCTD_SAMPLE_WITH_O2_LEN) && (err == OS_ERR_NONE))
	{
		pTaskInfo->pBuf->bufferRx[count] = OSuartGetCharWait(pTaskInfo->portNum, 12, &err);
    daa8:	7e 01       	movw	r14, r28
    daaa:	08 94       	sec
    daac:	e1 1c       	adc	r14, r1
    daae:	f1 1c       	adc	r15, r1
    dab0:	24 c0       	rjmp	.+72     	; 0xdafa <SBGPCTD_GetCTDSampleWithO2+0xb4>
    dab2:	f5 01       	movw	r30, r10
    dab4:	04 81       	ldd	r16, Z+4	; 0x04
    dab6:	15 81       	ldd	r17, Z+5	; 0x05
    dab8:	81 81       	ldd	r24, Z+1	; 0x01
    daba:	6c e0       	ldi	r22, 0x0C	; 12
    dabc:	70 e0       	ldi	r23, 0x00	; 0
    dabe:	a7 01       	movw	r20, r14
    dac0:	0e 94 b8 32 	call	0x6570	; 0x6570 <OSuartGetCharWait>
    dac4:	0c 0d       	add	r16, r12
    dac6:	1d 1d       	adc	r17, r13
    dac8:	00 50       	subi	r16, 0x00	; 0
    daca:	1f 4f       	sbci	r17, 0xFF	; 255
    dacc:	d8 01       	movw	r26, r16
    dace:	8c 93       	st	X, r24
    dad0:	99 2d       	mov	r25, r9
    dad2:	9f 5f       	subi	r25, 0xFF	; 255
		count++;
		if(pTaskInfo->pBuf->bufferRx[count-1] == 0x0A)
    dad4:	d5 01       	movw	r26, r10
    dad6:	14 96       	adiw	r26, 0x04	; 4
    dad8:	ed 91       	ld	r30, X+
    dada:	fc 91       	ld	r31, X
    dadc:	15 97       	sbiw	r26, 0x05	; 5
    dade:	ec 0d       	add	r30, r12
    dae0:	fd 1d       	adc	r31, r13
    dae2:	e0 50       	subi	r30, 0x00	; 0
    dae4:	ff 4f       	sbci	r31, 0xFF	; 255
    dae6:	80 81       	ld	r24, Z
    dae8:	8a 30       	cpi	r24, 0x0A	; 10
    daea:	61 f0       	breq	.+24     	; 0xdb04 <SBGPCTD_GetCTDSampleWithO2+0xbe>
			break;
    daec:	08 94       	sec
    daee:	c1 1c       	adc	r12, r1
    daf0:	d1 1c       	adc	r13, r1
	
	memset(pTaskInfo->pBuf->bufferRx, 0, GPCTD_SAMPLE_WITH_O2_LEN);

	pTaskInfo->pBuf->bufferRx[0] = 0;

	while((count < GPCTD_SAMPLE_WITH_O2_LEN) && (err == OS_ERR_NONE))
    daf2:	b6 e1       	ldi	r27, 0x16	; 22
    daf4:	cb 16       	cp	r12, r27
    daf6:	d1 04       	cpc	r13, r1
    daf8:	29 f0       	breq	.+10     	; 0xdb04 <SBGPCTD_GetCTDSampleWithO2+0xbe>
    dafa:	9c 2c       	mov	r9, r12
    dafc:	89 81       	ldd	r24, Y+1	; 0x01
    dafe:	88 23       	and	r24, r24
    db00:	c1 f2       	breq	.-80     	; 0xdab2 <SBGPCTD_GetCTDSampleWithO2+0x6c>
    db02:	04 c0       	rjmp	.+8      	; 0xdb0c <SBGPCTD_GetCTDSampleWithO2+0xc6>
    db04:	99 2e       	mov	r9, r25
		count++;
		if(pTaskInfo->pBuf->bufferRx[count-1] == 0x0A)
			break;
	}

	if(((count == GPCTD_SAMPLE_WITH_O2_LEN) || (count == GPCTD_SAMPLE_NO_O2_LEN)) && (pTaskInfo->pBuf->bufferRx[count - 1] == 0x0A))
    db06:	e6 e1       	ldi	r30, 0x16	; 22
    db08:	9e 17       	cp	r25, r30
    db0a:	21 f0       	breq	.+8      	; 0xdb14 <SBGPCTD_GetCTDSampleWithO2+0xce>
    db0c:	f1 e1       	ldi	r31, 0x11	; 17
    db0e:	9f 16       	cp	r9, r31
    db10:	09 f0       	breq	.+2      	; 0xdb14 <SBGPCTD_GetCTDSampleWithO2+0xce>
    db12:	78 c1       	rjmp	.+752    	; 0xde04 <SBGPCTD_GetCTDSampleWithO2+0x3be>
    db14:	d5 01       	movw	r26, r10
    db16:	14 96       	adiw	r26, 0x04	; 4
    db18:	cd 90       	ld	r12, X+
    db1a:	dc 90       	ld	r13, X
    db1c:	15 97       	sbiw	r26, 0x05	; 5
    db1e:	f6 01       	movw	r30, r12
    db20:	e9 0d       	add	r30, r9
    db22:	f1 1d       	adc	r31, r1
    db24:	e1 50       	subi	r30, 0x01	; 1
    db26:	ff 4f       	sbci	r31, 0xFF	; 255
    db28:	80 81       	ld	r24, Z
    db2a:	8a 30       	cpi	r24, 0x0A	; 10
    db2c:	09 f0       	breq	.+2      	; 0xdb30 <SBGPCTD_GetCTDSampleWithO2+0xea>
    db2e:	6a c1       	rjmp	.+724    	; 0xde04 <SBGPCTD_GetCTDSampleWithO2+0x3be>
	{

		X_GPCTD3[X_GPCTD4].headerData.latitude = latitude;
    db30:	96 01       	movw	r18, r12
    db32:	26 5a       	subi	r18, 0xA6	; 166
    db34:	39 4f       	sbci	r19, 0xF9	; 249
    db36:	f9 01       	movw	r30, r18
    db38:	80 81       	ld	r24, Z
    db3a:	90 e0       	ldi	r25, 0x00	; 0
    db3c:	6c e1       	ldi	r22, 0x1C	; 28
    db3e:	e6 2e       	mov	r14, r22
    db40:	f1 2c       	mov	r15, r1
    db42:	8e 9d       	mul	r24, r14
    db44:	f0 01       	movw	r30, r0
    db46:	8f 9d       	mul	r24, r15
    db48:	f0 0d       	add	r31, r0
    db4a:	9e 9d       	mul	r25, r14
    db4c:	f0 0d       	add	r31, r0
    db4e:	11 24       	eor	r1, r1
    db50:	ec 0d       	add	r30, r12
    db52:	fd 1d       	adc	r31, r13
    db54:	e5 5a       	subi	r30, 0xA5	; 165
    db56:	f9 4f       	sbci	r31, 0xF9	; 249
    db58:	80 91 e5 b7 	lds	r24, 0xB7E5
    db5c:	90 91 e6 b7 	lds	r25, 0xB7E6
    db60:	a0 91 e7 b7 	lds	r26, 0xB7E7
    db64:	b0 91 e8 b7 	lds	r27, 0xB7E8
    db68:	80 83       	st	Z, r24
    db6a:	91 83       	std	Z+1, r25	; 0x01
    db6c:	a2 83       	std	Z+2, r26	; 0x02
    db6e:	b3 83       	std	Z+3, r27	; 0x03
		X_GPCTD3[X_GPCTD4].headerData.longitude = longitude;
    db70:	d9 01       	movw	r26, r18
    db72:	8c 91       	ld	r24, X
    db74:	90 e0       	ldi	r25, 0x00	; 0
    db76:	8e 9d       	mul	r24, r14
    db78:	f0 01       	movw	r30, r0
    db7a:	8f 9d       	mul	r24, r15
    db7c:	f0 0d       	add	r31, r0
    db7e:	9e 9d       	mul	r25, r14
    db80:	f0 0d       	add	r31, r0
    db82:	11 24       	eor	r1, r1
    db84:	ec 0d       	add	r30, r12
    db86:	fd 1d       	adc	r31, r13
    db88:	e1 5a       	subi	r30, 0xA1	; 161
    db8a:	f9 4f       	sbci	r31, 0xF9	; 249
    db8c:	80 91 e9 b7 	lds	r24, 0xB7E9
    db90:	90 91 ea b7 	lds	r25, 0xB7EA
    db94:	a0 91 eb b7 	lds	r26, 0xB7EB
    db98:	b0 91 ec b7 	lds	r27, 0xB7EC
    db9c:	80 83       	st	Z, r24
    db9e:	91 83       	std	Z+1, r25	; 0x01
    dba0:	a2 83       	std	Z+2, r26	; 0x02
    dba2:	b3 83       	std	Z+3, r27	; 0x03
		X_GPCTD3[X_GPCTD4].headerData.timestamp = gettime();
    dba4:	f9 01       	movw	r30, r18
    dba6:	00 81       	ld	r16, Z
    dba8:	10 e0       	ldi	r17, 0x00	; 0
    dbaa:	0e 94 3c 34 	call	0x6878	; 0x6878 <gettime>
    dbae:	0e 9d       	mul	r16, r14
    dbb0:	90 01       	movw	r18, r0
    dbb2:	0f 9d       	mul	r16, r15
    dbb4:	30 0d       	add	r19, r0
    dbb6:	1e 9d       	mul	r17, r14
    dbb8:	30 0d       	add	r19, r0
    dbba:	11 24       	eor	r1, r1
    dbbc:	c2 0e       	add	r12, r18
    dbbe:	d3 1e       	adc	r13, r19
    dbc0:	23 e6       	ldi	r18, 0x63	; 99
    dbc2:	36 e0       	ldi	r19, 0x06	; 6
    dbc4:	c2 0e       	add	r12, r18
    dbc6:	d3 1e       	adc	r13, r19
    dbc8:	d6 01       	movw	r26, r12
    dbca:	6d 93       	st	X+, r22
    dbcc:	7d 93       	st	X+, r23
    dbce:	8d 93       	st	X+, r24
    dbd0:	9c 93       	st	X, r25
    dbd2:	13 97       	sbiw	r26, 0x03	; 3

		
		memset(tempString, 0, 6);
    dbd4:	9e 01       	movw	r18, r28
    dbd6:	2e 5f       	subi	r18, 0xFE	; 254
    dbd8:	3f 4f       	sbci	r19, 0xFF	; 255
    dbda:	86 e0       	ldi	r24, 0x06	; 6
    dbdc:	f9 01       	movw	r30, r18
    dbde:	11 92       	st	Z+, r1
    dbe0:	8a 95       	dec	r24
    dbe2:	e9 f7       	brne	.-6      	; 0xdbde <SBGPCTD_GetCTDSampleWithO2+0x198>
		memcpy(tempString, &(pTaskInfo->pBuf->bufferRx[0]), 5);
    dbe4:	f5 01       	movw	r30, r10
    dbe6:	a4 81       	ldd	r26, Z+4	; 0x04
    dbe8:	b5 81       	ldd	r27, Z+5	; 0x05
    dbea:	f9 01       	movw	r30, r18
    dbec:	a0 50       	subi	r26, 0x00	; 0
    dbee:	bf 4f       	sbci	r27, 0xFF	; 255
    dbf0:	85 e0       	ldi	r24, 0x05	; 5
    dbf2:	0d 90       	ld	r0, X+
    dbf4:	01 92       	st	Z+, r0
    dbf6:	81 50       	subi	r24, 0x01	; 1
    dbf8:	e1 f7       	brne	.-8      	; 0xdbf2 <SBGPCTD_GetCTDSampleWithO2+0x1ac>
		X_GPCTD3[X_GPCTD4].pressure = strtol(tempString, NULL, 16);
    dbfa:	d5 01       	movw	r26, r10
    dbfc:	14 96       	adiw	r26, 0x04	; 4
    dbfe:	0d 91       	ld	r16, X+
    dc00:	1c 91       	ld	r17, X
    dc02:	15 97       	sbiw	r26, 0x05	; 5
    dc04:	06 5a       	subi	r16, 0xA6	; 166
    dc06:	19 4f       	sbci	r17, 0xF9	; 249
    dc08:	f8 01       	movw	r30, r16
    dc0a:	e0 80       	ld	r14, Z
    dc0c:	0a 55       	subi	r16, 0x5A	; 90
    dc0e:	16 40       	sbci	r17, 0x06	; 6
    dc10:	ff 24       	eor	r15, r15
    dc12:	52 e0       	ldi	r21, 0x02	; 2
    dc14:	c5 2e       	mov	r12, r21
    dc16:	d1 2c       	mov	r13, r1
    dc18:	cc 0e       	add	r12, r28
    dc1a:	dd 1e       	adc	r13, r29
    dc1c:	c6 01       	movw	r24, r12
    dc1e:	60 e0       	ldi	r22, 0x00	; 0
    dc20:	70 e0       	ldi	r23, 0x00	; 0
    dc22:	40 e1       	ldi	r20, 0x10	; 16
    dc24:	50 e0       	ldi	r21, 0x00	; 0
    dc26:	0e 94 2a ee 	call	0x1dc54	; 0x1dc54 <strtol>
    dc2a:	2c e1       	ldi	r18, 0x1C	; 28
    dc2c:	30 e0       	ldi	r19, 0x00	; 0
    dc2e:	a9 01       	movw	r20, r18
    dc30:	e4 9e       	mul	r14, r20
    dc32:	90 01       	movw	r18, r0
    dc34:	e5 9e       	mul	r14, r21
    dc36:	30 0d       	add	r19, r0
    dc38:	f4 9e       	mul	r15, r20
    dc3a:	30 0d       	add	r19, r0
    dc3c:	11 24       	eor	r1, r1
    dc3e:	02 0f       	add	r16, r18
    dc40:	13 1f       	adc	r17, r19
    dc42:	09 59       	subi	r16, 0x99	; 153
    dc44:	19 4f       	sbci	r17, 0xF9	; 249
    dc46:	d8 01       	movw	r26, r16
    dc48:	6d 93       	st	X+, r22
    dc4a:	7d 93       	st	X+, r23
    dc4c:	8d 93       	st	X+, r24
    dc4e:	9c 93       	st	X, r25
    dc50:	13 97       	sbiw	r26, 0x03	; 3

		memset(tempString, 0, 6);
    dc52:	86 e0       	ldi	r24, 0x06	; 6
    dc54:	f6 01       	movw	r30, r12
    dc56:	11 92       	st	Z+, r1
    dc58:	8a 95       	dec	r24
    dc5a:	e9 f7       	brne	.-6      	; 0xdc56 <SBGPCTD_GetCTDSampleWithO2+0x210>
		memcpy(tempString, &(pTaskInfo->pBuf->bufferRx[5]), 5);
    dc5c:	d5 01       	movw	r26, r10
    dc5e:	14 96       	adiw	r26, 0x04	; 4
    dc60:	ed 91       	ld	r30, X+
    dc62:	fc 91       	ld	r31, X
    dc64:	15 97       	sbiw	r26, 0x05	; 5
    dc66:	d6 01       	movw	r26, r12
    dc68:	eb 5f       	subi	r30, 0xFB	; 251
    dc6a:	fe 4f       	sbci	r31, 0xFE	; 254
    dc6c:	85 e0       	ldi	r24, 0x05	; 5
    dc6e:	01 90       	ld	r0, Z+
    dc70:	0d 92       	st	X+, r0
    dc72:	81 50       	subi	r24, 0x01	; 1
    dc74:	e1 f7       	brne	.-8      	; 0xdc6e <SBGPCTD_GetCTDSampleWithO2+0x228>
		X_GPCTD3[X_GPCTD4].temperature = strtol(tempString, NULL, 16);
    dc76:	f5 01       	movw	r30, r10
    dc78:	04 81       	ldd	r16, Z+4	; 0x04
    dc7a:	15 81       	ldd	r17, Z+5	; 0x05
    dc7c:	06 5a       	subi	r16, 0xA6	; 166
    dc7e:	19 4f       	sbci	r17, 0xF9	; 249
    dc80:	d8 01       	movw	r26, r16
    dc82:	ec 90       	ld	r14, X
    dc84:	0a 55       	subi	r16, 0x5A	; 90
    dc86:	16 40       	sbci	r17, 0x06	; 6
    dc88:	ff 24       	eor	r15, r15
    dc8a:	42 e0       	ldi	r20, 0x02	; 2
    dc8c:	c4 2e       	mov	r12, r20
    dc8e:	d1 2c       	mov	r13, r1
    dc90:	cc 0e       	add	r12, r28
    dc92:	dd 1e       	adc	r13, r29
    dc94:	c6 01       	movw	r24, r12
    dc96:	60 e0       	ldi	r22, 0x00	; 0
    dc98:	70 e0       	ldi	r23, 0x00	; 0
    dc9a:	40 e1       	ldi	r20, 0x10	; 16
    dc9c:	50 e0       	ldi	r21, 0x00	; 0
    dc9e:	0e 94 2a ee 	call	0x1dc54	; 0x1dc54 <strtol>
    dca2:	2c e1       	ldi	r18, 0x1C	; 28
    dca4:	30 e0       	ldi	r19, 0x00	; 0
    dca6:	f9 01       	movw	r30, r18
    dca8:	ee 9e       	mul	r14, r30
    dcaa:	90 01       	movw	r18, r0
    dcac:	ef 9e       	mul	r14, r31
    dcae:	30 0d       	add	r19, r0
    dcb0:	fe 9e       	mul	r15, r30
    dcb2:	30 0d       	add	r19, r0
    dcb4:	11 24       	eor	r1, r1
    dcb6:	02 0f       	add	r16, r18
    dcb8:	13 1f       	adc	r17, r19
    dcba:	05 59       	subi	r16, 0x95	; 149
    dcbc:	19 4f       	sbci	r17, 0xF9	; 249
    dcbe:	d8 01       	movw	r26, r16
    dcc0:	6d 93       	st	X+, r22
    dcc2:	7d 93       	st	X+, r23
    dcc4:	8d 93       	st	X+, r24
    dcc6:	9c 93       	st	X, r25
    dcc8:	13 97       	sbiw	r26, 0x03	; 3

		memset(tempString, 0, 6);
    dcca:	86 e0       	ldi	r24, 0x06	; 6
    dccc:	f6 01       	movw	r30, r12
    dcce:	11 92       	st	Z+, r1
    dcd0:	8a 95       	dec	r24
    dcd2:	e9 f7       	brne	.-6      	; 0xdcce <SBGPCTD_GetCTDSampleWithO2+0x288>
		memcpy(tempString, &(pTaskInfo->pBuf->bufferRx[10]), 5);
    dcd4:	d5 01       	movw	r26, r10
    dcd6:	14 96       	adiw	r26, 0x04	; 4
    dcd8:	ed 91       	ld	r30, X+
    dcda:	fc 91       	ld	r31, X
    dcdc:	15 97       	sbiw	r26, 0x05	; 5
    dcde:	d6 01       	movw	r26, r12
    dce0:	e6 5f       	subi	r30, 0xF6	; 246
    dce2:	fe 4f       	sbci	r31, 0xFE	; 254
    dce4:	85 e0       	ldi	r24, 0x05	; 5
    dce6:	01 90       	ld	r0, Z+
    dce8:	0d 92       	st	X+, r0
    dcea:	81 50       	subi	r24, 0x01	; 1
    dcec:	e1 f7       	brne	.-8      	; 0xdce6 <SBGPCTD_GetCTDSampleWithO2+0x2a0>
		X_GPCTD3[X_GPCTD4].conductivity = strtol(tempString, NULL, 16);
    dcee:	f5 01       	movw	r30, r10
    dcf0:	04 81       	ldd	r16, Z+4	; 0x04
    dcf2:	15 81       	ldd	r17, Z+5	; 0x05
    dcf4:	06 5a       	subi	r16, 0xA6	; 166
    dcf6:	19 4f       	sbci	r17, 0xF9	; 249
    dcf8:	d8 01       	movw	r26, r16
    dcfa:	ec 90       	ld	r14, X
    dcfc:	0a 55       	subi	r16, 0x5A	; 90
    dcfe:	16 40       	sbci	r17, 0x06	; 6
    dd00:	ff 24       	eor	r15, r15
    dd02:	32 e0       	ldi	r19, 0x02	; 2
    dd04:	c3 2e       	mov	r12, r19
    dd06:	d1 2c       	mov	r13, r1
    dd08:	cc 0e       	add	r12, r28
    dd0a:	dd 1e       	adc	r13, r29
    dd0c:	c6 01       	movw	r24, r12
    dd0e:	60 e0       	ldi	r22, 0x00	; 0
    dd10:	70 e0       	ldi	r23, 0x00	; 0
    dd12:	40 e1       	ldi	r20, 0x10	; 16
    dd14:	50 e0       	ldi	r21, 0x00	; 0
    dd16:	0e 94 2a ee 	call	0x1dc54	; 0x1dc54 <strtol>
    dd1a:	08 94       	sec
    dd1c:	e1 1c       	adc	r14, r1
    dd1e:	f1 1c       	adc	r15, r1
    dd20:	4c e1       	ldi	r20, 0x1C	; 28
    dd22:	50 e0       	ldi	r21, 0x00	; 0
    dd24:	e4 9e       	mul	r14, r20
    dd26:	90 01       	movw	r18, r0
    dd28:	e5 9e       	mul	r14, r21
    dd2a:	30 0d       	add	r19, r0
    dd2c:	f4 9e       	mul	r15, r20
    dd2e:	30 0d       	add	r19, r0
    dd30:	11 24       	eor	r1, r1
    dd32:	02 0f       	add	r16, r18
    dd34:	13 1f       	adc	r17, r19
    dd36:	0d 5a       	subi	r16, 0xAD	; 173
    dd38:	19 4f       	sbci	r17, 0xF9	; 249
    dd3a:	f8 01       	movw	r30, r16
    dd3c:	60 83       	st	Z, r22
    dd3e:	71 83       	std	Z+1, r23	; 0x01
    dd40:	82 83       	std	Z+2, r24	; 0x02
    dd42:	93 83       	std	Z+3, r25	; 0x03
    dd44:	d5 01       	movw	r26, r10
    dd46:	14 96       	adiw	r26, 0x04	; 4
    dd48:	ed 91       	ld	r30, X+
    dd4a:	fc 91       	ld	r31, X
    dd4c:	15 97       	sbiw	r26, 0x05	; 5

		if(count == GPCTD_SAMPLE_WITH_O2_LEN)
    dd4e:	b6 e1       	ldi	r27, 0x16	; 22
    dd50:	9b 16       	cp	r9, r27
    dd52:	a1 f5       	brne	.+104    	; 0xddbc <SBGPCTD_GetCTDSampleWithO2+0x376>
		{
			memset(tempString, 0, 6);
    dd54:	86 e0       	ldi	r24, 0x06	; 6
    dd56:	d6 01       	movw	r26, r12
    dd58:	1d 92       	st	X+, r1
    dd5a:	8a 95       	dec	r24
    dd5c:	e9 f7       	brne	.-6      	; 0xdd58 <SBGPCTD_GetCTDSampleWithO2+0x312>
			memcpy(tempString, &(pTaskInfo->pBuf->bufferRx[15]), 5);
    dd5e:	d6 01       	movw	r26, r12
    dd60:	e1 5f       	subi	r30, 0xF1	; 241
    dd62:	fe 4f       	sbci	r31, 0xFE	; 254
    dd64:	85 e0       	ldi	r24, 0x05	; 5
    dd66:	01 90       	ld	r0, Z+
    dd68:	0d 92       	st	X+, r0
    dd6a:	81 50       	subi	r24, 0x01	; 1
    dd6c:	e1 f7       	brne	.-8      	; 0xdd66 <SBGPCTD_GetCTDSampleWithO2+0x320>
			X_GPCTD3[X_GPCTD4].oxygen = strtol(tempString, NULL, 16);
    dd6e:	f5 01       	movw	r30, r10
    dd70:	04 81       	ldd	r16, Z+4	; 0x04
    dd72:	15 81       	ldd	r17, Z+5	; 0x05
    dd74:	06 5a       	subi	r16, 0xA6	; 166
    dd76:	19 4f       	sbci	r17, 0xF9	; 249
    dd78:	d8 01       	movw	r26, r16
    dd7a:	ec 90       	ld	r14, X
    dd7c:	0a 55       	subi	r16, 0x5A	; 90
    dd7e:	16 40       	sbci	r17, 0x06	; 6
    dd80:	ff 24       	eor	r15, r15
    dd82:	ce 01       	movw	r24, r28
    dd84:	02 96       	adiw	r24, 0x02	; 2
    dd86:	60 e0       	ldi	r22, 0x00	; 0
    dd88:	70 e0       	ldi	r23, 0x00	; 0
    dd8a:	40 e1       	ldi	r20, 0x10	; 16
    dd8c:	50 e0       	ldi	r21, 0x00	; 0
    dd8e:	0e 94 2a ee 	call	0x1dc54	; 0x1dc54 <strtol>
    dd92:	2c e1       	ldi	r18, 0x1C	; 28
    dd94:	30 e0       	ldi	r19, 0x00	; 0
    dd96:	f9 01       	movw	r30, r18
    dd98:	ee 9e       	mul	r14, r30
    dd9a:	90 01       	movw	r18, r0
    dd9c:	ef 9e       	mul	r14, r31
    dd9e:	30 0d       	add	r19, r0
    dda0:	fe 9e       	mul	r15, r30
    dda2:	30 0d       	add	r19, r0
    dda4:	11 24       	eor	r1, r1
    dda6:	02 0f       	add	r16, r18
    dda8:	13 1f       	adc	r17, r19
    ddaa:	0d 58       	subi	r16, 0x8D	; 141
    ddac:	19 4f       	sbci	r17, 0xF9	; 249
    ddae:	d8 01       	movw	r26, r16
    ddb0:	6d 93       	st	X+, r22
    ddb2:	7d 93       	st	X+, r23
    ddb4:	8d 93       	st	X+, r24
    ddb6:	9c 93       	st	X, r25
    ddb8:	13 97       	sbiw	r26, 0x03	; 3
    ddba:	1a c0       	rjmp	.+52     	; 0xddf0 <SBGPCTD_GetCTDSampleWithO2+0x3aa>
		}
		else
		{
			X_GPCTD3[X_GPCTD4].oxygen = 0xFFFFFFFF;
    ddbc:	e6 5a       	subi	r30, 0xA6	; 166
    ddbe:	f9 4f       	sbci	r31, 0xF9	; 249
    ddc0:	80 81       	ld	r24, Z
    ddc2:	ea 55       	subi	r30, 0x5A	; 90
    ddc4:	f6 40       	sbci	r31, 0x06	; 6
    ddc6:	90 e0       	ldi	r25, 0x00	; 0
    ddc8:	9c 01       	movw	r18, r24
    ddca:	24 9f       	mul	r18, r20
    ddcc:	c0 01       	movw	r24, r0
    ddce:	25 9f       	mul	r18, r21
    ddd0:	90 0d       	add	r25, r0
    ddd2:	34 9f       	mul	r19, r20
    ddd4:	90 0d       	add	r25, r0
    ddd6:	11 24       	eor	r1, r1
    ddd8:	e8 0f       	add	r30, r24
    ddda:	f9 1f       	adc	r31, r25
    dddc:	ed 58       	subi	r30, 0x8D	; 141
    ddde:	f9 4f       	sbci	r31, 0xF9	; 249
    dde0:	8f ef       	ldi	r24, 0xFF	; 255
    dde2:	9f ef       	ldi	r25, 0xFF	; 255
    dde4:	af ef       	ldi	r26, 0xFF	; 255
    dde6:	bf ef       	ldi	r27, 0xFF	; 255
    dde8:	80 83       	st	Z, r24
    ddea:	91 83       	std	Z+1, r25	; 0x01
    ddec:	a2 83       	std	Z+2, r26	; 0x02
    ddee:	b3 83       	std	Z+3, r27	; 0x03
		}
		pTaskInfo->pBuf->reportData2.headerReport.repeatCount++;
    ddf0:	d5 01       	movw	r26, r10
    ddf2:	14 96       	adiw	r26, 0x04	; 4
    ddf4:	ed 91       	ld	r30, X+
    ddf6:	fc 91       	ld	r31, X
    ddf8:	15 97       	sbiw	r26, 0x05	; 5
    ddfa:	e6 5a       	subi	r30, 0xA6	; 166
    ddfc:	f9 4f       	sbci	r31, 0xF9	; 249
    ddfe:	80 81       	ld	r24, Z
    de00:	8f 5f       	subi	r24, 0xFF	; 255
    de02:	08 c0       	rjmp	.+16     	; 0xde14 <SBGPCTD_GetCTDSampleWithO2+0x3ce>
	}
	else
	{
		pTaskInfo->pBuf->findDataFrame = TRUE;
    de04:	d5 01       	movw	r26, r10
    de06:	14 96       	adiw	r26, 0x04	; 4
    de08:	ed 91       	ld	r30, X+
    de0a:	fc 91       	ld	r31, X
    de0c:	15 97       	sbiw	r26, 0x05	; 5
    de0e:	e6 5a       	subi	r30, 0xA6	; 166
    de10:	fa 4f       	sbci	r31, 0xFA	; 250
    de12:	8f ef       	ldi	r24, 0xFF	; 255
    de14:	80 83       	st	Z, r24

#undef X_GPCTD3
#undef X_GPCTD4

	return;
}
    de16:	27 96       	adiw	r28, 0x07	; 7
    de18:	0f b6       	in	r0, 0x3f	; 63
    de1a:	f8 94       	cli
    de1c:	de bf       	out	0x3e, r29	; 62
    de1e:	0f be       	out	0x3f, r0	; 63
    de20:	cd bf       	out	0x3d, r28	; 61
    de22:	cf 91       	pop	r28
    de24:	df 91       	pop	r29
    de26:	1f 91       	pop	r17
    de28:	0f 91       	pop	r16
    de2a:	ff 90       	pop	r15
    de2c:	ef 90       	pop	r14
    de2e:	df 90       	pop	r13
    de30:	cf 90       	pop	r12
    de32:	bf 90       	pop	r11
    de34:	af 90       	pop	r10
    de36:	9f 90       	pop	r9
    de38:	08 95       	ret

0000de3a <SBGPCTD_GetCTDSampleNoO2>:

	return;
}

void SBGPCTD_GetCTDSampleNoO2(PSEABIRD_GPCTD_TASK pTaskInfo)
{
    de3a:	af 92       	push	r10
    de3c:	bf 92       	push	r11
    de3e:	cf 92       	push	r12
    de40:	df 92       	push	r13
    de42:	ef 92       	push	r14
    de44:	ff 92       	push	r15
    de46:	0f 93       	push	r16
    de48:	1f 93       	push	r17
    de4a:	df 93       	push	r29
    de4c:	cf 93       	push	r28
    de4e:	cd b7       	in	r28, 0x3d	; 61
    de50:	de b7       	in	r29, 0x3e	; 62
    de52:	27 97       	sbiw	r28, 0x07	; 7
    de54:	0f b6       	in	r0, 0x3f	; 63
    de56:	f8 94       	cli
    de58:	de bf       	out	0x3e, r29	; 62
    de5a:	0f be       	out	0x3f, r0	; 63
    de5c:	cd bf       	out	0x3d, r28	; 61
    de5e:	5c 01       	movw	r10, r24
#define X_GPCTD1	pTaskInfo->pBuf->reportData.dataBlock
#define X_GPCTD2	pTaskInfo->pBuf->reportData.headerReport.repeatCount

	uint8_t count = 0;
	uint8_t err = OS_ERR_NONE;
    de60:	19 82       	std	Y+1, r1	; 0x01
	char tempString[6] = {0};
    de62:	fe 01       	movw	r30, r28
    de64:	32 96       	adiw	r30, 0x02	; 2
    de66:	86 e0       	ldi	r24, 0x06	; 6
    de68:	df 01       	movw	r26, r30
    de6a:	1d 92       	st	X+, r1
    de6c:	8a 95       	dec	r24
    de6e:	e9 f7       	brne	.-6      	; 0xde6a <SBGPCTD_GetCTDSampleNoO2+0x30>
	
	memset(pTaskInfo->pBuf->bufferRx, 0, 256);
    de70:	f5 01       	movw	r30, r10
    de72:	84 81       	ldd	r24, Z+4	; 0x04
    de74:	95 81       	ldd	r25, Z+5	; 0x05
    de76:	80 50       	subi	r24, 0x00	; 0
    de78:	9f 4f       	sbci	r25, 0xFF	; 255
    de7a:	fc 01       	movw	r30, r24
    de7c:	80 e0       	ldi	r24, 0x00	; 0
    de7e:	91 e0       	ldi	r25, 0x01	; 1
    de80:	df 01       	movw	r26, r30
    de82:	9c 01       	movw	r18, r24
    de84:	1d 92       	st	X+, r1
    de86:	21 50       	subi	r18, 0x01	; 1
    de88:	30 40       	sbci	r19, 0x00	; 0
    de8a:	e1 f7       	brne	.-8      	; 0xde84 <SBGPCTD_GetCTDSampleNoO2+0x4a>
    de8c:	ee 24       	eor	r14, r14
    de8e:	ff 24       	eor	r15, r15

	while((count < GPCTD_SAMPLE_NO_O2_LEN) && (err == OS_ERR_NONE))
	{
		pTaskInfo->pBuf->bufferRx[count] = OSuartGetCharWait(pTaskInfo->portNum, 12, &err);
    de90:	6e 01       	movw	r12, r28
    de92:	08 94       	sec
    de94:	c1 1c       	adc	r12, r1
    de96:	d1 1c       	adc	r13, r1
    de98:	1b c0       	rjmp	.+54     	; 0xded0 <SBGPCTD_GetCTDSampleNoO2+0x96>
    de9a:	d5 01       	movw	r26, r10
    de9c:	14 96       	adiw	r26, 0x04	; 4
    de9e:	0d 91       	ld	r16, X+
    dea0:	1c 91       	ld	r17, X
    dea2:	15 97       	sbiw	r26, 0x05	; 5
    dea4:	11 96       	adiw	r26, 0x01	; 1
    dea6:	8c 91       	ld	r24, X
    dea8:	6c e0       	ldi	r22, 0x0C	; 12
    deaa:	70 e0       	ldi	r23, 0x00	; 0
    deac:	a6 01       	movw	r20, r12
    deae:	0e 94 b8 32 	call	0x6570	; 0x6570 <OSuartGetCharWait>
    deb2:	0e 0d       	add	r16, r14
    deb4:	1f 1d       	adc	r17, r15
    deb6:	00 50       	subi	r16, 0x00	; 0
    deb8:	1f 4f       	sbci	r17, 0xFF	; 255
    deba:	f8 01       	movw	r30, r16
    debc:	80 83       	st	Z, r24
    debe:	8e 2d       	mov	r24, r14
    dec0:	8f 5f       	subi	r24, 0xFF	; 255
    dec2:	08 94       	sec
    dec4:	e1 1c       	adc	r14, r1
    dec6:	f1 1c       	adc	r15, r1
	uint8_t err = OS_ERR_NONE;
	char tempString[6] = {0};
	
	memset(pTaskInfo->pBuf->bufferRx, 0, 256);

	while((count < GPCTD_SAMPLE_NO_O2_LEN) && (err == OS_ERR_NONE))
    dec8:	f1 e1       	ldi	r31, 0x11	; 17
    deca:	ef 16       	cp	r14, r31
    decc:	f1 04       	cpc	r15, r1
    dece:	21 f0       	breq	.+8      	; 0xded8 <SBGPCTD_GetCTDSampleNoO2+0x9e>
    ded0:	89 81       	ldd	r24, Y+1	; 0x01
    ded2:	88 23       	and	r24, r24
    ded4:	11 f3       	breq	.-60     	; 0xde9a <SBGPCTD_GetCTDSampleNoO2+0x60>
    ded6:	2c c1       	rjmp	.+600    	; 0xe130 <SBGPCTD_GetCTDSampleNoO2+0x2f6>
	{
		pTaskInfo->pBuf->bufferRx[count] = OSuartGetCharWait(pTaskInfo->portNum, 12, &err);
		count++;
	}

	if((count == GPCTD_SAMPLE_NO_O2_LEN) && (pTaskInfo->pBuf->bufferRx[count - 1] == 0x0A))
    ded8:	81 31       	cpi	r24, 0x11	; 17
    deda:	09 f0       	breq	.+2      	; 0xdede <SBGPCTD_GetCTDSampleNoO2+0xa4>
    dedc:	29 c1       	rjmp	.+594    	; 0xe130 <SBGPCTD_GetCTDSampleNoO2+0x2f6>
    dede:	d5 01       	movw	r26, r10
    dee0:	14 96       	adiw	r26, 0x04	; 4
    dee2:	ed 90       	ld	r14, X+
    dee4:	fc 90       	ld	r15, X
    dee6:	15 97       	sbiw	r26, 0x05	; 5
    dee8:	e0 e1       	ldi	r30, 0x10	; 16
    deea:	f1 e0       	ldi	r31, 0x01	; 1
    deec:	ee 0e       	add	r14, r30
    deee:	ff 1e       	adc	r15, r31
    def0:	d7 01       	movw	r26, r14
    def2:	8c 91       	ld	r24, X
    def4:	e0 ef       	ldi	r30, 0xF0	; 240
    def6:	fe ef       	ldi	r31, 0xFE	; 254
    def8:	ee 0e       	add	r14, r30
    defa:	ff 1e       	adc	r15, r31
    defc:	8a 30       	cpi	r24, 0x0A	; 10
    defe:	09 f0       	breq	.+2      	; 0xdf02 <SBGPCTD_GetCTDSampleNoO2+0xc8>
    df00:	17 c1       	rjmp	.+558    	; 0xe130 <SBGPCTD_GetCTDSampleNoO2+0x2f6>
	{

		X_GPCTD1[X_GPCTD2].headerData.latitude = latitude;
    df02:	97 01       	movw	r18, r14
    df04:	2e 59       	subi	r18, 0x9E	; 158
    df06:	3a 4f       	sbci	r19, 0xFA	; 250
    df08:	d9 01       	movw	r26, r18
    df0a:	8c 91       	ld	r24, X
    df0c:	90 e0       	ldi	r25, 0x00	; 0
    df0e:	fc 01       	movw	r30, r24
    df10:	ee 0f       	add	r30, r30
    df12:	ff 1f       	adc	r31, r31
    df14:	e8 0f       	add	r30, r24
    df16:	f9 1f       	adc	r31, r25
    df18:	31 96       	adiw	r30, 0x01	; 1
    df1a:	13 e0       	ldi	r17, 0x03	; 3
    df1c:	ee 0f       	add	r30, r30
    df1e:	ff 1f       	adc	r31, r31
    df20:	1a 95       	dec	r17
    df22:	e1 f7       	brne	.-8      	; 0xdf1c <SBGPCTD_GetCTDSampleNoO2+0xe2>
    df24:	ee 0d       	add	r30, r14
    df26:	ff 1d       	adc	r31, r15
    df28:	e5 5a       	subi	r30, 0xA5	; 165
    df2a:	fa 4f       	sbci	r31, 0xFA	; 250
    df2c:	80 91 e5 b7 	lds	r24, 0xB7E5
    df30:	90 91 e6 b7 	lds	r25, 0xB7E6
    df34:	a0 91 e7 b7 	lds	r26, 0xB7E7
    df38:	b0 91 e8 b7 	lds	r27, 0xB7E8
    df3c:	80 83       	st	Z, r24
    df3e:	91 83       	std	Z+1, r25	; 0x01
    df40:	a2 83       	std	Z+2, r26	; 0x02
    df42:	b3 83       	std	Z+3, r27	; 0x03
		X_GPCTD1[X_GPCTD2].headerData.longitude = longitude;
    df44:	f9 01       	movw	r30, r18
    df46:	80 81       	ld	r24, Z
    df48:	90 e0       	ldi	r25, 0x00	; 0
    df4a:	fc 01       	movw	r30, r24
    df4c:	ee 0f       	add	r30, r30
    df4e:	ff 1f       	adc	r31, r31
    df50:	e8 0f       	add	r30, r24
    df52:	f9 1f       	adc	r31, r25
    df54:	a3 e0       	ldi	r26, 0x03	; 3
    df56:	ee 0f       	add	r30, r30
    df58:	ff 1f       	adc	r31, r31
    df5a:	aa 95       	dec	r26
    df5c:	e1 f7       	brne	.-8      	; 0xdf56 <SBGPCTD_GetCTDSampleNoO2+0x11c>
    df5e:	ee 0d       	add	r30, r14
    df60:	ff 1d       	adc	r31, r15
    df62:	e9 59       	subi	r30, 0x99	; 153
    df64:	fa 4f       	sbci	r31, 0xFA	; 250
    df66:	80 91 e9 b7 	lds	r24, 0xB7E9
    df6a:	90 91 ea b7 	lds	r25, 0xB7EA
    df6e:	a0 91 eb b7 	lds	r26, 0xB7EB
    df72:	b0 91 ec b7 	lds	r27, 0xB7EC
    df76:	80 83       	st	Z, r24
    df78:	91 83       	std	Z+1, r25	; 0x01
    df7a:	a2 83       	std	Z+2, r26	; 0x02
    df7c:	b3 83       	std	Z+3, r27	; 0x03
		X_GPCTD1[X_GPCTD2].headerData.timestamp = gettime();
    df7e:	d9 01       	movw	r26, r18
    df80:	0c 91       	ld	r16, X
    df82:	10 e0       	ldi	r17, 0x00	; 0
    df84:	0e 94 3c 34 	call	0x6878	; 0x6878 <gettime>
    df88:	98 01       	movw	r18, r16
    df8a:	22 0f       	add	r18, r18
    df8c:	33 1f       	adc	r19, r19
    df8e:	20 0f       	add	r18, r16
    df90:	31 1f       	adc	r19, r17
    df92:	e3 e0       	ldi	r30, 0x03	; 3
    df94:	22 0f       	add	r18, r18
    df96:	33 1f       	adc	r19, r19
    df98:	ea 95       	dec	r30
    df9a:	e1 f7       	brne	.-8      	; 0xdf94 <SBGPCTD_GetCTDSampleNoO2+0x15a>
    df9c:	e2 0e       	add	r14, r18
    df9e:	f3 1e       	adc	r15, r19
    dfa0:	eb e6       	ldi	r30, 0x6B	; 107
    dfa2:	f5 e0       	ldi	r31, 0x05	; 5
    dfa4:	ee 0e       	add	r14, r30
    dfa6:	ff 1e       	adc	r15, r31
    dfa8:	d7 01       	movw	r26, r14
    dfaa:	6d 93       	st	X+, r22
    dfac:	7d 93       	st	X+, r23
    dfae:	8d 93       	st	X+, r24
    dfb0:	9c 93       	st	X, r25
    dfb2:	13 97       	sbiw	r26, 0x03	; 3

		
		memset(tempString, 0, 6);
    dfb4:	9e 01       	movw	r18, r28
    dfb6:	2e 5f       	subi	r18, 0xFE	; 254
    dfb8:	3f 4f       	sbci	r19, 0xFF	; 255
    dfba:	86 e0       	ldi	r24, 0x06	; 6
    dfbc:	f9 01       	movw	r30, r18
    dfbe:	11 92       	st	Z+, r1
    dfc0:	8a 95       	dec	r24
    dfc2:	e9 f7       	brne	.-6      	; 0xdfbe <SBGPCTD_GetCTDSampleNoO2+0x184>
		memcpy(tempString, &(pTaskInfo->pBuf->bufferRx[0]), 5);
    dfc4:	f5 01       	movw	r30, r10
    dfc6:	a4 81       	ldd	r26, Z+4	; 0x04
    dfc8:	b5 81       	ldd	r27, Z+5	; 0x05
    dfca:	f9 01       	movw	r30, r18
    dfcc:	a0 50       	subi	r26, 0x00	; 0
    dfce:	bf 4f       	sbci	r27, 0xFF	; 255
    dfd0:	85 e0       	ldi	r24, 0x05	; 5
    dfd2:	0d 90       	ld	r0, X+
    dfd4:	01 92       	st	Z+, r0
    dfd6:	81 50       	subi	r24, 0x01	; 1
    dfd8:	e1 f7       	brne	.-8      	; 0xdfd2 <SBGPCTD_GetCTDSampleNoO2+0x198>
		X_GPCTD1[X_GPCTD2].pressure = strtol(tempString, NULL, 16);
    dfda:	d5 01       	movw	r26, r10
    dfdc:	14 96       	adiw	r26, 0x04	; 4
    dfde:	0d 91       	ld	r16, X+
    dfe0:	1c 91       	ld	r17, X
    dfe2:	15 97       	sbiw	r26, 0x05	; 5
    dfe4:	0e 59       	subi	r16, 0x9E	; 158
    dfe6:	1a 4f       	sbci	r17, 0xFA	; 250
    dfe8:	f8 01       	movw	r30, r16
    dfea:	e0 80       	ld	r14, Z
    dfec:	02 56       	subi	r16, 0x62	; 98
    dfee:	15 40       	sbci	r17, 0x05	; 5
    dff0:	ff 24       	eor	r15, r15
    dff2:	62 e0       	ldi	r22, 0x02	; 2
    dff4:	c6 2e       	mov	r12, r22
    dff6:	d1 2c       	mov	r13, r1
    dff8:	cc 0e       	add	r12, r28
    dffa:	dd 1e       	adc	r13, r29
    dffc:	c6 01       	movw	r24, r12
    dffe:	60 e0       	ldi	r22, 0x00	; 0
    e000:	70 e0       	ldi	r23, 0x00	; 0
    e002:	40 e1       	ldi	r20, 0x10	; 16
    e004:	50 e0       	ldi	r21, 0x00	; 0
    e006:	0e 94 2a ee 	call	0x1dc54	; 0x1dc54 <strtol>
    e00a:	97 01       	movw	r18, r14
    e00c:	22 0f       	add	r18, r18
    e00e:	33 1f       	adc	r19, r19
    e010:	2e 0d       	add	r18, r14
    e012:	3f 1d       	adc	r19, r15
    e014:	43 e0       	ldi	r20, 0x03	; 3
    e016:	22 0f       	add	r18, r18
    e018:	33 1f       	adc	r19, r19
    e01a:	4a 95       	dec	r20
    e01c:	e1 f7       	brne	.-8      	; 0xe016 <SBGPCTD_GetCTDSampleNoO2+0x1dc>
    e01e:	02 0f       	add	r16, r18
    e020:	13 1f       	adc	r17, r19
    e022:	01 59       	subi	r16, 0x91	; 145
    e024:	1a 4f       	sbci	r17, 0xFA	; 250
    e026:	d8 01       	movw	r26, r16
    e028:	6d 93       	st	X+, r22
    e02a:	7d 93       	st	X+, r23
    e02c:	8d 93       	st	X+, r24
    e02e:	9c 93       	st	X, r25
    e030:	13 97       	sbiw	r26, 0x03	; 3

		memset(tempString, 0, 6);
    e032:	86 e0       	ldi	r24, 0x06	; 6
    e034:	f6 01       	movw	r30, r12
    e036:	11 92       	st	Z+, r1
    e038:	8a 95       	dec	r24
    e03a:	e9 f7       	brne	.-6      	; 0xe036 <SBGPCTD_GetCTDSampleNoO2+0x1fc>
		memcpy(tempString, &(pTaskInfo->pBuf->bufferRx[5]), 5);
    e03c:	d5 01       	movw	r26, r10
    e03e:	14 96       	adiw	r26, 0x04	; 4
    e040:	ed 91       	ld	r30, X+
    e042:	fc 91       	ld	r31, X
    e044:	15 97       	sbiw	r26, 0x05	; 5
    e046:	d6 01       	movw	r26, r12
    e048:	eb 5f       	subi	r30, 0xFB	; 251
    e04a:	fe 4f       	sbci	r31, 0xFE	; 254
    e04c:	85 e0       	ldi	r24, 0x05	; 5
    e04e:	01 90       	ld	r0, Z+
    e050:	0d 92       	st	X+, r0
    e052:	81 50       	subi	r24, 0x01	; 1
    e054:	e1 f7       	brne	.-8      	; 0xe04e <SBGPCTD_GetCTDSampleNoO2+0x214>
		X_GPCTD1[X_GPCTD2].temperature = strtol(tempString, NULL, 16);
    e056:	f5 01       	movw	r30, r10
    e058:	04 81       	ldd	r16, Z+4	; 0x04
    e05a:	15 81       	ldd	r17, Z+5	; 0x05
    e05c:	0e 59       	subi	r16, 0x9E	; 158
    e05e:	1a 4f       	sbci	r17, 0xFA	; 250
    e060:	d8 01       	movw	r26, r16
    e062:	ec 90       	ld	r14, X
    e064:	02 56       	subi	r16, 0x62	; 98
    e066:	15 40       	sbci	r17, 0x05	; 5
    e068:	ff 24       	eor	r15, r15
    e06a:	82 e0       	ldi	r24, 0x02	; 2
    e06c:	c8 2e       	mov	r12, r24
    e06e:	d1 2c       	mov	r13, r1
    e070:	cc 0e       	add	r12, r28
    e072:	dd 1e       	adc	r13, r29
    e074:	c6 01       	movw	r24, r12
    e076:	60 e0       	ldi	r22, 0x00	; 0
    e078:	70 e0       	ldi	r23, 0x00	; 0
    e07a:	40 e1       	ldi	r20, 0x10	; 16
    e07c:	50 e0       	ldi	r21, 0x00	; 0
    e07e:	0e 94 2a ee 	call	0x1dc54	; 0x1dc54 <strtol>
    e082:	08 94       	sec
    e084:	e1 1c       	adc	r14, r1
    e086:	f1 1c       	adc	r15, r1
    e088:	97 01       	movw	r18, r14
    e08a:	22 0f       	add	r18, r18
    e08c:	33 1f       	adc	r19, r19
    e08e:	2e 0d       	add	r18, r14
    e090:	3f 1d       	adc	r19, r15
    e092:	a3 e0       	ldi	r26, 0x03	; 3
    e094:	22 0f       	add	r18, r18
    e096:	33 1f       	adc	r19, r19
    e098:	aa 95       	dec	r26
    e09a:	e1 f7       	brne	.-8      	; 0xe094 <SBGPCTD_GetCTDSampleNoO2+0x25a>
    e09c:	02 0f       	add	r16, r18
    e09e:	13 1f       	adc	r17, r19
    e0a0:	05 5a       	subi	r16, 0xA5	; 165
    e0a2:	1a 4f       	sbci	r17, 0xFA	; 250
    e0a4:	f8 01       	movw	r30, r16
    e0a6:	60 83       	st	Z, r22
    e0a8:	71 83       	std	Z+1, r23	; 0x01
    e0aa:	82 83       	std	Z+2, r24	; 0x02
    e0ac:	93 83       	std	Z+3, r25	; 0x03

		memset(tempString, 0, 6);
    e0ae:	86 e0       	ldi	r24, 0x06	; 6
    e0b0:	d6 01       	movw	r26, r12
    e0b2:	1d 92       	st	X+, r1
    e0b4:	8a 95       	dec	r24
    e0b6:	e9 f7       	brne	.-6      	; 0xe0b2 <SBGPCTD_GetCTDSampleNoO2+0x278>
		memcpy(tempString, &(pTaskInfo->pBuf->bufferRx[10]), 5);
    e0b8:	d5 01       	movw	r26, r10
    e0ba:	14 96       	adiw	r26, 0x04	; 4
    e0bc:	ed 91       	ld	r30, X+
    e0be:	fc 91       	ld	r31, X
    e0c0:	15 97       	sbiw	r26, 0x05	; 5
    e0c2:	d6 01       	movw	r26, r12
    e0c4:	e6 5f       	subi	r30, 0xF6	; 246
    e0c6:	fe 4f       	sbci	r31, 0xFE	; 254
    e0c8:	85 e0       	ldi	r24, 0x05	; 5
    e0ca:	01 90       	ld	r0, Z+
    e0cc:	0d 92       	st	X+, r0
    e0ce:	81 50       	subi	r24, 0x01	; 1
    e0d0:	e1 f7       	brne	.-8      	; 0xe0ca <SBGPCTD_GetCTDSampleNoO2+0x290>
		X_GPCTD1[X_GPCTD2].conductivity = strtol(tempString, NULL, 16);
    e0d2:	f5 01       	movw	r30, r10
    e0d4:	04 81       	ldd	r16, Z+4	; 0x04
    e0d6:	15 81       	ldd	r17, Z+5	; 0x05
    e0d8:	0e 59       	subi	r16, 0x9E	; 158
    e0da:	1a 4f       	sbci	r17, 0xFA	; 250
    e0dc:	d8 01       	movw	r26, r16
    e0de:	ec 90       	ld	r14, X
    e0e0:	02 56       	subi	r16, 0x62	; 98
    e0e2:	15 40       	sbci	r17, 0x05	; 5
    e0e4:	ff 24       	eor	r15, r15
    e0e6:	ce 01       	movw	r24, r28
    e0e8:	02 96       	adiw	r24, 0x02	; 2
    e0ea:	60 e0       	ldi	r22, 0x00	; 0
    e0ec:	70 e0       	ldi	r23, 0x00	; 0
    e0ee:	40 e1       	ldi	r20, 0x10	; 16
    e0f0:	50 e0       	ldi	r21, 0x00	; 0
    e0f2:	0e 94 2a ee 	call	0x1dc54	; 0x1dc54 <strtol>
    e0f6:	97 01       	movw	r18, r14
    e0f8:	22 0f       	add	r18, r18
    e0fa:	33 1f       	adc	r19, r19
    e0fc:	2e 0d       	add	r18, r14
    e0fe:	3f 1d       	adc	r19, r15
    e100:	e3 e0       	ldi	r30, 0x03	; 3
    e102:	22 0f       	add	r18, r18
    e104:	33 1f       	adc	r19, r19
    e106:	ea 95       	dec	r30
    e108:	e1 f7       	brne	.-8      	; 0xe102 <SBGPCTD_GetCTDSampleNoO2+0x2c8>
    e10a:	02 0f       	add	r16, r18
    e10c:	13 1f       	adc	r17, r19
    e10e:	09 58       	subi	r16, 0x89	; 137
    e110:	1a 4f       	sbci	r17, 0xFA	; 250
    e112:	f8 01       	movw	r30, r16
    e114:	60 83       	st	Z, r22
    e116:	71 83       	std	Z+1, r23	; 0x01
    e118:	82 83       	std	Z+2, r24	; 0x02
    e11a:	93 83       	std	Z+3, r25	; 0x03

		pTaskInfo->pBuf->reportData.headerReport.repeatCount++;
    e11c:	d5 01       	movw	r26, r10
    e11e:	14 96       	adiw	r26, 0x04	; 4
    e120:	ed 91       	ld	r30, X+
    e122:	fc 91       	ld	r31, X
    e124:	15 97       	sbiw	r26, 0x05	; 5
    e126:	ee 59       	subi	r30, 0x9E	; 158
    e128:	fa 4f       	sbci	r31, 0xFA	; 250
    e12a:	80 81       	ld	r24, Z
    e12c:	8f 5f       	subi	r24, 0xFF	; 255
    e12e:	08 c0       	rjmp	.+16     	; 0xe140 <SBGPCTD_GetCTDSampleNoO2+0x306>
	}
	else
	{
		pTaskInfo->pBuf->findDataFrame = TRUE;
    e130:	d5 01       	movw	r26, r10
    e132:	14 96       	adiw	r26, 0x04	; 4
    e134:	ed 91       	ld	r30, X+
    e136:	fc 91       	ld	r31, X
    e138:	15 97       	sbiw	r26, 0x05	; 5
    e13a:	e6 5a       	subi	r30, 0xA6	; 166
    e13c:	fa 4f       	sbci	r31, 0xFA	; 250
    e13e:	8f ef       	ldi	r24, 0xFF	; 255
    e140:	80 83       	st	Z, r24

#undef X_GPCTD1
#undef X_GPCTD2

	return;
}
    e142:	27 96       	adiw	r28, 0x07	; 7
    e144:	0f b6       	in	r0, 0x3f	; 63
    e146:	f8 94       	cli
    e148:	de bf       	out	0x3e, r29	; 62
    e14a:	0f be       	out	0x3f, r0	; 63
    e14c:	cd bf       	out	0x3d, r28	; 61
    e14e:	cf 91       	pop	r28
    e150:	df 91       	pop	r29
    e152:	1f 91       	pop	r17
    e154:	0f 91       	pop	r16
    e156:	ff 90       	pop	r15
    e158:	ef 90       	pop	r14
    e15a:	df 90       	pop	r13
    e15c:	cf 90       	pop	r12
    e15e:	bf 90       	pop	r11
    e160:	af 90       	pop	r10
    e162:	08 95       	ret

0000e164 <SBGPCTD_GetCTDSampleFrame>:

	return retval;
}

void SBGPCTD_GetCTDSampleFrame(PSEABIRD_GPCTD_TASK pTaskInfo)
{
    e164:	ef 92       	push	r14
    e166:	ff 92       	push	r15
    e168:	0f 93       	push	r16
    e16a:	1f 93       	push	r17
    e16c:	df 93       	push	r29
    e16e:	cf 93       	push	r28
    e170:	0f 92       	push	r0
    e172:	cd b7       	in	r28, 0x3d	; 61
    e174:	de b7       	in	r29, 0x3e	; 62
    e176:	8c 01       	movw	r16, r24
	uint8_t err = OS_ERR_NONE;
    e178:	19 82       	std	Y+1, r1	; 0x01
	char c = 0;

	while((c != 0x0A) && (err == OS_ERR_NONE))
		c = OSuartGetCharWait(pTaskInfo->portNum, 12, &err);
    e17a:	7e 01       	movw	r14, r28
    e17c:	08 94       	sec
    e17e:	e1 1c       	adc	r14, r1
    e180:	f1 1c       	adc	r15, r1
    e182:	09 c0       	rjmp	.+18     	; 0xe196 <SBGPCTD_GetCTDSampleFrame+0x32>
    e184:	f8 01       	movw	r30, r16
    e186:	81 81       	ldd	r24, Z+1	; 0x01
    e188:	6c e0       	ldi	r22, 0x0C	; 12
    e18a:	70 e0       	ldi	r23, 0x00	; 0
    e18c:	a7 01       	movw	r20, r14
    e18e:	0e 94 b8 32 	call	0x6570	; 0x6570 <OSuartGetCharWait>
void SBGPCTD_GetCTDSampleFrame(PSEABIRD_GPCTD_TASK pTaskInfo)
{
	uint8_t err = OS_ERR_NONE;
	char c = 0;

	while((c != 0x0A) && (err == OS_ERR_NONE))
    e192:	8a 30       	cpi	r24, 0x0A	; 10
    e194:	19 f0       	breq	.+6      	; 0xe19c <SBGPCTD_GetCTDSampleFrame+0x38>
    e196:	89 81       	ldd	r24, Y+1	; 0x01
    e198:	88 23       	and	r24, r24
    e19a:	a1 f3       	breq	.-24     	; 0xe184 <SBGPCTD_GetCTDSampleFrame+0x20>
		c = OSuartGetCharWait(pTaskInfo->portNum, 12, &err);

	return;
}
    e19c:	0f 90       	pop	r0
    e19e:	cf 91       	pop	r28
    e1a0:	df 91       	pop	r29
    e1a2:	1f 91       	pop	r17
    e1a4:	0f 91       	pop	r16
    e1a6:	ff 90       	pop	r15
    e1a8:	ef 90       	pop	r14
    e1aa:	08 95       	ret

0000e1ac <SBGPCTD_CTD_Tx>:
	return;
}


uint8_t SBGPCTD_CTD_Tx(PSEABIRD_GPCTD_TASK pTaskInfo)
{
    e1ac:	8f 92       	push	r8
    e1ae:	9f 92       	push	r9
    e1b0:	af 92       	push	r10
    e1b2:	bf 92       	push	r11
    e1b4:	cf 92       	push	r12
    e1b6:	df 92       	push	r13
    e1b8:	ef 92       	push	r14
    e1ba:	ff 92       	push	r15
    e1bc:	0f 93       	push	r16
    e1be:	1f 93       	push	r17
    e1c0:	df 93       	push	r29
    e1c2:	cf 93       	push	r28
    e1c4:	0f 92       	push	r0
    e1c6:	cd b7       	in	r28, 0x3d	; 61
    e1c8:	de b7       	in	r29, 0x3e	; 62
    e1ca:	6c 01       	movw	r12, r24
	uint8_t retval = FAIL;
	uint8_t firstCharTries = 5;
	char c = 0;
	uint8_t err = 0;
    e1cc:	19 82       	std	Y+1, r1	; 0x01
	char* pBuffer = pTaskInfo->pBuf->bufferTx;
    e1ce:	dc 01       	movw	r26, r24
    e1d0:	14 96       	adiw	r26, 0x04	; 4
    e1d2:	ed 90       	ld	r14, X+
    e1d4:	fc 90       	ld	r15, X
    e1d6:	15 97       	sbiw	r26, 0x05	; 5
	uint16_t len;

	len = strlen(pBuffer);
    e1d8:	d7 01       	movw	r26, r14
    e1da:	0d 90       	ld	r0, X+
    e1dc:	00 20       	and	r0, r0
    e1de:	e9 f7       	brne	.-6      	; 0xe1da <SBGPCTD_CTD_Tx+0x2e>
    e1e0:	8d 01       	movw	r16, r26
    e1e2:	01 50       	subi	r16, 0x01	; 1
    e1e4:	10 40       	sbci	r17, 0x00	; 0
    e1e6:	0e 19       	sub	r16, r14
    e1e8:	1f 09       	sbc	r17, r15

	if((len > 0) && (len <= 255))
    e1ea:	c8 01       	movw	r24, r16
    e1ec:	01 97       	sbiw	r24, 0x01	; 1
    e1ee:	8f 3f       	cpi	r24, 0xFF	; 255
    e1f0:	91 05       	cpc	r25, r1
    e1f2:	08 f0       	brcs	.+2      	; 0xe1f6 <SBGPCTD_CTD_Tx+0x4a>
    e1f4:	58 c0       	rjmp	.+176    	; 0xe2a6 <SBGPCTD_CTD_Tx+0xfa>
    e1f6:	85 e0       	ldi	r24, 0x05	; 5
    e1f8:	b8 2e       	mov	r11, r24
			c = 0;
			err = OSuartPutCharWait(pTaskInfo->portNum, *pBuffer, 10);
			if(err != OS_ERR_NONE)
				return retval;

			c = (char) OSuartGetCharWait(pTaskInfo->portNum, 128, &err);
    e1fa:	4e 01       	movw	r8, r28
    e1fc:	08 94       	sec
    e1fe:	81 1c       	adc	r8, r1
    e200:	91 1c       	adc	r9, r1
    e202:	2e c0       	rjmp	.+92     	; 0xe260 <SBGPCTD_CTD_Tx+0xb4>
	if((len > 0) && (len <= 255))
	{
		while(len > 0)
		{
			c = 0;
			err = OSuartPutCharWait(pTaskInfo->portNum, *pBuffer, 10);
    e204:	f6 01       	movw	r30, r12
    e206:	81 81       	ldd	r24, Z+1	; 0x01
    e208:	d7 01       	movw	r26, r14
    e20a:	6c 91       	ld	r22, X
    e20c:	4a e0       	ldi	r20, 0x0A	; 10
    e20e:	50 e0       	ldi	r21, 0x00	; 0
    e210:	0e 94 f3 31 	call	0x63e6	; 0x63e6 <OSuartPutCharWait>
			if(err != OS_ERR_NONE)
    e214:	88 23       	and	r24, r24
    e216:	09 f0       	breq	.+2      	; 0xe21a <SBGPCTD_CTD_Tx+0x6e>
    e218:	46 c0       	rjmp	.+140    	; 0xe2a6 <SBGPCTD_CTD_Tx+0xfa>
				return retval;

			c = (char) OSuartGetCharWait(pTaskInfo->portNum, 128, &err);
    e21a:	f6 01       	movw	r30, r12
    e21c:	81 81       	ldd	r24, Z+1	; 0x01
	if((len > 0) && (len <= 255))
	{
		while(len > 0)
		{
			c = 0;
			err = OSuartPutCharWait(pTaskInfo->portNum, *pBuffer, 10);
    e21e:	19 82       	std	Y+1, r1	; 0x01
			if(err != OS_ERR_NONE)
				return retval;

			c = (char) OSuartGetCharWait(pTaskInfo->portNum, 128, &err);
    e220:	60 e8       	ldi	r22, 0x80	; 128
    e222:	70 e0       	ldi	r23, 0x00	; 0
    e224:	a4 01       	movw	r20, r8
    e226:	0e 94 b8 32 	call	0x6570	; 0x6570 <OSuartGetCharWait>
    e22a:	a8 2e       	mov	r10, r24
		
			if(err != OS_ERR_NONE)
    e22c:	89 81       	ldd	r24, Y+1	; 0x01
    e22e:	88 23       	and	r24, r24
    e230:	51 f0       	breq	.+20     	; 0xe246 <SBGPCTD_CTD_Tx+0x9a>
			{
				if(firstCharTries > 0)
    e232:	bb 20       	and	r11, r11
    e234:	c1 f1       	breq	.+112    	; 0xe2a6 <SBGPCTD_CTD_Tx+0xfa>
				{
					firstCharTries--;
    e236:	ba 94       	dec	r11
					OSTimeDlyHMSM(0,0,0,100);
    e238:	80 e0       	ldi	r24, 0x00	; 0
    e23a:	60 e0       	ldi	r22, 0x00	; 0
    e23c:	40 e0       	ldi	r20, 0x00	; 0
    e23e:	24 e6       	ldi	r18, 0x64	; 100
    e240:	30 e0       	ldi	r19, 0x00	; 0
    e242:	0e 94 2a 2e 	call	0x5c54	; 0x5c54 <OSTimeDlyHMSM>
				}
				else
					return retval;
			}
			if(c == *pBuffer)
    e246:	d7 01       	movw	r26, r14
    e248:	8c 91       	ld	r24, X
    e24a:	a8 16       	cp	r10, r24
    e24c:	39 f4       	brne	.+14     	; 0xe25c <SBGPCTD_CTD_Tx+0xb0>
			{
				pBuffer++;
    e24e:	08 94       	sec
    e250:	e1 1c       	adc	r14, r1
    e252:	f1 1c       	adc	r15, r1
				firstCharTries = 0;
				len--;
    e254:	01 50       	subi	r16, 0x01	; 1
    e256:	10 40       	sbci	r17, 0x00	; 0
    e258:	bb 24       	eor	r11, r11
    e25a:	02 c0       	rjmp	.+4      	; 0xe260 <SBGPCTD_CTD_Tx+0xb4>
			}
			else
			{
				if(firstCharTries == 0)
    e25c:	bb 20       	and	r11, r11
    e25e:	19 f1       	breq	.+70     	; 0xe2a6 <SBGPCTD_CTD_Tx+0xfa>

	len = strlen(pBuffer);

	if((len > 0) && (len <= 255))
	{
		while(len > 0)
    e260:	01 15       	cp	r16, r1
    e262:	11 05       	cpc	r17, r1
    e264:	79 f6       	brne	.-98     	; 0xe204 <SBGPCTD_CTD_Tx+0x58>
					return retval;
			}
		}

		c = 0;
		err = OSuartPutCharWait(pTaskInfo->portNum, 0x0D, 10);		//Terminate command with carriage return		
    e266:	f6 01       	movw	r30, r12
    e268:	81 81       	ldd	r24, Z+1	; 0x01
    e26a:	6d e0       	ldi	r22, 0x0D	; 13
    e26c:	4a e0       	ldi	r20, 0x0A	; 10
    e26e:	50 e0       	ldi	r21, 0x00	; 0
    e270:	0e 94 f3 31 	call	0x63e6	; 0x63e6 <OSuartPutCharWait>
		if(err != OS_ERR_NONE)
    e274:	88 23       	and	r24, r24
    e276:	b9 f4       	brne	.+46     	; 0xe2a6 <SBGPCTD_CTD_Tx+0xfa>
			return retval;

		c = (char) OSuartGetCharWait(pTaskInfo->portNum, 10, &err);	//Echos is Carriage Return
    e278:	d6 01       	movw	r26, r12
    e27a:	11 96       	adiw	r26, 0x01	; 1
    e27c:	8c 91       	ld	r24, X
					return retval;
			}
		}

		c = 0;
		err = OSuartPutCharWait(pTaskInfo->portNum, 0x0D, 10);		//Terminate command with carriage return		
    e27e:	19 82       	std	Y+1, r1	; 0x01
		if(err != OS_ERR_NONE)
			return retval;

		c = (char) OSuartGetCharWait(pTaskInfo->portNum, 10, &err);	//Echos is Carriage Return
    e280:	6a e0       	ldi	r22, 0x0A	; 10
    e282:	70 e0       	ldi	r23, 0x00	; 0
    e284:	8e 01       	movw	r16, r28
    e286:	0f 5f       	subi	r16, 0xFF	; 255
    e288:	1f 4f       	sbci	r17, 0xFF	; 255
    e28a:	a8 01       	movw	r20, r16
    e28c:	0e 94 b8 32 	call	0x6570	; 0x6570 <OSuartGetCharWait>
		c = (char) OSuartGetCharWait(pTaskInfo->portNum, 10, &err);	//And Line Feed
    e290:	f6 01       	movw	r30, r12
    e292:	81 81       	ldd	r24, Z+1	; 0x01
    e294:	6a e0       	ldi	r22, 0x0A	; 10
    e296:	70 e0       	ldi	r23, 0x00	; 0
    e298:	a8 01       	movw	r20, r16
    e29a:	0e 94 b8 32 	call	0x6570	; 0x6570 <OSuartGetCharWait>
		if(c == 0x0A)
    e29e:	8a 30       	cpi	r24, 0x0A	; 10
    e2a0:	11 f4       	brne	.+4      	; 0xe2a6 <SBGPCTD_CTD_Tx+0xfa>
    e2a2:	8f ef       	ldi	r24, 0xFF	; 255
    e2a4:	01 c0       	rjmp	.+2      	; 0xe2a8 <SBGPCTD_CTD_Tx+0xfc>
    e2a6:	80 e0       	ldi	r24, 0x00	; 0
			retval = SUCCESS;
	}


	return retval;
}
    e2a8:	0f 90       	pop	r0
    e2aa:	cf 91       	pop	r28
    e2ac:	df 91       	pop	r29
    e2ae:	1f 91       	pop	r17
    e2b0:	0f 91       	pop	r16
    e2b2:	ff 90       	pop	r15
    e2b4:	ef 90       	pop	r14
    e2b6:	df 90       	pop	r13
    e2b8:	cf 90       	pop	r12
    e2ba:	bf 90       	pop	r11
    e2bc:	af 90       	pop	r10
    e2be:	9f 90       	pop	r9
    e2c0:	8f 90       	pop	r8
    e2c2:	08 95       	ret

0000e2c4 <SBGPCTD_CTD_Rx>:

uint8_t SBGPCTD_CTD_Rx(PSEABIRD_GPCTD_TASK pTaskInfo, prog_char* pEOL, uint16_t* pLen)
{
    e2c4:	4f 92       	push	r4
    e2c6:	5f 92       	push	r5
    e2c8:	6f 92       	push	r6
    e2ca:	7f 92       	push	r7
    e2cc:	8f 92       	push	r8
    e2ce:	9f 92       	push	r9
    e2d0:	af 92       	push	r10
    e2d2:	bf 92       	push	r11
    e2d4:	cf 92       	push	r12
    e2d6:	df 92       	push	r13
    e2d8:	ef 92       	push	r14
    e2da:	ff 92       	push	r15
    e2dc:	0f 93       	push	r16
    e2de:	1f 93       	push	r17
    e2e0:	df 93       	push	r29
    e2e2:	cf 93       	push	r28
    e2e4:	0f 92       	push	r0
    e2e6:	cd b7       	in	r28, 0x3d	; 61
    e2e8:	de b7       	in	r29, 0x3e	; 62
    e2ea:	4c 01       	movw	r8, r24
    e2ec:	2b 01       	movw	r4, r22
    e2ee:	7a 01       	movw	r14, r20
	uint8_t retval = FAIL;
	char* pChar = pTaskInfo->pBuf->bufferRx;
    e2f0:	fc 01       	movw	r30, r24
    e2f2:	04 81       	ldd	r16, Z+4	; 0x04
    e2f4:	15 81       	ldd	r17, Z+5	; 0x05
	uint8_t err = 0;
    e2f6:	19 82       	std	Y+1, r1	; 0x01
	uint8_t lenEOL = strlen_P(pEOL);
    e2f8:	cb 01       	movw	r24, r22
    e2fa:	0e 94 c6 ef 	call	0x1df8c	; 0x1df8c <strlen_P>
    e2fe:	b8 2e       	mov	r11, r24

	*pLen = 0;
    e300:	f7 01       	movw	r30, r14
    e302:	11 82       	std	Z+1, r1	; 0x01
    e304:	10 82       	st	Z, r1

	*pChar = (char)(OSuartGetCharWait(pTaskInfo->portNum, 640, &err));	//Wait 5 seconds for first character
    e306:	f4 01       	movw	r30, r8
    e308:	81 81       	ldd	r24, Z+1	; 0x01
    e30a:	60 e8       	ldi	r22, 0x80	; 128
    e30c:	72 e0       	ldi	r23, 0x02	; 2
    e30e:	3e 01       	movw	r6, r28
    e310:	08 94       	sec
    e312:	61 1c       	adc	r6, r1
    e314:	71 1c       	adc	r7, r1
    e316:	a3 01       	movw	r20, r6
    e318:	0e 94 b8 32 	call	0x6570	; 0x6570 <OSuartGetCharWait>
    e31c:	00 50       	subi	r16, 0x00	; 0
    e31e:	1f 4f       	sbci	r17, 0xFF	; 255
    e320:	f8 01       	movw	r30, r16
    e322:	80 83       	st	Z, r24
    e324:	00 50       	subi	r16, 0x00	; 0
    e326:	11 40       	sbci	r17, 0x01	; 1
			
	if(err != OS_ERR_NONE)
    e328:	89 81       	ldd	r24, Y+1	; 0x01
    e32a:	88 23       	and	r24, r24
    e32c:	f9 f4       	brne	.+62     	; 0xe36c <SBGPCTD_CTD_Rx+0xa8>
	{
		*pLen = 0;
		return retval;
	}

	pChar++;
    e32e:	91 e0       	ldi	r25, 0x01	; 1
    e330:	c9 2e       	mov	r12, r25
    e332:	d9 2e       	mov	r13, r25
    e334:	c0 0e       	add	r12, r16
    e336:	d1 1e       	adc	r13, r17
	(*pLen)++;
    e338:	f7 01       	movw	r30, r14
    e33a:	80 81       	ld	r24, Z
    e33c:	91 81       	ldd	r25, Z+1	; 0x01
    e33e:	01 96       	adiw	r24, 0x01	; 1
    e340:	91 83       	std	Z+1, r25	; 0x01
    e342:	80 83       	st	Z, r24

	return retval;
}

uint8_t SBGPCTD_CTD_Rx(PSEABIRD_GPCTD_TASK pTaskInfo, prog_char* pEOL, uint16_t* pLen)
{
    e344:	ab 2c       	mov	r10, r11
    e346:	bb 24       	eor	r11, r11
    e348:	86 01       	movw	r16, r12
    e34a:	0a 19       	sub	r16, r10
    e34c:	1b 09       	sbc	r17, r11
    e34e:	0f 5f       	subi	r16, 0xFF	; 255
    e350:	1f 4f       	sbci	r17, 0xFF	; 255
    e352:	28 c0       	rjmp	.+80     	; 0xe3a4 <SBGPCTD_CTD_Rx+0xe0>
	pChar++;
	(*pLen)++;

	while((retval == FAIL) && (*pLen<1024))
	{
		*pChar = (char) OSuartGetCharWait(pTaskInfo->portNum, 64, &err);	//Wait 0.5 seconds for each additional character
    e354:	f4 01       	movw	r30, r8
    e356:	81 81       	ldd	r24, Z+1	; 0x01
    e358:	60 e4       	ldi	r22, 0x40	; 64
    e35a:	70 e0       	ldi	r23, 0x00	; 0
    e35c:	a3 01       	movw	r20, r6
    e35e:	0e 94 b8 32 	call	0x6570	; 0x6570 <OSuartGetCharWait>
    e362:	f6 01       	movw	r30, r12
    e364:	80 83       	st	Z, r24
			
		if(err != OS_ERR_NONE)
    e366:	89 81       	ldd	r24, Y+1	; 0x01
    e368:	88 23       	and	r24, r24
    e36a:	21 f0       	breq	.+8      	; 0xe374 <SBGPCTD_CTD_Rx+0xb0>
		{
			*pLen = 0;
    e36c:	f7 01       	movw	r30, r14
    e36e:	11 82       	std	Z+1, r1	; 0x01
    e370:	10 82       	st	Z, r1
    e372:	1e c0       	rjmp	.+60     	; 0xe3b0 <SBGPCTD_CTD_Rx+0xec>
			return retval;
		}

		pChar++;
    e374:	08 94       	sec
    e376:	c1 1c       	adc	r12, r1
    e378:	d1 1c       	adc	r13, r1
		(*pLen)++;
    e37a:	f7 01       	movw	r30, r14
    e37c:	80 81       	ld	r24, Z
    e37e:	91 81       	ldd	r25, Z+1	; 0x01
    e380:	01 96       	adiw	r24, 0x01	; 1
    e382:	91 83       	std	Z+1, r25	; 0x01
    e384:	80 83       	st	Z, r24

		if(*pLen >= lenEOL)
    e386:	8a 15       	cp	r24, r10
    e388:	9b 05       	cpc	r25, r11
    e38a:	50 f0       	brcs	.+20     	; 0xe3a0 <SBGPCTD_CTD_Rx+0xdc>
		{
			err = strncmp_P((char *)(pChar - lenEOL), pEOL, lenEOL);
    e38c:	c8 01       	movw	r24, r16
    e38e:	b2 01       	movw	r22, r4
    e390:	a5 01       	movw	r20, r10
    e392:	0e 94 e7 ef 	call	0x1dfce	; 0x1dfce <strncmp_P>
			if(err == 0)
    e396:	88 23       	and	r24, r24
    e398:	11 f4       	brne	.+4      	; 0xe39e <SBGPCTD_CTD_Rx+0xda>
    e39a:	8f ef       	ldi	r24, 0xFF	; 255
    e39c:	0a c0       	rjmp	.+20     	; 0xe3b2 <SBGPCTD_CTD_Rx+0xee>
		pChar++;
		(*pLen)++;

		if(*pLen >= lenEOL)
		{
			err = strncmp_P((char *)(pChar - lenEOL), pEOL, lenEOL);
    e39e:	89 83       	std	Y+1, r24	; 0x01
    e3a0:	0f 5f       	subi	r16, 0xFF	; 255
    e3a2:	1f 4f       	sbci	r17, 0xFF	; 255
	}

	pChar++;
	(*pLen)++;

	while((retval == FAIL) && (*pLen<1024))
    e3a4:	f7 01       	movw	r30, r14
    e3a6:	80 81       	ld	r24, Z
    e3a8:	91 81       	ldd	r25, Z+1	; 0x01
    e3aa:	80 50       	subi	r24, 0x00	; 0
    e3ac:	94 40       	sbci	r25, 0x04	; 4
    e3ae:	90 f2       	brcs	.-92     	; 0xe354 <SBGPCTD_CTD_Rx+0x90>
    e3b0:	80 e0       	ldi	r24, 0x00	; 0
				retval = SUCCESS;
		}
	}

	return retval;
}
    e3b2:	0f 90       	pop	r0
    e3b4:	cf 91       	pop	r28
    e3b6:	df 91       	pop	r29
    e3b8:	1f 91       	pop	r17
    e3ba:	0f 91       	pop	r16
    e3bc:	ff 90       	pop	r15
    e3be:	ef 90       	pop	r14
    e3c0:	df 90       	pop	r13
    e3c2:	cf 90       	pop	r12
    e3c4:	bf 90       	pop	r11
    e3c6:	af 90       	pop	r10
    e3c8:	9f 90       	pop	r9
    e3ca:	8f 90       	pop	r8
    e3cc:	7f 90       	pop	r7
    e3ce:	6f 90       	pop	r6
    e3d0:	5f 90       	pop	r5
    e3d2:	4f 90       	pop	r4
    e3d4:	08 95       	ret

0000e3d6 <SBGPCTD_SetTime>:
	return retval;
}


uint8_t SBGPCTD_SetTime(PSEABIRD_GPCTD_TASK pTaskInfo)
{
    e3d6:	0f 93       	push	r16
    e3d8:	1f 93       	push	r17
    e3da:	df 93       	push	r29
    e3dc:	cf 93       	push	r28
    e3de:	00 d0       	rcall	.+0      	; 0xe3e0 <SBGPCTD_SetTime+0xa>
    e3e0:	00 d0       	rcall	.+0      	; 0xe3e2 <SBGPCTD_SetTime+0xc>
    e3e2:	cd b7       	in	r28, 0x3d	; 61
    e3e4:	de b7       	in	r29, 0x3e	; 62
    e3e6:	8c 01       	movw	r16, r24
	uint8_t retval = FAIL;
	tm* dt;
	time_t time;
	uint16_t lenData;

	time=gettime();
    e3e8:	0e 94 3c 34 	call	0x6878	; 0x6878 <gettime>
    e3ec:	6b 83       	std	Y+3, r22	; 0x03
    e3ee:	7c 83       	std	Y+4, r23	; 0x04
    e3f0:	8d 83       	std	Y+5, r24	; 0x05
    e3f2:	9e 83       	std	Y+6, r25	; 0x06
	dt = gmtime(&time);
    e3f4:	ce 01       	movw	r24, r28
    e3f6:	03 96       	adiw	r24, 0x03	; 3
    e3f8:	0e 94 32 35 	call	0x6a64	; 0x6a64 <gmtime>
    e3fc:	ac 01       	movw	r20, r24

	memset(pTaskInfo->pBuf->bufferTx, 0, 256);
    e3fe:	d8 01       	movw	r26, r16
    e400:	14 96       	adiw	r26, 0x04	; 4
    e402:	6c 91       	ld	r22, X
    e404:	14 97       	sbiw	r26, 0x04	; 4
    e406:	15 96       	adiw	r26, 0x05	; 5
    e408:	7c 91       	ld	r23, X
    e40a:	15 97       	sbiw	r26, 0x05	; 5
    e40c:	80 e0       	ldi	r24, 0x00	; 0
    e40e:	91 e0       	ldi	r25, 0x01	; 1
    e410:	fb 01       	movw	r30, r22
    e412:	9c 01       	movw	r18, r24
    e414:	11 92       	st	Z+, r1
    e416:	21 50       	subi	r18, 0x01	; 1
    e418:	30 40       	sbci	r19, 0x00	; 0
    e41a:	e1 f7       	brne	.-8      	; 0xe414 <SBGPCTD_SetTime+0x3e>
	memset(pTaskInfo->pBuf->bufferRx, 0, 1024);
    e41c:	14 96       	adiw	r26, 0x04	; 4
    e41e:	8d 91       	ld	r24, X+
    e420:	9c 91       	ld	r25, X
    e422:	15 97       	sbiw	r26, 0x05	; 5
    e424:	80 50       	subi	r24, 0x00	; 0
    e426:	9f 4f       	sbci	r25, 0xFF	; 255
    e428:	bc 01       	movw	r22, r24
    e42a:	80 e0       	ldi	r24, 0x00	; 0
    e42c:	94 e0       	ldi	r25, 0x04	; 4
    e42e:	db 01       	movw	r26, r22
    e430:	fc 01       	movw	r30, r24
    e432:	1d 92       	st	X+, r1
    e434:	31 97       	sbiw	r30, 0x01	; 1
    e436:	e9 f7       	brne	.-6      	; 0xe432 <SBGPCTD_SetTime+0x5c>

	sprintf_P(pTaskInfo->pBuf->bufferTx, cmdGPCTD_DateTime, dt->tm_mon+1, dt->tm_mday, dt->tm_year+1900,
    e438:	2d b7       	in	r18, 0x3d	; 61
    e43a:	3e b7       	in	r19, 0x3e	; 62
    e43c:	20 51       	subi	r18, 0x10	; 16
    e43e:	30 40       	sbci	r19, 0x00	; 0
    e440:	0f b6       	in	r0, 0x3f	; 63
    e442:	f8 94       	cli
    e444:	3e bf       	out	0x3e, r19	; 62
    e446:	0f be       	out	0x3f, r0	; 63
    e448:	2d bf       	out	0x3d, r18	; 61
    e44a:	ed b7       	in	r30, 0x3d	; 61
    e44c:	fe b7       	in	r31, 0x3e	; 62
    e44e:	31 96       	adiw	r30, 0x01	; 1
    e450:	d8 01       	movw	r26, r16
    e452:	14 96       	adiw	r26, 0x04	; 4
    e454:	8d 91       	ld	r24, X+
    e456:	9c 91       	ld	r25, X
    e458:	15 97       	sbiw	r26, 0x05	; 5
    e45a:	ad b7       	in	r26, 0x3d	; 61
    e45c:	be b7       	in	r27, 0x3e	; 62
    e45e:	12 96       	adiw	r26, 0x02	; 2
    e460:	9c 93       	st	X, r25
    e462:	8e 93       	st	-X, r24
    e464:	11 97       	sbiw	r26, 0x01	; 1
    e466:	8d ed       	ldi	r24, 0xDD	; 221
    e468:	99 e0       	ldi	r25, 0x09	; 9
    e46a:	93 83       	std	Z+3, r25	; 0x03
    e46c:	82 83       	std	Z+2, r24	; 0x02
    e46e:	da 01       	movw	r26, r20
    e470:	18 96       	adiw	r26, 0x08	; 8
    e472:	8d 91       	ld	r24, X+
    e474:	9c 91       	ld	r25, X
    e476:	19 97       	sbiw	r26, 0x09	; 9
    e478:	01 96       	adiw	r24, 0x01	; 1
    e47a:	95 83       	std	Z+5, r25	; 0x05
    e47c:	84 83       	std	Z+4, r24	; 0x04
    e47e:	16 96       	adiw	r26, 0x06	; 6
    e480:	8d 91       	ld	r24, X+
    e482:	9c 91       	ld	r25, X
    e484:	17 97       	sbiw	r26, 0x07	; 7
    e486:	97 83       	std	Z+7, r25	; 0x07
    e488:	86 83       	std	Z+6, r24	; 0x06
    e48a:	1a 96       	adiw	r26, 0x0a	; 10
    e48c:	8d 91       	ld	r24, X+
    e48e:	9c 91       	ld	r25, X
    e490:	1b 97       	sbiw	r26, 0x0b	; 11
    e492:	84 59       	subi	r24, 0x94	; 148
    e494:	98 4f       	sbci	r25, 0xF8	; 248
    e496:	91 87       	std	Z+9, r25	; 0x09
    e498:	80 87       	std	Z+8, r24	; 0x08
    e49a:	14 96       	adiw	r26, 0x04	; 4
    e49c:	8d 91       	ld	r24, X+
    e49e:	9c 91       	ld	r25, X
    e4a0:	15 97       	sbiw	r26, 0x05	; 5
    e4a2:	93 87       	std	Z+11, r25	; 0x0b
    e4a4:	82 87       	std	Z+10, r24	; 0x0a
    e4a6:	12 96       	adiw	r26, 0x02	; 2
    e4a8:	8d 91       	ld	r24, X+
    e4aa:	9c 91       	ld	r25, X
    e4ac:	13 97       	sbiw	r26, 0x03	; 3
    e4ae:	95 87       	std	Z+13, r25	; 0x0d
    e4b0:	84 87       	std	Z+12, r24	; 0x0c
    e4b2:	8d 91       	ld	r24, X+
    e4b4:	9c 91       	ld	r25, X
    e4b6:	97 87       	std	Z+15, r25	; 0x0f
    e4b8:	86 87       	std	Z+14, r24	; 0x0e
    e4ba:	0e 94 51 f1 	call	0x1e2a2	; 0x1e2a2 <sprintf_P>
	                                                        dt->tm_hour, dt->tm_min, dt->tm_sec); 

	retval = SBGPCTD_CTD_Tx(pTaskInfo);
    e4be:	ed b7       	in	r30, 0x3d	; 61
    e4c0:	fe b7       	in	r31, 0x3e	; 62
    e4c2:	70 96       	adiw	r30, 0x10	; 16
    e4c4:	0f b6       	in	r0, 0x3f	; 63
    e4c6:	f8 94       	cli
    e4c8:	fe bf       	out	0x3e, r31	; 62
    e4ca:	0f be       	out	0x3f, r0	; 63
    e4cc:	ed bf       	out	0x3d, r30	; 61
    e4ce:	c8 01       	movw	r24, r16
    e4d0:	0e 94 d6 70 	call	0xe1ac	; 0xe1ac <SBGPCTD_CTD_Tx>

	if(retval == SUCCESS)
    e4d4:	8f 3f       	cpi	r24, 0xFF	; 255
    e4d6:	41 f4       	brne	.+16     	; 0xe4e8 <SBGPCTD_SetTime+0x112>
		retval = SBGPCTD_CTD_Rx(pTaskInfo, cmdGPCTD_EOL, &lenData);
    e4d8:	c8 01       	movw	r24, r16
    e4da:	68 e9       	ldi	r22, 0x98	; 152
    e4dc:	7a e0       	ldi	r23, 0x0A	; 10
    e4de:	ae 01       	movw	r20, r28
    e4e0:	4f 5f       	subi	r20, 0xFF	; 255
    e4e2:	5f 4f       	sbci	r21, 0xFF	; 255
    e4e4:	0e 94 62 71 	call	0xe2c4	; 0xe2c4 <SBGPCTD_CTD_Rx>

	return retval;
}
    e4e8:	26 96       	adiw	r28, 0x06	; 6
    e4ea:	0f b6       	in	r0, 0x3f	; 63
    e4ec:	f8 94       	cli
    e4ee:	de bf       	out	0x3e, r29	; 62
    e4f0:	0f be       	out	0x3f, r0	; 63
    e4f2:	cd bf       	out	0x3d, r28	; 61
    e4f4:	cf 91       	pop	r28
    e4f6:	df 91       	pop	r29
    e4f8:	1f 91       	pop	r17
    e4fa:	0f 91       	pop	r16
    e4fc:	08 95       	ret

0000e4fe <SBGPCTD_Cmd>:

	return retval;
}

uint8_t SBGPCTD_Cmd(PSEABIRD_GPCTD_TASK pTaskInfo, char* cmd)
{
    e4fe:	af 92       	push	r10
    e500:	bf 92       	push	r11
    e502:	df 92       	push	r13
    e504:	ef 92       	push	r14
    e506:	ff 92       	push	r15
    e508:	0f 93       	push	r16
    e50a:	1f 93       	push	r17
    e50c:	df 93       	push	r29
    e50e:	cf 93       	push	r28
    e510:	0f 92       	push	r0
    e512:	0f 92       	push	r0
    e514:	cd b7       	in	r28, 0x3d	; 61
    e516:	de b7       	in	r29, 0x3e	; 62
    e518:	8c 01       	movw	r16, r24
    e51a:	7b 01       	movw	r14, r22
	uint8_t retval = SUCCESS;

	if(retval == SUCCESS)
	{
		strlwr(cmd);
    e51c:	cb 01       	movw	r24, r22
    e51e:	0e 94 4f f0 	call	0x1e09e	; 0x1e09e <strlwr>

		if(strstr_P(cmd, PSTR("baud")) != NULL)
    e522:	c7 01       	movw	r24, r14
    e524:	6a e6       	ldi	r22, 0x6A	; 106
    e526:	7c e0       	ldi	r23, 0x0C	; 12
    e528:	0e 94 f5 ef 	call	0x1dfea	; 0x1dfea <strstr_P>
    e52c:	89 2b       	or	r24, r25
    e52e:	19 f4       	brne	.+6      	; 0xe536 <SBGPCTD_Cmd+0x38>
    e530:	dd 24       	eor	r13, r13
    e532:	da 94       	dec	r13
    e534:	0a c0       	rjmp	.+20     	; 0xe54a <SBGPCTD_Cmd+0x4c>
		{
			retval = FAIL;
			pTaskInfo->pBuf->responseInfo.status = CONSOLE_RESPONSE_DEVICE_CMD_NOT_SUPPORTED;
    e536:	d8 01       	movw	r26, r16
    e538:	14 96       	adiw	r26, 0x04	; 4
    e53a:	ed 91       	ld	r30, X+
    e53c:	fc 91       	ld	r31, X
    e53e:	15 97       	sbiw	r26, 0x05	; 5
    e540:	eb 58       	subi	r30, 0x8B	; 139
    e542:	f8 4f       	sbci	r31, 0xF8	; 248
    e544:	84 e1       	ldi	r24, 0x14	; 20
    e546:	80 83       	st	Z, r24
    e548:	dd 24       	eor	r13, r13
		}
		if(strstr_P(cmd, PSTR("outputexecutedtag")) != NULL)
    e54a:	c7 01       	movw	r24, r14
    e54c:	68 e5       	ldi	r22, 0x58	; 88
    e54e:	7c e0       	ldi	r23, 0x0C	; 12
    e550:	0e 94 f5 ef 	call	0x1dfea	; 0x1dfea <strstr_P>
    e554:	89 2b       	or	r24, r25
    e556:	51 f0       	breq	.+20     	; 0xe56c <SBGPCTD_Cmd+0x6e>
		{
			retval = FAIL;
			pTaskInfo->pBuf->responseInfo.status = CONSOLE_RESPONSE_DEVICE_CMD_NOT_SUPPORTED;
    e558:	d8 01       	movw	r26, r16
    e55a:	14 96       	adiw	r26, 0x04	; 4
    e55c:	ed 91       	ld	r30, X+
    e55e:	fc 91       	ld	r31, X
    e560:	15 97       	sbiw	r26, 0x05	; 5
    e562:	eb 58       	subi	r30, 0x8B	; 139
    e564:	f8 4f       	sbci	r31, 0xF8	; 248
    e566:	84 e1       	ldi	r24, 0x14	; 20
    e568:	80 83       	st	Z, r24
    e56a:	dd 24       	eor	r13, r13
		}
		if(strstr_P(cmd, PSTR("start")) != NULL)
    e56c:	c7 01       	movw	r24, r14
    e56e:	62 e5       	ldi	r22, 0x52	; 82
    e570:	7c e0       	ldi	r23, 0x0C	; 12
    e572:	0e 94 f5 ef 	call	0x1dfea	; 0x1dfea <strstr_P>
    e576:	89 2b       	or	r24, r25
    e578:	51 f0       	breq	.+20     	; 0xe58e <SBGPCTD_Cmd+0x90>
		{
			retval = FAIL;
			pTaskInfo->pBuf->responseInfo.status = CONSOLE_RESPONSE_DEVICE_CMD_NOT_SUPPORTED;
    e57a:	d8 01       	movw	r26, r16
    e57c:	14 96       	adiw	r26, 0x04	; 4
    e57e:	ed 91       	ld	r30, X+
    e580:	fc 91       	ld	r31, X
    e582:	15 97       	sbiw	r26, 0x05	; 5
    e584:	eb 58       	subi	r30, 0x8B	; 139
    e586:	f8 4f       	sbci	r31, 0xF8	; 248
    e588:	84 e1       	ldi	r24, 0x14	; 20
    e58a:	80 83       	st	Z, r24
    e58c:	dd 24       	eor	r13, r13
		}
		if(strstr_P(cmd, PSTR("autorun")) != NULL)
    e58e:	c7 01       	movw	r24, r14
    e590:	6a e4       	ldi	r22, 0x4A	; 74
    e592:	7c e0       	ldi	r23, 0x0C	; 12
    e594:	0e 94 f5 ef 	call	0x1dfea	; 0x1dfea <strstr_P>
    e598:	89 2b       	or	r24, r25
    e59a:	51 f0       	breq	.+20     	; 0xe5b0 <SBGPCTD_Cmd+0xb2>
		{
			retval = FAIL;
			pTaskInfo->pBuf->responseInfo.status = CONSOLE_RESPONSE_DEVICE_CMD_NOT_SUPPORTED;
    e59c:	d8 01       	movw	r26, r16
    e59e:	14 96       	adiw	r26, 0x04	; 4
    e5a0:	ed 91       	ld	r30, X+
    e5a2:	fc 91       	ld	r31, X
    e5a4:	15 97       	sbiw	r26, 0x05	; 5
    e5a6:	eb 58       	subi	r30, 0x8B	; 139
    e5a8:	f8 4f       	sbci	r31, 0xF8	; 248
    e5aa:	84 e1       	ldi	r24, 0x14	; 20
    e5ac:	80 83       	st	Z, r24
    e5ae:	dd 24       	eor	r13, r13
		}
		if(strstr_P(cmd, PSTR("get")) != NULL)
    e5b0:	c7 01       	movw	r24, r14
    e5b2:	66 e4       	ldi	r22, 0x46	; 70
    e5b4:	7c e0       	ldi	r23, 0x0C	; 12
    e5b6:	0e 94 f5 ef 	call	0x1dfea	; 0x1dfea <strstr_P>
    e5ba:	89 2b       	or	r24, r25
    e5bc:	51 f0       	breq	.+20     	; 0xe5d2 <SBGPCTD_Cmd+0xd4>
		{
			retval = FAIL;
			pTaskInfo->pBuf->responseInfo.status = CONSOLE_RESPONSE_DEVICE_CMD_NOT_SUPPORTED;
    e5be:	d8 01       	movw	r26, r16
    e5c0:	14 96       	adiw	r26, 0x04	; 4
    e5c2:	ed 91       	ld	r30, X+
    e5c4:	fc 91       	ld	r31, X
    e5c6:	15 97       	sbiw	r26, 0x05	; 5
    e5c8:	eb 58       	subi	r30, 0x8B	; 139
    e5ca:	f8 4f       	sbci	r31, 0xF8	; 248
    e5cc:	84 e1       	ldi	r24, 0x14	; 20
    e5ce:	80 83       	st	Z, r24
    e5d0:	dd 24       	eor	r13, r13
		}
		if(strstr_P(cmd, PSTR("resetlogging")) != NULL)
    e5d2:	c7 01       	movw	r24, r14
    e5d4:	69 e3       	ldi	r22, 0x39	; 57
    e5d6:	7c e0       	ldi	r23, 0x0C	; 12
    e5d8:	0e 94 f5 ef 	call	0x1dfea	; 0x1dfea <strstr_P>
    e5dc:	89 2b       	or	r24, r25
    e5de:	51 f0       	breq	.+20     	; 0xe5f4 <SBGPCTD_Cmd+0xf6>
		{
			retval = FAIL;
			pTaskInfo->pBuf->responseInfo.status = CONSOLE_RESPONSE_DEVICE_CMD_NOT_SUPPORTED;
    e5e0:	d8 01       	movw	r26, r16
    e5e2:	14 96       	adiw	r26, 0x04	; 4
    e5e4:	ed 91       	ld	r30, X+
    e5e6:	fc 91       	ld	r31, X
    e5e8:	15 97       	sbiw	r26, 0x05	; 5
    e5ea:	eb 58       	subi	r30, 0x8B	; 139
    e5ec:	f8 4f       	sbci	r31, 0xF8	; 248
    e5ee:	84 e1       	ldi	r24, 0x14	; 20
    e5f0:	80 83       	st	Z, r24
    e5f2:	dd 24       	eor	r13, r13
		}
		if(strstr_P(cmd, PSTR("resetec")) != NULL)
    e5f4:	c7 01       	movw	r24, r14
    e5f6:	61 e3       	ldi	r22, 0x31	; 49
    e5f8:	7c e0       	ldi	r23, 0x0C	; 12
    e5fa:	0e 94 f5 ef 	call	0x1dfea	; 0x1dfea <strstr_P>
    e5fe:	89 2b       	or	r24, r25
    e600:	59 f0       	breq	.+22     	; 0xe618 <SBGPCTD_Cmd+0x11a>
		{
			retval = FAIL;
			pTaskInfo->pBuf->responseInfo.status = CONSOLE_RESPONSE_DEVICE_CMD_NOT_SUPPORTED;
    e602:	d8 01       	movw	r26, r16
    e604:	14 96       	adiw	r26, 0x04	; 4
    e606:	ed 91       	ld	r30, X+
    e608:	fc 91       	ld	r31, X
    e60a:	15 97       	sbiw	r26, 0x05	; 5
    e60c:	eb 58       	subi	r30, 0x8B	; 139
    e60e:	f8 4f       	sbci	r31, 0xF8	; 248
    e610:	84 e1       	ldi	r24, 0x14	; 20
    e612:	80 83       	st	Z, r24
    e614:	dd 24       	eor	r13, r13
    e616:	9d c0       	rjmp	.+314    	; 0xe752 <SBGPCTD_Cmd+0x254>
		}

		if(retval != FAIL)
    e618:	dd 20       	and	r13, r13
    e61a:	09 f4       	brne	.+2      	; 0xe61e <SBGPCTD_Cmd+0x120>
    e61c:	9a c0       	rjmp	.+308    	; 0xe752 <SBGPCTD_Cmd+0x254>
		{
			uint16_t lenData;

			memset(pTaskInfo->pBuf->bufferTx, 0, 256);
    e61e:	a1 2c       	mov	r10, r1
    e620:	21 e0       	ldi	r18, 0x01	; 1
    e622:	b2 2e       	mov	r11, r18
    e624:	d8 01       	movw	r26, r16
    e626:	14 96       	adiw	r26, 0x04	; 4
    e628:	ec 91       	ld	r30, X
    e62a:	14 97       	sbiw	r26, 0x04	; 4
    e62c:	15 96       	adiw	r26, 0x05	; 5
    e62e:	fc 91       	ld	r31, X
    e630:	df 01       	movw	r26, r30
    e632:	95 01       	movw	r18, r10
    e634:	1d 92       	st	X+, r1
    e636:	21 50       	subi	r18, 0x01	; 1
    e638:	30 40       	sbci	r19, 0x00	; 0
    e63a:	e1 f7       	brne	.-8      	; 0xe634 <SBGPCTD_Cmd+0x136>
			memset(pTaskInfo->pBuf->bufferRx, 0, 1024);
    e63c:	d8 01       	movw	r26, r16
    e63e:	14 96       	adiw	r26, 0x04	; 4
    e640:	8d 91       	ld	r24, X+
    e642:	9c 91       	ld	r25, X
    e644:	15 97       	sbiw	r26, 0x05	; 5
    e646:	80 50       	subi	r24, 0x00	; 0
    e648:	9f 4f       	sbci	r25, 0xFF	; 255
    e64a:	fc 01       	movw	r30, r24
    e64c:	80 e0       	ldi	r24, 0x00	; 0
    e64e:	94 e0       	ldi	r25, 0x04	; 4
    e650:	df 01       	movw	r26, r30
    e652:	9c 01       	movw	r18, r24
    e654:	1d 92       	st	X+, r1
    e656:	21 50       	subi	r18, 0x01	; 1
    e658:	30 40       	sbci	r19, 0x00	; 0
    e65a:	e1 f7       	brne	.-8      	; 0xe654 <SBGPCTD_Cmd+0x156>
			strcat(pTaskInfo->pBuf->bufferTx, cmd);
    e65c:	d8 01       	movw	r26, r16
    e65e:	14 96       	adiw	r26, 0x04	; 4
    e660:	8d 91       	ld	r24, X+
    e662:	9c 91       	ld	r25, X
    e664:	15 97       	sbiw	r26, 0x05	; 5
    e666:	b7 01       	movw	r22, r14
    e668:	0e 94 2c f0 	call	0x1e058	; 0x1e058 <strcat>

			retval = SBGPCTD_CTD_Tx(pTaskInfo);
    e66c:	c8 01       	movw	r24, r16
    e66e:	0e 94 d6 70 	call	0xe1ac	; 0xe1ac <SBGPCTD_CTD_Tx>
    e672:	d8 2e       	mov	r13, r24

			if(retval == SUCCESS)
    e674:	bf ef       	ldi	r27, 0xFF	; 255
    e676:	8b 17       	cp	r24, r27
    e678:	09 f0       	breq	.+2      	; 0xe67c <SBGPCTD_Cmd+0x17e>
    e67a:	6b c0       	rjmp	.+214    	; 0xe752 <SBGPCTD_Cmd+0x254>
			{
				retval = SBGPCTD_CTD_Rx(pTaskInfo, cmdGPCTD_EOL, &lenData);
    e67c:	c8 01       	movw	r24, r16
    e67e:	68 e9       	ldi	r22, 0x98	; 152
    e680:	7a e0       	ldi	r23, 0x0A	; 10
    e682:	ae 01       	movw	r20, r28
    e684:	4f 5f       	subi	r20, 0xFF	; 255
    e686:	5f 4f       	sbci	r21, 0xFF	; 255
    e688:	0e 94 62 71 	call	0xe2c4	; 0xe2c4 <SBGPCTD_CTD_Rx>
    e68c:	d8 2e       	mov	r13, r24

				if((retval == SUCCESS) && (lenData != 0))
    e68e:	ef ef       	ldi	r30, 0xFF	; 255
    e690:	8e 17       	cp	r24, r30
    e692:	09 f0       	breq	.+2      	; 0xe696 <SBGPCTD_Cmd+0x198>
    e694:	5e c0       	rjmp	.+188    	; 0xe752 <SBGPCTD_Cmd+0x254>
    e696:	89 81       	ldd	r24, Y+1	; 0x01
    e698:	9a 81       	ldd	r25, Y+2	; 0x02
    e69a:	89 2b       	or	r24, r25
    e69c:	09 f4       	brne	.+2      	; 0xe6a0 <SBGPCTD_Cmd+0x1a2>
    e69e:	59 c0       	rjmp	.+178    	; 0xe752 <SBGPCTD_Cmd+0x254>
				{
					memset((char*)pTaskInfo->pBuf->consoleResponse, 0, 256);
    e6a0:	d8 01       	movw	r26, r16
    e6a2:	14 96       	adiw	r26, 0x04	; 4
    e6a4:	8d 91       	ld	r24, X+
    e6a6:	9c 91       	ld	r25, X
    e6a8:	15 97       	sbiw	r26, 0x05	; 5
    e6aa:	80 5f       	subi	r24, 0xF0	; 240
    e6ac:	97 4f       	sbci	r25, 0xF7	; 247
    e6ae:	dc 01       	movw	r26, r24
    e6b0:	95 01       	movw	r18, r10
    e6b2:	1d 92       	st	X+, r1
    e6b4:	21 50       	subi	r18, 0x01	; 1
    e6b6:	30 40       	sbci	r19, 0x00	; 0
    e6b8:	e1 f7       	brne	.-8      	; 0xe6b2 <SBGPCTD_Cmd+0x1b4>
					if(lenData <= 256)
    e6ba:	e9 80       	ldd	r14, Y+1	; 0x01
    e6bc:	fa 80       	ldd	r15, Y+2	; 0x02
    e6be:	d8 01       	movw	r26, r16
    e6c0:	14 96       	adiw	r26, 0x04	; 4
    e6c2:	ed 91       	ld	r30, X+
    e6c4:	fc 91       	ld	r31, X
    e6c6:	15 97       	sbiw	r26, 0x05	; 5
    e6c8:	b1 e0       	ldi	r27, 0x01	; 1
    e6ca:	eb 16       	cp	r14, r27
    e6cc:	b1 e0       	ldi	r27, 0x01	; 1
    e6ce:	fb 06       	cpc	r15, r27
    e6d0:	90 f4       	brcc	.+36     	; 0xe6f6 <SBGPCTD_Cmd+0x1f8>
					{
						pTaskInfo->pBuf->responseInfo.status = CONSOLE_RESPONSE_OK;
    e6d2:	eb 58       	subi	r30, 0x8B	; 139
    e6d4:	f8 4f       	sbci	r31, 0xF8	; 248
    e6d6:	81 e0       	ldi	r24, 0x01	; 1
    e6d8:	80 83       	st	Z, r24
						memcpy((char*)pTaskInfo->pBuf->consoleResponse, pTaskInfo->pBuf->bufferRx, lenData);
    e6da:	f8 01       	movw	r30, r16
    e6dc:	24 81       	ldd	r18, Z+4	; 0x04
    e6de:	35 81       	ldd	r19, Z+5	; 0x05
    e6e0:	a9 01       	movw	r20, r18
    e6e2:	40 5f       	subi	r20, 0xF0	; 240
    e6e4:	57 4f       	sbci	r21, 0xF7	; 247
    e6e6:	20 50       	subi	r18, 0x00	; 0
    e6e8:	3f 4f       	sbci	r19, 0xFF	; 255
    e6ea:	ca 01       	movw	r24, r20
    e6ec:	b9 01       	movw	r22, r18
    e6ee:	a7 01       	movw	r20, r14
    e6f0:	0e 94 1c f0 	call	0x1e038	; 0x1e038 <memcpy>
    e6f4:	1c c0       	rjmp	.+56     	; 0xe72e <SBGPCTD_Cmd+0x230>
					}
					else
					{
						pTaskInfo->pBuf->responseInfo.status = CONSOLE_RESPONSE_OK_TRUNCATED;
    e6f6:	eb 58       	subi	r30, 0x8B	; 139
    e6f8:	f8 4f       	sbci	r31, 0xF8	; 248
    e6fa:	82 e0       	ldi	r24, 0x02	; 2
    e6fc:	80 83       	st	Z, r24
						memcpy((char*)pTaskInfo->pBuf->consoleResponse, pTaskInfo->pBuf->bufferRx, 255);
    e6fe:	d8 01       	movw	r26, r16
    e700:	14 96       	adiw	r26, 0x04	; 4
    e702:	8d 91       	ld	r24, X+
    e704:	9c 91       	ld	r25, X
    e706:	15 97       	sbiw	r26, 0x05	; 5
    e708:	dc 01       	movw	r26, r24
    e70a:	a0 5f       	subi	r26, 0xF0	; 240
    e70c:	b7 4f       	sbci	r27, 0xF7	; 247
    e70e:	fc 01       	movw	r30, r24
    e710:	e0 50       	subi	r30, 0x00	; 0
    e712:	ff 4f       	sbci	r31, 0xFF	; 255
    e714:	8f ef       	ldi	r24, 0xFF	; 255
    e716:	01 90       	ld	r0, Z+
    e718:	0d 92       	st	X+, r0
    e71a:	81 50       	subi	r24, 0x01	; 1
    e71c:	e1 f7       	brne	.-8      	; 0xe716 <SBGPCTD_Cmd+0x218>
						pTaskInfo->pBuf->consoleResponse[255] = 0;
    e71e:	d8 01       	movw	r26, r16
    e720:	14 96       	adiw	r26, 0x04	; 4
    e722:	ed 91       	ld	r30, X+
    e724:	fc 91       	ld	r31, X
    e726:	15 97       	sbiw	r26, 0x05	; 5
    e728:	e1 5f       	subi	r30, 0xF1	; 241
    e72a:	f6 4f       	sbci	r31, 0xF6	; 246
    e72c:	10 82       	st	Z, r1
					}
					pTaskInfo->pBuf->responseInfo.length = strlen(pTaskInfo->pBuf->consoleResponse);
    e72e:	d8 01       	movw	r26, r16
    e730:	14 96       	adiw	r26, 0x04	; 4
    e732:	ed 91       	ld	r30, X+
    e734:	fc 91       	ld	r31, X
    e736:	15 97       	sbiw	r26, 0x05	; 5
    e738:	cf 01       	movw	r24, r30
    e73a:	80 5f       	subi	r24, 0xF0	; 240
    e73c:	97 4f       	sbci	r25, 0xF7	; 247
    e73e:	dc 01       	movw	r26, r24
    e740:	0d 90       	ld	r0, X+
    e742:	00 20       	and	r0, r0
    e744:	e9 f7       	brne	.-6      	; 0xe740 <SBGPCTD_Cmd+0x242>
    e746:	11 97       	sbiw	r26, 0x01	; 1
    e748:	a8 1b       	sub	r26, r24
    e74a:	b9 0b       	sbc	r27, r25
    e74c:	e9 58       	subi	r30, 0x89	; 137
    e74e:	f8 4f       	sbci	r31, 0xF8	; 248
    e750:	a0 83       	st	Z, r26
	{
		pTaskInfo->pBuf->responseInfo.status = CONSOLE_RESPONSE_DEVICE_NOT_RESPONDING;
	}	

	return retval;
}
    e752:	8d 2d       	mov	r24, r13
    e754:	0f 90       	pop	r0
    e756:	0f 90       	pop	r0
    e758:	cf 91       	pop	r28
    e75a:	df 91       	pop	r29
    e75c:	1f 91       	pop	r17
    e75e:	0f 91       	pop	r16
    e760:	ff 90       	pop	r15
    e762:	ef 90       	pop	r14
    e764:	df 90       	pop	r13
    e766:	bf 90       	pop	r11
    e768:	af 90       	pop	r10
    e76a:	08 95       	ret

0000e76c <SBGPCTD_SetPeriod>:
	return;
}


uint8_t SBGPCTD_SetPeriod(PSEABIRD_GPCTD_TASK pTaskInfo, uint16_t newInterval)
{
    e76c:	cf 92       	push	r12
    e76e:	df 92       	push	r13
    e770:	ff 92       	push	r15
    e772:	0f 93       	push	r16
    e774:	1f 93       	push	r17
    e776:	df 93       	push	r29
    e778:	cf 93       	push	r28
    e77a:	0f 92       	push	r0
    e77c:	0f 92       	push	r0
    e77e:	cd b7       	in	r28, 0x3d	; 61
    e780:	de b7       	in	r29, 0x3e	; 62
    e782:	8c 01       	movw	r16, r24
    e784:	6b 01       	movw	r12, r22
	uint8_t retval = FAIL;
	uint16_t lenData = 0;

	if((newInterval > 0) && (newInterval <= MAX_GPCTD_SAMPLE_INTERVAL))
    e786:	cb 01       	movw	r24, r22
    e788:	01 97       	sbiw	r24, 0x01	; 1
    e78a:	80 51       	subi	r24, 0x10	; 16
    e78c:	9e 40       	sbci	r25, 0x0E	; 14
    e78e:	10 f0       	brcs	.+4      	; 0xe794 <SBGPCTD_SetPeriod+0x28>
    e790:	ff 24       	eor	r15, r15
    e792:	67 c0       	rjmp	.+206    	; 0xe862 <SBGPCTD_SetPeriod+0xf6>
	{
		memset(pTaskInfo->pBuf->bufferTx, 0, 256);
    e794:	d8 01       	movw	r26, r16
    e796:	14 96       	adiw	r26, 0x04	; 4
    e798:	8c 91       	ld	r24, X
    e79a:	14 97       	sbiw	r26, 0x04	; 4
    e79c:	15 96       	adiw	r26, 0x05	; 5
    e79e:	9c 91       	ld	r25, X


uint8_t SBGPCTD_SetPeriod(PSEABIRD_GPCTD_TASK pTaskInfo, uint16_t newInterval)
{
	uint8_t retval = FAIL;
	uint16_t lenData = 0;
    e7a0:	1a 82       	std	Y+2, r1	; 0x02
    e7a2:	19 82       	std	Y+1, r1	; 0x01

	if((newInterval > 0) && (newInterval <= MAX_GPCTD_SAMPLE_INTERVAL))
	{
		memset(pTaskInfo->pBuf->bufferTx, 0, 256);
    e7a4:	fc 01       	movw	r30, r24
    e7a6:	80 e0       	ldi	r24, 0x00	; 0
    e7a8:	91 e0       	ldi	r25, 0x01	; 1
    e7aa:	df 01       	movw	r26, r30
    e7ac:	9c 01       	movw	r18, r24
    e7ae:	1d 92       	st	X+, r1
    e7b0:	21 50       	subi	r18, 0x01	; 1
    e7b2:	30 40       	sbci	r19, 0x00	; 0
    e7b4:	e1 f7       	brne	.-8      	; 0xe7ae <SBGPCTD_SetPeriod+0x42>
		memset(pTaskInfo->pBuf->bufferRx, 0, 1024);
    e7b6:	d8 01       	movw	r26, r16
    e7b8:	14 96       	adiw	r26, 0x04	; 4
    e7ba:	8d 91       	ld	r24, X+
    e7bc:	9c 91       	ld	r25, X
    e7be:	15 97       	sbiw	r26, 0x05	; 5
    e7c0:	80 50       	subi	r24, 0x00	; 0
    e7c2:	9f 4f       	sbci	r25, 0xFF	; 255
    e7c4:	fc 01       	movw	r30, r24
    e7c6:	80 e0       	ldi	r24, 0x00	; 0
    e7c8:	94 e0       	ldi	r25, 0x04	; 4
    e7ca:	df 01       	movw	r26, r30
    e7cc:	9c 01       	movw	r18, r24
    e7ce:	1d 92       	st	X+, r1
    e7d0:	21 50       	subi	r18, 0x01	; 1
    e7d2:	30 40       	sbci	r19, 0x00	; 0
    e7d4:	e1 f7       	brne	.-8      	; 0xe7ce <SBGPCTD_SetPeriod+0x62>
		sprintf_P(pTaskInfo->pBuf->bufferTx, cmdGPCTD_Interval, newInterval);
    e7d6:	00 d0       	rcall	.+0      	; 0xe7d8 <SBGPCTD_SetPeriod+0x6c>
    e7d8:	00 d0       	rcall	.+0      	; 0xe7da <SBGPCTD_SetPeriod+0x6e>
    e7da:	ed b7       	in	r30, 0x3d	; 61
    e7dc:	fe b7       	in	r31, 0x3e	; 62
    e7de:	31 96       	adiw	r30, 0x01	; 1
    e7e0:	d8 01       	movw	r26, r16
    e7e2:	14 96       	adiw	r26, 0x04	; 4
    e7e4:	8d 91       	ld	r24, X+
    e7e6:	9c 91       	ld	r25, X
    e7e8:	15 97       	sbiw	r26, 0x05	; 5
    e7ea:	ad b7       	in	r26, 0x3d	; 61
    e7ec:	be b7       	in	r27, 0x3e	; 62
    e7ee:	12 96       	adiw	r26, 0x02	; 2
    e7f0:	9c 93       	st	X, r25
    e7f2:	8e 93       	st	-X, r24
    e7f4:	11 97       	sbiw	r26, 0x01	; 1
    e7f6:	88 e4       	ldi	r24, 0x48	; 72
    e7f8:	9a e0       	ldi	r25, 0x0A	; 10
    e7fa:	93 83       	std	Z+3, r25	; 0x03
    e7fc:	82 83       	std	Z+2, r24	; 0x02
    e7fe:	75 83       	std	Z+5, r23	; 0x05
    e800:	64 83       	std	Z+4, r22	; 0x04
    e802:	0e 94 51 f1 	call	0x1e2a2	; 0x1e2a2 <sprintf_P>

		retval = SBGPCTD_CTD_Tx(pTaskInfo);
    e806:	ed b7       	in	r30, 0x3d	; 61
    e808:	fe b7       	in	r31, 0x3e	; 62
    e80a:	36 96       	adiw	r30, 0x06	; 6
    e80c:	0f b6       	in	r0, 0x3f	; 63
    e80e:	f8 94       	cli
    e810:	fe bf       	out	0x3e, r31	; 62
    e812:	0f be       	out	0x3f, r0	; 63
    e814:	ed bf       	out	0x3d, r30	; 61
    e816:	c8 01       	movw	r24, r16
    e818:	0e 94 d6 70 	call	0xe1ac	; 0xe1ac <SBGPCTD_CTD_Tx>
    e81c:	f8 2e       	mov	r15, r24

		if(retval == SUCCESS)
    e81e:	ff ef       	ldi	r31, 0xFF	; 255
    e820:	8f 17       	cp	r24, r31
    e822:	f9 f4       	brne	.+62     	; 0xe862 <SBGPCTD_SetPeriod+0xf6>
			retval = SBGPCTD_CTD_Rx(pTaskInfo, cmdGPCTD_EOL, &lenData);
    e824:	c8 01       	movw	r24, r16
    e826:	68 e9       	ldi	r22, 0x98	; 152
    e828:	7a e0       	ldi	r23, 0x0A	; 10
    e82a:	ae 01       	movw	r20, r28
    e82c:	4f 5f       	subi	r20, 0xFF	; 255
    e82e:	5f 4f       	sbci	r21, 0xFF	; 255
    e830:	0e 94 62 71 	call	0xe2c4	; 0xe2c4 <SBGPCTD_CTD_Rx>
    e834:	f8 2e       	mov	r15, r24

		if(retval == SUCCESS)
    e836:	2f ef       	ldi	r18, 0xFF	; 255
    e838:	82 17       	cp	r24, r18
    e83a:	99 f4       	brne	.+38     	; 0xe862 <SBGPCTD_SetPeriod+0xf6>
		{
			EepromWriteWordUnSigned((void*)(pTaskInfo->eepromAddress + SEABIRD_GPCTD_SAMPLE_INTERVAL_OFFSET), newInterval);
    e83c:	d8 01       	movw	r26, r16
    e83e:	12 96       	adiw	r26, 0x02	; 2
    e840:	8d 91       	ld	r24, X+
    e842:	9c 91       	ld	r25, X
    e844:	13 97       	sbiw	r26, 0x03	; 3
    e846:	80 5c       	subi	r24, 0xC0	; 192
    e848:	9f 4f       	sbci	r25, 0xFF	; 255
    e84a:	b6 01       	movw	r22, r12
    e84c:	0e 94 d6 37 	call	0x6fac	; 0x6fac <EepromWriteWordUnSigned>
			pTaskInfo->pBuf->sampleRate = newInterval;
    e850:	d8 01       	movw	r26, r16
    e852:	14 96       	adiw	r26, 0x04	; 4
    e854:	ed 91       	ld	r30, X+
    e856:	fc 91       	ld	r31, X
    e858:	15 97       	sbiw	r26, 0x05	; 5
    e85a:	ef 5f       	subi	r30, 0xFF	; 255
    e85c:	fa 4f       	sbci	r31, 0xFA	; 250
    e85e:	d1 82       	std	Z+1, r13	; 0x01
    e860:	c0 82       	st	Z, r12
		}
	}
	return retval;
}
    e862:	8f 2d       	mov	r24, r15
    e864:	0f 90       	pop	r0
    e866:	0f 90       	pop	r0
    e868:	cf 91       	pop	r28
    e86a:	df 91       	pop	r29
    e86c:	1f 91       	pop	r17
    e86e:	0f 91       	pop	r16
    e870:	ff 90       	pop	r15
    e872:	df 90       	pop	r13
    e874:	cf 90       	pop	r12
    e876:	08 95       	ret

0000e878 <SBGPCTD_SimpleStop>:
}



void SBGPCTD_SimpleStop(PSEABIRD_GPCTD_TASK pTaskInfo)
{
    e878:	ef 92       	push	r14
    e87a:	ff 92       	push	r15
    e87c:	0f 93       	push	r16
    e87e:	1f 93       	push	r17
    e880:	df 93       	push	r29
    e882:	cf 93       	push	r28
    e884:	0f 92       	push	r0
    e886:	0f 92       	push	r0
    e888:	cd b7       	in	r28, 0x3d	; 61
    e88a:	de b7       	in	r29, 0x3e	; 62
    e88c:	7c 01       	movw	r14, r24
	uint16_t lenData = 0;
    e88e:	1a 82       	std	Y+2, r1	; 0x02
    e890:	19 82       	std	Y+1, r1	; 0x01
	char* pBuffer = pTaskInfo->pBuf->bufferTx;
    e892:	dc 01       	movw	r26, r24
    e894:	14 96       	adiw	r26, 0x04	; 4
    e896:	0d 91       	ld	r16, X+
    e898:	1c 91       	ld	r17, X
    e89a:	15 97       	sbiw	r26, 0x05	; 5
	uint8_t err = OS_ERR_NONE;

	pTaskInfo->pBuf->reportData.headerReport.repeatCount = 0;
    e89c:	0e 59       	subi	r16, 0x9E	; 158
    e89e:	1a 4f       	sbci	r17, 0xFA	; 250
    e8a0:	f8 01       	movw	r30, r16
    e8a2:	10 82       	st	Z, r1
	pTaskInfo->pBuf->sampleCTD = FALSE;
    e8a4:	0b 50       	subi	r16, 0x0B	; 11
    e8a6:	10 40       	sbci	r17, 0x00	; 0
    e8a8:	d8 01       	movw	r26, r16
    e8aa:	1c 92       	st	X, r1
    e8ac:	07 55       	subi	r16, 0x57	; 87
    e8ae:	15 40       	sbci	r17, 0x05	; 5

	memset(pTaskInfo->pBuf->bufferTx, 0, 256);
    e8b0:	80 e0       	ldi	r24, 0x00	; 0
    e8b2:	91 e0       	ldi	r25, 0x01	; 1
    e8b4:	f8 01       	movw	r30, r16
    e8b6:	9c 01       	movw	r18, r24
    e8b8:	11 92       	st	Z+, r1
    e8ba:	21 50       	subi	r18, 0x01	; 1
    e8bc:	30 40       	sbci	r19, 0x00	; 0
    e8be:	e1 f7       	brne	.-8      	; 0xe8b8 <SBGPCTD_SimpleStop+0x40>
	memset(pTaskInfo->pBuf->bufferRx, 0, 1024);
    e8c0:	d7 01       	movw	r26, r14
    e8c2:	14 96       	adiw	r26, 0x04	; 4
    e8c4:	8d 91       	ld	r24, X+
    e8c6:	9c 91       	ld	r25, X
    e8c8:	15 97       	sbiw	r26, 0x05	; 5
    e8ca:	80 50       	subi	r24, 0x00	; 0
    e8cc:	9f 4f       	sbci	r25, 0xFF	; 255
    e8ce:	fc 01       	movw	r30, r24
    e8d0:	80 e0       	ldi	r24, 0x00	; 0
    e8d2:	94 e0       	ldi	r25, 0x04	; 4
    e8d4:	df 01       	movw	r26, r30
    e8d6:	9c 01       	movw	r18, r24
    e8d8:	1d 92       	st	X+, r1
    e8da:	21 50       	subi	r18, 0x01	; 1
    e8dc:	30 40       	sbci	r19, 0x00	; 0
    e8de:	e1 f7       	brne	.-8      	; 0xe8d8 <SBGPCTD_SimpleStop+0x60>
	strcat_P(pTaskInfo->pBuf->bufferTx, cmdGPCTD_Stop);
    e8e0:	d7 01       	movw	r26, r14
    e8e2:	14 96       	adiw	r26, 0x04	; 4
    e8e4:	8d 91       	ld	r24, X+
    e8e6:	9c 91       	ld	r25, X
    e8e8:	15 97       	sbiw	r26, 0x05	; 5
    e8ea:	6a e8       	ldi	r22, 0x8A	; 138
    e8ec:	7a e0       	ldi	r23, 0x0A	; 10
    e8ee:	0e 94 b4 ef 	call	0x1df68	; 0x1df68 <strcat_P>

	lenData = strlen(pBuffer);
    e8f2:	f8 01       	movw	r30, r16
    e8f4:	01 90       	ld	r0, Z+
    e8f6:	00 20       	and	r0, r0
    e8f8:	e9 f7       	brne	.-6      	; 0xe8f4 <SBGPCTD_SimpleStop+0x7c>
    e8fa:	31 97       	sbiw	r30, 0x01	; 1
    e8fc:	e0 1b       	sub	r30, r16
    e8fe:	f1 0b       	sbc	r31, r17
    e900:	fa 83       	std	Y+2, r31	; 0x02
    e902:	e9 83       	std	Y+1, r30	; 0x01
    e904:	11 c0       	rjmp	.+34     	; 0xe928 <SBGPCTD_SimpleStop+0xb0>

	while(lenData > 0)
	{
		err = OSuartPutCharWait(pTaskInfo->portNum, *pBuffer, 10);
    e906:	f7 01       	movw	r30, r14
    e908:	81 81       	ldd	r24, Z+1	; 0x01
    e90a:	d8 01       	movw	r26, r16
    e90c:	6c 91       	ld	r22, X
    e90e:	4a e0       	ldi	r20, 0x0A	; 10
    e910:	50 e0       	ldi	r21, 0x00	; 0
    e912:	0e 94 f3 31 	call	0x63e6	; 0x63e6 <OSuartPutCharWait>
		if(err == OS_ERR_NONE)
    e916:	88 23       	and	r24, r24
    e918:	59 f4       	brne	.+22     	; 0xe930 <SBGPCTD_SimpleStop+0xb8>
		{
			lenData--;
    e91a:	89 81       	ldd	r24, Y+1	; 0x01
    e91c:	9a 81       	ldd	r25, Y+2	; 0x02
    e91e:	01 97       	sbiw	r24, 0x01	; 1
    e920:	9a 83       	std	Y+2, r25	; 0x02
    e922:	89 83       	std	Y+1, r24	; 0x01
			pBuffer++;
    e924:	0f 5f       	subi	r16, 0xFF	; 255
    e926:	1f 4f       	sbci	r17, 0xFF	; 255
	memset(pTaskInfo->pBuf->bufferRx, 0, 1024);
	strcat_P(pTaskInfo->pBuf->bufferTx, cmdGPCTD_Stop);

	lenData = strlen(pBuffer);

	while(lenData > 0)
    e928:	89 81       	ldd	r24, Y+1	; 0x01
    e92a:	9a 81       	ldd	r25, Y+2	; 0x02
    e92c:	89 2b       	or	r24, r25
    e92e:	59 f7       	brne	.-42     	; 0xe906 <SBGPCTD_SimpleStop+0x8e>
		{	
			break;
		}
	}

	err = OSuartPutCharWait(pTaskInfo->portNum, 0x0D, 10);
    e930:	f7 01       	movw	r30, r14
    e932:	81 81       	ldd	r24, Z+1	; 0x01
    e934:	6d e0       	ldi	r22, 0x0D	; 13
    e936:	4a e0       	ldi	r20, 0x0A	; 10
    e938:	50 e0       	ldi	r21, 0x00	; 0
    e93a:	0e 94 f3 31 	call	0x63e6	; 0x63e6 <OSuartPutCharWait>
	SBGPCTD_CTD_Rx(pTaskInfo, cmdGPCTD_EOL, &lenData);
    e93e:	c7 01       	movw	r24, r14
    e940:	68 e9       	ldi	r22, 0x98	; 152
    e942:	7a e0       	ldi	r23, 0x0A	; 10
    e944:	ae 01       	movw	r20, r28
    e946:	4f 5f       	subi	r20, 0xFF	; 255
    e948:	5f 4f       	sbci	r21, 0xFF	; 255
    e94a:	0e 94 62 71 	call	0xe2c4	; 0xe2c4 <SBGPCTD_CTD_Rx>

	pTaskInfo->pBuf->pumpRun = TRUE;
    e94e:	d7 01       	movw	r26, r14
    e950:	14 96       	adiw	r26, 0x04	; 4
    e952:	ed 91       	ld	r30, X+
    e954:	fc 91       	ld	r31, X
    e956:	15 97       	sbiw	r26, 0x05	; 5
    e958:	ee 5d       	subi	r30, 0xDE	; 222
    e95a:	f6 4f       	sbci	r31, 0xF6	; 246
    e95c:	8f ef       	ldi	r24, 0xFF	; 255
    e95e:	80 83       	st	Z, r24

	return;
}
    e960:	0f 90       	pop	r0
    e962:	0f 90       	pop	r0
    e964:	cf 91       	pop	r28
    e966:	df 91       	pop	r29
    e968:	1f 91       	pop	r17
    e96a:	0f 91       	pop	r16
    e96c:	ff 90       	pop	r15
    e96e:	ef 90       	pop	r14
    e970:	08 95       	ret

0000e972 <SBGPCTD_PumpFast>:
	
	return retval;
}

uint8_t SBGPCTD_PumpFast(PSEABIRD_GPCTD_TASK pTaskInfo)
{
    e972:	0f 93       	push	r16
    e974:	1f 93       	push	r17
    e976:	df 93       	push	r29
    e978:	cf 93       	push	r28
    e97a:	0f 92       	push	r0
    e97c:	0f 92       	push	r0
    e97e:	cd b7       	in	r28, 0x3d	; 61
    e980:	de b7       	in	r29, 0x3e	; 62
    e982:	8c 01       	movw	r16, r24
	uint8_t retval = FAIL;
	uint16_t lenData = 0;
    e984:	1a 82       	std	Y+2, r1	; 0x02
    e986:	19 82       	std	Y+1, r1	; 0x01

	memset(pTaskInfo->pBuf->bufferTx, 0, 256);
    e988:	dc 01       	movw	r26, r24
    e98a:	14 96       	adiw	r26, 0x04	; 4
    e98c:	ec 91       	ld	r30, X
    e98e:	14 97       	sbiw	r26, 0x04	; 4
    e990:	15 96       	adiw	r26, 0x05	; 5
    e992:	fc 91       	ld	r31, X
    e994:	80 e0       	ldi	r24, 0x00	; 0
    e996:	91 e0       	ldi	r25, 0x01	; 1
    e998:	df 01       	movw	r26, r30
    e99a:	9c 01       	movw	r18, r24
    e99c:	1d 92       	st	X+, r1
    e99e:	21 50       	subi	r18, 0x01	; 1
    e9a0:	30 40       	sbci	r19, 0x00	; 0
    e9a2:	e1 f7       	brne	.-8      	; 0xe99c <SBGPCTD_PumpFast+0x2a>
	memset(pTaskInfo->pBuf->bufferRx, 0, 1024);
    e9a4:	d8 01       	movw	r26, r16
    e9a6:	14 96       	adiw	r26, 0x04	; 4
    e9a8:	8d 91       	ld	r24, X+
    e9aa:	9c 91       	ld	r25, X
    e9ac:	15 97       	sbiw	r26, 0x05	; 5
    e9ae:	80 50       	subi	r24, 0x00	; 0
    e9b0:	9f 4f       	sbci	r25, 0xFF	; 255
    e9b2:	fc 01       	movw	r30, r24
    e9b4:	80 e0       	ldi	r24, 0x00	; 0
    e9b6:	94 e0       	ldi	r25, 0x04	; 4
    e9b8:	df 01       	movw	r26, r30
    e9ba:	9c 01       	movw	r18, r24
    e9bc:	1d 92       	st	X+, r1
    e9be:	21 50       	subi	r18, 0x01	; 1
    e9c0:	30 40       	sbci	r19, 0x00	; 0
    e9c2:	e1 f7       	brne	.-8      	; 0xe9bc <SBGPCTD_PumpFast+0x4a>

	strcat_P(pTaskInfo->pBuf->bufferTx, cmdGPCTD_PumpFast);
    e9c4:	d8 01       	movw	r26, r16
    e9c6:	14 96       	adiw	r26, 0x04	; 4
    e9c8:	8d 91       	ld	r24, X+
    e9ca:	9c 91       	ld	r25, X
    e9cc:	15 97       	sbiw	r26, 0x05	; 5
    e9ce:	6f e8       	ldi	r22, 0x8F	; 143
    e9d0:	7a e0       	ldi	r23, 0x0A	; 10
    e9d2:	0e 94 b4 ef 	call	0x1df68	; 0x1df68 <strcat_P>

	retval = SBGPCTD_CTD_Tx(pTaskInfo);
    e9d6:	c8 01       	movw	r24, r16
    e9d8:	0e 94 d6 70 	call	0xe1ac	; 0xe1ac <SBGPCTD_CTD_Tx>
    e9dc:	98 2f       	mov	r25, r24

	if(retval == SUCCESS)
    e9de:	8f 3f       	cpi	r24, 0xFF	; 255
    e9e0:	49 f4       	brne	.+18     	; 0xe9f4 <SBGPCTD_PumpFast+0x82>
		retval = SBGPCTD_CTD_Rx(pTaskInfo, cmdGPCTD_EOL, &lenData);
    e9e2:	c8 01       	movw	r24, r16
    e9e4:	68 e9       	ldi	r22, 0x98	; 152
    e9e6:	7a e0       	ldi	r23, 0x0A	; 10
    e9e8:	ae 01       	movw	r20, r28
    e9ea:	4f 5f       	subi	r20, 0xFF	; 255
    e9ec:	5f 4f       	sbci	r21, 0xFF	; 255
    e9ee:	0e 94 62 71 	call	0xe2c4	; 0xe2c4 <SBGPCTD_CTD_Rx>
    e9f2:	98 2f       	mov	r25, r24

	pTaskInfo->pBuf->pumpRun = TRUE;
    e9f4:	d8 01       	movw	r26, r16
    e9f6:	14 96       	adiw	r26, 0x04	; 4
    e9f8:	ed 91       	ld	r30, X+
    e9fa:	fc 91       	ld	r31, X
    e9fc:	15 97       	sbiw	r26, 0x05	; 5
    e9fe:	ee 5d       	subi	r30, 0xDE	; 222
    ea00:	f6 4f       	sbci	r31, 0xF6	; 246
    ea02:	8f ef       	ldi	r24, 0xFF	; 255
    ea04:	80 83       	st	Z, r24

	return retval;
}
    ea06:	89 2f       	mov	r24, r25
    ea08:	0f 90       	pop	r0
    ea0a:	0f 90       	pop	r0
    ea0c:	cf 91       	pop	r28
    ea0e:	df 91       	pop	r29
    ea10:	1f 91       	pop	r17
    ea12:	0f 91       	pop	r16
    ea14:	08 95       	ret

0000ea16 <SBGPCTD_StopSample>:

	return retval;
}

uint8_t SBGPCTD_StopSample(PSEABIRD_GPCTD_TASK pTaskInfo)
{
    ea16:	ef 92       	push	r14
    ea18:	ff 92       	push	r15
    ea1a:	0f 93       	push	r16
    ea1c:	1f 93       	push	r17
    ea1e:	df 93       	push	r29
    ea20:	cf 93       	push	r28
    ea22:	0f 92       	push	r0
    ea24:	0f 92       	push	r0
    ea26:	cd b7       	in	r28, 0x3d	; 61
    ea28:	de b7       	in	r29, 0x3e	; 62
    ea2a:	7c 01       	movw	r14, r24
	uint8_t retval = FAIL;
	uint16_t lenData = 0;
    ea2c:	1a 82       	std	Y+2, r1	; 0x02
    ea2e:	19 82       	std	Y+1, r1	; 0x01
	char* pBuffer = pTaskInfo->pBuf->bufferTx;
    ea30:	dc 01       	movw	r26, r24
    ea32:	14 96       	adiw	r26, 0x04	; 4
    ea34:	0d 91       	ld	r16, X+
    ea36:	1c 91       	ld	r17, X
    ea38:	15 97       	sbiw	r26, 0x05	; 5
	uint8_t err = OS_ERR_NONE;


	if(pTaskInfo->pBuf->reportData.headerReport.repeatCount != 0)
    ea3a:	0e 59       	subi	r16, 0x9E	; 158
    ea3c:	1a 4f       	sbci	r17, 0xFA	; 250
    ea3e:	f8 01       	movw	r30, r16
    ea40:	80 81       	ld	r24, Z
    ea42:	02 56       	subi	r16, 0x62	; 98
    ea44:	15 40       	sbci	r17, 0x05	; 5
    ea46:	88 23       	and	r24, r24
    ea48:	d1 f0       	breq	.+52     	; 0xea7e <SBGPCTD_StopSample+0x68>
	{
		pTaskInfo->pBuf->reportData.headerReport.payloadType = 0x00000070;
    ea4a:	05 5a       	subi	r16, 0xA5	; 165
    ea4c:	1a 4f       	sbci	r17, 0xFA	; 250
    ea4e:	80 e7       	ldi	r24, 0x70	; 112
    ea50:	90 e0       	ldi	r25, 0x00	; 0
    ea52:	a0 e0       	ldi	r26, 0x00	; 0
    ea54:	b0 e0       	ldi	r27, 0x00	; 0
    ea56:	f8 01       	movw	r30, r16
    ea58:	81 93       	st	Z+, r24
    ea5a:	91 93       	st	Z+, r25
    ea5c:	a1 93       	st	Z+, r26
    ea5e:	b1 93       	st	Z+, r27
		pTaskInfo->pBuf->reportData.headerReport.boardID = mainBoardID;
    ea60:	80 91 e6 03 	lds	r24, 0x03E6
    ea64:	df 01       	movw	r26, r30
    ea66:	8d 93       	st	X+, r24
		pTaskInfo->pBuf->reportData.headerReport.taskID = pTaskInfo->taskID;
    ea68:	f7 01       	movw	r30, r14
    ea6a:	80 81       	ld	r24, Z
    ea6c:	8d 93       	st	X+, r24
    ea6e:	8d 01       	movw	r16, r26
		pTaskInfo->pBuf->reportData.headerReport.dataFormat = 8;
		pTaskInfo->pBuf->reportData.headerReport.parser = 0;
		pTaskInfo->pBuf->reportData.headerReport.priority = 2;
    ea70:	88 e4       	ldi	r24, 0x48	; 72
    ea72:	8c 93       	st	X, r24
    ea74:	01 56       	subi	r16, 0x61	; 97
    ea76:	15 40       	sbci	r17, 0x05	; 5
		SBGPCTD_CTDReportXmitNoO2(pTaskInfo);
    ea78:	c7 01       	movw	r24, r14
    ea7a:	0e 94 c5 6b 	call	0xd78a	; 0xd78a <SBGPCTD_CTDReportXmitNoO2>
	}

	if(pTaskInfo->pBuf->reportData2.headerReport.repeatCount != 0)
    ea7e:	d7 01       	movw	r26, r14
    ea80:	14 96       	adiw	r26, 0x04	; 4
    ea82:	ed 91       	ld	r30, X+
    ea84:	fc 91       	ld	r31, X
    ea86:	15 97       	sbiw	r26, 0x05	; 5
    ea88:	e6 5a       	subi	r30, 0xA6	; 166
    ea8a:	f9 4f       	sbci	r31, 0xF9	; 249
    ea8c:	80 81       	ld	r24, Z
    ea8e:	ea 55       	subi	r30, 0x5A	; 90
    ea90:	f6 40       	sbci	r31, 0x06	; 6
    ea92:	88 23       	and	r24, r24
    ea94:	a9 f0       	breq	.+42     	; 0xeac0 <SBGPCTD_StopSample+0xaa>
	{
		pTaskInfo->pBuf->reportData2.headerReport.payloadType = 0x00000070;
    ea96:	ed 5a       	subi	r30, 0xAD	; 173
    ea98:	f9 4f       	sbci	r31, 0xF9	; 249
    ea9a:	80 e7       	ldi	r24, 0x70	; 112
    ea9c:	90 e0       	ldi	r25, 0x00	; 0
    ea9e:	a0 e0       	ldi	r26, 0x00	; 0
    eaa0:	b0 e0       	ldi	r27, 0x00	; 0
    eaa2:	81 93       	st	Z+, r24
    eaa4:	91 93       	st	Z+, r25
    eaa6:	a1 93       	st	Z+, r26
    eaa8:	b1 93       	st	Z+, r27
		pTaskInfo->pBuf->reportData2.headerReport.boardID = mainBoardID;
    eaaa:	80 91 e6 03 	lds	r24, 0x03E6
    eaae:	81 93       	st	Z+, r24
		pTaskInfo->pBuf->reportData2.headerReport.taskID = pTaskInfo->taskID;
    eab0:	d7 01       	movw	r26, r14
    eab2:	8c 91       	ld	r24, X
    eab4:	81 93       	st	Z+, r24
		pTaskInfo->pBuf->reportData2.headerReport.dataFormat = 9;
		pTaskInfo->pBuf->reportData2.headerReport.parser = 0;
		pTaskInfo->pBuf->reportData2.headerReport.priority = 2;
    eab6:	89 e4       	ldi	r24, 0x49	; 73
    eab8:	80 83       	st	Z, r24
		SBGPCTD_CTDReportXmitWithO2(pTaskInfo);
    eaba:	c7 01       	movw	r24, r14
    eabc:	0e 94 47 6b 	call	0xd68e	; 0xd68e <SBGPCTD_CTDReportXmitWithO2>
	}

	pTaskInfo->pBuf->reportData.headerReport.repeatCount = 0;
    eac0:	d7 01       	movw	r26, r14
    eac2:	14 96       	adiw	r26, 0x04	; 4
    eac4:	ed 91       	ld	r30, X+
    eac6:	fc 91       	ld	r31, X
    eac8:	15 97       	sbiw	r26, 0x05	; 5
    eaca:	ee 59       	subi	r30, 0x9E	; 158
    eacc:	fa 4f       	sbci	r31, 0xFA	; 250
    eace:	10 82       	st	Z, r1
	pTaskInfo->pBuf->sampleCTD = FALSE;
    ead0:	3b 97       	sbiw	r30, 0x0b	; 11
    ead2:	10 82       	st	Z, r1
    ead4:	e7 55       	subi	r30, 0x57	; 87
    ead6:	f5 40       	sbci	r31, 0x05	; 5

	memset(pTaskInfo->pBuf->bufferTx, 0, 256);
    ead8:	80 e0       	ldi	r24, 0x00	; 0
    eada:	91 e0       	ldi	r25, 0x01	; 1
    eadc:	9c 01       	movw	r18, r24
    eade:	11 92       	st	Z+, r1
    eae0:	21 50       	subi	r18, 0x01	; 1
    eae2:	30 40       	sbci	r19, 0x00	; 0
    eae4:	e1 f7       	brne	.-8      	; 0xeade <SBGPCTD_StopSample+0xc8>
	memset(pTaskInfo->pBuf->bufferRx, 0, 1024);
    eae6:	d7 01       	movw	r26, r14
    eae8:	14 96       	adiw	r26, 0x04	; 4
    eaea:	8d 91       	ld	r24, X+
    eaec:	9c 91       	ld	r25, X
    eaee:	15 97       	sbiw	r26, 0x05	; 5
    eaf0:	80 50       	subi	r24, 0x00	; 0
    eaf2:	9f 4f       	sbci	r25, 0xFF	; 255
    eaf4:	fc 01       	movw	r30, r24
    eaf6:	80 e0       	ldi	r24, 0x00	; 0
    eaf8:	94 e0       	ldi	r25, 0x04	; 4
    eafa:	df 01       	movw	r26, r30
    eafc:	9c 01       	movw	r18, r24
    eafe:	1d 92       	st	X+, r1
    eb00:	21 50       	subi	r18, 0x01	; 1
    eb02:	30 40       	sbci	r19, 0x00	; 0
    eb04:	e1 f7       	brne	.-8      	; 0xeafe <SBGPCTD_StopSample+0xe8>
	strcat_P(pTaskInfo->pBuf->bufferTx, cmdGPCTD_Stop);
    eb06:	d7 01       	movw	r26, r14
    eb08:	14 96       	adiw	r26, 0x04	; 4
    eb0a:	8d 91       	ld	r24, X+
    eb0c:	9c 91       	ld	r25, X
    eb0e:	15 97       	sbiw	r26, 0x05	; 5
    eb10:	6a e8       	ldi	r22, 0x8A	; 138
    eb12:	7a e0       	ldi	r23, 0x0A	; 10
    eb14:	0e 94 b4 ef 	call	0x1df68	; 0x1df68 <strcat_P>

	lenData = strlen(pBuffer);
    eb18:	f8 01       	movw	r30, r16
    eb1a:	01 90       	ld	r0, Z+
    eb1c:	00 20       	and	r0, r0
    eb1e:	e9 f7       	brne	.-6      	; 0xeb1a <SBGPCTD_StopSample+0x104>
    eb20:	31 97       	sbiw	r30, 0x01	; 1
    eb22:	e0 1b       	sub	r30, r16
    eb24:	f1 0b       	sbc	r31, r17
    eb26:	fa 83       	std	Y+2, r31	; 0x02
    eb28:	e9 83       	std	Y+1, r30	; 0x01
    eb2a:	20 e0       	ldi	r18, 0x00	; 0
    eb2c:	12 c0       	rjmp	.+36     	; 0xeb52 <SBGPCTD_StopSample+0x13c>

	while(lenData > 0)
	{
		err = OSuartPutCharWait(pTaskInfo->portNum, *pBuffer, 10);
    eb2e:	f7 01       	movw	r30, r14
    eb30:	81 81       	ldd	r24, Z+1	; 0x01
    eb32:	d8 01       	movw	r26, r16
    eb34:	6c 91       	ld	r22, X
    eb36:	4a e0       	ldi	r20, 0x0A	; 10
    eb38:	50 e0       	ldi	r21, 0x00	; 0
    eb3a:	0e 94 f3 31 	call	0x63e6	; 0x63e6 <OSuartPutCharWait>
		if(err == OS_ERR_NONE)
    eb3e:	88 23       	and	r24, r24
    eb40:	09 f5       	brne	.+66     	; 0xeb84 <SBGPCTD_StopSample+0x16e>
		{
			lenData--;
    eb42:	89 81       	ldd	r24, Y+1	; 0x01
    eb44:	9a 81       	ldd	r25, Y+2	; 0x02
    eb46:	01 97       	sbiw	r24, 0x01	; 1
    eb48:	9a 83       	std	Y+2, r25	; 0x02
    eb4a:	89 83       	std	Y+1, r24	; 0x01
			pBuffer++;
    eb4c:	0f 5f       	subi	r16, 0xFF	; 255
    eb4e:	1f 4f       	sbci	r17, 0xFF	; 255
    eb50:	2f ef       	ldi	r18, 0xFF	; 255
	memset(pTaskInfo->pBuf->bufferRx, 0, 1024);
	strcat_P(pTaskInfo->pBuf->bufferTx, cmdGPCTD_Stop);

	lenData = strlen(pBuffer);

	while(lenData > 0)
    eb52:	89 81       	ldd	r24, Y+1	; 0x01
    eb54:	9a 81       	ldd	r25, Y+2	; 0x02
    eb56:	89 2b       	or	r24, r25
    eb58:	51 f7       	brne	.-44     	; 0xeb2e <SBGPCTD_StopSample+0x118>
			retval = FAIL;
			break;
		}
	}

	if(retval == SUCCESS)
    eb5a:	2f 3f       	cpi	r18, 0xFF	; 255
    eb5c:	a1 f4       	brne	.+40     	; 0xeb86 <SBGPCTD_StopSample+0x170>
	{
		err = OSuartPutCharWait(pTaskInfo->portNum, 0x0D, 10);
    eb5e:	f7 01       	movw	r30, r14
    eb60:	81 81       	ldd	r24, Z+1	; 0x01
    eb62:	6d e0       	ldi	r22, 0x0D	; 13
    eb64:	4a e0       	ldi	r20, 0x0A	; 10
    eb66:	50 e0       	ldi	r21, 0x00	; 0
    eb68:	0e 94 f3 31 	call	0x63e6	; 0x63e6 <OSuartPutCharWait>
		if(err != OS_ERR_NONE)
    eb6c:	88 23       	and	r24, r24
    eb6e:	51 f4       	brne	.+20     	; 0xeb84 <SBGPCTD_StopSample+0x16e>
			retval = FAIL;
	}
			
	if(retval == SUCCESS)
		retval = SBGPCTD_CTD_Rx(pTaskInfo, cmdGPCTD_EOL, &lenData);
    eb70:	c7 01       	movw	r24, r14
    eb72:	68 e9       	ldi	r22, 0x98	; 152
    eb74:	7a e0       	ldi	r23, 0x0A	; 10
    eb76:	ae 01       	movw	r20, r28
    eb78:	4f 5f       	subi	r20, 0xFF	; 255
    eb7a:	5f 4f       	sbci	r21, 0xFF	; 255
    eb7c:	0e 94 62 71 	call	0xe2c4	; 0xe2c4 <SBGPCTD_CTD_Rx>
    eb80:	28 2f       	mov	r18, r24
    eb82:	01 c0       	rjmp	.+2      	; 0xeb86 <SBGPCTD_StopSample+0x170>
    eb84:	20 e0       	ldi	r18, 0x00	; 0

	pTaskInfo->pBuf->pumpRun = FALSE;
    eb86:	d7 01       	movw	r26, r14
    eb88:	14 96       	adiw	r26, 0x04	; 4
    eb8a:	ed 91       	ld	r30, X+
    eb8c:	fc 91       	ld	r31, X
    eb8e:	15 97       	sbiw	r26, 0x05	; 5
    eb90:	ee 5d       	subi	r30, 0xDE	; 222
    eb92:	f6 4f       	sbci	r31, 0xF6	; 246
    eb94:	10 82       	st	Z, r1
	
	return retval;
}
    eb96:	82 2f       	mov	r24, r18
    eb98:	0f 90       	pop	r0
    eb9a:	0f 90       	pop	r0
    eb9c:	cf 91       	pop	r28
    eb9e:	df 91       	pop	r29
    eba0:	1f 91       	pop	r17
    eba2:	0f 91       	pop	r16
    eba4:	ff 90       	pop	r15
    eba6:	ef 90       	pop	r14
    eba8:	08 95       	ret

0000ebaa <SBGPCTD_CheckO2Sensor>:

	return retval;
}

void SBGPCTD_CheckO2Sensor(PSEABIRD_GPCTD_TASK pTaskInfo)
{
    ebaa:	ef 92       	push	r14
    ebac:	ff 92       	push	r15
    ebae:	0f 93       	push	r16
    ebb0:	1f 93       	push	r17
    ebb2:	df 93       	push	r29
    ebb4:	cf 93       	push	r28
    ebb6:	0f 92       	push	r0
    ebb8:	0f 92       	push	r0
    ebba:	cd b7       	in	r28, 0x3d	; 61
    ebbc:	de b7       	in	r29, 0x3e	; 62
    ebbe:	8c 01       	movw	r16, r24
	uint16_t lenData;
	char* pOut;
	uint8_t retval = FAIL;

	memset(pTaskInfo->pBuf->bufferTx, 0, 256);
    ebc0:	dc 01       	movw	r26, r24
    ebc2:	14 96       	adiw	r26, 0x04	; 4
    ebc4:	ec 91       	ld	r30, X
    ebc6:	14 97       	sbiw	r26, 0x04	; 4
    ebc8:	15 96       	adiw	r26, 0x05	; 5
    ebca:	fc 91       	ld	r31, X
    ebcc:	80 e0       	ldi	r24, 0x00	; 0
    ebce:	91 e0       	ldi	r25, 0x01	; 1
    ebd0:	df 01       	movw	r26, r30
    ebd2:	9c 01       	movw	r18, r24
    ebd4:	1d 92       	st	X+, r1
    ebd6:	21 50       	subi	r18, 0x01	; 1
    ebd8:	30 40       	sbci	r19, 0x00	; 0
    ebda:	e1 f7       	brne	.-8      	; 0xebd4 <SBGPCTD_CheckO2Sensor+0x2a>
	memset(pTaskInfo->pBuf->bufferRx, 0, 1024);
    ebdc:	d8 01       	movw	r26, r16
    ebde:	14 96       	adiw	r26, 0x04	; 4
    ebe0:	8d 91       	ld	r24, X+
    ebe2:	9c 91       	ld	r25, X
    ebe4:	15 97       	sbiw	r26, 0x05	; 5
    ebe6:	80 50       	subi	r24, 0x00	; 0
    ebe8:	9f 4f       	sbci	r25, 0xFF	; 255
    ebea:	fc 01       	movw	r30, r24
    ebec:	80 e0       	ldi	r24, 0x00	; 0
    ebee:	94 e0       	ldi	r25, 0x04	; 4
    ebf0:	df 01       	movw	r26, r30
    ebf2:	9c 01       	movw	r18, r24
    ebf4:	1d 92       	st	X+, r1
    ebf6:	21 50       	subi	r18, 0x01	; 1
    ebf8:	30 40       	sbci	r19, 0x00	; 0
    ebfa:	e1 f7       	brne	.-8      	; 0xebf4 <SBGPCTD_CheckO2Sensor+0x4a>
	strcat_P(pTaskInfo->pBuf->bufferTx, cmdGPCTD_GetCD);
    ebfc:	d8 01       	movw	r26, r16
    ebfe:	14 96       	adiw	r26, 0x04	; 4
    ec00:	8d 91       	ld	r24, X+
    ec02:	9c 91       	ld	r25, X
    ec04:	15 97       	sbiw	r26, 0x05	; 5
    ec06:	6a ec       	ldi	r22, 0xCA	; 202
    ec08:	79 e0       	ldi	r23, 0x09	; 9
    ec0a:	0e 94 b4 ef 	call	0x1df68	; 0x1df68 <strcat_P>

	retval = SBGPCTD_CTD_Tx(pTaskInfo);
    ec0e:	c8 01       	movw	r24, r16
    ec10:	0e 94 d6 70 	call	0xe1ac	; 0xe1ac <SBGPCTD_CTD_Tx>

	if(retval == SUCCESS)
    ec14:	8f 3f       	cpi	r24, 0xFF	; 255
    ec16:	29 f5       	brne	.+74     	; 0xec62 <SBGPCTD_CheckO2Sensor+0xb8>
	{
		retval = SBGPCTD_CTD_Rx(pTaskInfo, cmdGPCTD_EOL, &lenData);
    ec18:	c8 01       	movw	r24, r16
    ec1a:	68 e9       	ldi	r22, 0x98	; 152
    ec1c:	7a e0       	ldi	r23, 0x0A	; 10
    ec1e:	ae 01       	movw	r20, r28
    ec20:	4f 5f       	subi	r20, 0xFF	; 255
    ec22:	5f 4f       	sbci	r21, 0xFF	; 255
    ec24:	0e 94 62 71 	call	0xe2c4	; 0xe2c4 <SBGPCTD_CTD_Rx>

		if((retval == SUCCESS) && (lenData != 0))
    ec28:	8f 3f       	cpi	r24, 0xFF	; 255
    ec2a:	d9 f4       	brne	.+54     	; 0xec62 <SBGPCTD_CheckO2Sensor+0xb8>
    ec2c:	89 81       	ldd	r24, Y+1	; 0x01
    ec2e:	9a 81       	ldd	r25, Y+2	; 0x02
    ec30:	89 2b       	or	r24, r25
    ec32:	b9 f0       	breq	.+46     	; 0xec62 <SBGPCTD_CheckO2Sensor+0xb8>
		{
			pOut = strstr_P(pTaskInfo->pBuf->bufferRx, checkO2);
    ec34:	f8 01       	movw	r30, r16
    ec36:	04 81       	ldd	r16, Z+4	; 0x04
    ec38:	15 81       	ldd	r17, Z+5	; 0x05
    ec3a:	e1 2c       	mov	r14, r1
    ec3c:	31 e0       	ldi	r19, 0x01	; 1
    ec3e:	f3 2e       	mov	r15, r19
    ec40:	e0 0e       	add	r14, r16
    ec42:	f1 1e       	adc	r15, r17
    ec44:	c7 01       	movw	r24, r14
    ec46:	69 ea       	ldi	r22, 0xA9	; 169
    ec48:	7a e0       	ldi	r23, 0x0A	; 10
    ec4a:	0e 94 f5 ef 	call	0x1dfea	; 0x1dfea <strstr_P>

			if((pOut != NULL) && (pOut != pTaskInfo->pBuf->bufferRx))
    ec4e:	00 97       	sbiw	r24, 0x00	; 0
    ec50:	41 f0       	breq	.+16     	; 0xec62 <SBGPCTD_CheckO2Sensor+0xb8>
    ec52:	8e 15       	cp	r24, r14
    ec54:	9f 05       	cpc	r25, r15
    ec56:	29 f0       	breq	.+10     	; 0xec62 <SBGPCTD_CheckO2Sensor+0xb8>
				pTaskInfo->pBuf->useO2 = USE_O2;
    ec58:	07 5a       	subi	r16, 0xA7	; 167
    ec5a:	1a 4f       	sbci	r17, 0xFA	; 250
    ec5c:	81 e0       	ldi	r24, 0x01	; 1
    ec5e:	d8 01       	movw	r26, r16
    ec60:	8c 93       	st	X, r24
		}
	}
}
    ec62:	0f 90       	pop	r0
    ec64:	0f 90       	pop	r0
    ec66:	cf 91       	pop	r28
    ec68:	df 91       	pop	r29
    ec6a:	1f 91       	pop	r17
    ec6c:	0f 91       	pop	r16
    ec6e:	ff 90       	pop	r15
    ec70:	ef 90       	pop	r14
    ec72:	08 95       	ret

0000ec74 <SBGPCTD_StartSample>:

	return retval;
}

uint8_t SBGPCTD_StartSample(PSEABIRD_GPCTD_TASK pTaskInfo)
{
    ec74:	0f 93       	push	r16
    ec76:	1f 93       	push	r17
    ec78:	df 93       	push	r29
    ec7a:	cf 93       	push	r28
    ec7c:	0f 92       	push	r0
    ec7e:	0f 92       	push	r0
    ec80:	cd b7       	in	r28, 0x3d	; 61
    ec82:	de b7       	in	r29, 0x3e	; 62
    ec84:	8c 01       	movw	r16, r24
	uint8_t retval = FAIL;
	uint16_t lenData = 0;
    ec86:	1a 82       	std	Y+2, r1	; 0x02
    ec88:	19 82       	std	Y+1, r1	; 0x01

	SBGPCTD_SimpleStop(pTaskInfo);
    ec8a:	0e 94 3c 74 	call	0xe878	; 0xe878 <SBGPCTD_SimpleStop>
	SBGPCTD_CheckO2Sensor(pTaskInfo);
    ec8e:	c8 01       	movw	r24, r16
    ec90:	0e 94 d5 75 	call	0xebaa	; 0xebaa <SBGPCTD_CheckO2Sensor>

	retval = SBGPCTD_SetPeriod(pTaskInfo, pTaskInfo->pBuf->sampleRate);
    ec94:	d8 01       	movw	r26, r16
    ec96:	14 96       	adiw	r26, 0x04	; 4
    ec98:	ed 91       	ld	r30, X+
    ec9a:	fc 91       	ld	r31, X
    ec9c:	15 97       	sbiw	r26, 0x05	; 5
    ec9e:	ef 5f       	subi	r30, 0xFF	; 255
    eca0:	fa 4f       	sbci	r31, 0xFA	; 250
    eca2:	60 81       	ld	r22, Z
    eca4:	71 81       	ldd	r23, Z+1	; 0x01
    eca6:	c8 01       	movw	r24, r16
    eca8:	0e 94 b6 73 	call	0xe76c	; 0xe76c <SBGPCTD_SetPeriod>

	pTaskInfo->pBuf->reportData.headerReport.repeatCount = 0;
    ecac:	d8 01       	movw	r26, r16
    ecae:	14 96       	adiw	r26, 0x04	; 4
    ecb0:	ed 91       	ld	r30, X+
    ecb2:	fc 91       	ld	r31, X
    ecb4:	15 97       	sbiw	r26, 0x05	; 5
    ecb6:	ee 59       	subi	r30, 0x9E	; 158
    ecb8:	fa 4f       	sbci	r31, 0xFA	; 250
    ecba:	10 82       	st	Z, r1
	pTaskInfo->pBuf->sampleCTD = TRUE;
    ecbc:	3b 97       	sbiw	r30, 0x0b	; 11
    ecbe:	8f ef       	ldi	r24, 0xFF	; 255
    ecc0:	80 83       	st	Z, r24
    ecc2:	e7 55       	subi	r30, 0x57	; 87
    ecc4:	f5 40       	sbci	r31, 0x05	; 5

	memset(pTaskInfo->pBuf->bufferTx, 0, 256);
    ecc6:	80 e0       	ldi	r24, 0x00	; 0
    ecc8:	91 e0       	ldi	r25, 0x01	; 1
    ecca:	9c 01       	movw	r18, r24
    eccc:	11 92       	st	Z+, r1
    ecce:	21 50       	subi	r18, 0x01	; 1
    ecd0:	30 40       	sbci	r19, 0x00	; 0
    ecd2:	e1 f7       	brne	.-8      	; 0xeccc <SBGPCTD_StartSample+0x58>
	memset(pTaskInfo->pBuf->bufferRx, 0, 1024);
    ecd4:	d8 01       	movw	r26, r16
    ecd6:	14 96       	adiw	r26, 0x04	; 4
    ecd8:	8d 91       	ld	r24, X+
    ecda:	9c 91       	ld	r25, X
    ecdc:	15 97       	sbiw	r26, 0x05	; 5
    ecde:	80 50       	subi	r24, 0x00	; 0
    ece0:	9f 4f       	sbci	r25, 0xFF	; 255
    ece2:	fc 01       	movw	r30, r24
    ece4:	80 e0       	ldi	r24, 0x00	; 0
    ece6:	94 e0       	ldi	r25, 0x04	; 4
    ece8:	df 01       	movw	r26, r30
    ecea:	9c 01       	movw	r18, r24
    ecec:	1d 92       	st	X+, r1
    ecee:	21 50       	subi	r18, 0x01	; 1
    ecf0:	30 40       	sbci	r19, 0x00	; 0
    ecf2:	e1 f7       	brne	.-8      	; 0xecec <SBGPCTD_StartSample+0x78>

	strcat_P(pTaskInfo->pBuf->bufferTx, cmdGPCTD_Start);
    ecf4:	d8 01       	movw	r26, r16
    ecf6:	14 96       	adiw	r26, 0x04	; 4
    ecf8:	8d 91       	ld	r24, X+
    ecfa:	9c 91       	ld	r25, X
    ecfc:	15 97       	sbiw	r26, 0x05	; 5
    ecfe:	64 e8       	ldi	r22, 0x84	; 132
    ed00:	7a e0       	ldi	r23, 0x0A	; 10
    ed02:	0e 94 b4 ef 	call	0x1df68	; 0x1df68 <strcat_P>

	retval = SBGPCTD_CTD_Tx(pTaskInfo);
    ed06:	c8 01       	movw	r24, r16
    ed08:	0e 94 d6 70 	call	0xe1ac	; 0xe1ac <SBGPCTD_CTD_Tx>

	if(retval == SUCCESS)
    ed0c:	8f 3f       	cpi	r24, 0xFF	; 255
    ed0e:	41 f4       	brne	.+16     	; 0xed20 <SBGPCTD_StartSample+0xac>
		retval = SBGPCTD_CTD_Rx(pTaskInfo, cmdGPCTD_EOL, &lenData);
    ed10:	c8 01       	movw	r24, r16
    ed12:	68 e9       	ldi	r22, 0x98	; 152
    ed14:	7a e0       	ldi	r23, 0x0A	; 10
    ed16:	ae 01       	movw	r20, r28
    ed18:	4f 5f       	subi	r20, 0xFF	; 255
    ed1a:	5f 4f       	sbci	r21, 0xFF	; 255
    ed1c:	0e 94 62 71 	call	0xe2c4	; 0xe2c4 <SBGPCTD_CTD_Rx>

	pTaskInfo->pBuf->pumpRun = FALSE;
    ed20:	d8 01       	movw	r26, r16
    ed22:	14 96       	adiw	r26, 0x04	; 4
    ed24:	ed 91       	ld	r30, X+
    ed26:	fc 91       	ld	r31, X
    ed28:	15 97       	sbiw	r26, 0x05	; 5
    ed2a:	ee 5d       	subi	r30, 0xDE	; 222
    ed2c:	f6 4f       	sbci	r31, 0xF6	; 246
    ed2e:	10 82       	st	Z, r1

	return retval;
}
    ed30:	0f 90       	pop	r0
    ed32:	0f 90       	pop	r0
    ed34:	cf 91       	pop	r28
    ed36:	df 91       	pop	r29
    ed38:	1f 91       	pop	r17
    ed3a:	0f 91       	pop	r16
    ed3c:	08 95       	ret

0000ed3e <SBGPCTD_GetSerNum>:

	return;
}

uint8_t SBGPCTD_GetSerNum(PSEABIRD_GPCTD_TASK pTaskInfo)
{
    ed3e:	bf 92       	push	r11
    ed40:	cf 92       	push	r12
    ed42:	df 92       	push	r13
    ed44:	ef 92       	push	r14
    ed46:	ff 92       	push	r15
    ed48:	0f 93       	push	r16
    ed4a:	1f 93       	push	r17
    ed4c:	df 93       	push	r29
    ed4e:	cf 93       	push	r28
    ed50:	0f 92       	push	r0
    ed52:	0f 92       	push	r0
    ed54:	cd b7       	in	r28, 0x3d	; 61
    ed56:	de b7       	in	r29, 0x3e	; 62
    ed58:	7c 01       	movw	r14, r24
	uint8_t retval = FAIL;
	uint16_t lenData;
	char* pO2 = NULL;

	memset(pTaskInfo->pBuf->tokenSeparatorList, 0, MAX_TOKEN_SEPARATORS);
    ed5a:	dc 01       	movw	r26, r24
    ed5c:	14 96       	adiw	r26, 0x04	; 4
    ed5e:	8d 91       	ld	r24, X+
    ed60:	9c 91       	ld	r25, X
    ed62:	15 97       	sbiw	r26, 0x05	; 5
    ed64:	84 58       	subi	r24, 0x84	; 132
    ed66:	98 4f       	sbci	r25, 0xF8	; 248
    ed68:	fc 01       	movw	r30, r24
    ed6a:	84 e1       	ldi	r24, 0x14	; 20
    ed6c:	df 01       	movw	r26, r30
    ed6e:	1d 92       	st	X+, r1
    ed70:	8a 95       	dec	r24
    ed72:	e9 f7       	brne	.-6      	; 0xed6e <SBGPCTD_GetSerNum+0x30>
	strcat_P(pTaskInfo->pBuf->tokenSeparatorList, tokensGPCTD1);
    ed74:	f7 01       	movw	r30, r14
    ed76:	84 81       	ldd	r24, Z+4	; 0x04
    ed78:	95 81       	ldd	r25, Z+5	; 0x05
    ed7a:	84 58       	subi	r24, 0x84	; 132
    ed7c:	98 4f       	sbci	r25, 0xF8	; 248
    ed7e:	61 ea       	ldi	r22, 0xA1	; 161
    ed80:	7a e0       	ldi	r23, 0x0A	; 10
    ed82:	0e 94 b4 ef 	call	0x1df68	; 0x1df68 <strcat_P>

	memset(pTaskInfo->pBuf->bufferTx, 0, 256);
    ed86:	d7 01       	movw	r26, r14
    ed88:	14 96       	adiw	r26, 0x04	; 4
    ed8a:	ec 91       	ld	r30, X
    ed8c:	14 97       	sbiw	r26, 0x04	; 4
    ed8e:	15 96       	adiw	r26, 0x05	; 5
    ed90:	fc 91       	ld	r31, X
    ed92:	80 e0       	ldi	r24, 0x00	; 0
    ed94:	91 e0       	ldi	r25, 0x01	; 1
    ed96:	df 01       	movw	r26, r30
    ed98:	9c 01       	movw	r18, r24
    ed9a:	1d 92       	st	X+, r1
    ed9c:	21 50       	subi	r18, 0x01	; 1
    ed9e:	30 40       	sbci	r19, 0x00	; 0
    eda0:	e1 f7       	brne	.-8      	; 0xed9a <SBGPCTD_GetSerNum+0x5c>
	memset(pTaskInfo->pBuf->bufferRx, 0, 1024);
    eda2:	d7 01       	movw	r26, r14
    eda4:	14 96       	adiw	r26, 0x04	; 4
    eda6:	8d 91       	ld	r24, X+
    eda8:	9c 91       	ld	r25, X
    edaa:	15 97       	sbiw	r26, 0x05	; 5
    edac:	80 50       	subi	r24, 0x00	; 0
    edae:	9f 4f       	sbci	r25, 0xFF	; 255
    edb0:	fc 01       	movw	r30, r24
    edb2:	80 e0       	ldi	r24, 0x00	; 0
    edb4:	94 e0       	ldi	r25, 0x04	; 4
    edb6:	df 01       	movw	r26, r30
    edb8:	9c 01       	movw	r18, r24
    edba:	1d 92       	st	X+, r1
    edbc:	21 50       	subi	r18, 0x01	; 1
    edbe:	30 40       	sbci	r19, 0x00	; 0
    edc0:	e1 f7       	brne	.-8      	; 0xedba <SBGPCTD_GetSerNum+0x7c>
	strcat_P(pTaskInfo->pBuf->bufferTx, cmdGPCTD_DS);
    edc2:	d7 01       	movw	r26, r14
    edc4:	14 96       	adiw	r26, 0x04	; 4
    edc6:	8d 91       	ld	r24, X+
    edc8:	9c 91       	ld	r25, X
    edca:	15 97       	sbiw	r26, 0x05	; 5
    edcc:	6e eb       	ldi	r22, 0xBE	; 190
    edce:	79 e0       	ldi	r23, 0x09	; 9
    edd0:	0e 94 b4 ef 	call	0x1df68	; 0x1df68 <strcat_P>

	retval = SBGPCTD_CTD_Tx(pTaskInfo);
    edd4:	c7 01       	movw	r24, r14
    edd6:	0e 94 d6 70 	call	0xe1ac	; 0xe1ac <SBGPCTD_CTD_Tx>
    edda:	b8 2e       	mov	r11, r24

	if(retval == SUCCESS)
    eddc:	bf ef       	ldi	r27, 0xFF	; 255
    edde:	8b 17       	cp	r24, r27
    ede0:	09 f0       	breq	.+2      	; 0xede4 <SBGPCTD_GetSerNum+0xa6>
    ede2:	85 c0       	rjmp	.+266    	; 0xeeee <SBGPCTD_GetSerNum+0x1b0>
	{
		retval = SBGPCTD_CTD_Rx(pTaskInfo, cmdGPCTD_EOL, &lenData);
    ede4:	c7 01       	movw	r24, r14
    ede6:	68 e9       	ldi	r22, 0x98	; 152
    ede8:	7a e0       	ldi	r23, 0x0A	; 10
    edea:	ae 01       	movw	r20, r28
    edec:	4f 5f       	subi	r20, 0xFF	; 255
    edee:	5f 4f       	sbci	r21, 0xFF	; 255
    edf0:	0e 94 62 71 	call	0xe2c4	; 0xe2c4 <SBGPCTD_CTD_Rx>
    edf4:	b8 2e       	mov	r11, r24

		if((retval == SUCCESS) && (lenData != 0))
    edf6:	ef ef       	ldi	r30, 0xFF	; 255
    edf8:	8e 17       	cp	r24, r30
    edfa:	09 f0       	breq	.+2      	; 0xedfe <SBGPCTD_GetSerNum+0xc0>
    edfc:	78 c0       	rjmp	.+240    	; 0xeeee <SBGPCTD_GetSerNum+0x1b0>
    edfe:	89 81       	ldd	r24, Y+1	; 0x01
    ee00:	9a 81       	ldd	r25, Y+2	; 0x02
    ee02:	89 2b       	or	r24, r25
    ee04:	09 f4       	brne	.+2      	; 0xee08 <SBGPCTD_GetSerNum+0xca>
    ee06:	73 c0       	rjmp	.+230    	; 0xeeee <SBGPCTD_GetSerNum+0x1b0>
		{
			char* pChar = NULL;

			pO2 = strstr_P(pTaskInfo->pBuf->bufferRx, check2forO2);
    ee08:	d7 01       	movw	r26, r14
    ee0a:	14 96       	adiw	r26, 0x04	; 4
    ee0c:	0d 91       	ld	r16, X+
    ee0e:	1c 91       	ld	r17, X
    ee10:	15 97       	sbiw	r26, 0x05	; 5
    ee12:	c1 2c       	mov	r12, r1
    ee14:	41 e0       	ldi	r20, 0x01	; 1
    ee16:	d4 2e       	mov	r13, r20
    ee18:	c0 0e       	add	r12, r16
    ee1a:	d1 1e       	adc	r13, r17
    ee1c:	c6 01       	movw	r24, r12
    ee1e:	6c eb       	ldi	r22, 0xBC	; 188
    ee20:	7a e0       	ldi	r23, 0x0A	; 10
    ee22:	0e 94 f5 ef 	call	0x1dfea	; 0x1dfea <strstr_P>
			if((pO2 != NULL) && (pO2 != pTaskInfo->pBuf->bufferRx))
    ee26:	00 97       	sbiw	r24, 0x00	; 0
    ee28:	41 f0       	breq	.+16     	; 0xee3a <SBGPCTD_GetSerNum+0xfc>
    ee2a:	8c 15       	cp	r24, r12
    ee2c:	9d 05       	cpc	r25, r13
    ee2e:	29 f0       	breq	.+10     	; 0xee3a <SBGPCTD_GetSerNum+0xfc>
				pTaskInfo->pBuf->useO2 = USE_O2;
    ee30:	07 5a       	subi	r16, 0xA7	; 167
    ee32:	1a 4f       	sbci	r17, 0xFA	; 250
    ee34:	81 e0       	ldi	r24, 0x01	; 1
    ee36:	f8 01       	movw	r30, r16
    ee38:	80 83       	st	Z, r24

			pChar = strstr_P(pTaskInfo->pBuf->bufferRx, parseGPCTD_SerNum);
    ee3a:	d7 01       	movw	r26, r14
    ee3c:	14 96       	adiw	r26, 0x04	; 4
    ee3e:	cd 90       	ld	r12, X+
    ee40:	dc 90       	ld	r13, X
    ee42:	15 97       	sbiw	r26, 0x05	; 5
    ee44:	86 01       	movw	r16, r12
    ee46:	00 50       	subi	r16, 0x00	; 0
    ee48:	1f 4f       	sbci	r17, 0xFF	; 255
    ee4a:	c8 01       	movw	r24, r16
    ee4c:	6e e9       	ldi	r22, 0x9E	; 158
    ee4e:	7a e0       	ldi	r23, 0x0A	; 10
    ee50:	0e 94 f5 ef 	call	0x1dfea	; 0x1dfea <strstr_P>
			if(pChar != NULL)
    ee54:	00 97       	sbiw	r24, 0x00	; 0
    ee56:	09 f4       	brne	.+2      	; 0xee5a <SBGPCTD_GetSerNum+0x11c>
    ee58:	4a c0       	rjmp	.+148    	; 0xeeee <SBGPCTD_GetSerNum+0x1b0>
			{
				pChar++;
				pChar = strstr_P(pChar, parseGPCTD_SerNum);
    ee5a:	01 96       	adiw	r24, 0x01	; 1
    ee5c:	6e e9       	ldi	r22, 0x9E	; 158
    ee5e:	7a e0       	ldi	r23, 0x0A	; 10
    ee60:	0e 94 f5 ef 	call	0x1dfea	; 0x1dfea <strstr_P>
			}


			if((pChar != NULL) && ((uint16_t)(pChar - pTaskInfo->pBuf->bufferRx) < 64))
    ee64:	00 97       	sbiw	r24, 0x00	; 0
    ee66:	09 f4       	brne	.+2      	; 0xee6a <SBGPCTD_GetSerNum+0x12c>
    ee68:	42 c0       	rjmp	.+132    	; 0xeeee <SBGPCTD_GetSerNum+0x1b0>
    ee6a:	fc 01       	movw	r30, r24
    ee6c:	e0 1b       	sub	r30, r16
    ee6e:	f1 0b       	sbc	r31, r17
    ee70:	e0 34       	cpi	r30, 0x40	; 64
    ee72:	f1 05       	cpc	r31, r1
    ee74:	e0 f5       	brcc	.+120    	; 0xeeee <SBGPCTD_GetSerNum+0x1b0>
			{
				memcpy(pTaskInfo->pBuf->ctdInfo, pTaskInfo->pBuf->bufferRx, (uint16_t)(pChar - pTaskInfo->pBuf->bufferRx));
    ee76:	96 01       	movw	r18, r12
    ee78:	29 5e       	subi	r18, 0xE9	; 233
    ee7a:	3a 4f       	sbci	r19, 0xFA	; 250
    ee7c:	c9 01       	movw	r24, r18
    ee7e:	b8 01       	movw	r22, r16
    ee80:	af 01       	movw	r20, r30
    ee82:	0e 94 1c f0 	call	0x1e038	; 0x1e038 <memcpy>
				strrev(pTaskInfo->pBuf->ctdInfo);
    ee86:	f7 01       	movw	r30, r14
    ee88:	84 81       	ldd	r24, Z+4	; 0x04
    ee8a:	95 81       	ldd	r25, Z+5	; 0x05
    ee8c:	89 5e       	subi	r24, 0xE9	; 233
    ee8e:	9a 4f       	sbci	r25, 0xFA	; 250
    ee90:	0e 94 67 f0 	call	0x1e0ce	; 0x1e0ce <strrev>
				pChar = NULL;
				pChar = strstr_P(pTaskInfo->pBuf->ctdInfo, PSTR(" "));
    ee94:	d7 01       	movw	r26, r14
    ee96:	14 96       	adiw	r26, 0x04	; 4
    ee98:	cd 90       	ld	r12, X+
    ee9a:	dc 90       	ld	r13, X
    ee9c:	15 97       	sbiw	r26, 0x05	; 5
    ee9e:	86 01       	movw	r16, r12
    eea0:	09 5e       	subi	r16, 0xE9	; 233
    eea2:	1a 4f       	sbci	r17, 0xFA	; 250
    eea4:	c8 01       	movw	r24, r16
    eea6:	64 e0       	ldi	r22, 0x04	; 4
    eea8:	7d e0       	ldi	r23, 0x0D	; 13
    eeaa:	0e 94 f5 ef 	call	0x1dfea	; 0x1dfea <strstr_P>
				if((pChar != NULL) && ((uint16_t)(pChar - pTaskInfo->pBuf->ctdInfo) < 16))
    eeae:	00 97       	sbiw	r24, 0x00	; 0
    eeb0:	a9 f0       	breq	.+42     	; 0xeedc <SBGPCTD_GetSerNum+0x19e>
    eeb2:	fc 01       	movw	r30, r24
    eeb4:	e0 1b       	sub	r30, r16
    eeb6:	f1 0b       	sbc	r31, r17
    eeb8:	e0 31       	cpi	r30, 0x10	; 16
    eeba:	f1 05       	cpc	r31, r1
    eebc:	78 f4       	brcc	.+30     	; 0xeedc <SBGPCTD_GetSerNum+0x19e>
				{
					memcpy(pTaskInfo->pBuf->serialNumber, pTaskInfo->pBuf->ctdInfo, (uint16_t)(pChar - pTaskInfo->pBuf->ctdInfo));
    eebe:	96 01       	movw	r18, r12
    eec0:	29 5f       	subi	r18, 0xF9	; 249
    eec2:	3a 4f       	sbci	r19, 0xFA	; 250
    eec4:	c9 01       	movw	r24, r18
    eec6:	b8 01       	movw	r22, r16
    eec8:	af 01       	movw	r20, r30
    eeca:	0e 94 1c f0 	call	0x1e038	; 0x1e038 <memcpy>
					strrev(pTaskInfo->pBuf->serialNumber);
    eece:	f7 01       	movw	r30, r14
    eed0:	84 81       	ldd	r24, Z+4	; 0x04
    eed2:	95 81       	ldd	r25, Z+5	; 0x05
    eed4:	89 5f       	subi	r24, 0xF9	; 249
    eed6:	9a 4f       	sbci	r25, 0xFA	; 250
    eed8:	0e 94 67 f0 	call	0x1e0ce	; 0x1e0ce <strrev>
					retval = SUCCESS;
				}
				strrev(pTaskInfo->pBuf->ctdInfo);
    eedc:	d7 01       	movw	r26, r14
    eede:	14 96       	adiw	r26, 0x04	; 4
    eee0:	8d 91       	ld	r24, X+
    eee2:	9c 91       	ld	r25, X
    eee4:	15 97       	sbiw	r26, 0x05	; 5
    eee6:	89 5e       	subi	r24, 0xE9	; 233
    eee8:	9a 4f       	sbci	r25, 0xFA	; 250
    eeea:	0e 94 67 f0 	call	0x1e0ce	; 0x1e0ce <strrev>
			}
		}
	}

	return retval;
}
    eeee:	8b 2d       	mov	r24, r11
    eef0:	0f 90       	pop	r0
    eef2:	0f 90       	pop	r0
    eef4:	cf 91       	pop	r28
    eef6:	df 91       	pop	r29
    eef8:	1f 91       	pop	r17
    eefa:	0f 91       	pop	r16
    eefc:	ff 90       	pop	r15
    eefe:	ef 90       	pop	r14
    ef00:	df 90       	pop	r13
    ef02:	cf 90       	pop	r12
    ef04:	bf 90       	pop	r11
    ef06:	08 95       	ret

0000ef08 <SBGPCTD_TurnOn>:
	return;
}


uint8_t SBGPCTD_TurnOn(PSEABIRD_GPCTD_TASK pTaskInfo)
{
    ef08:	cf 92       	push	r12
    ef0a:	df 92       	push	r13
    ef0c:	ef 92       	push	r14
    ef0e:	ff 92       	push	r15
    ef10:	0f 93       	push	r16
    ef12:	1f 93       	push	r17
    ef14:	df 93       	push	r29
    ef16:	cf 93       	push	r28
    ef18:	0f 92       	push	r0
    ef1a:	0f 92       	push	r0
    ef1c:	cd b7       	in	r28, 0x3d	; 61
    ef1e:	de b7       	in	r29, 0x3e	; 62
    ef20:	8c 01       	movw	r16, r24
	uint8_t retval = FAIL;
	uint8_t retries = 3;
	uint16_t len = 0;
    ef22:	1a 82       	std	Y+2, r1	; 0x02
    ef24:	19 82       	std	Y+1, r1	; 0x01

	pTaskInfo->pBuf->sampleCTD = FALSE;
    ef26:	dc 01       	movw	r26, r24
    ef28:	14 96       	adiw	r26, 0x04	; 4
    ef2a:	ed 91       	ld	r30, X+
    ef2c:	fc 91       	ld	r31, X
    ef2e:	15 97       	sbiw	r26, 0x05	; 5
    ef30:	e9 5a       	subi	r30, 0xA9	; 169
    ef32:	fa 4f       	sbci	r31, 0xFA	; 250
    ef34:	11 92       	st	Z+, r1
	pTaskInfo->pBuf->powerCTD = FALSE;
    ef36:	10 82       	st	Z, r1

	pTaskInfo->pBuf->reportData.headerReport.repeatCount = 0;
    ef38:	3a 96       	adiw	r30, 0x0a	; 10
    ef3a:	10 82       	st	Z, r1

	EnablePIBModule(pTaskInfo->portNum, TRUE, FALSE);
    ef3c:	11 96       	adiw	r26, 0x01	; 1
    ef3e:	8c 91       	ld	r24, X
    ef40:	6f ef       	ldi	r22, 0xFF	; 255
    ef42:	40 e0       	ldi	r20, 0x00	; 0
    ef44:	0e 94 a2 38 	call	0x7144	; 0x7144 <EnablePIBModule>
    ef48:	53 e0       	ldi	r21, 0x03	; 3
    ef4a:	e5 2e       	mov	r14, r21
	while(retries > 0)
	{
		retries--;
		OSTimeDlyHMSM(0,0,1,0);
		OSuartPutCharWait(pTaskInfo->portNum, 0x0D, 10);
		retval = SBGPCTD_CTD_Rx(pTaskInfo, cmdGPCTD_EOL, &len);
    ef4c:	6e 01       	movw	r12, r28
    ef4e:	08 94       	sec
    ef50:	c1 1c       	adc	r12, r1
    ef52:	d1 1c       	adc	r13, r1
	EnablePIBModule(pTaskInfo->portNum, TRUE, FALSE);

	while(retries > 0)
	{
		retries--;
		OSTimeDlyHMSM(0,0,1,0);
    ef54:	80 e0       	ldi	r24, 0x00	; 0
    ef56:	60 e0       	ldi	r22, 0x00	; 0
    ef58:	41 e0       	ldi	r20, 0x01	; 1
    ef5a:	20 e0       	ldi	r18, 0x00	; 0
    ef5c:	30 e0       	ldi	r19, 0x00	; 0
    ef5e:	0e 94 2a 2e 	call	0x5c54	; 0x5c54 <OSTimeDlyHMSM>
		OSuartPutCharWait(pTaskInfo->portNum, 0x0D, 10);
    ef62:	f8 01       	movw	r30, r16
    ef64:	81 81       	ldd	r24, Z+1	; 0x01
    ef66:	6d e0       	ldi	r22, 0x0D	; 13
    ef68:	4a e0       	ldi	r20, 0x0A	; 10
    ef6a:	50 e0       	ldi	r21, 0x00	; 0
    ef6c:	0e 94 f3 31 	call	0x63e6	; 0x63e6 <OSuartPutCharWait>
		retval = SBGPCTD_CTD_Rx(pTaskInfo, cmdGPCTD_EOL, &len);
    ef70:	c8 01       	movw	r24, r16
    ef72:	68 e9       	ldi	r22, 0x98	; 152
    ef74:	7a e0       	ldi	r23, 0x0A	; 10
    ef76:	a6 01       	movw	r20, r12
    ef78:	0e 94 62 71 	call	0xe2c4	; 0xe2c4 <SBGPCTD_CTD_Rx>
    ef7c:	f8 2e       	mov	r15, r24
		if(retval == SUCCESS)
    ef7e:	ff ef       	ldi	r31, 0xFF	; 255
    ef80:	8f 17       	cp	r24, r31
    ef82:	71 f0       	breq	.+28     	; 0xefa0 <SBGPCTD_TurnOn+0x98>

	EnablePIBModule(pTaskInfo->portNum, TRUE, FALSE);

	while(retries > 0)
	{
		retries--;
    ef84:	ea 94       	dec	r14

	pTaskInfo->pBuf->reportData.headerReport.repeatCount = 0;

	EnablePIBModule(pTaskInfo->portNum, TRUE, FALSE);

	while(retries > 0)
    ef86:	31 f7       	brne	.-52     	; 0xef54 <SBGPCTD_TurnOn+0x4c>
		OSTimeDlyHMSM(0,0,0,100);
		pTaskInfo->pBuf->powerCTD = TRUE;
	}

	return retval;
}
    ef88:	8f 2d       	mov	r24, r15
    ef8a:	0f 90       	pop	r0
    ef8c:	0f 90       	pop	r0
    ef8e:	cf 91       	pop	r28
    ef90:	df 91       	pop	r29
    ef92:	1f 91       	pop	r17
    ef94:	0f 91       	pop	r16
    ef96:	ff 90       	pop	r15
    ef98:	ef 90       	pop	r14
    ef9a:	df 90       	pop	r13
    ef9c:	cf 90       	pop	r12
    ef9e:	08 95       	ret
//	if(retval == SUCCESS)
//		SBGPCTD_StopSample(pTaskInfo);

	if(retval == SUCCESS)
	{
		SBGPCTD_GetSerNum(pTaskInfo);
    efa0:	c8 01       	movw	r24, r16
    efa2:	0e 94 9f 76 	call	0xed3e	; 0xed3e <SBGPCTD_GetSerNum>
		OSTimeDlyHMSM(0,0,0,100);
    efa6:	80 e0       	ldi	r24, 0x00	; 0
    efa8:	60 e0       	ldi	r22, 0x00	; 0
    efaa:	40 e0       	ldi	r20, 0x00	; 0
    efac:	24 e6       	ldi	r18, 0x64	; 100
    efae:	30 e0       	ldi	r19, 0x00	; 0
    efb0:	0e 94 2a 2e 	call	0x5c54	; 0x5c54 <OSTimeDlyHMSM>
		pTaskInfo->pBuf->powerCTD = TRUE;
    efb4:	d8 01       	movw	r26, r16
    efb6:	14 96       	adiw	r26, 0x04	; 4
    efb8:	ed 91       	ld	r30, X+
    efba:	fc 91       	ld	r31, X
    efbc:	15 97       	sbiw	r26, 0x05	; 5
    efbe:	e8 5a       	subi	r30, 0xA8	; 168
    efc0:	fa 4f       	sbci	r31, 0xFA	; 250
    efc2:	f0 82       	st	Z, r15
    efc4:	e1 cf       	rjmp	.-62     	; 0xef88 <SBGPCTD_TurnOn+0x80>

0000efc6 <SBGPCTD_ParseCommand>:
	return retval;
}


uint8_t SBGPCTD_ParseCommand(PSEABIRD_GPCTD_TASK pTaskInfo, char command, char* cmdParams)
{
    efc6:	8f 92       	push	r8
    efc8:	9f 92       	push	r9
    efca:	af 92       	push	r10
    efcc:	bf 92       	push	r11
    efce:	cf 92       	push	r12
    efd0:	df 92       	push	r13
    efd2:	ef 92       	push	r14
    efd4:	ff 92       	push	r15
    efd6:	0f 93       	push	r16
    efd8:	1f 93       	push	r17
    efda:	df 93       	push	r29
    efdc:	cf 93       	push	r28
    efde:	00 d0       	rcall	.+0      	; 0xefe0 <SBGPCTD_ParseCommand+0x1a>
    efe0:	0f 92       	push	r0
    efe2:	cd b7       	in	r28, 0x3d	; 61
    efe4:	de b7       	in	r29, 0x3e	; 62
    efe6:	5c 01       	movw	r10, r24
    efe8:	06 2f       	mov	r16, r22
    efea:	5c 83       	std	Y+4, r21	; 0x04
    efec:	4b 83       	std	Y+3, r20	; 0x03
	uint8_t paramCount = 0;
	char* result = NULL;
    efee:	1a 82       	std	Y+2, r1	; 0x02
    eff0:	19 82       	std	Y+1, r1	; 0x01
	uint8_t retval = FAIL;		//Missing or Invalid Parameter
	uint16_t newVal = 0;
	BOOL statusResponse = TRUE;

	memset(pTaskInfo->pBuf->tokenSeparatorList, 0, MAX_TOKEN_SEPARATORS);
    eff2:	dc 01       	movw	r26, r24
    eff4:	14 96       	adiw	r26, 0x04	; 4
    eff6:	8d 91       	ld	r24, X+
    eff8:	9c 91       	ld	r25, X
    effa:	15 97       	sbiw	r26, 0x05	; 5
    effc:	84 58       	subi	r24, 0x84	; 132
    effe:	98 4f       	sbci	r25, 0xF8	; 248
    f000:	fc 01       	movw	r30, r24
    f002:	84 e1       	ldi	r24, 0x14	; 20
    f004:	df 01       	movw	r26, r30
    f006:	1d 92       	st	X+, r1
    f008:	8a 95       	dec	r24
    f00a:	e9 f7       	brne	.-6      	; 0xf006 <SBGPCTD_ParseCommand+0x40>
	strcat_P(pTaskInfo->pBuf->tokenSeparatorList, tokenListConsole);
    f00c:	f5 01       	movw	r30, r10
    f00e:	84 81       	ldd	r24, Z+4	; 0x04
    f010:	95 81       	ldd	r25, Z+5	; 0x05
    f012:	84 58       	subi	r24, 0x84	; 132
    f014:	98 4f       	sbci	r25, 0xF8	; 248
    f016:	68 e3       	ldi	r22, 0x38	; 56
    f018:	72 e0       	ldi	r23, 0x02	; 2
    f01a:	0e 94 b4 ef 	call	0x1df68	; 0x1df68 <strcat_P>

	switch(command)
    f01e:	60 2f       	mov	r22, r16
    f020:	70 e0       	ldi	r23, 0x00	; 0
    f022:	fb 01       	movw	r30, r22
    f024:	e1 54       	subi	r30, 0x41	; 65
    f026:	f0 40       	sbci	r31, 0x00	; 0
    f028:	ea 33       	cpi	r30, 0x3A	; 58
    f02a:	f1 05       	cpc	r31, r1
    f02c:	08 f0       	brcs	.+2      	; 0xf030 <SBGPCTD_ParseCommand+0x6a>
    f02e:	cd c2       	rjmp	.+1434   	; 0xf5ca <SBGPCTD_ParseCommand+0x604>
    f030:	ee 58       	subi	r30, 0x8E	; 142
    f032:	ff 4f       	sbci	r31, 0xFF	; 255
    f034:	ee 0f       	add	r30, r30
    f036:	ff 1f       	adc	r31, r31
    f038:	05 90       	lpm	r0, Z+
    f03a:	f4 91       	lpm	r31, Z+
    f03c:	e0 2d       	mov	r30, r0
    f03e:	19 94       	eijmp
	{
	case 'o':
	case 'O':
		//Power On
		retval = SBGPCTD_TurnOn(pTaskInfo);
    f040:	c5 01       	movw	r24, r10
    f042:	0e 94 84 77 	call	0xef08	; 0xef08 <SBGPCTD_TurnOn>
    f046:	c1 c2       	rjmp	.+1410   	; 0xf5ca <SBGPCTD_ParseCommand+0x604>
		break;
	case 'f':
	case 'F':
		//Power Off
		retval = SBGPCTD_TurnOff(pTaskInfo);
    f048:	c5 01       	movw	r24, r10
    f04a:	0e 94 d2 6c 	call	0xd9a4	; 0xd9a4 <SBGPCTD_TurnOff>
    f04e:	c0 c0       	rjmp	.+384    	; 0xf1d0 <SBGPCTD_ParseCommand+0x20a>
		pTaskInfo->pBuf->sleeping = FALSE;
		break;
	case 'r':
	case 'R':
		//Start Sampling
		if(pTaskInfo->pBuf->powerCTD == FALSE)
    f050:	d5 01       	movw	r26, r10
    f052:	14 96       	adiw	r26, 0x04	; 4
    f054:	ed 91       	ld	r30, X+
    f056:	fc 91       	ld	r31, X
    f058:	15 97       	sbiw	r26, 0x05	; 5
    f05a:	e8 5a       	subi	r30, 0xA8	; 168
    f05c:	fa 4f       	sbci	r31, 0xFA	; 250
    f05e:	80 81       	ld	r24, Z
    f060:	88 23       	and	r24, r24
    f062:	19 f4       	brne	.+6      	; 0xf06a <SBGPCTD_ParseCommand+0xa4>
			retval = SBGPCTD_TurnOn(pTaskInfo);
    f064:	c5 01       	movw	r24, r10
    f066:	0e 94 84 77 	call	0xef08	; 0xef08 <SBGPCTD_TurnOn>

		if(pTaskInfo->pBuf->sampleCTD == TRUE)
    f06a:	d5 01       	movw	r26, r10
    f06c:	14 96       	adiw	r26, 0x04	; 4
    f06e:	ed 91       	ld	r30, X+
    f070:	fc 91       	ld	r31, X
    f072:	15 97       	sbiw	r26, 0x05	; 5
    f074:	e9 5a       	subi	r30, 0xA9	; 169
    f076:	fa 4f       	sbci	r31, 0xFA	; 250
    f078:	80 81       	ld	r24, Z
    f07a:	8f 3f       	cpi	r24, 0xFF	; 255
    f07c:	51 f4       	brne	.+20     	; 0xf092 <SBGPCTD_ParseCommand+0xcc>
		{
			retval = SBGPCTD_StopSample(pTaskInfo);
    f07e:	c5 01       	movw	r24, r10
    f080:	0e 94 0b 75 	call	0xea16	; 0xea16 <SBGPCTD_StopSample>
			OSTimeDlyHMSM(0,0,1,0);
    f084:	80 e0       	ldi	r24, 0x00	; 0
    f086:	60 e0       	ldi	r22, 0x00	; 0
    f088:	41 e0       	ldi	r20, 0x01	; 1
    f08a:	20 e0       	ldi	r18, 0x00	; 0
    f08c:	30 e0       	ldi	r19, 0x00	; 0
    f08e:	0e 94 2a 2e 	call	0x5c54	; 0x5c54 <OSTimeDlyHMSM>
		}

		memset(pTaskInfo->pBuf->tokenSeparatorList, 0, MAX_TOKEN_SEPARATORS);
    f092:	f5 01       	movw	r30, r10
    f094:	84 81       	ldd	r24, Z+4	; 0x04
    f096:	95 81       	ldd	r25, Z+5	; 0x05
    f098:	84 58       	subi	r24, 0x84	; 132
    f09a:	98 4f       	sbci	r25, 0xF8	; 248
    f09c:	fc 01       	movw	r30, r24
    f09e:	84 e1       	ldi	r24, 0x14	; 20
    f0a0:	df 01       	movw	r26, r30
    f0a2:	1d 92       	st	X+, r1
    f0a4:	8a 95       	dec	r24
    f0a6:	e9 f7       	brne	.-6      	; 0xf0a2 <SBGPCTD_ParseCommand+0xdc>
		strcat_P(pTaskInfo->pBuf->tokenSeparatorList, tokenListConsole);
    f0a8:	f5 01       	movw	r30, r10
    f0aa:	84 81       	ldd	r24, Z+4	; 0x04
    f0ac:	95 81       	ldd	r25, Z+5	; 0x05
    f0ae:	84 58       	subi	r24, 0x84	; 132
    f0b0:	98 4f       	sbci	r25, 0xF8	; 248
    f0b2:	68 e3       	ldi	r22, 0x38	; 56
    f0b4:	72 e0       	ldi	r23, 0x02	; 2
    f0b6:	0e 94 b4 ef 	call	0x1df68	; 0x1df68 <strcat_P>

		result = strtok_r(cmdParams, pTaskInfo->pBuf->tokenSeparatorList, &cmdParams);
    f0ba:	d5 01       	movw	r26, r10
    f0bc:	14 96       	adiw	r26, 0x04	; 4
    f0be:	6d 91       	ld	r22, X+
    f0c0:	7c 91       	ld	r23, X
    f0c2:	15 97       	sbiw	r26, 0x05	; 5
    f0c4:	64 58       	subi	r22, 0x84	; 132
    f0c6:	78 4f       	sbci	r23, 0xF8	; 248
    f0c8:	8e 01       	movw	r16, r28
    f0ca:	0d 5f       	subi	r16, 0xFD	; 253
    f0cc:	1f 4f       	sbci	r17, 0xFF	; 255
    f0ce:	8b 81       	ldd	r24, Y+3	; 0x03
    f0d0:	9c 81       	ldd	r25, Y+4	; 0x04
    f0d2:	a8 01       	movw	r20, r16
    f0d4:	0e 94 a0 f0 	call	0x1e140	; 0x1e140 <strtok_r>
    f0d8:	9a 83       	std	Y+2, r25	; 0x02
    f0da:	89 83       	std	Y+1, r24	; 0x01
    f0dc:	ee 24       	eor	r14, r14
		while((result != NULL) && (paramCount < 3))
		{
			newVal = (uint16_t)(strtol(result, &result, 0));
    f0de:	4e 01       	movw	r8, r28
    f0e0:	08 94       	sec
    f0e2:	81 1c       	adc	r8, r1
    f0e4:	91 1c       	adc	r9, r1
			case PARAM_DEST:
				SBGPCTD_SetPacketDest(pTaskInfo, newVal);
				break;
			}
			paramCount++;
			result = strtok_r(NULL, pTaskInfo->pBuf->tokenSeparatorList, &cmdParams);
    f0e6:	d0 2e       	mov	r13, r16
    f0e8:	01 2f       	mov	r16, r17
    f0ea:	29 c0       	rjmp	.+82     	; 0xf13e <SBGPCTD_ParseCommand+0x178>
		strcat_P(pTaskInfo->pBuf->tokenSeparatorList, tokenListConsole);

		result = strtok_r(cmdParams, pTaskInfo->pBuf->tokenSeparatorList, &cmdParams);
		while((result != NULL) && (paramCount < 3))
		{
			newVal = (uint16_t)(strtol(result, &result, 0));
    f0ec:	b4 01       	movw	r22, r8
    f0ee:	40 e0       	ldi	r20, 0x00	; 0
    f0f0:	50 e0       	ldi	r21, 0x00	; 0
    f0f2:	0e 94 2a ee 	call	0x1dc54	; 0x1dc54 <strtol>
			switch(paramCount)
    f0f6:	b1 e0       	ldi	r27, 0x01	; 1
    f0f8:	eb 16       	cp	r14, r27
    f0fa:	51 f0       	breq	.+20     	; 0xf110 <SBGPCTD_ParseCommand+0x14a>
    f0fc:	eb 16       	cp	r14, r27
    f0fe:	20 f0       	brcs	.+8      	; 0xf108 <SBGPCTD_ParseCommand+0x142>
    f100:	e2 e0       	ldi	r30, 0x02	; 2
    f102:	ee 16       	cp	r14, r30
    f104:	61 f4       	brne	.+24     	; 0xf11e <SBGPCTD_ParseCommand+0x158>
    f106:	08 c0       	rjmp	.+16     	; 0xf118 <SBGPCTD_ParseCommand+0x152>
			{
			case PARAM_PERIOD:
				SBGPCTD_SetPeriod(pTaskInfo, newVal);
    f108:	c5 01       	movw	r24, r10
    f10a:	0e 94 b6 73 	call	0xe76c	; 0xe76c <SBGPCTD_SetPeriod>
    f10e:	07 c0       	rjmp	.+14     	; 0xf11e <SBGPCTD_ParseCommand+0x158>
				break;
			case PARAM_SIZE:
				SBGPCTD_SetPacketSize(pTaskInfo, newVal);
    f110:	c5 01       	movw	r24, r10
    f112:	0e 94 b5 6c 	call	0xd96a	; 0xd96a <SBGPCTD_SetPacketSize>
    f116:	03 c0       	rjmp	.+6      	; 0xf11e <SBGPCTD_ParseCommand+0x158>
				break;
			case PARAM_DEST:
				SBGPCTD_SetPacketDest(pTaskInfo, newVal);
    f118:	c5 01       	movw	r24, r10
    f11a:	0e 94 8a 6c 	call	0xd914	; 0xd914 <SBGPCTD_SetPacketDest>
				break;
			}
			paramCount++;
    f11e:	e3 94       	inc	r14
			result = strtok_r(NULL, pTaskInfo->pBuf->tokenSeparatorList, &cmdParams);
    f120:	d5 01       	movw	r26, r10
    f122:	14 96       	adiw	r26, 0x04	; 4
    f124:	6d 91       	ld	r22, X+
    f126:	7c 91       	ld	r23, X
    f128:	15 97       	sbiw	r26, 0x05	; 5
    f12a:	64 58       	subi	r22, 0x84	; 132
    f12c:	78 4f       	sbci	r23, 0xF8	; 248
    f12e:	80 e0       	ldi	r24, 0x00	; 0
    f130:	90 e0       	ldi	r25, 0x00	; 0
    f132:	4d 2d       	mov	r20, r13
    f134:	50 2f       	mov	r21, r16
    f136:	0e 94 a0 f0 	call	0x1e140	; 0x1e140 <strtok_r>
    f13a:	9a 83       	std	Y+2, r25	; 0x02
    f13c:	89 83       	std	Y+1, r24	; 0x01

		memset(pTaskInfo->pBuf->tokenSeparatorList, 0, MAX_TOKEN_SEPARATORS);
		strcat_P(pTaskInfo->pBuf->tokenSeparatorList, tokenListConsole);

		result = strtok_r(cmdParams, pTaskInfo->pBuf->tokenSeparatorList, &cmdParams);
		while((result != NULL) && (paramCount < 3))
    f13e:	89 81       	ldd	r24, Y+1	; 0x01
    f140:	9a 81       	ldd	r25, Y+2	; 0x02
    f142:	00 97       	sbiw	r24, 0x00	; 0
    f144:	19 f0       	breq	.+6      	; 0xf14c <SBGPCTD_ParseCommand+0x186>
    f146:	b3 e0       	ldi	r27, 0x03	; 3
    f148:	eb 16       	cp	r14, r27
    f14a:	81 f6       	brne	.-96     	; 0xf0ec <SBGPCTD_ParseCommand+0x126>
				break;
			}
			paramCount++;
			result = strtok_r(NULL, pTaskInfo->pBuf->tokenSeparatorList, &cmdParams);
		}
		retval = SBGPCTD_SetTime(pTaskInfo);
    f14c:	c5 01       	movw	r24, r10
    f14e:	0e 94 eb 71 	call	0xe3d6	; 0xe3d6 <SBGPCTD_SetTime>

		if(pTaskInfo->pBuf->offTime != 0)
    f152:	f5 01       	movw	r30, r10
    f154:	c4 80       	ldd	r12, Z+4	; 0x04
    f156:	d5 80       	ldd	r13, Z+5	; 0x05
    f158:	29 e1       	ldi	r18, 0x19	; 25
    f15a:	39 e0       	ldi	r19, 0x09	; 9
    f15c:	c2 0e       	add	r12, r18
    f15e:	d3 1e       	adc	r13, r19
    f160:	d6 01       	movw	r26, r12
    f162:	4d 91       	ld	r20, X+
    f164:	5c 91       	ld	r21, X
    f166:	e7 ee       	ldi	r30, 0xE7	; 231
    f168:	f6 ef       	ldi	r31, 0xF6	; 246
    f16a:	ce 0e       	add	r12, r30
    f16c:	df 1e       	adc	r13, r31
    f16e:	41 15       	cp	r20, r1
    f170:	51 05       	cpc	r21, r1
    f172:	39 f1       	breq	.+78     	; 0xf1c2 <SBGPCTD_ParseCommand+0x1fc>
			pTaskInfo->pBuf->turnBackOnTime = (pTaskInfo->pBuf->samplePacketSize * pTaskInfo->pBuf->sampleRate) + pTaskInfo->pBuf->offTime + getsecondtick();
    f174:	f6 01       	movw	r30, r12
    f176:	ed 5f       	subi	r30, 0xFD	; 253
    f178:	fa 4f       	sbci	r31, 0xFA	; 250
    f17a:	21 e0       	ldi	r18, 0x01	; 1
    f17c:	35 e0       	ldi	r19, 0x05	; 5
    f17e:	c2 0e       	add	r12, r18
    f180:	d3 1e       	adc	r13, r19
    f182:	d6 01       	movw	r26, r12
    f184:	2d 91       	ld	r18, X+
    f186:	3c 91       	ld	r19, X
    f188:	80 81       	ld	r24, Z
    f18a:	91 81       	ldd	r25, Z+1	; 0x01
    f18c:	28 9f       	mul	r18, r24
    f18e:	70 01       	movw	r14, r0
    f190:	29 9f       	mul	r18, r25
    f192:	f0 0c       	add	r15, r0
    f194:	38 9f       	mul	r19, r24
    f196:	f0 0c       	add	r15, r0
    f198:	11 24       	eor	r1, r1
    f19a:	e4 0e       	add	r14, r20
    f19c:	f5 1e       	adc	r15, r21
    f19e:	00 e0       	ldi	r16, 0x00	; 0
    f1a0:	10 e0       	ldi	r17, 0x00	; 0
    f1a2:	0e 94 23 34 	call	0x6846	; 0x6846 <getsecondtick>
    f1a6:	ea e1       	ldi	r30, 0x1A	; 26
    f1a8:	f4 e0       	ldi	r31, 0x04	; 4
    f1aa:	ce 0e       	add	r12, r30
    f1ac:	df 1e       	adc	r13, r31
    f1ae:	e6 0e       	add	r14, r22
    f1b0:	f7 1e       	adc	r15, r23
    f1b2:	08 1f       	adc	r16, r24
    f1b4:	19 1f       	adc	r17, r25
    f1b6:	d6 01       	movw	r26, r12
    f1b8:	ed 92       	st	X+, r14
    f1ba:	fd 92       	st	X+, r15
    f1bc:	0d 93       	st	X+, r16
    f1be:	1c 93       	st	X, r17
    f1c0:	13 97       	sbiw	r26, 0x03	; 3

		retval = SBGPCTD_StartSample(pTaskInfo);
    f1c2:	c5 01       	movw	r24, r10
    f1c4:	0e 94 3a 76 	call	0xec74	; 0xec74 <SBGPCTD_StartSample>
    f1c8:	00 c2       	rjmp	.+1024   	; 0xf5ca <SBGPCTD_ParseCommand+0x604>

		break;
	case 'x':
	case 'X':
		//Stop Sampling
		retval = SBGPCTD_StopSample(pTaskInfo);
    f1ca:	c5 01       	movw	r24, r10
    f1cc:	0e 94 0b 75 	call	0xea16	; 0xea16 <SBGPCTD_StopSample>
		pTaskInfo->pBuf->sleeping = FALSE;
    f1d0:	d5 01       	movw	r26, r10
    f1d2:	14 96       	adiw	r26, 0x04	; 4
    f1d4:	ed 91       	ld	r30, X+
    f1d6:	fc 91       	ld	r31, X
    f1d8:	15 97       	sbiw	r26, 0x05	; 5
    f1da:	e1 5e       	subi	r30, 0xE1	; 225
    f1dc:	f6 4f       	sbci	r31, 0xF6	; 246
    f1de:	10 82       	st	Z, r1
    f1e0:	f4 c1       	rjmp	.+1000   	; 0xf5ca <SBGPCTD_ParseCommand+0x604>
		break;
	case 'p':
	case 'P':
		//Set default sample interval
		if(pTaskInfo->pBuf->powerCTD == FALSE)
    f1e2:	d5 01       	movw	r26, r10
    f1e4:	14 96       	adiw	r26, 0x04	; 4
    f1e6:	ed 91       	ld	r30, X+
    f1e8:	fc 91       	ld	r31, X
    f1ea:	15 97       	sbiw	r26, 0x05	; 5
    f1ec:	e8 5a       	subi	r30, 0xA8	; 168
    f1ee:	fa 4f       	sbci	r31, 0xFA	; 250
    f1f0:	80 81       	ld	r24, Z
    f1f2:	88 23       	and	r24, r24
    f1f4:	19 f4       	brne	.+6      	; 0xf1fc <SBGPCTD_ParseCommand+0x236>
			retval = SBGPCTD_TurnOn(pTaskInfo);
    f1f6:	c5 01       	movw	r24, r10
    f1f8:	0e 94 84 77 	call	0xef08	; 0xef08 <SBGPCTD_TurnOn>

		memset(pTaskInfo->pBuf->tokenSeparatorList, 0, MAX_TOKEN_SEPARATORS);
    f1fc:	f5 01       	movw	r30, r10
    f1fe:	84 81       	ldd	r24, Z+4	; 0x04
    f200:	95 81       	ldd	r25, Z+5	; 0x05
    f202:	84 58       	subi	r24, 0x84	; 132
    f204:	98 4f       	sbci	r25, 0xF8	; 248
    f206:	fc 01       	movw	r30, r24
    f208:	84 e1       	ldi	r24, 0x14	; 20
    f20a:	df 01       	movw	r26, r30
    f20c:	1d 92       	st	X+, r1
    f20e:	8a 95       	dec	r24
    f210:	e9 f7       	brne	.-6      	; 0xf20c <SBGPCTD_ParseCommand+0x246>
		strcat_P(pTaskInfo->pBuf->tokenSeparatorList, tokenListConsole);
    f212:	f5 01       	movw	r30, r10
    f214:	84 81       	ldd	r24, Z+4	; 0x04
    f216:	95 81       	ldd	r25, Z+5	; 0x05
    f218:	84 58       	subi	r24, 0x84	; 132
    f21a:	98 4f       	sbci	r25, 0xF8	; 248
    f21c:	68 e3       	ldi	r22, 0x38	; 56
    f21e:	72 e0       	ldi	r23, 0x02	; 2
    f220:	0e 94 b4 ef 	call	0x1df68	; 0x1df68 <strcat_P>

		result = strtok_r(result, pTaskInfo->pBuf->tokenSeparatorList, &cmdParams);
    f224:	d5 01       	movw	r26, r10
    f226:	14 96       	adiw	r26, 0x04	; 4
    f228:	6d 91       	ld	r22, X+
    f22a:	7c 91       	ld	r23, X
    f22c:	15 97       	sbiw	r26, 0x05	; 5
    f22e:	64 58       	subi	r22, 0x84	; 132
    f230:	78 4f       	sbci	r23, 0xF8	; 248
    f232:	89 81       	ldd	r24, Y+1	; 0x01
    f234:	9a 81       	ldd	r25, Y+2	; 0x02
    f236:	ae 01       	movw	r20, r28
    f238:	4d 5f       	subi	r20, 0xFD	; 253
    f23a:	5f 4f       	sbci	r21, 0xFF	; 255
    f23c:	0e 94 a0 f0 	call	0x1e140	; 0x1e140 <strtok_r>
    f240:	9a 83       	std	Y+2, r25	; 0x02
    f242:	89 83       	std	Y+1, r24	; 0x01
		if(result != NULL)
    f244:	00 97       	sbiw	r24, 0x00	; 0
    f246:	09 f4       	brne	.+2      	; 0xf24a <SBGPCTD_ParseCommand+0x284>
    f248:	c0 c1       	rjmp	.+896    	; 0xf5ca <SBGPCTD_ParseCommand+0x604>
		{
			newVal = (uint16_t)(strtol(result, &result, 0));
    f24a:	be 01       	movw	r22, r28
    f24c:	6f 5f       	subi	r22, 0xFF	; 255
    f24e:	7f 4f       	sbci	r23, 0xFF	; 255
    f250:	40 e0       	ldi	r20, 0x00	; 0
    f252:	50 e0       	ldi	r21, 0x00	; 0
    f254:	0e 94 2a ee 	call	0x1dc54	; 0x1dc54 <strtol>
    f258:	9b 01       	movw	r18, r22
    f25a:	ac 01       	movw	r20, r24
			retval = SBGPCTD_SetPeriod(pTaskInfo, newVal);
    f25c:	c5 01       	movw	r24, r10
    f25e:	b9 01       	movw	r22, r18
    f260:	0e 94 b6 73 	call	0xe76c	; 0xe76c <SBGPCTD_SetPeriod>
    f264:	b2 c1       	rjmp	.+868    	; 0xf5ca <SBGPCTD_ParseCommand+0x604>
		}
		break;
	case 'z':
	case 'Z':
		//set default sample block size
		memset(pTaskInfo->pBuf->tokenSeparatorList, 0, MAX_TOKEN_SEPARATORS);
    f266:	f5 01       	movw	r30, r10
    f268:	84 81       	ldd	r24, Z+4	; 0x04
    f26a:	95 81       	ldd	r25, Z+5	; 0x05
    f26c:	84 58       	subi	r24, 0x84	; 132
    f26e:	98 4f       	sbci	r25, 0xF8	; 248
    f270:	fc 01       	movw	r30, r24
    f272:	84 e1       	ldi	r24, 0x14	; 20
    f274:	df 01       	movw	r26, r30
    f276:	1d 92       	st	X+, r1
    f278:	8a 95       	dec	r24
    f27a:	e9 f7       	brne	.-6      	; 0xf276 <SBGPCTD_ParseCommand+0x2b0>
		strcat_P(pTaskInfo->pBuf->tokenSeparatorList, tokenListConsole);
    f27c:	f5 01       	movw	r30, r10
    f27e:	84 81       	ldd	r24, Z+4	; 0x04
    f280:	95 81       	ldd	r25, Z+5	; 0x05
    f282:	84 58       	subi	r24, 0x84	; 132
    f284:	98 4f       	sbci	r25, 0xF8	; 248
    f286:	68 e3       	ldi	r22, 0x38	; 56
    f288:	72 e0       	ldi	r23, 0x02	; 2
    f28a:	0e 94 b4 ef 	call	0x1df68	; 0x1df68 <strcat_P>

		result = strtok_r(result, pTaskInfo->pBuf->tokenSeparatorList, &cmdParams);
    f28e:	d5 01       	movw	r26, r10
    f290:	14 96       	adiw	r26, 0x04	; 4
    f292:	6d 91       	ld	r22, X+
    f294:	7c 91       	ld	r23, X
    f296:	15 97       	sbiw	r26, 0x05	; 5
    f298:	64 58       	subi	r22, 0x84	; 132
    f29a:	78 4f       	sbci	r23, 0xF8	; 248
    f29c:	89 81       	ldd	r24, Y+1	; 0x01
    f29e:	9a 81       	ldd	r25, Y+2	; 0x02
    f2a0:	ae 01       	movw	r20, r28
    f2a2:	4d 5f       	subi	r20, 0xFD	; 253
    f2a4:	5f 4f       	sbci	r21, 0xFF	; 255
    f2a6:	0e 94 a0 f0 	call	0x1e140	; 0x1e140 <strtok_r>
    f2aa:	9a 83       	std	Y+2, r25	; 0x02
    f2ac:	89 83       	std	Y+1, r24	; 0x01
		if(result != NULL)
    f2ae:	00 97       	sbiw	r24, 0x00	; 0
    f2b0:	09 f4       	brne	.+2      	; 0xf2b4 <SBGPCTD_ParseCommand+0x2ee>
    f2b2:	8b c1       	rjmp	.+790    	; 0xf5ca <SBGPCTD_ParseCommand+0x604>
		{
			newVal = (uint16_t)(strtol(result, &result, 0));
    f2b4:	be 01       	movw	r22, r28
    f2b6:	6f 5f       	subi	r22, 0xFF	; 255
    f2b8:	7f 4f       	sbci	r23, 0xFF	; 255
    f2ba:	40 e0       	ldi	r20, 0x00	; 0
    f2bc:	50 e0       	ldi	r21, 0x00	; 0
    f2be:	0e 94 2a ee 	call	0x1dc54	; 0x1dc54 <strtol>
			retval = SBGPCTD_SetPacketSize(pTaskInfo, newVal);
    f2c2:	c5 01       	movw	r24, r10
    f2c4:	0e 94 b5 6c 	call	0xd96a	; 0xd96a <SBGPCTD_SetPacketSize>
    f2c8:	80 c1       	rjmp	.+768    	; 0xf5ca <SBGPCTD_ParseCommand+0x604>
		}
		break;
	case 'd':
	case 'D':
		//set default destination
		memset(pTaskInfo->pBuf->tokenSeparatorList, 0, MAX_TOKEN_SEPARATORS);
    f2ca:	f5 01       	movw	r30, r10
    f2cc:	84 81       	ldd	r24, Z+4	; 0x04
    f2ce:	95 81       	ldd	r25, Z+5	; 0x05
    f2d0:	84 58       	subi	r24, 0x84	; 132
    f2d2:	98 4f       	sbci	r25, 0xF8	; 248
    f2d4:	fc 01       	movw	r30, r24
    f2d6:	84 e1       	ldi	r24, 0x14	; 20
    f2d8:	df 01       	movw	r26, r30
    f2da:	1d 92       	st	X+, r1
    f2dc:	8a 95       	dec	r24
    f2de:	e9 f7       	brne	.-6      	; 0xf2da <SBGPCTD_ParseCommand+0x314>
		strcat_P(pTaskInfo->pBuf->tokenSeparatorList, tokenListConsole);
    f2e0:	f5 01       	movw	r30, r10
    f2e2:	84 81       	ldd	r24, Z+4	; 0x04
    f2e4:	95 81       	ldd	r25, Z+5	; 0x05
    f2e6:	84 58       	subi	r24, 0x84	; 132
    f2e8:	98 4f       	sbci	r25, 0xF8	; 248
    f2ea:	68 e3       	ldi	r22, 0x38	; 56
    f2ec:	72 e0       	ldi	r23, 0x02	; 2
    f2ee:	0e 94 b4 ef 	call	0x1df68	; 0x1df68 <strcat_P>

		result = strtok_r(result, pTaskInfo->pBuf->tokenSeparatorList, &cmdParams);
    f2f2:	d5 01       	movw	r26, r10
    f2f4:	14 96       	adiw	r26, 0x04	; 4
    f2f6:	6d 91       	ld	r22, X+
    f2f8:	7c 91       	ld	r23, X
    f2fa:	15 97       	sbiw	r26, 0x05	; 5
    f2fc:	64 58       	subi	r22, 0x84	; 132
    f2fe:	78 4f       	sbci	r23, 0xF8	; 248
    f300:	89 81       	ldd	r24, Y+1	; 0x01
    f302:	9a 81       	ldd	r25, Y+2	; 0x02
    f304:	ae 01       	movw	r20, r28
    f306:	4d 5f       	subi	r20, 0xFD	; 253
    f308:	5f 4f       	sbci	r21, 0xFF	; 255
    f30a:	0e 94 a0 f0 	call	0x1e140	; 0x1e140 <strtok_r>
    f30e:	9a 83       	std	Y+2, r25	; 0x02
    f310:	89 83       	std	Y+1, r24	; 0x01
		if(result != NULL)
    f312:	00 97       	sbiw	r24, 0x00	; 0
    f314:	09 f4       	brne	.+2      	; 0xf318 <SBGPCTD_ParseCommand+0x352>
    f316:	59 c1       	rjmp	.+690    	; 0xf5ca <SBGPCTD_ParseCommand+0x604>
		{
			newVal = (uint16_t)(strtol(result, &result, 0));
    f318:	be 01       	movw	r22, r28
    f31a:	6f 5f       	subi	r22, 0xFF	; 255
    f31c:	7f 4f       	sbci	r23, 0xFF	; 255
    f31e:	40 e0       	ldi	r20, 0x00	; 0
    f320:	50 e0       	ldi	r21, 0x00	; 0
    f322:	0e 94 2a ee 	call	0x1dc54	; 0x1dc54 <strtol>
    f326:	9b 01       	movw	r18, r22
    f328:	ac 01       	movw	r20, r24
			retval = SBGPCTD_SetPacketDest(pTaskInfo, newVal);
    f32a:	c5 01       	movw	r24, r10
    f32c:	b9 01       	movw	r22, r18
    f32e:	0e 94 8a 6c 	call	0xd914	; 0xd914 <SBGPCTD_SetPacketDest>
    f332:	4b c1       	rjmp	.+662    	; 0xf5ca <SBGPCTD_ParseCommand+0x604>
		}
		break;
	case 'i':
	case 'I':
		if(pTaskInfo->pBuf->powerCTD == FALSE)
    f334:	d5 01       	movw	r26, r10
    f336:	14 96       	adiw	r26, 0x04	; 4
    f338:	ed 91       	ld	r30, X+
    f33a:	fc 91       	ld	r31, X
    f33c:	15 97       	sbiw	r26, 0x05	; 5
    f33e:	e8 5a       	subi	r30, 0xA8	; 168
    f340:	fa 4f       	sbci	r31, 0xFA	; 250
    f342:	80 81       	ld	r24, Z
    f344:	88 23       	and	r24, r24
    f346:	19 f4       	brne	.+6      	; 0xf34e <SBGPCTD_ParseCommand+0x388>
			retval = SBGPCTD_TurnOn(pTaskInfo);
    f348:	c5 01       	movw	r24, r10
    f34a:	0e 94 84 77 	call	0xef08	; 0xef08 <SBGPCTD_TurnOn>

		//Return Serial Number and Version information
		retval = SBGPCTD_Id(pTaskInfo);
    f34e:	c5 01       	movw	r24, r10
    f350:	0e 94 58 6a 	call	0xd4b0	; 0xd4b0 <SBGPCTD_Id>
    f354:	08 2f       	mov	r16, r24
		statusResponse = FALSE;
		pTaskInfo->pBuf->responseInfo.status = CONSOLE_RESPONSE_OK;
    f356:	d5 01       	movw	r26, r10
    f358:	14 96       	adiw	r26, 0x04	; 4
    f35a:	ed 91       	ld	r30, X+
    f35c:	fc 91       	ld	r31, X
    f35e:	15 97       	sbiw	r26, 0x05	; 5
    f360:	eb 58       	subi	r30, 0x8B	; 139
    f362:	f8 4f       	sbci	r31, 0xF8	; 248
    f364:	81 e0       	ldi	r24, 0x01	; 1
    f366:	bd c0       	rjmp	.+378    	; 0xf4e2 <SBGPCTD_ParseCommand+0x51c>
	case 'S':
		//Return CTD operating Status -- don't need to do anything here
		break;
	case 'y':
	case 'Y':
		memset(pTaskInfo->pBuf->tokenSeparatorList, 0, MAX_TOKEN_SEPARATORS);
    f368:	f5 01       	movw	r30, r10
    f36a:	84 81       	ldd	r24, Z+4	; 0x04
    f36c:	95 81       	ldd	r25, Z+5	; 0x05
    f36e:	84 58       	subi	r24, 0x84	; 132
    f370:	98 4f       	sbci	r25, 0xF8	; 248
    f372:	fc 01       	movw	r30, r24
    f374:	84 e1       	ldi	r24, 0x14	; 20
    f376:	df 01       	movw	r26, r30
    f378:	1d 92       	st	X+, r1
    f37a:	8a 95       	dec	r24
    f37c:	e9 f7       	brne	.-6      	; 0xf378 <SBGPCTD_ParseCommand+0x3b2>
		strcat_P(pTaskInfo->pBuf->tokenSeparatorList, tokenListConsole);
    f37e:	f5 01       	movw	r30, r10
    f380:	84 81       	ldd	r24, Z+4	; 0x04
    f382:	95 81       	ldd	r25, Z+5	; 0x05
    f384:	84 58       	subi	r24, 0x84	; 132
    f386:	98 4f       	sbci	r25, 0xF8	; 248
    f388:	68 e3       	ldi	r22, 0x38	; 56
    f38a:	72 e0       	ldi	r23, 0x02	; 2
    f38c:	0e 94 b4 ef 	call	0x1df68	; 0x1df68 <strcat_P>

		result = strtok_r(result, pTaskInfo->pBuf->tokenSeparatorList, &cmdParams);
    f390:	d5 01       	movw	r26, r10
    f392:	14 96       	adiw	r26, 0x04	; 4
    f394:	6d 91       	ld	r22, X+
    f396:	7c 91       	ld	r23, X
    f398:	15 97       	sbiw	r26, 0x05	; 5
    f39a:	64 58       	subi	r22, 0x84	; 132
    f39c:	78 4f       	sbci	r23, 0xF8	; 248
    f39e:	89 81       	ldd	r24, Y+1	; 0x01
    f3a0:	9a 81       	ldd	r25, Y+2	; 0x02
    f3a2:	ae 01       	movw	r20, r28
    f3a4:	4d 5f       	subi	r20, 0xFD	; 253
    f3a6:	5f 4f       	sbci	r21, 0xFF	; 255
    f3a8:	0e 94 a0 f0 	call	0x1e140	; 0x1e140 <strtok_r>
    f3ac:	9a 83       	std	Y+2, r25	; 0x02
    f3ae:	89 83       	std	Y+1, r24	; 0x01

		if(result != NULL)
    f3b0:	00 97       	sbiw	r24, 0x00	; 0
    f3b2:	09 f4       	brne	.+2      	; 0xf3b6 <SBGPCTD_ParseCommand+0x3f0>
    f3b4:	0a c1       	rjmp	.+532    	; 0xf5ca <SBGPCTD_ParseCommand+0x604>
		{
			newVal = (uint16_t)(strtol(result, NULL, 0));
    f3b6:	60 e0       	ldi	r22, 0x00	; 0
    f3b8:	70 e0       	ldi	r23, 0x00	; 0
    f3ba:	40 e0       	ldi	r20, 0x00	; 0
    f3bc:	50 e0       	ldi	r21, 0x00	; 0
    f3be:	0e 94 2a ee 	call	0x1dc54	; 0x1dc54 <strtol>
    f3c2:	9b 01       	movw	r18, r22
    f3c4:	ac 01       	movw	r20, r24
			//pTaskInfo->pBuf->offTime = (uint16_t)(strtol(result, &result, 0));
			SBGPCTD_SetDutyCycleOffTime(pTaskInfo, newVal);
    f3c6:	c5 01       	movw	r24, r10
    f3c8:	b9 01       	movw	r22, r18
    f3ca:	0e 94 66 6c 	call	0xd8cc	; 0xd8cc <SBGPCTD_SetDutyCycleOffTime>
    f3ce:	fd c0       	rjmp	.+506    	; 0xf5ca <SBGPCTD_ParseCommand+0x604>
		}
		//pTaskInfo->pBuf->turnBackOnTime = 0;
		break; 
	case 'l':
	case 'L':
		memset(pTaskInfo->pBuf->tokenSeparatorList, 0, MAX_TOKEN_SEPARATORS);
    f3d0:	f5 01       	movw	r30, r10
    f3d2:	84 81       	ldd	r24, Z+4	; 0x04
    f3d4:	95 81       	ldd	r25, Z+5	; 0x05
    f3d6:	84 58       	subi	r24, 0x84	; 132
    f3d8:	98 4f       	sbci	r25, 0xF8	; 248
    f3da:	fc 01       	movw	r30, r24
    f3dc:	84 e1       	ldi	r24, 0x14	; 20
    f3de:	df 01       	movw	r26, r30
    f3e0:	1d 92       	st	X+, r1
    f3e2:	8a 95       	dec	r24
    f3e4:	e9 f7       	brne	.-6      	; 0xf3e0 <SBGPCTD_ParseCommand+0x41a>
		strcat_P(pTaskInfo->pBuf->tokenSeparatorList, tokenListConsole);
    f3e6:	f5 01       	movw	r30, r10
    f3e8:	84 81       	ldd	r24, Z+4	; 0x04
    f3ea:	95 81       	ldd	r25, Z+5	; 0x05
    f3ec:	84 58       	subi	r24, 0x84	; 132
    f3ee:	98 4f       	sbci	r25, 0xF8	; 248
    f3f0:	68 e3       	ldi	r22, 0x38	; 56
    f3f2:	72 e0       	ldi	r23, 0x02	; 2
    f3f4:	0e 94 b4 ef 	call	0x1df68	; 0x1df68 <strcat_P>

		result = strtok_r(result, pTaskInfo->pBuf->tokenSeparatorList, &cmdParams);
    f3f8:	d5 01       	movw	r26, r10
    f3fa:	14 96       	adiw	r26, 0x04	; 4
    f3fc:	6d 91       	ld	r22, X+
    f3fe:	7c 91       	ld	r23, X
    f400:	15 97       	sbiw	r26, 0x05	; 5
    f402:	64 58       	subi	r22, 0x84	; 132
    f404:	78 4f       	sbci	r23, 0xF8	; 248
    f406:	89 81       	ldd	r24, Y+1	; 0x01
    f408:	9a 81       	ldd	r25, Y+2	; 0x02
    f40a:	ae 01       	movw	r20, r28
    f40c:	4d 5f       	subi	r20, 0xFD	; 253
    f40e:	5f 4f       	sbci	r21, 0xFF	; 255
    f410:	0e 94 a0 f0 	call	0x1e140	; 0x1e140 <strtok_r>
    f414:	9a 83       	std	Y+2, r25	; 0x02
    f416:	89 83       	std	Y+1, r24	; 0x01

		if(result != NULL)
    f418:	00 97       	sbiw	r24, 0x00	; 0
    f41a:	09 f4       	brne	.+2      	; 0xf41e <SBGPCTD_ParseCommand+0x458>
    f41c:	d6 c0       	rjmp	.+428    	; 0xf5ca <SBGPCTD_ParseCommand+0x604>
		{
			newVal = (uint16_t)(strtol(result, NULL, 0));
    f41e:	60 e0       	ldi	r22, 0x00	; 0
    f420:	70 e0       	ldi	r23, 0x00	; 0
    f422:	40 e0       	ldi	r20, 0x00	; 0
    f424:	50 e0       	ldi	r21, 0x00	; 0
    f426:	0e 94 2a ee 	call	0x1dc54	; 0x1dc54 <strtol>
    f42a:	9b 01       	movw	r18, r22
    f42c:	ac 01       	movw	r20, r24
			//pTaskInfo->pBuf->offTime = (uint16_t)(strtol(result, &result, 0));
			SBGPCTD_SetPumpFlushTime(pTaskInfo, newVal);
    f42e:	c5 01       	movw	r24, r10
    f430:	b9 01       	movw	r22, r18
    f432:	0e 94 43 6c 	call	0xd886	; 0xd886 <SBGPCTD_SetPumpFlushTime>
    f436:	c9 c0       	rjmp	.+402    	; 0xf5ca <SBGPCTD_ParseCommand+0x604>
		//pTaskInfo->pBuf->turnBackOnTime = 0;
		break; 
	case 'c':
	case 'C':
		//CTD Pass Thru Command
		if(pTaskInfo->pBuf->powerCTD == FALSE)
    f438:	d5 01       	movw	r26, r10
    f43a:	14 96       	adiw	r26, 0x04	; 4
    f43c:	ed 91       	ld	r30, X+
    f43e:	fc 91       	ld	r31, X
    f440:	15 97       	sbiw	r26, 0x05	; 5
    f442:	e8 5a       	subi	r30, 0xA8	; 168
    f444:	fa 4f       	sbci	r31, 0xFA	; 250
    f446:	80 81       	ld	r24, Z
    f448:	88 23       	and	r24, r24
    f44a:	11 f0       	breq	.+4      	; 0xf450 <SBGPCTD_ParseCommand+0x48a>
    f44c:	00 e0       	ldi	r16, 0x00	; 0
    f44e:	0b c0       	rjmp	.+22     	; 0xf466 <SBGPCTD_ParseCommand+0x4a0>
		{
			retval = SBGPCTD_TurnOn(pTaskInfo);
    f450:	c5 01       	movw	r24, r10
    f452:	0e 94 84 77 	call	0xef08	; 0xef08 <SBGPCTD_TurnOn>
    f456:	08 2f       	mov	r16, r24
			OSTimeDlyHMSM(0,0,2,0);
    f458:	80 e0       	ldi	r24, 0x00	; 0
    f45a:	60 e0       	ldi	r22, 0x00	; 0
    f45c:	42 e0       	ldi	r20, 0x02	; 2
    f45e:	20 e0       	ldi	r18, 0x00	; 0
    f460:	30 e0       	ldi	r19, 0x00	; 0
    f462:	0e 94 2a 2e 	call	0x5c54	; 0x5c54 <OSTimeDlyHMSM>
		}

		if(pTaskInfo->pBuf->sampleCTD == FALSE)
    f466:	d5 01       	movw	r26, r10
    f468:	14 96       	adiw	r26, 0x04	; 4
    f46a:	ed 91       	ld	r30, X+
    f46c:	fc 91       	ld	r31, X
    f46e:	15 97       	sbiw	r26, 0x05	; 5
    f470:	e9 5a       	subi	r30, 0xA9	; 169
    f472:	fa 4f       	sbci	r31, 0xFA	; 250
    f474:	80 81       	ld	r24, Z
    f476:	e7 55       	subi	r30, 0x57	; 87
    f478:	f5 40       	sbci	r31, 0x05	; 5
    f47a:	88 23       	and	r24, r24
    f47c:	a1 f5       	brne	.+104    	; 0xf4e6 <SBGPCTD_ParseCommand+0x520>
		{
			memset(pTaskInfo->pBuf->tokenSeparatorList, 0, MAX_TOKEN_SEPARATORS);
    f47e:	cf 01       	movw	r24, r30
    f480:	84 58       	subi	r24, 0x84	; 132
    f482:	98 4f       	sbci	r25, 0xF8	; 248
    f484:	fc 01       	movw	r30, r24
    f486:	84 e1       	ldi	r24, 0x14	; 20
    f488:	df 01       	movw	r26, r30
    f48a:	1d 92       	st	X+, r1
    f48c:	8a 95       	dec	r24
    f48e:	e9 f7       	brne	.-6      	; 0xf48a <SBGPCTD_ParseCommand+0x4c4>
			strcat_P(pTaskInfo->pBuf->tokenSeparatorList, tokenListConsole);
    f490:	f5 01       	movw	r30, r10
    f492:	84 81       	ldd	r24, Z+4	; 0x04
    f494:	95 81       	ldd	r25, Z+5	; 0x05
    f496:	84 58       	subi	r24, 0x84	; 132
    f498:	98 4f       	sbci	r25, 0xF8	; 248
    f49a:	68 e3       	ldi	r22, 0x38	; 56
    f49c:	72 e0       	ldi	r23, 0x02	; 2
    f49e:	0e 94 b4 ef 	call	0x1df68	; 0x1df68 <strcat_P>

			result = strtok_r(cmdParams, pTaskInfo->pBuf->tokenSeparatorList, &cmdParams);
    f4a2:	d5 01       	movw	r26, r10
    f4a4:	14 96       	adiw	r26, 0x04	; 4
    f4a6:	6d 91       	ld	r22, X+
    f4a8:	7c 91       	ld	r23, X
    f4aa:	15 97       	sbiw	r26, 0x05	; 5
    f4ac:	64 58       	subi	r22, 0x84	; 132
    f4ae:	78 4f       	sbci	r23, 0xF8	; 248
    f4b0:	8b 81       	ldd	r24, Y+3	; 0x03
    f4b2:	9c 81       	ldd	r25, Y+4	; 0x04
    f4b4:	ae 01       	movw	r20, r28
    f4b6:	4d 5f       	subi	r20, 0xFD	; 253
    f4b8:	5f 4f       	sbci	r21, 0xFF	; 255
    f4ba:	0e 94 a0 f0 	call	0x1e140	; 0x1e140 <strtok_r>
    f4be:	bc 01       	movw	r22, r24
			if(result != NULL)
    f4c0:	00 97       	sbiw	r24, 0x00	; 0
    f4c2:	39 f0       	breq	.+14     	; 0xf4d2 <SBGPCTD_ParseCommand+0x50c>
		if(pTaskInfo->pBuf->sampleCTD == FALSE)
		{
			memset(pTaskInfo->pBuf->tokenSeparatorList, 0, MAX_TOKEN_SEPARATORS);
			strcat_P(pTaskInfo->pBuf->tokenSeparatorList, tokenListConsole);

			result = strtok_r(cmdParams, pTaskInfo->pBuf->tokenSeparatorList, &cmdParams);
    f4c4:	9a 83       	std	Y+2, r25	; 0x02
    f4c6:	89 83       	std	Y+1, r24	; 0x01
			if(result != NULL)
				retval = SBGPCTD_Cmd(pTaskInfo, result);
    f4c8:	c5 01       	movw	r24, r10
    f4ca:	0e 94 7f 72 	call	0xe4fe	; 0xe4fe <SBGPCTD_Cmd>
    f4ce:	08 2f       	mov	r16, r24
    f4d0:	81 c0       	rjmp	.+258    	; 0xf5d4 <SBGPCTD_ParseCommand+0x60e>
			else
				pTaskInfo->pBuf->responseInfo.status = CONSOLE_RESPONSE_EMPTY_CMD;
    f4d2:	d5 01       	movw	r26, r10
    f4d4:	14 96       	adiw	r26, 0x04	; 4
    f4d6:	ed 91       	ld	r30, X+
    f4d8:	fc 91       	ld	r31, X
    f4da:	15 97       	sbiw	r26, 0x05	; 5
    f4dc:	eb 58       	subi	r30, 0x8B	; 139
    f4de:	f8 4f       	sbci	r31, 0xF8	; 248
    f4e0:	8d e0       	ldi	r24, 0x0D	; 13
    f4e2:	80 83       	st	Z, r24
    f4e4:	77 c0       	rjmp	.+238    	; 0xf5d4 <SBGPCTD_ParseCommand+0x60e>
		}
		else
		{
			pTaskInfo->pBuf->responseInfo.status = CONSOLE_RESPONSE_DEVICE_BUSY;
    f4e6:	eb 58       	subi	r30, 0x8B	; 139
    f4e8:	f8 4f       	sbci	r31, 0xF8	; 248
    f4ea:	8b e0       	ldi	r24, 0x0B	; 11
    f4ec:	fa cf       	rjmp	.-12     	; 0xf4e2 <SBGPCTD_ParseCommand+0x51c>
	case 'a':
	case 'A':
		{
			char* result = NULL;

			memset(pTaskInfo->pBuf->tokenSeparatorList, 0, MAX_TOKEN_SEPARATORS);
    f4ee:	f5 01       	movw	r30, r10
    f4f0:	84 81       	ldd	r24, Z+4	; 0x04
    f4f2:	95 81       	ldd	r25, Z+5	; 0x05
    f4f4:	84 58       	subi	r24, 0x84	; 132
    f4f6:	98 4f       	sbci	r25, 0xF8	; 248
    f4f8:	fc 01       	movw	r30, r24
    f4fa:	84 e1       	ldi	r24, 0x14	; 20
    f4fc:	df 01       	movw	r26, r30
    f4fe:	1d 92       	st	X+, r1
    f500:	8a 95       	dec	r24
    f502:	e9 f7       	brne	.-6      	; 0xf4fe <SBGPCTD_ParseCommand+0x538>
			strcat_P(pTaskInfo->pBuf->tokenSeparatorList, tokenListConsole);
    f504:	f5 01       	movw	r30, r10
    f506:	84 81       	ldd	r24, Z+4	; 0x04
    f508:	95 81       	ldd	r25, Z+5	; 0x05
    f50a:	84 58       	subi	r24, 0x84	; 132
    f50c:	98 4f       	sbci	r25, 0xF8	; 248
    f50e:	68 e3       	ldi	r22, 0x38	; 56
    f510:	72 e0       	ldi	r23, 0x02	; 2
    f512:	0e 94 b4 ef 	call	0x1df68	; 0x1df68 <strcat_P>

			result = strtok_r(cmdParams, pTaskInfo->pBuf->tokenSeparatorList, &cmdParams);
    f516:	d5 01       	movw	r26, r10
    f518:	14 96       	adiw	r26, 0x04	; 4
    f51a:	6d 91       	ld	r22, X+
    f51c:	7c 91       	ld	r23, X
    f51e:	15 97       	sbiw	r26, 0x05	; 5
    f520:	64 58       	subi	r22, 0x84	; 132
    f522:	78 4f       	sbci	r23, 0xF8	; 248
    f524:	8b 81       	ldd	r24, Y+3	; 0x03
    f526:	9c 81       	ldd	r25, Y+4	; 0x04
    f528:	ae 01       	movw	r20, r28
    f52a:	4d 5f       	subi	r20, 0xFD	; 253
    f52c:	5f 4f       	sbci	r21, 0xFF	; 255
    f52e:	0e 94 a0 f0 	call	0x1e140	; 0x1e140 <strtok_r>
    f532:	fc 01       	movw	r30, r24

			if(result != NULL)
    f534:	00 97       	sbiw	r24, 0x00	; 0
    f536:	09 f4       	brne	.+2      	; 0xf53a <SBGPCTD_ParseCommand+0x574>
    f538:	48 c0       	rjmp	.+144    	; 0xf5ca <SBGPCTD_ParseCommand+0x604>
			{
				char* pTest = result;
				if((*pTest == 'o') || (*pTest == 'O'))
    f53a:	80 81       	ld	r24, Z
    f53c:	8f 36       	cpi	r24, 0x6F	; 111
    f53e:	11 f0       	breq	.+4      	; 0xf544 <SBGPCTD_ParseCommand+0x57e>
    f540:	8f 34       	cpi	r24, 0x4F	; 79
    f542:	31 f4       	brne	.+12     	; 0xf550 <SBGPCTD_ParseCommand+0x58a>
				{
					pTest++;
				
					if((*pTest == 'f') || (*pTest == 'F'))
    f544:	81 81       	ldd	r24, Z+1	; 0x01
    f546:	86 36       	cpi	r24, 0x66	; 102
    f548:	11 f0       	breq	.+4      	; 0xf54e <SBGPCTD_ParseCommand+0x588>
    f54a:	86 34       	cpi	r24, 0x46	; 70
    f54c:	09 f4       	brne	.+2      	; 0xf550 <SBGPCTD_ParseCommand+0x58a>
						*result = *pTest;
    f54e:	80 83       	st	Z, r24
				}

				switch(*result)
    f550:	80 81       	ld	r24, Z
    f552:	8f 34       	cpi	r24, 0x4F	; 79
    f554:	d9 f0       	breq	.+54     	; 0xf58c <SBGPCTD_ParseCommand+0x5c6>
    f556:	80 35       	cpi	r24, 0x50	; 80
    f558:	60 f4       	brcc	.+24     	; 0xf572 <SBGPCTD_ParseCommand+0x5ac>
    f55a:	81 33       	cpi	r24, 0x31	; 49
    f55c:	b9 f0       	breq	.+46     	; 0xf58c <SBGPCTD_ParseCommand+0x5c6>
    f55e:	82 33       	cpi	r24, 0x32	; 50
    f560:	18 f4       	brcc	.+6      	; 0xf568 <SBGPCTD_ParseCommand+0x5a2>
    f562:	80 33       	cpi	r24, 0x30	; 48
    f564:	91 f5       	brne	.+100    	; 0xf5ca <SBGPCTD_ParseCommand+0x604>
    f566:	1c c0       	rjmp	.+56     	; 0xf5a0 <SBGPCTD_ParseCommand+0x5da>
    f568:	86 34       	cpi	r24, 0x46	; 70
    f56a:	d1 f0       	breq	.+52     	; 0xf5a0 <SBGPCTD_ParseCommand+0x5da>
    f56c:	8e 34       	cpi	r24, 0x4E	; 78
    f56e:	69 f5       	brne	.+90     	; 0xf5ca <SBGPCTD_ParseCommand+0x604>
    f570:	17 c0       	rjmp	.+46     	; 0xf5a0 <SBGPCTD_ParseCommand+0x5da>
    f572:	8e 36       	cpi	r24, 0x6E	; 110
    f574:	a9 f0       	breq	.+42     	; 0xf5a0 <SBGPCTD_ParseCommand+0x5da>
    f576:	8f 36       	cpi	r24, 0x6F	; 111
    f578:	28 f4       	brcc	.+10     	; 0xf584 <SBGPCTD_ParseCommand+0x5be>
    f57a:	89 35       	cpi	r24, 0x59	; 89
    f57c:	39 f0       	breq	.+14     	; 0xf58c <SBGPCTD_ParseCommand+0x5c6>
    f57e:	86 36       	cpi	r24, 0x66	; 102
    f580:	21 f5       	brne	.+72     	; 0xf5ca <SBGPCTD_ParseCommand+0x604>
    f582:	0e c0       	rjmp	.+28     	; 0xf5a0 <SBGPCTD_ParseCommand+0x5da>
    f584:	8f 36       	cpi	r24, 0x6F	; 111
    f586:	11 f0       	breq	.+4      	; 0xf58c <SBGPCTD_ParseCommand+0x5c6>
    f588:	89 37       	cpi	r24, 0x79	; 121
    f58a:	f9 f4       	brne	.+62     	; 0xf5ca <SBGPCTD_ParseCommand+0x604>
					case 'y':
					case 'Y':
					case 'o':
					case 'O':
					case '1':
						pTaskInfo->pBuf->initState = AUTORUN_ON;
    f58c:	d5 01       	movw	r26, r10
    f58e:	14 96       	adiw	r26, 0x04	; 4
    f590:	ed 91       	ld	r30, X+
    f592:	fc 91       	ld	r31, X
    f594:	15 97       	sbiw	r26, 0x05	; 5
    f596:	e0 50       	subi	r30, 0x00	; 0
    f598:	fb 4f       	sbci	r31, 0xFB	; 251
    f59a:	81 e0       	ldi	r24, 0x01	; 1
    f59c:	80 83       	st	Z, r24
    f59e:	08 c0       	rjmp	.+16     	; 0xf5b0 <SBGPCTD_ParseCommand+0x5ea>
					case 'n':
					case 'N':
					case 'f':
					case 'F':
					case '0':
						pTaskInfo->pBuf->initState = AUTORUN_OFF;
    f5a0:	d5 01       	movw	r26, r10
    f5a2:	14 96       	adiw	r26, 0x04	; 4
    f5a4:	ed 91       	ld	r30, X+
    f5a6:	fc 91       	ld	r31, X
    f5a8:	15 97       	sbiw	r26, 0x05	; 5
    f5aa:	e0 50       	subi	r30, 0x00	; 0
    f5ac:	fb 4f       	sbci	r31, 0xFB	; 251
    f5ae:	10 82       	st	Z, r1
					default:
						retval = FAIL;
				}

				if(retval == SUCCESS)
					EepromWriteByteUnSigned((void*)(pTaskInfo->eepromAddress + SEABIRD_GPCTD_AUTORUN_OFFSET), pTaskInfo->pBuf->initState);
    f5b0:	f5 01       	movw	r30, r10
    f5b2:	82 81       	ldd	r24, Z+2	; 0x02
    f5b4:	93 81       	ldd	r25, Z+3	; 0x03
    f5b6:	04 80       	ldd	r0, Z+4	; 0x04
    f5b8:	f5 81       	ldd	r31, Z+5	; 0x05
    f5ba:	e0 2d       	mov	r30, r0
    f5bc:	e0 50       	subi	r30, 0x00	; 0
    f5be:	fb 4f       	sbci	r31, 0xFB	; 251
    f5c0:	87 5b       	subi	r24, 0xB7	; 183
    f5c2:	9f 4f       	sbci	r25, 0xFF	; 255
    f5c4:	60 81       	ld	r22, Z
    f5c6:	0e 94 9f 37 	call	0x6f3e	; 0x6f3e <EepromWriteByteUnSigned>
	}

	if(statusResponse == TRUE)
	{
		retval = SUCCESS;
		SBGPCTD_CreateStatusResponse(pTaskInfo, retval);
    f5ca:	c5 01       	movw	r24, r10
    f5cc:	6f ef       	ldi	r22, 0xFF	; 255
    f5ce:	0e 94 44 69 	call	0xd288	; 0xd288 <SBGPCTD_CreateStatusResponse>
    f5d2:	0f ef       	ldi	r16, 0xFF	; 255
	}

	return retval;
}
    f5d4:	80 2f       	mov	r24, r16
    f5d6:	0f 90       	pop	r0
    f5d8:	0f 90       	pop	r0
    f5da:	0f 90       	pop	r0
    f5dc:	0f 90       	pop	r0
    f5de:	cf 91       	pop	r28
    f5e0:	df 91       	pop	r29
    f5e2:	1f 91       	pop	r17
    f5e4:	0f 91       	pop	r16
    f5e6:	ff 90       	pop	r15
    f5e8:	ef 90       	pop	r14
    f5ea:	df 90       	pop	r13
    f5ec:	cf 90       	pop	r12
    f5ee:	bf 90       	pop	r11
    f5f0:	af 90       	pop	r10
    f5f2:	9f 90       	pop	r9
    f5f4:	8f 90       	pop	r8
    f5f6:	08 95       	ret

0000f5f8 <SBGPCTD_ParseInput>:
///////////////////////////////////////////////////////////////////////////////////////////////
}

///void SBGPCTD_ParseConsole(PSEABIRD_GPCTD_TASK pTaskInfo)
void SBGPCTD_ParseInput(PSEABIRD_GPCTD_TASK pTaskInfo, uint8_t source)
{
    f5f8:	bf 92       	push	r11
    f5fa:	cf 92       	push	r12
    f5fc:	df 92       	push	r13
    f5fe:	ef 92       	push	r14
    f600:	ff 92       	push	r15
    f602:	0f 93       	push	r16
    f604:	1f 93       	push	r17
    f606:	df 93       	push	r29
    f608:	cf 93       	push	r28
    f60a:	0f 92       	push	r0
    f60c:	0f 92       	push	r0
    f60e:	cd b7       	in	r28, 0x3d	; 61
    f610:	de b7       	in	r29, 0x3e	; 62
    f612:	6c 01       	movw	r12, r24
    f614:	b6 2e       	mov	r11, r22

	char* myCommand = NULL;			//consoleIn[pTaskInfo->taskID].cmd; 
    f616:	1a 82       	std	Y+2, r1	; 0x02
    f618:	19 82       	std	Y+1, r1	; 0x01
	char* result = NULL;
	char command = 0;
	BOOL goodCommand = FALSE;
	uint8_t resultCode = 0;

	switch(source)
    f61a:	21 e0       	ldi	r18, 0x01	; 1
    f61c:	62 17       	cp	r22, r18
    f61e:	29 f0       	breq	.+10     	; 0xf62a <SBGPCTD_ParseInput+0x32>
    f620:	32 e0       	ldi	r19, 0x02	; 2
    f622:	63 17       	cp	r22, r19
    f624:	09 f0       	breq	.+2      	; 0xf628 <SBGPCTD_ParseInput+0x30>
    f626:	d9 c1       	rjmp	.+946    	; 0xf9da <SBGPCTD_ParseInput+0x3e2>
    f628:	10 c0       	rjmp	.+32     	; 0xf64a <SBGPCTD_ParseInput+0x52>
	{
		case CONSOLE_INPUT:
			myCommand = consoleIn[pTaskInfo->taskID].cmd;
    f62a:	dc 01       	movw	r26, r24
    f62c:	8c 91       	ld	r24, X
    f62e:	90 e0       	ldi	r25, 0x00	; 0
    f630:	29 e0       	ldi	r18, 0x09	; 9
    f632:	31 e0       	ldi	r19, 0x01	; 1
    f634:	fc 01       	movw	r30, r24
    f636:	e2 9f       	mul	r30, r18
    f638:	c0 01       	movw	r24, r0
    f63a:	e3 9f       	mul	r30, r19
    f63c:	90 0d       	add	r25, r0
    f63e:	f2 9f       	mul	r31, r18
    f640:	90 0d       	add	r25, r0
    f642:	11 24       	eor	r1, r1
    f644:	8e 58       	subi	r24, 0x8E	; 142
    f646:	92 46       	sbci	r25, 0x62	; 98
    f648:	05 c0       	rjmp	.+10     	; 0xf654 <SBGPCTD_ParseInput+0x5c>
			break;
		case FILE_INPUT:
			myCommand = fileIn[pTaskInfo->taskID];
    f64a:	dc 01       	movw	r26, r24
    f64c:	9c 91       	ld	r25, X
    f64e:	80 e0       	ldi	r24, 0x00	; 0
    f650:	8f 5a       	subi	r24, 0xAF	; 175
    f652:	96 47       	sbci	r25, 0x76	; 118
    f654:	9a 83       	std	Y+2, r25	; 0x02
    f656:	89 83       	std	Y+1, r24	; 0x01
			break;
		default:
			return;
	}

	myCommand[MAX_FILE_SIZE_IN - 1] = 0;			//Make sure command string is NULL terminated
    f658:	e9 81       	ldd	r30, Y+1	; 0x01
    f65a:	fa 81       	ldd	r31, Y+2	; 0x02
    f65c:	e1 50       	subi	r30, 0x01	; 1
    f65e:	ff 4f       	sbci	r31, 0xFF	; 255
    f660:	10 82       	st	Z, r1

	memset(pTaskInfo->pBuf->tokenSeparatorList, 0, MAX_TOKEN_SEPARATORS);
    f662:	f6 01       	movw	r30, r12
    f664:	84 81       	ldd	r24, Z+4	; 0x04
    f666:	95 81       	ldd	r25, Z+5	; 0x05
    f668:	84 58       	subi	r24, 0x84	; 132
    f66a:	98 4f       	sbci	r25, 0xF8	; 248
    f66c:	fc 01       	movw	r30, r24
    f66e:	84 e1       	ldi	r24, 0x14	; 20
    f670:	df 01       	movw	r26, r30
    f672:	1d 92       	st	X+, r1
    f674:	8a 95       	dec	r24
    f676:	e9 f7       	brne	.-6      	; 0xf672 <SBGPCTD_ParseInput+0x7a>
	strcat_P(pTaskInfo->pBuf->tokenSeparatorList, tokenListConsole);
    f678:	f6 01       	movw	r30, r12
    f67a:	84 81       	ldd	r24, Z+4	; 0x04
    f67c:	95 81       	ldd	r25, Z+5	; 0x05
    f67e:	84 58       	subi	r24, 0x84	; 132
    f680:	98 4f       	sbci	r25, 0xF8	; 248
    f682:	68 e3       	ldi	r22, 0x38	; 56
    f684:	72 e0       	ldi	r23, 0x02	; 2
    f686:	0e 94 b4 ef 	call	0x1df68	; 0x1df68 <strcat_P>

	result = strtok_r(myCommand, pTaskInfo->pBuf->tokenSeparatorList, &myCommand);
    f68a:	d6 01       	movw	r26, r12
    f68c:	14 96       	adiw	r26, 0x04	; 4
    f68e:	6d 91       	ld	r22, X+
    f690:	7c 91       	ld	r23, X
    f692:	15 97       	sbiw	r26, 0x05	; 5
    f694:	64 58       	subi	r22, 0x84	; 132
    f696:	78 4f       	sbci	r23, 0xF8	; 248
    f698:	89 81       	ldd	r24, Y+1	; 0x01
    f69a:	9a 81       	ldd	r25, Y+2	; 0x02
    f69c:	7e 01       	movw	r14, r28
    f69e:	08 94       	sec
    f6a0:	e1 1c       	adc	r14, r1
    f6a2:	f1 1c       	adc	r15, r1
    f6a4:	a7 01       	movw	r20, r14
    f6a6:	0e 94 a0 f0 	call	0x1e140	; 0x1e140 <strtok_r>
    f6aa:	8c 01       	movw	r16, r24
	resultCode = 1;				//No Command Received

	if(result != NULL)
    f6ac:	00 97       	sbiw	r24, 0x00	; 0
    f6ae:	59 f1       	breq	.+86     	; 0xf706 <SBGPCTD_ParseInput+0x10e>
	{
		resultCode = 2;			//Unknown Parser Code
		if(strncasecmp_P(result, gpctdParserID, strlen_P(gpctdParserID)) == 0)
    f6b0:	82 e1       	ldi	r24, 0x12	; 18
    f6b2:	9c e0       	ldi	r25, 0x0C	; 12
    f6b4:	0e 94 c6 ef 	call	0x1df8c	; 0x1df8c <strlen_P>
    f6b8:	ac 01       	movw	r20, r24
    f6ba:	c8 01       	movw	r24, r16
    f6bc:	62 e1       	ldi	r22, 0x12	; 18
    f6be:	7c e0       	ldi	r23, 0x0C	; 12
    f6c0:	0e 94 cf ef 	call	0x1df9e	; 0x1df9e <strncasecmp_P>
    f6c4:	89 2b       	or	r24, r25
    f6c6:	09 f0       	breq	.+2      	; 0xf6ca <SBGPCTD_ParseInput+0xd2>
    f6c8:	4d c0       	rjmp	.+154    	; 0xf764 <SBGPCTD_ParseInput+0x16c>
		{
			resultCode = 3;		//Unknown command
			command = getCommand(&myCommand, gpctdCommands[0], 8, NUM_COMMANDS, ctdCmdList, pTaskInfo->pBuf->tokenSeparatorList);
    f6ca:	d6 01       	movw	r26, r12
    f6cc:	14 96       	adiw	r26, 0x04	; 4
    f6ce:	ed 91       	ld	r30, X+
    f6d0:	fc 91       	ld	r31, X
    f6d2:	15 97       	sbiw	r26, 0x05	; 5
    f6d4:	e4 58       	subi	r30, 0x84	; 132
    f6d6:	f8 4f       	sbci	r31, 0xF8	; 248
    f6d8:	c7 01       	movw	r24, r14
    f6da:	6a ea       	ldi	r22, 0xAA	; 170
    f6dc:	7b e0       	ldi	r23, 0x0B	; 11
    f6de:	48 e0       	ldi	r20, 0x08	; 8
    f6e0:	2d e0       	ldi	r18, 0x0D	; 13
    f6e2:	06 e1       	ldi	r16, 0x16	; 22
    f6e4:	1c e0       	ldi	r17, 0x0C	; 12
    f6e6:	7f 01       	movw	r14, r30
    f6e8:	0e 94 1f 38 	call	0x703e	; 0x703e <getCommand>
    f6ec:	68 2f       	mov	r22, r24

			if(command != 0)
    f6ee:	88 23       	and	r24, r24
    f6f0:	09 f0       	breq	.+2      	; 0xf6f4 <SBGPCTD_ParseInput+0xfc>
    f6f2:	6a c1       	rjmp	.+724    	; 0xf9c8 <SBGPCTD_ParseInput+0x3d0>
    f6f4:	67 c0       	rjmp	.+206    	; 0xf7c4 <SBGPCTD_ParseInput+0x1cc>
	if(goodCommand == TRUE)
		resultCode = SBGPCTD_ParseCommand(pTaskInfo, command, myCommand);

	if(resultCode != SUCCESS)
	{
		switch(resultCode)
    f6f6:	82 30       	cpi	r24, 0x02	; 2
    f6f8:	a9 f1       	breq	.+106    	; 0xf764 <SBGPCTD_ParseInput+0x16c>
    f6fa:	83 30       	cpi	r24, 0x03	; 3
    f6fc:	09 f4       	brne	.+2      	; 0xf700 <SBGPCTD_ParseInput+0x108>
    f6fe:	62 c0       	rjmp	.+196    	; 0xf7c4 <SBGPCTD_ParseInput+0x1cc>
    f700:	81 30       	cpi	r24, 0x01	; 1
    f702:	09 f0       	breq	.+2      	; 0xf706 <SBGPCTD_ParseInput+0x10e>
    f704:	8e c0       	rjmp	.+284    	; 0xf822 <SBGPCTD_ParseInput+0x22a>
		{
			case 1:
			{
				if(source == CONSOLE_INPUT)
    f706:	b1 e0       	ldi	r27, 0x01	; 1
    f708:	bb 16       	cp	r11, r27
    f70a:	49 f4       	brne	.+18     	; 0xf71e <SBGPCTD_ParseInput+0x126>
					pTaskInfo->pBuf->responseInfo.status = CONSOLE_RESPONSE_EMPTY_CMD;
    f70c:	d6 01       	movw	r26, r12
    f70e:	14 96       	adiw	r26, 0x04	; 4
    f710:	ed 91       	ld	r30, X+
    f712:	fc 91       	ld	r31, X
    f714:	15 97       	sbiw	r26, 0x05	; 5
    f716:	eb 58       	subi	r30, 0x8B	; 139
    f718:	f8 4f       	sbci	r31, 0xF8	; 248
    f71a:	8d e0       	ldi	r24, 0x0D	; 13
    f71c:	2e c0       	rjmp	.+92     	; 0xf77a <SBGPCTD_ParseInput+0x182>
				else
				{
					memset(&fileOut[pTaskInfo->portNum][0], 0, 256);
    f71e:	f6 01       	movw	r30, r12
    f720:	21 81       	ldd	r18, Z+1	; 0x01
    f722:	92 2f       	mov	r25, r18
    f724:	99 0f       	add	r25, r25
    f726:	99 0f       	add	r25, r25
    f728:	80 e0       	ldi	r24, 0x00	; 0
    f72a:	8f 5a       	subi	r24, 0xAF	; 175
    f72c:	92 47       	sbci	r25, 0x72	; 114
    f72e:	fc 01       	movw	r30, r24
    f730:	80 e0       	ldi	r24, 0x00	; 0
    f732:	91 e0       	ldi	r25, 0x01	; 1
    f734:	df 01       	movw	r26, r30
    f736:	9c 01       	movw	r18, r24
    f738:	1d 92       	st	X+, r1
    f73a:	21 50       	subi	r18, 0x01	; 1
    f73c:	30 40       	sbci	r19, 0x00	; 0
    f73e:	e1 f7       	brne	.-8      	; 0xf738 <SBGPCTD_ParseInput+0x140>
					sprintf_P(&fileOut[pTaskInfo->portNum][0], PSTR("Received an Empty Command"));
    f740:	00 d0       	rcall	.+0      	; 0xf742 <SBGPCTD_ParseInput+0x14a>
    f742:	0f 92       	push	r0
    f744:	d6 01       	movw	r26, r12
    f746:	11 96       	adiw	r26, 0x01	; 1
    f748:	2c 91       	ld	r18, X
    f74a:	92 2f       	mov	r25, r18
    f74c:	99 0f       	add	r25, r25
    f74e:	99 0f       	add	r25, r25
    f750:	80 e0       	ldi	r24, 0x00	; 0
    f752:	8f 5a       	subi	r24, 0xAF	; 175
    f754:	92 47       	sbci	r25, 0x72	; 114
    f756:	ed b7       	in	r30, 0x3d	; 61
    f758:	fe b7       	in	r31, 0x3e	; 62
    f75a:	92 83       	std	Z+2, r25	; 0x02
    f75c:	81 83       	std	Z+1, r24	; 0x01
    f75e:	8a ee       	ldi	r24, 0xEA	; 234
    f760:	9c e0       	ldi	r25, 0x0C	; 12
    f762:	8d c0       	rjmp	.+282    	; 0xf87e <SBGPCTD_ParseInput+0x286>
				}
				break;
			}
			case 2:
			{
				if(source == CONSOLE_INPUT)
    f764:	f1 e0       	ldi	r31, 0x01	; 1
    f766:	bf 16       	cp	r11, r31
    f768:	51 f4       	brne	.+20     	; 0xf77e <SBGPCTD_ParseInput+0x186>
					pTaskInfo->pBuf->responseInfo.status = CONSOLE_RESPONSE_WRONG_DEVICE;
    f76a:	d6 01       	movw	r26, r12
    f76c:	14 96       	adiw	r26, 0x04	; 4
    f76e:	ed 91       	ld	r30, X+
    f770:	fc 91       	ld	r31, X
    f772:	15 97       	sbiw	r26, 0x05	; 5
    f774:	eb 58       	subi	r30, 0x8B	; 139
    f776:	f8 4f       	sbci	r31, 0xF8	; 248
    f778:	8e e0       	ldi	r24, 0x0E	; 14
    f77a:	80 83       	st	Z, r24
    f77c:	a8 c0       	rjmp	.+336    	; 0xf8ce <SBGPCTD_ParseInput+0x2d6>
				else
				{
					memset(&fileOut[pTaskInfo->portNum][0], 0, 256);
    f77e:	f6 01       	movw	r30, r12
    f780:	21 81       	ldd	r18, Z+1	; 0x01
    f782:	92 2f       	mov	r25, r18
    f784:	99 0f       	add	r25, r25
    f786:	99 0f       	add	r25, r25
    f788:	80 e0       	ldi	r24, 0x00	; 0
    f78a:	8f 5a       	subi	r24, 0xAF	; 175
    f78c:	92 47       	sbci	r25, 0x72	; 114
    f78e:	fc 01       	movw	r30, r24
    f790:	80 e0       	ldi	r24, 0x00	; 0
    f792:	91 e0       	ldi	r25, 0x01	; 1
    f794:	df 01       	movw	r26, r30
    f796:	9c 01       	movw	r18, r24
    f798:	1d 92       	st	X+, r1
    f79a:	21 50       	subi	r18, 0x01	; 1
    f79c:	30 40       	sbci	r19, 0x00	; 0
    f79e:	e1 f7       	brne	.-8      	; 0xf798 <SBGPCTD_ParseInput+0x1a0>
					sprintf_P(&fileOut[pTaskInfo->portNum][0], PSTR("Command received was not for the GPCTD"));
    f7a0:	00 d0       	rcall	.+0      	; 0xf7a2 <SBGPCTD_ParseInput+0x1aa>
    f7a2:	0f 92       	push	r0
    f7a4:	d6 01       	movw	r26, r12
    f7a6:	11 96       	adiw	r26, 0x01	; 1
    f7a8:	2c 91       	ld	r18, X
    f7aa:	92 2f       	mov	r25, r18
    f7ac:	99 0f       	add	r25, r25
    f7ae:	99 0f       	add	r25, r25
    f7b0:	80 e0       	ldi	r24, 0x00	; 0
    f7b2:	8f 5a       	subi	r24, 0xAF	; 175
    f7b4:	92 47       	sbci	r25, 0x72	; 114
    f7b6:	ed b7       	in	r30, 0x3d	; 61
    f7b8:	fe b7       	in	r31, 0x3e	; 62
    f7ba:	92 83       	std	Z+2, r25	; 0x02
    f7bc:	81 83       	std	Z+1, r24	; 0x01
    f7be:	83 ec       	ldi	r24, 0xC3	; 195
    f7c0:	9c e0       	ldi	r25, 0x0C	; 12
    f7c2:	5d c0       	rjmp	.+186    	; 0xf87e <SBGPCTD_ParseInput+0x286>
				}
				break;
			}
			case 3:
			{
				if(source == CONSOLE_INPUT)
    f7c4:	f1 e0       	ldi	r31, 0x01	; 1
    f7c6:	bf 16       	cp	r11, r31
    f7c8:	49 f4       	brne	.+18     	; 0xf7dc <SBGPCTD_ParseInput+0x1e4>
					pTaskInfo->pBuf->responseInfo.status = CONSOLE_RESPONSE_UNKNOWN_CMD;
    f7ca:	d6 01       	movw	r26, r12
    f7cc:	14 96       	adiw	r26, 0x04	; 4
    f7ce:	ed 91       	ld	r30, X+
    f7d0:	fc 91       	ld	r31, X
    f7d2:	15 97       	sbiw	r26, 0x05	; 5
    f7d4:	eb 58       	subi	r30, 0x8B	; 139
    f7d6:	f8 4f       	sbci	r31, 0xF8	; 248
    f7d8:	8a e0       	ldi	r24, 0x0A	; 10
    f7da:	cf cf       	rjmp	.-98     	; 0xf77a <SBGPCTD_ParseInput+0x182>
				else
				{
					memset(&fileOut[pTaskInfo->portNum][0], 0, 256);
    f7dc:	f6 01       	movw	r30, r12
    f7de:	21 81       	ldd	r18, Z+1	; 0x01
    f7e0:	92 2f       	mov	r25, r18
    f7e2:	99 0f       	add	r25, r25
    f7e4:	99 0f       	add	r25, r25
    f7e6:	80 e0       	ldi	r24, 0x00	; 0
    f7e8:	8f 5a       	subi	r24, 0xAF	; 175
    f7ea:	92 47       	sbci	r25, 0x72	; 114
    f7ec:	fc 01       	movw	r30, r24
    f7ee:	80 e0       	ldi	r24, 0x00	; 0
    f7f0:	91 e0       	ldi	r25, 0x01	; 1
    f7f2:	df 01       	movw	r26, r30
    f7f4:	9c 01       	movw	r18, r24
    f7f6:	1d 92       	st	X+, r1
    f7f8:	21 50       	subi	r18, 0x01	; 1
    f7fa:	30 40       	sbci	r19, 0x00	; 0
    f7fc:	e1 f7       	brne	.-8      	; 0xf7f6 <SBGPCTD_ParseInput+0x1fe>
					sprintf_P(&fileOut[pTaskInfo->portNum][0], PSTR("Unrecognized Command"));
    f7fe:	00 d0       	rcall	.+0      	; 0xf800 <SBGPCTD_ParseInput+0x208>
    f800:	0f 92       	push	r0
    f802:	d6 01       	movw	r26, r12
    f804:	11 96       	adiw	r26, 0x01	; 1
    f806:	2c 91       	ld	r18, X
    f808:	92 2f       	mov	r25, r18
    f80a:	99 0f       	add	r25, r25
    f80c:	99 0f       	add	r25, r25
    f80e:	80 e0       	ldi	r24, 0x00	; 0
    f810:	8f 5a       	subi	r24, 0xAF	; 175
    f812:	92 47       	sbci	r25, 0x72	; 114
    f814:	ed b7       	in	r30, 0x3d	; 61
    f816:	fe b7       	in	r31, 0x3e	; 62
    f818:	92 83       	std	Z+2, r25	; 0x02
    f81a:	81 83       	std	Z+1, r24	; 0x01
    f81c:	8e ea       	ldi	r24, 0xAE	; 174
    f81e:	9c e0       	ldi	r25, 0x0C	; 12
    f820:	2e c0       	rjmp	.+92     	; 0xf87e <SBGPCTD_ParseInput+0x286>
				}
				break;
			}
			default:
			{
				if(source == CONSOLE_INPUT)
    f822:	f1 e0       	ldi	r31, 0x01	; 1
    f824:	bf 16       	cp	r11, r31
    f826:	49 f4       	brne	.+18     	; 0xf83a <SBGPCTD_ParseInput+0x242>
					pTaskInfo->pBuf->responseInfo.status = CONSOLE_RESPONSE_CMD_FAILED;
    f828:	d6 01       	movw	r26, r12
    f82a:	14 96       	adiw	r26, 0x04	; 4
    f82c:	ed 91       	ld	r30, X+
    f82e:	fc 91       	ld	r31, X
    f830:	15 97       	sbiw	r26, 0x05	; 5
    f832:	eb 58       	subi	r30, 0x8B	; 139
    f834:	f8 4f       	sbci	r31, 0xF8	; 248
    f836:	8f e0       	ldi	r24, 0x0F	; 15
    f838:	a0 cf       	rjmp	.-192    	; 0xf77a <SBGPCTD_ParseInput+0x182>
				else
				{
					memset(&fileOut[pTaskInfo->portNum][0], 0, 256);
    f83a:	f6 01       	movw	r30, r12
    f83c:	21 81       	ldd	r18, Z+1	; 0x01
    f83e:	92 2f       	mov	r25, r18
    f840:	99 0f       	add	r25, r25
    f842:	99 0f       	add	r25, r25
    f844:	80 e0       	ldi	r24, 0x00	; 0
    f846:	8f 5a       	subi	r24, 0xAF	; 175
    f848:	92 47       	sbci	r25, 0x72	; 114
    f84a:	fc 01       	movw	r30, r24
    f84c:	80 e0       	ldi	r24, 0x00	; 0
    f84e:	91 e0       	ldi	r25, 0x01	; 1
    f850:	df 01       	movw	r26, r30
    f852:	9c 01       	movw	r18, r24
    f854:	1d 92       	st	X+, r1
    f856:	21 50       	subi	r18, 0x01	; 1
    f858:	30 40       	sbci	r19, 0x00	; 0
    f85a:	e1 f7       	brne	.-8      	; 0xf854 <SBGPCTD_ParseInput+0x25c>
					sprintf_P(&fileOut[pTaskInfo->portNum][0], PSTR("Command Failed"));
    f85c:	00 d0       	rcall	.+0      	; 0xf85e <SBGPCTD_ParseInput+0x266>
    f85e:	0f 92       	push	r0
    f860:	d6 01       	movw	r26, r12
    f862:	11 96       	adiw	r26, 0x01	; 1
    f864:	2c 91       	ld	r18, X
    f866:	92 2f       	mov	r25, r18
    f868:	99 0f       	add	r25, r25
    f86a:	99 0f       	add	r25, r25
    f86c:	80 e0       	ldi	r24, 0x00	; 0
    f86e:	8f 5a       	subi	r24, 0xAF	; 175
    f870:	92 47       	sbci	r25, 0x72	; 114
    f872:	ed b7       	in	r30, 0x3d	; 61
    f874:	fe b7       	in	r31, 0x3e	; 62
    f876:	92 83       	std	Z+2, r25	; 0x02
    f878:	81 83       	std	Z+1, r24	; 0x01
    f87a:	8f e9       	ldi	r24, 0x9F	; 159
    f87c:	9c e0       	ldi	r25, 0x0C	; 12
    f87e:	94 83       	std	Z+4, r25	; 0x04
    f880:	83 83       	std	Z+3, r24	; 0x03
    f882:	0e 94 51 f1 	call	0x1e2a2	; 0x1e2a2 <sprintf_P>
					fileOutSize[pTaskInfo->portNum] = strlen(&fileOut[pTaskInfo->portNum][0]);
    f886:	f6 01       	movw	r30, r12
    f888:	a1 81       	ldd	r26, Z+1	; 0x01
    f88a:	fa 2f       	mov	r31, r26
    f88c:	ff 0f       	add	r31, r31
    f88e:	ff 0f       	add	r31, r31
    f890:	e0 e0       	ldi	r30, 0x00	; 0
    f892:	9f 01       	movw	r18, r30
    f894:	2f 5a       	subi	r18, 0xAF	; 175
    f896:	32 47       	sbci	r19, 0x72	; 114
    f898:	f9 01       	movw	r30, r18
    f89a:	01 90       	ld	r0, Z+
    f89c:	00 20       	and	r0, r0
    f89e:	e9 f7       	brne	.-6      	; 0xf89a <SBGPCTD_ParseInput+0x2a2>
    f8a0:	cf 01       	movw	r24, r30
    f8a2:	01 97       	sbiw	r24, 0x01	; 1
    f8a4:	82 1b       	sub	r24, r18
    f8a6:	93 0b       	sbc	r25, r19
    f8a8:	b0 e0       	ldi	r27, 0x00	; 0
    f8aa:	aa 0f       	add	r26, r26
    f8ac:	bb 1f       	adc	r27, r27
    f8ae:	af 5a       	subi	r26, 0xAF	; 175
    f8b0:	b2 46       	sbci	r27, 0x62	; 98
    f8b2:	8d 93       	st	X+, r24
    f8b4:	9c 93       	st	X, r25
    f8b6:	0f 90       	pop	r0
    f8b8:	0f 90       	pop	r0
    f8ba:	0f 90       	pop	r0
    f8bc:	0f 90       	pop	r0
				break;
			}
		}
	}

	switch(source)
    f8be:	f1 e0       	ldi	r31, 0x01	; 1
    f8c0:	bf 16       	cp	r11, r31
    f8c2:	29 f0       	breq	.+10     	; 0xf8ce <SBGPCTD_ParseInput+0x2d6>
    f8c4:	22 e0       	ldi	r18, 0x02	; 2
    f8c6:	b2 16       	cp	r11, r18
    f8c8:	09 f0       	breq	.+2      	; 0xf8cc <SBGPCTD_ParseInput+0x2d4>
    f8ca:	87 c0       	rjmp	.+270    	; 0xf9da <SBGPCTD_ParseInput+0x3e2>
    f8cc:	04 c0       	rjmp	.+8      	; 0xf8d6 <SBGPCTD_ParseInput+0x2de>
	{
		case CONSOLE_INPUT:
			SBGPCTD_QueueConsoleResponse(pTaskInfo);
    f8ce:	c6 01       	movw	r24, r12
    f8d0:	0e 94 8d 6a 	call	0xd51a	; 0xd51a <SBGPCTD_QueueConsoleResponse>
    f8d4:	2a c0       	rjmp	.+84     	; 0xf92a <SBGPCTD_ParseInput+0x332>
			break;
		case FILE_INPUT:
			memcpy(&fileOut[pTaskInfo->portNum][0], pTaskInfo->pBuf->consoleResponse, pTaskInfo->pBuf->responseInfo.length);
    f8d6:	d6 01       	movw	r26, r12
    f8d8:	14 96       	adiw	r26, 0x04	; 4
    f8da:	ed 91       	ld	r30, X+
    f8dc:	fc 91       	ld	r31, X
    f8de:	15 97       	sbiw	r26, 0x05	; 5
    f8e0:	11 96       	adiw	r26, 0x01	; 1
    f8e2:	8c 91       	ld	r24, X
    f8e4:	38 2f       	mov	r19, r24
    f8e6:	33 0f       	add	r19, r19
    f8e8:	33 0f       	add	r19, r19
    f8ea:	20 e0       	ldi	r18, 0x00	; 0
    f8ec:	2f 5a       	subi	r18, 0xAF	; 175
    f8ee:	32 47       	sbci	r19, 0x72	; 114
    f8f0:	e9 58       	subi	r30, 0x89	; 137
    f8f2:	f8 4f       	sbci	r31, 0xF8	; 248
    f8f4:	40 81       	ld	r20, Z
    f8f6:	e7 56       	subi	r30, 0x67	; 103
    f8f8:	ff 4f       	sbci	r31, 0xFF	; 255
    f8fa:	c9 01       	movw	r24, r18
    f8fc:	bf 01       	movw	r22, r30
    f8fe:	50 e0       	ldi	r21, 0x00	; 0
    f900:	0e 94 1c f0 	call	0x1e038	; 0x1e038 <memcpy>
			fileOutSize[pTaskInfo->portNum] = pTaskInfo->pBuf->responseInfo.length;
    f904:	f6 01       	movw	r30, r12
    f906:	a1 81       	ldd	r26, Z+1	; 0x01
    f908:	b0 e0       	ldi	r27, 0x00	; 0
    f90a:	aa 0f       	add	r26, r26
    f90c:	bb 1f       	adc	r27, r27
    f90e:	af 5a       	subi	r26, 0xAF	; 175
    f910:	b2 46       	sbci	r27, 0x62	; 98
    f912:	84 81       	ldd	r24, Z+4	; 0x04
    f914:	95 81       	ldd	r25, Z+5	; 0x05
    f916:	89 58       	subi	r24, 0x89	; 137
    f918:	98 4f       	sbci	r25, 0xF8	; 248
    f91a:	fc 01       	movw	r30, r24
    f91c:	80 81       	ld	r24, Z
    f91e:	8c 93       	st	X, r24
    f920:	11 96       	adiw	r26, 0x01	; 1
    f922:	1c 92       	st	X, r1
			SBGPCTD_QueueFile(pTaskInfo);
    f924:	c6 01       	movw	r24, r12
    f926:	0e 94 28 68 	call	0xd050	; 0xd050 <SBGPCTD_QueueFile>
			return;
	}

//	SBGPCTD_QueueConsoleResponse(pTaskInfo);

	memset(consoleIn[pTaskInfo->taskID].cmd, 0, MAX_FILE_SIZE_IN);
    f92a:	d6 01       	movw	r26, r12
    f92c:	8c 91       	ld	r24, X
    f92e:	90 e0       	ldi	r25, 0x00	; 0
    f930:	29 e0       	ldi	r18, 0x09	; 9
    f932:	31 e0       	ldi	r19, 0x01	; 1
    f934:	fc 01       	movw	r30, r24
    f936:	e2 9f       	mul	r30, r18
    f938:	c0 01       	movw	r24, r0
    f93a:	e3 9f       	mul	r30, r19
    f93c:	90 0d       	add	r25, r0
    f93e:	f2 9f       	mul	r31, r18
    f940:	90 0d       	add	r25, r0
    f942:	11 24       	eor	r1, r1
    f944:	8e 58       	subi	r24, 0x8E	; 142
    f946:	92 46       	sbci	r25, 0x62	; 98
    f948:	fc 01       	movw	r30, r24
    f94a:	80 e0       	ldi	r24, 0x00	; 0
    f94c:	91 e0       	ldi	r25, 0x01	; 1
    f94e:	df 01       	movw	r26, r30
    f950:	ac 01       	movw	r20, r24
    f952:	1d 92       	st	X+, r1
    f954:	41 50       	subi	r20, 0x01	; 1
    f956:	50 40       	sbci	r21, 0x00	; 0
    f958:	e1 f7       	brne	.-8      	; 0xf952 <SBGPCTD_ParseInput+0x35a>
	consoleIn[pTaskInfo->taskID].cmdSrcAddress = 0;
    f95a:	d6 01       	movw	r26, r12
    f95c:	8c 91       	ld	r24, X
    f95e:	90 e0       	ldi	r25, 0x00	; 0
    f960:	82 9f       	mul	r24, r18
    f962:	f0 01       	movw	r30, r0
    f964:	83 9f       	mul	r24, r19
    f966:	f0 0d       	add	r31, r0
    f968:	92 9f       	mul	r25, r18
    f96a:	f0 0d       	add	r31, r0
    f96c:	11 24       	eor	r1, r1
    f96e:	e7 59       	subi	r30, 0x97	; 151
    f970:	f2 46       	sbci	r31, 0x62	; 98
    f972:	11 82       	std	Z+1, r1	; 0x01
    f974:	10 82       	st	Z, r1
	consoleIn[pTaskInfo->taskID].functionCode = 0;
    f976:	8c 91       	ld	r24, X
    f978:	90 e0       	ldi	r25, 0x00	; 0
    f97a:	82 9f       	mul	r24, r18
    f97c:	f0 01       	movw	r30, r0
    f97e:	83 9f       	mul	r24, r19
    f980:	f0 0d       	add	r31, r0
    f982:	92 9f       	mul	r25, r18
    f984:	f0 0d       	add	r31, r0
    f986:	11 24       	eor	r1, r1
    f988:	e7 59       	subi	r30, 0x97	; 151
    f98a:	f2 46       	sbci	r31, 0x62	; 98
    f98c:	12 82       	std	Z+2, r1	; 0x02
	consoleIn[pTaskInfo->taskID].cmdSize = 0;
    f98e:	8c 91       	ld	r24, X
    f990:	90 e0       	ldi	r25, 0x00	; 0
    f992:	82 9f       	mul	r24, r18
    f994:	f0 01       	movw	r30, r0
    f996:	83 9f       	mul	r24, r19
    f998:	f0 0d       	add	r31, r0
    f99a:	92 9f       	mul	r25, r18
    f99c:	f0 0d       	add	r31, r0
    f99e:	11 24       	eor	r1, r1
    f9a0:	e7 59       	subi	r30, 0x97	; 151
    f9a2:	f2 46       	sbci	r31, 0x62	; 98
    f9a4:	14 82       	std	Z+4, r1	; 0x04
    f9a6:	13 82       	std	Z+3, r1	; 0x03
	consoleIn[pTaskInfo->taskID].id = 0;
    f9a8:	8c 91       	ld	r24, X
    f9aa:	90 e0       	ldi	r25, 0x00	; 0
    f9ac:	82 9f       	mul	r24, r18
    f9ae:	f0 01       	movw	r30, r0
    f9b0:	83 9f       	mul	r24, r19
    f9b2:	f0 0d       	add	r31, r0
    f9b4:	92 9f       	mul	r25, r18
    f9b6:	f0 0d       	add	r31, r0
    f9b8:	11 24       	eor	r1, r1
    f9ba:	e7 59       	subi	r30, 0x97	; 151
    f9bc:	f2 46       	sbci	r31, 0x62	; 98
    f9be:	15 82       	std	Z+5, r1	; 0x05
    f9c0:	16 82       	std	Z+6, r1	; 0x06
    f9c2:	17 82       	std	Z+7, r1	; 0x07
    f9c4:	10 86       	std	Z+8, r1	; 0x08
    f9c6:	09 c0       	rjmp	.+18     	; 0xf9da <SBGPCTD_ParseInput+0x3e2>
				goodCommand = TRUE;
		}
	}

	if(goodCommand == TRUE)
		resultCode = SBGPCTD_ParseCommand(pTaskInfo, command, myCommand);
    f9c8:	49 81       	ldd	r20, Y+1	; 0x01
    f9ca:	5a 81       	ldd	r21, Y+2	; 0x02
    f9cc:	c6 01       	movw	r24, r12
    f9ce:	0e 94 e3 77 	call	0xefc6	; 0xefc6 <SBGPCTD_ParseCommand>

	if(resultCode != SUCCESS)
    f9d2:	8f 3f       	cpi	r24, 0xFF	; 255
    f9d4:	09 f0       	breq	.+2      	; 0xf9d8 <SBGPCTD_ParseInput+0x3e0>
    f9d6:	8f ce       	rjmp	.-738    	; 0xf6f6 <SBGPCTD_ParseInput+0xfe>
    f9d8:	72 cf       	rjmp	.-284    	; 0xf8be <SBGPCTD_ParseInput+0x2c6>
	consoleIn[pTaskInfo->taskID].functionCode = 0;
	consoleIn[pTaskInfo->taskID].cmdSize = 0;
	consoleIn[pTaskInfo->taskID].id = 0;

	return;
}
    f9da:	0f 90       	pop	r0
    f9dc:	0f 90       	pop	r0
    f9de:	cf 91       	pop	r28
    f9e0:	df 91       	pop	r29
    f9e2:	1f 91       	pop	r17
    f9e4:	0f 91       	pop	r16
    f9e6:	ff 90       	pop	r15
    f9e8:	ef 90       	pop	r14
    f9ea:	df 90       	pop	r13
    f9ec:	cf 90       	pop	r12
    f9ee:	bf 90       	pop	r11
    f9f0:	08 95       	ret

0000f9f2 <Seabird_GPCTD_Init>:
extern int32_t latitude;		//JGK Added 06-11-10
extern int32_t longitude;		//JGK Added 06-11-10
extern char	fixValid;			//JGK Added 06-11-10

uint8_t Seabird_GPCTD_Init(PSEABIRD_GPCTD_TASK pTaskInfo)
{
    f9f2:	cf 92       	push	r12
    f9f4:	df 92       	push	r13
    f9f6:	ef 92       	push	r14
    f9f8:	0f 93       	push	r16
    f9fa:	1f 93       	push	r17
    f9fc:	df 93       	push	r29
    f9fe:	cf 93       	push	r28
    fa00:	00 d0       	rcall	.+0      	; 0xfa02 <Seabird_GPCTD_Init+0x10>
    fa02:	0f 92       	push	r0
    fa04:	cd b7       	in	r28, 0x3d	; 61
    fa06:	de b7       	in	r29, 0x3e	; 62
    fa08:	6c 01       	movw	r12, r24
	if(pTaskInfo->portNum == USER_PORT_1)
    fa0a:	dc 01       	movw	r26, r24
    fa0c:	11 96       	adiw	r26, 0x01	; 1
    fa0e:	8c 91       	ld	r24, X
    fa10:	11 97       	sbiw	r26, 0x01	; 1
    fa12:	81 30       	cpi	r24, 0x01	; 1
    fa14:	19 f4       	brne	.+6      	; 0xfa1c <Seabird_GPCTD_Init+0x2a>
		pTaskInfo->eepromAddress = EEPROM_PM1_START;
    fa16:	80 e0       	ldi	r24, 0x00	; 0
    fa18:	93 e0       	ldi	r25, 0x03	; 3
    fa1a:	0d c0       	rjmp	.+26     	; 0xfa36 <Seabird_GPCTD_Init+0x44>
	else if(pTaskInfo->portNum == USER_PORT_2)
    fa1c:	82 30       	cpi	r24, 0x02	; 2
    fa1e:	31 f4       	brne	.+12     	; 0xfa2c <Seabird_GPCTD_Init+0x3a>
		pTaskInfo->eepromAddress = EEPROM_PM2_START;
    fa20:	80 e0       	ldi	r24, 0x00	; 0
    fa22:	95 e0       	ldi	r25, 0x05	; 5
    fa24:	f6 01       	movw	r30, r12
    fa26:	93 83       	std	Z+3, r25	; 0x03
    fa28:	82 83       	std	Z+2, r24	; 0x02
    fa2a:	09 c0       	rjmp	.+18     	; 0xfa3e <Seabird_GPCTD_Init+0x4c>
	else if(pTaskInfo->portNum == USER_PORT_3)
    fa2c:	83 30       	cpi	r24, 0x03	; 3
    fa2e:	39 f4       	brne	.+14     	; 0xfa3e <Seabird_GPCTD_Init+0x4c>
		pTaskInfo->eepromAddress = EEPROM_PM3_START;
    fa30:	80 e0       	ldi	r24, 0x00	; 0
    fa32:	97 e0       	ldi	r25, 0x07	; 7
    fa34:	d6 01       	movw	r26, r12
    fa36:	13 96       	adiw	r26, 0x03	; 3
    fa38:	9c 93       	st	X, r25
    fa3a:	8e 93       	st	-X, r24
    fa3c:	12 97       	sbiw	r26, 0x02	; 2

	if(pTaskInfo->pBuf != NULL)
    fa3e:	d6 01       	movw	r26, r12
    fa40:	14 96       	adiw	r26, 0x04	; 4
    fa42:	ed 91       	ld	r30, X+
    fa44:	fc 91       	ld	r31, X
    fa46:	15 97       	sbiw	r26, 0x05	; 5
    fa48:	30 97       	sbiw	r30, 0x00	; 0
    fa4a:	41 f0       	breq	.+16     	; 0xfa5c <Seabird_GPCTD_Init+0x6a>
		memset(pTaskInfo->pBuf, 0, TASK_BUF_SIZE);
    fa4c:	80 ea       	ldi	r24, 0xA0	; 160
    fa4e:	9f e0       	ldi	r25, 0x0F	; 15
    fa50:	df 01       	movw	r26, r30
    fa52:	9c 01       	movw	r18, r24
    fa54:	1d 92       	st	X+, r1
    fa56:	21 50       	subi	r18, 0x01	; 1
    fa58:	30 40       	sbci	r19, 0x00	; 0
    fa5a:	e1 f7       	brne	.-8      	; 0xfa54 <Seabird_GPCTD_Init+0x62>

	OSuartInitPort(pTaskInfo->portNum, 9600, UART_MODE_EIGHT_DATA_BITS, UART_MODE_ONE_STOP_BIT, UART_MODE_NO_PARITY);
    fa5c:	d6 01       	movw	r26, r12
    fa5e:	11 96       	adiw	r26, 0x01	; 1
    fa60:	8c 91       	ld	r24, X
    fa62:	40 e8       	ldi	r20, 0x80	; 128
    fa64:	55 e2       	ldi	r21, 0x25	; 37
    fa66:	60 e0       	ldi	r22, 0x00	; 0
    fa68:	70 e0       	ldi	r23, 0x00	; 0
    fa6a:	26 e0       	ldi	r18, 0x06	; 6
    fa6c:	00 e0       	ldi	r16, 0x00	; 0
    fa6e:	ee 24       	eor	r14, r14
    fa70:	0e 94 38 33 	call	0x6670	; 0x6670 <OSuartInitPort>

	pTaskInfo->pBuf->sampleRate = DEFAULT_GPCTD_SAMPLE_INTERVAL;
    fa74:	d6 01       	movw	r26, r12
    fa76:	14 96       	adiw	r26, 0x04	; 4
    fa78:	ed 91       	ld	r30, X+
    fa7a:	fc 91       	ld	r31, X
    fa7c:	15 97       	sbiw	r26, 0x05	; 5
    fa7e:	ef 5f       	subi	r30, 0xFF	; 255
    fa80:	fa 4f       	sbci	r31, 0xFA	; 250
    fa82:	0c e3       	ldi	r16, 0x3C	; 60
    fa84:	10 e0       	ldi	r17, 0x00	; 0
    fa86:	01 93       	st	Z+, r16
    fa88:	11 93       	st	Z+, r17
	pTaskInfo->pBuf->samplePacketSize = MAX_GPCTD_SAMPLES;
    fa8a:	8a e0       	ldi	r24, 0x0A	; 10
    fa8c:	90 e0       	ldi	r25, 0x00	; 0
    fa8e:	81 93       	st	Z+, r24
    fa90:	91 93       	st	Z+, r25
	pTaskInfo->pBuf->destination = FLOAT_TO_SHORE_VIA_DEFAULT;
    fa92:	82 e0       	ldi	r24, 0x02	; 2
    fa94:	90 e0       	ldi	r25, 0x00	; 0
    fa96:	91 83       	std	Z+1, r25	; 0x01
    fa98:	80 83       	st	Z, r24
	pTaskInfo->pBuf->useO2 = NO_O2;
    fa9a:	ec 5a       	subi	r30, 0xAC	; 172
    fa9c:	ff 4f       	sbci	r31, 0xFF	; 255
    fa9e:	11 92       	st	Z+, r1
	pTaskInfo->pBuf->findDataFrame = FALSE;
    faa0:	10 82       	st	Z, r1
	pTaskInfo->pBuf->pumpRun = FALSE;
    faa2:	e8 53       	subi	r30, 0x38	; 56
    faa4:	fc 4f       	sbci	r31, 0xFC	; 252
    faa6:	10 82       	st	Z, r1

	if(pTaskInfo->eepromAddress != 0)
    faa8:	12 96       	adiw	r26, 0x02	; 2
    faaa:	2d 91       	ld	r18, X+
    faac:	3c 91       	ld	r19, X
    faae:	13 97       	sbiw	r26, 0x03	; 3
    fab0:	21 15       	cp	r18, r1
    fab2:	31 05       	cpc	r19, r1
    fab4:	09 f4       	brne	.+2      	; 0xfab8 <Seabird_GPCTD_Init+0xc6>
    fab6:	0a c1       	rjmp	.+532    	; 0xfccc <Seabird_GPCTD_Init+0x2da>
	{
		uint16_t temp;

		//Get default sample rate
		temp = 0xFFFF;
    fab8:	8f ef       	ldi	r24, 0xFF	; 255
    faba:	9f ef       	ldi	r25, 0xFF	; 255
    fabc:	9a 83       	std	Y+2, r25	; 0x02
    fabe:	89 83       	std	Y+1, r24	; 0x01
		EepromReadWord((void*)(pTaskInfo->eepromAddress + SEABIRD_GPCTD_SAMPLE_INTERVAL_OFFSET), (void*)&temp);
    fac0:	c9 01       	movw	r24, r18
    fac2:	80 5c       	subi	r24, 0xC0	; 192
    fac4:	9f 4f       	sbci	r25, 0xFF	; 255
    fac6:	be 01       	movw	r22, r28
    fac8:	6f 5f       	subi	r22, 0xFF	; 255
    faca:	7f 4f       	sbci	r23, 0xFF	; 255
    facc:	0e 94 4d 37 	call	0x6e9a	; 0x6e9a <EepromReadWord>
		if((temp == 0xFFFF) || (temp == 0x0000) || (temp > MAX_GPCTD_SAMPLE_INTERVAL))
    fad0:	89 81       	ldd	r24, Y+1	; 0x01
    fad2:	9a 81       	ldd	r25, Y+2	; 0x02
    fad4:	01 97       	sbiw	r24, 0x01	; 1
    fad6:	80 51       	subi	r24, 0x10	; 16
    fad8:	9e 40       	sbci	r25, 0x0E	; 14
    fada:	58 f0       	brcs	.+22     	; 0xfaf2 <Seabird_GPCTD_Init+0x100>
		{
			temp = DEFAULT_GPCTD_SAMPLE_INTERVAL;	//Default to 1 sample per minute if not defined
    fadc:	1a 83       	std	Y+2, r17	; 0x02
    fade:	09 83       	std	Y+1, r16	; 0x01
			EepromWriteWordUnSigned((void*)(pTaskInfo->eepromAddress + SEABIRD_GPCTD_SAMPLE_INTERVAL_OFFSET), temp);
    fae0:	f6 01       	movw	r30, r12
    fae2:	82 81       	ldd	r24, Z+2	; 0x02
    fae4:	93 81       	ldd	r25, Z+3	; 0x03
    fae6:	80 5c       	subi	r24, 0xC0	; 192
    fae8:	9f 4f       	sbci	r25, 0xFF	; 255
    faea:	6c e3       	ldi	r22, 0x3C	; 60
    faec:	70 e0       	ldi	r23, 0x00	; 0
    faee:	0e 94 d6 37 	call	0x6fac	; 0x6fac <EepromWriteWordUnSigned>
		}
		pTaskInfo->pBuf->sampleRate = temp;
    faf2:	d6 01       	movw	r26, r12
    faf4:	14 96       	adiw	r26, 0x04	; 4
    faf6:	ed 91       	ld	r30, X+
    faf8:	fc 91       	ld	r31, X
    fafa:	15 97       	sbiw	r26, 0x05	; 5
    fafc:	ef 5f       	subi	r30, 0xFF	; 255
    fafe:	fa 4f       	sbci	r31, 0xFA	; 250
    fb00:	89 81       	ldd	r24, Y+1	; 0x01
    fb02:	9a 81       	ldd	r25, Y+2	; 0x02
    fb04:	91 83       	std	Z+1, r25	; 0x01
    fb06:	80 83       	st	Z, r24

		//Get default packet size for data (# samples per packet)
		temp = 0xFFFF;
    fb08:	8f ef       	ldi	r24, 0xFF	; 255
    fb0a:	9f ef       	ldi	r25, 0xFF	; 255
    fb0c:	9a 83       	std	Y+2, r25	; 0x02
    fb0e:	89 83       	std	Y+1, r24	; 0x01
		EepromReadWord((void*)(pTaskInfo->eepromAddress + SEABIRD_GPCTD_PACKET_SIZE_OFFSET), (void*)&temp);
    fb10:	12 96       	adiw	r26, 0x02	; 2
    fb12:	8d 91       	ld	r24, X+
    fb14:	9c 91       	ld	r25, X
    fb16:	13 97       	sbiw	r26, 0x03	; 3
    fb18:	8e 5b       	subi	r24, 0xBE	; 190
    fb1a:	9f 4f       	sbci	r25, 0xFF	; 255
    fb1c:	be 01       	movw	r22, r28
    fb1e:	6f 5f       	subi	r22, 0xFF	; 255
    fb20:	7f 4f       	sbci	r23, 0xFF	; 255
    fb22:	0e 94 4d 37 	call	0x6e9a	; 0x6e9a <EepromReadWord>
		if((temp == 0xFFFF) || (temp == 0x0000))
    fb26:	89 81       	ldd	r24, Y+1	; 0x01
    fb28:	9a 81       	ldd	r25, Y+2	; 0x02
    fb2a:	01 97       	sbiw	r24, 0x01	; 1
    fb2c:	8e 5f       	subi	r24, 0xFE	; 254
    fb2e:	9f 4f       	sbci	r25, 0xFF	; 255
    fb30:	68 f0       	brcs	.+26     	; 0xfb4c <Seabird_GPCTD_Init+0x15a>
		{
			temp = MAX_GPCTD_SAMPLES;	//Default to 10 samples per packet if not defined
    fb32:	8a e0       	ldi	r24, 0x0A	; 10
    fb34:	90 e0       	ldi	r25, 0x00	; 0
    fb36:	9a 83       	std	Y+2, r25	; 0x02
    fb38:	89 83       	std	Y+1, r24	; 0x01
			EepromWriteWordUnSigned((void*)(pTaskInfo->eepromAddress + SEABIRD_GPCTD_PACKET_SIZE_OFFSET), temp);
    fb3a:	f6 01       	movw	r30, r12
    fb3c:	82 81       	ldd	r24, Z+2	; 0x02
    fb3e:	93 81       	ldd	r25, Z+3	; 0x03
    fb40:	8e 5b       	subi	r24, 0xBE	; 190
    fb42:	9f 4f       	sbci	r25, 0xFF	; 255
    fb44:	6a e0       	ldi	r22, 0x0A	; 10
    fb46:	70 e0       	ldi	r23, 0x00	; 0
    fb48:	0e 94 d6 37 	call	0x6fac	; 0x6fac <EepromWriteWordUnSigned>
		}
		pTaskInfo->pBuf->samplePacketSize = temp;
    fb4c:	d6 01       	movw	r26, r12
    fb4e:	14 96       	adiw	r26, 0x04	; 4
    fb50:	ed 91       	ld	r30, X+
    fb52:	fc 91       	ld	r31, X
    fb54:	15 97       	sbiw	r26, 0x05	; 5
    fb56:	ed 5f       	subi	r30, 0xFD	; 253
    fb58:	fa 4f       	sbci	r31, 0xFA	; 250
    fb5a:	89 81       	ldd	r24, Y+1	; 0x01
    fb5c:	9a 81       	ldd	r25, Y+2	; 0x02
    fb5e:	91 83       	std	Z+1, r25	; 0x01
    fb60:	80 83       	st	Z, r24

		//Get default destination for data
		temp = 0xFFFF;
    fb62:	8f ef       	ldi	r24, 0xFF	; 255
    fb64:	9f ef       	ldi	r25, 0xFF	; 255
    fb66:	9a 83       	std	Y+2, r25	; 0x02
    fb68:	89 83       	std	Y+1, r24	; 0x01
		EepromReadWord((void*)(pTaskInfo->eepromAddress + SEABIRD_GPCTD_PACKET_DESTINATION_OFFSET), (void*)&temp);
    fb6a:	12 96       	adiw	r26, 0x02	; 2
    fb6c:	8d 91       	ld	r24, X+
    fb6e:	9c 91       	ld	r25, X
    fb70:	13 97       	sbiw	r26, 0x03	; 3
    fb72:	8c 5b       	subi	r24, 0xBC	; 188
    fb74:	9f 4f       	sbci	r25, 0xFF	; 255
    fb76:	be 01       	movw	r22, r28
    fb78:	6f 5f       	subi	r22, 0xFF	; 255
    fb7a:	7f 4f       	sbci	r23, 0xFF	; 255
    fb7c:	0e 94 4d 37 	call	0x6e9a	; 0x6e9a <EepromReadWord>
		if((temp == 0xFFFF) || (temp == 0x0000))
    fb80:	89 81       	ldd	r24, Y+1	; 0x01
    fb82:	9a 81       	ldd	r25, Y+2	; 0x02
    fb84:	01 97       	sbiw	r24, 0x01	; 1
    fb86:	8e 5f       	subi	r24, 0xFE	; 254
    fb88:	9f 4f       	sbci	r25, 0xFF	; 255
    fb8a:	68 f0       	brcs	.+26     	; 0xfba6 <Seabird_GPCTD_Init+0x1b4>
		{
			temp = FLOAT_TO_SHORE_VIA_DEFAULT;	//Default to data to shore via default path
    fb8c:	82 e0       	ldi	r24, 0x02	; 2
    fb8e:	90 e0       	ldi	r25, 0x00	; 0
    fb90:	9a 83       	std	Y+2, r25	; 0x02
    fb92:	89 83       	std	Y+1, r24	; 0x01
			EepromWriteWordUnSigned((void*)(pTaskInfo->eepromAddress + SEABIRD_GPCTD_PACKET_DESTINATION_OFFSET), temp);
    fb94:	f6 01       	movw	r30, r12
    fb96:	82 81       	ldd	r24, Z+2	; 0x02
    fb98:	93 81       	ldd	r25, Z+3	; 0x03
    fb9a:	8c 5b       	subi	r24, 0xBC	; 188
    fb9c:	9f 4f       	sbci	r25, 0xFF	; 255
    fb9e:	62 e0       	ldi	r22, 0x02	; 2
    fba0:	70 e0       	ldi	r23, 0x00	; 0
    fba2:	0e 94 d6 37 	call	0x6fac	; 0x6fac <EepromWriteWordUnSigned>
		}
		pTaskInfo->pBuf->destination = temp;
    fba6:	d6 01       	movw	r26, r12
    fba8:	14 96       	adiw	r26, 0x04	; 4
    fbaa:	ed 91       	ld	r30, X+
    fbac:	fc 91       	ld	r31, X
    fbae:	15 97       	sbiw	r26, 0x05	; 5
    fbb0:	eb 5f       	subi	r30, 0xFB	; 251
    fbb2:	fa 4f       	sbci	r31, 0xFA	; 250
    fbb4:	89 81       	ldd	r24, Y+1	; 0x01
    fbb6:	9a 81       	ldd	r25, Y+2	; 0x02
    fbb8:	91 83       	std	Z+1, r25	; 0x01
    fbba:	80 83       	st	Z, r24

		temp = 0xFFFF;
    fbbc:	8f ef       	ldi	r24, 0xFF	; 255
    fbbe:	9f ef       	ldi	r25, 0xFF	; 255
    fbc0:	9a 83       	std	Y+2, r25	; 0x02
    fbc2:	89 83       	std	Y+1, r24	; 0x01
		EepromReadWord((void*)(pTaskInfo->eepromAddress + SEABIRD_GPCTD_PACKET_CYCLE_OFFSET), (void*)&temp);
    fbc4:	12 96       	adiw	r26, 0x02	; 2
    fbc6:	8d 91       	ld	r24, X+
    fbc8:	9c 91       	ld	r25, X
    fbca:	13 97       	sbiw	r26, 0x03	; 3
    fbcc:	89 5b       	subi	r24, 0xB9	; 185
    fbce:	9f 4f       	sbci	r25, 0xFF	; 255
    fbd0:	be 01       	movw	r22, r28
    fbd2:	6f 5f       	subi	r22, 0xFF	; 255
    fbd4:	7f 4f       	sbci	r23, 0xFF	; 255
    fbd6:	0e 94 4d 37 	call	0x6e9a	; 0x6e9a <EepromReadWord>
		if(temp > MAX_OFF_TIME)		//12 hours = 43200 seconds
    fbda:	89 81       	ldd	r24, Y+1	; 0x01
    fbdc:	9a 81       	ldd	r25, Y+2	; 0x02
    fbde:	81 5c       	subi	r24, 0xC1	; 193
    fbe0:	98 4a       	sbci	r25, 0xA8	; 168
    fbe2:	58 f0       	brcs	.+22     	; 0xfbfa <Seabird_GPCTD_Init+0x208>
		{
			temp = 0;	//Default to 0 seconds off between sample blocks
    fbe4:	1a 82       	std	Y+2, r1	; 0x02
    fbe6:	19 82       	std	Y+1, r1	; 0x01
			EepromWriteWordUnSigned((void*)(pTaskInfo->eepromAddress + SEABIRD_GPCTD_PACKET_CYCLE_OFFSET), temp);
    fbe8:	f6 01       	movw	r30, r12
    fbea:	82 81       	ldd	r24, Z+2	; 0x02
    fbec:	93 81       	ldd	r25, Z+3	; 0x03
    fbee:	89 5b       	subi	r24, 0xB9	; 185
    fbf0:	9f 4f       	sbci	r25, 0xFF	; 255
    fbf2:	60 e0       	ldi	r22, 0x00	; 0
    fbf4:	70 e0       	ldi	r23, 0x00	; 0
    fbf6:	0e 94 d6 37 	call	0x6fac	; 0x6fac <EepromWriteWordUnSigned>
		}
		pTaskInfo->pBuf->offTime = temp;
    fbfa:	d6 01       	movw	r26, r12
    fbfc:	14 96       	adiw	r26, 0x04	; 4
    fbfe:	ed 91       	ld	r30, X+
    fc00:	fc 91       	ld	r31, X
    fc02:	15 97       	sbiw	r26, 0x05	; 5
    fc04:	e7 5e       	subi	r30, 0xE7	; 231
    fc06:	f6 4f       	sbci	r31, 0xF6	; 246
    fc08:	89 81       	ldd	r24, Y+1	; 0x01
    fc0a:	9a 81       	ldd	r25, Y+2	; 0x02
    fc0c:	91 83       	std	Z+1, r25	; 0x01
    fc0e:	80 83       	st	Z, r24

		
		pTaskInfo->pBuf->initState = 0xFF;
    fc10:	e9 51       	subi	r30, 0x19	; 25
    fc12:	f4 40       	sbci	r31, 0x04	; 4
    fc14:	8f ef       	ldi	r24, 0xFF	; 255
    fc16:	80 83       	st	Z, r24
		EepromReadByte((void*)(pTaskInfo->eepromAddress + SEABIRD_GPCTD_AUTORUN_OFFSET), (void*)&pTaskInfo->pBuf->initState);
    fc18:	12 96       	adiw	r26, 0x02	; 2
    fc1a:	8d 91       	ld	r24, X+
    fc1c:	9c 91       	ld	r25, X
    fc1e:	13 97       	sbiw	r26, 0x03	; 3
    fc20:	87 5b       	subi	r24, 0xB7	; 183
    fc22:	9f 4f       	sbci	r25, 0xFF	; 255
    fc24:	bf 01       	movw	r22, r30
    fc26:	0e 94 38 37 	call	0x6e70	; 0x6e70 <EepromReadByte>
		if((pTaskInfo->pBuf->initState != AUTORUN_ON) && (pTaskInfo->pBuf->initState != AUTORUN_OFF))
    fc2a:	d6 01       	movw	r26, r12
    fc2c:	14 96       	adiw	r26, 0x04	; 4
    fc2e:	ed 91       	ld	r30, X+
    fc30:	fc 91       	ld	r31, X
    fc32:	15 97       	sbiw	r26, 0x05	; 5
    fc34:	e0 50       	subi	r30, 0x00	; 0
    fc36:	fb 4f       	sbci	r31, 0xFB	; 251
    fc38:	80 81       	ld	r24, Z
    fc3a:	82 30       	cpi	r24, 0x02	; 2
    fc3c:	50 f0       	brcs	.+20     	; 0xfc52 <Seabird_GPCTD_Init+0x260>
		{
			pTaskInfo->pBuf->initState = AUTORUN_OFF;	//Default to Auto-Run Off
    fc3e:	10 82       	st	Z, r1
			EepromWriteByteUnSigned((void*)(pTaskInfo->eepromAddress + SEABIRD_GPCTD_AUTORUN_OFFSET), pTaskInfo->pBuf->initState);
    fc40:	12 96       	adiw	r26, 0x02	; 2
    fc42:	8d 91       	ld	r24, X+
    fc44:	9c 91       	ld	r25, X
    fc46:	13 97       	sbiw	r26, 0x03	; 3
    fc48:	87 5b       	subi	r24, 0xB7	; 183
    fc4a:	9f 4f       	sbci	r25, 0xFF	; 255
    fc4c:	60 e0       	ldi	r22, 0x00	; 0
    fc4e:	0e 94 9f 37 	call	0x6f3e	; 0x6f3e <EepromWriteByteUnSigned>
		}


		temp = 0xFFFF;
    fc52:	8f ef       	ldi	r24, 0xFF	; 255
    fc54:	9f ef       	ldi	r25, 0xFF	; 255
    fc56:	9a 83       	std	Y+2, r25	; 0x02
    fc58:	89 83       	std	Y+1, r24	; 0x01
		EepromReadWord((void*)(pTaskInfo->eepromAddress + SEABIRD_GPCTD_PUMP_FLUSH_OFFSET), (void*)&temp);
    fc5a:	f6 01       	movw	r30, r12
    fc5c:	82 81       	ldd	r24, Z+2	; 0x02
    fc5e:	93 81       	ldd	r25, Z+3	; 0x03
    fc60:	80 5b       	subi	r24, 0xB0	; 176
    fc62:	9f 4f       	sbci	r25, 0xFF	; 255
    fc64:	be 01       	movw	r22, r28
    fc66:	6f 5f       	subi	r22, 0xFF	; 255
    fc68:	7f 4f       	sbci	r23, 0xFF	; 255
    fc6a:	0e 94 4d 37 	call	0x6e9a	; 0x6e9a <EepromReadWord>
		if(temp > MAX_FLUSH_TIME)		//12 hours = 43200 seconds
    fc6e:	89 81       	ldd	r24, Y+1	; 0x01
    fc70:	9a 81       	ldd	r25, Y+2	; 0x02
    fc72:	8f 36       	cpi	r24, 0x6F	; 111
    fc74:	91 05       	cpc	r25, r1
    fc76:	68 f0       	brcs	.+26     	; 0xfc92 <Seabird_GPCTD_Init+0x2a0>
		{
			temp = 0;	//Default to 0 seconds of pre-pump time to flush plumbing
    fc78:	1a 82       	std	Y+2, r1	; 0x02
    fc7a:	19 82       	std	Y+1, r1	; 0x01
			EepromWriteWordUnSigned((void*)(pTaskInfo->eepromAddress + SEABIRD_GPCTD_PUMP_FLUSH_OFFSET), temp);
    fc7c:	d6 01       	movw	r26, r12
    fc7e:	12 96       	adiw	r26, 0x02	; 2
    fc80:	8d 91       	ld	r24, X+
    fc82:	9c 91       	ld	r25, X
    fc84:	13 97       	sbiw	r26, 0x03	; 3
    fc86:	80 5b       	subi	r24, 0xB0	; 176
    fc88:	9f 4f       	sbci	r25, 0xFF	; 255
    fc8a:	60 e0       	ldi	r22, 0x00	; 0
    fc8c:	70 e0       	ldi	r23, 0x00	; 0
    fc8e:	0e 94 d6 37 	call	0x6fac	; 0x6fac <EepromWriteWordUnSigned>
		}
		pTaskInfo->pBuf->flushTime = temp;
    fc92:	d6 01       	movw	r26, r12
    fc94:	14 96       	adiw	r26, 0x04	; 4
    fc96:	ed 91       	ld	r30, X+
    fc98:	fc 91       	ld	r31, X
    fc9a:	15 97       	sbiw	r26, 0x05	; 5
    fc9c:	e0 5e       	subi	r30, 0xE0	; 224
    fc9e:	f6 4f       	sbci	r31, 0xF6	; 246
    fca0:	89 81       	ldd	r24, Y+1	; 0x01
    fca2:	9a 81       	ldd	r25, Y+2	; 0x02
    fca4:	91 83       	std	Z+1, r25	; 0x01
    fca6:	80 83       	st	Z, r24

		if(pTaskInfo->pBuf->initState == AUTORUN_ON)
    fca8:	e0 52       	subi	r30, 0x20	; 32
    fcaa:	f4 40       	sbci	r31, 0x04	; 4
    fcac:	80 81       	ld	r24, Z
    fcae:	81 30       	cpi	r24, 0x01	; 1
    fcb0:	69 f4       	brne	.+26     	; 0xfccc <Seabird_GPCTD_Init+0x2da>
		{
			char tempBuf[2] = " ";
    fcb2:	80 91 32 04 	lds	r24, 0x0432
    fcb6:	90 91 33 04 	lds	r25, 0x0433
    fcba:	9c 83       	std	Y+4, r25	; 0x04
    fcbc:	8b 83       	std	Y+3, r24	; 0x03
			SBGPCTD_ParseCommand(pTaskInfo, 'r', tempBuf);
    fcbe:	c6 01       	movw	r24, r12
    fcc0:	62 e7       	ldi	r22, 0x72	; 114
    fcc2:	ae 01       	movw	r20, r28
    fcc4:	4d 5f       	subi	r20, 0xFD	; 253
    fcc6:	5f 4f       	sbci	r21, 0xFF	; 255
    fcc8:	0e 94 e3 77 	call	0xefc6	; 0xefc6 <SBGPCTD_ParseCommand>


	}

	return SUCCESS;
}
    fccc:	8f ef       	ldi	r24, 0xFF	; 255
    fcce:	0f 90       	pop	r0
    fcd0:	0f 90       	pop	r0
    fcd2:	0f 90       	pop	r0
    fcd4:	0f 90       	pop	r0
    fcd6:	cf 91       	pop	r28
    fcd8:	df 91       	pop	r29
    fcda:	1f 91       	pop	r17
    fcdc:	0f 91       	pop	r16
    fcde:	ef 90       	pop	r14
    fce0:	df 90       	pop	r13
    fce2:	cf 90       	pop	r12
    fce4:	08 95       	ret

0000fce6 <SerialPortPassThrough37SI>:
	return retval;
}

void SerialPortPassThrough37SI(uint8_t port)
{
	readyForSerialPassThru = TRUE;
    fce6:	8f ef       	ldi	r24, 0xFF	; 255
    fce8:	80 93 9e a1 	sts	0xA19E, r24

	while(1)
	{
		OSTimeDlyHMSM(1,0,0,0);
    fcec:	81 e0       	ldi	r24, 0x01	; 1
    fcee:	60 e0       	ldi	r22, 0x00	; 0
    fcf0:	40 e0       	ldi	r20, 0x00	; 0
    fcf2:	20 e0       	ldi	r18, 0x00	; 0
    fcf4:	30 e0       	ldi	r19, 0x00	; 0
    fcf6:	0e 94 2a 2e 	call	0x5c54	; 0x5c54 <OSTimeDlyHMSM>
    fcfa:	f8 cf       	rjmp	.-16     	; 0xfcec <SerialPortPassThrough37SI+0x6>

0000fcfc <SB37SI_QueueFile>:
	return retval;
}


uint8_t SB37SI_QueueFile(PSEABIRD_CTD_37_SI_TASK pTaskInfo, uint32_t fileID)
{
    fcfc:	8f 92       	push	r8
    fcfe:	9f 92       	push	r9
    fd00:	af 92       	push	r10
    fd02:	bf 92       	push	r11
    fd04:	cf 92       	push	r12
    fd06:	df 92       	push	r13
    fd08:	ef 92       	push	r14
    fd0a:	ff 92       	push	r15
    fd0c:	0f 93       	push	r16
    fd0e:	1f 93       	push	r17
    fd10:	df 93       	push	r29
    fd12:	cf 93       	push	r28
    fd14:	cd b7       	in	r28, 0x3d	; 61
    fd16:	de b7       	in	r29, 0x3e	; 62
    fd18:	62 97       	sbiw	r28, 0x12	; 18
    fd1a:	0f b6       	in	r0, 0x3f	; 63
    fd1c:	f8 94       	cli
    fd1e:	de bf       	out	0x3e, r29	; 62
    fd20:	0f be       	out	0x3f, r0	; 63
    fd22:	cd bf       	out	0x3d, r28	; 61
    fd24:	4c 01       	movw	r8, r24
    fd26:	5a 01       	movw	r10, r20
    fd28:	6b 01       	movw	r12, r22
	uint8_t retval = FAIL;
	PFS_REPORT pReport;
	uint8_t err = 0;
    fd2a:	19 82       	std	Y+1, r1	; 0x01
	tm* dateTime;
	time_t time;
	//OS Specific -- protecting Queue head and tail values
	OSMutexPend(pMutexFloatQueue, INFINITE, &err);
    fd2c:	80 91 51 19 	lds	r24, 0x1951
    fd30:	90 91 52 19 	lds	r25, 0x1952
    fd34:	60 e0       	ldi	r22, 0x00	; 0
    fd36:	70 e0       	ldi	r23, 0x00	; 0
    fd38:	ae 01       	movw	r20, r28
    fd3a:	4f 5f       	subi	r20, 0xFF	; 255
    fd3c:	5f 4f       	sbci	r21, 0xFF	; 255
    fd3e:	0e 94 c2 28 	call	0x5184	; 0x5184 <OSMutexPend>

	pReport = (PFS_REPORT)&(txFloatData[headFloatTx]);
    fd42:	80 91 93 07 	lds	r24, 0x0793
    fd46:	90 e0       	ldi	r25, 0x00	; 0
    fd48:	26 e3       	ldi	r18, 0x36	; 54
    fd4a:	31 e0       	ldi	r19, 0x01	; 1
    fd4c:	82 9f       	mul	r24, r18
    fd4e:	80 01       	movw	r16, r0
    fd50:	83 9f       	mul	r24, r19
    fd52:	10 0d       	add	r17, r0
    fd54:	92 9f       	mul	r25, r18
    fd56:	10 0d       	add	r17, r0
    fd58:	11 24       	eor	r1, r1
    fd5a:	03 5a       	subi	r16, 0xA3	; 163
    fd5c:	16 45       	sbci	r17, 0x56	; 86

	memset(pReport, 0, sizeof(FS_REPORT));
    fd5e:	8a e5       	ldi	r24, 0x5A	; 90
    fd60:	d8 01       	movw	r26, r16
    fd62:	1d 92       	st	X+, r1
    fd64:	8a 95       	dec	r24
    fd66:	e9 f7       	brne	.-6      	; 0xfd62 <SB37SI_QueueFile+0x66>

	pReport->headers.length  = sizeof(FS_REPORT) + CRC16_SIZE;
    fd68:	8c e5       	ldi	r24, 0x5C	; 92
    fd6a:	90 e0       	ldi	r25, 0x00	; 0
    fd6c:	f8 01       	movw	r30, r16
    fd6e:	91 83       	std	Z+1, r25	; 0x01
    fd70:	80 83       	st	Z, r24
	pReport->headers.destination = FLOAT_FS_INTERFACE;
    fd72:	85 e0       	ldi	r24, 0x05	; 5
    fd74:	90 e0       	ldi	r25, 0x00	; 0
    fd76:	93 83       	std	Z+3, r25	; 0x03
    fd78:	82 83       	std	Z+2, r24	; 0x02
	pReport->type = NEW_FILE_AVAILABLE;
    fd7a:	80 e6       	ldi	r24, 0x60	; 96
    fd7c:	84 87       	std	Z+12, r24	; 0x0c

	time=gettime();
    fd7e:	0e 94 3c 34 	call	0x6878	; 0x6878 <gettime>
    fd82:	6a 83       	std	Y+2, r22	; 0x02
    fd84:	7b 83       	std	Y+3, r23	; 0x03
    fd86:	8c 83       	std	Y+4, r24	; 0x04
    fd88:	9d 83       	std	Y+5, r25	; 0x05

	//Need to fill in these values appropriately
	pReport->newFile.fileSize = fileOutSize[pTaskInfo->portNum];
    fd8a:	d4 01       	movw	r26, r8
    fd8c:	11 96       	adiw	r26, 0x01	; 1
    fd8e:	ec 91       	ld	r30, X
    fd90:	f0 e0       	ldi	r31, 0x00	; 0
    fd92:	ee 0f       	add	r30, r30
    fd94:	ff 1f       	adc	r31, r31
    fd96:	ef 5a       	subi	r30, 0xAF	; 175
    fd98:	f2 46       	sbci	r31, 0x62	; 98
    fd9a:	80 81       	ld	r24, Z
    fd9c:	91 81       	ldd	r25, Z+1	; 0x01
    fd9e:	a0 e0       	ldi	r26, 0x00	; 0
    fda0:	b0 e0       	ldi	r27, 0x00	; 0
    fda2:	f8 01       	movw	r30, r16
    fda4:	82 8f       	std	Z+26, r24	; 0x1a
    fda6:	93 8f       	std	Z+27, r25	; 0x1b
    fda8:	a4 8f       	std	Z+28, r26	; 0x1c
    fdaa:	b5 8f       	std	Z+29, r27	; 0x1d
	dateTime = gmtime(&time);
    fdac:	92 e0       	ldi	r25, 0x02	; 2
    fdae:	e9 2e       	mov	r14, r25
    fdb0:	f1 2c       	mov	r15, r1
    fdb2:	ec 0e       	add	r14, r28
    fdb4:	fd 1e       	adc	r15, r29
    fdb6:	c7 01       	movw	r24, r14
    fdb8:	0e 94 32 35 	call	0x6a64	; 0x6a64 <gmtime>
    fdbc:	fc 01       	movw	r30, r24
	pReport->newFile.creationDate.day = dateTime->tm_mday;
    fdbe:	86 81       	ldd	r24, Z+6	; 0x06
    fdc0:	d8 01       	movw	r26, r16
    fdc2:	92 96       	adiw	r26, 0x22	; 34
    fdc4:	8c 93       	st	X, r24
    fdc6:	92 97       	sbiw	r26, 0x22	; 34
	pReport->newFile.creationDate.hour = dateTime->tm_hour;
    fdc8:	84 81       	ldd	r24, Z+4	; 0x04
    fdca:	5e 96       	adiw	r26, 0x1e	; 30
    fdcc:	8c 93       	st	X, r24
    fdce:	5e 97       	sbiw	r26, 0x1e	; 30
	pReport->newFile.creationDate.minute = dateTime->tm_min;
    fdd0:	82 81       	ldd	r24, Z+2	; 0x02
    fdd2:	5f 96       	adiw	r26, 0x1f	; 31
    fdd4:	8c 93       	st	X, r24
    fdd6:	5f 97       	sbiw	r26, 0x1f	; 31
	pReport->newFile.creationDate.month = dateTime->tm_mon + 1;
    fdd8:	80 85       	ldd	r24, Z+8	; 0x08
    fdda:	8f 5f       	subi	r24, 0xFF	; 255
    fddc:	91 96       	adiw	r26, 0x21	; 33
    fdde:	8c 93       	st	X, r24
    fde0:	91 97       	sbiw	r26, 0x21	; 33
	pReport->newFile.creationDate.second = dateTime->tm_sec;
    fde2:	80 81       	ld	r24, Z
    fde4:	90 96       	adiw	r26, 0x20	; 32
    fde6:	8c 93       	st	X, r24
    fde8:	90 97       	sbiw	r26, 0x20	; 32
	pReport->newFile.creationDate.year = (uint8_t)(dateTime->tm_year - 100);
    fdea:	82 85       	ldd	r24, Z+10	; 0x0a
    fdec:	84 56       	subi	r24, 0x64	; 100
    fdee:	93 96       	adiw	r26, 0x23	; 35
    fdf0:	8c 93       	st	X, r24
	dateTime = gmtime(&time);
    fdf2:	c7 01       	movw	r24, r14
    fdf4:	0e 94 32 35 	call	0x6a64	; 0x6a64 <gmtime>
    fdf8:	fc 01       	movw	r30, r24
	pReport->newFile.modifiedDate.day = dateTime->tm_mday;
    fdfa:	86 81       	ldd	r24, Z+6	; 0x06
    fdfc:	d8 01       	movw	r26, r16
    fdfe:	98 96       	adiw	r26, 0x28	; 40
    fe00:	8c 93       	st	X, r24
    fe02:	98 97       	sbiw	r26, 0x28	; 40
	pReport->newFile.modifiedDate.hour = dateTime->tm_hour;
    fe04:	84 81       	ldd	r24, Z+4	; 0x04
    fe06:	94 96       	adiw	r26, 0x24	; 36
    fe08:	8c 93       	st	X, r24
    fe0a:	94 97       	sbiw	r26, 0x24	; 36
	pReport->newFile.modifiedDate.minute = dateTime->tm_min;
    fe0c:	82 81       	ldd	r24, Z+2	; 0x02
    fe0e:	95 96       	adiw	r26, 0x25	; 37
    fe10:	8c 93       	st	X, r24
    fe12:	95 97       	sbiw	r26, 0x25	; 37
	pReport->newFile.modifiedDate.month = dateTime->tm_mon + 1;
    fe14:	80 85       	ldd	r24, Z+8	; 0x08
    fe16:	8f 5f       	subi	r24, 0xFF	; 255
    fe18:	97 96       	adiw	r26, 0x27	; 39
    fe1a:	8c 93       	st	X, r24
    fe1c:	97 97       	sbiw	r26, 0x27	; 39
	pReport->newFile.modifiedDate.second = dateTime->tm_sec;
    fe1e:	80 81       	ld	r24, Z
    fe20:	96 96       	adiw	r26, 0x26	; 38
    fe22:	8c 93       	st	X, r24
    fe24:	96 97       	sbiw	r26, 0x26	; 38
	pReport->newFile.modifiedDate.year = (uint8_t)(dateTime->tm_year - 100);
    fe26:	82 85       	ldd	r24, Z+10	; 0x0a
    fe28:	84 56       	subi	r24, 0x64	; 100
    fe2a:	99 96       	adiw	r26, 0x29	; 41
    fe2c:	8c 93       	st	X, r24
    fe2e:	99 97       	sbiw	r26, 0x29	; 41

	pReport->newFile.fileAttributes = 0;
    fe30:	9a 96       	adiw	r26, 0x2a	; 42
    fe32:	1c 92       	st	X, r1
	memset(&pReport->newFile.calculatedMD5, 0, sizeof(MD5));
    fe34:	c8 01       	movw	r24, r16
    fe36:	cf 96       	adiw	r24, 0x3f	; 63
    fe38:	20 e1       	ldi	r18, 0x10	; 16
    fe3a:	dc 01       	movw	r26, r24
    fe3c:	82 2f       	mov	r24, r18
    fe3e:	1d 92       	st	X+, r1
    fe40:	8a 95       	dec	r24
    fe42:	e9 f7       	brne	.-6      	; 0xfe3e <SB37SI_QueueFile+0x142>
	memset(&pReport->newFile.providedMD5, 0, sizeof(MD5));
    fe44:	c8 01       	movw	r24, r16
    fe46:	8d 96       	adiw	r24, 0x2d	; 45
    fe48:	dc 01       	movw	r26, r24
    fe4a:	1d 92       	st	X+, r1
    fe4c:	2a 95       	dec	r18
    fe4e:	e9 f7       	brne	.-6      	; 0xfe4a <SB37SI_QueueFile+0x14e>
	pReport->newFile.calculatedCRC = 0;
    fe50:	f8 01       	movw	r30, r16
    fe52:	16 ae       	std	Z+62, r1	; 0x3e
    fe54:	15 ae       	std	Z+61, r1	; 0x3d
	pReport->newFile.providedCRC = 0;
    fe56:	14 a6       	std	Z+44, r1	; 0x2c
    fe58:	13 a6       	std	Z+43, r1	; 0x2b
	pReport->newFile.storageControllerAddress = mainTaskAddress | pTaskInfo->portNum;
    fe5a:	d4 01       	movw	r26, r8
    fe5c:	11 96       	adiw	r26, 0x01	; 1
    fe5e:	8c 91       	ld	r24, X
    fe60:	90 e0       	ldi	r25, 0x00	; 0
    fe62:	20 91 e4 03 	lds	r18, 0x03E4
    fe66:	30 91 e5 03 	lds	r19, 0x03E5
    fe6a:	82 2b       	or	r24, r18
    fe6c:	93 2b       	or	r25, r19
    fe6e:	96 87       	std	Z+14, r25	; 0x0e
    fe70:	85 87       	std	Z+13, r24	; 0x0d

	char fileName[13];
	sprintf(fileName, "%.8lX.txt", fileID);
    fe72:	ed b7       	in	r30, 0x3d	; 61
    fe74:	fe b7       	in	r31, 0x3e	; 62
    fe76:	38 97       	sbiw	r30, 0x08	; 8
    fe78:	0f b6       	in	r0, 0x3f	; 63
    fe7a:	f8 94       	cli
    fe7c:	fe bf       	out	0x3e, r31	; 62
    fe7e:	0f be       	out	0x3f, r0	; 63
    fe80:	ed bf       	out	0x3d, r30	; 61
    fe82:	31 96       	adiw	r30, 0x01	; 1
    fe84:	86 e0       	ldi	r24, 0x06	; 6
    fe86:	e8 2e       	mov	r14, r24
    fe88:	f1 2c       	mov	r15, r1
    fe8a:	ec 0e       	add	r14, r28
    fe8c:	fd 1e       	adc	r15, r29
    fe8e:	ad b7       	in	r26, 0x3d	; 61
    fe90:	be b7       	in	r27, 0x3e	; 62
    fe92:	12 96       	adiw	r26, 0x02	; 2
    fe94:	fc 92       	st	X, r15
    fe96:	ee 92       	st	-X, r14
    fe98:	11 97       	sbiw	r26, 0x01	; 1
    fe9a:	84 e3       	ldi	r24, 0x34	; 52
    fe9c:	94 e0       	ldi	r25, 0x04	; 4
    fe9e:	93 83       	std	Z+3, r25	; 0x03
    fea0:	82 83       	std	Z+2, r24	; 0x02
    fea2:	a4 82       	std	Z+4, r10	; 0x04
    fea4:	b5 82       	std	Z+5, r11	; 0x05
    fea6:	c6 82       	std	Z+6, r12	; 0x06
    fea8:	d7 82       	std	Z+7, r13	; 0x07
    feaa:	0e 94 2d f1 	call	0x1e25a	; 0x1e25a <sprintf>

	//DotToPad(pReport->newFile.fileName, "CTD_Out.txt");
	DotToPad(pReport->newFile.fileName, fileName);
    feae:	ed b7       	in	r30, 0x3d	; 61
    feb0:	fe b7       	in	r31, 0x3e	; 62
    feb2:	38 96       	adiw	r30, 0x08	; 8
    feb4:	0f b6       	in	r0, 0x3f	; 63
    feb6:	f8 94       	cli
    feb8:	fe bf       	out	0x3e, r31	; 62
    feba:	0f be       	out	0x3f, r0	; 63
    febc:	ed bf       	out	0x3d, r30	; 61
    febe:	c8 01       	movw	r24, r16
    fec0:	0f 96       	adiw	r24, 0x0f	; 15
    fec2:	b7 01       	movw	r22, r14
    fec4:	0e 94 87 3e 	call	0x7d0e	; 0x7d0e <DotToPad>

	(headFloatTx < (MAX_FLOAT_BUFFERS - 1)) ? (headFloatTx++) : (headFloatTx = 0);
    fec8:	80 91 93 07 	lds	r24, 0x0793
    fecc:	87 30       	cpi	r24, 0x07	; 7
    fece:	20 f4       	brcc	.+8      	; 0xfed8 <SB37SI_QueueFile+0x1dc>
    fed0:	8f 5f       	subi	r24, 0xFF	; 255
    fed2:	80 93 93 07 	sts	0x0793, r24
    fed6:	02 c0       	rjmp	.+4      	; 0xfedc <SB37SI_QueueFile+0x1e0>
    fed8:	10 92 93 07 	sts	0x0793, r1
	
	if(headFloatTx == tailFloatTx)
    fedc:	90 91 93 07 	lds	r25, 0x0793
    fee0:	80 91 94 07 	lds	r24, 0x0794
    fee4:	98 17       	cp	r25, r24
    fee6:	41 f4       	brne	.+16     	; 0xfef8 <SB37SI_QueueFile+0x1fc>
	{
		(tailFloatTx < (MAX_FLOAT_BUFFERS - 1)) ? (tailFloatTx++) : (tailFloatTx = 0);
    fee8:	97 30       	cpi	r25, 0x07	; 7
    feea:	20 f4       	brcc	.+8      	; 0xfef4 <SB37SI_QueueFile+0x1f8>
    feec:	9f 5f       	subi	r25, 0xFF	; 255
    feee:	90 93 94 07 	sts	0x0794, r25
    fef2:	02 c0       	rjmp	.+4      	; 0xfef8 <SB37SI_QueueFile+0x1fc>
    fef4:	10 92 94 07 	sts	0x0794, r1
	}

	//OS Specific -- protecting Queue head and tail values
	OSMutexPost(pMutexFloatQueue);
    fef8:	80 91 51 19 	lds	r24, 0x1951
    fefc:	90 91 52 19 	lds	r25, 0x1952
    ff00:	0e 94 36 27 	call	0x4e6c	; 0x4e6c <OSMutexPost>


	return retval;
}
    ff04:	80 e0       	ldi	r24, 0x00	; 0
    ff06:	62 96       	adiw	r28, 0x12	; 18
    ff08:	0f b6       	in	r0, 0x3f	; 63
    ff0a:	f8 94       	cli
    ff0c:	de bf       	out	0x3e, r29	; 62
    ff0e:	0f be       	out	0x3f, r0	; 63
    ff10:	cd bf       	out	0x3d, r28	; 61
    ff12:	cf 91       	pop	r28
    ff14:	df 91       	pop	r29
    ff16:	1f 91       	pop	r17
    ff18:	0f 91       	pop	r16
    ff1a:	ff 90       	pop	r15
    ff1c:	ef 90       	pop	r14
    ff1e:	df 90       	pop	r13
    ff20:	cf 90       	pop	r12
    ff22:	bf 90       	pop	r11
    ff24:	af 90       	pop	r10
    ff26:	9f 90       	pop	r9
    ff28:	8f 90       	pop	r8
    ff2a:	08 95       	ret

0000ff2c <SB37SI_AlphatoMonth>:
	return SUCCESS;
}


uint8_t SB37SI_AlphatoMonth(char* pChar)
{
    ff2c:	ff 92       	push	r15
    ff2e:	0f 93       	push	r16
    ff30:	1f 93       	push	r17
    ff32:	cf 93       	push	r28
    ff34:	df 93       	push	r29
    ff36:	8c 01       	movw	r16, r24
	uint8_t month = 0;

	if(strncmp(pChar, "Jan", 3) == 0)
    ff38:	6e e3       	ldi	r22, 0x3E	; 62
    ff3a:	74 e0       	ldi	r23, 0x04	; 4
    ff3c:	43 e0       	ldi	r20, 0x03	; 3
    ff3e:	50 e0       	ldi	r21, 0x00	; 0
    ff40:	0e 94 59 f0 	call	0x1e0b2	; 0x1e0b2 <strncmp>
    ff44:	ec 01       	movw	r28, r24
		month = 1;
	if(strncmp(pChar, "Feb", 3) == 0)
    ff46:	c8 01       	movw	r24, r16
    ff48:	62 e4       	ldi	r22, 0x42	; 66
    ff4a:	74 e0       	ldi	r23, 0x04	; 4
    ff4c:	43 e0       	ldi	r20, 0x03	; 3
    ff4e:	50 e0       	ldi	r21, 0x00	; 0
    ff50:	0e 94 59 f0 	call	0x1e0b2	; 0x1e0b2 <strncmp>
    ff54:	00 97       	sbiw	r24, 0x00	; 0
    ff56:	19 f4       	brne	.+6      	; 0xff5e <SB37SI_AlphatoMonth+0x32>
    ff58:	92 e0       	ldi	r25, 0x02	; 2
    ff5a:	f9 2e       	mov	r15, r25
    ff5c:	05 c0       	rjmp	.+10     	; 0xff68 <SB37SI_AlphatoMonth+0x3c>
    ff5e:	ff 24       	eor	r15, r15
    ff60:	cd 2b       	or	r28, r29
    ff62:	11 f4       	brne	.+4      	; 0xff68 <SB37SI_AlphatoMonth+0x3c>
    ff64:	ff 24       	eor	r15, r15
    ff66:	f3 94       	inc	r15
		month = 2;
	if(strncmp(pChar, "Mar", 3) == 0)
    ff68:	c8 01       	movw	r24, r16
    ff6a:	66 e4       	ldi	r22, 0x46	; 70
    ff6c:	74 e0       	ldi	r23, 0x04	; 4
    ff6e:	43 e0       	ldi	r20, 0x03	; 3
    ff70:	50 e0       	ldi	r21, 0x00	; 0
    ff72:	0e 94 59 f0 	call	0x1e0b2	; 0x1e0b2 <strncmp>
    ff76:	00 97       	sbiw	r24, 0x00	; 0
    ff78:	11 f4       	brne	.+4      	; 0xff7e <SB37SI_AlphatoMonth+0x52>
    ff7a:	83 e0       	ldi	r24, 0x03	; 3
    ff7c:	f8 2e       	mov	r15, r24
		month = 3;
	if(strncmp(pChar, "Apr", 3) == 0)
    ff7e:	c8 01       	movw	r24, r16
    ff80:	6a e4       	ldi	r22, 0x4A	; 74
    ff82:	74 e0       	ldi	r23, 0x04	; 4
    ff84:	43 e0       	ldi	r20, 0x03	; 3
    ff86:	50 e0       	ldi	r21, 0x00	; 0
    ff88:	0e 94 59 f0 	call	0x1e0b2	; 0x1e0b2 <strncmp>
    ff8c:	00 97       	sbiw	r24, 0x00	; 0
    ff8e:	11 f4       	brne	.+4      	; 0xff94 <SB37SI_AlphatoMonth+0x68>
    ff90:	b4 e0       	ldi	r27, 0x04	; 4
    ff92:	fb 2e       	mov	r15, r27
		month = 4;
	if(strncmp(pChar, "May", 3) == 0)
    ff94:	c8 01       	movw	r24, r16
    ff96:	6e e4       	ldi	r22, 0x4E	; 78
    ff98:	74 e0       	ldi	r23, 0x04	; 4
    ff9a:	43 e0       	ldi	r20, 0x03	; 3
    ff9c:	50 e0       	ldi	r21, 0x00	; 0
    ff9e:	0e 94 59 f0 	call	0x1e0b2	; 0x1e0b2 <strncmp>
    ffa2:	00 97       	sbiw	r24, 0x00	; 0
    ffa4:	11 f4       	brne	.+4      	; 0xffaa <SB37SI_AlphatoMonth+0x7e>
    ffa6:	a5 e0       	ldi	r26, 0x05	; 5
    ffa8:	fa 2e       	mov	r15, r26
		month = 5;
	if(strncmp(pChar, "Jun", 3) == 0)
    ffaa:	c8 01       	movw	r24, r16
    ffac:	62 e5       	ldi	r22, 0x52	; 82
    ffae:	74 e0       	ldi	r23, 0x04	; 4
    ffb0:	43 e0       	ldi	r20, 0x03	; 3
    ffb2:	50 e0       	ldi	r21, 0x00	; 0
    ffb4:	0e 94 59 f0 	call	0x1e0b2	; 0x1e0b2 <strncmp>
    ffb8:	00 97       	sbiw	r24, 0x00	; 0
    ffba:	11 f4       	brne	.+4      	; 0xffc0 <SB37SI_AlphatoMonth+0x94>
    ffbc:	f6 e0       	ldi	r31, 0x06	; 6
    ffbe:	ff 2e       	mov	r15, r31
		month = 6;
	if(strncmp(pChar, "Jul", 3) == 0)
    ffc0:	c8 01       	movw	r24, r16
    ffc2:	66 e5       	ldi	r22, 0x56	; 86
    ffc4:	74 e0       	ldi	r23, 0x04	; 4
    ffc6:	43 e0       	ldi	r20, 0x03	; 3
    ffc8:	50 e0       	ldi	r21, 0x00	; 0
    ffca:	0e 94 59 f0 	call	0x1e0b2	; 0x1e0b2 <strncmp>
    ffce:	00 97       	sbiw	r24, 0x00	; 0
    ffd0:	11 f4       	brne	.+4      	; 0xffd6 <SB37SI_AlphatoMonth+0xaa>
    ffd2:	e7 e0       	ldi	r30, 0x07	; 7
    ffd4:	fe 2e       	mov	r15, r30
		month = 7;
	if(strncmp(pChar, "Aug", 3) == 0)
    ffd6:	c8 01       	movw	r24, r16
    ffd8:	6a e5       	ldi	r22, 0x5A	; 90
    ffda:	74 e0       	ldi	r23, 0x04	; 4
    ffdc:	43 e0       	ldi	r20, 0x03	; 3
    ffde:	50 e0       	ldi	r21, 0x00	; 0
    ffe0:	0e 94 59 f0 	call	0x1e0b2	; 0x1e0b2 <strncmp>
    ffe4:	00 97       	sbiw	r24, 0x00	; 0
    ffe6:	11 f4       	brne	.+4      	; 0xffec <SB37SI_AlphatoMonth+0xc0>
    ffe8:	78 e0       	ldi	r23, 0x08	; 8
    ffea:	f7 2e       	mov	r15, r23
		month = 8;
	if(strncmp(pChar, "Sep", 3) == 0)
    ffec:	c8 01       	movw	r24, r16
    ffee:	6e e5       	ldi	r22, 0x5E	; 94
    fff0:	74 e0       	ldi	r23, 0x04	; 4
    fff2:	43 e0       	ldi	r20, 0x03	; 3
    fff4:	50 e0       	ldi	r21, 0x00	; 0
    fff6:	0e 94 59 f0 	call	0x1e0b2	; 0x1e0b2 <strncmp>
    fffa:	00 97       	sbiw	r24, 0x00	; 0
    fffc:	11 f4       	brne	.+4      	; 0x10002 <SB37SI_AlphatoMonth+0xd6>
    fffe:	69 e0       	ldi	r22, 0x09	; 9
   10000:	f6 2e       	mov	r15, r22
		month = 9;
	if(strncmp(pChar, "Oct", 3) == 0)
   10002:	c8 01       	movw	r24, r16
   10004:	62 e6       	ldi	r22, 0x62	; 98
   10006:	74 e0       	ldi	r23, 0x04	; 4
   10008:	43 e0       	ldi	r20, 0x03	; 3
   1000a:	50 e0       	ldi	r21, 0x00	; 0
   1000c:	0e 94 59 f0 	call	0x1e0b2	; 0x1e0b2 <strncmp>
   10010:	00 97       	sbiw	r24, 0x00	; 0
   10012:	11 f4       	brne	.+4      	; 0x10018 <SB37SI_AlphatoMonth+0xec>
   10014:	5a e0       	ldi	r21, 0x0A	; 10
   10016:	f5 2e       	mov	r15, r21
		month = 10;
	if(strncmp(pChar, "Nov", 3) == 0)
   10018:	c8 01       	movw	r24, r16
   1001a:	66 e6       	ldi	r22, 0x66	; 102
   1001c:	74 e0       	ldi	r23, 0x04	; 4
   1001e:	43 e0       	ldi	r20, 0x03	; 3
   10020:	50 e0       	ldi	r21, 0x00	; 0
   10022:	0e 94 59 f0 	call	0x1e0b2	; 0x1e0b2 <strncmp>
   10026:	00 97       	sbiw	r24, 0x00	; 0
   10028:	11 f4       	brne	.+4      	; 0x1002e <SB37SI_AlphatoMonth+0x102>
   1002a:	4b e0       	ldi	r20, 0x0B	; 11
   1002c:	f4 2e       	mov	r15, r20
		month = 11;
	if(strncmp(pChar, "Dec", 3) == 0)
   1002e:	c8 01       	movw	r24, r16
   10030:	6a e6       	ldi	r22, 0x6A	; 106
   10032:	74 e0       	ldi	r23, 0x04	; 4
   10034:	43 e0       	ldi	r20, 0x03	; 3
   10036:	50 e0       	ldi	r21, 0x00	; 0
   10038:	0e 94 59 f0 	call	0x1e0b2	; 0x1e0b2 <strncmp>
   1003c:	00 97       	sbiw	r24, 0x00	; 0
   1003e:	11 f4       	brne	.+4      	; 0x10044 <SB37SI_AlphatoMonth+0x118>
   10040:	3c e0       	ldi	r19, 0x0C	; 12
   10042:	f3 2e       	mov	r15, r19
		month = 12;

	return month;
}
   10044:	8f 2d       	mov	r24, r15
   10046:	df 91       	pop	r29
   10048:	cf 91       	pop	r28
   1004a:	1f 91       	pop	r17
   1004c:	0f 91       	pop	r16
   1004e:	ff 90       	pop	r15
   10050:	08 95       	ret

00010052 <SB37SI_QueueConsoleResponse>:
}



void SB37SI_QueueConsoleResponse(PSEABIRD_CTD_37_SI_TASK pTaskInfo)
{
   10052:	ef 92       	push	r14
   10054:	ff 92       	push	r15
   10056:	0f 93       	push	r16
   10058:	1f 93       	push	r17
   1005a:	df 93       	push	r29
   1005c:	cf 93       	push	r28
   1005e:	0f 92       	push	r0
   10060:	cd b7       	in	r28, 0x3d	; 61
   10062:	de b7       	in	r29, 0x3e	; 62
   10064:	7c 01       	movw	r14, r24
	PCONSOLE_ACK_XMIT_2 pReport;
	uint8_t err = 0;
   10066:	19 82       	std	Y+1, r1	; 0x01
	char* pData;

	OSMutexPend(pMutexFloatQueue, INFINITE, &err);
   10068:	80 91 51 19 	lds	r24, 0x1951
   1006c:	90 91 52 19 	lds	r25, 0x1952
   10070:	60 e0       	ldi	r22, 0x00	; 0
   10072:	70 e0       	ldi	r23, 0x00	; 0
   10074:	ae 01       	movw	r20, r28
   10076:	4f 5f       	subi	r20, 0xFF	; 255
   10078:	5f 4f       	sbci	r21, 0xFF	; 255
   1007a:	0e 94 c2 28 	call	0x5184	; 0x5184 <OSMutexPend>

	pReport = (PCONSOLE_ACK_XMIT_2)&(txFloatAck[headFloatAckTx]);
   1007e:	80 91 95 07 	lds	r24, 0x0795
   10082:	90 e0       	ldi	r25, 0x00	; 0
   10084:	26 e3       	ldi	r18, 0x36	; 54
   10086:	31 e0       	ldi	r19, 0x01	; 1
   10088:	82 9f       	mul	r24, r18
   1008a:	80 01       	movw	r16, r0
   1008c:	83 9f       	mul	r24, r19
   1008e:	10 0d       	add	r17, r0
   10090:	92 9f       	mul	r25, r18
   10092:	10 0d       	add	r17, r0
   10094:	11 24       	eor	r1, r1
   10096:	03 5f       	subi	r16, 0xF3	; 243
   10098:	1c 44       	sbci	r17, 0x4C	; 76
	pData = (char*)pReport;

	pReport->comm.headers.destination = FLOAT_TASK_FORWARD_MESSAGE;		//pTaskInfo->pBuf->responseInfo.source;
   1009a:	80 e2       	ldi	r24, 0x20	; 32
   1009c:	90 e0       	ldi	r25, 0x00	; 0
   1009e:	d8 01       	movw	r26, r16
   100a0:	13 96       	adiw	r26, 0x03	; 3
   100a2:	9c 93       	st	X, r25
   100a4:	8e 93       	st	-X, r24
   100a6:	12 97       	sbiw	r26, 0x02	; 2

	pReport->comm.fwdInfo.msgFormat = MSG_FORMAT_SHIP_TO_SHORE;
   100a8:	82 e0       	ldi	r24, 0x02	; 2
   100aa:	1c 96       	adiw	r26, 0x0c	; 12
   100ac:	8c 93       	st	X, r24
	pReport->comm.fwdInfo.destination = pTaskInfo->pBuf->responseInfo.source;
   100ae:	d7 01       	movw	r26, r14
   100b0:	14 96       	adiw	r26, 0x04	; 4
   100b2:	ed 91       	ld	r30, X+
   100b4:	fc 91       	ld	r31, X
   100b6:	15 97       	sbiw	r26, 0x05	; 5
   100b8:	e1 56       	subi	r30, 0x61	; 97
   100ba:	fa 4f       	sbci	r31, 0xFA	; 250
   100bc:	81 91       	ld	r24, Z+
   100be:	91 91       	ld	r25, Z+
   100c0:	d8 01       	movw	r26, r16
   100c2:	1e 96       	adiw	r26, 0x0e	; 14
   100c4:	9c 93       	st	X, r25
   100c6:	8e 93       	st	-X, r24
   100c8:	1d 97       	sbiw	r26, 0x0d	; 13
	pReport->comm.fwdInfo.source = mainTaskAddress | pTaskInfo->taskID;
   100ca:	d7 01       	movw	r26, r14
   100cc:	8c 91       	ld	r24, X
   100ce:	90 e0       	ldi	r25, 0x00	; 0
   100d0:	20 91 e4 03 	lds	r18, 0x03E4
   100d4:	30 91 e5 03 	lds	r19, 0x03E5
   100d8:	82 2b       	or	r24, r18
   100da:	93 2b       	or	r25, r19
   100dc:	d8 01       	movw	r26, r16
   100de:	50 96       	adiw	r26, 0x10	; 16
   100e0:	9c 93       	st	X, r25
   100e2:	8e 93       	st	-X, r24
   100e4:	1f 97       	sbiw	r26, 0x0f	; 15

	if(pTaskInfo->pBuf->responseInfo.status < CONSOLE_RESPONSE_UNKNOWN_CMD)
   100e6:	20 81       	ld	r18, Z
   100e8:	e1 5a       	subi	r30, 0xA1	; 161
   100ea:	f5 40       	sbci	r31, 0x05	; 5
   100ec:	2a 30       	cpi	r18, 0x0A	; 10
   100ee:	98 f5       	brcc	.+102    	; 0x10156 <SB37SI_QueueConsoleResponse+0x104>
	{
		pReport->comm.headers.length = sizeof(PIB_DATA_FORWARD_MESSAGE) + sizeof(CONSOLE_ACK) + pTaskInfo->pBuf->responseInfo.length + CRC16_SIZE;
   100f0:	ed 55       	subi	r30, 0x5D	; 93
   100f2:	fa 4f       	sbci	r31, 0xFA	; 250
   100f4:	40 81       	ld	r20, Z
   100f6:	50 e0       	ldi	r21, 0x00	; 0
   100f8:	42 5e       	subi	r20, 0xE2	; 226
   100fa:	5f 4f       	sbci	r21, 0xFF	; 255
   100fc:	11 96       	adiw	r26, 0x01	; 1
   100fe:	5c 93       	st	X, r21
   10100:	4e 93       	st	-X, r20
   10102:	4e 51       	subi	r20, 0x1E	; 30
   10104:	50 40       	sbci	r21, 0x00	; 0

		pReport->comm.iridiumInfo.headerICD.type = ACK_CONSOLE_DATA;
   10106:	8d e3       	ldi	r24, 0x3D	; 61
   10108:	51 96       	adiw	r26, 0x11	; 17
   1010a:	8c 93       	st	X, r24
   1010c:	51 97       	sbiw	r26, 0x11	; 17

		pReport->consoleAck.len = pTaskInfo->pBuf->responseInfo.length;
   1010e:	5b 96       	adiw	r26, 0x1b	; 27
   10110:	5c 93       	st	X, r21
   10112:	4e 93       	st	-X, r20
   10114:	5a 97       	sbiw	r26, 0x1a	; 26
		pReport->consoleAck.disposition = pTaskInfo->pBuf->responseInfo.status;
   10116:	59 96       	adiw	r26, 0x19	; 25
   10118:	2c 93       	st	X, r18
   1011a:	59 97       	sbiw	r26, 0x19	; 25
		pReport->consoleAck.format = pTaskInfo->pBuf->responseInfo.format;
   1011c:	82 91       	ld	r24, -Z
   1011e:	58 96       	adiw	r26, 0x18	; 24
   10120:	8c 93       	st	X, r24
		pData = pData + sizeof(PIB_DATA_FORWARD_MESSAGE) + sizeof(CONSOLE_ACK);
		memcpy(pData, pTaskInfo->pBuf->consoleResponse, pTaskInfo->pBuf->responseInfo.length);
   10122:	98 01       	movw	r18, r16
   10124:	24 5e       	subi	r18, 0xE4	; 228
   10126:	3f 4f       	sbci	r19, 0xFF	; 255
   10128:	7a 96       	adiw	r30, 0x1a	; 26
   1012a:	c9 01       	movw	r24, r18
   1012c:	bf 01       	movw	r22, r30
   1012e:	50 e0       	ldi	r21, 0x00	; 0
   10130:	0e 94 1c f0 	call	0x1e038	; 0x1e038 <memcpy>

		memcpy(dbgMsg, pTaskInfo->pBuf->consoleResponse, pTaskInfo->pBuf->responseInfo.length); SEND_MSG;
   10134:	d7 01       	movw	r26, r14
   10136:	14 96       	adiw	r26, 0x04	; 4
   10138:	ed 91       	ld	r30, X+
   1013a:	fc 91       	ld	r31, X
   1013c:	15 97       	sbiw	r26, 0x05	; 5
   1013e:	23 ef       	ldi	r18, 0xF3	; 243
   10140:	38 e1       	ldi	r19, 0x18	; 24
   10142:	ed 55       	subi	r30, 0x5D	; 93
   10144:	fa 4f       	sbci	r31, 0xFA	; 250
   10146:	40 81       	ld	r20, Z
   10148:	79 96       	adiw	r30, 0x19	; 25
   1014a:	c9 01       	movw	r24, r18
   1014c:	bf 01       	movw	r22, r30
   1014e:	50 e0       	ldi	r21, 0x00	; 0
   10150:	0e 94 1c f0 	call	0x1e038	; 0x1e038 <memcpy>
   10154:	0c c0       	rjmp	.+24     	; 0x1016e <SB37SI_QueueConsoleResponse+0x11c>
	}
	else
	{
		pReport->comm.headers.length = sizeof(PIB_DATA_FORWARD_MESSAGE) + sizeof(CONSOLE_NACK) + CRC16_SIZE;
   10156:	8d e1       	ldi	r24, 0x1D	; 29
   10158:	90 e0       	ldi	r25, 0x00	; 0
   1015a:	f8 01       	movw	r30, r16
   1015c:	91 83       	std	Z+1, r25	; 0x01
   1015e:	80 83       	st	Z, r24
		pReport->comm.iridiumInfo.headerICD.type = NACK_CONSOLE_DATA;
   10160:	86 e2       	ldi	r24, 0x26	; 38
   10162:	81 8b       	std	Z+17, r24	; 0x11
		pReport->consoleNack.numDispositions = 1;
   10164:	81 e0       	ldi	r24, 0x01	; 1
   10166:	90 e0       	ldi	r25, 0x00	; 0
   10168:	91 8f       	std	Z+25, r25	; 0x19
   1016a:	80 8f       	std	Z+24, r24	; 0x18
		pReport->consoleNack.disposition[0] = pTaskInfo->pBuf->responseInfo.status;
   1016c:	22 8f       	std	Z+26, r18	; 0x1a
	}

	pReport->comm.iridiumInfo.headerICD.packetID = pTaskInfo->pBuf->responseInfo.id;
   1016e:	d7 01       	movw	r26, r14
   10170:	14 96       	adiw	r26, 0x04	; 4
   10172:	ed 91       	ld	r30, X+
   10174:	fc 91       	ld	r31, X
   10176:	15 97       	sbiw	r26, 0x05	; 5
   10178:	ec 55       	subi	r30, 0x5C	; 92
   1017a:	fa 4f       	sbci	r31, 0xFA	; 250
   1017c:	80 81       	ld	r24, Z
   1017e:	91 81       	ldd	r25, Z+1	; 0x01
   10180:	a2 81       	ldd	r26, Z+2	; 0x02
   10182:	b3 81       	ldd	r27, Z+3	; 0x03
   10184:	f8 01       	movw	r30, r16
   10186:	82 8b       	std	Z+18, r24	; 0x12
   10188:	93 8b       	std	Z+19, r25	; 0x13
   1018a:	a4 8b       	std	Z+20, r26	; 0x14
   1018c:	b5 8b       	std	Z+21, r27	; 0x15
	pReport->comm.iridiumInfo.headerICD.size = pReport->comm.headers.length - sizeof(PIB_DATA_FORWARD_MESSAGE) - CRC16_SIZE;
   1018e:	80 81       	ld	r24, Z
   10190:	91 81       	ldd	r25, Z+1	; 0x01
   10192:	4a 97       	sbiw	r24, 0x1a	; 26
   10194:	97 8b       	std	Z+23, r25	; 0x17
   10196:	86 8b       	std	Z+22, r24	; 0x16


	(headFloatAckTx < MAX_ACK_BUFFERS - 1) ? (headFloatAckTx++) : (headFloatAckTx = 0);
   10198:	80 91 95 07 	lds	r24, 0x0795
   1019c:	83 30       	cpi	r24, 0x03	; 3
   1019e:	20 f4       	brcc	.+8      	; 0x101a8 <SB37SI_QueueConsoleResponse+0x156>
   101a0:	8f 5f       	subi	r24, 0xFF	; 255
   101a2:	80 93 95 07 	sts	0x0795, r24
   101a6:	02 c0       	rjmp	.+4      	; 0x101ac <SB37SI_QueueConsoleResponse+0x15a>
   101a8:	10 92 95 07 	sts	0x0795, r1

	if(headFloatAckTx == tailFloatAckTx)
   101ac:	90 91 95 07 	lds	r25, 0x0795
   101b0:	80 91 96 07 	lds	r24, 0x0796
   101b4:	98 17       	cp	r25, r24
   101b6:	41 f4       	brne	.+16     	; 0x101c8 <SB37SI_QueueConsoleResponse+0x176>
	{
		(tailFloatAckTx < MAX_ACK_BUFFERS - 1) ? (tailFloatAckTx++) : (tailFloatAckTx = 0);
   101b8:	93 30       	cpi	r25, 0x03	; 3
   101ba:	20 f4       	brcc	.+8      	; 0x101c4 <SB37SI_QueueConsoleResponse+0x172>
   101bc:	9f 5f       	subi	r25, 0xFF	; 255
   101be:	90 93 96 07 	sts	0x0796, r25
   101c2:	02 c0       	rjmp	.+4      	; 0x101c8 <SB37SI_QueueConsoleResponse+0x176>
   101c4:	10 92 96 07 	sts	0x0796, r1
	}

	OSMutexPost(pMutexFloatQueue);
   101c8:	80 91 51 19 	lds	r24, 0x1951
   101cc:	90 91 52 19 	lds	r25, 0x1952
   101d0:	0e 94 36 27 	call	0x4e6c	; 0x4e6c <OSMutexPost>

	return;
}
   101d4:	0f 90       	pop	r0
   101d6:	cf 91       	pop	r28
   101d8:	df 91       	pop	r29
   101da:	1f 91       	pop	r17
   101dc:	0f 91       	pop	r16
   101de:	ff 90       	pop	r15
   101e0:	ef 90       	pop	r14
   101e2:	08 95       	ret

000101e4 <SB37SI_CTDReportXmit>:

	return retval;
}

uint8_t SB37SI_CTDReportXmit(PSEABIRD_CTD_37_SI_TASK pTaskInfo)
{
   101e4:	0f 93       	push	r16
   101e6:	1f 93       	push	r17
   101e8:	df 93       	push	r29
   101ea:	cf 93       	push	r28
   101ec:	0f 92       	push	r0
   101ee:	cd b7       	in	r28, 0x3d	; 61
   101f0:	de b7       	in	r29, 0x3e	; 62
   101f2:	8c 01       	movw	r16, r24
	uint8_t retval = 0;
	uint8_t err = 0;
   101f4:	19 82       	std	Y+1, r1	; 0x01
	PCTD_DATA_XMIT pReport = NULL;

	OSMutexPend(pMutexFloatQueue, INFINITE, &err);
   101f6:	80 91 51 19 	lds	r24, 0x1951
   101fa:	90 91 52 19 	lds	r25, 0x1952
   101fe:	60 e0       	ldi	r22, 0x00	; 0
   10200:	70 e0       	ldi	r23, 0x00	; 0
   10202:	ae 01       	movw	r20, r28
   10204:	4f 5f       	subi	r20, 0xFF	; 255
   10206:	5f 4f       	sbci	r21, 0xFF	; 255
   10208:	0e 94 c2 28 	call	0x5184	; 0x5184 <OSMutexPend>

	pReport = (PCTD_DATA_XMIT)&(txFloatData[headFloatTx]);
   1020c:	80 91 93 07 	lds	r24, 0x0793
   10210:	90 e0       	ldi	r25, 0x00	; 0
   10212:	26 e3       	ldi	r18, 0x36	; 54
   10214:	31 e0       	ldi	r19, 0x01	; 1
   10216:	82 9f       	mul	r24, r18
   10218:	a0 01       	movw	r20, r0
   1021a:	83 9f       	mul	r24, r19
   1021c:	50 0d       	add	r21, r0
   1021e:	92 9f       	mul	r25, r18
   10220:	50 0d       	add	r21, r0
   10222:	11 24       	eor	r1, r1
   10224:	43 5a       	subi	r20, 0xA3	; 163
   10226:	56 45       	sbci	r21, 0x56	; 86

	pReport->comm.headers.length  = sizeof(CTD_DATA_XMIT)
   10228:	d8 01       	movw	r26, r16
   1022a:	14 96       	adiw	r26, 0x04	; 4
   1022c:	ed 91       	ld	r30, X+
   1022e:	fc 91       	ld	r31, X
   10230:	15 97       	sbiw	r26, 0x05	; 5
   10232:	e2 5d       	subi	r30, 0xD2	; 210
   10234:	fa 4f       	sbci	r31, 0xFA	; 250
   10236:	80 81       	ld	r24, Z
   10238:	2e e0       	ldi	r18, 0x0E	; 14
   1023a:	82 9f       	mul	r24, r18
   1023c:	c0 01       	movw	r24, r0
   1023e:	11 24       	eor	r1, r1
   10240:	8b 96       	adiw	r24, 0x2b	; 43
   10242:	fa 01       	movw	r30, r20
   10244:	91 83       	std	Z+1, r25	; 0x01
   10246:	80 83       	st	Z, r24
							      - sizeof(pReport->ctdReport.samples)
								  + pTaskInfo->pBuf->reportData.numSamples*sizeof(pReport->ctdReport.samples[0])
								  + CRC16_SIZE;
	pReport->comm.headers.destination = FLOAT_IRIDIUM_INTERFACE;
   10248:	22 e0       	ldi	r18, 0x02	; 2
   1024a:	30 e0       	ldi	r19, 0x00	; 0
   1024c:	33 83       	std	Z+3, r19	; 0x03
   1024e:	22 83       	std	Z+2, r18	; 0x02

	pReport->comm.iridiumInfo.structureType = 0x80;
   10250:	20 e8       	ldi	r18, 0x80	; 128
   10252:	24 87       	std	Z+12, r18	; 0x0c
	pReport->comm.iridiumInfo.size = pReport->comm.headers.length - sizeof(PIB_IRIDIUM_DATA_XMIT) - CRC16_SIZE;
   10254:	41 97       	sbiw	r24, 0x11	; 17
   10256:	96 87       	std	Z+14, r25	; 0x0e
   10258:	85 87       	std	Z+13, r24	; 0x0d

	pReport->payloadID = 0x00000020;
   1025a:	80 e2       	ldi	r24, 0x20	; 32
   1025c:	90 e0       	ldi	r25, 0x00	; 0
   1025e:	a0 e0       	ldi	r26, 0x00	; 0
   10260:	b0 e0       	ldi	r27, 0x00	; 0
   10262:	87 87       	std	Z+15, r24	; 0x0f
   10264:	90 8b       	std	Z+16, r25	; 0x10
   10266:	a1 8b       	std	Z+17, r26	; 0x11
   10268:	b2 8b       	std	Z+18, r27	; 0x12
	pReport->version = 0x01;
   1026a:	81 e0       	ldi	r24, 0x01	; 1
   1026c:	83 8b       	std	Z+19, r24	; 0x13

	memcpy(&(pReport->ctdReport), &(pTaskInfo->pBuf->reportData), sizeof(CTD_REPORT));
   1026e:	d8 01       	movw	r26, r16
   10270:	14 96       	adiw	r26, 0x04	; 4
   10272:	ed 91       	ld	r30, X+
   10274:	fc 91       	ld	r31, X
   10276:	15 97       	sbiw	r26, 0x05	; 5
   10278:	da 01       	movw	r26, r20
   1027a:	54 96       	adiw	r26, 0x14	; 20
   1027c:	e6 5e       	subi	r30, 0xE6	; 230
   1027e:	fa 4f       	sbci	r31, 0xFA	; 250
   10280:	85 e8       	ldi	r24, 0x85	; 133
   10282:	01 90       	ld	r0, Z+
   10284:	0d 92       	st	X+, r0
   10286:	81 50       	subi	r24, 0x01	; 1
   10288:	e1 f7       	brne	.-8      	; 0x10282 <SB37SI_CTDReportXmit+0x9e>


	(headFloatTx < MAX_FLOAT_BUFFERS - 1) ? (headFloatTx++) : (headFloatTx = 0);
   1028a:	80 91 93 07 	lds	r24, 0x0793
   1028e:	87 30       	cpi	r24, 0x07	; 7
   10290:	20 f4       	brcc	.+8      	; 0x1029a <SB37SI_CTDReportXmit+0xb6>
   10292:	8f 5f       	subi	r24, 0xFF	; 255
   10294:	80 93 93 07 	sts	0x0793, r24
   10298:	02 c0       	rjmp	.+4      	; 0x1029e <SB37SI_CTDReportXmit+0xba>
   1029a:	10 92 93 07 	sts	0x0793, r1

	if(headFloatTx == tailFloatTx)
   1029e:	90 91 93 07 	lds	r25, 0x0793
   102a2:	80 91 94 07 	lds	r24, 0x0794
   102a6:	98 17       	cp	r25, r24
   102a8:	41 f4       	brne	.+16     	; 0x102ba <SB37SI_CTDReportXmit+0xd6>
	{
		(tailFloatTx < MAX_FLOAT_BUFFERS - 1) ? (tailFloatTx++) : (tailFloatTx = 0);
   102aa:	97 30       	cpi	r25, 0x07	; 7
   102ac:	20 f4       	brcc	.+8      	; 0x102b6 <SB37SI_CTDReportXmit+0xd2>
   102ae:	9f 5f       	subi	r25, 0xFF	; 255
   102b0:	90 93 94 07 	sts	0x0794, r25
   102b4:	02 c0       	rjmp	.+4      	; 0x102ba <SB37SI_CTDReportXmit+0xd6>
   102b6:	10 92 94 07 	sts	0x0794, r1
//		ovfFloatStaticCt++;
	}

	OSMutexPost(pMutexFloatQueue);
   102ba:	80 91 51 19 	lds	r24, 0x1951
   102be:	90 91 52 19 	lds	r25, 0x1952
   102c2:	0e 94 36 27 	call	0x4e6c	; 0x4e6c <OSMutexPost>

	return retval;
}
   102c6:	80 e0       	ldi	r24, 0x00	; 0
   102c8:	0f 90       	pop	r0
   102ca:	cf 91       	pop	r28
   102cc:	df 91       	pop	r29
   102ce:	1f 91       	pop	r17
   102d0:	0f 91       	pop	r16
   102d2:	08 95       	ret

000102d4 <SB37SI_ReportCTDTelemetry>:
	}	
	return;
}

uint8_t SB37SI_ReportCTDTelemetry(PSEABIRD_CTD_37_SI_TASK pTaskInfo)
{
   102d4:	cf 93       	push	r28
   102d6:	df 93       	push	r29
   102d8:	ec 01       	movw	r28, r24
	if (pTaskInfo->pBuf->reportData.numSamples)
   102da:	ec 81       	ldd	r30, Y+4	; 0x04
   102dc:	fd 81       	ldd	r31, Y+5	; 0x05
   102de:	e2 5d       	subi	r30, 0xD2	; 210
   102e0:	fa 4f       	sbci	r31, 0xFA	; 250
   102e2:	80 81       	ld	r24, Z
   102e4:	88 23       	and	r24, r24
   102e6:	d1 f0       	breq	.+52     	; 0x1031c <SB37SI_ReportCTDTelemetry+0x48>
	{
		// queue up telemetry re;port
		SB37SI_CTDReportXmit(pTaskInfo);
   102e8:	ce 01       	movw	r24, r28
   102ea:	0e 94 f2 80 	call	0x101e4	; 0x101e4 <SB37SI_CTDReportXmit>

		// reset the buffer to empty state
		memset(&pTaskInfo->pBuf->reportData, 0, sizeof(CTD_REPORT));
   102ee:	8c 81       	ldd	r24, Y+4	; 0x04
   102f0:	9d 81       	ldd	r25, Y+5	; 0x05
   102f2:	86 5e       	subi	r24, 0xE6	; 230
   102f4:	9a 4f       	sbci	r25, 0xFA	; 250
   102f6:	fc 01       	movw	r30, r24
   102f8:	85 e8       	ldi	r24, 0x85	; 133
   102fa:	df 01       	movw	r26, r30
   102fc:	1d 92       	st	X+, r1
   102fe:	8a 95       	dec	r24
   10300:	e9 f7       	brne	.-6      	; 0x102fc <SB37SI_ReportCTDTelemetry+0x28>
		memcpy(pTaskInfo->pBuf->reportData.sernum, pTaskInfo->pBuf->serialNumber, 16);
   10302:	8c 81       	ldd	r24, Y+4	; 0x04
   10304:	9d 81       	ldd	r25, Y+5	; 0x05
   10306:	dc 01       	movw	r26, r24
   10308:	a2 5e       	subi	r26, 0xE2	; 226
   1030a:	ba 4f       	sbci	r27, 0xFA	; 250
   1030c:	fc 01       	movw	r30, r24
   1030e:	ec 5f       	subi	r30, 0xFC	; 252
   10310:	fa 4f       	sbci	r31, 0xFA	; 250
   10312:	80 e1       	ldi	r24, 0x10	; 16
   10314:	01 90       	ld	r0, Z+
   10316:	0d 92       	st	X+, r0
   10318:	81 50       	subi	r24, 0x01	; 1
   1031a:	e1 f7       	brne	.-8      	; 0x10314 <SB37SI_ReportCTDTelemetry+0x40>
		}

	return SUCCESS;
}
   1031c:	8f ef       	ldi	r24, 0xFF	; 255
   1031e:	df 91       	pop	r29
   10320:	cf 91       	pop	r28
   10322:	08 95       	ret

00010324 <ThreadSafeStrTokTail>:
	*context = eos;
	return retval;
}

static char* ThreadSafeStrTokTail(char** context, char* sep)
{
   10324:	0f 93       	push	r16
   10326:	1f 93       	push	r17
   10328:	cf 93       	push	r28
   1032a:	df 93       	push	r29
   1032c:	8c 01       	movw	r16, r24
	if (!context || !*context) return "";
   1032e:	00 97       	sbiw	r24, 0x00	; 0
   10330:	c1 f0       	breq	.+48     	; 0x10362 <ThreadSafeStrTokTail+0x3e>
   10332:	dc 01       	movw	r26, r24
   10334:	cd 91       	ld	r28, X+
   10336:	dc 91       	ld	r29, X
   10338:	20 97       	sbiw	r28, 0x00	; 0
   1033a:	99 f0       	breq	.+38     	; 0x10362 <ThreadSafeStrTokTail+0x3e>

	char* retval = &(*context)[strspn(*context, sep)];
   1033c:	ce 01       	movw	r24, r28
   1033e:	0e 94 77 f0 	call	0x1e0ee	; 0x1e0ee <strspn>
   10342:	9c 01       	movw	r18, r24
   10344:	2c 0f       	add	r18, r28
   10346:	3d 1f       	adc	r19, r29
	
	*context = &retval[strlen(retval)];
   10348:	f9 01       	movw	r30, r18
   1034a:	01 90       	ld	r0, Z+
   1034c:	00 20       	and	r0, r0
   1034e:	e9 f7       	brne	.-6      	; 0x1034a <ThreadSafeStrTokTail+0x26>
   10350:	31 97       	sbiw	r30, 0x01	; 1
   10352:	e2 1b       	sub	r30, r18
   10354:	f3 0b       	sbc	r31, r19
   10356:	e2 0f       	add	r30, r18
   10358:	f3 1f       	adc	r31, r19
   1035a:	d8 01       	movw	r26, r16
   1035c:	ed 93       	st	X+, r30
   1035e:	fc 93       	st	X, r31
   10360:	02 c0       	rjmp	.+4      	; 0x10366 <ThreadSafeStrTokTail+0x42>
	return retval;
   10362:	2e e6       	ldi	r18, 0x6E	; 110
   10364:	34 e0       	ldi	r19, 0x04	; 4
}
   10366:	c9 01       	movw	r24, r18
   10368:	df 91       	pop	r29
   1036a:	cf 91       	pop	r28
   1036c:	1f 91       	pop	r17
   1036e:	0f 91       	pop	r16
   10370:	08 95       	ret

00010372 <ThreadSafeStrTok>:

	return retval;
}

static char* ThreadSafeStrTok(char** context, char* sep)
{
   10372:	ef 92       	push	r14
   10374:	ff 92       	push	r15
   10376:	0f 93       	push	r16
   10378:	1f 93       	push	r17
   1037a:	cf 93       	push	r28
   1037c:	df 93       	push	r29
   1037e:	8c 01       	movw	r16, r24
   10380:	7b 01       	movw	r14, r22
	if (!context || !*context) return "";
   10382:	00 97       	sbiw	r24, 0x00	; 0
   10384:	c1 f0       	breq	.+48     	; 0x103b6 <ThreadSafeStrTok+0x44>
   10386:	dc 01       	movw	r26, r24
   10388:	cd 91       	ld	r28, X+
   1038a:	dc 91       	ld	r29, X
   1038c:	20 97       	sbiw	r28, 0x00	; 0
   1038e:	99 f0       	breq	.+38     	; 0x103b6 <ThreadSafeStrTok+0x44>

	char* retval = &(*context)[strspn(*context, sep)];
   10390:	ce 01       	movw	r24, r28
   10392:	0e 94 77 f0 	call	0x1e0ee	; 0x1e0ee <strspn>
   10396:	c8 0f       	add	r28, r24
   10398:	d9 1f       	adc	r29, r25
	char* eos = &retval[strcspn(retval, sep)];
   1039a:	ce 01       	movw	r24, r28
   1039c:	b7 01       	movw	r22, r14
   1039e:	0e 94 40 f0 	call	0x1e080	; 0x1e080 <strcspn>
   103a2:	fe 01       	movw	r30, r28
   103a4:	e8 0f       	add	r30, r24
   103a6:	f9 1f       	adc	r31, r25

	if (*eos) *eos++ = '\0';
   103a8:	80 81       	ld	r24, Z
   103aa:	81 11       	cpse	r24, r1
   103ac:	11 92       	st	Z+, r1

	*context = eos;
   103ae:	d8 01       	movw	r26, r16
   103b0:	ed 93       	st	X+, r30
   103b2:	fc 93       	st	X, r31
   103b4:	02 c0       	rjmp	.+4      	; 0x103ba <ThreadSafeStrTok+0x48>
	return retval;
   103b6:	ce e6       	ldi	r28, 0x6E	; 110
   103b8:	d4 e0       	ldi	r29, 0x04	; 4
}
   103ba:	ce 01       	movw	r24, r28
   103bc:	df 91       	pop	r29
   103be:	cf 91       	pop	r28
   103c0:	1f 91       	pop	r17
   103c2:	0f 91       	pop	r16
   103c4:	ff 90       	pop	r15
   103c6:	ef 90       	pop	r14
   103c8:	08 95       	ret

000103ca <SB37SI_CTD_Rx>:

	return retval;
}

uint8_t SB37SI_CTD_Rx(PSEABIRD_CTD_37_SI_TASK pTaskInfo, char* pBuffer, uint16_t* pLen)
{
   103ca:	8f 92       	push	r8
   103cc:	9f 92       	push	r9
   103ce:	af 92       	push	r10
   103d0:	bf 92       	push	r11
   103d2:	cf 92       	push	r12
   103d4:	df 92       	push	r13
   103d6:	ef 92       	push	r14
   103d8:	ff 92       	push	r15
   103da:	0f 93       	push	r16
   103dc:	1f 93       	push	r17
   103de:	df 93       	push	r29
   103e0:	cf 93       	push	r28
   103e2:	0f 92       	push	r0
   103e4:	cd b7       	in	r28, 0x3d	; 61
   103e6:	de b7       	in	r29, 0x3e	; 62
   103e8:	5c 01       	movw	r10, r24
   103ea:	8b 01       	movw	r16, r22
   103ec:	4a 01       	movw	r8, r20
	char* pChar = pBuffer;
	uint16_t count = 0;
	const char eol[2] = {0x53, 0x3E};
	BOOL done = FALSE;
	int compare = 0;
	uint8_t err = 0;
   103ee:	19 82       	std	Y+1, r1	; 0x01
	char c = 0;


	c = (char) OSuartGetCharWait(pTaskInfo->portNum, 1280, &err);	//Wait 10 seconds for first character
   103f0:	fc 01       	movw	r30, r24
   103f2:	81 81       	ldd	r24, Z+1	; 0x01
   103f4:	60 e0       	ldi	r22, 0x00	; 0
   103f6:	75 e0       	ldi	r23, 0x05	; 5
   103f8:	6e 01       	movw	r12, r28
   103fa:	08 94       	sec
   103fc:	c1 1c       	adc	r12, r1
   103fe:	d1 1c       	adc	r13, r1
   10400:	a6 01       	movw	r20, r12
   10402:	0e 94 b8 32 	call	0x6570	; 0x6570 <OSuartGetCharWait>
   10406:	98 2f       	mov	r25, r24
			
	if(err != OS_ERR_NONE)
   10408:	89 81       	ldd	r24, Y+1	; 0x01
   1040a:	88 23       	and	r24, r24
   1040c:	61 f5       	brne	.+88     	; 0x10466 <SB37SI_CTD_Rx+0x9c>
		return retval;

	*pChar = c;
   1040e:	f8 01       	movw	r30, r16
   10410:	90 83       	st	Z, r25
   10412:	21 e0       	ldi	r18, 0x01	; 1
   10414:	e2 2e       	mov	r14, r18
   10416:	f1 2c       	mov	r15, r1
	pChar++;
	count++;

	while((done == FALSE) && (count<1024))
	{
		c = (char) OSuartGetCharWait(pTaskInfo->portNum, 100, &err);	//Wait 10 seconds for first character
   10418:	f5 01       	movw	r30, r10
   1041a:	81 81       	ldd	r24, Z+1	; 0x01
   1041c:	64 e6       	ldi	r22, 0x64	; 100
   1041e:	70 e0       	ldi	r23, 0x00	; 0
   10420:	a6 01       	movw	r20, r12
   10422:	0e 94 b8 32 	call	0x6570	; 0x6570 <OSuartGetCharWait>
   10426:	98 2f       	mov	r25, r24
			
		if(err != OS_ERR_NONE)
   10428:	89 81       	ldd	r24, Y+1	; 0x01
   1042a:	88 23       	and	r24, r24
   1042c:	e1 f4       	brne	.+56     	; 0x10466 <SB37SI_CTD_Rx+0x9c>
			return retval;

		*pChar = c;
   1042e:	f8 01       	movw	r30, r16
   10430:	91 83       	std	Z+1, r25	; 0x01
		pChar++;
		count++;
   10432:	08 94       	sec
   10434:	e1 1c       	adc	r14, r1
   10436:	f1 1c       	adc	r15, r1

		if(count >= 2)
		{
			compare = strncmp((char *)(pChar - 2), eol, 2);
   10438:	c8 01       	movw	r24, r16
   1043a:	64 e9       	ldi	r22, 0x94	; 148
   1043c:	74 e0       	ldi	r23, 0x04	; 4
   1043e:	42 e0       	ldi	r20, 0x02	; 2
   10440:	50 e0       	ldi	r21, 0x00	; 0
   10442:	0e 94 59 f0 	call	0x1e0b2	; 0x1e0b2 <strncmp>
			if(compare == 0)
   10446:	00 97       	sbiw	r24, 0x00	; 0
   10448:	11 f4       	brne	.+4      	; 0x1044e <SB37SI_CTD_Rx+0x84>
   1044a:	8f ef       	ldi	r24, 0xFF	; 255
   1044c:	08 c0       	rjmp	.+16     	; 0x1045e <SB37SI_CTD_Rx+0x94>
   1044e:	0f 5f       	subi	r16, 0xFF	; 255
   10450:	1f 4f       	sbci	r17, 0xFF	; 255

	*pChar = c;
	pChar++;
	count++;

	while((done == FALSE) && (count<1024))
   10452:	f0 e0       	ldi	r31, 0x00	; 0
   10454:	ef 16       	cp	r14, r31
   10456:	f4 e0       	ldi	r31, 0x04	; 4
   10458:	ff 06       	cpc	r15, r31
   1045a:	f1 f6       	brne	.-68     	; 0x10418 <SB37SI_CTD_Rx+0x4e>
   1045c:	80 e0       	ldi	r24, 0x00	; 0
				retval = SUCCESS;
				done = TRUE;
			}
		}
	}
	*pLen = count;
   1045e:	f4 01       	movw	r30, r8
   10460:	f1 82       	std	Z+1, r15	; 0x01
   10462:	e0 82       	st	Z, r14
   10464:	01 c0       	rjmp	.+2      	; 0x10468 <SB37SI_CTD_Rx+0x9e>

	return retval;
   10466:	80 e0       	ldi	r24, 0x00	; 0
}
   10468:	0f 90       	pop	r0
   1046a:	cf 91       	pop	r28
   1046c:	df 91       	pop	r29
   1046e:	1f 91       	pop	r17
   10470:	0f 91       	pop	r16
   10472:	ff 90       	pop	r15
   10474:	ef 90       	pop	r14
   10476:	df 90       	pop	r13
   10478:	cf 90       	pop	r12
   1047a:	bf 90       	pop	r11
   1047c:	af 90       	pop	r10
   1047e:	9f 90       	pop	r9
   10480:	8f 90       	pop	r8
   10482:	08 95       	ret

00010484 <SB37SI_CTD_Tx>:
	return;
}


uint8_t SB37SI_CTD_Tx(PSEABIRD_CTD_37_SI_TASK pTaskInfo, char* pBuffer, uint16_t len)
{
   10484:	8f 92       	push	r8
   10486:	9f 92       	push	r9
   10488:	af 92       	push	r10
   1048a:	bf 92       	push	r11
   1048c:	cf 92       	push	r12
   1048e:	df 92       	push	r13
   10490:	ef 92       	push	r14
   10492:	ff 92       	push	r15
   10494:	0f 93       	push	r16
   10496:	1f 93       	push	r17
   10498:	df 93       	push	r29
   1049a:	cf 93       	push	r28
   1049c:	0f 92       	push	r0
   1049e:	cd b7       	in	r28, 0x3d	; 61
   104a0:	de b7       	in	r29, 0x3e	; 62
   104a2:	6c 01       	movw	r12, r24
   104a4:	7b 01       	movw	r14, r22
   104a6:	8a 01       	movw	r16, r20
	uint8_t retval = FAIL;
	uint8_t firstCharTries = 3;
	char c = 0;
	uint8_t err = 0;

	if((len > 0) && (len <= 255))
   104a8:	ca 01       	movw	r24, r20
   104aa:	01 97       	sbiw	r24, 0x01	; 1
   104ac:	8f 3f       	cpi	r24, 0xFF	; 255
   104ae:	91 05       	cpc	r25, r1
   104b0:	08 f0       	brcs	.+2      	; 0x104b4 <SB37SI_CTD_Tx+0x30>
   104b2:	58 c0       	rjmp	.+176    	; 0x10564 <SB37SI_CTD_Tx+0xe0>
uint8_t SB37SI_CTD_Tx(PSEABIRD_CTD_37_SI_TASK pTaskInfo, char* pBuffer, uint16_t len)
{
	uint8_t retval = FAIL;
	uint8_t firstCharTries = 3;
	char c = 0;
	uint8_t err = 0;
   104b4:	19 82       	std	Y+1, r1	; 0x01
   104b6:	33 e0       	ldi	r19, 0x03	; 3
   104b8:	b3 2e       	mov	r11, r19
			err = OSuartPutCharWait(pTaskInfo->portNum, *pBuffer, 10);
			if(err != OS_ERR_NONE)
				return retval;

			c = 0;
			c = (char) OSuartGetCharWait(pTaskInfo->portNum, 128, &err);
   104ba:	4e 01       	movw	r8, r28
   104bc:	08 94       	sec
   104be:	81 1c       	adc	r8, r1
   104c0:	91 1c       	adc	r9, r1
   104c2:	2e c0       	rjmp	.+92     	; 0x10520 <SB37SI_CTD_Tx+0x9c>

	if((len > 0) && (len <= 255))
	{
		while(len > 0)
		{
			err = OSuartPutCharWait(pTaskInfo->portNum, *pBuffer, 10);
   104c4:	f6 01       	movw	r30, r12
   104c6:	81 81       	ldd	r24, Z+1	; 0x01
   104c8:	f7 01       	movw	r30, r14
   104ca:	60 81       	ld	r22, Z
   104cc:	4a e0       	ldi	r20, 0x0A	; 10
   104ce:	50 e0       	ldi	r21, 0x00	; 0
   104d0:	0e 94 f3 31 	call	0x63e6	; 0x63e6 <OSuartPutCharWait>
			if(err != OS_ERR_NONE)
   104d4:	88 23       	and	r24, r24
   104d6:	09 f0       	breq	.+2      	; 0x104da <SB37SI_CTD_Tx+0x56>
   104d8:	45 c0       	rjmp	.+138    	; 0x10564 <SB37SI_CTD_Tx+0xe0>
				return retval;

			c = 0;
			c = (char) OSuartGetCharWait(pTaskInfo->portNum, 128, &err);
   104da:	f6 01       	movw	r30, r12
   104dc:	81 81       	ldd	r24, Z+1	; 0x01

	if((len > 0) && (len <= 255))
	{
		while(len > 0)
		{
			err = OSuartPutCharWait(pTaskInfo->portNum, *pBuffer, 10);
   104de:	19 82       	std	Y+1, r1	; 0x01
			if(err != OS_ERR_NONE)
				return retval;

			c = 0;
			c = (char) OSuartGetCharWait(pTaskInfo->portNum, 128, &err);
   104e0:	60 e8       	ldi	r22, 0x80	; 128
   104e2:	70 e0       	ldi	r23, 0x00	; 0
   104e4:	a4 01       	movw	r20, r8
   104e6:	0e 94 b8 32 	call	0x6570	; 0x6570 <OSuartGetCharWait>
   104ea:	a8 2e       	mov	r10, r24
		
			if(err != OS_ERR_NONE)
   104ec:	89 81       	ldd	r24, Y+1	; 0x01
   104ee:	88 23       	and	r24, r24
   104f0:	51 f0       	breq	.+20     	; 0x10506 <SB37SI_CTD_Tx+0x82>
			{
				if(firstCharTries > 0)
   104f2:	bb 20       	and	r11, r11
   104f4:	b9 f1       	breq	.+110    	; 0x10564 <SB37SI_CTD_Tx+0xe0>
				{
					firstCharTries--;
   104f6:	ba 94       	dec	r11
					OSTimeDlyHMSM(0,0,0,100);
   104f8:	80 e0       	ldi	r24, 0x00	; 0
   104fa:	60 e0       	ldi	r22, 0x00	; 0
   104fc:	40 e0       	ldi	r20, 0x00	; 0
   104fe:	24 e6       	ldi	r18, 0x64	; 100
   10500:	30 e0       	ldi	r19, 0x00	; 0
   10502:	0e 94 2a 2e 	call	0x5c54	; 0x5c54 <OSTimeDlyHMSM>
				}
				else
					return retval;
			}
			if(c == *pBuffer)
   10506:	f7 01       	movw	r30, r14
   10508:	80 81       	ld	r24, Z
   1050a:	a8 16       	cp	r10, r24
   1050c:	39 f4       	brne	.+14     	; 0x1051c <SB37SI_CTD_Tx+0x98>
			{
				pBuffer++;
   1050e:	08 94       	sec
   10510:	e1 1c       	adc	r14, r1
   10512:	f1 1c       	adc	r15, r1
				firstCharTries = 0;
				len--;
   10514:	01 50       	subi	r16, 0x01	; 1
   10516:	10 40       	sbci	r17, 0x00	; 0
   10518:	bb 24       	eor	r11, r11
   1051a:	02 c0       	rjmp	.+4      	; 0x10520 <SB37SI_CTD_Tx+0x9c>
			}
			else
			{
				if(firstCharTries == 0)
   1051c:	bb 20       	and	r11, r11
   1051e:	11 f1       	breq	.+68     	; 0x10564 <SB37SI_CTD_Tx+0xe0>
	char c = 0;
	uint8_t err = 0;

	if((len > 0) && (len <= 255))
	{
		while(len > 0)
   10520:	01 15       	cp	r16, r1
   10522:	11 05       	cpc	r17, r1
   10524:	79 f6       	brne	.-98     	; 0x104c4 <SB37SI_CTD_Tx+0x40>
				if(firstCharTries == 0)
					return retval;
			}
		}

		err = OSuartPutCharWait(pTaskInfo->portNum, 0x0D, 10);		//Terminate command with carriage return		
   10526:	f6 01       	movw	r30, r12
   10528:	81 81       	ldd	r24, Z+1	; 0x01
   1052a:	6d e0       	ldi	r22, 0x0D	; 13
   1052c:	4a e0       	ldi	r20, 0x0A	; 10
   1052e:	50 e0       	ldi	r21, 0x00	; 0
   10530:	0e 94 f3 31 	call	0x63e6	; 0x63e6 <OSuartPutCharWait>
		if(err != OS_ERR_NONE)
   10534:	88 23       	and	r24, r24
   10536:	b1 f4       	brne	.+44     	; 0x10564 <SB37SI_CTD_Tx+0xe0>
			return retval;

		c = 0;
		c = (char) OSuartGetCharWait(pTaskInfo->portNum, 10, &err);	//Echos is Carriage Return
   10538:	f6 01       	movw	r30, r12
   1053a:	81 81       	ldd	r24, Z+1	; 0x01
				if(firstCharTries == 0)
					return retval;
			}
		}

		err = OSuartPutCharWait(pTaskInfo->portNum, 0x0D, 10);		//Terminate command with carriage return		
   1053c:	19 82       	std	Y+1, r1	; 0x01
		if(err != OS_ERR_NONE)
			return retval;

		c = 0;
		c = (char) OSuartGetCharWait(pTaskInfo->portNum, 10, &err);	//Echos is Carriage Return
   1053e:	6a e0       	ldi	r22, 0x0A	; 10
   10540:	70 e0       	ldi	r23, 0x00	; 0
   10542:	8e 01       	movw	r16, r28
   10544:	0f 5f       	subi	r16, 0xFF	; 255
   10546:	1f 4f       	sbci	r17, 0xFF	; 255
   10548:	a8 01       	movw	r20, r16
   1054a:	0e 94 b8 32 	call	0x6570	; 0x6570 <OSuartGetCharWait>
		c = (char) OSuartGetCharWait(pTaskInfo->portNum, 10, &err);	//And Line Feed
   1054e:	f6 01       	movw	r30, r12
   10550:	81 81       	ldd	r24, Z+1	; 0x01
   10552:	6a e0       	ldi	r22, 0x0A	; 10
   10554:	70 e0       	ldi	r23, 0x00	; 0
   10556:	a8 01       	movw	r20, r16
   10558:	0e 94 b8 32 	call	0x6570	; 0x6570 <OSuartGetCharWait>
		if(c == 0x0A)
   1055c:	8a 30       	cpi	r24, 0x0A	; 10
   1055e:	11 f4       	brne	.+4      	; 0x10564 <SB37SI_CTD_Tx+0xe0>
   10560:	8f ef       	ldi	r24, 0xFF	; 255
   10562:	01 c0       	rjmp	.+2      	; 0x10566 <SB37SI_CTD_Tx+0xe2>
   10564:	80 e0       	ldi	r24, 0x00	; 0
			retval = SUCCESS;
	}


	return retval;
}
   10566:	0f 90       	pop	r0
   10568:	cf 91       	pop	r28
   1056a:	df 91       	pop	r29
   1056c:	1f 91       	pop	r17
   1056e:	0f 91       	pop	r16
   10570:	ff 90       	pop	r15
   10572:	ef 90       	pop	r14
   10574:	df 90       	pop	r13
   10576:	cf 90       	pop	r12
   10578:	bf 90       	pop	r11
   1057a:	af 90       	pop	r10
   1057c:	9f 90       	pop	r9
   1057e:	8f 90       	pop	r8
   10580:	08 95       	ret

00010582 <SB37SI_ParseFile>:

}


uint8_t SB37SI_ParseFile(PSEABIRD_CTD_37_SI_TASK pTaskInfo, uint32_t fileID)
{
   10582:	4f 92       	push	r4
   10584:	5f 92       	push	r5
   10586:	6f 92       	push	r6
   10588:	7f 92       	push	r7
   1058a:	8f 92       	push	r8
   1058c:	9f 92       	push	r9
   1058e:	af 92       	push	r10
   10590:	bf 92       	push	r11
   10592:	cf 92       	push	r12
   10594:	df 92       	push	r13
   10596:	ef 92       	push	r14
   10598:	ff 92       	push	r15
   1059a:	0f 93       	push	r16
   1059c:	1f 93       	push	r17
   1059e:	df 93       	push	r29
   105a0:	cf 93       	push	r28
   105a2:	cd b7       	in	r28, 0x3d	; 61
   105a4:	de b7       	in	r29, 0x3e	; 62
   105a6:	28 97       	sbiw	r28, 0x08	; 8
   105a8:	0f b6       	in	r0, 0x3f	; 63
   105aa:	f8 94       	cli
   105ac:	de bf       	out	0x3e, r29	; 62
   105ae:	0f be       	out	0x3f, r0	; 63
   105b0:	cd bf       	out	0x3d, r28	; 61
   105b2:	6c 01       	movw	r12, r24
   105b4:	2a 01       	movw	r4, r20
   105b6:	3b 01       	movw	r6, r22
	uint8_t retval = FAIL;
	uint16_t len = 0;
   105b8:	1a 82       	std	Y+2, r1	; 0x02
   105ba:	19 82       	std	Y+1, r1	; 0x01
	char* pBuf;

	memset(&(fileOut[pTaskInfo->portNum][0]), 0, MAX_FILE_SIZE_OUT);
   105bc:	dc 01       	movw	r26, r24
   105be:	11 96       	adiw	r26, 0x01	; 1
   105c0:	2c 91       	ld	r18, X
   105c2:	92 2f       	mov	r25, r18
   105c4:	99 0f       	add	r25, r25
   105c6:	99 0f       	add	r25, r25
   105c8:	80 e0       	ldi	r24, 0x00	; 0
   105ca:	8f 5a       	subi	r24, 0xAF	; 175
   105cc:	92 47       	sbci	r25, 0x72	; 114
   105ce:	fc 01       	movw	r30, r24
   105d0:	80 e0       	ldi	r24, 0x00	; 0
   105d2:	94 e0       	ldi	r25, 0x04	; 4
   105d4:	df 01       	movw	r26, r30
   105d6:	9c 01       	movw	r18, r24
   105d8:	1d 92       	st	X+, r1
   105da:	21 50       	subi	r18, 0x01	; 1
   105dc:	30 40       	sbci	r19, 0x00	; 0
   105de:	e1 f7       	brne	.-8      	; 0x105d8 <SB37SI_ParseFile+0x56>

	strupr(&fileIn[pTaskInfo->portNum][0]);
   105e0:	d6 01       	movw	r26, r12
   105e2:	11 96       	adiw	r26, 0x01	; 1
   105e4:	9c 91       	ld	r25, X
   105e6:	80 e0       	ldi	r24, 0x00	; 0
   105e8:	8f 5a       	subi	r24, 0xAF	; 175
   105ea:	96 47       	sbci	r25, 0x76	; 118
   105ec:	0e 94 d2 f0 	call	0x1e1a4	; 0x1e1a4 <strupr>
	len = strlen(&fileIn[pTaskInfo->portNum][0]);
   105f0:	f6 01       	movw	r30, r12
   105f2:	91 81       	ldd	r25, Z+1	; 0x01
   105f4:	80 e0       	ldi	r24, 0x00	; 0
   105f6:	dc 01       	movw	r26, r24
   105f8:	af 5a       	subi	r26, 0xAF	; 175
   105fa:	b6 47       	sbci	r27, 0x76	; 118
   105fc:	fd 01       	movw	r30, r26
   105fe:	01 90       	ld	r0, Z+
   10600:	00 20       	and	r0, r0
   10602:	e9 f7       	brne	.-6      	; 0x105fe <SB37SI_ParseFile+0x7c>
   10604:	31 97       	sbiw	r30, 0x01	; 1
   10606:	ea 1b       	sub	r30, r26
   10608:	fb 0b       	sbc	r31, r27
   1060a:	fa 83       	std	Y+2, r31	; 0x02
   1060c:	e9 83       	std	Y+1, r30	; 0x01

	pBuf = &fileIn[pTaskInfo->portNum][0];
	if(len > 4)
   1060e:	35 97       	sbiw	r30, 0x05	; 5
   10610:	08 f4       	brcc	.+2      	; 0x10614 <SB37SI_ParseFile+0x92>
   10612:	33 c1       	rjmp	.+614    	; 0x1087a <SB37SI_ParseFile+0x2f8>
	{
		char* context = pBuf;
   10614:	bc 83       	std	Y+4, r27	; 0x04
   10616:	ab 83       	std	Y+3, r26	; 0x03
		char sep[] = { ' ', '\t', '\r', '\n' };
   10618:	80 e2       	ldi	r24, 0x20	; 32
   1061a:	8d 83       	std	Y+5, r24	; 0x05
   1061c:	89 e0       	ldi	r24, 0x09	; 9
   1061e:	8e 83       	std	Y+6, r24	; 0x06
   10620:	8d e0       	ldi	r24, 0x0D	; 13
   10622:	8f 83       	std	Y+7, r24	; 0x07
   10624:	8a e0       	ldi	r24, 0x0A	; 10
   10626:	88 87       	std	Y+8, r24	; 0x08
		char* cmdTok = ThreadSafeStrTok(&context, sep);
   10628:	f3 e0       	ldi	r31, 0x03	; 3
   1062a:	af 2e       	mov	r10, r31
   1062c:	b1 2c       	mov	r11, r1
   1062e:	ac 0e       	add	r10, r28
   10630:	bd 1e       	adc	r11, r29
   10632:	e5 e0       	ldi	r30, 0x05	; 5
   10634:	8e 2e       	mov	r8, r30
   10636:	91 2c       	mov	r9, r1
   10638:	8c 0e       	add	r8, r28
   1063a:	9d 1e       	adc	r9, r29
   1063c:	c5 01       	movw	r24, r10
   1063e:	b4 01       	movw	r22, r8
   10640:	0e 94 b9 81 	call	0x10372	; 0x10372 <ThreadSafeStrTok>
   10644:	8c 01       	movw	r16, r24

		if (strncmp(cmdTok, "CMD", 3) == 0)
   10646:	6f e6       	ldi	r22, 0x6F	; 111
   10648:	74 e0       	ldi	r23, 0x04	; 4
   1064a:	43 e0       	ldi	r20, 0x03	; 3
   1064c:	50 e0       	ldi	r21, 0x00	; 0
   1064e:	0e 94 59 f0 	call	0x1e0b2	; 0x1e0b2 <strncmp>
   10652:	00 97       	sbiw	r24, 0x00	; 0
   10654:	09 f0       	breq	.+2      	; 0x10658 <SB37SI_ParseFile+0xd6>
   10656:	90 c0       	rjmp	.+288    	; 0x10778 <SB37SI_ParseFile+0x1f6>
		{
			char* subCommand = ThreadSafeStrTok(&context, sep);
   10658:	c5 01       	movw	r24, r10
   1065a:	b4 01       	movw	r22, r8
   1065c:	0e 94 b9 81 	call	0x10372	; 0x10372 <ThreadSafeStrTok>
   10660:	8c 01       	movw	r16, r24

			//We have a Start/Stop command
			if(strncmp(subCommand, "STO", 3) == 0)
   10662:	63 e7       	ldi	r22, 0x73	; 115
   10664:	74 e0       	ldi	r23, 0x04	; 4
   10666:	43 e0       	ldi	r20, 0x03	; 3
   10668:	50 e0       	ldi	r21, 0x00	; 0
   1066a:	0e 94 59 f0 	call	0x1e0b2	; 0x1e0b2 <strncmp>
   1066e:	00 97       	sbiw	r24, 0x00	; 0
   10670:	49 f4       	brne	.+18     	; 0x10684 <SB37SI_ParseFile+0x102>
			{
				pTaskInfo->pBuf->sampleCTD = FALSE;
   10672:	d6 01       	movw	r26, r12
   10674:	14 96       	adiw	r26, 0x04	; 4
   10676:	ed 91       	ld	r30, X+
   10678:	fc 91       	ld	r31, X
   1067a:	15 97       	sbiw	r26, 0x05	; 5
   1067c:	ec 5e       	subi	r30, 0xEC	; 236
   1067e:	fa 4f       	sbci	r31, 0xFA	; 250
   10680:	10 82       	st	Z, r1
   10682:	54 c0       	rjmp	.+168    	; 0x1072c <SB37SI_ParseFile+0x1aa>

				SB37SI_ReportCTDTelemetry(pTaskInfo);
				retval = SUCCESS;
			}

			else if(strncmp(subCommand, "STA", 3) == 0)
   10684:	c8 01       	movw	r24, r16
   10686:	67 e7       	ldi	r22, 0x77	; 119
   10688:	74 e0       	ldi	r23, 0x04	; 4
   1068a:	43 e0       	ldi	r20, 0x03	; 3
   1068c:	50 e0       	ldi	r21, 0x00	; 0
   1068e:	0e 94 59 f0 	call	0x1e0b2	; 0x1e0b2 <strncmp>
   10692:	00 97       	sbiw	r24, 0x00	; 0
   10694:	09 f0       	breq	.+2      	; 0x10698 <SB37SI_ParseFile+0x116>
   10696:	f1 c0       	rjmp	.+482    	; 0x1087a <SB37SI_ParseFile+0x2f8>
			{
				char* reportPeriod = ThreadSafeStrTok(&context, sep);
   10698:	c5 01       	movw	r24, r10
   1069a:	b4 01       	movw	r22, r8
   1069c:	0e 94 b9 81 	call	0x10372	; 0x10372 <ThreadSafeStrTok>
   106a0:	8c 01       	movw	r16, r24
				uint32_t period = atol(reportPeriod);
   106a2:	0e 94 77 ef 	call	0x1deee	; 0x1deee <atol>
   106a6:	28 2f       	mov	r18, r24

				if (*reportPeriod && (period != 0))
   106a8:	f8 01       	movw	r30, r16
   106aa:	80 81       	ld	r24, Z
   106ac:	88 23       	and	r24, r24
   106ae:	09 f4       	brne	.+2      	; 0x106b2 <SB37SI_ParseFile+0x130>
   106b0:	e4 c0       	rjmp	.+456    	; 0x1087a <SB37SI_ParseFile+0x2f8>
			}

			else if(strncmp(subCommand, "STA", 3) == 0)
			{
				char* reportPeriod = ThreadSafeStrTok(&context, sep);
				uint32_t period = atol(reportPeriod);
   106b2:	7b 01       	movw	r14, r22
   106b4:	02 2f       	mov	r16, r18
   106b6:	19 2f       	mov	r17, r25

				if (*reportPeriod && (period != 0))
   106b8:	e1 14       	cp	r14, r1
   106ba:	f1 04       	cpc	r15, r1
   106bc:	01 05       	cpc	r16, r1
   106be:	11 05       	cpc	r17, r1
   106c0:	09 f4       	brne	.+2      	; 0x106c4 <SB37SI_ParseFile+0x142>
   106c2:	db c0       	rjmp	.+438    	; 0x1087a <SB37SI_ParseFile+0x2f8>
				{
					char* reportSamples = ThreadSafeStrTok(&context, sep);
   106c4:	c5 01       	movw	r24, r10
   106c6:	b4 01       	movw	r22, r8
   106c8:	0e 94 b9 81 	call	0x10372	; 0x10372 <ThreadSafeStrTok>
   106cc:	fc 01       	movw	r30, r24
					uint32_t samples = *reportSamples ? atol(reportSamples) : 8;
   106ce:	80 81       	ld	r24, Z
   106d0:	88 23       	and	r24, r24
   106d2:	29 f4       	brne	.+10     	; 0x106de <SB37SI_ParseFile+0x15c>
   106d4:	28 e0       	ldi	r18, 0x08	; 8
   106d6:	30 e0       	ldi	r19, 0x00	; 0
   106d8:	40 e0       	ldi	r20, 0x00	; 0
   106da:	50 e0       	ldi	r21, 0x00	; 0
   106dc:	08 c0       	rjmp	.+16     	; 0x106ee <SB37SI_ParseFile+0x16c>
   106de:	cf 01       	movw	r24, r30
   106e0:	0e 94 77 ef 	call	0x1deee	; 0x1deee <atol>
   106e4:	ac 01       	movw	r20, r24
   106e6:	cb 01       	movw	r24, r22
   106e8:	da 01       	movw	r26, r20
   106ea:	9c 01       	movw	r18, r24
   106ec:	ad 01       	movw	r20, r26

					if ((samples >= 1) && (samples <= 8))
   106ee:	da 01       	movw	r26, r20
   106f0:	c9 01       	movw	r24, r18
   106f2:	01 97       	sbiw	r24, 0x01	; 1
   106f4:	a1 09       	sbc	r26, r1
   106f6:	b1 09       	sbc	r27, r1
   106f8:	08 97       	sbiw	r24, 0x08	; 8
   106fa:	a1 05       	cpc	r26, r1
   106fc:	b1 05       	cpc	r27, r1
   106fe:	08 f0       	brcs	.+2      	; 0x10702 <SB37SI_ParseFile+0x180>
   10700:	bc c0       	rjmp	.+376    	; 0x1087a <SB37SI_ParseFile+0x2f8>
					{
						pTaskInfo->pBuf->sampleCTD = TRUE;
   10702:	d6 01       	movw	r26, r12
   10704:	14 96       	adiw	r26, 0x04	; 4
   10706:	ed 91       	ld	r30, X+
   10708:	fc 91       	ld	r31, X
   1070a:	15 97       	sbiw	r26, 0x05	; 5
   1070c:	ec 5e       	subi	r30, 0xEC	; 236
   1070e:	fa 4f       	sbci	r31, 0xFA	; 250
   10710:	8f ef       	ldi	r24, 0xFF	; 255
   10712:	80 83       	st	Z, r24
						pTaskInfo->pBuf->sampleRate = period;
   10714:	14 96       	adiw	r26, 0x04	; 4
   10716:	ed 91       	ld	r30, X+
   10718:	fc 91       	ld	r31, X
   1071a:	15 97       	sbiw	r26, 0x05	; 5
   1071c:	e0 50       	subi	r30, 0x00	; 0
   1071e:	fb 4f       	sbci	r31, 0xFB	; 251
   10720:	e0 82       	st	Z, r14
   10722:	f1 82       	std	Z+1, r15	; 0x01
   10724:	02 83       	std	Z+2, r16	; 0x02
   10726:	13 83       	std	Z+3, r17	; 0x03
						pTaskInfo->pBuf->reportSampleCount = samples;
   10728:	79 96       	adiw	r30, 0x19	; 25
   1072a:	20 83       	st	Z, r18
						pTaskInfo->pBuf->nextSample = 0;
   1072c:	14 96       	adiw	r26, 0x04	; 4
   1072e:	ed 91       	ld	r30, X+
   10730:	fc 91       	ld	r31, X
   10732:	15 97       	sbiw	r26, 0x05	; 5
   10734:	eb 5e       	subi	r30, 0xEB	; 235
   10736:	fa 4f       	sbci	r31, 0xFA	; 250
   10738:	10 82       	st	Z, r1
   1073a:	11 82       	std	Z+1, r1	; 0x01
   1073c:	12 82       	std	Z+2, r1	; 0x02
   1073e:	13 82       	std	Z+3, r1	; 0x03
						SB37SI_ReportCTDTelemetry(pTaskInfo);
   10740:	c6 01       	movw	r24, r12
   10742:	0e 94 6a 81 	call	0x102d4	; 0x102d4 <SB37SI_ReportCTDTelemetry>
				}
			}
			
			if(retval == SUCCESS)
			{
				memcpy_P(&fileOut[pTaskInfo->portNum][0], PSTR("OK"), 2);
   10746:	f6 01       	movw	r30, r12
   10748:	21 81       	ldd	r18, Z+1	; 0x01
   1074a:	92 2f       	mov	r25, r18
   1074c:	99 0f       	add	r25, r25
   1074e:	99 0f       	add	r25, r25
   10750:	80 e0       	ldi	r24, 0x00	; 0
   10752:	8f 5a       	subi	r24, 0xAF	; 175
   10754:	92 47       	sbci	r25, 0x72	; 114
   10756:	67 e9       	ldi	r22, 0x97	; 151
   10758:	7d e0       	ldi	r23, 0x0D	; 13
   1075a:	42 e0       	ldi	r20, 0x02	; 2
   1075c:	50 e0       	ldi	r21, 0x00	; 0
   1075e:	0e 94 ab ef 	call	0x1df56	; 0x1df56 <memcpy_P>
				fileOutSize[pTaskInfo->portNum] = 2;
   10762:	d6 01       	movw	r26, r12
   10764:	11 96       	adiw	r26, 0x01	; 1
   10766:	ec 91       	ld	r30, X
   10768:	f0 e0       	ldi	r31, 0x00	; 0
   1076a:	ee 0f       	add	r30, r30
   1076c:	ff 1f       	adc	r31, r31
   1076e:	ef 5a       	subi	r30, 0xAF	; 175
   10770:	f2 46       	sbci	r31, 0x62	; 98
   10772:	82 e0       	ldi	r24, 0x02	; 2
   10774:	90 e0       	ldi	r25, 0x00	; 0
   10776:	99 c0       	rjmp	.+306    	; 0x108aa <SB37SI_ParseFile+0x328>
			}
		}
		else if(strncmp(cmdTok, "DEV", 3) == 0)
   10778:	c8 01       	movw	r24, r16
   1077a:	6b e7       	ldi	r22, 0x7B	; 123
   1077c:	74 e0       	ldi	r23, 0x04	; 4
   1077e:	43 e0       	ldi	r20, 0x03	; 3
   10780:	50 e0       	ldi	r21, 0x00	; 0
   10782:	0e 94 59 f0 	call	0x1e0b2	; 0x1e0b2 <strncmp>
   10786:	00 97       	sbiw	r24, 0x00	; 0
   10788:	09 f0       	breq	.+2      	; 0x1078c <SB37SI_ParseFile+0x20a>
   1078a:	77 c0       	rjmp	.+238    	; 0x1087a <SB37SI_ParseFile+0x2f8>
		{
			char* tail = ThreadSafeStrTokTail(&context, sep);
   1078c:	c5 01       	movw	r24, r10
   1078e:	b4 01       	movw	r22, r8
   10790:	0e 94 92 81 	call	0x10324	; 0x10324 <ThreadSafeStrTokTail>
   10794:	f8 2e       	mov	r15, r24
   10796:	e9 2e       	mov	r14, r25
			uint16_t tailLen = strlen(tail);
   10798:	e8 2f       	mov	r30, r24
   1079a:	f9 2f       	mov	r31, r25
   1079c:	df 01       	movw	r26, r30
   1079e:	0d 90       	ld	r0, X+
   107a0:	00 20       	and	r0, r0
   107a2:	e9 f7       	brne	.-6      	; 0x1079e <SB37SI_ParseFile+0x21c>
   107a4:	8d 01       	movw	r16, r26
   107a6:	01 50       	subi	r16, 0x01	; 1
   107a8:	10 40       	sbci	r17, 0x00	; 0
   107aa:	0e 1b       	sub	r16, r30
   107ac:	1f 0b       	sbc	r17, r31

			//We have a Command to send to the CTD
			if (tailLen)
   107ae:	09 f4       	brne	.+2      	; 0x107b2 <SB37SI_ParseFile+0x230>
   107b0:	64 c0       	rjmp	.+200    	; 0x1087a <SB37SI_ParseFile+0x2f8>
			{
				if(pTaskInfo->pBuf->sampleCTD == FALSE)
   107b2:	d6 01       	movw	r26, r12
   107b4:	14 96       	adiw	r26, 0x04	; 4
   107b6:	ed 91       	ld	r30, X+
   107b8:	fc 91       	ld	r31, X
   107ba:	15 97       	sbiw	r26, 0x05	; 5
   107bc:	ec 5e       	subi	r30, 0xEC	; 236
   107be:	fa 4f       	sbci	r31, 0xFA	; 250
   107c0:	80 81       	ld	r24, Z
   107c2:	88 23       	and	r24, r24
   107c4:	09 f0       	breq	.+2      	; 0x107c8 <SB37SI_ParseFile+0x246>
   107c6:	40 c0       	rjmp	.+128    	; 0x10848 <SB37SI_ParseFile+0x2c6>
				{			
					OSTimeDlyHMSM(0,0,0,100);
   107c8:	60 e0       	ldi	r22, 0x00	; 0
   107ca:	40 e0       	ldi	r20, 0x00	; 0
   107cc:	24 e6       	ldi	r18, 0x64	; 100
   107ce:	30 e0       	ldi	r19, 0x00	; 0
   107d0:	0e 94 2a 2e 	call	0x5c54	; 0x5c54 <OSTimeDlyHMSM>
					SB37SI_CTD_Tx(pTaskInfo, tail, tailLen);
   107d4:	c6 01       	movw	r24, r12
   107d6:	6f 2d       	mov	r22, r15
   107d8:	7e 2d       	mov	r23, r14
   107da:	a8 01       	movw	r20, r16
   107dc:	0e 94 42 82 	call	0x10484	; 0x10484 <SB37SI_CTD_Tx>
					len = 0;
   107e0:	1a 82       	std	Y+2, r1	; 0x02
   107e2:	19 82       	std	Y+1, r1	; 0x01
					SB37SI_CTD_Rx(pTaskInfo, pTaskInfo->pBuf->bufferRx, &len);
   107e4:	f6 01       	movw	r30, r12
   107e6:	64 81       	ldd	r22, Z+4	; 0x04
   107e8:	75 81       	ldd	r23, Z+5	; 0x05
   107ea:	60 50       	subi	r22, 0x00	; 0
   107ec:	7f 4f       	sbci	r23, 0xFF	; 255
   107ee:	c6 01       	movw	r24, r12
   107f0:	ae 01       	movw	r20, r28
   107f2:	4f 5f       	subi	r20, 0xFF	; 255
   107f4:	5f 4f       	sbci	r21, 0xFF	; 255
   107f6:	0e 94 e5 81 	call	0x103ca	; 0x103ca <SB37SI_CTD_Rx>
					if((len > 0) && (len < 1024))
   107fa:	e9 81       	ldd	r30, Y+1	; 0x01
   107fc:	fa 81       	ldd	r31, Y+2	; 0x02
   107fe:	cf 01       	movw	r24, r30
   10800:	01 97       	sbiw	r24, 0x01	; 1
   10802:	8f 5f       	subi	r24, 0xFF	; 255
   10804:	93 40       	sbci	r25, 0x03	; 3
   10806:	c8 f5       	brcc	.+114    	; 0x1087a <SB37SI_ParseFile+0x2f8>
					{
						memcpy(&fileOut[pTaskInfo->portNum][0], pTaskInfo->pBuf->bufferRx, len);
   10808:	d6 01       	movw	r26, r12
   1080a:	11 96       	adiw	r26, 0x01	; 1
   1080c:	8c 91       	ld	r24, X
   1080e:	11 97       	sbiw	r26, 0x01	; 1
   10810:	38 2f       	mov	r19, r24
   10812:	33 0f       	add	r19, r19
   10814:	33 0f       	add	r19, r19
   10816:	20 e0       	ldi	r18, 0x00	; 0
   10818:	2f 5a       	subi	r18, 0xAF	; 175
   1081a:	32 47       	sbci	r19, 0x72	; 114
   1081c:	14 96       	adiw	r26, 0x04	; 4
   1081e:	4d 91       	ld	r20, X+
   10820:	5c 91       	ld	r21, X
   10822:	15 97       	sbiw	r26, 0x05	; 5
   10824:	40 50       	subi	r20, 0x00	; 0
   10826:	5f 4f       	sbci	r21, 0xFF	; 255
   10828:	c9 01       	movw	r24, r18
   1082a:	ba 01       	movw	r22, r20
   1082c:	af 01       	movw	r20, r30
   1082e:	0e 94 1c f0 	call	0x1e038	; 0x1e038 <memcpy>
						fileOutSize[pTaskInfo->portNum] = len;
   10832:	d6 01       	movw	r26, r12
   10834:	11 96       	adiw	r26, 0x01	; 1
   10836:	ec 91       	ld	r30, X
   10838:	f0 e0       	ldi	r31, 0x00	; 0
   1083a:	ee 0f       	add	r30, r30
   1083c:	ff 1f       	adc	r31, r31
   1083e:	ef 5a       	subi	r30, 0xAF	; 175
   10840:	f2 46       	sbci	r31, 0x62	; 98
   10842:	89 81       	ldd	r24, Y+1	; 0x01
   10844:	9a 81       	ldd	r25, Y+2	; 0x02
   10846:	31 c0       	rjmp	.+98     	; 0x108aa <SB37SI_ParseFile+0x328>
						retval = SUCCESS;
					}
				}
				else
				{
					memcpy_P(&fileOut[pTaskInfo->portNum][0], PSTR("You must stop sampling first"), 28);
   10848:	f6 01       	movw	r30, r12
   1084a:	21 81       	ldd	r18, Z+1	; 0x01
   1084c:	92 2f       	mov	r25, r18
   1084e:	99 0f       	add	r25, r25
   10850:	99 0f       	add	r25, r25
   10852:	80 e0       	ldi	r24, 0x00	; 0
   10854:	8f 5a       	subi	r24, 0xAF	; 175
   10856:	92 47       	sbci	r25, 0x72	; 114
   10858:	6a e7       	ldi	r22, 0x7A	; 122
   1085a:	7d e0       	ldi	r23, 0x0D	; 13
   1085c:	4c e1       	ldi	r20, 0x1C	; 28
   1085e:	50 e0       	ldi	r21, 0x00	; 0
   10860:	0e 94 ab ef 	call	0x1df56	; 0x1df56 <memcpy_P>
					fileOutSize[pTaskInfo->portNum] = 28;
   10864:	d6 01       	movw	r26, r12
   10866:	11 96       	adiw	r26, 0x01	; 1
   10868:	ec 91       	ld	r30, X
   1086a:	f0 e0       	ldi	r31, 0x00	; 0
   1086c:	ee 0f       	add	r30, r30
   1086e:	ff 1f       	adc	r31, r31
   10870:	ef 5a       	subi	r30, 0xAF	; 175
   10872:	f2 46       	sbci	r31, 0x62	; 98
   10874:	8c e1       	ldi	r24, 0x1C	; 28
   10876:	90 e0       	ldi	r25, 0x00	; 0
   10878:	18 c0       	rjmp	.+48     	; 0x108aa <SB37SI_ParseFile+0x328>
		}
	}

	if(retval == FAIL)
	{
		memcpy_P(&fileOut[pTaskInfo->portNum][0], PSTR("Unrecognized Command"), 20);
   1087a:	f6 01       	movw	r30, r12
   1087c:	21 81       	ldd	r18, Z+1	; 0x01
   1087e:	92 2f       	mov	r25, r18
   10880:	99 0f       	add	r25, r25
   10882:	99 0f       	add	r25, r25
   10884:	80 e0       	ldi	r24, 0x00	; 0
   10886:	8f 5a       	subi	r24, 0xAF	; 175
   10888:	92 47       	sbci	r25, 0x72	; 114
   1088a:	65 e6       	ldi	r22, 0x65	; 101
   1088c:	7d e0       	ldi	r23, 0x0D	; 13
   1088e:	44 e1       	ldi	r20, 0x14	; 20
   10890:	50 e0       	ldi	r21, 0x00	; 0
   10892:	0e 94 ab ef 	call	0x1df56	; 0x1df56 <memcpy_P>
		fileOutSize[pTaskInfo->portNum] = 20;
   10896:	d6 01       	movw	r26, r12
   10898:	11 96       	adiw	r26, 0x01	; 1
   1089a:	ec 91       	ld	r30, X
   1089c:	f0 e0       	ldi	r31, 0x00	; 0
   1089e:	ee 0f       	add	r30, r30
   108a0:	ff 1f       	adc	r31, r31
   108a2:	ef 5a       	subi	r30, 0xAF	; 175
   108a4:	f2 46       	sbci	r31, 0x62	; 98
   108a6:	84 e1       	ldi	r24, 0x14	; 20
   108a8:	90 e0       	ldi	r25, 0x00	; 0
   108aa:	91 83       	std	Z+1, r25	; 0x01
   108ac:	80 83       	st	Z, r24
		retval = SUCCESS;
	}

	SB37SI_QueueFile(pTaskInfo, fileID);
   108ae:	c6 01       	movw	r24, r12
   108b0:	b3 01       	movw	r22, r6
   108b2:	a2 01       	movw	r20, r4
   108b4:	0e 94 7e 7e 	call	0xfcfc	; 0xfcfc <SB37SI_QueueFile>
	
	return retval;
}
   108b8:	8f ef       	ldi	r24, 0xFF	; 255
   108ba:	28 96       	adiw	r28, 0x08	; 8
   108bc:	0f b6       	in	r0, 0x3f	; 63
   108be:	f8 94       	cli
   108c0:	de bf       	out	0x3e, r29	; 62
   108c2:	0f be       	out	0x3f, r0	; 63
   108c4:	cd bf       	out	0x3d, r28	; 61
   108c6:	cf 91       	pop	r28
   108c8:	df 91       	pop	r29
   108ca:	1f 91       	pop	r17
   108cc:	0f 91       	pop	r16
   108ce:	ff 90       	pop	r15
   108d0:	ef 90       	pop	r14
   108d2:	df 90       	pop	r13
   108d4:	cf 90       	pop	r12
   108d6:	bf 90       	pop	r11
   108d8:	af 90       	pop	r10
   108da:	9f 90       	pop	r9
   108dc:	8f 90       	pop	r8
   108de:	7f 90       	pop	r7
   108e0:	6f 90       	pop	r6
   108e2:	5f 90       	pop	r5
   108e4:	4f 90       	pop	r4
   108e6:	08 95       	ret

000108e8 <SB37SI_GetSerNum>:

	return month;
}

uint8_t SB37SI_GetSerNum(PSEABIRD_CTD_37_SI_TASK pTaskInfo)
{
   108e8:	6f 92       	push	r6
   108ea:	7f 92       	push	r7
   108ec:	8f 92       	push	r8
   108ee:	9f 92       	push	r9
   108f0:	af 92       	push	r10
   108f2:	bf 92       	push	r11
   108f4:	cf 92       	push	r12
   108f6:	df 92       	push	r13
   108f8:	ef 92       	push	r14
   108fa:	ff 92       	push	r15
   108fc:	1f 93       	push	r17
   108fe:	df 93       	push	r29
   10900:	cf 93       	push	r28
   10902:	cd b7       	in	r28, 0x3d	; 61
   10904:	de b7       	in	r29, 0x3e	; 62
   10906:	66 97       	sbiw	r28, 0x16	; 22
   10908:	0f b6       	in	r0, 0x3f	; 63
   1090a:	f8 94       	cli
   1090c:	de bf       	out	0x3e, r29	; 62
   1090e:	0f be       	out	0x3f, r0	; 63
   10910:	cd bf       	out	0x3d, r28	; 61
   10912:	6c 01       	movw	r12, r24
	uint8_t retval = FAIL;
	char* last;
	char* first = pTaskInfo->pBuf->bufferRx;
   10914:	dc 01       	movw	r26, r24
   10916:	14 96       	adiw	r26, 0x04	; 4
   10918:	ed 90       	ld	r14, X+
   1091a:	fc 90       	ld	r15, X
   1091c:	15 97       	sbiw	r26, 0x05	; 5
   1091e:	e0 e0       	ldi	r30, 0x00	; 0
   10920:	f1 e0       	ldi	r31, 0x01	; 1
   10922:	ee 0e       	add	r14, r30
   10924:	ff 1e       	adc	r15, r31
	uint8_t ntok;
	char tokenDelimiters[] = " :,\r\n";
   10926:	de 01       	movw	r26, r28
   10928:	17 96       	adiw	r26, 0x07	; 7
   1092a:	e7 e8       	ldi	r30, 0x87	; 135
   1092c:	f4 e0       	ldi	r31, 0x04	; 4
   1092e:	86 e0       	ldi	r24, 0x06	; 6
   10930:	01 90       	ld	r0, Z+
   10932:	0d 92       	st	X+, r0
   10934:	81 50       	subi	r24, 0x01	; 1
   10936:	e1 f7       	brne	.-8      	; 0x10930 <SB37SI_GetSerNum+0x48>
	char* tokens[5];
	uint16_t len;
	char cmdDs[2] = {0x44, 0x53};
   10938:	84 e4       	ldi	r24, 0x44	; 68
   1093a:	8d 83       	std	Y+5, r24	; 0x05
   1093c:	83 e5       	ldi	r24, 0x53	; 83
   1093e:	8e 83       	std	Y+6, r24	; 0x06

	OSTimeDlyHMSM(0,0,0,100);
   10940:	80 e0       	ldi	r24, 0x00	; 0
   10942:	60 e0       	ldi	r22, 0x00	; 0
   10944:	40 e0       	ldi	r20, 0x00	; 0
   10946:	24 e6       	ldi	r18, 0x64	; 100
   10948:	30 e0       	ldi	r19, 0x00	; 0
   1094a:	0e 94 2a 2e 	call	0x5c54	; 0x5c54 <OSTimeDlyHMSM>
	len = 0;
   1094e:	1c 82       	std	Y+4, r1	; 0x04
   10950:	1b 82       	std	Y+3, r1	; 0x03
	SB37SI_CTD_Tx(pTaskInfo, cmdDs, 2);
   10952:	c6 01       	movw	r24, r12
   10954:	be 01       	movw	r22, r28
   10956:	6b 5f       	subi	r22, 0xFB	; 251
   10958:	7f 4f       	sbci	r23, 0xFF	; 255
   1095a:	42 e0       	ldi	r20, 0x02	; 2
   1095c:	50 e0       	ldi	r21, 0x00	; 0
   1095e:	0e 94 42 82 	call	0x10484	; 0x10484 <SB37SI_CTD_Tx>
	SB37SI_CTD_Rx(pTaskInfo, pTaskInfo->pBuf->bufferRx, &len);
   10962:	d6 01       	movw	r26, r12
   10964:	14 96       	adiw	r26, 0x04	; 4
   10966:	6d 91       	ld	r22, X+
   10968:	7c 91       	ld	r23, X
   1096a:	15 97       	sbiw	r26, 0x05	; 5
   1096c:	60 50       	subi	r22, 0x00	; 0
   1096e:	7f 4f       	sbci	r23, 0xFF	; 255
   10970:	c6 01       	movw	r24, r12
   10972:	ae 01       	movw	r20, r28
   10974:	4d 5f       	subi	r20, 0xFD	; 253
   10976:	5f 4f       	sbci	r21, 0xFF	; 255
   10978:	0e 94 e5 81 	call	0x103ca	; 0x103ca <SB37SI_CTD_Rx>
   1097c:	bd e0       	ldi	r27, 0x0D	; 13
   1097e:	ab 2e       	mov	r10, r27
   10980:	b1 2c       	mov	r11, r1
   10982:	ac 0e       	add	r10, r28
   10984:	bd 1e       	adc	r11, r29
   10986:	10 e0       	ldi	r17, 0x00	; 0

	for(ntok = 0; ntok < 5; ntok++)
	{
		tokens[ntok] = strtok_r(first, tokenDelimiters, &last);
   10988:	a7 e0       	ldi	r26, 0x07	; 7
   1098a:	6a 2e       	mov	r6, r26
   1098c:	71 2c       	mov	r7, r1
   1098e:	6c 0e       	add	r6, r28
   10990:	7d 1e       	adc	r7, r29
   10992:	4e 01       	movw	r8, r28
   10994:	08 94       	sec
   10996:	81 1c       	adc	r8, r1
   10998:	91 1c       	adc	r9, r1
   1099a:	c7 01       	movw	r24, r14
   1099c:	b3 01       	movw	r22, r6
   1099e:	a4 01       	movw	r20, r8
   109a0:	0e 94 a0 f0 	call	0x1e140	; 0x1e140 <strtok_r>
		first = NULL;
		if(tokens[ntok] == NULL)
   109a4:	00 97       	sbiw	r24, 0x00	; 0
   109a6:	09 f4       	brne	.+2      	; 0x109aa <SB37SI_GetSerNum+0xc2>
   109a8:	42 c0       	rjmp	.+132    	; 0x10a2e <SB37SI_GetSerNum+0x146>
	SB37SI_CTD_Tx(pTaskInfo, cmdDs, 2);
	SB37SI_CTD_Rx(pTaskInfo, pTaskInfo->pBuf->bufferRx, &len);

	for(ntok = 0; ntok < 5; ntok++)
	{
		tokens[ntok] = strtok_r(first, tokenDelimiters, &last);
   109aa:	f5 01       	movw	r30, r10
   109ac:	81 93       	st	Z+, r24
   109ae:	91 93       	st	Z+, r25
   109b0:	5f 01       	movw	r10, r30
	OSTimeDlyHMSM(0,0,0,100);
	len = 0;
	SB37SI_CTD_Tx(pTaskInfo, cmdDs, 2);
	SB37SI_CTD_Rx(pTaskInfo, pTaskInfo->pBuf->bufferRx, &len);

	for(ntok = 0; ntok < 5; ntok++)
   109b2:	1f 5f       	subi	r17, 0xFF	; 255
   109b4:	ee 24       	eor	r14, r14
   109b6:	ff 24       	eor	r15, r15
   109b8:	15 30       	cpi	r17, 0x05	; 5
   109ba:	79 f7       	brne	.-34     	; 0x1099a <SB37SI_GetSerNum+0xb2>
		{
			break;
		}
	}

	if ((ntok == 5) && (strcmp(tokens[3], "NO.") == 0))
   109bc:	8b 89       	ldd	r24, Y+19	; 0x13
   109be:	9c 89       	ldd	r25, Y+20	; 0x14
   109c0:	6f e7       	ldi	r22, 0x7F	; 127
   109c2:	74 e0       	ldi	r23, 0x04	; 4
   109c4:	0e 94 37 f0 	call	0x1e06e	; 0x1e06e <strcmp>
   109c8:	00 97       	sbiw	r24, 0x00	; 0
   109ca:	89 f5       	brne	.+98     	; 0x10a2e <SB37SI_GetSerNum+0x146>
	{
		int32_t sernum = 0;

		sernum = atol(tokens[4]);
   109cc:	8d 89       	ldd	r24, Y+21	; 0x15
   109ce:	9e 89       	ldd	r25, Y+22	; 0x16
   109d0:	0e 94 77 ef 	call	0x1deee	; 0x1deee <atol>
		sprintf(pTaskInfo->pBuf->serialNumber, "%ld", sernum);
   109d4:	2d b7       	in	r18, 0x3d	; 61
   109d6:	3e b7       	in	r19, 0x3e	; 62
   109d8:	28 50       	subi	r18, 0x08	; 8
   109da:	30 40       	sbci	r19, 0x00	; 0
   109dc:	0f b6       	in	r0, 0x3f	; 63
   109de:	f8 94       	cli
   109e0:	3e bf       	out	0x3e, r19	; 62
   109e2:	0f be       	out	0x3f, r0	; 63
   109e4:	2d bf       	out	0x3d, r18	; 61
   109e6:	ed b7       	in	r30, 0x3d	; 61
   109e8:	fe b7       	in	r31, 0x3e	; 62
   109ea:	31 96       	adiw	r30, 0x01	; 1
   109ec:	d6 01       	movw	r26, r12
   109ee:	14 96       	adiw	r26, 0x04	; 4
   109f0:	2d 91       	ld	r18, X+
   109f2:	3c 91       	ld	r19, X
   109f4:	15 97       	sbiw	r26, 0x05	; 5
   109f6:	2c 5f       	subi	r18, 0xFC	; 252
   109f8:	3a 4f       	sbci	r19, 0xFA	; 250
   109fa:	ad b7       	in	r26, 0x3d	; 61
   109fc:	be b7       	in	r27, 0x3e	; 62
   109fe:	12 96       	adiw	r26, 0x02	; 2
   10a00:	3c 93       	st	X, r19
   10a02:	2e 93       	st	-X, r18
   10a04:	11 97       	sbiw	r26, 0x01	; 1
   10a06:	23 e8       	ldi	r18, 0x83	; 131
   10a08:	34 e0       	ldi	r19, 0x04	; 4
   10a0a:	33 83       	std	Z+3, r19	; 0x03
   10a0c:	22 83       	std	Z+2, r18	; 0x02
   10a0e:	64 83       	std	Z+4, r22	; 0x04
   10a10:	75 83       	std	Z+5, r23	; 0x05
   10a12:	86 83       	std	Z+6, r24	; 0x06
   10a14:	97 83       	std	Z+7, r25	; 0x07
   10a16:	0e 94 2d f1 	call	0x1e25a	; 0x1e25a <sprintf>
   10a1a:	8f ef       	ldi	r24, 0xFF	; 255
   10a1c:	ed b7       	in	r30, 0x3d	; 61
   10a1e:	fe b7       	in	r31, 0x3e	; 62
   10a20:	38 96       	adiw	r30, 0x08	; 8
   10a22:	0f b6       	in	r0, 0x3f	; 63
   10a24:	f8 94       	cli
   10a26:	fe bf       	out	0x3e, r31	; 62
   10a28:	0f be       	out	0x3f, r0	; 63
   10a2a:	ed bf       	out	0x3d, r30	; 61
   10a2c:	01 c0       	rjmp	.+2      	; 0x10a30 <SB37SI_GetSerNum+0x148>
   10a2e:	80 e0       	ldi	r24, 0x00	; 0
		retval = SUCCESS;
	}

	return retval;
}
   10a30:	66 96       	adiw	r28, 0x16	; 22
   10a32:	0f b6       	in	r0, 0x3f	; 63
   10a34:	f8 94       	cli
   10a36:	de bf       	out	0x3e, r29	; 62
   10a38:	0f be       	out	0x3f, r0	; 63
   10a3a:	cd bf       	out	0x3d, r28	; 61
   10a3c:	cf 91       	pop	r28
   10a3e:	df 91       	pop	r29
   10a40:	1f 91       	pop	r17
   10a42:	ff 90       	pop	r15
   10a44:	ef 90       	pop	r14
   10a46:	df 90       	pop	r13
   10a48:	cf 90       	pop	r12
   10a4a:	bf 90       	pop	r11
   10a4c:	af 90       	pop	r10
   10a4e:	9f 90       	pop	r9
   10a50:	8f 90       	pop	r8
   10a52:	7f 90       	pop	r7
   10a54:	6f 90       	pop	r6
   10a56:	08 95       	ret

00010a58 <SB37SI_ParseCommand>:

	return;
}

uint8_t SB37SI_ParseCommand(PSEABIRD_CTD_37_SI_TASK pTaskInfo, char command, char* myCommand)
{
   10a58:	af 92       	push	r10
   10a5a:	bf 92       	push	r11
   10a5c:	cf 92       	push	r12
   10a5e:	df 92       	push	r13
   10a60:	ef 92       	push	r14
   10a62:	ff 92       	push	r15
   10a64:	0f 93       	push	r16
   10a66:	1f 93       	push	r17
   10a68:	df 93       	push	r29
   10a6a:	cf 93       	push	r28
   10a6c:	00 d0       	rcall	.+0      	; 0x10a6e <SB37SI_ParseCommand+0x16>
   10a6e:	0f 92       	push	r0
   10a70:	cd b7       	in	r28, 0x3d	; 61
   10a72:	de b7       	in	r29, 0x3e	; 62
   10a74:	6c 01       	movw	r12, r24
   10a76:	16 2f       	mov	r17, r22
   10a78:	5c 83       	std	Y+4, r21	; 0x04
   10a7a:	4b 83       	std	Y+3, r20	; 0x03
	uint8_t retval = FAIL;

	sprintf_P(dbgMsg, PSTR("Parsing Command <%c> <%s>"), command, myCommand); SEND_MSG;
   10a7c:	8d b7       	in	r24, 0x3d	; 61
   10a7e:	9e b7       	in	r25, 0x3e	; 62
   10a80:	08 97       	sbiw	r24, 0x08	; 8
   10a82:	0f b6       	in	r0, 0x3f	; 63
   10a84:	f8 94       	cli
   10a86:	9e bf       	out	0x3e, r25	; 62
   10a88:	0f be       	out	0x3f, r0	; 63
   10a8a:	8d bf       	out	0x3d, r24	; 61
   10a8c:	ed b7       	in	r30, 0x3d	; 61
   10a8e:	fe b7       	in	r31, 0x3e	; 62
   10a90:	31 96       	adiw	r30, 0x01	; 1
   10a92:	83 ef       	ldi	r24, 0xF3	; 243
   10a94:	98 e1       	ldi	r25, 0x18	; 24
   10a96:	ad b7       	in	r26, 0x3d	; 61
   10a98:	be b7       	in	r27, 0x3e	; 62
   10a9a:	12 96       	adiw	r26, 0x02	; 2
   10a9c:	9c 93       	st	X, r25
   10a9e:	8e 93       	st	-X, r24
   10aa0:	11 97       	sbiw	r26, 0x01	; 1
   10aa2:	87 e5       	ldi	r24, 0x57	; 87
   10aa4:	9e e0       	ldi	r25, 0x0E	; 14
   10aa6:	93 83       	std	Z+3, r25	; 0x03
   10aa8:	82 83       	std	Z+2, r24	; 0x02
   10aaa:	64 83       	std	Z+4, r22	; 0x04
   10aac:	15 82       	std	Z+5, r1	; 0x05
   10aae:	8b 81       	ldd	r24, Y+3	; 0x03
   10ab0:	9c 81       	ldd	r25, Y+4	; 0x04
   10ab2:	97 83       	std	Z+7, r25	; 0x07
   10ab4:	86 83       	std	Z+6, r24	; 0x06
   10ab6:	0e 94 51 f1 	call	0x1e2a2	; 0x1e2a2 <sprintf_P>
	
	switch (command)
   10aba:	ed b7       	in	r30, 0x3d	; 61
   10abc:	fe b7       	in	r31, 0x3e	; 62
   10abe:	38 96       	adiw	r30, 0x08	; 8
   10ac0:	0f b6       	in	r0, 0x3f	; 63
   10ac2:	f8 94       	cli
   10ac4:	fe bf       	out	0x3e, r31	; 62
   10ac6:	0f be       	out	0x3f, r0	; 63
   10ac8:	ed bf       	out	0x3d, r30	; 61
   10aca:	18 35       	cpi	r17, 0x58	; 88
   10acc:	09 f4       	brne	.+2      	; 0x10ad0 <SB37SI_ParseCommand+0x78>
   10ace:	a5 c0       	rjmp	.+330    	; 0x10c1a <SB37SI_ParseCommand+0x1c2>
   10ad0:	19 35       	cpi	r17, 0x59	; 89
   10ad2:	78 f4       	brcc	.+30     	; 0x10af2 <SB37SI_ParseCommand+0x9a>
   10ad4:	19 34       	cpi	r17, 0x49	; 73
   10ad6:	09 f4       	brne	.+2      	; 0x10ada <SB37SI_ParseCommand+0x82>
   10ad8:	7a c1       	rjmp	.+756    	; 0x10dce <SB37SI_ParseCommand+0x376>
   10ada:	1a 34       	cpi	r17, 0x4A	; 74
   10adc:	20 f4       	brcc	.+8      	; 0x10ae6 <SB37SI_ParseCommand+0x8e>
   10ade:	13 34       	cpi	r17, 0x43	; 67
   10ae0:	09 f0       	breq	.+2      	; 0x10ae4 <SB37SI_ParseCommand+0x8c>
   10ae2:	51 c2       	rjmp	.+1186   	; 0x10f86 <SB37SI_ParseCommand+0x52e>
   10ae4:	dd c0       	rjmp	.+442    	; 0x10ca0 <SB37SI_ParseCommand+0x248>
   10ae6:	12 35       	cpi	r17, 0x52	; 82
   10ae8:	b1 f0       	breq	.+44     	; 0x10b16 <SB37SI_ParseCommand+0xbe>
   10aea:	13 35       	cpi	r17, 0x53	; 83
   10aec:	09 f0       	breq	.+2      	; 0x10af0 <SB37SI_ParseCommand+0x98>
   10aee:	4b c2       	rjmp	.+1174   	; 0x10f86 <SB37SI_ParseCommand+0x52e>
   10af0:	ed c1       	rjmp	.+986    	; 0x10ecc <SB37SI_ParseCommand+0x474>
   10af2:	12 37       	cpi	r17, 0x72	; 114
   10af4:	81 f0       	breq	.+32     	; 0x10b16 <SB37SI_ParseCommand+0xbe>
   10af6:	13 37       	cpi	r17, 0x73	; 115
   10af8:	38 f4       	brcc	.+14     	; 0x10b08 <SB37SI_ParseCommand+0xb0>
   10afa:	13 36       	cpi	r17, 0x63	; 99
   10afc:	09 f4       	brne	.+2      	; 0x10b00 <SB37SI_ParseCommand+0xa8>
   10afe:	d0 c0       	rjmp	.+416    	; 0x10ca0 <SB37SI_ParseCommand+0x248>
   10b00:	19 36       	cpi	r17, 0x69	; 105
   10b02:	09 f0       	breq	.+2      	; 0x10b06 <SB37SI_ParseCommand+0xae>
   10b04:	40 c2       	rjmp	.+1152   	; 0x10f86 <SB37SI_ParseCommand+0x52e>
   10b06:	63 c1       	rjmp	.+710    	; 0x10dce <SB37SI_ParseCommand+0x376>
   10b08:	13 37       	cpi	r17, 0x73	; 115
   10b0a:	09 f4       	brne	.+2      	; 0x10b0e <SB37SI_ParseCommand+0xb6>
   10b0c:	df c1       	rjmp	.+958    	; 0x10ecc <SB37SI_ParseCommand+0x474>
   10b0e:	18 37       	cpi	r17, 0x78	; 120
   10b10:	09 f0       	breq	.+2      	; 0x10b14 <SB37SI_ParseCommand+0xbc>
   10b12:	39 c2       	rjmp	.+1138   	; 0x10f86 <SB37SI_ParseCommand+0x52e>
   10b14:	82 c0       	rjmp	.+260    	; 0x10c1a <SB37SI_ParseCommand+0x1c2>
	{
		case 'r':
		case 'R':
			// Run

			sprintf_P(dbgMsg, PSTR("RUN COMMAND")); SEND_MSG;				
   10b16:	00 d0       	rcall	.+0      	; 0x10b18 <SB37SI_ParseCommand+0xc0>
   10b18:	0f 92       	push	r0
   10b1a:	83 ef       	ldi	r24, 0xF3	; 243
   10b1c:	98 e1       	ldi	r25, 0x18	; 24
   10b1e:	ad b7       	in	r26, 0x3d	; 61
   10b20:	be b7       	in	r27, 0x3e	; 62
   10b22:	12 96       	adiw	r26, 0x02	; 2
   10b24:	9c 93       	st	X, r25
   10b26:	8e 93       	st	-X, r24
   10b28:	11 97       	sbiw	r26, 0x01	; 1
   10b2a:	8b e4       	ldi	r24, 0x4B	; 75
   10b2c:	9e e0       	ldi	r25, 0x0E	; 14
   10b2e:	14 96       	adiw	r26, 0x04	; 4
   10b30:	9c 93       	st	X, r25
   10b32:	8e 93       	st	-X, r24
   10b34:	13 97       	sbiw	r26, 0x03	; 3
   10b36:	0e 94 51 f1 	call	0x1e2a2	; 0x1e2a2 <sprintf_P>

			char* reportPeriod = ThreadSafeStrTok(&myCommand, pTaskInfo->pBuf->tokenSeparatorList);
   10b3a:	0f 90       	pop	r0
   10b3c:	0f 90       	pop	r0
   10b3e:	0f 90       	pop	r0
   10b40:	0f 90       	pop	r0
   10b42:	13 e0       	ldi	r17, 0x03	; 3
   10b44:	a1 2e       	mov	r10, r17
   10b46:	b1 2c       	mov	r11, r1
   10b48:	ac 0e       	add	r10, r28
   10b4a:	bd 1e       	adc	r11, r29
   10b4c:	f6 01       	movw	r30, r12
   10b4e:	64 81       	ldd	r22, Z+4	; 0x04
   10b50:	75 81       	ldd	r23, Z+5	; 0x05
   10b52:	68 55       	subi	r22, 0x58	; 88
   10b54:	7a 4f       	sbci	r23, 0xFA	; 250
   10b56:	c5 01       	movw	r24, r10
   10b58:	0e 94 b9 81 	call	0x10372	; 0x10372 <ThreadSafeStrTok>
   10b5c:	8c 01       	movw	r16, r24
			uint32_t period = atol(reportPeriod);
   10b5e:	0e 94 77 ef 	call	0x1deee	; 0x1deee <atol>
   10b62:	28 2f       	mov	r18, r24

			if (*reportPeriod && (period != 0))
   10b64:	d8 01       	movw	r26, r16
   10b66:	8c 91       	ld	r24, X
   10b68:	88 23       	and	r24, r24
   10b6a:	09 f4       	brne	.+2      	; 0x10b6e <SB37SI_ParseCommand+0x116>
   10b6c:	0c c2       	rjmp	.+1048   	; 0x10f86 <SB37SI_ParseCommand+0x52e>
			// Run

			sprintf_P(dbgMsg, PSTR("RUN COMMAND")); SEND_MSG;				

			char* reportPeriod = ThreadSafeStrTok(&myCommand, pTaskInfo->pBuf->tokenSeparatorList);
			uint32_t period = atol(reportPeriod);
   10b6e:	7b 01       	movw	r14, r22
   10b70:	02 2f       	mov	r16, r18
   10b72:	19 2f       	mov	r17, r25

			if (*reportPeriod && (period != 0))
   10b74:	e1 14       	cp	r14, r1
   10b76:	f1 04       	cpc	r15, r1
   10b78:	01 05       	cpc	r16, r1
   10b7a:	11 05       	cpc	r17, r1
   10b7c:	09 f4       	brne	.+2      	; 0x10b80 <SB37SI_ParseCommand+0x128>
   10b7e:	03 c2       	rjmp	.+1030   	; 0x10f86 <SB37SI_ParseCommand+0x52e>
			{
				char* reportSamples = ThreadSafeStrTok(&myCommand, pTaskInfo->pBuf->tokenSeparatorList);
   10b80:	f6 01       	movw	r30, r12
   10b82:	64 81       	ldd	r22, Z+4	; 0x04
   10b84:	75 81       	ldd	r23, Z+5	; 0x05
   10b86:	68 55       	subi	r22, 0x58	; 88
   10b88:	7a 4f       	sbci	r23, 0xFA	; 250
   10b8a:	c5 01       	movw	r24, r10
   10b8c:	0e 94 b9 81 	call	0x10372	; 0x10372 <ThreadSafeStrTok>
   10b90:	fc 01       	movw	r30, r24
				uint32_t samples = *reportSamples ? atol(reportSamples) : 8;
   10b92:	80 81       	ld	r24, Z
   10b94:	88 23       	and	r24, r24
   10b96:	29 f4       	brne	.+10     	; 0x10ba2 <SB37SI_ParseCommand+0x14a>
   10b98:	28 e0       	ldi	r18, 0x08	; 8
   10b9a:	30 e0       	ldi	r19, 0x00	; 0
   10b9c:	40 e0       	ldi	r20, 0x00	; 0
   10b9e:	50 e0       	ldi	r21, 0x00	; 0
   10ba0:	08 c0       	rjmp	.+16     	; 0x10bb2 <SB37SI_ParseCommand+0x15a>
   10ba2:	cf 01       	movw	r24, r30
   10ba4:	0e 94 77 ef 	call	0x1deee	; 0x1deee <atol>
   10ba8:	ac 01       	movw	r20, r24
   10baa:	cb 01       	movw	r24, r22
   10bac:	da 01       	movw	r26, r20
   10bae:	9c 01       	movw	r18, r24
   10bb0:	ad 01       	movw	r20, r26

				if ((samples >= 1) && (samples <= 8))
   10bb2:	da 01       	movw	r26, r20
   10bb4:	c9 01       	movw	r24, r18
   10bb6:	01 97       	sbiw	r24, 0x01	; 1
   10bb8:	a1 09       	sbc	r26, r1
   10bba:	b1 09       	sbc	r27, r1
   10bbc:	08 97       	sbiw	r24, 0x08	; 8
   10bbe:	a1 05       	cpc	r26, r1
   10bc0:	b1 05       	cpc	r27, r1
   10bc2:	08 f0       	brcs	.+2      	; 0x10bc6 <SB37SI_ParseCommand+0x16e>
   10bc4:	e0 c1       	rjmp	.+960    	; 0x10f86 <SB37SI_ParseCommand+0x52e>
				{
					pTaskInfo->pBuf->sampleCTD = TRUE;
   10bc6:	d6 01       	movw	r26, r12
   10bc8:	14 96       	adiw	r26, 0x04	; 4
   10bca:	ed 91       	ld	r30, X+
   10bcc:	fc 91       	ld	r31, X
   10bce:	15 97       	sbiw	r26, 0x05	; 5
   10bd0:	ec 5e       	subi	r30, 0xEC	; 236
   10bd2:	fa 4f       	sbci	r31, 0xFA	; 250
   10bd4:	8f ef       	ldi	r24, 0xFF	; 255
   10bd6:	80 83       	st	Z, r24
					pTaskInfo->pBuf->sampleRate = period;
   10bd8:	14 96       	adiw	r26, 0x04	; 4
   10bda:	ed 91       	ld	r30, X+
   10bdc:	fc 91       	ld	r31, X
   10bde:	15 97       	sbiw	r26, 0x05	; 5
   10be0:	e0 50       	subi	r30, 0x00	; 0
   10be2:	fb 4f       	sbci	r31, 0xFB	; 251
   10be4:	e0 82       	st	Z, r14
   10be6:	f1 82       	std	Z+1, r15	; 0x01
   10be8:	02 83       	std	Z+2, r16	; 0x02
   10bea:	13 83       	std	Z+3, r17	; 0x03
					pTaskInfo->pBuf->reportSampleCount = samples;
   10bec:	79 96       	adiw	r30, 0x19	; 25
   10bee:	20 83       	st	Z, r18
					pTaskInfo->pBuf->nextSample = 0;
   10bf0:	14 96       	adiw	r26, 0x04	; 4
   10bf2:	ed 91       	ld	r30, X+
   10bf4:	fc 91       	ld	r31, X
   10bf6:	15 97       	sbiw	r26, 0x05	; 5
   10bf8:	eb 5e       	subi	r30, 0xEB	; 235
   10bfa:	fa 4f       	sbci	r31, 0xFA	; 250
   10bfc:	10 82       	st	Z, r1
   10bfe:	11 82       	std	Z+1, r1	; 0x01
   10c00:	12 82       	std	Z+2, r1	; 0x02
   10c02:	13 82       	std	Z+3, r1	; 0x03
					SB37SI_ReportCTDTelemetry(pTaskInfo);
   10c04:	c6 01       	movw	r24, r12
   10c06:	0e 94 6a 81 	call	0x102d4	; 0x102d4 <SB37SI_ReportCTDTelemetry>
			}
			
			
			if(retval == SUCCESS)
			{				
				memcpy_P(pTaskInfo->pBuf->consoleResponse, PSTR("OK"), 2);
   10c0a:	f6 01       	movw	r30, r12
   10c0c:	84 81       	ldd	r24, Z+4	; 0x04
   10c0e:	95 81       	ldd	r25, Z+5	; 0x05
   10c10:	84 54       	subi	r24, 0x44	; 68
   10c12:	9a 4f       	sbci	r25, 0xFA	; 250
   10c14:	68 e4       	ldi	r22, 0x48	; 72
   10c16:	7e e0       	ldi	r23, 0x0E	; 14
   10c18:	2e c0       	rjmp	.+92     	; 0x10c76 <SB37SI_ParseCommand+0x21e>

		case 'x':
		case 'X':
			// Stop

			sprintf_P(dbgMsg, PSTR("STOP COMMAND")); SEND_MSG;
   10c1a:	00 d0       	rcall	.+0      	; 0x10c1c <SB37SI_ParseCommand+0x1c4>
   10c1c:	0f 92       	push	r0
   10c1e:	83 ef       	ldi	r24, 0xF3	; 243
   10c20:	98 e1       	ldi	r25, 0x18	; 24
   10c22:	ed b7       	in	r30, 0x3d	; 61
   10c24:	fe b7       	in	r31, 0x3e	; 62
   10c26:	92 83       	std	Z+2, r25	; 0x02
   10c28:	81 83       	std	Z+1, r24	; 0x01
   10c2a:	8b e3       	ldi	r24, 0x3B	; 59
   10c2c:	9e e0       	ldi	r25, 0x0E	; 14
   10c2e:	94 83       	std	Z+4, r25	; 0x04
   10c30:	83 83       	std	Z+3, r24	; 0x03
   10c32:	0e 94 51 f1 	call	0x1e2a2	; 0x1e2a2 <sprintf_P>

			pTaskInfo->pBuf->sampleCTD = FALSE;
   10c36:	d6 01       	movw	r26, r12
   10c38:	14 96       	adiw	r26, 0x04	; 4
   10c3a:	ed 91       	ld	r30, X+
   10c3c:	fc 91       	ld	r31, X
   10c3e:	15 97       	sbiw	r26, 0x05	; 5
   10c40:	ec 5e       	subi	r30, 0xEC	; 236
   10c42:	fa 4f       	sbci	r31, 0xFA	; 250
   10c44:	10 82       	st	Z, r1
			pTaskInfo->pBuf->nextSample = 0;
   10c46:	14 96       	adiw	r26, 0x04	; 4
   10c48:	ed 91       	ld	r30, X+
   10c4a:	fc 91       	ld	r31, X
   10c4c:	15 97       	sbiw	r26, 0x05	; 5
   10c4e:	eb 5e       	subi	r30, 0xEB	; 235
   10c50:	fa 4f       	sbci	r31, 0xFA	; 250
   10c52:	10 82       	st	Z, r1
   10c54:	11 82       	std	Z+1, r1	; 0x01
   10c56:	12 82       	std	Z+2, r1	; 0x02
   10c58:	13 82       	std	Z+3, r1	; 0x03

			SB37SI_ReportCTDTelemetry(pTaskInfo);
   10c5a:	0f 90       	pop	r0
   10c5c:	0f 90       	pop	r0
   10c5e:	0f 90       	pop	r0
   10c60:	0f 90       	pop	r0
   10c62:	c6 01       	movw	r24, r12
   10c64:	0e 94 6a 81 	call	0x102d4	; 0x102d4 <SB37SI_ReportCTDTelemetry>
			retval = SUCCESS;

			memcpy_P(pTaskInfo->pBuf->consoleResponse, PSTR("OK"), 2);
   10c68:	f6 01       	movw	r30, r12
   10c6a:	84 81       	ldd	r24, Z+4	; 0x04
   10c6c:	95 81       	ldd	r25, Z+5	; 0x05
   10c6e:	84 54       	subi	r24, 0x44	; 68
   10c70:	9a 4f       	sbci	r25, 0xFA	; 250
   10c72:	68 e3       	ldi	r22, 0x38	; 56
   10c74:	7e e0       	ldi	r23, 0x0E	; 14
   10c76:	42 e0       	ldi	r20, 0x02	; 2
   10c78:	50 e0       	ldi	r21, 0x00	; 0
   10c7a:	0e 94 ab ef 	call	0x1df56	; 0x1df56 <memcpy_P>
			pTaskInfo->pBuf->responseInfo.status = CONSOLE_RESPONSE_OK;
   10c7e:	d6 01       	movw	r26, r12
   10c80:	14 96       	adiw	r26, 0x04	; 4
   10c82:	ed 91       	ld	r30, X+
   10c84:	fc 91       	ld	r31, X
   10c86:	15 97       	sbiw	r26, 0x05	; 5
   10c88:	ef 55       	subi	r30, 0x5F	; 95
   10c8a:	fa 4f       	sbci	r31, 0xFA	; 250
   10c8c:	81 e0       	ldi	r24, 0x01	; 1
   10c8e:	80 83       	st	Z, r24
			pTaskInfo->pBuf->responseInfo.length = 2;
   10c90:	14 96       	adiw	r26, 0x04	; 4
   10c92:	ed 91       	ld	r30, X+
   10c94:	fc 91       	ld	r31, X
   10c96:	15 97       	sbiw	r26, 0x05	; 5
   10c98:	ed 55       	subi	r30, 0x5D	; 93
   10c9a:	fa 4f       	sbci	r31, 0xFA	; 250
   10c9c:	82 e0       	ldi	r24, 0x02	; 2
   10c9e:	79 c0       	rjmp	.+242    	; 0x10d92 <SB37SI_ParseCommand+0x33a>

		case 'c':
		case 'C':
			// CMD to the CTD

			sprintf_P(dbgMsg, PSTR("CMD to the CTD")); SEND_MSG;	
   10ca0:	00 d0       	rcall	.+0      	; 0x10ca2 <SB37SI_ParseCommand+0x24a>
   10ca2:	0f 92       	push	r0
   10ca4:	83 ef       	ldi	r24, 0xF3	; 243
   10ca6:	98 e1       	ldi	r25, 0x18	; 24
   10ca8:	ed b7       	in	r30, 0x3d	; 61
   10caa:	fe b7       	in	r31, 0x3e	; 62
   10cac:	92 83       	std	Z+2, r25	; 0x02
   10cae:	81 83       	std	Z+1, r24	; 0x01
   10cb0:	89 e2       	ldi	r24, 0x29	; 41
   10cb2:	9e e0       	ldi	r25, 0x0E	; 14
   10cb4:	94 83       	std	Z+4, r25	; 0x04
   10cb6:	83 83       	std	Z+3, r24	; 0x03
   10cb8:	0e 94 51 f1 	call	0x1e2a2	; 0x1e2a2 <sprintf_P>


			char* tail = ThreadSafeStrTokTail(&myCommand, pTaskInfo->pBuf->tokenSeparatorList);
   10cbc:	0f 90       	pop	r0
   10cbe:	0f 90       	pop	r0
   10cc0:	0f 90       	pop	r0
   10cc2:	0f 90       	pop	r0
   10cc4:	d6 01       	movw	r26, r12
   10cc6:	14 96       	adiw	r26, 0x04	; 4
   10cc8:	6d 91       	ld	r22, X+
   10cca:	7c 91       	ld	r23, X
   10ccc:	15 97       	sbiw	r26, 0x05	; 5
   10cce:	68 55       	subi	r22, 0x58	; 88
   10cd0:	7a 4f       	sbci	r23, 0xFA	; 250
   10cd2:	ce 01       	movw	r24, r28
   10cd4:	03 96       	adiw	r24, 0x03	; 3
   10cd6:	0e 94 92 81 	call	0x10324	; 0x10324 <ThreadSafeStrTokTail>
   10cda:	f8 2e       	mov	r15, r24
   10cdc:	e9 2e       	mov	r14, r25
			uint16_t tailLen = strlen(tail);
   10cde:	e8 2f       	mov	r30, r24
   10ce0:	f9 2f       	mov	r31, r25
   10ce2:	df 01       	movw	r26, r30
   10ce4:	0d 90       	ld	r0, X+
   10ce6:	00 20       	and	r0, r0
   10ce8:	e9 f7       	brne	.-6      	; 0x10ce4 <SB37SI_ParseCommand+0x28c>
   10cea:	8d 01       	movw	r16, r26
   10cec:	01 50       	subi	r16, 0x01	; 1
   10cee:	10 40       	sbci	r17, 0x00	; 0
   10cf0:	0e 1b       	sub	r16, r30
   10cf2:	1f 0b       	sbc	r17, r31

			//We have a Command to send to the CTD
			if (tailLen)
   10cf4:	09 f4       	brne	.+2      	; 0x10cf8 <SB37SI_ParseCommand+0x2a0>
   10cf6:	47 c1       	rjmp	.+654    	; 0x10f86 <SB37SI_ParseCommand+0x52e>
			{
				if(pTaskInfo->pBuf->sampleCTD == FALSE)
   10cf8:	d6 01       	movw	r26, r12
   10cfa:	14 96       	adiw	r26, 0x04	; 4
   10cfc:	ed 91       	ld	r30, X+
   10cfe:	fc 91       	ld	r31, X
   10d00:	15 97       	sbiw	r26, 0x05	; 5
   10d02:	ec 5e       	subi	r30, 0xEC	; 236
   10d04:	fa 4f       	sbci	r31, 0xFA	; 250
   10d06:	80 81       	ld	r24, Z
   10d08:	e4 51       	subi	r30, 0x14	; 20
   10d0a:	f5 40       	sbci	r31, 0x05	; 5
   10d0c:	88 23       	and	r24, r24
   10d0e:	09 f0       	breq	.+2      	; 0x10d12 <SB37SI_ParseCommand+0x2ba>
   10d10:	43 c0       	rjmp	.+134    	; 0x10d98 <SB37SI_ParseCommand+0x340>
				{			
					OSTimeDlyHMSM(0,0,0,100);
   10d12:	60 e0       	ldi	r22, 0x00	; 0
   10d14:	40 e0       	ldi	r20, 0x00	; 0
   10d16:	24 e6       	ldi	r18, 0x64	; 100
   10d18:	30 e0       	ldi	r19, 0x00	; 0
   10d1a:	0e 94 2a 2e 	call	0x5c54	; 0x5c54 <OSTimeDlyHMSM>
					SB37SI_CTD_Tx(pTaskInfo, tail, tailLen);
   10d1e:	c6 01       	movw	r24, r12
   10d20:	6f 2d       	mov	r22, r15
   10d22:	7e 2d       	mov	r23, r14
   10d24:	a8 01       	movw	r20, r16
   10d26:	0e 94 42 82 	call	0x10484	; 0x10484 <SB37SI_CTD_Tx>
					uint16_t len = 0;
   10d2a:	1a 82       	std	Y+2, r1	; 0x02
   10d2c:	19 82       	std	Y+1, r1	; 0x01
					SB37SI_CTD_Rx(pTaskInfo, pTaskInfo->pBuf->bufferRx, &len);
   10d2e:	f6 01       	movw	r30, r12
   10d30:	64 81       	ldd	r22, Z+4	; 0x04
   10d32:	75 81       	ldd	r23, Z+5	; 0x05
   10d34:	60 50       	subi	r22, 0x00	; 0
   10d36:	7f 4f       	sbci	r23, 0xFF	; 255
   10d38:	c6 01       	movw	r24, r12
   10d3a:	ae 01       	movw	r20, r28
   10d3c:	4f 5f       	subi	r20, 0xFF	; 255
   10d3e:	5f 4f       	sbci	r21, 0xFF	; 255
   10d40:	0e 94 e5 81 	call	0x103ca	; 0x103ca <SB37SI_CTD_Rx>
					if((len > 0) && (len < 1024))
   10d44:	e9 81       	ldd	r30, Y+1	; 0x01
   10d46:	fa 81       	ldd	r31, Y+2	; 0x02
   10d48:	cf 01       	movw	r24, r30
   10d4a:	01 97       	sbiw	r24, 0x01	; 1
   10d4c:	8f 5f       	subi	r24, 0xFF	; 255
   10d4e:	93 40       	sbci	r25, 0x03	; 3
   10d50:	08 f0       	brcs	.+2      	; 0x10d54 <SB37SI_ParseCommand+0x2fc>
   10d52:	19 c1       	rjmp	.+562    	; 0x10f86 <SB37SI_ParseCommand+0x52e>
					{
						memcpy(pTaskInfo->pBuf->consoleResponse, pTaskInfo->pBuf->bufferRx, len);
   10d54:	d6 01       	movw	r26, r12
   10d56:	14 96       	adiw	r26, 0x04	; 4
   10d58:	2d 91       	ld	r18, X+
   10d5a:	3c 91       	ld	r19, X
   10d5c:	15 97       	sbiw	r26, 0x05	; 5
   10d5e:	a9 01       	movw	r20, r18
   10d60:	44 54       	subi	r20, 0x44	; 68
   10d62:	5a 4f       	sbci	r21, 0xFA	; 250
   10d64:	20 50       	subi	r18, 0x00	; 0
   10d66:	3f 4f       	sbci	r19, 0xFF	; 255
   10d68:	ca 01       	movw	r24, r20
   10d6a:	b9 01       	movw	r22, r18
   10d6c:	af 01       	movw	r20, r30
   10d6e:	0e 94 1c f0 	call	0x1e038	; 0x1e038 <memcpy>
						pTaskInfo->pBuf->responseInfo.length = len;
   10d72:	d6 01       	movw	r26, r12
   10d74:	14 96       	adiw	r26, 0x04	; 4
   10d76:	ed 91       	ld	r30, X+
   10d78:	fc 91       	ld	r31, X
   10d7a:	15 97       	sbiw	r26, 0x05	; 5
   10d7c:	ed 55       	subi	r30, 0x5D	; 93
   10d7e:	fa 4f       	sbci	r31, 0xFA	; 250
   10d80:	89 81       	ldd	r24, Y+1	; 0x01
   10d82:	80 83       	st	Z, r24
						pTaskInfo->pBuf->responseInfo.status = CONSOLE_RESPONSE_OK;
   10d84:	14 96       	adiw	r26, 0x04	; 4
   10d86:	ed 91       	ld	r30, X+
   10d88:	fc 91       	ld	r31, X
   10d8a:	15 97       	sbiw	r26, 0x05	; 5
   10d8c:	ef 55       	subi	r30, 0x5F	; 95
   10d8e:	fa 4f       	sbci	r31, 0xFA	; 250
   10d90:	81 e0       	ldi	r24, 0x01	; 1
   10d92:	80 83       	st	Z, r24
   10d94:	1f ef       	ldi	r17, 0xFF	; 255
   10d96:	f8 c0       	rjmp	.+496    	; 0x10f88 <SB37SI_ParseCommand+0x530>
						retval = SUCCESS;
					}
				}
				else
				{
					memcpy_P(pTaskInfo->pBuf->consoleResponse, PSTR("You must stop sampling first"), 28);
   10d98:	cf 01       	movw	r24, r30
   10d9a:	84 54       	subi	r24, 0x44	; 68
   10d9c:	9a 4f       	sbci	r25, 0xFA	; 250
   10d9e:	6c e0       	ldi	r22, 0x0C	; 12
   10da0:	7e e0       	ldi	r23, 0x0E	; 14
   10da2:	4c e1       	ldi	r20, 0x1C	; 28
   10da4:	50 e0       	ldi	r21, 0x00	; 0
   10da6:	0e 94 ab ef 	call	0x1df56	; 0x1df56 <memcpy_P>
					pTaskInfo->pBuf->responseInfo.length = strlen(pTaskInfo->pBuf->consoleResponse);
   10daa:	f6 01       	movw	r30, r12
   10dac:	a4 81       	ldd	r26, Z+4	; 0x04
   10dae:	b5 81       	ldd	r27, Z+5	; 0x05
   10db0:	cd 01       	movw	r24, r26
   10db2:	84 54       	subi	r24, 0x44	; 68
   10db4:	9a 4f       	sbci	r25, 0xFA	; 250
   10db6:	fc 01       	movw	r30, r24
   10db8:	01 90       	ld	r0, Z+
   10dba:	00 20       	and	r0, r0
   10dbc:	e9 f7       	brne	.-6      	; 0x10db8 <SB37SI_ParseCommand+0x360>
   10dbe:	31 97       	sbiw	r30, 0x01	; 1
   10dc0:	e8 1b       	sub	r30, r24
   10dc2:	f9 0b       	sbc	r31, r25
   10dc4:	ad 55       	subi	r26, 0x5D	; 93
   10dc6:	ba 4f       	sbci	r27, 0xFA	; 250
   10dc8:	ec 93       	st	X, r30
					pTaskInfo->pBuf->responseInfo.status = CONSOLE_RESPONSE_OK;
   10dca:	d6 01       	movw	r26, r12
   10dcc:	db cf       	rjmp	.-74     	; 0x10d84 <SB37SI_ParseCommand+0x32c>

		case 'i':
		case 'I':
			// ID

			sprintf_P(dbgMsg, PSTR("ID COMMAND")); SEND_MSG;	
   10dce:	00 d0       	rcall	.+0      	; 0x10dd0 <SB37SI_ParseCommand+0x378>
   10dd0:	0f 92       	push	r0
   10dd2:	83 ef       	ldi	r24, 0xF3	; 243
   10dd4:	98 e1       	ldi	r25, 0x18	; 24
   10dd6:	ed b7       	in	r30, 0x3d	; 61
   10dd8:	fe b7       	in	r31, 0x3e	; 62
   10dda:	92 83       	std	Z+2, r25	; 0x02
   10ddc:	81 83       	std	Z+1, r24	; 0x01
   10dde:	81 e0       	ldi	r24, 0x01	; 1
   10de0:	9e e0       	ldi	r25, 0x0E	; 14
   10de2:	94 83       	std	Z+4, r25	; 0x04
   10de4:	83 83       	std	Z+3, r24	; 0x03
   10de6:	0e 94 51 f1 	call	0x1e2a2	; 0x1e2a2 <sprintf_P>


			retval = SB37SI_GetSerNum(pTaskInfo);
   10dea:	0f 90       	pop	r0
   10dec:	0f 90       	pop	r0
   10dee:	0f 90       	pop	r0
   10df0:	0f 90       	pop	r0
   10df2:	c6 01       	movw	r24, r12
   10df4:	0e 94 74 84 	call	0x108e8	; 0x108e8 <SB37SI_GetSerNum>
   10df8:	18 2f       	mov	r17, r24
   10dfa:	d6 01       	movw	r26, r12
   10dfc:	14 96       	adiw	r26, 0x04	; 4
   10dfe:	2d 91       	ld	r18, X+
   10e00:	3c 91       	ld	r19, X
   10e02:	15 97       	sbiw	r26, 0x05	; 5

			if (retval==SUCCESS)
   10e04:	8f 3f       	cpi	r24, 0xFF	; 255
   10e06:	89 f5       	brne	.+98     	; 0x10e6a <SB37SI_ParseCommand+0x412>
			{
				sprintf_P(pTaskInfo->pBuf->consoleResponse, PSTR("CTD37SI. Serial Number=%s"), pTaskInfo->pBuf->serialNumber);
   10e08:	00 d0       	rcall	.+0      	; 0x10e0a <SB37SI_ParseCommand+0x3b2>
   10e0a:	00 d0       	rcall	.+0      	; 0x10e0c <SB37SI_ParseCommand+0x3b4>
   10e0c:	ed b7       	in	r30, 0x3d	; 61
   10e0e:	fe b7       	in	r31, 0x3e	; 62
   10e10:	31 96       	adiw	r30, 0x01	; 1
   10e12:	24 54       	subi	r18, 0x44	; 68
   10e14:	3a 4f       	sbci	r19, 0xFA	; 250
   10e16:	ad b7       	in	r26, 0x3d	; 61
   10e18:	be b7       	in	r27, 0x3e	; 62
   10e1a:	12 96       	adiw	r26, 0x02	; 2
   10e1c:	3c 93       	st	X, r19
   10e1e:	2e 93       	st	-X, r18
   10e20:	11 97       	sbiw	r26, 0x01	; 1
   10e22:	87 ee       	ldi	r24, 0xE7	; 231
   10e24:	9d e0       	ldi	r25, 0x0D	; 13
   10e26:	93 83       	std	Z+3, r25	; 0x03
   10e28:	82 83       	std	Z+2, r24	; 0x02
   10e2a:	28 5b       	subi	r18, 0xB8	; 184
   10e2c:	30 40       	sbci	r19, 0x00	; 0
   10e2e:	35 83       	std	Z+5, r19	; 0x05
   10e30:	24 83       	std	Z+4, r18	; 0x04
   10e32:	0e 94 51 f1 	call	0x1e2a2	; 0x1e2a2 <sprintf_P>
				pTaskInfo->pBuf->responseInfo.length = strlen(pTaskInfo->pBuf->consoleResponse);
   10e36:	f6 01       	movw	r30, r12
   10e38:	a4 81       	ldd	r26, Z+4	; 0x04
   10e3a:	b5 81       	ldd	r27, Z+5	; 0x05
   10e3c:	cd 01       	movw	r24, r26
   10e3e:	84 54       	subi	r24, 0x44	; 68
   10e40:	9a 4f       	sbci	r25, 0xFA	; 250
   10e42:	fc 01       	movw	r30, r24
   10e44:	01 90       	ld	r0, Z+
   10e46:	00 20       	and	r0, r0
   10e48:	e9 f7       	brne	.-6      	; 0x10e44 <SB37SI_ParseCommand+0x3ec>
   10e4a:	31 97       	sbiw	r30, 0x01	; 1
   10e4c:	e8 1b       	sub	r30, r24
   10e4e:	f9 0b       	sbc	r31, r25
   10e50:	ad 55       	subi	r26, 0x5D	; 93
   10e52:	ba 4f       	sbci	r27, 0xFA	; 250
   10e54:	ec 93       	st	X, r30
				pTaskInfo->pBuf->responseInfo.status = CONSOLE_RESPONSE_OK;				
   10e56:	d6 01       	movw	r26, r12
   10e58:	14 96       	adiw	r26, 0x04	; 4
   10e5a:	ed 91       	ld	r30, X+
   10e5c:	fc 91       	ld	r31, X
   10e5e:	15 97       	sbiw	r26, 0x05	; 5
   10e60:	ef 55       	subi	r30, 0x5F	; 95
   10e62:	fa 4f       	sbci	r31, 0xFA	; 250
   10e64:	81 e0       	ldi	r24, 0x01	; 1
   10e66:	80 83       	st	Z, r24
   10e68:	85 c0       	rjmp	.+266    	; 0x10f74 <SB37SI_ParseCommand+0x51c>
			} else
			{
				sprintf_P(pTaskInfo->pBuf->consoleResponse, PSTR("CTD37SI. Error reading serial number."));
   10e6a:	00 d0       	rcall	.+0      	; 0x10e6c <SB37SI_ParseCommand+0x414>
   10e6c:	0f 92       	push	r0
   10e6e:	24 54       	subi	r18, 0x44	; 68
   10e70:	3a 4f       	sbci	r19, 0xFA	; 250
   10e72:	ad b7       	in	r26, 0x3d	; 61
   10e74:	be b7       	in	r27, 0x3e	; 62
   10e76:	12 96       	adiw	r26, 0x02	; 2
   10e78:	3c 93       	st	X, r19
   10e7a:	2e 93       	st	-X, r18
   10e7c:	11 97       	sbiw	r26, 0x01	; 1
   10e7e:	81 ec       	ldi	r24, 0xC1	; 193
   10e80:	9d e0       	ldi	r25, 0x0D	; 13
   10e82:	14 96       	adiw	r26, 0x04	; 4
   10e84:	9c 93       	st	X, r25
   10e86:	8e 93       	st	-X, r24
   10e88:	13 97       	sbiw	r26, 0x03	; 3
   10e8a:	0e 94 51 f1 	call	0x1e2a2	; 0x1e2a2 <sprintf_P>
				pTaskInfo->pBuf->responseInfo.length = strlen(pTaskInfo->pBuf->consoleResponse);
   10e8e:	f6 01       	movw	r30, r12
   10e90:	a4 81       	ldd	r26, Z+4	; 0x04
   10e92:	b5 81       	ldd	r27, Z+5	; 0x05
   10e94:	cd 01       	movw	r24, r26
   10e96:	84 54       	subi	r24, 0x44	; 68
   10e98:	9a 4f       	sbci	r25, 0xFA	; 250
   10e9a:	fc 01       	movw	r30, r24
   10e9c:	01 90       	ld	r0, Z+
   10e9e:	00 20       	and	r0, r0
   10ea0:	e9 f7       	brne	.-6      	; 0x10e9c <SB37SI_ParseCommand+0x444>
   10ea2:	31 97       	sbiw	r30, 0x01	; 1
   10ea4:	e8 1b       	sub	r30, r24
   10ea6:	f9 0b       	sbc	r31, r25
   10ea8:	ad 55       	subi	r26, 0x5D	; 93
   10eaa:	ba 4f       	sbci	r27, 0xFA	; 250
   10eac:	ec 93       	st	X, r30
				pTaskInfo->pBuf->responseInfo.status = CONSOLE_RESPONSE_OK;
   10eae:	d6 01       	movw	r26, r12
   10eb0:	14 96       	adiw	r26, 0x04	; 4
   10eb2:	ed 91       	ld	r30, X+
   10eb4:	fc 91       	ld	r31, X
   10eb6:	15 97       	sbiw	r26, 0x05	; 5
   10eb8:	ef 55       	subi	r30, 0x5F	; 95
   10eba:	fa 4f       	sbci	r31, 0xFA	; 250
   10ebc:	81 e0       	ldi	r24, 0x01	; 1
   10ebe:	80 83       	st	Z, r24
   10ec0:	1f ef       	ldi	r17, 0xFF	; 255
   10ec2:	0f 90       	pop	r0
   10ec4:	0f 90       	pop	r0
   10ec6:	0f 90       	pop	r0
   10ec8:	0f 90       	pop	r0
   10eca:	5e c0       	rjmp	.+188    	; 0x10f88 <SB37SI_ParseCommand+0x530>

		case 's':
		case 'S':
			// Status

			sprintf_P(dbgMsg, PSTR("STATUS COMMAND")); SEND_MSG;	
   10ecc:	00 d0       	rcall	.+0      	; 0x10ece <SB37SI_ParseCommand+0x476>
   10ece:	0f 92       	push	r0
   10ed0:	83 ef       	ldi	r24, 0xF3	; 243
   10ed2:	98 e1       	ldi	r25, 0x18	; 24
   10ed4:	ed b7       	in	r30, 0x3d	; 61
   10ed6:	fe b7       	in	r31, 0x3e	; 62
   10ed8:	92 83       	std	Z+2, r25	; 0x02
   10eda:	81 83       	std	Z+1, r24	; 0x01
   10edc:	82 eb       	ldi	r24, 0xB2	; 178
   10ede:	9d e0       	ldi	r25, 0x0D	; 13
   10ee0:	94 83       	std	Z+4, r25	; 0x04
   10ee2:	83 83       	std	Z+3, r24	; 0x03
   10ee4:	0e 94 51 f1 	call	0x1e2a2	; 0x1e2a2 <sprintf_P>

			sprintf_P(pTaskInfo->pBuf->consoleResponse, PSTR("CTD37SI. Sampling is %s"), pTaskInfo->pBuf->sampleCTD ? "ON":"OFF");
   10ee8:	f6 01       	movw	r30, r12
   10eea:	a4 81       	ldd	r26, Z+4	; 0x04
   10eec:	b5 81       	ldd	r27, Z+5	; 0x05
   10eee:	ac 5e       	subi	r26, 0xEC	; 236
   10ef0:	ba 4f       	sbci	r27, 0xFA	; 250
   10ef2:	0f 90       	pop	r0
   10ef4:	0f 90       	pop	r0
   10ef6:	0f 90       	pop	r0
   10ef8:	0f 90       	pop	r0
   10efa:	8c 91       	ld	r24, X
   10efc:	a4 51       	subi	r26, 0x14	; 20
   10efe:	b5 40       	sbci	r27, 0x05	; 5
   10f00:	88 23       	and	r24, r24
   10f02:	19 f4       	brne	.+6      	; 0x10f0a <SB37SI_ParseCommand+0x4b2>
   10f04:	2d e8       	ldi	r18, 0x8D	; 141
   10f06:	34 e0       	ldi	r19, 0x04	; 4
   10f08:	02 c0       	rjmp	.+4      	; 0x10f0e <SB37SI_ParseCommand+0x4b6>
   10f0a:	21 e9       	ldi	r18, 0x91	; 145
   10f0c:	34 e0       	ldi	r19, 0x04	; 4
   10f0e:	00 d0       	rcall	.+0      	; 0x10f10 <SB37SI_ParseCommand+0x4b8>
   10f10:	00 d0       	rcall	.+0      	; 0x10f12 <SB37SI_ParseCommand+0x4ba>
   10f12:	4d b7       	in	r20, 0x3d	; 61
   10f14:	5e b7       	in	r21, 0x3e	; 62
   10f16:	4f 5f       	subi	r20, 0xFF	; 255
   10f18:	5f 4f       	sbci	r21, 0xFF	; 255
   10f1a:	a4 54       	subi	r26, 0x44	; 68
   10f1c:	ba 4f       	sbci	r27, 0xFA	; 250
   10f1e:	ed b7       	in	r30, 0x3d	; 61
   10f20:	fe b7       	in	r31, 0x3e	; 62
   10f22:	b2 83       	std	Z+2, r27	; 0x02
   10f24:	a1 83       	std	Z+1, r26	; 0x01
   10f26:	8a e9       	ldi	r24, 0x9A	; 154
   10f28:	9d e0       	ldi	r25, 0x0D	; 13
   10f2a:	da 01       	movw	r26, r20
   10f2c:	13 96       	adiw	r26, 0x03	; 3
   10f2e:	9c 93       	st	X, r25
   10f30:	8e 93       	st	-X, r24
   10f32:	12 97       	sbiw	r26, 0x02	; 2
   10f34:	15 96       	adiw	r26, 0x05	; 5
   10f36:	3c 93       	st	X, r19
   10f38:	2e 93       	st	-X, r18
   10f3a:	14 97       	sbiw	r26, 0x04	; 4
   10f3c:	0e 94 51 f1 	call	0x1e2a2	; 0x1e2a2 <sprintf_P>
			pTaskInfo->pBuf->responseInfo.length = strlen(pTaskInfo->pBuf->consoleResponse);
   10f40:	f6 01       	movw	r30, r12
   10f42:	a4 81       	ldd	r26, Z+4	; 0x04
   10f44:	b5 81       	ldd	r27, Z+5	; 0x05
   10f46:	cd 01       	movw	r24, r26
   10f48:	84 54       	subi	r24, 0x44	; 68
   10f4a:	9a 4f       	sbci	r25, 0xFA	; 250
   10f4c:	fc 01       	movw	r30, r24
   10f4e:	01 90       	ld	r0, Z+
   10f50:	00 20       	and	r0, r0
   10f52:	e9 f7       	brne	.-6      	; 0x10f4e <SB37SI_ParseCommand+0x4f6>
   10f54:	31 97       	sbiw	r30, 0x01	; 1
   10f56:	e8 1b       	sub	r30, r24
   10f58:	f9 0b       	sbc	r31, r25
   10f5a:	ad 55       	subi	r26, 0x5D	; 93
   10f5c:	ba 4f       	sbci	r27, 0xFA	; 250
   10f5e:	ec 93       	st	X, r30
			pTaskInfo->pBuf->responseInfo.status = CONSOLE_RESPONSE_OK;				
   10f60:	d6 01       	movw	r26, r12
   10f62:	14 96       	adiw	r26, 0x04	; 4
   10f64:	ed 91       	ld	r30, X+
   10f66:	fc 91       	ld	r31, X
   10f68:	15 97       	sbiw	r26, 0x05	; 5
   10f6a:	ef 55       	subi	r30, 0x5F	; 95
   10f6c:	fa 4f       	sbci	r31, 0xFA	; 250
   10f6e:	81 e0       	ldi	r24, 0x01	; 1
   10f70:	80 83       	st	Z, r24
   10f72:	1f ef       	ldi	r17, 0xFF	; 255
   10f74:	ed b7       	in	r30, 0x3d	; 61
   10f76:	fe b7       	in	r31, 0x3e	; 62
   10f78:	36 96       	adiw	r30, 0x06	; 6
   10f7a:	0f b6       	in	r0, 0x3f	; 63
   10f7c:	f8 94       	cli
   10f7e:	fe bf       	out	0x3e, r31	; 62
   10f80:	0f be       	out	0x3f, r0	; 63
   10f82:	ed bf       	out	0x3d, r30	; 61
   10f84:	01 c0       	rjmp	.+2      	; 0x10f88 <SB37SI_ParseCommand+0x530>

			retval = SUCCESS;

			break;
   10f86:	10 e0       	ldi	r17, 0x00	; 0
			return FAIL;
	}

	return retval;

}
   10f88:	81 2f       	mov	r24, r17
   10f8a:	0f 90       	pop	r0
   10f8c:	0f 90       	pop	r0
   10f8e:	0f 90       	pop	r0
   10f90:	0f 90       	pop	r0
   10f92:	cf 91       	pop	r28
   10f94:	df 91       	pop	r29
   10f96:	1f 91       	pop	r17
   10f98:	0f 91       	pop	r16
   10f9a:	ff 90       	pop	r15
   10f9c:	ef 90       	pop	r14
   10f9e:	df 90       	pop	r13
   10fa0:	cf 90       	pop	r12
   10fa2:	bf 90       	pop	r11
   10fa4:	af 90       	pop	r10
   10fa6:	08 95       	ret

00010fa8 <SB37SI_ParseConsole>:
	*context = &retval[strlen(retval)];
	return retval;
}

void SB37SI_ParseConsole(PSEABIRD_CTD_37_SI_TASK pTaskInfo)
{
   10fa8:	8f 92       	push	r8
   10faa:	9f 92       	push	r9
   10fac:	af 92       	push	r10
   10fae:	bf 92       	push	r11
   10fb0:	cf 92       	push	r12
   10fb2:	df 92       	push	r13
   10fb4:	ef 92       	push	r14
   10fb6:	ff 92       	push	r15
   10fb8:	0f 93       	push	r16
   10fba:	1f 93       	push	r17
   10fbc:	df 93       	push	r29
   10fbe:	cf 93       	push	r28
   10fc0:	0f 92       	push	r0
   10fc2:	0f 92       	push	r0
   10fc4:	cd b7       	in	r28, 0x3d	; 61
   10fc6:	de b7       	in	r29, 0x3e	; 62
   10fc8:	6c 01       	movw	r12, r24
	char* myCommand = consoleIn[pTaskInfo->taskID].cmd; 
   10fca:	dc 01       	movw	r26, r24
   10fcc:	8c 91       	ld	r24, X
   10fce:	90 e0       	ldi	r25, 0x00	; 0
   10fd0:	29 e0       	ldi	r18, 0x09	; 9
   10fd2:	31 e0       	ldi	r19, 0x01	; 1
   10fd4:	f9 01       	movw	r30, r18
   10fd6:	8e 9f       	mul	r24, r30
   10fd8:	90 01       	movw	r18, r0
   10fda:	8f 9f       	mul	r24, r31
   10fdc:	30 0d       	add	r19, r0
   10fde:	9e 9f       	mul	r25, r30
   10fe0:	30 0d       	add	r19, r0
   10fe2:	11 24       	eor	r1, r1
   10fe4:	2e 58       	subi	r18, 0x8E	; 142
   10fe6:	32 46       	sbci	r19, 0x62	; 98
   10fe8:	3a 83       	std	Y+2, r19	; 0x02
   10fea:	29 83       	std	Y+1, r18	; 0x01
	char* result = NULL;
	char command = 0;
	BOOL goodCommand = FALSE;
	uint8_t resultCode = 0;

	sprintf_P(dbgMsg, PSTR("Parsing console: <%s>"), myCommand); SEND_MSG;
   10fec:	00 d0       	rcall	.+0      	; 0x10fee <SB37SI_ParseConsole+0x46>
   10fee:	00 d0       	rcall	.+0      	; 0x10ff0 <SB37SI_ParseConsole+0x48>
   10ff0:	ed b7       	in	r30, 0x3d	; 61
   10ff2:	fe b7       	in	r31, 0x3e	; 62
   10ff4:	31 96       	adiw	r30, 0x01	; 1
   10ff6:	93 ef       	ldi	r25, 0xF3	; 243
   10ff8:	89 2e       	mov	r8, r25
   10ffa:	98 e1       	ldi	r25, 0x18	; 24
   10ffc:	99 2e       	mov	r9, r25
   10ffe:	ad b7       	in	r26, 0x3d	; 61
   11000:	be b7       	in	r27, 0x3e	; 62
   11002:	12 96       	adiw	r26, 0x02	; 2
   11004:	9c 92       	st	X, r9
   11006:	8e 92       	st	-X, r8
   11008:	11 97       	sbiw	r26, 0x01	; 1
   1100a:	8c e9       	ldi	r24, 0x9C	; 156
   1100c:	9e e0       	ldi	r25, 0x0E	; 14
   1100e:	93 83       	std	Z+3, r25	; 0x03
   11010:	82 83       	std	Z+2, r24	; 0x02
   11012:	35 83       	std	Z+5, r19	; 0x05
   11014:	24 83       	std	Z+4, r18	; 0x04
   11016:	0e 94 51 f1 	call	0x1e2a2	; 0x1e2a2 <sprintf_P>

	myCommand[MAX_FILE_SIZE_IN - 1] = 0;			//Make sure command string is NULL terminated
   1101a:	e9 81       	ldd	r30, Y+1	; 0x01
   1101c:	fa 81       	ldd	r31, Y+2	; 0x02
   1101e:	e1 50       	subi	r30, 0x01	; 1
   11020:	ff 4f       	sbci	r31, 0xFF	; 255
   11022:	10 82       	st	Z, r1

	memset(pTaskInfo->pBuf->tokenSeparatorList, 0, MAX_TOKEN_SEPARATORS);
   11024:	f6 01       	movw	r30, r12
   11026:	84 81       	ldd	r24, Z+4	; 0x04
   11028:	95 81       	ldd	r25, Z+5	; 0x05
   1102a:	88 55       	subi	r24, 0x58	; 88
   1102c:	9a 4f       	sbci	r25, 0xFA	; 250
   1102e:	fc 01       	movw	r30, r24
   11030:	84 e1       	ldi	r24, 0x14	; 20
   11032:	df 01       	movw	r26, r30
   11034:	1d 92       	st	X+, r1
   11036:	8a 95       	dec	r24
   11038:	e9 f7       	brne	.-6      	; 0x11034 <SB37SI_ParseConsole+0x8c>
	strcat_P(pTaskInfo->pBuf->tokenSeparatorList, tokenListConsole);
   1103a:	ed b7       	in	r30, 0x3d	; 61
   1103c:	fe b7       	in	r31, 0x3e	; 62
   1103e:	36 96       	adiw	r30, 0x06	; 6
   11040:	0f b6       	in	r0, 0x3f	; 63
   11042:	f8 94       	cli
   11044:	fe bf       	out	0x3e, r31	; 62
   11046:	0f be       	out	0x3f, r0	; 63
   11048:	ed bf       	out	0x3d, r30	; 61
   1104a:	d6 01       	movw	r26, r12
   1104c:	14 96       	adiw	r26, 0x04	; 4
   1104e:	8d 91       	ld	r24, X+
   11050:	9c 91       	ld	r25, X
   11052:	15 97       	sbiw	r26, 0x05	; 5
   11054:	88 55       	subi	r24, 0x58	; 88
   11056:	9a 4f       	sbci	r25, 0xFA	; 250
   11058:	68 e3       	ldi	r22, 0x38	; 56
   1105a:	72 e0       	ldi	r23, 0x02	; 2
   1105c:	0e 94 b4 ef 	call	0x1df68	; 0x1df68 <strcat_P>

	result = strtok_r(myCommand, pTaskInfo->pBuf->tokenSeparatorList, &myCommand);
   11060:	f6 01       	movw	r30, r12
   11062:	64 81       	ldd	r22, Z+4	; 0x04
   11064:	75 81       	ldd	r23, Z+5	; 0x05
   11066:	68 55       	subi	r22, 0x58	; 88
   11068:	7a 4f       	sbci	r23, 0xFA	; 250
   1106a:	89 81       	ldd	r24, Y+1	; 0x01
   1106c:	9a 81       	ldd	r25, Y+2	; 0x02
   1106e:	8e 01       	movw	r16, r28
   11070:	0f 5f       	subi	r16, 0xFF	; 255
   11072:	1f 4f       	sbci	r17, 0xFF	; 255
   11074:	a8 01       	movw	r20, r16
   11076:	0e 94 a0 f0 	call	0x1e140	; 0x1e140 <strtok_r>
   1107a:	5c 01       	movw	r10, r24
	resultCode = 1;				//No Command Received
	
	if(result != NULL)
   1107c:	00 97       	sbiw	r24, 0x00	; 0
   1107e:	19 f4       	brne	.+6      	; 0x11086 <SB37SI_ParseConsole+0xde>
   11080:	ff 24       	eor	r15, r15
   11082:	f3 94       	inc	r15
   11084:	26 c0       	rjmp	.+76     	; 0x110d2 <SB37SI_ParseConsole+0x12a>
	{
		resultCode = 2;			//Unknown Parser Code
		if(strncasecmp_P(result, ctd37SIParserID, strlen_P(ctd37SIParserID)) == 0)
   11086:	85 e5       	ldi	r24, 0x55	; 85
   11088:	9d e0       	ldi	r25, 0x0D	; 13
   1108a:	0e 94 c6 ef 	call	0x1df8c	; 0x1df8c <strlen_P>
   1108e:	ac 01       	movw	r20, r24
   11090:	c5 01       	movw	r24, r10
   11092:	65 e5       	ldi	r22, 0x55	; 85
   11094:	7d e0       	ldi	r23, 0x0D	; 13
   11096:	0e 94 cf ef 	call	0x1df9e	; 0x1df9e <strncasecmp_P>
   1109a:	89 2b       	or	r24, r25
   1109c:	19 f0       	breq	.+6      	; 0x110a4 <SB37SI_ParseConsole+0xfc>
   1109e:	82 e0       	ldi	r24, 0x02	; 2
   110a0:	f8 2e       	mov	r15, r24
   110a2:	17 c0       	rjmp	.+46     	; 0x110d2 <SB37SI_ParseConsole+0x12a>
		{
			resultCode = 3;		//Unknown command

			command = getCommand(&myCommand, ctd37SICommands[0], CTD37SI_CMD_LEN, NUM_CTD37SI_COMMANDS, ctd37SICmdList, pTaskInfo->pBuf->tokenSeparatorList);
   110a4:	d6 01       	movw	r26, r12
   110a6:	14 96       	adiw	r26, 0x04	; 4
   110a8:	ed 91       	ld	r30, X+
   110aa:	fc 91       	ld	r31, X
   110ac:	15 97       	sbiw	r26, 0x05	; 5
   110ae:	e8 55       	subi	r30, 0x58	; 88
   110b0:	fa 4f       	sbci	r31, 0xFA	; 250
   110b2:	c8 01       	movw	r24, r16
   110b4:	62 e3       	ldi	r22, 0x32	; 50
   110b6:	7d e0       	ldi	r23, 0x0D	; 13
   110b8:	47 e0       	ldi	r20, 0x07	; 7
   110ba:	25 e0       	ldi	r18, 0x05	; 5
   110bc:	0a e5       	ldi	r16, 0x5A	; 90
   110be:	1d e0       	ldi	r17, 0x0D	; 13
   110c0:	7f 01       	movw	r14, r30
   110c2:	0e 94 1f 38 	call	0x703e	; 0x703e <getCommand>
   110c6:	18 2f       	mov	r17, r24

			if(command != 0)
   110c8:	88 23       	and	r24, r24
   110ca:	09 f0       	breq	.+2      	; 0x110ce <SB37SI_ParseConsole+0x126>
   110cc:	be c0       	rjmp	.+380    	; 0x1124a <SB37SI_ParseConsole+0x2a2>
   110ce:	03 e0       	ldi	r16, 0x03	; 3
   110d0:	f0 2e       	mov	r15, r16
		sprintf_P(dbgMsg, PSTR("good message")); SEND_MSG;
		resultCode = SB37SI_ParseCommand(pTaskInfo, command, myCommand);
	}
	else
	{
		sprintf_P(dbgMsg, PSTR("bad .. code=%d"), resultCode); SEND_MSG;
   110d2:	00 d0       	rcall	.+0      	; 0x110d4 <SB37SI_ParseConsole+0x12c>
   110d4:	00 d0       	rcall	.+0      	; 0x110d6 <SB37SI_ParseConsole+0x12e>
   110d6:	ed b7       	in	r30, 0x3d	; 61
   110d8:	fe b7       	in	r31, 0x3e	; 62
   110da:	31 96       	adiw	r30, 0x01	; 1
   110dc:	03 ef       	ldi	r16, 0xF3	; 243
   110de:	18 e1       	ldi	r17, 0x18	; 24
   110e0:	ad b7       	in	r26, 0x3d	; 61
   110e2:	be b7       	in	r27, 0x3e	; 62
   110e4:	12 96       	adiw	r26, 0x02	; 2
   110e6:	1c 93       	st	X, r17
   110e8:	0e 93       	st	-X, r16
   110ea:	11 97       	sbiw	r26, 0x01	; 1
   110ec:	80 e8       	ldi	r24, 0x80	; 128
   110ee:	9e e0       	ldi	r25, 0x0E	; 14
   110f0:	93 83       	std	Z+3, r25	; 0x03
   110f2:	82 83       	std	Z+2, r24	; 0x02
   110f4:	f4 82       	std	Z+4, r15	; 0x04
   110f6:	15 82       	std	Z+5, r1	; 0x05
   110f8:	0e 94 51 f1 	call	0x1e2a2	; 0x1e2a2 <sprintf_P>
		sprintf_P(dbgMsg, PSTR("cmd = <%s><%s>"), myCommand, result); SEND_MSG;
   110fc:	0f 92       	push	r0
   110fe:	0f 92       	push	r0
   11100:	ed b7       	in	r30, 0x3d	; 61
   11102:	fe b7       	in	r31, 0x3e	; 62
   11104:	31 96       	adiw	r30, 0x01	; 1
   11106:	ad b7       	in	r26, 0x3d	; 61
   11108:	be b7       	in	r27, 0x3e	; 62
   1110a:	12 96       	adiw	r26, 0x02	; 2
   1110c:	1c 93       	st	X, r17
   1110e:	0e 93       	st	-X, r16
   11110:	11 97       	sbiw	r26, 0x01	; 1
   11112:	81 e7       	ldi	r24, 0x71	; 113
   11114:	9e e0       	ldi	r25, 0x0E	; 14
   11116:	93 83       	std	Z+3, r25	; 0x03
   11118:	82 83       	std	Z+2, r24	; 0x02
   1111a:	89 81       	ldd	r24, Y+1	; 0x01
   1111c:	9a 81       	ldd	r25, Y+2	; 0x02
   1111e:	95 83       	std	Z+5, r25	; 0x05
   11120:	84 83       	std	Z+4, r24	; 0x04
   11122:	b7 82       	std	Z+7, r11	; 0x07
   11124:	a6 82       	std	Z+6, r10	; 0x06
   11126:	0e 94 51 f1 	call	0x1e2a2	; 0x1e2a2 <sprintf_P>
   1112a:	ed b7       	in	r30, 0x3d	; 61
   1112c:	fe b7       	in	r31, 0x3e	; 62
   1112e:	38 96       	adiw	r30, 0x08	; 8
   11130:	0f b6       	in	r0, 0x3f	; 63
   11132:	f8 94       	cli
   11134:	fe bf       	out	0x3e, r31	; 62
   11136:	0f be       	out	0x3f, r0	; 63
   11138:	ed bf       	out	0x3d, r30	; 61
	}

	if(resultCode != SUCCESS)
	{
		switch(resultCode)
   1113a:	f2 e0       	ldi	r31, 0x02	; 2
   1113c:	ff 16       	cp	r15, r31
   1113e:	79 f0       	breq	.+30     	; 0x1115e <SB37SI_ParseConsole+0x1b6>
   11140:	43 e0       	ldi	r20, 0x03	; 3
   11142:	f4 16       	cp	r15, r20
   11144:	a9 f0       	breq	.+42     	; 0x11170 <SB37SI_ParseConsole+0x1c8>
   11146:	d6 01       	movw	r26, r12
   11148:	14 96       	adiw	r26, 0x04	; 4
   1114a:	ed 91       	ld	r30, X+
   1114c:	fc 91       	ld	r31, X
   1114e:	15 97       	sbiw	r26, 0x05	; 5
   11150:	b1 e0       	ldi	r27, 0x01	; 1
   11152:	fb 16       	cp	r15, r27
   11154:	b1 f4       	brne	.+44     	; 0x11182 <SB37SI_ParseConsole+0x1da>
		{
			case 1:
				pTaskInfo->pBuf->responseInfo.status = CONSOLE_RESPONSE_EMPTY_CMD;
   11156:	ef 55       	subi	r30, 0x5F	; 95
   11158:	fa 4f       	sbci	r31, 0xFA	; 250
   1115a:	8d e0       	ldi	r24, 0x0D	; 13
   1115c:	15 c0       	rjmp	.+42     	; 0x11188 <SB37SI_ParseConsole+0x1e0>
				break;
			case 2:
				pTaskInfo->pBuf->responseInfo.status = CONSOLE_RESPONSE_WRONG_DEVICE;
   1115e:	d6 01       	movw	r26, r12
   11160:	14 96       	adiw	r26, 0x04	; 4
   11162:	ed 91       	ld	r30, X+
   11164:	fc 91       	ld	r31, X
   11166:	15 97       	sbiw	r26, 0x05	; 5
   11168:	ef 55       	subi	r30, 0x5F	; 95
   1116a:	fa 4f       	sbci	r31, 0xFA	; 250
   1116c:	8e e0       	ldi	r24, 0x0E	; 14
   1116e:	0c c0       	rjmp	.+24     	; 0x11188 <SB37SI_ParseConsole+0x1e0>
				break;
			case 3:
				pTaskInfo->pBuf->responseInfo.status = CONSOLE_RESPONSE_UNKNOWN_CMD;
   11170:	d6 01       	movw	r26, r12
   11172:	14 96       	adiw	r26, 0x04	; 4
   11174:	ed 91       	ld	r30, X+
   11176:	fc 91       	ld	r31, X
   11178:	15 97       	sbiw	r26, 0x05	; 5
   1117a:	ef 55       	subi	r30, 0x5F	; 95
   1117c:	fa 4f       	sbci	r31, 0xFA	; 250
   1117e:	8a e0       	ldi	r24, 0x0A	; 10
   11180:	03 c0       	rjmp	.+6      	; 0x11188 <SB37SI_ParseConsole+0x1e0>
				break;
			default:
				pTaskInfo->pBuf->responseInfo.status = CONSOLE_RESPONSE_CMD_FAILED;
   11182:	ef 55       	subi	r30, 0x5F	; 95
   11184:	fa 4f       	sbci	r31, 0xFA	; 250
   11186:	8f e0       	ldi	r24, 0x0F	; 15
   11188:	80 83       	st	Z, r24
				break;
		}
	}

	SB37SI_QueueConsoleResponse(pTaskInfo);
   1118a:	c6 01       	movw	r24, r12
   1118c:	0e 94 29 80 	call	0x10052	; 0x10052 <SB37SI_QueueConsoleResponse>

	memset(consoleIn[pTaskInfo->taskID].cmd, 0, MAX_FILE_SIZE_IN);
   11190:	f6 01       	movw	r30, r12
   11192:	80 81       	ld	r24, Z
   11194:	90 e0       	ldi	r25, 0x00	; 0
   11196:	29 e0       	ldi	r18, 0x09	; 9
   11198:	31 e0       	ldi	r19, 0x01	; 1
   1119a:	ac 01       	movw	r20, r24
   1119c:	42 9f       	mul	r20, r18
   1119e:	c0 01       	movw	r24, r0
   111a0:	43 9f       	mul	r20, r19
   111a2:	90 0d       	add	r25, r0
   111a4:	52 9f       	mul	r21, r18
   111a6:	90 0d       	add	r25, r0
   111a8:	11 24       	eor	r1, r1
   111aa:	8e 58       	subi	r24, 0x8E	; 142
   111ac:	92 46       	sbci	r25, 0x62	; 98
   111ae:	fc 01       	movw	r30, r24
   111b0:	80 e0       	ldi	r24, 0x00	; 0
   111b2:	91 e0       	ldi	r25, 0x01	; 1
   111b4:	df 01       	movw	r26, r30
   111b6:	ac 01       	movw	r20, r24
   111b8:	1d 92       	st	X+, r1
   111ba:	41 50       	subi	r20, 0x01	; 1
   111bc:	50 40       	sbci	r21, 0x00	; 0
   111be:	e1 f7       	brne	.-8      	; 0x111b8 <SB37SI_ParseConsole+0x210>
	consoleIn[pTaskInfo->taskID].cmdSrcAddress = 0;
   111c0:	d6 01       	movw	r26, r12
   111c2:	8c 91       	ld	r24, X
   111c4:	90 e0       	ldi	r25, 0x00	; 0
   111c6:	82 9f       	mul	r24, r18
   111c8:	f0 01       	movw	r30, r0
   111ca:	83 9f       	mul	r24, r19
   111cc:	f0 0d       	add	r31, r0
   111ce:	92 9f       	mul	r25, r18
   111d0:	f0 0d       	add	r31, r0
   111d2:	11 24       	eor	r1, r1
   111d4:	e7 59       	subi	r30, 0x97	; 151
   111d6:	f2 46       	sbci	r31, 0x62	; 98
   111d8:	11 82       	std	Z+1, r1	; 0x01
   111da:	10 82       	st	Z, r1
	consoleIn[pTaskInfo->taskID].functionCode = 0;
   111dc:	8c 91       	ld	r24, X
   111de:	90 e0       	ldi	r25, 0x00	; 0
   111e0:	82 9f       	mul	r24, r18
   111e2:	f0 01       	movw	r30, r0
   111e4:	83 9f       	mul	r24, r19
   111e6:	f0 0d       	add	r31, r0
   111e8:	92 9f       	mul	r25, r18
   111ea:	f0 0d       	add	r31, r0
   111ec:	11 24       	eor	r1, r1
   111ee:	e7 59       	subi	r30, 0x97	; 151
   111f0:	f2 46       	sbci	r31, 0x62	; 98
   111f2:	12 82       	std	Z+2, r1	; 0x02
	consoleIn[pTaskInfo->taskID].cmdSize = 0;
   111f4:	8c 91       	ld	r24, X
   111f6:	90 e0       	ldi	r25, 0x00	; 0
   111f8:	82 9f       	mul	r24, r18
   111fa:	f0 01       	movw	r30, r0
   111fc:	83 9f       	mul	r24, r19
   111fe:	f0 0d       	add	r31, r0
   11200:	92 9f       	mul	r25, r18
   11202:	f0 0d       	add	r31, r0
   11204:	11 24       	eor	r1, r1
   11206:	e7 59       	subi	r30, 0x97	; 151
   11208:	f2 46       	sbci	r31, 0x62	; 98
   1120a:	14 82       	std	Z+4, r1	; 0x04
   1120c:	13 82       	std	Z+3, r1	; 0x03
	consoleIn[pTaskInfo->taskID].id = 0;
   1120e:	8c 91       	ld	r24, X
   11210:	90 e0       	ldi	r25, 0x00	; 0
   11212:	82 9f       	mul	r24, r18
   11214:	f0 01       	movw	r30, r0
   11216:	83 9f       	mul	r24, r19
   11218:	f0 0d       	add	r31, r0
   1121a:	92 9f       	mul	r25, r18
   1121c:	f0 0d       	add	r31, r0
   1121e:	11 24       	eor	r1, r1
   11220:	e7 59       	subi	r30, 0x97	; 151
   11222:	f2 46       	sbci	r31, 0x62	; 98
   11224:	15 82       	std	Z+5, r1	; 0x05
   11226:	16 82       	std	Z+6, r1	; 0x06
   11228:	17 82       	std	Z+7, r1	; 0x07
   1122a:	10 86       	std	Z+8, r1	; 0x08

	return;
}
   1122c:	0f 90       	pop	r0
   1122e:	0f 90       	pop	r0
   11230:	cf 91       	pop	r28
   11232:	df 91       	pop	r29
   11234:	1f 91       	pop	r17
   11236:	0f 91       	pop	r16
   11238:	ff 90       	pop	r15
   1123a:	ef 90       	pop	r14
   1123c:	df 90       	pop	r13
   1123e:	cf 90       	pop	r12
   11240:	bf 90       	pop	r11
   11242:	af 90       	pop	r10
   11244:	9f 90       	pop	r9
   11246:	8f 90       	pop	r8
   11248:	08 95       	ret
		}
	}

	if(goodCommand == TRUE)
	{
		sprintf_P(dbgMsg, PSTR("good message")); SEND_MSG;
   1124a:	00 d0       	rcall	.+0      	; 0x1124c <SB37SI_ParseConsole+0x2a4>
   1124c:	0f 92       	push	r0
   1124e:	ed b7       	in	r30, 0x3d	; 61
   11250:	fe b7       	in	r31, 0x3e	; 62
   11252:	92 82       	std	Z+2, r9	; 0x02
   11254:	81 82       	std	Z+1, r8	; 0x01
   11256:	8f e8       	ldi	r24, 0x8F	; 143
   11258:	9e e0       	ldi	r25, 0x0E	; 14
   1125a:	94 83       	std	Z+4, r25	; 0x04
   1125c:	83 83       	std	Z+3, r24	; 0x03
   1125e:	0e 94 51 f1 	call	0x1e2a2	; 0x1e2a2 <sprintf_P>
		resultCode = SB37SI_ParseCommand(pTaskInfo, command, myCommand);
   11262:	0f 90       	pop	r0
   11264:	0f 90       	pop	r0
   11266:	0f 90       	pop	r0
   11268:	0f 90       	pop	r0
   1126a:	49 81       	ldd	r20, Y+1	; 0x01
   1126c:	5a 81       	ldd	r21, Y+2	; 0x02
   1126e:	c6 01       	movw	r24, r12
   11270:	61 2f       	mov	r22, r17
   11272:	0e 94 2c 85 	call	0x10a58	; 0x10a58 <SB37SI_ParseCommand>
   11276:	f8 2e       	mov	r15, r24
	{
		sprintf_P(dbgMsg, PSTR("bad .. code=%d"), resultCode); SEND_MSG;
		sprintf_P(dbgMsg, PSTR("cmd = <%s><%s>"), myCommand, result); SEND_MSG;
	}

	if(resultCode != SUCCESS)
   11278:	ff ef       	ldi	r31, 0xFF	; 255
   1127a:	8f 17       	cp	r24, r31
   1127c:	09 f4       	brne	.+2      	; 0x11280 <SB37SI_ParseConsole+0x2d8>
   1127e:	85 cf       	rjmp	.-246    	; 0x1118a <SB37SI_ParseConsole+0x1e2>
   11280:	5c cf       	rjmp	.-328    	; 0x1113a <SB37SI_ParseConsole+0x192>

00011282 <SB37SI_GetCTDSample>:
	return retval;
}


void SB37SI_GetCTDSample(PSEABIRD_CTD_37_SI_TASK pTaskInfo)
{
   11282:	4f 92       	push	r4
   11284:	5f 92       	push	r5
   11286:	6f 92       	push	r6
   11288:	7f 92       	push	r7
   1128a:	8f 92       	push	r8
   1128c:	9f 92       	push	r9
   1128e:	bf 92       	push	r11
   11290:	cf 92       	push	r12
   11292:	df 92       	push	r13
   11294:	ef 92       	push	r14
   11296:	ff 92       	push	r15
   11298:	0f 93       	push	r16
   1129a:	1f 93       	push	r17
   1129c:	df 93       	push	r29
   1129e:	cf 93       	push	r28
   112a0:	cd b7       	in	r28, 0x3d	; 61
   112a2:	de b7       	in	r29, 0x3e	; 62
   112a4:	a4 97       	sbiw	r28, 0x24	; 36
   112a6:	0f b6       	in	r0, 0x3f	; 63
   112a8:	f8 94       	cli
   112aa:	de bf       	out	0x3e, r29	; 62
   112ac:	0f be       	out	0x3f, r0	; 63
   112ae:	cd bf       	out	0x3d, r28	; 61
   112b0:	7c 01       	movw	r14, r24
	char cmdTs[2] = {0x54, 0x53};
   112b2:	84 e5       	ldi	r24, 0x54	; 84
   112b4:	89 83       	std	Y+1, r24	; 0x01
   112b6:	93 e5       	ldi	r25, 0x53	; 83
   112b8:	9a 83       	std	Y+2, r25	; 0x02
	char cmdDs[2] = {0x44, 0x53};
   112ba:	84 e4       	ldi	r24, 0x44	; 68
   112bc:	8b 83       	std	Y+3, r24	; 0x03
   112be:	9c 83       	std	Y+4, r25	; 0x04

	char* last;
	char* first = pTaskInfo->pBuf->bufferRx;
   112c0:	d7 01       	movw	r26, r14
   112c2:	14 96       	adiw	r26, 0x04	; 4
   112c4:	0d 91       	ld	r16, X+
   112c6:	1c 91       	ld	r17, X
   112c8:	15 97       	sbiw	r26, 0x05	; 5
	uint8_t ntok;
	char tokenDelimiters[] = " :,\r\n";
   112ca:	de 01       	movw	r26, r28
   112cc:	19 96       	adiw	r26, 0x09	; 9
   112ce:	e7 e8       	ldi	r30, 0x87	; 135
   112d0:	f4 e0       	ldi	r31, 0x04	; 4
   112d2:	86 e0       	ldi	r24, 0x06	; 6
   112d4:	01 90       	ld	r0, Z+
   112d6:	0d 92       	st	X+, r0
   112d8:	81 50       	subi	r24, 0x01	; 1
   112da:	e1 f7       	brne	.-8      	; 0x112d4 <SB37SI_GetCTDSample+0x52>
	char* tokens[11];


	uint16_t len = 0;
   112dc:	18 86       	std	Y+8, r1	; 0x08
   112de:	1f 82       	std	Y+7, r1	; 0x07

	memset(pTaskInfo->pBuf->bufferRx, 0, 1024);
   112e0:	f7 01       	movw	r30, r14
   112e2:	84 81       	ldd	r24, Z+4	; 0x04
   112e4:	95 81       	ldd	r25, Z+5	; 0x05
   112e6:	80 50       	subi	r24, 0x00	; 0
   112e8:	9f 4f       	sbci	r25, 0xFF	; 255
   112ea:	fc 01       	movw	r30, r24
   112ec:	80 e0       	ldi	r24, 0x00	; 0
   112ee:	94 e0       	ldi	r25, 0x04	; 4
   112f0:	df 01       	movw	r26, r30
   112f2:	9c 01       	movw	r18, r24
   112f4:	1d 92       	st	X+, r1
   112f6:	21 50       	subi	r18, 0x01	; 1
   112f8:	30 40       	sbci	r19, 0x00	; 0
   112fa:	e1 f7       	brne	.-8      	; 0x112f4 <SB37SI_GetCTDSample+0x72>

	SB37SI_CTD_Tx(pTaskInfo, cmdTs, 2);
   112fc:	c7 01       	movw	r24, r14
   112fe:	be 01       	movw	r22, r28
   11300:	6f 5f       	subi	r22, 0xFF	; 255
   11302:	7f 4f       	sbci	r23, 0xFF	; 255
   11304:	42 e0       	ldi	r20, 0x02	; 2
   11306:	50 e0       	ldi	r21, 0x00	; 0
   11308:	0e 94 42 82 	call	0x10484	; 0x10484 <SB37SI_CTD_Tx>

	SB37SI_CTD_Rx(pTaskInfo, pTaskInfo->pBuf->bufferRx, &len);
   1130c:	d7 01       	movw	r26, r14
   1130e:	14 96       	adiw	r26, 0x04	; 4
   11310:	6d 91       	ld	r22, X+
   11312:	7c 91       	ld	r23, X
   11314:	15 97       	sbiw	r26, 0x05	; 5
   11316:	60 50       	subi	r22, 0x00	; 0
   11318:	7f 4f       	sbci	r23, 0xFF	; 255
   1131a:	97 e0       	ldi	r25, 0x07	; 7
   1131c:	c9 2e       	mov	r12, r25
   1131e:	d1 2c       	mov	r13, r1
   11320:	cc 0e       	add	r12, r28
   11322:	dd 1e       	adc	r13, r29
   11324:	c7 01       	movw	r24, r14
   11326:	a6 01       	movw	r20, r12
   11328:	0e 94 e5 81 	call	0x103ca	; 0x103ca <SB37SI_CTD_Rx>

	if(len == 11)
   1132c:	8f 81       	ldd	r24, Y+7	; 0x07
   1132e:	98 85       	ldd	r25, Y+8	; 0x08
   11330:	0b 97       	sbiw	r24, 0x0b	; 11
   11332:	09 f0       	breq	.+2      	; 0x11336 <SB37SI_GetCTDSample+0xb4>
   11334:	24 c1       	rjmp	.+584    	; 0x1157e <SB37SI_GetCTDSample+0x2fc>
{
	char cmdTs[2] = {0x54, 0x53};
	char cmdDs[2] = {0x44, 0x53};

	char* last;
	char* first = pTaskInfo->pBuf->bufferRx;
   11336:	41 2c       	mov	r4, r1
   11338:	81 e0       	ldi	r24, 0x01	; 1
   1133a:	58 2e       	mov	r5, r24
   1133c:	40 0e       	add	r4, r16
   1133e:	51 1e       	adc	r5, r17

	SB37SI_CTD_Rx(pTaskInfo, pTaskInfo->pBuf->bufferRx, &len);

	if(len == 11)
	{
		uint8_t index = pTaskInfo->pBuf->reportData.numSamples;
   11340:	f7 01       	movw	r30, r14
   11342:	44 81       	ldd	r20, Z+4	; 0x04
   11344:	55 81       	ldd	r21, Z+5	; 0x05
		PCTD_SAMPLE data = (PCTD_SAMPLE)pTaskInfo->pBuf->bufferRx;
   11346:	ba 01       	movw	r22, r20
   11348:	60 50       	subi	r22, 0x00	; 0
   1134a:	7f 4f       	sbci	r23, 0xFF	; 255

		pTaskInfo->pBuf->reportData.samples[index].temp = data->temp;
   1134c:	42 5d       	subi	r20, 0xD2	; 210
   1134e:	5a 4f       	sbci	r21, 0xFA	; 250
   11350:	da 01       	movw	r26, r20
   11352:	bc 90       	ld	r11, X
   11354:	4e 52       	subi	r20, 0x2E	; 46
   11356:	55 40       	sbci	r21, 0x05	; 5
   11358:	8b 2d       	mov	r24, r11
   1135a:	90 e0       	ldi	r25, 0x00	; 0
   1135c:	88 0f       	add	r24, r24
   1135e:	99 1f       	adc	r25, r25
   11360:	fc 01       	movw	r30, r24
   11362:	a3 e0       	ldi	r26, 0x03	; 3
   11364:	ee 0f       	add	r30, r30
   11366:	ff 1f       	adc	r31, r31
   11368:	aa 95       	dec	r26
   1136a:	e1 f7       	brne	.-8      	; 0x11364 <SB37SI_GetCTDSample+0xe2>
   1136c:	e8 1b       	sub	r30, r24
   1136e:	f9 0b       	sbc	r31, r25
   11370:	e4 0f       	add	r30, r20
   11372:	f5 1f       	adc	r31, r21
   11374:	e1 5d       	subi	r30, 0xD1	; 209
   11376:	fa 4f       	sbci	r31, 0xFA	; 250
   11378:	db 01       	movw	r26, r22
   1137a:	0d 91       	ld	r16, X+
   1137c:	1d 91       	ld	r17, X+
   1137e:	2d 91       	ld	r18, X+
   11380:	3c 91       	ld	r19, X
   11382:	13 97       	sbiw	r26, 0x03	; 3
   11384:	00 83       	st	Z, r16
   11386:	11 83       	std	Z+1, r17	; 0x01
   11388:	22 83       	std	Z+2, r18	; 0x02
   1138a:	33 83       	std	Z+3, r19	; 0x03
		pTaskInfo->pBuf->reportData.samples[index].cond = data->cond;
   1138c:	8b 2d       	mov	r24, r11
   1138e:	90 e0       	ldi	r25, 0x00	; 0
   11390:	88 0f       	add	r24, r24
   11392:	99 1f       	adc	r25, r25
   11394:	9c 01       	movw	r18, r24
   11396:	63 e0       	ldi	r22, 0x03	; 3
   11398:	22 0f       	add	r18, r18
   1139a:	33 1f       	adc	r19, r19
   1139c:	6a 95       	dec	r22
   1139e:	e1 f7       	brne	.-8      	; 0x11398 <SB37SI_GetCTDSample+0x116>
   113a0:	28 1b       	sub	r18, r24
   113a2:	39 0b       	sbc	r19, r25
   113a4:	42 0f       	add	r20, r18
   113a6:	53 1f       	adc	r21, r19
   113a8:	4d 5c       	subi	r20, 0xCD	; 205
   113aa:	5a 4f       	sbci	r21, 0xFA	; 250
   113ac:	14 96       	adiw	r26, 0x04	; 4
   113ae:	8d 91       	ld	r24, X+
   113b0:	9d 91       	ld	r25, X+
   113b2:	0d 90       	ld	r0, X+
   113b4:	bc 91       	ld	r27, X
   113b6:	a0 2d       	mov	r26, r0
   113b8:	fa 01       	movw	r30, r20
   113ba:	80 83       	st	Z, r24
   113bc:	91 83       	std	Z+1, r25	; 0x01
   113be:	a2 83       	std	Z+2, r26	; 0x02
   113c0:	b3 83       	std	Z+3, r27	; 0x03

		OSTimeDlyHMSM(0,0,0,100);
   113c2:	80 e0       	ldi	r24, 0x00	; 0
   113c4:	60 e0       	ldi	r22, 0x00	; 0
   113c6:	40 e0       	ldi	r20, 0x00	; 0
   113c8:	24 e6       	ldi	r18, 0x64	; 100
   113ca:	30 e0       	ldi	r19, 0x00	; 0
   113cc:	0e 94 2a 2e 	call	0x5c54	; 0x5c54 <OSTimeDlyHMSM>
		len = 0;
   113d0:	18 86       	std	Y+8, r1	; 0x08
   113d2:	1f 82       	std	Y+7, r1	; 0x07
		SB37SI_CTD_Tx(pTaskInfo, cmdDs, 2);
   113d4:	c7 01       	movw	r24, r14
   113d6:	be 01       	movw	r22, r28
   113d8:	6d 5f       	subi	r22, 0xFD	; 253
   113da:	7f 4f       	sbci	r23, 0xFF	; 255
   113dc:	42 e0       	ldi	r20, 0x02	; 2
   113de:	50 e0       	ldi	r21, 0x00	; 0
   113e0:	0e 94 42 82 	call	0x10484	; 0x10484 <SB37SI_CTD_Tx>
		SB37SI_CTD_Rx(pTaskInfo, pTaskInfo->pBuf->bufferRx, &len);
   113e4:	d7 01       	movw	r26, r14
   113e6:	14 96       	adiw	r26, 0x04	; 4
   113e8:	6d 91       	ld	r22, X+
   113ea:	7c 91       	ld	r23, X
   113ec:	15 97       	sbiw	r26, 0x05	; 5
   113ee:	60 50       	subi	r22, 0x00	; 0
   113f0:	7f 4f       	sbci	r23, 0xFF	; 255
   113f2:	c7 01       	movw	r24, r14
   113f4:	a6 01       	movw	r20, r12
   113f6:	0e 94 e5 81 	call	0x103ca	; 0x103ca <SB37SI_CTD_Rx>
   113fa:	9f e0       	ldi	r25, 0x0F	; 15
   113fc:	c9 2e       	mov	r12, r25
   113fe:	d1 2c       	mov	r13, r1
   11400:	cc 0e       	add	r12, r28
   11402:	dd 1e       	adc	r13, r29
   11404:	00 e0       	ldi	r16, 0x00	; 0

		for(ntok = 0; ntok < 11; ntok++)
		{
			tokens[ntok] = strtok_r(first, tokenDelimiters, &last);
   11406:	89 e0       	ldi	r24, 0x09	; 9
   11408:	68 2e       	mov	r6, r24
   1140a:	71 2c       	mov	r7, r1
   1140c:	6c 0e       	add	r6, r28
   1140e:	7d 1e       	adc	r7, r29
   11410:	15 e0       	ldi	r17, 0x05	; 5
   11412:	81 2e       	mov	r8, r17
   11414:	91 2c       	mov	r9, r1
   11416:	8c 0e       	add	r8, r28
   11418:	9d 1e       	adc	r9, r29
   1141a:	c2 01       	movw	r24, r4
   1141c:	b3 01       	movw	r22, r6
   1141e:	a4 01       	movw	r20, r8
   11420:	0e 94 a0 f0 	call	0x1e140	; 0x1e140 <strtok_r>
			first = NULL;
			if(tokens[ntok] == NULL)
   11424:	00 97       	sbiw	r24, 0x00	; 0
   11426:	09 f4       	brne	.+2      	; 0x1142a <SB37SI_GetCTDSample+0x1a8>
   11428:	97 c0       	rjmp	.+302    	; 0x11558 <SB37SI_GetCTDSample+0x2d6>
		SB37SI_CTD_Tx(pTaskInfo, cmdDs, 2);
		SB37SI_CTD_Rx(pTaskInfo, pTaskInfo->pBuf->bufferRx, &len);

		for(ntok = 0; ntok < 11; ntok++)
		{
			tokens[ntok] = strtok_r(first, tokenDelimiters, &last);
   1142a:	f6 01       	movw	r30, r12
   1142c:	81 93       	st	Z+, r24
   1142e:	91 93       	st	Z+, r25
   11430:	6f 01       	movw	r12, r30
		OSTimeDlyHMSM(0,0,0,100);
		len = 0;
		SB37SI_CTD_Tx(pTaskInfo, cmdDs, 2);
		SB37SI_CTD_Rx(pTaskInfo, pTaskInfo->pBuf->bufferRx, &len);

		for(ntok = 0; ntok < 11; ntok++)
   11432:	0f 5f       	subi	r16, 0xFF	; 255
   11434:	44 24       	eor	r4, r4
   11436:	55 24       	eor	r5, r5
   11438:	0b 30       	cpi	r16, 0x0B	; 11
   1143a:	79 f7       	brne	.-34     	; 0x1141a <SB37SI_GetCTDSample+0x198>
			{
				break;
			}
		}

		if ((ntok == 11) && (strcmp(tokens[3], "NO.") == 0))
   1143c:	8d 89       	ldd	r24, Y+21	; 0x15
   1143e:	9e 89       	ldd	r25, Y+22	; 0x16
   11440:	6f e7       	ldi	r22, 0x7F	; 127
   11442:	74 e0       	ldi	r23, 0x04	; 4
   11444:	0e 94 37 f0 	call	0x1e06e	; 0x1e06e <strcmp>
   11448:	00 97       	sbiw	r24, 0x00	; 0
   1144a:	09 f0       	breq	.+2      	; 0x1144e <SB37SI_GetCTDSample+0x1cc>
   1144c:	85 c0       	rjmp	.+266    	; 0x11558 <SB37SI_GetCTDSample+0x2d6>
		{
			pTaskInfo->pBuf->reportData.samples[index].day = atoi(tokens[5]);
   1144e:	d7 01       	movw	r26, r14
   11450:	14 96       	adiw	r26, 0x04	; 4
   11452:	0d 91       	ld	r16, X+
   11454:	1c 91       	ld	r17, X
   11456:	15 97       	sbiw	r26, 0x05	; 5
   11458:	89 8d       	ldd	r24, Y+25	; 0x19
   1145a:	9a 8d       	ldd	r25, Y+26	; 0x1a
   1145c:	0e 94 59 ef 	call	0x1deb2	; 0x1deb2 <atoi>
   11460:	2b 2d       	mov	r18, r11
   11462:	30 e0       	ldi	r19, 0x00	; 0
   11464:	22 0f       	add	r18, r18
   11466:	33 1f       	adc	r19, r19
   11468:	f9 01       	movw	r30, r18
   1146a:	a3 e0       	ldi	r26, 0x03	; 3
   1146c:	ee 0f       	add	r30, r30
   1146e:	ff 1f       	adc	r31, r31
   11470:	aa 95       	dec	r26
   11472:	e1 f7       	brne	.-8      	; 0x1146c <SB37SI_GetCTDSample+0x1ea>
   11474:	e2 1b       	sub	r30, r18
   11476:	f3 0b       	sbc	r31, r19
   11478:	e0 0f       	add	r30, r16
   1147a:	f1 1f       	adc	r31, r17
   1147c:	e9 5c       	subi	r30, 0xC9	; 201
   1147e:	fa 4f       	sbci	r31, 0xFA	; 250
   11480:	80 83       	st	Z, r24
			pTaskInfo->pBuf->reportData.samples[index].month = SB37SI_AlphatoMonth(tokens[6]);
   11482:	8b 8d       	ldd	r24, Y+27	; 0x1b
   11484:	9c 8d       	ldd	r25, Y+28	; 0x1c
   11486:	0e 94 96 7f 	call	0xff2c	; 0xff2c <SB37SI_AlphatoMonth>
   1148a:	2b 2d       	mov	r18, r11
   1148c:	30 e0       	ldi	r19, 0x00	; 0
   1148e:	22 0f       	add	r18, r18
   11490:	33 1f       	adc	r19, r19
   11492:	f9 01       	movw	r30, r18
   11494:	73 e0       	ldi	r23, 0x03	; 3
   11496:	ee 0f       	add	r30, r30
   11498:	ff 1f       	adc	r31, r31
   1149a:	7a 95       	dec	r23
   1149c:	e1 f7       	brne	.-8      	; 0x11496 <SB37SI_GetCTDSample+0x214>
   1149e:	e2 1b       	sub	r30, r18
   114a0:	f3 0b       	sbc	r31, r19
   114a2:	e0 0f       	add	r30, r16
   114a4:	f1 1f       	adc	r31, r17
   114a6:	e8 5c       	subi	r30, 0xC8	; 200
   114a8:	fa 4f       	sbci	r31, 0xFA	; 250
   114aa:	80 83       	st	Z, r24
			pTaskInfo->pBuf->reportData.samples[index].year = atoi(tokens[7]) - 2000;
   114ac:	8d 8d       	ldd	r24, Y+29	; 0x1d
   114ae:	9e 8d       	ldd	r25, Y+30	; 0x1e
   114b0:	0e 94 59 ef 	call	0x1deb2	; 0x1deb2 <atoi>
   114b4:	2b 2d       	mov	r18, r11
   114b6:	30 e0       	ldi	r19, 0x00	; 0
   114b8:	22 0f       	add	r18, r18
   114ba:	33 1f       	adc	r19, r19
   114bc:	f9 01       	movw	r30, r18
   114be:	53 e0       	ldi	r21, 0x03	; 3
   114c0:	ee 0f       	add	r30, r30
   114c2:	ff 1f       	adc	r31, r31
   114c4:	5a 95       	dec	r21
   114c6:	e1 f7       	brne	.-8      	; 0x114c0 <SB37SI_GetCTDSample+0x23e>
   114c8:	e2 1b       	sub	r30, r18
   114ca:	f3 0b       	sbc	r31, r19
   114cc:	e0 0f       	add	r30, r16
   114ce:	f1 1f       	adc	r31, r17
   114d0:	e7 5c       	subi	r30, 0xC7	; 199
   114d2:	fa 4f       	sbci	r31, 0xFA	; 250
   114d4:	80 5d       	subi	r24, 0xD0	; 208
   114d6:	80 83       	st	Z, r24
			pTaskInfo->pBuf->reportData.samples[index].hour = atoi(tokens[8]);
   114d8:	8f 8d       	ldd	r24, Y+31	; 0x1f
   114da:	98 a1       	ldd	r25, Y+32	; 0x20
   114dc:	0e 94 59 ef 	call	0x1deb2	; 0x1deb2 <atoi>
   114e0:	2b 2d       	mov	r18, r11
   114e2:	30 e0       	ldi	r19, 0x00	; 0
   114e4:	22 0f       	add	r18, r18
   114e6:	33 1f       	adc	r19, r19
   114e8:	f9 01       	movw	r30, r18
   114ea:	93 e0       	ldi	r25, 0x03	; 3
   114ec:	ee 0f       	add	r30, r30
   114ee:	ff 1f       	adc	r31, r31
   114f0:	9a 95       	dec	r25
   114f2:	e1 f7       	brne	.-8      	; 0x114ec <SB37SI_GetCTDSample+0x26a>
   114f4:	e2 1b       	sub	r30, r18
   114f6:	f3 0b       	sbc	r31, r19
   114f8:	e0 0f       	add	r30, r16
   114fa:	f1 1f       	adc	r31, r17
   114fc:	e6 5c       	subi	r30, 0xC6	; 198
   114fe:	fa 4f       	sbci	r31, 0xFA	; 250
   11500:	80 83       	st	Z, r24
			pTaskInfo->pBuf->reportData.samples[index].minute = atoi(tokens[9]);
   11502:	89 a1       	ldd	r24, Y+33	; 0x21
   11504:	9a a1       	ldd	r25, Y+34	; 0x22
   11506:	0e 94 59 ef 	call	0x1deb2	; 0x1deb2 <atoi>
   1150a:	2b 2d       	mov	r18, r11
   1150c:	30 e0       	ldi	r19, 0x00	; 0
   1150e:	22 0f       	add	r18, r18
   11510:	33 1f       	adc	r19, r19
   11512:	f9 01       	movw	r30, r18
   11514:	a3 e0       	ldi	r26, 0x03	; 3
   11516:	ee 0f       	add	r30, r30
   11518:	ff 1f       	adc	r31, r31
   1151a:	aa 95       	dec	r26
   1151c:	e1 f7       	brne	.-8      	; 0x11516 <SB37SI_GetCTDSample+0x294>
   1151e:	e2 1b       	sub	r30, r18
   11520:	f3 0b       	sbc	r31, r19
   11522:	e0 0f       	add	r30, r16
   11524:	f1 1f       	adc	r31, r17
   11526:	e5 5c       	subi	r30, 0xC5	; 197
   11528:	fa 4f       	sbci	r31, 0xFA	; 250
   1152a:	80 83       	st	Z, r24
			pTaskInfo->pBuf->reportData.samples[index].second = atoi(tokens[10]);
   1152c:	8b a1       	ldd	r24, Y+35	; 0x23
   1152e:	9c a1       	ldd	r25, Y+36	; 0x24
   11530:	0e 94 59 ef 	call	0x1deb2	; 0x1deb2 <atoi>
   11534:	2b 2d       	mov	r18, r11
   11536:	30 e0       	ldi	r19, 0x00	; 0
   11538:	22 0f       	add	r18, r18
   1153a:	33 1f       	adc	r19, r19
   1153c:	a9 01       	movw	r20, r18
   1153e:	63 e0       	ldi	r22, 0x03	; 3
   11540:	44 0f       	add	r20, r20
   11542:	55 1f       	adc	r21, r21
   11544:	6a 95       	dec	r22
   11546:	e1 f7       	brne	.-8      	; 0x11540 <SB37SI_GetCTDSample+0x2be>
   11548:	42 1b       	sub	r20, r18
   1154a:	53 0b       	sbc	r21, r19
   1154c:	04 0f       	add	r16, r20
   1154e:	15 1f       	adc	r17, r21
   11550:	04 5c       	subi	r16, 0xC4	; 196
   11552:	1a 4f       	sbci	r17, 0xFA	; 250
   11554:	f8 01       	movw	r30, r16
   11556:	80 83       	st	Z, r24
		}

		pTaskInfo->pBuf->reportData.numSamples++;
   11558:	d7 01       	movw	r26, r14
   1155a:	14 96       	adiw	r26, 0x04	; 4
   1155c:	ed 91       	ld	r30, X+
   1155e:	fc 91       	ld	r31, X
   11560:	15 97       	sbiw	r26, 0x05	; 5
   11562:	df 01       	movw	r26, r30
   11564:	a2 5d       	subi	r26, 0xD2	; 210
   11566:	ba 4f       	sbci	r27, 0xFA	; 250
   11568:	8c 91       	ld	r24, X
   1156a:	8f 5f       	subi	r24, 0xFF	; 255
   1156c:	8c 93       	st	X, r24

		if (pTaskInfo->pBuf->reportData.numSamples >= pTaskInfo->pBuf->reportSampleCount)
   1156e:	e7 5e       	subi	r30, 0xE7	; 231
   11570:	fa 4f       	sbci	r31, 0xFA	; 250
   11572:	90 81       	ld	r25, Z
   11574:	89 17       	cp	r24, r25
   11576:	18 f0       	brcs	.+6      	; 0x1157e <SB37SI_GetCTDSample+0x2fc>
			SB37SI_ReportCTDTelemetry(pTaskInfo);
   11578:	c7 01       	movw	r24, r14
   1157a:	0e 94 6a 81 	call	0x102d4	; 0x102d4 <SB37SI_ReportCTDTelemetry>
	}	
	return;
}
   1157e:	a4 96       	adiw	r28, 0x24	; 36
   11580:	0f b6       	in	r0, 0x3f	; 63
   11582:	f8 94       	cli
   11584:	de bf       	out	0x3e, r29	; 62
   11586:	0f be       	out	0x3f, r0	; 63
   11588:	cd bf       	out	0x3d, r28	; 61
   1158a:	cf 91       	pop	r28
   1158c:	df 91       	pop	r29
   1158e:	1f 91       	pop	r17
   11590:	0f 91       	pop	r16
   11592:	ff 90       	pop	r15
   11594:	ef 90       	pop	r14
   11596:	df 90       	pop	r13
   11598:	cf 90       	pop	r12
   1159a:	bf 90       	pop	r11
   1159c:	9f 90       	pop	r9
   1159e:	8f 90       	pop	r8
   115a0:	7f 90       	pop	r7
   115a2:	6f 90       	pop	r6
   115a4:	5f 90       	pop	r5
   115a6:	4f 90       	pop	r4
   115a8:	08 95       	ret

000115aa <SeabirdCTD_37SI_Init>:
prog_char ctd37SIParserID[] = "37SI";
prog_char ctd37SICmdList[] = "rxcisRXCIS";


uint8_t SeabirdCTD_37SI_Init(PSEABIRD_CTD_37_SI_TASK pTaskInfo)
{
   115aa:	af 92       	push	r10
   115ac:	bf 92       	push	r11
   115ae:	cf 92       	push	r12
   115b0:	df 92       	push	r13
   115b2:	ef 92       	push	r14
   115b4:	0f 93       	push	r16
   115b6:	1f 93       	push	r17
   115b8:	df 93       	push	r29
   115ba:	cf 93       	push	r28
   115bc:	00 d0       	rcall	.+0      	; 0x115be <SeabirdCTD_37SI_Init+0x14>
   115be:	00 d0       	rcall	.+0      	; 0x115c0 <SeabirdCTD_37SI_Init+0x16>
   115c0:	cd b7       	in	r28, 0x3d	; 61
   115c2:	de b7       	in	r29, 0x3e	; 62
   115c4:	5c 01       	movw	r10, r24
	uint8_t retval = SUCCESS;
	uint16_t baseAddr = 0;
	uint16_t len = 0;
   115c6:	1a 82       	std	Y+2, r1	; 0x02
   115c8:	19 82       	std	Y+1, r1	; 0x01

	if(pTaskInfo->portNum == USER_PORT_1)
   115ca:	dc 01       	movw	r26, r24
   115cc:	11 96       	adiw	r26, 0x01	; 1
   115ce:	8c 91       	ld	r24, X
   115d0:	81 30       	cpi	r24, 0x01	; 1
   115d2:	21 f4       	brne	.+8      	; 0x115dc <SeabirdCTD_37SI_Init+0x32>
   115d4:	c1 2c       	mov	r12, r1
   115d6:	53 e0       	ldi	r21, 0x03	; 3
   115d8:	d5 2e       	mov	r13, r21
   115da:	0e c0       	rjmp	.+28     	; 0x115f8 <SeabirdCTD_37SI_Init+0x4e>
		baseAddr = EEPROM_PM1_START;
	if(pTaskInfo->portNum == USER_PORT_2)
   115dc:	82 30       	cpi	r24, 0x02	; 2
   115de:	21 f4       	brne	.+8      	; 0x115e8 <SeabirdCTD_37SI_Init+0x3e>
   115e0:	c1 2c       	mov	r12, r1
   115e2:	45 e0       	ldi	r20, 0x05	; 5
   115e4:	d4 2e       	mov	r13, r20
   115e6:	08 c0       	rjmp	.+16     	; 0x115f8 <SeabirdCTD_37SI_Init+0x4e>
		baseAddr = EEPROM_PM2_START;
	if(pTaskInfo->portNum == USER_PORT_3)
   115e8:	83 30       	cpi	r24, 0x03	; 3
   115ea:	21 f4       	brne	.+8      	; 0x115f4 <SeabirdCTD_37SI_Init+0x4a>
   115ec:	c1 2c       	mov	r12, r1
   115ee:	37 e0       	ldi	r19, 0x07	; 7
   115f0:	d3 2e       	mov	r13, r19
   115f2:	02 c0       	rjmp	.+4      	; 0x115f8 <SeabirdCTD_37SI_Init+0x4e>
   115f4:	cc 24       	eor	r12, r12
   115f6:	dd 24       	eor	r13, r13
		baseAddr = EEPROM_PM3_START;

	if(pTaskInfo->pBuf != NULL)
   115f8:	d5 01       	movw	r26, r10
   115fa:	14 96       	adiw	r26, 0x04	; 4
   115fc:	ed 91       	ld	r30, X+
   115fe:	fc 91       	ld	r31, X
   11600:	15 97       	sbiw	r26, 0x05	; 5
   11602:	30 97       	sbiw	r30, 0x00	; 0
   11604:	41 f0       	breq	.+16     	; 0x11616 <SeabirdCTD_37SI_Init+0x6c>
		memset(pTaskInfo->pBuf, 0, sizeof(SEABIRD_CTD_37_SI_BUFFER));
   11606:	8c eb       	ldi	r24, 0xBC	; 188
   11608:	96 e0       	ldi	r25, 0x06	; 6
   1160a:	df 01       	movw	r26, r30
   1160c:	9c 01       	movw	r18, r24
   1160e:	1d 92       	st	X+, r1
   11610:	21 50       	subi	r18, 0x01	; 1
   11612:	30 40       	sbci	r19, 0x00	; 0
   11614:	e1 f7       	brne	.-8      	; 0x1160e <SeabirdCTD_37SI_Init+0x64>

	OSuartInitPort(pTaskInfo->portNum, 9600, UART_MODE_EIGHT_DATA_BITS, UART_MODE_ONE_STOP_BIT, UART_MODE_NO_PARITY);
   11616:	d5 01       	movw	r26, r10
   11618:	11 96       	adiw	r26, 0x01	; 1
   1161a:	8c 91       	ld	r24, X
   1161c:	40 e8       	ldi	r20, 0x80	; 128
   1161e:	55 e2       	ldi	r21, 0x25	; 37
   11620:	60 e0       	ldi	r22, 0x00	; 0
   11622:	70 e0       	ldi	r23, 0x00	; 0
   11624:	26 e0       	ldi	r18, 0x06	; 6
   11626:	00 e0       	ldi	r16, 0x00	; 0
   11628:	ee 24       	eor	r14, r14
   1162a:	0e 94 38 33 	call	0x6670	; 0x6670 <OSuartInitPort>

	EnablePIBModule(pTaskInfo->portNum, TRUE, FALSE);
   1162e:	f5 01       	movw	r30, r10
   11630:	81 81       	ldd	r24, Z+1	; 0x01
   11632:	6f ef       	ldi	r22, 0xFF	; 255
   11634:	40 e0       	ldi	r20, 0x00	; 0
   11636:	0e 94 a2 38 	call	0x7144	; 0x7144 <EnablePIBModule>

	if(baseAddr != 0)
   1163a:	c1 14       	cp	r12, r1
   1163c:	d1 04       	cpc	r13, r1
   1163e:	b9 f1       	breq	.+110    	; 0x116ae <SeabirdCTD_37SI_Init+0x104>
	{
		uint32_t temp;
		EepromReadBlock((void*)(baseAddr + SEABIRD_37_SI_SAMPLE_OFFSET), (void*)&temp, 4);
   11640:	86 01       	movw	r16, r12
   11642:	00 5c       	subi	r16, 0xC0	; 192
   11644:	1f 4f       	sbci	r17, 0xFF	; 255
   11646:	23 e0       	ldi	r18, 0x03	; 3
   11648:	c2 2e       	mov	r12, r18
   1164a:	d1 2c       	mov	r13, r1
   1164c:	cc 0e       	add	r12, r28
   1164e:	dd 1e       	adc	r13, r29
   11650:	c8 01       	movw	r24, r16
   11652:	b6 01       	movw	r22, r12
   11654:	44 e0       	ldi	r20, 0x04	; 4
   11656:	50 e0       	ldi	r21, 0x00	; 0
   11658:	0e 94 67 37 	call	0x6ece	; 0x6ece <EepromReadBlock>

		if((temp == 0xFFFFFFFF) || (temp == 0x00000000))
   1165c:	8b 81       	ldd	r24, Y+3	; 0x03
   1165e:	9c 81       	ldd	r25, Y+4	; 0x04
   11660:	ad 81       	ldd	r26, Y+5	; 0x05
   11662:	be 81       	ldd	r27, Y+6	; 0x06
   11664:	01 97       	sbiw	r24, 0x01	; 1
   11666:	a1 09       	sbc	r26, r1
   11668:	b1 09       	sbc	r27, r1
   1166a:	8e 5f       	subi	r24, 0xFE	; 254
   1166c:	9f 4f       	sbci	r25, 0xFF	; 255
   1166e:	af 4f       	sbci	r26, 0xFF	; 255
   11670:	bf 4f       	sbci	r27, 0xFF	; 255
   11672:	70 f0       	brcs	.+28     	; 0x11690 <SeabirdCTD_37SI_Init+0xe6>
		{
			temp = 60;
   11674:	8c e3       	ldi	r24, 0x3C	; 60
   11676:	90 e0       	ldi	r25, 0x00	; 0
   11678:	a0 e0       	ldi	r26, 0x00	; 0
   1167a:	b0 e0       	ldi	r27, 0x00	; 0
   1167c:	8b 83       	std	Y+3, r24	; 0x03
   1167e:	9c 83       	std	Y+4, r25	; 0x04
   11680:	ad 83       	std	Y+5, r26	; 0x05
   11682:	be 83       	std	Y+6, r27	; 0x06
			EepromWriteBlock((void*)(baseAddr + SEABIRD_37_SI_SAMPLE_OFFSET), (void*)&temp, 4);
   11684:	c8 01       	movw	r24, r16
   11686:	b6 01       	movw	r22, r12
   11688:	44 e0       	ldi	r20, 0x04	; 4
   1168a:	50 e0       	ldi	r21, 0x00	; 0
   1168c:	0e 94 f7 37 	call	0x6fee	; 0x6fee <EepromWriteBlock>
		}
		pTaskInfo->pBuf->sampleRate = temp;
   11690:	d5 01       	movw	r26, r10
   11692:	14 96       	adiw	r26, 0x04	; 4
   11694:	ed 91       	ld	r30, X+
   11696:	fc 91       	ld	r31, X
   11698:	15 97       	sbiw	r26, 0x05	; 5
   1169a:	e0 50       	subi	r30, 0x00	; 0
   1169c:	fb 4f       	sbci	r31, 0xFB	; 251
   1169e:	8b 81       	ldd	r24, Y+3	; 0x03
   116a0:	9c 81       	ldd	r25, Y+4	; 0x04
   116a2:	ad 81       	ldd	r26, Y+5	; 0x05
   116a4:	be 81       	ldd	r27, Y+6	; 0x06
   116a6:	80 83       	st	Z, r24
   116a8:	91 83       	std	Z+1, r25	; 0x01
   116aa:	a2 83       	std	Z+2, r26	; 0x02
   116ac:	b3 83       	std	Z+3, r27	; 0x03
	}

	OSTimeDlyHMSM(0,0,1,0);
   116ae:	80 e0       	ldi	r24, 0x00	; 0
   116b0:	60 e0       	ldi	r22, 0x00	; 0
   116b2:	41 e0       	ldi	r20, 0x01	; 1
   116b4:	20 e0       	ldi	r18, 0x00	; 0
   116b6:	30 e0       	ldi	r19, 0x00	; 0
   116b8:	0e 94 2a 2e 	call	0x5c54	; 0x5c54 <OSTimeDlyHMSM>
	OSuartPutCharWait(pTaskInfo->portNum, 0x0D, 10);
   116bc:	f5 01       	movw	r30, r10
   116be:	81 81       	ldd	r24, Z+1	; 0x01
   116c0:	6d e0       	ldi	r22, 0x0D	; 13
   116c2:	4a e0       	ldi	r20, 0x0A	; 10
   116c4:	50 e0       	ldi	r21, 0x00	; 0
   116c6:	0e 94 f3 31 	call	0x63e6	; 0x63e6 <OSuartPutCharWait>
	SB37SI_CTD_Rx(pTaskInfo, pTaskInfo->pBuf->bufferRx, &len);
   116ca:	d5 01       	movw	r26, r10
   116cc:	14 96       	adiw	r26, 0x04	; 4
   116ce:	6d 91       	ld	r22, X+
   116d0:	7c 91       	ld	r23, X
   116d2:	15 97       	sbiw	r26, 0x05	; 5
   116d4:	60 50       	subi	r22, 0x00	; 0
   116d6:	7f 4f       	sbci	r23, 0xFF	; 255
   116d8:	c5 01       	movw	r24, r10
   116da:	ae 01       	movw	r20, r28
   116dc:	4f 5f       	subi	r20, 0xFF	; 255
   116de:	5f 4f       	sbci	r21, 0xFF	; 255
   116e0:	0e 94 e5 81 	call	0x103ca	; 0x103ca <SB37SI_CTD_Rx>

	SB37SI_GetSerNum(pTaskInfo);
   116e4:	c5 01       	movw	r24, r10
   116e6:	0e 94 74 84 	call	0x108e8	; 0x108e8 <SB37SI_GetSerNum>
	memcpy(pTaskInfo->pBuf->reportData.sernum, pTaskInfo->pBuf->serialNumber, 16);
   116ea:	f5 01       	movw	r30, r10
   116ec:	84 81       	ldd	r24, Z+4	; 0x04
   116ee:	95 81       	ldd	r25, Z+5	; 0x05
   116f0:	dc 01       	movw	r26, r24
   116f2:	a2 5e       	subi	r26, 0xE2	; 226
   116f4:	ba 4f       	sbci	r27, 0xFA	; 250
   116f6:	fc 01       	movw	r30, r24
   116f8:	ec 5f       	subi	r30, 0xFC	; 252
   116fa:	fa 4f       	sbci	r31, 0xFA	; 250
   116fc:	80 e1       	ldi	r24, 0x10	; 16
   116fe:	01 90       	ld	r0, Z+
   11700:	0d 92       	st	X+, r0
   11702:	81 50       	subi	r24, 0x01	; 1
   11704:	e1 f7       	brne	.-8      	; 0x116fe <SeabirdCTD_37SI_Init+0x154>

	OSTimeDlyHMSM(0,0,0,100);
   11706:	60 e0       	ldi	r22, 0x00	; 0
   11708:	40 e0       	ldi	r20, 0x00	; 0
   1170a:	24 e6       	ldi	r18, 0x64	; 100
   1170c:	30 e0       	ldi	r19, 0x00	; 0
   1170e:	0e 94 2a 2e 	call	0x5c54	; 0x5c54 <OSTimeDlyHMSM>

	pTaskInfo->pBuf->reportSampleCount = 8;
   11712:	d5 01       	movw	r26, r10
   11714:	14 96       	adiw	r26, 0x04	; 4
   11716:	ed 91       	ld	r30, X+
   11718:	fc 91       	ld	r31, X
   1171a:	15 97       	sbiw	r26, 0x05	; 5
   1171c:	e7 5e       	subi	r30, 0xE7	; 231
   1171e:	fa 4f       	sbci	r31, 0xFA	; 250
   11720:	88 e0       	ldi	r24, 0x08	; 8
   11722:	80 83       	st	Z, r24
	pTaskInfo->pBuf->sampleCTD = FALSE;
   11724:	35 97       	sbiw	r30, 0x05	; 5
   11726:	11 92       	st	Z+, r1
	pTaskInfo->pBuf->nextSample = 0;
   11728:	10 82       	st	Z, r1
   1172a:	11 82       	std	Z+1, r1	; 0x01
   1172c:	12 82       	std	Z+2, r1	; 0x02
   1172e:	13 82       	std	Z+3, r1	; 0x03

	return retval;
}
   11730:	8f ef       	ldi	r24, 0xFF	; 255
   11732:	26 96       	adiw	r28, 0x06	; 6
   11734:	0f b6       	in	r0, 0x3f	; 63
   11736:	f8 94       	cli
   11738:	de bf       	out	0x3e, r29	; 62
   1173a:	0f be       	out	0x3f, r0	; 63
   1173c:	cd bf       	out	0x3d, r28	; 61
   1173e:	cf 91       	pop	r28
   11740:	df 91       	pop	r29
   11742:	1f 91       	pop	r17
   11744:	0f 91       	pop	r16
   11746:	ef 90       	pop	r14
   11748:	df 90       	pop	r13
   1174a:	cf 90       	pop	r12
   1174c:	bf 90       	pop	r11
   1174e:	af 90       	pop	r10
   11750:	08 95       	ret

00011752 <SerialPortPassThrough37SI2>:
	return SUCCESS;
}

void SerialPortPassThrough37SI2(uint8_t port)
{
	readyForSerialPassThru = TRUE;
   11752:	8f ef       	ldi	r24, 0xFF	; 255
   11754:	80 93 9e a1 	sts	0xA19E, r24

	while(1)
	{
		OSTimeDlyHMSM(1,0,0,0);
   11758:	81 e0       	ldi	r24, 0x01	; 1
   1175a:	60 e0       	ldi	r22, 0x00	; 0
   1175c:	40 e0       	ldi	r20, 0x00	; 0
   1175e:	20 e0       	ldi	r18, 0x00	; 0
   11760:	30 e0       	ldi	r19, 0x00	; 0
   11762:	0e 94 2a 2e 	call	0x5c54	; 0x5c54 <OSTimeDlyHMSM>
   11766:	f8 cf       	rjmp	.-16     	; 0x11758 <SerialPortPassThrough37SI2+0x6>

00011768 <SB37SI_CreateStatusResponse>:
	return retval;
}


uint8_t SB37SI_CreateStatusResponse(PSEABIRD_37SI_TASK pTaskInfo, uint8_t status)
{
   11768:	0f 93       	push	r16
   1176a:	1f 93       	push	r17
   1176c:	cf 93       	push	r28
   1176e:	df 93       	push	r29
   11770:	ec 01       	movw	r28, r24
	memset(pTaskInfo->pBuf->statusConstructor, 0, 100);
   11772:	8c 81       	ldd	r24, Y+4	; 0x04
   11774:	9d 81       	ldd	r25, Y+5	; 0x05
   11776:	8f 58       	subi	r24, 0x8F	; 143
   11778:	99 4f       	sbci	r25, 0xF9	; 249
   1177a:	fc 01       	movw	r30, r24
   1177c:	84 e6       	ldi	r24, 0x64	; 100
   1177e:	df 01       	movw	r26, r30
   11780:	1d 92       	st	X+, r1
   11782:	8a 95       	dec	r24
   11784:	e9 f7       	brne	.-6      	; 0x11780 <SB37SI_CreateStatusResponse+0x18>
	memset(pTaskInfo->pBuf->consoleResponse, 0, 256);
   11786:	8c 81       	ldd	r24, Y+4	; 0x04
   11788:	9d 81       	ldd	r25, Y+5	; 0x05
   1178a:	8b 52       	subi	r24, 0x2B	; 43
   1178c:	99 4f       	sbci	r25, 0xF9	; 249
   1178e:	fc 01       	movw	r30, r24
   11790:	80 e0       	ldi	r24, 0x00	; 0
   11792:	91 e0       	ldi	r25, 0x01	; 1
   11794:	df 01       	movw	r26, r30
   11796:	9c 01       	movw	r18, r24
   11798:	1d 92       	st	X+, r1
   1179a:	21 50       	subi	r18, 0x01	; 1
   1179c:	30 40       	sbci	r19, 0x00	; 0
   1179e:	e1 f7       	brne	.-8      	; 0x11798 <SB37SI_CreateStatusResponse+0x30>
   117a0:	8c 81       	ldd	r24, Y+4	; 0x04
   117a2:	9d 81       	ldd	r25, Y+5	; 0x05

	if(status == SUCCESS)
   117a4:	6f 3f       	cpi	r22, 0xFF	; 255
   117a6:	29 f4       	brne	.+10     	; 0x117b2 <SB37SI_CreateStatusResponse+0x4a>
		strcat_P(pTaskInfo->pBuf->statusConstructor, status37SI_OK);
   117a8:	8f 58       	subi	r24, 0x8F	; 143
   117aa:	99 4f       	sbci	r25, 0xF9	; 249
   117ac:	6e ee       	ldi	r22, 0xEE	; 238
   117ae:	7f e0       	ldi	r23, 0x0F	; 15
   117b0:	04 c0       	rjmp	.+8      	; 0x117ba <SB37SI_CreateStatusResponse+0x52>
	else
		strcat_P(pTaskInfo->pBuf->statusConstructor, status37SI_Fail);
   117b2:	8f 58       	subi	r24, 0x8F	; 143
   117b4:	99 4f       	sbci	r25, 0xF9	; 249
   117b6:	67 ef       	ldi	r22, 0xF7	; 247
   117b8:	7f e0       	ldi	r23, 0x0F	; 15
   117ba:	0e 94 b4 ef 	call	0x1df68	; 0x1df68 <strcat_P>

	strcat_P(pTaskInfo->pBuf->statusConstructor, status37SI_Msg2);
   117be:	8c 81       	ldd	r24, Y+4	; 0x04
   117c0:	9d 81       	ldd	r25, Y+5	; 0x05
   117c2:	8f 58       	subi	r24, 0x8F	; 143
   117c4:	99 4f       	sbci	r25, 0xF9	; 249
   117c6:	6f ef       	ldi	r22, 0xFF	; 255
   117c8:	7f e0       	ldi	r23, 0x0F	; 15
   117ca:	0e 94 b4 ef 	call	0x1df68	; 0x1df68 <strcat_P>
	if(pTaskInfo->pBuf->powerCTD == TRUE)
   117ce:	ec 81       	ldd	r30, Y+4	; 0x04
   117d0:	fd 81       	ldd	r31, Y+5	; 0x05
   117d2:	e9 5a       	subi	r30, 0xA9	; 169
   117d4:	fa 4f       	sbci	r31, 0xFA	; 250
   117d6:	80 81       	ld	r24, Z
   117d8:	e6 5e       	subi	r30, 0xE6	; 230
   117da:	fe 4f       	sbci	r31, 0xFE	; 254
   117dc:	8f 3f       	cpi	r24, 0xFF	; 255
   117de:	21 f4       	brne	.+8      	; 0x117e8 <SB37SI_CreateStatusResponse+0x80>
		strcat_P(pTaskInfo->pBuf->statusConstructor, status37SI_On);
   117e0:	cf 01       	movw	r24, r30
   117e2:	67 ee       	ldi	r22, 0xE7	; 231
   117e4:	7f e0       	ldi	r23, 0x0F	; 15
   117e6:	03 c0       	rjmp	.+6      	; 0x117ee <SB37SI_CreateStatusResponse+0x86>
	else
		strcat_P(pTaskInfo->pBuf->statusConstructor, status37SI_Off);
   117e8:	cf 01       	movw	r24, r30
   117ea:	6a ee       	ldi	r22, 0xEA	; 234
   117ec:	7f e0       	ldi	r23, 0x0F	; 15
   117ee:	0e 94 b4 ef 	call	0x1df68	; 0x1df68 <strcat_P>

	strcat_P(pTaskInfo->pBuf->statusConstructor, status37SI_Msg3);
   117f2:	8c 81       	ldd	r24, Y+4	; 0x04
   117f4:	9d 81       	ldd	r25, Y+5	; 0x05
   117f6:	8f 58       	subi	r24, 0x8F	; 143
   117f8:	99 4f       	sbci	r25, 0xF9	; 249
   117fa:	65 e0       	ldi	r22, 0x05	; 5
   117fc:	70 e1       	ldi	r23, 0x10	; 16
   117fe:	0e 94 b4 ef 	call	0x1df68	; 0x1df68 <strcat_P>
	if(pTaskInfo->pBuf->sampleCTD == TRUE)
   11802:	ec 81       	ldd	r30, Y+4	; 0x04
   11804:	fd 81       	ldd	r31, Y+5	; 0x05
   11806:	ea 5a       	subi	r30, 0xAA	; 170
   11808:	fa 4f       	sbci	r31, 0xFA	; 250
   1180a:	80 81       	ld	r24, Z
   1180c:	e5 5e       	subi	r30, 0xE5	; 229
   1180e:	fe 4f       	sbci	r31, 0xFE	; 254
   11810:	8f 3f       	cpi	r24, 0xFF	; 255
   11812:	21 f4       	brne	.+8      	; 0x1181c <SB37SI_CreateStatusResponse+0xb4>
		strcat_P(pTaskInfo->pBuf->statusConstructor, status37SI_On);
   11814:	cf 01       	movw	r24, r30
   11816:	67 ee       	ldi	r22, 0xE7	; 231
   11818:	7f e0       	ldi	r23, 0x0F	; 15
   1181a:	03 c0       	rjmp	.+6      	; 0x11822 <SB37SI_CreateStatusResponse+0xba>
	else
		strcat_P(pTaskInfo->pBuf->statusConstructor, status37SI_Off);
   1181c:	cf 01       	movw	r24, r30
   1181e:	6a ee       	ldi	r22, 0xEA	; 234
   11820:	7f e0       	ldi	r23, 0x0F	; 15
   11822:	0e 94 b4 ef 	call	0x1df68	; 0x1df68 <strcat_P>

	if(pTaskInfo->pBuf->destination >= 0x100)
   11826:	ec 81       	ldd	r30, Y+4	; 0x04
   11828:	fd 81       	ldd	r31, Y+5	; 0x05
   1182a:	ec 5f       	subi	r30, 0xFC	; 252
   1182c:	fa 4f       	sbci	r31, 0xFA	; 250
   1182e:	80 81       	ld	r24, Z
   11830:	91 81       	ldd	r25, Z+1	; 0x01
   11832:	e3 59       	subi	r30, 0x93	; 147
   11834:	fe 4f       	sbci	r31, 0xFE	; 254
   11836:	8f 3f       	cpi	r24, 0xFF	; 255
   11838:	91 05       	cpc	r25, r1
   1183a:	29 f0       	breq	.+10     	; 0x11846 <SB37SI_CreateStatusResponse+0xde>
   1183c:	20 f0       	brcs	.+8      	; 0x11846 <SB37SI_CreateStatusResponse+0xde>
		strcat_P(pTaskInfo->pBuf->statusConstructor, status37SI_Msg4);
   1183e:	cf 01       	movw	r24, r30
   11840:	6d e0       	ldi	r22, 0x0D	; 13
   11842:	70 e1       	ldi	r23, 0x10	; 16
   11844:	03 c0       	rjmp	.+6      	; 0x1184c <SB37SI_CreateStatusResponse+0xe4>
	else
		strcat_P(pTaskInfo->pBuf->statusConstructor, status37SI_Msg5);
   11846:	cf 01       	movw	r24, r30
   11848:	6f e4       	ldi	r22, 0x4F	; 79
   1184a:	70 e1       	ldi	r23, 0x10	; 16
   1184c:	0e 94 b4 ef 	call	0x1df68	; 0x1df68 <strcat_P>

	sprintf((char*)pTaskInfo->pBuf->consoleResponse, pTaskInfo->pBuf->statusConstructor, pTaskInfo->pBuf->sampleRate, pTaskInfo->pBuf->samplePacketSize, pTaskInfo->pBuf->offTime, pTaskInfo->pBuf->sleeping ? "ON":"OFF", pTaskInfo->pBuf->destination);
   11850:	ac 81       	ldd	r26, Y+4	; 0x04
   11852:	bd 81       	ldd	r27, Y+5	; 0x05
   11854:	a0 50       	subi	r26, 0x00	; 0
   11856:	bb 4f       	sbci	r27, 0xFB	; 251
   11858:	6d 91       	ld	r22, X+
   1185a:	7d 91       	ld	r23, X+
   1185c:	4d 91       	ld	r20, X+
   1185e:	5c 91       	ld	r21, X
   11860:	11 97       	sbiw	r26, 0x01	; 1
   11862:	ae 50       	subi	r26, 0x0E	; 14
   11864:	bd 4f       	sbci	r27, 0xFD	; 253
   11866:	2d 91       	ld	r18, X+
   11868:	3c 91       	ld	r19, X
   1186a:	11 97       	sbiw	r26, 0x01	; 1
   1186c:	16 96       	adiw	r26, 0x06	; 6
   1186e:	8c 91       	ld	r24, X
   11870:	aa 5f       	subi	r26, 0xFA	; 250
   11872:	b7 40       	sbci	r27, 0x07	; 7
   11874:	88 23       	and	r24, r24
   11876:	19 f4       	brne	.+6      	; 0x1187e <SB37SI_CreateStatusResponse+0x116>
   11878:	86 e9       	ldi	r24, 0x96	; 150
   1187a:	94 e0       	ldi	r25, 0x04	; 4
   1187c:	02 c0       	rjmp	.+4      	; 0x11882 <SB37SI_CreateStatusResponse+0x11a>
   1187e:	8a e9       	ldi	r24, 0x9A	; 154
   11880:	94 e0       	ldi	r25, 0x04	; 4
   11882:	ed b7       	in	r30, 0x3d	; 61
   11884:	fe b7       	in	r31, 0x3e	; 62
   11886:	3e 97       	sbiw	r30, 0x0e	; 14
   11888:	0f b6       	in	r0, 0x3f	; 63
   1188a:	f8 94       	cli
   1188c:	fe bf       	out	0x3e, r31	; 62
   1188e:	0f be       	out	0x3f, r0	; 63
   11890:	ed bf       	out	0x3d, r30	; 61
   11892:	0d b7       	in	r16, 0x3d	; 61
   11894:	1e b7       	in	r17, 0x3e	; 62
   11896:	0f 5f       	subi	r16, 0xFF	; 255
   11898:	1f 4f       	sbci	r17, 0xFF	; 255
   1189a:	ab 52       	subi	r26, 0x2B	; 43
   1189c:	b9 4f       	sbci	r27, 0xF9	; 249
   1189e:	b2 83       	std	Z+2, r27	; 0x02
   118a0:	a1 83       	std	Z+1, r26	; 0x01
   118a2:	a4 56       	subi	r26, 0x64	; 100
   118a4:	b0 40       	sbci	r27, 0x00	; 0
   118a6:	f8 01       	movw	r30, r16
   118a8:	b3 83       	std	Z+3, r27	; 0x03
   118aa:	a2 83       	std	Z+2, r26	; 0x02
   118ac:	75 83       	std	Z+5, r23	; 0x05
   118ae:	64 83       	std	Z+4, r22	; 0x04
   118b0:	57 83       	std	Z+7, r21	; 0x07
   118b2:	46 83       	std	Z+6, r20	; 0x06
   118b4:	31 87       	std	Z+9, r19	; 0x09
   118b6:	20 87       	std	Z+8, r18	; 0x08
   118b8:	93 87       	std	Z+11, r25	; 0x0b
   118ba:	82 87       	std	Z+10, r24	; 0x0a
   118bc:	ad 56       	subi	r26, 0x6D	; 109
   118be:	b1 40       	sbci	r27, 0x01	; 1
   118c0:	8d 91       	ld	r24, X+
   118c2:	9c 91       	ld	r25, X
   118c4:	95 87       	std	Z+13, r25	; 0x0d
   118c6:	84 87       	std	Z+12, r24	; 0x0c
   118c8:	0e 94 2d f1 	call	0x1e25a	; 0x1e25a <sprintf>

	pTaskInfo->pBuf->responseInfo.status = CONSOLE_RESPONSE_OK;
   118cc:	ec 81       	ldd	r30, Y+4	; 0x04
   118ce:	fd 81       	ldd	r31, Y+5	; 0x05
   118d0:	ea 5a       	subi	r30, 0xAA	; 170
   118d2:	f9 4f       	sbci	r31, 0xF9	; 249
   118d4:	81 e0       	ldi	r24, 0x01	; 1
   118d6:	80 83       	st	Z, r24
	pTaskInfo->pBuf->responseInfo.length = strlen(pTaskInfo->pBuf->consoleResponse);
   118d8:	ac 81       	ldd	r26, Y+4	; 0x04
   118da:	bd 81       	ldd	r27, Y+5	; 0x05
   118dc:	cd 01       	movw	r24, r26
   118de:	8b 52       	subi	r24, 0x2B	; 43
   118e0:	99 4f       	sbci	r25, 0xF9	; 249
   118e2:	fc 01       	movw	r30, r24
   118e4:	01 90       	ld	r0, Z+
   118e6:	00 20       	and	r0, r0
   118e8:	e9 f7       	brne	.-6      	; 0x118e4 <SB37SI_CreateStatusResponse+0x17c>
   118ea:	31 97       	sbiw	r30, 0x01	; 1
   118ec:	e8 1b       	sub	r30, r24
   118ee:	f9 0b       	sbc	r31, r25
   118f0:	a8 5a       	subi	r26, 0xA8	; 168
   118f2:	b9 4f       	sbci	r27, 0xF9	; 249
   118f4:	ec 93       	st	X, r30
   118f6:	2d b7       	in	r18, 0x3d	; 61
   118f8:	3e b7       	in	r19, 0x3e	; 62
   118fa:	22 5f       	subi	r18, 0xF2	; 242
   118fc:	3f 4f       	sbci	r19, 0xFF	; 255
   118fe:	0f b6       	in	r0, 0x3f	; 63
   11900:	f8 94       	cli
   11902:	3e bf       	out	0x3e, r19	; 62
   11904:	0f be       	out	0x3f, r0	; 63
   11906:	2d bf       	out	0x3d, r18	; 61

	return SUCCESS;
}
   11908:	8f ef       	ldi	r24, 0xFF	; 255
   1190a:	df 91       	pop	r29
   1190c:	cf 91       	pop	r28
   1190e:	1f 91       	pop	r17
   11910:	0f 91       	pop	r16
   11912:	08 95       	ret

00011914 <SB37SI_Id>:

	return retval;
}

uint8_t SB37SI_Id(PSEABIRD_37SI_TASK pTaskInfo)
{
   11914:	cf 93       	push	r28
   11916:	df 93       	push	r29
   11918:	ec 01       	movw	r28, r24
	uint8_t retval = SUCCESS;

	memset((char*)pTaskInfo->pBuf->consoleResponse, 0, 256);
   1191a:	8c 81       	ldd	r24, Y+4	; 0x04
   1191c:	9d 81       	ldd	r25, Y+5	; 0x05
   1191e:	8b 52       	subi	r24, 0x2B	; 43
   11920:	99 4f       	sbci	r25, 0xF9	; 249
   11922:	fc 01       	movw	r30, r24
   11924:	80 e0       	ldi	r24, 0x00	; 0
   11926:	91 e0       	ldi	r25, 0x01	; 1
   11928:	df 01       	movw	r26, r30
   1192a:	9c 01       	movw	r18, r24
   1192c:	1d 92       	st	X+, r1
   1192e:	21 50       	subi	r18, 0x01	; 1
   11930:	30 40       	sbci	r19, 0x00	; 0
   11932:	e1 f7       	brne	.-8      	; 0x1192c <SB37SI_Id+0x18>
	if(strlen(pTaskInfo->pBuf->ctdInfo) > 0)
   11934:	8c 81       	ldd	r24, Y+4	; 0x04
   11936:	9d 81       	ldd	r25, Y+5	; 0x05
   11938:	fc 01       	movw	r30, r24
   1193a:	ea 5e       	subi	r30, 0xEA	; 234
   1193c:	fa 4f       	sbci	r31, 0xFA	; 250
   1193e:	20 81       	ld	r18, Z
   11940:	8b 52       	subi	r24, 0x2B	; 43
   11942:	99 4f       	sbci	r25, 0xF9	; 249
   11944:	22 23       	and	r18, r18
   11946:	21 f0       	breq	.+8      	; 0x11950 <SB37SI_Id+0x3c>
		strcat(pTaskInfo->pBuf->consoleResponse, pTaskInfo->pBuf->ctdInfo);
   11948:	bf 01       	movw	r22, r30
   1194a:	0e 94 2c f0 	call	0x1e058	; 0x1e058 <strcat>
   1194e:	04 c0       	rjmp	.+8      	; 0x11958 <SB37SI_Id+0x44>
	else
		strcat_P(pTaskInfo->pBuf->consoleResponse, PSTR("CTD Version and Serial Number is not available."));
   11950:	62 e4       	ldi	r22, 0x42	; 66
   11952:	71 e1       	ldi	r23, 0x11	; 17
   11954:	0e 94 b4 ef 	call	0x1df68	; 0x1df68 <strcat_P>

	pTaskInfo->pBuf->responseInfo.length = strlen(pTaskInfo->pBuf->consoleResponse);
   11958:	ec 81       	ldd	r30, Y+4	; 0x04
   1195a:	fd 81       	ldd	r31, Y+5	; 0x05
   1195c:	cf 01       	movw	r24, r30
   1195e:	8b 52       	subi	r24, 0x2B	; 43
   11960:	99 4f       	sbci	r25, 0xF9	; 249
   11962:	dc 01       	movw	r26, r24
   11964:	0d 90       	ld	r0, X+
   11966:	00 20       	and	r0, r0
   11968:	e9 f7       	brne	.-6      	; 0x11964 <SB37SI_Id+0x50>
   1196a:	11 97       	sbiw	r26, 0x01	; 1
   1196c:	a8 1b       	sub	r26, r24
   1196e:	b9 0b       	sbc	r27, r25
   11970:	e8 5a       	subi	r30, 0xA8	; 168
   11972:	f9 4f       	sbci	r31, 0xF9	; 249
   11974:	a0 83       	st	Z, r26

	return retval;
}
   11976:	8f ef       	ldi	r24, 0xFF	; 255
   11978:	df 91       	pop	r29
   1197a:	cf 91       	pop	r28
   1197c:	08 95       	ret

0001197e <SB37SI_SetPacketDest>:

	return retval;
}

uint8_t SB37SI_SetPacketDest(PSEABIRD_37SI_TASK pTaskInfo, uint16_t newDest)
{
   1197e:	0f 93       	push	r16
   11980:	1f 93       	push	r17
   11982:	cf 93       	push	r28
   11984:	df 93       	push	r29
   11986:	8c 01       	movw	r16, r24
   11988:	eb 01       	movw	r28, r22
	uint8_t retval = FAIL;

	if(newDest == 0)
   1198a:	61 15       	cp	r22, r1
   1198c:	71 05       	cpc	r23, r1
   1198e:	11 f4       	brne	.+4      	; 0x11994 <SB37SI_SetPacketDest+0x16>
   11990:	c2 e0       	ldi	r28, 0x02	; 2
   11992:	d0 e0       	ldi	r29, 0x00	; 0
		newDest = FLOAT_TO_SHORE_VIA_DEFAULT;

	if((newDest > 0) && (newDest < 0xFF00))
   11994:	ce 01       	movw	r24, r28
   11996:	01 97       	sbiw	r24, 0x01	; 1
   11998:	8f 5f       	subi	r24, 0xFF	; 255
   1199a:	9e 4f       	sbci	r25, 0xFE	; 254
   1199c:	10 f0       	brcs	.+4      	; 0x119a2 <SB37SI_SetPacketDest+0x24>
   1199e:	80 e0       	ldi	r24, 0x00	; 0
   119a0:	14 c0       	rjmp	.+40     	; 0x119ca <SB37SI_SetPacketDest+0x4c>
	{
		retval = SUCCESS;

		EepromWriteWordUnSigned((void*)(pTaskInfo->eepromAddress + SEABIRD_37SI_PACKET_DESTINATION_OFFSET), newDest);
   119a2:	d8 01       	movw	r26, r16
   119a4:	12 96       	adiw	r26, 0x02	; 2
   119a6:	8d 91       	ld	r24, X+
   119a8:	9c 91       	ld	r25, X
   119aa:	13 97       	sbiw	r26, 0x03	; 3
   119ac:	8c 5b       	subi	r24, 0xBC	; 188
   119ae:	9f 4f       	sbci	r25, 0xFF	; 255
   119b0:	be 01       	movw	r22, r28
   119b2:	0e 94 d6 37 	call	0x6fac	; 0x6fac <EepromWriteWordUnSigned>
		pTaskInfo->pBuf->samplePacketSize = newDest;
   119b6:	d8 01       	movw	r26, r16
   119b8:	14 96       	adiw	r26, 0x04	; 4
   119ba:	ed 91       	ld	r30, X+
   119bc:	fc 91       	ld	r31, X
   119be:	15 97       	sbiw	r26, 0x05	; 5
   119c0:	ee 5f       	subi	r30, 0xFE	; 254
   119c2:	fa 4f       	sbci	r31, 0xFA	; 250
   119c4:	d1 83       	std	Z+1, r29	; 0x01
   119c6:	c0 83       	st	Z, r28
   119c8:	8f ef       	ldi	r24, 0xFF	; 255
	}

	return retval;
}
   119ca:	df 91       	pop	r29
   119cc:	cf 91       	pop	r28
   119ce:	1f 91       	pop	r17
   119d0:	0f 91       	pop	r16
   119d2:	08 95       	ret

000119d4 <SB37SI_SetPacketSize>:
	}
	return retval;
}

uint8_t SB37SI_SetPacketSize(PSEABIRD_37SI_TASK pTaskInfo, uint8_t newPacketSize)
{
   119d4:	1f 93       	push	r17
   119d6:	cf 93       	push	r28
   119d8:	df 93       	push	r29
   119da:	ec 01       	movw	r28, r24
   119dc:	16 2f       	mov	r17, r22
	uint8_t retval = FAIL;

	if((newPacketSize > 0) && (newPacketSize <= MAX_37SI_SAMPLES))
   119de:	86 2f       	mov	r24, r22
   119e0:	81 50       	subi	r24, 0x01	; 1
   119e2:	8a 30       	cpi	r24, 0x0A	; 10
   119e4:	10 f0       	brcs	.+4      	; 0x119ea <SB37SI_SetPacketSize+0x16>
   119e6:	80 e0       	ldi	r24, 0x00	; 0
   119e8:	0e c0       	rjmp	.+28     	; 0x11a06 <SB37SI_SetPacketSize+0x32>
	{
		retval = SUCCESS;

		EepromWriteWordUnSigned((void*)(pTaskInfo->eepromAddress + SEABIRD_37SI_PACKET_SIZE_OFFSET), newPacketSize);
   119ea:	8a 81       	ldd	r24, Y+2	; 0x02
   119ec:	9b 81       	ldd	r25, Y+3	; 0x03
   119ee:	8e 5b       	subi	r24, 0xBE	; 190
   119f0:	9f 4f       	sbci	r25, 0xFF	; 255
   119f2:	70 e0       	ldi	r23, 0x00	; 0
   119f4:	0e 94 d6 37 	call	0x6fac	; 0x6fac <EepromWriteWordUnSigned>
		pTaskInfo->pBuf->samplePacketSize = newPacketSize;
   119f8:	ec 81       	ldd	r30, Y+4	; 0x04
   119fa:	fd 81       	ldd	r31, Y+5	; 0x05
   119fc:	ee 5f       	subi	r30, 0xFE	; 254
   119fe:	fa 4f       	sbci	r31, 0xFA	; 250
   11a00:	10 83       	st	Z, r17
   11a02:	11 82       	std	Z+1, r1	; 0x01
   11a04:	8f ef       	ldi	r24, 0xFF	; 255
			//Send current data to shore
		}
	}

	return retval;
}
   11a06:	df 91       	pop	r29
   11a08:	cf 91       	pop	r28
   11a0a:	1f 91       	pop	r17
   11a0c:	08 95       	ret

00011a0e <SB37SI_QueueConsoleResponse2>:
}



void SB37SI_QueueConsoleResponse2(PSEABIRD_37SI_TASK pTaskInfo)
{
   11a0e:	ef 92       	push	r14
   11a10:	ff 92       	push	r15
   11a12:	0f 93       	push	r16
   11a14:	1f 93       	push	r17
   11a16:	df 93       	push	r29
   11a18:	cf 93       	push	r28
   11a1a:	0f 92       	push	r0
   11a1c:	cd b7       	in	r28, 0x3d	; 61
   11a1e:	de b7       	in	r29, 0x3e	; 62
   11a20:	7c 01       	movw	r14, r24
	PCONSOLE_ACK_XMIT_2 pReport;
	uint8_t err = 0;
   11a22:	19 82       	std	Y+1, r1	; 0x01
	char* pData;

	OSMutexPend(pMutexFloatQueue, INFINITE, &err);
   11a24:	80 91 51 19 	lds	r24, 0x1951
   11a28:	90 91 52 19 	lds	r25, 0x1952
   11a2c:	60 e0       	ldi	r22, 0x00	; 0
   11a2e:	70 e0       	ldi	r23, 0x00	; 0
   11a30:	ae 01       	movw	r20, r28
   11a32:	4f 5f       	subi	r20, 0xFF	; 255
   11a34:	5f 4f       	sbci	r21, 0xFF	; 255
   11a36:	0e 94 c2 28 	call	0x5184	; 0x5184 <OSMutexPend>

	pReport = (PCONSOLE_ACK_XMIT_2)&(txFloatAck[headFloatAckTx]);
   11a3a:	80 91 95 07 	lds	r24, 0x0795
   11a3e:	90 e0       	ldi	r25, 0x00	; 0
   11a40:	26 e3       	ldi	r18, 0x36	; 54
   11a42:	31 e0       	ldi	r19, 0x01	; 1
   11a44:	82 9f       	mul	r24, r18
   11a46:	80 01       	movw	r16, r0
   11a48:	83 9f       	mul	r24, r19
   11a4a:	10 0d       	add	r17, r0
   11a4c:	92 9f       	mul	r25, r18
   11a4e:	10 0d       	add	r17, r0
   11a50:	11 24       	eor	r1, r1
   11a52:	03 5f       	subi	r16, 0xF3	; 243
   11a54:	1c 44       	sbci	r17, 0x4C	; 76
	pData = (char*)pReport;

	pReport->comm.headers.destination = FLOAT_TASK_FORWARD_MESSAGE;		//pTaskInfo->pBuf->responseInfo.source;
   11a56:	80 e2       	ldi	r24, 0x20	; 32
   11a58:	90 e0       	ldi	r25, 0x00	; 0
   11a5a:	d8 01       	movw	r26, r16
   11a5c:	13 96       	adiw	r26, 0x03	; 3
   11a5e:	9c 93       	st	X, r25
   11a60:	8e 93       	st	-X, r24
   11a62:	12 97       	sbiw	r26, 0x02	; 2

	pReport->comm.fwdInfo.msgFormat = MSG_FORMAT_SHIP_TO_SHORE;
   11a64:	82 e0       	ldi	r24, 0x02	; 2
   11a66:	1c 96       	adiw	r26, 0x0c	; 12
   11a68:	8c 93       	st	X, r24
	pReport->comm.fwdInfo.destination = pTaskInfo->pBuf->responseInfo.source;
   11a6a:	d7 01       	movw	r26, r14
   11a6c:	14 96       	adiw	r26, 0x04	; 4
   11a6e:	ed 91       	ld	r30, X+
   11a70:	fc 91       	ld	r31, X
   11a72:	15 97       	sbiw	r26, 0x05	; 5
   11a74:	ec 5a       	subi	r30, 0xAC	; 172
   11a76:	f9 4f       	sbci	r31, 0xF9	; 249
   11a78:	81 91       	ld	r24, Z+
   11a7a:	91 91       	ld	r25, Z+
   11a7c:	d8 01       	movw	r26, r16
   11a7e:	1e 96       	adiw	r26, 0x0e	; 14
   11a80:	9c 93       	st	X, r25
   11a82:	8e 93       	st	-X, r24
   11a84:	1d 97       	sbiw	r26, 0x0d	; 13
	pReport->comm.fwdInfo.source = mainTaskAddress | pTaskInfo->taskID;
   11a86:	d7 01       	movw	r26, r14
   11a88:	8c 91       	ld	r24, X
   11a8a:	90 e0       	ldi	r25, 0x00	; 0
   11a8c:	20 91 e4 03 	lds	r18, 0x03E4
   11a90:	30 91 e5 03 	lds	r19, 0x03E5
   11a94:	82 2b       	or	r24, r18
   11a96:	93 2b       	or	r25, r19
   11a98:	d8 01       	movw	r26, r16
   11a9a:	50 96       	adiw	r26, 0x10	; 16
   11a9c:	9c 93       	st	X, r25
   11a9e:	8e 93       	st	-X, r24
   11aa0:	1f 97       	sbiw	r26, 0x0f	; 15

	if(pTaskInfo->pBuf->responseInfo.status < CONSOLE_RESPONSE_UNKNOWN_CMD)
   11aa2:	20 81       	ld	r18, Z
   11aa4:	e6 55       	subi	r30, 0x56	; 86
   11aa6:	f6 40       	sbci	r31, 0x06	; 6
   11aa8:	2a 30       	cpi	r18, 0x0A	; 10
   11aaa:	20 f5       	brcc	.+72     	; 0x11af4 <SB37SI_QueueConsoleResponse2+0xe6>
	{
		pReport->comm.headers.length = sizeof(PIB_DATA_FORWARD_MESSAGE) + sizeof(CONSOLE_ACK) + pTaskInfo->pBuf->responseInfo.length + CRC16_SIZE;
   11aac:	e8 5a       	subi	r30, 0xA8	; 168
   11aae:	f9 4f       	sbci	r31, 0xF9	; 249
   11ab0:	40 81       	ld	r20, Z
   11ab2:	50 e0       	ldi	r21, 0x00	; 0
   11ab4:	42 5e       	subi	r20, 0xE2	; 226
   11ab6:	5f 4f       	sbci	r21, 0xFF	; 255
   11ab8:	11 96       	adiw	r26, 0x01	; 1
   11aba:	5c 93       	st	X, r21
   11abc:	4e 93       	st	-X, r20
   11abe:	4e 51       	subi	r20, 0x1E	; 30
   11ac0:	50 40       	sbci	r21, 0x00	; 0

		pReport->comm.iridiumInfo.headerICD.type = ACK_CONSOLE_DATA;
   11ac2:	8d e3       	ldi	r24, 0x3D	; 61
   11ac4:	51 96       	adiw	r26, 0x11	; 17
   11ac6:	8c 93       	st	X, r24
   11ac8:	51 97       	sbiw	r26, 0x11	; 17

		pReport->consoleAck.len = pTaskInfo->pBuf->responseInfo.length;
   11aca:	5b 96       	adiw	r26, 0x1b	; 27
   11acc:	5c 93       	st	X, r21
   11ace:	4e 93       	st	-X, r20
   11ad0:	5a 97       	sbiw	r26, 0x1a	; 26
		pReport->consoleAck.disposition = pTaskInfo->pBuf->responseInfo.status;
   11ad2:	59 96       	adiw	r26, 0x19	; 25
   11ad4:	2c 93       	st	X, r18
   11ad6:	59 97       	sbiw	r26, 0x19	; 25
		pReport->consoleAck.format = pTaskInfo->pBuf->responseInfo.format;
   11ad8:	82 91       	ld	r24, -Z
   11ada:	58 96       	adiw	r26, 0x18	; 24
   11adc:	8c 93       	st	X, r24
		pData = pData + sizeof(PIB_DATA_FORWARD_MESSAGE) + sizeof(CONSOLE_ACK);
		memcpy(pData, pTaskInfo->pBuf->consoleResponse, pTaskInfo->pBuf->responseInfo.length);
   11ade:	98 01       	movw	r18, r16
   11ae0:	24 5e       	subi	r18, 0xE4	; 228
   11ae2:	3f 4f       	sbci	r19, 0xFF	; 255
   11ae4:	e2 58       	subi	r30, 0x82	; 130
   11ae6:	ff 4f       	sbci	r31, 0xFF	; 255
   11ae8:	c9 01       	movw	r24, r18
   11aea:	bf 01       	movw	r22, r30
   11aec:	50 e0       	ldi	r21, 0x00	; 0
   11aee:	0e 94 1c f0 	call	0x1e038	; 0x1e038 <memcpy>
   11af2:	0c c0       	rjmp	.+24     	; 0x11b0c <SB37SI_QueueConsoleResponse2+0xfe>
	}
	else
	{
		pReport->comm.headers.length = sizeof(PIB_DATA_FORWARD_MESSAGE) + sizeof(CONSOLE_NACK) + CRC16_SIZE;
   11af4:	8d e1       	ldi	r24, 0x1D	; 29
   11af6:	90 e0       	ldi	r25, 0x00	; 0
   11af8:	f8 01       	movw	r30, r16
   11afa:	91 83       	std	Z+1, r25	; 0x01
   11afc:	80 83       	st	Z, r24
		pReport->comm.iridiumInfo.headerICD.type = NACK_CONSOLE_DATA;
   11afe:	86 e2       	ldi	r24, 0x26	; 38
   11b00:	81 8b       	std	Z+17, r24	; 0x11
		pReport->consoleNack.numDispositions = 1;
   11b02:	81 e0       	ldi	r24, 0x01	; 1
   11b04:	90 e0       	ldi	r25, 0x00	; 0
   11b06:	91 8f       	std	Z+25, r25	; 0x19
   11b08:	80 8f       	std	Z+24, r24	; 0x18
		pReport->consoleNack.disposition[0] = pTaskInfo->pBuf->responseInfo.status;
   11b0a:	22 8f       	std	Z+26, r18	; 0x1a
	}

	pReport->comm.iridiumInfo.headerICD.packetID = pTaskInfo->pBuf->responseInfo.id;
   11b0c:	d7 01       	movw	r26, r14
   11b0e:	14 96       	adiw	r26, 0x04	; 4
   11b10:	ed 91       	ld	r30, X+
   11b12:	fc 91       	ld	r31, X
   11b14:	15 97       	sbiw	r26, 0x05	; 5
   11b16:	e7 5a       	subi	r30, 0xA7	; 167
   11b18:	f9 4f       	sbci	r31, 0xF9	; 249
   11b1a:	80 81       	ld	r24, Z
   11b1c:	91 81       	ldd	r25, Z+1	; 0x01
   11b1e:	a2 81       	ldd	r26, Z+2	; 0x02
   11b20:	b3 81       	ldd	r27, Z+3	; 0x03
   11b22:	f8 01       	movw	r30, r16
   11b24:	82 8b       	std	Z+18, r24	; 0x12
   11b26:	93 8b       	std	Z+19, r25	; 0x13
   11b28:	a4 8b       	std	Z+20, r26	; 0x14
   11b2a:	b5 8b       	std	Z+21, r27	; 0x15
	pReport->comm.iridiumInfo.headerICD.size = pReport->comm.headers.length - sizeof(PIB_DATA_FORWARD_MESSAGE) - CRC16_SIZE;
   11b2c:	80 81       	ld	r24, Z
   11b2e:	91 81       	ldd	r25, Z+1	; 0x01
   11b30:	4a 97       	sbiw	r24, 0x1a	; 26
   11b32:	97 8b       	std	Z+23, r25	; 0x17
   11b34:	86 8b       	std	Z+22, r24	; 0x16


	(headFloatAckTx < MAX_ACK_BUFFERS - 1) ? (headFloatAckTx++) : (headFloatAckTx = 0);
   11b36:	80 91 95 07 	lds	r24, 0x0795
   11b3a:	83 30       	cpi	r24, 0x03	; 3
   11b3c:	20 f4       	brcc	.+8      	; 0x11b46 <SB37SI_QueueConsoleResponse2+0x138>
   11b3e:	8f 5f       	subi	r24, 0xFF	; 255
   11b40:	80 93 95 07 	sts	0x0795, r24
   11b44:	02 c0       	rjmp	.+4      	; 0x11b4a <SB37SI_QueueConsoleResponse2+0x13c>
   11b46:	10 92 95 07 	sts	0x0795, r1

	if(headFloatAckTx == tailFloatAckTx)
   11b4a:	90 91 95 07 	lds	r25, 0x0795
   11b4e:	80 91 96 07 	lds	r24, 0x0796
   11b52:	98 17       	cp	r25, r24
   11b54:	41 f4       	brne	.+16     	; 0x11b66 <SB37SI_QueueConsoleResponse2+0x158>
	{
		(tailFloatAckTx < MAX_ACK_BUFFERS - 1) ? (tailFloatAckTx++) : (tailFloatAckTx = 0);
   11b56:	93 30       	cpi	r25, 0x03	; 3
   11b58:	20 f4       	brcc	.+8      	; 0x11b62 <SB37SI_QueueConsoleResponse2+0x154>
   11b5a:	9f 5f       	subi	r25, 0xFF	; 255
   11b5c:	90 93 96 07 	sts	0x0796, r25
   11b60:	02 c0       	rjmp	.+4      	; 0x11b66 <SB37SI_QueueConsoleResponse2+0x158>
   11b62:	10 92 96 07 	sts	0x0796, r1
	}

	OSMutexPost(pMutexFloatQueue);
   11b66:	80 91 51 19 	lds	r24, 0x1951
   11b6a:	90 91 52 19 	lds	r25, 0x1952
   11b6e:	0e 94 36 27 	call	0x4e6c	; 0x4e6c <OSMutexPost>

	return;
}
   11b72:	0f 90       	pop	r0
   11b74:	cf 91       	pop	r28
   11b76:	df 91       	pop	r29
   11b78:	1f 91       	pop	r17
   11b7a:	0f 91       	pop	r16
   11b7c:	ff 90       	pop	r15
   11b7e:	ef 90       	pop	r14
   11b80:	08 95       	ret

00011b82 <SB37SI_CTDReportXmit2>:
}



uint8_t SB37SI_CTDReportXmit2(PSEABIRD_37SI_TASK pTaskInfo)
{
   11b82:	0f 93       	push	r16
   11b84:	1f 93       	push	r17
   11b86:	df 93       	push	r29
   11b88:	cf 93       	push	r28
   11b8a:	0f 92       	push	r0
   11b8c:	cd b7       	in	r28, 0x3d	; 61
   11b8e:	de b7       	in	r29, 0x3e	; 62
   11b90:	8c 01       	movw	r16, r24
	uint8_t retval = 0;
	uint8_t err = 0;
   11b92:	19 82       	std	Y+1, r1	; 0x01
//	PPIB_DATA_FORWARD_MESSAGE pReport = NULL;
	PSEABIRD_SB37SI_DATA_REPORT_XMIT pReport = NULL;


	OSMutexPend(pMutexFloatQueue, INFINITE, &err);
   11b94:	80 91 51 19 	lds	r24, 0x1951
   11b98:	90 91 52 19 	lds	r25, 0x1952
   11b9c:	60 e0       	ldi	r22, 0x00	; 0
   11b9e:	70 e0       	ldi	r23, 0x00	; 0
   11ba0:	ae 01       	movw	r20, r28
   11ba2:	4f 5f       	subi	r20, 0xFF	; 255
   11ba4:	5f 4f       	sbci	r21, 0xFF	; 255
   11ba6:	0e 94 c2 28 	call	0x5184	; 0x5184 <OSMutexPend>


	pReport = (PSEABIRD_SB37SI_DATA_REPORT_XMIT)&(txFloatData[headFloatTx]);
   11baa:	80 91 93 07 	lds	r24, 0x0793
   11bae:	90 e0       	ldi	r25, 0x00	; 0
   11bb0:	26 e3       	ldi	r18, 0x36	; 54
   11bb2:	31 e0       	ldi	r19, 0x01	; 1
   11bb4:	82 9f       	mul	r24, r18
   11bb6:	f0 01       	movw	r30, r0
   11bb8:	83 9f       	mul	r24, r19
   11bba:	f0 0d       	add	r31, r0
   11bbc:	92 9f       	mul	r25, r18
   11bbe:	f0 0d       	add	r31, r0
   11bc0:	11 24       	eor	r1, r1
   11bc2:	e3 5a       	subi	r30, 0xA3	; 163
   11bc4:	f6 45       	sbci	r31, 0x56	; 86
	memset(pReport, 0, sizeof(FLOAT_TX_BUFFER));
   11bc6:	df 01       	movw	r26, r30
   11bc8:	c9 01       	movw	r24, r18
   11bca:	1d 92       	st	X+, r1
   11bcc:	01 97       	sbiw	r24, 0x01	; 1
   11bce:	e9 f7       	brne	.-6      	; 0x11bca <SB37SI_CTDReportXmit2+0x48>


	pReport->comm.headers.length  = sizeof(PIB_IRIDIUM_DATA_XMIT) + CRC16_SIZE;
	pReport->comm.headers.length  += pTaskInfo->pBuf->reportData.headerReport.repeatCount * sizeof(SBSB37SI_DATA_REPORT_BLOCK);	
   11bd0:	d8 01       	movw	r26, r16
   11bd2:	14 96       	adiw	r26, 0x04	; 4
   11bd4:	4d 91       	ld	r20, X+
   11bd6:	5c 91       	ld	r21, X
   11bd8:	15 97       	sbiw	r26, 0x05	; 5
	pReport->comm.headers.length  += sizeof(TYPE_91_REPORT_HEADER);	
   11bda:	4d 59       	subi	r20, 0x9D	; 157
   11bdc:	5a 4f       	sbci	r21, 0xFA	; 250
   11bde:	da 01       	movw	r26, r20
   11be0:	2c 91       	ld	r18, X
   11be2:	88 e1       	ldi	r24, 0x18	; 24
   11be4:	28 9f       	mul	r18, r24
   11be6:	90 01       	movw	r18, r0
   11be8:	11 24       	eor	r1, r1
   11bea:	27 5e       	subi	r18, 0xE7	; 231
   11bec:	3f 4f       	sbci	r19, 0xFF	; 255
   11bee:	31 83       	std	Z+1, r19	; 0x01
   11bf0:	20 83       	st	Z, r18
	
	pReport->comm.headers.destination = FLOAT_IRIDIUM_INTERFACE;
   11bf2:	82 e0       	ldi	r24, 0x02	; 2
   11bf4:	90 e0       	ldi	r25, 0x00	; 0
   11bf6:	93 83       	std	Z+3, r25	; 0x03
   11bf8:	82 83       	std	Z+2, r24	; 0x02

	pReport->comm.iridiumInfo.structureType = 0x91;
   11bfa:	81 e9       	ldi	r24, 0x91	; 145
   11bfc:	84 87       	std	Z+12, r24	; 0x0c
	pReport->comm.iridiumInfo.size = pReport->comm.headers.length - sizeof(PIB_IRIDIUM_DATA_XMIT) - CRC16_SIZE;
   11bfe:	21 51       	subi	r18, 0x11	; 17
   11c00:	30 40       	sbci	r19, 0x00	; 0
   11c02:	36 87       	std	Z+14, r19	; 0x0e
   11c04:	25 87       	std	Z+13, r18	; 0x0d


	memcpy((char*)&(pReport->reportData), &pTaskInfo->pBuf->reportData, pReport->comm.iridiumInfo.size);
   11c06:	3f 96       	adiw	r30, 0x0f	; 15
   11c08:	17 97       	sbiw	r26, 0x07	; 7
   11c0a:	cf 01       	movw	r24, r30
   11c0c:	bd 01       	movw	r22, r26
   11c0e:	a9 01       	movw	r20, r18
   11c10:	0e 94 1c f0 	call	0x1e038	; 0x1e038 <memcpy>

	(headFloatTx < MAX_FLOAT_BUFFERS - 1) ? (headFloatTx++) : (headFloatTx = 0);
   11c14:	80 91 93 07 	lds	r24, 0x0793
   11c18:	87 30       	cpi	r24, 0x07	; 7
   11c1a:	20 f4       	brcc	.+8      	; 0x11c24 <SB37SI_CTDReportXmit2+0xa2>
   11c1c:	8f 5f       	subi	r24, 0xFF	; 255
   11c1e:	80 93 93 07 	sts	0x0793, r24
   11c22:	02 c0       	rjmp	.+4      	; 0x11c28 <SB37SI_CTDReportXmit2+0xa6>
   11c24:	10 92 93 07 	sts	0x0793, r1

	if(headFloatTx == tailFloatTx)
   11c28:	90 91 93 07 	lds	r25, 0x0793
   11c2c:	80 91 94 07 	lds	r24, 0x0794
   11c30:	98 17       	cp	r25, r24
   11c32:	41 f4       	brne	.+16     	; 0x11c44 <SB37SI_CTDReportXmit2+0xc2>
		(tailFloatTx < MAX_FLOAT_BUFFERS - 1) ? (tailFloatTx++) : (tailFloatTx = 0);
   11c34:	97 30       	cpi	r25, 0x07	; 7
   11c36:	20 f4       	brcc	.+8      	; 0x11c40 <SB37SI_CTDReportXmit2+0xbe>
   11c38:	9f 5f       	subi	r25, 0xFF	; 255
   11c3a:	90 93 94 07 	sts	0x0794, r25
   11c3e:	02 c0       	rjmp	.+4      	; 0x11c44 <SB37SI_CTDReportXmit2+0xc2>
   11c40:	10 92 94 07 	sts	0x0794, r1

	OSMutexPost(pMutexFloatQueue);
   11c44:	80 91 51 19 	lds	r24, 0x1951
   11c48:	90 91 52 19 	lds	r25, 0x1952
   11c4c:	0e 94 36 27 	call	0x4e6c	; 0x4e6c <OSMutexPost>
//
//	return retval;
//
////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////
}
   11c50:	80 e0       	ldi	r24, 0x00	; 0
   11c52:	0f 90       	pop	r0
   11c54:	cf 91       	pop	r28
   11c56:	df 91       	pop	r29
   11c58:	1f 91       	pop	r17
   11c5a:	0f 91       	pop	r16
   11c5c:	08 95       	ret

00011c5e <SB37SI_TurnOff>:

	return retval;
}

uint8_t SB37SI_TurnOff(PSEABIRD_37SI_TASK pTaskInfo)
{
   11c5e:	cf 93       	push	r28
   11c60:	df 93       	push	r29
   11c62:	ec 01       	movw	r28, r24
	uint8_t retval = FAIL;

	pTaskInfo->pBuf->sampleCTD = FALSE;
   11c64:	ec 81       	ldd	r30, Y+4	; 0x04
   11c66:	fd 81       	ldd	r31, Y+5	; 0x05
   11c68:	ea 5a       	subi	r30, 0xAA	; 170
   11c6a:	fa 4f       	sbci	r31, 0xFA	; 250
   11c6c:	11 92       	st	Z+, r1
	pTaskInfo->pBuf->powerCTD = FALSE;
   11c6e:	10 82       	st	Z, r1

	EnablePIBModule(pTaskInfo->portNum, FALSE, FALSE);
   11c70:	89 81       	ldd	r24, Y+1	; 0x01
   11c72:	60 e0       	ldi	r22, 0x00	; 0
   11c74:	40 e0       	ldi	r20, 0x00	; 0
   11c76:	0e 94 a2 38 	call	0x7144	; 0x7144 <EnablePIBModule>


	pTaskInfo->pBuf->reportData.headerReport.payloadType = 0x00000021;
   11c7a:	ec 81       	ldd	r30, Y+4	; 0x04
   11c7c:	fd 81       	ldd	r31, Y+5	; 0x05
   11c7e:	e4 5a       	subi	r30, 0xA4	; 164
   11c80:	fa 4f       	sbci	r31, 0xFA	; 250
   11c82:	81 e2       	ldi	r24, 0x21	; 33
   11c84:	90 e0       	ldi	r25, 0x00	; 0
   11c86:	a0 e0       	ldi	r26, 0x00	; 0
   11c88:	b0 e0       	ldi	r27, 0x00	; 0
   11c8a:	81 93       	st	Z+, r24
   11c8c:	91 93       	st	Z+, r25
   11c8e:	a1 93       	st	Z+, r26
   11c90:	b1 93       	st	Z+, r27
	pTaskInfo->pBuf->reportData.headerReport.boardID = mainBoardID;
   11c92:	80 91 e6 03 	lds	r24, 0x03E6
   11c96:	81 93       	st	Z+, r24
	pTaskInfo->pBuf->reportData.headerReport.taskID = pTaskInfo->taskID;
   11c98:	88 81       	ld	r24, Y
   11c9a:	81 93       	st	Z+, r24
	pTaskInfo->pBuf->reportData.headerReport.dataFormat = 8;
	pTaskInfo->pBuf->reportData.headerReport.parser = 0;
	pTaskInfo->pBuf->reportData.headerReport.priority = 2;
   11c9c:	88 e4       	ldi	r24, 0x48	; 72
   11c9e:	81 93       	st	Z+, r24

	if(pTaskInfo->pBuf->reportData.headerReport.repeatCount != 0)
   11ca0:	80 81       	ld	r24, Z
   11ca2:	88 23       	and	r24, r24
   11ca4:	19 f0       	breq	.+6      	; 0x11cac <SB37SI_TurnOff+0x4e>
		SB37SI_CTDReportXmit2(pTaskInfo);
   11ca6:	ce 01       	movw	r24, r28
   11ca8:	0e 94 c1 8d 	call	0x11b82	; 0x11b82 <SB37SI_CTDReportXmit2>

	pTaskInfo->pBuf->reportData.headerReport.repeatCount = 0;
   11cac:	ec 81       	ldd	r30, Y+4	; 0x04
   11cae:	fd 81       	ldd	r31, Y+5	; 0x05
   11cb0:	ed 59       	subi	r30, 0x9D	; 157
   11cb2:	fa 4f       	sbci	r31, 0xFA	; 250
   11cb4:	10 82       	st	Z, r1

	return retval;
}
   11cb6:	80 e0       	ldi	r24, 0x00	; 0
   11cb8:	df 91       	pop	r29
   11cba:	cf 91       	pop	r28
   11cbc:	08 95       	ret

00011cbe <SB37SI_GetCTDSample2>:

	return;
}

void SB37SI_GetCTDSample2(PSEABIRD_37SI_TASK pTaskInfo)
{
   11cbe:	8f 92       	push	r8
   11cc0:	9f 92       	push	r9
   11cc2:	af 92       	push	r10
   11cc4:	bf 92       	push	r11
   11cc6:	df 92       	push	r13
   11cc8:	ef 92       	push	r14
   11cca:	ff 92       	push	r15
   11ccc:	0f 93       	push	r16
   11cce:	1f 93       	push	r17
   11cd0:	df 93       	push	r29
   11cd2:	cf 93       	push	r28
   11cd4:	0f 92       	push	r0
   11cd6:	cd b7       	in	r28, 0x3d	; 61
   11cd8:	de b7       	in	r29, 0x3e	; 62
   11cda:	5c 01       	movw	r10, r24
#define X_37SI1	pTaskInfo->pBuf->reportData.dataBlock
#define X_37SI2	pTaskInfo->pBuf->reportData.headerReport.repeatCount

	uint8_t count = 0;
	uint8_t err = OS_ERR_NONE;
   11cdc:	19 82       	std	Y+1, r1	; 0x01
	int32_t* pTemp;
	uint8_t checksum = 0xFF;
		
	memset(pTaskInfo->pBuf->bufferRx, 0, 256);
   11cde:	dc 01       	movw	r26, r24
   11ce0:	14 96       	adiw	r26, 0x04	; 4
   11ce2:	8d 91       	ld	r24, X+
   11ce4:	9c 91       	ld	r25, X
   11ce6:	15 97       	sbiw	r26, 0x05	; 5
   11ce8:	80 50       	subi	r24, 0x00	; 0
   11cea:	9f 4f       	sbci	r25, 0xFF	; 255
   11cec:	fc 01       	movw	r30, r24
   11cee:	80 e0       	ldi	r24, 0x00	; 0
   11cf0:	91 e0       	ldi	r25, 0x01	; 1
   11cf2:	df 01       	movw	r26, r30
   11cf4:	9c 01       	movw	r18, r24
   11cf6:	1d 92       	st	X+, r1
   11cf8:	21 50       	subi	r18, 0x01	; 1
   11cfa:	30 40       	sbci	r19, 0x00	; 0
   11cfc:	e1 f7       	brne	.-8      	; 0x11cf6 <SB37SI_GetCTDSample2+0x38>
   11cfe:	dd 24       	eor	r13, r13

	while((count < (SB37SI_SAMPLE_LEN + pTaskInfo->pBuf->pressureBytes)) && (err == OS_ERR_NONE))
	{
		pTaskInfo->pBuf->bufferRx[count] = OSuartGetCharWait(pTaskInfo->portNum, 12, &err);
   11d00:	4e 01       	movw	r8, r28
   11d02:	08 94       	sec
   11d04:	81 1c       	adc	r8, r1
   11d06:	91 1c       	adc	r9, r1
   11d08:	11 c0       	rjmp	.+34     	; 0x11d2c <SB37SI_GetCTDSample2+0x6e>
   11d0a:	d5 01       	movw	r26, r10
   11d0c:	11 96       	adiw	r26, 0x01	; 1
   11d0e:	8c 91       	ld	r24, X
   11d10:	6c e0       	ldi	r22, 0x0C	; 12
   11d12:	70 e0       	ldi	r23, 0x00	; 0
   11d14:	a4 01       	movw	r20, r8
   11d16:	0e 94 b8 32 	call	0x6570	; 0x6570 <OSuartGetCharWait>
   11d1a:	e0 0e       	add	r14, r16
   11d1c:	f1 1e       	adc	r15, r17
   11d1e:	e0 e0       	ldi	r30, 0x00	; 0
   11d20:	f1 e0       	ldi	r31, 0x01	; 1
   11d22:	ee 0e       	add	r14, r30
   11d24:	ff 1e       	adc	r15, r31
   11d26:	d7 01       	movw	r26, r14
   11d28:	8c 93       	st	X, r24
		count++;
   11d2a:	d3 94       	inc	r13
	int32_t* pTemp;
	uint8_t checksum = 0xFF;
		
	memset(pTaskInfo->pBuf->bufferRx, 0, 256);

	while((count < (SB37SI_SAMPLE_LEN + pTaskInfo->pBuf->pressureBytes)) && (err == OS_ERR_NONE))
   11d2c:	f5 01       	movw	r30, r10
   11d2e:	e4 80       	ldd	r14, Z+4	; 0x04
   11d30:	f5 80       	ldd	r15, Z+5	; 0x05
   11d32:	2a e5       	ldi	r18, 0x5A	; 90
   11d34:	35 e0       	ldi	r19, 0x05	; 5
   11d36:	e2 0e       	add	r14, r18
   11d38:	f3 1e       	adc	r15, r19
   11d3a:	d7 01       	movw	r26, r14
   11d3c:	8c 91       	ld	r24, X
   11d3e:	e6 ea       	ldi	r30, 0xA6	; 166
   11d40:	fa ef       	ldi	r31, 0xFA	; 250
   11d42:	ee 0e       	add	r14, r30
   11d44:	ff 1e       	adc	r15, r31
   11d46:	28 2f       	mov	r18, r24
   11d48:	30 e0       	ldi	r19, 0x00	; 0
   11d4a:	a9 01       	movw	r20, r18
   11d4c:	48 5f       	subi	r20, 0xF8	; 248
   11d4e:	5f 4f       	sbci	r21, 0xFF	; 255
   11d50:	0d 2d       	mov	r16, r13
   11d52:	10 e0       	ldi	r17, 0x00	; 0
   11d54:	40 17       	cp	r20, r16
   11d56:	51 07       	cpc	r21, r17
   11d58:	1c f0       	brlt	.+6      	; 0x11d60 <SB37SI_GetCTDSample2+0xa2>
   11d5a:	89 81       	ldd	r24, Y+1	; 0x01
   11d5c:	88 23       	and	r24, r24
   11d5e:	a9 f2       	breq	.-86     	; 0x11d0a <SB37SI_GetCTDSample2+0x4c>
	{
		pTaskInfo->pBuf->bufferRx[count] = OSuartGetCharWait(pTaskInfo->portNum, 12, &err);
		count++;
	}

	if(count == (SB37SI_SAMPLE_LEN + pTaskInfo->pBuf->pressureBytes))
   11d60:	27 5f       	subi	r18, 0xF7	; 247
   11d62:	3f 4f       	sbci	r19, 0xFF	; 255
   11d64:	02 17       	cp	r16, r18
   11d66:	13 07       	cpc	r17, r19
   11d68:	09 f0       	breq	.+2      	; 0x11d6c <SB37SI_GetCTDSample2+0xae>
   11d6a:	eb c0       	rjmp	.+470    	; 0x11f42 <SB37SI_GetCTDSample2+0x284>
   11d6c:	f7 01       	movw	r30, r14
   11d6e:	e0 50       	subi	r30, 0x00	; 0
   11d70:	ff 4f       	sbci	r31, 0xFF	; 255
   11d72:	20 e0       	ldi	r18, 0x00	; 0
   11d74:	30 e0       	ldi	r19, 0x00	; 0
   11d76:	90 e0       	ldi	r25, 0x00	; 0
	{
		checksum = 0;
		for(int i=0; i<(SB37SI_SAMPLE_LEN + pTaskInfo->pBuf->pressureBytes); i++)
			checksum += (uint8_t)(pTaskInfo->pBuf->bufferRx[i]);
   11d78:	81 91       	ld	r24, Z+
   11d7a:	98 0f       	add	r25, r24
	}

	if(count == (SB37SI_SAMPLE_LEN + pTaskInfo->pBuf->pressureBytes))
	{
		checksum = 0;
		for(int i=0; i<(SB37SI_SAMPLE_LEN + pTaskInfo->pBuf->pressureBytes); i++)
   11d7c:	2f 5f       	subi	r18, 0xFF	; 255
   11d7e:	3f 4f       	sbci	r19, 0xFF	; 255
   11d80:	42 17       	cp	r20, r18
   11d82:	53 07       	cpc	r21, r19
   11d84:	cc f7       	brge	.-14     	; 0x11d78 <SB37SI_GetCTDSample2+0xba>
			checksum += (uint8_t)(pTaskInfo->pBuf->bufferRx[i]);
	}
	
	if(checksum == 0)
   11d86:	99 23       	and	r25, r25
   11d88:	09 f0       	breq	.+2      	; 0x11d8c <SB37SI_GetCTDSample2+0xce>
   11d8a:	db c0       	rjmp	.+438    	; 0x11f42 <SB37SI_GetCTDSample2+0x284>
	{
		X_37SI1[X_37SI2].headerData.latitude = latitude;
   11d8c:	97 01       	movw	r18, r14
   11d8e:	2d 59       	subi	r18, 0x9D	; 157
   11d90:	3a 4f       	sbci	r19, 0xFA	; 250
   11d92:	d9 01       	movw	r26, r18
   11d94:	8c 91       	ld	r24, X
   11d96:	90 e0       	ldi	r25, 0x00	; 0
   11d98:	fc 01       	movw	r30, r24
   11d9a:	ee 0f       	add	r30, r30
   11d9c:	ff 1f       	adc	r31, r31
   11d9e:	e8 0f       	add	r30, r24
   11da0:	f9 1f       	adc	r31, r25
   11da2:	31 96       	adiw	r30, 0x01	; 1
   11da4:	a3 e0       	ldi	r26, 0x03	; 3
   11da6:	ee 0f       	add	r30, r30
   11da8:	ff 1f       	adc	r31, r31
   11daa:	aa 95       	dec	r26
   11dac:	e1 f7       	brne	.-8      	; 0x11da6 <SB37SI_GetCTDSample2+0xe8>
   11dae:	ee 0d       	add	r30, r14
   11db0:	ff 1d       	adc	r31, r15
   11db2:	e4 5a       	subi	r30, 0xA4	; 164
   11db4:	fa 4f       	sbci	r31, 0xFA	; 250
   11db6:	80 91 e5 b7 	lds	r24, 0xB7E5
   11dba:	90 91 e6 b7 	lds	r25, 0xB7E6
   11dbe:	a0 91 e7 b7 	lds	r26, 0xB7E7
   11dc2:	b0 91 e8 b7 	lds	r27, 0xB7E8
   11dc6:	80 83       	st	Z, r24
   11dc8:	91 83       	std	Z+1, r25	; 0x01
   11dca:	a2 83       	std	Z+2, r26	; 0x02
   11dcc:	b3 83       	std	Z+3, r27	; 0x03
		X_37SI1[X_37SI2].headerData.longitude = longitude;
   11dce:	f9 01       	movw	r30, r18
   11dd0:	80 81       	ld	r24, Z
   11dd2:	90 e0       	ldi	r25, 0x00	; 0
   11dd4:	fc 01       	movw	r30, r24
   11dd6:	ee 0f       	add	r30, r30
   11dd8:	ff 1f       	adc	r31, r31
   11dda:	e8 0f       	add	r30, r24
   11ddc:	f9 1f       	adc	r31, r25
   11dde:	63 e0       	ldi	r22, 0x03	; 3
   11de0:	ee 0f       	add	r30, r30
   11de2:	ff 1f       	adc	r31, r31
   11de4:	6a 95       	dec	r22
   11de6:	e1 f7       	brne	.-8      	; 0x11de0 <SB37SI_GetCTDSample2+0x122>
   11de8:	ee 0d       	add	r30, r14
   11dea:	ff 1d       	adc	r31, r15
   11dec:	e8 59       	subi	r30, 0x98	; 152
   11dee:	fa 4f       	sbci	r31, 0xFA	; 250
   11df0:	80 91 e9 b7 	lds	r24, 0xB7E9
   11df4:	90 91 ea b7 	lds	r25, 0xB7EA
   11df8:	a0 91 eb b7 	lds	r26, 0xB7EB
   11dfc:	b0 91 ec b7 	lds	r27, 0xB7EC
   11e00:	80 83       	st	Z, r24
   11e02:	91 83       	std	Z+1, r25	; 0x01
   11e04:	a2 83       	std	Z+2, r26	; 0x02
   11e06:	b3 83       	std	Z+3, r27	; 0x03
		X_37SI1[X_37SI2].headerData.timestamp = gettime();
   11e08:	d9 01       	movw	r26, r18
   11e0a:	0c 91       	ld	r16, X
   11e0c:	10 e0       	ldi	r17, 0x00	; 0
   11e0e:	0e 94 3c 34 	call	0x6878	; 0x6878 <gettime>
   11e12:	98 01       	movw	r18, r16
   11e14:	22 0f       	add	r18, r18
   11e16:	33 1f       	adc	r19, r19
   11e18:	20 0f       	add	r18, r16
   11e1a:	31 1f       	adc	r19, r17
   11e1c:	43 e0       	ldi	r20, 0x03	; 3
   11e1e:	22 0f       	add	r18, r18
   11e20:	33 1f       	adc	r19, r19
   11e22:	4a 95       	dec	r20
   11e24:	e1 f7       	brne	.-8      	; 0x11e1e <SB37SI_GetCTDSample2+0x160>
   11e26:	e2 0e       	add	r14, r18
   11e28:	f3 1e       	adc	r15, r19
   11e2a:	ec e6       	ldi	r30, 0x6C	; 108
   11e2c:	f5 e0       	ldi	r31, 0x05	; 5
   11e2e:	ee 0e       	add	r14, r30
   11e30:	ff 1e       	adc	r15, r31
   11e32:	d7 01       	movw	r26, r14
   11e34:	6d 93       	st	X+, r22
   11e36:	7d 93       	st	X+, r23
   11e38:	8d 93       	st	X+, r24
   11e3a:	9c 93       	st	X, r25
   11e3c:	13 97       	sbiw	r26, 0x03	; 3

		pTemp = (int32_t*)pTaskInfo->pBuf->bufferRx;
   11e3e:	f5 01       	movw	r30, r10
   11e40:	64 81       	ldd	r22, Z+4	; 0x04
   11e42:	75 81       	ldd	r23, Z+5	; 0x05
   11e44:	ab 01       	movw	r20, r22
   11e46:	40 50       	subi	r20, 0x00	; 0
   11e48:	5f 4f       	sbci	r21, 0xFF	; 255

		X_37SI1[X_37SI2].temperature = *pTemp;
   11e4a:	9b 01       	movw	r18, r22
   11e4c:	2d 59       	subi	r18, 0x9D	; 157
   11e4e:	3a 4f       	sbci	r19, 0xFA	; 250
   11e50:	d9 01       	movw	r26, r18
   11e52:	8c 91       	ld	r24, X
   11e54:	90 e0       	ldi	r25, 0x00	; 0
   11e56:	01 96       	adiw	r24, 0x01	; 1
   11e58:	fc 01       	movw	r30, r24
   11e5a:	ee 0f       	add	r30, r30
   11e5c:	ff 1f       	adc	r31, r31
   11e5e:	e8 0f       	add	r30, r24
   11e60:	f9 1f       	adc	r31, r25
   11e62:	13 e0       	ldi	r17, 0x03	; 3
   11e64:	ee 0f       	add	r30, r30
   11e66:	ff 1f       	adc	r31, r31
   11e68:	1a 95       	dec	r17
   11e6a:	e1 f7       	brne	.-8      	; 0x11e64 <SB37SI_GetCTDSample2+0x1a6>
   11e6c:	e6 0f       	add	r30, r22
   11e6e:	f7 1f       	adc	r31, r23
   11e70:	e4 5a       	subi	r30, 0xA4	; 164
   11e72:	fa 4f       	sbci	r31, 0xFA	; 250
   11e74:	da 01       	movw	r26, r20
   11e76:	8d 90       	ld	r8, X+
   11e78:	9d 90       	ld	r9, X+
   11e7a:	ad 90       	ld	r10, X+
   11e7c:	bd 90       	ld	r11, X+
   11e7e:	8d 01       	movw	r16, r26
   11e80:	80 82       	st	Z, r8
   11e82:	91 82       	std	Z+1, r9	; 0x01
   11e84:	a2 82       	std	Z+2, r10	; 0x02
   11e86:	b3 82       	std	Z+3, r11	; 0x03
		pTemp++;

		X_37SI1[X_37SI2].conductivity = *pTemp;
   11e88:	f9 01       	movw	r30, r18
   11e8a:	80 81       	ld	r24, Z
   11e8c:	90 e0       	ldi	r25, 0x00	; 0
   11e8e:	fc 01       	movw	r30, r24
   11e90:	ee 0f       	add	r30, r30
   11e92:	ff 1f       	adc	r31, r31
   11e94:	e8 0f       	add	r30, r24
   11e96:	f9 1f       	adc	r31, r25
   11e98:	a3 e0       	ldi	r26, 0x03	; 3
   11e9a:	ee 0f       	add	r30, r30
   11e9c:	ff 1f       	adc	r31, r31
   11e9e:	aa 95       	dec	r26
   11ea0:	e1 f7       	brne	.-8      	; 0x11e9a <SB37SI_GetCTDSample2+0x1dc>
   11ea2:	e6 0f       	add	r30, r22
   11ea4:	f7 1f       	adc	r31, r23
   11ea6:	e8 58       	subi	r30, 0x88	; 136
   11ea8:	fa 4f       	sbci	r31, 0xFA	; 250
   11eaa:	da 01       	movw	r26, r20
   11eac:	14 96       	adiw	r26, 0x04	; 4
   11eae:	8d 90       	ld	r8, X+
   11eb0:	9d 90       	ld	r9, X+
   11eb2:	ad 90       	ld	r10, X+
   11eb4:	bc 90       	ld	r11, X
   11eb6:	17 97       	sbiw	r26, 0x07	; 7
   11eb8:	80 82       	st	Z, r8
   11eba:	91 82       	std	Z+1, r9	; 0x01
   11ebc:	a2 82       	std	Z+2, r10	; 0x02
   11ebe:	b3 82       	std	Z+3, r11	; 0x03
		pTemp++;

		if(pTaskInfo->pBuf->pressureInstalled == TRUE)
   11ec0:	67 5a       	subi	r22, 0xA7	; 167
   11ec2:	7a 4f       	sbci	r23, 0xFA	; 250
   11ec4:	fb 01       	movw	r30, r22
   11ec6:	80 81       	ld	r24, Z
   11ec8:	69 55       	subi	r22, 0x59	; 89
   11eca:	75 40       	sbci	r23, 0x05	; 5
   11ecc:	d9 01       	movw	r26, r18
   11ece:	2c 91       	ld	r18, X
   11ed0:	8f 3f       	cpi	r24, 0xFF	; 255
   11ed2:	e1 f4       	brne	.+56     	; 0x11f0c <SB37SI_GetCTDSample2+0x24e>
			X_37SI1[X_37SI2].pressure = *pTemp;
   11ed4:	82 2f       	mov	r24, r18
   11ed6:	90 e0       	ldi	r25, 0x00	; 0
   11ed8:	fc 01       	movw	r30, r24
   11eda:	ee 0f       	add	r30, r30
   11edc:	ff 1f       	adc	r31, r31
   11ede:	e8 0f       	add	r30, r24
   11ee0:	f9 1f       	adc	r31, r25
   11ee2:	33 e0       	ldi	r19, 0x03	; 3
   11ee4:	ee 0f       	add	r30, r30
   11ee6:	ff 1f       	adc	r31, r31
   11ee8:	3a 95       	dec	r19
   11eea:	e1 f7       	brne	.-8      	; 0x11ee4 <SB37SI_GetCTDSample2+0x226>
   11eec:	e6 0f       	add	r30, r22
   11eee:	f7 1f       	adc	r31, r23
   11ef0:	e0 59       	subi	r30, 0x90	; 144
   11ef2:	fa 4f       	sbci	r31, 0xFA	; 250
   11ef4:	d8 01       	movw	r26, r16
   11ef6:	14 96       	adiw	r26, 0x04	; 4
   11ef8:	2d 91       	ld	r18, X+
   11efa:	3d 91       	ld	r19, X+
   11efc:	4d 91       	ld	r20, X+
   11efe:	5c 91       	ld	r21, X
   11f00:	17 97       	sbiw	r26, 0x07	; 7
   11f02:	20 83       	st	Z, r18
   11f04:	31 83       	std	Z+1, r19	; 0x01
   11f06:	42 83       	std	Z+2, r20	; 0x02
   11f08:	53 83       	std	Z+3, r21	; 0x03
   11f0a:	14 c0       	rjmp	.+40     	; 0x11f34 <SB37SI_GetCTDSample2+0x276>
		else
			X_37SI1[X_37SI2].pressure = 0;
   11f0c:	82 2f       	mov	r24, r18
   11f0e:	90 e0       	ldi	r25, 0x00	; 0
   11f10:	fc 01       	movw	r30, r24
   11f12:	ee 0f       	add	r30, r30
   11f14:	ff 1f       	adc	r31, r31
   11f16:	e8 0f       	add	r30, r24
   11f18:	f9 1f       	adc	r31, r25
   11f1a:	83 e0       	ldi	r24, 0x03	; 3
   11f1c:	ee 0f       	add	r30, r30
   11f1e:	ff 1f       	adc	r31, r31
   11f20:	8a 95       	dec	r24
   11f22:	e1 f7       	brne	.-8      	; 0x11f1c <SB37SI_GetCTDSample2+0x25e>
   11f24:	e6 0f       	add	r30, r22
   11f26:	f7 1f       	adc	r31, r23
   11f28:	e0 59       	subi	r30, 0x90	; 144
   11f2a:	fa 4f       	sbci	r31, 0xFA	; 250
   11f2c:	10 82       	st	Z, r1
   11f2e:	11 82       	std	Z+1, r1	; 0x01
   11f30:	12 82       	std	Z+2, r1	; 0x02
   11f32:	13 82       	std	Z+3, r1	; 0x03

		pTaskInfo->pBuf->reportData.headerReport.repeatCount++;
   11f34:	fb 01       	movw	r30, r22
   11f36:	ed 59       	subi	r30, 0x9D	; 157
   11f38:	fa 4f       	sbci	r31, 0xFA	; 250
   11f3a:	80 81       	ld	r24, Z
   11f3c:	8f 5f       	subi	r24, 0xFF	; 255
   11f3e:	80 83       	st	Z, r24
   11f40:	07 c0       	rjmp	.+14     	; 0x11f50 <SB37SI_GetCTDSample2+0x292>
	}
	else
	{
		pTaskInfo->pBuf->findDataFrame = TRUE;
   11f42:	e8 e5       	ldi	r30, 0x58	; 88
   11f44:	f5 e0       	ldi	r31, 0x05	; 5
   11f46:	ee 0e       	add	r14, r30
   11f48:	ff 1e       	adc	r15, r31
   11f4a:	8f ef       	ldi	r24, 0xFF	; 255
   11f4c:	d7 01       	movw	r26, r14
   11f4e:	8c 93       	st	X, r24

#undef X_37SI1
#undef X_37SI2

	return;
}
   11f50:	0f 90       	pop	r0
   11f52:	cf 91       	pop	r28
   11f54:	df 91       	pop	r29
   11f56:	1f 91       	pop	r17
   11f58:	0f 91       	pop	r16
   11f5a:	ff 90       	pop	r15
   11f5c:	ef 90       	pop	r14
   11f5e:	df 90       	pop	r13
   11f60:	bf 90       	pop	r11
   11f62:	af 90       	pop	r10
   11f64:	9f 90       	pop	r9
   11f66:	8f 90       	pop	r8
   11f68:	08 95       	ret

00011f6a <SB37SI_GetCTDSampleFrame>:
	return retval;
}


void SB37SI_GetCTDSampleFrame(PSEABIRD_37SI_TASK pTaskInfo)
{
   11f6a:	af 92       	push	r10
   11f6c:	bf 92       	push	r11
   11f6e:	cf 92       	push	r12
   11f70:	df 92       	push	r13
   11f72:	ef 92       	push	r14
   11f74:	ff 92       	push	r15
   11f76:	0f 93       	push	r16
   11f78:	1f 93       	push	r17
   11f7a:	df 93       	push	r29
   11f7c:	cf 93       	push	r28
   11f7e:	0f 92       	push	r0
   11f80:	cd b7       	in	r28, 0x3d	; 61
   11f82:	de b7       	in	r29, 0x3e	; 62
   11f84:	6c 01       	movw	r12, r24
	uint8_t err = OS_ERR_NONE;
   11f86:	19 82       	std	Y+1, r1	; 0x01
   11f88:	ee 24       	eor	r14, r14
   11f8a:	ff 24       	eor	r15, r15
	uint8_t sum;

	for(int i=0; i<2*(SB37SI_SAMPLE_LEN + pTaskInfo->pBuf->pressureBytes); i++)
	{
		pTaskInfo->pBuf->frameBuf[i] = (uint8_t)(OSuartGetCharWait(pTaskInfo->portNum, 12, &err));
   11f8c:	5e 01       	movw	r10, r28
   11f8e:	08 94       	sec
   11f90:	a1 1c       	adc	r10, r1
   11f92:	b1 1c       	adc	r11, r1
   11f94:	38 c0       	rjmp	.+112    	; 0x12006 <SB37SI_GetCTDSampleFrame+0x9c>
   11f96:	d6 01       	movw	r26, r12
   11f98:	11 96       	adiw	r26, 0x01	; 1
   11f9a:	8c 91       	ld	r24, X
   11f9c:	6c e0       	ldi	r22, 0x0C	; 12
   11f9e:	70 e0       	ldi	r23, 0x00	; 0
   11fa0:	a5 01       	movw	r20, r10
   11fa2:	0e 94 b8 32 	call	0x6570	; 0x6570 <OSuartGetCharWait>
   11fa6:	0e 0d       	add	r16, r14
   11fa8:	1f 1d       	adc	r17, r15
   11faa:	06 52       	subi	r16, 0x26	; 38
   11fac:	18 4f       	sbci	r17, 0xF8	; 248
   11fae:	f8 01       	movw	r30, r16
   11fb0:	80 83       	st	Z, r24
		if(i >= 12)
   11fb2:	fc e0       	ldi	r31, 0x0C	; 12
   11fb4:	ef 16       	cp	r14, r31
   11fb6:	f1 04       	cpc	r15, r1
   11fb8:	1c f1       	brlt	.+70     	; 0x12000 <SB37SI_GetCTDSampleFrame+0x96>
	return retval;
}


void SB37SI_GetCTDSampleFrame(PSEABIRD_37SI_TASK pTaskInfo)
{
   11fba:	97 01       	movw	r18, r14
   11fbc:	2c 50       	subi	r18, 0x0C	; 12
   11fbe:	30 40       	sbci	r19, 0x00	; 0
   11fc0:	90 e0       	ldi	r25, 0x00	; 0
	{
		pTaskInfo->pBuf->frameBuf[i] = (uint8_t)(OSuartGetCharWait(pTaskInfo->portNum, 12, &err));
		if(i >= 12)
		{
			sum = 0;
			for(int j=i-12; j<=i; j++)
   11fc2:	a7 01       	movw	r20, r14
   11fc4:	4f 5f       	subi	r20, 0xFF	; 255
   11fc6:	5f 4f       	sbci	r21, 0xFF	; 255
   11fc8:	0d c0       	rjmp	.+26     	; 0x11fe4 <SB37SI_GetCTDSampleFrame+0x7a>
				sum += pTaskInfo->pBuf->frameBuf[j];
   11fca:	d6 01       	movw	r26, r12
   11fcc:	14 96       	adiw	r26, 0x04	; 4
   11fce:	ed 91       	ld	r30, X+
   11fd0:	fc 91       	ld	r31, X
   11fd2:	15 97       	sbiw	r26, 0x05	; 5
   11fd4:	e2 0f       	add	r30, r18
   11fd6:	f3 1f       	adc	r31, r19
   11fd8:	e6 52       	subi	r30, 0x26	; 38
   11fda:	f8 4f       	sbci	r31, 0xF8	; 248
   11fdc:	80 81       	ld	r24, Z
   11fde:	98 0f       	add	r25, r24
	{
		pTaskInfo->pBuf->frameBuf[i] = (uint8_t)(OSuartGetCharWait(pTaskInfo->portNum, 12, &err));
		if(i >= 12)
		{
			sum = 0;
			for(int j=i-12; j<=i; j++)
   11fe0:	2f 5f       	subi	r18, 0xFF	; 255
   11fe2:	3f 4f       	sbci	r19, 0xFF	; 255
   11fe4:	24 17       	cp	r18, r20
   11fe6:	35 07       	cpc	r19, r21
   11fe8:	81 f7       	brne	.-32     	; 0x11fca <SB37SI_GetCTDSampleFrame+0x60>
				sum += pTaskInfo->pBuf->frameBuf[j];
			
			if(sum == 0)
   11fea:	99 23       	and	r25, r25
   11fec:	49 f4       	brne	.+18     	; 0x12000 <SB37SI_GetCTDSampleFrame+0x96>
			{
				pTaskInfo->pBuf->findDataFrame = FALSE;
   11fee:	d6 01       	movw	r26, r12
   11ff0:	14 96       	adiw	r26, 0x04	; 4
   11ff2:	ed 91       	ld	r30, X+
   11ff4:	fc 91       	ld	r31, X
   11ff6:	15 97       	sbiw	r26, 0x05	; 5
   11ff8:	e8 5a       	subi	r30, 0xA8	; 168
   11ffa:	fa 4f       	sbci	r31, 0xFA	; 250
   11ffc:	10 82       	st	Z, r1
   11ffe:	14 c0       	rjmp	.+40     	; 0x12028 <SB37SI_GetCTDSampleFrame+0xbe>
void SB37SI_GetCTDSampleFrame(PSEABIRD_37SI_TASK pTaskInfo)
{
	uint8_t err = OS_ERR_NONE;
	uint8_t sum;

	for(int i=0; i<2*(SB37SI_SAMPLE_LEN + pTaskInfo->pBuf->pressureBytes); i++)
   12000:	08 94       	sec
   12002:	e1 1c       	adc	r14, r1
   12004:	f1 1c       	adc	r15, r1
   12006:	f6 01       	movw	r30, r12
   12008:	04 81       	ldd	r16, Z+4	; 0x04
   1200a:	15 81       	ldd	r17, Z+5	; 0x05
   1200c:	06 5a       	subi	r16, 0xA6	; 166
   1200e:	1a 4f       	sbci	r17, 0xFA	; 250
   12010:	d8 01       	movw	r26, r16
   12012:	8c 91       	ld	r24, X
   12014:	0a 55       	subi	r16, 0x5A	; 90
   12016:	15 40       	sbci	r17, 0x05	; 5
   12018:	90 e0       	ldi	r25, 0x00	; 0
   1201a:	09 96       	adiw	r24, 0x09	; 9
   1201c:	88 0f       	add	r24, r24
   1201e:	99 1f       	adc	r25, r25
   12020:	e8 16       	cp	r14, r24
   12022:	f9 06       	cpc	r15, r25
   12024:	0c f4       	brge	.+2      	; 0x12028 <SB37SI_GetCTDSampleFrame+0xbe>
   12026:	b7 cf       	rjmp	.-146    	; 0x11f96 <SB37SI_GetCTDSampleFrame+0x2c>
			}
		}
	}

	return;
}
   12028:	0f 90       	pop	r0
   1202a:	cf 91       	pop	r28
   1202c:	df 91       	pop	r29
   1202e:	1f 91       	pop	r17
   12030:	0f 91       	pop	r16
   12032:	ff 90       	pop	r15
   12034:	ef 90       	pop	r14
   12036:	df 90       	pop	r13
   12038:	cf 90       	pop	r12
   1203a:	bf 90       	pop	r11
   1203c:	af 90       	pop	r10
   1203e:	08 95       	ret

00012040 <SB37SI_CTD_Tx2>:
	return;
}


uint8_t SB37SI_CTD_Tx2(PSEABIRD_37SI_TASK pTaskInfo)
{
   12040:	8f 92       	push	r8
   12042:	9f 92       	push	r9
   12044:	af 92       	push	r10
   12046:	bf 92       	push	r11
   12048:	cf 92       	push	r12
   1204a:	df 92       	push	r13
   1204c:	ef 92       	push	r14
   1204e:	ff 92       	push	r15
   12050:	0f 93       	push	r16
   12052:	1f 93       	push	r17
   12054:	df 93       	push	r29
   12056:	cf 93       	push	r28
   12058:	0f 92       	push	r0
   1205a:	cd b7       	in	r28, 0x3d	; 61
   1205c:	de b7       	in	r29, 0x3e	; 62
   1205e:	6c 01       	movw	r12, r24
	uint8_t retval = FAIL;
	uint8_t firstCharTries = 3;
	char c = 0;
	uint8_t err = 0;
   12060:	19 82       	std	Y+1, r1	; 0x01
	char* pBuffer = pTaskInfo->pBuf->bufferTx;
   12062:	dc 01       	movw	r26, r24
   12064:	14 96       	adiw	r26, 0x04	; 4
   12066:	ed 90       	ld	r14, X+
   12068:	fc 90       	ld	r15, X
   1206a:	15 97       	sbiw	r26, 0x05	; 5
	uint16_t len;

	len = strlen(pBuffer);
   1206c:	d7 01       	movw	r26, r14
   1206e:	0d 90       	ld	r0, X+
   12070:	00 20       	and	r0, r0
   12072:	e9 f7       	brne	.-6      	; 0x1206e <SB37SI_CTD_Tx2+0x2e>
   12074:	8d 01       	movw	r16, r26
   12076:	01 50       	subi	r16, 0x01	; 1
   12078:	10 40       	sbci	r17, 0x00	; 0
   1207a:	0e 19       	sub	r16, r14
   1207c:	1f 09       	sbc	r17, r15

	if((len > 0) && (len <= 255))
   1207e:	c8 01       	movw	r24, r16
   12080:	01 97       	sbiw	r24, 0x01	; 1
   12082:	8f 3f       	cpi	r24, 0xFF	; 255
   12084:	91 05       	cpc	r25, r1
   12086:	08 f0       	brcs	.+2      	; 0x1208a <SB37SI_CTD_Tx2+0x4a>
   12088:	58 c0       	rjmp	.+176    	; 0x1213a <SB37SI_CTD_Tx2+0xfa>
   1208a:	33 e0       	ldi	r19, 0x03	; 3
   1208c:	b3 2e       	mov	r11, r19
			c = 0;
			err = OSuartPutCharWait(pTaskInfo->portNum, *pBuffer, 10);
			if(err != OS_ERR_NONE)
				return retval;

			c = (char) OSuartGetCharWait(pTaskInfo->portNum, 128, &err);
   1208e:	4e 01       	movw	r8, r28
   12090:	08 94       	sec
   12092:	81 1c       	adc	r8, r1
   12094:	91 1c       	adc	r9, r1
   12096:	2e c0       	rjmp	.+92     	; 0x120f4 <SB37SI_CTD_Tx2+0xb4>
	if((len > 0) && (len <= 255))
	{
		while(len > 0)
		{
			c = 0;
			err = OSuartPutCharWait(pTaskInfo->portNum, *pBuffer, 10);
   12098:	f6 01       	movw	r30, r12
   1209a:	81 81       	ldd	r24, Z+1	; 0x01
   1209c:	d7 01       	movw	r26, r14
   1209e:	6c 91       	ld	r22, X
   120a0:	4a e0       	ldi	r20, 0x0A	; 10
   120a2:	50 e0       	ldi	r21, 0x00	; 0
   120a4:	0e 94 f3 31 	call	0x63e6	; 0x63e6 <OSuartPutCharWait>
			if(err != OS_ERR_NONE)
   120a8:	88 23       	and	r24, r24
   120aa:	09 f0       	breq	.+2      	; 0x120ae <SB37SI_CTD_Tx2+0x6e>
   120ac:	46 c0       	rjmp	.+140    	; 0x1213a <SB37SI_CTD_Tx2+0xfa>
				return retval;

			c = (char) OSuartGetCharWait(pTaskInfo->portNum, 128, &err);
   120ae:	f6 01       	movw	r30, r12
   120b0:	81 81       	ldd	r24, Z+1	; 0x01
	if((len > 0) && (len <= 255))
	{
		while(len > 0)
		{
			c = 0;
			err = OSuartPutCharWait(pTaskInfo->portNum, *pBuffer, 10);
   120b2:	19 82       	std	Y+1, r1	; 0x01
			if(err != OS_ERR_NONE)
				return retval;

			c = (char) OSuartGetCharWait(pTaskInfo->portNum, 128, &err);
   120b4:	60 e8       	ldi	r22, 0x80	; 128
   120b6:	70 e0       	ldi	r23, 0x00	; 0
   120b8:	a4 01       	movw	r20, r8
   120ba:	0e 94 b8 32 	call	0x6570	; 0x6570 <OSuartGetCharWait>
   120be:	a8 2e       	mov	r10, r24
		
			if(err != OS_ERR_NONE)
   120c0:	89 81       	ldd	r24, Y+1	; 0x01
   120c2:	88 23       	and	r24, r24
   120c4:	51 f0       	breq	.+20     	; 0x120da <SB37SI_CTD_Tx2+0x9a>
			{
				if(firstCharTries > 0)
   120c6:	bb 20       	and	r11, r11
   120c8:	c1 f1       	breq	.+112    	; 0x1213a <SB37SI_CTD_Tx2+0xfa>
				{
					firstCharTries--;
   120ca:	ba 94       	dec	r11
					OSTimeDlyHMSM(0,0,0,100);
   120cc:	80 e0       	ldi	r24, 0x00	; 0
   120ce:	60 e0       	ldi	r22, 0x00	; 0
   120d0:	40 e0       	ldi	r20, 0x00	; 0
   120d2:	24 e6       	ldi	r18, 0x64	; 100
   120d4:	30 e0       	ldi	r19, 0x00	; 0
   120d6:	0e 94 2a 2e 	call	0x5c54	; 0x5c54 <OSTimeDlyHMSM>
				}
				else
					return retval;
			}
			if(c == *pBuffer)
   120da:	d7 01       	movw	r26, r14
   120dc:	8c 91       	ld	r24, X
   120de:	a8 16       	cp	r10, r24
   120e0:	39 f4       	brne	.+14     	; 0x120f0 <SB37SI_CTD_Tx2+0xb0>
			{
				pBuffer++;
   120e2:	08 94       	sec
   120e4:	e1 1c       	adc	r14, r1
   120e6:	f1 1c       	adc	r15, r1
				firstCharTries = 0;
				len--;
   120e8:	01 50       	subi	r16, 0x01	; 1
   120ea:	10 40       	sbci	r17, 0x00	; 0
   120ec:	bb 24       	eor	r11, r11
   120ee:	02 c0       	rjmp	.+4      	; 0x120f4 <SB37SI_CTD_Tx2+0xb4>
			}
			else
			{
				if(firstCharTries == 0)
   120f0:	bb 20       	and	r11, r11
   120f2:	19 f1       	breq	.+70     	; 0x1213a <SB37SI_CTD_Tx2+0xfa>

	len = strlen(pBuffer);

	if((len > 0) && (len <= 255))
	{
		while(len > 0)
   120f4:	01 15       	cp	r16, r1
   120f6:	11 05       	cpc	r17, r1
   120f8:	79 f6       	brne	.-98     	; 0x12098 <SB37SI_CTD_Tx2+0x58>
					return retval;
			}
		}

		c = 0;
		err = OSuartPutCharWait(pTaskInfo->portNum, 0x0D, 10);		//Terminate command with carriage return		
   120fa:	f6 01       	movw	r30, r12
   120fc:	81 81       	ldd	r24, Z+1	; 0x01
   120fe:	6d e0       	ldi	r22, 0x0D	; 13
   12100:	4a e0       	ldi	r20, 0x0A	; 10
   12102:	50 e0       	ldi	r21, 0x00	; 0
   12104:	0e 94 f3 31 	call	0x63e6	; 0x63e6 <OSuartPutCharWait>
		if(err != OS_ERR_NONE)
   12108:	88 23       	and	r24, r24
   1210a:	b9 f4       	brne	.+46     	; 0x1213a <SB37SI_CTD_Tx2+0xfa>
			return retval;

		c = (char) OSuartGetCharWait(pTaskInfo->portNum, 10, &err);	//Echos is Carriage Return
   1210c:	d6 01       	movw	r26, r12
   1210e:	11 96       	adiw	r26, 0x01	; 1
   12110:	8c 91       	ld	r24, X
					return retval;
			}
		}

		c = 0;
		err = OSuartPutCharWait(pTaskInfo->portNum, 0x0D, 10);		//Terminate command with carriage return		
   12112:	19 82       	std	Y+1, r1	; 0x01
		if(err != OS_ERR_NONE)
			return retval;

		c = (char) OSuartGetCharWait(pTaskInfo->portNum, 10, &err);	//Echos is Carriage Return
   12114:	6a e0       	ldi	r22, 0x0A	; 10
   12116:	70 e0       	ldi	r23, 0x00	; 0
   12118:	8e 01       	movw	r16, r28
   1211a:	0f 5f       	subi	r16, 0xFF	; 255
   1211c:	1f 4f       	sbci	r17, 0xFF	; 255
   1211e:	a8 01       	movw	r20, r16
   12120:	0e 94 b8 32 	call	0x6570	; 0x6570 <OSuartGetCharWait>
		c = (char) OSuartGetCharWait(pTaskInfo->portNum, 10, &err);	//And Line Feed
   12124:	f6 01       	movw	r30, r12
   12126:	81 81       	ldd	r24, Z+1	; 0x01
   12128:	6a e0       	ldi	r22, 0x0A	; 10
   1212a:	70 e0       	ldi	r23, 0x00	; 0
   1212c:	a8 01       	movw	r20, r16
   1212e:	0e 94 b8 32 	call	0x6570	; 0x6570 <OSuartGetCharWait>
		if(c == 0x0A)
   12132:	8a 30       	cpi	r24, 0x0A	; 10
   12134:	11 f4       	brne	.+4      	; 0x1213a <SB37SI_CTD_Tx2+0xfa>
   12136:	8f ef       	ldi	r24, 0xFF	; 255
   12138:	01 c0       	rjmp	.+2      	; 0x1213c <SB37SI_CTD_Tx2+0xfc>
   1213a:	80 e0       	ldi	r24, 0x00	; 0
			retval = SUCCESS;
	}


	return retval;
}
   1213c:	0f 90       	pop	r0
   1213e:	cf 91       	pop	r28
   12140:	df 91       	pop	r29
   12142:	1f 91       	pop	r17
   12144:	0f 91       	pop	r16
   12146:	ff 90       	pop	r15
   12148:	ef 90       	pop	r14
   1214a:	df 90       	pop	r13
   1214c:	cf 90       	pop	r12
   1214e:	bf 90       	pop	r11
   12150:	af 90       	pop	r10
   12152:	9f 90       	pop	r9
   12154:	8f 90       	pop	r8
   12156:	08 95       	ret

00012158 <SB37SI_CTD_Rx2>:

uint8_t SB37SI_CTD_Rx2(PSEABIRD_37SI_TASK pTaskInfo, prog_char* pEOL, uint16_t* pLen)
{
   12158:	4f 92       	push	r4
   1215a:	5f 92       	push	r5
   1215c:	6f 92       	push	r6
   1215e:	7f 92       	push	r7
   12160:	8f 92       	push	r8
   12162:	9f 92       	push	r9
   12164:	af 92       	push	r10
   12166:	bf 92       	push	r11
   12168:	cf 92       	push	r12
   1216a:	df 92       	push	r13
   1216c:	ef 92       	push	r14
   1216e:	ff 92       	push	r15
   12170:	0f 93       	push	r16
   12172:	1f 93       	push	r17
   12174:	df 93       	push	r29
   12176:	cf 93       	push	r28
   12178:	0f 92       	push	r0
   1217a:	cd b7       	in	r28, 0x3d	; 61
   1217c:	de b7       	in	r29, 0x3e	; 62
   1217e:	4c 01       	movw	r8, r24
   12180:	2b 01       	movw	r4, r22
   12182:	7a 01       	movw	r14, r20
	uint8_t retval = FAIL;
	char* pChar = pTaskInfo->pBuf->bufferRx;
   12184:	fc 01       	movw	r30, r24
   12186:	04 81       	ldd	r16, Z+4	; 0x04
   12188:	15 81       	ldd	r17, Z+5	; 0x05
	uint8_t err = 0;
   1218a:	19 82       	std	Y+1, r1	; 0x01
	uint8_t lenEOL = strlen_P(pEOL);
   1218c:	cb 01       	movw	r24, r22
   1218e:	0e 94 c6 ef 	call	0x1df8c	; 0x1df8c <strlen_P>
   12192:	b8 2e       	mov	r11, r24

	*pLen = 0;
   12194:	f7 01       	movw	r30, r14
   12196:	11 82       	std	Z+1, r1	; 0x01
   12198:	10 82       	st	Z, r1

	*pChar = (char)(OSuartGetCharWait(pTaskInfo->portNum, 640, &err));	//Wait 5 seconds for first character
   1219a:	f4 01       	movw	r30, r8
   1219c:	81 81       	ldd	r24, Z+1	; 0x01
   1219e:	60 e8       	ldi	r22, 0x80	; 128
   121a0:	72 e0       	ldi	r23, 0x02	; 2
   121a2:	3e 01       	movw	r6, r28
   121a4:	08 94       	sec
   121a6:	61 1c       	adc	r6, r1
   121a8:	71 1c       	adc	r7, r1
   121aa:	a3 01       	movw	r20, r6
   121ac:	0e 94 b8 32 	call	0x6570	; 0x6570 <OSuartGetCharWait>
   121b0:	00 50       	subi	r16, 0x00	; 0
   121b2:	1f 4f       	sbci	r17, 0xFF	; 255
   121b4:	f8 01       	movw	r30, r16
   121b6:	80 83       	st	Z, r24
   121b8:	00 50       	subi	r16, 0x00	; 0
   121ba:	11 40       	sbci	r17, 0x01	; 1
			
	if(err != OS_ERR_NONE)
   121bc:	89 81       	ldd	r24, Y+1	; 0x01
   121be:	88 23       	and	r24, r24
   121c0:	f9 f4       	brne	.+62     	; 0x12200 <SB37SI_CTD_Rx2+0xa8>
	{
		*pLen = 0;
		return retval;
	}

	pChar++;
   121c2:	41 e0       	ldi	r20, 0x01	; 1
   121c4:	c4 2e       	mov	r12, r20
   121c6:	d4 2e       	mov	r13, r20
   121c8:	c0 0e       	add	r12, r16
   121ca:	d1 1e       	adc	r13, r17
	(*pLen)++;
   121cc:	f7 01       	movw	r30, r14
   121ce:	80 81       	ld	r24, Z
   121d0:	91 81       	ldd	r25, Z+1	; 0x01
   121d2:	01 96       	adiw	r24, 0x01	; 1
   121d4:	91 83       	std	Z+1, r25	; 0x01
   121d6:	80 83       	st	Z, r24

	return retval;
}

uint8_t SB37SI_CTD_Rx2(PSEABIRD_37SI_TASK pTaskInfo, prog_char* pEOL, uint16_t* pLen)
{
   121d8:	ab 2c       	mov	r10, r11
   121da:	bb 24       	eor	r11, r11
   121dc:	86 01       	movw	r16, r12
   121de:	0a 19       	sub	r16, r10
   121e0:	1b 09       	sbc	r17, r11
   121e2:	0f 5f       	subi	r16, 0xFF	; 255
   121e4:	1f 4f       	sbci	r17, 0xFF	; 255
   121e6:	28 c0       	rjmp	.+80     	; 0x12238 <SB37SI_CTD_Rx2+0xe0>
	pChar++;
	(*pLen)++;

	while((retval == FAIL) && (*pLen<1024))
	{
		*pChar = (char) OSuartGetCharWait(pTaskInfo->portNum, 64, &err);	//Wait 0.5 seconds for each additional character
   121e8:	f4 01       	movw	r30, r8
   121ea:	81 81       	ldd	r24, Z+1	; 0x01
   121ec:	60 e4       	ldi	r22, 0x40	; 64
   121ee:	70 e0       	ldi	r23, 0x00	; 0
   121f0:	a3 01       	movw	r20, r6
   121f2:	0e 94 b8 32 	call	0x6570	; 0x6570 <OSuartGetCharWait>
   121f6:	f6 01       	movw	r30, r12
   121f8:	80 83       	st	Z, r24
			
		if(err != OS_ERR_NONE)
   121fa:	89 81       	ldd	r24, Y+1	; 0x01
   121fc:	88 23       	and	r24, r24
   121fe:	21 f0       	breq	.+8      	; 0x12208 <SB37SI_CTD_Rx2+0xb0>
		{
			*pLen = 0;
   12200:	f7 01       	movw	r30, r14
   12202:	11 82       	std	Z+1, r1	; 0x01
   12204:	10 82       	st	Z, r1
   12206:	1e c0       	rjmp	.+60     	; 0x12244 <SB37SI_CTD_Rx2+0xec>
			return retval;
		}

		pChar++;
   12208:	08 94       	sec
   1220a:	c1 1c       	adc	r12, r1
   1220c:	d1 1c       	adc	r13, r1
		(*pLen)++;
   1220e:	f7 01       	movw	r30, r14
   12210:	80 81       	ld	r24, Z
   12212:	91 81       	ldd	r25, Z+1	; 0x01
   12214:	01 96       	adiw	r24, 0x01	; 1
   12216:	91 83       	std	Z+1, r25	; 0x01
   12218:	80 83       	st	Z, r24

		if(*pLen >= lenEOL)
   1221a:	8a 15       	cp	r24, r10
   1221c:	9b 05       	cpc	r25, r11
   1221e:	50 f0       	brcs	.+20     	; 0x12234 <SB37SI_CTD_Rx2+0xdc>
		{
			err = strncmp_P((char *)(pChar - lenEOL), pEOL, lenEOL);
   12220:	c8 01       	movw	r24, r16
   12222:	b2 01       	movw	r22, r4
   12224:	a5 01       	movw	r20, r10
   12226:	0e 94 e7 ef 	call	0x1dfce	; 0x1dfce <strncmp_P>
			if(err == 0)
   1222a:	88 23       	and	r24, r24
   1222c:	11 f4       	brne	.+4      	; 0x12232 <SB37SI_CTD_Rx2+0xda>
   1222e:	8f ef       	ldi	r24, 0xFF	; 255
   12230:	0a c0       	rjmp	.+20     	; 0x12246 <SB37SI_CTD_Rx2+0xee>
		pChar++;
		(*pLen)++;

		if(*pLen >= lenEOL)
		{
			err = strncmp_P((char *)(pChar - lenEOL), pEOL, lenEOL);
   12232:	89 83       	std	Y+1, r24	; 0x01
   12234:	0f 5f       	subi	r16, 0xFF	; 255
   12236:	1f 4f       	sbci	r17, 0xFF	; 255
	}

	pChar++;
	(*pLen)++;

	while((retval == FAIL) && (*pLen<1024))
   12238:	f7 01       	movw	r30, r14
   1223a:	80 81       	ld	r24, Z
   1223c:	91 81       	ldd	r25, Z+1	; 0x01
   1223e:	80 50       	subi	r24, 0x00	; 0
   12240:	94 40       	sbci	r25, 0x04	; 4
   12242:	90 f2       	brcs	.-92     	; 0x121e8 <SB37SI_CTD_Rx2+0x90>
   12244:	80 e0       	ldi	r24, 0x00	; 0
				retval = SUCCESS;
		}
	}

	return retval;
}
   12246:	0f 90       	pop	r0
   12248:	cf 91       	pop	r28
   1224a:	df 91       	pop	r29
   1224c:	1f 91       	pop	r17
   1224e:	0f 91       	pop	r16
   12250:	ff 90       	pop	r15
   12252:	ef 90       	pop	r14
   12254:	df 90       	pop	r13
   12256:	cf 90       	pop	r12
   12258:	bf 90       	pop	r11
   1225a:	af 90       	pop	r10
   1225c:	9f 90       	pop	r9
   1225e:	8f 90       	pop	r8
   12260:	7f 90       	pop	r7
   12262:	6f 90       	pop	r6
   12264:	5f 90       	pop	r5
   12266:	4f 90       	pop	r4
   12268:	08 95       	ret

0001226a <SB37SI_SetTime>:
	return retval;
}


uint8_t SB37SI_SetTime(PSEABIRD_37SI_TASK pTaskInfo)
{
   1226a:	0f 93       	push	r16
   1226c:	1f 93       	push	r17
   1226e:	df 93       	push	r29
   12270:	cf 93       	push	r28
   12272:	00 d0       	rcall	.+0      	; 0x12274 <SB37SI_SetTime+0xa>
   12274:	00 d0       	rcall	.+0      	; 0x12276 <SB37SI_SetTime+0xc>
   12276:	cd b7       	in	r28, 0x3d	; 61
   12278:	de b7       	in	r29, 0x3e	; 62
   1227a:	8c 01       	movw	r16, r24
	uint8_t retval = FAIL;
	tm* dt;
	time_t time;
	uint16_t lenData;

	time=gettime();
   1227c:	0e 94 3c 34 	call	0x6878	; 0x6878 <gettime>
   12280:	6b 83       	std	Y+3, r22	; 0x03
   12282:	7c 83       	std	Y+4, r23	; 0x04
   12284:	8d 83       	std	Y+5, r24	; 0x05
   12286:	9e 83       	std	Y+6, r25	; 0x06
	dt = gmtime(&time);
   12288:	ce 01       	movw	r24, r28
   1228a:	03 96       	adiw	r24, 0x03	; 3
   1228c:	0e 94 32 35 	call	0x6a64	; 0x6a64 <gmtime>
   12290:	ac 01       	movw	r20, r24

	memset(pTaskInfo->pBuf->bufferTx, 0, 256);
   12292:	d8 01       	movw	r26, r16
   12294:	14 96       	adiw	r26, 0x04	; 4
   12296:	6c 91       	ld	r22, X
   12298:	14 97       	sbiw	r26, 0x04	; 4
   1229a:	15 96       	adiw	r26, 0x05	; 5
   1229c:	7c 91       	ld	r23, X
   1229e:	15 97       	sbiw	r26, 0x05	; 5
   122a0:	80 e0       	ldi	r24, 0x00	; 0
   122a2:	91 e0       	ldi	r25, 0x01	; 1
   122a4:	fb 01       	movw	r30, r22
   122a6:	9c 01       	movw	r18, r24
   122a8:	11 92       	st	Z+, r1
   122aa:	21 50       	subi	r18, 0x01	; 1
   122ac:	30 40       	sbci	r19, 0x00	; 0
   122ae:	e1 f7       	brne	.-8      	; 0x122a8 <SB37SI_SetTime+0x3e>
	memset(pTaskInfo->pBuf->bufferRx, 0, 1024);
   122b0:	14 96       	adiw	r26, 0x04	; 4
   122b2:	8d 91       	ld	r24, X+
   122b4:	9c 91       	ld	r25, X
   122b6:	15 97       	sbiw	r26, 0x05	; 5
   122b8:	80 50       	subi	r24, 0x00	; 0
   122ba:	9f 4f       	sbci	r25, 0xFF	; 255
   122bc:	bc 01       	movw	r22, r24
   122be:	80 e0       	ldi	r24, 0x00	; 0
   122c0:	94 e0       	ldi	r25, 0x04	; 4
   122c2:	db 01       	movw	r26, r22
   122c4:	fc 01       	movw	r30, r24
   122c6:	1d 92       	st	X+, r1
   122c8:	31 97       	sbiw	r30, 0x01	; 1
   122ca:	e9 f7       	brne	.-6      	; 0x122c6 <SB37SI_SetTime+0x5c>

	sprintf_P(pTaskInfo->pBuf->bufferTx, cmd37SI_DateTime, dt->tm_mon+1, dt->tm_mday, dt->tm_year+1900,
   122cc:	2d b7       	in	r18, 0x3d	; 61
   122ce:	3e b7       	in	r19, 0x3e	; 62
   122d0:	20 51       	subi	r18, 0x10	; 16
   122d2:	30 40       	sbci	r19, 0x00	; 0
   122d4:	0f b6       	in	r0, 0x3f	; 63
   122d6:	f8 94       	cli
   122d8:	3e bf       	out	0x3e, r19	; 62
   122da:	0f be       	out	0x3f, r0	; 63
   122dc:	2d bf       	out	0x3d, r18	; 61
   122de:	ed b7       	in	r30, 0x3d	; 61
   122e0:	fe b7       	in	r31, 0x3e	; 62
   122e2:	31 96       	adiw	r30, 0x01	; 1
   122e4:	d8 01       	movw	r26, r16
   122e6:	14 96       	adiw	r26, 0x04	; 4
   122e8:	8d 91       	ld	r24, X+
   122ea:	9c 91       	ld	r25, X
   122ec:	15 97       	sbiw	r26, 0x05	; 5
   122ee:	ad b7       	in	r26, 0x3d	; 61
   122f0:	be b7       	in	r27, 0x3e	; 62
   122f2:	12 96       	adiw	r26, 0x02	; 2
   122f4:	9c 93       	st	X, r25
   122f6:	8e 93       	st	-X, r24
   122f8:	11 97       	sbiw	r26, 0x01	; 1
   122fa:	8e e1       	ldi	r24, 0x1E	; 30
   122fc:	9f e0       	ldi	r25, 0x0F	; 15
   122fe:	93 83       	std	Z+3, r25	; 0x03
   12300:	82 83       	std	Z+2, r24	; 0x02
   12302:	da 01       	movw	r26, r20
   12304:	18 96       	adiw	r26, 0x08	; 8
   12306:	8d 91       	ld	r24, X+
   12308:	9c 91       	ld	r25, X
   1230a:	19 97       	sbiw	r26, 0x09	; 9
   1230c:	01 96       	adiw	r24, 0x01	; 1
   1230e:	95 83       	std	Z+5, r25	; 0x05
   12310:	84 83       	std	Z+4, r24	; 0x04
   12312:	16 96       	adiw	r26, 0x06	; 6
   12314:	8d 91       	ld	r24, X+
   12316:	9c 91       	ld	r25, X
   12318:	17 97       	sbiw	r26, 0x07	; 7
   1231a:	97 83       	std	Z+7, r25	; 0x07
   1231c:	86 83       	std	Z+6, r24	; 0x06
   1231e:	1a 96       	adiw	r26, 0x0a	; 10
   12320:	8d 91       	ld	r24, X+
   12322:	9c 91       	ld	r25, X
   12324:	1b 97       	sbiw	r26, 0x0b	; 11
   12326:	84 59       	subi	r24, 0x94	; 148
   12328:	98 4f       	sbci	r25, 0xF8	; 248
   1232a:	91 87       	std	Z+9, r25	; 0x09
   1232c:	80 87       	std	Z+8, r24	; 0x08
   1232e:	14 96       	adiw	r26, 0x04	; 4
   12330:	8d 91       	ld	r24, X+
   12332:	9c 91       	ld	r25, X
   12334:	15 97       	sbiw	r26, 0x05	; 5
   12336:	93 87       	std	Z+11, r25	; 0x0b
   12338:	82 87       	std	Z+10, r24	; 0x0a
   1233a:	12 96       	adiw	r26, 0x02	; 2
   1233c:	8d 91       	ld	r24, X+
   1233e:	9c 91       	ld	r25, X
   12340:	13 97       	sbiw	r26, 0x03	; 3
   12342:	95 87       	std	Z+13, r25	; 0x0d
   12344:	84 87       	std	Z+12, r24	; 0x0c
   12346:	8d 91       	ld	r24, X+
   12348:	9c 91       	ld	r25, X
   1234a:	97 87       	std	Z+15, r25	; 0x0f
   1234c:	86 87       	std	Z+14, r24	; 0x0e
   1234e:	0e 94 51 f1 	call	0x1e2a2	; 0x1e2a2 <sprintf_P>
	                                                        dt->tm_hour, dt->tm_min, dt->tm_sec); 

	retval = SB37SI_CTD_Tx2(pTaskInfo);
   12352:	ed b7       	in	r30, 0x3d	; 61
   12354:	fe b7       	in	r31, 0x3e	; 62
   12356:	70 96       	adiw	r30, 0x10	; 16
   12358:	0f b6       	in	r0, 0x3f	; 63
   1235a:	f8 94       	cli
   1235c:	fe bf       	out	0x3e, r31	; 62
   1235e:	0f be       	out	0x3f, r0	; 63
   12360:	ed bf       	out	0x3d, r30	; 61
   12362:	c8 01       	movw	r24, r16
   12364:	0e 94 20 90 	call	0x12040	; 0x12040 <SB37SI_CTD_Tx2>

	if(retval == SUCCESS)
   12368:	8f 3f       	cpi	r24, 0xFF	; 255
   1236a:	41 f4       	brne	.+16     	; 0x1237c <SB37SI_SetTime+0x112>
		retval = SB37SI_CTD_Rx2(pTaskInfo, cmd37SI_EOL, &lenData);
   1236c:	c8 01       	movw	r24, r16
   1236e:	66 ed       	ldi	r22, 0xD6	; 214
   12370:	7f e0       	ldi	r23, 0x0F	; 15
   12372:	ae 01       	movw	r20, r28
   12374:	4f 5f       	subi	r20, 0xFF	; 255
   12376:	5f 4f       	sbci	r21, 0xFF	; 255
   12378:	0e 94 ac 90 	call	0x12158	; 0x12158 <SB37SI_CTD_Rx2>

	return retval;
}
   1237c:	26 96       	adiw	r28, 0x06	; 6
   1237e:	0f b6       	in	r0, 0x3f	; 63
   12380:	f8 94       	cli
   12382:	de bf       	out	0x3e, r29	; 62
   12384:	0f be       	out	0x3f, r0	; 63
   12386:	cd bf       	out	0x3d, r28	; 61
   12388:	cf 91       	pop	r28
   1238a:	df 91       	pop	r29
   1238c:	1f 91       	pop	r17
   1238e:	0f 91       	pop	r16
   12390:	08 95       	ret

00012392 <SB37SI_Cmd>:

	return retval;
}

uint8_t SB37SI_Cmd(PSEABIRD_37SI_TASK pTaskInfo, char* cmd)
{
   12392:	af 92       	push	r10
   12394:	bf 92       	push	r11
   12396:	df 92       	push	r13
   12398:	ef 92       	push	r14
   1239a:	ff 92       	push	r15
   1239c:	0f 93       	push	r16
   1239e:	1f 93       	push	r17
   123a0:	df 93       	push	r29
   123a2:	cf 93       	push	r28
   123a4:	0f 92       	push	r0
   123a6:	0f 92       	push	r0
   123a8:	cd b7       	in	r28, 0x3d	; 61
   123aa:	de b7       	in	r29, 0x3e	; 62
   123ac:	8c 01       	movw	r16, r24
   123ae:	7b 01       	movw	r14, r22
	uint8_t retval = SUCCESS;

	if(retval == SUCCESS)
	{
		strlwr(cmd);
   123b0:	cb 01       	movw	r24, r22
   123b2:	0e 94 4f f0 	call	0x1e09e	; 0x1e09e <strlwr>

		if(strstr_P(cmd, PSTR("baud")) != NULL)
   123b6:	c7 01       	movw	r24, r14
   123b8:	6d e3       	ldi	r22, 0x3D	; 61
   123ba:	71 e1       	ldi	r23, 0x11	; 17
   123bc:	0e 94 f5 ef 	call	0x1dfea	; 0x1dfea <strstr_P>
   123c0:	89 2b       	or	r24, r25
   123c2:	19 f4       	brne	.+6      	; 0x123ca <SB37SI_Cmd+0x38>
   123c4:	dd 24       	eor	r13, r13
   123c6:	da 94       	dec	r13
   123c8:	0a c0       	rjmp	.+20     	; 0x123de <SB37SI_Cmd+0x4c>
		{
			retval = FAIL;
			pTaskInfo->pBuf->responseInfo.status = CONSOLE_RESPONSE_DEVICE_CMD_NOT_SUPPORTED;
   123ca:	d8 01       	movw	r26, r16
   123cc:	14 96       	adiw	r26, 0x04	; 4
   123ce:	ed 91       	ld	r30, X+
   123d0:	fc 91       	ld	r31, X
   123d2:	15 97       	sbiw	r26, 0x05	; 5
   123d4:	ea 5a       	subi	r30, 0xAA	; 170
   123d6:	f9 4f       	sbci	r31, 0xF9	; 249
   123d8:	84 e1       	ldi	r24, 0x14	; 20
   123da:	80 83       	st	Z, r24
   123dc:	dd 24       	eor	r13, r13
		}
		if(strstr_P(cmd, PSTR("outputexecutedtag")) != NULL)
   123de:	c7 01       	movw	r24, r14
   123e0:	6b e2       	ldi	r22, 0x2B	; 43
   123e2:	71 e1       	ldi	r23, 0x11	; 17
   123e4:	0e 94 f5 ef 	call	0x1dfea	; 0x1dfea <strstr_P>
   123e8:	89 2b       	or	r24, r25
   123ea:	51 f0       	breq	.+20     	; 0x12400 <SB37SI_Cmd+0x6e>
		{
			retval = FAIL;
			pTaskInfo->pBuf->responseInfo.status = CONSOLE_RESPONSE_DEVICE_CMD_NOT_SUPPORTED;
   123ec:	d8 01       	movw	r26, r16
   123ee:	14 96       	adiw	r26, 0x04	; 4
   123f0:	ed 91       	ld	r30, X+
   123f2:	fc 91       	ld	r31, X
   123f4:	15 97       	sbiw	r26, 0x05	; 5
   123f6:	ea 5a       	subi	r30, 0xAA	; 170
   123f8:	f9 4f       	sbci	r31, 0xF9	; 249
   123fa:	84 e1       	ldi	r24, 0x14	; 20
   123fc:	80 83       	st	Z, r24
   123fe:	dd 24       	eor	r13, r13
		}
		if(strstr_P(cmd, PSTR("start")) != NULL)
   12400:	c7 01       	movw	r24, r14
   12402:	65 e2       	ldi	r22, 0x25	; 37
   12404:	71 e1       	ldi	r23, 0x11	; 17
   12406:	0e 94 f5 ef 	call	0x1dfea	; 0x1dfea <strstr_P>
   1240a:	89 2b       	or	r24, r25
   1240c:	51 f0       	breq	.+20     	; 0x12422 <SB37SI_Cmd+0x90>
		{
			retval = FAIL;
			pTaskInfo->pBuf->responseInfo.status = CONSOLE_RESPONSE_DEVICE_CMD_NOT_SUPPORTED;
   1240e:	d8 01       	movw	r26, r16
   12410:	14 96       	adiw	r26, 0x04	; 4
   12412:	ed 91       	ld	r30, X+
   12414:	fc 91       	ld	r31, X
   12416:	15 97       	sbiw	r26, 0x05	; 5
   12418:	ea 5a       	subi	r30, 0xAA	; 170
   1241a:	f9 4f       	sbci	r31, 0xF9	; 249
   1241c:	84 e1       	ldi	r24, 0x14	; 20
   1241e:	80 83       	st	Z, r24
   12420:	dd 24       	eor	r13, r13
		}
		if(strstr_P(cmd, PSTR("autorun")) != NULL)
   12422:	c7 01       	movw	r24, r14
   12424:	6d e1       	ldi	r22, 0x1D	; 29
   12426:	71 e1       	ldi	r23, 0x11	; 17
   12428:	0e 94 f5 ef 	call	0x1dfea	; 0x1dfea <strstr_P>
   1242c:	89 2b       	or	r24, r25
   1242e:	51 f0       	breq	.+20     	; 0x12444 <SB37SI_Cmd+0xb2>
		{
			retval = FAIL;
			pTaskInfo->pBuf->responseInfo.status = CONSOLE_RESPONSE_DEVICE_CMD_NOT_SUPPORTED;
   12430:	d8 01       	movw	r26, r16
   12432:	14 96       	adiw	r26, 0x04	; 4
   12434:	ed 91       	ld	r30, X+
   12436:	fc 91       	ld	r31, X
   12438:	15 97       	sbiw	r26, 0x05	; 5
   1243a:	ea 5a       	subi	r30, 0xAA	; 170
   1243c:	f9 4f       	sbci	r31, 0xF9	; 249
   1243e:	84 e1       	ldi	r24, 0x14	; 20
   12440:	80 83       	st	Z, r24
   12442:	dd 24       	eor	r13, r13
		}
		if(strstr_P(cmd, PSTR("get")) != NULL)
   12444:	c7 01       	movw	r24, r14
   12446:	69 e1       	ldi	r22, 0x19	; 25
   12448:	71 e1       	ldi	r23, 0x11	; 17
   1244a:	0e 94 f5 ef 	call	0x1dfea	; 0x1dfea <strstr_P>
   1244e:	89 2b       	or	r24, r25
   12450:	51 f0       	breq	.+20     	; 0x12466 <SB37SI_Cmd+0xd4>
		{
			retval = FAIL;
			pTaskInfo->pBuf->responseInfo.status = CONSOLE_RESPONSE_DEVICE_CMD_NOT_SUPPORTED;
   12452:	d8 01       	movw	r26, r16
   12454:	14 96       	adiw	r26, 0x04	; 4
   12456:	ed 91       	ld	r30, X+
   12458:	fc 91       	ld	r31, X
   1245a:	15 97       	sbiw	r26, 0x05	; 5
   1245c:	ea 5a       	subi	r30, 0xAA	; 170
   1245e:	f9 4f       	sbci	r31, 0xF9	; 249
   12460:	84 e1       	ldi	r24, 0x14	; 20
   12462:	80 83       	st	Z, r24
   12464:	dd 24       	eor	r13, r13
		}
		if(strstr_P(cmd, PSTR("resetlogging")) != NULL)
   12466:	c7 01       	movw	r24, r14
   12468:	6c e0       	ldi	r22, 0x0C	; 12
   1246a:	71 e1       	ldi	r23, 0x11	; 17
   1246c:	0e 94 f5 ef 	call	0x1dfea	; 0x1dfea <strstr_P>
   12470:	89 2b       	or	r24, r25
   12472:	51 f0       	breq	.+20     	; 0x12488 <SB37SI_Cmd+0xf6>
		{
			retval = FAIL;
			pTaskInfo->pBuf->responseInfo.status = CONSOLE_RESPONSE_DEVICE_CMD_NOT_SUPPORTED;
   12474:	d8 01       	movw	r26, r16
   12476:	14 96       	adiw	r26, 0x04	; 4
   12478:	ed 91       	ld	r30, X+
   1247a:	fc 91       	ld	r31, X
   1247c:	15 97       	sbiw	r26, 0x05	; 5
   1247e:	ea 5a       	subi	r30, 0xAA	; 170
   12480:	f9 4f       	sbci	r31, 0xF9	; 249
   12482:	84 e1       	ldi	r24, 0x14	; 20
   12484:	80 83       	st	Z, r24
   12486:	dd 24       	eor	r13, r13
		}
		if(strstr_P(cmd, PSTR("resetec")) != NULL)
   12488:	c7 01       	movw	r24, r14
   1248a:	64 e0       	ldi	r22, 0x04	; 4
   1248c:	71 e1       	ldi	r23, 0x11	; 17
   1248e:	0e 94 f5 ef 	call	0x1dfea	; 0x1dfea <strstr_P>
   12492:	89 2b       	or	r24, r25
   12494:	59 f0       	breq	.+22     	; 0x124ac <SB37SI_Cmd+0x11a>
		{
			retval = FAIL;
			pTaskInfo->pBuf->responseInfo.status = CONSOLE_RESPONSE_DEVICE_CMD_NOT_SUPPORTED;
   12496:	d8 01       	movw	r26, r16
   12498:	14 96       	adiw	r26, 0x04	; 4
   1249a:	ed 91       	ld	r30, X+
   1249c:	fc 91       	ld	r31, X
   1249e:	15 97       	sbiw	r26, 0x05	; 5
   124a0:	ea 5a       	subi	r30, 0xAA	; 170
   124a2:	f9 4f       	sbci	r31, 0xF9	; 249
   124a4:	84 e1       	ldi	r24, 0x14	; 20
   124a6:	80 83       	st	Z, r24
   124a8:	dd 24       	eor	r13, r13
   124aa:	9d c0       	rjmp	.+314    	; 0x125e6 <SB37SI_Cmd+0x254>
		}

		if(retval != FAIL)
   124ac:	dd 20       	and	r13, r13
   124ae:	09 f4       	brne	.+2      	; 0x124b2 <SB37SI_Cmd+0x120>
   124b0:	9a c0       	rjmp	.+308    	; 0x125e6 <SB37SI_Cmd+0x254>
		{
			uint16_t lenData;

			memset(pTaskInfo->pBuf->bufferTx, 0, 256);
   124b2:	a1 2c       	mov	r10, r1
   124b4:	51 e0       	ldi	r21, 0x01	; 1
   124b6:	b5 2e       	mov	r11, r21
   124b8:	d8 01       	movw	r26, r16
   124ba:	14 96       	adiw	r26, 0x04	; 4
   124bc:	ec 91       	ld	r30, X
   124be:	14 97       	sbiw	r26, 0x04	; 4
   124c0:	15 96       	adiw	r26, 0x05	; 5
   124c2:	fc 91       	ld	r31, X
   124c4:	df 01       	movw	r26, r30
   124c6:	95 01       	movw	r18, r10
   124c8:	1d 92       	st	X+, r1
   124ca:	21 50       	subi	r18, 0x01	; 1
   124cc:	30 40       	sbci	r19, 0x00	; 0
   124ce:	e1 f7       	brne	.-8      	; 0x124c8 <SB37SI_Cmd+0x136>
			memset(pTaskInfo->pBuf->bufferRx, 0, 1024);
   124d0:	d8 01       	movw	r26, r16
   124d2:	14 96       	adiw	r26, 0x04	; 4
   124d4:	8d 91       	ld	r24, X+
   124d6:	9c 91       	ld	r25, X
   124d8:	15 97       	sbiw	r26, 0x05	; 5
   124da:	80 50       	subi	r24, 0x00	; 0
   124dc:	9f 4f       	sbci	r25, 0xFF	; 255
   124de:	fc 01       	movw	r30, r24
   124e0:	80 e0       	ldi	r24, 0x00	; 0
   124e2:	94 e0       	ldi	r25, 0x04	; 4
   124e4:	df 01       	movw	r26, r30
   124e6:	9c 01       	movw	r18, r24
   124e8:	1d 92       	st	X+, r1
   124ea:	21 50       	subi	r18, 0x01	; 1
   124ec:	30 40       	sbci	r19, 0x00	; 0
   124ee:	e1 f7       	brne	.-8      	; 0x124e8 <SB37SI_Cmd+0x156>
			strcat(pTaskInfo->pBuf->bufferTx, cmd);
   124f0:	d8 01       	movw	r26, r16
   124f2:	14 96       	adiw	r26, 0x04	; 4
   124f4:	8d 91       	ld	r24, X+
   124f6:	9c 91       	ld	r25, X
   124f8:	15 97       	sbiw	r26, 0x05	; 5
   124fa:	b7 01       	movw	r22, r14
   124fc:	0e 94 2c f0 	call	0x1e058	; 0x1e058 <strcat>

			retval = SB37SI_CTD_Tx2(pTaskInfo);
   12500:	c8 01       	movw	r24, r16
   12502:	0e 94 20 90 	call	0x12040	; 0x12040 <SB37SI_CTD_Tx2>
   12506:	d8 2e       	mov	r13, r24

			if(retval == SUCCESS)
   12508:	bf ef       	ldi	r27, 0xFF	; 255
   1250a:	8b 17       	cp	r24, r27
   1250c:	09 f0       	breq	.+2      	; 0x12510 <SB37SI_Cmd+0x17e>
   1250e:	6b c0       	rjmp	.+214    	; 0x125e6 <SB37SI_Cmd+0x254>
			{
				retval = SB37SI_CTD_Rx2(pTaskInfo, cmd37SI_EOL, &lenData);
   12510:	c8 01       	movw	r24, r16
   12512:	66 ed       	ldi	r22, 0xD6	; 214
   12514:	7f e0       	ldi	r23, 0x0F	; 15
   12516:	ae 01       	movw	r20, r28
   12518:	4f 5f       	subi	r20, 0xFF	; 255
   1251a:	5f 4f       	sbci	r21, 0xFF	; 255
   1251c:	0e 94 ac 90 	call	0x12158	; 0x12158 <SB37SI_CTD_Rx2>
   12520:	d8 2e       	mov	r13, r24

				if((retval == SUCCESS) && (lenData != 0))
   12522:	ef ef       	ldi	r30, 0xFF	; 255
   12524:	8e 17       	cp	r24, r30
   12526:	09 f0       	breq	.+2      	; 0x1252a <SB37SI_Cmd+0x198>
   12528:	5e c0       	rjmp	.+188    	; 0x125e6 <SB37SI_Cmd+0x254>
   1252a:	89 81       	ldd	r24, Y+1	; 0x01
   1252c:	9a 81       	ldd	r25, Y+2	; 0x02
   1252e:	89 2b       	or	r24, r25
   12530:	09 f4       	brne	.+2      	; 0x12534 <SB37SI_Cmd+0x1a2>
   12532:	59 c0       	rjmp	.+178    	; 0x125e6 <SB37SI_Cmd+0x254>
				{
					memset((char*)pTaskInfo->pBuf->consoleResponse, 0, 256);
   12534:	d8 01       	movw	r26, r16
   12536:	14 96       	adiw	r26, 0x04	; 4
   12538:	8d 91       	ld	r24, X+
   1253a:	9c 91       	ld	r25, X
   1253c:	15 97       	sbiw	r26, 0x05	; 5
   1253e:	8b 52       	subi	r24, 0x2B	; 43
   12540:	99 4f       	sbci	r25, 0xF9	; 249
   12542:	dc 01       	movw	r26, r24
   12544:	95 01       	movw	r18, r10
   12546:	1d 92       	st	X+, r1
   12548:	21 50       	subi	r18, 0x01	; 1
   1254a:	30 40       	sbci	r19, 0x00	; 0
   1254c:	e1 f7       	brne	.-8      	; 0x12546 <SB37SI_Cmd+0x1b4>
					if(lenData <= 256)
   1254e:	e9 80       	ldd	r14, Y+1	; 0x01
   12550:	fa 80       	ldd	r15, Y+2	; 0x02
   12552:	d8 01       	movw	r26, r16
   12554:	14 96       	adiw	r26, 0x04	; 4
   12556:	ed 91       	ld	r30, X+
   12558:	fc 91       	ld	r31, X
   1255a:	15 97       	sbiw	r26, 0x05	; 5
   1255c:	b1 e0       	ldi	r27, 0x01	; 1
   1255e:	eb 16       	cp	r14, r27
   12560:	b1 e0       	ldi	r27, 0x01	; 1
   12562:	fb 06       	cpc	r15, r27
   12564:	90 f4       	brcc	.+36     	; 0x1258a <SB37SI_Cmd+0x1f8>
					{
						pTaskInfo->pBuf->responseInfo.status = CONSOLE_RESPONSE_OK;
   12566:	ea 5a       	subi	r30, 0xAA	; 170
   12568:	f9 4f       	sbci	r31, 0xF9	; 249
   1256a:	81 e0       	ldi	r24, 0x01	; 1
   1256c:	80 83       	st	Z, r24
						memcpy((char*)pTaskInfo->pBuf->consoleResponse, pTaskInfo->pBuf->bufferRx, lenData);
   1256e:	f8 01       	movw	r30, r16
   12570:	24 81       	ldd	r18, Z+4	; 0x04
   12572:	35 81       	ldd	r19, Z+5	; 0x05
   12574:	a9 01       	movw	r20, r18
   12576:	4b 52       	subi	r20, 0x2B	; 43
   12578:	59 4f       	sbci	r21, 0xF9	; 249
   1257a:	20 50       	subi	r18, 0x00	; 0
   1257c:	3f 4f       	sbci	r19, 0xFF	; 255
   1257e:	ca 01       	movw	r24, r20
   12580:	b9 01       	movw	r22, r18
   12582:	a7 01       	movw	r20, r14
   12584:	0e 94 1c f0 	call	0x1e038	; 0x1e038 <memcpy>
   12588:	1c c0       	rjmp	.+56     	; 0x125c2 <SB37SI_Cmd+0x230>
					}
					else
					{
						pTaskInfo->pBuf->responseInfo.status = CONSOLE_RESPONSE_OK_TRUNCATED;
   1258a:	ea 5a       	subi	r30, 0xAA	; 170
   1258c:	f9 4f       	sbci	r31, 0xF9	; 249
   1258e:	82 e0       	ldi	r24, 0x02	; 2
   12590:	80 83       	st	Z, r24
						memcpy((char*)pTaskInfo->pBuf->consoleResponse, pTaskInfo->pBuf->bufferRx, 255);
   12592:	d8 01       	movw	r26, r16
   12594:	14 96       	adiw	r26, 0x04	; 4
   12596:	8d 91       	ld	r24, X+
   12598:	9c 91       	ld	r25, X
   1259a:	15 97       	sbiw	r26, 0x05	; 5
   1259c:	dc 01       	movw	r26, r24
   1259e:	ab 52       	subi	r26, 0x2B	; 43
   125a0:	b9 4f       	sbci	r27, 0xF9	; 249
   125a2:	fc 01       	movw	r30, r24
   125a4:	e0 50       	subi	r30, 0x00	; 0
   125a6:	ff 4f       	sbci	r31, 0xFF	; 255
   125a8:	8f ef       	ldi	r24, 0xFF	; 255
   125aa:	01 90       	ld	r0, Z+
   125ac:	0d 92       	st	X+, r0
   125ae:	81 50       	subi	r24, 0x01	; 1
   125b0:	e1 f7       	brne	.-8      	; 0x125aa <SB37SI_Cmd+0x218>
						pTaskInfo->pBuf->consoleResponse[255] = 0;
   125b2:	d8 01       	movw	r26, r16
   125b4:	14 96       	adiw	r26, 0x04	; 4
   125b6:	ed 91       	ld	r30, X+
   125b8:	fc 91       	ld	r31, X
   125ba:	15 97       	sbiw	r26, 0x05	; 5
   125bc:	ec 52       	subi	r30, 0x2C	; 44
   125be:	f8 4f       	sbci	r31, 0xF8	; 248
   125c0:	10 82       	st	Z, r1
					}
					pTaskInfo->pBuf->responseInfo.length = strlen(pTaskInfo->pBuf->consoleResponse);
   125c2:	d8 01       	movw	r26, r16
   125c4:	14 96       	adiw	r26, 0x04	; 4
   125c6:	ed 91       	ld	r30, X+
   125c8:	fc 91       	ld	r31, X
   125ca:	15 97       	sbiw	r26, 0x05	; 5
   125cc:	cf 01       	movw	r24, r30
   125ce:	8b 52       	subi	r24, 0x2B	; 43
   125d0:	99 4f       	sbci	r25, 0xF9	; 249
   125d2:	dc 01       	movw	r26, r24
   125d4:	0d 90       	ld	r0, X+
   125d6:	00 20       	and	r0, r0
   125d8:	e9 f7       	brne	.-6      	; 0x125d4 <SB37SI_Cmd+0x242>
   125da:	11 97       	sbiw	r26, 0x01	; 1
   125dc:	a8 1b       	sub	r26, r24
   125de:	b9 0b       	sbc	r27, r25
   125e0:	e8 5a       	subi	r30, 0xA8	; 168
   125e2:	f9 4f       	sbci	r31, 0xF9	; 249
   125e4:	a0 83       	st	Z, r26
	{
		pTaskInfo->pBuf->responseInfo.status = CONSOLE_RESPONSE_DEVICE_NOT_RESPONDING;
	}	

	return retval;
}
   125e6:	8d 2d       	mov	r24, r13
   125e8:	0f 90       	pop	r0
   125ea:	0f 90       	pop	r0
   125ec:	cf 91       	pop	r28
   125ee:	df 91       	pop	r29
   125f0:	1f 91       	pop	r17
   125f2:	0f 91       	pop	r16
   125f4:	ff 90       	pop	r15
   125f6:	ef 90       	pop	r14
   125f8:	df 90       	pop	r13
   125fa:	bf 90       	pop	r11
   125fc:	af 90       	pop	r10
   125fe:	08 95       	ret

00012600 <SB37SI_SetPeriod>:
}



uint8_t SB37SI_SetPeriod(PSEABIRD_37SI_TASK pTaskInfo, uint16_t newInterval)
{
   12600:	cf 92       	push	r12
   12602:	df 92       	push	r13
   12604:	ff 92       	push	r15
   12606:	0f 93       	push	r16
   12608:	1f 93       	push	r17
   1260a:	df 93       	push	r29
   1260c:	cf 93       	push	r28
   1260e:	0f 92       	push	r0
   12610:	0f 92       	push	r0
   12612:	cd b7       	in	r28, 0x3d	; 61
   12614:	de b7       	in	r29, 0x3e	; 62
   12616:	8c 01       	movw	r16, r24
   12618:	6b 01       	movw	r12, r22
	uint8_t retval = FAIL;
	uint16_t lenData = 0;

	if((newInterval > 0) && (newInterval <= MAX_37SI_SAMPLE_INTERVAL))
   1261a:	cb 01       	movw	r24, r22
   1261c:	01 97       	sbiw	r24, 0x01	; 1
   1261e:	80 51       	subi	r24, 0x10	; 16
   12620:	9e 40       	sbci	r25, 0x0E	; 14
   12622:	10 f0       	brcs	.+4      	; 0x12628 <SB37SI_SetPeriod+0x28>
   12624:	ff 24       	eor	r15, r15
   12626:	67 c0       	rjmp	.+206    	; 0x126f6 <SB37SI_SetPeriod+0xf6>
	{
		memset(pTaskInfo->pBuf->bufferTx, 0, 256);
   12628:	d8 01       	movw	r26, r16
   1262a:	14 96       	adiw	r26, 0x04	; 4
   1262c:	8c 91       	ld	r24, X
   1262e:	14 97       	sbiw	r26, 0x04	; 4
   12630:	15 96       	adiw	r26, 0x05	; 5
   12632:	9c 91       	ld	r25, X


uint8_t SB37SI_SetPeriod(PSEABIRD_37SI_TASK pTaskInfo, uint16_t newInterval)
{
	uint8_t retval = FAIL;
	uint16_t lenData = 0;
   12634:	1a 82       	std	Y+2, r1	; 0x02
   12636:	19 82       	std	Y+1, r1	; 0x01

	if((newInterval > 0) && (newInterval <= MAX_37SI_SAMPLE_INTERVAL))
	{
		memset(pTaskInfo->pBuf->bufferTx, 0, 256);
   12638:	fc 01       	movw	r30, r24
   1263a:	80 e0       	ldi	r24, 0x00	; 0
   1263c:	91 e0       	ldi	r25, 0x01	; 1
   1263e:	df 01       	movw	r26, r30
   12640:	9c 01       	movw	r18, r24
   12642:	1d 92       	st	X+, r1
   12644:	21 50       	subi	r18, 0x01	; 1
   12646:	30 40       	sbci	r19, 0x00	; 0
   12648:	e1 f7       	brne	.-8      	; 0x12642 <SB37SI_SetPeriod+0x42>
		memset(pTaskInfo->pBuf->bufferRx, 0, 1024);
   1264a:	d8 01       	movw	r26, r16
   1264c:	14 96       	adiw	r26, 0x04	; 4
   1264e:	8d 91       	ld	r24, X+
   12650:	9c 91       	ld	r25, X
   12652:	15 97       	sbiw	r26, 0x05	; 5
   12654:	80 50       	subi	r24, 0x00	; 0
   12656:	9f 4f       	sbci	r25, 0xFF	; 255
   12658:	fc 01       	movw	r30, r24
   1265a:	80 e0       	ldi	r24, 0x00	; 0
   1265c:	94 e0       	ldi	r25, 0x04	; 4
   1265e:	df 01       	movw	r26, r30
   12660:	9c 01       	movw	r18, r24
   12662:	1d 92       	st	X+, r1
   12664:	21 50       	subi	r18, 0x01	; 1
   12666:	30 40       	sbci	r19, 0x00	; 0
   12668:	e1 f7       	brne	.-8      	; 0x12662 <SB37SI_SetPeriod+0x62>
		sprintf_P(pTaskInfo->pBuf->bufferTx, cmd37SI_Interval, newInterval);
   1266a:	00 d0       	rcall	.+0      	; 0x1266c <SB37SI_SetPeriod+0x6c>
   1266c:	00 d0       	rcall	.+0      	; 0x1266e <SB37SI_SetPeriod+0x6e>
   1266e:	ed b7       	in	r30, 0x3d	; 61
   12670:	fe b7       	in	r31, 0x3e	; 62
   12672:	31 96       	adiw	r30, 0x01	; 1
   12674:	d8 01       	movw	r26, r16
   12676:	14 96       	adiw	r26, 0x04	; 4
   12678:	8d 91       	ld	r24, X+
   1267a:	9c 91       	ld	r25, X
   1267c:	15 97       	sbiw	r26, 0x05	; 5
   1267e:	ad b7       	in	r26, 0x3d	; 61
   12680:	be b7       	in	r27, 0x3e	; 62
   12682:	12 96       	adiw	r26, 0x02	; 2
   12684:	9c 93       	st	X, r25
   12686:	8e 93       	st	-X, r24
   12688:	11 97       	sbiw	r26, 0x01	; 1
   1268a:	89 e8       	ldi	r24, 0x89	; 137
   1268c:	9f e0       	ldi	r25, 0x0F	; 15
   1268e:	93 83       	std	Z+3, r25	; 0x03
   12690:	82 83       	std	Z+2, r24	; 0x02
   12692:	75 83       	std	Z+5, r23	; 0x05
   12694:	64 83       	std	Z+4, r22	; 0x04
   12696:	0e 94 51 f1 	call	0x1e2a2	; 0x1e2a2 <sprintf_P>

		retval = SB37SI_CTD_Tx2(pTaskInfo);
   1269a:	ed b7       	in	r30, 0x3d	; 61
   1269c:	fe b7       	in	r31, 0x3e	; 62
   1269e:	36 96       	adiw	r30, 0x06	; 6
   126a0:	0f b6       	in	r0, 0x3f	; 63
   126a2:	f8 94       	cli
   126a4:	fe bf       	out	0x3e, r31	; 62
   126a6:	0f be       	out	0x3f, r0	; 63
   126a8:	ed bf       	out	0x3d, r30	; 61
   126aa:	c8 01       	movw	r24, r16
   126ac:	0e 94 20 90 	call	0x12040	; 0x12040 <SB37SI_CTD_Tx2>
   126b0:	f8 2e       	mov	r15, r24

		if(retval == SUCCESS)
   126b2:	ff ef       	ldi	r31, 0xFF	; 255
   126b4:	8f 17       	cp	r24, r31
   126b6:	f9 f4       	brne	.+62     	; 0x126f6 <SB37SI_SetPeriod+0xf6>
			retval = SB37SI_CTD_Rx2(pTaskInfo, cmd37SI_EOL, &lenData);
   126b8:	c8 01       	movw	r24, r16
   126ba:	66 ed       	ldi	r22, 0xD6	; 214
   126bc:	7f e0       	ldi	r23, 0x0F	; 15
   126be:	ae 01       	movw	r20, r28
   126c0:	4f 5f       	subi	r20, 0xFF	; 255
   126c2:	5f 4f       	sbci	r21, 0xFF	; 255
   126c4:	0e 94 ac 90 	call	0x12158	; 0x12158 <SB37SI_CTD_Rx2>
   126c8:	f8 2e       	mov	r15, r24

		if(retval == SUCCESS)
   126ca:	2f ef       	ldi	r18, 0xFF	; 255
   126cc:	82 17       	cp	r24, r18
   126ce:	99 f4       	brne	.+38     	; 0x126f6 <SB37SI_SetPeriod+0xf6>
		{
			EepromWriteWordUnSigned((void*)(pTaskInfo->eepromAddress + SEABIRD_37SI_SAMPLE_INTERVAL_OFFSET), newInterval);
   126d0:	d8 01       	movw	r26, r16
   126d2:	12 96       	adiw	r26, 0x02	; 2
   126d4:	8d 91       	ld	r24, X+
   126d6:	9c 91       	ld	r25, X
   126d8:	13 97       	sbiw	r26, 0x03	; 3
   126da:	80 5c       	subi	r24, 0xC0	; 192
   126dc:	9f 4f       	sbci	r25, 0xFF	; 255
   126de:	b6 01       	movw	r22, r12
   126e0:	0e 94 d6 37 	call	0x6fac	; 0x6fac <EepromWriteWordUnSigned>
			pTaskInfo->pBuf->sampleRate = newInterval;
   126e4:	d8 01       	movw	r26, r16
   126e6:	14 96       	adiw	r26, 0x04	; 4
   126e8:	ed 91       	ld	r30, X+
   126ea:	fc 91       	ld	r31, X
   126ec:	15 97       	sbiw	r26, 0x05	; 5
   126ee:	e0 50       	subi	r30, 0x00	; 0
   126f0:	fb 4f       	sbci	r31, 0xFB	; 251
   126f2:	d1 82       	std	Z+1, r13	; 0x01
   126f4:	c0 82       	st	Z, r12
		}
	}
	return retval;
}
   126f6:	8f 2d       	mov	r24, r15
   126f8:	0f 90       	pop	r0
   126fa:	0f 90       	pop	r0
   126fc:	cf 91       	pop	r28
   126fe:	df 91       	pop	r29
   12700:	1f 91       	pop	r17
   12702:	0f 91       	pop	r16
   12704:	ff 90       	pop	r15
   12706:	df 90       	pop	r13
   12708:	cf 90       	pop	r12
   1270a:	08 95       	ret

0001270c <SB37SI_StopSample>:

	return retval;
}

uint8_t SB37SI_StopSample(PSEABIRD_37SI_TASK pTaskInfo)
{
   1270c:	ef 92       	push	r14
   1270e:	ff 92       	push	r15
   12710:	0f 93       	push	r16
   12712:	1f 93       	push	r17
   12714:	df 93       	push	r29
   12716:	cf 93       	push	r28
   12718:	0f 92       	push	r0
   1271a:	0f 92       	push	r0
   1271c:	cd b7       	in	r28, 0x3d	; 61
   1271e:	de b7       	in	r29, 0x3e	; 62
   12720:	7c 01       	movw	r14, r24
	uint8_t retval = FAIL;
	uint16_t lenData = 0;
   12722:	1a 82       	std	Y+2, r1	; 0x02
   12724:	19 82       	std	Y+1, r1	; 0x01
	char* pBuffer = pTaskInfo->pBuf->bufferTx;
   12726:	dc 01       	movw	r26, r24
   12728:	14 96       	adiw	r26, 0x04	; 4
   1272a:	0d 91       	ld	r16, X+
   1272c:	1c 91       	ld	r17, X
   1272e:	15 97       	sbiw	r26, 0x05	; 5
	uint8_t err = OS_ERR_NONE;

	pTaskInfo->pBuf->reportData.headerReport.payloadType = 0x00000021;
   12730:	04 5a       	subi	r16, 0xA4	; 164
   12732:	1a 4f       	sbci	r17, 0xFA	; 250
   12734:	81 e2       	ldi	r24, 0x21	; 33
   12736:	90 e0       	ldi	r25, 0x00	; 0
   12738:	a0 e0       	ldi	r26, 0x00	; 0
   1273a:	b0 e0       	ldi	r27, 0x00	; 0
   1273c:	f8 01       	movw	r30, r16
   1273e:	81 93       	st	Z+, r24
   12740:	91 93       	st	Z+, r25
   12742:	a1 93       	st	Z+, r26
   12744:	b1 93       	st	Z+, r27
	pTaskInfo->pBuf->reportData.headerReport.boardID = mainBoardID;
   12746:	80 91 e6 03 	lds	r24, 0x03E6
   1274a:	df 01       	movw	r26, r30
   1274c:	8d 93       	st	X+, r24
	pTaskInfo->pBuf->reportData.headerReport.taskID = pTaskInfo->taskID;
   1274e:	f7 01       	movw	r30, r14
   12750:	80 81       	ld	r24, Z
   12752:	8d 93       	st	X+, r24
	pTaskInfo->pBuf->reportData.headerReport.dataFormat = 8;
	pTaskInfo->pBuf->reportData.headerReport.parser = 0;
	pTaskInfo->pBuf->reportData.headerReport.priority = 2;
   12754:	88 e4       	ldi	r24, 0x48	; 72
   12756:	fd 01       	movw	r30, r26
   12758:	81 93       	st	Z+, r24
   1275a:	8f 01       	movw	r16, r30

	if(pTaskInfo->pBuf->reportData.headerReport.repeatCount != 0)
   1275c:	80 81       	ld	r24, Z
   1275e:	03 56       	subi	r16, 0x63	; 99
   12760:	15 40       	sbci	r17, 0x05	; 5
   12762:	88 23       	and	r24, r24
   12764:	19 f0       	breq	.+6      	; 0x1276c <SB37SI_StopSample+0x60>
		SB37SI_CTDReportXmit2(pTaskInfo);
   12766:	c7 01       	movw	r24, r14
   12768:	0e 94 c1 8d 	call	0x11b82	; 0x11b82 <SB37SI_CTDReportXmit2>

	pTaskInfo->pBuf->reportData.headerReport.repeatCount = 0;
   1276c:	d7 01       	movw	r26, r14
   1276e:	14 96       	adiw	r26, 0x04	; 4
   12770:	ed 91       	ld	r30, X+
   12772:	fc 91       	ld	r31, X
   12774:	15 97       	sbiw	r26, 0x05	; 5
   12776:	ed 59       	subi	r30, 0x9D	; 157
   12778:	fa 4f       	sbci	r31, 0xFA	; 250
   1277a:	10 82       	st	Z, r1
	pTaskInfo->pBuf->sampleCTD = FALSE;
   1277c:	3d 97       	sbiw	r30, 0x0d	; 13
   1277e:	10 82       	st	Z, r1
   12780:	e6 55       	subi	r30, 0x56	; 86
   12782:	f5 40       	sbci	r31, 0x05	; 5

	memset(pTaskInfo->pBuf->bufferTx, 0, 256);
   12784:	80 e0       	ldi	r24, 0x00	; 0
   12786:	91 e0       	ldi	r25, 0x01	; 1
   12788:	9c 01       	movw	r18, r24
   1278a:	11 92       	st	Z+, r1
   1278c:	21 50       	subi	r18, 0x01	; 1
   1278e:	30 40       	sbci	r19, 0x00	; 0
   12790:	e1 f7       	brne	.-8      	; 0x1278a <SB37SI_StopSample+0x7e>
	memset(pTaskInfo->pBuf->bufferRx, 0, 1024);
   12792:	d7 01       	movw	r26, r14
   12794:	14 96       	adiw	r26, 0x04	; 4
   12796:	8d 91       	ld	r24, X+
   12798:	9c 91       	ld	r25, X
   1279a:	15 97       	sbiw	r26, 0x05	; 5
   1279c:	80 50       	subi	r24, 0x00	; 0
   1279e:	9f 4f       	sbci	r25, 0xFF	; 255
   127a0:	fc 01       	movw	r30, r24
   127a2:	80 e0       	ldi	r24, 0x00	; 0
   127a4:	94 e0       	ldi	r25, 0x04	; 4
   127a6:	df 01       	movw	r26, r30
   127a8:	9c 01       	movw	r18, r24
   127aa:	1d 92       	st	X+, r1
   127ac:	21 50       	subi	r18, 0x01	; 1
   127ae:	30 40       	sbci	r19, 0x00	; 0
   127b0:	e1 f7       	brne	.-8      	; 0x127aa <SB37SI_StopSample+0x9e>
	strcat_P(pTaskInfo->pBuf->bufferTx, cmd37SI_Stop);
   127b2:	d7 01       	movw	r26, r14
   127b4:	14 96       	adiw	r26, 0x04	; 4
   127b6:	8d 91       	ld	r24, X+
   127b8:	9c 91       	ld	r25, X
   127ba:	15 97       	sbiw	r26, 0x05	; 5
   127bc:	61 ed       	ldi	r22, 0xD1	; 209
   127be:	7f e0       	ldi	r23, 0x0F	; 15
   127c0:	0e 94 b4 ef 	call	0x1df68	; 0x1df68 <strcat_P>

	lenData = strlen(pBuffer);
   127c4:	f8 01       	movw	r30, r16
   127c6:	01 90       	ld	r0, Z+
   127c8:	00 20       	and	r0, r0
   127ca:	e9 f7       	brne	.-6      	; 0x127c6 <SB37SI_StopSample+0xba>
   127cc:	31 97       	sbiw	r30, 0x01	; 1
   127ce:	e0 1b       	sub	r30, r16
   127d0:	f1 0b       	sbc	r31, r17
   127d2:	fa 83       	std	Y+2, r31	; 0x02
   127d4:	e9 83       	std	Y+1, r30	; 0x01
   127d6:	20 e0       	ldi	r18, 0x00	; 0
   127d8:	12 c0       	rjmp	.+36     	; 0x127fe <SB37SI_StopSample+0xf2>

	while(lenData > 0)
	{
		err = OSuartPutCharWait(pTaskInfo->portNum, *pBuffer, 10);
   127da:	f7 01       	movw	r30, r14
   127dc:	81 81       	ldd	r24, Z+1	; 0x01
   127de:	d8 01       	movw	r26, r16
   127e0:	6c 91       	ld	r22, X
   127e2:	4a e0       	ldi	r20, 0x0A	; 10
   127e4:	50 e0       	ldi	r21, 0x00	; 0
   127e6:	0e 94 f3 31 	call	0x63e6	; 0x63e6 <OSuartPutCharWait>
		if(err == OS_ERR_NONE)
   127ea:	88 23       	and	r24, r24
   127ec:	09 f5       	brne	.+66     	; 0x12830 <SB37SI_StopSample+0x124>
		{
			lenData--;
   127ee:	89 81       	ldd	r24, Y+1	; 0x01
   127f0:	9a 81       	ldd	r25, Y+2	; 0x02
   127f2:	01 97       	sbiw	r24, 0x01	; 1
   127f4:	9a 83       	std	Y+2, r25	; 0x02
   127f6:	89 83       	std	Y+1, r24	; 0x01
			pBuffer++;
   127f8:	0f 5f       	subi	r16, 0xFF	; 255
   127fa:	1f 4f       	sbci	r17, 0xFF	; 255
   127fc:	2f ef       	ldi	r18, 0xFF	; 255
	memset(pTaskInfo->pBuf->bufferRx, 0, 1024);
	strcat_P(pTaskInfo->pBuf->bufferTx, cmd37SI_Stop);

	lenData = strlen(pBuffer);

	while(lenData > 0)
   127fe:	89 81       	ldd	r24, Y+1	; 0x01
   12800:	9a 81       	ldd	r25, Y+2	; 0x02
   12802:	89 2b       	or	r24, r25
   12804:	51 f7       	brne	.-44     	; 0x127da <SB37SI_StopSample+0xce>
			retval = FAIL;
			break;
		}
	}

	if(retval == SUCCESS)
   12806:	2f 3f       	cpi	r18, 0xFF	; 255
   12808:	a1 f4       	brne	.+40     	; 0x12832 <SB37SI_StopSample+0x126>
	{
		err = OSuartPutCharWait(pTaskInfo->portNum, 0x0D, 10);
   1280a:	f7 01       	movw	r30, r14
   1280c:	81 81       	ldd	r24, Z+1	; 0x01
   1280e:	6d e0       	ldi	r22, 0x0D	; 13
   12810:	4a e0       	ldi	r20, 0x0A	; 10
   12812:	50 e0       	ldi	r21, 0x00	; 0
   12814:	0e 94 f3 31 	call	0x63e6	; 0x63e6 <OSuartPutCharWait>
		if(err != OS_ERR_NONE)
   12818:	88 23       	and	r24, r24
   1281a:	51 f4       	brne	.+20     	; 0x12830 <SB37SI_StopSample+0x124>
			retval = FAIL;
	}
			
	if(retval == SUCCESS)
		retval = SB37SI_CTD_Rx2(pTaskInfo, cmd37SI_EOL, &lenData);
   1281c:	c7 01       	movw	r24, r14
   1281e:	66 ed       	ldi	r22, 0xD6	; 214
   12820:	7f e0       	ldi	r23, 0x0F	; 15
   12822:	ae 01       	movw	r20, r28
   12824:	4f 5f       	subi	r20, 0xFF	; 255
   12826:	5f 4f       	sbci	r21, 0xFF	; 255
   12828:	0e 94 ac 90 	call	0x12158	; 0x12158 <SB37SI_CTD_Rx2>
   1282c:	28 2f       	mov	r18, r24
   1282e:	01 c0       	rjmp	.+2      	; 0x12832 <SB37SI_StopSample+0x126>
   12830:	20 e0       	ldi	r18, 0x00	; 0

	return retval;
}
   12832:	82 2f       	mov	r24, r18
   12834:	0f 90       	pop	r0
   12836:	0f 90       	pop	r0
   12838:	cf 91       	pop	r28
   1283a:	df 91       	pop	r29
   1283c:	1f 91       	pop	r17
   1283e:	0f 91       	pop	r16
   12840:	ff 90       	pop	r15
   12842:	ef 90       	pop	r14
   12844:	08 95       	ret

00012846 <SB37SI_StartSample>:

	return retval;
}

uint8_t SB37SI_StartSample(PSEABIRD_37SI_TASK pTaskInfo)
{
   12846:	0f 93       	push	r16
   12848:	1f 93       	push	r17
   1284a:	df 93       	push	r29
   1284c:	cf 93       	push	r28
   1284e:	0f 92       	push	r0
   12850:	0f 92       	push	r0
   12852:	cd b7       	in	r28, 0x3d	; 61
   12854:	de b7       	in	r29, 0x3e	; 62
   12856:	8c 01       	movw	r16, r24
	uint8_t retval = FAIL;
	uint16_t lenData = 0;
   12858:	1a 82       	std	Y+2, r1	; 0x02
   1285a:	19 82       	std	Y+1, r1	; 0x01

	retval = SB37SI_SetPeriod(pTaskInfo, pTaskInfo->pBuf->sampleRate);
   1285c:	dc 01       	movw	r26, r24
   1285e:	14 96       	adiw	r26, 0x04	; 4
   12860:	ed 91       	ld	r30, X+
   12862:	fc 91       	ld	r31, X
   12864:	15 97       	sbiw	r26, 0x05	; 5
   12866:	e0 50       	subi	r30, 0x00	; 0
   12868:	fb 4f       	sbci	r31, 0xFB	; 251
   1286a:	60 81       	ld	r22, Z
   1286c:	71 81       	ldd	r23, Z+1	; 0x01
   1286e:	0e 94 00 93 	call	0x12600	; 0x12600 <SB37SI_SetPeriod>

	pTaskInfo->pBuf->reportData.headerReport.repeatCount = 0;
   12872:	d8 01       	movw	r26, r16
   12874:	14 96       	adiw	r26, 0x04	; 4
   12876:	ed 91       	ld	r30, X+
   12878:	fc 91       	ld	r31, X
   1287a:	15 97       	sbiw	r26, 0x05	; 5
   1287c:	ed 59       	subi	r30, 0x9D	; 157
   1287e:	fa 4f       	sbci	r31, 0xFA	; 250
   12880:	10 82       	st	Z, r1
	pTaskInfo->pBuf->sampleCTD = TRUE;
   12882:	3d 97       	sbiw	r30, 0x0d	; 13
   12884:	8f ef       	ldi	r24, 0xFF	; 255
   12886:	80 83       	st	Z, r24
   12888:	e6 55       	subi	r30, 0x56	; 86
   1288a:	f5 40       	sbci	r31, 0x05	; 5

	memset(pTaskInfo->pBuf->bufferTx, 0, 256);
   1288c:	80 e0       	ldi	r24, 0x00	; 0
   1288e:	91 e0       	ldi	r25, 0x01	; 1
   12890:	9c 01       	movw	r18, r24
   12892:	11 92       	st	Z+, r1
   12894:	21 50       	subi	r18, 0x01	; 1
   12896:	30 40       	sbci	r19, 0x00	; 0
   12898:	e1 f7       	brne	.-8      	; 0x12892 <SB37SI_StartSample+0x4c>
	memset(pTaskInfo->pBuf->bufferRx, 0, 1024);
   1289a:	d8 01       	movw	r26, r16
   1289c:	14 96       	adiw	r26, 0x04	; 4
   1289e:	8d 91       	ld	r24, X+
   128a0:	9c 91       	ld	r25, X
   128a2:	15 97       	sbiw	r26, 0x05	; 5
   128a4:	80 50       	subi	r24, 0x00	; 0
   128a6:	9f 4f       	sbci	r25, 0xFF	; 255
   128a8:	fc 01       	movw	r30, r24
   128aa:	80 e0       	ldi	r24, 0x00	; 0
   128ac:	94 e0       	ldi	r25, 0x04	; 4
   128ae:	df 01       	movw	r26, r30
   128b0:	9c 01       	movw	r18, r24
   128b2:	1d 92       	st	X+, r1
   128b4:	21 50       	subi	r18, 0x01	; 1
   128b6:	30 40       	sbci	r19, 0x00	; 0
   128b8:	e1 f7       	brne	.-8      	; 0x128b2 <SB37SI_StartSample+0x6c>

	strcat_P(pTaskInfo->pBuf->bufferTx, cmd37SI_Start);
   128ba:	d8 01       	movw	r26, r16
   128bc:	14 96       	adiw	r26, 0x04	; 4
   128be:	8d 91       	ld	r24, X+
   128c0:	9c 91       	ld	r25, X
   128c2:	15 97       	sbiw	r26, 0x05	; 5
   128c4:	6b ec       	ldi	r22, 0xCB	; 203
   128c6:	7f e0       	ldi	r23, 0x0F	; 15
   128c8:	0e 94 b4 ef 	call	0x1df68	; 0x1df68 <strcat_P>

	retval = SB37SI_CTD_Tx2(pTaskInfo);
   128cc:	c8 01       	movw	r24, r16
   128ce:	0e 94 20 90 	call	0x12040	; 0x12040 <SB37SI_CTD_Tx2>

	if(retval == SUCCESS)
   128d2:	8f 3f       	cpi	r24, 0xFF	; 255
   128d4:	41 f4       	brne	.+16     	; 0x128e6 <SB37SI_StartSample+0xa0>
		retval = SB37SI_CTD_Rx2(pTaskInfo, cmd37SI_EOL, &lenData);
   128d6:	c8 01       	movw	r24, r16
   128d8:	66 ed       	ldi	r22, 0xD6	; 214
   128da:	7f e0       	ldi	r23, 0x0F	; 15
   128dc:	ae 01       	movw	r20, r28
   128de:	4f 5f       	subi	r20, 0xFF	; 255
   128e0:	5f 4f       	sbci	r21, 0xFF	; 255
   128e2:	0e 94 ac 90 	call	0x12158	; 0x12158 <SB37SI_CTD_Rx2>

	return retval;
}
   128e6:	0f 90       	pop	r0
   128e8:	0f 90       	pop	r0
   128ea:	cf 91       	pop	r28
   128ec:	df 91       	pop	r29
   128ee:	1f 91       	pop	r17
   128f0:	0f 91       	pop	r16
   128f2:	08 95       	ret

000128f4 <SB37SI_GetSerNum2>:
	return;
}


uint8_t SB37SI_GetSerNum2(PSEABIRD_37SI_TASK pTaskInfo)
{
   128f4:	6f 92       	push	r6
   128f6:	7f 92       	push	r7
   128f8:	8f 92       	push	r8
   128fa:	9f 92       	push	r9
   128fc:	af 92       	push	r10
   128fe:	bf 92       	push	r11
   12900:	cf 92       	push	r12
   12902:	df 92       	push	r13
   12904:	ef 92       	push	r14
   12906:	ff 92       	push	r15
   12908:	0f 93       	push	r16
   1290a:	1f 93       	push	r17
   1290c:	df 93       	push	r29
   1290e:	cf 93       	push	r28
   12910:	cd b7       	in	r28, 0x3d	; 61
   12912:	de b7       	in	r29, 0x3e	; 62
   12914:	29 97       	sbiw	r28, 0x09	; 9
   12916:	0f b6       	in	r0, 0x3f	; 63
   12918:	f8 94       	cli
   1291a:	de bf       	out	0x3e, r29	; 62
   1291c:	0f be       	out	0x3f, r0	; 63
   1291e:	cd bf       	out	0x3d, r28	; 61
   12920:	5c 01       	movw	r10, r24
	uint8_t retval = FAIL;
	uint16_t lenData;

	memset(pTaskInfo->pBuf->tokenSeparatorList, 0, MAX_TOKEN_SEPARATORS);
   12922:	dc 01       	movw	r26, r24
   12924:	14 96       	adiw	r26, 0x04	; 4
   12926:	8d 91       	ld	r24, X+
   12928:	9c 91       	ld	r25, X
   1292a:	15 97       	sbiw	r26, 0x05	; 5
   1292c:	83 5a       	subi	r24, 0xA3	; 163
   1292e:	99 4f       	sbci	r25, 0xF9	; 249
   12930:	fc 01       	movw	r30, r24
   12932:	84 e1       	ldi	r24, 0x14	; 20
   12934:	df 01       	movw	r26, r30
   12936:	1d 92       	st	X+, r1
   12938:	8a 95       	dec	r24
   1293a:	e9 f7       	brne	.-6      	; 0x12936 <SB37SI_GetSerNum2+0x42>
	strcat_P(pTaskInfo->pBuf->tokenSeparatorList, tokens37SI1);
   1293c:	f5 01       	movw	r30, r10
   1293e:	84 81       	ldd	r24, Z+4	; 0x04
   12940:	95 81       	ldd	r25, Z+5	; 0x05
   12942:	83 5a       	subi	r24, 0xA3	; 163
   12944:	99 4f       	sbci	r25, 0xF9	; 249
   12946:	6f ed       	ldi	r22, 0xDF	; 223
   12948:	7f e0       	ldi	r23, 0x0F	; 15
   1294a:	0e 94 b4 ef 	call	0x1df68	; 0x1df68 <strcat_P>

	memset(pTaskInfo->pBuf->bufferTx, 0, 256);
   1294e:	d5 01       	movw	r26, r10
   12950:	14 96       	adiw	r26, 0x04	; 4
   12952:	ec 91       	ld	r30, X
   12954:	14 97       	sbiw	r26, 0x04	; 4
   12956:	15 96       	adiw	r26, 0x05	; 5
   12958:	fc 91       	ld	r31, X
   1295a:	80 e0       	ldi	r24, 0x00	; 0
   1295c:	91 e0       	ldi	r25, 0x01	; 1
   1295e:	df 01       	movw	r26, r30
   12960:	9c 01       	movw	r18, r24
   12962:	1d 92       	st	X+, r1
   12964:	21 50       	subi	r18, 0x01	; 1
   12966:	30 40       	sbci	r19, 0x00	; 0
   12968:	e1 f7       	brne	.-8      	; 0x12962 <SB37SI_GetSerNum2+0x6e>
	memset(pTaskInfo->pBuf->bufferRx, 0, 1024);
   1296a:	d5 01       	movw	r26, r10
   1296c:	14 96       	adiw	r26, 0x04	; 4
   1296e:	8d 91       	ld	r24, X+
   12970:	9c 91       	ld	r25, X
   12972:	15 97       	sbiw	r26, 0x05	; 5
   12974:	80 50       	subi	r24, 0x00	; 0
   12976:	9f 4f       	sbci	r25, 0xFF	; 255
   12978:	fc 01       	movw	r30, r24
   1297a:	80 e0       	ldi	r24, 0x00	; 0
   1297c:	94 e0       	ldi	r25, 0x04	; 4
   1297e:	df 01       	movw	r26, r30
   12980:	9c 01       	movw	r18, r24
   12982:	1d 92       	st	X+, r1
   12984:	21 50       	subi	r18, 0x01	; 1
   12986:	30 40       	sbci	r19, 0x00	; 0
   12988:	e1 f7       	brne	.-8      	; 0x12982 <SB37SI_GetSerNum2+0x8e>
	strcat_P(pTaskInfo->pBuf->bufferTx, cmd37SI_DS);
   1298a:	d5 01       	movw	r26, r10
   1298c:	14 96       	adiw	r26, 0x04	; 4
   1298e:	8d 91       	ld	r24, X+
   12990:	9c 91       	ld	r25, X
   12992:	15 97       	sbiw	r26, 0x05	; 5
   12994:	65 e0       	ldi	r22, 0x05	; 5
   12996:	7f e0       	ldi	r23, 0x0F	; 15
   12998:	0e 94 b4 ef 	call	0x1df68	; 0x1df68 <strcat_P>

	retval = SB37SI_CTD_Tx2(pTaskInfo);
   1299c:	c5 01       	movw	r24, r10
   1299e:	0e 94 20 90 	call	0x12040	; 0x12040 <SB37SI_CTD_Tx2>
   129a2:	78 2e       	mov	r7, r24

	if(retval == SUCCESS)
   129a4:	bf ef       	ldi	r27, 0xFF	; 255
   129a6:	8b 17       	cp	r24, r27
   129a8:	09 f0       	breq	.+2      	; 0x129ac <SB37SI_GetSerNum2+0xb8>
   129aa:	e1 c0       	rjmp	.+450    	; 0x12b6e <SB37SI_GetSerNum2+0x27a>
	{
		retval = SB37SI_CTD_Rx2(pTaskInfo, cmd37SI_EOL, &lenData);
   129ac:	c5 01       	movw	r24, r10
   129ae:	66 ed       	ldi	r22, 0xD6	; 214
   129b0:	7f e0       	ldi	r23, 0x0F	; 15
   129b2:	ae 01       	movw	r20, r28
   129b4:	4f 5f       	subi	r20, 0xFF	; 255
   129b6:	5f 4f       	sbci	r21, 0xFF	; 255
   129b8:	0e 94 ac 90 	call	0x12158	; 0x12158 <SB37SI_CTD_Rx2>
   129bc:	78 2e       	mov	r7, r24

		if((retval == SUCCESS) && (lenData != 0))
   129be:	ef ef       	ldi	r30, 0xFF	; 255
   129c0:	8e 17       	cp	r24, r30
   129c2:	09 f0       	breq	.+2      	; 0x129c6 <SB37SI_GetSerNum2+0xd2>
   129c4:	d4 c0       	rjmp	.+424    	; 0x12b6e <SB37SI_GetSerNum2+0x27a>
   129c6:	89 81       	ldd	r24, Y+1	; 0x01
   129c8:	9a 81       	ldd	r25, Y+2	; 0x02
   129ca:	89 2b       	or	r24, r25
   129cc:	09 f4       	brne	.+2      	; 0x129d0 <SB37SI_GetSerNum2+0xdc>
   129ce:	cf c0       	rjmp	.+414    	; 0x12b6e <SB37SI_GetSerNum2+0x27a>
		{
			char* pResult = NULL;
			char* pNext = NULL;
   129d0:	1c 82       	std	Y+4, r1	; 0x04
   129d2:	1b 82       	std	Y+3, r1	; 0x03
			char myTokens[] = " \r\n\0";
   129d4:	de 01       	movw	r26, r28
   129d6:	15 96       	adiw	r26, 0x05	; 5
   129d8:	ef e9       	ldi	r30, 0x9F	; 159
   129da:	f4 e0       	ldi	r31, 0x04	; 4
   129dc:	85 e0       	ldi	r24, 0x05	; 5
   129de:	01 90       	ld	r0, Z+
   129e0:	0d 92       	st	X+, r0
   129e2:	81 50       	subi	r24, 0x01	; 1
   129e4:	e1 f7       	brne	.-8      	; 0x129de <SB37SI_GetSerNum2+0xea>
			int i = 0;

			memset(pTaskInfo->pBuf->ctdInfo, 0, 64);
   129e6:	d5 01       	movw	r26, r10
   129e8:	14 96       	adiw	r26, 0x04	; 4
   129ea:	8d 91       	ld	r24, X+
   129ec:	9c 91       	ld	r25, X
   129ee:	15 97       	sbiw	r26, 0x05	; 5
   129f0:	8a 5e       	subi	r24, 0xEA	; 234
   129f2:	9a 4f       	sbci	r25, 0xFA	; 250
   129f4:	fc 01       	movw	r30, r24
   129f6:	80 e4       	ldi	r24, 0x40	; 64
   129f8:	df 01       	movw	r26, r30
   129fa:	1d 92       	st	X+, r1
   129fc:	8a 95       	dec	r24
   129fe:	e9 f7       	brne	.-6      	; 0x129fa <SB37SI_GetSerNum2+0x106>

			pTaskInfo->pBuf->gotConfig = TRUE;
   12a00:	d5 01       	movw	r26, r10
   12a02:	14 96       	adiw	r26, 0x04	; 4
   12a04:	ed 91       	ld	r30, X+
   12a06:	fc 91       	ld	r31, X
   12a08:	15 97       	sbiw	r26, 0x05	; 5
   12a0a:	e5 5a       	subi	r30, 0xA5	; 165
   12a0c:	fa 4f       	sbci	r31, 0xFA	; 250
   12a0e:	ee 24       	eor	r14, r14
   12a10:	ea 94       	dec	r14
   12a12:	e0 82       	st	Z, r14

			pResult = strstr_P(pTaskInfo->pBuf->bufferRx, PSTR("pump installed = yes"));
   12a14:	14 96       	adiw	r26, 0x04	; 4
   12a16:	0d 91       	ld	r16, X+
   12a18:	1c 91       	ld	r17, X
   12a1a:	15 97       	sbiw	r26, 0x05	; 5
   12a1c:	c8 01       	movw	r24, r16
   12a1e:	80 50       	subi	r24, 0x00	; 0
   12a20:	9f 4f       	sbci	r25, 0xFF	; 255
   12a22:	62 e7       	ldi	r22, 0x72	; 114
   12a24:	71 e1       	ldi	r23, 0x11	; 17
   12a26:	0e 94 f5 ef 	call	0x1dfea	; 0x1dfea <strstr_P>
   12a2a:	f8 01       	movw	r30, r16
   12a2c:	e7 5a       	subi	r30, 0xA7	; 167
   12a2e:	fa 4f       	sbci	r31, 0xFA	; 250
			if(pResult != NULL)
   12a30:	89 2b       	or	r24, r25
   12a32:	59 f0       	breq	.+22     	; 0x12a4a <SB37SI_GetSerNum2+0x156>
			{
				pTaskInfo->pBuf->pressureInstalled = TRUE;
   12a34:	e0 82       	st	Z, r14
				pTaskInfo->pBuf->pressureBytes = 4;
   12a36:	d5 01       	movw	r26, r10
   12a38:	14 96       	adiw	r26, 0x04	; 4
   12a3a:	ed 91       	ld	r30, X+
   12a3c:	fc 91       	ld	r31, X
   12a3e:	15 97       	sbiw	r26, 0x05	; 5
   12a40:	e6 5a       	subi	r30, 0xA6	; 166
   12a42:	fa 4f       	sbci	r31, 0xFA	; 250
   12a44:	84 e0       	ldi	r24, 0x04	; 4
   12a46:	80 83       	st	Z, r24
   12a48:	09 c0       	rjmp	.+18     	; 0x12a5c <SB37SI_GetSerNum2+0x168>
			}
			else
			{
				pTaskInfo->pBuf->pressureInstalled = FALSE;
   12a4a:	10 82       	st	Z, r1
				pTaskInfo->pBuf->pressureBytes = 0;
   12a4c:	d5 01       	movw	r26, r10
   12a4e:	14 96       	adiw	r26, 0x04	; 4
   12a50:	ed 91       	ld	r30, X+
   12a52:	fc 91       	ld	r31, X
   12a54:	15 97       	sbiw	r26, 0x05	; 5
   12a56:	e6 5a       	subi	r30, 0xA6	; 166
   12a58:	fa 4f       	sbci	r31, 0xFA	; 250
   12a5a:	10 82       	st	Z, r1
			}

			pResult = strstr_P(pTaskInfo->pBuf->bufferRx, parse37SI_SerNum);
   12a5c:	f5 01       	movw	r30, r10
   12a5e:	c4 80       	ldd	r12, Z+4	; 0x04
   12a60:	d5 80       	ldd	r13, Z+5	; 0x05
   12a62:	20 e0       	ldi	r18, 0x00	; 0
   12a64:	31 e0       	ldi	r19, 0x01	; 1
   12a66:	c2 0e       	add	r12, r18
   12a68:	d3 1e       	adc	r13, r19
   12a6a:	c6 01       	movw	r24, r12
   12a6c:	6c ed       	ldi	r22, 0xDC	; 220
   12a6e:	7f e0       	ldi	r23, 0x0F	; 15
   12a70:	0e 94 f5 ef 	call	0x1dfea	; 0x1dfea <strstr_P>
			if(pResult != NULL)
   12a74:	00 97       	sbiw	r24, 0x00	; 0
   12a76:	09 f4       	brne	.+2      	; 0x12a7a <SB37SI_GetSerNum2+0x186>
   12a78:	7a c0       	rjmp	.+244    	; 0x12b6e <SB37SI_GetSerNum2+0x27a>
			{
				pResult++;
				pResult = strstr_P(pResult, parse37SI_SerNum);
   12a7a:	01 96       	adiw	r24, 0x01	; 1
   12a7c:	6c ed       	ldi	r22, 0xDC	; 220
   12a7e:	7f e0       	ldi	r23, 0x0F	; 15
   12a80:	0e 94 f5 ef 	call	0x1dfea	; 0x1dfea <strstr_P>
			}

			if((pResult != NULL) && ((uint16_t)(pResult - pTaskInfo->pBuf->bufferRx) < 64))
   12a84:	00 97       	sbiw	r24, 0x00	; 0
   12a86:	09 f4       	brne	.+2      	; 0x12a8a <SB37SI_GetSerNum2+0x196>
   12a88:	72 c0       	rjmp	.+228    	; 0x12b6e <SB37SI_GetSerNum2+0x27a>
   12a8a:	8c 19       	sub	r24, r12
   12a8c:	9d 09       	sbc	r25, r13
   12a8e:	80 34       	cpi	r24, 0x40	; 64
   12a90:	91 05       	cpc	r25, r1
   12a92:	08 f0       	brcs	.+2      	; 0x12a96 <SB37SI_GetSerNum2+0x1a2>
   12a94:	6c c0       	rjmp	.+216    	; 0x12b6e <SB37SI_GetSerNum2+0x27a>
			{
				pResult = NULL;
				pResult = strtok_r(pTaskInfo->pBuf->bufferRx, myTokens, &pNext);
   12a96:	8e 01       	movw	r16, r28
   12a98:	0b 5f       	subi	r16, 0xFB	; 251
   12a9a:	1f 4f       	sbci	r17, 0xFF	; 255
   12a9c:	63 e0       	ldi	r22, 0x03	; 3
   12a9e:	e6 2e       	mov	r14, r22
   12aa0:	f1 2c       	mov	r15, r1
   12aa2:	ec 0e       	add	r14, r28
   12aa4:	fd 1e       	adc	r15, r29
   12aa6:	c6 01       	movw	r24, r12
   12aa8:	b8 01       	movw	r22, r16
   12aaa:	a7 01       	movw	r20, r14
   12aac:	0e 94 a0 f0 	call	0x1e140	; 0x1e140 <strtok_r>
   12ab0:	6c 01       	movw	r12, r24
   12ab2:	88 24       	eor	r8, r8
   12ab4:	99 24       	eor	r9, r9
						strcat(pTaskInfo->pBuf->ctdInfo, " ");
					}
					else
						break;
		
					pResult = strtok_r(NULL, myTokens, &pNext);
   12ab6:	60 2e       	mov	r6, r16
   12ab8:	01 2f       	mov	r16, r17
   12aba:	1e 2d       	mov	r17, r14
   12abc:	ef 2c       	mov	r14, r15
			{
				pResult = NULL;
				pResult = strtok_r(pTaskInfo->pBuf->bufferRx, myTokens, &pNext);
				for(i=0; i<4; i++)
				{
					if(pResult != NULL)
   12abe:	c1 14       	cp	r12, r1
   12ac0:	d1 04       	cpc	r13, r1
   12ac2:	19 f1       	breq	.+70     	; 0x12b0a <SB37SI_GetSerNum2+0x216>
					{
						strcat(pTaskInfo->pBuf->ctdInfo, pResult);
   12ac4:	d5 01       	movw	r26, r10
   12ac6:	14 96       	adiw	r26, 0x04	; 4
   12ac8:	8d 91       	ld	r24, X+
   12aca:	9c 91       	ld	r25, X
   12acc:	15 97       	sbiw	r26, 0x05	; 5
   12ace:	8a 5e       	subi	r24, 0xEA	; 234
   12ad0:	9a 4f       	sbci	r25, 0xFA	; 250
   12ad2:	b6 01       	movw	r22, r12
   12ad4:	0e 94 2c f0 	call	0x1e058	; 0x1e058 <strcat>
						strcat(pTaskInfo->pBuf->ctdInfo, " ");
   12ad8:	f5 01       	movw	r30, r10
   12ada:	84 81       	ldd	r24, Z+4	; 0x04
   12adc:	95 81       	ldd	r25, Z+5	; 0x05
   12ade:	8a 5e       	subi	r24, 0xEA	; 234
   12ae0:	9a 4f       	sbci	r25, 0xFA	; 250
   12ae2:	6d e9       	ldi	r22, 0x9D	; 157
   12ae4:	74 e0       	ldi	r23, 0x04	; 4
   12ae6:	0e 94 2c f0 	call	0x1e058	; 0x1e058 <strcat>
					}
					else
						break;
		
					pResult = strtok_r(NULL, myTokens, &pNext);
   12aea:	80 e0       	ldi	r24, 0x00	; 0
   12aec:	90 e0       	ldi	r25, 0x00	; 0
   12aee:	66 2d       	mov	r22, r6
   12af0:	70 2f       	mov	r23, r16
   12af2:	41 2f       	mov	r20, r17
   12af4:	5e 2d       	mov	r21, r14
   12af6:	0e 94 a0 f0 	call	0x1e140	; 0x1e140 <strtok_r>
   12afa:	6c 01       	movw	r12, r24

			if((pResult != NULL) && ((uint16_t)(pResult - pTaskInfo->pBuf->bufferRx) < 64))
			{
				pResult = NULL;
				pResult = strtok_r(pTaskInfo->pBuf->bufferRx, myTokens, &pNext);
				for(i=0; i<4; i++)
   12afc:	08 94       	sec
   12afe:	81 1c       	adc	r8, r1
   12b00:	91 1c       	adc	r9, r1
   12b02:	f4 e0       	ldi	r31, 0x04	; 4
   12b04:	8f 16       	cp	r8, r31
   12b06:	91 04       	cpc	r9, r1
   12b08:	d1 f6       	brne	.-76     	; 0x12abe <SB37SI_GetSerNum2+0x1ca>
						break;
		
					pResult = strtok_r(NULL, myTokens, &pNext);
				}

				memset(pTaskInfo->pBuf->serialNumber, 0, 16);
   12b0a:	d5 01       	movw	r26, r10
   12b0c:	14 96       	adiw	r26, 0x04	; 4
   12b0e:	8d 91       	ld	r24, X+
   12b10:	9c 91       	ld	r25, X
   12b12:	15 97       	sbiw	r26, 0x05	; 5
   12b14:	8a 5f       	subi	r24, 0xFA	; 250
   12b16:	9a 4f       	sbci	r25, 0xFA	; 250
   12b18:	fc 01       	movw	r30, r24
   12b1a:	80 e1       	ldi	r24, 0x10	; 16
   12b1c:	df 01       	movw	r26, r30
   12b1e:	1d 92       	st	X+, r1
   12b20:	8a 95       	dec	r24
   12b22:	e9 f7       	brne	.-6      	; 0x12b1e <SB37SI_GetSerNum2+0x22a>
				if((i == 4) && (pResult != NULL))
   12b24:	b4 e0       	ldi	r27, 0x04	; 4
   12b26:	8b 16       	cp	r8, r27
   12b28:	91 04       	cpc	r9, r1
   12b2a:	b1 f4       	brne	.+44     	; 0x12b58 <SB37SI_GetSerNum2+0x264>
   12b2c:	c1 14       	cp	r12, r1
   12b2e:	d1 04       	cpc	r13, r1
   12b30:	99 f0       	breq	.+38     	; 0x12b58 <SB37SI_GetSerNum2+0x264>
				{
					strcat(pTaskInfo->pBuf->ctdInfo, pResult);
   12b32:	f5 01       	movw	r30, r10
   12b34:	84 81       	ldd	r24, Z+4	; 0x04
   12b36:	95 81       	ldd	r25, Z+5	; 0x05
   12b38:	8a 5e       	subi	r24, 0xEA	; 234
   12b3a:	9a 4f       	sbci	r25, 0xFA	; 250
   12b3c:	b6 01       	movw	r22, r12
   12b3e:	0e 94 2c f0 	call	0x1e058	; 0x1e058 <strcat>
					strcat(pTaskInfo->pBuf->serialNumber, pResult);
   12b42:	d5 01       	movw	r26, r10
   12b44:	14 96       	adiw	r26, 0x04	; 4
   12b46:	8d 91       	ld	r24, X+
   12b48:	9c 91       	ld	r25, X
   12b4a:	15 97       	sbiw	r26, 0x05	; 5
   12b4c:	8a 5f       	subi	r24, 0xFA	; 250
   12b4e:	9a 4f       	sbci	r25, 0xFA	; 250
   12b50:	b6 01       	movw	r22, r12
   12b52:	0e 94 2c f0 	call	0x1e058	; 0x1e058 <strcat>
   12b56:	0b c0       	rjmp	.+22     	; 0x12b6e <SB37SI_GetSerNum2+0x27a>
				}
				else
					memset(pTaskInfo->pBuf->ctdInfo, 0, 64);
   12b58:	f5 01       	movw	r30, r10
   12b5a:	84 81       	ldd	r24, Z+4	; 0x04
   12b5c:	95 81       	ldd	r25, Z+5	; 0x05
   12b5e:	8a 5e       	subi	r24, 0xEA	; 234
   12b60:	9a 4f       	sbci	r25, 0xFA	; 250
   12b62:	fc 01       	movw	r30, r24
   12b64:	80 e4       	ldi	r24, 0x40	; 64
   12b66:	df 01       	movw	r26, r30
   12b68:	1d 92       	st	X+, r1
   12b6a:	8a 95       	dec	r24
   12b6c:	e9 f7       	brne	.-6      	; 0x12b68 <SB37SI_GetSerNum2+0x274>
			}
		}
	}

	return retval;
}
   12b6e:	87 2d       	mov	r24, r7
   12b70:	29 96       	adiw	r28, 0x09	; 9
   12b72:	0f b6       	in	r0, 0x3f	; 63
   12b74:	f8 94       	cli
   12b76:	de bf       	out	0x3e, r29	; 62
   12b78:	0f be       	out	0x3f, r0	; 63
   12b7a:	cd bf       	out	0x3d, r28	; 61
   12b7c:	cf 91       	pop	r28
   12b7e:	df 91       	pop	r29
   12b80:	1f 91       	pop	r17
   12b82:	0f 91       	pop	r16
   12b84:	ff 90       	pop	r15
   12b86:	ef 90       	pop	r14
   12b88:	df 90       	pop	r13
   12b8a:	cf 90       	pop	r12
   12b8c:	bf 90       	pop	r11
   12b8e:	af 90       	pop	r10
   12b90:	9f 90       	pop	r9
   12b92:	8f 90       	pop	r8
   12b94:	7f 90       	pop	r7
   12b96:	6f 90       	pop	r6
   12b98:	08 95       	ret

00012b9a <SB37SI_TurnOn>:
	return;
}


uint8_t SB37SI_TurnOn(PSEABIRD_37SI_TASK pTaskInfo)
{
   12b9a:	cf 92       	push	r12
   12b9c:	df 92       	push	r13
   12b9e:	ef 92       	push	r14
   12ba0:	ff 92       	push	r15
   12ba2:	0f 93       	push	r16
   12ba4:	1f 93       	push	r17
   12ba6:	df 93       	push	r29
   12ba8:	cf 93       	push	r28
   12baa:	0f 92       	push	r0
   12bac:	0f 92       	push	r0
   12bae:	cd b7       	in	r28, 0x3d	; 61
   12bb0:	de b7       	in	r29, 0x3e	; 62
   12bb2:	8c 01       	movw	r16, r24
	uint8_t retval = FAIL;
	uint8_t retries = 3;
	uint16_t len = 0;
   12bb4:	1a 82       	std	Y+2, r1	; 0x02
   12bb6:	19 82       	std	Y+1, r1	; 0x01

	pTaskInfo->pBuf->sampleCTD = FALSE;
   12bb8:	dc 01       	movw	r26, r24
   12bba:	14 96       	adiw	r26, 0x04	; 4
   12bbc:	ed 91       	ld	r30, X+
   12bbe:	fc 91       	ld	r31, X
   12bc0:	15 97       	sbiw	r26, 0x05	; 5
   12bc2:	ea 5a       	subi	r30, 0xAA	; 170
   12bc4:	fa 4f       	sbci	r31, 0xFA	; 250
   12bc6:	11 92       	st	Z+, r1
	pTaskInfo->pBuf->powerCTD = FALSE;
   12bc8:	10 82       	st	Z, r1

	pTaskInfo->pBuf->reportData.headerReport.repeatCount = 0;
   12bca:	3c 96       	adiw	r30, 0x0c	; 12
   12bcc:	10 82       	st	Z, r1

	EnablePIBModule(pTaskInfo->portNum, TRUE, FALSE);
   12bce:	11 96       	adiw	r26, 0x01	; 1
   12bd0:	8c 91       	ld	r24, X
   12bd2:	6f ef       	ldi	r22, 0xFF	; 255
   12bd4:	40 e0       	ldi	r20, 0x00	; 0
   12bd6:	0e 94 a2 38 	call	0x7144	; 0x7144 <EnablePIBModule>
   12bda:	73 e0       	ldi	r23, 0x03	; 3
   12bdc:	f7 2e       	mov	r15, r23
	while(retries > 0)
	{
		retries--;
		OSTimeDlyHMSM(0,0,1,0);
		OSuartPutCharWait(pTaskInfo->portNum, 0x0D, 10);
		retval = SB37SI_CTD_Rx2(pTaskInfo, cmd37SI_EOL, &len);
   12bde:	6e 01       	movw	r12, r28
   12be0:	08 94       	sec
   12be2:	c1 1c       	adc	r12, r1
   12be4:	d1 1c       	adc	r13, r1
	EnablePIBModule(pTaskInfo->portNum, TRUE, FALSE);

	while(retries > 0)
	{
		retries--;
		OSTimeDlyHMSM(0,0,1,0);
   12be6:	80 e0       	ldi	r24, 0x00	; 0
   12be8:	60 e0       	ldi	r22, 0x00	; 0
   12bea:	41 e0       	ldi	r20, 0x01	; 1
   12bec:	20 e0       	ldi	r18, 0x00	; 0
   12bee:	30 e0       	ldi	r19, 0x00	; 0
   12bf0:	0e 94 2a 2e 	call	0x5c54	; 0x5c54 <OSTimeDlyHMSM>
		OSuartPutCharWait(pTaskInfo->portNum, 0x0D, 10);
   12bf4:	f8 01       	movw	r30, r16
   12bf6:	81 81       	ldd	r24, Z+1	; 0x01
   12bf8:	6d e0       	ldi	r22, 0x0D	; 13
   12bfa:	4a e0       	ldi	r20, 0x0A	; 10
   12bfc:	50 e0       	ldi	r21, 0x00	; 0
   12bfe:	0e 94 f3 31 	call	0x63e6	; 0x63e6 <OSuartPutCharWait>
		retval = SB37SI_CTD_Rx2(pTaskInfo, cmd37SI_EOL, &len);
   12c02:	c8 01       	movw	r24, r16
   12c04:	66 ed       	ldi	r22, 0xD6	; 214
   12c06:	7f e0       	ldi	r23, 0x0F	; 15
   12c08:	a6 01       	movw	r20, r12
   12c0a:	0e 94 ac 90 	call	0x12158	; 0x12158 <SB37SI_CTD_Rx2>
   12c0e:	e8 2e       	mov	r14, r24
		if(retval == SUCCESS)
   12c10:	ff ef       	ldi	r31, 0xFF	; 255
   12c12:	8f 17       	cp	r24, r31
   12c14:	71 f0       	breq	.+28     	; 0x12c32 <SB37SI_TurnOn+0x98>

	EnablePIBModule(pTaskInfo->portNum, TRUE, FALSE);

	while(retries > 0)
	{
		retries--;
   12c16:	fa 94       	dec	r15

	pTaskInfo->pBuf->reportData.headerReport.repeatCount = 0;

	EnablePIBModule(pTaskInfo->portNum, TRUE, FALSE);

	while(retries > 0)
   12c18:	31 f7       	brne	.-52     	; 0x12be6 <SB37SI_TurnOn+0x4c>
		OSTimeDlyHMSM(0,0,0,100);
		pTaskInfo->pBuf->powerCTD = TRUE;
	}

	return retval;
}
   12c1a:	8e 2d       	mov	r24, r14
   12c1c:	0f 90       	pop	r0
   12c1e:	0f 90       	pop	r0
   12c20:	cf 91       	pop	r28
   12c22:	df 91       	pop	r29
   12c24:	1f 91       	pop	r17
   12c26:	0f 91       	pop	r16
   12c28:	ff 90       	pop	r15
   12c2a:	ef 90       	pop	r14
   12c2c:	df 90       	pop	r13
   12c2e:	cf 90       	pop	r12
   12c30:	08 95       	ret
		if(retval == SUCCESS)
			retries = 0;
	}

	if(retval == SUCCESS)
		SB37SI_StopSample(pTaskInfo);
   12c32:	c8 01       	movw	r24, r16
   12c34:	0e 94 86 93 	call	0x1270c	; 0x1270c <SB37SI_StopSample>

	if(retval == SUCCESS)
	{
		OSTimeDlyHMSM(0,0,0,100);
   12c38:	80 e0       	ldi	r24, 0x00	; 0
   12c3a:	60 e0       	ldi	r22, 0x00	; 0
   12c3c:	40 e0       	ldi	r20, 0x00	; 0
   12c3e:	24 e6       	ldi	r18, 0x64	; 100
   12c40:	30 e0       	ldi	r19, 0x00	; 0
   12c42:	0e 94 2a 2e 	call	0x5c54	; 0x5c54 <OSTimeDlyHMSM>
		SB37SI_GetSerNum2(pTaskInfo);
   12c46:	c8 01       	movw	r24, r16
   12c48:	0e 94 7a 94 	call	0x128f4	; 0x128f4 <SB37SI_GetSerNum2>
		OSTimeDlyHMSM(0,0,0,100);
   12c4c:	80 e0       	ldi	r24, 0x00	; 0
   12c4e:	60 e0       	ldi	r22, 0x00	; 0
   12c50:	40 e0       	ldi	r20, 0x00	; 0
   12c52:	24 e6       	ldi	r18, 0x64	; 100
   12c54:	30 e0       	ldi	r19, 0x00	; 0
   12c56:	0e 94 2a 2e 	call	0x5c54	; 0x5c54 <OSTimeDlyHMSM>
		pTaskInfo->pBuf->powerCTD = TRUE;
   12c5a:	d8 01       	movw	r26, r16
   12c5c:	14 96       	adiw	r26, 0x04	; 4
   12c5e:	ed 91       	ld	r30, X+
   12c60:	fc 91       	ld	r31, X
   12c62:	15 97       	sbiw	r26, 0x05	; 5
   12c64:	e9 5a       	subi	r30, 0xA9	; 169
   12c66:	fa 4f       	sbci	r31, 0xFA	; 250
   12c68:	e0 82       	st	Z, r14
   12c6a:	d7 cf       	rjmp	.-82     	; 0x12c1a <SB37SI_TurnOn+0x80>

00012c6c <SB37SI_ParseCommand2>:
	return retval;
}


uint8_t SB37SI_ParseCommand2(PSEABIRD_37SI_TASK pTaskInfo, char command, char* cmdParams)
{
   12c6c:	af 92       	push	r10
   12c6e:	bf 92       	push	r11
   12c70:	cf 92       	push	r12
   12c72:	df 92       	push	r13
   12c74:	ef 92       	push	r14
   12c76:	ff 92       	push	r15
   12c78:	0f 93       	push	r16
   12c7a:	1f 93       	push	r17
   12c7c:	df 93       	push	r29
   12c7e:	cf 93       	push	r28
   12c80:	00 d0       	rcall	.+0      	; 0x12c82 <SB37SI_ParseCommand2+0x16>
   12c82:	0f 92       	push	r0
   12c84:	cd b7       	in	r28, 0x3d	; 61
   12c86:	de b7       	in	r29, 0x3e	; 62
   12c88:	7c 01       	movw	r14, r24
   12c8a:	06 2f       	mov	r16, r22
   12c8c:	5c 83       	std	Y+4, r21	; 0x04
   12c8e:	4b 83       	std	Y+3, r20	; 0x03
	uint8_t paramCount = 0;
	char* result = NULL;
   12c90:	1a 82       	std	Y+2, r1	; 0x02
   12c92:	19 82       	std	Y+1, r1	; 0x01
	uint8_t retval = FAIL;		//Missing or Invalid Parameter
	uint16_t newVal = 0;
	BOOL statusResponse = TRUE;

	memset(pTaskInfo->pBuf->tokenSeparatorList, 0, MAX_TOKEN_SEPARATORS);
   12c94:	dc 01       	movw	r26, r24
   12c96:	14 96       	adiw	r26, 0x04	; 4
   12c98:	8d 91       	ld	r24, X+
   12c9a:	9c 91       	ld	r25, X
   12c9c:	15 97       	sbiw	r26, 0x05	; 5
   12c9e:	83 5a       	subi	r24, 0xA3	; 163
   12ca0:	99 4f       	sbci	r25, 0xF9	; 249
   12ca2:	fc 01       	movw	r30, r24
   12ca4:	84 e1       	ldi	r24, 0x14	; 20
   12ca6:	df 01       	movw	r26, r30
   12ca8:	1d 92       	st	X+, r1
   12caa:	8a 95       	dec	r24
   12cac:	e9 f7       	brne	.-6      	; 0x12ca8 <SB37SI_ParseCommand2+0x3c>
	strcat_P(pTaskInfo->pBuf->tokenSeparatorList, tokenListConsole);
   12cae:	f7 01       	movw	r30, r14
   12cb0:	84 81       	ldd	r24, Z+4	; 0x04
   12cb2:	95 81       	ldd	r25, Z+5	; 0x05
   12cb4:	83 5a       	subi	r24, 0xA3	; 163
   12cb6:	99 4f       	sbci	r25, 0xF9	; 249
   12cb8:	68 e3       	ldi	r22, 0x38	; 56
   12cba:	72 e0       	ldi	r23, 0x02	; 2
   12cbc:	0e 94 b4 ef 	call	0x1df68	; 0x1df68 <strcat_P>

	switch(command)
   12cc0:	60 2f       	mov	r22, r16
   12cc2:	70 e0       	ldi	r23, 0x00	; 0
   12cc4:	fb 01       	movw	r30, r22
   12cc6:	e3 54       	subi	r30, 0x43	; 67
   12cc8:	f0 40       	sbci	r31, 0x00	; 0
   12cca:	e8 33       	cpi	r30, 0x38	; 56
   12ccc:	f1 05       	cpc	r31, r1
   12cce:	08 f0       	brcs	.+2      	; 0x12cd2 <SB37SI_ParseCommand2+0x66>
   12cd0:	ec c1       	rjmp	.+984    	; 0x130aa <SB37SI_ParseCommand2+0x43e>
   12cd2:	e4 55       	subi	r30, 0x54	; 84
   12cd4:	ff 4f       	sbci	r31, 0xFF	; 255
   12cd6:	ee 0f       	add	r30, r30
   12cd8:	ff 1f       	adc	r31, r31
   12cda:	05 90       	lpm	r0, Z+
   12cdc:	f4 91       	lpm	r31, Z+
   12cde:	e0 2d       	mov	r30, r0
   12ce0:	19 94       	eijmp
	{
	case 'o':
	case 'O':
		//Power On
		retval = SB37SI_TurnOn(pTaskInfo);
   12ce2:	c7 01       	movw	r24, r14
   12ce4:	0e 94 cd 95 	call	0x12b9a	; 0x12b9a <SB37SI_TurnOn>
   12ce8:	e0 c1       	rjmp	.+960    	; 0x130aa <SB37SI_ParseCommand2+0x43e>
		break;
	case 'f':
	case 'F':
		//Power Off
		retval = SB37SI_TurnOff(pTaskInfo);
   12cea:	c7 01       	movw	r24, r14
   12cec:	0e 94 2f 8e 	call	0x11c5e	; 0x11c5e <SB37SI_TurnOff>
   12cf0:	95 c0       	rjmp	.+298    	; 0x12e1c <SB37SI_ParseCommand2+0x1b0>
		pTaskInfo->pBuf->sleeping = FALSE;
		break;
	case 'r':
	case 'R':
		//Start Sampling
		if(pTaskInfo->pBuf->powerCTD == FALSE)
   12cf2:	d7 01       	movw	r26, r14
   12cf4:	14 96       	adiw	r26, 0x04	; 4
   12cf6:	ed 91       	ld	r30, X+
   12cf8:	fc 91       	ld	r31, X
   12cfa:	15 97       	sbiw	r26, 0x05	; 5
   12cfc:	e9 5a       	subi	r30, 0xA9	; 169
   12cfe:	fa 4f       	sbci	r31, 0xFA	; 250
   12d00:	80 81       	ld	r24, Z
   12d02:	88 23       	and	r24, r24
   12d04:	19 f4       	brne	.+6      	; 0x12d0c <SB37SI_ParseCommand2+0xa0>
			retval = SB37SI_TurnOn(pTaskInfo);
   12d06:	c7 01       	movw	r24, r14
   12d08:	0e 94 cd 95 	call	0x12b9a	; 0x12b9a <SB37SI_TurnOn>

		if(pTaskInfo->pBuf->sampleCTD == TRUE)
   12d0c:	d7 01       	movw	r26, r14
   12d0e:	14 96       	adiw	r26, 0x04	; 4
   12d10:	ed 91       	ld	r30, X+
   12d12:	fc 91       	ld	r31, X
   12d14:	15 97       	sbiw	r26, 0x05	; 5
   12d16:	ea 5a       	subi	r30, 0xAA	; 170
   12d18:	fa 4f       	sbci	r31, 0xFA	; 250
   12d1a:	80 81       	ld	r24, Z
   12d1c:	8f 3f       	cpi	r24, 0xFF	; 255
   12d1e:	51 f4       	brne	.+20     	; 0x12d34 <SB37SI_ParseCommand2+0xc8>
		{
			retval = SB37SI_StopSample(pTaskInfo);
   12d20:	c7 01       	movw	r24, r14
   12d22:	0e 94 86 93 	call	0x1270c	; 0x1270c <SB37SI_StopSample>
			OSTimeDlyHMSM(0,0,1,0);
   12d26:	80 e0       	ldi	r24, 0x00	; 0
   12d28:	60 e0       	ldi	r22, 0x00	; 0
   12d2a:	41 e0       	ldi	r20, 0x01	; 1
   12d2c:	20 e0       	ldi	r18, 0x00	; 0
   12d2e:	30 e0       	ldi	r19, 0x00	; 0
   12d30:	0e 94 2a 2e 	call	0x5c54	; 0x5c54 <OSTimeDlyHMSM>
		}
		
		if(pTaskInfo->pBuf->gotConfig == FALSE)
   12d34:	d7 01       	movw	r26, r14
   12d36:	14 96       	adiw	r26, 0x04	; 4
   12d38:	ed 91       	ld	r30, X+
   12d3a:	fc 91       	ld	r31, X
   12d3c:	15 97       	sbiw	r26, 0x05	; 5
   12d3e:	e5 5a       	subi	r30, 0xA5	; 165
   12d40:	fa 4f       	sbci	r31, 0xFA	; 250
   12d42:	80 81       	ld	r24, Z
   12d44:	88 23       	and	r24, r24
   12d46:	19 f4       	brne	.+6      	; 0x12d4e <SB37SI_ParseCommand2+0xe2>
			SB37SI_GetSerNum2(pTaskInfo);
   12d48:	c7 01       	movw	r24, r14
   12d4a:	0e 94 7a 94 	call	0x128f4	; 0x128f4 <SB37SI_GetSerNum2>

		memset(pTaskInfo->pBuf->tokenSeparatorList, 0, MAX_TOKEN_SEPARATORS);
   12d4e:	f7 01       	movw	r30, r14
   12d50:	84 81       	ldd	r24, Z+4	; 0x04
   12d52:	95 81       	ldd	r25, Z+5	; 0x05
   12d54:	83 5a       	subi	r24, 0xA3	; 163
   12d56:	99 4f       	sbci	r25, 0xF9	; 249
   12d58:	fc 01       	movw	r30, r24
   12d5a:	84 e1       	ldi	r24, 0x14	; 20
   12d5c:	df 01       	movw	r26, r30
   12d5e:	1d 92       	st	X+, r1
   12d60:	8a 95       	dec	r24
   12d62:	e9 f7       	brne	.-6      	; 0x12d5e <SB37SI_ParseCommand2+0xf2>
		strcat_P(pTaskInfo->pBuf->tokenSeparatorList, tokenListConsole);
   12d64:	f7 01       	movw	r30, r14
   12d66:	84 81       	ldd	r24, Z+4	; 0x04
   12d68:	95 81       	ldd	r25, Z+5	; 0x05
   12d6a:	83 5a       	subi	r24, 0xA3	; 163
   12d6c:	99 4f       	sbci	r25, 0xF9	; 249
   12d6e:	68 e3       	ldi	r22, 0x38	; 56
   12d70:	72 e0       	ldi	r23, 0x02	; 2
   12d72:	0e 94 b4 ef 	call	0x1df68	; 0x1df68 <strcat_P>

		result = strtok_r(cmdParams, pTaskInfo->pBuf->tokenSeparatorList, &cmdParams);
   12d76:	d7 01       	movw	r26, r14
   12d78:	14 96       	adiw	r26, 0x04	; 4
   12d7a:	6d 91       	ld	r22, X+
   12d7c:	7c 91       	ld	r23, X
   12d7e:	15 97       	sbiw	r26, 0x05	; 5
   12d80:	63 5a       	subi	r22, 0xA3	; 163
   12d82:	79 4f       	sbci	r23, 0xF9	; 249
   12d84:	8e 01       	movw	r16, r28
   12d86:	0d 5f       	subi	r16, 0xFD	; 253
   12d88:	1f 4f       	sbci	r17, 0xFF	; 255
   12d8a:	8b 81       	ldd	r24, Y+3	; 0x03
   12d8c:	9c 81       	ldd	r25, Y+4	; 0x04
   12d8e:	a8 01       	movw	r20, r16
   12d90:	0e 94 a0 f0 	call	0x1e140	; 0x1e140 <strtok_r>
   12d94:	9a 83       	std	Y+2, r25	; 0x02
   12d96:	89 83       	std	Y+1, r24	; 0x01
   12d98:	dd 24       	eor	r13, r13
		while((result != NULL) && (paramCount < 3))
		{
			newVal = (uint16_t)(strtol(result, &result, 0));
   12d9a:	5e 01       	movw	r10, r28
   12d9c:	08 94       	sec
   12d9e:	a1 1c       	adc	r10, r1
   12da0:	b1 1c       	adc	r11, r1
			case PARAM_DEST:
				SB37SI_SetPacketDest(pTaskInfo, newVal);
				break;
			}
			paramCount++;
			result = strtok_r(NULL, pTaskInfo->pBuf->tokenSeparatorList, &cmdParams);
   12da2:	c0 2e       	mov	r12, r16
   12da4:	01 2f       	mov	r16, r17
   12da6:	29 c0       	rjmp	.+82     	; 0x12dfa <SB37SI_ParseCommand2+0x18e>
		strcat_P(pTaskInfo->pBuf->tokenSeparatorList, tokenListConsole);

		result = strtok_r(cmdParams, pTaskInfo->pBuf->tokenSeparatorList, &cmdParams);
		while((result != NULL) && (paramCount < 3))
		{
			newVal = (uint16_t)(strtol(result, &result, 0));
   12da8:	b5 01       	movw	r22, r10
   12daa:	40 e0       	ldi	r20, 0x00	; 0
   12dac:	50 e0       	ldi	r21, 0x00	; 0
   12dae:	0e 94 2a ee 	call	0x1dc54	; 0x1dc54 <strtol>
			switch(paramCount)
   12db2:	b1 e0       	ldi	r27, 0x01	; 1
   12db4:	db 16       	cp	r13, r27
   12db6:	51 f0       	breq	.+20     	; 0x12dcc <SB37SI_ParseCommand2+0x160>
   12db8:	db 16       	cp	r13, r27
   12dba:	20 f0       	brcs	.+8      	; 0x12dc4 <SB37SI_ParseCommand2+0x158>
   12dbc:	e2 e0       	ldi	r30, 0x02	; 2
   12dbe:	de 16       	cp	r13, r30
   12dc0:	61 f4       	brne	.+24     	; 0x12dda <SB37SI_ParseCommand2+0x16e>
   12dc2:	08 c0       	rjmp	.+16     	; 0x12dd4 <SB37SI_ParseCommand2+0x168>
			{
			case PARAM_PERIOD:
				SB37SI_SetPeriod(pTaskInfo, newVal);
   12dc4:	c7 01       	movw	r24, r14
   12dc6:	0e 94 00 93 	call	0x12600	; 0x12600 <SB37SI_SetPeriod>
   12dca:	07 c0       	rjmp	.+14     	; 0x12dda <SB37SI_ParseCommand2+0x16e>
				break;
			case PARAM_SIZE:
				SB37SI_SetPacketSize(pTaskInfo, newVal);
   12dcc:	c7 01       	movw	r24, r14
   12dce:	0e 94 ea 8c 	call	0x119d4	; 0x119d4 <SB37SI_SetPacketSize>
   12dd2:	03 c0       	rjmp	.+6      	; 0x12dda <SB37SI_ParseCommand2+0x16e>
				break;
			case PARAM_DEST:
				SB37SI_SetPacketDest(pTaskInfo, newVal);
   12dd4:	c7 01       	movw	r24, r14
   12dd6:	0e 94 bf 8c 	call	0x1197e	; 0x1197e <SB37SI_SetPacketDest>
				break;
			}
			paramCount++;
   12dda:	d3 94       	inc	r13
			result = strtok_r(NULL, pTaskInfo->pBuf->tokenSeparatorList, &cmdParams);
   12ddc:	d7 01       	movw	r26, r14
   12dde:	14 96       	adiw	r26, 0x04	; 4
   12de0:	6d 91       	ld	r22, X+
   12de2:	7c 91       	ld	r23, X
   12de4:	15 97       	sbiw	r26, 0x05	; 5
   12de6:	63 5a       	subi	r22, 0xA3	; 163
   12de8:	79 4f       	sbci	r23, 0xF9	; 249
   12dea:	80 e0       	ldi	r24, 0x00	; 0
   12dec:	90 e0       	ldi	r25, 0x00	; 0
   12dee:	4c 2d       	mov	r20, r12
   12df0:	50 2f       	mov	r21, r16
   12df2:	0e 94 a0 f0 	call	0x1e140	; 0x1e140 <strtok_r>
   12df6:	9a 83       	std	Y+2, r25	; 0x02
   12df8:	89 83       	std	Y+1, r24	; 0x01

		memset(pTaskInfo->pBuf->tokenSeparatorList, 0, MAX_TOKEN_SEPARATORS);
		strcat_P(pTaskInfo->pBuf->tokenSeparatorList, tokenListConsole);

		result = strtok_r(cmdParams, pTaskInfo->pBuf->tokenSeparatorList, &cmdParams);
		while((result != NULL) && (paramCount < 3))
   12dfa:	89 81       	ldd	r24, Y+1	; 0x01
   12dfc:	9a 81       	ldd	r25, Y+2	; 0x02
   12dfe:	00 97       	sbiw	r24, 0x00	; 0
   12e00:	19 f0       	breq	.+6      	; 0x12e08 <SB37SI_ParseCommand2+0x19c>
   12e02:	b3 e0       	ldi	r27, 0x03	; 3
   12e04:	db 16       	cp	r13, r27
   12e06:	81 f6       	brne	.-96     	; 0x12da8 <SB37SI_ParseCommand2+0x13c>
				break;
			}
			paramCount++;
			result = strtok_r(NULL, pTaskInfo->pBuf->tokenSeparatorList, &cmdParams);
		}
		retval = SB37SI_SetTime(pTaskInfo);
   12e08:	c7 01       	movw	r24, r14
   12e0a:	0e 94 35 91 	call	0x1226a	; 0x1226a <SB37SI_SetTime>
		retval = SB37SI_StartSample(pTaskInfo);
   12e0e:	c7 01       	movw	r24, r14
   12e10:	0e 94 23 94 	call	0x12846	; 0x12846 <SB37SI_StartSample>
   12e14:	4a c1       	rjmp	.+660    	; 0x130aa <SB37SI_ParseCommand2+0x43e>
		break;
	case 'x':
	case 'X':
		//Stop Sampling
		retval = SB37SI_StopSample(pTaskInfo);
   12e16:	c7 01       	movw	r24, r14
   12e18:	0e 94 86 93 	call	0x1270c	; 0x1270c <SB37SI_StopSample>
		pTaskInfo->pBuf->sleeping = FALSE;
   12e1c:	d7 01       	movw	r26, r14
   12e1e:	14 96       	adiw	r26, 0x04	; 4
   12e20:	ed 91       	ld	r30, X+
   12e22:	fc 91       	ld	r31, X
   12e24:	15 97       	sbiw	r26, 0x05	; 5
   12e26:	e6 50       	subi	r30, 0x06	; 6
   12e28:	f8 4f       	sbci	r31, 0xF8	; 248
   12e2a:	10 82       	st	Z, r1
   12e2c:	3e c1       	rjmp	.+636    	; 0x130aa <SB37SI_ParseCommand2+0x43e>
		break;
	case 'p':
	case 'P':
		//Set default sample interval
		if(pTaskInfo->pBuf->powerCTD == FALSE)
   12e2e:	d7 01       	movw	r26, r14
   12e30:	14 96       	adiw	r26, 0x04	; 4
   12e32:	ed 91       	ld	r30, X+
   12e34:	fc 91       	ld	r31, X
   12e36:	15 97       	sbiw	r26, 0x05	; 5
   12e38:	e9 5a       	subi	r30, 0xA9	; 169
   12e3a:	fa 4f       	sbci	r31, 0xFA	; 250
   12e3c:	80 81       	ld	r24, Z
   12e3e:	88 23       	and	r24, r24
   12e40:	19 f4       	brne	.+6      	; 0x12e48 <SB37SI_ParseCommand2+0x1dc>
			retval = SB37SI_TurnOn(pTaskInfo);
   12e42:	c7 01       	movw	r24, r14
   12e44:	0e 94 cd 95 	call	0x12b9a	; 0x12b9a <SB37SI_TurnOn>

		memset(pTaskInfo->pBuf->tokenSeparatorList, 0, MAX_TOKEN_SEPARATORS);
   12e48:	f7 01       	movw	r30, r14
   12e4a:	84 81       	ldd	r24, Z+4	; 0x04
   12e4c:	95 81       	ldd	r25, Z+5	; 0x05
   12e4e:	83 5a       	subi	r24, 0xA3	; 163
   12e50:	99 4f       	sbci	r25, 0xF9	; 249
   12e52:	fc 01       	movw	r30, r24
   12e54:	84 e1       	ldi	r24, 0x14	; 20
   12e56:	df 01       	movw	r26, r30
   12e58:	1d 92       	st	X+, r1
   12e5a:	8a 95       	dec	r24
   12e5c:	e9 f7       	brne	.-6      	; 0x12e58 <SB37SI_ParseCommand2+0x1ec>
		strcat_P(pTaskInfo->pBuf->tokenSeparatorList, tokenListConsole);
   12e5e:	f7 01       	movw	r30, r14
   12e60:	84 81       	ldd	r24, Z+4	; 0x04
   12e62:	95 81       	ldd	r25, Z+5	; 0x05
   12e64:	83 5a       	subi	r24, 0xA3	; 163
   12e66:	99 4f       	sbci	r25, 0xF9	; 249
   12e68:	68 e3       	ldi	r22, 0x38	; 56
   12e6a:	72 e0       	ldi	r23, 0x02	; 2
   12e6c:	0e 94 b4 ef 	call	0x1df68	; 0x1df68 <strcat_P>

		result = strtok_r(result, pTaskInfo->pBuf->tokenSeparatorList, &cmdParams);
   12e70:	d7 01       	movw	r26, r14
   12e72:	14 96       	adiw	r26, 0x04	; 4
   12e74:	6d 91       	ld	r22, X+
   12e76:	7c 91       	ld	r23, X
   12e78:	15 97       	sbiw	r26, 0x05	; 5
   12e7a:	63 5a       	subi	r22, 0xA3	; 163
   12e7c:	79 4f       	sbci	r23, 0xF9	; 249
   12e7e:	89 81       	ldd	r24, Y+1	; 0x01
   12e80:	9a 81       	ldd	r25, Y+2	; 0x02
   12e82:	ae 01       	movw	r20, r28
   12e84:	4d 5f       	subi	r20, 0xFD	; 253
   12e86:	5f 4f       	sbci	r21, 0xFF	; 255
   12e88:	0e 94 a0 f0 	call	0x1e140	; 0x1e140 <strtok_r>
   12e8c:	9a 83       	std	Y+2, r25	; 0x02
   12e8e:	89 83       	std	Y+1, r24	; 0x01
		if(result != NULL)
   12e90:	00 97       	sbiw	r24, 0x00	; 0
   12e92:	09 f4       	brne	.+2      	; 0x12e96 <SB37SI_ParseCommand2+0x22a>
   12e94:	0a c1       	rjmp	.+532    	; 0x130aa <SB37SI_ParseCommand2+0x43e>
		{
			newVal = (uint16_t)(strtol(result, &result, 0));
   12e96:	be 01       	movw	r22, r28
   12e98:	6f 5f       	subi	r22, 0xFF	; 255
   12e9a:	7f 4f       	sbci	r23, 0xFF	; 255
   12e9c:	40 e0       	ldi	r20, 0x00	; 0
   12e9e:	50 e0       	ldi	r21, 0x00	; 0
   12ea0:	0e 94 2a ee 	call	0x1dc54	; 0x1dc54 <strtol>
   12ea4:	9b 01       	movw	r18, r22
   12ea6:	ac 01       	movw	r20, r24
			retval = SB37SI_SetPeriod(pTaskInfo, newVal);
   12ea8:	c7 01       	movw	r24, r14
   12eaa:	b9 01       	movw	r22, r18
   12eac:	0e 94 00 93 	call	0x12600	; 0x12600 <SB37SI_SetPeriod>
   12eb0:	fc c0       	rjmp	.+504    	; 0x130aa <SB37SI_ParseCommand2+0x43e>
		}
		break;
	case 'z':
	case 'Z':
		//set default sample block size
		memset(pTaskInfo->pBuf->tokenSeparatorList, 0, MAX_TOKEN_SEPARATORS);
   12eb2:	f7 01       	movw	r30, r14
   12eb4:	84 81       	ldd	r24, Z+4	; 0x04
   12eb6:	95 81       	ldd	r25, Z+5	; 0x05
   12eb8:	83 5a       	subi	r24, 0xA3	; 163
   12eba:	99 4f       	sbci	r25, 0xF9	; 249
   12ebc:	fc 01       	movw	r30, r24
   12ebe:	84 e1       	ldi	r24, 0x14	; 20
   12ec0:	df 01       	movw	r26, r30
   12ec2:	1d 92       	st	X+, r1
   12ec4:	8a 95       	dec	r24
   12ec6:	e9 f7       	brne	.-6      	; 0x12ec2 <SB37SI_ParseCommand2+0x256>
		strcat_P(pTaskInfo->pBuf->tokenSeparatorList, tokenListConsole);
   12ec8:	f7 01       	movw	r30, r14
   12eca:	84 81       	ldd	r24, Z+4	; 0x04
   12ecc:	95 81       	ldd	r25, Z+5	; 0x05
   12ece:	83 5a       	subi	r24, 0xA3	; 163
   12ed0:	99 4f       	sbci	r25, 0xF9	; 249
   12ed2:	68 e3       	ldi	r22, 0x38	; 56
   12ed4:	72 e0       	ldi	r23, 0x02	; 2
   12ed6:	0e 94 b4 ef 	call	0x1df68	; 0x1df68 <strcat_P>

		result = strtok_r(result, pTaskInfo->pBuf->tokenSeparatorList, &cmdParams);
   12eda:	d7 01       	movw	r26, r14
   12edc:	14 96       	adiw	r26, 0x04	; 4
   12ede:	6d 91       	ld	r22, X+
   12ee0:	7c 91       	ld	r23, X
   12ee2:	15 97       	sbiw	r26, 0x05	; 5
   12ee4:	63 5a       	subi	r22, 0xA3	; 163
   12ee6:	79 4f       	sbci	r23, 0xF9	; 249
   12ee8:	89 81       	ldd	r24, Y+1	; 0x01
   12eea:	9a 81       	ldd	r25, Y+2	; 0x02
   12eec:	ae 01       	movw	r20, r28
   12eee:	4d 5f       	subi	r20, 0xFD	; 253
   12ef0:	5f 4f       	sbci	r21, 0xFF	; 255
   12ef2:	0e 94 a0 f0 	call	0x1e140	; 0x1e140 <strtok_r>
   12ef6:	9a 83       	std	Y+2, r25	; 0x02
   12ef8:	89 83       	std	Y+1, r24	; 0x01
		if(result != NULL)
   12efa:	00 97       	sbiw	r24, 0x00	; 0
   12efc:	09 f4       	brne	.+2      	; 0x12f00 <SB37SI_ParseCommand2+0x294>
   12efe:	d5 c0       	rjmp	.+426    	; 0x130aa <SB37SI_ParseCommand2+0x43e>
		{
			newVal = (uint16_t)(strtol(result, &result, 0));
   12f00:	be 01       	movw	r22, r28
   12f02:	6f 5f       	subi	r22, 0xFF	; 255
   12f04:	7f 4f       	sbci	r23, 0xFF	; 255
   12f06:	40 e0       	ldi	r20, 0x00	; 0
   12f08:	50 e0       	ldi	r21, 0x00	; 0
   12f0a:	0e 94 2a ee 	call	0x1dc54	; 0x1dc54 <strtol>
			retval = SB37SI_SetPacketSize(pTaskInfo, newVal);
   12f0e:	c7 01       	movw	r24, r14
   12f10:	0e 94 ea 8c 	call	0x119d4	; 0x119d4 <SB37SI_SetPacketSize>
   12f14:	ca c0       	rjmp	.+404    	; 0x130aa <SB37SI_ParseCommand2+0x43e>
		}
		break;
	case 'd':
	case 'D':
		//set default destination
		memset(pTaskInfo->pBuf->tokenSeparatorList, 0, MAX_TOKEN_SEPARATORS);
   12f16:	f7 01       	movw	r30, r14
   12f18:	84 81       	ldd	r24, Z+4	; 0x04
   12f1a:	95 81       	ldd	r25, Z+5	; 0x05
   12f1c:	83 5a       	subi	r24, 0xA3	; 163
   12f1e:	99 4f       	sbci	r25, 0xF9	; 249
   12f20:	fc 01       	movw	r30, r24
   12f22:	84 e1       	ldi	r24, 0x14	; 20
   12f24:	df 01       	movw	r26, r30
   12f26:	1d 92       	st	X+, r1
   12f28:	8a 95       	dec	r24
   12f2a:	e9 f7       	brne	.-6      	; 0x12f26 <SB37SI_ParseCommand2+0x2ba>
		strcat_P(pTaskInfo->pBuf->tokenSeparatorList, tokenListConsole);
   12f2c:	f7 01       	movw	r30, r14
   12f2e:	84 81       	ldd	r24, Z+4	; 0x04
   12f30:	95 81       	ldd	r25, Z+5	; 0x05
   12f32:	83 5a       	subi	r24, 0xA3	; 163
   12f34:	99 4f       	sbci	r25, 0xF9	; 249
   12f36:	68 e3       	ldi	r22, 0x38	; 56
   12f38:	72 e0       	ldi	r23, 0x02	; 2
   12f3a:	0e 94 b4 ef 	call	0x1df68	; 0x1df68 <strcat_P>

		result = strtok_r(result, pTaskInfo->pBuf->tokenSeparatorList, &cmdParams);
   12f3e:	d7 01       	movw	r26, r14
   12f40:	14 96       	adiw	r26, 0x04	; 4
   12f42:	6d 91       	ld	r22, X+
   12f44:	7c 91       	ld	r23, X
   12f46:	15 97       	sbiw	r26, 0x05	; 5
   12f48:	63 5a       	subi	r22, 0xA3	; 163
   12f4a:	79 4f       	sbci	r23, 0xF9	; 249
   12f4c:	89 81       	ldd	r24, Y+1	; 0x01
   12f4e:	9a 81       	ldd	r25, Y+2	; 0x02
   12f50:	ae 01       	movw	r20, r28
   12f52:	4d 5f       	subi	r20, 0xFD	; 253
   12f54:	5f 4f       	sbci	r21, 0xFF	; 255
   12f56:	0e 94 a0 f0 	call	0x1e140	; 0x1e140 <strtok_r>
   12f5a:	9a 83       	std	Y+2, r25	; 0x02
   12f5c:	89 83       	std	Y+1, r24	; 0x01
		if(result != NULL)
   12f5e:	00 97       	sbiw	r24, 0x00	; 0
   12f60:	09 f4       	brne	.+2      	; 0x12f64 <SB37SI_ParseCommand2+0x2f8>
   12f62:	a3 c0       	rjmp	.+326    	; 0x130aa <SB37SI_ParseCommand2+0x43e>
		{
			newVal = (uint16_t)(strtol(result, &result, 0));
   12f64:	be 01       	movw	r22, r28
   12f66:	6f 5f       	subi	r22, 0xFF	; 255
   12f68:	7f 4f       	sbci	r23, 0xFF	; 255
   12f6a:	40 e0       	ldi	r20, 0x00	; 0
   12f6c:	50 e0       	ldi	r21, 0x00	; 0
   12f6e:	0e 94 2a ee 	call	0x1dc54	; 0x1dc54 <strtol>
   12f72:	9b 01       	movw	r18, r22
   12f74:	ac 01       	movw	r20, r24
			retval = SB37SI_SetPacketDest(pTaskInfo, newVal);
   12f76:	c7 01       	movw	r24, r14
   12f78:	b9 01       	movw	r22, r18
   12f7a:	0e 94 bf 8c 	call	0x1197e	; 0x1197e <SB37SI_SetPacketDest>
   12f7e:	95 c0       	rjmp	.+298    	; 0x130aa <SB37SI_ParseCommand2+0x43e>
		}
		break;
	case 'i':
	case 'I':
		if(pTaskInfo->pBuf->powerCTD == FALSE)
   12f80:	d7 01       	movw	r26, r14
   12f82:	14 96       	adiw	r26, 0x04	; 4
   12f84:	ed 91       	ld	r30, X+
   12f86:	fc 91       	ld	r31, X
   12f88:	15 97       	sbiw	r26, 0x05	; 5
   12f8a:	e9 5a       	subi	r30, 0xA9	; 169
   12f8c:	fa 4f       	sbci	r31, 0xFA	; 250
   12f8e:	80 81       	ld	r24, Z
   12f90:	88 23       	and	r24, r24
   12f92:	19 f4       	brne	.+6      	; 0x12f9a <SB37SI_ParseCommand2+0x32e>
			retval = SB37SI_TurnOn(pTaskInfo);
   12f94:	c7 01       	movw	r24, r14
   12f96:	0e 94 cd 95 	call	0x12b9a	; 0x12b9a <SB37SI_TurnOn>

		//Return Serial Number and Version information
		retval = SB37SI_Id(pTaskInfo);
   12f9a:	c7 01       	movw	r24, r14
   12f9c:	0e 94 8a 8c 	call	0x11914	; 0x11914 <SB37SI_Id>
   12fa0:	08 2f       	mov	r16, r24
		statusResponse = FALSE;
		pTaskInfo->pBuf->responseInfo.status = CONSOLE_RESPONSE_OK;
   12fa2:	d7 01       	movw	r26, r14
   12fa4:	14 96       	adiw	r26, 0x04	; 4
   12fa6:	ed 91       	ld	r30, X+
   12fa8:	fc 91       	ld	r31, X
   12faa:	15 97       	sbiw	r26, 0x05	; 5
   12fac:	ea 5a       	subi	r30, 0xAA	; 170
   12fae:	f9 4f       	sbci	r31, 0xF9	; 249
   12fb0:	81 e0       	ldi	r24, 0x01	; 1
   12fb2:	75 c0       	rjmp	.+234    	; 0x1309e <SB37SI_ParseCommand2+0x432>
	case 'S':
		//Return CTD operating Status -- don't need to do anything here
		break;
	case 'y':
	case 'Y':
		result = strtok_r(result, pTaskInfo->pBuf->tokenSeparatorList, &cmdParams);
   12fb4:	f7 01       	movw	r30, r14
   12fb6:	64 81       	ldd	r22, Z+4	; 0x04
   12fb8:	75 81       	ldd	r23, Z+5	; 0x05
   12fba:	63 5a       	subi	r22, 0xA3	; 163
   12fbc:	79 4f       	sbci	r23, 0xF9	; 249
   12fbe:	89 81       	ldd	r24, Y+1	; 0x01
   12fc0:	9a 81       	ldd	r25, Y+2	; 0x02
   12fc2:	ae 01       	movw	r20, r28
   12fc4:	4d 5f       	subi	r20, 0xFD	; 253
   12fc6:	5f 4f       	sbci	r21, 0xFF	; 255
   12fc8:	0e 94 a0 f0 	call	0x1e140	; 0x1e140 <strtok_r>
   12fcc:	9a 83       	std	Y+2, r25	; 0x02
   12fce:	89 83       	std	Y+1, r24	; 0x01
		pTaskInfo->pBuf->offTime = (uint16_t)(strtol(result, &result, 0));
   12fd0:	d7 01       	movw	r26, r14
   12fd2:	14 96       	adiw	r26, 0x04	; 4
   12fd4:	0d 91       	ld	r16, X+
   12fd6:	1c 91       	ld	r17, X
   12fd8:	15 97       	sbiw	r26, 0x05	; 5
   12fda:	be 01       	movw	r22, r28
   12fdc:	6f 5f       	subi	r22, 0xFF	; 255
   12fde:	7f 4f       	sbci	r23, 0xFF	; 255
   12fe0:	40 e0       	ldi	r20, 0x00	; 0
   12fe2:	50 e0       	ldi	r21, 0x00	; 0
   12fe4:	0e 94 2a ee 	call	0x1dc54	; 0x1dc54 <strtol>
   12fe8:	0c 50       	subi	r16, 0x0C	; 12
   12fea:	18 4f       	sbci	r17, 0xF8	; 248
   12fec:	f8 01       	movw	r30, r16
   12fee:	71 83       	std	Z+1, r23	; 0x01
   12ff0:	60 83       	st	Z, r22
   12ff2:	5b c0       	rjmp	.+182    	; 0x130aa <SB37SI_ParseCommand2+0x43e>
		//pTaskInfo->pBuf->turnBackOnTime = 0;
		break;
	case 'c':
	case 'C':
		//CTD Pass Thru Command
		if(pTaskInfo->pBuf->powerCTD == FALSE)
   12ff4:	d7 01       	movw	r26, r14
   12ff6:	14 96       	adiw	r26, 0x04	; 4
   12ff8:	ed 91       	ld	r30, X+
   12ffa:	fc 91       	ld	r31, X
   12ffc:	15 97       	sbiw	r26, 0x05	; 5
   12ffe:	e9 5a       	subi	r30, 0xA9	; 169
   13000:	fa 4f       	sbci	r31, 0xFA	; 250
   13002:	80 81       	ld	r24, Z
   13004:	88 23       	and	r24, r24
   13006:	11 f0       	breq	.+4      	; 0x1300c <SB37SI_ParseCommand2+0x3a0>
   13008:	00 e0       	ldi	r16, 0x00	; 0
   1300a:	0b c0       	rjmp	.+22     	; 0x13022 <SB37SI_ParseCommand2+0x3b6>
		{
			retval = SB37SI_TurnOn(pTaskInfo);
   1300c:	c7 01       	movw	r24, r14
   1300e:	0e 94 cd 95 	call	0x12b9a	; 0x12b9a <SB37SI_TurnOn>
   13012:	08 2f       	mov	r16, r24
			OSTimeDlyHMSM(0,0,2,0);
   13014:	80 e0       	ldi	r24, 0x00	; 0
   13016:	60 e0       	ldi	r22, 0x00	; 0
   13018:	42 e0       	ldi	r20, 0x02	; 2
   1301a:	20 e0       	ldi	r18, 0x00	; 0
   1301c:	30 e0       	ldi	r19, 0x00	; 0
   1301e:	0e 94 2a 2e 	call	0x5c54	; 0x5c54 <OSTimeDlyHMSM>
		}

		if(pTaskInfo->pBuf->sampleCTD == FALSE)
   13022:	d7 01       	movw	r26, r14
   13024:	14 96       	adiw	r26, 0x04	; 4
   13026:	ed 91       	ld	r30, X+
   13028:	fc 91       	ld	r31, X
   1302a:	15 97       	sbiw	r26, 0x05	; 5
   1302c:	ea 5a       	subi	r30, 0xAA	; 170
   1302e:	fa 4f       	sbci	r31, 0xFA	; 250
   13030:	80 81       	ld	r24, Z
   13032:	e6 55       	subi	r30, 0x56	; 86
   13034:	f5 40       	sbci	r31, 0x05	; 5
   13036:	88 23       	and	r24, r24
   13038:	a1 f5       	brne	.+104    	; 0x130a2 <SB37SI_ParseCommand2+0x436>
		{
			memset(pTaskInfo->pBuf->tokenSeparatorList, 0, MAX_TOKEN_SEPARATORS);
   1303a:	cf 01       	movw	r24, r30
   1303c:	83 5a       	subi	r24, 0xA3	; 163
   1303e:	99 4f       	sbci	r25, 0xF9	; 249
   13040:	fc 01       	movw	r30, r24
   13042:	84 e1       	ldi	r24, 0x14	; 20
   13044:	df 01       	movw	r26, r30
   13046:	1d 92       	st	X+, r1
   13048:	8a 95       	dec	r24
   1304a:	e9 f7       	brne	.-6      	; 0x13046 <SB37SI_ParseCommand2+0x3da>
			strcat_P(pTaskInfo->pBuf->tokenSeparatorList, tokenListConsole);
   1304c:	f7 01       	movw	r30, r14
   1304e:	84 81       	ldd	r24, Z+4	; 0x04
   13050:	95 81       	ldd	r25, Z+5	; 0x05
   13052:	83 5a       	subi	r24, 0xA3	; 163
   13054:	99 4f       	sbci	r25, 0xF9	; 249
   13056:	68 e3       	ldi	r22, 0x38	; 56
   13058:	72 e0       	ldi	r23, 0x02	; 2
   1305a:	0e 94 b4 ef 	call	0x1df68	; 0x1df68 <strcat_P>

			result = strtok_r(cmdParams, pTaskInfo->pBuf->tokenSeparatorList, &cmdParams);
   1305e:	d7 01       	movw	r26, r14
   13060:	14 96       	adiw	r26, 0x04	; 4
   13062:	6d 91       	ld	r22, X+
   13064:	7c 91       	ld	r23, X
   13066:	15 97       	sbiw	r26, 0x05	; 5
   13068:	63 5a       	subi	r22, 0xA3	; 163
   1306a:	79 4f       	sbci	r23, 0xF9	; 249
   1306c:	8b 81       	ldd	r24, Y+3	; 0x03
   1306e:	9c 81       	ldd	r25, Y+4	; 0x04
   13070:	ae 01       	movw	r20, r28
   13072:	4d 5f       	subi	r20, 0xFD	; 253
   13074:	5f 4f       	sbci	r21, 0xFF	; 255
   13076:	0e 94 a0 f0 	call	0x1e140	; 0x1e140 <strtok_r>
   1307a:	bc 01       	movw	r22, r24
			if(result != NULL)
   1307c:	00 97       	sbiw	r24, 0x00	; 0
   1307e:	39 f0       	breq	.+14     	; 0x1308e <SB37SI_ParseCommand2+0x422>
		if(pTaskInfo->pBuf->sampleCTD == FALSE)
		{
			memset(pTaskInfo->pBuf->tokenSeparatorList, 0, MAX_TOKEN_SEPARATORS);
			strcat_P(pTaskInfo->pBuf->tokenSeparatorList, tokenListConsole);

			result = strtok_r(cmdParams, pTaskInfo->pBuf->tokenSeparatorList, &cmdParams);
   13080:	9a 83       	std	Y+2, r25	; 0x02
   13082:	89 83       	std	Y+1, r24	; 0x01
			if(result != NULL)
				retval = SB37SI_Cmd(pTaskInfo, result);
   13084:	c7 01       	movw	r24, r14
   13086:	0e 94 c9 91 	call	0x12392	; 0x12392 <SB37SI_Cmd>
   1308a:	08 2f       	mov	r16, r24
   1308c:	13 c0       	rjmp	.+38     	; 0x130b4 <SB37SI_ParseCommand2+0x448>
			else
				pTaskInfo->pBuf->responseInfo.status = CONSOLE_RESPONSE_EMPTY_CMD;
   1308e:	d7 01       	movw	r26, r14
   13090:	14 96       	adiw	r26, 0x04	; 4
   13092:	ed 91       	ld	r30, X+
   13094:	fc 91       	ld	r31, X
   13096:	15 97       	sbiw	r26, 0x05	; 5
   13098:	ea 5a       	subi	r30, 0xAA	; 170
   1309a:	f9 4f       	sbci	r31, 0xF9	; 249
   1309c:	8d e0       	ldi	r24, 0x0D	; 13
   1309e:	80 83       	st	Z, r24
   130a0:	09 c0       	rjmp	.+18     	; 0x130b4 <SB37SI_ParseCommand2+0x448>
		}
		else
		{
			pTaskInfo->pBuf->responseInfo.status = CONSOLE_RESPONSE_DEVICE_BUSY;
   130a2:	ea 5a       	subi	r30, 0xAA	; 170
   130a4:	f9 4f       	sbci	r31, 0xF9	; 249
   130a6:	8b e0       	ldi	r24, 0x0B	; 11
   130a8:	fa cf       	rjmp	.-12     	; 0x1309e <SB37SI_ParseCommand2+0x432>
	}

	if(statusResponse == TRUE)
	{
		retval = SUCCESS;
		SB37SI_CreateStatusResponse(pTaskInfo, retval);
   130aa:	c7 01       	movw	r24, r14
   130ac:	6f ef       	ldi	r22, 0xFF	; 255
   130ae:	0e 94 b4 8b 	call	0x11768	; 0x11768 <SB37SI_CreateStatusResponse>
   130b2:	0f ef       	ldi	r16, 0xFF	; 255
	}

	return retval;
}
   130b4:	80 2f       	mov	r24, r16
   130b6:	0f 90       	pop	r0
   130b8:	0f 90       	pop	r0
   130ba:	0f 90       	pop	r0
   130bc:	0f 90       	pop	r0
   130be:	cf 91       	pop	r28
   130c0:	df 91       	pop	r29
   130c2:	1f 91       	pop	r17
   130c4:	0f 91       	pop	r16
   130c6:	ff 90       	pop	r15
   130c8:	ef 90       	pop	r14
   130ca:	df 90       	pop	r13
   130cc:	cf 90       	pop	r12
   130ce:	bf 90       	pop	r11
   130d0:	af 90       	pop	r10
   130d2:	08 95       	ret

000130d4 <SB37SI_ParseConsole2>:
////////////////////////////////////////////////////////////////////////////////////////////////
}


void SB37SI_ParseConsole2(PSEABIRD_37SI_TASK pTaskInfo)
{
   130d4:	cf 92       	push	r12
   130d6:	df 92       	push	r13
   130d8:	ef 92       	push	r14
   130da:	ff 92       	push	r15
   130dc:	0f 93       	push	r16
   130de:	1f 93       	push	r17
   130e0:	df 93       	push	r29
   130e2:	cf 93       	push	r28
   130e4:	0f 92       	push	r0
   130e6:	0f 92       	push	r0
   130e8:	cd b7       	in	r28, 0x3d	; 61
   130ea:	de b7       	in	r29, 0x3e	; 62
   130ec:	6c 01       	movw	r12, r24

	char* myCommand = consoleIn[pTaskInfo->taskID].cmd; 
   130ee:	dc 01       	movw	r26, r24
   130f0:	8c 91       	ld	r24, X
   130f2:	90 e0       	ldi	r25, 0x00	; 0
   130f4:	29 e0       	ldi	r18, 0x09	; 9
   130f6:	31 e0       	ldi	r19, 0x01	; 1
   130f8:	82 9f       	mul	r24, r18
   130fa:	f0 01       	movw	r30, r0
   130fc:	83 9f       	mul	r24, r19
   130fe:	f0 0d       	add	r31, r0
   13100:	92 9f       	mul	r25, r18
   13102:	f0 0d       	add	r31, r0
   13104:	11 24       	eor	r1, r1
   13106:	cf 01       	movw	r24, r30
   13108:	8e 58       	subi	r24, 0x8E	; 142
   1310a:	92 46       	sbci	r25, 0x62	; 98
   1310c:	9a 83       	std	Y+2, r25	; 0x02
   1310e:	89 83       	std	Y+1, r24	; 0x01
	char* result = NULL;
	char command = 0;
	BOOL goodCommand = FALSE;
	uint8_t resultCode = 0;

	myCommand[MAX_FILE_SIZE_IN - 1] = 0;			//Make sure command string is NULL terminated
   13110:	ef 58       	subi	r30, 0x8F	; 143
   13112:	f1 46       	sbci	r31, 0x61	; 97
   13114:	10 82       	st	Z, r1

	memset(pTaskInfo->pBuf->tokenSeparatorList, 0, MAX_TOKEN_SEPARATORS);
   13116:	14 96       	adiw	r26, 0x04	; 4
   13118:	8d 91       	ld	r24, X+
   1311a:	9c 91       	ld	r25, X
   1311c:	15 97       	sbiw	r26, 0x05	; 5
   1311e:	83 5a       	subi	r24, 0xA3	; 163
   13120:	99 4f       	sbci	r25, 0xF9	; 249
   13122:	fc 01       	movw	r30, r24
   13124:	84 e1       	ldi	r24, 0x14	; 20
   13126:	df 01       	movw	r26, r30
   13128:	1d 92       	st	X+, r1
   1312a:	8a 95       	dec	r24
   1312c:	e9 f7       	brne	.-6      	; 0x13128 <SB37SI_ParseConsole2+0x54>
	strcat_P(pTaskInfo->pBuf->tokenSeparatorList, tokenListConsole);
   1312e:	f6 01       	movw	r30, r12
   13130:	84 81       	ldd	r24, Z+4	; 0x04
   13132:	95 81       	ldd	r25, Z+5	; 0x05
   13134:	83 5a       	subi	r24, 0xA3	; 163
   13136:	99 4f       	sbci	r25, 0xF9	; 249
   13138:	68 e3       	ldi	r22, 0x38	; 56
   1313a:	72 e0       	ldi	r23, 0x02	; 2
   1313c:	0e 94 b4 ef 	call	0x1df68	; 0x1df68 <strcat_P>

	result = strtok_r(myCommand, pTaskInfo->pBuf->tokenSeparatorList, &myCommand);
   13140:	d6 01       	movw	r26, r12
   13142:	14 96       	adiw	r26, 0x04	; 4
   13144:	6d 91       	ld	r22, X+
   13146:	7c 91       	ld	r23, X
   13148:	15 97       	sbiw	r26, 0x05	; 5
   1314a:	63 5a       	subi	r22, 0xA3	; 163
   1314c:	79 4f       	sbci	r23, 0xF9	; 249
   1314e:	89 81       	ldd	r24, Y+1	; 0x01
   13150:	9a 81       	ldd	r25, Y+2	; 0x02
   13152:	7e 01       	movw	r14, r28
   13154:	08 94       	sec
   13156:	e1 1c       	adc	r14, r1
   13158:	f1 1c       	adc	r15, r1
   1315a:	a7 01       	movw	r20, r14
   1315c:	0e 94 a0 f0 	call	0x1e140	; 0x1e140 <strtok_r>
   13160:	8c 01       	movw	r16, r24
	resultCode = 1;				//No Command Received

	if(result != NULL)
   13162:	00 97       	sbiw	r24, 0x00	; 0
   13164:	11 f4       	brne	.+4      	; 0x1316a <SB37SI_ParseConsole2+0x96>
   13166:	81 e0       	ldi	r24, 0x01	; 1
   13168:	26 c0       	rjmp	.+76     	; 0x131b6 <SB37SI_ParseConsole2+0xe2>
	{
		resultCode = 2;			//Unknown Parser Code
		if(strncasecmp_P(result, SB37SIParserID, strlen_P(SB37SIParserID)) == 0)
   1316a:	88 ee       	ldi	r24, 0xE8	; 232
   1316c:	90 e1       	ldi	r25, 0x10	; 16
   1316e:	0e 94 c6 ef 	call	0x1df8c	; 0x1df8c <strlen_P>
   13172:	ac 01       	movw	r20, r24
   13174:	c8 01       	movw	r24, r16
   13176:	68 ee       	ldi	r22, 0xE8	; 232
   13178:	70 e1       	ldi	r23, 0x10	; 16
   1317a:	0e 94 cf ef 	call	0x1df9e	; 0x1df9e <strncasecmp_P>
   1317e:	89 2b       	or	r24, r25
   13180:	29 f5       	brne	.+74     	; 0x131cc <SB37SI_ParseConsole2+0xf8>
		{
			resultCode = 3;		//Unknown command
			command = getCommand(&myCommand, SB37SICommands[0], 8, NUM_COMMANDS, ctd37SICmdList2, pTaskInfo->pBuf->tokenSeparatorList);
   13182:	d6 01       	movw	r26, r12
   13184:	14 96       	adiw	r26, 0x04	; 4
   13186:	ed 91       	ld	r30, X+
   13188:	fc 91       	ld	r31, X
   1318a:	15 97       	sbiw	r26, 0x05	; 5
   1318c:	e3 5a       	subi	r30, 0xA3	; 163
   1318e:	f9 4f       	sbci	r31, 0xF9	; 249
   13190:	c7 01       	movw	r24, r14
   13192:	60 e9       	ldi	r22, 0x90	; 144
   13194:	70 e1       	ldi	r23, 0x10	; 16
   13196:	48 e0       	ldi	r20, 0x08	; 8
   13198:	2b e0       	ldi	r18, 0x0B	; 11
   1319a:	0d ee       	ldi	r16, 0xED	; 237
   1319c:	10 e1       	ldi	r17, 0x10	; 16
   1319e:	7f 01       	movw	r14, r30
   131a0:	0e 94 1f 38 	call	0x703e	; 0x703e <getCommand>
   131a4:	68 2f       	mov	r22, r24

			if(command != 0)
   131a6:	88 23       	and	r24, r24
   131a8:	09 f0       	breq	.+2      	; 0x131ac <SB37SI_ParseConsole2+0xd8>
   131aa:	82 c0       	rjmp	.+260    	; 0x132b0 <SB37SI_ParseConsole2+0x1dc>
   131ac:	18 c0       	rjmp	.+48     	; 0x131de <SB37SI_ParseConsole2+0x10a>
	if(goodCommand == TRUE)
		resultCode = SB37SI_ParseCommand2(pTaskInfo, command, myCommand);

	if(resultCode != SUCCESS)
	{
		switch(resultCode)
   131ae:	82 30       	cpi	r24, 0x02	; 2
   131b0:	69 f0       	breq	.+26     	; 0x131cc <SB37SI_ParseConsole2+0xf8>
   131b2:	83 30       	cpi	r24, 0x03	; 3
   131b4:	a1 f0       	breq	.+40     	; 0x131de <SB37SI_ParseConsole2+0x10a>
   131b6:	d6 01       	movw	r26, r12
   131b8:	14 96       	adiw	r26, 0x04	; 4
   131ba:	ed 91       	ld	r30, X+
   131bc:	fc 91       	ld	r31, X
   131be:	15 97       	sbiw	r26, 0x05	; 5
   131c0:	81 30       	cpi	r24, 0x01	; 1
   131c2:	b1 f4       	brne	.+44     	; 0x131f0 <SB37SI_ParseConsole2+0x11c>
		{
			case 1:
				pTaskInfo->pBuf->responseInfo.status = CONSOLE_RESPONSE_EMPTY_CMD;
   131c4:	ea 5a       	subi	r30, 0xAA	; 170
   131c6:	f9 4f       	sbci	r31, 0xF9	; 249
   131c8:	8d e0       	ldi	r24, 0x0D	; 13
   131ca:	15 c0       	rjmp	.+42     	; 0x131f6 <SB37SI_ParseConsole2+0x122>
				break;
			case 2:
				pTaskInfo->pBuf->responseInfo.status = CONSOLE_RESPONSE_WRONG_DEVICE;
   131cc:	d6 01       	movw	r26, r12
   131ce:	14 96       	adiw	r26, 0x04	; 4
   131d0:	ed 91       	ld	r30, X+
   131d2:	fc 91       	ld	r31, X
   131d4:	15 97       	sbiw	r26, 0x05	; 5
   131d6:	ea 5a       	subi	r30, 0xAA	; 170
   131d8:	f9 4f       	sbci	r31, 0xF9	; 249
   131da:	8e e0       	ldi	r24, 0x0E	; 14
   131dc:	0c c0       	rjmp	.+24     	; 0x131f6 <SB37SI_ParseConsole2+0x122>
				break;
			case 3:
				pTaskInfo->pBuf->responseInfo.status = CONSOLE_RESPONSE_UNKNOWN_CMD;
   131de:	d6 01       	movw	r26, r12
   131e0:	14 96       	adiw	r26, 0x04	; 4
   131e2:	ed 91       	ld	r30, X+
   131e4:	fc 91       	ld	r31, X
   131e6:	15 97       	sbiw	r26, 0x05	; 5
   131e8:	ea 5a       	subi	r30, 0xAA	; 170
   131ea:	f9 4f       	sbci	r31, 0xF9	; 249
   131ec:	8a e0       	ldi	r24, 0x0A	; 10
   131ee:	03 c0       	rjmp	.+6      	; 0x131f6 <SB37SI_ParseConsole2+0x122>
				break;
			default:
				pTaskInfo->pBuf->responseInfo.status = CONSOLE_RESPONSE_CMD_FAILED;
   131f0:	ea 5a       	subi	r30, 0xAA	; 170
   131f2:	f9 4f       	sbci	r31, 0xF9	; 249
   131f4:	8f e0       	ldi	r24, 0x0F	; 15
   131f6:	80 83       	st	Z, r24
				break;
		}
	}

	SB37SI_QueueConsoleResponse2(pTaskInfo);
   131f8:	c6 01       	movw	r24, r12
   131fa:	0e 94 07 8d 	call	0x11a0e	; 0x11a0e <SB37SI_QueueConsoleResponse2>

	memset(consoleIn[pTaskInfo->taskID].cmd, 0, MAX_FILE_SIZE_IN);
   131fe:	f6 01       	movw	r30, r12
   13200:	80 81       	ld	r24, Z
   13202:	90 e0       	ldi	r25, 0x00	; 0
   13204:	29 e0       	ldi	r18, 0x09	; 9
   13206:	31 e0       	ldi	r19, 0x01	; 1
   13208:	ac 01       	movw	r20, r24
   1320a:	42 9f       	mul	r20, r18
   1320c:	c0 01       	movw	r24, r0
   1320e:	43 9f       	mul	r20, r19
   13210:	90 0d       	add	r25, r0
   13212:	52 9f       	mul	r21, r18
   13214:	90 0d       	add	r25, r0
   13216:	11 24       	eor	r1, r1
   13218:	8e 58       	subi	r24, 0x8E	; 142
   1321a:	92 46       	sbci	r25, 0x62	; 98
   1321c:	fc 01       	movw	r30, r24
   1321e:	80 e0       	ldi	r24, 0x00	; 0
   13220:	91 e0       	ldi	r25, 0x01	; 1
   13222:	df 01       	movw	r26, r30
   13224:	ac 01       	movw	r20, r24
   13226:	1d 92       	st	X+, r1
   13228:	41 50       	subi	r20, 0x01	; 1
   1322a:	50 40       	sbci	r21, 0x00	; 0
   1322c:	e1 f7       	brne	.-8      	; 0x13226 <SB37SI_ParseConsole2+0x152>
	consoleIn[pTaskInfo->taskID].cmdSrcAddress = 0;
   1322e:	d6 01       	movw	r26, r12
   13230:	8c 91       	ld	r24, X
   13232:	90 e0       	ldi	r25, 0x00	; 0
   13234:	82 9f       	mul	r24, r18
   13236:	f0 01       	movw	r30, r0
   13238:	83 9f       	mul	r24, r19
   1323a:	f0 0d       	add	r31, r0
   1323c:	92 9f       	mul	r25, r18
   1323e:	f0 0d       	add	r31, r0
   13240:	11 24       	eor	r1, r1
   13242:	e7 59       	subi	r30, 0x97	; 151
   13244:	f2 46       	sbci	r31, 0x62	; 98
   13246:	11 82       	std	Z+1, r1	; 0x01
   13248:	10 82       	st	Z, r1
	consoleIn[pTaskInfo->taskID].functionCode = 0;
   1324a:	8c 91       	ld	r24, X
   1324c:	90 e0       	ldi	r25, 0x00	; 0
   1324e:	82 9f       	mul	r24, r18
   13250:	f0 01       	movw	r30, r0
   13252:	83 9f       	mul	r24, r19
   13254:	f0 0d       	add	r31, r0
   13256:	92 9f       	mul	r25, r18
   13258:	f0 0d       	add	r31, r0
   1325a:	11 24       	eor	r1, r1
   1325c:	e7 59       	subi	r30, 0x97	; 151
   1325e:	f2 46       	sbci	r31, 0x62	; 98
   13260:	12 82       	std	Z+2, r1	; 0x02
	consoleIn[pTaskInfo->taskID].cmdSize = 0;
   13262:	8c 91       	ld	r24, X
   13264:	90 e0       	ldi	r25, 0x00	; 0
   13266:	82 9f       	mul	r24, r18
   13268:	f0 01       	movw	r30, r0
   1326a:	83 9f       	mul	r24, r19
   1326c:	f0 0d       	add	r31, r0
   1326e:	92 9f       	mul	r25, r18
   13270:	f0 0d       	add	r31, r0
   13272:	11 24       	eor	r1, r1
   13274:	e7 59       	subi	r30, 0x97	; 151
   13276:	f2 46       	sbci	r31, 0x62	; 98
   13278:	14 82       	std	Z+4, r1	; 0x04
   1327a:	13 82       	std	Z+3, r1	; 0x03
	consoleIn[pTaskInfo->taskID].id = 0;
   1327c:	8c 91       	ld	r24, X
   1327e:	90 e0       	ldi	r25, 0x00	; 0
   13280:	82 9f       	mul	r24, r18
   13282:	f0 01       	movw	r30, r0
   13284:	83 9f       	mul	r24, r19
   13286:	f0 0d       	add	r31, r0
   13288:	92 9f       	mul	r25, r18
   1328a:	f0 0d       	add	r31, r0
   1328c:	11 24       	eor	r1, r1
   1328e:	e7 59       	subi	r30, 0x97	; 151
   13290:	f2 46       	sbci	r31, 0x62	; 98
   13292:	15 82       	std	Z+5, r1	; 0x05
   13294:	16 82       	std	Z+6, r1	; 0x06
   13296:	17 82       	std	Z+7, r1	; 0x07
   13298:	10 86       	std	Z+8, r1	; 0x08

	return;
}
   1329a:	0f 90       	pop	r0
   1329c:	0f 90       	pop	r0
   1329e:	cf 91       	pop	r28
   132a0:	df 91       	pop	r29
   132a2:	1f 91       	pop	r17
   132a4:	0f 91       	pop	r16
   132a6:	ff 90       	pop	r15
   132a8:	ef 90       	pop	r14
   132aa:	df 90       	pop	r13
   132ac:	cf 90       	pop	r12
   132ae:	08 95       	ret
				goodCommand = TRUE;
		}
	}

	if(goodCommand == TRUE)
		resultCode = SB37SI_ParseCommand2(pTaskInfo, command, myCommand);
   132b0:	49 81       	ldd	r20, Y+1	; 0x01
   132b2:	5a 81       	ldd	r21, Y+2	; 0x02
   132b4:	c6 01       	movw	r24, r12
   132b6:	0e 94 36 96 	call	0x12c6c	; 0x12c6c <SB37SI_ParseCommand2>

	if(resultCode != SUCCESS)
   132ba:	8f 3f       	cpi	r24, 0xFF	; 255
   132bc:	09 f0       	breq	.+2      	; 0x132c0 <SB37SI_ParseConsole2+0x1ec>
   132be:	77 cf       	rjmp	.-274    	; 0x131ae <SB37SI_ParseConsole2+0xda>
   132c0:	9b cf       	rjmp	.-202    	; 0x131f8 <SB37SI_ParseConsole2+0x124>

000132c2 <Seabird_37SI_Init>:
extern int32_t latitude;		//JGK Added 06-11-10
extern int32_t longitude;		//JGK Added 06-11-10
extern char	fixValid;			//JGK Added 06-11-10

uint8_t Seabird_37SI_Init(PSEABIRD_37SI_TASK pTaskInfo)
{
   132c2:	cf 92       	push	r12
   132c4:	df 92       	push	r13
   132c6:	ef 92       	push	r14
   132c8:	0f 93       	push	r16
   132ca:	1f 93       	push	r17
   132cc:	df 93       	push	r29
   132ce:	cf 93       	push	r28
   132d0:	0f 92       	push	r0
   132d2:	0f 92       	push	r0
   132d4:	cd b7       	in	r28, 0x3d	; 61
   132d6:	de b7       	in	r29, 0x3e	; 62
   132d8:	6c 01       	movw	r12, r24
	if(pTaskInfo->portNum == USER_PORT_1)
   132da:	dc 01       	movw	r26, r24
   132dc:	11 96       	adiw	r26, 0x01	; 1
   132de:	8c 91       	ld	r24, X
   132e0:	11 97       	sbiw	r26, 0x01	; 1
   132e2:	81 30       	cpi	r24, 0x01	; 1
   132e4:	19 f4       	brne	.+6      	; 0x132ec <Seabird_37SI_Init+0x2a>
		pTaskInfo->eepromAddress = EEPROM_PM1_START;
   132e6:	80 e0       	ldi	r24, 0x00	; 0
   132e8:	93 e0       	ldi	r25, 0x03	; 3
   132ea:	0d c0       	rjmp	.+26     	; 0x13306 <Seabird_37SI_Init+0x44>
	else if(pTaskInfo->portNum == USER_PORT_2)
   132ec:	82 30       	cpi	r24, 0x02	; 2
   132ee:	31 f4       	brne	.+12     	; 0x132fc <Seabird_37SI_Init+0x3a>
		pTaskInfo->eepromAddress = EEPROM_PM2_START;
   132f0:	80 e0       	ldi	r24, 0x00	; 0
   132f2:	95 e0       	ldi	r25, 0x05	; 5
   132f4:	f6 01       	movw	r30, r12
   132f6:	93 83       	std	Z+3, r25	; 0x03
   132f8:	82 83       	std	Z+2, r24	; 0x02
   132fa:	09 c0       	rjmp	.+18     	; 0x1330e <Seabird_37SI_Init+0x4c>
	else if(pTaskInfo->portNum == USER_PORT_3)
   132fc:	83 30       	cpi	r24, 0x03	; 3
   132fe:	39 f4       	brne	.+14     	; 0x1330e <Seabird_37SI_Init+0x4c>
		pTaskInfo->eepromAddress = EEPROM_PM3_START;
   13300:	80 e0       	ldi	r24, 0x00	; 0
   13302:	97 e0       	ldi	r25, 0x07	; 7
   13304:	d6 01       	movw	r26, r12
   13306:	13 96       	adiw	r26, 0x03	; 3
   13308:	9c 93       	st	X, r25
   1330a:	8e 93       	st	-X, r24
   1330c:	12 97       	sbiw	r26, 0x02	; 2

	if(pTaskInfo->pBuf != NULL)
   1330e:	d6 01       	movw	r26, r12
   13310:	14 96       	adiw	r26, 0x04	; 4
   13312:	ed 91       	ld	r30, X+
   13314:	fc 91       	ld	r31, X
   13316:	15 97       	sbiw	r26, 0x05	; 5
   13318:	30 97       	sbiw	r30, 0x00	; 0
   1331a:	41 f0       	breq	.+16     	; 0x1332c <Seabird_37SI_Init+0x6a>
		memset(pTaskInfo->pBuf, 0, TASK_BUF_SIZE);
   1331c:	80 ea       	ldi	r24, 0xA0	; 160
   1331e:	9f e0       	ldi	r25, 0x0F	; 15
   13320:	df 01       	movw	r26, r30
   13322:	9c 01       	movw	r18, r24
   13324:	1d 92       	st	X+, r1
   13326:	21 50       	subi	r18, 0x01	; 1
   13328:	30 40       	sbci	r19, 0x00	; 0
   1332a:	e1 f7       	brne	.-8      	; 0x13324 <Seabird_37SI_Init+0x62>

	OSuartInitPort(pTaskInfo->portNum, 9600, UART_MODE_EIGHT_DATA_BITS, UART_MODE_ONE_STOP_BIT, UART_MODE_NO_PARITY);
   1332c:	d6 01       	movw	r26, r12
   1332e:	11 96       	adiw	r26, 0x01	; 1
   13330:	8c 91       	ld	r24, X
   13332:	40 e8       	ldi	r20, 0x80	; 128
   13334:	55 e2       	ldi	r21, 0x25	; 37
   13336:	60 e0       	ldi	r22, 0x00	; 0
   13338:	70 e0       	ldi	r23, 0x00	; 0
   1333a:	26 e0       	ldi	r18, 0x06	; 6
   1333c:	00 e0       	ldi	r16, 0x00	; 0
   1333e:	ee 24       	eor	r14, r14
   13340:	0e 94 38 33 	call	0x6670	; 0x6670 <OSuartInitPort>

	pTaskInfo->pBuf->sampleRate = DEFAULT_37SI_SAMPLE_INTERVAL;
   13344:	d6 01       	movw	r26, r12
   13346:	14 96       	adiw	r26, 0x04	; 4
   13348:	ed 91       	ld	r30, X+
   1334a:	fc 91       	ld	r31, X
   1334c:	15 97       	sbiw	r26, 0x05	; 5
   1334e:	e0 50       	subi	r30, 0x00	; 0
   13350:	fb 4f       	sbci	r31, 0xFB	; 251
   13352:	0c e3       	ldi	r16, 0x3C	; 60
   13354:	10 e0       	ldi	r17, 0x00	; 0
   13356:	01 93       	st	Z+, r16
   13358:	11 93       	st	Z+, r17
	pTaskInfo->pBuf->samplePacketSize = MAX_37SI_SAMPLES;
   1335a:	8a e0       	ldi	r24, 0x0A	; 10
   1335c:	90 e0       	ldi	r25, 0x00	; 0
   1335e:	81 93       	st	Z+, r24
   13360:	91 93       	st	Z+, r25
	pTaskInfo->pBuf->destination = FLOAT_TO_SHORE_VIA_DEFAULT;
   13362:	82 e0       	ldi	r24, 0x02	; 2
   13364:	90 e0       	ldi	r25, 0x00	; 0
   13366:	91 83       	std	Z+1, r25	; 0x01
   13368:	80 83       	st	Z, r24
	pTaskInfo->pBuf->findDataFrame = FALSE;
   1336a:	ec 5a       	subi	r30, 0xAC	; 172
   1336c:	ff 4f       	sbci	r31, 0xFF	; 255
   1336e:	10 82       	st	Z, r1

	if(pTaskInfo->eepromAddress != 0)
   13370:	12 96       	adiw	r26, 0x02	; 2
   13372:	2d 91       	ld	r18, X+
   13374:	3c 91       	ld	r19, X
   13376:	13 97       	sbiw	r26, 0x03	; 3
   13378:	21 15       	cp	r18, r1
   1337a:	31 05       	cpc	r19, r1
   1337c:	09 f4       	brne	.+2      	; 0x13380 <Seabird_37SI_Init+0xbe>
   1337e:	82 c0       	rjmp	.+260    	; 0x13484 <Seabird_37SI_Init+0x1c2>
	{
		uint16_t temp;

		//Get default sample rate
		temp = 0xFFFF;
   13380:	8f ef       	ldi	r24, 0xFF	; 255
   13382:	9f ef       	ldi	r25, 0xFF	; 255
   13384:	9a 83       	std	Y+2, r25	; 0x02
   13386:	89 83       	std	Y+1, r24	; 0x01
		EepromReadWord((void*)(pTaskInfo->eepromAddress + SEABIRD_37SI_SAMPLE_INTERVAL_OFFSET), (void*)&temp);
   13388:	c9 01       	movw	r24, r18
   1338a:	80 5c       	subi	r24, 0xC0	; 192
   1338c:	9f 4f       	sbci	r25, 0xFF	; 255
   1338e:	be 01       	movw	r22, r28
   13390:	6f 5f       	subi	r22, 0xFF	; 255
   13392:	7f 4f       	sbci	r23, 0xFF	; 255
   13394:	0e 94 4d 37 	call	0x6e9a	; 0x6e9a <EepromReadWord>
		if((temp == 0xFFFF) || (temp == 0x0000) || (temp > MAX_37SI_SAMPLE_INTERVAL))
   13398:	89 81       	ldd	r24, Y+1	; 0x01
   1339a:	9a 81       	ldd	r25, Y+2	; 0x02
   1339c:	01 97       	sbiw	r24, 0x01	; 1
   1339e:	80 51       	subi	r24, 0x10	; 16
   133a0:	9e 40       	sbci	r25, 0x0E	; 14
   133a2:	58 f0       	brcs	.+22     	; 0x133ba <Seabird_37SI_Init+0xf8>
		{
			temp = DEFAULT_37SI_SAMPLE_INTERVAL;	//Default to 1 sample per minute if not defined
   133a4:	1a 83       	std	Y+2, r17	; 0x02
   133a6:	09 83       	std	Y+1, r16	; 0x01
			EepromWriteWordUnSigned((void*)(pTaskInfo->eepromAddress + SEABIRD_37SI_SAMPLE_INTERVAL_OFFSET), temp);
   133a8:	f6 01       	movw	r30, r12
   133aa:	82 81       	ldd	r24, Z+2	; 0x02
   133ac:	93 81       	ldd	r25, Z+3	; 0x03
   133ae:	80 5c       	subi	r24, 0xC0	; 192
   133b0:	9f 4f       	sbci	r25, 0xFF	; 255
   133b2:	6c e3       	ldi	r22, 0x3C	; 60
   133b4:	70 e0       	ldi	r23, 0x00	; 0
   133b6:	0e 94 d6 37 	call	0x6fac	; 0x6fac <EepromWriteWordUnSigned>
		}
		pTaskInfo->pBuf->sampleRate = temp;
   133ba:	d6 01       	movw	r26, r12
   133bc:	14 96       	adiw	r26, 0x04	; 4
   133be:	ed 91       	ld	r30, X+
   133c0:	fc 91       	ld	r31, X
   133c2:	15 97       	sbiw	r26, 0x05	; 5
   133c4:	e0 50       	subi	r30, 0x00	; 0
   133c6:	fb 4f       	sbci	r31, 0xFB	; 251
   133c8:	89 81       	ldd	r24, Y+1	; 0x01
   133ca:	9a 81       	ldd	r25, Y+2	; 0x02
   133cc:	91 83       	std	Z+1, r25	; 0x01
   133ce:	80 83       	st	Z, r24

		//Get default packet size for data (# samples per packet)
		temp = 0xFFFF;
   133d0:	8f ef       	ldi	r24, 0xFF	; 255
   133d2:	9f ef       	ldi	r25, 0xFF	; 255
   133d4:	9a 83       	std	Y+2, r25	; 0x02
   133d6:	89 83       	std	Y+1, r24	; 0x01
		EepromReadWord((void*)(pTaskInfo->eepromAddress + SEABIRD_37SI_PACKET_SIZE_OFFSET), (void*)&temp);
   133d8:	12 96       	adiw	r26, 0x02	; 2
   133da:	8d 91       	ld	r24, X+
   133dc:	9c 91       	ld	r25, X
   133de:	13 97       	sbiw	r26, 0x03	; 3
   133e0:	8e 5b       	subi	r24, 0xBE	; 190
   133e2:	9f 4f       	sbci	r25, 0xFF	; 255
   133e4:	be 01       	movw	r22, r28
   133e6:	6f 5f       	subi	r22, 0xFF	; 255
   133e8:	7f 4f       	sbci	r23, 0xFF	; 255
   133ea:	0e 94 4d 37 	call	0x6e9a	; 0x6e9a <EepromReadWord>
		if((temp == 0xFFFF) || (temp == 0x0000))
   133ee:	89 81       	ldd	r24, Y+1	; 0x01
   133f0:	9a 81       	ldd	r25, Y+2	; 0x02
   133f2:	01 97       	sbiw	r24, 0x01	; 1
   133f4:	8e 5f       	subi	r24, 0xFE	; 254
   133f6:	9f 4f       	sbci	r25, 0xFF	; 255
   133f8:	68 f0       	brcs	.+26     	; 0x13414 <Seabird_37SI_Init+0x152>
		{
			temp = MAX_37SI_SAMPLES;	//Default to 10 samples per packet if not defined
   133fa:	8a e0       	ldi	r24, 0x0A	; 10
   133fc:	90 e0       	ldi	r25, 0x00	; 0
   133fe:	9a 83       	std	Y+2, r25	; 0x02
   13400:	89 83       	std	Y+1, r24	; 0x01
			EepromWriteWordUnSigned((void*)(pTaskInfo->eepromAddress + SEABIRD_37SI_PACKET_SIZE_OFFSET), temp);
   13402:	f6 01       	movw	r30, r12
   13404:	82 81       	ldd	r24, Z+2	; 0x02
   13406:	93 81       	ldd	r25, Z+3	; 0x03
   13408:	8e 5b       	subi	r24, 0xBE	; 190
   1340a:	9f 4f       	sbci	r25, 0xFF	; 255
   1340c:	6a e0       	ldi	r22, 0x0A	; 10
   1340e:	70 e0       	ldi	r23, 0x00	; 0
   13410:	0e 94 d6 37 	call	0x6fac	; 0x6fac <EepromWriteWordUnSigned>
		}
		pTaskInfo->pBuf->samplePacketSize = temp;
   13414:	d6 01       	movw	r26, r12
   13416:	14 96       	adiw	r26, 0x04	; 4
   13418:	ed 91       	ld	r30, X+
   1341a:	fc 91       	ld	r31, X
   1341c:	15 97       	sbiw	r26, 0x05	; 5
   1341e:	ee 5f       	subi	r30, 0xFE	; 254
   13420:	fa 4f       	sbci	r31, 0xFA	; 250
   13422:	89 81       	ldd	r24, Y+1	; 0x01
   13424:	9a 81       	ldd	r25, Y+2	; 0x02
   13426:	91 83       	std	Z+1, r25	; 0x01
   13428:	80 83       	st	Z, r24

		//Get default destination for data
		temp = 0xFFFF;
   1342a:	8f ef       	ldi	r24, 0xFF	; 255
   1342c:	9f ef       	ldi	r25, 0xFF	; 255
   1342e:	9a 83       	std	Y+2, r25	; 0x02
   13430:	89 83       	std	Y+1, r24	; 0x01
		EepromReadWord((void*)(pTaskInfo->eepromAddress + SEABIRD_37SI_PACKET_DESTINATION_OFFSET), (void*)&temp);
   13432:	12 96       	adiw	r26, 0x02	; 2
   13434:	8d 91       	ld	r24, X+
   13436:	9c 91       	ld	r25, X
   13438:	13 97       	sbiw	r26, 0x03	; 3
   1343a:	8c 5b       	subi	r24, 0xBC	; 188
   1343c:	9f 4f       	sbci	r25, 0xFF	; 255
   1343e:	be 01       	movw	r22, r28
   13440:	6f 5f       	subi	r22, 0xFF	; 255
   13442:	7f 4f       	sbci	r23, 0xFF	; 255
   13444:	0e 94 4d 37 	call	0x6e9a	; 0x6e9a <EepromReadWord>
		if((temp == 0xFFFF) || (temp == 0x0000))
   13448:	89 81       	ldd	r24, Y+1	; 0x01
   1344a:	9a 81       	ldd	r25, Y+2	; 0x02
   1344c:	01 97       	sbiw	r24, 0x01	; 1
   1344e:	8e 5f       	subi	r24, 0xFE	; 254
   13450:	9f 4f       	sbci	r25, 0xFF	; 255
   13452:	68 f0       	brcs	.+26     	; 0x1346e <Seabird_37SI_Init+0x1ac>
		{
			temp = FLOAT_TO_SHORE_VIA_DEFAULT;	//Default to data to shore via default path
   13454:	82 e0       	ldi	r24, 0x02	; 2
   13456:	90 e0       	ldi	r25, 0x00	; 0
   13458:	9a 83       	std	Y+2, r25	; 0x02
   1345a:	89 83       	std	Y+1, r24	; 0x01
			EepromWriteWordUnSigned((void*)(pTaskInfo->eepromAddress + SEABIRD_37SI_PACKET_DESTINATION_OFFSET), temp);
   1345c:	f6 01       	movw	r30, r12
   1345e:	82 81       	ldd	r24, Z+2	; 0x02
   13460:	93 81       	ldd	r25, Z+3	; 0x03
   13462:	8c 5b       	subi	r24, 0xBC	; 188
   13464:	9f 4f       	sbci	r25, 0xFF	; 255
   13466:	62 e0       	ldi	r22, 0x02	; 2
   13468:	70 e0       	ldi	r23, 0x00	; 0
   1346a:	0e 94 d6 37 	call	0x6fac	; 0x6fac <EepromWriteWordUnSigned>
		}
		pTaskInfo->pBuf->destination = temp;
   1346e:	d6 01       	movw	r26, r12
   13470:	14 96       	adiw	r26, 0x04	; 4
   13472:	ed 91       	ld	r30, X+
   13474:	fc 91       	ld	r31, X
   13476:	15 97       	sbiw	r26, 0x05	; 5
   13478:	ec 5f       	subi	r30, 0xFC	; 252
   1347a:	fa 4f       	sbci	r31, 0xFA	; 250
   1347c:	89 81       	ldd	r24, Y+1	; 0x01
   1347e:	9a 81       	ldd	r25, Y+2	; 0x02
   13480:	91 83       	std	Z+1, r25	; 0x01
   13482:	80 83       	st	Z, r24
	}

	pTaskInfo->pBuf->gotConfig = FALSE;
   13484:	d6 01       	movw	r26, r12
   13486:	14 96       	adiw	r26, 0x04	; 4
   13488:	ed 91       	ld	r30, X+
   1348a:	fc 91       	ld	r31, X
   1348c:	15 97       	sbiw	r26, 0x05	; 5
   1348e:	e5 5a       	subi	r30, 0xA5	; 165
   13490:	fa 4f       	sbci	r31, 0xFA	; 250
   13492:	10 82       	st	Z, r1
	pTaskInfo->pBuf->pressureInstalled = FALSE;
   13494:	32 97       	sbiw	r30, 0x02	; 2
   13496:	11 92       	st	Z+, r1
	pTaskInfo->pBuf->pressureBytes = 0;
   13498:	10 82       	st	Z, r1

	return SUCCESS;
}
   1349a:	8f ef       	ldi	r24, 0xFF	; 255
   1349c:	0f 90       	pop	r0
   1349e:	0f 90       	pop	r0
   134a0:	cf 91       	pop	r28
   134a2:	df 91       	pop	r29
   134a4:	1f 91       	pop	r17
   134a6:	0f 91       	pop	r16
   134a8:	ef 90       	pop	r14
   134aa:	df 90       	pop	r13
   134ac:	cf 90       	pop	r12
   134ae:	08 95       	ret

000134b0 <SerialPortPassThroughATM>:
	return 0;
}

void SerialPortPassThroughATM(uint8_t port)
{
	readyForSerialPassThru = TRUE;
   134b0:	8f ef       	ldi	r24, 0xFF	; 255
   134b2:	80 93 9e a1 	sts	0xA19E, r24

	while(1)
	{
		OSTimeDlyHMSM(1,0,0,0);
   134b6:	81 e0       	ldi	r24, 0x01	; 1
   134b8:	60 e0       	ldi	r22, 0x00	; 0
   134ba:	40 e0       	ldi	r20, 0x00	; 0
   134bc:	20 e0       	ldi	r18, 0x00	; 0
   134be:	30 e0       	ldi	r19, 0x00	; 0
   134c0:	0e 94 2a 2e 	call	0x5c54	; 0x5c54 <OSTimeDlyHMSM>
   134c4:	f8 cf       	rjmp	.-16     	; 0x134b6 <SerialPortPassThroughATM+0x6>

000134c6 <TeledyneATM88X_ParseATYBaudBlock>:
	return 0;
}


uint8_t	TeledyneATM88X_ParseATYBaudBlock(char* pBuf, uint16_t len, PMODEM_ATX_BLOCK pResult)
{
   134c6:	bf 92       	push	r11
   134c8:	cf 92       	push	r12
   134ca:	df 92       	push	r13
   134cc:	ef 92       	push	r14
   134ce:	ff 92       	push	r15
   134d0:	0f 93       	push	r16
   134d2:	1f 93       	push	r17
   134d4:	cf 93       	push	r28
   134d6:	df 93       	push	r29
   134d8:	8c 01       	movw	r16, r24
   134da:	7a 01       	movw	r14, r20
	int8_t negative = 1;

	pResult->baud = atoi(pBuf);
   134dc:	0e 94 59 ef 	call	0x1deb2	; 0x1deb2 <atoi>
   134e0:	f7 01       	movw	r30, r14
   134e2:	91 83       	std	Z+1, r25	; 0x01
   134e4:	80 83       	st	Z, r24

	//Acquisition Stats 
	pBuf += 38;
   134e6:	e8 01       	movw	r28, r16
   134e8:	a6 96       	adiw	r28, 0x26	; 38
	if(*pBuf == '-')
   134ea:	f8 01       	movw	r30, r16
   134ec:	86 a1       	ldd	r24, Z+38	; 0x26
   134ee:	8d 32       	cpi	r24, 0x2D	; 45
   134f0:	19 f4       	brne	.+6      	; 0x134f8 <TeledyneATM88X_ParseATYBaudBlock+0x32>
   134f2:	dd 24       	eor	r13, r13
   134f4:	da 94       	dec	r13
   134f6:	02 c0       	rjmp	.+4      	; 0x134fc <TeledyneATM88X_ParseATYBaudBlock+0x36>
   134f8:	dd 24       	eor	r13, r13
   134fa:	d3 94       	inc	r13
		negative = -1;
	pBuf++;
	pResult->acqSNR = atoi(pBuf) * 10;
   134fc:	ce 01       	movw	r24, r28
   134fe:	01 96       	adiw	r24, 0x01	; 1
   13500:	0e 94 59 ef 	call	0x1deb2	; 0x1deb2 <atoi>
   13504:	9c 01       	movw	r18, r24
   13506:	8c 01       	movw	r16, r24
   13508:	43 e0       	ldi	r20, 0x03	; 3
   1350a:	00 0f       	add	r16, r16
   1350c:	11 1f       	adc	r17, r17
   1350e:	4a 95       	dec	r20
   13510:	e1 f7       	brne	.-8      	; 0x1350a <TeledyneATM88X_ParseATYBaudBlock+0x44>
   13512:	22 0f       	add	r18, r18
   13514:	33 1f       	adc	r19, r19
   13516:	02 0f       	add	r16, r18
   13518:	13 1f       	adc	r17, r19
   1351a:	f7 01       	movw	r30, r14
   1351c:	13 83       	std	Z+3, r17	; 0x03
   1351e:	02 83       	std	Z+2, r16	; 0x02
	pBuf += 3; 
	pResult->acqSNR += atoi(pBuf);
   13520:	ce 01       	movw	r24, r28
   13522:	04 96       	adiw	r24, 0x04	; 4
   13524:	0e 94 59 ef 	call	0x1deb2	; 0x1deb2 <atoi>
	pResult->acqSNR *= negative;
   13528:	2d 2d       	mov	r18, r13
   1352a:	33 27       	eor	r19, r19
   1352c:	27 fd       	sbrc	r18, 7
   1352e:	30 95       	com	r19
   13530:	08 0f       	add	r16, r24
   13532:	19 1f       	adc	r17, r25
   13534:	20 9f       	mul	r18, r16
   13536:	c0 01       	movw	r24, r0
   13538:	21 9f       	mul	r18, r17
   1353a:	90 0d       	add	r25, r0
   1353c:	30 9f       	mul	r19, r16
   1353e:	90 0d       	add	r25, r0
   13540:	11 24       	eor	r1, r1
   13542:	f7 01       	movw	r30, r14
   13544:	93 83       	std	Z+3, r25	; 0x03
   13546:	82 83       	std	Z+2, r24	; 0x02

	pBuf += 6;
	pResult->acqMPD = atoi(pBuf) * 10;
   13548:	ce 01       	movw	r24, r28
   1354a:	0a 96       	adiw	r24, 0x0a	; 10
   1354c:	0e 94 59 ef 	call	0x1deb2	; 0x1deb2 <atoi>
   13550:	9c 01       	movw	r18, r24
   13552:	8c 01       	movw	r16, r24
   13554:	83 e0       	ldi	r24, 0x03	; 3
   13556:	00 0f       	add	r16, r16
   13558:	11 1f       	adc	r17, r17
   1355a:	8a 95       	dec	r24
   1355c:	e1 f7       	brne	.-8      	; 0x13556 <TeledyneATM88X_ParseATYBaudBlock+0x90>
   1355e:	22 0f       	add	r18, r18
   13560:	33 1f       	adc	r19, r19
   13562:	02 0f       	add	r16, r18
   13564:	13 1f       	adc	r17, r19
   13566:	f7 01       	movw	r30, r14
   13568:	15 83       	std	Z+5, r17	; 0x05
   1356a:	04 83       	std	Z+4, r16	; 0x04
	pBuf += 3; 
	pResult->acqMPD += atoi(pBuf);
   1356c:	ce 01       	movw	r24, r28
   1356e:	0d 96       	adiw	r24, 0x0d	; 13
   13570:	0e 94 59 ef 	call	0x1deb2	; 0x1deb2 <atoi>
   13574:	08 0f       	add	r16, r24
   13576:	19 1f       	adc	r17, r25
   13578:	f7 01       	movw	r30, r14
   1357a:	15 83       	std	Z+5, r17	; 0x05
   1357c:	04 83       	std	Z+4, r16	; 0x04


	pBuf += 6;
   1357e:	a3 e1       	ldi	r26, 0x13	; 19
   13580:	ca 2e       	mov	r12, r26
   13582:	d1 2c       	mov	r13, r1
   13584:	cc 0e       	add	r12, r28
   13586:	dd 1e       	adc	r13, r29
	negative = 1;
	if(*pBuf == '-')
   13588:	8b 89       	ldd	r24, Y+19	; 0x13
   1358a:	8d 32       	cpi	r24, 0x2D	; 45
   1358c:	19 f4       	brne	.+6      	; 0x13594 <TeledyneATM88X_ParseATYBaudBlock+0xce>
   1358e:	bb 24       	eor	r11, r11
   13590:	ba 94       	dec	r11
   13592:	02 c0       	rjmp	.+4      	; 0x13598 <TeledyneATM88X_ParseATYBaudBlock+0xd2>
   13594:	bb 24       	eor	r11, r11
   13596:	b3 94       	inc	r11
		negative = -1;
	pBuf++;
	pResult->acqSPD = atoi(pBuf) * 10;
   13598:	c6 01       	movw	r24, r12
   1359a:	01 96       	adiw	r24, 0x01	; 1
   1359c:	0e 94 59 ef 	call	0x1deb2	; 0x1deb2 <atoi>
   135a0:	9c 01       	movw	r18, r24
   135a2:	8c 01       	movw	r16, r24
   135a4:	f3 e0       	ldi	r31, 0x03	; 3
   135a6:	00 0f       	add	r16, r16
   135a8:	11 1f       	adc	r17, r17
   135aa:	fa 95       	dec	r31
   135ac:	e1 f7       	brne	.-8      	; 0x135a6 <TeledyneATM88X_ParseATYBaudBlock+0xe0>
   135ae:	22 0f       	add	r18, r18
   135b0:	33 1f       	adc	r19, r19
   135b2:	02 0f       	add	r16, r18
   135b4:	13 1f       	adc	r17, r19
   135b6:	f7 01       	movw	r30, r14
   135b8:	17 83       	std	Z+7, r17	; 0x07
   135ba:	06 83       	std	Z+6, r16	; 0x06
	pBuf += 3; 
	pResult->acqSPD += atoi(pBuf);
   135bc:	c6 01       	movw	r24, r12
   135be:	04 96       	adiw	r24, 0x04	; 4
   135c0:	0e 94 59 ef 	call	0x1deb2	; 0x1deb2 <atoi>
	pResult->acqSPD *= negative;
   135c4:	2b 2d       	mov	r18, r11
   135c6:	33 27       	eor	r19, r19
   135c8:	27 fd       	sbrc	r18, 7
   135ca:	30 95       	com	r19
   135cc:	08 0f       	add	r16, r24
   135ce:	19 1f       	adc	r17, r25
   135d0:	20 9f       	mul	r18, r16
   135d2:	c0 01       	movw	r24, r0
   135d4:	21 9f       	mul	r18, r17
   135d6:	90 0d       	add	r25, r0
   135d8:	30 9f       	mul	r19, r16
   135da:	90 0d       	add	r25, r0
   135dc:	11 24       	eor	r1, r1
   135de:	f7 01       	movw	r30, r14
   135e0:	97 83       	std	Z+7, r25	; 0x07
   135e2:	86 83       	std	Z+6, r24	; 0x06

	
	
	//Header Stats
	pBuf += 20;
   135e4:	e6 01       	movw	r28, r12
   135e6:	68 96       	adiw	r28, 0x18	; 24
	if(*pBuf == 'P')
   135e8:	f6 01       	movw	r30, r12
   135ea:	80 8d       	ldd	r24, Z+24	; 0x18
   135ec:	80 35       	cpi	r24, 0x50	; 80
   135ee:	21 f4       	brne	.+8      	; 0x135f8 <TeledyneATM88X_ParseATYBaudBlock+0x132>
		pResult->hdrCRC = 1;
   135f0:	81 e0       	ldi	r24, 0x01	; 1
   135f2:	f7 01       	movw	r30, r14
   135f4:	80 87       	std	Z+8, r24	; 0x08
   135f6:	02 c0       	rjmp	.+4      	; 0x135fc <TeledyneATM88X_ParseATYBaudBlock+0x136>
	else
		pResult->hdrCRC = 0;
   135f8:	f7 01       	movw	r30, r14
   135fa:	10 86       	std	Z+8, r1	; 0x08

	pBuf += 9;
	pResult->hdrSNR = atoi(pBuf) * 10;
   135fc:	ce 01       	movw	r24, r28
   135fe:	09 96       	adiw	r24, 0x09	; 9
   13600:	0e 94 59 ef 	call	0x1deb2	; 0x1deb2 <atoi>
   13604:	9c 01       	movw	r18, r24
   13606:	8c 01       	movw	r16, r24
   13608:	73 e0       	ldi	r23, 0x03	; 3
   1360a:	00 0f       	add	r16, r16
   1360c:	11 1f       	adc	r17, r17
   1360e:	7a 95       	dec	r23
   13610:	e1 f7       	brne	.-8      	; 0x1360a <TeledyneATM88X_ParseATYBaudBlock+0x144>
   13612:	22 0f       	add	r18, r18
   13614:	33 1f       	adc	r19, r19
   13616:	02 0f       	add	r16, r18
   13618:	13 1f       	adc	r17, r19
   1361a:	f7 01       	movw	r30, r14
   1361c:	12 87       	std	Z+10, r17	; 0x0a
   1361e:	01 87       	std	Z+9, r16	; 0x09
	pBuf += 3; 
	pResult->hdrSNR += atoi(pBuf);
   13620:	ce 01       	movw	r24, r28
   13622:	0c 96       	adiw	r24, 0x0c	; 12
   13624:	0e 94 59 ef 	call	0x1deb2	; 0x1deb2 <atoi>
   13628:	08 0f       	add	r16, r24
   1362a:	19 1f       	adc	r17, r25
   1362c:	f7 01       	movw	r30, r14
   1362e:	12 87       	std	Z+10, r17	; 0x0a
   13630:	01 87       	std	Z+9, r16	; 0x09

	pBuf += 8;
	pResult->hdrCCERR = atoi(pBuf);
   13632:	ce 01       	movw	r24, r28
   13634:	44 96       	adiw	r24, 0x14	; 20
   13636:	0e 94 59 ef 	call	0x1deb2	; 0x1deb2 <atoi>
   1363a:	f7 01       	movw	r30, r14
   1363c:	94 87       	std	Z+12, r25	; 0x0c
   1363e:	83 87       	std	Z+11, r24	; 0x0b



	//Data
	pBuf += 9;
	pResult->dataMOD = atoi(pBuf);	
   13640:	ce 01       	movw	r24, r28
   13642:	4d 96       	adiw	r24, 0x1d	; 29
   13644:	0e 94 59 ef 	call	0x1deb2	; 0x1deb2 <atoi>
   13648:	f7 01       	movw	r30, r14
   1364a:	96 87       	std	Z+14, r25	; 0x0e
   1364c:	85 87       	std	Z+13, r24	; 0x0d

	pBuf += 7;
	pResult->dataERR = atoi(pBuf);	
   1364e:	ce 01       	movw	r24, r28
   13650:	84 96       	adiw	r24, 0x24	; 36
   13652:	0e 94 59 ef 	call	0x1deb2	; 0x1deb2 <atoi>
   13656:	f7 01       	movw	r30, r14
   13658:	90 8b       	std	Z+16, r25	; 0x10
   1365a:	87 87       	std	Z+15, r24	; 0x0f

	pBuf += 8;
	pResult->dataSNR = atoi(pBuf) * 10;
   1365c:	ce 01       	movw	r24, r28
   1365e:	8c 96       	adiw	r24, 0x2c	; 44
   13660:	0e 94 59 ef 	call	0x1deb2	; 0x1deb2 <atoi>
   13664:	9c 01       	movw	r18, r24
   13666:	8c 01       	movw	r16, r24
   13668:	53 e0       	ldi	r21, 0x03	; 3
   1366a:	00 0f       	add	r16, r16
   1366c:	11 1f       	adc	r17, r17
   1366e:	5a 95       	dec	r21
   13670:	e1 f7       	brne	.-8      	; 0x1366a <TeledyneATM88X_ParseATYBaudBlock+0x1a4>
   13672:	22 0f       	add	r18, r18
   13674:	33 1f       	adc	r19, r19
   13676:	02 0f       	add	r16, r18
   13678:	13 1f       	adc	r17, r19
   1367a:	f7 01       	movw	r30, r14
   1367c:	12 8b       	std	Z+18, r17	; 0x12
   1367e:	01 8b       	std	Z+17, r16	; 0x11
	pBuf += 3; 
	pResult->dataSNR += atoi(pBuf);
   13680:	ce 01       	movw	r24, r28
   13682:	8f 96       	adiw	r24, 0x2f	; 47
   13684:	0e 94 59 ef 	call	0x1deb2	; 0x1deb2 <atoi>
   13688:	08 0f       	add	r16, r24
   1368a:	19 1f       	adc	r17, r25
   1368c:	f7 01       	movw	r30, r14
   1368e:	12 8b       	std	Z+18, r17	; 0x12
   13690:	01 8b       	std	Z+17, r16	; 0x11

	pBuf += 6;
	pResult->dataAGC = atoi(pBuf);
   13692:	ce 01       	movw	r24, r28
   13694:	c5 96       	adiw	r24, 0x35	; 53
   13696:	0e 94 59 ef 	call	0x1deb2	; 0x1deb2 <atoi>
   1369a:	f7 01       	movw	r30, r14
   1369c:	94 8b       	std	Z+20, r25	; 0x14
   1369e:	83 8b       	std	Z+19, r24	; 0x13
	
	pBuf += 7;	
   136a0:	2c e3       	ldi	r18, 0x3C	; 60
   136a2:	c2 2e       	mov	r12, r18
   136a4:	d1 2c       	mov	r13, r1
   136a6:	cc 0e       	add	r12, r28
   136a8:	dd 1e       	adc	r13, r29
	negative = 1;
	if(*pBuf == '-')
   136aa:	8c ad       	ldd	r24, Y+60	; 0x3c
   136ac:	8d 32       	cpi	r24, 0x2D	; 45
   136ae:	19 f4       	brne	.+6      	; 0x136b6 <TeledyneATM88X_ParseATYBaudBlock+0x1f0>
   136b0:	bb 24       	eor	r11, r11
   136b2:	ba 94       	dec	r11
   136b4:	02 c0       	rjmp	.+4      	; 0x136ba <TeledyneATM88X_ParseATYBaudBlock+0x1f4>
   136b6:	bb 24       	eor	r11, r11
   136b8:	b3 94       	inc	r11
		negative = -1;
	pBuf++;
	pResult->dataSPD = atoi(pBuf) * 10;
   136ba:	c6 01       	movw	r24, r12
   136bc:	01 96       	adiw	r24, 0x01	; 1
   136be:	0e 94 59 ef 	call	0x1deb2	; 0x1deb2 <atoi>
   136c2:	9c 01       	movw	r18, r24
   136c4:	8c 01       	movw	r16, r24
   136c6:	93 e0       	ldi	r25, 0x03	; 3
   136c8:	00 0f       	add	r16, r16
   136ca:	11 1f       	adc	r17, r17
   136cc:	9a 95       	dec	r25
   136ce:	e1 f7       	brne	.-8      	; 0x136c8 <TeledyneATM88X_ParseATYBaudBlock+0x202>
   136d0:	22 0f       	add	r18, r18
   136d2:	33 1f       	adc	r19, r19
   136d4:	02 0f       	add	r16, r18
   136d6:	13 1f       	adc	r17, r19
   136d8:	f7 01       	movw	r30, r14
   136da:	16 8b       	std	Z+22, r17	; 0x16
   136dc:	05 8b       	std	Z+21, r16	; 0x15
	pBuf += 3; 
	pResult->dataSPD += atoi(pBuf);
   136de:	c6 01       	movw	r24, r12
   136e0:	04 96       	adiw	r24, 0x04	; 4
   136e2:	0e 94 59 ef 	call	0x1deb2	; 0x1deb2 <atoi>
	pResult->dataSPD *= negative;
   136e6:	2b 2d       	mov	r18, r11
   136e8:	33 27       	eor	r19, r19
   136ea:	27 fd       	sbrc	r18, 7
   136ec:	30 95       	com	r19
   136ee:	08 0f       	add	r16, r24
   136f0:	19 1f       	adc	r17, r25
   136f2:	20 9f       	mul	r18, r16
   136f4:	c0 01       	movw	r24, r0
   136f6:	21 9f       	mul	r18, r17
   136f8:	90 0d       	add	r25, r0
   136fa:	30 9f       	mul	r19, r16
   136fc:	90 0d       	add	r25, r0
   136fe:	11 24       	eor	r1, r1
   13700:	f7 01       	movw	r30, r14
   13702:	96 8b       	std	Z+22, r25	; 0x16
   13704:	85 8b       	std	Z+21, r24	; 0x15

	if(pResult->baud != 2400)
   13706:	80 81       	ld	r24, Z
   13708:	91 81       	ldd	r25, Z+1	; 0x01
   1370a:	80 56       	subi	r24, 0x60	; 96
   1370c:	99 40       	sbci	r25, 0x09	; 9
   1370e:	39 f0       	breq	.+14     	; 0x1371e <TeledyneATM88X_ParseATYBaudBlock+0x258>
	{
		pBuf += 8;
		pResult->dataCCERR = atoi(pBuf);
   13710:	c6 01       	movw	r24, r12
   13712:	0c 96       	adiw	r24, 0x0c	; 12
   13714:	0e 94 59 ef 	call	0x1deb2	; 0x1deb2 <atoi>
   13718:	f7 01       	movw	r30, r14
   1371a:	90 8f       	std	Z+24, r25	; 0x18
   1371c:	87 8b       	std	Z+23, r24	; 0x17
	}

	return 0;
}
   1371e:	80 e0       	ldi	r24, 0x00	; 0
   13720:	df 91       	pop	r29
   13722:	cf 91       	pop	r28
   13724:	1f 91       	pop	r17
   13726:	0f 91       	pop	r16
   13728:	ff 90       	pop	r15
   1372a:	ef 90       	pop	r14
   1372c:	df 90       	pop	r13
   1372e:	cf 90       	pop	r12
   13730:	bf 90       	pop	r11
   13732:	08 95       	ret

00013734 <TeledyneATM88X_ParseATY>:
	}	
	return 0;
}

uint8_t TeledyneATM88X_ParseATY(PTELEDYNE_ATM_88X_TASK pTaskInfo)
{
   13734:	5f 92       	push	r5
   13736:	6f 92       	push	r6
   13738:	7f 92       	push	r7
   1373a:	8f 92       	push	r8
   1373c:	9f 92       	push	r9
   1373e:	af 92       	push	r10
   13740:	bf 92       	push	r11
   13742:	cf 92       	push	r12
   13744:	df 92       	push	r13
   13746:	ef 92       	push	r14
   13748:	ff 92       	push	r15
   1374a:	0f 93       	push	r16
   1374c:	1f 93       	push	r17
   1374e:	df 93       	push	r29
   13750:	cf 93       	push	r28
   13752:	00 d0       	rcall	.+0      	; 0x13754 <TeledyneATM88X_ParseATY+0x20>
   13754:	00 d0       	rcall	.+0      	; 0x13756 <TeledyneATM88X_ParseATY+0x22>
   13756:	cd b7       	in	r28, 0x3d	; 61
   13758:	de b7       	in	r29, 0x3e	; 62
   1375a:	6c 01       	movw	r12, r24
	char temp[6];
	char* start;

	memset(pTaskInfo->pBuf->reportATYData.atxBlocks, 0, 6 * sizeof(MODEM_ATX_BLOCK));
   1375c:	dc 01       	movw	r26, r24
   1375e:	14 96       	adiw	r26, 0x04	; 4
   13760:	8d 91       	ld	r24, X+
   13762:	9c 91       	ld	r25, X
   13764:	15 97       	sbiw	r26, 0x05	; 5
   13766:	88 5d       	subi	r24, 0xD8	; 216
   13768:	9a 4f       	sbci	r25, 0xFA	; 250
   1376a:	fc 01       	movw	r30, r24
   1376c:	86 e9       	ldi	r24, 0x96	; 150
   1376e:	df 01       	movw	r26, r30
   13770:	1d 92       	st	X+, r1
   13772:	8a 95       	dec	r24
   13774:	e9 f7       	brne	.-6      	; 0x13770 <TeledyneATM88X_ParseATY+0x3c>
   13776:	ee 24       	eor	r14, r14
   13778:	ff 24       	eor	r15, r15

	for(int i = 0; i<6; i++)
	{
		memset(temp, 0, 6);
   1377a:	e6 e0       	ldi	r30, 0x06	; 6
   1377c:	5e 2e       	mov	r5, r30
   1377e:	5e 01       	movw	r10, r28
   13780:	08 94       	sec
   13782:	a1 1c       	adc	r10, r1
   13784:	b1 1c       	adc	r11, r1
		sprintf(temp, "%05d", pTaskInfo->pBuf->baud[i]);
   13786:	74 ea       	ldi	r23, 0xA4	; 164
   13788:	67 2e       	mov	r6, r23
   1378a:	74 e0       	ldi	r23, 0x04	; 4
   1378c:	77 2e       	mov	r7, r23
		start = strstr(pTaskInfo->pBuf->bufferRx, temp);


		if(start != (char*)-1)
		{
			TeledyneATM88X_ParseATYBaudBlock(start, 146, &pTaskInfo->pBuf->reportATYData.atxBlocks[i]);
   1378e:	69 e1       	ldi	r22, 0x19	; 25
   13790:	86 2e       	mov	r8, r22
   13792:	91 2c       	mov	r9, r1

	memset(pTaskInfo->pBuf->reportATYData.atxBlocks, 0, 6 * sizeof(MODEM_ATX_BLOCK));

	for(int i = 0; i<6; i++)
	{
		memset(temp, 0, 6);
   13794:	f5 01       	movw	r30, r10
   13796:	85 2d       	mov	r24, r5
   13798:	11 92       	st	Z+, r1
   1379a:	8a 95       	dec	r24
   1379c:	e9 f7       	brne	.-6      	; 0x13798 <TeledyneATM88X_ParseATY+0x64>
		sprintf(temp, "%05d", pTaskInfo->pBuf->baud[i]);
   1379e:	00 d0       	rcall	.+0      	; 0x137a0 <TeledyneATM88X_ParseATY+0x6c>
   137a0:	00 d0       	rcall	.+0      	; 0x137a2 <TeledyneATM88X_ParseATY+0x6e>
   137a2:	2d b7       	in	r18, 0x3d	; 61
   137a4:	3e b7       	in	r19, 0x3e	; 62
   137a6:	2f 5f       	subi	r18, 0xFF	; 255
   137a8:	3f 4f       	sbci	r19, 0xFF	; 255
   137aa:	ad b7       	in	r26, 0x3d	; 61
   137ac:	be b7       	in	r27, 0x3e	; 62
   137ae:	12 96       	adiw	r26, 0x02	; 2
   137b0:	bc 92       	st	X, r11
   137b2:	ae 92       	st	-X, r10
   137b4:	11 97       	sbiw	r26, 0x01	; 1
   137b6:	f9 01       	movw	r30, r18
   137b8:	73 82       	std	Z+3, r7	; 0x03
   137ba:	62 82       	std	Z+2, r6	; 0x02
   137bc:	d6 01       	movw	r26, r12
   137be:	14 96       	adiw	r26, 0x04	; 4
   137c0:	ed 91       	ld	r30, X+
   137c2:	fc 91       	ld	r31, X
   137c4:	15 97       	sbiw	r26, 0x05	; 5
   137c6:	c7 01       	movw	r24, r14
   137c8:	88 0f       	add	r24, r24
   137ca:	99 1f       	adc	r25, r25
   137cc:	e8 0f       	add	r30, r24
   137ce:	f9 1f       	adc	r31, r25
   137d0:	ee 53       	subi	r30, 0x3E	; 62
   137d2:	fa 4f       	sbci	r31, 0xFA	; 250
   137d4:	80 81       	ld	r24, Z
   137d6:	91 81       	ldd	r25, Z+1	; 0x01
   137d8:	f9 01       	movw	r30, r18
   137da:	95 83       	std	Z+5, r25	; 0x05
   137dc:	84 83       	std	Z+4, r24	; 0x04
   137de:	0e 94 2d f1 	call	0x1e25a	; 0x1e25a <sprintf>
		start = strstr(pTaskInfo->pBuf->bufferRx, temp);
   137e2:	d6 01       	movw	r26, r12
   137e4:	14 96       	adiw	r26, 0x04	; 4
   137e6:	0d 91       	ld	r16, X+
   137e8:	1c 91       	ld	r17, X
   137ea:	15 97       	sbiw	r26, 0x05	; 5
   137ec:	ed b7       	in	r30, 0x3d	; 61
   137ee:	fe b7       	in	r31, 0x3e	; 62
   137f0:	36 96       	adiw	r30, 0x06	; 6
   137f2:	0f b6       	in	r0, 0x3f	; 63
   137f4:	f8 94       	cli
   137f6:	fe bf       	out	0x3e, r31	; 62
   137f8:	0f be       	out	0x3f, r0	; 63
   137fa:	ed bf       	out	0x3d, r30	; 61
   137fc:	c8 01       	movw	r24, r16
   137fe:	80 50       	subi	r24, 0x00	; 0
   13800:	9f 4f       	sbci	r25, 0xFF	; 255
   13802:	b5 01       	movw	r22, r10
   13804:	0e 94 86 f0 	call	0x1e10c	; 0x1e10c <strstr>
   13808:	9c 01       	movw	r18, r24


		if(start != (char*)-1)
   1380a:	ff ef       	ldi	r31, 0xFF	; 255
   1380c:	8f 3f       	cpi	r24, 0xFF	; 255
   1380e:	9f 07       	cpc	r25, r31
   13810:	89 f0       	breq	.+34     	; 0x13834 <TeledyneATM88X_ParseATY+0x100>
		{
			TeledyneATM88X_ParseATYBaudBlock(start, 146, &pTaskInfo->pBuf->reportATYData.atxBlocks[i]);
   13812:	e8 9c       	mul	r14, r8
   13814:	c0 01       	movw	r24, r0
   13816:	e9 9c       	mul	r14, r9
   13818:	90 0d       	add	r25, r0
   1381a:	f8 9c       	mul	r15, r8
   1381c:	90 0d       	add	r25, r0
   1381e:	11 24       	eor	r1, r1
   13820:	88 5d       	subi	r24, 0xD8	; 216
   13822:	9a 4f       	sbci	r25, 0xFA	; 250
   13824:	08 0f       	add	r16, r24
   13826:	19 1f       	adc	r17, r25
   13828:	c9 01       	movw	r24, r18
   1382a:	62 e9       	ldi	r22, 0x92	; 146
   1382c:	70 e0       	ldi	r23, 0x00	; 0
   1382e:	a8 01       	movw	r20, r16
   13830:	0e 94 63 9a 	call	0x134c6	; 0x134c6 <TeledyneATM88X_ParseATYBaudBlock>
	char temp[6];
	char* start;

	memset(pTaskInfo->pBuf->reportATYData.atxBlocks, 0, 6 * sizeof(MODEM_ATX_BLOCK));

	for(int i = 0; i<6; i++)
   13834:	08 94       	sec
   13836:	e1 1c       	adc	r14, r1
   13838:	f1 1c       	adc	r15, r1
   1383a:	86 e0       	ldi	r24, 0x06	; 6
   1383c:	e8 16       	cp	r14, r24
   1383e:	f1 04       	cpc	r15, r1
   13840:	09 f0       	breq	.+2      	; 0x13844 <TeledyneATM88X_ParseATY+0x110>
   13842:	a8 cf       	rjmp	.-176    	; 0x13794 <TeledyneATM88X_ParseATY+0x60>
			TeledyneATM88X_ParseATYBaudBlock(start, 146, &pTaskInfo->pBuf->reportATYData.atxBlocks[i]);
		}
	}

	return 0;
}
   13844:	80 e0       	ldi	r24, 0x00	; 0
   13846:	26 96       	adiw	r28, 0x06	; 6
   13848:	0f b6       	in	r0, 0x3f	; 63
   1384a:	f8 94       	cli
   1384c:	de bf       	out	0x3e, r29	; 62
   1384e:	0f be       	out	0x3f, r0	; 63
   13850:	cd bf       	out	0x3d, r28	; 61
   13852:	cf 91       	pop	r28
   13854:	df 91       	pop	r29
   13856:	1f 91       	pop	r17
   13858:	0f 91       	pop	r16
   1385a:	ff 90       	pop	r15
   1385c:	ef 90       	pop	r14
   1385e:	df 90       	pop	r13
   13860:	cf 90       	pop	r12
   13862:	bf 90       	pop	r11
   13864:	af 90       	pop	r10
   13866:	9f 90       	pop	r9
   13868:	8f 90       	pop	r8
   1386a:	7f 90       	pop	r7
   1386c:	6f 90       	pop	r6
   1386e:	5f 90       	pop	r5
   13870:	08 95       	ret

00013872 <TeledyneATM88X_ParseATR>:




uint8_t TeledyneATM88X_ParseATR(PTELEDYNE_ATM_88X_TASK pTaskInfo)
{
   13872:	cf 93       	push	r28
   13874:	df 93       	push	r29
	char* temp = pTaskInfo->pBuf->bufferRx + 17;
   13876:	fc 01       	movw	r30, r24
   13878:	c4 81       	ldd	r28, Z+4	; 0x04
   1387a:	d5 81       	ldd	r29, Z+5	; 0x05

	if(strlen(pTaskInfo->pBuf->bufferRx) > 17)
   1387c:	de 01       	movw	r26, r28
   1387e:	a0 50       	subi	r26, 0x00	; 0
   13880:	bf 4f       	sbci	r27, 0xFF	; 255
   13882:	fd 01       	movw	r30, r26
   13884:	01 90       	ld	r0, Z+
   13886:	00 20       	and	r0, r0
   13888:	e9 f7       	brne	.-6      	; 0x13884 <TeledyneATM88X_ParseATR+0x12>
   1388a:	31 97       	sbiw	r30, 0x01	; 1
   1388c:	ea 1b       	sub	r30, r26
   1388e:	fb 0b       	sbc	r31, r27
   13890:	72 97       	sbiw	r30, 0x12	; 18
   13892:	78 f0       	brcs	.+30     	; 0x138b2 <TeledyneATM88X_ParseATR+0x40>
	{
		pTaskInfo->pBuf->reportATYData.range = atoi(temp);
   13894:	ce 01       	movw	r24, r28
   13896:	8f 5e       	subi	r24, 0xEF	; 239
   13898:	9e 4f       	sbci	r25, 0xFE	; 254
   1389a:	0e 94 59 ef 	call	0x1deb2	; 0x1deb2 <atoi>
   1389e:	c2 54       	subi	r28, 0x42	; 66
   138a0:	da 4f       	sbci	r29, 0xFA	; 250
   138a2:	aa 27       	eor	r26, r26
   138a4:	97 fd       	sbrc	r25, 7
   138a6:	a0 95       	com	r26
   138a8:	ba 2f       	mov	r27, r26
   138aa:	88 83       	st	Y, r24
   138ac:	99 83       	std	Y+1, r25	; 0x01
   138ae:	aa 83       	std	Y+2, r26	; 0x02
   138b0:	bb 83       	std	Y+3, r27	; 0x03
	}	
	return 0;
}
   138b2:	80 e0       	ldi	r24, 0x00	; 0
   138b4:	df 91       	pop	r29
   138b6:	cf 91       	pop	r28
   138b8:	08 95       	ret

000138ba <TeledyneATM88X_QueueFile>:
	return retval;
}


uint8_t TeledyneATM88X_QueueFile(PTELEDYNE_ATM_88X_TASK pTaskInfo, uint32_t fileID)
{
   138ba:	8f 92       	push	r8
   138bc:	9f 92       	push	r9
   138be:	af 92       	push	r10
   138c0:	bf 92       	push	r11
   138c2:	cf 92       	push	r12
   138c4:	df 92       	push	r13
   138c6:	ef 92       	push	r14
   138c8:	ff 92       	push	r15
   138ca:	0f 93       	push	r16
   138cc:	1f 93       	push	r17
   138ce:	df 93       	push	r29
   138d0:	cf 93       	push	r28
   138d2:	cd b7       	in	r28, 0x3d	; 61
   138d4:	de b7       	in	r29, 0x3e	; 62
   138d6:	62 97       	sbiw	r28, 0x12	; 18
   138d8:	0f b6       	in	r0, 0x3f	; 63
   138da:	f8 94       	cli
   138dc:	de bf       	out	0x3e, r29	; 62
   138de:	0f be       	out	0x3f, r0	; 63
   138e0:	cd bf       	out	0x3d, r28	; 61
   138e2:	4c 01       	movw	r8, r24
   138e4:	5a 01       	movw	r10, r20
   138e6:	6b 01       	movw	r12, r22
	uint8_t retval = FAIL;
	PFS_REPORT pReport;
	uint8_t err = 0;
   138e8:	19 82       	std	Y+1, r1	; 0x01
	tm* dateTime;
	time_t time;

	OSMutexPend(pMutexFloatQueue, INFINITE, &err);
   138ea:	80 91 51 19 	lds	r24, 0x1951
   138ee:	90 91 52 19 	lds	r25, 0x1952
   138f2:	60 e0       	ldi	r22, 0x00	; 0
   138f4:	70 e0       	ldi	r23, 0x00	; 0
   138f6:	ae 01       	movw	r20, r28
   138f8:	4f 5f       	subi	r20, 0xFF	; 255
   138fa:	5f 4f       	sbci	r21, 0xFF	; 255
   138fc:	0e 94 c2 28 	call	0x5184	; 0x5184 <OSMutexPend>

	pReport = (PFS_REPORT)&(txFloatData[headFloatTx]);
   13900:	80 91 93 07 	lds	r24, 0x0793
   13904:	90 e0       	ldi	r25, 0x00	; 0
   13906:	26 e3       	ldi	r18, 0x36	; 54
   13908:	31 e0       	ldi	r19, 0x01	; 1
   1390a:	82 9f       	mul	r24, r18
   1390c:	80 01       	movw	r16, r0
   1390e:	83 9f       	mul	r24, r19
   13910:	10 0d       	add	r17, r0
   13912:	92 9f       	mul	r25, r18
   13914:	10 0d       	add	r17, r0
   13916:	11 24       	eor	r1, r1
   13918:	03 5a       	subi	r16, 0xA3	; 163
   1391a:	16 45       	sbci	r17, 0x56	; 86

	memset(pReport, 0, sizeof(FS_REPORT));
   1391c:	8a e5       	ldi	r24, 0x5A	; 90
   1391e:	d8 01       	movw	r26, r16
   13920:	1d 92       	st	X+, r1
   13922:	8a 95       	dec	r24
   13924:	e9 f7       	brne	.-6      	; 0x13920 <TeledyneATM88X_QueueFile+0x66>

	pReport->headers.length  = sizeof(FS_REPORT) + CRC16_SIZE;
   13926:	8c e5       	ldi	r24, 0x5C	; 92
   13928:	90 e0       	ldi	r25, 0x00	; 0
   1392a:	f8 01       	movw	r30, r16
   1392c:	91 83       	std	Z+1, r25	; 0x01
   1392e:	80 83       	st	Z, r24
	pReport->headers.destination = FLOAT_FS_INTERFACE;
   13930:	85 e0       	ldi	r24, 0x05	; 5
   13932:	90 e0       	ldi	r25, 0x00	; 0
   13934:	93 83       	std	Z+3, r25	; 0x03
   13936:	82 83       	std	Z+2, r24	; 0x02
	pReport->type = NEW_FILE_AVAILABLE;
   13938:	80 e6       	ldi	r24, 0x60	; 96
   1393a:	84 87       	std	Z+12, r24	; 0x0c

	time=gettime();
   1393c:	0e 94 3c 34 	call	0x6878	; 0x6878 <gettime>
   13940:	6a 83       	std	Y+2, r22	; 0x02
   13942:	7b 83       	std	Y+3, r23	; 0x03
   13944:	8c 83       	std	Y+4, r24	; 0x04
   13946:	9d 83       	std	Y+5, r25	; 0x05

	//Need to fill in these values appropriately
	pReport->newFile.fileSize = fileOutSize[pTaskInfo->portNum];
   13948:	d4 01       	movw	r26, r8
   1394a:	11 96       	adiw	r26, 0x01	; 1
   1394c:	ec 91       	ld	r30, X
   1394e:	f0 e0       	ldi	r31, 0x00	; 0
   13950:	ee 0f       	add	r30, r30
   13952:	ff 1f       	adc	r31, r31
   13954:	ef 5a       	subi	r30, 0xAF	; 175
   13956:	f2 46       	sbci	r31, 0x62	; 98
   13958:	80 81       	ld	r24, Z
   1395a:	91 81       	ldd	r25, Z+1	; 0x01
   1395c:	a0 e0       	ldi	r26, 0x00	; 0
   1395e:	b0 e0       	ldi	r27, 0x00	; 0
   13960:	f8 01       	movw	r30, r16
   13962:	82 8f       	std	Z+26, r24	; 0x1a
   13964:	93 8f       	std	Z+27, r25	; 0x1b
   13966:	a4 8f       	std	Z+28, r26	; 0x1c
   13968:	b5 8f       	std	Z+29, r27	; 0x1d
	dateTime = gmtime(&time);
   1396a:	b2 e0       	ldi	r27, 0x02	; 2
   1396c:	eb 2e       	mov	r14, r27
   1396e:	f1 2c       	mov	r15, r1
   13970:	ec 0e       	add	r14, r28
   13972:	fd 1e       	adc	r15, r29
   13974:	c7 01       	movw	r24, r14
   13976:	0e 94 32 35 	call	0x6a64	; 0x6a64 <gmtime>
   1397a:	fc 01       	movw	r30, r24
	pReport->newFile.creationDate.day = dateTime->tm_mday;
   1397c:	86 81       	ldd	r24, Z+6	; 0x06
   1397e:	d8 01       	movw	r26, r16
   13980:	92 96       	adiw	r26, 0x22	; 34
   13982:	8c 93       	st	X, r24
   13984:	92 97       	sbiw	r26, 0x22	; 34
	pReport->newFile.creationDate.hour = dateTime->tm_hour;
   13986:	84 81       	ldd	r24, Z+4	; 0x04
   13988:	5e 96       	adiw	r26, 0x1e	; 30
   1398a:	8c 93       	st	X, r24
   1398c:	5e 97       	sbiw	r26, 0x1e	; 30
	pReport->newFile.creationDate.minute = dateTime->tm_min;
   1398e:	82 81       	ldd	r24, Z+2	; 0x02
   13990:	5f 96       	adiw	r26, 0x1f	; 31
   13992:	8c 93       	st	X, r24
   13994:	5f 97       	sbiw	r26, 0x1f	; 31
	pReport->newFile.creationDate.month = dateTime->tm_mon + 1;
   13996:	80 85       	ldd	r24, Z+8	; 0x08
   13998:	8f 5f       	subi	r24, 0xFF	; 255
   1399a:	91 96       	adiw	r26, 0x21	; 33
   1399c:	8c 93       	st	X, r24
   1399e:	91 97       	sbiw	r26, 0x21	; 33
	pReport->newFile.creationDate.second = dateTime->tm_sec;
   139a0:	80 81       	ld	r24, Z
   139a2:	90 96       	adiw	r26, 0x20	; 32
   139a4:	8c 93       	st	X, r24
   139a6:	90 97       	sbiw	r26, 0x20	; 32
	pReport->newFile.creationDate.year = (uint8_t)(dateTime->tm_year - 100);
   139a8:	82 85       	ldd	r24, Z+10	; 0x0a
   139aa:	84 56       	subi	r24, 0x64	; 100
   139ac:	93 96       	adiw	r26, 0x23	; 35
   139ae:	8c 93       	st	X, r24
	dateTime = gmtime(&time);
   139b0:	c7 01       	movw	r24, r14
   139b2:	0e 94 32 35 	call	0x6a64	; 0x6a64 <gmtime>
   139b6:	fc 01       	movw	r30, r24
	pReport->newFile.modifiedDate.day = dateTime->tm_mday;
   139b8:	86 81       	ldd	r24, Z+6	; 0x06
   139ba:	d8 01       	movw	r26, r16
   139bc:	98 96       	adiw	r26, 0x28	; 40
   139be:	8c 93       	st	X, r24
   139c0:	98 97       	sbiw	r26, 0x28	; 40
	pReport->newFile.modifiedDate.hour = dateTime->tm_hour;
   139c2:	84 81       	ldd	r24, Z+4	; 0x04
   139c4:	94 96       	adiw	r26, 0x24	; 36
   139c6:	8c 93       	st	X, r24
   139c8:	94 97       	sbiw	r26, 0x24	; 36
	pReport->newFile.modifiedDate.minute = dateTime->tm_min;
   139ca:	82 81       	ldd	r24, Z+2	; 0x02
   139cc:	95 96       	adiw	r26, 0x25	; 37
   139ce:	8c 93       	st	X, r24
   139d0:	95 97       	sbiw	r26, 0x25	; 37
	pReport->newFile.modifiedDate.month = dateTime->tm_mon + 1;
   139d2:	80 85       	ldd	r24, Z+8	; 0x08
   139d4:	8f 5f       	subi	r24, 0xFF	; 255
   139d6:	97 96       	adiw	r26, 0x27	; 39
   139d8:	8c 93       	st	X, r24
   139da:	97 97       	sbiw	r26, 0x27	; 39
	pReport->newFile.modifiedDate.second = dateTime->tm_sec;
   139dc:	80 81       	ld	r24, Z
   139de:	96 96       	adiw	r26, 0x26	; 38
   139e0:	8c 93       	st	X, r24
   139e2:	96 97       	sbiw	r26, 0x26	; 38
	pReport->newFile.modifiedDate.year = (uint8_t)(dateTime->tm_year - 100);
   139e4:	82 85       	ldd	r24, Z+10	; 0x0a
   139e6:	84 56       	subi	r24, 0x64	; 100
   139e8:	99 96       	adiw	r26, 0x29	; 41
   139ea:	8c 93       	st	X, r24
   139ec:	99 97       	sbiw	r26, 0x29	; 41

	pReport->newFile.fileAttributes = 0;
   139ee:	9a 96       	adiw	r26, 0x2a	; 42
   139f0:	1c 92       	st	X, r1
	memset(&pReport->newFile.calculatedMD5, 0, sizeof(MD5));
   139f2:	c8 01       	movw	r24, r16
   139f4:	cf 96       	adiw	r24, 0x3f	; 63
   139f6:	20 e1       	ldi	r18, 0x10	; 16
   139f8:	dc 01       	movw	r26, r24
   139fa:	82 2f       	mov	r24, r18
   139fc:	1d 92       	st	X+, r1
   139fe:	8a 95       	dec	r24
   13a00:	e9 f7       	brne	.-6      	; 0x139fc <TeledyneATM88X_QueueFile+0x142>
	memset(&pReport->newFile.providedMD5, 0, sizeof(MD5));
   13a02:	c8 01       	movw	r24, r16
   13a04:	8d 96       	adiw	r24, 0x2d	; 45
   13a06:	dc 01       	movw	r26, r24
   13a08:	1d 92       	st	X+, r1
   13a0a:	2a 95       	dec	r18
   13a0c:	e9 f7       	brne	.-6      	; 0x13a08 <TeledyneATM88X_QueueFile+0x14e>
	pReport->newFile.calculatedCRC = 0;
   13a0e:	f8 01       	movw	r30, r16
   13a10:	16 ae       	std	Z+62, r1	; 0x3e
   13a12:	15 ae       	std	Z+61, r1	; 0x3d
	pReport->newFile.providedCRC = 0;
   13a14:	14 a6       	std	Z+44, r1	; 0x2c
   13a16:	13 a6       	std	Z+43, r1	; 0x2b
	pReport->newFile.storageControllerAddress = mainTaskAddress | pTaskInfo->portNum;
   13a18:	d4 01       	movw	r26, r8
   13a1a:	11 96       	adiw	r26, 0x01	; 1
   13a1c:	8c 91       	ld	r24, X
   13a1e:	90 e0       	ldi	r25, 0x00	; 0
   13a20:	20 91 e4 03 	lds	r18, 0x03E4
   13a24:	30 91 e5 03 	lds	r19, 0x03E5
   13a28:	82 2b       	or	r24, r18
   13a2a:	93 2b       	or	r25, r19
   13a2c:	96 87       	std	Z+14, r25	; 0x0e
   13a2e:	85 87       	std	Z+13, r24	; 0x0d

	char fileName[13];
	sprintf(fileName, "%.8lX.txt", fileID);
   13a30:	ed b7       	in	r30, 0x3d	; 61
   13a32:	fe b7       	in	r31, 0x3e	; 62
   13a34:	38 97       	sbiw	r30, 0x08	; 8
   13a36:	0f b6       	in	r0, 0x3f	; 63
   13a38:	f8 94       	cli
   13a3a:	fe bf       	out	0x3e, r31	; 62
   13a3c:	0f be       	out	0x3f, r0	; 63
   13a3e:	ed bf       	out	0x3d, r30	; 61
   13a40:	31 96       	adiw	r30, 0x01	; 1
   13a42:	a6 e0       	ldi	r26, 0x06	; 6
   13a44:	ea 2e       	mov	r14, r26
   13a46:	f1 2c       	mov	r15, r1
   13a48:	ec 0e       	add	r14, r28
   13a4a:	fd 1e       	adc	r15, r29
   13a4c:	ad b7       	in	r26, 0x3d	; 61
   13a4e:	be b7       	in	r27, 0x3e	; 62
   13a50:	12 96       	adiw	r26, 0x02	; 2
   13a52:	fc 92       	st	X, r15
   13a54:	ee 92       	st	-X, r14
   13a56:	11 97       	sbiw	r26, 0x01	; 1
   13a58:	89 ea       	ldi	r24, 0xA9	; 169
   13a5a:	94 e0       	ldi	r25, 0x04	; 4
   13a5c:	93 83       	std	Z+3, r25	; 0x03
   13a5e:	82 83       	std	Z+2, r24	; 0x02
   13a60:	a4 82       	std	Z+4, r10	; 0x04
   13a62:	b5 82       	std	Z+5, r11	; 0x05
   13a64:	c6 82       	std	Z+6, r12	; 0x06
   13a66:	d7 82       	std	Z+7, r13	; 0x07
   13a68:	0e 94 2d f1 	call	0x1e25a	; 0x1e25a <sprintf>

	DotToPad(pReport->newFile.fileName, fileName);
   13a6c:	ed b7       	in	r30, 0x3d	; 61
   13a6e:	fe b7       	in	r31, 0x3e	; 62
   13a70:	38 96       	adiw	r30, 0x08	; 8
   13a72:	0f b6       	in	r0, 0x3f	; 63
   13a74:	f8 94       	cli
   13a76:	fe bf       	out	0x3e, r31	; 62
   13a78:	0f be       	out	0x3f, r0	; 63
   13a7a:	ed bf       	out	0x3d, r30	; 61
   13a7c:	c8 01       	movw	r24, r16
   13a7e:	0f 96       	adiw	r24, 0x0f	; 15
   13a80:	b7 01       	movw	r22, r14
   13a82:	0e 94 87 3e 	call	0x7d0e	; 0x7d0e <DotToPad>

	(headFloatTx < (MAX_FLOAT_BUFFERS - 1)) ? (headFloatTx++) : (headFloatTx = 0);
   13a86:	80 91 93 07 	lds	r24, 0x0793
   13a8a:	87 30       	cpi	r24, 0x07	; 7
   13a8c:	20 f4       	brcc	.+8      	; 0x13a96 <TeledyneATM88X_QueueFile+0x1dc>
   13a8e:	8f 5f       	subi	r24, 0xFF	; 255
   13a90:	80 93 93 07 	sts	0x0793, r24
   13a94:	02 c0       	rjmp	.+4      	; 0x13a9a <TeledyneATM88X_QueueFile+0x1e0>
   13a96:	10 92 93 07 	sts	0x0793, r1
	
	if(headFloatTx == tailFloatTx)
   13a9a:	90 91 93 07 	lds	r25, 0x0793
   13a9e:	80 91 94 07 	lds	r24, 0x0794
   13aa2:	98 17       	cp	r25, r24
   13aa4:	41 f4       	brne	.+16     	; 0x13ab6 <TeledyneATM88X_QueueFile+0x1fc>
	{
		(tailFloatTx < (MAX_FLOAT_BUFFERS - 1)) ? (tailFloatTx++) : (tailFloatTx = 0);
   13aa6:	97 30       	cpi	r25, 0x07	; 7
   13aa8:	20 f4       	brcc	.+8      	; 0x13ab2 <TeledyneATM88X_QueueFile+0x1f8>
   13aaa:	9f 5f       	subi	r25, 0xFF	; 255
   13aac:	90 93 94 07 	sts	0x0794, r25
   13ab0:	02 c0       	rjmp	.+4      	; 0x13ab6 <TeledyneATM88X_QueueFile+0x1fc>
   13ab2:	10 92 94 07 	sts	0x0794, r1
	}

	OSMutexPost(pMutexFloatQueue);
   13ab6:	80 91 51 19 	lds	r24, 0x1951
   13aba:	90 91 52 19 	lds	r25, 0x1952
   13abe:	0e 94 36 27 	call	0x4e6c	; 0x4e6c <OSMutexPost>

	return retval;
}
   13ac2:	80 e0       	ldi	r24, 0x00	; 0
   13ac4:	62 96       	adiw	r28, 0x12	; 18
   13ac6:	0f b6       	in	r0, 0x3f	; 63
   13ac8:	f8 94       	cli
   13aca:	de bf       	out	0x3e, r29	; 62
   13acc:	0f be       	out	0x3f, r0	; 63
   13ace:	cd bf       	out	0x3d, r28	; 61
   13ad0:	cf 91       	pop	r28
   13ad2:	df 91       	pop	r29
   13ad4:	1f 91       	pop	r17
   13ad6:	0f 91       	pop	r16
   13ad8:	ff 90       	pop	r15
   13ada:	ef 90       	pop	r14
   13adc:	df 90       	pop	r13
   13ade:	cf 90       	pop	r12
   13ae0:	bf 90       	pop	r11
   13ae2:	af 90       	pop	r10
   13ae4:	9f 90       	pop	r9
   13ae6:	8f 90       	pop	r8
   13ae8:	08 95       	ret

00013aea <TeledyneATM88X_Rx>:
	}
	return retval;
}

uint8_t TeledyneATM88X_Rx(PTELEDYNE_ATM_88X_TASK pTaskInfo, char* pBuffer, uint16_t* pLen, char* eol, int eolLen)
{
   13aea:	4f 92       	push	r4
   13aec:	5f 92       	push	r5
   13aee:	6f 92       	push	r6
   13af0:	7f 92       	push	r7
   13af2:	8f 92       	push	r8
   13af4:	9f 92       	push	r9
   13af6:	af 92       	push	r10
   13af8:	bf 92       	push	r11
   13afa:	cf 92       	push	r12
   13afc:	df 92       	push	r13
   13afe:	ef 92       	push	r14
   13b00:	ff 92       	push	r15
   13b02:	0f 93       	push	r16
   13b04:	1f 93       	push	r17
   13b06:	df 93       	push	r29
   13b08:	cf 93       	push	r28
   13b0a:	0f 92       	push	r0
   13b0c:	cd b7       	in	r28, 0x3d	; 61
   13b0e:	de b7       	in	r29, 0x3e	; 62
   13b10:	4c 01       	movw	r8, r24
   13b12:	f6 2e       	mov	r15, r22
   13b14:	e7 2e       	mov	r14, r23
   13b16:	6a 01       	movw	r12, r20
   13b18:	29 01       	movw	r4, r18
   13b1a:	38 01       	movw	r6, r16
	char* pChar = pBuffer;
	uint16_t count = 0;
//	const char eol[1] = {0x3E};
	BOOL done = FALSE;
	int compare = 0;
	uint8_t err = 0;
   13b1c:	19 82       	std	Y+1, r1	; 0x01
	char c = 0;


	c = (char) OSuartGetCharWait(pTaskInfo->portNum, 1920, &err);	//Wait 15 seconds for first character
   13b1e:	fc 01       	movw	r30, r24
   13b20:	81 81       	ldd	r24, Z+1	; 0x01
   13b22:	60 e8       	ldi	r22, 0x80	; 128
   13b24:	77 e0       	ldi	r23, 0x07	; 7
   13b26:	5e 01       	movw	r10, r28
   13b28:	08 94       	sec
   13b2a:	a1 1c       	adc	r10, r1
   13b2c:	b1 1c       	adc	r11, r1
   13b2e:	a5 01       	movw	r20, r10
   13b30:	0e 94 b8 32 	call	0x6570	; 0x6570 <OSuartGetCharWait>
   13b34:	28 2f       	mov	r18, r24
			
	if(err != OS_ERR_NONE)
   13b36:	89 81       	ldd	r24, Y+1	; 0x01
   13b38:	88 23       	and	r24, r24
   13b3a:	21 f0       	breq	.+8      	; 0x13b44 <TeledyneATM88X_Rx+0x5a>
		{
			*pLen = 0;
   13b3c:	f6 01       	movw	r30, r12
   13b3e:	11 82       	std	Z+1, r1	; 0x01
   13b40:	10 82       	st	Z, r1
   13b42:	17 c0       	rjmp	.+46     	; 0x13b72 <TeledyneATM88X_Rx+0x88>
			return retval;
		}

	*pChar = c;
   13b44:	8f 2d       	mov	r24, r15
   13b46:	9e 2d       	mov	r25, r14
   13b48:	8c 01       	movw	r16, r24
   13b4a:	f8 01       	movw	r30, r16
   13b4c:	21 93       	st	Z+, r18
   13b4e:	8f 01       	movw	r16, r30
   13b50:	91 e0       	ldi	r25, 0x01	; 1
   13b52:	e9 2e       	mov	r14, r25
   13b54:	f1 2c       	mov	r15, r1
	pChar++;
	count++;

	while((done == FALSE) && (count<1024))
	{
		c = (char) OSuartGetCharWait(pTaskInfo->portNum, 1280, &err);	//Wait 10 seconds for characters
   13b56:	f4 01       	movw	r30, r8
   13b58:	81 81       	ldd	r24, Z+1	; 0x01
   13b5a:	60 e0       	ldi	r22, 0x00	; 0
   13b5c:	75 e0       	ldi	r23, 0x05	; 5
   13b5e:	a5 01       	movw	r20, r10
   13b60:	0e 94 b8 32 	call	0x6570	; 0x6570 <OSuartGetCharWait>
   13b64:	98 2f       	mov	r25, r24
			
		if(err != OS_ERR_NONE)
   13b66:	89 81       	ldd	r24, Y+1	; 0x01
   13b68:	88 23       	and	r24, r24
   13b6a:	29 f0       	breq	.+10     	; 0x13b76 <TeledyneATM88X_Rx+0x8c>
		{
			*pLen = count;
   13b6c:	f6 01       	movw	r30, r12
   13b6e:	f1 82       	std	Z+1, r15	; 0x01
   13b70:	e0 82       	st	Z, r14
   13b72:	80 e0       	ldi	r24, 0x00	; 0
   13b74:	19 c0       	rjmp	.+50     	; 0x13ba8 <TeledyneATM88X_Rx+0xbe>
			return retval;
		}

		*pChar = c;
   13b76:	f8 01       	movw	r30, r16
   13b78:	90 83       	st	Z, r25
		pChar++;
		count++;
   13b7a:	08 94       	sec
   13b7c:	e1 1c       	adc	r14, r1
   13b7e:	f1 1c       	adc	r15, r1

		if(count >= 1)
		{
			compare = strncmp((char *)(pChar - 1), eol, eolLen);
   13b80:	c8 01       	movw	r24, r16
   13b82:	b2 01       	movw	r22, r4
   13b84:	a3 01       	movw	r20, r6
   13b86:	0e 94 59 f0 	call	0x1e0b2	; 0x1e0b2 <strncmp>
			if(compare == 0)
   13b8a:	00 97       	sbiw	r24, 0x00	; 0
   13b8c:	11 f4       	brne	.+4      	; 0x13b92 <TeledyneATM88X_Rx+0xa8>
   13b8e:	8f ef       	ldi	r24, 0xFF	; 255
   13b90:	08 c0       	rjmp	.+16     	; 0x13ba2 <TeledyneATM88X_Rx+0xb8>
   13b92:	0f 5f       	subi	r16, 0xFF	; 255
   13b94:	1f 4f       	sbci	r17, 0xFF	; 255

	*pChar = c;
	pChar++;
	count++;

	while((done == FALSE) && (count<1024))
   13b96:	f0 e0       	ldi	r31, 0x00	; 0
   13b98:	ef 16       	cp	r14, r31
   13b9a:	f4 e0       	ldi	r31, 0x04	; 4
   13b9c:	ff 06       	cpc	r15, r31
   13b9e:	d9 f6       	brne	.-74     	; 0x13b56 <TeledyneATM88X_Rx+0x6c>
   13ba0:	80 e0       	ldi	r24, 0x00	; 0
				retval = SUCCESS;
				done = TRUE;
			}
		}
	}
	*pLen = count;
   13ba2:	f6 01       	movw	r30, r12
   13ba4:	f1 82       	std	Z+1, r15	; 0x01
   13ba6:	e0 82       	st	Z, r14

	return retval;
}
   13ba8:	0f 90       	pop	r0
   13baa:	cf 91       	pop	r28
   13bac:	df 91       	pop	r29
   13bae:	1f 91       	pop	r17
   13bb0:	0f 91       	pop	r16
   13bb2:	ff 90       	pop	r15
   13bb4:	ef 90       	pop	r14
   13bb6:	df 90       	pop	r13
   13bb8:	cf 90       	pop	r12
   13bba:	bf 90       	pop	r11
   13bbc:	af 90       	pop	r10
   13bbe:	9f 90       	pop	r9
   13bc0:	8f 90       	pop	r8
   13bc2:	7f 90       	pop	r7
   13bc4:	6f 90       	pop	r6
   13bc6:	5f 90       	pop	r5
   13bc8:	4f 90       	pop	r4
   13bca:	08 95       	ret

00013bcc <TeledyneATM88X_QueueConsoleResponse>:

}


void TeledyneATM88X_QueueConsoleResponse(PTELEDYNE_ATM_88X_TASK pTaskInfo)
{
   13bcc:	ef 92       	push	r14
   13bce:	ff 92       	push	r15
   13bd0:	0f 93       	push	r16
   13bd2:	1f 93       	push	r17
   13bd4:	df 93       	push	r29
   13bd6:	cf 93       	push	r28
   13bd8:	0f 92       	push	r0
   13bda:	cd b7       	in	r28, 0x3d	; 61
   13bdc:	de b7       	in	r29, 0x3e	; 62
   13bde:	7c 01       	movw	r14, r24
	PCONSOLE_ACK_XMIT_2 pReport;
	uint8_t err = 0;
   13be0:	19 82       	std	Y+1, r1	; 0x01
	char* pData;

	OSMutexPend(pMutexFloatQueue, INFINITE, &err);
   13be2:	80 91 51 19 	lds	r24, 0x1951
   13be6:	90 91 52 19 	lds	r25, 0x1952
   13bea:	60 e0       	ldi	r22, 0x00	; 0
   13bec:	70 e0       	ldi	r23, 0x00	; 0
   13bee:	ae 01       	movw	r20, r28
   13bf0:	4f 5f       	subi	r20, 0xFF	; 255
   13bf2:	5f 4f       	sbci	r21, 0xFF	; 255
   13bf4:	0e 94 c2 28 	call	0x5184	; 0x5184 <OSMutexPend>

	pReport = (PCONSOLE_ACK_XMIT_2)&(txFloatAck[headFloatAckTx]);
   13bf8:	80 91 95 07 	lds	r24, 0x0795
   13bfc:	90 e0       	ldi	r25, 0x00	; 0
   13bfe:	26 e3       	ldi	r18, 0x36	; 54
   13c00:	31 e0       	ldi	r19, 0x01	; 1
   13c02:	82 9f       	mul	r24, r18
   13c04:	80 01       	movw	r16, r0
   13c06:	83 9f       	mul	r24, r19
   13c08:	10 0d       	add	r17, r0
   13c0a:	92 9f       	mul	r25, r18
   13c0c:	10 0d       	add	r17, r0
   13c0e:	11 24       	eor	r1, r1
   13c10:	03 5f       	subi	r16, 0xF3	; 243
   13c12:	1c 44       	sbci	r17, 0x4C	; 76
	pData = (char*)pReport;

	pReport->comm.headers.destination = FLOAT_TASK_FORWARD_MESSAGE;		//pTaskInfo->pBuf->responseInfo.source;
   13c14:	80 e2       	ldi	r24, 0x20	; 32
   13c16:	90 e0       	ldi	r25, 0x00	; 0
   13c18:	d8 01       	movw	r26, r16
   13c1a:	13 96       	adiw	r26, 0x03	; 3
   13c1c:	9c 93       	st	X, r25
   13c1e:	8e 93       	st	-X, r24
   13c20:	12 97       	sbiw	r26, 0x02	; 2

	pReport->comm.fwdInfo.msgFormat = MSG_FORMAT_SHIP_TO_SHORE;
   13c22:	82 e0       	ldi	r24, 0x02	; 2
   13c24:	1c 96       	adiw	r26, 0x0c	; 12
   13c26:	8c 93       	st	X, r24
	pReport->comm.fwdInfo.destination = pTaskInfo->pBuf->responseInfo.source;
   13c28:	d7 01       	movw	r26, r14
   13c2a:	14 96       	adiw	r26, 0x04	; 4
   13c2c:	ed 91       	ld	r30, X+
   13c2e:	fc 91       	ld	r31, X
   13c30:	15 97       	sbiw	r26, 0x05	; 5
   13c32:	ee 51       	subi	r30, 0x1E	; 30
   13c34:	fa 4f       	sbci	r31, 0xFA	; 250
   13c36:	81 91       	ld	r24, Z+
   13c38:	91 91       	ld	r25, Z+
   13c3a:	d8 01       	movw	r26, r16
   13c3c:	1e 96       	adiw	r26, 0x0e	; 14
   13c3e:	9c 93       	st	X, r25
   13c40:	8e 93       	st	-X, r24
   13c42:	1d 97       	sbiw	r26, 0x0d	; 13
	pReport->comm.fwdInfo.source = mainTaskAddress | pTaskInfo->taskID;
   13c44:	d7 01       	movw	r26, r14
   13c46:	8c 91       	ld	r24, X
   13c48:	90 e0       	ldi	r25, 0x00	; 0
   13c4a:	20 91 e4 03 	lds	r18, 0x03E4
   13c4e:	30 91 e5 03 	lds	r19, 0x03E5
   13c52:	82 2b       	or	r24, r18
   13c54:	93 2b       	or	r25, r19
   13c56:	d8 01       	movw	r26, r16
   13c58:	50 96       	adiw	r26, 0x10	; 16
   13c5a:	9c 93       	st	X, r25
   13c5c:	8e 93       	st	-X, r24
   13c5e:	1f 97       	sbiw	r26, 0x0f	; 15

	if(pTaskInfo->pBuf->responseInfo.status < CONSOLE_RESPONSE_UNKNOWN_CMD)
   13c60:	20 81       	ld	r18, Z
   13c62:	e4 5e       	subi	r30, 0xE4	; 228
   13c64:	f5 40       	sbci	r31, 0x05	; 5
   13c66:	2a 30       	cpi	r18, 0x0A	; 10
   13c68:	98 f5       	brcc	.+102    	; 0x13cd0 <TeledyneATM88X_QueueConsoleResponse+0x104>
	{
		pReport->comm.headers.length = sizeof(PIB_DATA_FORWARD_MESSAGE) + sizeof(CONSOLE_ACK) + pTaskInfo->pBuf->responseInfo.length + CRC16_SIZE;
   13c6a:	ea 51       	subi	r30, 0x1A	; 26
   13c6c:	fa 4f       	sbci	r31, 0xFA	; 250
   13c6e:	40 81       	ld	r20, Z
   13c70:	50 e0       	ldi	r21, 0x00	; 0
   13c72:	42 5e       	subi	r20, 0xE2	; 226
   13c74:	5f 4f       	sbci	r21, 0xFF	; 255
   13c76:	11 96       	adiw	r26, 0x01	; 1
   13c78:	5c 93       	st	X, r21
   13c7a:	4e 93       	st	-X, r20
   13c7c:	4e 51       	subi	r20, 0x1E	; 30
   13c7e:	50 40       	sbci	r21, 0x00	; 0

		pReport->comm.iridiumInfo.headerICD.type = ACK_CONSOLE_DATA;
   13c80:	8d e3       	ldi	r24, 0x3D	; 61
   13c82:	51 96       	adiw	r26, 0x11	; 17
   13c84:	8c 93       	st	X, r24
   13c86:	51 97       	sbiw	r26, 0x11	; 17

		pReport->consoleAck.len = pTaskInfo->pBuf->responseInfo.length;
   13c88:	5b 96       	adiw	r26, 0x1b	; 27
   13c8a:	5c 93       	st	X, r21
   13c8c:	4e 93       	st	-X, r20
   13c8e:	5a 97       	sbiw	r26, 0x1a	; 26
		pReport->consoleAck.disposition = pTaskInfo->pBuf->responseInfo.status;
   13c90:	59 96       	adiw	r26, 0x19	; 25
   13c92:	2c 93       	st	X, r18
   13c94:	59 97       	sbiw	r26, 0x19	; 25
		pReport->consoleAck.format = pTaskInfo->pBuf->responseInfo.format;
   13c96:	82 91       	ld	r24, -Z
   13c98:	58 96       	adiw	r26, 0x18	; 24
   13c9a:	8c 93       	st	X, r24
		pData = pData + sizeof(PIB_DATA_FORWARD_MESSAGE) + sizeof(CONSOLE_ACK);
		memcpy(pData, pTaskInfo->pBuf->consoleResponse, pTaskInfo->pBuf->responseInfo.length);
   13c9c:	98 01       	movw	r18, r16
   13c9e:	24 5e       	subi	r18, 0xE4	; 228
   13ca0:	3f 4f       	sbci	r19, 0xFF	; 255
   13ca2:	36 96       	adiw	r30, 0x06	; 6
   13ca4:	c9 01       	movw	r24, r18
   13ca6:	bf 01       	movw	r22, r30
   13ca8:	50 e0       	ldi	r21, 0x00	; 0
   13caa:	0e 94 1c f0 	call	0x1e038	; 0x1e038 <memcpy>

		memcpy(dbgMsg, pTaskInfo->pBuf->consoleResponse, pTaskInfo->pBuf->responseInfo.length); SEND_MSG;
   13cae:	d7 01       	movw	r26, r14
   13cb0:	14 96       	adiw	r26, 0x04	; 4
   13cb2:	ed 91       	ld	r30, X+
   13cb4:	fc 91       	ld	r31, X
   13cb6:	15 97       	sbiw	r26, 0x05	; 5
   13cb8:	23 ef       	ldi	r18, 0xF3	; 243
   13cba:	38 e1       	ldi	r19, 0x18	; 24
   13cbc:	ea 51       	subi	r30, 0x1A	; 26
   13cbe:	fa 4f       	sbci	r31, 0xFA	; 250
   13cc0:	40 81       	ld	r20, Z
   13cc2:	35 96       	adiw	r30, 0x05	; 5
   13cc4:	c9 01       	movw	r24, r18
   13cc6:	bf 01       	movw	r22, r30
   13cc8:	50 e0       	ldi	r21, 0x00	; 0
   13cca:	0e 94 1c f0 	call	0x1e038	; 0x1e038 <memcpy>
   13cce:	0c c0       	rjmp	.+24     	; 0x13ce8 <TeledyneATM88X_QueueConsoleResponse+0x11c>
	}
	else
	{
		pReport->comm.headers.length = sizeof(PIB_DATA_FORWARD_MESSAGE) + sizeof(CONSOLE_NACK) + CRC16_SIZE;
   13cd0:	8d e1       	ldi	r24, 0x1D	; 29
   13cd2:	90 e0       	ldi	r25, 0x00	; 0
   13cd4:	f8 01       	movw	r30, r16
   13cd6:	91 83       	std	Z+1, r25	; 0x01
   13cd8:	80 83       	st	Z, r24
		pReport->comm.iridiumInfo.headerICD.type = NACK_CONSOLE_DATA;
   13cda:	86 e2       	ldi	r24, 0x26	; 38
   13cdc:	81 8b       	std	Z+17, r24	; 0x11
		pReport->consoleNack.numDispositions = 1;
   13cde:	81 e0       	ldi	r24, 0x01	; 1
   13ce0:	90 e0       	ldi	r25, 0x00	; 0
   13ce2:	91 8f       	std	Z+25, r25	; 0x19
   13ce4:	80 8f       	std	Z+24, r24	; 0x18
		pReport->consoleNack.disposition[0] = pTaskInfo->pBuf->responseInfo.status;
   13ce6:	22 8f       	std	Z+26, r18	; 0x1a
	}

	pReport->comm.iridiumInfo.headerICD.packetID = pTaskInfo->pBuf->responseInfo.id;
   13ce8:	d7 01       	movw	r26, r14
   13cea:	14 96       	adiw	r26, 0x04	; 4
   13cec:	ed 91       	ld	r30, X+
   13cee:	fc 91       	ld	r31, X
   13cf0:	15 97       	sbiw	r26, 0x05	; 5
   13cf2:	e9 51       	subi	r30, 0x19	; 25
   13cf4:	fa 4f       	sbci	r31, 0xFA	; 250
   13cf6:	80 81       	ld	r24, Z
   13cf8:	91 81       	ldd	r25, Z+1	; 0x01
   13cfa:	a2 81       	ldd	r26, Z+2	; 0x02
   13cfc:	b3 81       	ldd	r27, Z+3	; 0x03
   13cfe:	f8 01       	movw	r30, r16
   13d00:	82 8b       	std	Z+18, r24	; 0x12
   13d02:	93 8b       	std	Z+19, r25	; 0x13
   13d04:	a4 8b       	std	Z+20, r26	; 0x14
   13d06:	b5 8b       	std	Z+21, r27	; 0x15
	pReport->comm.iridiumInfo.headerICD.size = pReport->comm.headers.length - sizeof(PIB_DATA_FORWARD_MESSAGE) - CRC16_SIZE;
   13d08:	80 81       	ld	r24, Z
   13d0a:	91 81       	ldd	r25, Z+1	; 0x01
   13d0c:	4a 97       	sbiw	r24, 0x1a	; 26
   13d0e:	97 8b       	std	Z+23, r25	; 0x17
   13d10:	86 8b       	std	Z+22, r24	; 0x16


	(headFloatAckTx < MAX_ACK_BUFFERS - 1) ? (headFloatAckTx++) : (headFloatAckTx = 0);
   13d12:	80 91 95 07 	lds	r24, 0x0795
   13d16:	83 30       	cpi	r24, 0x03	; 3
   13d18:	20 f4       	brcc	.+8      	; 0x13d22 <TeledyneATM88X_QueueConsoleResponse+0x156>
   13d1a:	8f 5f       	subi	r24, 0xFF	; 255
   13d1c:	80 93 95 07 	sts	0x0795, r24
   13d20:	02 c0       	rjmp	.+4      	; 0x13d26 <TeledyneATM88X_QueueConsoleResponse+0x15a>
   13d22:	10 92 95 07 	sts	0x0795, r1

	if(headFloatAckTx == tailFloatAckTx)
   13d26:	90 91 95 07 	lds	r25, 0x0795
   13d2a:	80 91 96 07 	lds	r24, 0x0796
   13d2e:	98 17       	cp	r25, r24
   13d30:	41 f4       	brne	.+16     	; 0x13d42 <TeledyneATM88X_QueueConsoleResponse+0x176>
	{
		(tailFloatAckTx < MAX_ACK_BUFFERS - 1) ? (tailFloatAckTx++) : (tailFloatAckTx = 0);
   13d32:	93 30       	cpi	r25, 0x03	; 3
   13d34:	20 f4       	brcc	.+8      	; 0x13d3e <TeledyneATM88X_QueueConsoleResponse+0x172>
   13d36:	9f 5f       	subi	r25, 0xFF	; 255
   13d38:	90 93 96 07 	sts	0x0796, r25
   13d3c:	02 c0       	rjmp	.+4      	; 0x13d42 <TeledyneATM88X_QueueConsoleResponse+0x176>
   13d3e:	10 92 96 07 	sts	0x0796, r1
	}

	OSMutexPost(pMutexFloatQueue);
   13d42:	80 91 51 19 	lds	r24, 0x1951
   13d46:	90 91 52 19 	lds	r25, 0x1952
   13d4a:	0e 94 36 27 	call	0x4e6c	; 0x4e6c <OSMutexPost>

	return;
}
   13d4e:	0f 90       	pop	r0
   13d50:	cf 91       	pop	r28
   13d52:	df 91       	pop	r29
   13d54:	1f 91       	pop	r17
   13d56:	0f 91       	pop	r16
   13d58:	ff 90       	pop	r15
   13d5a:	ef 90       	pop	r14
   13d5c:	08 95       	ret

00013d5e <TeledyneATM88X_ModemReportXmit>:

	return SUCCESS;
}

uint8_t TeledyneATM88X_ModemReportXmit(PTELEDYNE_ATM_88X_TASK pTaskInfo)
{
   13d5e:	0f 93       	push	r16
   13d60:	1f 93       	push	r17
   13d62:	df 93       	push	r29
   13d64:	cf 93       	push	r28
   13d66:	0f 92       	push	r0
   13d68:	cd b7       	in	r28, 0x3d	; 61
   13d6a:	de b7       	in	r29, 0x3e	; 62
   13d6c:	8c 01       	movw	r16, r24
	uint8_t retval = 0;
	uint8_t err = 0;
   13d6e:	19 82       	std	Y+1, r1	; 0x01
	PMODEM_DATA_XMIT_ATY pReport = NULL;

	OSMutexPend(pMutexFloatQueue, INFINITE, &err);
   13d70:	80 91 51 19 	lds	r24, 0x1951
   13d74:	90 91 52 19 	lds	r25, 0x1952
   13d78:	60 e0       	ldi	r22, 0x00	; 0
   13d7a:	70 e0       	ldi	r23, 0x00	; 0
   13d7c:	ae 01       	movw	r20, r28
   13d7e:	4f 5f       	subi	r20, 0xFF	; 255
   13d80:	5f 4f       	sbci	r21, 0xFF	; 255
   13d82:	0e 94 c2 28 	call	0x5184	; 0x5184 <OSMutexPend>

	pReport = (PMODEM_DATA_XMIT_ATY)&(txFloatData[headFloatTx]);
   13d86:	80 91 93 07 	lds	r24, 0x0793
   13d8a:	90 e0       	ldi	r25, 0x00	; 0
   13d8c:	26 e3       	ldi	r18, 0x36	; 54
   13d8e:	31 e0       	ldi	r19, 0x01	; 1
   13d90:	82 9f       	mul	r24, r18
   13d92:	f0 01       	movw	r30, r0
   13d94:	83 9f       	mul	r24, r19
   13d96:	f0 0d       	add	r31, r0
   13d98:	92 9f       	mul	r25, r18
   13d9a:	f0 0d       	add	r31, r0
   13d9c:	11 24       	eor	r1, r1
   13d9e:	e3 5a       	subi	r30, 0xA3	; 163
   13da0:	f6 45       	sbci	r31, 0x56	; 86

	pReport->comm.headers.length  = sizeof(MODEM_DATA_XMIT_ATY) + CRC16_SIZE;
   13da2:	8e eb       	ldi	r24, 0xBE	; 190
   13da4:	90 e0       	ldi	r25, 0x00	; 0
   13da6:	91 83       	std	Z+1, r25	; 0x01
   13da8:	80 83       	st	Z, r24
	pReport->comm.headers.destination = FLOAT_IRIDIUM_INTERFACE;
   13daa:	82 e0       	ldi	r24, 0x02	; 2
   13dac:	90 e0       	ldi	r25, 0x00	; 0
   13dae:	93 83       	std	Z+3, r25	; 0x03
   13db0:	82 83       	std	Z+2, r24	; 0x02

	pReport->comm.iridiumInfo.structureType = 0x80;
   13db2:	80 e8       	ldi	r24, 0x80	; 128
   13db4:	84 87       	std	Z+12, r24	; 0x0c
	pReport->comm.iridiumInfo.size = pReport->comm.headers.length - sizeof(PIB_IRIDIUM_DATA_XMIT) - CRC16_SIZE;
   13db6:	8d ea       	ldi	r24, 0xAD	; 173
   13db8:	90 e0       	ldi	r25, 0x00	; 0
   13dba:	96 87       	std	Z+14, r25	; 0x0e
   13dbc:	85 87       	std	Z+13, r24	; 0x0d

	pReport->payloadID = 0x00000030;
   13dbe:	80 e3       	ldi	r24, 0x30	; 48
   13dc0:	90 e0       	ldi	r25, 0x00	; 0
   13dc2:	a0 e0       	ldi	r26, 0x00	; 0
   13dc4:	b0 e0       	ldi	r27, 0x00	; 0
   13dc6:	87 87       	std	Z+15, r24	; 0x0f
   13dc8:	90 8b       	std	Z+16, r25	; 0x10
   13dca:	a1 8b       	std	Z+17, r26	; 0x11
   13dcc:	b2 8b       	std	Z+18, r27	; 0x12
	pReport->version = 0x01;
   13dce:	81 e0       	ldi	r24, 0x01	; 1
   13dd0:	83 8b       	std	Z+19, r24	; 0x13

	memcpy(&(pReport->modemReport), &(pTaskInfo->pBuf->reportATYData), sizeof(MODEM_ATY_REPORT));
   13dd2:	d8 01       	movw	r26, r16
   13dd4:	14 96       	adiw	r26, 0x04	; 4
   13dd6:	2d 91       	ld	r18, X+
   13dd8:	3c 91       	ld	r19, X
   13dda:	15 97       	sbiw	r26, 0x05	; 5
   13ddc:	74 96       	adiw	r30, 0x14	; 20
   13dde:	26 5e       	subi	r18, 0xE6	; 230
   13de0:	3a 4f       	sbci	r19, 0xFA	; 250
   13de2:	88 ea       	ldi	r24, 0xA8	; 168
   13de4:	d9 01       	movw	r26, r18
   13de6:	0d 90       	ld	r0, X+
   13de8:	9d 01       	movw	r18, r26
   13dea:	01 92       	st	Z+, r0
   13dec:	81 50       	subi	r24, 0x01	; 1
   13dee:	d1 f7       	brne	.-12     	; 0x13de4 <TeledyneATM88X_ModemReportXmit+0x86>


	(headFloatTx < MAX_FLOAT_BUFFERS - 1) ? (headFloatTx++) : (headFloatTx = 0);
   13df0:	80 91 93 07 	lds	r24, 0x0793
   13df4:	87 30       	cpi	r24, 0x07	; 7
   13df6:	20 f4       	brcc	.+8      	; 0x13e00 <TeledyneATM88X_ModemReportXmit+0xa2>
   13df8:	8f 5f       	subi	r24, 0xFF	; 255
   13dfa:	80 93 93 07 	sts	0x0793, r24
   13dfe:	02 c0       	rjmp	.+4      	; 0x13e04 <TeledyneATM88X_ModemReportXmit+0xa6>
   13e00:	10 92 93 07 	sts	0x0793, r1

	if(headFloatTx == tailFloatTx)
   13e04:	90 91 93 07 	lds	r25, 0x0793
   13e08:	80 91 94 07 	lds	r24, 0x0794
   13e0c:	98 17       	cp	r25, r24
   13e0e:	41 f4       	brne	.+16     	; 0x13e20 <TeledyneATM88X_ModemReportXmit+0xc2>
	{
		(tailFloatTx < MAX_FLOAT_BUFFERS - 1) ? (tailFloatTx++) : (tailFloatTx = 0);
   13e10:	97 30       	cpi	r25, 0x07	; 7
   13e12:	20 f4       	brcc	.+8      	; 0x13e1c <TeledyneATM88X_ModemReportXmit+0xbe>
   13e14:	9f 5f       	subi	r25, 0xFF	; 255
   13e16:	90 93 94 07 	sts	0x0794, r25
   13e1a:	02 c0       	rjmp	.+4      	; 0x13e20 <TeledyneATM88X_ModemReportXmit+0xc2>
   13e1c:	10 92 94 07 	sts	0x0794, r1
	}

	OSMutexPost(pMutexFloatQueue);
   13e20:	80 91 51 19 	lds	r24, 0x1951
   13e24:	90 91 52 19 	lds	r25, 0x1952
   13e28:	0e 94 36 27 	call	0x4e6c	; 0x4e6c <OSMutexPost>

	return retval;
}
   13e2c:	80 e0       	ldi	r24, 0x00	; 0
   13e2e:	0f 90       	pop	r0
   13e30:	cf 91       	pop	r28
   13e32:	df 91       	pop	r29
   13e34:	1f 91       	pop	r17
   13e36:	0f 91       	pop	r16
   13e38:	08 95       	ret

00013e3a <TeledyneATM88X_ReportModemTelemetry>:
	
	return;
}

uint8_t TeledyneATM88X_ReportModemTelemetry(PTELEDYNE_ATM_88X_TASK pTaskInfo)
{
   13e3a:	0f 93       	push	r16
   13e3c:	1f 93       	push	r17
   13e3e:	8c 01       	movw	r16, r24
	TeledyneATM88X_ModemReportXmit(pTaskInfo);
   13e40:	0e 94 af 9e 	call	0x13d5e	; 0x13d5e <TeledyneATM88X_ModemReportXmit>

	// reset the buffer to empty state
	memset(&pTaskInfo->pBuf->reportATYData, 0, sizeof(MODEM_ATY_REPORT));
   13e44:	d8 01       	movw	r26, r16
   13e46:	14 96       	adiw	r26, 0x04	; 4
   13e48:	8d 91       	ld	r24, X+
   13e4a:	9c 91       	ld	r25, X
   13e4c:	15 97       	sbiw	r26, 0x05	; 5
   13e4e:	86 5e       	subi	r24, 0xE6	; 230
   13e50:	9a 4f       	sbci	r25, 0xFA	; 250
   13e52:	fc 01       	movw	r30, r24
   13e54:	88 ea       	ldi	r24, 0xA8	; 168
   13e56:	df 01       	movw	r26, r30
   13e58:	1d 92       	st	X+, r1
   13e5a:	8a 95       	dec	r24
   13e5c:	e9 f7       	brne	.-6      	; 0x13e58 <TeledyneATM88X_ReportModemTelemetry+0x1e>

	return SUCCESS;
}
   13e5e:	8f ef       	ldi	r24, 0xFF	; 255
   13e60:	1f 91       	pop	r17
   13e62:	0f 91       	pop	r16
   13e64:	08 95       	ret

00013e66 <ThreadSafeStrTokTail>:
	*context = eos;
	return retval;
}

static char* ThreadSafeStrTokTail(char** context, char* sep)
{
   13e66:	0f 93       	push	r16
   13e68:	1f 93       	push	r17
   13e6a:	cf 93       	push	r28
   13e6c:	df 93       	push	r29
   13e6e:	8c 01       	movw	r16, r24
	if (!context || !*context) return "";
   13e70:	00 97       	sbiw	r24, 0x00	; 0
   13e72:	c1 f0       	breq	.+48     	; 0x13ea4 <ThreadSafeStrTokTail+0x3e>
   13e74:	dc 01       	movw	r26, r24
   13e76:	cd 91       	ld	r28, X+
   13e78:	dc 91       	ld	r29, X
   13e7a:	20 97       	sbiw	r28, 0x00	; 0
   13e7c:	99 f0       	breq	.+38     	; 0x13ea4 <ThreadSafeStrTokTail+0x3e>

	char* retval = &(*context)[strspn(*context, sep)];
   13e7e:	ce 01       	movw	r24, r28
   13e80:	0e 94 77 f0 	call	0x1e0ee	; 0x1e0ee <strspn>
   13e84:	9c 01       	movw	r18, r24
   13e86:	2c 0f       	add	r18, r28
   13e88:	3d 1f       	adc	r19, r29
	
	*context = &retval[strlen(retval)];
   13e8a:	f9 01       	movw	r30, r18
   13e8c:	01 90       	ld	r0, Z+
   13e8e:	00 20       	and	r0, r0
   13e90:	e9 f7       	brne	.-6      	; 0x13e8c <ThreadSafeStrTokTail+0x26>
   13e92:	31 97       	sbiw	r30, 0x01	; 1
   13e94:	e2 1b       	sub	r30, r18
   13e96:	f3 0b       	sbc	r31, r19
   13e98:	e2 0f       	add	r30, r18
   13e9a:	f3 1f       	adc	r31, r19
   13e9c:	d8 01       	movw	r26, r16
   13e9e:	ed 93       	st	X+, r30
   13ea0:	fc 93       	st	X, r31
   13ea2:	02 c0       	rjmp	.+4      	; 0x13ea8 <ThreadSafeStrTokTail+0x42>
	return retval;
   13ea4:	23 eb       	ldi	r18, 0xB3	; 179
   13ea6:	34 e0       	ldi	r19, 0x04	; 4
}
   13ea8:	c9 01       	movw	r24, r18
   13eaa:	df 91       	pop	r29
   13eac:	cf 91       	pop	r28
   13eae:	1f 91       	pop	r17
   13eb0:	0f 91       	pop	r16
   13eb2:	08 95       	ret

00013eb4 <ThreadSafeStrTok>:

	return retval;
}

static char* ThreadSafeStrTok(char** context, char* sep)
{
   13eb4:	ef 92       	push	r14
   13eb6:	ff 92       	push	r15
   13eb8:	0f 93       	push	r16
   13eba:	1f 93       	push	r17
   13ebc:	cf 93       	push	r28
   13ebe:	df 93       	push	r29
   13ec0:	8c 01       	movw	r16, r24
   13ec2:	7b 01       	movw	r14, r22
	if (!context || !*context) return "";
   13ec4:	00 97       	sbiw	r24, 0x00	; 0
   13ec6:	c1 f0       	breq	.+48     	; 0x13ef8 <ThreadSafeStrTok+0x44>
   13ec8:	dc 01       	movw	r26, r24
   13eca:	cd 91       	ld	r28, X+
   13ecc:	dc 91       	ld	r29, X
   13ece:	20 97       	sbiw	r28, 0x00	; 0
   13ed0:	99 f0       	breq	.+38     	; 0x13ef8 <ThreadSafeStrTok+0x44>

	char* retval = &(*context)[strspn(*context, sep)];
   13ed2:	ce 01       	movw	r24, r28
   13ed4:	0e 94 77 f0 	call	0x1e0ee	; 0x1e0ee <strspn>
   13ed8:	c8 0f       	add	r28, r24
   13eda:	d9 1f       	adc	r29, r25
	char* eos = &retval[strcspn(retval, sep)];
   13edc:	ce 01       	movw	r24, r28
   13ede:	b7 01       	movw	r22, r14
   13ee0:	0e 94 40 f0 	call	0x1e080	; 0x1e080 <strcspn>
   13ee4:	fe 01       	movw	r30, r28
   13ee6:	e8 0f       	add	r30, r24
   13ee8:	f9 1f       	adc	r31, r25

	if (*eos) *eos++ = '\0';
   13eea:	80 81       	ld	r24, Z
   13eec:	81 11       	cpse	r24, r1
   13eee:	11 92       	st	Z+, r1

	*context = eos;
   13ef0:	d8 01       	movw	r26, r16
   13ef2:	ed 93       	st	X+, r30
   13ef4:	fc 93       	st	X, r31
   13ef6:	02 c0       	rjmp	.+4      	; 0x13efc <ThreadSafeStrTok+0x48>
	return retval;
   13ef8:	c3 eb       	ldi	r28, 0xB3	; 179
   13efa:	d4 e0       	ldi	r29, 0x04	; 4
}
   13efc:	ce 01       	movw	r24, r28
   13efe:	df 91       	pop	r29
   13f00:	cf 91       	pop	r28
   13f02:	1f 91       	pop	r17
   13f04:	0f 91       	pop	r16
   13f06:	ff 90       	pop	r15
   13f08:	ef 90       	pop	r14
   13f0a:	08 95       	ret

00013f0c <TeledyneATM88X_Tx>:
	return;
}


uint8_t TeledyneATM88X_Tx(PTELEDYNE_ATM_88X_TASK pTaskInfo, char* pBuffer, uint16_t len)
{
   13f0c:	ef 92       	push	r14
   13f0e:	ff 92       	push	r15
   13f10:	0f 93       	push	r16
   13f12:	1f 93       	push	r17
   13f14:	cf 93       	push	r28
   13f16:	df 93       	push	r29
   13f18:	7c 01       	movw	r14, r24
   13f1a:	8b 01       	movw	r16, r22
   13f1c:	ea 01       	movw	r28, r20
	uint8_t retval = FAIL;
	uint8_t err = 0;

	if((len > 0) && (len <= 255))
   13f1e:	ca 01       	movw	r24, r20
   13f20:	01 97       	sbiw	r24, 0x01	; 1
   13f22:	8f 3f       	cpi	r24, 0xFF	; 255
   13f24:	91 05       	cpc	r25, r1
   13f26:	70 f0       	brcs	.+28     	; 0x13f44 <TeledyneATM88X_Tx+0x38>
   13f28:	1a c0       	rjmp	.+52     	; 0x13f5e <TeledyneATM88X_Tx+0x52>
	{
		while(len > 0)
		{
			err = OSuartPutCharWait(pTaskInfo->portNum, *pBuffer, 10);
   13f2a:	f7 01       	movw	r30, r14
   13f2c:	81 81       	ldd	r24, Z+1	; 0x01
   13f2e:	f8 01       	movw	r30, r16
   13f30:	60 81       	ld	r22, Z
   13f32:	4a e0       	ldi	r20, 0x0A	; 10
   13f34:	50 e0       	ldi	r21, 0x00	; 0
   13f36:	0e 94 f3 31 	call	0x63e6	; 0x63e6 <OSuartPutCharWait>
			if(err != OS_ERR_NONE)
   13f3a:	88 23       	and	r24, r24
   13f3c:	81 f4       	brne	.+32     	; 0x13f5e <TeledyneATM88X_Tx+0x52>
				return retval;

			pBuffer++;
   13f3e:	0f 5f       	subi	r16, 0xFF	; 255
   13f40:	1f 4f       	sbci	r17, 0xFF	; 255
			len--;
   13f42:	21 97       	sbiw	r28, 0x01	; 1
	uint8_t retval = FAIL;
	uint8_t err = 0;

	if((len > 0) && (len <= 255))
	{
		while(len > 0)
   13f44:	20 97       	sbiw	r28, 0x00	; 0
   13f46:	89 f7       	brne	.-30     	; 0x13f2a <TeledyneATM88X_Tx+0x1e>

			pBuffer++;
			len--;
		}

		err = OSuartPutCharWait(pTaskInfo->portNum, 0x0D, 10);		//Terminate command with carriage return		
   13f48:	f7 01       	movw	r30, r14
   13f4a:	81 81       	ldd	r24, Z+1	; 0x01
   13f4c:	6d e0       	ldi	r22, 0x0D	; 13
   13f4e:	4a e0       	ldi	r20, 0x0A	; 10
   13f50:	50 e0       	ldi	r21, 0x00	; 0
   13f52:	0e 94 f3 31 	call	0x63e6	; 0x63e6 <OSuartPutCharWait>
		if(err != OS_ERR_NONE)
   13f56:	88 23       	and	r24, r24
   13f58:	11 f4       	brne	.+4      	; 0x13f5e <TeledyneATM88X_Tx+0x52>
   13f5a:	8f ef       	ldi	r24, 0xFF	; 255
   13f5c:	01 c0       	rjmp	.+2      	; 0x13f60 <TeledyneATM88X_Tx+0x54>
   13f5e:	80 e0       	ldi	r24, 0x00	; 0
			return retval;

		retval = SUCCESS;
	}
	return retval;
}
   13f60:	df 91       	pop	r29
   13f62:	cf 91       	pop	r28
   13f64:	1f 91       	pop	r17
   13f66:	0f 91       	pop	r16
   13f68:	ff 90       	pop	r15
   13f6a:	ef 90       	pop	r14
   13f6c:	08 95       	ret

00013f6e <TeledyneATM88X_ParseFile>:
	return retval;

}

uint8_t TeledyneATM88X_ParseFile(PTELEDYNE_ATM_88X_TASK pTaskInfo, uint32_t fileID)
{
   13f6e:	4f 92       	push	r4
   13f70:	5f 92       	push	r5
   13f72:	6f 92       	push	r6
   13f74:	7f 92       	push	r7
   13f76:	8f 92       	push	r8
   13f78:	9f 92       	push	r9
   13f7a:	af 92       	push	r10
   13f7c:	bf 92       	push	r11
   13f7e:	cf 92       	push	r12
   13f80:	df 92       	push	r13
   13f82:	ef 92       	push	r14
   13f84:	ff 92       	push	r15
   13f86:	0f 93       	push	r16
   13f88:	1f 93       	push	r17
   13f8a:	df 93       	push	r29
   13f8c:	cf 93       	push	r28
   13f8e:	cd b7       	in	r28, 0x3d	; 61
   13f90:	de b7       	in	r29, 0x3e	; 62
   13f92:	2a 97       	sbiw	r28, 0x0a	; 10
   13f94:	0f b6       	in	r0, 0x3f	; 63
   13f96:	f8 94       	cli
   13f98:	de bf       	out	0x3e, r29	; 62
   13f9a:	0f be       	out	0x3f, r0	; 63
   13f9c:	cd bf       	out	0x3d, r28	; 61
   13f9e:	7c 01       	movw	r14, r24
   13fa0:	2a 01       	movw	r4, r20
   13fa2:	3b 01       	movw	r6, r22
	uint8_t retval = FAIL;
	uint16_t len = 0;
   13fa4:	1c 82       	std	Y+4, r1	; 0x04
   13fa6:	1b 82       	std	Y+3, r1	; 0x03
	char* pBuf;
	char eol = '>';
   13fa8:	8e e3       	ldi	r24, 0x3E	; 62
   13faa:	89 83       	std	Y+1, r24	; 0x01

	memset(&(fileOut[pTaskInfo->portNum][0]), 0, MAX_FILE_SIZE_OUT);
   13fac:	d7 01       	movw	r26, r14
   13fae:	11 96       	adiw	r26, 0x01	; 1
   13fb0:	2c 91       	ld	r18, X
   13fb2:	92 2f       	mov	r25, r18
   13fb4:	99 0f       	add	r25, r25
   13fb6:	99 0f       	add	r25, r25
   13fb8:	80 e0       	ldi	r24, 0x00	; 0
   13fba:	8f 5a       	subi	r24, 0xAF	; 175
   13fbc:	92 47       	sbci	r25, 0x72	; 114
   13fbe:	81 2c       	mov	r8, r1
   13fc0:	a4 e0       	ldi	r26, 0x04	; 4
   13fc2:	9a 2e       	mov	r9, r26
   13fc4:	dc 01       	movw	r26, r24
   13fc6:	c4 01       	movw	r24, r8
   13fc8:	1d 92       	st	X+, r1
   13fca:	01 97       	sbiw	r24, 0x01	; 1
   13fcc:	e9 f7       	brne	.-6      	; 0x13fc8 <TeledyneATM88X_ParseFile+0x5a>

	strupr(&fileIn[pTaskInfo->portNum][0]);
   13fce:	d7 01       	movw	r26, r14
   13fd0:	11 96       	adiw	r26, 0x01	; 1
   13fd2:	9c 91       	ld	r25, X
   13fd4:	80 e0       	ldi	r24, 0x00	; 0
   13fd6:	8f 5a       	subi	r24, 0xAF	; 175
   13fd8:	96 47       	sbci	r25, 0x76	; 118
   13fda:	0e 94 d2 f0 	call	0x1e1a4	; 0x1e1a4 <strupr>
	len = strlen(&fileIn[pTaskInfo->portNum][0]);
   13fde:	f7 01       	movw	r30, r14
   13fe0:	91 81       	ldd	r25, Z+1	; 0x01
   13fe2:	80 e0       	ldi	r24, 0x00	; 0
   13fe4:	dc 01       	movw	r26, r24
   13fe6:	af 5a       	subi	r26, 0xAF	; 175
   13fe8:	b6 47       	sbci	r27, 0x76	; 118
   13fea:	fd 01       	movw	r30, r26
   13fec:	01 90       	ld	r0, Z+
   13fee:	00 20       	and	r0, r0
   13ff0:	e9 f7       	brne	.-6      	; 0x13fec <TeledyneATM88X_ParseFile+0x7e>
   13ff2:	31 97       	sbiw	r30, 0x01	; 1
   13ff4:	ea 1b       	sub	r30, r26
   13ff6:	fb 0b       	sbc	r31, r27
   13ff8:	fc 83       	std	Y+4, r31	; 0x04
   13ffa:	eb 83       	std	Y+3, r30	; 0x03

	pBuf = &fileIn[pTaskInfo->portNum][0];
	if(len > 4)
   13ffc:	35 97       	sbiw	r30, 0x05	; 5
   13ffe:	08 f4       	brcc	.+2      	; 0x14002 <TeledyneATM88X_ParseFile+0x94>
   14000:	73 c1       	rjmp	.+742    	; 0x142e8 <TeledyneATM88X_ParseFile+0x37a>
	{
		char* context = pBuf;
   14002:	be 83       	std	Y+6, r27	; 0x06
   14004:	ad 83       	std	Y+5, r26	; 0x05
		char sep[] = { ' ', '\t', '\r', '\n' };
   14006:	80 e2       	ldi	r24, 0x20	; 32
   14008:	8f 83       	std	Y+7, r24	; 0x07
   1400a:	89 e0       	ldi	r24, 0x09	; 9
   1400c:	88 87       	std	Y+8, r24	; 0x08
   1400e:	8d e0       	ldi	r24, 0x0D	; 13
   14010:	89 87       	std	Y+9, r24	; 0x09
   14012:	8a e0       	ldi	r24, 0x0A	; 10
   14014:	8a 87       	std	Y+10, r24	; 0x0a
		char* cmdTok = ThreadSafeStrTok(&context, sep);
   14016:	f5 e0       	ldi	r31, 0x05	; 5
   14018:	cf 2e       	mov	r12, r31
   1401a:	d1 2c       	mov	r13, r1
   1401c:	cc 0e       	add	r12, r28
   1401e:	dd 1e       	adc	r13, r29
   14020:	e7 e0       	ldi	r30, 0x07	; 7
   14022:	ae 2e       	mov	r10, r30
   14024:	b1 2c       	mov	r11, r1
   14026:	ac 0e       	add	r10, r28
   14028:	bd 1e       	adc	r11, r29
   1402a:	c6 01       	movw	r24, r12
   1402c:	b5 01       	movw	r22, r10
   1402e:	0e 94 5a 9f 	call	0x13eb4	; 0x13eb4 <ThreadSafeStrTok>
   14032:	8c 01       	movw	r16, r24

		if (strncmp(cmdTok, "CMD", 3) == 0)
   14034:	64 eb       	ldi	r22, 0xB4	; 180
   14036:	74 e0       	ldi	r23, 0x04	; 4
   14038:	43 e0       	ldi	r20, 0x03	; 3
   1403a:	50 e0       	ldi	r21, 0x00	; 0
   1403c:	0e 94 59 f0 	call	0x1e0b2	; 0x1e0b2 <strncmp>
   14040:	00 97       	sbiw	r24, 0x00	; 0
   14042:	09 f0       	breq	.+2      	; 0x14046 <TeledyneATM88X_ParseFile+0xd8>
   14044:	af c0       	rjmp	.+350    	; 0x141a4 <TeledyneATM88X_ParseFile+0x236>
		{
			char* subCommand = ThreadSafeStrTok(&context, sep);
   14046:	c6 01       	movw	r24, r12
   14048:	b5 01       	movw	r22, r10
   1404a:	0e 94 5a 9f 	call	0x13eb4	; 0x13eb4 <ThreadSafeStrTok>
   1404e:	8c 01       	movw	r16, r24

			//We have a Start/Stop command
			if(strncmp(subCommand, "STO", 3) == 0)
   14050:	68 eb       	ldi	r22, 0xB8	; 184
   14052:	74 e0       	ldi	r23, 0x04	; 4
   14054:	43 e0       	ldi	r20, 0x03	; 3
   14056:	50 e0       	ldi	r21, 0x00	; 0
   14058:	0e 94 59 f0 	call	0x1e0b2	; 0x1e0b2 <strncmp>
   1405c:	00 97       	sbiw	r24, 0x00	; 0
   1405e:	79 f4       	brne	.+30     	; 0x1407e <TeledyneATM88X_ParseFile+0x110>
			{
				pTaskInfo->pBuf->sampleModem = FALSE;
   14060:	d7 01       	movw	r26, r14
   14062:	14 96       	adiw	r26, 0x04	; 4
   14064:	ed 91       	ld	r30, X+
   14066:	fc 91       	ld	r31, X
   14068:	15 97       	sbiw	r26, 0x05	; 5
   1406a:	ec 5e       	subi	r30, 0xEC	; 236
   1406c:	fa 4f       	sbci	r31, 0xFA	; 250
   1406e:	10 82       	st	Z, r1
				pTaskInfo->pBuf->nextSample = 0;
   14070:	14 96       	adiw	r26, 0x04	; 4
   14072:	ed 91       	ld	r30, X+
   14074:	fc 91       	ld	r31, X
   14076:	15 97       	sbiw	r26, 0x05	; 5
   14078:	eb 5e       	subi	r30, 0xEB	; 235
   1407a:	fa 4f       	sbci	r31, 0xFA	; 250
   1407c:	41 c0       	rjmp	.+130    	; 0x14100 <TeledyneATM88X_ParseFile+0x192>

				TeledyneATM88X_ReportModemTelemetry(pTaskInfo);
				retval = SUCCESS;
			}

			else if(strncmp(subCommand, "STA", 3) == 0)
   1407e:	c8 01       	movw	r24, r16
   14080:	6c eb       	ldi	r22, 0xBC	; 188
   14082:	74 e0       	ldi	r23, 0x04	; 4
   14084:	43 e0       	ldi	r20, 0x03	; 3
   14086:	50 e0       	ldi	r21, 0x00	; 0
   14088:	0e 94 59 f0 	call	0x1e0b2	; 0x1e0b2 <strncmp>
   1408c:	00 97       	sbiw	r24, 0x00	; 0
   1408e:	09 f0       	breq	.+2      	; 0x14092 <TeledyneATM88X_ParseFile+0x124>
   14090:	57 c0       	rjmp	.+174    	; 0x14140 <TeledyneATM88X_ParseFile+0x1d2>
			{
				char* reportPeriod = ThreadSafeStrTok(&context, sep);
   14092:	c6 01       	movw	r24, r12
   14094:	b5 01       	movw	r22, r10
   14096:	0e 94 5a 9f 	call	0x13eb4	; 0x13eb4 <ThreadSafeStrTok>
   1409a:	6c 01       	movw	r12, r24
				uint32_t period = atol(reportPeriod);
   1409c:	0e 94 77 ef 	call	0x1deee	; 0x1deee <atol>
   140a0:	28 2f       	mov	r18, r24

				period = period * 60;

				if(pTaskInfo->pBuf->modemIsOn == TRUE)
   140a2:	f7 01       	movw	r30, r14
   140a4:	04 81       	ldd	r16, Z+4	; 0x04
   140a6:	15 81       	ldd	r17, Z+5	; 0x05
   140a8:	07 5e       	subi	r16, 0xE7	; 231
   140aa:	1a 4f       	sbci	r17, 0xFA	; 250
   140ac:	d8 01       	movw	r26, r16
   140ae:	bc 90       	ld	r11, X
   140b0:	09 51       	subi	r16, 0x19	; 25
   140b2:	15 40       	sbci	r17, 0x05	; 5
   140b4:	bf ef       	ldi	r27, 0xFF	; 255
   140b6:	bb 16       	cp	r11, r27
   140b8:	09 f0       	breq	.+2      	; 0x140bc <TeledyneATM88X_ParseFile+0x14e>
   140ba:	2f c1       	rjmp	.+606    	; 0x1431a <TeledyneATM88X_ParseFile+0x3ac>
				{
					if (*reportPeriod && (period != 0))
   140bc:	f6 01       	movw	r30, r12
   140be:	80 81       	ld	r24, Z
   140c0:	88 23       	and	r24, r24
   140c2:	09 f4       	brne	.+2      	; 0x140c6 <TeledyneATM88X_ParseFile+0x158>
   140c4:	11 c1       	rjmp	.+546    	; 0x142e8 <TeledyneATM88X_ParseFile+0x37a>
			else if(strncmp(subCommand, "STA", 3) == 0)
			{
				char* reportPeriod = ThreadSafeStrTok(&context, sep);
				uint32_t period = atol(reportPeriod);

				period = period * 60;
   140c6:	82 2f       	mov	r24, r18
   140c8:	2c e3       	ldi	r18, 0x3C	; 60
   140ca:	30 e0       	ldi	r19, 0x00	; 0
   140cc:	40 e0       	ldi	r20, 0x00	; 0
   140ce:	50 e0       	ldi	r21, 0x00	; 0
   140d0:	0e 94 f2 f3 	call	0x1e7e4	; 0x1e7e4 <__mulsi3>

				if(pTaskInfo->pBuf->modemIsOn == TRUE)
				{
					if (*reportPeriod && (period != 0))
   140d4:	61 15       	cp	r22, r1
   140d6:	71 05       	cpc	r23, r1
   140d8:	81 05       	cpc	r24, r1
   140da:	91 05       	cpc	r25, r1
   140dc:	09 f4       	brne	.+2      	; 0x140e0 <TeledyneATM88X_ParseFile+0x172>
   140de:	04 c1       	rjmp	.+520    	; 0x142e8 <TeledyneATM88X_ParseFile+0x37a>
					{
						pTaskInfo->pBuf->sampleModem = TRUE;
   140e0:	0c 5e       	subi	r16, 0xEC	; 236
   140e2:	1a 4f       	sbci	r17, 0xFA	; 250
   140e4:	d8 01       	movw	r26, r16
   140e6:	bc 92       	st	X, r11
						pTaskInfo->pBuf->sampleRate = period;
   140e8:	d7 01       	movw	r26, r14
   140ea:	14 96       	adiw	r26, 0x04	; 4
   140ec:	ed 91       	ld	r30, X+
   140ee:	fc 91       	ld	r31, X
   140f0:	15 97       	sbiw	r26, 0x05	; 5
   140f2:	e0 50       	subi	r30, 0x00	; 0
   140f4:	fb 4f       	sbci	r31, 0xFB	; 251
   140f6:	60 83       	st	Z, r22
   140f8:	71 83       	std	Z+1, r23	; 0x01
   140fa:	82 83       	std	Z+2, r24	; 0x02
   140fc:	93 83       	std	Z+3, r25	; 0x03
						pTaskInfo->pBuf->nextSample = 0;
   140fe:	75 96       	adiw	r30, 0x15	; 21
   14100:	10 82       	st	Z, r1
   14102:	11 82       	std	Z+1, r1	; 0x01
   14104:	12 82       	std	Z+2, r1	; 0x02
   14106:	13 82       	std	Z+3, r1	; 0x03
						TeledyneATM88X_ReportModemTelemetry(pTaskInfo);
   14108:	c7 01       	movw	r24, r14
   1410a:	0e 94 1d 9f 	call	0x13e3a	; 0x13e3a <TeledyneATM88X_ReportModemTelemetry>
				EnablePIBModule(pTaskInfo->portNum, FALSE, FALSE);
				pTaskInfo->pBuf->modemIsOn = FALSE;
			}			
			if(retval == SUCCESS)
			{
				memcpy_P(&fileOut[pTaskInfo->portNum][0], PSTR("OK"), 2);
   1410e:	f7 01       	movw	r30, r14
   14110:	21 81       	ldd	r18, Z+1	; 0x01
   14112:	92 2f       	mov	r25, r18
   14114:	99 0f       	add	r25, r25
   14116:	99 0f       	add	r25, r25
   14118:	80 e0       	ldi	r24, 0x00	; 0
   1411a:	8f 5a       	subi	r24, 0xAF	; 175
   1411c:	92 47       	sbci	r25, 0x72	; 114
   1411e:	62 e4       	ldi	r22, 0x42	; 66
   14120:	72 e1       	ldi	r23, 0x12	; 18
   14122:	42 e0       	ldi	r20, 0x02	; 2
   14124:	50 e0       	ldi	r21, 0x00	; 0
   14126:	0e 94 ab ef 	call	0x1df56	; 0x1df56 <memcpy_P>
				fileOutSize[pTaskInfo->portNum] = 2;
   1412a:	d7 01       	movw	r26, r14
   1412c:	11 96       	adiw	r26, 0x01	; 1
   1412e:	ec 91       	ld	r30, X
   14130:	f0 e0       	ldi	r31, 0x00	; 0
   14132:	ee 0f       	add	r30, r30
   14134:	ff 1f       	adc	r31, r31
   14136:	ef 5a       	subi	r30, 0xAF	; 175
   14138:	f2 46       	sbci	r31, 0x62	; 98
   1413a:	82 e0       	ldi	r24, 0x02	; 2
   1413c:	90 e0       	ldi	r25, 0x00	; 0
   1413e:	05 c1       	rjmp	.+522    	; 0x1434a <TeledyneATM88X_ParseFile+0x3dc>
				else
				{
					retval = MODEM_IS_OFF;
				}
			}
			else if(strncmp(subCommand, "ON", 2) == 0)
   14140:	c8 01       	movw	r24, r16
   14142:	60 ec       	ldi	r22, 0xC0	; 192
   14144:	74 e0       	ldi	r23, 0x04	; 4
   14146:	42 e0       	ldi	r20, 0x02	; 2
   14148:	50 e0       	ldi	r21, 0x00	; 0
   1414a:	0e 94 59 f0 	call	0x1e0b2	; 0x1e0b2 <strncmp>
   1414e:	00 97       	sbiw	r24, 0x00	; 0
   14150:	81 f4       	brne	.+32     	; 0x14172 <TeledyneATM88X_ParseFile+0x204>
			{
				EnablePIBModule(pTaskInfo->portNum, TRUE, FALSE);
   14152:	f7 01       	movw	r30, r14
   14154:	81 81       	ldd	r24, Z+1	; 0x01
   14156:	6f ef       	ldi	r22, 0xFF	; 255
   14158:	40 e0       	ldi	r20, 0x00	; 0
   1415a:	0e 94 a2 38 	call	0x7144	; 0x7144 <EnablePIBModule>
				pTaskInfo->pBuf->modemIsOn = TRUE;
   1415e:	d7 01       	movw	r26, r14
   14160:	14 96       	adiw	r26, 0x04	; 4
   14162:	ed 91       	ld	r30, X+
   14164:	fc 91       	ld	r31, X
   14166:	15 97       	sbiw	r26, 0x05	; 5
   14168:	e7 5e       	subi	r30, 0xE7	; 231
   1416a:	fa 4f       	sbci	r31, 0xFA	; 250
   1416c:	8f ef       	ldi	r24, 0xFF	; 255
   1416e:	80 83       	st	Z, r24
   14170:	bb c0       	rjmp	.+374    	; 0x142e8 <TeledyneATM88X_ParseFile+0x37a>
			}
			else if(strncmp(subCommand, "OFF", 3) == 0)
   14172:	c8 01       	movw	r24, r16
   14174:	63 ec       	ldi	r22, 0xC3	; 195
   14176:	74 e0       	ldi	r23, 0x04	; 4
   14178:	43 e0       	ldi	r20, 0x03	; 3
   1417a:	50 e0       	ldi	r21, 0x00	; 0
   1417c:	0e 94 59 f0 	call	0x1e0b2	; 0x1e0b2 <strncmp>
   14180:	00 97       	sbiw	r24, 0x00	; 0
   14182:	09 f0       	breq	.+2      	; 0x14186 <TeledyneATM88X_ParseFile+0x218>
   14184:	b1 c0       	rjmp	.+354    	; 0x142e8 <TeledyneATM88X_ParseFile+0x37a>
			{
				EnablePIBModule(pTaskInfo->portNum, FALSE, FALSE);
   14186:	f7 01       	movw	r30, r14
   14188:	81 81       	ldd	r24, Z+1	; 0x01
   1418a:	60 e0       	ldi	r22, 0x00	; 0
   1418c:	40 e0       	ldi	r20, 0x00	; 0
   1418e:	0e 94 a2 38 	call	0x7144	; 0x7144 <EnablePIBModule>
				pTaskInfo->pBuf->modemIsOn = FALSE;
   14192:	d7 01       	movw	r26, r14
   14194:	14 96       	adiw	r26, 0x04	; 4
   14196:	ed 91       	ld	r30, X+
   14198:	fc 91       	ld	r31, X
   1419a:	15 97       	sbiw	r26, 0x05	; 5
   1419c:	e7 5e       	subi	r30, 0xE7	; 231
   1419e:	fa 4f       	sbci	r31, 0xFA	; 250
   141a0:	10 82       	st	Z, r1
   141a2:	a2 c0       	rjmp	.+324    	; 0x142e8 <TeledyneATM88X_ParseFile+0x37a>
			{
				memcpy_P(&fileOut[pTaskInfo->portNum][0], PSTR("OK"), 2);
				fileOutSize[pTaskInfo->portNum] = 2;
			}
		}
		else if(strncmp(cmdTok, "DEV", 3) == 0)
   141a4:	c8 01       	movw	r24, r16
   141a6:	67 ec       	ldi	r22, 0xC7	; 199
   141a8:	74 e0       	ldi	r23, 0x04	; 4
   141aa:	43 e0       	ldi	r20, 0x03	; 3
   141ac:	50 e0       	ldi	r21, 0x00	; 0
   141ae:	0e 94 59 f0 	call	0x1e0b2	; 0x1e0b2 <strncmp>
   141b2:	00 97       	sbiw	r24, 0x00	; 0
   141b4:	09 f0       	breq	.+2      	; 0x141b8 <TeledyneATM88X_ParseFile+0x24a>
   141b6:	98 c0       	rjmp	.+304    	; 0x142e8 <TeledyneATM88X_ParseFile+0x37a>
		{
			char* tail = ThreadSafeStrTokTail(&context, sep);
   141b8:	c6 01       	movw	r24, r12
   141ba:	b5 01       	movw	r22, r10
   141bc:	0e 94 33 9f 	call	0x13e66	; 0x13e66 <ThreadSafeStrTokTail>
   141c0:	b8 2e       	mov	r11, r24
   141c2:	a9 2e       	mov	r10, r25
			uint16_t tailLen = strlen(tail);
   141c4:	e8 2f       	mov	r30, r24
   141c6:	f9 2f       	mov	r31, r25
   141c8:	df 01       	movw	r26, r30
   141ca:	0d 90       	ld	r0, X+
   141cc:	00 20       	and	r0, r0
   141ce:	e9 f7       	brne	.-6      	; 0x141ca <TeledyneATM88X_ParseFile+0x25c>
   141d0:	8d 01       	movw	r16, r26
   141d2:	01 50       	subi	r16, 0x01	; 1
   141d4:	10 40       	sbci	r17, 0x00	; 0
   141d6:	0e 1b       	sub	r16, r30
   141d8:	1f 0b       	sbc	r17, r31

			//We have a Command to send to the Modem
			if (tailLen)
   141da:	09 f4       	brne	.+2      	; 0x141de <TeledyneATM88X_ParseFile+0x270>
   141dc:	85 c0       	rjmp	.+266    	; 0x142e8 <TeledyneATM88X_ParseFile+0x37a>
			{
				if(pTaskInfo->pBuf->sampleModem == FALSE)
   141de:	d7 01       	movw	r26, r14
   141e0:	14 96       	adiw	r26, 0x04	; 4
   141e2:	ed 91       	ld	r30, X+
   141e4:	fc 91       	ld	r31, X
   141e6:	15 97       	sbiw	r26, 0x05	; 5
   141e8:	ec 5e       	subi	r30, 0xEC	; 236
   141ea:	fa 4f       	sbci	r31, 0xFA	; 250
   141ec:	80 81       	ld	r24, Z
   141ee:	88 23       	and	r24, r24
   141f0:	09 f0       	breq	.+2      	; 0x141f4 <TeledyneATM88X_ParseFile+0x286>
   141f2:	61 c0       	rjmp	.+194    	; 0x142b6 <TeledyneATM88X_ParseFile+0x348>
				{			
					uint8_t err;
					char c;

					OSTimeDlyHMSM(0,0,0,100);
   141f4:	60 e0       	ldi	r22, 0x00	; 0
   141f6:	40 e0       	ldi	r20, 0x00	; 0
   141f8:	24 e6       	ldi	r18, 0x64	; 100
   141fa:	30 e0       	ldi	r19, 0x00	; 0
   141fc:	0e 94 2a 2e 	call	0x5c54	; 0x5c54 <OSTimeDlyHMSM>

					memset(pTaskInfo->pBuf->bufferRx, 0, 1024);
   14200:	f7 01       	movw	r30, r14
   14202:	84 81       	ldd	r24, Z+4	; 0x04
   14204:	95 81       	ldd	r25, Z+5	; 0x05
   14206:	80 50       	subi	r24, 0x00	; 0
   14208:	9f 4f       	sbci	r25, 0xFF	; 255
   1420a:	dc 01       	movw	r26, r24
   1420c:	c4 01       	movw	r24, r8
   1420e:	1d 92       	st	X+, r1
   14210:	01 97       	sbiw	r24, 0x01	; 1
   14212:	e9 f7       	brne	.-6      	; 0x1420e <TeledyneATM88X_ParseFile+0x2a0>

					err = OS_ERR_NONE;		
   14214:	1a 82       	std	Y+2, r1	; 0x02
					while(err == OS_ERR_NONE)
					{
						c = (char) OSuartGetCharWait(pTaskInfo->portNum, 64, &err);		//wait .05 seconds -- basically clearing buffer
   14216:	62 e0       	ldi	r22, 0x02	; 2
   14218:	c6 2e       	mov	r12, r22
   1421a:	d1 2c       	mov	r13, r1
   1421c:	cc 0e       	add	r12, r28
   1421e:	dd 1e       	adc	r13, r29
   14220:	08 c0       	rjmp	.+16     	; 0x14232 <TeledyneATM88X_ParseFile+0x2c4>
   14222:	d7 01       	movw	r26, r14
   14224:	11 96       	adiw	r26, 0x01	; 1
   14226:	8c 91       	ld	r24, X
   14228:	60 e4       	ldi	r22, 0x40	; 64
   1422a:	70 e0       	ldi	r23, 0x00	; 0
   1422c:	a6 01       	movw	r20, r12
   1422e:	0e 94 b8 32 	call	0x6570	; 0x6570 <OSuartGetCharWait>
					OSTimeDlyHMSM(0,0,0,100);

					memset(pTaskInfo->pBuf->bufferRx, 0, 1024);

					err = OS_ERR_NONE;		
					while(err == OS_ERR_NONE)
   14232:	8a 81       	ldd	r24, Y+2	; 0x02
   14234:	88 23       	and	r24, r24
   14236:	a9 f3       	breq	.-22     	; 0x14222 <TeledyneATM88X_ParseFile+0x2b4>
					{
						c = (char) OSuartGetCharWait(pTaskInfo->portNum, 64, &err);		//wait .05 seconds -- basically clearing buffer
					}
		
					TeledyneATM88X_Tx(pTaskInfo, tail, tailLen);
   14238:	c7 01       	movw	r24, r14
   1423a:	6b 2d       	mov	r22, r11
   1423c:	7a 2d       	mov	r23, r10
   1423e:	a8 01       	movw	r20, r16
   14240:	0e 94 86 9f 	call	0x13f0c	; 0x13f0c <TeledyneATM88X_Tx>
					len = 0;
   14244:	1c 82       	std	Y+4, r1	; 0x04
   14246:	1b 82       	std	Y+3, r1	; 0x03
					TeledyneATM88X_Rx(pTaskInfo, pTaskInfo->pBuf->bufferRx, &len, &eol, 1);
   14248:	f7 01       	movw	r30, r14
   1424a:	64 81       	ldd	r22, Z+4	; 0x04
   1424c:	75 81       	ldd	r23, Z+5	; 0x05
   1424e:	60 50       	subi	r22, 0x00	; 0
   14250:	7f 4f       	sbci	r23, 0xFF	; 255
   14252:	c7 01       	movw	r24, r14
   14254:	ae 01       	movw	r20, r28
   14256:	4d 5f       	subi	r20, 0xFD	; 253
   14258:	5f 4f       	sbci	r21, 0xFF	; 255
   1425a:	9e 01       	movw	r18, r28
   1425c:	2f 5f       	subi	r18, 0xFF	; 255
   1425e:	3f 4f       	sbci	r19, 0xFF	; 255
   14260:	01 e0       	ldi	r16, 0x01	; 1
   14262:	10 e0       	ldi	r17, 0x00	; 0
   14264:	0e 94 75 9d 	call	0x13aea	; 0x13aea <TeledyneATM88X_Rx>
					if((len > 0) && (len < 1024))
   14268:	eb 81       	ldd	r30, Y+3	; 0x03
   1426a:	fc 81       	ldd	r31, Y+4	; 0x04
   1426c:	cf 01       	movw	r24, r30
   1426e:	01 97       	sbiw	r24, 0x01	; 1
   14270:	8f 5f       	subi	r24, 0xFF	; 255
   14272:	93 40       	sbci	r25, 0x03	; 3
   14274:	c8 f5       	brcc	.+114    	; 0x142e8 <TeledyneATM88X_ParseFile+0x37a>
					{
						memcpy(&fileOut[pTaskInfo->portNum][0], pTaskInfo->pBuf->bufferRx, len);
   14276:	d7 01       	movw	r26, r14
   14278:	11 96       	adiw	r26, 0x01	; 1
   1427a:	8c 91       	ld	r24, X
   1427c:	11 97       	sbiw	r26, 0x01	; 1
   1427e:	38 2f       	mov	r19, r24
   14280:	33 0f       	add	r19, r19
   14282:	33 0f       	add	r19, r19
   14284:	20 e0       	ldi	r18, 0x00	; 0
   14286:	2f 5a       	subi	r18, 0xAF	; 175
   14288:	32 47       	sbci	r19, 0x72	; 114
   1428a:	14 96       	adiw	r26, 0x04	; 4
   1428c:	4d 91       	ld	r20, X+
   1428e:	5c 91       	ld	r21, X
   14290:	15 97       	sbiw	r26, 0x05	; 5
   14292:	40 50       	subi	r20, 0x00	; 0
   14294:	5f 4f       	sbci	r21, 0xFF	; 255
   14296:	c9 01       	movw	r24, r18
   14298:	ba 01       	movw	r22, r20
   1429a:	af 01       	movw	r20, r30
   1429c:	0e 94 1c f0 	call	0x1e038	; 0x1e038 <memcpy>
						fileOutSize[pTaskInfo->portNum] = len;
   142a0:	d7 01       	movw	r26, r14
   142a2:	11 96       	adiw	r26, 0x01	; 1
   142a4:	ec 91       	ld	r30, X
   142a6:	f0 e0       	ldi	r31, 0x00	; 0
   142a8:	ee 0f       	add	r30, r30
   142aa:	ff 1f       	adc	r31, r31
   142ac:	ef 5a       	subi	r30, 0xAF	; 175
   142ae:	f2 46       	sbci	r31, 0x62	; 98
   142b0:	8b 81       	ldd	r24, Y+3	; 0x03
   142b2:	9c 81       	ldd	r25, Y+4	; 0x04
   142b4:	4a c0       	rjmp	.+148    	; 0x1434a <TeledyneATM88X_ParseFile+0x3dc>
						retval = SUCCESS;
					}
				}
				else
				{
					memcpy_P(&fileOut[pTaskInfo->portNum][0], PSTR("You must stop sampling first"), 28);
   142b6:	f7 01       	movw	r30, r14
   142b8:	21 81       	ldd	r18, Z+1	; 0x01
   142ba:	92 2f       	mov	r25, r18
   142bc:	99 0f       	add	r25, r25
   142be:	99 0f       	add	r25, r25
   142c0:	80 e0       	ldi	r24, 0x00	; 0
   142c2:	8f 5a       	subi	r24, 0xAF	; 175
   142c4:	92 47       	sbci	r25, 0x72	; 114
   142c6:	65 e2       	ldi	r22, 0x25	; 37
   142c8:	72 e1       	ldi	r23, 0x12	; 18
   142ca:	4c e1       	ldi	r20, 0x1C	; 28
   142cc:	50 e0       	ldi	r21, 0x00	; 0
   142ce:	0e 94 ab ef 	call	0x1df56	; 0x1df56 <memcpy_P>
					fileOutSize[pTaskInfo->portNum] = 28;
   142d2:	d7 01       	movw	r26, r14
   142d4:	11 96       	adiw	r26, 0x01	; 1
   142d6:	ec 91       	ld	r30, X
   142d8:	f0 e0       	ldi	r31, 0x00	; 0
   142da:	ee 0f       	add	r30, r30
   142dc:	ff 1f       	adc	r31, r31
   142de:	ef 5a       	subi	r30, 0xAF	; 175
   142e0:	f2 46       	sbci	r31, 0x62	; 98
   142e2:	8c e1       	ldi	r24, 0x1C	; 28
   142e4:	90 e0       	ldi	r25, 0x00	; 0
   142e6:	31 c0       	rjmp	.+98     	; 0x1434a <TeledyneATM88X_ParseFile+0x3dc>
		}
	}

	if(retval == FAIL)
	{
		memcpy_P(&fileOut[pTaskInfo->portNum][0], PSTR("Unrecognized Command"), 20);
   142e8:	f7 01       	movw	r30, r14
   142ea:	21 81       	ldd	r18, Z+1	; 0x01
   142ec:	92 2f       	mov	r25, r18
   142ee:	99 0f       	add	r25, r25
   142f0:	99 0f       	add	r25, r25
   142f2:	80 e0       	ldi	r24, 0x00	; 0
   142f4:	8f 5a       	subi	r24, 0xAF	; 175
   142f6:	92 47       	sbci	r25, 0x72	; 114
   142f8:	60 e1       	ldi	r22, 0x10	; 16
   142fa:	72 e1       	ldi	r23, 0x12	; 18
   142fc:	44 e1       	ldi	r20, 0x14	; 20
   142fe:	50 e0       	ldi	r21, 0x00	; 0
   14300:	0e 94 ab ef 	call	0x1df56	; 0x1df56 <memcpy_P>
		fileOutSize[pTaskInfo->portNum] = 20;
   14304:	d7 01       	movw	r26, r14
   14306:	11 96       	adiw	r26, 0x01	; 1
   14308:	ec 91       	ld	r30, X
   1430a:	f0 e0       	ldi	r31, 0x00	; 0
   1430c:	ee 0f       	add	r30, r30
   1430e:	ff 1f       	adc	r31, r31
   14310:	ef 5a       	subi	r30, 0xAF	; 175
   14312:	f2 46       	sbci	r31, 0x62	; 98
   14314:	84 e1       	ldi	r24, 0x14	; 20
   14316:	90 e0       	ldi	r25, 0x00	; 0
   14318:	18 c0       	rjmp	.+48     	; 0x1434a <TeledyneATM88X_ParseFile+0x3dc>
		retval = SUCCESS;
	}

	if(retval == MODEM_IS_OFF)
	{
		memcpy_P(&fileOut[pTaskInfo->portNum][0], PSTR("Modem is Off -- Please turn it on first."), 20);
   1431a:	f7 01       	movw	r30, r14
   1431c:	21 81       	ldd	r18, Z+1	; 0x01
   1431e:	92 2f       	mov	r25, r18
   14320:	99 0f       	add	r25, r25
   14322:	99 0f       	add	r25, r25
   14324:	80 e0       	ldi	r24, 0x00	; 0
   14326:	8f 5a       	subi	r24, 0xAF	; 175
   14328:	92 47       	sbci	r25, 0x72	; 114
   1432a:	67 ee       	ldi	r22, 0xE7	; 231
   1432c:	71 e1       	ldi	r23, 0x11	; 17
   1432e:	44 e1       	ldi	r20, 0x14	; 20
   14330:	50 e0       	ldi	r21, 0x00	; 0
   14332:	0e 94 ab ef 	call	0x1df56	; 0x1df56 <memcpy_P>
		fileOutSize[pTaskInfo->portNum] = 40;
   14336:	d7 01       	movw	r26, r14
   14338:	11 96       	adiw	r26, 0x01	; 1
   1433a:	ec 91       	ld	r30, X
   1433c:	f0 e0       	ldi	r31, 0x00	; 0
   1433e:	ee 0f       	add	r30, r30
   14340:	ff 1f       	adc	r31, r31
   14342:	ef 5a       	subi	r30, 0xAF	; 175
   14344:	f2 46       	sbci	r31, 0x62	; 98
   14346:	88 e2       	ldi	r24, 0x28	; 40
   14348:	90 e0       	ldi	r25, 0x00	; 0
   1434a:	91 83       	std	Z+1, r25	; 0x01
   1434c:	80 83       	st	Z, r24
		retval = SUCCESS;
	}

	TeledyneATM88X_QueueFile(pTaskInfo, fileID);
   1434e:	c7 01       	movw	r24, r14
   14350:	b3 01       	movw	r22, r6
   14352:	a2 01       	movw	r20, r4
   14354:	0e 94 5d 9c 	call	0x138ba	; 0x138ba <TeledyneATM88X_QueueFile>
	
	return retval;
}
   14358:	8f ef       	ldi	r24, 0xFF	; 255
   1435a:	2a 96       	adiw	r28, 0x0a	; 10
   1435c:	0f b6       	in	r0, 0x3f	; 63
   1435e:	f8 94       	cli
   14360:	de bf       	out	0x3e, r29	; 62
   14362:	0f be       	out	0x3f, r0	; 63
   14364:	cd bf       	out	0x3d, r28	; 61
   14366:	cf 91       	pop	r28
   14368:	df 91       	pop	r29
   1436a:	1f 91       	pop	r17
   1436c:	0f 91       	pop	r16
   1436e:	ff 90       	pop	r15
   14370:	ef 90       	pop	r14
   14372:	df 90       	pop	r13
   14374:	cf 90       	pop	r12
   14376:	bf 90       	pop	r11
   14378:	af 90       	pop	r10
   1437a:	9f 90       	pop	r9
   1437c:	8f 90       	pop	r8
   1437e:	7f 90       	pop	r7
   14380:	6f 90       	pop	r6
   14382:	5f 90       	pop	r5
   14384:	4f 90       	pop	r4
   14386:	08 95       	ret

00014388 <TeledyneATM88X_ParseCommand>:
	return;
}


uint8_t TeledyneATM88X_ParseCommand(PTELEDYNE_ATM_88X_TASK pTaskInfo, char command, char* myCommand)
{
   14388:	af 92       	push	r10
   1438a:	bf 92       	push	r11
   1438c:	cf 92       	push	r12
   1438e:	df 92       	push	r13
   14390:	ef 92       	push	r14
   14392:	ff 92       	push	r15
   14394:	0f 93       	push	r16
   14396:	1f 93       	push	r17
   14398:	df 93       	push	r29
   1439a:	cf 93       	push	r28
   1439c:	00 d0       	rcall	.+0      	; 0x1439e <TeledyneATM88X_ParseCommand+0x16>
   1439e:	00 d0       	rcall	.+0      	; 0x143a0 <TeledyneATM88X_ParseCommand+0x18>
   143a0:	cd b7       	in	r28, 0x3d	; 61
   143a2:	de b7       	in	r29, 0x3e	; 62
   143a4:	7c 01       	movw	r14, r24
   143a6:	16 2f       	mov	r17, r22
   143a8:	5e 83       	std	Y+6, r21	; 0x06
   143aa:	4d 83       	std	Y+5, r20	; 0x05
	
	uint8_t retval = FAIL;

	sprintf_P(dbgMsg, PSTR("Parsing Command <%c> <%s>"), command, myCommand); SEND_MSG;
   143ac:	2d b7       	in	r18, 0x3d	; 61
   143ae:	3e b7       	in	r19, 0x3e	; 62
   143b0:	28 50       	subi	r18, 0x08	; 8
   143b2:	30 40       	sbci	r19, 0x00	; 0
   143b4:	0f b6       	in	r0, 0x3f	; 63
   143b6:	f8 94       	cli
   143b8:	3e bf       	out	0x3e, r19	; 62
   143ba:	0f be       	out	0x3f, r0	; 63
   143bc:	2d bf       	out	0x3d, r18	; 61
   143be:	ed b7       	in	r30, 0x3d	; 61
   143c0:	fe b7       	in	r31, 0x3e	; 62
   143c2:	31 96       	adiw	r30, 0x01	; 1
   143c4:	83 ef       	ldi	r24, 0xF3	; 243
   143c6:	98 e1       	ldi	r25, 0x18	; 24
   143c8:	ad b7       	in	r26, 0x3d	; 61
   143ca:	be b7       	in	r27, 0x3e	; 62
   143cc:	12 96       	adiw	r26, 0x02	; 2
   143ce:	9c 93       	st	X, r25
   143d0:	8e 93       	st	-X, r24
   143d2:	11 97       	sbiw	r26, 0x01	; 1
   143d4:	86 ee       	ldi	r24, 0xE6	; 230
   143d6:	92 e1       	ldi	r25, 0x12	; 18
   143d8:	93 83       	std	Z+3, r25	; 0x03
   143da:	82 83       	std	Z+2, r24	; 0x02
   143dc:	64 83       	std	Z+4, r22	; 0x04
   143de:	15 82       	std	Z+5, r1	; 0x05
   143e0:	8d 81       	ldd	r24, Y+5	; 0x05
   143e2:	9e 81       	ldd	r25, Y+6	; 0x06
   143e4:	97 83       	std	Z+7, r25	; 0x07
   143e6:	86 83       	std	Z+6, r24	; 0x06
   143e8:	0e 94 51 f1 	call	0x1e2a2	; 0x1e2a2 <sprintf_P>
	
	switch (command)
   143ec:	ed b7       	in	r30, 0x3d	; 61
   143ee:	fe b7       	in	r31, 0x3e	; 62
   143f0:	38 96       	adiw	r30, 0x08	; 8
   143f2:	0f b6       	in	r0, 0x3f	; 63
   143f4:	f8 94       	cli
   143f6:	fe bf       	out	0x3e, r31	; 62
   143f8:	0f be       	out	0x3f, r0	; 63
   143fa:	ed bf       	out	0x3d, r30	; 61
   143fc:	18 35       	cpi	r17, 0x58	; 88
   143fe:	09 f4       	brne	.+2      	; 0x14402 <TeledyneATM88X_ParseCommand+0x7a>
   14400:	84 c0       	rjmp	.+264    	; 0x1450a <TeledyneATM88X_ParseCommand+0x182>
   14402:	19 35       	cpi	r17, 0x59	; 89
   14404:	a8 f4       	brcc	.+42     	; 0x14430 <TeledyneATM88X_ParseCommand+0xa8>
   14406:	19 34       	cpi	r17, 0x49	; 73
   14408:	09 f4       	brne	.+2      	; 0x1440c <TeledyneATM88X_ParseCommand+0x84>
   1440a:	cb c0       	rjmp	.+406    	; 0x145a2 <TeledyneATM88X_ParseCommand+0x21a>
   1440c:	1a 34       	cpi	r17, 0x4A	; 74
   1440e:	38 f4       	brcc	.+14     	; 0x1441e <TeledyneATM88X_ParseCommand+0x96>
   14410:	13 34       	cpi	r17, 0x43	; 67
   14412:	09 f4       	brne	.+2      	; 0x14416 <TeledyneATM88X_ParseCommand+0x8e>
   14414:	37 c1       	rjmp	.+622    	; 0x14684 <TeledyneATM88X_ParseCommand+0x2fc>
   14416:	16 34       	cpi	r17, 0x46	; 70
   14418:	09 f0       	breq	.+2      	; 0x1441c <TeledyneATM88X_ParseCommand+0x94>
   1441a:	17 c2       	rjmp	.+1070   	; 0x1484a <TeledyneATM88X_ParseCommand+0x4c2>
   1441c:	9b c0       	rjmp	.+310    	; 0x14554 <TeledyneATM88X_ParseCommand+0x1cc>
   1441e:	12 35       	cpi	r17, 0x52	; 82
   14420:	f9 f0       	breq	.+62     	; 0x14460 <TeledyneATM88X_ParseCommand+0xd8>
   14422:	13 35       	cpi	r17, 0x53	; 83
   14424:	09 f4       	brne	.+2      	; 0x14428 <TeledyneATM88X_ParseCommand+0xa0>
   14426:	cd c0       	rjmp	.+410    	; 0x145c2 <TeledyneATM88X_ParseCommand+0x23a>
   14428:	1f 34       	cpi	r17, 0x4F	; 79
   1442a:	09 f0       	breq	.+2      	; 0x1442e <TeledyneATM88X_ParseCommand+0xa6>
   1442c:	0e c2       	rjmp	.+1052   	; 0x1484a <TeledyneATM88X_ParseCommand+0x4c2>
   1442e:	83 c0       	rjmp	.+262    	; 0x14536 <TeledyneATM88X_ParseCommand+0x1ae>
   14430:	1f 36       	cpi	r17, 0x6F	; 111
   14432:	09 f4       	brne	.+2      	; 0x14436 <TeledyneATM88X_ParseCommand+0xae>
   14434:	80 c0       	rjmp	.+256    	; 0x14536 <TeledyneATM88X_ParseCommand+0x1ae>
   14436:	10 37       	cpi	r17, 0x70	; 112
   14438:	50 f4       	brcc	.+20     	; 0x1444e <TeledyneATM88X_ParseCommand+0xc6>
   1443a:	16 36       	cpi	r17, 0x66	; 102
   1443c:	09 f4       	brne	.+2      	; 0x14440 <TeledyneATM88X_ParseCommand+0xb8>
   1443e:	8a c0       	rjmp	.+276    	; 0x14554 <TeledyneATM88X_ParseCommand+0x1cc>
   14440:	19 36       	cpi	r17, 0x69	; 105
   14442:	09 f4       	brne	.+2      	; 0x14446 <TeledyneATM88X_ParseCommand+0xbe>
   14444:	ae c0       	rjmp	.+348    	; 0x145a2 <TeledyneATM88X_ParseCommand+0x21a>
   14446:	13 36       	cpi	r17, 0x63	; 99
   14448:	09 f0       	breq	.+2      	; 0x1444c <TeledyneATM88X_ParseCommand+0xc4>
   1444a:	ff c1       	rjmp	.+1022   	; 0x1484a <TeledyneATM88X_ParseCommand+0x4c2>
   1444c:	1b c1       	rjmp	.+566    	; 0x14684 <TeledyneATM88X_ParseCommand+0x2fc>
   1444e:	13 37       	cpi	r17, 0x73	; 115
   14450:	09 f4       	brne	.+2      	; 0x14454 <TeledyneATM88X_ParseCommand+0xcc>
   14452:	b7 c0       	rjmp	.+366    	; 0x145c2 <TeledyneATM88X_ParseCommand+0x23a>
   14454:	18 37       	cpi	r17, 0x78	; 120
   14456:	09 f4       	brne	.+2      	; 0x1445a <TeledyneATM88X_ParseCommand+0xd2>
   14458:	58 c0       	rjmp	.+176    	; 0x1450a <TeledyneATM88X_ParseCommand+0x182>
   1445a:	12 37       	cpi	r17, 0x72	; 114
   1445c:	09 f0       	breq	.+2      	; 0x14460 <TeledyneATM88X_ParseCommand+0xd8>
   1445e:	f5 c1       	rjmp	.+1002   	; 0x1484a <TeledyneATM88X_ParseCommand+0x4c2>
	{
		case 'r':
		case 'R':
			// Run
			sprintf_P(dbgMsg, PSTR("RUN COMMAND")); SEND_MSG;
   14460:	00 d0       	rcall	.+0      	; 0x14462 <TeledyneATM88X_ParseCommand+0xda>
   14462:	0f 92       	push	r0
   14464:	83 ef       	ldi	r24, 0xF3	; 243
   14466:	98 e1       	ldi	r25, 0x18	; 24
   14468:	ad b7       	in	r26, 0x3d	; 61
   1446a:	be b7       	in	r27, 0x3e	; 62
   1446c:	12 96       	adiw	r26, 0x02	; 2
   1446e:	9c 93       	st	X, r25
   14470:	8e 93       	st	-X, r24
   14472:	11 97       	sbiw	r26, 0x01	; 1
   14474:	8a ed       	ldi	r24, 0xDA	; 218
   14476:	92 e1       	ldi	r25, 0x12	; 18
   14478:	14 96       	adiw	r26, 0x04	; 4
   1447a:	9c 93       	st	X, r25
   1447c:	8e 93       	st	-X, r24
   1447e:	13 97       	sbiw	r26, 0x03	; 3
   14480:	0e 94 51 f1 	call	0x1e2a2	; 0x1e2a2 <sprintf_P>

			char* reportPeriod = ThreadSafeStrTok(&myCommand, pTaskInfo->pBuf->tokenSeparatorList);
   14484:	0f 90       	pop	r0
   14486:	0f 90       	pop	r0
   14488:	0f 90       	pop	r0
   1448a:	0f 90       	pop	r0
   1448c:	f7 01       	movw	r30, r14
   1448e:	64 81       	ldd	r22, Z+4	; 0x04
   14490:	75 81       	ldd	r23, Z+5	; 0x05
   14492:	62 53       	subi	r22, 0x32	; 50
   14494:	7a 4f       	sbci	r23, 0xFA	; 250
   14496:	ce 01       	movw	r24, r28
   14498:	05 96       	adiw	r24, 0x05	; 5
   1449a:	0e 94 5a 9f 	call	0x13eb4	; 0x13eb4 <ThreadSafeStrTok>
   1449e:	6c 01       	movw	r12, r24
			uint32_t period = atol(reportPeriod);
   144a0:	0e 94 77 ef 	call	0x1deee	; 0x1deee <atol>
   144a4:	28 2f       	mov	r18, r24

			period = period * 60;

			if(pTaskInfo->pBuf->modemIsOn == TRUE)
   144a6:	d7 01       	movw	r26, r14
   144a8:	14 96       	adiw	r26, 0x04	; 4
   144aa:	0d 91       	ld	r16, X+
   144ac:	1c 91       	ld	r17, X
   144ae:	15 97       	sbiw	r26, 0x05	; 5
   144b0:	07 5e       	subi	r16, 0xE7	; 231
   144b2:	1a 4f       	sbci	r17, 0xFA	; 250
   144b4:	f8 01       	movw	r30, r16
   144b6:	b0 80       	ld	r11, Z
   144b8:	09 51       	subi	r16, 0x19	; 25
   144ba:	15 40       	sbci	r17, 0x05	; 5
   144bc:	ff ef       	ldi	r31, 0xFF	; 255
   144be:	bf 16       	cp	r11, r31
   144c0:	09 f0       	breq	.+2      	; 0x144c4 <TeledyneATM88X_ParseCommand+0x13c>
   144c2:	96 c1       	rjmp	.+812    	; 0x147f0 <TeledyneATM88X_ParseCommand+0x468>
			{
				if (*reportPeriod && (period != 0))
   144c4:	d6 01       	movw	r26, r12
   144c6:	8c 91       	ld	r24, X
   144c8:	88 23       	and	r24, r24
   144ca:	09 f4       	brne	.+2      	; 0x144ce <TeledyneATM88X_ParseCommand+0x146>
   144cc:	be c1       	rjmp	.+892    	; 0x1484a <TeledyneATM88X_ParseCommand+0x4c2>
			sprintf_P(dbgMsg, PSTR("RUN COMMAND")); SEND_MSG;

			char* reportPeriod = ThreadSafeStrTok(&myCommand, pTaskInfo->pBuf->tokenSeparatorList);
			uint32_t period = atol(reportPeriod);

			period = period * 60;
   144ce:	82 2f       	mov	r24, r18
   144d0:	2c e3       	ldi	r18, 0x3C	; 60
   144d2:	30 e0       	ldi	r19, 0x00	; 0
   144d4:	40 e0       	ldi	r20, 0x00	; 0
   144d6:	50 e0       	ldi	r21, 0x00	; 0
   144d8:	0e 94 f2 f3 	call	0x1e7e4	; 0x1e7e4 <__mulsi3>

			if(pTaskInfo->pBuf->modemIsOn == TRUE)
			{
				if (*reportPeriod && (period != 0))
   144dc:	61 15       	cp	r22, r1
   144de:	71 05       	cpc	r23, r1
   144e0:	81 05       	cpc	r24, r1
   144e2:	91 05       	cpc	r25, r1
   144e4:	09 f4       	brne	.+2      	; 0x144e8 <TeledyneATM88X_ParseCommand+0x160>
   144e6:	b1 c1       	rjmp	.+866    	; 0x1484a <TeledyneATM88X_ParseCommand+0x4c2>
				{
					pTaskInfo->pBuf->sampleModem = TRUE;
   144e8:	0c 5e       	subi	r16, 0xEC	; 236
   144ea:	1a 4f       	sbci	r17, 0xFA	; 250
   144ec:	f8 01       	movw	r30, r16
   144ee:	b0 82       	st	Z, r11
					pTaskInfo->pBuf->sampleRate = period;
   144f0:	d7 01       	movw	r26, r14
   144f2:	14 96       	adiw	r26, 0x04	; 4
   144f4:	ed 91       	ld	r30, X+
   144f6:	fc 91       	ld	r31, X
   144f8:	15 97       	sbiw	r26, 0x05	; 5
   144fa:	e0 50       	subi	r30, 0x00	; 0
   144fc:	fb 4f       	sbci	r31, 0xFB	; 251
   144fe:	60 83       	st	Z, r22
   14500:	71 83       	std	Z+1, r23	; 0x01
   14502:	82 83       	std	Z+2, r24	; 0x02
   14504:	93 83       	std	Z+3, r25	; 0x03
					pTaskInfo->pBuf->nextSample = 0;
   14506:	75 96       	adiw	r30, 0x15	; 21
   14508:	0e c0       	rjmp	.+28     	; 0x14526 <TeledyneATM88X_ParseCommand+0x19e>
		case 'x':
		case 'X':
			// Stop
			//sprintf_P(dbgMsg, PSTR("STOP COMMAND")); SEND_MSG;

			pTaskInfo->pBuf->sampleModem = FALSE;
   1450a:	d7 01       	movw	r26, r14
   1450c:	14 96       	adiw	r26, 0x04	; 4
   1450e:	ed 91       	ld	r30, X+
   14510:	fc 91       	ld	r31, X
   14512:	15 97       	sbiw	r26, 0x05	; 5
   14514:	ec 5e       	subi	r30, 0xEC	; 236
   14516:	fa 4f       	sbci	r31, 0xFA	; 250
   14518:	10 82       	st	Z, r1
			pTaskInfo->pBuf->nextSample = 0;
   1451a:	14 96       	adiw	r26, 0x04	; 4
   1451c:	ed 91       	ld	r30, X+
   1451e:	fc 91       	ld	r31, X
   14520:	15 97       	sbiw	r26, 0x05	; 5
   14522:	eb 5e       	subi	r30, 0xEB	; 235
   14524:	fa 4f       	sbci	r31, 0xFA	; 250
   14526:	10 82       	st	Z, r1
   14528:	11 82       	std	Z+1, r1	; 0x01
   1452a:	12 82       	std	Z+2, r1	; 0x02
   1452c:	13 82       	std	Z+3, r1	; 0x03

			TeledyneATM88X_ReportModemTelemetry(pTaskInfo);
   1452e:	c7 01       	movw	r24, r14
   14530:	0e 94 1d 9f 	call	0x13e3a	; 0x13e3a <TeledyneATM88X_ReportModemTelemetry>
   14534:	9c c1       	rjmp	.+824    	; 0x1486e <TeledyneATM88X_ParseCommand+0x4e6>
			// On

			//sprintf_P(dbgMsg, PSTR("ON COMMAND")); SEND_MSG;


			EnablePIBModule(pTaskInfo->portNum, TRUE, FALSE);
   14536:	f7 01       	movw	r30, r14
   14538:	81 81       	ldd	r24, Z+1	; 0x01
   1453a:	6f ef       	ldi	r22, 0xFF	; 255
   1453c:	40 e0       	ldi	r20, 0x00	; 0
   1453e:	0e 94 a2 38 	call	0x7144	; 0x7144 <EnablePIBModule>
			pTaskInfo->pBuf->modemIsOn = TRUE;
   14542:	d7 01       	movw	r26, r14
   14544:	14 96       	adiw	r26, 0x04	; 4
   14546:	ed 91       	ld	r30, X+
   14548:	fc 91       	ld	r31, X
   1454a:	15 97       	sbiw	r26, 0x05	; 5
   1454c:	e7 5e       	subi	r30, 0xE7	; 231
   1454e:	fa 4f       	sbci	r31, 0xFA	; 250
   14550:	8f ef       	ldi	r24, 0xFF	; 255
   14552:	4c c1       	rjmp	.+664    	; 0x147ec <TeledyneATM88X_ParseCommand+0x464>
			// Off

			//sprintf_P(dbgMsg, PSTR("OFF COMMAND")); SEND_MSG;

			// stop sampling if still sampling
			if (pTaskInfo->pBuf->sampleModem)
   14554:	d7 01       	movw	r26, r14
   14556:	14 96       	adiw	r26, 0x04	; 4
   14558:	ed 91       	ld	r30, X+
   1455a:	fc 91       	ld	r31, X
   1455c:	15 97       	sbiw	r26, 0x05	; 5
   1455e:	ec 5e       	subi	r30, 0xEC	; 236
   14560:	fa 4f       	sbci	r31, 0xFA	; 250
   14562:	80 81       	ld	r24, Z
   14564:	88 23       	and	r24, r24
   14566:	71 f0       	breq	.+28     	; 0x14584 <TeledyneATM88X_ParseCommand+0x1fc>
			{
				pTaskInfo->pBuf->sampleModem = FALSE;
   14568:	10 82       	st	Z, r1
				pTaskInfo->pBuf->nextSample = 0;
   1456a:	14 96       	adiw	r26, 0x04	; 4
   1456c:	ed 91       	ld	r30, X+
   1456e:	fc 91       	ld	r31, X
   14570:	15 97       	sbiw	r26, 0x05	; 5
   14572:	eb 5e       	subi	r30, 0xEB	; 235
   14574:	fa 4f       	sbci	r31, 0xFA	; 250
   14576:	10 82       	st	Z, r1
   14578:	11 82       	std	Z+1, r1	; 0x01
   1457a:	12 82       	std	Z+2, r1	; 0x02
   1457c:	13 82       	std	Z+3, r1	; 0x03

				TeledyneATM88X_ReportModemTelemetry(pTaskInfo);				
   1457e:	c7 01       	movw	r24, r14
   14580:	0e 94 1d 9f 	call	0x13e3a	; 0x13e3a <TeledyneATM88X_ReportModemTelemetry>
			}

			EnablePIBModule(pTaskInfo->portNum, FALSE, FALSE);
   14584:	f7 01       	movw	r30, r14
   14586:	81 81       	ldd	r24, Z+1	; 0x01
   14588:	60 e0       	ldi	r22, 0x00	; 0
   1458a:	40 e0       	ldi	r20, 0x00	; 0
   1458c:	0e 94 a2 38 	call	0x7144	; 0x7144 <EnablePIBModule>
			pTaskInfo->pBuf->modemIsOn = FALSE;
   14590:	d7 01       	movw	r26, r14
   14592:	14 96       	adiw	r26, 0x04	; 4
   14594:	ed 91       	ld	r30, X+
   14596:	fc 91       	ld	r31, X
   14598:	15 97       	sbiw	r26, 0x05	; 5
   1459a:	e7 5e       	subi	r30, 0xE7	; 231
   1459c:	fa 4f       	sbci	r31, 0xFA	; 250
   1459e:	10 82       	st	Z, r1
   145a0:	66 c1       	rjmp	.+716    	; 0x1486e <TeledyneATM88X_ParseCommand+0x4e6>
			// ID

			//sprintf_P(dbgMsg, PSTR("ID COMMAND")); SEND_MSG;


			sprintf_P(pTaskInfo->pBuf->consoleResponse, PSTR("Teledyne ATM-88X"));
   145a2:	00 d0       	rcall	.+0      	; 0x145a4 <TeledyneATM88X_ParseCommand+0x21c>
   145a4:	0f 92       	push	r0
   145a6:	f7 01       	movw	r30, r14
   145a8:	84 81       	ldd	r24, Z+4	; 0x04
   145aa:	95 81       	ldd	r25, Z+5	; 0x05
   145ac:	85 51       	subi	r24, 0x15	; 21
   145ae:	9a 4f       	sbci	r25, 0xFA	; 250
   145b0:	ad b7       	in	r26, 0x3d	; 61
   145b2:	be b7       	in	r27, 0x3e	; 62
   145b4:	12 96       	adiw	r26, 0x02	; 2
   145b6:	9c 93       	st	X, r25
   145b8:	8e 93       	st	-X, r24
   145ba:	11 97       	sbiw	r26, 0x01	; 1
   145bc:	89 ec       	ldi	r24, 0xC9	; 201
   145be:	92 e1       	ldi	r25, 0x12	; 18
   145c0:	65 c1       	rjmp	.+714    	; 0x1488c <TeledyneATM88X_ParseCommand+0x504>
		case 'S':
			// Status

			//sprintf_P(dbgMsg, PSTR("STATUS COMMAND")); SEND_MSG;

			sprintf_P(pTaskInfo->pBuf->consoleResponse, PSTR("Teledyne ATM-88X. Sampling is %s. Power is %s."), pTaskInfo->pBuf->sampleModem ? "ON":"OFF", pTaskInfo->pBuf->modemIsOn ? "ON":"OFF");
   145c2:	f7 01       	movw	r30, r14
   145c4:	a4 81       	ldd	r26, Z+4	; 0x04
   145c6:	b5 81       	ldd	r27, Z+5	; 0x05
   145c8:	ac 5e       	subi	r26, 0xEC	; 236
   145ca:	ba 4f       	sbci	r27, 0xFA	; 250
   145cc:	8c 91       	ld	r24, X
   145ce:	a4 51       	subi	r26, 0x14	; 20
   145d0:	b5 40       	sbci	r27, 0x05	; 5
   145d2:	88 23       	and	r24, r24
   145d4:	19 f4       	brne	.+6      	; 0x145dc <TeledyneATM88X_ParseCommand+0x254>
   145d6:	43 ec       	ldi	r20, 0xC3	; 195
   145d8:	54 e0       	ldi	r21, 0x04	; 4
   145da:	02 c0       	rjmp	.+4      	; 0x145e0 <TeledyneATM88X_ParseCommand+0x258>
   145dc:	40 ec       	ldi	r20, 0xC0	; 192
   145de:	54 e0       	ldi	r21, 0x04	; 4
   145e0:	a7 5e       	subi	r26, 0xE7	; 231
   145e2:	ba 4f       	sbci	r27, 0xFA	; 250
   145e4:	8c 91       	ld	r24, X
   145e6:	a9 51       	subi	r26, 0x19	; 25
   145e8:	b5 40       	sbci	r27, 0x05	; 5
   145ea:	88 23       	and	r24, r24
   145ec:	19 f4       	brne	.+6      	; 0x145f4 <TeledyneATM88X_ParseCommand+0x26c>
   145ee:	23 ec       	ldi	r18, 0xC3	; 195
   145f0:	34 e0       	ldi	r19, 0x04	; 4
   145f2:	02 c0       	rjmp	.+4      	; 0x145f8 <TeledyneATM88X_ParseCommand+0x270>
   145f4:	20 ec       	ldi	r18, 0xC0	; 192
   145f6:	34 e0       	ldi	r19, 0x04	; 4
   145f8:	8d b7       	in	r24, 0x3d	; 61
   145fa:	9e b7       	in	r25, 0x3e	; 62
   145fc:	08 97       	sbiw	r24, 0x08	; 8
   145fe:	0f b6       	in	r0, 0x3f	; 63
   14600:	f8 94       	cli
   14602:	9e bf       	out	0x3e, r25	; 62
   14604:	0f be       	out	0x3f, r0	; 63
   14606:	8d bf       	out	0x3d, r24	; 61
   14608:	6d b7       	in	r22, 0x3d	; 61
   1460a:	7e b7       	in	r23, 0x3e	; 62
   1460c:	6f 5f       	subi	r22, 0xFF	; 255
   1460e:	7f 4f       	sbci	r23, 0xFF	; 255
   14610:	a5 51       	subi	r26, 0x15	; 21
   14612:	ba 4f       	sbci	r27, 0xFA	; 250
   14614:	ed b7       	in	r30, 0x3d	; 61
   14616:	fe b7       	in	r31, 0x3e	; 62
   14618:	b2 83       	std	Z+2, r27	; 0x02
   1461a:	a1 83       	std	Z+1, r26	; 0x01
   1461c:	8a e9       	ldi	r24, 0x9A	; 154
   1461e:	92 e1       	ldi	r25, 0x12	; 18
   14620:	db 01       	movw	r26, r22
   14622:	13 96       	adiw	r26, 0x03	; 3
   14624:	9c 93       	st	X, r25
   14626:	8e 93       	st	-X, r24
   14628:	12 97       	sbiw	r26, 0x02	; 2
   1462a:	15 96       	adiw	r26, 0x05	; 5
   1462c:	5c 93       	st	X, r21
   1462e:	4e 93       	st	-X, r20
   14630:	14 97       	sbiw	r26, 0x04	; 4
   14632:	17 96       	adiw	r26, 0x07	; 7
   14634:	3c 93       	st	X, r19
   14636:	2e 93       	st	-X, r18
   14638:	16 97       	sbiw	r26, 0x06	; 6
   1463a:	0e 94 51 f1 	call	0x1e2a2	; 0x1e2a2 <sprintf_P>
			pTaskInfo->pBuf->responseInfo.length = strlen(pTaskInfo->pBuf->consoleResponse);
   1463e:	f7 01       	movw	r30, r14
   14640:	a4 81       	ldd	r26, Z+4	; 0x04
   14642:	b5 81       	ldd	r27, Z+5	; 0x05
   14644:	cd 01       	movw	r24, r26
   14646:	85 51       	subi	r24, 0x15	; 21
   14648:	9a 4f       	sbci	r25, 0xFA	; 250
   1464a:	fc 01       	movw	r30, r24
   1464c:	01 90       	ld	r0, Z+
   1464e:	00 20       	and	r0, r0
   14650:	e9 f7       	brne	.-6      	; 0x1464c <TeledyneATM88X_ParseCommand+0x2c4>
   14652:	31 97       	sbiw	r30, 0x01	; 1
   14654:	e8 1b       	sub	r30, r24
   14656:	f9 0b       	sbc	r31, r25
   14658:	aa 51       	subi	r26, 0x1A	; 26
   1465a:	ba 4f       	sbci	r27, 0xFA	; 250
   1465c:	ec 93       	st	X, r30
			pTaskInfo->pBuf->responseInfo.status = CONSOLE_RESPONSE_OK;
   1465e:	d7 01       	movw	r26, r14
   14660:	14 96       	adiw	r26, 0x04	; 4
   14662:	ed 91       	ld	r30, X+
   14664:	fc 91       	ld	r31, X
   14666:	15 97       	sbiw	r26, 0x05	; 5
   14668:	ec 51       	subi	r30, 0x1C	; 28
   1466a:	fa 4f       	sbci	r31, 0xFA	; 250
   1466c:	81 e0       	ldi	r24, 0x01	; 1
   1466e:	80 83       	st	Z, r24
   14670:	8f ef       	ldi	r24, 0xFF	; 255
   14672:	ed b7       	in	r30, 0x3d	; 61
   14674:	fe b7       	in	r31, 0x3e	; 62
   14676:	38 96       	adiw	r30, 0x08	; 8
   14678:	0f b6       	in	r0, 0x3f	; 63
   1467a:	f8 94       	cli
   1467c:	fe bf       	out	0x3e, r31	; 62
   1467e:	0f be       	out	0x3f, r0	; 63
   14680:	ed bf       	out	0x3d, r30	; 61
   14682:	e4 c0       	rjmp	.+456    	; 0x1484c <TeledyneATM88X_ParseCommand+0x4c4>

		case 'c':
		case 'C':
			//We have a Command to send

			sprintf_P(dbgMsg, PSTR("CMD to send")); SEND_MSG;	
   14684:	00 d0       	rcall	.+0      	; 0x14686 <TeledyneATM88X_ParseCommand+0x2fe>
   14686:	0f 92       	push	r0
   14688:	83 ef       	ldi	r24, 0xF3	; 243
   1468a:	98 e1       	ldi	r25, 0x18	; 24
   1468c:	ad b7       	in	r26, 0x3d	; 61
   1468e:	be b7       	in	r27, 0x3e	; 62
   14690:	12 96       	adiw	r26, 0x02	; 2
   14692:	9c 93       	st	X, r25
   14694:	8e 93       	st	-X, r24
   14696:	11 97       	sbiw	r26, 0x01	; 1
   14698:	8e e8       	ldi	r24, 0x8E	; 142
   1469a:	92 e1       	ldi	r25, 0x12	; 18
   1469c:	14 96       	adiw	r26, 0x04	; 4
   1469e:	9c 93       	st	X, r25
   146a0:	8e 93       	st	-X, r24
   146a2:	13 97       	sbiw	r26, 0x03	; 3
   146a4:	0e 94 51 f1 	call	0x1e2a2	; 0x1e2a2 <sprintf_P>

			char* tail = ThreadSafeStrTokTail(&myCommand, pTaskInfo->pBuf->tokenSeparatorList);
   146a8:	0f 90       	pop	r0
   146aa:	0f 90       	pop	r0
   146ac:	0f 90       	pop	r0
   146ae:	0f 90       	pop	r0
   146b0:	f7 01       	movw	r30, r14
   146b2:	64 81       	ldd	r22, Z+4	; 0x04
   146b4:	75 81       	ldd	r23, Z+5	; 0x05
   146b6:	62 53       	subi	r22, 0x32	; 50
   146b8:	7a 4f       	sbci	r23, 0xFA	; 250
   146ba:	ce 01       	movw	r24, r28
   146bc:	05 96       	adiw	r24, 0x05	; 5
   146be:	0e 94 33 9f 	call	0x13e66	; 0x13e66 <ThreadSafeStrTokTail>
   146c2:	b8 2e       	mov	r11, r24
   146c4:	a9 2e       	mov	r10, r25
			uint16_t tailLen = strlen(tail);
   146c6:	e8 2f       	mov	r30, r24
   146c8:	f9 2f       	mov	r31, r25
   146ca:	df 01       	movw	r26, r30
   146cc:	0d 90       	ld	r0, X+
   146ce:	00 20       	and	r0, r0
   146d0:	e9 f7       	brne	.-6      	; 0x146cc <TeledyneATM88X_ParseCommand+0x344>
   146d2:	8d 01       	movw	r16, r26
   146d4:	01 50       	subi	r16, 0x01	; 1
   146d6:	10 40       	sbci	r17, 0x00	; 0
   146d8:	0e 1b       	sub	r16, r30
   146da:	1f 0b       	sbc	r17, r31

			//We have a Command to send to the Modem
			if (tailLen)
   146dc:	09 f4       	brne	.+2      	; 0x146e0 <TeledyneATM88X_ParseCommand+0x358>
   146de:	b5 c0       	rjmp	.+362    	; 0x1484a <TeledyneATM88X_ParseCommand+0x4c2>
			{
				if(pTaskInfo->pBuf->sampleModem == FALSE)
   146e0:	d7 01       	movw	r26, r14
   146e2:	14 96       	adiw	r26, 0x04	; 4
   146e4:	ed 91       	ld	r30, X+
   146e6:	fc 91       	ld	r31, X
   146e8:	15 97       	sbiw	r26, 0x05	; 5
   146ea:	ec 5e       	subi	r30, 0xEC	; 236
   146ec:	fa 4f       	sbci	r31, 0xFA	; 250
   146ee:	80 81       	ld	r24, Z
   146f0:	e4 51       	subi	r30, 0x14	; 20
   146f2:	f5 40       	sbci	r31, 0x05	; 5
   146f4:	88 23       	and	r24, r24
   146f6:	09 f0       	breq	.+2      	; 0x146fa <TeledyneATM88X_ParseCommand+0x372>
   146f8:	58 c0       	rjmp	.+176    	; 0x147aa <TeledyneATM88X_ParseCommand+0x422>
				{			
					uint8_t err;
					char c;
					char eol = '>';
   146fa:	8e e3       	ldi	r24, 0x3E	; 62
   146fc:	8a 83       	std	Y+2, r24	; 0x02

					OSTimeDlyHMSM(0,0,0,100);
   146fe:	80 e0       	ldi	r24, 0x00	; 0
   14700:	60 e0       	ldi	r22, 0x00	; 0
   14702:	40 e0       	ldi	r20, 0x00	; 0
   14704:	24 e6       	ldi	r18, 0x64	; 100
   14706:	30 e0       	ldi	r19, 0x00	; 0
   14708:	0e 94 2a 2e 	call	0x5c54	; 0x5c54 <OSTimeDlyHMSM>

					memset(pTaskInfo->pBuf->bufferRx, 0, 1024);
   1470c:	f7 01       	movw	r30, r14
   1470e:	84 81       	ldd	r24, Z+4	; 0x04
   14710:	95 81       	ldd	r25, Z+5	; 0x05
   14712:	80 50       	subi	r24, 0x00	; 0
   14714:	9f 4f       	sbci	r25, 0xFF	; 255
   14716:	fc 01       	movw	r30, r24
   14718:	80 e0       	ldi	r24, 0x00	; 0
   1471a:	94 e0       	ldi	r25, 0x04	; 4
   1471c:	df 01       	movw	r26, r30
   1471e:	9c 01       	movw	r18, r24
   14720:	1d 92       	st	X+, r1
   14722:	21 50       	subi	r18, 0x01	; 1
   14724:	30 40       	sbci	r19, 0x00	; 0
   14726:	e1 f7       	brne	.-8      	; 0x14720 <TeledyneATM88X_ParseCommand+0x398>

					err = OS_ERR_NONE;		
   14728:	19 82       	std	Y+1, r1	; 0x01
					while(err == OS_ERR_NONE)
					{
						c = (char) OSuartGetCharWait(pTaskInfo->portNum, 64, &err);		//wait .05 seconds -- basically clearing buffer
   1472a:	6e 01       	movw	r12, r28
   1472c:	08 94       	sec
   1472e:	c1 1c       	adc	r12, r1
   14730:	d1 1c       	adc	r13, r1
   14732:	08 c0       	rjmp	.+16     	; 0x14744 <TeledyneATM88X_ParseCommand+0x3bc>
   14734:	d7 01       	movw	r26, r14
   14736:	11 96       	adiw	r26, 0x01	; 1
   14738:	8c 91       	ld	r24, X
   1473a:	60 e4       	ldi	r22, 0x40	; 64
   1473c:	70 e0       	ldi	r23, 0x00	; 0
   1473e:	a6 01       	movw	r20, r12
   14740:	0e 94 b8 32 	call	0x6570	; 0x6570 <OSuartGetCharWait>
					OSTimeDlyHMSM(0,0,0,100);

					memset(pTaskInfo->pBuf->bufferRx, 0, 1024);

					err = OS_ERR_NONE;		
					while(err == OS_ERR_NONE)
   14744:	89 81       	ldd	r24, Y+1	; 0x01
   14746:	88 23       	and	r24, r24
   14748:	a9 f3       	breq	.-22     	; 0x14734 <TeledyneATM88X_ParseCommand+0x3ac>
					{
						c = (char) OSuartGetCharWait(pTaskInfo->portNum, 64, &err);		//wait .05 seconds -- basically clearing buffer
					}
		
					TeledyneATM88X_Tx(pTaskInfo, tail, tailLen);
   1474a:	c7 01       	movw	r24, r14
   1474c:	6b 2d       	mov	r22, r11
   1474e:	7a 2d       	mov	r23, r10
   14750:	a8 01       	movw	r20, r16
   14752:	0e 94 86 9f 	call	0x13f0c	; 0x13f0c <TeledyneATM88X_Tx>
					uint16_t len = 0;
   14756:	1c 82       	std	Y+4, r1	; 0x04
   14758:	1b 82       	std	Y+3, r1	; 0x03
					TeledyneATM88X_Rx(pTaskInfo, pTaskInfo->pBuf->bufferRx, &len, &eol, 1);
   1475a:	f7 01       	movw	r30, r14
   1475c:	64 81       	ldd	r22, Z+4	; 0x04
   1475e:	75 81       	ldd	r23, Z+5	; 0x05
   14760:	60 50       	subi	r22, 0x00	; 0
   14762:	7f 4f       	sbci	r23, 0xFF	; 255
   14764:	c7 01       	movw	r24, r14
   14766:	ae 01       	movw	r20, r28
   14768:	4d 5f       	subi	r20, 0xFD	; 253
   1476a:	5f 4f       	sbci	r21, 0xFF	; 255
   1476c:	9e 01       	movw	r18, r28
   1476e:	2e 5f       	subi	r18, 0xFE	; 254
   14770:	3f 4f       	sbci	r19, 0xFF	; 255
   14772:	01 e0       	ldi	r16, 0x01	; 1
   14774:	10 e0       	ldi	r17, 0x00	; 0
   14776:	0e 94 75 9d 	call	0x13aea	; 0x13aea <TeledyneATM88X_Rx>
					if((len > 0) && (len < 1024))
   1477a:	eb 81       	ldd	r30, Y+3	; 0x03
   1477c:	fc 81       	ldd	r31, Y+4	; 0x04
   1477e:	cf 01       	movw	r24, r30
   14780:	01 97       	sbiw	r24, 0x01	; 1
   14782:	8f 5f       	subi	r24, 0xFF	; 255
   14784:	93 40       	sbci	r25, 0x03	; 3
   14786:	08 f0       	brcs	.+2      	; 0x1478a <TeledyneATM88X_ParseCommand+0x402>
   14788:	60 c0       	rjmp	.+192    	; 0x1484a <TeledyneATM88X_ParseCommand+0x4c2>
					{
						memcpy(pTaskInfo->pBuf->consoleResponse, pTaskInfo->pBuf->bufferRx, len);
   1478a:	d7 01       	movw	r26, r14
   1478c:	14 96       	adiw	r26, 0x04	; 4
   1478e:	2d 91       	ld	r18, X+
   14790:	3c 91       	ld	r19, X
   14792:	15 97       	sbiw	r26, 0x05	; 5
   14794:	a9 01       	movw	r20, r18
   14796:	45 51       	subi	r20, 0x15	; 21
   14798:	5a 4f       	sbci	r21, 0xFA	; 250
   1479a:	20 50       	subi	r18, 0x00	; 0
   1479c:	3f 4f       	sbci	r19, 0xFF	; 255
   1479e:	ca 01       	movw	r24, r20
   147a0:	b9 01       	movw	r22, r18
   147a2:	af 01       	movw	r20, r30
   147a4:	0e 94 1c f0 	call	0x1e038	; 0x1e038 <memcpy>
   147a8:	09 c0       	rjmp	.+18     	; 0x147bc <TeledyneATM88X_ParseCommand+0x434>
						retval = SUCCESS;
					}
				}
				else
				{
					memcpy_P(pTaskInfo->pBuf->consoleResponse, PSTR("You must stop sampling first"), 28);
   147aa:	cf 01       	movw	r24, r30
   147ac:	85 51       	subi	r24, 0x15	; 21
   147ae:	9a 4f       	sbci	r25, 0xFA	; 250
   147b0:	61 e7       	ldi	r22, 0x71	; 113
   147b2:	72 e1       	ldi	r23, 0x12	; 18
   147b4:	4c e1       	ldi	r20, 0x1C	; 28
   147b6:	50 e0       	ldi	r21, 0x00	; 0
   147b8:	0e 94 ab ef 	call	0x1df56	; 0x1df56 <memcpy_P>
					pTaskInfo->pBuf->responseInfo.length = strlen(pTaskInfo->pBuf->consoleResponse);
   147bc:	f7 01       	movw	r30, r14
   147be:	a4 81       	ldd	r26, Z+4	; 0x04
   147c0:	b5 81       	ldd	r27, Z+5	; 0x05
   147c2:	cd 01       	movw	r24, r26
   147c4:	85 51       	subi	r24, 0x15	; 21
   147c6:	9a 4f       	sbci	r25, 0xFA	; 250
   147c8:	fc 01       	movw	r30, r24
   147ca:	01 90       	ld	r0, Z+
   147cc:	00 20       	and	r0, r0
   147ce:	e9 f7       	brne	.-6      	; 0x147ca <TeledyneATM88X_ParseCommand+0x442>
   147d0:	31 97       	sbiw	r30, 0x01	; 1
   147d2:	e8 1b       	sub	r30, r24
   147d4:	f9 0b       	sbc	r31, r25
   147d6:	aa 51       	subi	r26, 0x1A	; 26
   147d8:	ba 4f       	sbci	r27, 0xFA	; 250
   147da:	ec 93       	st	X, r30
					pTaskInfo->pBuf->responseInfo.status = CONSOLE_RESPONSE_OK;
   147dc:	d7 01       	movw	r26, r14
   147de:	14 96       	adiw	r26, 0x04	; 4
   147e0:	ed 91       	ld	r30, X+
   147e2:	fc 91       	ld	r31, X
   147e4:	15 97       	sbiw	r26, 0x05	; 5
   147e6:	ec 51       	subi	r30, 0x1C	; 28
   147e8:	fa 4f       	sbci	r31, 0xFA	; 250
   147ea:	81 e0       	ldi	r24, 0x01	; 1
   147ec:	80 83       	st	Z, r24
   147ee:	3f c0       	rjmp	.+126    	; 0x1486e <TeledyneATM88X_ParseCommand+0x4e6>
		pTaskInfo->pBuf->responseInfo.length = strlen(pTaskInfo->pBuf->consoleResponse);
		pTaskInfo->pBuf->responseInfo.status = CONSOLE_RESPONSE_OK;
	} else if (retval == MODEM_IS_OFF)
	{
		//memcpy_P(pTaskInfo->pBuf->consoleResponse, PSTR("Modem is Off -- Please turn it on first."), 20);
		sprintf_P(pTaskInfo->pBuf->consoleResponse, PSTR("Modem is Off -- Please turn it on first."));
   147f0:	00 d0       	rcall	.+0      	; 0x147f2 <TeledyneATM88X_ParseCommand+0x46a>
   147f2:	0f 92       	push	r0
   147f4:	05 51       	subi	r16, 0x15	; 21
   147f6:	1a 4f       	sbci	r17, 0xFA	; 250
   147f8:	ed b7       	in	r30, 0x3d	; 61
   147fa:	fe b7       	in	r31, 0x3e	; 62
   147fc:	12 83       	std	Z+2, r17	; 0x02
   147fe:	01 83       	std	Z+1, r16	; 0x01
   14800:	85 e4       	ldi	r24, 0x45	; 69
   14802:	92 e1       	ldi	r25, 0x12	; 18
   14804:	94 83       	std	Z+4, r25	; 0x04
   14806:	83 83       	std	Z+3, r24	; 0x03
   14808:	0e 94 51 f1 	call	0x1e2a2	; 0x1e2a2 <sprintf_P>
		pTaskInfo->pBuf->responseInfo.length = strlen(pTaskInfo->pBuf->consoleResponse);
   1480c:	f7 01       	movw	r30, r14
   1480e:	a4 81       	ldd	r26, Z+4	; 0x04
   14810:	b5 81       	ldd	r27, Z+5	; 0x05
   14812:	cd 01       	movw	r24, r26
   14814:	85 51       	subi	r24, 0x15	; 21
   14816:	9a 4f       	sbci	r25, 0xFA	; 250
   14818:	fc 01       	movw	r30, r24
   1481a:	01 90       	ld	r0, Z+
   1481c:	00 20       	and	r0, r0
   1481e:	e9 f7       	brne	.-6      	; 0x1481a <TeledyneATM88X_ParseCommand+0x492>
   14820:	31 97       	sbiw	r30, 0x01	; 1
   14822:	e8 1b       	sub	r30, r24
   14824:	f9 0b       	sbc	r31, r25
   14826:	aa 51       	subi	r26, 0x1A	; 26
   14828:	ba 4f       	sbci	r27, 0xFA	; 250
   1482a:	ec 93       	st	X, r30
		pTaskInfo->pBuf->responseInfo.status = CONSOLE_RESPONSE_OK;
   1482c:	d7 01       	movw	r26, r14
   1482e:	14 96       	adiw	r26, 0x04	; 4
   14830:	ed 91       	ld	r30, X+
   14832:	fc 91       	ld	r31, X
   14834:	15 97       	sbiw	r26, 0x05	; 5
   14836:	ec 51       	subi	r30, 0x1C	; 28
   14838:	fa 4f       	sbci	r31, 0xFA	; 250
   1483a:	81 e0       	ldi	r24, 0x01	; 1
   1483c:	80 83       	st	Z, r24
   1483e:	8f ef       	ldi	r24, 0xFF	; 255
   14840:	0f 90       	pop	r0
   14842:	0f 90       	pop	r0
   14844:	0f 90       	pop	r0
   14846:	0f 90       	pop	r0
   14848:	01 c0       	rjmp	.+2      	; 0x1484c <TeledyneATM88X_ParseCommand+0x4c4>
   1484a:	80 e0       	ldi	r24, 0x00	; 0
		retval = SUCCESS;
	}

	return retval;

}
   1484c:	26 96       	adiw	r28, 0x06	; 6
   1484e:	0f b6       	in	r0, 0x3f	; 63
   14850:	f8 94       	cli
   14852:	de bf       	out	0x3e, r29	; 62
   14854:	0f be       	out	0x3f, r0	; 63
   14856:	cd bf       	out	0x3d, r28	; 61
   14858:	cf 91       	pop	r28
   1485a:	df 91       	pop	r29
   1485c:	1f 91       	pop	r17
   1485e:	0f 91       	pop	r16
   14860:	ff 90       	pop	r15
   14862:	ef 90       	pop	r14
   14864:	df 90       	pop	r13
   14866:	cf 90       	pop	r12
   14868:	bf 90       	pop	r11
   1486a:	af 90       	pop	r10
   1486c:	08 95       	ret
	}

	if(retval == SUCCESS)
	{
		//memcpy_P(pTaskInfo->pBuf->consoleResponse, PSTR("OK"), 2);
		sprintf_P(pTaskInfo->pBuf->consoleResponse, PSTR("OK"));
   1486e:	00 d0       	rcall	.+0      	; 0x14870 <TeledyneATM88X_ParseCommand+0x4e8>
   14870:	0f 92       	push	r0
   14872:	f7 01       	movw	r30, r14
   14874:	84 81       	ldd	r24, Z+4	; 0x04
   14876:	95 81       	ldd	r25, Z+5	; 0x05
   14878:	85 51       	subi	r24, 0x15	; 21
   1487a:	9a 4f       	sbci	r25, 0xFA	; 250
   1487c:	ad b7       	in	r26, 0x3d	; 61
   1487e:	be b7       	in	r27, 0x3e	; 62
   14880:	12 96       	adiw	r26, 0x02	; 2
   14882:	9c 93       	st	X, r25
   14884:	8e 93       	st	-X, r24
   14886:	11 97       	sbiw	r26, 0x01	; 1
   14888:	8e e6       	ldi	r24, 0x6E	; 110
   1488a:	92 e1       	ldi	r25, 0x12	; 18
   1488c:	14 96       	adiw	r26, 0x04	; 4
   1488e:	9c 93       	st	X, r25
   14890:	8e 93       	st	-X, r24
   14892:	13 97       	sbiw	r26, 0x03	; 3
   14894:	b9 cf       	rjmp	.-142    	; 0x14808 <TeledyneATM88X_ParseCommand+0x480>

00014896 <TeledyneATM88X_ParseConsole>:
#define MODEM_IS_OFF	10



void TeledyneATM88X_ParseConsole(PTELEDYNE_ATM_88X_TASK pTaskInfo)
{
   14896:	8f 92       	push	r8
   14898:	9f 92       	push	r9
   1489a:	af 92       	push	r10
   1489c:	bf 92       	push	r11
   1489e:	cf 92       	push	r12
   148a0:	df 92       	push	r13
   148a2:	ef 92       	push	r14
   148a4:	ff 92       	push	r15
   148a6:	0f 93       	push	r16
   148a8:	1f 93       	push	r17
   148aa:	df 93       	push	r29
   148ac:	cf 93       	push	r28
   148ae:	0f 92       	push	r0
   148b0:	0f 92       	push	r0
   148b2:	cd b7       	in	r28, 0x3d	; 61
   148b4:	de b7       	in	r29, 0x3e	; 62
   148b6:	6c 01       	movw	r12, r24
	char* myCommand = consoleIn[pTaskInfo->taskID].cmd; 
   148b8:	dc 01       	movw	r26, r24
   148ba:	8c 91       	ld	r24, X
   148bc:	90 e0       	ldi	r25, 0x00	; 0
   148be:	29 e0       	ldi	r18, 0x09	; 9
   148c0:	31 e0       	ldi	r19, 0x01	; 1
   148c2:	f9 01       	movw	r30, r18
   148c4:	8e 9f       	mul	r24, r30
   148c6:	90 01       	movw	r18, r0
   148c8:	8f 9f       	mul	r24, r31
   148ca:	30 0d       	add	r19, r0
   148cc:	9e 9f       	mul	r25, r30
   148ce:	30 0d       	add	r19, r0
   148d0:	11 24       	eor	r1, r1
   148d2:	2e 58       	subi	r18, 0x8E	; 142
   148d4:	32 46       	sbci	r19, 0x62	; 98
   148d6:	3a 83       	std	Y+2, r19	; 0x02
   148d8:	29 83       	std	Y+1, r18	; 0x01
	char* result = NULL;
	char command = 0;
	BOOL goodCommand = FALSE;
	uint8_t resultCode = 0;

	sprintf_P(dbgMsg, PSTR("Parsing console: <%s>"), myCommand); SEND_MSG;
   148da:	00 d0       	rcall	.+0      	; 0x148dc <TeledyneATM88X_ParseConsole+0x46>
   148dc:	00 d0       	rcall	.+0      	; 0x148de <TeledyneATM88X_ParseConsole+0x48>
   148de:	ed b7       	in	r30, 0x3d	; 61
   148e0:	fe b7       	in	r31, 0x3e	; 62
   148e2:	31 96       	adiw	r30, 0x01	; 1
   148e4:	03 ef       	ldi	r16, 0xF3	; 243
   148e6:	80 2e       	mov	r8, r16
   148e8:	08 e1       	ldi	r16, 0x18	; 24
   148ea:	90 2e       	mov	r9, r16
   148ec:	ad b7       	in	r26, 0x3d	; 61
   148ee:	be b7       	in	r27, 0x3e	; 62
   148f0:	12 96       	adiw	r26, 0x02	; 2
   148f2:	9c 92       	st	X, r9
   148f4:	8e 92       	st	-X, r8
   148f6:	11 97       	sbiw	r26, 0x01	; 1
   148f8:	8b e2       	ldi	r24, 0x2B	; 43
   148fa:	93 e1       	ldi	r25, 0x13	; 19
   148fc:	93 83       	std	Z+3, r25	; 0x03
   148fe:	82 83       	std	Z+2, r24	; 0x02
   14900:	35 83       	std	Z+5, r19	; 0x05
   14902:	24 83       	std	Z+4, r18	; 0x04
   14904:	0e 94 51 f1 	call	0x1e2a2	; 0x1e2a2 <sprintf_P>

	myCommand[MAX_FILE_SIZE_IN - 1] = 0;			//Make sure command string is NULL terminated
   14908:	e9 81       	ldd	r30, Y+1	; 0x01
   1490a:	fa 81       	ldd	r31, Y+2	; 0x02
   1490c:	e1 50       	subi	r30, 0x01	; 1
   1490e:	ff 4f       	sbci	r31, 0xFF	; 255
   14910:	10 82       	st	Z, r1

	memset(pTaskInfo->pBuf->tokenSeparatorList, 0, MAX_TOKEN_SEPARATORS);
   14912:	f6 01       	movw	r30, r12
   14914:	84 81       	ldd	r24, Z+4	; 0x04
   14916:	95 81       	ldd	r25, Z+5	; 0x05
   14918:	82 53       	subi	r24, 0x32	; 50
   1491a:	9a 4f       	sbci	r25, 0xFA	; 250
   1491c:	fc 01       	movw	r30, r24
   1491e:	84 e1       	ldi	r24, 0x14	; 20
   14920:	df 01       	movw	r26, r30
   14922:	1d 92       	st	X+, r1
   14924:	8a 95       	dec	r24
   14926:	e9 f7       	brne	.-6      	; 0x14922 <TeledyneATM88X_ParseConsole+0x8c>
	strcat_P(pTaskInfo->pBuf->tokenSeparatorList, tokenListConsole);
   14928:	ed b7       	in	r30, 0x3d	; 61
   1492a:	fe b7       	in	r31, 0x3e	; 62
   1492c:	36 96       	adiw	r30, 0x06	; 6
   1492e:	0f b6       	in	r0, 0x3f	; 63
   14930:	f8 94       	cli
   14932:	fe bf       	out	0x3e, r31	; 62
   14934:	0f be       	out	0x3f, r0	; 63
   14936:	ed bf       	out	0x3d, r30	; 61
   14938:	d6 01       	movw	r26, r12
   1493a:	14 96       	adiw	r26, 0x04	; 4
   1493c:	8d 91       	ld	r24, X+
   1493e:	9c 91       	ld	r25, X
   14940:	15 97       	sbiw	r26, 0x05	; 5
   14942:	82 53       	subi	r24, 0x32	; 50
   14944:	9a 4f       	sbci	r25, 0xFA	; 250
   14946:	68 e3       	ldi	r22, 0x38	; 56
   14948:	72 e0       	ldi	r23, 0x02	; 2
   1494a:	0e 94 b4 ef 	call	0x1df68	; 0x1df68 <strcat_P>

	result = strtok_r(myCommand, pTaskInfo->pBuf->tokenSeparatorList, &myCommand);
   1494e:	f6 01       	movw	r30, r12
   14950:	64 81       	ldd	r22, Z+4	; 0x04
   14952:	75 81       	ldd	r23, Z+5	; 0x05
   14954:	62 53       	subi	r22, 0x32	; 50
   14956:	7a 4f       	sbci	r23, 0xFA	; 250
   14958:	89 81       	ldd	r24, Y+1	; 0x01
   1495a:	9a 81       	ldd	r25, Y+2	; 0x02
   1495c:	8e 01       	movw	r16, r28
   1495e:	0f 5f       	subi	r16, 0xFF	; 255
   14960:	1f 4f       	sbci	r17, 0xFF	; 255
   14962:	a8 01       	movw	r20, r16
   14964:	0e 94 a0 f0 	call	0x1e140	; 0x1e140 <strtok_r>
   14968:	5c 01       	movw	r10, r24
	resultCode = 1;				//No Command Received
	
	if(result != NULL)
   1496a:	00 97       	sbiw	r24, 0x00	; 0
   1496c:	19 f4       	brne	.+6      	; 0x14974 <TeledyneATM88X_ParseConsole+0xde>
   1496e:	ff 24       	eor	r15, r15
   14970:	f3 94       	inc	r15
   14972:	26 c0       	rjmp	.+76     	; 0x149c0 <TeledyneATM88X_ParseConsole+0x12a>
	{
		resultCode = 2;			//Unknown Parser Code
		if(strncasecmp_P(result, teledyneATM88XParserID, strlen_P(teledyneATM88XParserID)) == 0)
   14974:	84 ed       	ldi	r24, 0xD4	; 212
   14976:	91 e1       	ldi	r25, 0x11	; 17
   14978:	0e 94 c6 ef 	call	0x1df8c	; 0x1df8c <strlen_P>
   1497c:	ac 01       	movw	r20, r24
   1497e:	c5 01       	movw	r24, r10
   14980:	64 ed       	ldi	r22, 0xD4	; 212
   14982:	71 e1       	ldi	r23, 0x11	; 17
   14984:	0e 94 cf ef 	call	0x1df9e	; 0x1df9e <strncasecmp_P>
   14988:	89 2b       	or	r24, r25
   1498a:	19 f0       	breq	.+6      	; 0x14992 <TeledyneATM88X_ParseConsole+0xfc>
   1498c:	12 e0       	ldi	r17, 0x02	; 2
   1498e:	f1 2e       	mov	r15, r17
   14990:	17 c0       	rjmp	.+46     	; 0x149c0 <TeledyneATM88X_ParseConsole+0x12a>
		{
			resultCode = 3;		//Unknown command

			command = getCommand(&myCommand, teledyneATM88XCommands[0], ATM_CMD_LEN, NUM_ATM_COMMANDS, teledyneATM88XCmdList, pTaskInfo->pBuf->tokenSeparatorList);
   14992:	d6 01       	movw	r26, r12
   14994:	14 96       	adiw	r26, 0x04	; 4
   14996:	ed 91       	ld	r30, X+
   14998:	fc 91       	ld	r31, X
   1499a:	15 97       	sbiw	r26, 0x05	; 5
   1499c:	e2 53       	subi	r30, 0x32	; 50
   1499e:	fa 4f       	sbci	r31, 0xFA	; 250
   149a0:	c8 01       	movw	r24, r16
   149a2:	63 ea       	ldi	r22, 0xA3	; 163
   149a4:	71 e1       	ldi	r23, 0x11	; 17
   149a6:	47 e0       	ldi	r20, 0x07	; 7
   149a8:	27 e0       	ldi	r18, 0x07	; 7
   149aa:	08 ed       	ldi	r16, 0xD8	; 216
   149ac:	11 e1       	ldi	r17, 0x11	; 17
   149ae:	7f 01       	movw	r14, r30
   149b0:	0e 94 1f 38 	call	0x703e	; 0x703e <getCommand>
   149b4:	18 2f       	mov	r17, r24

			if(command != 0)
   149b6:	88 23       	and	r24, r24
   149b8:	09 f0       	breq	.+2      	; 0x149bc <TeledyneATM88X_ParseConsole+0x126>
   149ba:	be c0       	rjmp	.+380    	; 0x14b38 <TeledyneATM88X_ParseConsole+0x2a2>
   149bc:	b3 e0       	ldi	r27, 0x03	; 3
   149be:	fb 2e       	mov	r15, r27
		sprintf_P(dbgMsg, PSTR("good message")); SEND_MSG;
		resultCode = TeledyneATM88X_ParseCommand(pTaskInfo, command, myCommand);
	}
	else
	{
		sprintf_P(dbgMsg, PSTR("bad .. code=%d"), resultCode); SEND_MSG;
   149c0:	00 d0       	rcall	.+0      	; 0x149c2 <TeledyneATM88X_ParseConsole+0x12c>
   149c2:	00 d0       	rcall	.+0      	; 0x149c4 <TeledyneATM88X_ParseConsole+0x12e>
   149c4:	ed b7       	in	r30, 0x3d	; 61
   149c6:	fe b7       	in	r31, 0x3e	; 62
   149c8:	31 96       	adiw	r30, 0x01	; 1
   149ca:	03 ef       	ldi	r16, 0xF3	; 243
   149cc:	18 e1       	ldi	r17, 0x18	; 24
   149ce:	ad b7       	in	r26, 0x3d	; 61
   149d0:	be b7       	in	r27, 0x3e	; 62
   149d2:	12 96       	adiw	r26, 0x02	; 2
   149d4:	1c 93       	st	X, r17
   149d6:	0e 93       	st	-X, r16
   149d8:	11 97       	sbiw	r26, 0x01	; 1
   149da:	8f e0       	ldi	r24, 0x0F	; 15
   149dc:	93 e1       	ldi	r25, 0x13	; 19
   149de:	93 83       	std	Z+3, r25	; 0x03
   149e0:	82 83       	std	Z+2, r24	; 0x02
   149e2:	f4 82       	std	Z+4, r15	; 0x04
   149e4:	15 82       	std	Z+5, r1	; 0x05
   149e6:	0e 94 51 f1 	call	0x1e2a2	; 0x1e2a2 <sprintf_P>
		sprintf_P(dbgMsg, PSTR("cmd = <%s><%s>"), myCommand, result); SEND_MSG;
   149ea:	0f 92       	push	r0
   149ec:	0f 92       	push	r0
   149ee:	ed b7       	in	r30, 0x3d	; 61
   149f0:	fe b7       	in	r31, 0x3e	; 62
   149f2:	31 96       	adiw	r30, 0x01	; 1
   149f4:	ad b7       	in	r26, 0x3d	; 61
   149f6:	be b7       	in	r27, 0x3e	; 62
   149f8:	12 96       	adiw	r26, 0x02	; 2
   149fa:	1c 93       	st	X, r17
   149fc:	0e 93       	st	-X, r16
   149fe:	11 97       	sbiw	r26, 0x01	; 1
   14a00:	80 e0       	ldi	r24, 0x00	; 0
   14a02:	93 e1       	ldi	r25, 0x13	; 19
   14a04:	93 83       	std	Z+3, r25	; 0x03
   14a06:	82 83       	std	Z+2, r24	; 0x02
   14a08:	89 81       	ldd	r24, Y+1	; 0x01
   14a0a:	9a 81       	ldd	r25, Y+2	; 0x02
   14a0c:	95 83       	std	Z+5, r25	; 0x05
   14a0e:	84 83       	std	Z+4, r24	; 0x04
   14a10:	b7 82       	std	Z+7, r11	; 0x07
   14a12:	a6 82       	std	Z+6, r10	; 0x06
   14a14:	0e 94 51 f1 	call	0x1e2a2	; 0x1e2a2 <sprintf_P>
   14a18:	ed b7       	in	r30, 0x3d	; 61
   14a1a:	fe b7       	in	r31, 0x3e	; 62
   14a1c:	38 96       	adiw	r30, 0x08	; 8
   14a1e:	0f b6       	in	r0, 0x3f	; 63
   14a20:	f8 94       	cli
   14a22:	fe bf       	out	0x3e, r31	; 62
   14a24:	0f be       	out	0x3f, r0	; 63
   14a26:	ed bf       	out	0x3d, r30	; 61
	}

	if(resultCode != SUCCESS)
	{
		switch(resultCode)
   14a28:	f2 e0       	ldi	r31, 0x02	; 2
   14a2a:	ff 16       	cp	r15, r31
   14a2c:	79 f0       	breq	.+30     	; 0x14a4c <TeledyneATM88X_ParseConsole+0x1b6>
   14a2e:	43 e0       	ldi	r20, 0x03	; 3
   14a30:	f4 16       	cp	r15, r20
   14a32:	a9 f0       	breq	.+42     	; 0x14a5e <TeledyneATM88X_ParseConsole+0x1c8>
   14a34:	d6 01       	movw	r26, r12
   14a36:	14 96       	adiw	r26, 0x04	; 4
   14a38:	ed 91       	ld	r30, X+
   14a3a:	fc 91       	ld	r31, X
   14a3c:	15 97       	sbiw	r26, 0x05	; 5
   14a3e:	b1 e0       	ldi	r27, 0x01	; 1
   14a40:	fb 16       	cp	r15, r27
   14a42:	b1 f4       	brne	.+44     	; 0x14a70 <TeledyneATM88X_ParseConsole+0x1da>
		{
			case 1:
				pTaskInfo->pBuf->responseInfo.status = CONSOLE_RESPONSE_EMPTY_CMD;
   14a44:	ec 51       	subi	r30, 0x1C	; 28
   14a46:	fa 4f       	sbci	r31, 0xFA	; 250
   14a48:	8d e0       	ldi	r24, 0x0D	; 13
   14a4a:	15 c0       	rjmp	.+42     	; 0x14a76 <TeledyneATM88X_ParseConsole+0x1e0>
				break;
			case 2:
				pTaskInfo->pBuf->responseInfo.status = CONSOLE_RESPONSE_WRONG_DEVICE;
   14a4c:	d6 01       	movw	r26, r12
   14a4e:	14 96       	adiw	r26, 0x04	; 4
   14a50:	ed 91       	ld	r30, X+
   14a52:	fc 91       	ld	r31, X
   14a54:	15 97       	sbiw	r26, 0x05	; 5
   14a56:	ec 51       	subi	r30, 0x1C	; 28
   14a58:	fa 4f       	sbci	r31, 0xFA	; 250
   14a5a:	8e e0       	ldi	r24, 0x0E	; 14
   14a5c:	0c c0       	rjmp	.+24     	; 0x14a76 <TeledyneATM88X_ParseConsole+0x1e0>
				break;
			case 3:
				pTaskInfo->pBuf->responseInfo.status = CONSOLE_RESPONSE_UNKNOWN_CMD;
   14a5e:	d6 01       	movw	r26, r12
   14a60:	14 96       	adiw	r26, 0x04	; 4
   14a62:	ed 91       	ld	r30, X+
   14a64:	fc 91       	ld	r31, X
   14a66:	15 97       	sbiw	r26, 0x05	; 5
   14a68:	ec 51       	subi	r30, 0x1C	; 28
   14a6a:	fa 4f       	sbci	r31, 0xFA	; 250
   14a6c:	8a e0       	ldi	r24, 0x0A	; 10
   14a6e:	03 c0       	rjmp	.+6      	; 0x14a76 <TeledyneATM88X_ParseConsole+0x1e0>
				break;
			default:
				pTaskInfo->pBuf->responseInfo.status = CONSOLE_RESPONSE_CMD_FAILED;
   14a70:	ec 51       	subi	r30, 0x1C	; 28
   14a72:	fa 4f       	sbci	r31, 0xFA	; 250
   14a74:	8f e0       	ldi	r24, 0x0F	; 15
   14a76:	80 83       	st	Z, r24
				break;
		}
	}

	TeledyneATM88X_QueueConsoleResponse(pTaskInfo);
   14a78:	c6 01       	movw	r24, r12
   14a7a:	0e 94 e6 9d 	call	0x13bcc	; 0x13bcc <TeledyneATM88X_QueueConsoleResponse>

	memset(consoleIn[pTaskInfo->taskID].cmd, 0, MAX_FILE_SIZE_IN);
   14a7e:	f6 01       	movw	r30, r12
   14a80:	80 81       	ld	r24, Z
   14a82:	90 e0       	ldi	r25, 0x00	; 0
   14a84:	29 e0       	ldi	r18, 0x09	; 9
   14a86:	31 e0       	ldi	r19, 0x01	; 1
   14a88:	ac 01       	movw	r20, r24
   14a8a:	42 9f       	mul	r20, r18
   14a8c:	c0 01       	movw	r24, r0
   14a8e:	43 9f       	mul	r20, r19
   14a90:	90 0d       	add	r25, r0
   14a92:	52 9f       	mul	r21, r18
   14a94:	90 0d       	add	r25, r0
   14a96:	11 24       	eor	r1, r1
   14a98:	8e 58       	subi	r24, 0x8E	; 142
   14a9a:	92 46       	sbci	r25, 0x62	; 98
   14a9c:	fc 01       	movw	r30, r24
   14a9e:	80 e0       	ldi	r24, 0x00	; 0
   14aa0:	91 e0       	ldi	r25, 0x01	; 1
   14aa2:	df 01       	movw	r26, r30
   14aa4:	ac 01       	movw	r20, r24
   14aa6:	1d 92       	st	X+, r1
   14aa8:	41 50       	subi	r20, 0x01	; 1
   14aaa:	50 40       	sbci	r21, 0x00	; 0
   14aac:	e1 f7       	brne	.-8      	; 0x14aa6 <TeledyneATM88X_ParseConsole+0x210>
	consoleIn[pTaskInfo->taskID].cmdSrcAddress = 0;
   14aae:	d6 01       	movw	r26, r12
   14ab0:	8c 91       	ld	r24, X
   14ab2:	90 e0       	ldi	r25, 0x00	; 0
   14ab4:	82 9f       	mul	r24, r18
   14ab6:	f0 01       	movw	r30, r0
   14ab8:	83 9f       	mul	r24, r19
   14aba:	f0 0d       	add	r31, r0
   14abc:	92 9f       	mul	r25, r18
   14abe:	f0 0d       	add	r31, r0
   14ac0:	11 24       	eor	r1, r1
   14ac2:	e7 59       	subi	r30, 0x97	; 151
   14ac4:	f2 46       	sbci	r31, 0x62	; 98
   14ac6:	11 82       	std	Z+1, r1	; 0x01
   14ac8:	10 82       	st	Z, r1
	consoleIn[pTaskInfo->taskID].functionCode = 0;
   14aca:	8c 91       	ld	r24, X
   14acc:	90 e0       	ldi	r25, 0x00	; 0
   14ace:	82 9f       	mul	r24, r18
   14ad0:	f0 01       	movw	r30, r0
   14ad2:	83 9f       	mul	r24, r19
   14ad4:	f0 0d       	add	r31, r0
   14ad6:	92 9f       	mul	r25, r18
   14ad8:	f0 0d       	add	r31, r0
   14ada:	11 24       	eor	r1, r1
   14adc:	e7 59       	subi	r30, 0x97	; 151
   14ade:	f2 46       	sbci	r31, 0x62	; 98
   14ae0:	12 82       	std	Z+2, r1	; 0x02
	consoleIn[pTaskInfo->taskID].cmdSize = 0;
   14ae2:	8c 91       	ld	r24, X
   14ae4:	90 e0       	ldi	r25, 0x00	; 0
   14ae6:	82 9f       	mul	r24, r18
   14ae8:	f0 01       	movw	r30, r0
   14aea:	83 9f       	mul	r24, r19
   14aec:	f0 0d       	add	r31, r0
   14aee:	92 9f       	mul	r25, r18
   14af0:	f0 0d       	add	r31, r0
   14af2:	11 24       	eor	r1, r1
   14af4:	e7 59       	subi	r30, 0x97	; 151
   14af6:	f2 46       	sbci	r31, 0x62	; 98
   14af8:	14 82       	std	Z+4, r1	; 0x04
   14afa:	13 82       	std	Z+3, r1	; 0x03
	consoleIn[pTaskInfo->taskID].id = 0;
   14afc:	8c 91       	ld	r24, X
   14afe:	90 e0       	ldi	r25, 0x00	; 0
   14b00:	82 9f       	mul	r24, r18
   14b02:	f0 01       	movw	r30, r0
   14b04:	83 9f       	mul	r24, r19
   14b06:	f0 0d       	add	r31, r0
   14b08:	92 9f       	mul	r25, r18
   14b0a:	f0 0d       	add	r31, r0
   14b0c:	11 24       	eor	r1, r1
   14b0e:	e7 59       	subi	r30, 0x97	; 151
   14b10:	f2 46       	sbci	r31, 0x62	; 98
   14b12:	15 82       	std	Z+5, r1	; 0x05
   14b14:	16 82       	std	Z+6, r1	; 0x06
   14b16:	17 82       	std	Z+7, r1	; 0x07
   14b18:	10 86       	std	Z+8, r1	; 0x08

	return;

}
   14b1a:	0f 90       	pop	r0
   14b1c:	0f 90       	pop	r0
   14b1e:	cf 91       	pop	r28
   14b20:	df 91       	pop	r29
   14b22:	1f 91       	pop	r17
   14b24:	0f 91       	pop	r16
   14b26:	ff 90       	pop	r15
   14b28:	ef 90       	pop	r14
   14b2a:	df 90       	pop	r13
   14b2c:	cf 90       	pop	r12
   14b2e:	bf 90       	pop	r11
   14b30:	af 90       	pop	r10
   14b32:	9f 90       	pop	r9
   14b34:	8f 90       	pop	r8
   14b36:	08 95       	ret
		}
	}

	if(goodCommand == TRUE)
	{
		sprintf_P(dbgMsg, PSTR("good message")); SEND_MSG;
   14b38:	00 d0       	rcall	.+0      	; 0x14b3a <TeledyneATM88X_ParseConsole+0x2a4>
   14b3a:	0f 92       	push	r0
   14b3c:	ed b7       	in	r30, 0x3d	; 61
   14b3e:	fe b7       	in	r31, 0x3e	; 62
   14b40:	92 82       	std	Z+2, r9	; 0x02
   14b42:	81 82       	std	Z+1, r8	; 0x01
   14b44:	8e e1       	ldi	r24, 0x1E	; 30
   14b46:	93 e1       	ldi	r25, 0x13	; 19
   14b48:	94 83       	std	Z+4, r25	; 0x04
   14b4a:	83 83       	std	Z+3, r24	; 0x03
   14b4c:	0e 94 51 f1 	call	0x1e2a2	; 0x1e2a2 <sprintf_P>
		resultCode = TeledyneATM88X_ParseCommand(pTaskInfo, command, myCommand);
   14b50:	0f 90       	pop	r0
   14b52:	0f 90       	pop	r0
   14b54:	0f 90       	pop	r0
   14b56:	0f 90       	pop	r0
   14b58:	49 81       	ldd	r20, Y+1	; 0x01
   14b5a:	5a 81       	ldd	r21, Y+2	; 0x02
   14b5c:	c6 01       	movw	r24, r12
   14b5e:	61 2f       	mov	r22, r17
   14b60:	0e 94 c4 a1 	call	0x14388	; 0x14388 <TeledyneATM88X_ParseCommand>
   14b64:	f8 2e       	mov	r15, r24
	{
		sprintf_P(dbgMsg, PSTR("bad .. code=%d"), resultCode); SEND_MSG;
		sprintf_P(dbgMsg, PSTR("cmd = <%s><%s>"), myCommand, result); SEND_MSG;
	}

	if(resultCode != SUCCESS)
   14b66:	ff ef       	ldi	r31, 0xFF	; 255
   14b68:	8f 17       	cp	r24, r31
   14b6a:	09 f4       	brne	.+2      	; 0x14b6e <TeledyneATM88X_ParseConsole+0x2d8>
   14b6c:	85 cf       	rjmp	.-246    	; 0x14a78 <TeledyneATM88X_ParseConsole+0x1e2>
   14b6e:	5c cf       	rjmp	.-328    	; 0x14a28 <TeledyneATM88X_ParseConsole+0x192>

00014b70 <TeledyneATM88X_GetModemSample>:
	return retval;
}


void TeledyneATM88X_GetModemSample(PTELEDYNE_ATM_88X_TASK pTaskInfo)
{
   14b70:	ef 92       	push	r14
   14b72:	ff 92       	push	r15
   14b74:	0f 93       	push	r16
   14b76:	1f 93       	push	r17
   14b78:	df 93       	push	r29
   14b7a:	cf 93       	push	r28
   14b7c:	cd b7       	in	r28, 0x3d	; 61
   14b7e:	de b7       	in	r29, 0x3e	; 62
   14b80:	2e 97       	sbiw	r28, 0x0e	; 14
   14b82:	0f b6       	in	r0, 0x3f	; 63
   14b84:	f8 94       	cli
   14b86:	de bf       	out	0x3e, r29	; 62
   14b88:	0f be       	out	0x3f, r0	; 63
   14b8a:	cd bf       	out	0x3d, r28	; 61
   14b8c:	7c 01       	movw	r14, r24
	//char cmdATX[4] = {'A', 'T', 'X', '\r'};
	char cmdATY[3] = {'A', 'T', 'Y'};
   14b8e:	de 01       	movw	r26, r28
   14b90:	15 96       	adiw	r26, 0x05	; 5
   14b92:	eb ed       	ldi	r30, 0xDB	; 219
   14b94:	f4 e0       	ldi	r31, 0x04	; 4
   14b96:	83 e0       	ldi	r24, 0x03	; 3
   14b98:	01 90       	ld	r0, Z+
   14b9a:	0d 92       	st	X+, r0
   14b9c:	81 50       	subi	r24, 0x01	; 1
   14b9e:	e1 f7       	brne	.-8      	; 0x14b98 <TeledyneATM88X_GetModemSample+0x28>
	char cmdATR[3] = {'A', 'T', 'R'};
   14ba0:	de 01       	movw	r26, r28
   14ba2:	18 96       	adiw	r26, 0x08	; 8
   14ba4:	e8 ed       	ldi	r30, 0xD8	; 216
   14ba6:	f4 e0       	ldi	r31, 0x04	; 4
   14ba8:	83 e0       	ldi	r24, 0x03	; 3
   14baa:	01 90       	ld	r0, Z+
   14bac:	0d 92       	st	X+, r0
   14bae:	81 50       	subi	r24, 0x01	; 1
   14bb0:	e1 f7       	brne	.-8      	; 0x14baa <TeledyneATM88X_GetModemSample+0x3a>

	uint16_t len = 0;
   14bb2:	1c 82       	std	Y+4, r1	; 0x04
   14bb4:	1b 82       	std	Y+3, r1	; 0x03
	char eol = '~';
   14bb6:	8e e7       	ldi	r24, 0x7E	; 126
   14bb8:	89 83       	std	Y+1, r24	; 0x01
	char c;
	uint8_t err = OS_ERR_NONE;
   14bba:	1a 82       	std	Y+2, r1	; 0x02
	tm* dateTime;
	time_t time;

	time=gettime();
   14bbc:	0e 94 3c 34 	call	0x6878	; 0x6878 <gettime>
   14bc0:	6b 87       	std	Y+11, r22	; 0x0b
   14bc2:	7c 87       	std	Y+12, r23	; 0x0c
   14bc4:	8d 87       	std	Y+13, r24	; 0x0d
   14bc6:	9e 87       	std	Y+14, r25	; 0x0e
	dateTime = gmtime(&time);
   14bc8:	ce 01       	movw	r24, r28
   14bca:	0b 96       	adiw	r24, 0x0b	; 11
   14bcc:	0e 94 32 35 	call	0x6a64	; 0x6a64 <gmtime>
   14bd0:	9c 01       	movw	r18, r24

	pTaskInfo->pBuf->reportATYData.latitude = latitude;
   14bd2:	d7 01       	movw	r26, r14
   14bd4:	14 96       	adiw	r26, 0x04	; 4
   14bd6:	ed 91       	ld	r30, X+
   14bd8:	fc 91       	ld	r31, X
   14bda:	15 97       	sbiw	r26, 0x05	; 5
   14bdc:	e0 5e       	subi	r30, 0xE0	; 224
   14bde:	fa 4f       	sbci	r31, 0xFA	; 250
   14be0:	80 91 e5 b7 	lds	r24, 0xB7E5
   14be4:	90 91 e6 b7 	lds	r25, 0xB7E6
   14be8:	a0 91 e7 b7 	lds	r26, 0xB7E7
   14bec:	b0 91 e8 b7 	lds	r27, 0xB7E8
   14bf0:	81 93       	st	Z+, r24
   14bf2:	91 93       	st	Z+, r25
   14bf4:	a1 93       	st	Z+, r26
   14bf6:	b1 93       	st	Z+, r27
	pTaskInfo->pBuf->reportATYData.longitude = longitude;
   14bf8:	80 91 e9 b7 	lds	r24, 0xB7E9
   14bfc:	90 91 ea b7 	lds	r25, 0xB7EA
   14c00:	a0 91 eb b7 	lds	r26, 0xB7EB
   14c04:	b0 91 ec b7 	lds	r27, 0xB7EC
   14c08:	80 83       	st	Z, r24
   14c0a:	91 83       	std	Z+1, r25	; 0x01
   14c0c:	a2 83       	std	Z+2, r26	; 0x02
   14c0e:	b3 83       	std	Z+3, r27	; 0x03
	pTaskInfo->pBuf->reportATYData.hour = dateTime->tm_hour;
   14c10:	37 97       	sbiw	r30, 0x07	; 7
   14c12:	d9 01       	movw	r26, r18
   14c14:	14 96       	adiw	r26, 0x04	; 4
   14c16:	8c 91       	ld	r24, X
   14c18:	80 83       	st	Z, r24
	pTaskInfo->pBuf->reportATYData.minute = dateTime->tm_min;
   14c1a:	d7 01       	movw	r26, r14
   14c1c:	14 96       	adiw	r26, 0x04	; 4
   14c1e:	ed 91       	ld	r30, X+
   14c20:	fc 91       	ld	r31, X
   14c22:	15 97       	sbiw	r26, 0x05	; 5
   14c24:	e2 5e       	subi	r30, 0xE2	; 226
   14c26:	fa 4f       	sbci	r31, 0xFA	; 250
   14c28:	d9 01       	movw	r26, r18
   14c2a:	12 96       	adiw	r26, 0x02	; 2
   14c2c:	8c 91       	ld	r24, X
   14c2e:	80 83       	st	Z, r24
	pTaskInfo->pBuf->reportATYData.second = dateTime->tm_sec;
   14c30:	d7 01       	movw	r26, r14
   14c32:	14 96       	adiw	r26, 0x04	; 4
   14c34:	ed 91       	ld	r30, X+
   14c36:	fc 91       	ld	r31, X
   14c38:	15 97       	sbiw	r26, 0x05	; 5
   14c3a:	e1 5e       	subi	r30, 0xE1	; 225
   14c3c:	fa 4f       	sbci	r31, 0xFA	; 250
   14c3e:	d9 01       	movw	r26, r18
   14c40:	8c 91       	ld	r24, X
   14c42:	80 83       	st	Z, r24
	pTaskInfo->pBuf->reportATYData.day = dateTime->tm_mday;
   14c44:	d7 01       	movw	r26, r14
   14c46:	14 96       	adiw	r26, 0x04	; 4
   14c48:	ed 91       	ld	r30, X+
   14c4a:	fc 91       	ld	r31, X
   14c4c:	15 97       	sbiw	r26, 0x05	; 5
   14c4e:	e6 5e       	subi	r30, 0xE6	; 230
   14c50:	fa 4f       	sbci	r31, 0xFA	; 250
   14c52:	d9 01       	movw	r26, r18
   14c54:	16 96       	adiw	r26, 0x06	; 6
   14c56:	8c 91       	ld	r24, X
   14c58:	80 83       	st	Z, r24
	pTaskInfo->pBuf->reportATYData.month = dateTime->tm_mon;
   14c5a:	d7 01       	movw	r26, r14
   14c5c:	14 96       	adiw	r26, 0x04	; 4
   14c5e:	ed 91       	ld	r30, X+
   14c60:	fc 91       	ld	r31, X
   14c62:	15 97       	sbiw	r26, 0x05	; 5
   14c64:	e5 5e       	subi	r30, 0xE5	; 229
   14c66:	fa 4f       	sbci	r31, 0xFA	; 250
   14c68:	d9 01       	movw	r26, r18
   14c6a:	18 96       	adiw	r26, 0x08	; 8
   14c6c:	8c 91       	ld	r24, X
   14c6e:	80 83       	st	Z, r24
	pTaskInfo->pBuf->reportATYData.year = (uint8_t)(dateTime->tm_year - 100);
   14c70:	d7 01       	movw	r26, r14
   14c72:	14 96       	adiw	r26, 0x04	; 4
   14c74:	ed 91       	ld	r30, X+
   14c76:	fc 91       	ld	r31, X
   14c78:	15 97       	sbiw	r26, 0x05	; 5
   14c7a:	e4 5e       	subi	r30, 0xE4	; 228
   14c7c:	fa 4f       	sbci	r31, 0xFA	; 250
   14c7e:	d9 01       	movw	r26, r18
   14c80:	1a 96       	adiw	r26, 0x0a	; 10
   14c82:	8c 91       	ld	r24, X
   14c84:	84 56       	subi	r24, 0x64	; 100
   14c86:	80 83       	st	Z, r24



	memset(pTaskInfo->pBuf->bufferRx, 0, 1024);
   14c88:	f7 01       	movw	r30, r14
   14c8a:	84 81       	ldd	r24, Z+4	; 0x04
   14c8c:	95 81       	ldd	r25, Z+5	; 0x05
   14c8e:	80 50       	subi	r24, 0x00	; 0
   14c90:	9f 4f       	sbci	r25, 0xFF	; 255
   14c92:	fc 01       	movw	r30, r24
   14c94:	80 e0       	ldi	r24, 0x00	; 0
   14c96:	94 e0       	ldi	r25, 0x04	; 4
   14c98:	df 01       	movw	r26, r30
   14c9a:	9c 01       	movw	r18, r24
   14c9c:	1d 92       	st	X+, r1
   14c9e:	21 50       	subi	r18, 0x01	; 1
   14ca0:	30 40       	sbci	r19, 0x00	; 0
   14ca2:	e1 f7       	brne	.-8      	; 0x14c9c <TeledyneATM88X_GetModemSample+0x12c>
	
	err = OS_ERR_NONE;		
   14ca4:	1a 82       	std	Y+2, r1	; 0x02
	while(err == OS_ERR_NONE)
	{
		c = (char) OSuartGetCharWait(pTaskInfo->portNum, 64, &err);		//wait .05 seconds -- basically clearing buffer
   14ca6:	8e 01       	movw	r16, r28
   14ca8:	0e 5f       	subi	r16, 0xFE	; 254
   14caa:	1f 4f       	sbci	r17, 0xFF	; 255
   14cac:	08 c0       	rjmp	.+16     	; 0x14cbe <TeledyneATM88X_GetModemSample+0x14e>
   14cae:	d7 01       	movw	r26, r14
   14cb0:	11 96       	adiw	r26, 0x01	; 1
   14cb2:	8c 91       	ld	r24, X
   14cb4:	60 e4       	ldi	r22, 0x40	; 64
   14cb6:	70 e0       	ldi	r23, 0x00	; 0
   14cb8:	a8 01       	movw	r20, r16
   14cba:	0e 94 b8 32 	call	0x6570	; 0x6570 <OSuartGetCharWait>


	memset(pTaskInfo->pBuf->bufferRx, 0, 1024);
	
	err = OS_ERR_NONE;		
	while(err == OS_ERR_NONE)
   14cbe:	8a 81       	ldd	r24, Y+2	; 0x02
   14cc0:	88 23       	and	r24, r24
   14cc2:	a9 f3       	breq	.-22     	; 0x14cae <TeledyneATM88X_GetModemSample+0x13e>
	{
		c = (char) OSuartGetCharWait(pTaskInfo->portNum, 64, &err);		//wait .05 seconds -- basically clearing buffer
	}

	TeledyneATM88X_Tx(pTaskInfo, cmdATY, 3);
   14cc4:	c7 01       	movw	r24, r14
   14cc6:	be 01       	movw	r22, r28
   14cc8:	6b 5f       	subi	r22, 0xFB	; 251
   14cca:	7f 4f       	sbci	r23, 0xFF	; 255
   14ccc:	43 e0       	ldi	r20, 0x03	; 3
   14cce:	50 e0       	ldi	r21, 0x00	; 0
   14cd0:	0e 94 86 9f 	call	0x13f0c	; 0x13f0c <TeledyneATM88X_Tx>

	TeledyneATM88X_Rx(pTaskInfo, pTaskInfo->pBuf->bufferRx, &len, &eol, 1);
   14cd4:	f7 01       	movw	r30, r14
   14cd6:	64 81       	ldd	r22, Z+4	; 0x04
   14cd8:	75 81       	ldd	r23, Z+5	; 0x05
   14cda:	60 50       	subi	r22, 0x00	; 0
   14cdc:	7f 4f       	sbci	r23, 0xFF	; 255
   14cde:	c7 01       	movw	r24, r14
   14ce0:	ae 01       	movw	r20, r28
   14ce2:	4d 5f       	subi	r20, 0xFD	; 253
   14ce4:	5f 4f       	sbci	r21, 0xFF	; 255
   14ce6:	9e 01       	movw	r18, r28
   14ce8:	2f 5f       	subi	r18, 0xFF	; 255
   14cea:	3f 4f       	sbci	r19, 0xFF	; 255
   14cec:	01 e0       	ldi	r16, 0x01	; 1
   14cee:	10 e0       	ldi	r17, 0x00	; 0
   14cf0:	0e 94 75 9d 	call	0x13aea	; 0x13aea <TeledyneATM88X_Rx>

	if(len >=900)
   14cf4:	8b 81       	ldd	r24, Y+3	; 0x03
   14cf6:	9c 81       	ldd	r25, Y+4	; 0x04
   14cf8:	84 58       	subi	r24, 0x84	; 132
   14cfa:	93 40       	sbci	r25, 0x03	; 3
   14cfc:	08 f4       	brcc	.+2      	; 0x14d00 <TeledyneATM88X_GetModemSample+0x190>
   14cfe:	4d c0       	rjmp	.+154    	; 0x14d9a <TeledyneATM88X_GetModemSample+0x22a>
	{
		TeledyneATM88X_ParseATY(pTaskInfo);
   14d00:	c7 01       	movw	r24, r14
   14d02:	0e 94 9a 9b 	call	0x13734	; 0x13734 <TeledyneATM88X_ParseATY>

		OSTimeDlyHMSM(0,0,0,100);
   14d06:	80 e0       	ldi	r24, 0x00	; 0
   14d08:	60 e0       	ldi	r22, 0x00	; 0
   14d0a:	40 e0       	ldi	r20, 0x00	; 0
   14d0c:	24 e6       	ldi	r18, 0x64	; 100
   14d0e:	30 e0       	ldi	r19, 0x00	; 0
   14d10:	0e 94 2a 2e 	call	0x5c54	; 0x5c54 <OSTimeDlyHMSM>
		memset(pTaskInfo->pBuf->bufferRx, 0, 1024);
   14d14:	d7 01       	movw	r26, r14
   14d16:	14 96       	adiw	r26, 0x04	; 4
   14d18:	8d 91       	ld	r24, X+
   14d1a:	9c 91       	ld	r25, X
   14d1c:	15 97       	sbiw	r26, 0x05	; 5
   14d1e:	80 50       	subi	r24, 0x00	; 0
   14d20:	9f 4f       	sbci	r25, 0xFF	; 255
   14d22:	fc 01       	movw	r30, r24
   14d24:	80 e0       	ldi	r24, 0x00	; 0
   14d26:	94 e0       	ldi	r25, 0x04	; 4
   14d28:	df 01       	movw	r26, r30
   14d2a:	9c 01       	movw	r18, r24
   14d2c:	1d 92       	st	X+, r1
   14d2e:	21 50       	subi	r18, 0x01	; 1
   14d30:	30 40       	sbci	r19, 0x00	; 0
   14d32:	e1 f7       	brne	.-8      	; 0x14d2c <TeledyneATM88X_GetModemSample+0x1bc>
		len = 0;
   14d34:	1c 82       	std	Y+4, r1	; 0x04
   14d36:	1b 82       	std	Y+3, r1	; 0x03
		eol = '>';
   14d38:	8e e3       	ldi	r24, 0x3E	; 62
   14d3a:	89 83       	std	Y+1, r24	; 0x01

		err = OS_ERR_NONE;		
   14d3c:	1a 82       	std	Y+2, r1	; 0x02
		while(err == OS_ERR_NONE)
		{
			c = (char) OSuartGetCharWait(pTaskInfo->portNum, 64, &err);		//wait .05 seconds -- basically clearing buffer
   14d3e:	8e 01       	movw	r16, r28
   14d40:	0e 5f       	subi	r16, 0xFE	; 254
   14d42:	1f 4f       	sbci	r17, 0xFF	; 255
   14d44:	08 c0       	rjmp	.+16     	; 0x14d56 <TeledyneATM88X_GetModemSample+0x1e6>
   14d46:	d7 01       	movw	r26, r14
   14d48:	11 96       	adiw	r26, 0x01	; 1
   14d4a:	8c 91       	ld	r24, X
   14d4c:	60 e4       	ldi	r22, 0x40	; 64
   14d4e:	70 e0       	ldi	r23, 0x00	; 0
   14d50:	a8 01       	movw	r20, r16
   14d52:	0e 94 b8 32 	call	0x6570	; 0x6570 <OSuartGetCharWait>
		memset(pTaskInfo->pBuf->bufferRx, 0, 1024);
		len = 0;
		eol = '>';

		err = OS_ERR_NONE;		
		while(err == OS_ERR_NONE)
   14d56:	8a 81       	ldd	r24, Y+2	; 0x02
   14d58:	88 23       	and	r24, r24
   14d5a:	a9 f3       	breq	.-22     	; 0x14d46 <TeledyneATM88X_GetModemSample+0x1d6>
		{
			c = (char) OSuartGetCharWait(pTaskInfo->portNum, 64, &err);		//wait .05 seconds -- basically clearing buffer
		}

		TeledyneATM88X_Tx(pTaskInfo, cmdATR, 3);
   14d5c:	c7 01       	movw	r24, r14
   14d5e:	be 01       	movw	r22, r28
   14d60:	68 5f       	subi	r22, 0xF8	; 248
   14d62:	7f 4f       	sbci	r23, 0xFF	; 255
   14d64:	43 e0       	ldi	r20, 0x03	; 3
   14d66:	50 e0       	ldi	r21, 0x00	; 0
   14d68:	0e 94 86 9f 	call	0x13f0c	; 0x13f0c <TeledyneATM88X_Tx>
		TeledyneATM88X_Rx(pTaskInfo, pTaskInfo->pBuf->bufferRx, &len, &eol, 1);
   14d6c:	f7 01       	movw	r30, r14
   14d6e:	64 81       	ldd	r22, Z+4	; 0x04
   14d70:	75 81       	ldd	r23, Z+5	; 0x05
   14d72:	60 50       	subi	r22, 0x00	; 0
   14d74:	7f 4f       	sbci	r23, 0xFF	; 255
   14d76:	c7 01       	movw	r24, r14
   14d78:	ae 01       	movw	r20, r28
   14d7a:	4d 5f       	subi	r20, 0xFD	; 253
   14d7c:	5f 4f       	sbci	r21, 0xFF	; 255
   14d7e:	9e 01       	movw	r18, r28
   14d80:	2f 5f       	subi	r18, 0xFF	; 255
   14d82:	3f 4f       	sbci	r19, 0xFF	; 255
   14d84:	01 e0       	ldi	r16, 0x01	; 1
   14d86:	10 e0       	ldi	r17, 0x00	; 0
   14d88:	0e 94 75 9d 	call	0x13aea	; 0x13aea <TeledyneATM88X_Rx>

		TeledyneATM88X_ParseATR(pTaskInfo);
   14d8c:	c7 01       	movw	r24, r14
   14d8e:	0e 94 39 9c 	call	0x13872	; 0x13872 <TeledyneATM88X_ParseATR>

		TeledyneATM88X_ReportModemTelemetry(pTaskInfo);
   14d92:	c7 01       	movw	r24, r14
   14d94:	0e 94 1d 9f 	call	0x13e3a	; 0x13e3a <TeledyneATM88X_ReportModemTelemetry>
   14d98:	27 c0       	rjmp	.+78     	; 0x14de8 <TeledyneATM88X_GetModemSample+0x278>
	}
	else
	{
		if(strstr(pTaskInfo->pBuf->bufferRx, "Response Not") != 0)
   14d9a:	d7 01       	movw	r26, r14
   14d9c:	14 96       	adiw	r26, 0x04	; 4
   14d9e:	0d 91       	ld	r16, X+
   14da0:	1c 91       	ld	r17, X
   14da2:	15 97       	sbiw	r26, 0x05	; 5
   14da4:	c8 01       	movw	r24, r16
   14da6:	80 50       	subi	r24, 0x00	; 0
   14da8:	9f 4f       	sbci	r25, 0xFF	; 255
   14daa:	6b ec       	ldi	r22, 0xCB	; 203
   14dac:	74 e0       	ldi	r23, 0x04	; 4
   14dae:	0e 94 86 f0 	call	0x1e10c	; 0x1e10c <strstr>
   14db2:	00 97       	sbiw	r24, 0x00	; 0
   14db4:	51 f0       	breq	.+20     	; 0x14dca <TeledyneATM88X_GetModemSample+0x25a>
			memset(pTaskInfo->pBuf->reportATYData.atxBlocks, 0xFF, 6 * sizeof(MODEM_ATX_BLOCK));
   14db6:	98 01       	movw	r18, r16
   14db8:	28 5d       	subi	r18, 0xD8	; 216
   14dba:	3a 4f       	sbci	r19, 0xFA	; 250
   14dbc:	c9 01       	movw	r24, r18
   14dbe:	6f ef       	ldi	r22, 0xFF	; 255
   14dc0:	70 e0       	ldi	r23, 0x00	; 0
   14dc2:	46 e9       	ldi	r20, 0x96	; 150
   14dc4:	50 e0       	ldi	r21, 0x00	; 0
   14dc6:	0e 94 25 f0 	call	0x1e04a	; 0x1e04a <memset>
		pTaskInfo->pBuf->reportATYData.range = 0xFFFFFFFF;
   14dca:	d7 01       	movw	r26, r14
   14dcc:	14 96       	adiw	r26, 0x04	; 4
   14dce:	ed 91       	ld	r30, X+
   14dd0:	fc 91       	ld	r31, X
   14dd2:	15 97       	sbiw	r26, 0x05	; 5
   14dd4:	e2 54       	subi	r30, 0x42	; 66
   14dd6:	fa 4f       	sbci	r31, 0xFA	; 250
   14dd8:	8f ef       	ldi	r24, 0xFF	; 255
   14dda:	9f ef       	ldi	r25, 0xFF	; 255
   14ddc:	af ef       	ldi	r26, 0xFF	; 255
   14dde:	bf ef       	ldi	r27, 0xFF	; 255
   14de0:	80 83       	st	Z, r24
   14de2:	91 83       	std	Z+1, r25	; 0x01
   14de4:	a2 83       	std	Z+2, r26	; 0x02
   14de6:	b3 83       	std	Z+3, r27	; 0x03
	}
	
	return;
}
   14de8:	2e 96       	adiw	r28, 0x0e	; 14
   14dea:	0f b6       	in	r0, 0x3f	; 63
   14dec:	f8 94       	cli
   14dee:	de bf       	out	0x3e, r29	; 62
   14df0:	0f be       	out	0x3f, r0	; 63
   14df2:	cd bf       	out	0x3d, r28	; 61
   14df4:	cf 91       	pop	r28
   14df6:	df 91       	pop	r29
   14df8:	1f 91       	pop	r17
   14dfa:	0f 91       	pop	r16
   14dfc:	ff 90       	pop	r15
   14dfe:	ef 90       	pop	r14
   14e00:	08 95       	ret

00014e02 <TeledyneATM88X_Init>:
prog_char teledyneATM88XParserID[] = "ATM";
prog_char teledyneATM88XCmdList[] = "rxofcisRXOFCIS";


uint8_t TeledyneATM88X_Init(PTELEDYNE_ATM_88X_TASK pTaskInfo)
{
   14e02:	af 92       	push	r10
   14e04:	bf 92       	push	r11
   14e06:	cf 92       	push	r12
   14e08:	df 92       	push	r13
   14e0a:	ef 92       	push	r14
   14e0c:	0f 93       	push	r16
   14e0e:	1f 93       	push	r17
   14e10:	df 93       	push	r29
   14e12:	cf 93       	push	r28
   14e14:	cd b7       	in	r28, 0x3d	; 61
   14e16:	de b7       	in	r29, 0x3e	; 62
   14e18:	27 97       	sbiw	r28, 0x07	; 7
   14e1a:	0f b6       	in	r0, 0x3f	; 63
   14e1c:	f8 94       	cli
   14e1e:	de bf       	out	0x3e, r29	; 62
   14e20:	0f be       	out	0x3f, r0	; 63
   14e22:	cd bf       	out	0x3d, r28	; 61
   14e24:	5c 01       	movw	r10, r24
	uint8_t retval = SUCCESS;
	uint16_t baseAddr = 0;
	uint16_t len = 0;
   14e26:	1b 82       	std	Y+3, r1	; 0x03
   14e28:	1a 82       	std	Y+2, r1	; 0x02
	char eol = '>';
   14e2a:	8e e3       	ldi	r24, 0x3E	; 62
   14e2c:	89 83       	std	Y+1, r24	; 0x01

	if(pTaskInfo->portNum == USER_PORT_1)
   14e2e:	d5 01       	movw	r26, r10
   14e30:	11 96       	adiw	r26, 0x01	; 1
   14e32:	8c 91       	ld	r24, X
   14e34:	81 30       	cpi	r24, 0x01	; 1
   14e36:	21 f4       	brne	.+8      	; 0x14e40 <TeledyneATM88X_Init+0x3e>
   14e38:	c1 2c       	mov	r12, r1
   14e3a:	33 e0       	ldi	r19, 0x03	; 3
   14e3c:	d3 2e       	mov	r13, r19
   14e3e:	0e c0       	rjmp	.+28     	; 0x14e5c <TeledyneATM88X_Init+0x5a>
		baseAddr = EEPROM_PM1_START;
	if(pTaskInfo->portNum == USER_PORT_2)
   14e40:	82 30       	cpi	r24, 0x02	; 2
   14e42:	21 f4       	brne	.+8      	; 0x14e4c <TeledyneATM88X_Init+0x4a>
   14e44:	c1 2c       	mov	r12, r1
   14e46:	25 e0       	ldi	r18, 0x05	; 5
   14e48:	d2 2e       	mov	r13, r18
   14e4a:	08 c0       	rjmp	.+16     	; 0x14e5c <TeledyneATM88X_Init+0x5a>
		baseAddr = EEPROM_PM2_START;
	if(pTaskInfo->portNum == USER_PORT_3)
   14e4c:	83 30       	cpi	r24, 0x03	; 3
   14e4e:	21 f4       	brne	.+8      	; 0x14e58 <TeledyneATM88X_Init+0x56>
   14e50:	c1 2c       	mov	r12, r1
   14e52:	97 e0       	ldi	r25, 0x07	; 7
   14e54:	d9 2e       	mov	r13, r25
   14e56:	02 c0       	rjmp	.+4      	; 0x14e5c <TeledyneATM88X_Init+0x5a>
   14e58:	cc 24       	eor	r12, r12
   14e5a:	dd 24       	eor	r13, r13
		baseAddr = EEPROM_PM3_START;

	if(pTaskInfo->pBuf != NULL)
   14e5c:	d5 01       	movw	r26, r10
   14e5e:	14 96       	adiw	r26, 0x04	; 4
   14e60:	ed 91       	ld	r30, X+
   14e62:	fc 91       	ld	r31, X
   14e64:	15 97       	sbiw	r26, 0x05	; 5
   14e66:	30 97       	sbiw	r30, 0x00	; 0
   14e68:	41 f0       	breq	.+16     	; 0x14e7a <TeledyneATM88X_Init+0x78>
		memset(pTaskInfo->pBuf, 0, sizeof(TELEDYNE_ATM_88X_BUFFER));
   14e6a:	8b ee       	ldi	r24, 0xEB	; 235
   14e6c:	96 e0       	ldi	r25, 0x06	; 6
   14e6e:	df 01       	movw	r26, r30
   14e70:	9c 01       	movw	r18, r24
   14e72:	1d 92       	st	X+, r1
   14e74:	21 50       	subi	r18, 0x01	; 1
   14e76:	30 40       	sbci	r19, 0x00	; 0
   14e78:	e1 f7       	brne	.-8      	; 0x14e72 <TeledyneATM88X_Init+0x70>

	OSuartInitPort(pTaskInfo->portNum, 9600, UART_MODE_EIGHT_DATA_BITS, UART_MODE_ONE_STOP_BIT, UART_MODE_NO_PARITY);
   14e7a:	d5 01       	movw	r26, r10
   14e7c:	11 96       	adiw	r26, 0x01	; 1
   14e7e:	8c 91       	ld	r24, X
   14e80:	40 e8       	ldi	r20, 0x80	; 128
   14e82:	55 e2       	ldi	r21, 0x25	; 37
   14e84:	60 e0       	ldi	r22, 0x00	; 0
   14e86:	70 e0       	ldi	r23, 0x00	; 0
   14e88:	26 e0       	ldi	r18, 0x06	; 6
   14e8a:	00 e0       	ldi	r16, 0x00	; 0
   14e8c:	ee 24       	eor	r14, r14
   14e8e:	0e 94 38 33 	call	0x6670	; 0x6670 <OSuartInitPort>

	EnablePIBModule(pTaskInfo->portNum, TRUE, FALSE);
   14e92:	f5 01       	movw	r30, r10
   14e94:	81 81       	ldd	r24, Z+1	; 0x01
   14e96:	6f ef       	ldi	r22, 0xFF	; 255
   14e98:	40 e0       	ldi	r20, 0x00	; 0
   14e9a:	0e 94 a2 38 	call	0x7144	; 0x7144 <EnablePIBModule>
	pTaskInfo->pBuf->modemIsOn = TRUE;
   14e9e:	d5 01       	movw	r26, r10
   14ea0:	14 96       	adiw	r26, 0x04	; 4
   14ea2:	ed 91       	ld	r30, X+
   14ea4:	fc 91       	ld	r31, X
   14ea6:	15 97       	sbiw	r26, 0x05	; 5
   14ea8:	e7 5e       	subi	r30, 0xE7	; 231
   14eaa:	fa 4f       	sbci	r31, 0xFA	; 250
   14eac:	8f ef       	ldi	r24, 0xFF	; 255
   14eae:	80 83       	st	Z, r24

	if(baseAddr != 0)
   14eb0:	c1 14       	cp	r12, r1
   14eb2:	d1 04       	cpc	r13, r1
   14eb4:	b9 f1       	breq	.+110    	; 0x14f24 <TeledyneATM88X_Init+0x122>
	{
		uint32_t temp;
		EepromReadBlock((void*)(baseAddr + TELEDYNE_ATM_88X_SAMPLE_OFFSET), (void*)&temp, 4);
   14eb6:	86 01       	movw	r16, r12
   14eb8:	00 5c       	subi	r16, 0xC0	; 192
   14eba:	1f 4f       	sbci	r17, 0xFF	; 255
   14ebc:	84 e0       	ldi	r24, 0x04	; 4
   14ebe:	c8 2e       	mov	r12, r24
   14ec0:	d1 2c       	mov	r13, r1
   14ec2:	cc 0e       	add	r12, r28
   14ec4:	dd 1e       	adc	r13, r29
   14ec6:	c8 01       	movw	r24, r16
   14ec8:	b6 01       	movw	r22, r12
   14eca:	44 e0       	ldi	r20, 0x04	; 4
   14ecc:	50 e0       	ldi	r21, 0x00	; 0
   14ece:	0e 94 67 37 	call	0x6ece	; 0x6ece <EepromReadBlock>

		if((temp == 0xFFFFFFFF) || (temp == 0x00000000))
   14ed2:	8c 81       	ldd	r24, Y+4	; 0x04
   14ed4:	9d 81       	ldd	r25, Y+5	; 0x05
   14ed6:	ae 81       	ldd	r26, Y+6	; 0x06
   14ed8:	bf 81       	ldd	r27, Y+7	; 0x07
   14eda:	01 97       	sbiw	r24, 0x01	; 1
   14edc:	a1 09       	sbc	r26, r1
   14ede:	b1 09       	sbc	r27, r1
   14ee0:	8e 5f       	subi	r24, 0xFE	; 254
   14ee2:	9f 4f       	sbci	r25, 0xFF	; 255
   14ee4:	af 4f       	sbci	r26, 0xFF	; 255
   14ee6:	bf 4f       	sbci	r27, 0xFF	; 255
   14ee8:	70 f0       	brcs	.+28     	; 0x14f06 <TeledyneATM88X_Init+0x104>
		{
			temp = 60;
   14eea:	8c e3       	ldi	r24, 0x3C	; 60
   14eec:	90 e0       	ldi	r25, 0x00	; 0
   14eee:	a0 e0       	ldi	r26, 0x00	; 0
   14ef0:	b0 e0       	ldi	r27, 0x00	; 0
   14ef2:	8c 83       	std	Y+4, r24	; 0x04
   14ef4:	9d 83       	std	Y+5, r25	; 0x05
   14ef6:	ae 83       	std	Y+6, r26	; 0x06
   14ef8:	bf 83       	std	Y+7, r27	; 0x07
			EepromWriteBlock((void*)(baseAddr + TELEDYNE_ATM_88X_SAMPLE_OFFSET), (void*)&temp, 4);
   14efa:	c8 01       	movw	r24, r16
   14efc:	b6 01       	movw	r22, r12
   14efe:	44 e0       	ldi	r20, 0x04	; 4
   14f00:	50 e0       	ldi	r21, 0x00	; 0
   14f02:	0e 94 f7 37 	call	0x6fee	; 0x6fee <EepromWriteBlock>
		}
		pTaskInfo->pBuf->sampleRate = temp;
   14f06:	d5 01       	movw	r26, r10
   14f08:	14 96       	adiw	r26, 0x04	; 4
   14f0a:	ed 91       	ld	r30, X+
   14f0c:	fc 91       	ld	r31, X
   14f0e:	15 97       	sbiw	r26, 0x05	; 5
   14f10:	e0 50       	subi	r30, 0x00	; 0
   14f12:	fb 4f       	sbci	r31, 0xFB	; 251
   14f14:	8c 81       	ldd	r24, Y+4	; 0x04
   14f16:	9d 81       	ldd	r25, Y+5	; 0x05
   14f18:	ae 81       	ldd	r26, Y+6	; 0x06
   14f1a:	bf 81       	ldd	r27, Y+7	; 0x07
   14f1c:	80 83       	st	Z, r24
   14f1e:	91 83       	std	Z+1, r25	; 0x01
   14f20:	a2 83       	std	Z+2, r26	; 0x02
   14f22:	b3 83       	std	Z+3, r27	; 0x03
	}

	OSTimeDlyHMSM(0,0,1,0);
   14f24:	80 e0       	ldi	r24, 0x00	; 0
   14f26:	60 e0       	ldi	r22, 0x00	; 0
   14f28:	41 e0       	ldi	r20, 0x01	; 1
   14f2a:	20 e0       	ldi	r18, 0x00	; 0
   14f2c:	30 e0       	ldi	r19, 0x00	; 0
   14f2e:	0e 94 2a 2e 	call	0x5c54	; 0x5c54 <OSTimeDlyHMSM>
	OSuartPutCharWait(pTaskInfo->portNum, 0x0D, 10);
   14f32:	f5 01       	movw	r30, r10
   14f34:	81 81       	ldd	r24, Z+1	; 0x01
   14f36:	6d e0       	ldi	r22, 0x0D	; 13
   14f38:	4a e0       	ldi	r20, 0x0A	; 10
   14f3a:	50 e0       	ldi	r21, 0x00	; 0
   14f3c:	0e 94 f3 31 	call	0x63e6	; 0x63e6 <OSuartPutCharWait>
	TeledyneATM88X_Rx(pTaskInfo, pTaskInfo->pBuf->bufferRx, &len, &eol, 1);
   14f40:	d5 01       	movw	r26, r10
   14f42:	14 96       	adiw	r26, 0x04	; 4
   14f44:	6d 91       	ld	r22, X+
   14f46:	7c 91       	ld	r23, X
   14f48:	15 97       	sbiw	r26, 0x05	; 5
   14f4a:	60 50       	subi	r22, 0x00	; 0
   14f4c:	7f 4f       	sbci	r23, 0xFF	; 255
   14f4e:	c5 01       	movw	r24, r10
   14f50:	ae 01       	movw	r20, r28
   14f52:	4e 5f       	subi	r20, 0xFE	; 254
   14f54:	5f 4f       	sbci	r21, 0xFF	; 255
   14f56:	9e 01       	movw	r18, r28
   14f58:	2f 5f       	subi	r18, 0xFF	; 255
   14f5a:	3f 4f       	sbci	r19, 0xFF	; 255
   14f5c:	01 e0       	ldi	r16, 0x01	; 1
   14f5e:	10 e0       	ldi	r17, 0x00	; 0
   14f60:	0e 94 75 9d 	call	0x13aea	; 0x13aea <TeledyneATM88X_Rx>

	OSTimeDlyHMSM(0,0,0,100);
   14f64:	80 e0       	ldi	r24, 0x00	; 0
   14f66:	60 e0       	ldi	r22, 0x00	; 0
   14f68:	40 e0       	ldi	r20, 0x00	; 0
   14f6a:	24 e6       	ldi	r18, 0x64	; 100
   14f6c:	30 e0       	ldi	r19, 0x00	; 0
   14f6e:	0e 94 2a 2e 	call	0x5c54	; 0x5c54 <OSTimeDlyHMSM>

	pTaskInfo->pBuf->sampleModem = FALSE;
   14f72:	d5 01       	movw	r26, r10
   14f74:	14 96       	adiw	r26, 0x04	; 4
   14f76:	ed 91       	ld	r30, X+
   14f78:	fc 91       	ld	r31, X
   14f7a:	15 97       	sbiw	r26, 0x05	; 5
   14f7c:	ec 5e       	subi	r30, 0xEC	; 236
   14f7e:	fa 4f       	sbci	r31, 0xFA	; 250
   14f80:	11 92       	st	Z+, r1
	pTaskInfo->pBuf->nextSample = 0;
   14f82:	10 82       	st	Z, r1
   14f84:	11 82       	std	Z+1, r1	; 0x01
   14f86:	12 82       	std	Z+2, r1	; 0x02
   14f88:	13 82       	std	Z+3, r1	; 0x03

	pTaskInfo->pBuf->baud[0] = 2400;
   14f8a:	e3 55       	subi	r30, 0x53	; 83
   14f8c:	ff 4f       	sbci	r31, 0xFF	; 255
   14f8e:	80 e6       	ldi	r24, 0x60	; 96
   14f90:	99 e0       	ldi	r25, 0x09	; 9
   14f92:	81 93       	st	Z+, r24
   14f94:	91 93       	st	Z+, r25
	pTaskInfo->pBuf->baud[1] = 1200;
   14f96:	80 eb       	ldi	r24, 0xB0	; 176
   14f98:	94 e0       	ldi	r25, 0x04	; 4
   14f9a:	81 93       	st	Z+, r24
   14f9c:	91 93       	st	Z+, r25
	pTaskInfo->pBuf->baud[2] = 1066;
   14f9e:	8a e2       	ldi	r24, 0x2A	; 42
   14fa0:	94 e0       	ldi	r25, 0x04	; 4
   14fa2:	81 93       	st	Z+, r24
   14fa4:	91 93       	st	Z+, r25
	pTaskInfo->pBuf->baud[3] = 800;
   14fa6:	80 e2       	ldi	r24, 0x20	; 32
   14fa8:	93 e0       	ldi	r25, 0x03	; 3
   14faa:	81 93       	st	Z+, r24
   14fac:	91 93       	st	Z+, r25
	pTaskInfo->pBuf->baud[4] = 600;
   14fae:	88 e5       	ldi	r24, 0x58	; 88
   14fb0:	92 e0       	ldi	r25, 0x02	; 2
   14fb2:	81 93       	st	Z+, r24
   14fb4:	91 93       	st	Z+, r25
	pTaskInfo->pBuf->baud[5] = 300;
   14fb6:	8c e2       	ldi	r24, 0x2C	; 44
   14fb8:	91 e0       	ldi	r25, 0x01	; 1
   14fba:	91 83       	std	Z+1, r25	; 0x01
   14fbc:	80 83       	st	Z, r24

	return retval;
}
   14fbe:	8f ef       	ldi	r24, 0xFF	; 255
   14fc0:	27 96       	adiw	r28, 0x07	; 7
   14fc2:	0f b6       	in	r0, 0x3f	; 63
   14fc4:	f8 94       	cli
   14fc6:	de bf       	out	0x3e, r29	; 62
   14fc8:	0f be       	out	0x3f, r0	; 63
   14fca:	cd bf       	out	0x3d, r28	; 61
   14fcc:	cf 91       	pop	r28
   14fce:	df 91       	pop	r29
   14fd0:	1f 91       	pop	r17
   14fd2:	0f 91       	pop	r16
   14fd4:	ef 90       	pop	r14
   14fd6:	df 90       	pop	r13
   14fd8:	cf 90       	pop	r12
   14fda:	bf 90       	pop	r11
   14fdc:	af 90       	pop	r10
   14fde:	08 95       	ret

00014fe0 <TurnerC3_CheckSum>:
}



uint16_t TurnerC3_CheckSum(uint8_t* tempBuf, uint16_t len)
{
   14fe0:	fc 01       	movw	r30, r24
   14fe2:	db 01       	movw	r26, r22
   14fe4:	40 e0       	ldi	r20, 0x00	; 0
   14fe6:	50 e0       	ldi	r21, 0x00	; 0
   14fe8:	60 e0       	ldi	r22, 0x00	; 0
   14fea:	70 e0       	ldi	r23, 0x00	; 0
   14fec:	20 e0       	ldi	r18, 0x00	; 0
   14fee:	30 e0       	ldi	r19, 0x00	; 0
   14ff0:	07 c0       	rjmp	.+14     	; 0x15000 <TurnerC3_CheckSum+0x20>
	uint8_t hiByte;
	uint8_t loByte;

	for(int i = 0; i<len; i++)
	{
		sum += *tempBuf;
   14ff2:	81 91       	ld	r24, Z+
   14ff4:	48 0f       	add	r20, r24
   14ff6:	51 1d       	adc	r21, r1
   14ff8:	61 1d       	adc	r22, r1
   14ffa:	71 1d       	adc	r23, r1
	uint16_t checksum = 0;
	uint32_t sum = 0;
	uint8_t hiByte;
	uint8_t loByte;

	for(int i = 0; i<len; i++)
   14ffc:	2f 5f       	subi	r18, 0xFF	; 255
   14ffe:	3f 4f       	sbci	r19, 0xFF	; 255
   15000:	2a 17       	cp	r18, r26
   15002:	3b 07       	cpc	r19, r27
   15004:	b0 f3       	brcs	.-20     	; 0x14ff2 <TurnerC3_CheckSum+0x12>
	{
		sum += *tempBuf;
		tempBuf++;
	}
	checksum = (uint16_t)(sum & 0x0000FFFF);
   15006:	25 2f       	mov	r18, r21
	hiByte = HIBYTE(checksum);
	loByte = LOBYTE(checksum);
	checksum = MAKEWORD(hiByte, ((loByte + hiByte)*-1));
   15008:	45 0f       	add	r20, r21
   1500a:	94 2f       	mov	r25, r20
   1500c:	91 95       	neg	r25
   1500e:	80 e0       	ldi	r24, 0x00	; 0
   15010:	30 e0       	ldi	r19, 0x00	; 0
   15012:	28 2b       	or	r18, r24
   15014:	39 2b       	or	r19, r25

	return checksum;
}
   15016:	c9 01       	movw	r24, r18
   15018:	08 95       	ret

0001501a <TurnerC3_Endian2ByteSwap>:

uint16_t TurnerC3_Endian2ByteSwap(uint16_t val)
{
   1501a:	58 2f       	mov	r21, r24
   1501c:	40 e0       	ldi	r20, 0x00	; 0
   1501e:	29 2f       	mov	r18, r25
   15020:	30 e0       	ldi	r19, 0x00	; 0
   15022:	24 2b       	or	r18, r20
   15024:	35 2b       	or	r19, r21

	result |= (LOBYTE(val)<<8);
	result |= (HIBYTE(val));

	return result;
}
   15026:	c9 01       	movw	r24, r18
   15028:	08 95       	ret

0001502a <TurnerC3_Endian4ByteSwap>:

uint32_t TurnerC3_Endian4ByteSwap(uint32_t val)
{
   1502a:	af 92       	push	r10
   1502c:	bf 92       	push	r11
   1502e:	cf 92       	push	r12
   15030:	df 92       	push	r13
   15032:	ef 92       	push	r14
   15034:	ff 92       	push	r15
   15036:	0f 93       	push	r16
   15038:	1f 93       	push	r17
	uint32_t result = 0;
	uint16_t hiword = 0;
	uint16_t loword = 0;

	hiword = HIWORD(val);
   1503a:	5c 01       	movw	r10, r24
   1503c:	cc 24       	eor	r12, r12
   1503e:	dd 24       	eor	r13, r13
	loword = LOWORD(val);

	result |= ((uint32_t)(LOBYTE(loword))<<24);
	result |= ((uint32_t)(HIBYTE(loword))<<16);
   15040:	e7 2e       	mov	r14, r23
   15042:	ff 24       	eor	r15, r15
   15044:	00 e0       	ldi	r16, 0x00	; 0
   15046:	10 e0       	ldi	r17, 0x00	; 0
   15048:	87 01       	movw	r16, r14
   1504a:	ff 24       	eor	r15, r15
   1504c:	ee 24       	eor	r14, r14
   1504e:	2a 2d       	mov	r18, r10
   15050:	30 e0       	ldi	r19, 0x00	; 0
   15052:	40 e0       	ldi	r20, 0x00	; 0
   15054:	50 e0       	ldi	r21, 0x00	; 0
   15056:	54 2f       	mov	r21, r20
   15058:	43 2f       	mov	r20, r19
   1505a:	32 2f       	mov	r19, r18
   1505c:	22 27       	eor	r18, r18
   1505e:	e2 2a       	or	r14, r18
   15060:	f3 2a       	or	r15, r19
   15062:	04 2b       	or	r16, r20
   15064:	15 2b       	or	r17, r21
	result |= ((uint32_t)(LOBYTE(hiword))<<8);
   15066:	70 e0       	ldi	r23, 0x00	; 0
   15068:	80 e0       	ldi	r24, 0x00	; 0
   1506a:	90 e0       	ldi	r25, 0x00	; 0
   1506c:	96 2f       	mov	r25, r22
   1506e:	88 27       	eor	r24, r24
   15070:	77 27       	eor	r23, r23
   15072:	66 27       	eor	r22, r22
   15074:	e6 2a       	or	r14, r22
   15076:	f7 2a       	or	r15, r23
   15078:	08 2b       	or	r16, r24
   1507a:	19 2b       	or	r17, r25
   1507c:	8b 2d       	mov	r24, r11
   1507e:	90 e0       	ldi	r25, 0x00	; 0
   15080:	a0 e0       	ldi	r26, 0x00	; 0
   15082:	b0 e0       	ldi	r27, 0x00	; 0
   15084:	e8 2a       	or	r14, r24
   15086:	f9 2a       	or	r15, r25
   15088:	0a 2b       	or	r16, r26
   1508a:	1b 2b       	or	r17, r27
	result |= ((uint32_t)(HIBYTE(hiword)));

	return result;
}
   1508c:	b7 01       	movw	r22, r14
   1508e:	c8 01       	movw	r24, r16
   15090:	1f 91       	pop	r17
   15092:	0f 91       	pop	r16
   15094:	ff 90       	pop	r15
   15096:	ef 90       	pop	r14
   15098:	df 90       	pop	r13
   1509a:	cf 90       	pop	r12
   1509c:	bf 90       	pop	r11
   1509e:	af 90       	pop	r10
   150a0:	08 95       	ret

000150a2 <TurnerC3_SetCalibration>:
uint8_t TurnerC3_SetCalibration(PTURNER_C3_TASK pTaskInfo)
{
	uint8_t retval = FAIL;

	return retval;
}
   150a2:	80 e0       	ldi	r24, 0x00	; 0
   150a4:	08 95       	ret

000150a6 <TurnerC3_ConvertToTick>:

	return retval;
}

uint32_t TurnerC3_ConvertToTick(uint8_t* pBuf)
{
   150a6:	0f 93       	push	r16
   150a8:	1f 93       	push	r17
   150aa:	fc 01       	movw	r30, r24
	uint32_t myTick = 0;

	uint8_t val1;
	uint8_t val2;

	val1 = *pBuf++;
   150ac:	8c 01       	movw	r16, r24
   150ae:	0f 5f       	subi	r16, 0xFF	; 255
   150b0:	1f 4f       	sbci	r17, 0xFF	; 255
	val2 = *pBuf++;
   150b2:	70 81       	ld	r23, Z
   150b4:	60 e0       	ldi	r22, 0x00	; 0
   150b6:	21 81       	ldd	r18, Z+1	; 0x01
   150b8:	30 e0       	ldi	r19, 0x00	; 0
   150ba:	62 2b       	or	r22, r18
   150bc:	73 2b       	or	r23, r19
   150be:	80 e0       	ldi	r24, 0x00	; 0
   150c0:	90 e0       	ldi	r25, 0x00	; 0
   150c2:	20 ec       	ldi	r18, 0xC0	; 192
   150c4:	38 ea       	ldi	r19, 0xA8	; 168
   150c6:	40 e0       	ldi	r20, 0x00	; 0
   150c8:	50 e0       	ldi	r21, 0x00	; 0
   150ca:	0e 94 f2 f3 	call	0x1e7e4	; 0x1e7e4 <__mulsi3>
   150ce:	9b 01       	movw	r18, r22
   150d0:	ac 01       	movw	r20, r24
   150d2:	20 58       	subi	r18, 0x80	; 128
   150d4:	3c 4b       	sbci	r19, 0xBC	; 188
   150d6:	42 49       	sbci	r20, 0x92	; 146
   150d8:	57 4c       	sbci	r21, 0xC7	; 199
   150da:	f8 01       	movw	r30, r16
   150dc:	91 81       	ldd	r25, Z+1	; 0x01
   150de:	80 e0       	ldi	r24, 0x00	; 0
   150e0:	62 81       	ldd	r22, Z+2	; 0x02
   150e2:	70 e0       	ldi	r23, 0x00	; 0
   150e4:	86 2b       	or	r24, r22
   150e6:	97 2b       	or	r25, r23
   150e8:	a0 e0       	ldi	r26, 0x00	; 0
   150ea:	b0 e0       	ldi	r27, 0x00	; 0
   150ec:	28 0f       	add	r18, r24
   150ee:	39 1f       	adc	r19, r25
   150f0:	4a 1f       	adc	r20, r26
   150f2:	5b 1f       	adc	r21, r27


	myTick = (halfDays * 43200) + seconds + JAN_1_2000;

	return myTick;
}
   150f4:	b9 01       	movw	r22, r18
   150f6:	ca 01       	movw	r24, r20
   150f8:	1f 91       	pop	r17
   150fa:	0f 91       	pop	r16
   150fc:	08 95       	ret

000150fe <TurnerC3_PowerOff>:

	return retval;
}

uint8_t TurnerC3_PowerOff(PTURNER_C3_TASK pTaskInfo)
{
   150fe:	0f 93       	push	r16
   15100:	1f 93       	push	r17
   15102:	8c 01       	movw	r16, r24
	EnablePIBModule(pTaskInfo->portNum, FALSE, FALSE);
   15104:	dc 01       	movw	r26, r24
   15106:	11 96       	adiw	r26, 0x01	; 1
   15108:	8c 91       	ld	r24, X
   1510a:	60 e0       	ldi	r22, 0x00	; 0
   1510c:	40 e0       	ldi	r20, 0x00	; 0
   1510e:	0e 94 a2 38 	call	0x7144	; 0x7144 <EnablePIBModule>
	pTaskInfo->pBuf->powerOn = FALSE;
   15112:	d8 01       	movw	r26, r16
   15114:	14 96       	adiw	r26, 0x04	; 4
   15116:	ed 91       	ld	r30, X+
   15118:	fc 91       	ld	r31, X
   1511a:	15 97       	sbiw	r26, 0x05	; 5
   1511c:	eb 5f       	subi	r30, 0xFB	; 251
   1511e:	fa 4f       	sbci	r31, 0xFA	; 250
   15120:	10 82       	st	Z, r1

	return SUCCESS;
}
   15122:	8f ef       	ldi	r24, 0xFF	; 255
   15124:	1f 91       	pop	r17
   15126:	0f 91       	pop	r16
   15128:	08 95       	ret

0001512a <TurnerC3_PowerOn>:
	return retval;
}


uint8_t TurnerC3_PowerOn(PTURNER_C3_TASK pTaskInfo)
{
   1512a:	ef 92       	push	r14
   1512c:	ff 92       	push	r15
   1512e:	0f 93       	push	r16
   15130:	1f 93       	push	r17
   15132:	df 93       	push	r29
   15134:	cf 93       	push	r28
   15136:	0f 92       	push	r0
   15138:	cd b7       	in	r28, 0x3d	; 61
   1513a:	de b7       	in	r29, 0x3e	; 62
   1513c:	8c 01       	movw	r16, r24
	uint8_t retval = FAIL;
	uint8_t err = OS_ERR_NONE;
	char c = 0;

	switch(pTaskInfo->taskID)
   1513e:	dc 01       	movw	r26, r24
   15140:	8c 91       	ld	r24, X
   15142:	82 30       	cpi	r24, 0x02	; 2
   15144:	51 f0       	breq	.+20     	; 0x1515a <TurnerC3_PowerOn+0x30>
   15146:	83 30       	cpi	r24, 0x03	; 3
   15148:	71 f0       	breq	.+28     	; 0x15166 <TurnerC3_PowerOn+0x3c>
   1514a:	81 30       	cpi	r24, 0x01	; 1
   1514c:	69 f4       	brne	.+26     	; 0x15168 <TurnerC3_PowerOn+0x3e>
	{
		case 1:
			BSET(PORTK, _BV(PK2));
   1514e:	80 91 08 01 	lds	r24, 0x0108
   15152:	84 60       	ori	r24, 0x04	; 4
   15154:	80 93 08 01 	sts	0x0108, r24
   15158:	07 c0       	rjmp	.+14     	; 0x15168 <TurnerC3_PowerOn+0x3e>
			break;
		case 2:
			BSET(PORTH, _BV(PH6));
   1515a:	80 91 02 01 	lds	r24, 0x0102
   1515e:	80 64       	ori	r24, 0x40	; 64
   15160:	80 93 02 01 	sts	0x0102, r24
   15164:	01 c0       	rjmp	.+2      	; 0x15168 <TurnerC3_PowerOn+0x3e>
			break;
		case 3:
			BSET(PORTF, _BV(PF2));
   15166:	8a 9a       	sbi	0x11, 2	; 17
			break;
	}

	EnablePIBModule(pTaskInfo->portNum, TRUE, FALSE);
   15168:	f8 01       	movw	r30, r16
   1516a:	81 81       	ldd	r24, Z+1	; 0x01


uint8_t TurnerC3_PowerOn(PTURNER_C3_TASK pTaskInfo)
{
	uint8_t retval = FAIL;
	uint8_t err = OS_ERR_NONE;
   1516c:	19 82       	std	Y+1, r1	; 0x01
		case 3:
			BSET(PORTF, _BV(PF2));
			break;
	}

	EnablePIBModule(pTaskInfo->portNum, TRUE, FALSE);
   1516e:	6f ef       	ldi	r22, 0xFF	; 255
   15170:	40 e0       	ldi	r20, 0x00	; 0
   15172:	0e 94 a2 38 	call	0x7144	; 0x7144 <EnablePIBModule>
	OSTimeDlyHMSM(0,0,0,500);
   15176:	80 e0       	ldi	r24, 0x00	; 0
   15178:	60 e0       	ldi	r22, 0x00	; 0
   1517a:	40 e0       	ldi	r20, 0x00	; 0
   1517c:	24 ef       	ldi	r18, 0xF4	; 244
   1517e:	31 e0       	ldi	r19, 0x01	; 1
   15180:	0e 94 2a 2e 	call	0x5c54	; 0x5c54 <OSTimeDlyHMSM>


	switch(pTaskInfo->taskID)
   15184:	d8 01       	movw	r26, r16
   15186:	8c 91       	ld	r24, X
   15188:	82 30       	cpi	r24, 0x02	; 2
   1518a:	51 f0       	breq	.+20     	; 0x151a0 <TurnerC3_PowerOn+0x76>
   1518c:	83 30       	cpi	r24, 0x03	; 3
   1518e:	71 f0       	breq	.+28     	; 0x151ac <TurnerC3_PowerOn+0x82>
   15190:	81 30       	cpi	r24, 0x01	; 1
   15192:	69 f4       	brne	.+26     	; 0x151ae <TurnerC3_PowerOn+0x84>
	{
		case 1:
			BCLR(PORTL, _BV(PK2));
   15194:	80 91 0b 01 	lds	r24, 0x010B
   15198:	8b 7f       	andi	r24, 0xFB	; 251
   1519a:	80 93 0b 01 	sts	0x010B, r24
   1519e:	07 c0       	rjmp	.+14     	; 0x151ae <TurnerC3_PowerOn+0x84>
			break;
		case 2:
			BCLR(PORTH, _BV(PH6));
   151a0:	80 91 02 01 	lds	r24, 0x0102
   151a4:	8f 7b       	andi	r24, 0xBF	; 191
   151a6:	80 93 02 01 	sts	0x0102, r24
   151aa:	01 c0       	rjmp	.+2      	; 0x151ae <TurnerC3_PowerOn+0x84>
			break;
		case 3:
			BCLR(PORTF, _BV(PF2));
   151ac:	8a 98       	cbi	0x11, 2	; 17
			break;
	}
	memset(pTaskInfo->pBuf->bufferRx, 0, 1024);
   151ae:	f8 01       	movw	r30, r16
   151b0:	84 81       	ldd	r24, Z+4	; 0x04
   151b2:	95 81       	ldd	r25, Z+5	; 0x05
   151b4:	80 50       	subi	r24, 0x00	; 0
   151b6:	9f 4f       	sbci	r25, 0xFF	; 255
   151b8:	fc 01       	movw	r30, r24
   151ba:	80 e0       	ldi	r24, 0x00	; 0
   151bc:	94 e0       	ldi	r25, 0x04	; 4
   151be:	df 01       	movw	r26, r30
   151c0:	9c 01       	movw	r18, r24
   151c2:	1d 92       	st	X+, r1
   151c4:	21 50       	subi	r18, 0x01	; 1
   151c6:	30 40       	sbci	r19, 0x00	; 0
   151c8:	e1 f7       	brne	.-8      	; 0x151c2 <TurnerC3_PowerOn+0x98>

	err = OS_ERR_NONE;		
   151ca:	19 82       	std	Y+1, r1	; 0x01
	while(err == OS_ERR_NONE)
	{
		c = (char) OSuartGetCharWait(pTaskInfo->portNum, 64, &err);		//wait .5 seconds -- basically clearing buffer
   151cc:	7e 01       	movw	r14, r28
   151ce:	08 94       	sec
   151d0:	e1 1c       	adc	r14, r1
   151d2:	f1 1c       	adc	r15, r1
   151d4:	08 c0       	rjmp	.+16     	; 0x151e6 <TurnerC3_PowerOn+0xbc>
   151d6:	d8 01       	movw	r26, r16
   151d8:	11 96       	adiw	r26, 0x01	; 1
   151da:	8c 91       	ld	r24, X
   151dc:	60 e4       	ldi	r22, 0x40	; 64
   151de:	70 e0       	ldi	r23, 0x00	; 0
   151e0:	a7 01       	movw	r20, r14
   151e2:	0e 94 b8 32 	call	0x6570	; 0x6570 <OSuartGetCharWait>
			break;
	}
	memset(pTaskInfo->pBuf->bufferRx, 0, 1024);

	err = OS_ERR_NONE;		
	while(err == OS_ERR_NONE)
   151e6:	89 81       	ldd	r24, Y+1	; 0x01
   151e8:	88 23       	and	r24, r24
   151ea:	a9 f3       	breq	.-22     	; 0x151d6 <TurnerC3_PowerOn+0xac>
		c = (char) OSuartGetCharWait(pTaskInfo->portNum, 64, &err);		//wait .5 seconds -- basically clearing buffer
	}

	retval = SUCCESS;

	pTaskInfo->pBuf->powerOn = TRUE;
   151ec:	d8 01       	movw	r26, r16
   151ee:	14 96       	adiw	r26, 0x04	; 4
   151f0:	ed 91       	ld	r30, X+
   151f2:	fc 91       	ld	r31, X
   151f4:	15 97       	sbiw	r26, 0x05	; 5
   151f6:	eb 5f       	subi	r30, 0xFB	; 251
   151f8:	fa 4f       	sbci	r31, 0xFA	; 250
   151fa:	8f ef       	ldi	r24, 0xFF	; 255
   151fc:	80 83       	st	Z, r24
	pTaskInfo->pBuf->heartbeatFirstTime = TRUE;
   151fe:	eb 55       	subi	r30, 0x5B	; 91
   15200:	ff 4f       	sbci	r31, 0xFF	; 255
   15202:	80 83       	st	Z, r24
//	pTaskInfo->pBuf->heartbeatSecondTime = FALSE;
	pTaskInfo->pBuf->heartbeatCount = 0;
   15204:	32 96       	adiw	r30, 0x02	; 2
   15206:	10 82       	st	Z, r1
   15208:	11 82       	std	Z+1, r1	; 0x01
   1520a:	12 82       	std	Z+2, r1	; 0x02
   1520c:	13 82       	std	Z+3, r1	; 0x03

	return retval;
}
   1520e:	0f 90       	pop	r0
   15210:	cf 91       	pop	r28
   15212:	df 91       	pop	r29
   15214:	1f 91       	pop	r17
   15216:	0f 91       	pop	r16
   15218:	ff 90       	pop	r15
   1521a:	ef 90       	pop	r14
   1521c:	08 95       	ret

0001521e <TurnerC3_Rx_Len>:
	return retval;
}


uint8_t TurnerC3_Rx_Len(PTURNER_C3_TASK pTaskInfo, char* pBuffer, uint16_t* pLen, uint16_t maxLen, uint16_t maxTimeout)
{
   1521e:	6f 92       	push	r6
   15220:	7f 92       	push	r7
   15222:	8f 92       	push	r8
   15224:	9f 92       	push	r9
   15226:	af 92       	push	r10
   15228:	bf 92       	push	r11
   1522a:	cf 92       	push	r12
   1522c:	df 92       	push	r13
   1522e:	ef 92       	push	r14
   15230:	ff 92       	push	r15
   15232:	0f 93       	push	r16
   15234:	1f 93       	push	r17
   15236:	df 93       	push	r29
   15238:	cf 93       	push	r28
   1523a:	0f 92       	push	r0
   1523c:	cd b7       	in	r28, 0x3d	; 61
   1523e:	de b7       	in	r29, 0x3e	; 62
   15240:	4c 01       	movw	r8, r24
   15242:	5b 01       	movw	r10, r22
   15244:	7a 01       	movw	r14, r20
   15246:	39 01       	movw	r6, r18
   15248:	b8 01       	movw	r22, r16
	uint8_t retval = FAIL;
	char* pChar = pBuffer;
	uint16_t count = 0;
	uint8_t err = 0;
   1524a:	19 82       	std	Y+1, r1	; 0x01

	*pChar = (char) OSuartGetCharWait(pTaskInfo->portNum, maxTimeout, &err);	//Wait up to maxtimeout seconds for characters (first line has delay in it)
   1524c:	fc 01       	movw	r30, r24
   1524e:	81 81       	ldd	r24, Z+1	; 0x01
   15250:	6e 01       	movw	r12, r28
   15252:	08 94       	sec
   15254:	c1 1c       	adc	r12, r1
   15256:	d1 1c       	adc	r13, r1
   15258:	a6 01       	movw	r20, r12
   1525a:	0e 94 b8 32 	call	0x6570	; 0x6570 <OSuartGetCharWait>
   1525e:	f5 01       	movw	r30, r10
   15260:	80 83       	st	Z, r24
			
	if(err != OS_ERR_NONE)
   15262:	89 81       	ldd	r24, Y+1	; 0x01
   15264:	88 23       	and	r24, r24
   15266:	19 f4       	brne	.+6      	; 0x1526e <TurnerC3_Rx_Len+0x50>
   15268:	01 e0       	ldi	r16, 0x01	; 1
   1526a:	10 e0       	ldi	r17, 0x00	; 0
   1526c:	19 c0       	rjmp	.+50     	; 0x152a0 <TurnerC3_Rx_Len+0x82>
	{
		*pLen = count;
   1526e:	f7 01       	movw	r30, r14
   15270:	11 82       	std	Z+1, r1	; 0x01
   15272:	10 82       	st	Z, r1
   15274:	11 c0       	rjmp	.+34     	; 0x15298 <TurnerC3_Rx_Len+0x7a>
	pChar++;
	count++;

	while(count<maxLen)
	{
		*pChar = (char) OSuartGetCharWait(pTaskInfo->portNum, 32, &err);	//Wait up to 0.5 seconds for characters (first line has delay in it)
   15276:	f4 01       	movw	r30, r8
   15278:	81 81       	ldd	r24, Z+1	; 0x01
   1527a:	60 e2       	ldi	r22, 0x20	; 32
   1527c:	70 e0       	ldi	r23, 0x00	; 0
   1527e:	a6 01       	movw	r20, r12
   15280:	0e 94 b8 32 	call	0x6570	; 0x6570 <OSuartGetCharWait>
   15284:	f5 01       	movw	r30, r10
   15286:	e0 0f       	add	r30, r16
   15288:	f1 1f       	adc	r31, r17
   1528a:	80 83       	st	Z, r24
			
		if(err != OS_ERR_NONE)
   1528c:	89 81       	ldd	r24, Y+1	; 0x01
   1528e:	88 23       	and	r24, r24
   15290:	29 f0       	breq	.+10     	; 0x1529c <TurnerC3_Rx_Len+0x7e>
		{
			*pLen = count;
   15292:	f7 01       	movw	r30, r14
   15294:	11 83       	std	Z+1, r17	; 0x01
   15296:	00 83       	st	Z, r16
   15298:	80 e0       	ldi	r24, 0x00	; 0
   1529a:	09 c0       	rjmp	.+18     	; 0x152ae <TurnerC3_Rx_Len+0x90>
			return retval;
		}

		pChar++;
		count++;
   1529c:	0f 5f       	subi	r16, 0xFF	; 255
   1529e:	1f 4f       	sbci	r17, 0xFF	; 255
	}

	pChar++;
	count++;

	while(count<maxLen)
   152a0:	06 15       	cp	r16, r6
   152a2:	17 05       	cpc	r17, r7
   152a4:	40 f3       	brcs	.-48     	; 0x15276 <TurnerC3_Rx_Len+0x58>
		}

		pChar++;
		count++;
	}
	*pLen = count;
   152a6:	f7 01       	movw	r30, r14
   152a8:	11 83       	std	Z+1, r17	; 0x01
   152aa:	00 83       	st	Z, r16
   152ac:	8f ef       	ldi	r24, 0xFF	; 255
	retval = SUCCESS;

	return retval;
}
   152ae:	0f 90       	pop	r0
   152b0:	cf 91       	pop	r28
   152b2:	df 91       	pop	r29
   152b4:	1f 91       	pop	r17
   152b6:	0f 91       	pop	r16
   152b8:	ff 90       	pop	r15
   152ba:	ef 90       	pop	r14
   152bc:	df 90       	pop	r13
   152be:	cf 90       	pop	r12
   152c0:	bf 90       	pop	r11
   152c2:	af 90       	pop	r10
   152c4:	9f 90       	pop	r9
   152c6:	8f 90       	pop	r8
   152c8:	7f 90       	pop	r7
   152ca:	6f 90       	pop	r6
   152cc:	08 95       	ret

000152ce <ThreadSafeStrTok>:
	return retval;
}


static char* ThreadSafeStrTok(char** context, char* sep)
{
   152ce:	ef 92       	push	r14
   152d0:	ff 92       	push	r15
   152d2:	0f 93       	push	r16
   152d4:	1f 93       	push	r17
   152d6:	cf 93       	push	r28
   152d8:	df 93       	push	r29
   152da:	8c 01       	movw	r16, r24
   152dc:	7b 01       	movw	r14, r22
	if (!context || !*context) return "";
   152de:	00 97       	sbiw	r24, 0x00	; 0
   152e0:	c1 f0       	breq	.+48     	; 0x15312 <ThreadSafeStrTok+0x44>
   152e2:	dc 01       	movw	r26, r24
   152e4:	cd 91       	ld	r28, X+
   152e6:	dc 91       	ld	r29, X
   152e8:	20 97       	sbiw	r28, 0x00	; 0
   152ea:	99 f0       	breq	.+38     	; 0x15312 <ThreadSafeStrTok+0x44>

	char* retval = &(*context)[strspn(*context, sep)];
   152ec:	ce 01       	movw	r24, r28
   152ee:	0e 94 77 f0 	call	0x1e0ee	; 0x1e0ee <strspn>
   152f2:	c8 0f       	add	r28, r24
   152f4:	d9 1f       	adc	r29, r25
	char* eos = &retval[strcspn(retval, sep)];
   152f6:	ce 01       	movw	r24, r28
   152f8:	b7 01       	movw	r22, r14
   152fa:	0e 94 40 f0 	call	0x1e080	; 0x1e080 <strcspn>
   152fe:	fe 01       	movw	r30, r28
   15300:	e8 0f       	add	r30, r24
   15302:	f9 1f       	adc	r31, r25

	if (*eos) *eos++ = '\0';
   15304:	80 81       	ld	r24, Z
   15306:	81 11       	cpse	r24, r1
   15308:	11 92       	st	Z+, r1

	*context = eos;
   1530a:	d8 01       	movw	r26, r16
   1530c:	ed 93       	st	X+, r30
   1530e:	fc 93       	st	X, r31
   15310:	02 c0       	rjmp	.+4      	; 0x15316 <ThreadSafeStrTok+0x48>
	return retval;
   15312:	ce ed       	ldi	r28, 0xDE	; 222
   15314:	d4 e0       	ldi	r29, 0x04	; 4
}
   15316:	ce 01       	movw	r24, r28
   15318:	df 91       	pop	r29
   1531a:	cf 91       	pop	r28
   1531c:	1f 91       	pop	r17
   1531e:	0f 91       	pop	r16
   15320:	ff 90       	pop	r15
   15322:	ef 90       	pop	r14
   15324:	08 95       	ret

00015326 <TurnerC3_QueueFile>:
}



uint8_t TurnerC3_QueueFile(PTURNER_C3_TASK pTaskInfo, uint32_t fileID)
{
   15326:	8f 92       	push	r8
   15328:	9f 92       	push	r9
   1532a:	af 92       	push	r10
   1532c:	bf 92       	push	r11
   1532e:	cf 92       	push	r12
   15330:	df 92       	push	r13
   15332:	ef 92       	push	r14
   15334:	ff 92       	push	r15
   15336:	0f 93       	push	r16
   15338:	1f 93       	push	r17
   1533a:	df 93       	push	r29
   1533c:	cf 93       	push	r28
   1533e:	cd b7       	in	r28, 0x3d	; 61
   15340:	de b7       	in	r29, 0x3e	; 62
   15342:	62 97       	sbiw	r28, 0x12	; 18
   15344:	0f b6       	in	r0, 0x3f	; 63
   15346:	f8 94       	cli
   15348:	de bf       	out	0x3e, r29	; 62
   1534a:	0f be       	out	0x3f, r0	; 63
   1534c:	cd bf       	out	0x3d, r28	; 61
   1534e:	4c 01       	movw	r8, r24
   15350:	5a 01       	movw	r10, r20
   15352:	6b 01       	movw	r12, r22
	uint8_t retval = FAIL;
	PFS_REPORT pReport;
	uint8_t err = 0;
   15354:	19 82       	std	Y+1, r1	; 0x01
	tm* dateTime;
	time_t time;

	OSMutexPend(pMutexFloatQueue, INFINITE, &err);
   15356:	80 91 51 19 	lds	r24, 0x1951
   1535a:	90 91 52 19 	lds	r25, 0x1952
   1535e:	60 e0       	ldi	r22, 0x00	; 0
   15360:	70 e0       	ldi	r23, 0x00	; 0
   15362:	ae 01       	movw	r20, r28
   15364:	4f 5f       	subi	r20, 0xFF	; 255
   15366:	5f 4f       	sbci	r21, 0xFF	; 255
   15368:	0e 94 c2 28 	call	0x5184	; 0x5184 <OSMutexPend>

	pReport = (PFS_REPORT)&(txFloatData[headFloatTx]);
   1536c:	80 91 93 07 	lds	r24, 0x0793
   15370:	90 e0       	ldi	r25, 0x00	; 0
   15372:	26 e3       	ldi	r18, 0x36	; 54
   15374:	31 e0       	ldi	r19, 0x01	; 1
   15376:	82 9f       	mul	r24, r18
   15378:	80 01       	movw	r16, r0
   1537a:	83 9f       	mul	r24, r19
   1537c:	10 0d       	add	r17, r0
   1537e:	92 9f       	mul	r25, r18
   15380:	10 0d       	add	r17, r0
   15382:	11 24       	eor	r1, r1
   15384:	03 5a       	subi	r16, 0xA3	; 163
   15386:	16 45       	sbci	r17, 0x56	; 86

	memset(pReport, 0, sizeof(FS_REPORT));
   15388:	8a e5       	ldi	r24, 0x5A	; 90
   1538a:	d8 01       	movw	r26, r16
   1538c:	1d 92       	st	X+, r1
   1538e:	8a 95       	dec	r24
   15390:	e9 f7       	brne	.-6      	; 0x1538c <TurnerC3_QueueFile+0x66>

	pReport->headers.length  = sizeof(FS_REPORT) + CRC16_SIZE;
   15392:	8c e5       	ldi	r24, 0x5C	; 92
   15394:	90 e0       	ldi	r25, 0x00	; 0
   15396:	f8 01       	movw	r30, r16
   15398:	91 83       	std	Z+1, r25	; 0x01
   1539a:	80 83       	st	Z, r24
	pReport->headers.destination = FLOAT_FS_INTERFACE;
   1539c:	85 e0       	ldi	r24, 0x05	; 5
   1539e:	90 e0       	ldi	r25, 0x00	; 0
   153a0:	93 83       	std	Z+3, r25	; 0x03
   153a2:	82 83       	std	Z+2, r24	; 0x02
	pReport->type = NEW_FILE_AVAILABLE;
   153a4:	80 e6       	ldi	r24, 0x60	; 96
   153a6:	84 87       	std	Z+12, r24	; 0x0c

	time=gettime();
   153a8:	0e 94 3c 34 	call	0x6878	; 0x6878 <gettime>
   153ac:	6a 83       	std	Y+2, r22	; 0x02
   153ae:	7b 83       	std	Y+3, r23	; 0x03
   153b0:	8c 83       	std	Y+4, r24	; 0x04
   153b2:	9d 83       	std	Y+5, r25	; 0x05

	//Need to fill in these values appropriately
	pReport->newFile.fileSize = fileOutSize[pTaskInfo->portNum];
   153b4:	d4 01       	movw	r26, r8
   153b6:	11 96       	adiw	r26, 0x01	; 1
   153b8:	ec 91       	ld	r30, X
   153ba:	f0 e0       	ldi	r31, 0x00	; 0
   153bc:	ee 0f       	add	r30, r30
   153be:	ff 1f       	adc	r31, r31
   153c0:	ef 5a       	subi	r30, 0xAF	; 175
   153c2:	f2 46       	sbci	r31, 0x62	; 98
   153c4:	80 81       	ld	r24, Z
   153c6:	91 81       	ldd	r25, Z+1	; 0x01
   153c8:	a0 e0       	ldi	r26, 0x00	; 0
   153ca:	b0 e0       	ldi	r27, 0x00	; 0
   153cc:	f8 01       	movw	r30, r16
   153ce:	82 8f       	std	Z+26, r24	; 0x1a
   153d0:	93 8f       	std	Z+27, r25	; 0x1b
   153d2:	a4 8f       	std	Z+28, r26	; 0x1c
   153d4:	b5 8f       	std	Z+29, r27	; 0x1d
	dateTime = gmtime(&time);
   153d6:	b2 e0       	ldi	r27, 0x02	; 2
   153d8:	eb 2e       	mov	r14, r27
   153da:	f1 2c       	mov	r15, r1
   153dc:	ec 0e       	add	r14, r28
   153de:	fd 1e       	adc	r15, r29
   153e0:	c7 01       	movw	r24, r14
   153e2:	0e 94 32 35 	call	0x6a64	; 0x6a64 <gmtime>
   153e6:	fc 01       	movw	r30, r24
	pReport->newFile.creationDate.day = dateTime->tm_mday;
   153e8:	86 81       	ldd	r24, Z+6	; 0x06
   153ea:	d8 01       	movw	r26, r16
   153ec:	92 96       	adiw	r26, 0x22	; 34
   153ee:	8c 93       	st	X, r24
   153f0:	92 97       	sbiw	r26, 0x22	; 34
	pReport->newFile.creationDate.hour = dateTime->tm_hour;
   153f2:	84 81       	ldd	r24, Z+4	; 0x04
   153f4:	5e 96       	adiw	r26, 0x1e	; 30
   153f6:	8c 93       	st	X, r24
   153f8:	5e 97       	sbiw	r26, 0x1e	; 30
	pReport->newFile.creationDate.minute = dateTime->tm_min;
   153fa:	82 81       	ldd	r24, Z+2	; 0x02
   153fc:	5f 96       	adiw	r26, 0x1f	; 31
   153fe:	8c 93       	st	X, r24
   15400:	5f 97       	sbiw	r26, 0x1f	; 31
	pReport->newFile.creationDate.month = dateTime->tm_mon + 1;
   15402:	80 85       	ldd	r24, Z+8	; 0x08
   15404:	8f 5f       	subi	r24, 0xFF	; 255
   15406:	91 96       	adiw	r26, 0x21	; 33
   15408:	8c 93       	st	X, r24
   1540a:	91 97       	sbiw	r26, 0x21	; 33
	pReport->newFile.creationDate.second = dateTime->tm_sec;
   1540c:	80 81       	ld	r24, Z
   1540e:	90 96       	adiw	r26, 0x20	; 32
   15410:	8c 93       	st	X, r24
   15412:	90 97       	sbiw	r26, 0x20	; 32
	pReport->newFile.creationDate.year = (uint8_t)(dateTime->tm_year - 100);
   15414:	82 85       	ldd	r24, Z+10	; 0x0a
   15416:	84 56       	subi	r24, 0x64	; 100
   15418:	93 96       	adiw	r26, 0x23	; 35
   1541a:	8c 93       	st	X, r24
	dateTime = gmtime(&time);
   1541c:	c7 01       	movw	r24, r14
   1541e:	0e 94 32 35 	call	0x6a64	; 0x6a64 <gmtime>
   15422:	fc 01       	movw	r30, r24
	pReport->newFile.modifiedDate.day = dateTime->tm_mday;
   15424:	86 81       	ldd	r24, Z+6	; 0x06
   15426:	d8 01       	movw	r26, r16
   15428:	98 96       	adiw	r26, 0x28	; 40
   1542a:	8c 93       	st	X, r24
   1542c:	98 97       	sbiw	r26, 0x28	; 40
	pReport->newFile.modifiedDate.hour = dateTime->tm_hour;
   1542e:	84 81       	ldd	r24, Z+4	; 0x04
   15430:	94 96       	adiw	r26, 0x24	; 36
   15432:	8c 93       	st	X, r24
   15434:	94 97       	sbiw	r26, 0x24	; 36
	pReport->newFile.modifiedDate.minute = dateTime->tm_min;
   15436:	82 81       	ldd	r24, Z+2	; 0x02
   15438:	95 96       	adiw	r26, 0x25	; 37
   1543a:	8c 93       	st	X, r24
   1543c:	95 97       	sbiw	r26, 0x25	; 37
	pReport->newFile.modifiedDate.month = dateTime->tm_mon + 1;
   1543e:	80 85       	ldd	r24, Z+8	; 0x08
   15440:	8f 5f       	subi	r24, 0xFF	; 255
   15442:	97 96       	adiw	r26, 0x27	; 39
   15444:	8c 93       	st	X, r24
   15446:	97 97       	sbiw	r26, 0x27	; 39
	pReport->newFile.modifiedDate.second = dateTime->tm_sec;
   15448:	80 81       	ld	r24, Z
   1544a:	96 96       	adiw	r26, 0x26	; 38
   1544c:	8c 93       	st	X, r24
   1544e:	96 97       	sbiw	r26, 0x26	; 38
	pReport->newFile.modifiedDate.year = (uint8_t)(dateTime->tm_year - 100);
   15450:	82 85       	ldd	r24, Z+10	; 0x0a
   15452:	84 56       	subi	r24, 0x64	; 100
   15454:	99 96       	adiw	r26, 0x29	; 41
   15456:	8c 93       	st	X, r24
   15458:	99 97       	sbiw	r26, 0x29	; 41

	pReport->newFile.fileAttributes = 0;
   1545a:	9a 96       	adiw	r26, 0x2a	; 42
   1545c:	1c 92       	st	X, r1
	memset(&pReport->newFile.calculatedMD5, 0, sizeof(MD5));
   1545e:	c8 01       	movw	r24, r16
   15460:	cf 96       	adiw	r24, 0x3f	; 63
   15462:	20 e1       	ldi	r18, 0x10	; 16
   15464:	dc 01       	movw	r26, r24
   15466:	82 2f       	mov	r24, r18
   15468:	1d 92       	st	X+, r1
   1546a:	8a 95       	dec	r24
   1546c:	e9 f7       	brne	.-6      	; 0x15468 <TurnerC3_QueueFile+0x142>
	memset(&pReport->newFile.providedMD5, 0, sizeof(MD5));
   1546e:	c8 01       	movw	r24, r16
   15470:	8d 96       	adiw	r24, 0x2d	; 45
   15472:	dc 01       	movw	r26, r24
   15474:	1d 92       	st	X+, r1
   15476:	2a 95       	dec	r18
   15478:	e9 f7       	brne	.-6      	; 0x15474 <TurnerC3_QueueFile+0x14e>
	pReport->newFile.calculatedCRC = 0;
   1547a:	f8 01       	movw	r30, r16
   1547c:	16 ae       	std	Z+62, r1	; 0x3e
   1547e:	15 ae       	std	Z+61, r1	; 0x3d
	pReport->newFile.providedCRC = 0;
   15480:	14 a6       	std	Z+44, r1	; 0x2c
   15482:	13 a6       	std	Z+43, r1	; 0x2b
	pReport->newFile.storageControllerAddress = mainTaskAddress | pTaskInfo->portNum;
   15484:	d4 01       	movw	r26, r8
   15486:	11 96       	adiw	r26, 0x01	; 1
   15488:	8c 91       	ld	r24, X
   1548a:	90 e0       	ldi	r25, 0x00	; 0
   1548c:	20 91 e4 03 	lds	r18, 0x03E4
   15490:	30 91 e5 03 	lds	r19, 0x03E5
   15494:	82 2b       	or	r24, r18
   15496:	93 2b       	or	r25, r19
   15498:	96 87       	std	Z+14, r25	; 0x0e
   1549a:	85 87       	std	Z+13, r24	; 0x0d

	char fileName[13];
	sprintf(fileName, "%.8lX.txt", fileID);
   1549c:	ed b7       	in	r30, 0x3d	; 61
   1549e:	fe b7       	in	r31, 0x3e	; 62
   154a0:	38 97       	sbiw	r30, 0x08	; 8
   154a2:	0f b6       	in	r0, 0x3f	; 63
   154a4:	f8 94       	cli
   154a6:	fe bf       	out	0x3e, r31	; 62
   154a8:	0f be       	out	0x3f, r0	; 63
   154aa:	ed bf       	out	0x3d, r30	; 61
   154ac:	31 96       	adiw	r30, 0x01	; 1
   154ae:	a6 e0       	ldi	r26, 0x06	; 6
   154b0:	ea 2e       	mov	r14, r26
   154b2:	f1 2c       	mov	r15, r1
   154b4:	ec 0e       	add	r14, r28
   154b6:	fd 1e       	adc	r15, r29
   154b8:	ad b7       	in	r26, 0x3d	; 61
   154ba:	be b7       	in	r27, 0x3e	; 62
   154bc:	12 96       	adiw	r26, 0x02	; 2
   154be:	fc 92       	st	X, r15
   154c0:	ee 92       	st	-X, r14
   154c2:	11 97       	sbiw	r26, 0x01	; 1
   154c4:	8f ed       	ldi	r24, 0xDF	; 223
   154c6:	94 e0       	ldi	r25, 0x04	; 4
   154c8:	93 83       	std	Z+3, r25	; 0x03
   154ca:	82 83       	std	Z+2, r24	; 0x02
   154cc:	a4 82       	std	Z+4, r10	; 0x04
   154ce:	b5 82       	std	Z+5, r11	; 0x05
   154d0:	c6 82       	std	Z+6, r12	; 0x06
   154d2:	d7 82       	std	Z+7, r13	; 0x07
   154d4:	0e 94 2d f1 	call	0x1e25a	; 0x1e25a <sprintf>

	DotToPad(pReport->newFile.fileName, fileName);
   154d8:	ed b7       	in	r30, 0x3d	; 61
   154da:	fe b7       	in	r31, 0x3e	; 62
   154dc:	38 96       	adiw	r30, 0x08	; 8
   154de:	0f b6       	in	r0, 0x3f	; 63
   154e0:	f8 94       	cli
   154e2:	fe bf       	out	0x3e, r31	; 62
   154e4:	0f be       	out	0x3f, r0	; 63
   154e6:	ed bf       	out	0x3d, r30	; 61
   154e8:	c8 01       	movw	r24, r16
   154ea:	0f 96       	adiw	r24, 0x0f	; 15
   154ec:	b7 01       	movw	r22, r14
   154ee:	0e 94 87 3e 	call	0x7d0e	; 0x7d0e <DotToPad>

	(headFloatTx < (MAX_FLOAT_BUFFERS - 1)) ? (headFloatTx++) : (headFloatTx = 0);
   154f2:	80 91 93 07 	lds	r24, 0x0793
   154f6:	87 30       	cpi	r24, 0x07	; 7
   154f8:	20 f4       	brcc	.+8      	; 0x15502 <TurnerC3_QueueFile+0x1dc>
   154fa:	8f 5f       	subi	r24, 0xFF	; 255
   154fc:	80 93 93 07 	sts	0x0793, r24
   15500:	02 c0       	rjmp	.+4      	; 0x15506 <TurnerC3_QueueFile+0x1e0>
   15502:	10 92 93 07 	sts	0x0793, r1
	
	if(headFloatTx == tailFloatTx)
   15506:	90 91 93 07 	lds	r25, 0x0793
   1550a:	80 91 94 07 	lds	r24, 0x0794
   1550e:	98 17       	cp	r25, r24
   15510:	41 f4       	brne	.+16     	; 0x15522 <TurnerC3_QueueFile+0x1fc>
	{
		(tailFloatTx < (MAX_FLOAT_BUFFERS - 1)) ? (tailFloatTx++) : (tailFloatTx = 0);
   15512:	97 30       	cpi	r25, 0x07	; 7
   15514:	20 f4       	brcc	.+8      	; 0x1551e <TurnerC3_QueueFile+0x1f8>
   15516:	9f 5f       	subi	r25, 0xFF	; 255
   15518:	90 93 94 07 	sts	0x0794, r25
   1551c:	02 c0       	rjmp	.+4      	; 0x15522 <TurnerC3_QueueFile+0x1fc>
   1551e:	10 92 94 07 	sts	0x0794, r1
	}

	OSMutexPost(pMutexFloatQueue);
   15522:	80 91 51 19 	lds	r24, 0x1951
   15526:	90 91 52 19 	lds	r25, 0x1952
   1552a:	0e 94 36 27 	call	0x4e6c	; 0x4e6c <OSMutexPost>

	return retval;
}
   1552e:	80 e0       	ldi	r24, 0x00	; 0
   15530:	62 96       	adiw	r28, 0x12	; 18
   15532:	0f b6       	in	r0, 0x3f	; 63
   15534:	f8 94       	cli
   15536:	de bf       	out	0x3e, r29	; 62
   15538:	0f be       	out	0x3f, r0	; 63
   1553a:	cd bf       	out	0x3d, r28	; 61
   1553c:	cf 91       	pop	r28
   1553e:	df 91       	pop	r29
   15540:	1f 91       	pop	r17
   15542:	0f 91       	pop	r16
   15544:	ff 90       	pop	r15
   15546:	ef 90       	pop	r14
   15548:	df 90       	pop	r13
   1554a:	cf 90       	pop	r12
   1554c:	bf 90       	pop	r11
   1554e:	af 90       	pop	r10
   15550:	9f 90       	pop	r9
   15552:	8f 90       	pop	r8
   15554:	08 95       	ret

00015556 <TurnerC3_QueueConsoleResponse>:
	return;
}


void TurnerC3_QueueConsoleResponse(PTURNER_C3_TASK pTaskInfo)
{
   15556:	ef 92       	push	r14
   15558:	ff 92       	push	r15
   1555a:	0f 93       	push	r16
   1555c:	1f 93       	push	r17
   1555e:	df 93       	push	r29
   15560:	cf 93       	push	r28
   15562:	0f 92       	push	r0
   15564:	cd b7       	in	r28, 0x3d	; 61
   15566:	de b7       	in	r29, 0x3e	; 62
   15568:	7c 01       	movw	r14, r24
	PCONSOLE_ACK_XMIT_2 pReport;
	uint8_t err = 0;
   1556a:	19 82       	std	Y+1, r1	; 0x01
	char* pData;

	OSMutexPend(pMutexFloatQueue, INFINITE, &err);
   1556c:	80 91 51 19 	lds	r24, 0x1951
   15570:	90 91 52 19 	lds	r25, 0x1952
   15574:	60 e0       	ldi	r22, 0x00	; 0
   15576:	70 e0       	ldi	r23, 0x00	; 0
   15578:	ae 01       	movw	r20, r28
   1557a:	4f 5f       	subi	r20, 0xFF	; 255
   1557c:	5f 4f       	sbci	r21, 0xFF	; 255
   1557e:	0e 94 c2 28 	call	0x5184	; 0x5184 <OSMutexPend>

	pReport = (PCONSOLE_ACK_XMIT_2)&(txFloatAck[headFloatAckTx]);
   15582:	80 91 95 07 	lds	r24, 0x0795
   15586:	90 e0       	ldi	r25, 0x00	; 0
   15588:	26 e3       	ldi	r18, 0x36	; 54
   1558a:	31 e0       	ldi	r19, 0x01	; 1
   1558c:	82 9f       	mul	r24, r18
   1558e:	80 01       	movw	r16, r0
   15590:	83 9f       	mul	r24, r19
   15592:	10 0d       	add	r17, r0
   15594:	92 9f       	mul	r25, r18
   15596:	10 0d       	add	r17, r0
   15598:	11 24       	eor	r1, r1
   1559a:	03 5f       	subi	r16, 0xF3	; 243
   1559c:	1c 44       	sbci	r17, 0x4C	; 76
	pData = (char*)pReport;

	pReport->comm.headers.destination = FLOAT_TASK_FORWARD_MESSAGE;		//pTaskInfo->pBuf->responseInfo.source;
   1559e:	80 e2       	ldi	r24, 0x20	; 32
   155a0:	90 e0       	ldi	r25, 0x00	; 0
   155a2:	d8 01       	movw	r26, r16
   155a4:	13 96       	adiw	r26, 0x03	; 3
   155a6:	9c 93       	st	X, r25
   155a8:	8e 93       	st	-X, r24
   155aa:	12 97       	sbiw	r26, 0x02	; 2

	pReport->comm.fwdInfo.msgFormat = MSG_FORMAT_SHIP_TO_SHORE;
   155ac:	82 e0       	ldi	r24, 0x02	; 2
   155ae:	1c 96       	adiw	r26, 0x0c	; 12
   155b0:	8c 93       	st	X, r24
	pReport->comm.fwdInfo.destination = pTaskInfo->pBuf->responseInfo.source;
   155b2:	d7 01       	movw	r26, r14
   155b4:	14 96       	adiw	r26, 0x04	; 4
   155b6:	ed 91       	ld	r30, X+
   155b8:	fc 91       	ld	r31, X
   155ba:	15 97       	sbiw	r26, 0x05	; 5
   155bc:	e3 5a       	subi	r30, 0xA3	; 163
   155be:	f8 4f       	sbci	r31, 0xF8	; 248
   155c0:	81 91       	ld	r24, Z+
   155c2:	91 91       	ld	r25, Z+
   155c4:	d8 01       	movw	r26, r16
   155c6:	1e 96       	adiw	r26, 0x0e	; 14
   155c8:	9c 93       	st	X, r25
   155ca:	8e 93       	st	-X, r24
   155cc:	1d 97       	sbiw	r26, 0x0d	; 13
	pReport->comm.fwdInfo.source = mainTaskAddress | pTaskInfo->taskID;
   155ce:	d7 01       	movw	r26, r14
   155d0:	8c 91       	ld	r24, X
   155d2:	90 e0       	ldi	r25, 0x00	; 0
   155d4:	20 91 e4 03 	lds	r18, 0x03E4
   155d8:	30 91 e5 03 	lds	r19, 0x03E5
   155dc:	82 2b       	or	r24, r18
   155de:	93 2b       	or	r25, r19
   155e0:	d8 01       	movw	r26, r16
   155e2:	50 96       	adiw	r26, 0x10	; 16
   155e4:	9c 93       	st	X, r25
   155e6:	8e 93       	st	-X, r24
   155e8:	1f 97       	sbiw	r26, 0x0f	; 15

	if(pTaskInfo->pBuf->responseInfo.status < CONSOLE_RESPONSE_UNKNOWN_CMD)
   155ea:	20 81       	ld	r18, Z
   155ec:	ef 55       	subi	r30, 0x5F	; 95
   155ee:	f7 40       	sbci	r31, 0x07	; 7
   155f0:	2a 30       	cpi	r18, 0x0A	; 10
   155f2:	b0 f5       	brcc	.+108    	; 0x15660 <TurnerC3_QueueConsoleResponse+0x10a>
	{
		pReport->comm.headers.length = sizeof(PIB_DATA_FORWARD_MESSAGE) + sizeof(CONSOLE_ACK) + pTaskInfo->pBuf->responseInfo.length + CRC16_SIZE;
   155f4:	ef 59       	subi	r30, 0x9F	; 159
   155f6:	f8 4f       	sbci	r31, 0xF8	; 248
   155f8:	40 81       	ld	r20, Z
   155fa:	50 e0       	ldi	r21, 0x00	; 0
   155fc:	42 5e       	subi	r20, 0xE2	; 226
   155fe:	5f 4f       	sbci	r21, 0xFF	; 255
   15600:	11 96       	adiw	r26, 0x01	; 1
   15602:	5c 93       	st	X, r21
   15604:	4e 93       	st	-X, r20
   15606:	4e 51       	subi	r20, 0x1E	; 30
   15608:	50 40       	sbci	r21, 0x00	; 0

		pReport->comm.iridiumInfo.headerICD.type = ACK_CONSOLE_DATA;
   1560a:	8d e3       	ldi	r24, 0x3D	; 61
   1560c:	51 96       	adiw	r26, 0x11	; 17
   1560e:	8c 93       	st	X, r24
   15610:	51 97       	sbiw	r26, 0x11	; 17

		pReport->consoleAck.len = pTaskInfo->pBuf->responseInfo.length;
   15612:	5b 96       	adiw	r26, 0x1b	; 27
   15614:	5c 93       	st	X, r21
   15616:	4e 93       	st	-X, r20
   15618:	5a 97       	sbiw	r26, 0x1a	; 26
		pReport->consoleAck.disposition = pTaskInfo->pBuf->responseInfo.status;
   1561a:	59 96       	adiw	r26, 0x19	; 25
   1561c:	2c 93       	st	X, r18
   1561e:	59 97       	sbiw	r26, 0x19	; 25
		pReport->consoleAck.format = pTaskInfo->pBuf->responseInfo.format;
   15620:	82 91       	ld	r24, -Z
   15622:	58 96       	adiw	r26, 0x18	; 24
   15624:	8c 93       	st	X, r24
		pData = pData + sizeof(PIB_DATA_FORWARD_MESSAGE) + sizeof(CONSOLE_ACK);
		memcpy(pData, pTaskInfo->pBuf->consoleResponse, pTaskInfo->pBuf->responseInfo.length);
   15626:	98 01       	movw	r18, r16
   15628:	24 5e       	subi	r18, 0xE4	; 228
   1562a:	3f 4f       	sbci	r19, 0xFF	; 255
   1562c:	36 96       	adiw	r30, 0x06	; 6
   1562e:	c9 01       	movw	r24, r18
   15630:	bf 01       	movw	r22, r30
   15632:	50 e0       	ldi	r21, 0x00	; 0
   15634:	0e 94 1c f0 	call	0x1e038	; 0x1e038 <memcpy>

		memcpy(dbgMsg, pTaskInfo->pBuf->consoleResponse, pTaskInfo->pBuf->responseInfo.length+1); SEND_MSG;
   15638:	d7 01       	movw	r26, r14
   1563a:	14 96       	adiw	r26, 0x04	; 4
   1563c:	ed 91       	ld	r30, X+
   1563e:	fc 91       	ld	r31, X
   15640:	15 97       	sbiw	r26, 0x05	; 5
   15642:	43 ef       	ldi	r20, 0xF3	; 243
   15644:	58 e1       	ldi	r21, 0x18	; 24
   15646:	ef 59       	subi	r30, 0x9F	; 159
   15648:	f8 4f       	sbci	r31, 0xF8	; 248
   1564a:	20 81       	ld	r18, Z
   1564c:	30 e0       	ldi	r19, 0x00	; 0
   1564e:	2f 5f       	subi	r18, 0xFF	; 255
   15650:	3f 4f       	sbci	r19, 0xFF	; 255
   15652:	35 96       	adiw	r30, 0x05	; 5
   15654:	ca 01       	movw	r24, r20
   15656:	bf 01       	movw	r22, r30
   15658:	a9 01       	movw	r20, r18
   1565a:	0e 94 1c f0 	call	0x1e038	; 0x1e038 <memcpy>
   1565e:	0c c0       	rjmp	.+24     	; 0x15678 <TurnerC3_QueueConsoleResponse+0x122>
	}
	else
	{
		pReport->comm.headers.length = sizeof(PIB_DATA_FORWARD_MESSAGE) + sizeof(CONSOLE_NACK) + CRC16_SIZE;
   15660:	8d e1       	ldi	r24, 0x1D	; 29
   15662:	90 e0       	ldi	r25, 0x00	; 0
   15664:	f8 01       	movw	r30, r16
   15666:	91 83       	std	Z+1, r25	; 0x01
   15668:	80 83       	st	Z, r24
		pReport->comm.iridiumInfo.headerICD.type = NACK_CONSOLE_DATA;
   1566a:	86 e2       	ldi	r24, 0x26	; 38
   1566c:	81 8b       	std	Z+17, r24	; 0x11
		pReport->consoleNack.numDispositions = 1;
   1566e:	81 e0       	ldi	r24, 0x01	; 1
   15670:	90 e0       	ldi	r25, 0x00	; 0
   15672:	91 8f       	std	Z+25, r25	; 0x19
   15674:	80 8f       	std	Z+24, r24	; 0x18
		pReport->consoleNack.disposition[0] = pTaskInfo->pBuf->responseInfo.status;
   15676:	22 8f       	std	Z+26, r18	; 0x1a
	}

	pReport->comm.iridiumInfo.headerICD.packetID = pTaskInfo->pBuf->responseInfo.id;
   15678:	d7 01       	movw	r26, r14
   1567a:	14 96       	adiw	r26, 0x04	; 4
   1567c:	ed 91       	ld	r30, X+
   1567e:	fc 91       	ld	r31, X
   15680:	15 97       	sbiw	r26, 0x05	; 5
   15682:	ee 59       	subi	r30, 0x9E	; 158
   15684:	f8 4f       	sbci	r31, 0xF8	; 248
   15686:	80 81       	ld	r24, Z
   15688:	91 81       	ldd	r25, Z+1	; 0x01
   1568a:	a2 81       	ldd	r26, Z+2	; 0x02
   1568c:	b3 81       	ldd	r27, Z+3	; 0x03
   1568e:	f8 01       	movw	r30, r16
   15690:	82 8b       	std	Z+18, r24	; 0x12
   15692:	93 8b       	std	Z+19, r25	; 0x13
   15694:	a4 8b       	std	Z+20, r26	; 0x14
   15696:	b5 8b       	std	Z+21, r27	; 0x15
	pReport->comm.iridiumInfo.headerICD.size = pReport->comm.headers.length - sizeof(PIB_DATA_FORWARD_MESSAGE) - CRC16_SIZE;
   15698:	80 81       	ld	r24, Z
   1569a:	91 81       	ldd	r25, Z+1	; 0x01
   1569c:	4a 97       	sbiw	r24, 0x1a	; 26
   1569e:	97 8b       	std	Z+23, r25	; 0x17
   156a0:	86 8b       	std	Z+22, r24	; 0x16


	(headFloatAckTx < MAX_ACK_BUFFERS - 1) ? (headFloatAckTx++) : (headFloatAckTx = 0);
   156a2:	80 91 95 07 	lds	r24, 0x0795
   156a6:	83 30       	cpi	r24, 0x03	; 3
   156a8:	20 f4       	brcc	.+8      	; 0x156b2 <TurnerC3_QueueConsoleResponse+0x15c>
   156aa:	8f 5f       	subi	r24, 0xFF	; 255
   156ac:	80 93 95 07 	sts	0x0795, r24
   156b0:	02 c0       	rjmp	.+4      	; 0x156b6 <TurnerC3_QueueConsoleResponse+0x160>
   156b2:	10 92 95 07 	sts	0x0795, r1

	if(headFloatAckTx == tailFloatAckTx)
   156b6:	90 91 95 07 	lds	r25, 0x0795
   156ba:	80 91 96 07 	lds	r24, 0x0796
   156be:	98 17       	cp	r25, r24
   156c0:	41 f4       	brne	.+16     	; 0x156d2 <TurnerC3_QueueConsoleResponse+0x17c>
	{
		(tailFloatAckTx < MAX_ACK_BUFFERS - 1) ? (tailFloatAckTx++) : (tailFloatAckTx = 0);
   156c2:	93 30       	cpi	r25, 0x03	; 3
   156c4:	20 f4       	brcc	.+8      	; 0x156ce <TurnerC3_QueueConsoleResponse+0x178>
   156c6:	9f 5f       	subi	r25, 0xFF	; 255
   156c8:	90 93 96 07 	sts	0x0796, r25
   156cc:	02 c0       	rjmp	.+4      	; 0x156d2 <TurnerC3_QueueConsoleResponse+0x17c>
   156ce:	10 92 96 07 	sts	0x0796, r1
	}

	OSMutexPost(pMutexFloatQueue);
   156d2:	80 91 51 19 	lds	r24, 0x1951
   156d6:	90 91 52 19 	lds	r25, 0x1952
   156da:	0e 94 36 27 	call	0x4e6c	; 0x4e6c <OSMutexPost>

	return;
}
   156de:	0f 90       	pop	r0
   156e0:	cf 91       	pop	r28
   156e2:	df 91       	pop	r29
   156e4:	1f 91       	pop	r17
   156e6:	0f 91       	pop	r16
   156e8:	ff 90       	pop	r15
   156ea:	ef 90       	pop	r14
   156ec:	08 95       	ret

000156ee <TurnerC3_ASCIIReportXmit>:

	return retval;
}

uint8_t TurnerC3_ASCIIReportXmit(PTURNER_C3_TASK pTaskInfo, uint8_t len)
{
   156ee:	ef 92       	push	r14
   156f0:	ff 92       	push	r15
   156f2:	0f 93       	push	r16
   156f4:	1f 93       	push	r17
   156f6:	df 93       	push	r29
   156f8:	cf 93       	push	r28
   156fa:	0f 92       	push	r0
   156fc:	cd b7       	in	r28, 0x3d	; 61
   156fe:	de b7       	in	r29, 0x3e	; 62
   15700:	7c 01       	movw	r14, r24
   15702:	06 2f       	mov	r16, r22
	uint8_t retval = SUCCESS;
	uint8_t err = 0;
   15704:	19 82       	std	Y+1, r1	; 0x01
	PTURNER_C3_ASCII_REPORT_XMIT pReport = NULL;

	OSMutexPend(pMutexFloatQueue, INFINITE, &err);
   15706:	80 91 51 19 	lds	r24, 0x1951
   1570a:	90 91 52 19 	lds	r25, 0x1952
   1570e:	60 e0       	ldi	r22, 0x00	; 0
   15710:	70 e0       	ldi	r23, 0x00	; 0
   15712:	ae 01       	movw	r20, r28
   15714:	4f 5f       	subi	r20, 0xFF	; 255
   15716:	5f 4f       	sbci	r21, 0xFF	; 255
   15718:	0e 94 c2 28 	call	0x5184	; 0x5184 <OSMutexPend>

	pReport = (PTURNER_C3_ASCII_REPORT_XMIT)&(txFloatData[headFloatTx]);
   1571c:	80 91 93 07 	lds	r24, 0x0793
   15720:	90 e0       	ldi	r25, 0x00	; 0
   15722:	26 e3       	ldi	r18, 0x36	; 54
   15724:	31 e0       	ldi	r19, 0x01	; 1
   15726:	82 9f       	mul	r24, r18
   15728:	f0 01       	movw	r30, r0
   1572a:	83 9f       	mul	r24, r19
   1572c:	f0 0d       	add	r31, r0
   1572e:	92 9f       	mul	r25, r18
   15730:	f0 0d       	add	r31, r0
   15732:	11 24       	eor	r1, r1
   15734:	e3 5a       	subi	r30, 0xA3	; 163
   15736:	f6 45       	sbci	r31, 0x56	; 86

//	pReport->comm.headers.length  = sizeof(TURNER_C3_ASCII_REPORT_XMIT) + CRC16_SIZE;
	pReport->comm.headers.length  = sizeof(PIB_IRIDIUM_DATA_XMIT) + len + CRC16_SIZE;
   15738:	10 e0       	ldi	r17, 0x00	; 0
   1573a:	0f 5e       	subi	r16, 0xEF	; 239
   1573c:	1f 4f       	sbci	r17, 0xFF	; 255
   1573e:	11 83       	std	Z+1, r17	; 0x01
   15740:	00 83       	st	Z, r16
   15742:	01 51       	subi	r16, 0x11	; 17
   15744:	10 40       	sbci	r17, 0x00	; 0
	pReport->comm.headers.destination = FLOAT_IRIDIUM_INTERFACE;
   15746:	82 e0       	ldi	r24, 0x02	; 2
   15748:	90 e0       	ldi	r25, 0x00	; 0
   1574a:	93 83       	std	Z+3, r25	; 0x03
   1574c:	82 83       	std	Z+2, r24	; 0x02

	pReport->comm.iridiumInfo.structureType = 0x91;
   1574e:	81 e9       	ldi	r24, 0x91	; 145
   15750:	84 87       	std	Z+12, r24	; 0x0c
	pReport->comm.iridiumInfo.size = pReport->comm.headers.length - sizeof(PIB_IRIDIUM_DATA_XMIT) - CRC16_SIZE;
   15752:	16 87       	std	Z+14, r17	; 0x0e
   15754:	05 87       	std	Z+13, r16	; 0x0d


	memcpy(&(pReport->reportASCII), &(pTaskInfo->pBuf->reportASCII), sizeof(C3_ASCII_REPORT));
   15756:	d7 01       	movw	r26, r14
   15758:	14 96       	adiw	r26, 0x04	; 4
   1575a:	2d 91       	ld	r18, X+
   1575c:	3c 91       	ld	r19, X
   1575e:	15 97       	sbiw	r26, 0x05	; 5
   15760:	3f 96       	adiw	r30, 0x0f	; 15
   15762:	2d 5a       	subi	r18, 0xAD	; 173
   15764:	39 4f       	sbci	r19, 0xF9	; 249
   15766:	89 eb       	ldi	r24, 0xB9	; 185
   15768:	d9 01       	movw	r26, r18
   1576a:	0d 90       	ld	r0, X+
   1576c:	9d 01       	movw	r18, r26
   1576e:	01 92       	st	Z+, r0
   15770:	81 50       	subi	r24, 0x01	; 1
   15772:	d1 f7       	brne	.-12     	; 0x15768 <TurnerC3_ASCIIReportXmit+0x7a>


	(headFloatTx < MAX_FLOAT_BUFFERS - 1) ? (headFloatTx++) : (headFloatTx = 0);
   15774:	80 91 93 07 	lds	r24, 0x0793
   15778:	87 30       	cpi	r24, 0x07	; 7
   1577a:	20 f4       	brcc	.+8      	; 0x15784 <TurnerC3_ASCIIReportXmit+0x96>
   1577c:	8f 5f       	subi	r24, 0xFF	; 255
   1577e:	80 93 93 07 	sts	0x0793, r24
   15782:	02 c0       	rjmp	.+4      	; 0x15788 <TurnerC3_ASCIIReportXmit+0x9a>
   15784:	10 92 93 07 	sts	0x0793, r1

	if(headFloatTx == tailFloatTx)
   15788:	90 91 93 07 	lds	r25, 0x0793
   1578c:	80 91 94 07 	lds	r24, 0x0794
   15790:	98 17       	cp	r25, r24
   15792:	41 f4       	brne	.+16     	; 0x157a4 <TurnerC3_ASCIIReportXmit+0xb6>
	{
		(tailFloatTx < MAX_FLOAT_BUFFERS - 1) ? (tailFloatTx++) : (tailFloatTx = 0);
   15794:	97 30       	cpi	r25, 0x07	; 7
   15796:	20 f4       	brcc	.+8      	; 0x157a0 <TurnerC3_ASCIIReportXmit+0xb2>
   15798:	9f 5f       	subi	r25, 0xFF	; 255
   1579a:	90 93 94 07 	sts	0x0794, r25
   1579e:	02 c0       	rjmp	.+4      	; 0x157a4 <TurnerC3_ASCIIReportXmit+0xb6>
   157a0:	10 92 94 07 	sts	0x0794, r1
	}

	OSMutexPost(pMutexFloatQueue);
   157a4:	80 91 51 19 	lds	r24, 0x1951
   157a8:	90 91 52 19 	lds	r25, 0x1952
   157ac:	0e 94 36 27 	call	0x4e6c	; 0x4e6c <OSMutexPost>

	return retval;
}
   157b0:	8f ef       	ldi	r24, 0xFF	; 255
   157b2:	0f 90       	pop	r0
   157b4:	cf 91       	pop	r28
   157b6:	df 91       	pop	r29
   157b8:	1f 91       	pop	r17
   157ba:	0f 91       	pop	r16
   157bc:	ff 90       	pop	r15
   157be:	ef 90       	pop	r14
   157c0:	08 95       	ret

000157c2 <TurnerC3_XmitID>:
	return retval;
}


uint8_t TurnerC3_XmitID(PTURNER_C3_TASK pTaskInfo)
{
   157c2:	ef 92       	push	r14
   157c4:	ff 92       	push	r15
   157c6:	0f 93       	push	r16
   157c8:	1f 93       	push	r17
   157ca:	cf 93       	push	r28
   157cc:	df 93       	push	r29
   157ce:	7c 01       	movw	r14, r24
	uint8_t retval = FAIL;
	uint16_t length = 0;

#define X_ID2 pTaskInfo->pBuf->reportASCII

	X_ID2.headerReport.payloadType = 0x00000060;
   157d0:	dc 01       	movw	r26, r24
   157d2:	14 96       	adiw	r26, 0x04	; 4
   157d4:	0d 91       	ld	r16, X+
   157d6:	1c 91       	ld	r17, X
   157d8:	15 97       	sbiw	r26, 0x05	; 5
   157da:	0d 5a       	subi	r16, 0xAD	; 173
   157dc:	19 4f       	sbci	r17, 0xF9	; 249
   157de:	80 e6       	ldi	r24, 0x60	; 96
   157e0:	90 e0       	ldi	r25, 0x00	; 0
   157e2:	a0 e0       	ldi	r26, 0x00	; 0
   157e4:	b0 e0       	ldi	r27, 0x00	; 0
   157e6:	e8 01       	movw	r28, r16
   157e8:	89 93       	st	Y+, r24
   157ea:	99 93       	st	Y+, r25
   157ec:	a9 93       	st	Y+, r26
   157ee:	b9 93       	st	Y+, r27
	X_ID2.headerReport.boardID = mainBoardID;
   157f0:	80 91 e6 03 	lds	r24, 0x03E6
   157f4:	fe 01       	movw	r30, r28
   157f6:	81 93       	st	Z+, r24
	X_ID2.headerReport.taskID = pTaskInfo->taskID;
   157f8:	d7 01       	movw	r26, r14
   157fa:	8c 91       	ld	r24, X
   157fc:	ef 01       	movw	r28, r30
   157fe:	89 93       	st	Y+, r24
	X_ID2.headerReport.dataFormat = 0;
	X_ID2.headerReport.parser = 1;
	X_ID2.headerReport.priority = 2;
   15800:	80 e5       	ldi	r24, 0x50	; 80
   15802:	fe 01       	movw	r30, r28
   15804:	81 93       	st	Z+, r24
	X_ID2.headerReport.repeatCount = 1;
   15806:	81 e0       	ldi	r24, 0x01	; 1
   15808:	df 01       	movw	r26, r30
   1580a:	8d 93       	st	X+, r24
   1580c:	8d 01       	movw	r16, r26

	X_ID2.headerData.latitude = latitude;
   1580e:	80 91 e5 b7 	lds	r24, 0xB7E5
   15812:	90 91 e6 b7 	lds	r25, 0xB7E6
   15816:	a0 91 e7 b7 	lds	r26, 0xB7E7
   1581a:	b0 91 e8 b7 	lds	r27, 0xB7E8
   1581e:	e8 01       	movw	r28, r16
   15820:	89 93       	st	Y+, r24
   15822:	99 93       	st	Y+, r25
   15824:	a9 93       	st	Y+, r26
   15826:	b9 93       	st	Y+, r27
	X_ID2.headerData.longitude = longitude;
   15828:	80 91 e9 b7 	lds	r24, 0xB7E9
   1582c:	90 91 ea b7 	lds	r25, 0xB7EA
   15830:	a0 91 eb b7 	lds	r26, 0xB7EB
   15834:	b0 91 ec b7 	lds	r27, 0xB7EC
   15838:	fe 01       	movw	r30, r28
   1583a:	81 93       	st	Z+, r24
   1583c:	91 93       	st	Z+, r25
   1583e:	a1 93       	st	Z+, r26
   15840:	b1 93       	st	Z+, r27
   15842:	8f 01       	movw	r16, r30
	X_ID2.headerData.timestamp = gettime();
   15844:	0e 94 3c 34 	call	0x6878	; 0x6878 <gettime>
   15848:	d8 01       	movw	r26, r16
   1584a:	6d 93       	st	X+, r22
   1584c:	7d 93       	st	X+, r23
   1584e:	8d 93       	st	X+, r24
   15850:	9c 93       	st	X, r25
   15852:	13 97       	sbiw	r26, 0x03	; 3

	memset(X_ID2.data, 0, 165);
   15854:	e7 01       	movw	r28, r14
   15856:	8c 81       	ldd	r24, Y+4	; 0x04
   15858:	9d 81       	ldd	r25, Y+5	; 0x05
   1585a:	89 59       	subi	r24, 0x99	; 153
   1585c:	99 4f       	sbci	r25, 0xF9	; 249
   1585e:	fc 01       	movw	r30, r24
   15860:	85 ea       	ldi	r24, 0xA5	; 165
   15862:	df 01       	movw	r26, r30
   15864:	1d 92       	st	X+, r1
   15866:	8a 95       	dec	r24
   15868:	e9 f7       	brne	.-6      	; 0x15864 <TurnerC3_XmitID+0xa2>

	sprintf_P(X_ID2.data, PSTR("SN:00000000 fw:%02d.%02d Comm:%02d.%02d C1:............... C2:............... C3:............... P:%c T:%c W:%c"), 
   1586a:	ec 81       	ldd	r30, Y+4	; 0x04
   1586c:	fd 81       	ldd	r31, Y+5	; 0x05
   1586e:	cd b7       	in	r28, 0x3d	; 61
   15870:	de b7       	in	r29, 0x3e	; 62
   15872:	62 97       	sbiw	r28, 0x12	; 18
   15874:	0f b6       	in	r0, 0x3f	; 63
   15876:	f8 94       	cli
   15878:	de bf       	out	0x3e, r29	; 62
   1587a:	0f be       	out	0x3f, r0	; 63
   1587c:	cd bf       	out	0x3d, r28	; 61
   1587e:	ad b7       	in	r26, 0x3d	; 61
   15880:	be b7       	in	r27, 0x3e	; 62
   15882:	11 96       	adiw	r26, 0x01	; 1
   15884:	e9 59       	subi	r30, 0x99	; 153
   15886:	f9 4f       	sbci	r31, 0xF9	; 249
   15888:	fa 83       	std	Y+2, r31	; 0x02
   1588a:	e9 83       	std	Y+1, r30	; 0x01
   1588c:	8f e1       	ldi	r24, 0x1F	; 31
   1588e:	94 e1       	ldi	r25, 0x14	; 20
   15890:	13 96       	adiw	r26, 0x03	; 3
   15892:	9c 93       	st	X, r25
   15894:	8e 93       	st	-X, r24
   15896:	12 97       	sbiw	r26, 0x02	; 2
   15898:	e6 52       	subi	r30, 0x26	; 38
   1589a:	ff 4f       	sbci	r31, 0xFF	; 255
   1589c:	81 91       	ld	r24, Z+
   1589e:	14 96       	adiw	r26, 0x04	; 4
   158a0:	8c 93       	st	X, r24
   158a2:	14 97       	sbiw	r26, 0x04	; 4
   158a4:	15 96       	adiw	r26, 0x05	; 5
   158a6:	1c 92       	st	X, r1
   158a8:	15 97       	sbiw	r26, 0x05	; 5
   158aa:	81 91       	ld	r24, Z+
   158ac:	16 96       	adiw	r26, 0x06	; 6
   158ae:	8c 93       	st	X, r24
   158b0:	16 97       	sbiw	r26, 0x06	; 6
   158b2:	17 96       	adiw	r26, 0x07	; 7
   158b4:	1c 92       	st	X, r1
   158b6:	17 97       	sbiw	r26, 0x07	; 7
   158b8:	81 91       	ld	r24, Z+
   158ba:	18 96       	adiw	r26, 0x08	; 8
   158bc:	8c 93       	st	X, r24
   158be:	18 97       	sbiw	r26, 0x08	; 8
   158c0:	19 96       	adiw	r26, 0x09	; 9
   158c2:	1c 92       	st	X, r1
   158c4:	19 97       	sbiw	r26, 0x09	; 9
   158c6:	80 81       	ld	r24, Z
   158c8:	1a 96       	adiw	r26, 0x0a	; 10
   158ca:	8c 93       	st	X, r24
   158cc:	1a 97       	sbiw	r26, 0x0a	; 10
   158ce:	1b 96       	adiw	r26, 0x0b	; 11
   158d0:	1c 92       	st	X, r1
   158d2:	1b 97       	sbiw	r26, 0x0b	; 11
   158d4:	32 96       	adiw	r30, 0x02	; 2
   158d6:	80 81       	ld	r24, Z
   158d8:	1c 96       	adiw	r26, 0x0c	; 12
   158da:	8c 93       	st	X, r24
   158dc:	1c 97       	sbiw	r26, 0x0c	; 12
   158de:	1d 96       	adiw	r26, 0x0d	; 13
   158e0:	1c 92       	st	X, r1
   158e2:	1d 97       	sbiw	r26, 0x0d	; 13
   158e4:	82 91       	ld	r24, -Z
   158e6:	1e 96       	adiw	r26, 0x0e	; 14
   158e8:	8c 93       	st	X, r24
   158ea:	1e 97       	sbiw	r26, 0x0e	; 14
   158ec:	1f 96       	adiw	r26, 0x0f	; 15
   158ee:	1c 92       	st	X, r1
   158f0:	1f 97       	sbiw	r26, 0x0f	; 15
   158f2:	32 96       	adiw	r30, 0x02	; 2
   158f4:	80 81       	ld	r24, Z
   158f6:	50 96       	adiw	r26, 0x10	; 16
   158f8:	8c 93       	st	X, r24
   158fa:	50 97       	sbiw	r26, 0x10	; 16
   158fc:	51 96       	adiw	r26, 0x11	; 17
   158fe:	1c 92       	st	X, r1
   15900:	0e 94 51 f1 	call	0x1e2a2	; 0x1e2a2 <sprintf_P>
				pTaskInfo->pBuf->majorFW, pTaskInfo->pBuf->minorFW, pTaskInfo->pBuf->majorComm, pTaskInfo->pBuf->minorComm, 
				pTaskInfo->pBuf->pressure, pTaskInfo->pBuf->temperature, pTaskInfo->pBuf->wiper);

	memcpy(&X_ID2.data[3], pTaskInfo->pBuf->serialNum, 8);
   15904:	f7 01       	movw	r30, r14
   15906:	84 81       	ldd	r24, Z+4	; 0x04
   15908:	95 81       	ldd	r25, Z+5	; 0x05
   1590a:	dc 01       	movw	r26, r24
   1590c:	a6 59       	subi	r26, 0x96	; 150
   1590e:	b9 4f       	sbci	r27, 0xF9	; 249
   15910:	fc 01       	movw	r30, r24
   15912:	e7 5c       	subi	r30, 0xC7	; 199
   15914:	f8 4f       	sbci	r31, 0xF8	; 248
   15916:	88 e0       	ldi	r24, 0x08	; 8
   15918:	01 90       	ld	r0, Z+
   1591a:	0d 92       	st	X+, r0
   1591c:	81 50       	subi	r24, 0x01	; 1
   1591e:	e1 f7       	brne	.-8      	; 0x15918 <TurnerC3_XmitID+0x156>

	memcpy(&X_ID2.data[35], pTaskInfo->pBuf->nameC1, 15);
   15920:	d7 01       	movw	r26, r14
   15922:	14 96       	adiw	r26, 0x04	; 4
   15924:	8d 91       	ld	r24, X+
   15926:	9c 91       	ld	r25, X
   15928:	15 97       	sbiw	r26, 0x05	; 5
   1592a:	dc 01       	movw	r26, r24
   1592c:	a6 57       	subi	r26, 0x76	; 118
   1592e:	b9 4f       	sbci	r27, 0xF9	; 249
   15930:	fc 01       	movw	r30, r24
   15932:	e4 5f       	subi	r30, 0xF4	; 244
   15934:	f8 4f       	sbci	r31, 0xF8	; 248
   15936:	8f e0       	ldi	r24, 0x0F	; 15
   15938:	01 90       	ld	r0, Z+
   1593a:	0d 92       	st	X+, r0
   1593c:	81 50       	subi	r24, 0x01	; 1
   1593e:	e1 f7       	brne	.-8      	; 0x15938 <TurnerC3_XmitID+0x176>
	memcpy(&X_ID2.data[54], pTaskInfo->pBuf->nameC2, 15);
   15940:	e7 01       	movw	r28, r14
   15942:	8c 81       	ldd	r24, Y+4	; 0x04
   15944:	9d 81       	ldd	r25, Y+5	; 0x05
   15946:	dc 01       	movw	r26, r24
   15948:	a3 56       	subi	r26, 0x63	; 99
   1594a:	b9 4f       	sbci	r27, 0xF9	; 249
   1594c:	fc 01       	movw	r30, r24
   1594e:	e5 5e       	subi	r30, 0xE5	; 229
   15950:	f8 4f       	sbci	r31, 0xF8	; 248
   15952:	8f e0       	ldi	r24, 0x0F	; 15
   15954:	01 90       	ld	r0, Z+
   15956:	0d 92       	st	X+, r0
   15958:	81 50       	subi	r24, 0x01	; 1
   1595a:	e1 f7       	brne	.-8      	; 0x15954 <TurnerC3_XmitID+0x192>
	memcpy(&X_ID2.data[73], pTaskInfo->pBuf->nameC3, 15);
   1595c:	f7 01       	movw	r30, r14
   1595e:	84 81       	ldd	r24, Z+4	; 0x04
   15960:	95 81       	ldd	r25, Z+5	; 0x05
   15962:	dc 01       	movw	r26, r24
   15964:	a0 55       	subi	r26, 0x50	; 80
   15966:	b9 4f       	sbci	r27, 0xF9	; 249
   15968:	fc 01       	movw	r30, r24
   1596a:	e6 5d       	subi	r30, 0xD6	; 214
   1596c:	f8 4f       	sbci	r31, 0xF8	; 248
   1596e:	8f e0       	ldi	r24, 0x0F	; 15
   15970:	01 90       	ld	r0, Z+
   15972:	0d 92       	st	X+, r0
   15974:	81 50       	subi	r24, 0x01	; 1
   15976:	e1 f7       	brne	.-8      	; 0x15970 <TurnerC3_XmitID+0x1ae>

	length = sizeof(TYPE_91_REPORT_HEADER) + sizeof(TYPE_90_91_DATA_HEADER) + strlen(X_ID2.data);
   15978:	d7 01       	movw	r26, r14
   1597a:	14 96       	adiw	r26, 0x04	; 4
   1597c:	ed 91       	ld	r30, X+
   1597e:	fc 91       	ld	r31, X
   15980:	15 97       	sbiw	r26, 0x05	; 5
   15982:	e9 59       	subi	r30, 0x99	; 153
   15984:	f9 4f       	sbci	r31, 0xF9	; 249
   15986:	df 01       	movw	r26, r30
   15988:	0d 90       	ld	r0, X+
   1598a:	00 20       	and	r0, r0
   1598c:	e9 f7       	brne	.-6      	; 0x15988 <TurnerC3_XmitID+0x1c6>
   1598e:	ae 1b       	sub	r26, r30
   15990:	bf 0b       	sbc	r27, r31
	retval = TurnerC3_ASCIIReportXmit(pTaskInfo, length);
   15992:	cd b7       	in	r28, 0x3d	; 61
   15994:	de b7       	in	r29, 0x3e	; 62
   15996:	62 96       	adiw	r28, 0x12	; 18
   15998:	0f b6       	in	r0, 0x3f	; 63
   1599a:	f8 94       	cli
   1599c:	de bf       	out	0x3e, r29	; 62
   1599e:	0f be       	out	0x3f, r0	; 63
   159a0:	cd bf       	out	0x3d, r28	; 61
   159a2:	53 96       	adiw	r26, 0x13	; 19
   159a4:	c7 01       	movw	r24, r14
   159a6:	6a 2f       	mov	r22, r26
   159a8:	0e 94 77 ab 	call	0x156ee	; 0x156ee <TurnerC3_ASCIIReportXmit>
	memset(&(X_ID2), 0, sizeof(C3_ASCII_REPORT));
   159ac:	f7 01       	movw	r30, r14
   159ae:	24 81       	ldd	r18, Z+4	; 0x04
   159b0:	35 81       	ldd	r19, Z+5	; 0x05
   159b2:	2d 5a       	subi	r18, 0xAD	; 173
   159b4:	39 4f       	sbci	r19, 0xF9	; 249
   159b6:	99 eb       	ldi	r25, 0xB9	; 185
   159b8:	d9 01       	movw	r26, r18
   159ba:	1d 92       	st	X+, r1
   159bc:	9a 95       	dec	r25
   159be:	e9 f7       	brne	.-6      	; 0x159ba <TurnerC3_XmitID+0x1f8>
#undef X_ID

	return retval;
}
   159c0:	df 91       	pop	r29
   159c2:	cf 91       	pop	r28
   159c4:	1f 91       	pop	r17
   159c6:	0f 91       	pop	r16
   159c8:	ff 90       	pop	r15
   159ca:	ef 90       	pop	r14
   159cc:	08 95       	ret

000159ce <TurnerC3_Xmit_DateTime>:

	return retval;
}

uint8_t TurnerC3_Xmit_DateTime(PTURNER_C3_TASK pTaskInfo, uint32_t	c3Tick)
{
   159ce:	cf 92       	push	r12
   159d0:	df 92       	push	r13
   159d2:	ef 92       	push	r14
   159d4:	ff 92       	push	r15
   159d6:	0f 93       	push	r16
   159d8:	1f 93       	push	r17
   159da:	df 93       	push	r29
   159dc:	cf 93       	push	r28
   159de:	00 d0       	rcall	.+0      	; 0x159e0 <TurnerC3_Xmit_DateTime+0x12>
   159e0:	0f 92       	push	r0
   159e2:	cd b7       	in	r28, 0x3d	; 61
   159e4:	de b7       	in	r29, 0x3e	; 62
   159e6:	7c 01       	movw	r14, r24
	uint8_t retval = FAIL;
	uint16_t length = 0;
	tm*	dateTime;

	time_t time = (time_t)c3Tick;
   159e8:	49 83       	std	Y+1, r20	; 0x01
   159ea:	5a 83       	std	Y+2, r21	; 0x02
   159ec:	6b 83       	std	Y+3, r22	; 0x03
   159ee:	7c 83       	std	Y+4, r23	; 0x04

	dateTime = gmtime(&time);
   159f0:	ce 01       	movw	r24, r28
   159f2:	01 96       	adiw	r24, 0x01	; 1
   159f4:	0e 94 32 35 	call	0x6a64	; 0x6a64 <gmtime>
   159f8:	6c 01       	movw	r12, r24

#define X_DT pTaskInfo->pBuf->reportASCII

	X_DT.headerReport.payloadType = 0x00000060;
   159fa:	d7 01       	movw	r26, r14
   159fc:	14 96       	adiw	r26, 0x04	; 4
   159fe:	0d 91       	ld	r16, X+
   15a00:	1c 91       	ld	r17, X
   15a02:	15 97       	sbiw	r26, 0x05	; 5
   15a04:	0d 5a       	subi	r16, 0xAD	; 173
   15a06:	19 4f       	sbci	r17, 0xF9	; 249
   15a08:	80 e6       	ldi	r24, 0x60	; 96
   15a0a:	90 e0       	ldi	r25, 0x00	; 0
   15a0c:	a0 e0       	ldi	r26, 0x00	; 0
   15a0e:	b0 e0       	ldi	r27, 0x00	; 0
   15a10:	f8 01       	movw	r30, r16
   15a12:	81 93       	st	Z+, r24
   15a14:	91 93       	st	Z+, r25
   15a16:	a1 93       	st	Z+, r26
   15a18:	b1 93       	st	Z+, r27
	X_DT.headerReport.boardID = mainBoardID;
   15a1a:	80 91 e6 03 	lds	r24, 0x03E6
   15a1e:	df 01       	movw	r26, r30
   15a20:	8d 93       	st	X+, r24
	X_DT.headerReport.taskID = pTaskInfo->taskID;
   15a22:	f7 01       	movw	r30, r14
   15a24:	80 81       	ld	r24, Z
   15a26:	8d 93       	st	X+, r24
	X_DT.headerReport.dataFormat = 1;
	X_DT.headerReport.parser = 1;
	X_DT.headerReport.priority = 2;
   15a28:	81 e5       	ldi	r24, 0x51	; 81
   15a2a:	fd 01       	movw	r30, r26
   15a2c:	81 93       	st	Z+, r24
	X_DT.headerReport.repeatCount = 1;
   15a2e:	81 e0       	ldi	r24, 0x01	; 1
   15a30:	df 01       	movw	r26, r30
   15a32:	8d 93       	st	X+, r24
   15a34:	8d 01       	movw	r16, r26

	X_DT.headerData.latitude = latitude;
   15a36:	80 91 e5 b7 	lds	r24, 0xB7E5
   15a3a:	90 91 e6 b7 	lds	r25, 0xB7E6
   15a3e:	a0 91 e7 b7 	lds	r26, 0xB7E7
   15a42:	b0 91 e8 b7 	lds	r27, 0xB7E8
   15a46:	f8 01       	movw	r30, r16
   15a48:	81 93       	st	Z+, r24
   15a4a:	91 93       	st	Z+, r25
   15a4c:	a1 93       	st	Z+, r26
   15a4e:	b1 93       	st	Z+, r27
	X_DT.headerData.longitude = longitude;
   15a50:	80 91 e9 b7 	lds	r24, 0xB7E9
   15a54:	90 91 ea b7 	lds	r25, 0xB7EA
   15a58:	a0 91 eb b7 	lds	r26, 0xB7EB
   15a5c:	b0 91 ec b7 	lds	r27, 0xB7EC
   15a60:	81 93       	st	Z+, r24
   15a62:	91 93       	st	Z+, r25
   15a64:	a1 93       	st	Z+, r26
   15a66:	b1 93       	st	Z+, r27
   15a68:	8f 01       	movw	r16, r30
	X_DT.headerData.timestamp = gettime();
   15a6a:	0e 94 3c 34 	call	0x6878	; 0x6878 <gettime>
   15a6e:	d8 01       	movw	r26, r16
   15a70:	6d 93       	st	X+, r22
   15a72:	7d 93       	st	X+, r23
   15a74:	8d 93       	st	X+, r24
   15a76:	9c 93       	st	X, r25
   15a78:	13 97       	sbiw	r26, 0x03	; 3

	memset(X_DT.data, 0, 165);
   15a7a:	f7 01       	movw	r30, r14
   15a7c:	84 81       	ldd	r24, Z+4	; 0x04
   15a7e:	95 81       	ldd	r25, Z+5	; 0x05
   15a80:	89 59       	subi	r24, 0x99	; 153
   15a82:	99 4f       	sbci	r25, 0xF9	; 249
   15a84:	fc 01       	movw	r30, r24
   15a86:	85 ea       	ldi	r24, 0xA5	; 165
   15a88:	df 01       	movw	r26, r30
   15a8a:	1d 92       	st	X+, r1
   15a8c:	8a 95       	dec	r24
   15a8e:	e9 f7       	brne	.-6      	; 0x15a8a <TurnerC3_Xmit_DateTime+0xbc>

	sprintf_P(X_DT.data, PSTR("%02d/%02d/%04d  %02d:%02d:%02d"),dateTime->tm_mon + 1, dateTime->tm_mday, (dateTime->tm_year + YEAR0), 
   15a90:	ed b7       	in	r30, 0x3d	; 61
   15a92:	fe b7       	in	r31, 0x3e	; 62
   15a94:	70 97       	sbiw	r30, 0x10	; 16
   15a96:	0f b6       	in	r0, 0x3f	; 63
   15a98:	f8 94       	cli
   15a9a:	fe bf       	out	0x3e, r31	; 62
   15a9c:	0f be       	out	0x3f, r0	; 63
   15a9e:	ed bf       	out	0x3d, r30	; 61
   15aa0:	31 96       	adiw	r30, 0x01	; 1
   15aa2:	d7 01       	movw	r26, r14
   15aa4:	14 96       	adiw	r26, 0x04	; 4
   15aa6:	8d 91       	ld	r24, X+
   15aa8:	9c 91       	ld	r25, X
   15aaa:	15 97       	sbiw	r26, 0x05	; 5
   15aac:	89 59       	subi	r24, 0x99	; 153
   15aae:	99 4f       	sbci	r25, 0xF9	; 249
   15ab0:	ad b7       	in	r26, 0x3d	; 61
   15ab2:	be b7       	in	r27, 0x3e	; 62
   15ab4:	12 96       	adiw	r26, 0x02	; 2
   15ab6:	9c 93       	st	X, r25
   15ab8:	8e 93       	st	-X, r24
   15aba:	11 97       	sbiw	r26, 0x01	; 1
   15abc:	8f e8       	ldi	r24, 0x8F	; 143
   15abe:	94 e1       	ldi	r25, 0x14	; 20
   15ac0:	93 83       	std	Z+3, r25	; 0x03
   15ac2:	82 83       	std	Z+2, r24	; 0x02
   15ac4:	d6 01       	movw	r26, r12
   15ac6:	18 96       	adiw	r26, 0x08	; 8
   15ac8:	8d 91       	ld	r24, X+
   15aca:	9c 91       	ld	r25, X
   15acc:	19 97       	sbiw	r26, 0x09	; 9
   15ace:	01 96       	adiw	r24, 0x01	; 1
   15ad0:	95 83       	std	Z+5, r25	; 0x05
   15ad2:	84 83       	std	Z+4, r24	; 0x04
   15ad4:	16 96       	adiw	r26, 0x06	; 6
   15ad6:	8d 91       	ld	r24, X+
   15ad8:	9c 91       	ld	r25, X
   15ada:	17 97       	sbiw	r26, 0x07	; 7
   15adc:	97 83       	std	Z+7, r25	; 0x07
   15ade:	86 83       	std	Z+6, r24	; 0x06
   15ae0:	1a 96       	adiw	r26, 0x0a	; 10
   15ae2:	8d 91       	ld	r24, X+
   15ae4:	9c 91       	ld	r25, X
   15ae6:	1b 97       	sbiw	r26, 0x0b	; 11
   15ae8:	84 59       	subi	r24, 0x94	; 148
   15aea:	98 4f       	sbci	r25, 0xF8	; 248
   15aec:	91 87       	std	Z+9, r25	; 0x09
   15aee:	80 87       	std	Z+8, r24	; 0x08
   15af0:	14 96       	adiw	r26, 0x04	; 4
   15af2:	8d 91       	ld	r24, X+
   15af4:	9c 91       	ld	r25, X
   15af6:	15 97       	sbiw	r26, 0x05	; 5
   15af8:	93 87       	std	Z+11, r25	; 0x0b
   15afa:	82 87       	std	Z+10, r24	; 0x0a
   15afc:	12 96       	adiw	r26, 0x02	; 2
   15afe:	8d 91       	ld	r24, X+
   15b00:	9c 91       	ld	r25, X
   15b02:	13 97       	sbiw	r26, 0x03	; 3
   15b04:	95 87       	std	Z+13, r25	; 0x0d
   15b06:	84 87       	std	Z+12, r24	; 0x0c
   15b08:	8d 91       	ld	r24, X+
   15b0a:	9c 91       	ld	r25, X
   15b0c:	97 87       	std	Z+15, r25	; 0x0f
   15b0e:	86 87       	std	Z+14, r24	; 0x0e
   15b10:	0e 94 51 f1 	call	0x1e2a2	; 0x1e2a2 <sprintf_P>
													dateTime->tm_hour, dateTime->tm_min, dateTime->tm_sec); 

	length = sizeof(TYPE_91_REPORT_HEADER) + sizeof(TYPE_90_91_DATA_HEADER) + strlen(X_DT.data);
   15b14:	d7 01       	movw	r26, r14
   15b16:	14 96       	adiw	r26, 0x04	; 4
   15b18:	ed 91       	ld	r30, X+
   15b1a:	fc 91       	ld	r31, X
   15b1c:	15 97       	sbiw	r26, 0x05	; 5
   15b1e:	e9 59       	subi	r30, 0x99	; 153
   15b20:	f9 4f       	sbci	r31, 0xF9	; 249
   15b22:	df 01       	movw	r26, r30
   15b24:	0d 90       	ld	r0, X+
   15b26:	00 20       	and	r0, r0
   15b28:	e9 f7       	brne	.-6      	; 0x15b24 <TurnerC3_Xmit_DateTime+0x156>
   15b2a:	ae 1b       	sub	r26, r30
   15b2c:	bf 0b       	sbc	r27, r31
	retval = TurnerC3_ASCIIReportXmit(pTaskInfo, length);
   15b2e:	ed b7       	in	r30, 0x3d	; 61
   15b30:	fe b7       	in	r31, 0x3e	; 62
   15b32:	70 96       	adiw	r30, 0x10	; 16
   15b34:	0f b6       	in	r0, 0x3f	; 63
   15b36:	f8 94       	cli
   15b38:	fe bf       	out	0x3e, r31	; 62
   15b3a:	0f be       	out	0x3f, r0	; 63
   15b3c:	ed bf       	out	0x3d, r30	; 61
   15b3e:	53 96       	adiw	r26, 0x13	; 19
   15b40:	c7 01       	movw	r24, r14
   15b42:	6a 2f       	mov	r22, r26
   15b44:	0e 94 77 ab 	call	0x156ee	; 0x156ee <TurnerC3_ASCIIReportXmit>
	memset(&(X_DT), 0, sizeof(C3_ASCII_REPORT));
   15b48:	d7 01       	movw	r26, r14
   15b4a:	14 96       	adiw	r26, 0x04	; 4
   15b4c:	2d 91       	ld	r18, X+
   15b4e:	3c 91       	ld	r19, X
   15b50:	15 97       	sbiw	r26, 0x05	; 5
   15b52:	2d 5a       	subi	r18, 0xAD	; 173
   15b54:	39 4f       	sbci	r19, 0xF9	; 249
   15b56:	99 eb       	ldi	r25, 0xB9	; 185
   15b58:	d9 01       	movw	r26, r18
   15b5a:	1d 92       	st	X+, r1
   15b5c:	9a 95       	dec	r25
   15b5e:	e9 f7       	brne	.-6      	; 0x15b5a <TurnerC3_Xmit_DateTime+0x18c>
#undef X_DT

	return retval;
}
   15b60:	0f 90       	pop	r0
   15b62:	0f 90       	pop	r0
   15b64:	0f 90       	pop	r0
   15b66:	0f 90       	pop	r0
   15b68:	cf 91       	pop	r28
   15b6a:	df 91       	pop	r29
   15b6c:	1f 91       	pop	r17
   15b6e:	0f 91       	pop	r16
   15b70:	ff 90       	pop	r15
   15b72:	ef 90       	pop	r14
   15b74:	df 90       	pop	r13
   15b76:	cf 90       	pop	r12
   15b78:	08 95       	ret

00015b7a <TurnerC3_Xmit_ID>:
	}
	return retval;
}

uint8_t TurnerC3_Xmit_ID(PTURNER_C3_TASK pTaskInfo, PC3_ID_BLOCK pID)
{
   15b7a:	bf 92       	push	r11
   15b7c:	cf 92       	push	r12
   15b7e:	df 92       	push	r13
   15b80:	ef 92       	push	r14
   15b82:	ff 92       	push	r15
   15b84:	0f 93       	push	r16
   15b86:	1f 93       	push	r17
   15b88:	df 93       	push	r29
   15b8a:	cf 93       	push	r28
   15b8c:	cd b7       	in	r28, 0x3d	; 61
   15b8e:	de b7       	in	r29, 0x3e	; 62
   15b90:	60 97       	sbiw	r28, 0x10	; 16
   15b92:	0f b6       	in	r0, 0x3f	; 63
   15b94:	f8 94       	cli
   15b96:	de bf       	out	0x3e, r29	; 62
   15b98:	0f be       	out	0x3f, r0	; 63
   15b9a:	cd bf       	out	0x3d, r28	; 61
   15b9c:	6c 01       	movw	r12, r24
   15b9e:	7b 01       	movw	r14, r22
	uint8_t retval = FAIL;
	uint16_t length = 0;
	char sn[8] = {0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20};
   15ba0:	de 01       	movw	r26, r28
   15ba2:	11 96       	adiw	r26, 0x01	; 1
   15ba4:	e1 ef       	ldi	r30, 0xF1	; 241
   15ba6:	f4 e0       	ldi	r31, 0x04	; 4
   15ba8:	88 e0       	ldi	r24, 0x08	; 8
   15baa:	01 90       	ld	r0, Z+
   15bac:	0d 92       	st	X+, r0
   15bae:	81 50       	subi	r24, 0x01	; 1
   15bb0:	e1 f7       	brne	.-8      	; 0x15baa <TurnerC3_Xmit_ID+0x30>
	char c[8] = {'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N'};
   15bb2:	de 01       	movw	r26, r28
   15bb4:	19 96       	adiw	r26, 0x09	; 9
   15bb6:	e9 ee       	ldi	r30, 0xE9	; 233
   15bb8:	f4 e0       	ldi	r31, 0x04	; 4
   15bba:	88 e0       	ldi	r24, 0x08	; 8
   15bbc:	01 90       	ld	r0, Z+
   15bbe:	0d 92       	st	X+, r0
   15bc0:	81 50       	subi	r24, 0x01	; 1
   15bc2:	e1 f7       	brne	.-8      	; 0x15bbc <TurnerC3_Xmit_ID+0x42>
	char enabled = 'N';
	uint16_t sensors = TurnerC3_Endian2ByteSwap(pID->sensorsInstalled);
   15bc4:	d7 01       	movw	r26, r14
   15bc6:	1b 96       	adiw	r26, 0x0b	; 11
   15bc8:	2c 91       	ld	r18, X
   15bca:	1b 97       	sbiw	r26, 0x0b	; 11
uint16_t TurnerC3_Endian2ByteSwap(uint16_t val)
{
	uint16_t result = 0;

	result |= (LOBYTE(val)<<8);
	result |= (HIBYTE(val));
   15bcc:	1a 96       	adiw	r26, 0x0a	; 10
   15bce:	9c 91       	ld	r25, X
   15bd0:	80 e0       	ldi	r24, 0x00	; 0
   15bd2:	30 e0       	ldi	r19, 0x00	; 0
   15bd4:	28 2b       	or	r18, r24
   15bd6:	39 2b       	or	r19, r25
   15bd8:	80 e0       	ldi	r24, 0x00	; 0
   15bda:	90 e0       	ldi	r25, 0x00	; 0
	uint16_t sensors = TurnerC3_Endian2ByteSwap(pID->sensorsInstalled);

	for(int i = 0; i<8; i++)
	{
		if((sensors & 0x0001) == 1)
			c[i] = 'Y';
   15bdc:	de 01       	movw	r26, r28
   15bde:	19 96       	adiw	r26, 0x09	; 9
   15be0:	59 e5       	ldi	r21, 0x59	; 89
		sensors = sensors >> 1;
		if(pID->serialNum[i] != 0)
			sn[i] = pID->serialNum[i];
   15be2:	be 01       	movw	r22, r28
   15be4:	6f 5f       	subi	r22, 0xFF	; 255
   15be6:	7f 4f       	sbci	r23, 0xFF	; 255
	char enabled = 'N';
	uint16_t sensors = TurnerC3_Endian2ByteSwap(pID->sensorsInstalled);

	for(int i = 0; i<8; i++)
	{
		if((sensors & 0x0001) == 1)
   15be8:	20 ff       	sbrs	r18, 0
   15bea:	04 c0       	rjmp	.+8      	; 0x15bf4 <TurnerC3_Xmit_ID+0x7a>
			c[i] = 'Y';
   15bec:	fd 01       	movw	r30, r26
   15bee:	e8 0f       	add	r30, r24
   15bf0:	f9 1f       	adc	r31, r25
   15bf2:	50 83       	st	Z, r21
		sensors = sensors >> 1;
		if(pID->serialNum[i] != 0)
   15bf4:	f7 01       	movw	r30, r14
   15bf6:	e8 0f       	add	r30, r24
   15bf8:	f9 1f       	adc	r31, r25
   15bfa:	40 81       	ld	r20, Z
   15bfc:	44 23       	and	r20, r20
   15bfe:	21 f0       	breq	.+8      	; 0x15c08 <TurnerC3_Xmit_ID+0x8e>
			sn[i] = pID->serialNum[i];
   15c00:	fb 01       	movw	r30, r22
   15c02:	e8 0f       	add	r30, r24
   15c04:	f9 1f       	adc	r31, r25
   15c06:	40 83       	st	Z, r20
	char sn[8] = {0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20};
	char c[8] = {'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N'};
	char enabled = 'N';
	uint16_t sensors = TurnerC3_Endian2ByteSwap(pID->sensorsInstalled);

	for(int i = 0; i<8; i++)
   15c08:	01 96       	adiw	r24, 0x01	; 1
   15c0a:	88 30       	cpi	r24, 0x08	; 8
   15c0c:	91 05       	cpc	r25, r1
   15c0e:	19 f0       	breq	.+6      	; 0x15c16 <TurnerC3_Xmit_ID+0x9c>
	{
		if((sensors & 0x0001) == 1)
			c[i] = 'Y';
		sensors = sensors >> 1;
   15c10:	36 95       	lsr	r19
   15c12:	27 95       	ror	r18
   15c14:	e9 cf       	rjmp	.-46     	; 0x15be8 <TurnerC3_Xmit_ID+0x6e>
		if(pID->serialNum[i] != 0)
			sn[i] = pID->serialNum[i];
	}

	if(pID->datalogEnabled != 0)
   15c16:	f7 01       	movw	r30, r14
   15c18:	84 85       	ldd	r24, Z+12	; 0x0c
   15c1a:	88 23       	and	r24, r24
   15c1c:	19 f0       	breq	.+6      	; 0x15c24 <TurnerC3_Xmit_ID+0xaa>
   15c1e:	29 e5       	ldi	r18, 0x59	; 89
   15c20:	b2 2e       	mov	r11, r18
   15c22:	02 c0       	rjmp	.+4      	; 0x15c28 <TurnerC3_Xmit_ID+0xae>
   15c24:	9e e4       	ldi	r25, 0x4E	; 78
   15c26:	b9 2e       	mov	r11, r25
		enabled = 'Y';

#define X_ID pTaskInfo->pBuf->reportASCII

	X_ID.headerReport.payloadType = 0x00000060;
   15c28:	d6 01       	movw	r26, r12
   15c2a:	14 96       	adiw	r26, 0x04	; 4
   15c2c:	0d 91       	ld	r16, X+
   15c2e:	1c 91       	ld	r17, X
   15c30:	15 97       	sbiw	r26, 0x05	; 5
   15c32:	0d 5a       	subi	r16, 0xAD	; 173
   15c34:	19 4f       	sbci	r17, 0xF9	; 249
   15c36:	80 e6       	ldi	r24, 0x60	; 96
   15c38:	90 e0       	ldi	r25, 0x00	; 0
   15c3a:	a0 e0       	ldi	r26, 0x00	; 0
   15c3c:	b0 e0       	ldi	r27, 0x00	; 0
   15c3e:	f8 01       	movw	r30, r16
   15c40:	81 93       	st	Z+, r24
   15c42:	91 93       	st	Z+, r25
   15c44:	a1 93       	st	Z+, r26
   15c46:	b1 93       	st	Z+, r27
	X_ID.headerReport.boardID = mainBoardID;
   15c48:	80 91 e6 03 	lds	r24, 0x03E6
   15c4c:	df 01       	movw	r26, r30
   15c4e:	8d 93       	st	X+, r24
	X_ID.headerReport.taskID = pTaskInfo->taskID;
   15c50:	f6 01       	movw	r30, r12
   15c52:	80 81       	ld	r24, Z
   15c54:	8d 93       	st	X+, r24
	X_ID.headerReport.dataFormat = 0;
	X_ID.headerReport.parser = 1;
	X_ID.headerReport.priority = 2;
   15c56:	80 e5       	ldi	r24, 0x50	; 80
   15c58:	fd 01       	movw	r30, r26
   15c5a:	81 93       	st	Z+, r24
	X_ID.headerReport.repeatCount = 1;
   15c5c:	81 e0       	ldi	r24, 0x01	; 1
   15c5e:	df 01       	movw	r26, r30
   15c60:	8d 93       	st	X+, r24
   15c62:	8d 01       	movw	r16, r26

	X_ID.headerData.latitude = latitude;
   15c64:	80 91 e5 b7 	lds	r24, 0xB7E5
   15c68:	90 91 e6 b7 	lds	r25, 0xB7E6
   15c6c:	a0 91 e7 b7 	lds	r26, 0xB7E7
   15c70:	b0 91 e8 b7 	lds	r27, 0xB7E8
   15c74:	f8 01       	movw	r30, r16
   15c76:	81 93       	st	Z+, r24
   15c78:	91 93       	st	Z+, r25
   15c7a:	a1 93       	st	Z+, r26
   15c7c:	b1 93       	st	Z+, r27
	X_ID.headerData.longitude = longitude;
   15c7e:	80 91 e9 b7 	lds	r24, 0xB7E9
   15c82:	90 91 ea b7 	lds	r25, 0xB7EA
   15c86:	a0 91 eb b7 	lds	r26, 0xB7EB
   15c8a:	b0 91 ec b7 	lds	r27, 0xB7EC
   15c8e:	81 93       	st	Z+, r24
   15c90:	91 93       	st	Z+, r25
   15c92:	a1 93       	st	Z+, r26
   15c94:	b1 93       	st	Z+, r27
   15c96:	8f 01       	movw	r16, r30
	X_ID.headerData.timestamp = gettime();
   15c98:	0e 94 3c 34 	call	0x6878	; 0x6878 <gettime>
   15c9c:	d8 01       	movw	r26, r16
   15c9e:	6d 93       	st	X+, r22
   15ca0:	7d 93       	st	X+, r23
   15ca2:	8d 93       	st	X+, r24
   15ca4:	9c 93       	st	X, r25
   15ca6:	13 97       	sbiw	r26, 0x03	; 3

	memset(X_ID.data, 0, 165);
   15ca8:	f6 01       	movw	r30, r12
   15caa:	84 81       	ldd	r24, Z+4	; 0x04
   15cac:	95 81       	ldd	r25, Z+5	; 0x05
   15cae:	89 59       	subi	r24, 0x99	; 153
   15cb0:	99 4f       	sbci	r25, 0xF9	; 249
   15cb2:	fc 01       	movw	r30, r24
   15cb4:	85 ea       	ldi	r24, 0xA5	; 165
   15cb6:	df 01       	movw	r26, r30
   15cb8:	1d 92       	st	X+, r1
   15cba:	8a 95       	dec	r24
   15cbc:	e9 f7       	brne	.-6      	; 0x15cb8 <TurnerC3_Xmit_ID+0x13e>

	sprintf_P(X_ID.data, PSTR("SN:%c%c%c%c%c%c%c%c fw:%d.%d, C1:%c C2:%c C3:%c C4:%c C5:%c C6:%c P:%c T:%c Log:%c, Size:%d Free:%d Comm:%d.%d"), 
   15cbe:	f7 01       	movw	r30, r14
   15cc0:	65 85       	ldd	r22, Z+13	; 0x0d
   15cc2:	26 85       	ldd	r18, Z+14	; 0x0e
   15cc4:	77 85       	ldd	r23, Z+15	; 0x0f
   15cc6:	40 89       	ldd	r20, Z+16	; 0x10
   15cc8:	8d b7       	in	r24, 0x3d	; 61
   15cca:	9e b7       	in	r25, 0x3e	; 62
   15ccc:	c2 97       	sbiw	r24, 0x32	; 50
   15cce:	0f b6       	in	r0, 0x3f	; 63
   15cd0:	f8 94       	cli
   15cd2:	9e bf       	out	0x3e, r25	; 62
   15cd4:	0f be       	out	0x3f, r0	; 63
   15cd6:	8d bf       	out	0x3d, r24	; 61
   15cd8:	ed b7       	in	r30, 0x3d	; 61
   15cda:	fe b7       	in	r31, 0x3e	; 62
   15cdc:	31 96       	adiw	r30, 0x01	; 1
   15cde:	d6 01       	movw	r26, r12
   15ce0:	14 96       	adiw	r26, 0x04	; 4
   15ce2:	8d 91       	ld	r24, X+
   15ce4:	9c 91       	ld	r25, X
   15ce6:	15 97       	sbiw	r26, 0x05	; 5
   15ce8:	89 59       	subi	r24, 0x99	; 153
   15cea:	99 4f       	sbci	r25, 0xF9	; 249
   15cec:	ad b7       	in	r26, 0x3d	; 61
   15cee:	be b7       	in	r27, 0x3e	; 62
   15cf0:	12 96       	adiw	r26, 0x02	; 2
   15cf2:	9c 93       	st	X, r25
   15cf4:	8e 93       	st	-X, r24
   15cf6:	11 97       	sbiw	r26, 0x01	; 1
   15cf8:	8e ea       	ldi	r24, 0xAE	; 174
   15cfa:	94 e1       	ldi	r25, 0x14	; 20
   15cfc:	93 83       	std	Z+3, r25	; 0x03
   15cfe:	82 83       	std	Z+2, r24	; 0x02
   15d00:	89 81       	ldd	r24, Y+1	; 0x01
   15d02:	84 83       	std	Z+4, r24	; 0x04
   15d04:	15 82       	std	Z+5, r1	; 0x05
   15d06:	8a 81       	ldd	r24, Y+2	; 0x02
   15d08:	86 83       	std	Z+6, r24	; 0x06
   15d0a:	17 82       	std	Z+7, r1	; 0x07
   15d0c:	8b 81       	ldd	r24, Y+3	; 0x03
   15d0e:	80 87       	std	Z+8, r24	; 0x08
   15d10:	11 86       	std	Z+9, r1	; 0x09
   15d12:	8c 81       	ldd	r24, Y+4	; 0x04
   15d14:	82 87       	std	Z+10, r24	; 0x0a
   15d16:	13 86       	std	Z+11, r1	; 0x0b
   15d18:	8d 81       	ldd	r24, Y+5	; 0x05
   15d1a:	84 87       	std	Z+12, r24	; 0x0c
   15d1c:	15 86       	std	Z+13, r1	; 0x0d
   15d1e:	8e 81       	ldd	r24, Y+6	; 0x06
   15d20:	86 87       	std	Z+14, r24	; 0x0e
   15d22:	17 86       	std	Z+15, r1	; 0x0f
   15d24:	8f 81       	ldd	r24, Y+7	; 0x07
   15d26:	80 8b       	std	Z+16, r24	; 0x10
   15d28:	11 8a       	std	Z+17, r1	; 0x11
   15d2a:	88 85       	ldd	r24, Y+8	; 0x08
   15d2c:	82 8b       	std	Z+18, r24	; 0x12
   15d2e:	13 8a       	std	Z+19, r1	; 0x13
   15d30:	d7 01       	movw	r26, r14
   15d32:	18 96       	adiw	r26, 0x08	; 8
   15d34:	8c 91       	ld	r24, X
   15d36:	18 97       	sbiw	r26, 0x08	; 8
   15d38:	84 8b       	std	Z+20, r24	; 0x14
   15d3a:	15 8a       	std	Z+21, r1	; 0x15
   15d3c:	19 96       	adiw	r26, 0x09	; 9
   15d3e:	8c 91       	ld	r24, X
   15d40:	19 97       	sbiw	r26, 0x09	; 9
   15d42:	86 8b       	std	Z+22, r24	; 0x16
   15d44:	17 8a       	std	Z+23, r1	; 0x17
   15d46:	89 85       	ldd	r24, Y+9	; 0x09
   15d48:	80 8f       	std	Z+24, r24	; 0x18
   15d4a:	11 8e       	std	Z+25, r1	; 0x19
   15d4c:	8a 85       	ldd	r24, Y+10	; 0x0a
   15d4e:	82 8f       	std	Z+26, r24	; 0x1a
   15d50:	13 8e       	std	Z+27, r1	; 0x1b
   15d52:	8b 85       	ldd	r24, Y+11	; 0x0b
   15d54:	84 8f       	std	Z+28, r24	; 0x1c
   15d56:	15 8e       	std	Z+29, r1	; 0x1d
   15d58:	8c 85       	ldd	r24, Y+12	; 0x0c
   15d5a:	86 8f       	std	Z+30, r24	; 0x1e
   15d5c:	17 8e       	std	Z+31, r1	; 0x1f
   15d5e:	8d 85       	ldd	r24, Y+13	; 0x0d
   15d60:	80 a3       	std	Z+32, r24	; 0x20
   15d62:	11 a2       	std	Z+33, r1	; 0x21
   15d64:	8e 85       	ldd	r24, Y+14	; 0x0e
   15d66:	82 a3       	std	Z+34, r24	; 0x22
   15d68:	13 a2       	std	Z+35, r1	; 0x23
   15d6a:	8f 85       	ldd	r24, Y+15	; 0x0f
   15d6c:	84 a3       	std	Z+36, r24	; 0x24
   15d6e:	15 a2       	std	Z+37, r1	; 0x25
   15d70:	88 89       	ldd	r24, Y+16	; 0x10
   15d72:	86 a3       	std	Z+38, r24	; 0x26
   15d74:	17 a2       	std	Z+39, r1	; 0x27
   15d76:	b0 a6       	std	Z+40, r11	; 0x28
   15d78:	11 a6       	std	Z+41, r1	; 0x29
   15d7a:	96 2f       	mov	r25, r22
   15d7c:	80 e0       	ldi	r24, 0x00	; 0
   15d7e:	30 e0       	ldi	r19, 0x00	; 0
   15d80:	82 2b       	or	r24, r18
   15d82:	93 2b       	or	r25, r19
   15d84:	93 a7       	std	Z+43, r25	; 0x2b
   15d86:	82 a7       	std	Z+42, r24	; 0x2a
   15d88:	97 2f       	mov	r25, r23
   15d8a:	80 e0       	ldi	r24, 0x00	; 0
   15d8c:	50 e0       	ldi	r21, 0x00	; 0
   15d8e:	84 2b       	or	r24, r20
   15d90:	95 2b       	or	r25, r21
   15d92:	95 a7       	std	Z+45, r25	; 0x2d
   15d94:	84 a7       	std	Z+44, r24	; 0x2c
   15d96:	51 96       	adiw	r26, 0x11	; 17
   15d98:	8c 91       	ld	r24, X
   15d9a:	51 97       	sbiw	r26, 0x11	; 17
   15d9c:	86 a7       	std	Z+46, r24	; 0x2e
   15d9e:	17 a6       	std	Z+47, r1	; 0x2f
   15da0:	52 96       	adiw	r26, 0x12	; 18
   15da2:	8c 91       	ld	r24, X
   15da4:	80 ab       	std	Z+48, r24	; 0x30
   15da6:	11 aa       	std	Z+49, r1	; 0x31
   15da8:	0e 94 51 f1 	call	0x1e2a2	; 0x1e2a2 <sprintf_P>
				sn[0], sn[1], sn[2], sn[3], sn[4], sn[5], sn[6], sn[7], pID->fwMajor, pID->fwMinor, c[0], c[1], c[2], c[3], c[4], 
				c[5], c[6], c[7], enabled, TurnerC3_Endian2ByteSwap(pID->datalogSize), TurnerC3_Endian2ByteSwap(pID->datalogFree), 
				pID->commProtocolMajor, pID->commProtocolMinor);

	length = sizeof(TYPE_91_REPORT_HEADER) + sizeof(TYPE_90_91_DATA_HEADER) + strlen(X_ID.data);
   15dac:	d6 01       	movw	r26, r12
   15dae:	14 96       	adiw	r26, 0x04	; 4
   15db0:	ed 91       	ld	r30, X+
   15db2:	fc 91       	ld	r31, X
   15db4:	15 97       	sbiw	r26, 0x05	; 5
   15db6:	e9 59       	subi	r30, 0x99	; 153
   15db8:	f9 4f       	sbci	r31, 0xF9	; 249
   15dba:	df 01       	movw	r26, r30
   15dbc:	0d 90       	ld	r0, X+
   15dbe:	00 20       	and	r0, r0
   15dc0:	e9 f7       	brne	.-6      	; 0x15dbc <TurnerC3_Xmit_ID+0x242>
   15dc2:	ae 1b       	sub	r26, r30
   15dc4:	bf 0b       	sbc	r27, r31
	retval = TurnerC3_ASCIIReportXmit(pTaskInfo, length);
   15dc6:	ed b7       	in	r30, 0x3d	; 61
   15dc8:	fe b7       	in	r31, 0x3e	; 62
   15dca:	f2 96       	adiw	r30, 0x32	; 50
   15dcc:	0f b6       	in	r0, 0x3f	; 63
   15dce:	f8 94       	cli
   15dd0:	fe bf       	out	0x3e, r31	; 62
   15dd2:	0f be       	out	0x3f, r0	; 63
   15dd4:	ed bf       	out	0x3d, r30	; 61
   15dd6:	53 96       	adiw	r26, 0x13	; 19
   15dd8:	c6 01       	movw	r24, r12
   15dda:	6a 2f       	mov	r22, r26
   15ddc:	0e 94 77 ab 	call	0x156ee	; 0x156ee <TurnerC3_ASCIIReportXmit>
	memset(&(X_ID), 0, sizeof(C3_ASCII_REPORT));
   15de0:	d6 01       	movw	r26, r12
   15de2:	14 96       	adiw	r26, 0x04	; 4
   15de4:	2d 91       	ld	r18, X+
   15de6:	3c 91       	ld	r19, X
   15de8:	15 97       	sbiw	r26, 0x05	; 5
   15dea:	2d 5a       	subi	r18, 0xAD	; 173
   15dec:	39 4f       	sbci	r19, 0xF9	; 249
   15dee:	99 eb       	ldi	r25, 0xB9	; 185
   15df0:	d9 01       	movw	r26, r18
   15df2:	1d 92       	st	X+, r1
   15df4:	9a 95       	dec	r25
   15df6:	e9 f7       	brne	.-6      	; 0x15df2 <TurnerC3_Xmit_ID+0x278>
#undef X_ID

	return retval;
}
   15df8:	60 96       	adiw	r28, 0x10	; 16
   15dfa:	0f b6       	in	r0, 0x3f	; 63
   15dfc:	f8 94       	cli
   15dfe:	de bf       	out	0x3e, r29	; 62
   15e00:	0f be       	out	0x3f, r0	; 63
   15e02:	cd bf       	out	0x3d, r28	; 61
   15e04:	cf 91       	pop	r28
   15e06:	df 91       	pop	r29
   15e08:	1f 91       	pop	r17
   15e0a:	0f 91       	pop	r16
   15e0c:	ff 90       	pop	r15
   15e0e:	ef 90       	pop	r14
   15e10:	df 90       	pop	r13
   15e12:	cf 90       	pop	r12
   15e14:	bf 90       	pop	r11
   15e16:	08 95       	ret

00015e18 <TurnerC3_XmitConfiguration>:
prog_char c_P[] = {'N','N','N','N','N','N','N','N'};
prog_char p_P[] = {'O', 'f', 'f'};
prog_char on_P[] = {'O', 'n', ' '};

uint8_t TurnerC3_XmitConfiguration(PTURNER_C3_TASK pTaskInfo, PC3_CFG_BLOCK pCfgBlock)
{
   15e18:	8f 92       	push	r8
   15e1a:	9f 92       	push	r9
   15e1c:	af 92       	push	r10
   15e1e:	bf 92       	push	r11
   15e20:	cf 92       	push	r12
   15e22:	df 92       	push	r13
   15e24:	ef 92       	push	r14
   15e26:	ff 92       	push	r15
   15e28:	0f 93       	push	r16
   15e2a:	1f 93       	push	r17
   15e2c:	df 93       	push	r29
   15e2e:	cf 93       	push	r28
   15e30:	cd b7       	in	r28, 0x3d	; 61
   15e32:	de b7       	in	r29, 0x3e	; 62
   15e34:	63 97       	sbiw	r28, 0x13	; 19
   15e36:	0f b6       	in	r0, 0x3f	; 63
   15e38:	f8 94       	cli
   15e3a:	de bf       	out	0x3e, r29	; 62
   15e3c:	0f be       	out	0x3f, r0	; 63
   15e3e:	cd bf       	out	0x3d, r28	; 61
   15e40:	5c 01       	movw	r10, r24
   15e42:	6b 01       	movw	r12, r22
	uint8_t g[8];
	char p[3];	// = {'O','f','f'};
//	char p[3]= {'O','f','f'};
	uint16_t mask = 0x00;

	memset(g, 0, 8);
   15e44:	1c e0       	ldi	r17, 0x0C	; 12
   15e46:	e1 2e       	mov	r14, r17
   15e48:	f1 2c       	mov	r15, r1
   15e4a:	ec 0e       	add	r14, r28
   15e4c:	fd 1e       	adc	r15, r29
   15e4e:	88 e0       	ldi	r24, 0x08	; 8
   15e50:	d7 01       	movw	r26, r14
   15e52:	1d 92       	st	X+, r1
   15e54:	8a 95       	dec	r24
   15e56:	e9 f7       	brne	.-6      	; 0x15e52 <TurnerC3_XmitConfiguration+0x3a>
	memcpy_P(c, c_P, 8);
   15e58:	8e 01       	movw	r16, r28
   15e5a:	0c 5f       	subi	r16, 0xFC	; 252
   15e5c:	1f 4f       	sbci	r17, 0xFF	; 255
   15e5e:	c8 01       	movw	r24, r16
   15e60:	61 e1       	ldi	r22, 0x11	; 17
   15e62:	74 e1       	ldi	r23, 0x14	; 20
   15e64:	48 e0       	ldi	r20, 0x08	; 8
   15e66:	50 e0       	ldi	r21, 0x00	; 0
   15e68:	0e 94 ab ef 	call	0x1df56	; 0x1df56 <memcpy_P>
	memcpy_P(p, p_P, 3);
   15e6c:	ce 01       	movw	r24, r28
   15e6e:	01 96       	adiw	r24, 0x01	; 1
   15e70:	69 e1       	ldi	r22, 0x19	; 25
   15e72:	74 e1       	ldi	r23, 0x14	; 20
   15e74:	43 e0       	ldi	r20, 0x03	; 3
   15e76:	50 e0       	ldi	r21, 0x00	; 0
   15e78:	0e 94 ab ef 	call	0x1df56	; 0x1df56 <memcpy_P>


	mask = TurnerC3_Endian2ByteSwap(pCfgBlock->channelMask);
   15e7c:	f6 01       	movw	r30, r12
   15e7e:	27 81       	ldd	r18, Z+7	; 0x07
uint16_t TurnerC3_Endian2ByteSwap(uint16_t val)
{
	uint16_t result = 0;

	result |= (LOBYTE(val)<<8);
	result |= (HIBYTE(val));
   15e80:	96 81       	ldd	r25, Z+6	; 0x06
   15e82:	80 e0       	ldi	r24, 0x00	; 0
   15e84:	30 e0       	ldi	r19, 0x00	; 0
   15e86:	28 2b       	or	r18, r24
   15e88:	39 2b       	or	r19, r25
   15e8a:	f7 01       	movw	r30, r14
   15e8c:	a6 01       	movw	r20, r12
   15e8e:	48 01       	movw	r8, r16

	mask = TurnerC3_Endian2ByteSwap(pCfgBlock->channelMask);
	for(int i=0; i<8; i++)
	{
		if((mask & 0x01) == 1)
			c[i] = 'Y';
   15e90:	b9 e5       	ldi	r27, 0x59	; 89
   15e92:	fb 2e       	mov	r15, r27
		{
			case 0:
				g[i] = 1;
				break;
			case 1:
				g[i] = 10;
   15e94:	0a e0       	ldi	r16, 0x0A	; 10
			c[i] = 'Y';
		mask = mask>>1;
		switch(pCfgBlock->gainControl[i])
		{
			case 0:
				g[i] = 1;
   15e96:	11 e0       	ldi	r17, 0x01	; 1
				break;
			case 1:
				g[i] = 10;
				break;
			case 2:
				g[i] = 100;
   15e98:	94 e6       	ldi	r25, 0x64	; 100
	memcpy_P(c, c_P, 8);
	memcpy_P(p, p_P, 3);


	mask = TurnerC3_Endian2ByteSwap(pCfgBlock->channelMask);
	for(int i=0; i<8; i++)
   15e9a:	be 01       	movw	r22, r28
   15e9c:	6c 5e       	subi	r22, 0xEC	; 236
   15e9e:	7f 4f       	sbci	r23, 0xFF	; 255
	{
		if((mask & 0x01) == 1)
   15ea0:	20 ff       	sbrs	r18, 0
   15ea2:	02 c0       	rjmp	.+4      	; 0x15ea8 <TurnerC3_XmitConfiguration+0x90>
			c[i] = 'Y';
   15ea4:	d4 01       	movw	r26, r8
   15ea6:	fc 92       	st	X, r15
		mask = mask>>1;
		switch(pCfgBlock->gainControl[i])
   15ea8:	da 01       	movw	r26, r20
   15eaa:	18 96       	adiw	r26, 0x08	; 8
   15eac:	8c 91       	ld	r24, X
   15eae:	81 30       	cpi	r24, 0x01	; 1
   15eb0:	39 f0       	breq	.+14     	; 0x15ec0 <TurnerC3_XmitConfiguration+0xa8>
   15eb2:	81 30       	cpi	r24, 0x01	; 1
   15eb4:	18 f0       	brcs	.+6      	; 0x15ebc <TurnerC3_XmitConfiguration+0xa4>
   15eb6:	82 30       	cpi	r24, 0x02	; 2
   15eb8:	39 f4       	brne	.+14     	; 0x15ec8 <TurnerC3_XmitConfiguration+0xb0>
   15eba:	04 c0       	rjmp	.+8      	; 0x15ec4 <TurnerC3_XmitConfiguration+0xac>
		{
			case 0:
				g[i] = 1;
   15ebc:	10 83       	st	Z, r17
   15ebe:	05 c0       	rjmp	.+10     	; 0x15eca <TurnerC3_XmitConfiguration+0xb2>
				break;
			case 1:
				g[i] = 10;
   15ec0:	00 83       	st	Z, r16
   15ec2:	03 c0       	rjmp	.+6      	; 0x15eca <TurnerC3_XmitConfiguration+0xb2>
				break;
			case 2:
				g[i] = 100;
   15ec4:	90 83       	st	Z, r25
   15ec6:	01 c0       	rjmp	.+2      	; 0x15eca <TurnerC3_XmitConfiguration+0xb2>
				break;
			default:
				g[i] = 0;
   15ec8:	10 82       	st	Z, r1
   15eca:	31 96       	adiw	r30, 0x01	; 1
   15ecc:	4f 5f       	subi	r20, 0xFF	; 255
   15ece:	5f 4f       	sbci	r21, 0xFF	; 255
   15ed0:	08 94       	sec
   15ed2:	81 1c       	adc	r8, r1
   15ed4:	91 1c       	adc	r9, r1
	memcpy_P(c, c_P, 8);
	memcpy_P(p, p_P, 3);


	mask = TurnerC3_Endian2ByteSwap(pCfgBlock->channelMask);
	for(int i=0; i<8; i++)
   15ed6:	e6 17       	cp	r30, r22
   15ed8:	f7 07       	cpc	r31, r23
   15eda:	19 f0       	breq	.+6      	; 0x15ee2 <TurnerC3_XmitConfiguration+0xca>
	{
		if((mask & 0x01) == 1)
			c[i] = 'Y';
		mask = mask>>1;
   15edc:	36 95       	lsr	r19
   15ede:	27 95       	ror	r18
   15ee0:	df cf       	rjmp	.-66     	; 0x15ea0 <TurnerC3_XmitConfiguration+0x88>
			default:
				g[i] = 0;
				break;
		}
	}
	if(pCfgBlock->idlePower == 1)
   15ee2:	f6 01       	movw	r30, r12
   15ee4:	82 89       	ldd	r24, Z+18	; 0x12
   15ee6:	81 30       	cpi	r24, 0x01	; 1
   15ee8:	41 f4       	brne	.+16     	; 0x15efa <TurnerC3_XmitConfiguration+0xe2>
	{
		memcpy_P(p, on_P, 3);
   15eea:	ce 01       	movw	r24, r28
   15eec:	01 96       	adiw	r24, 0x01	; 1
   15eee:	6c e1       	ldi	r22, 0x1C	; 28
   15ef0:	74 e1       	ldi	r23, 0x14	; 20
   15ef2:	43 e0       	ldi	r20, 0x03	; 3
   15ef4:	50 e0       	ldi	r21, 0x00	; 0
   15ef6:	0e 94 ab ef 	call	0x1df56	; 0x1df56 <memcpy_P>
		//p[1]='n';
		//p[2]=' ';
	}
#define X_CFG pTaskInfo->pBuf->reportASCII

	X_CFG.headerReport.payloadType = 0x00000060;
   15efa:	d5 01       	movw	r26, r10
   15efc:	14 96       	adiw	r26, 0x04	; 4
   15efe:	ed 91       	ld	r30, X+
   15f00:	fc 91       	ld	r31, X
   15f02:	15 97       	sbiw	r26, 0x05	; 5
   15f04:	ed 5a       	subi	r30, 0xAD	; 173
   15f06:	f9 4f       	sbci	r31, 0xF9	; 249
   15f08:	80 e6       	ldi	r24, 0x60	; 96
   15f0a:	90 e0       	ldi	r25, 0x00	; 0
   15f0c:	a0 e0       	ldi	r26, 0x00	; 0
   15f0e:	b0 e0       	ldi	r27, 0x00	; 0
   15f10:	81 93       	st	Z+, r24
   15f12:	91 93       	st	Z+, r25
   15f14:	a1 93       	st	Z+, r26
   15f16:	b1 93       	st	Z+, r27
	X_CFG.headerReport.boardID = mainBoardID;
   15f18:	80 91 e6 03 	lds	r24, 0x03E6
   15f1c:	80 83       	st	Z, r24
	X_CFG.headerReport.taskID = pTaskInfo->taskID;
   15f1e:	d5 01       	movw	r26, r10
   15f20:	14 96       	adiw	r26, 0x04	; 4
   15f22:	ed 91       	ld	r30, X+
   15f24:	fc 91       	ld	r31, X
   15f26:	15 97       	sbiw	r26, 0x05	; 5
   15f28:	e8 5a       	subi	r30, 0xA8	; 168
   15f2a:	f9 4f       	sbci	r31, 0xF9	; 249
   15f2c:	8c 91       	ld	r24, X
   15f2e:	80 83       	st	Z, r24
	X_CFG.headerReport.dataFormat = 2;
   15f30:	14 96       	adiw	r26, 0x04	; 4
   15f32:	ed 91       	ld	r30, X+
   15f34:	fc 91       	ld	r31, X
   15f36:	15 97       	sbiw	r26, 0x05	; 5
   15f38:	e7 5a       	subi	r30, 0xA7	; 167
   15f3a:	f9 4f       	sbci	r31, 0xF9	; 249
   15f3c:	80 81       	ld	r24, Z
   15f3e:	80 7f       	andi	r24, 0xF0	; 240
   15f40:	82 60       	ori	r24, 0x02	; 2
   15f42:	80 83       	st	Z, r24
	X_CFG.headerReport.parser = 1;
   15f44:	14 96       	adiw	r26, 0x04	; 4
   15f46:	ed 91       	ld	r30, X+
   15f48:	fc 91       	ld	r31, X
   15f4a:	15 97       	sbiw	r26, 0x05	; 5
   15f4c:	e7 5a       	subi	r30, 0xA7	; 167
   15f4e:	f9 4f       	sbci	r31, 0xF9	; 249
   15f50:	80 81       	ld	r24, Z
   15f52:	80 61       	ori	r24, 0x10	; 16
   15f54:	80 83       	st	Z, r24
	X_CFG.headerReport.priority = 2;
   15f56:	14 96       	adiw	r26, 0x04	; 4
   15f58:	ed 91       	ld	r30, X+
   15f5a:	fc 91       	ld	r31, X
   15f5c:	15 97       	sbiw	r26, 0x05	; 5
   15f5e:	e7 5a       	subi	r30, 0xA7	; 167
   15f60:	f9 4f       	sbci	r31, 0xF9	; 249
   15f62:	80 81       	ld	r24, Z
   15f64:	8f 71       	andi	r24, 0x1F	; 31
   15f66:	80 64       	ori	r24, 0x40	; 64
   15f68:	80 83       	st	Z, r24
	X_CFG.headerReport.repeatCount = 1;
   15f6a:	14 96       	adiw	r26, 0x04	; 4
   15f6c:	ed 91       	ld	r30, X+
   15f6e:	fc 91       	ld	r31, X
   15f70:	15 97       	sbiw	r26, 0x05	; 5
   15f72:	e6 5a       	subi	r30, 0xA6	; 166
   15f74:	f9 4f       	sbci	r31, 0xF9	; 249
   15f76:	81 e0       	ldi	r24, 0x01	; 1
   15f78:	80 83       	st	Z, r24

	X_CFG.headerData.latitude = latitude;
   15f7a:	14 96       	adiw	r26, 0x04	; 4
   15f7c:	0d 91       	ld	r16, X+
   15f7e:	1c 91       	ld	r17, X
   15f80:	15 97       	sbiw	r26, 0x05	; 5
   15f82:	05 5a       	subi	r16, 0xA5	; 165
   15f84:	19 4f       	sbci	r17, 0xF9	; 249
   15f86:	80 91 e5 b7 	lds	r24, 0xB7E5
   15f8a:	90 91 e6 b7 	lds	r25, 0xB7E6
   15f8e:	a0 91 e7 b7 	lds	r26, 0xB7E7
   15f92:	b0 91 e8 b7 	lds	r27, 0xB7E8
   15f96:	f8 01       	movw	r30, r16
   15f98:	81 93       	st	Z+, r24
   15f9a:	91 93       	st	Z+, r25
   15f9c:	a1 93       	st	Z+, r26
   15f9e:	b1 93       	st	Z+, r27
	X_CFG.headerData.longitude = longitude;
   15fa0:	80 91 e9 b7 	lds	r24, 0xB7E9
   15fa4:	90 91 ea b7 	lds	r25, 0xB7EA
   15fa8:	a0 91 eb b7 	lds	r26, 0xB7EB
   15fac:	b0 91 ec b7 	lds	r27, 0xB7EC
   15fb0:	81 93       	st	Z+, r24
   15fb2:	91 93       	st	Z+, r25
   15fb4:	a1 93       	st	Z+, r26
   15fb6:	b1 93       	st	Z+, r27
   15fb8:	8f 01       	movw	r16, r30
	X_CFG.headerData.timestamp = gettime();
   15fba:	0e 94 3c 34 	call	0x6878	; 0x6878 <gettime>
   15fbe:	d8 01       	movw	r26, r16
   15fc0:	6d 93       	st	X+, r22
   15fc2:	7d 93       	st	X+, r23
   15fc4:	8d 93       	st	X+, r24
   15fc6:	9c 93       	st	X, r25
   15fc8:	13 97       	sbiw	r26, 0x03	; 3

	memset(pTaskInfo->pBuf->reportASCII.data, 0, 165);
   15fca:	f5 01       	movw	r30, r10
   15fcc:	84 81       	ldd	r24, Z+4	; 0x04
   15fce:	95 81       	ldd	r25, Z+5	; 0x05
   15fd0:	89 59       	subi	r24, 0x99	; 153
   15fd2:	99 4f       	sbci	r25, 0xF9	; 249
   15fd4:	fc 01       	movw	r30, r24
   15fd6:	85 ea       	ldi	r24, 0xA5	; 165
   15fd8:	df 01       	movw	r26, r30
   15fda:	1d 92       	st	X+, r1
   15fdc:	8a 95       	dec	r24
   15fde:	e9 f7       	brne	.-6      	; 0x15fda <TurnerC3_XmitConfiguration+0x1c2>

	avgNumReadings = TurnerC3_Endian2ByteSwap(pCfgBlock->numReadingsAvg);
   15fe0:	f6 01       	movw	r30, r12
   15fe2:	e0 88       	ldd	r14, Z+16	; 0x10
   15fe4:	91 88       	ldd	r9, Z+17	; 0x11
	numSamples = TurnerC3_Endian2ByteSwap(pCfgBlock->numSamples);
   15fe6:	10 81       	ld	r17, Z
   15fe8:	21 81       	ldd	r18, Z+1	; 0x01
	samplePeriod = TurnerC3_Endian2ByteSwap(pCfgBlock->period);
   15fea:	02 81       	ldd	r16, Z+2	; 0x02
   15fec:	43 81       	ldd	r20, Z+3	; 0x03
	powerOnDelay = TurnerC3_Endian2ByteSwap(pCfgBlock->powerOnDelay);
   15fee:	f4 80       	ldd	r15, Z+4	; 0x04
   15ff0:	65 81       	ldd	r22, Z+5	; 0x05

	sprintf_P(pTaskInfo->pBuf->reportASCII.data, PSTR("Samples:%d Period:%d On Delay:%d C1:%c C2:%c C3:%c C4:%c C5:%c C6:%c P:%c T:%c G1:%d G2:%d G3:%d G4:%d G5:%d G6:%d G7:%d G8:%d Avg#:%d Pwr:%c%c%c Wipes:%d"), 
   15ff2:	8d b7       	in	r24, 0x3d	; 61
   15ff4:	9e b7       	in	r25, 0x3e	; 62
   15ff6:	c4 97       	sbiw	r24, 0x34	; 52
   15ff8:	0f b6       	in	r0, 0x3f	; 63
   15ffa:	f8 94       	cli
   15ffc:	9e bf       	out	0x3e, r25	; 62
   15ffe:	0f be       	out	0x3f, r0	; 63
   16000:	8d bf       	out	0x3d, r24	; 61
   16002:	ed b7       	in	r30, 0x3d	; 61
   16004:	fe b7       	in	r31, 0x3e	; 62
   16006:	31 96       	adiw	r30, 0x01	; 1
   16008:	d5 01       	movw	r26, r10
   1600a:	14 96       	adiw	r26, 0x04	; 4
   1600c:	8d 91       	ld	r24, X+
   1600e:	9c 91       	ld	r25, X
   16010:	15 97       	sbiw	r26, 0x05	; 5
   16012:	89 59       	subi	r24, 0x99	; 153
   16014:	99 4f       	sbci	r25, 0xF9	; 249
   16016:	ad b7       	in	r26, 0x3d	; 61
   16018:	be b7       	in	r27, 0x3e	; 62
   1601a:	12 96       	adiw	r26, 0x02	; 2
   1601c:	9c 93       	st	X, r25
   1601e:	8e 93       	st	-X, r24
   16020:	11 97       	sbiw	r26, 0x01	; 1
   16022:	8d e2       	ldi	r24, 0x2D	; 45
   16024:	95 e1       	ldi	r25, 0x15	; 21
   16026:	93 83       	std	Z+3, r25	; 0x03
   16028:	82 83       	std	Z+2, r24	; 0x02
   1602a:	91 2f       	mov	r25, r17
   1602c:	80 e0       	ldi	r24, 0x00	; 0
   1602e:	30 e0       	ldi	r19, 0x00	; 0
   16030:	82 2b       	or	r24, r18
   16032:	93 2b       	or	r25, r19
   16034:	95 83       	std	Z+5, r25	; 0x05
   16036:	84 83       	std	Z+4, r24	; 0x04
   16038:	90 2f       	mov	r25, r16
   1603a:	80 e0       	ldi	r24, 0x00	; 0
   1603c:	50 e0       	ldi	r21, 0x00	; 0
   1603e:	84 2b       	or	r24, r20
   16040:	95 2b       	or	r25, r21
   16042:	97 83       	std	Z+7, r25	; 0x07
   16044:	86 83       	std	Z+6, r24	; 0x06
   16046:	9f 2d       	mov	r25, r15
   16048:	80 e0       	ldi	r24, 0x00	; 0
   1604a:	70 e0       	ldi	r23, 0x00	; 0
   1604c:	86 2b       	or	r24, r22
   1604e:	97 2b       	or	r25, r23
   16050:	91 87       	std	Z+9, r25	; 0x09
   16052:	80 87       	std	Z+8, r24	; 0x08
   16054:	8c 81       	ldd	r24, Y+4	; 0x04
   16056:	82 87       	std	Z+10, r24	; 0x0a
   16058:	13 86       	std	Z+11, r1	; 0x0b
   1605a:	8d 81       	ldd	r24, Y+5	; 0x05
   1605c:	84 87       	std	Z+12, r24	; 0x0c
   1605e:	15 86       	std	Z+13, r1	; 0x0d
   16060:	8e 81       	ldd	r24, Y+6	; 0x06
   16062:	86 87       	std	Z+14, r24	; 0x0e
   16064:	17 86       	std	Z+15, r1	; 0x0f
   16066:	8f 81       	ldd	r24, Y+7	; 0x07
   16068:	80 8b       	std	Z+16, r24	; 0x10
   1606a:	11 8a       	std	Z+17, r1	; 0x11
   1606c:	88 85       	ldd	r24, Y+8	; 0x08
   1606e:	82 8b       	std	Z+18, r24	; 0x12
   16070:	13 8a       	std	Z+19, r1	; 0x13
   16072:	89 85       	ldd	r24, Y+9	; 0x09
   16074:	84 8b       	std	Z+20, r24	; 0x14
   16076:	15 8a       	std	Z+21, r1	; 0x15
   16078:	8a 85       	ldd	r24, Y+10	; 0x0a
   1607a:	86 8b       	std	Z+22, r24	; 0x16
   1607c:	17 8a       	std	Z+23, r1	; 0x17
   1607e:	8b 85       	ldd	r24, Y+11	; 0x0b
   16080:	80 8f       	std	Z+24, r24	; 0x18
   16082:	11 8e       	std	Z+25, r1	; 0x19
   16084:	8c 85       	ldd	r24, Y+12	; 0x0c
   16086:	82 8f       	std	Z+26, r24	; 0x1a
   16088:	13 8e       	std	Z+27, r1	; 0x1b
   1608a:	8d 85       	ldd	r24, Y+13	; 0x0d
   1608c:	84 8f       	std	Z+28, r24	; 0x1c
   1608e:	15 8e       	std	Z+29, r1	; 0x1d
   16090:	8e 85       	ldd	r24, Y+14	; 0x0e
   16092:	86 8f       	std	Z+30, r24	; 0x1e
   16094:	17 8e       	std	Z+31, r1	; 0x1f
   16096:	8f 85       	ldd	r24, Y+15	; 0x0f
   16098:	80 a3       	std	Z+32, r24	; 0x20
   1609a:	11 a2       	std	Z+33, r1	; 0x21
   1609c:	88 89       	ldd	r24, Y+16	; 0x10
   1609e:	82 a3       	std	Z+34, r24	; 0x22
   160a0:	13 a2       	std	Z+35, r1	; 0x23
   160a2:	89 89       	ldd	r24, Y+17	; 0x11
   160a4:	84 a3       	std	Z+36, r24	; 0x24
   160a6:	15 a2       	std	Z+37, r1	; 0x25
   160a8:	8a 89       	ldd	r24, Y+18	; 0x12
   160aa:	86 a3       	std	Z+38, r24	; 0x26
   160ac:	17 a2       	std	Z+39, r1	; 0x27
   160ae:	8b 89       	ldd	r24, Y+19	; 0x13
   160b0:	80 a7       	std	Z+40, r24	; 0x28
   160b2:	11 a6       	std	Z+41, r1	; 0x29
   160b4:	9e 2d       	mov	r25, r14
   160b6:	80 e0       	ldi	r24, 0x00	; 0
   160b8:	a9 2d       	mov	r26, r9
   160ba:	b0 e0       	ldi	r27, 0x00	; 0
   160bc:	8a 2b       	or	r24, r26
   160be:	9b 2b       	or	r25, r27
   160c0:	93 a7       	std	Z+43, r25	; 0x2b
   160c2:	82 a7       	std	Z+42, r24	; 0x2a
   160c4:	89 81       	ldd	r24, Y+1	; 0x01
   160c6:	84 a7       	std	Z+44, r24	; 0x2c
   160c8:	15 a6       	std	Z+45, r1	; 0x2d
   160ca:	8a 81       	ldd	r24, Y+2	; 0x02
   160cc:	86 a7       	std	Z+46, r24	; 0x2e
   160ce:	17 a6       	std	Z+47, r1	; 0x2f
   160d0:	8b 81       	ldd	r24, Y+3	; 0x03
   160d2:	80 ab       	std	Z+48, r24	; 0x30
   160d4:	11 aa       	std	Z+49, r1	; 0x31
   160d6:	d6 01       	movw	r26, r12
   160d8:	53 96       	adiw	r26, 0x13	; 19
   160da:	8c 91       	ld	r24, X
   160dc:	82 ab       	std	Z+50, r24	; 0x32
   160de:	13 aa       	std	Z+51, r1	; 0x33
   160e0:	0e 94 51 f1 	call	0x1e2a2	; 0x1e2a2 <sprintf_P>
				c[0], c[1], c[2], c[3], c[4], c[5], c[6], c[7], 
				g[0], g[1], g[2], g[3], g[4], g[5], g[6], g[7], 
				avgNumReadings, p[0], p[1], p[2], pCfgBlock->numWiperRev);
#undef X_CFG

	length = sizeof(TYPE_91_REPORT_HEADER) + sizeof(TYPE_90_91_DATA_HEADER) + strlen(pTaskInfo->pBuf->reportASCII.data);
   160e4:	d5 01       	movw	r26, r10
   160e6:	14 96       	adiw	r26, 0x04	; 4
   160e8:	ed 91       	ld	r30, X+
   160ea:	fc 91       	ld	r31, X
   160ec:	15 97       	sbiw	r26, 0x05	; 5
   160ee:	e9 59       	subi	r30, 0x99	; 153
   160f0:	f9 4f       	sbci	r31, 0xF9	; 249
   160f2:	df 01       	movw	r26, r30
   160f4:	0d 90       	ld	r0, X+
   160f6:	00 20       	and	r0, r0
   160f8:	e9 f7       	brne	.-6      	; 0x160f4 <TurnerC3_XmitConfiguration+0x2dc>
   160fa:	ae 1b       	sub	r26, r30
	retval = TurnerC3_ASCIIReportXmit(pTaskInfo, length);
   160fc:	ed b7       	in	r30, 0x3d	; 61
   160fe:	fe b7       	in	r31, 0x3e	; 62
   16100:	f4 96       	adiw	r30, 0x34	; 52
   16102:	0f b6       	in	r0, 0x3f	; 63
   16104:	f8 94       	cli
   16106:	fe bf       	out	0x3e, r31	; 62
   16108:	0f be       	out	0x3f, r0	; 63
   1610a:	ed bf       	out	0x3d, r30	; 61
   1610c:	ad 5e       	subi	r26, 0xED	; 237
   1610e:	c5 01       	movw	r24, r10
   16110:	6a 2f       	mov	r22, r26
   16112:	0e 94 77 ab 	call	0x156ee	; 0x156ee <TurnerC3_ASCIIReportXmit>
	memset(&(pTaskInfo->pBuf->reportASCII), 0, sizeof(C3_ASCII_REPORT));
   16116:	d5 01       	movw	r26, r10
   16118:	14 96       	adiw	r26, 0x04	; 4
   1611a:	2d 91       	ld	r18, X+
   1611c:	3c 91       	ld	r19, X
   1611e:	15 97       	sbiw	r26, 0x05	; 5
   16120:	2d 5a       	subi	r18, 0xAD	; 173
   16122:	39 4f       	sbci	r19, 0xF9	; 249
   16124:	99 eb       	ldi	r25, 0xB9	; 185
   16126:	d9 01       	movw	r26, r18
   16128:	1d 92       	st	X+, r1
   1612a:	9a 95       	dec	r25
   1612c:	e9 f7       	brne	.-6      	; 0x16128 <TurnerC3_XmitConfiguration+0x310>


	return retval;
}
   1612e:	63 96       	adiw	r28, 0x13	; 19
   16130:	0f b6       	in	r0, 0x3f	; 63
   16132:	f8 94       	cli
   16134:	de bf       	out	0x3e, r29	; 62
   16136:	0f be       	out	0x3f, r0	; 63
   16138:	cd bf       	out	0x3d, r28	; 61
   1613a:	cf 91       	pop	r28
   1613c:	df 91       	pop	r29
   1613e:	1f 91       	pop	r17
   16140:	0f 91       	pop	r16
   16142:	ff 90       	pop	r15
   16144:	ef 90       	pop	r14
   16146:	df 90       	pop	r13
   16148:	cf 90       	pop	r12
   1614a:	bf 90       	pop	r11
   1614c:	af 90       	pop	r10
   1614e:	9f 90       	pop	r9
   16150:	8f 90       	pop	r8
   16152:	08 95       	ret

00016154 <TurnerC3_DataReportXmit>:
//
//	return retval;
//}

uint8_t TurnerC3_DataReportXmit(PTURNER_C3_TASK pTaskInfo)
{
   16154:	0f 93       	push	r16
   16156:	1f 93       	push	r17
   16158:	df 93       	push	r29
   1615a:	cf 93       	push	r28
   1615c:	0f 92       	push	r0
   1615e:	cd b7       	in	r28, 0x3d	; 61
   16160:	de b7       	in	r29, 0x3e	; 62
   16162:	8c 01       	movw	r16, r24
	uint8_t retval = 0;
	uint8_t err = 0;
   16164:	19 82       	std	Y+1, r1	; 0x01
	PTURNER_C3_DATA_REPORT_XMIT pReport = NULL;

	OSMutexPend(pMutexFloatQueue, INFINITE, &err);
   16166:	80 91 51 19 	lds	r24, 0x1951
   1616a:	90 91 52 19 	lds	r25, 0x1952
   1616e:	60 e0       	ldi	r22, 0x00	; 0
   16170:	70 e0       	ldi	r23, 0x00	; 0
   16172:	ae 01       	movw	r20, r28
   16174:	4f 5f       	subi	r20, 0xFF	; 255
   16176:	5f 4f       	sbci	r21, 0xFF	; 255
   16178:	0e 94 c2 28 	call	0x5184	; 0x5184 <OSMutexPend>

	pReport = (PTURNER_C3_DATA_REPORT_XMIT)&(txFloatData[headFloatTx]);
   1617c:	80 91 93 07 	lds	r24, 0x0793
   16180:	90 e0       	ldi	r25, 0x00	; 0
   16182:	26 e3       	ldi	r18, 0x36	; 54
   16184:	31 e0       	ldi	r19, 0x01	; 1
   16186:	82 9f       	mul	r24, r18
   16188:	f0 01       	movw	r30, r0
   1618a:	83 9f       	mul	r24, r19
   1618c:	f0 0d       	add	r31, r0
   1618e:	92 9f       	mul	r25, r18
   16190:	f0 0d       	add	r31, r0
   16192:	11 24       	eor	r1, r1
   16194:	e3 5a       	subi	r30, 0xA3	; 163
   16196:	f6 45       	sbci	r31, 0x56	; 86
	memset(pReport, 0, sizeof(FLOAT_TX_BUFFER));
   16198:	df 01       	movw	r26, r30
   1619a:	c9 01       	movw	r24, r18
   1619c:	1d 92       	st	X+, r1
   1619e:	01 97       	sbiw	r24, 0x01	; 1
   161a0:	e9 f7       	brne	.-6      	; 0x1619c <TurnerC3_DataReportXmit+0x48>

	pReport->comm.headers.length  = sizeof(TURNER_C3_DATA_REPORT_XMIT) + CRC16_SIZE;
   161a2:	83 eb       	ldi	r24, 0xB3	; 179
   161a4:	90 e0       	ldi	r25, 0x00	; 0
   161a6:	91 83       	std	Z+1, r25	; 0x01
   161a8:	80 83       	st	Z, r24
	pReport->comm.headers.destination = FLOAT_IRIDIUM_INTERFACE;
   161aa:	82 e0       	ldi	r24, 0x02	; 2
   161ac:	90 e0       	ldi	r25, 0x00	; 0
   161ae:	93 83       	std	Z+3, r25	; 0x03
   161b0:	82 83       	std	Z+2, r24	; 0x02

	pReport->comm.iridiumInfo.structureType = 0x91;
   161b2:	81 e9       	ldi	r24, 0x91	; 145
   161b4:	84 87       	std	Z+12, r24	; 0x0c
	pReport->comm.iridiumInfo.size = pReport->comm.headers.length - sizeof(PIB_IRIDIUM_DATA_XMIT) - CRC16_SIZE;
   161b6:	82 ea       	ldi	r24, 0xA2	; 162
   161b8:	90 e0       	ldi	r25, 0x00	; 0
   161ba:	96 87       	std	Z+14, r25	; 0x0e
   161bc:	85 87       	std	Z+13, r24	; 0x0d


	memcpy(&(pReport->reportData), &(pTaskInfo->pBuf->reportData), sizeof(C3_DATA_REPORT));
   161be:	d8 01       	movw	r26, r16
   161c0:	14 96       	adiw	r26, 0x04	; 4
   161c2:	2d 91       	ld	r18, X+
   161c4:	3c 91       	ld	r19, X
   161c6:	15 97       	sbiw	r26, 0x05	; 5
   161c8:	3f 96       	adiw	r30, 0x0f	; 15
   161ca:	2f 54       	subi	r18, 0x4F	; 79
   161cc:	3a 4f       	sbci	r19, 0xFA	; 250
   161ce:	82 ea       	ldi	r24, 0xA2	; 162
   161d0:	d9 01       	movw	r26, r18
   161d2:	0d 90       	ld	r0, X+
   161d4:	9d 01       	movw	r18, r26
   161d6:	01 92       	st	Z+, r0
   161d8:	81 50       	subi	r24, 0x01	; 1
   161da:	d1 f7       	brne	.-12     	; 0x161d0 <TurnerC3_DataReportXmit+0x7c>


	(headFloatTx < MAX_FLOAT_BUFFERS - 1) ? (headFloatTx++) : (headFloatTx = 0);
   161dc:	80 91 93 07 	lds	r24, 0x0793
   161e0:	87 30       	cpi	r24, 0x07	; 7
   161e2:	20 f4       	brcc	.+8      	; 0x161ec <TurnerC3_DataReportXmit+0x98>
   161e4:	8f 5f       	subi	r24, 0xFF	; 255
   161e6:	80 93 93 07 	sts	0x0793, r24
   161ea:	02 c0       	rjmp	.+4      	; 0x161f0 <TurnerC3_DataReportXmit+0x9c>
   161ec:	10 92 93 07 	sts	0x0793, r1

	if(headFloatTx == tailFloatTx)
   161f0:	90 91 93 07 	lds	r25, 0x0793
   161f4:	80 91 94 07 	lds	r24, 0x0794
   161f8:	98 17       	cp	r25, r24
   161fa:	41 f4       	brne	.+16     	; 0x1620c <TurnerC3_DataReportXmit+0xb8>
	{
		(tailFloatTx < MAX_FLOAT_BUFFERS - 1) ? (tailFloatTx++) : (tailFloatTx = 0);
   161fc:	97 30       	cpi	r25, 0x07	; 7
   161fe:	20 f4       	brcc	.+8      	; 0x16208 <TurnerC3_DataReportXmit+0xb4>
   16200:	9f 5f       	subi	r25, 0xFF	; 255
   16202:	90 93 94 07 	sts	0x0794, r25
   16206:	02 c0       	rjmp	.+4      	; 0x1620c <TurnerC3_DataReportXmit+0xb8>
   16208:	10 92 94 07 	sts	0x0794, r1
	}

	OSMutexPost(pMutexFloatQueue);
   1620c:	80 91 51 19 	lds	r24, 0x1951
   16210:	90 91 52 19 	lds	r25, 0x1952
   16214:	0e 94 36 27 	call	0x4e6c	; 0x4e6c <OSMutexPost>

	return retval;
}
   16218:	80 e0       	ldi	r24, 0x00	; 0
   1621a:	0f 90       	pop	r0
   1621c:	cf 91       	pop	r28
   1621e:	df 91       	pop	r29
   16220:	1f 91       	pop	r17
   16222:	0f 91       	pop	r16
   16224:	08 95       	ret

00016226 <TurnerC3_GetCurrentData>:
}



void TurnerC3_GetCurrentData(PTURNER_C3_TASK pTaskInfo)
{
   16226:	2f 92       	push	r2
   16228:	3f 92       	push	r3
   1622a:	4f 92       	push	r4
   1622c:	5f 92       	push	r5
   1622e:	6f 92       	push	r6
   16230:	7f 92       	push	r7
   16232:	8f 92       	push	r8
   16234:	9f 92       	push	r9
   16236:	af 92       	push	r10
   16238:	bf 92       	push	r11
   1623a:	cf 92       	push	r12
   1623c:	df 92       	push	r13
   1623e:	ef 92       	push	r14
   16240:	ff 92       	push	r15
   16242:	0f 93       	push	r16
   16244:	1f 93       	push	r17
   16246:	df 93       	push	r29
   16248:	cf 93       	push	r28
   1624a:	0f 92       	push	r0
   1624c:	0f 92       	push	r0
   1624e:	cd b7       	in	r28, 0x3d	; 61
   16250:	de b7       	in	r29, 0x3e	; 62
   16252:	1c 01       	movw	r2, r24
	uint16_t len = 0;
   16254:	1a 82       	std	Y+2, r1	; 0x02
   16256:	19 82       	std	Y+1, r1	; 0x01
	PC3_CURRENT_DATA_BLOCK pData;
	uint16_t	halfDays;
	uint16_t	seconds;

#define X_COUNT pTaskInfo->pBuf->sampleCount
	memset(pTaskInfo->pBuf->bufferRx, 0, 1024);
   16258:	dc 01       	movw	r26, r24
   1625a:	14 96       	adiw	r26, 0x04	; 4
   1625c:	8d 91       	ld	r24, X+
   1625e:	9c 91       	ld	r25, X
   16260:	15 97       	sbiw	r26, 0x05	; 5
   16262:	80 50       	subi	r24, 0x00	; 0
   16264:	9f 4f       	sbci	r25, 0xFF	; 255
   16266:	fc 01       	movw	r30, r24
   16268:	80 e0       	ldi	r24, 0x00	; 0
   1626a:	94 e0       	ldi	r25, 0x04	; 4
   1626c:	df 01       	movw	r26, r30
   1626e:	9c 01       	movw	r18, r24
   16270:	1d 92       	st	X+, r1
   16272:	21 50       	subi	r18, 0x01	; 1
   16274:	30 40       	sbci	r19, 0x00	; 0
   16276:	e1 f7       	brne	.-8      	; 0x16270 <TurnerC3_GetCurrentData+0x4a>
	retval = TurnerC3_Rx_Len(pTaskInfo, pTaskInfo->pBuf->bufferRx, &len, maxLen, 2 * QUARTER_SECOND);	//1/2 second timeout on current data -- no need to wait if not available yet
   16278:	d1 01       	movw	r26, r2
   1627a:	14 96       	adiw	r26, 0x04	; 4
   1627c:	6d 91       	ld	r22, X+
   1627e:	7c 91       	ld	r23, X
   16280:	15 97       	sbiw	r26, 0x05	; 5
   16282:	60 50       	subi	r22, 0x00	; 0
   16284:	7f 4f       	sbci	r23, 0xFF	; 255
   16286:	c1 01       	movw	r24, r2
   16288:	ae 01       	movw	r20, r28
   1628a:	4f 5f       	subi	r20, 0xFF	; 255
   1628c:	5f 4f       	sbci	r21, 0xFF	; 255
   1628e:	28 e1       	ldi	r18, 0x18	; 24
   16290:	30 e0       	ldi	r19, 0x00	; 0
   16292:	00 e4       	ldi	r16, 0x40	; 64
   16294:	10 e0       	ldi	r17, 0x00	; 0
   16296:	0e 94 0f a9 	call	0x1521e	; 0x1521e <TurnerC3_Rx_Len>

	if(retval == SUCCESS)
   1629a:	8f 3f       	cpi	r24, 0xFF	; 255
   1629c:	09 f0       	breq	.+2      	; 0x162a0 <TurnerC3_GetCurrentData+0x7a>
   1629e:	3c c1       	rjmp	.+632    	; 0x16518 <TurnerC3_GetCurrentData+0x2f2>
	{
		pData = (PC3_CURRENT_DATA_BLOCK)(pTaskInfo->pBuf->bufferRx + 2);
   162a0:	f1 01       	movw	r30, r2
   162a2:	64 80       	ldd	r6, Z+4	; 0x04
   162a4:	75 80       	ldd	r7, Z+5	; 0x05
   162a6:	92 e0       	ldi	r25, 0x02	; 2
   162a8:	a9 2e       	mov	r10, r25
   162aa:	91 e0       	ldi	r25, 0x01	; 1
   162ac:	b9 2e       	mov	r11, r25
   162ae:	a6 0c       	add	r10, r6
   162b0:	b7 1c       	adc	r11, r7

		pTaskInfo->pBuf->reportData.dataBlock[X_COUNT].headerData.latitude = latitude;
   162b2:	80 eb       	ldi	r24, 0xB0	; 176
   162b4:	48 2e       	mov	r4, r24
   162b6:	85 e0       	ldi	r24, 0x05	; 5
   162b8:	58 2e       	mov	r5, r24
   162ba:	46 0c       	add	r4, r6
   162bc:	57 1c       	adc	r5, r7
   162be:	d2 01       	movw	r26, r4
   162c0:	8c 91       	ld	r24, X
   162c2:	90 e0       	ldi	r25, 0x00	; 0
   162c4:	06 e1       	ldi	r16, 0x16	; 22
   162c6:	80 2e       	mov	r8, r16
   162c8:	91 2c       	mov	r9, r1
   162ca:	88 9d       	mul	r24, r8
   162cc:	f0 01       	movw	r30, r0
   162ce:	89 9d       	mul	r24, r9
   162d0:	f0 0d       	add	r31, r0
   162d2:	98 9d       	mul	r25, r8
   162d4:	f0 0d       	add	r31, r0
   162d6:	11 24       	eor	r1, r1
   162d8:	e6 0d       	add	r30, r6
   162da:	f7 1d       	adc	r31, r7
   162dc:	e7 54       	subi	r30, 0x47	; 71
   162de:	fa 4f       	sbci	r31, 0xFA	; 250
   162e0:	80 91 e5 b7 	lds	r24, 0xB7E5
   162e4:	90 91 e6 b7 	lds	r25, 0xB7E6
   162e8:	a0 91 e7 b7 	lds	r26, 0xB7E7
   162ec:	b0 91 e8 b7 	lds	r27, 0xB7E8
   162f0:	80 83       	st	Z, r24
   162f2:	91 83       	std	Z+1, r25	; 0x01
   162f4:	a2 83       	std	Z+2, r26	; 0x02
   162f6:	b3 83       	std	Z+3, r27	; 0x03
		pTaskInfo->pBuf->reportData.dataBlock[X_COUNT].headerData.longitude = longitude;
   162f8:	f2 01       	movw	r30, r4
   162fa:	80 81       	ld	r24, Z
   162fc:	90 e0       	ldi	r25, 0x00	; 0
   162fe:	88 9d       	mul	r24, r8
   16300:	f0 01       	movw	r30, r0
   16302:	89 9d       	mul	r24, r9
   16304:	f0 0d       	add	r31, r0
   16306:	98 9d       	mul	r25, r8
   16308:	f0 0d       	add	r31, r0
   1630a:	11 24       	eor	r1, r1
   1630c:	e6 0d       	add	r30, r6
   1630e:	f7 1d       	adc	r31, r7
   16310:	e3 54       	subi	r30, 0x43	; 67
   16312:	fa 4f       	sbci	r31, 0xFA	; 250
   16314:	80 91 e9 b7 	lds	r24, 0xB7E9
   16318:	90 91 ea b7 	lds	r25, 0xB7EA
   1631c:	a0 91 eb b7 	lds	r26, 0xB7EB
   16320:	b0 91 ec b7 	lds	r27, 0xB7EC
   16324:	80 83       	st	Z, r24
   16326:	91 83       	std	Z+1, r25	; 0x01
   16328:	a2 83       	std	Z+2, r26	; 0x02
   1632a:	b3 83       	std	Z+3, r27	; 0x03
		halfDays = TurnerC3_Endian2ByteSwap(pData->c3DateTime.halfdays);
   1632c:	d5 01       	movw	r26, r10
   1632e:	51 96       	adiw	r26, 0x11	; 17
   16330:	4c 91       	ld	r20, X
   16332:	51 97       	sbiw	r26, 0x11	; 17
		seconds = TurnerC3_Endian2ByteSwap(pData->c3DateTime.seconds);
   16334:	53 96       	adiw	r26, 0x13	; 19
   16336:	2c 91       	ld	r18, X
   16338:	53 97       	sbiw	r26, 0x13	; 19
		pTaskInfo->pBuf->reportData.dataBlock[X_COUNT].headerData.timestamp = halfDays * 43200 + seconds + JAN_1_2000;
   1633a:	f2 01       	movw	r30, r4
   1633c:	80 81       	ld	r24, Z
   1633e:	90 e0       	ldi	r25, 0x00	; 0
   16340:	88 9d       	mul	r24, r8
   16342:	60 01       	movw	r12, r0
   16344:	89 9d       	mul	r24, r9
   16346:	d0 0c       	add	r13, r0
   16348:	98 9d       	mul	r25, r8
   1634a:	d0 0c       	add	r13, r0
   1634c:	11 24       	eor	r1, r1
   1634e:	c6 0c       	add	r12, r6
   16350:	d7 1c       	adc	r13, r7
   16352:	81 ec       	ldi	r24, 0xC1	; 193
   16354:	95 e0       	ldi	r25, 0x05	; 5
   16356:	c8 0e       	add	r12, r24
   16358:	d9 1e       	adc	r13, r25
   1635a:	52 96       	adiw	r26, 0x12	; 18
   1635c:	fc 90       	ld	r15, X
   1635e:	ee 24       	eor	r14, r14
   16360:	30 e0       	ldi	r19, 0x00	; 0
   16362:	e2 2a       	or	r14, r18
   16364:	f3 2a       	or	r15, r19
   16366:	00 e0       	ldi	r16, 0x00	; 0
   16368:	10 e0       	ldi	r17, 0x00	; 0
   1636a:	80 e8       	ldi	r24, 0x80	; 128
   1636c:	93 e4       	ldi	r25, 0x43	; 67
   1636e:	ad e6       	ldi	r26, 0x6D	; 109
   16370:	b8 e3       	ldi	r27, 0x38	; 56
   16372:	e8 0e       	add	r14, r24
   16374:	f9 1e       	adc	r15, r25
   16376:	0a 1f       	adc	r16, r26
   16378:	1b 1f       	adc	r17, r27
   1637a:	d5 01       	movw	r26, r10
   1637c:	50 96       	adiw	r26, 0x10	; 16
   1637e:	7c 91       	ld	r23, X
   16380:	60 e0       	ldi	r22, 0x00	; 0
   16382:	50 e0       	ldi	r21, 0x00	; 0
   16384:	64 2b       	or	r22, r20
   16386:	75 2b       	or	r23, r21
   16388:	80 e0       	ldi	r24, 0x00	; 0
   1638a:	90 e0       	ldi	r25, 0x00	; 0
   1638c:	20 ec       	ldi	r18, 0xC0	; 192
   1638e:	38 ea       	ldi	r19, 0xA8	; 168
   16390:	40 e0       	ldi	r20, 0x00	; 0
   16392:	50 e0       	ldi	r21, 0x00	; 0
   16394:	0e 94 f2 f3 	call	0x1e7e4	; 0x1e7e4 <__mulsi3>
   16398:	e6 0e       	add	r14, r22
   1639a:	f7 1e       	adc	r15, r23
   1639c:	08 1f       	adc	r16, r24
   1639e:	19 1f       	adc	r17, r25
   163a0:	f6 01       	movw	r30, r12
   163a2:	e0 82       	st	Z, r14
   163a4:	f1 82       	std	Z+1, r15	; 0x01
   163a6:	02 83       	std	Z+2, r16	; 0x02
   163a8:	13 83       	std	Z+3, r17	; 0x03
		pTaskInfo->pBuf->reportData.dataBlock[X_COUNT].dataC1 = TurnerC3_Endian2ByteSwap(pData->sampleC1);
   163aa:	d5 01       	movw	r26, r10
   163ac:	11 96       	adiw	r26, 0x01	; 1
   163ae:	2c 91       	ld	r18, X
   163b0:	11 97       	sbiw	r26, 0x01	; 1
   163b2:	f2 01       	movw	r30, r4
   163b4:	80 81       	ld	r24, Z
   163b6:	90 e0       	ldi	r25, 0x00	; 0
   163b8:	88 9d       	mul	r24, r8
   163ba:	f0 01       	movw	r30, r0
   163bc:	89 9d       	mul	r24, r9
   163be:	f0 0d       	add	r31, r0
   163c0:	98 9d       	mul	r25, r8
   163c2:	f0 0d       	add	r31, r0
   163c4:	11 24       	eor	r1, r1
   163c6:	e6 0d       	add	r30, r6
   163c8:	f7 1d       	adc	r31, r7
   163ca:	eb 53       	subi	r30, 0x3B	; 59
   163cc:	fa 4f       	sbci	r31, 0xFA	; 250
   163ce:	9c 91       	ld	r25, X
   163d0:	80 e0       	ldi	r24, 0x00	; 0
   163d2:	30 e0       	ldi	r19, 0x00	; 0
   163d4:	82 2b       	or	r24, r18
   163d6:	93 2b       	or	r25, r19
   163d8:	91 83       	std	Z+1, r25	; 0x01
   163da:	80 83       	st	Z, r24
		pTaskInfo->pBuf->reportData.dataBlock[X_COUNT].dataC2 = TurnerC3_Endian2ByteSwap(pData->sampleC2);
   163dc:	13 96       	adiw	r26, 0x03	; 3
   163de:	2c 91       	ld	r18, X
   163e0:	d2 01       	movw	r26, r4
   163e2:	8c 91       	ld	r24, X
   163e4:	90 e0       	ldi	r25, 0x00	; 0
   163e6:	01 96       	adiw	r24, 0x01	; 1
   163e8:	88 9d       	mul	r24, r8
   163ea:	f0 01       	movw	r30, r0
   163ec:	89 9d       	mul	r24, r9
   163ee:	f0 0d       	add	r31, r0
   163f0:	98 9d       	mul	r25, r8
   163f2:	f0 0d       	add	r31, r0
   163f4:	11 24       	eor	r1, r1
   163f6:	e6 0d       	add	r30, r6
   163f8:	f7 1d       	adc	r31, r7
   163fa:	ef 54       	subi	r30, 0x4F	; 79
   163fc:	fa 4f       	sbci	r31, 0xFA	; 250
   163fe:	d5 01       	movw	r26, r10
   16400:	12 96       	adiw	r26, 0x02	; 2
   16402:	9c 91       	ld	r25, X
   16404:	12 97       	sbiw	r26, 0x02	; 2
   16406:	80 e0       	ldi	r24, 0x00	; 0
   16408:	30 e0       	ldi	r19, 0x00	; 0
   1640a:	82 2b       	or	r24, r18
   1640c:	93 2b       	or	r25, r19
   1640e:	91 83       	std	Z+1, r25	; 0x01
   16410:	80 83       	st	Z, r24
		pTaskInfo->pBuf->reportData.dataBlock[X_COUNT].dataC3 = TurnerC3_Endian2ByteSwap(pData->sampleC3);
   16412:	15 96       	adiw	r26, 0x05	; 5
   16414:	2c 91       	ld	r18, X
   16416:	15 97       	sbiw	r26, 0x05	; 5
   16418:	f2 01       	movw	r30, r4
   1641a:	80 81       	ld	r24, Z
   1641c:	90 e0       	ldi	r25, 0x00	; 0
   1641e:	88 9d       	mul	r24, r8
   16420:	f0 01       	movw	r30, r0
   16422:	89 9d       	mul	r24, r9
   16424:	f0 0d       	add	r31, r0
   16426:	98 9d       	mul	r25, r8
   16428:	f0 0d       	add	r31, r0
   1642a:	11 24       	eor	r1, r1
   1642c:	e6 0d       	add	r30, r6
   1642e:	f7 1d       	adc	r31, r7
   16430:	e7 53       	subi	r30, 0x37	; 55
   16432:	fa 4f       	sbci	r31, 0xFA	; 250
   16434:	14 96       	adiw	r26, 0x04	; 4
   16436:	9c 91       	ld	r25, X
   16438:	14 97       	sbiw	r26, 0x04	; 4
   1643a:	80 e0       	ldi	r24, 0x00	; 0
   1643c:	30 e0       	ldi	r19, 0x00	; 0
   1643e:	82 2b       	or	r24, r18
   16440:	93 2b       	or	r25, r19
   16442:	91 83       	std	Z+1, r25	; 0x01
   16444:	80 83       	st	Z, r24
		pTaskInfo->pBuf->reportData.dataBlock[X_COUNT].pressure = TurnerC3_Endian2ByteSwap(pData->samplePres);
   16446:	1d 96       	adiw	r26, 0x0d	; 13
   16448:	2c 91       	ld	r18, X
   1644a:	d2 01       	movw	r26, r4
   1644c:	8c 91       	ld	r24, X
   1644e:	90 e0       	ldi	r25, 0x00	; 0
   16450:	88 9d       	mul	r24, r8
   16452:	f0 01       	movw	r30, r0
   16454:	89 9d       	mul	r24, r9
   16456:	f0 0d       	add	r31, r0
   16458:	98 9d       	mul	r25, r8
   1645a:	f0 0d       	add	r31, r0
   1645c:	11 24       	eor	r1, r1
   1645e:	e6 0d       	add	r30, r6
   16460:	f7 1d       	adc	r31, r7
   16462:	e5 53       	subi	r30, 0x35	; 53
   16464:	fa 4f       	sbci	r31, 0xFA	; 250
   16466:	d5 01       	movw	r26, r10
   16468:	1c 96       	adiw	r26, 0x0c	; 12
   1646a:	9c 91       	ld	r25, X
   1646c:	1c 97       	sbiw	r26, 0x0c	; 12
   1646e:	80 e0       	ldi	r24, 0x00	; 0
   16470:	30 e0       	ldi	r19, 0x00	; 0
   16472:	82 2b       	or	r24, r18
   16474:	93 2b       	or	r25, r19
   16476:	91 83       	std	Z+1, r25	; 0x01
   16478:	80 83       	st	Z, r24
		pTaskInfo->pBuf->reportData.dataBlock[X_COUNT].temperature = TurnerC3_Endian2ByteSwap(pData->sampleTemp);
   1647a:	1f 96       	adiw	r26, 0x0f	; 15
   1647c:	2c 91       	ld	r18, X
   1647e:	1f 97       	sbiw	r26, 0x0f	; 15
   16480:	f2 01       	movw	r30, r4
   16482:	80 81       	ld	r24, Z
   16484:	90 e0       	ldi	r25, 0x00	; 0
   16486:	88 9d       	mul	r24, r8
   16488:	f0 01       	movw	r30, r0
   1648a:	89 9d       	mul	r24, r9
   1648c:	f0 0d       	add	r31, r0
   1648e:	98 9d       	mul	r25, r8
   16490:	f0 0d       	add	r31, r0
   16492:	11 24       	eor	r1, r1
   16494:	e6 0d       	add	r30, r6
   16496:	f7 1d       	adc	r31, r7
   16498:	e3 53       	subi	r30, 0x33	; 51
   1649a:	fa 4f       	sbci	r31, 0xFA	; 250
   1649c:	1e 96       	adiw	r26, 0x0e	; 14
   1649e:	9c 91       	ld	r25, X
   164a0:	80 e0       	ldi	r24, 0x00	; 0
   164a2:	30 e0       	ldi	r19, 0x00	; 0
   164a4:	82 2b       	or	r24, r18
   164a6:	93 2b       	or	r25, r19
   164a8:	91 83       	std	Z+1, r25	; 0x01
   164aa:	80 83       	st	Z, r24

		X_COUNT++;
   164ac:	d2 01       	movw	r26, r4
   164ae:	8c 91       	ld	r24, X
   164b0:	8f 5f       	subi	r24, 0xFF	; 255
   164b2:	8c 93       	st	X, r24

		if(X_COUNT >= MAX_C3_SAMPLES)
   164b4:	87 30       	cpi	r24, 0x07	; 7
   164b6:	80 f1       	brcs	.+96     	; 0x16518 <TurnerC3_GetCurrentData+0x2f2>
		{
			pTaskInfo->pBuf->reportData.headerReport.payloadType = 0x00000060;
   164b8:	e1 eb       	ldi	r30, 0xB1	; 177
   164ba:	f5 e0       	ldi	r31, 0x05	; 5
   164bc:	6e 0e       	add	r6, r30
   164be:	7f 1e       	adc	r7, r31
   164c0:	80 e6       	ldi	r24, 0x60	; 96
   164c2:	90 e0       	ldi	r25, 0x00	; 0
   164c4:	a0 e0       	ldi	r26, 0x00	; 0
   164c6:	b0 e0       	ldi	r27, 0x00	; 0
   164c8:	f3 01       	movw	r30, r6
   164ca:	81 93       	st	Z+, r24
   164cc:	91 93       	st	Z+, r25
   164ce:	a1 93       	st	Z+, r26
   164d0:	b1 93       	st	Z+, r27
			pTaskInfo->pBuf->reportData.headerReport.boardID = mainBoardID;
   164d2:	80 91 e6 03 	lds	r24, 0x03E6
   164d6:	df 01       	movw	r26, r30
   164d8:	8d 93       	st	X+, r24
			pTaskInfo->pBuf->reportData.headerReport.taskID = pTaskInfo->taskID;
   164da:	f1 01       	movw	r30, r2
   164dc:	80 81       	ld	r24, Z
   164de:	8d 93       	st	X+, r24
			pTaskInfo->pBuf->reportData.headerReport.dataFormat = 8;
			pTaskInfo->pBuf->reportData.headerReport.parser = 0;
			pTaskInfo->pBuf->reportData.headerReport.priority = 2;
   164e0:	88 e4       	ldi	r24, 0x48	; 72
   164e2:	fd 01       	movw	r30, r26
   164e4:	81 93       	st	Z+, r24
			pTaskInfo->pBuf->reportData.headerReport.repeatCount = X_COUNT;
   164e6:	d2 01       	movw	r26, r4
   164e8:	8c 91       	ld	r24, X
   164ea:	80 83       	st	Z, r24
			TurnerC3_DataReportXmit(pTaskInfo);
   164ec:	c1 01       	movw	r24, r2
   164ee:	0e 94 aa b0 	call	0x16154	; 0x16154 <TurnerC3_DataReportXmit>

			memset(&(pTaskInfo->pBuf->reportData), 0, sizeof(C3_DATA_REPORT));
   164f2:	f1 01       	movw	r30, r2
   164f4:	84 81       	ldd	r24, Z+4	; 0x04
   164f6:	95 81       	ldd	r25, Z+5	; 0x05
   164f8:	8f 54       	subi	r24, 0x4F	; 79
   164fa:	9a 4f       	sbci	r25, 0xFA	; 250
   164fc:	fc 01       	movw	r30, r24
   164fe:	82 ea       	ldi	r24, 0xA2	; 162
   16500:	df 01       	movw	r26, r30
   16502:	1d 92       	st	X+, r1
   16504:	8a 95       	dec	r24
   16506:	e9 f7       	brne	.-6      	; 0x16502 <TurnerC3_GetCurrentData+0x2dc>
			X_COUNT = 0;
   16508:	d1 01       	movw	r26, r2
   1650a:	14 96       	adiw	r26, 0x04	; 4
   1650c:	ed 91       	ld	r30, X+
   1650e:	fc 91       	ld	r31, X
   16510:	15 97       	sbiw	r26, 0x05	; 5
   16512:	e0 55       	subi	r30, 0x50	; 80
   16514:	fa 4f       	sbci	r31, 0xFA	; 250
   16516:	10 82       	st	Z, r1
		}
	}
#undef X_COUNT
}
   16518:	0f 90       	pop	r0
   1651a:	0f 90       	pop	r0
   1651c:	cf 91       	pop	r28
   1651e:	df 91       	pop	r29
   16520:	1f 91       	pop	r17
   16522:	0f 91       	pop	r16
   16524:	ff 90       	pop	r15
   16526:	ef 90       	pop	r14
   16528:	df 90       	pop	r13
   1652a:	cf 90       	pop	r12
   1652c:	bf 90       	pop	r11
   1652e:	af 90       	pop	r10
   16530:	9f 90       	pop	r9
   16532:	8f 90       	pop	r8
   16534:	7f 90       	pop	r7
   16536:	6f 90       	pop	r6
   16538:	5f 90       	pop	r5
   1653a:	4f 90       	pop	r4
   1653c:	3f 90       	pop	r3
   1653e:	2f 90       	pop	r2
   16540:	08 95       	ret

00016542 <TurnerC3_Rx>:
	return retval;
}


uint8_t TurnerC3_Rx(PTURNER_C3_TASK pTaskInfo, char* pBuffer, uint16_t* pLen, char* eol, int eolLen)
{
   16542:	4f 92       	push	r4
   16544:	5f 92       	push	r5
   16546:	6f 92       	push	r6
   16548:	7f 92       	push	r7
   1654a:	8f 92       	push	r8
   1654c:	9f 92       	push	r9
   1654e:	af 92       	push	r10
   16550:	bf 92       	push	r11
   16552:	cf 92       	push	r12
   16554:	df 92       	push	r13
   16556:	ef 92       	push	r14
   16558:	ff 92       	push	r15
   1655a:	0f 93       	push	r16
   1655c:	1f 93       	push	r17
   1655e:	df 93       	push	r29
   16560:	cf 93       	push	r28
   16562:	0f 92       	push	r0
   16564:	cd b7       	in	r28, 0x3d	; 61
   16566:	de b7       	in	r29, 0x3e	; 62
   16568:	4c 01       	movw	r8, r24
   1656a:	f6 2e       	mov	r15, r22
   1656c:	e7 2e       	mov	r14, r23
   1656e:	6a 01       	movw	r12, r20
   16570:	29 01       	movw	r4, r18
   16572:	38 01       	movw	r6, r16
	uint8_t retval = FAIL;
	char* pChar = pBuffer;
	uint16_t count = 0;
	BOOL done = FALSE;
	int compare = 0;
	uint8_t err = 0;
   16574:	19 82       	std	Y+1, r1	; 0x01
	char c = 0;


	c = (char) OSuartGetCharWait(pTaskInfo->portNum, 64, &err);	//Wait 0.5 seconds for first character
   16576:	fc 01       	movw	r30, r24
   16578:	81 81       	ldd	r24, Z+1	; 0x01
   1657a:	60 e4       	ldi	r22, 0x40	; 64
   1657c:	70 e0       	ldi	r23, 0x00	; 0
   1657e:	5e 01       	movw	r10, r28
   16580:	08 94       	sec
   16582:	a1 1c       	adc	r10, r1
   16584:	b1 1c       	adc	r11, r1
   16586:	a5 01       	movw	r20, r10
   16588:	0e 94 b8 32 	call	0x6570	; 0x6570 <OSuartGetCharWait>
   1658c:	28 2f       	mov	r18, r24
			
	if(err != OS_ERR_NONE)
   1658e:	89 81       	ldd	r24, Y+1	; 0x01
   16590:	88 23       	and	r24, r24
   16592:	21 f0       	breq	.+8      	; 0x1659c <TurnerC3_Rx+0x5a>
		{
			*pLen = 0;
   16594:	f6 01       	movw	r30, r12
   16596:	11 82       	std	Z+1, r1	; 0x01
   16598:	10 82       	st	Z, r1
   1659a:	17 c0       	rjmp	.+46     	; 0x165ca <TurnerC3_Rx+0x88>
			return retval;
		}

	*pChar = c;
   1659c:	8f 2d       	mov	r24, r15
   1659e:	9e 2d       	mov	r25, r14
   165a0:	8c 01       	movw	r16, r24
   165a2:	f8 01       	movw	r30, r16
   165a4:	21 93       	st	Z+, r18
   165a6:	8f 01       	movw	r16, r30
   165a8:	21 e0       	ldi	r18, 0x01	; 1
   165aa:	e2 2e       	mov	r14, r18
   165ac:	f1 2c       	mov	r15, r1
	pChar++;
	count++;

	while((done == FALSE) && (count<110))
	{
		c = (char) OSuartGetCharWait(pTaskInfo->portNum, 960, &err);	//Wait up to 7.5 seconds for characters (first line has delay in it)
   165ae:	f4 01       	movw	r30, r8
   165b0:	81 81       	ldd	r24, Z+1	; 0x01
   165b2:	60 ec       	ldi	r22, 0xC0	; 192
   165b4:	73 e0       	ldi	r23, 0x03	; 3
   165b6:	a5 01       	movw	r20, r10
   165b8:	0e 94 b8 32 	call	0x6570	; 0x6570 <OSuartGetCharWait>
   165bc:	98 2f       	mov	r25, r24
			
		if(err != OS_ERR_NONE)
   165be:	89 81       	ldd	r24, Y+1	; 0x01
   165c0:	88 23       	and	r24, r24
   165c2:	29 f0       	breq	.+10     	; 0x165ce <TurnerC3_Rx+0x8c>
		{
			*pLen = count;
   165c4:	f6 01       	movw	r30, r12
   165c6:	f1 82       	std	Z+1, r15	; 0x01
   165c8:	e0 82       	st	Z, r14
   165ca:	80 e0       	ldi	r24, 0x00	; 0
   165cc:	18 c0       	rjmp	.+48     	; 0x165fe <TurnerC3_Rx+0xbc>
			return retval;
		}

		*pChar = c;
   165ce:	f8 01       	movw	r30, r16
   165d0:	90 83       	st	Z, r25
		pChar++;
		count++;
   165d2:	08 94       	sec
   165d4:	e1 1c       	adc	r14, r1
   165d6:	f1 1c       	adc	r15, r1

		if(count >= 1)
		{
			compare = strncmp((char *)(pChar - 1), eol, eolLen);
   165d8:	c8 01       	movw	r24, r16
   165da:	b2 01       	movw	r22, r4
   165dc:	a3 01       	movw	r20, r6
   165de:	0e 94 59 f0 	call	0x1e0b2	; 0x1e0b2 <strncmp>
			if(compare == 0)
   165e2:	00 97       	sbiw	r24, 0x00	; 0
   165e4:	11 f4       	brne	.+4      	; 0x165ea <TurnerC3_Rx+0xa8>
   165e6:	8f ef       	ldi	r24, 0xFF	; 255
   165e8:	07 c0       	rjmp	.+14     	; 0x165f8 <TurnerC3_Rx+0xb6>
   165ea:	0f 5f       	subi	r16, 0xFF	; 255
   165ec:	1f 4f       	sbci	r17, 0xFF	; 255

	*pChar = c;
	pChar++;
	count++;

	while((done == FALSE) && (count<110))
   165ee:	fe e6       	ldi	r31, 0x6E	; 110
   165f0:	ef 16       	cp	r14, r31
   165f2:	f1 04       	cpc	r15, r1
   165f4:	e1 f6       	brne	.-72     	; 0x165ae <TurnerC3_Rx+0x6c>
   165f6:	80 e0       	ldi	r24, 0x00	; 0
				retval = SUCCESS;
				done = TRUE;
			}
		}
	}
	*pLen = count;
   165f8:	f6 01       	movw	r30, r12
   165fa:	f1 82       	std	Z+1, r15	; 0x01
   165fc:	e0 82       	st	Z, r14

	return retval;
}
   165fe:	0f 90       	pop	r0
   16600:	cf 91       	pop	r28
   16602:	df 91       	pop	r29
   16604:	1f 91       	pop	r17
   16606:	0f 91       	pop	r16
   16608:	ff 90       	pop	r15
   1660a:	ef 90       	pop	r14
   1660c:	df 90       	pop	r13
   1660e:	cf 90       	pop	r12
   16610:	bf 90       	pop	r11
   16612:	af 90       	pop	r10
   16614:	9f 90       	pop	r9
   16616:	8f 90       	pop	r8
   16618:	7f 90       	pop	r7
   1661a:	6f 90       	pop	r6
   1661c:	5f 90       	pop	r5
   1661e:	4f 90       	pop	r4
   16620:	08 95       	ret

00016622 <TurnerC3_Tx>:
	}
	return;
}

uint8_t TurnerC3_Tx(PTURNER_C3_TASK pTaskInfo, uint8_t* pBuffer, uint8_t len)
{
   16622:	af 92       	push	r10
   16624:	bf 92       	push	r11
   16626:	cf 92       	push	r12
   16628:	df 92       	push	r13
   1662a:	ef 92       	push	r14
   1662c:	ff 92       	push	r15
   1662e:	0f 93       	push	r16
   16630:	1f 93       	push	r17
   16632:	df 93       	push	r29
   16634:	cf 93       	push	r28
   16636:	0f 92       	push	r0
   16638:	0f 92       	push	r0
   1663a:	cd b7       	in	r28, 0x3d	; 61
   1663c:	de b7       	in	r29, 0x3e	; 62
   1663e:	6c 01       	movw	r12, r24
   16640:	7b 01       	movw	r14, r22
   16642:	b4 2e       	mov	r11, r20
	uint8_t retval = FAIL;
	uint8_t err = OS_ERR_NONE;
	uint16_t checksum;

	checksum = TurnerC3_CheckSum(pBuffer, len);
   16644:	a4 2f       	mov	r26, r20
   16646:	b0 e0       	ldi	r27, 0x00	; 0
   16648:	fb 01       	movw	r30, r22
   1664a:	20 e0       	ldi	r18, 0x00	; 0
   1664c:	30 e0       	ldi	r19, 0x00	; 0
   1664e:	40 e0       	ldi	r20, 0x00	; 0
   16650:	50 e0       	ldi	r21, 0x00	; 0
   16652:	60 e0       	ldi	r22, 0x00	; 0
   16654:	70 e0       	ldi	r23, 0x00	; 0
   16656:	07 c0       	rjmp	.+14     	; 0x16666 <TurnerC3_Tx+0x44>
	uint8_t hiByte;
	uint8_t loByte;

	for(int i = 0; i<len; i++)
	{
		sum += *tempBuf;
   16658:	81 91       	ld	r24, Z+
   1665a:	48 0f       	add	r20, r24
   1665c:	51 1d       	adc	r21, r1
   1665e:	61 1d       	adc	r22, r1
   16660:	71 1d       	adc	r23, r1
	uint16_t checksum = 0;
	uint32_t sum = 0;
	uint8_t hiByte;
	uint8_t loByte;

	for(int i = 0; i<len; i++)
   16662:	2f 5f       	subi	r18, 0xFF	; 255
   16664:	3f 4f       	sbci	r19, 0xFF	; 255
   16666:	2a 17       	cp	r18, r26
   16668:	3b 07       	cpc	r19, r27
   1666a:	b0 f3       	brcs	.-20     	; 0x16658 <TurnerC3_Tx+0x36>
	{
		sum += *tempBuf;
		tempBuf++;
	}
	checksum = (uint16_t)(sum & 0x0000FFFF);
   1666c:	25 2f       	mov	r18, r21
	hiByte = HIBYTE(checksum);
	loByte = LOBYTE(checksum);
	checksum = MAKEWORD(hiByte, ((loByte + hiByte)*-1));
   1666e:	45 0f       	add	r20, r21
   16670:	94 2f       	mov	r25, r20
   16672:	91 95       	neg	r25
   16674:	80 e0       	ldi	r24, 0x00	; 0
   16676:	30 e0       	ldi	r19, 0x00	; 0
   16678:	28 2b       	or	r18, r24
   1667a:	39 2b       	or	r19, r25
	uint8_t retval = FAIL;
	uint8_t err = OS_ERR_NONE;
	uint16_t checksum;

	checksum = TurnerC3_CheckSum(pBuffer, len);
	checksum = TurnerC3_Endian2ByteSwap(checksum);
   1667c:	92 2f       	mov	r25, r18
   1667e:	80 e0       	ldi	r24, 0x00	; 0
   16680:	23 2f       	mov	r18, r19
   16682:	30 e0       	ldi	r19, 0x00	; 0
   16684:	82 2b       	or	r24, r18
   16686:	93 2b       	or	r25, r19
   16688:	9a 83       	std	Y+2, r25	; 0x02
   1668a:	89 83       	std	Y+1, r24	; 0x01
   1668c:	00 e0       	ldi	r16, 0x00	; 0
   1668e:	10 e0       	ldi	r17, 0x00	; 0
	
	for(int i=0; i<len; i++)
   16690:	ab 2c       	mov	r10, r11
   16692:	bb 24       	eor	r11, r11
   16694:	0f c0       	rjmp	.+30     	; 0x166b4 <TurnerC3_Tx+0x92>
	{
		err = OSuartPutCharWait(pTaskInfo->portNum, *pBuffer, INFINITE);
   16696:	f6 01       	movw	r30, r12
   16698:	81 81       	ldd	r24, Z+1	; 0x01
   1669a:	f7 01       	movw	r30, r14
   1669c:	60 81       	ld	r22, Z
   1669e:	40 e0       	ldi	r20, 0x00	; 0
   166a0:	50 e0       	ldi	r21, 0x00	; 0
   166a2:	0e 94 f3 31 	call	0x63e6	; 0x63e6 <OSuartPutCharWait>
		pBuffer++;
		if(err != OS_ERR_NONE)
   166a6:	88 23       	and	r24, r24
   166a8:	b1 f4       	brne	.+44     	; 0x166d6 <TurnerC3_Tx+0xb4>
	checksum = TurnerC3_Endian2ByteSwap(checksum);
	
	for(int i=0; i<len; i++)
	{
		err = OSuartPutCharWait(pTaskInfo->portNum, *pBuffer, INFINITE);
		pBuffer++;
   166aa:	08 94       	sec
   166ac:	e1 1c       	adc	r14, r1
   166ae:	f1 1c       	adc	r15, r1
	uint16_t checksum;

	checksum = TurnerC3_CheckSum(pBuffer, len);
	checksum = TurnerC3_Endian2ByteSwap(checksum);
	
	for(int i=0; i<len; i++)
   166b0:	0f 5f       	subi	r16, 0xFF	; 255
   166b2:	1f 4f       	sbci	r17, 0xFF	; 255
   166b4:	0a 15       	cp	r16, r10
   166b6:	1b 05       	cpc	r17, r11
   166b8:	74 f3       	brlt	.-36     	; 0x16696 <TurnerC3_Tx+0x74>
   166ba:	1b c0       	rjmp	.+54     	; 0x166f2 <TurnerC3_Tx+0xd0>

	if(err == OS_ERR_NONE)
	{
		for(int i=0; i<2; i++)
		{
			err = OSuartPutCharWait(pTaskInfo->portNum, *pBuffer, INFINITE);
   166bc:	f6 01       	movw	r30, r12
   166be:	81 81       	ldd	r24, Z+1	; 0x01
   166c0:	fe 01       	movw	r30, r28
   166c2:	31 96       	adiw	r30, 0x01	; 1
   166c4:	61 81       	ldd	r22, Z+1	; 0x01
   166c6:	40 e0       	ldi	r20, 0x00	; 0
   166c8:	50 e0       	ldi	r21, 0x00	; 0
   166ca:	0e 94 f3 31 	call	0x63e6	; 0x63e6 <OSuartPutCharWait>
			pBuffer++;
			if(err != OS_ERR_NONE)
   166ce:	88 23       	and	r24, r24
   166d0:	11 f4       	brne	.+4      	; 0x166d6 <TurnerC3_Tx+0xb4>
				break;
   166d2:	8f ef       	ldi	r24, 0xFF	; 255
   166d4:	01 c0       	rjmp	.+2      	; 0x166d8 <TurnerC3_Tx+0xb6>
	
	pBuffer = (uint8_t*)&checksum;

	if(err == OS_ERR_NONE)
	{
		for(int i=0; i<2; i++)
   166d6:	80 e0       	ldi	r24, 0x00	; 0

	if(err==OS_ERR_NONE)
		retval = SUCCESS;

	return retval;
}
   166d8:	0f 90       	pop	r0
   166da:	0f 90       	pop	r0
   166dc:	cf 91       	pop	r28
   166de:	df 91       	pop	r29
   166e0:	1f 91       	pop	r17
   166e2:	0f 91       	pop	r16
   166e4:	ff 90       	pop	r15
   166e6:	ef 90       	pop	r14
   166e8:	df 90       	pop	r13
   166ea:	cf 90       	pop	r12
   166ec:	bf 90       	pop	r11
   166ee:	af 90       	pop	r10
   166f0:	08 95       	ret

	if(err == OS_ERR_NONE)
	{
		for(int i=0; i<2; i++)
		{
			err = OSuartPutCharWait(pTaskInfo->portNum, *pBuffer, INFINITE);
   166f2:	f6 01       	movw	r30, r12
   166f4:	81 81       	ldd	r24, Z+1	; 0x01
   166f6:	69 81       	ldd	r22, Y+1	; 0x01
   166f8:	40 e0       	ldi	r20, 0x00	; 0
   166fa:	50 e0       	ldi	r21, 0x00	; 0
   166fc:	0e 94 f3 31 	call	0x63e6	; 0x63e6 <OSuartPutCharWait>
			pBuffer++;
			if(err != OS_ERR_NONE)
   16700:	88 23       	and	r24, r24
   16702:	e1 f2       	breq	.-72     	; 0x166bc <TurnerC3_Tx+0x9a>
   16704:	e8 cf       	rjmp	.-48     	; 0x166d6 <TurnerC3_Tx+0xb4>

00016706 <TurnerC3_GetID>:

	return retval;
}

uint8_t TurnerC3_GetID(PTURNER_C3_TASK pTaskInfo)
{
   16706:	cf 92       	push	r12
   16708:	df 92       	push	r13
   1670a:	ef 92       	push	r14
   1670c:	ff 92       	push	r15
   1670e:	0f 93       	push	r16
   16710:	1f 93       	push	r17
   16712:	df 93       	push	r29
   16714:	cf 93       	push	r28
   16716:	00 d0       	rcall	.+0      	; 0x16718 <TurnerC3_GetID+0x12>
   16718:	0f 92       	push	r0
   1671a:	cd b7       	in	r28, 0x3d	; 61
   1671c:	de b7       	in	r29, 0x3e	; 62
   1671e:	7c 01       	movw	r14, r24
	uint8_t retval = FAIL;
	uint8_t	cmd[2] = {0x01, 0x00};
   16720:	81 e0       	ldi	r24, 0x01	; 1
   16722:	89 83       	std	Y+1, r24	; 0x01
   16724:	1a 82       	std	Y+2, r1	; 0x02
	uint16_t len = 0;
   16726:	1c 82       	std	Y+4, r1	; 0x04
   16728:	1b 82       	std	Y+3, r1	; 0x03


	OSTimeDlyHMSM(0,0,1,0);
   1672a:	80 e0       	ldi	r24, 0x00	; 0
   1672c:	60 e0       	ldi	r22, 0x00	; 0
   1672e:	41 e0       	ldi	r20, 0x01	; 1
   16730:	20 e0       	ldi	r18, 0x00	; 0
   16732:	30 e0       	ldi	r19, 0x00	; 0
   16734:	0e 94 2a 2e 	call	0x5c54	; 0x5c54 <OSTimeDlyHMSM>

	retval = TurnerC3_Rx_Len(pTaskInfo, pTaskInfo->pBuf->bufferRx, &len, 100, 2 * QUARTER_SECOND);	//2.5 second timeout
   16738:	d7 01       	movw	r26, r14
   1673a:	14 96       	adiw	r26, 0x04	; 4
   1673c:	6d 91       	ld	r22, X+
   1673e:	7c 91       	ld	r23, X
   16740:	15 97       	sbiw	r26, 0x05	; 5
   16742:	60 50       	subi	r22, 0x00	; 0
   16744:	7f 4f       	sbci	r23, 0xFF	; 255
   16746:	33 e0       	ldi	r19, 0x03	; 3
   16748:	c3 2e       	mov	r12, r19
   1674a:	d1 2c       	mov	r13, r1
   1674c:	cc 0e       	add	r12, r28
   1674e:	dd 1e       	adc	r13, r29
   16750:	c7 01       	movw	r24, r14
   16752:	a6 01       	movw	r20, r12
   16754:	24 e6       	ldi	r18, 0x64	; 100
   16756:	30 e0       	ldi	r19, 0x00	; 0
   16758:	00 e4       	ldi	r16, 0x40	; 64
   1675a:	10 e0       	ldi	r17, 0x00	; 0
   1675c:	0e 94 0f a9 	call	0x1521e	; 0x1521e <TurnerC3_Rx_Len>
	memset(pTaskInfo->pBuf->bufferRx, 0, 200);
   16760:	f7 01       	movw	r30, r14
   16762:	84 81       	ldd	r24, Z+4	; 0x04
   16764:	95 81       	ldd	r25, Z+5	; 0x05
   16766:	80 50       	subi	r24, 0x00	; 0
   16768:	9f 4f       	sbci	r25, 0xFF	; 255
   1676a:	fc 01       	movw	r30, r24
   1676c:	88 ec       	ldi	r24, 0xC8	; 200
   1676e:	df 01       	movw	r26, r30
   16770:	1d 92       	st	X+, r1
   16772:	8a 95       	dec	r24
   16774:	e9 f7       	brne	.-6      	; 0x16770 <TurnerC3_GetID+0x6a>

	retval = TurnerC3_Tx(pTaskInfo, cmd, 3);
   16776:	c7 01       	movw	r24, r14
   16778:	be 01       	movw	r22, r28
   1677a:	6f 5f       	subi	r22, 0xFF	; 255
   1677c:	7f 4f       	sbci	r23, 0xFF	; 255
   1677e:	43 e0       	ldi	r20, 0x03	; 3
   16780:	0e 94 11 b3 	call	0x16622	; 0x16622 <TurnerC3_Tx>
   16784:	38 2f       	mov	r19, r24

	if(retval == SUCCESS)
   16786:	8f 3f       	cpi	r24, 0xFF	; 255
   16788:	09 f0       	breq	.+2      	; 0x1678c <TurnerC3_GetID+0x86>
   1678a:	a2 c0       	rjmp	.+324    	; 0x168d0 <TurnerC3_GetID+0x1ca>
	{
		retval = TurnerC3_Rx_Len(pTaskInfo, pTaskInfo->pBuf->bufferRx, &len, 23, 20*QUARTER_SECOND);		//5 second timeout
   1678c:	f7 01       	movw	r30, r14
   1678e:	64 81       	ldd	r22, Z+4	; 0x04
   16790:	75 81       	ldd	r23, Z+5	; 0x05
   16792:	60 50       	subi	r22, 0x00	; 0
   16794:	7f 4f       	sbci	r23, 0xFF	; 255
   16796:	c7 01       	movw	r24, r14
   16798:	a6 01       	movw	r20, r12
   1679a:	27 e1       	ldi	r18, 0x17	; 23
   1679c:	30 e0       	ldi	r19, 0x00	; 0
   1679e:	00 e8       	ldi	r16, 0x80	; 128
   167a0:	12 e0       	ldi	r17, 0x02	; 2
   167a2:	0e 94 0f a9 	call	0x1521e	; 0x1521e <TurnerC3_Rx_Len>
   167a6:	38 2f       	mov	r19, r24

		if((retval == SUCCESS) && (len == 23) && (pTaskInfo->pBuf->bufferRx[0] == 0x01))
   167a8:	8f 3f       	cpi	r24, 0xFF	; 255
   167aa:	09 f0       	breq	.+2      	; 0x167ae <TurnerC3_GetID+0xa8>
   167ac:	91 c0       	rjmp	.+290    	; 0x168d0 <TurnerC3_GetID+0x1ca>
   167ae:	8b 81       	ldd	r24, Y+3	; 0x03
   167b0:	9c 81       	ldd	r25, Y+4	; 0x04
   167b2:	47 97       	sbiw	r24, 0x17	; 23
   167b4:	09 f0       	breq	.+2      	; 0x167b8 <TurnerC3_GetID+0xb2>
   167b6:	8c c0       	rjmp	.+280    	; 0x168d0 <TurnerC3_GetID+0x1ca>
   167b8:	d7 01       	movw	r26, r14
   167ba:	14 96       	adiw	r26, 0x04	; 4
   167bc:	ed 91       	ld	r30, X+
   167be:	fc 91       	ld	r31, X
   167c0:	15 97       	sbiw	r26, 0x05	; 5
   167c2:	e0 50       	subi	r30, 0x00	; 0
   167c4:	ff 4f       	sbci	r31, 0xFF	; 255
   167c6:	80 81       	ld	r24, Z
   167c8:	e0 50       	subi	r30, 0x00	; 0
   167ca:	f1 40       	sbci	r31, 0x01	; 1
   167cc:	81 30       	cpi	r24, 0x01	; 1
   167ce:	09 f0       	breq	.+2      	; 0x167d2 <TurnerC3_GetID+0xcc>
   167d0:	7f c0       	rjmp	.+254    	; 0x168d0 <TurnerC3_GetID+0x1ca>
		{
			memset(pTaskInfo->pBuf->serialNum, 0, 8);
   167d2:	cf 01       	movw	r24, r30
   167d4:	87 5c       	subi	r24, 0xC7	; 199
   167d6:	98 4f       	sbci	r25, 0xF8	; 248
   167d8:	fc 01       	movw	r30, r24
   167da:	88 e0       	ldi	r24, 0x08	; 8
   167dc:	df 01       	movw	r26, r30
   167de:	1d 92       	st	X+, r1
   167e0:	8a 95       	dec	r24
   167e2:	e9 f7       	brne	.-6      	; 0x167de <TurnerC3_GetID+0xd8>
			memcpy(pTaskInfo->pBuf->serialNum, &pTaskInfo->pBuf->bufferRx[2], 8);
   167e4:	f7 01       	movw	r30, r14
   167e6:	84 81       	ldd	r24, Z+4	; 0x04
   167e8:	95 81       	ldd	r25, Z+5	; 0x05
   167ea:	dc 01       	movw	r26, r24
   167ec:	a7 5c       	subi	r26, 0xC7	; 199
   167ee:	b8 4f       	sbci	r27, 0xF8	; 248
   167f0:	fc 01       	movw	r30, r24
   167f2:	ee 5f       	subi	r30, 0xFE	; 254
   167f4:	fe 4f       	sbci	r31, 0xFE	; 254
   167f6:	88 e0       	ldi	r24, 0x08	; 8
   167f8:	01 90       	ld	r0, Z+
   167fa:	0d 92       	st	X+, r0
   167fc:	81 50       	subi	r24, 0x01	; 1
   167fe:	e1 f7       	brne	.-8      	; 0x167f8 <TurnerC3_GetID+0xf2>
			for(uint8_t i=0; i<8; i++)
			{
				if(pTaskInfo->pBuf->serialNum[i] == 0)
   16800:	f7 01       	movw	r30, r14
   16802:	a4 81       	ldd	r26, Z+4	; 0x04
   16804:	b5 81       	ldd	r27, Z+5	; 0x05
   16806:	fd 01       	movw	r30, r26
   16808:	e7 5c       	subi	r30, 0xC7	; 199
   1680a:	f8 4f       	sbci	r31, 0xF8	; 248
   1680c:	90 e0       	ldi	r25, 0x00	; 0
					pTaskInfo->pBuf->serialNum[i] = ' ';
   1680e:	20 e2       	ldi	r18, 0x20	; 32
		{
			memset(pTaskInfo->pBuf->serialNum, 0, 8);
			memcpy(pTaskInfo->pBuf->serialNum, &pTaskInfo->pBuf->bufferRx[2], 8);
			for(uint8_t i=0; i<8; i++)
			{
				if(pTaskInfo->pBuf->serialNum[i] == 0)
   16810:	80 81       	ld	r24, Z
   16812:	88 23       	and	r24, r24
   16814:	09 f4       	brne	.+2      	; 0x16818 <TurnerC3_GetID+0x112>
					pTaskInfo->pBuf->serialNum[i] = ' ';
   16816:	20 83       	st	Z, r18

		if((retval == SUCCESS) && (len == 23) && (pTaskInfo->pBuf->bufferRx[0] == 0x01))
		{
			memset(pTaskInfo->pBuf->serialNum, 0, 8);
			memcpy(pTaskInfo->pBuf->serialNum, &pTaskInfo->pBuf->bufferRx[2], 8);
			for(uint8_t i=0; i<8; i++)
   16818:	9f 5f       	subi	r25, 0xFF	; 255
   1681a:	31 96       	adiw	r30, 0x01	; 1
   1681c:	98 30       	cpi	r25, 0x08	; 8
   1681e:	c1 f7       	brne	.-16     	; 0x16810 <TurnerC3_GetID+0x10a>
			{
				if(pTaskInfo->pBuf->serialNum[i] == 0)
					pTaskInfo->pBuf->serialNum[i] = ' ';
			}
			pTaskInfo->pBuf->majorFW = pTaskInfo->pBuf->bufferRx[10];
   16820:	fd 01       	movw	r30, r26
   16822:	ef 5b       	subi	r30, 0xBF	; 191
   16824:	f8 4f       	sbci	r31, 0xF8	; 248
   16826:	a6 5f       	subi	r26, 0xF6	; 246
   16828:	be 4f       	sbci	r27, 0xFE	; 254
   1682a:	8c 91       	ld	r24, X
   1682c:	aa 50       	subi	r26, 0x0A	; 10
   1682e:	b1 40       	sbci	r27, 0x01	; 1
   16830:	80 83       	st	Z, r24
			pTaskInfo->pBuf->minorFW = pTaskInfo->pBuf->bufferRx[11];
   16832:	fd 01       	movw	r30, r26
   16834:	ee 5b       	subi	r30, 0xBE	; 190
   16836:	f8 4f       	sbci	r31, 0xF8	; 248
   16838:	a5 5f       	subi	r26, 0xF5	; 245
   1683a:	be 4f       	sbci	r27, 0xFE	; 254
   1683c:	8c 91       	ld	r24, X
   1683e:	ab 50       	subi	r26, 0x0B	; 11
   16840:	b1 40       	sbci	r27, 0x01	; 1
   16842:	80 83       	st	Z, r24
			pTaskInfo->pBuf->majorComm = pTaskInfo->pBuf->bufferRx[19];
   16844:	fd 01       	movw	r30, r26
   16846:	ed 5b       	subi	r30, 0xBD	; 189
   16848:	f8 4f       	sbci	r31, 0xF8	; 248
   1684a:	ad 5e       	subi	r26, 0xED	; 237
   1684c:	be 4f       	sbci	r27, 0xFE	; 254
   1684e:	8c 91       	ld	r24, X
   16850:	a3 51       	subi	r26, 0x13	; 19
   16852:	b1 40       	sbci	r27, 0x01	; 1
   16854:	80 83       	st	Z, r24
			pTaskInfo->pBuf->minorComm = pTaskInfo->pBuf->bufferRx[20];
   16856:	fd 01       	movw	r30, r26
   16858:	ec 5b       	subi	r30, 0xBC	; 188
   1685a:	f8 4f       	sbci	r31, 0xF8	; 248
   1685c:	ac 5e       	subi	r26, 0xEC	; 236
   1685e:	be 4f       	sbci	r27, 0xFE	; 254
   16860:	8c 91       	ld	r24, X
   16862:	a4 51       	subi	r26, 0x14	; 20
   16864:	b1 40       	sbci	r27, 0x01	; 1
   16866:	80 83       	st	Z, r24

			pTaskInfo->pBuf->sensorsInstalled = pTaskInfo->pBuf->bufferRx[13] & 0xC7;
   16868:	fd 01       	movw	r30, r26
   1686a:	e8 5b       	subi	r30, 0xB8	; 184
   1686c:	f8 4f       	sbci	r31, 0xF8	; 248
   1686e:	a3 5f       	subi	r26, 0xF3	; 243
   16870:	be 4f       	sbci	r27, 0xFE	; 254
   16872:	8c 91       	ld	r24, X
   16874:	ad 50       	subi	r26, 0x0D	; 13
   16876:	b1 40       	sbci	r27, 0x01	; 1
   16878:	87 7c       	andi	r24, 0xC7	; 199
   1687a:	80 83       	st	Z, r24
			pTaskInfo->pBuf->wiper = 'N';
   1687c:	fd 01       	movw	r30, r26
   1687e:	e9 5b       	subi	r30, 0xB9	; 185
   16880:	f8 4f       	sbci	r31, 0xF8	; 248
   16882:	8e e4       	ldi	r24, 0x4E	; 78
   16884:	80 83       	st	Z, r24
			pTaskInfo->pBuf->temperature = 'N';
   16886:	ab 5b       	subi	r26, 0xBB	; 187
   16888:	b8 4f       	sbci	r27, 0xF8	; 248
   1688a:	8d 93       	st	X+, r24
			pTaskInfo->pBuf->pressure = 'N';
   1688c:	8c 93       	st	X, r24
			if((pTaskInfo->pBuf->bufferRx[12] & 0x01) != 0)
   1688e:	aa 53       	subi	r26, 0x3A	; 58
   16890:	b6 40       	sbci	r27, 0x06	; 6
   16892:	8c 91       	ld	r24, X
   16894:	ac 50       	subi	r26, 0x0C	; 12
   16896:	b1 40       	sbci	r27, 0x01	; 1
   16898:	80 ff       	sbrs	r24, 0
   1689a:	02 c0       	rjmp	.+4      	; 0x168a0 <TurnerC3_GetID+0x19a>
				pTaskInfo->pBuf->wiper = 'Y';
   1689c:	89 e5       	ldi	r24, 0x59	; 89
   1689e:	80 83       	st	Z, r24
			if((pTaskInfo->pBuf->sensorsInstalled & 0x80) != 0)
   168a0:	a8 5b       	subi	r26, 0xB8	; 184
   168a2:	b8 4f       	sbci	r27, 0xF8	; 248
   168a4:	8c 91       	ld	r24, X
   168a6:	a8 54       	subi	r26, 0x48	; 72
   168a8:	b7 40       	sbci	r27, 0x07	; 7
   168aa:	87 ff       	sbrs	r24, 7
   168ac:	06 c0       	rjmp	.+12     	; 0x168ba <TurnerC3_GetID+0x1b4>
				pTaskInfo->pBuf->temperature = 'Y';
   168ae:	ab 5b       	subi	r26, 0xBB	; 187
   168b0:	b8 4f       	sbci	r27, 0xF8	; 248
   168b2:	89 e5       	ldi	r24, 0x59	; 89
   168b4:	8c 93       	st	X, r24
   168b6:	a5 54       	subi	r26, 0x45	; 69
   168b8:	b7 40       	sbci	r27, 0x07	; 7
			if((pTaskInfo->pBuf->sensorsInstalled & 0x40) != 0)
   168ba:	a8 5b       	subi	r26, 0xB8	; 184
   168bc:	b8 4f       	sbci	r27, 0xF8	; 248
   168be:	8c 91       	ld	r24, X
   168c0:	a8 54       	subi	r26, 0x48	; 72
   168c2:	b7 40       	sbci	r27, 0x07	; 7
   168c4:	86 ff       	sbrs	r24, 6
   168c6:	04 c0       	rjmp	.+8      	; 0x168d0 <TurnerC3_GetID+0x1ca>
				pTaskInfo->pBuf->pressure = 'Y';
   168c8:	aa 5b       	subi	r26, 0xBA	; 186
   168ca:	b8 4f       	sbci	r27, 0xF8	; 248
   168cc:	89 e5       	ldi	r24, 0x59	; 89
   168ce:	8c 93       	st	X, r24
			
			//retval = TurnerC3_Xmit_ID(pTaskInfo, (PC3_ID_BLOCK)&pTaskInfo->pBuf->bufferRx[2]);
		}
	}
	return retval;
}
   168d0:	83 2f       	mov	r24, r19
   168d2:	0f 90       	pop	r0
   168d4:	0f 90       	pop	r0
   168d6:	0f 90       	pop	r0
   168d8:	0f 90       	pop	r0
   168da:	cf 91       	pop	r28
   168dc:	df 91       	pop	r29
   168de:	1f 91       	pop	r17
   168e0:	0f 91       	pop	r16
   168e2:	ff 90       	pop	r15
   168e4:	ef 90       	pop	r14
   168e6:	df 90       	pop	r13
   168e8:	cf 90       	pop	r12
   168ea:	08 95       	ret

000168ec <TurnerC3_SetID>:
	return myTick;
}


uint8_t TurnerC3_SetID(PTURNER_C3_TASK pTaskInfo, char* pSerialNum, uint8_t len)
{
   168ec:	ef 92       	push	r14
   168ee:	ff 92       	push	r15
   168f0:	0f 93       	push	r16
   168f2:	1f 93       	push	r17
   168f4:	df 93       	push	r29
   168f6:	cf 93       	push	r28
   168f8:	cd b7       	in	r28, 0x3d	; 61
   168fa:	de b7       	in	r29, 0x3e	; 62
   168fc:	2c 97       	sbiw	r28, 0x0c	; 12
   168fe:	0f b6       	in	r0, 0x3f	; 63
   16900:	f8 94       	cli
   16902:	de bf       	out	0x3e, r29	; 62
   16904:	0f be       	out	0x3f, r0	; 63
   16906:	cd bf       	out	0x3d, r28	; 61
   16908:	7c 01       	movw	r14, r24
   1690a:	9b 01       	movw	r18, r22
	uint8_t retval = FAIL;
	uint8_t cmd[10] = {0x02, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
   1690c:	de 01       	movw	r26, r28
   1690e:	13 96       	adiw	r26, 0x03	; 3
   16910:	e9 ef       	ldi	r30, 0xF9	; 249
   16912:	f4 e0       	ldi	r31, 0x04	; 4
   16914:	8a e0       	ldi	r24, 0x0A	; 10
   16916:	01 90       	ld	r0, Z+
   16918:	0d 92       	st	X+, r0
   1691a:	81 50       	subi	r24, 0x01	; 1
   1691c:	e1 f7       	brne	.-8      	; 0x16916 <TurnerC3_SetID+0x2a>
	uint16_t rxLen = 0;
   1691e:	1a 82       	std	Y+2, r1	; 0x02
   16920:	19 82       	std	Y+1, r1	; 0x01
   16922:	49 30       	cpi	r20, 0x09	; 9
   16924:	08 f0       	brcs	.+2      	; 0x16928 <TurnerC3_SetID+0x3c>
   16926:	48 e0       	ldi	r20, 0x08	; 8
   16928:	fe 01       	movw	r30, r28
   1692a:	35 96       	adiw	r30, 0x05	; 5

	if(len>8)
		len = 8;
	for(int i=0; i<len; i++)
   1692c:	be 01       	movw	r22, r28
   1692e:	6d 5f       	subi	r22, 0xFD	; 253
   16930:	7f 4f       	sbci	r23, 0xFF	; 255
   16932:	50 e0       	ldi	r21, 0x00	; 0
   16934:	4e 5f       	subi	r20, 0xFE	; 254
   16936:	5f 4f       	sbci	r21, 0xFF	; 255
   16938:	46 0f       	add	r20, r22
   1693a:	57 1f       	adc	r21, r23
   1693c:	04 c0       	rjmp	.+8      	; 0x16946 <TurnerC3_SetID+0x5a>
	{
		cmd[i+2] = *pSerialNum;
   1693e:	d9 01       	movw	r26, r18
   16940:	8d 91       	ld	r24, X+
   16942:	9d 01       	movw	r18, r26
   16944:	81 93       	st	Z+, r24
	uint8_t cmd[10] = {0x02, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
	uint16_t rxLen = 0;

	if(len>8)
		len = 8;
	for(int i=0; i<len; i++)
   16946:	e4 17       	cp	r30, r20
   16948:	f5 07       	cpc	r31, r21
   1694a:	c9 f7       	brne	.-14     	; 0x1693e <TurnerC3_SetID+0x52>
	{
		cmd[i+2] = *pSerialNum;
		pSerialNum++;
	}

	retval = TurnerC3_Tx(pTaskInfo, cmd, 10);
   1694c:	c7 01       	movw	r24, r14
   1694e:	4a e0       	ldi	r20, 0x0A	; 10
   16950:	0e 94 11 b3 	call	0x16622	; 0x16622 <TurnerC3_Tx>
   16954:	28 2f       	mov	r18, r24

	if(retval == SUCCESS)
   16956:	8f 3f       	cpi	r24, 0xFF	; 255
   16958:	49 f5       	brne	.+82     	; 0x169ac <TurnerC3_SetID+0xc0>
	{
		retval = TurnerC3_Rx_Len(pTaskInfo, pTaskInfo->pBuf->bufferRx, &rxLen, 23, 8*QUARTER_SECOND);	//2 Second timeout
   1695a:	f7 01       	movw	r30, r14
   1695c:	64 81       	ldd	r22, Z+4	; 0x04
   1695e:	75 81       	ldd	r23, Z+5	; 0x05
   16960:	60 50       	subi	r22, 0x00	; 0
   16962:	7f 4f       	sbci	r23, 0xFF	; 255
   16964:	c7 01       	movw	r24, r14
   16966:	ae 01       	movw	r20, r28
   16968:	4f 5f       	subi	r20, 0xFF	; 255
   1696a:	5f 4f       	sbci	r21, 0xFF	; 255
   1696c:	27 e1       	ldi	r18, 0x17	; 23
   1696e:	30 e0       	ldi	r19, 0x00	; 0
   16970:	00 e0       	ldi	r16, 0x00	; 0
   16972:	11 e0       	ldi	r17, 0x01	; 1
   16974:	0e 94 0f a9 	call	0x1521e	; 0x1521e <TurnerC3_Rx_Len>
   16978:	28 2f       	mov	r18, r24

		if((retval == SUCCESS) && (rxLen == 23) && (pTaskInfo->pBuf->bufferRx[0] == 0x01))
   1697a:	8f 3f       	cpi	r24, 0xFF	; 255
   1697c:	b9 f4       	brne	.+46     	; 0x169ac <TurnerC3_SetID+0xc0>
   1697e:	89 81       	ldd	r24, Y+1	; 0x01
   16980:	9a 81       	ldd	r25, Y+2	; 0x02
   16982:	47 97       	sbiw	r24, 0x17	; 23
   16984:	99 f4       	brne	.+38     	; 0x169ac <TurnerC3_SetID+0xc0>
   16986:	d7 01       	movw	r26, r14
   16988:	14 96       	adiw	r26, 0x04	; 4
   1698a:	ed 91       	ld	r30, X+
   1698c:	fc 91       	ld	r31, X
   1698e:	15 97       	sbiw	r26, 0x05	; 5
   16990:	e0 50       	subi	r30, 0x00	; 0
   16992:	ff 4f       	sbci	r31, 0xFF	; 255
   16994:	80 81       	ld	r24, Z
   16996:	e0 50       	subi	r30, 0x00	; 0
   16998:	f1 40       	sbci	r31, 0x01	; 1
   1699a:	81 30       	cpi	r24, 0x01	; 1
   1699c:	39 f4       	brne	.+14     	; 0x169ac <TurnerC3_SetID+0xc0>
		{
			retval = TurnerC3_Xmit_ID(pTaskInfo, (PC3_ID_BLOCK)&pTaskInfo->pBuf->bufferRx[2]);
   1699e:	ee 5f       	subi	r30, 0xFE	; 254
   169a0:	fe 4f       	sbci	r31, 0xFE	; 254
   169a2:	c7 01       	movw	r24, r14
   169a4:	bf 01       	movw	r22, r30
   169a6:	0e 94 bd ad 	call	0x15b7a	; 0x15b7a <TurnerC3_Xmit_ID>
   169aa:	28 2f       	mov	r18, r24
		}
	}

	return retval;
}
   169ac:	82 2f       	mov	r24, r18
   169ae:	2c 96       	adiw	r28, 0x0c	; 12
   169b0:	0f b6       	in	r0, 0x3f	; 63
   169b2:	f8 94       	cli
   169b4:	de bf       	out	0x3e, r29	; 62
   169b6:	0f be       	out	0x3f, r0	; 63
   169b8:	cd bf       	out	0x3d, r28	; 61
   169ba:	cf 91       	pop	r28
   169bc:	df 91       	pop	r29
   169be:	1f 91       	pop	r17
   169c0:	0f 91       	pop	r16
   169c2:	ff 90       	pop	r15
   169c4:	ef 90       	pop	r14
   169c6:	08 95       	ret

000169c8 <TurnerC3_SetDateTime>:
	return retval;
}


uint8_t TurnerC3_SetDateTime(PTURNER_C3_TASK pTaskInfo)
{
   169c8:	6f 92       	push	r6
   169ca:	7f 92       	push	r7
   169cc:	8f 92       	push	r8
   169ce:	9f 92       	push	r9
   169d0:	af 92       	push	r10
   169d2:	bf 92       	push	r11
   169d4:	cf 92       	push	r12
   169d6:	df 92       	push	r13
   169d8:	ef 92       	push	r14
   169da:	ff 92       	push	r15
   169dc:	0f 93       	push	r16
   169de:	1f 93       	push	r17
   169e0:	df 93       	push	r29
   169e2:	cf 93       	push	r28
   169e4:	cd b7       	in	r28, 0x3d	; 61
   169e6:	de b7       	in	r29, 0x3e	; 62
   169e8:	28 97       	sbiw	r28, 0x08	; 8
   169ea:	0f b6       	in	r0, 0x3f	; 63
   169ec:	f8 94       	cli
   169ee:	de bf       	out	0x3e, r29	; 62
   169f0:	0f be       	out	0x3f, r0	; 63
   169f2:	cd bf       	out	0x3d, r28	; 61
   169f4:	3c 01       	movw	r6, r24
	uint8_t retval = FAIL;
	uint8_t cmd[6] = {0x02, 0x04, 0x00, 0x00, 0x00, 0x00};
   169f6:	de 01       	movw	r26, r28
   169f8:	13 96       	adiw	r26, 0x03	; 3
   169fa:	e3 e0       	ldi	r30, 0x03	; 3
   169fc:	f5 e0       	ldi	r31, 0x05	; 5
   169fe:	86 e0       	ldi	r24, 0x06	; 6
   16a00:	01 90       	ld	r0, Z+
   16a02:	0d 92       	st	X+, r0
   16a04:	81 50       	subi	r24, 0x01	; 1
   16a06:	e1 f7       	brne	.-8      	; 0x16a00 <TurnerC3_SetDateTime+0x38>
	uint16_t halfDays = 0;
	uint16_t seconds = 0;

	uint16_t len;

	myTick = (uint32_t)gettime();
   16a08:	0e 94 3c 34 	call	0x6878	; 0x6878 <gettime>
   16a0c:	4b 01       	movw	r8, r22
   16a0e:	5c 01       	movw	r10, r24
	c3Tick = myTick - JAN_1_2000;
   16a10:	40 e8       	ldi	r20, 0x80	; 128
   16a12:	e4 2e       	mov	r14, r20
   16a14:	4c eb       	ldi	r20, 0xBC	; 188
   16a16:	f4 2e       	mov	r15, r20
   16a18:	42 e9       	ldi	r20, 0x92	; 146
   16a1a:	04 2f       	mov	r16, r20
   16a1c:	47 ec       	ldi	r20, 0xC7	; 199
   16a1e:	14 2f       	mov	r17, r20
   16a20:	e8 0c       	add	r14, r8
   16a22:	f9 1c       	adc	r15, r9
   16a24:	0a 1d       	adc	r16, r10
   16a26:	1b 1d       	adc	r17, r11

	temp1 = (c3Tick/43200);
   16a28:	c8 01       	movw	r24, r16
   16a2a:	b7 01       	movw	r22, r14
   16a2c:	20 ec       	ldi	r18, 0xC0	; 192
   16a2e:	38 ea       	ldi	r19, 0xA8	; 168
   16a30:	40 e0       	ldi	r20, 0x00	; 0
   16a32:	50 e0       	ldi	r21, 0x00	; 0
   16a34:	0e 94 24 f4 	call	0x1e848	; 0x1e848 <__udivmodsi4>
   16a38:	d3 2e       	mov	r13, r19
   16a3a:	ca 01       	movw	r24, r20
	halfDays = (uint16_t)temp1;		//43200 seconds = 12 hours
   16a3c:	c2 2e       	mov	r12, r18
	seconds = (uint16_t)(c3Tick - (temp1 * 43200));
   16a3e:	62 2f       	mov	r22, r18
   16a40:	73 2f       	mov	r23, r19
   16a42:	20 ec       	ldi	r18, 0xC0	; 192
   16a44:	38 ea       	ldi	r19, 0xA8	; 168
   16a46:	40 e0       	ldi	r20, 0x00	; 0
   16a48:	50 e0       	ldi	r21, 0x00	; 0
   16a4a:	0e 94 f2 f3 	call	0x1e7e4	; 0x1e7e4 <__mulsi3>
   16a4e:	e6 1a       	sub	r14, r22
   16a50:	f7 0a       	sbc	r15, r23

	cmd[2] = HIBYTE(halfDays);
   16a52:	dd 82       	std	Y+5, r13	; 0x05
	cmd[3] = LOBYTE(halfDays);
   16a54:	ce 82       	std	Y+6, r12	; 0x06
	cmd[4] = HIBYTE(seconds);
   16a56:	ff 82       	std	Y+7, r15	; 0x07
	cmd[5] = LOBYTE(seconds);
   16a58:	e8 86       	std	Y+8, r14	; 0x08

	retval = TurnerC3_Tx(pTaskInfo, cmd, 6);
   16a5a:	c3 01       	movw	r24, r6
   16a5c:	be 01       	movw	r22, r28
   16a5e:	6d 5f       	subi	r22, 0xFD	; 253
   16a60:	7f 4f       	sbci	r23, 0xFF	; 255
   16a62:	46 e0       	ldi	r20, 0x06	; 6
   16a64:	0e 94 11 b3 	call	0x16622	; 0x16622 <TurnerC3_Tx>
   16a68:	28 2f       	mov	r18, r24

	if(retval == SUCCESS)
   16a6a:	8f 3f       	cpi	r24, 0xFF	; 255
   16a6c:	09 f0       	breq	.+2      	; 0x16a70 <TurnerC3_SetDateTime+0xa8>
   16a6e:	60 c0       	rjmp	.+192    	; 0x16b30 <TurnerC3_SetDateTime+0x168>
	{
		retval = TurnerC3_Rx_Len(pTaskInfo, pTaskInfo->pBuf->bufferRx, &len, 8, 8 * QUARTER_SECOND);	//2 second timeout
   16a70:	d3 01       	movw	r26, r6
   16a72:	14 96       	adiw	r26, 0x04	; 4
   16a74:	6d 91       	ld	r22, X+
   16a76:	7c 91       	ld	r23, X
   16a78:	15 97       	sbiw	r26, 0x05	; 5
   16a7a:	60 50       	subi	r22, 0x00	; 0
   16a7c:	7f 4f       	sbci	r23, 0xFF	; 255
   16a7e:	c3 01       	movw	r24, r6
   16a80:	ae 01       	movw	r20, r28
   16a82:	4f 5f       	subi	r20, 0xFF	; 255
   16a84:	5f 4f       	sbci	r21, 0xFF	; 255
   16a86:	28 e0       	ldi	r18, 0x08	; 8
   16a88:	30 e0       	ldi	r19, 0x00	; 0
   16a8a:	00 e0       	ldi	r16, 0x00	; 0
   16a8c:	11 e0       	ldi	r17, 0x01	; 1
   16a8e:	0e 94 0f a9 	call	0x1521e	; 0x1521e <TurnerC3_Rx_Len>
   16a92:	28 2f       	mov	r18, r24

		if((retval == SUCCESS) && (len == 8) && (pTaskInfo->pBuf->bufferRx[0] == 0x02))
   16a94:	8f 3f       	cpi	r24, 0xFF	; 255
   16a96:	09 f0       	breq	.+2      	; 0x16a9a <TurnerC3_SetDateTime+0xd2>
   16a98:	4b c0       	rjmp	.+150    	; 0x16b30 <TurnerC3_SetDateTime+0x168>
   16a9a:	89 81       	ldd	r24, Y+1	; 0x01
   16a9c:	9a 81       	ldd	r25, Y+2	; 0x02
   16a9e:	08 97       	sbiw	r24, 0x08	; 8
   16aa0:	09 f0       	breq	.+2      	; 0x16aa4 <TurnerC3_SetDateTime+0xdc>
   16aa2:	46 c0       	rjmp	.+140    	; 0x16b30 <TurnerC3_SetDateTime+0x168>
   16aa4:	d3 01       	movw	r26, r6
   16aa6:	14 96       	adiw	r26, 0x04	; 4
   16aa8:	ed 91       	ld	r30, X+
   16aaa:	fc 91       	ld	r31, X
   16aac:	15 97       	sbiw	r26, 0x05	; 5
   16aae:	e0 50       	subi	r30, 0x00	; 0
   16ab0:	ff 4f       	sbci	r31, 0xFF	; 255
   16ab2:	80 81       	ld	r24, Z
   16ab4:	e0 50       	subi	r30, 0x00	; 0
   16ab6:	f1 40       	sbci	r31, 0x01	; 1
   16ab8:	82 30       	cpi	r24, 0x02	; 2
   16aba:	d1 f5       	brne	.+116    	; 0x16b30 <TurnerC3_SetDateTime+0x168>
	uint32_t myTick = 0;

	uint8_t val1;
	uint8_t val2;

	val1 = *pBuf++;
   16abc:	ee 5f       	subi	r30, 0xFE	; 254
   16abe:	fe 4f       	sbci	r31, 0xFE	; 254
   16ac0:	6f 01       	movw	r12, r30
   16ac2:	08 94       	sec
   16ac4:	c1 1c       	adc	r12, r1
   16ac6:	d1 1c       	adc	r13, r1
	val2 = *pBuf++;
//	seconds = (uint32_t)MAKEWORD(val1, val2);
	seconds = (uint32_t)MAKEWORD(val2, val1);		//Params are Lo Byte, Hi Byte


	myTick = (halfDays * 43200) + seconds + JAN_1_2000;
   16ac8:	61 81       	ldd	r22, Z+1	; 0x01
   16aca:	70 e0       	ldi	r23, 0x00	; 0
   16acc:	30 81       	ld	r19, Z
   16ace:	20 e0       	ldi	r18, 0x00	; 0
   16ad0:	62 2b       	or	r22, r18
   16ad2:	73 2b       	or	r23, r19
   16ad4:	80 e0       	ldi	r24, 0x00	; 0
   16ad6:	90 e0       	ldi	r25, 0x00	; 0
   16ad8:	20 ec       	ldi	r18, 0xC0	; 192
   16ada:	38 ea       	ldi	r19, 0xA8	; 168
   16adc:	40 e0       	ldi	r20, 0x00	; 0
   16ade:	50 e0       	ldi	r21, 0x00	; 0
   16ae0:	0e 94 f2 f3 	call	0x1e7e4	; 0x1e7e4 <__mulsi3>
   16ae4:	7b 01       	movw	r14, r22
   16ae6:	8c 01       	movw	r16, r24
   16ae8:	80 e8       	ldi	r24, 0x80	; 128
   16aea:	93 e4       	ldi	r25, 0x43	; 67
   16aec:	ad e6       	ldi	r26, 0x6D	; 109
   16aee:	b8 e3       	ldi	r27, 0x38	; 56
   16af0:	e8 0e       	add	r14, r24
   16af2:	f9 1e       	adc	r15, r25
   16af4:	0a 1f       	adc	r16, r26
   16af6:	1b 1f       	adc	r17, r27
   16af8:	d6 01       	movw	r26, r12
   16afa:	11 96       	adiw	r26, 0x01	; 1
   16afc:	9c 91       	ld	r25, X
   16afe:	11 97       	sbiw	r26, 0x01	; 1
   16b00:	80 e0       	ldi	r24, 0x00	; 0
   16b02:	12 96       	adiw	r26, 0x02	; 2
   16b04:	2c 91       	ld	r18, X
   16b06:	30 e0       	ldi	r19, 0x00	; 0
   16b08:	82 2b       	or	r24, r18
   16b0a:	93 2b       	or	r25, r19
   16b0c:	a0 e0       	ldi	r26, 0x00	; 0
   16b0e:	b0 e0       	ldi	r27, 0x00	; 0
   16b10:	e8 0e       	add	r14, r24
   16b12:	f9 1e       	adc	r15, r25
   16b14:	0a 1f       	adc	r16, r26
   16b16:	1b 1f       	adc	r17, r27
		retval = TurnerC3_Rx_Len(pTaskInfo, pTaskInfo->pBuf->bufferRx, &len, 8, 8 * QUARTER_SECOND);	//2 second timeout

		if((retval == SUCCESS) && (len == 8) && (pTaskInfo->pBuf->bufferRx[0] == 0x02))
		{
			c3Tick = TurnerC3_ConvertToTick((uint8_t*)&pTaskInfo->pBuf->bufferRx[2]);
			retval = TurnerC3_Xmit_DateTime(pTaskInfo, c3Tick);
   16b18:	c3 01       	movw	r24, r6
   16b1a:	b8 01       	movw	r22, r16
   16b1c:	a7 01       	movw	r20, r14
   16b1e:	0e 94 e7 ac 	call	0x159ce	; 0x159ce <TurnerC3_Xmit_DateTime>
   16b22:	28 2f       	mov	r18, r24
			if(c3Tick != myTick)
   16b24:	e8 14       	cp	r14, r8
   16b26:	f9 04       	cpc	r15, r9
   16b28:	0a 05       	cpc	r16, r10
   16b2a:	1b 05       	cpc	r17, r11
   16b2c:	09 f0       	breq	.+2      	; 0x16b30 <TurnerC3_SetDateTime+0x168>
   16b2e:	20 e0       	ldi	r18, 0x00	; 0
				retval = FAIL;
		}
	}

	return retval;
}
   16b30:	82 2f       	mov	r24, r18
   16b32:	28 96       	adiw	r28, 0x08	; 8
   16b34:	0f b6       	in	r0, 0x3f	; 63
   16b36:	f8 94       	cli
   16b38:	de bf       	out	0x3e, r29	; 62
   16b3a:	0f be       	out	0x3f, r0	; 63
   16b3c:	cd bf       	out	0x3d, r28	; 61
   16b3e:	cf 91       	pop	r28
   16b40:	df 91       	pop	r29
   16b42:	1f 91       	pop	r17
   16b44:	0f 91       	pop	r16
   16b46:	ff 90       	pop	r15
   16b48:	ef 90       	pop	r14
   16b4a:	df 90       	pop	r13
   16b4c:	cf 90       	pop	r12
   16b4e:	bf 90       	pop	r11
   16b50:	af 90       	pop	r10
   16b52:	9f 90       	pop	r9
   16b54:	8f 90       	pop	r8
   16b56:	7f 90       	pop	r7
   16b58:	6f 90       	pop	r6
   16b5a:	08 95       	ret

00016b5c <TurnerC3_GetDateTime>:
}



uint8_t TurnerC3_GetDateTime(PTURNER_C3_TASK pTaskInfo)
{
   16b5c:	cf 92       	push	r12
   16b5e:	df 92       	push	r13
   16b60:	ef 92       	push	r14
   16b62:	ff 92       	push	r15
   16b64:	0f 93       	push	r16
   16b66:	1f 93       	push	r17
   16b68:	df 93       	push	r29
   16b6a:	cf 93       	push	r28
   16b6c:	00 d0       	rcall	.+0      	; 0x16b6e <TurnerC3_GetDateTime+0x12>
   16b6e:	0f 92       	push	r0
   16b70:	cd b7       	in	r28, 0x3d	; 61
   16b72:	de b7       	in	r29, 0x3e	; 62
   16b74:	6c 01       	movw	r12, r24
	uint8_t retval = FAIL;
	uint8_t	cmd[2] = {0x02, 0x00};
   16b76:	82 e0       	ldi	r24, 0x02	; 2
   16b78:	89 83       	std	Y+1, r24	; 0x01
   16b7a:	1a 82       	std	Y+2, r1	; 0x02
	uint16_t len = 0;
   16b7c:	1c 82       	std	Y+4, r1	; 0x04
   16b7e:	1b 82       	std	Y+3, r1	; 0x03
	uint32_t	c3Tick = 0;


	retval = TurnerC3_Tx(pTaskInfo, cmd, 2);
   16b80:	c6 01       	movw	r24, r12
   16b82:	be 01       	movw	r22, r28
   16b84:	6f 5f       	subi	r22, 0xFF	; 255
   16b86:	7f 4f       	sbci	r23, 0xFF	; 255
   16b88:	42 e0       	ldi	r20, 0x02	; 2
   16b8a:	0e 94 11 b3 	call	0x16622	; 0x16622 <TurnerC3_Tx>
   16b8e:	28 2f       	mov	r18, r24

	if(retval == SUCCESS)
   16b90:	8f 3f       	cpi	r24, 0xFF	; 255
   16b92:	09 f0       	breq	.+2      	; 0x16b96 <TurnerC3_GetDateTime+0x3a>
   16b94:	4f c0       	rjmp	.+158    	; 0x16c34 <TurnerC3_GetDateTime+0xd8>
	{
		retval = TurnerC3_Rx_Len(pTaskInfo, pTaskInfo->pBuf->bufferRx, &len, 8, 8 * QUARTER_SECOND);	//2 second timeout
   16b96:	d6 01       	movw	r26, r12
   16b98:	14 96       	adiw	r26, 0x04	; 4
   16b9a:	6d 91       	ld	r22, X+
   16b9c:	7c 91       	ld	r23, X
   16b9e:	15 97       	sbiw	r26, 0x05	; 5
   16ba0:	60 50       	subi	r22, 0x00	; 0
   16ba2:	7f 4f       	sbci	r23, 0xFF	; 255
   16ba4:	c6 01       	movw	r24, r12
   16ba6:	ae 01       	movw	r20, r28
   16ba8:	4d 5f       	subi	r20, 0xFD	; 253
   16baa:	5f 4f       	sbci	r21, 0xFF	; 255
   16bac:	28 e0       	ldi	r18, 0x08	; 8
   16bae:	30 e0       	ldi	r19, 0x00	; 0
   16bb0:	00 e0       	ldi	r16, 0x00	; 0
   16bb2:	11 e0       	ldi	r17, 0x01	; 1
   16bb4:	0e 94 0f a9 	call	0x1521e	; 0x1521e <TurnerC3_Rx_Len>
   16bb8:	28 2f       	mov	r18, r24

		if((retval == SUCCESS) && (len == 8) && (pTaskInfo->pBuf->bufferRx[0] == 0x02))
   16bba:	8f 3f       	cpi	r24, 0xFF	; 255
   16bbc:	d9 f5       	brne	.+118    	; 0x16c34 <TurnerC3_GetDateTime+0xd8>
   16bbe:	8b 81       	ldd	r24, Y+3	; 0x03
   16bc0:	9c 81       	ldd	r25, Y+4	; 0x04
   16bc2:	08 97       	sbiw	r24, 0x08	; 8
   16bc4:	b9 f5       	brne	.+110    	; 0x16c34 <TurnerC3_GetDateTime+0xd8>
   16bc6:	d6 01       	movw	r26, r12
   16bc8:	14 96       	adiw	r26, 0x04	; 4
   16bca:	ed 91       	ld	r30, X+
   16bcc:	fc 91       	ld	r31, X
   16bce:	15 97       	sbiw	r26, 0x05	; 5
   16bd0:	e0 50       	subi	r30, 0x00	; 0
   16bd2:	ff 4f       	sbci	r31, 0xFF	; 255
   16bd4:	80 81       	ld	r24, Z
   16bd6:	e0 50       	subi	r30, 0x00	; 0
   16bd8:	f1 40       	sbci	r31, 0x01	; 1
   16bda:	82 30       	cpi	r24, 0x02	; 2
   16bdc:	59 f5       	brne	.+86     	; 0x16c34 <TurnerC3_GetDateTime+0xd8>
	uint32_t myTick = 0;

	uint8_t val1;
	uint8_t val2;

	val1 = *pBuf++;
   16bde:	ee 5f       	subi	r30, 0xFE	; 254
   16be0:	fe 4f       	sbci	r31, 0xFE	; 254
   16be2:	7f 01       	movw	r14, r30
   16be4:	08 94       	sec
   16be6:	e1 1c       	adc	r14, r1
   16be8:	f1 1c       	adc	r15, r1
		retval = TurnerC3_Rx_Len(pTaskInfo, pTaskInfo->pBuf->bufferRx, &len, 8, 8 * QUARTER_SECOND);	//2 second timeout

		if((retval == SUCCESS) && (len == 8) && (pTaskInfo->pBuf->bufferRx[0] == 0x02))
		{
			c3Tick = TurnerC3_ConvertToTick((uint8_t*)&pTaskInfo->pBuf->bufferRx[2]);
			retval = TurnerC3_Xmit_DateTime(pTaskInfo, c3Tick);
   16bea:	61 81       	ldd	r22, Z+1	; 0x01
   16bec:	70 e0       	ldi	r23, 0x00	; 0
   16bee:	30 81       	ld	r19, Z
   16bf0:	20 e0       	ldi	r18, 0x00	; 0
   16bf2:	62 2b       	or	r22, r18
   16bf4:	73 2b       	or	r23, r19
   16bf6:	80 e0       	ldi	r24, 0x00	; 0
   16bf8:	90 e0       	ldi	r25, 0x00	; 0
   16bfa:	20 ec       	ldi	r18, 0xC0	; 192
   16bfc:	38 ea       	ldi	r19, 0xA8	; 168
   16bfe:	40 e0       	ldi	r20, 0x00	; 0
   16c00:	50 e0       	ldi	r21, 0x00	; 0
   16c02:	0e 94 f2 f3 	call	0x1e7e4	; 0x1e7e4 <__mulsi3>
   16c06:	8b 01       	movw	r16, r22
   16c08:	9c 01       	movw	r18, r24
   16c0a:	00 58       	subi	r16, 0x80	; 128
   16c0c:	1c 4b       	sbci	r17, 0xBC	; 188
   16c0e:	22 49       	sbci	r18, 0x92	; 146
   16c10:	37 4c       	sbci	r19, 0xC7	; 199
   16c12:	f7 01       	movw	r30, r14
   16c14:	51 81       	ldd	r21, Z+1	; 0x01
   16c16:	40 e0       	ldi	r20, 0x00	; 0
   16c18:	82 81       	ldd	r24, Z+2	; 0x02
   16c1a:	90 e0       	ldi	r25, 0x00	; 0
   16c1c:	48 2b       	or	r20, r24
   16c1e:	59 2b       	or	r21, r25
   16c20:	60 e0       	ldi	r22, 0x00	; 0
   16c22:	70 e0       	ldi	r23, 0x00	; 0
   16c24:	40 0f       	add	r20, r16
   16c26:	51 1f       	adc	r21, r17
   16c28:	62 1f       	adc	r22, r18
   16c2a:	73 1f       	adc	r23, r19
   16c2c:	c6 01       	movw	r24, r12
   16c2e:	0e 94 e7 ac 	call	0x159ce	; 0x159ce <TurnerC3_Xmit_DateTime>
   16c32:	28 2f       	mov	r18, r24
		}
	}
	return retval;
}
   16c34:	82 2f       	mov	r24, r18
   16c36:	0f 90       	pop	r0
   16c38:	0f 90       	pop	r0
   16c3a:	0f 90       	pop	r0
   16c3c:	0f 90       	pop	r0
   16c3e:	cf 91       	pop	r28
   16c40:	df 91       	pop	r29
   16c42:	1f 91       	pop	r17
   16c44:	0f 91       	pop	r16
   16c46:	ff 90       	pop	r15
   16c48:	ef 90       	pop	r14
   16c4a:	df 90       	pop	r13
   16c4c:	cf 90       	pop	r12
   16c4e:	08 95       	ret

00016c50 <TurnerC3_StopCurrentData>:

	return retval;
}

uint8_t TurnerC3_StopCurrentData(PTURNER_C3_TASK pTaskInfo)
{
   16c50:	0f 93       	push	r16
   16c52:	1f 93       	push	r17
   16c54:	df 93       	push	r29
   16c56:	cf 93       	push	r28
   16c58:	00 d0       	rcall	.+0      	; 0x16c5a <TurnerC3_StopCurrentData+0xa>
   16c5a:	cd b7       	in	r28, 0x3d	; 61
   16c5c:	de b7       	in	r29, 0x3e	; 62
   16c5e:	8c 01       	movw	r16, r24
	uint8_t retval = FAIL;
	uint8_t cmd[3] = {0x04, 0x01, 0x00};
   16c60:	de 01       	movw	r26, r28
   16c62:	11 96       	adiw	r26, 0x01	; 1
   16c64:	e9 e0       	ldi	r30, 0x09	; 9
   16c66:	f5 e0       	ldi	r31, 0x05	; 5
   16c68:	83 e0       	ldi	r24, 0x03	; 3
   16c6a:	01 90       	ld	r0, Z+
   16c6c:	0d 92       	st	X+, r0
   16c6e:	81 50       	subi	r24, 0x01	; 1
   16c70:	e1 f7       	brne	.-8      	; 0x16c6a <TurnerC3_StopCurrentData+0x1a>

	retval = TurnerC3_Tx(pTaskInfo, cmd, 3);
   16c72:	c8 01       	movw	r24, r16
   16c74:	be 01       	movw	r22, r28
   16c76:	6f 5f       	subi	r22, 0xFF	; 255
   16c78:	7f 4f       	sbci	r23, 0xFF	; 255
   16c7a:	43 e0       	ldi	r20, 0x03	; 3
   16c7c:	0e 94 11 b3 	call	0x16622	; 0x16622 <TurnerC3_Tx>

	pTaskInfo->pBuf->sampleC3 = FALSE;
   16c80:	d8 01       	movw	r26, r16
   16c82:	14 96       	adiw	r26, 0x04	; 4
   16c84:	ed 91       	ld	r30, X+
   16c86:	fc 91       	ld	r31, X
   16c88:	15 97       	sbiw	r26, 0x05	; 5
   16c8a:	ec 5f       	subi	r30, 0xFC	; 252
   16c8c:	fa 4f       	sbci	r31, 0xFA	; 250
   16c8e:	10 82       	st	Z, r1

	return retval;
}
   16c90:	0f 90       	pop	r0
   16c92:	0f 90       	pop	r0
   16c94:	0f 90       	pop	r0
   16c96:	cf 91       	pop	r28
   16c98:	df 91       	pop	r29
   16c9a:	1f 91       	pop	r17
   16c9c:	0f 91       	pop	r16
   16c9e:	08 95       	ret

00016ca0 <TurnerC3_StartCurrentData>:
	return retval;
}


uint8_t TurnerC3_StartCurrentData(PTURNER_C3_TASK pTaskInfo)
{
   16ca0:	0f 93       	push	r16
   16ca2:	1f 93       	push	r17
   16ca4:	df 93       	push	r29
   16ca6:	cf 93       	push	r28
   16ca8:	00 d0       	rcall	.+0      	; 0x16caa <TurnerC3_StartCurrentData+0xa>
   16caa:	cd b7       	in	r28, 0x3d	; 61
   16cac:	de b7       	in	r29, 0x3e	; 62
   16cae:	8c 01       	movw	r16, r24
	uint8_t retval = FAIL;
	uint8_t cmd[3] = {0x04, 0x01, 0x01};
   16cb0:	de 01       	movw	r26, r28
   16cb2:	11 96       	adiw	r26, 0x01	; 1
   16cb4:	ec e0       	ldi	r30, 0x0C	; 12
   16cb6:	f5 e0       	ldi	r31, 0x05	; 5
   16cb8:	83 e0       	ldi	r24, 0x03	; 3
   16cba:	01 90       	ld	r0, Z+
   16cbc:	0d 92       	st	X+, r0
   16cbe:	81 50       	subi	r24, 0x01	; 1
   16cc0:	e1 f7       	brne	.-8      	; 0x16cba <TurnerC3_StartCurrentData+0x1a>

	retval = TurnerC3_Tx(pTaskInfo, cmd, 3);
   16cc2:	c8 01       	movw	r24, r16
   16cc4:	be 01       	movw	r22, r28
   16cc6:	6f 5f       	subi	r22, 0xFF	; 255
   16cc8:	7f 4f       	sbci	r23, 0xFF	; 255
   16cca:	43 e0       	ldi	r20, 0x03	; 3
   16ccc:	0e 94 11 b3 	call	0x16622	; 0x16622 <TurnerC3_Tx>

	pTaskInfo->pBuf->sampleC3 = TRUE;
   16cd0:	d8 01       	movw	r26, r16
   16cd2:	14 96       	adiw	r26, 0x04	; 4
   16cd4:	ed 91       	ld	r30, X+
   16cd6:	fc 91       	ld	r31, X
   16cd8:	15 97       	sbiw	r26, 0x05	; 5
   16cda:	ec 5f       	subi	r30, 0xFC	; 252
   16cdc:	fa 4f       	sbci	r31, 0xFA	; 250
   16cde:	9f ef       	ldi	r25, 0xFF	; 255
   16ce0:	90 83       	st	Z, r25

	return retval;
}
   16ce2:	0f 90       	pop	r0
   16ce4:	0f 90       	pop	r0
   16ce6:	0f 90       	pop	r0
   16ce8:	cf 91       	pop	r28
   16cea:	df 91       	pop	r29
   16cec:	1f 91       	pop	r17
   16cee:	0f 91       	pop	r16
   16cf0:	08 95       	ret

00016cf2 <TurnerC3_GetCalibration>:
}



uint8_t TurnerC3_GetCalibration(PTURNER_C3_TASK pTaskInfo, uint8_t channel)
{
   16cf2:	af 92       	push	r10
   16cf4:	bf 92       	push	r11
   16cf6:	cf 92       	push	r12
   16cf8:	df 92       	push	r13
   16cfa:	ef 92       	push	r14
   16cfc:	ff 92       	push	r15
   16cfe:	0f 93       	push	r16
   16d00:	1f 93       	push	r17
   16d02:	df 93       	push	r29
   16d04:	cf 93       	push	r28
   16d06:	00 d0       	rcall	.+0      	; 0x16d08 <TurnerC3_GetCalibration+0x16>
   16d08:	0f 92       	push	r0
   16d0a:	0f 92       	push	r0
   16d0c:	cd b7       	in	r28, 0x3d	; 61
   16d0e:	de b7       	in	r29, 0x3e	; 62
   16d10:	7c 01       	movw	r14, r24
   16d12:	d6 2e       	mov	r13, r22
	uint8_t 	retval = FAIL;
	uint8_t		cmd[3] = {0x05, 0x01, 0x00};
   16d14:	de 01       	movw	r26, r28
   16d16:	13 96       	adiw	r26, 0x03	; 3
   16d18:	ef e0       	ldi	r30, 0x0F	; 15
   16d1a:	f5 e0       	ldi	r31, 0x05	; 5
   16d1c:	83 e0       	ldi	r24, 0x03	; 3
   16d1e:	01 90       	ld	r0, Z+
   16d20:	0d 92       	st	X+, r0
   16d22:	81 50       	subi	r24, 0x01	; 1
   16d24:	e1 f7       	brne	.-8      	; 0x16d1e <TurnerC3_GetCalibration+0x2c>
	uint16_t 	len = 0;
   16d26:	1a 82       	std	Y+2, r1	; 0x02
   16d28:	19 82       	std	Y+1, r1	; 0x01
	char		*pSensorName;

//	for(int i=1; i<4; i++)
//	{
	cmd[2] = channel;	//i;
   16d2a:	dd 82       	std	Y+5, r13	; 0x05

	OSTimeDlyHMSM(0,0,5,0);
   16d2c:	60 e0       	ldi	r22, 0x00	; 0
   16d2e:	45 e0       	ldi	r20, 0x05	; 5
   16d30:	20 e0       	ldi	r18, 0x00	; 0
   16d32:	30 e0       	ldi	r19, 0x00	; 0
   16d34:	0e 94 2a 2e 	call	0x5c54	; 0x5c54 <OSTimeDlyHMSM>

	retval = TurnerC3_Rx_Len(pTaskInfo, pTaskInfo->pBuf->bufferRx, &len, 100, 2 * QUARTER_SECOND);	//2.5 second timeout
   16d38:	d7 01       	movw	r26, r14
   16d3a:	14 96       	adiw	r26, 0x04	; 4
   16d3c:	6d 91       	ld	r22, X+
   16d3e:	7c 91       	ld	r23, X
   16d40:	15 97       	sbiw	r26, 0x05	; 5
   16d42:	60 50       	subi	r22, 0x00	; 0
   16d44:	7f 4f       	sbci	r23, 0xFF	; 255
   16d46:	c7 01       	movw	r24, r14
   16d48:	5e 01       	movw	r10, r28
   16d4a:	08 94       	sec
   16d4c:	a1 1c       	adc	r10, r1
   16d4e:	b1 1c       	adc	r11, r1
   16d50:	a5 01       	movw	r20, r10
   16d52:	24 e6       	ldi	r18, 0x64	; 100
   16d54:	30 e0       	ldi	r19, 0x00	; 0
   16d56:	00 e4       	ldi	r16, 0x40	; 64
   16d58:	10 e0       	ldi	r17, 0x00	; 0
   16d5a:	0e 94 0f a9 	call	0x1521e	; 0x1521e <TurnerC3_Rx_Len>

	memset(pTaskInfo->pBuf->bufferRx, 0, 200);
   16d5e:	f7 01       	movw	r30, r14
   16d60:	84 81       	ldd	r24, Z+4	; 0x04
   16d62:	95 81       	ldd	r25, Z+5	; 0x05
   16d64:	80 50       	subi	r24, 0x00	; 0
   16d66:	9f 4f       	sbci	r25, 0xFF	; 255
   16d68:	fc 01       	movw	r30, r24
   16d6a:	88 ec       	ldi	r24, 0xC8	; 200
   16d6c:	df 01       	movw	r26, r30
   16d6e:	1d 92       	st	X+, r1
   16d70:	8a 95       	dec	r24
   16d72:	e9 f7       	brne	.-6      	; 0x16d6e <TurnerC3_GetCalibration+0x7c>

	retval = TurnerC3_Tx(pTaskInfo, cmd, 3);
   16d74:	c7 01       	movw	r24, r14
   16d76:	be 01       	movw	r22, r28
   16d78:	6d 5f       	subi	r22, 0xFD	; 253
   16d7a:	7f 4f       	sbci	r23, 0xFF	; 255
   16d7c:	43 e0       	ldi	r20, 0x03	; 3
   16d7e:	0e 94 11 b3 	call	0x16622	; 0x16622 <TurnerC3_Tx>
   16d82:	c8 2e       	mov	r12, r24

	if(retval == SUCCESS)
   16d84:	bf ef       	ldi	r27, 0xFF	; 255
   16d86:	8b 17       	cp	r24, r27
   16d88:	09 f0       	breq	.+2      	; 0x16d8c <TurnerC3_GetCalibration+0x9a>
   16d8a:	75 c0       	rjmp	.+234    	; 0x16e76 <TurnerC3_GetCalibration+0x184>
	{
		retval = TurnerC3_Rx_Len(pTaskInfo, pTaskInfo->pBuf->bufferRx, &len, 57, 10 * QUARTER_SECOND);	//2.5 second timeout
   16d8c:	f7 01       	movw	r30, r14
   16d8e:	64 81       	ldd	r22, Z+4	; 0x04
   16d90:	75 81       	ldd	r23, Z+5	; 0x05
   16d92:	60 50       	subi	r22, 0x00	; 0
   16d94:	7f 4f       	sbci	r23, 0xFF	; 255
   16d96:	c7 01       	movw	r24, r14
   16d98:	a5 01       	movw	r20, r10
   16d9a:	29 e3       	ldi	r18, 0x39	; 57
   16d9c:	30 e0       	ldi	r19, 0x00	; 0
   16d9e:	00 e4       	ldi	r16, 0x40	; 64
   16da0:	11 e0       	ldi	r17, 0x01	; 1
   16da2:	0e 94 0f a9 	call	0x1521e	; 0x1521e <TurnerC3_Rx_Len>
   16da6:	c8 2e       	mov	r12, r24

		if((retval == SUCCESS) && (len == 57) && (pTaskInfo->pBuf->bufferRx[0] == 0x05))
   16da8:	ff ef       	ldi	r31, 0xFF	; 255
   16daa:	8f 17       	cp	r24, r31
   16dac:	09 f0       	breq	.+2      	; 0x16db0 <TurnerC3_GetCalibration+0xbe>
   16dae:	63 c0       	rjmp	.+198    	; 0x16e76 <TurnerC3_GetCalibration+0x184>
   16db0:	89 81       	ldd	r24, Y+1	; 0x01
   16db2:	9a 81       	ldd	r25, Y+2	; 0x02
   16db4:	c9 97       	sbiw	r24, 0x39	; 57
   16db6:	09 f0       	breq	.+2      	; 0x16dba <TurnerC3_GetCalibration+0xc8>
   16db8:	5e c0       	rjmp	.+188    	; 0x16e76 <TurnerC3_GetCalibration+0x184>
   16dba:	d7 01       	movw	r26, r14
   16dbc:	14 96       	adiw	r26, 0x04	; 4
   16dbe:	ed 91       	ld	r30, X+
   16dc0:	fc 91       	ld	r31, X
   16dc2:	15 97       	sbiw	r26, 0x05	; 5
   16dc4:	e0 50       	subi	r30, 0x00	; 0
   16dc6:	ff 4f       	sbci	r31, 0xFF	; 255
   16dc8:	80 81       	ld	r24, Z
   16dca:	e0 50       	subi	r30, 0x00	; 0
   16dcc:	f1 40       	sbci	r31, 0x01	; 1
   16dce:	85 30       	cpi	r24, 0x05	; 5
   16dd0:	09 f0       	breq	.+2      	; 0x16dd4 <TurnerC3_GetCalibration+0xe2>
   16dd2:	51 c0       	rjmp	.+162    	; 0x16e76 <TurnerC3_GetCalibration+0x184>
		{
			switch(channel)
   16dd4:	b2 e0       	ldi	r27, 0x02	; 2
   16dd6:	db 16       	cp	r13, r27
   16dd8:	59 f0       	breq	.+22     	; 0x16df0 <TurnerC3_GetCalibration+0xfe>
   16dda:	83 e0       	ldi	r24, 0x03	; 3
   16ddc:	d8 16       	cp	r13, r24
   16dde:	61 f0       	breq	.+24     	; 0x16df8 <TurnerC3_GetCalibration+0x106>
   16de0:	a1 e0       	ldi	r26, 0x01	; 1
   16de2:	da 16       	cp	r13, r26
   16de4:	09 f0       	breq	.+2      	; 0x16de8 <TurnerC3_GetCalibration+0xf6>
   16de6:	47 c0       	rjmp	.+142    	; 0x16e76 <TurnerC3_GetCalibration+0x184>
			{
				case 1:
					pSensorName = pTaskInfo->pBuf->nameC1;
   16de8:	8f 01       	movw	r16, r30
   16dea:	04 5f       	subi	r16, 0xF4	; 244
   16dec:	18 4f       	sbci	r17, 0xF8	; 248
   16dee:	07 c0       	rjmp	.+14     	; 0x16dfe <TurnerC3_GetCalibration+0x10c>
					break;
				case 2:
					pSensorName = pTaskInfo->pBuf->nameC2;
   16df0:	8f 01       	movw	r16, r30
   16df2:	05 5e       	subi	r16, 0xE5	; 229
   16df4:	18 4f       	sbci	r17, 0xF8	; 248
   16df6:	03 c0       	rjmp	.+6      	; 0x16dfe <TurnerC3_GetCalibration+0x10c>
					break;
				case 3:
					pSensorName = pTaskInfo->pBuf->nameC3;
   16df8:	8f 01       	movw	r16, r30
   16dfa:	06 5d       	subi	r16, 0xD6	; 214
   16dfc:	18 4f       	sbci	r17, 0xF8	; 248
					break;
				default:
					pSensorName = NULL;
			}
			if(pSensorName != NULL)
   16dfe:	01 15       	cp	r16, r1
   16e00:	11 05       	cpc	r17, r1
   16e02:	c9 f1       	breq	.+114    	; 0x16e76 <TurnerC3_GetCalibration+0x184>
			{
				uint8_t mask = 1;

				mask = mask << (channel-1);
				memset(pSensorName, 0, 15);
   16e04:	8f e0       	ldi	r24, 0x0F	; 15
   16e06:	f8 01       	movw	r30, r16
   16e08:	11 92       	st	Z+, r1
   16e0a:	8a 95       	dec	r24
   16e0c:	e9 f7       	brne	.-6      	; 0x16e08 <TurnerC3_GetCalibration+0x116>
				if((pTaskInfo->pBuf->sensorsInstalled & mask) != 0)
   16e0e:	d7 01       	movw	r26, r14
   16e10:	14 96       	adiw	r26, 0x04	; 4
   16e12:	ed 91       	ld	r30, X+
   16e14:	fc 91       	ld	r31, X
   16e16:	15 97       	sbiw	r26, 0x05	; 5
   16e18:	8d 2d       	mov	r24, r13
   16e1a:	90 e0       	ldi	r25, 0x00	; 0
   16e1c:	01 97       	sbiw	r24, 0x01	; 1
   16e1e:	21 e0       	ldi	r18, 0x01	; 1
   16e20:	30 e0       	ldi	r19, 0x00	; 0
   16e22:	02 c0       	rjmp	.+4      	; 0x16e28 <TurnerC3_GetCalibration+0x136>
   16e24:	22 0f       	add	r18, r18
   16e26:	33 1f       	adc	r19, r19
   16e28:	8a 95       	dec	r24
   16e2a:	e2 f7       	brpl	.-8      	; 0x16e24 <TurnerC3_GetCalibration+0x132>
   16e2c:	e8 5b       	subi	r30, 0xB8	; 184
   16e2e:	f8 4f       	sbci	r31, 0xF8	; 248
   16e30:	80 81       	ld	r24, Z
   16e32:	e8 54       	subi	r30, 0x48	; 72
   16e34:	f7 40       	sbci	r31, 0x07	; 7
   16e36:	82 23       	and	r24, r18
   16e38:	49 f0       	breq	.+18     	; 0x16e4c <TurnerC3_GetCalibration+0x15a>
					memcpy(pSensorName, &pTaskInfo->pBuf->bufferRx[21], 15);
   16e3a:	d8 01       	movw	r26, r16
   16e3c:	eb 5e       	subi	r30, 0xEB	; 235
   16e3e:	fe 4f       	sbci	r31, 0xFE	; 254
   16e40:	8f e0       	ldi	r24, 0x0F	; 15
   16e42:	01 90       	ld	r0, Z+
   16e44:	0d 92       	st	X+, r0
   16e46:	81 50       	subi	r24, 0x01	; 1
   16e48:	e1 f7       	brne	.-8      	; 0x16e42 <TurnerC3_GetCalibration+0x150>
   16e4a:	07 c0       	rjmp	.+14     	; 0x16e5a <TurnerC3_GetCalibration+0x168>
				else
					memcpy_P(pSensorName, PSTR("No Fluorometer "), 15);
   16e4c:	c8 01       	movw	r24, r16
   16e4e:	6d e1       	ldi	r22, 0x1D	; 29
   16e50:	75 e1       	ldi	r23, 0x15	; 21
   16e52:	4f e0       	ldi	r20, 0x0F	; 15
   16e54:	50 e0       	ldi	r21, 0x00	; 0
   16e56:	0e 94 ab ef 	call	0x1df56	; 0x1df56 <memcpy_P>
   16e5a:	f8 01       	movw	r30, r16
   16e5c:	20 e0       	ldi	r18, 0x00	; 0
   16e5e:	30 e0       	ldi	r19, 0x00	; 0

				for(int j=0; j<15; j++)
				{
					if(pSensorName[j] == 0)
						pSensorName[j] = ' ';
   16e60:	90 e2       	ldi	r25, 0x20	; 32
				else
					memcpy_P(pSensorName, PSTR("No Fluorometer "), 15);

				for(int j=0; j<15; j++)
				{
					if(pSensorName[j] == 0)
   16e62:	80 81       	ld	r24, Z
   16e64:	88 23       	and	r24, r24
   16e66:	09 f4       	brne	.+2      	; 0x16e6a <TurnerC3_GetCalibration+0x178>
						pSensorName[j] = ' ';
   16e68:	90 83       	st	Z, r25
				if((pTaskInfo->pBuf->sensorsInstalled & mask) != 0)
					memcpy(pSensorName, &pTaskInfo->pBuf->bufferRx[21], 15);
				else
					memcpy_P(pSensorName, PSTR("No Fluorometer "), 15);

				for(int j=0; j<15; j++)
   16e6a:	2f 5f       	subi	r18, 0xFF	; 255
   16e6c:	3f 4f       	sbci	r19, 0xFF	; 255
   16e6e:	31 96       	adiw	r30, 0x01	; 1
   16e70:	2f 30       	cpi	r18, 0x0F	; 15
   16e72:	31 05       	cpc	r19, r1
   16e74:	b1 f7       	brne	.-20     	; 0x16e62 <TurnerC3_GetCalibration+0x170>
			}
		}
	}
//	}
	return retval;
}
   16e76:	8c 2d       	mov	r24, r12
   16e78:	0f 90       	pop	r0
   16e7a:	0f 90       	pop	r0
   16e7c:	0f 90       	pop	r0
   16e7e:	0f 90       	pop	r0
   16e80:	0f 90       	pop	r0
   16e82:	cf 91       	pop	r28
   16e84:	df 91       	pop	r29
   16e86:	1f 91       	pop	r17
   16e88:	0f 91       	pop	r16
   16e8a:	ff 90       	pop	r15
   16e8c:	ef 90       	pop	r14
   16e8e:	df 90       	pop	r13
   16e90:	cf 90       	pop	r12
   16e92:	bf 90       	pop	r11
   16e94:	af 90       	pop	r10
   16e96:	08 95       	ret

00016e98 <TurnerC3_SetConfiguration>:

	return retval;
}

uint8_t TurnerC3_SetConfiguration(PTURNER_C3_TASK pTaskInfo, char* paramlist)
{
   16e98:	2f 92       	push	r2
   16e9a:	3f 92       	push	r3
   16e9c:	4f 92       	push	r4
   16e9e:	5f 92       	push	r5
   16ea0:	6f 92       	push	r6
   16ea2:	7f 92       	push	r7
   16ea4:	8f 92       	push	r8
   16ea6:	9f 92       	push	r9
   16ea8:	af 92       	push	r10
   16eaa:	bf 92       	push	r11
   16eac:	cf 92       	push	r12
   16eae:	df 92       	push	r13
   16eb0:	ef 92       	push	r14
   16eb2:	ff 92       	push	r15
   16eb4:	0f 93       	push	r16
   16eb6:	1f 93       	push	r17
   16eb8:	df 93       	push	r29
   16eba:	cf 93       	push	r28
   16ebc:	cd b7       	in	r28, 0x3d	; 61
   16ebe:	de b7       	in	r29, 0x3e	; 62
   16ec0:	61 97       	sbiw	r28, 0x11	; 17
   16ec2:	0f b6       	in	r0, 0x3f	; 63
   16ec4:	f8 94       	cli
   16ec6:	de bf       	out	0x3e, r29	; 62
   16ec8:	0f be       	out	0x3f, r0	; 63
   16eca:	cd bf       	out	0x3d, r28	; 61
   16ecc:	7c 01       	movw	r14, r24
   16ece:	79 87       	std	Y+9, r23	; 0x09
   16ed0:	68 87       	std	Y+8, r22	; 0x08
	int i = 0;
	BOOL done = FALSE;
	uint16_t tempWord = 0;
	uint8_t  tempByte = 0;
	BOOL sendResult = TRUE;
	uint16_t len = 0;
   16ed2:	1a 82       	std	Y+2, r1	; 0x02
   16ed4:	19 82       	std	Y+1, r1	; 0x01

	memcpy_P(sep, separator2a, 5);
   16ed6:	8e 01       	movw	r16, r28
   16ed8:	0d 5f       	subi	r16, 0xFD	; 253
   16eda:	1f 4f       	sbci	r17, 0xFF	; 255
   16edc:	c8 01       	movw	r24, r16
   16ede:	6c e0       	ldi	r22, 0x0C	; 12
   16ee0:	74 e1       	ldi	r23, 0x14	; 20
   16ee2:	45 e0       	ldi	r20, 0x05	; 5
   16ee4:	50 e0       	ldi	r21, 0x00	; 0
   16ee6:	0e 94 ab ef 	call	0x1df56	; 0x1df56 <memcpy_P>

	if(paramlist == (char*)NULL)
   16eea:	88 85       	ldd	r24, Y+8	; 0x08
   16eec:	99 85       	ldd	r25, Y+9	; 0x09
   16eee:	89 2b       	or	r24, r25
   16ef0:	91 f4       	brne	.+36     	; 0x16f16 <TurnerC3_SetConfiguration+0x7e>
	{
		memcpy(&pTaskInfo->pBuf->newConfiguration, &pTaskInfo->pBuf->currentConfiguration, sizeof(C3_CFG_BLOCK));
   16ef2:	d7 01       	movw	r26, r14
   16ef4:	14 96       	adiw	r26, 0x04	; 4
   16ef6:	8d 91       	ld	r24, X+
   16ef8:	9c 91       	ld	r25, X
   16efa:	15 97       	sbiw	r26, 0x05	; 5
   16efc:	dc 01       	movw	r26, r24
   16efe:	a2 58       	subi	r26, 0x82	; 130
   16f00:	ba 4f       	sbci	r27, 0xFA	; 250
   16f02:	fc 01       	movw	r30, r24
   16f04:	ec 56       	subi	r30, 0x6C	; 108
   16f06:	fa 4f       	sbci	r31, 0xFA	; 250
   16f08:	86 e1       	ldi	r24, 0x16	; 22
   16f0a:	01 90       	ld	r0, Z+
   16f0c:	0d 92       	st	X+, r0
   16f0e:	81 50       	subi	r24, 0x01	; 1
   16f10:	e1 f7       	brne	.-8      	; 0x16f0a <TurnerC3_SetConfiguration+0x72>
   16f12:	1a 86       	std	Y+10, r1	; 0x0a
   16f14:	20 c1       	rjmp	.+576    	; 0x17156 <TurnerC3_SetConfiguration+0x2be>
   16f16:	b0 e1       	ldi	r27, 0x10	; 16
   16f18:	bb 87       	std	Y+11, r27	; 0x0b
   16f1a:	5c ef       	ldi	r21, 0xFC	; 252
   16f1c:	c5 2e       	mov	r12, r21
   16f1e:	5f ef       	ldi	r21, 0xFF	; 255
   16f20:	d5 2e       	mov	r13, r21
	else
	{
#define X_CFG pTaskInfo->pBuf->newConfiguration
		while((i<15) && (done == FALSE))
		{
			param = ThreadSafeStrTok(&paramlist, sep);
   16f22:	c8 01       	movw	r24, r16
   16f24:	08 8b       	std	Y+16, r16	; 0x10
   16f26:	99 8b       	std	Y+17, r25	; 0x11

	memcpy_P(sep, separator2a, 5);

	if(paramlist == (char*)NULL)
	{
		memcpy(&pTaskInfo->pBuf->newConfiguration, &pTaskInfo->pBuf->currentConfiguration, sizeof(C3_CFG_BLOCK));
   16f28:	86 01       	movw	r16, r12
   16f2a:	0c 5f       	subi	r16, 0xFC	; 252
   16f2c:	1f 4f       	sbci	r17, 0xFF	; 255
	else
	{
#define X_CFG pTaskInfo->pBuf->newConfiguration
		while((i<15) && (done == FALSE))
		{
			param = ThreadSafeStrTok(&paramlist, sep);
   16f2e:	ce 01       	movw	r24, r28
   16f30:	08 96       	adiw	r24, 0x08	; 8
   16f32:	68 89       	ldd	r22, Y+16	; 0x10
   16f34:	79 89       	ldd	r23, Y+17	; 0x11
   16f36:	0e 94 67 a9 	call	0x152ce	; 0x152ce <ThreadSafeStrTok>
   16f3a:	fc 01       	movw	r30, r24
			if(param == NULL)
   16f3c:	00 97       	sbiw	r24, 0x00	; 0
   16f3e:	09 f4       	brne	.+2      	; 0x16f42 <TurnerC3_SetConfiguration+0xaa>
   16f40:	f9 c0       	rjmp	.+498    	; 0x17134 <TurnerC3_SetConfiguration+0x29c>
			{
				done = TRUE;
			}
			else
			{
				switch(i)
   16f42:	0c 30       	cpi	r16, 0x0C	; 12
   16f44:	11 05       	cpc	r17, r1
   16f46:	ac f4       	brge	.+42     	; 0x16f72 <TurnerC3_SetConfiguration+0xda>
   16f48:	04 30       	cpi	r16, 0x04	; 4
   16f4a:	11 05       	cpc	r17, r1
   16f4c:	0c f0       	brlt	.+2      	; 0x16f50 <TurnerC3_SetConfiguration+0xb8>
   16f4e:	5e c0       	rjmp	.+188    	; 0x1700c <TurnerC3_SetConfiguration+0x174>
   16f50:	01 30       	cpi	r16, 0x01	; 1
   16f52:	11 05       	cpc	r17, r1
   16f54:	59 f1       	breq	.+86     	; 0x16fac <TurnerC3_SetConfiguration+0x114>
   16f56:	02 30       	cpi	r16, 0x02	; 2
   16f58:	11 05       	cpc	r17, r1
   16f5a:	1c f4       	brge	.+6      	; 0x16f62 <TurnerC3_SetConfiguration+0xca>
   16f5c:	01 2b       	or	r16, r17
   16f5e:	b1 f0       	breq	.+44     	; 0x16f8c <TurnerC3_SetConfiguration+0xf4>
   16f60:	64 c0       	rjmp	.+200    	; 0x1702a <TurnerC3_SetConfiguration+0x192>
   16f62:	02 30       	cpi	r16, 0x02	; 2
   16f64:	11 05       	cpc	r17, r1
   16f66:	91 f1       	breq	.+100    	; 0x16fcc <TurnerC3_SetConfiguration+0x134>
   16f68:	03 30       	cpi	r16, 0x03	; 3
   16f6a:	11 05       	cpc	r17, r1
   16f6c:	09 f0       	breq	.+2      	; 0x16f70 <TurnerC3_SetConfiguration+0xd8>
   16f6e:	5d c0       	rjmp	.+186    	; 0x1702a <TurnerC3_SetConfiguration+0x192>
   16f70:	3d c0       	rjmp	.+122    	; 0x16fec <TurnerC3_SetConfiguration+0x154>
   16f72:	0d 30       	cpi	r16, 0x0D	; 13
   16f74:	11 05       	cpc	r17, r1
   16f76:	09 f4       	brne	.+2      	; 0x16f7a <TurnerC3_SetConfiguration+0xe2>
   16f78:	9f c0       	rjmp	.+318    	; 0x170b8 <TurnerC3_SetConfiguration+0x220>
   16f7a:	0d 30       	cpi	r16, 0x0D	; 13
   16f7c:	11 05       	cpc	r17, r1
   16f7e:	0c f4       	brge	.+2      	; 0x16f82 <TurnerC3_SetConfiguration+0xea>
   16f80:	87 c0       	rjmp	.+270    	; 0x17090 <TurnerC3_SetConfiguration+0x1f8>
   16f82:	0e 30       	cpi	r16, 0x0E	; 14
   16f84:	11 05       	cpc	r17, r1
   16f86:	09 f0       	breq	.+2      	; 0x16f8a <TurnerC3_SetConfiguration+0xf2>
   16f88:	50 c0       	rjmp	.+160    	; 0x1702a <TurnerC3_SetConfiguration+0x192>
   16f8a:	a1 c0       	rjmp	.+322    	; 0x170ce <TurnerC3_SetConfiguration+0x236>
				{
					case 0:
						tempWord = atoi(param);
   16f8c:	0e 94 59 ef 	call	0x1deb2	; 0x1deb2 <atoi>
						X_CFG.numSamples = TurnerC3_Endian2ByteSwap(tempWord);
   16f90:	d7 01       	movw	r26, r14
   16f92:	14 96       	adiw	r26, 0x04	; 4
   16f94:	ed 91       	ld	r30, X+
   16f96:	fc 91       	ld	r31, X
   16f98:	15 97       	sbiw	r26, 0x05	; 5
   16f9a:	e2 58       	subi	r30, 0x82	; 130
   16f9c:	fa 4f       	sbci	r31, 0xFA	; 250
   16f9e:	98 2e       	mov	r9, r24
   16fa0:	88 24       	eor	r8, r8
   16fa2:	89 2f       	mov	r24, r25
   16fa4:	90 e0       	ldi	r25, 0x00	; 0
   16fa6:	88 29       	or	r24, r8
   16fa8:	99 29       	or	r25, r9
   16faa:	83 c0       	rjmp	.+262    	; 0x170b2 <TurnerC3_SetConfiguration+0x21a>
						break;
					case 1:
						tempWord = atoi(param);
   16fac:	0e 94 59 ef 	call	0x1deb2	; 0x1deb2 <atoi>
						X_CFG.period = TurnerC3_Endian2ByteSwap(tempWord);
   16fb0:	d7 01       	movw	r26, r14
   16fb2:	14 96       	adiw	r26, 0x04	; 4
   16fb4:	ed 91       	ld	r30, X+
   16fb6:	fc 91       	ld	r31, X
   16fb8:	15 97       	sbiw	r26, 0x05	; 5
   16fba:	e0 58       	subi	r30, 0x80	; 128
   16fbc:	fa 4f       	sbci	r31, 0xFA	; 250
   16fbe:	78 2e       	mov	r7, r24
   16fc0:	66 24       	eor	r6, r6
   16fc2:	89 2f       	mov	r24, r25
   16fc4:	90 e0       	ldi	r25, 0x00	; 0
   16fc6:	86 29       	or	r24, r6
   16fc8:	97 29       	or	r25, r7
   16fca:	73 c0       	rjmp	.+230    	; 0x170b2 <TurnerC3_SetConfiguration+0x21a>
						break;
					case 2:
						tempWord = atoi(param);
   16fcc:	0e 94 59 ef 	call	0x1deb2	; 0x1deb2 <atoi>
						X_CFG.powerOnDelay = TurnerC3_Endian2ByteSwap(tempWord);
   16fd0:	d7 01       	movw	r26, r14
   16fd2:	14 96       	adiw	r26, 0x04	; 4
   16fd4:	ed 91       	ld	r30, X+
   16fd6:	fc 91       	ld	r31, X
   16fd8:	15 97       	sbiw	r26, 0x05	; 5
   16fda:	ee 57       	subi	r30, 0x7E	; 126
   16fdc:	fa 4f       	sbci	r31, 0xFA	; 250
   16fde:	58 2e       	mov	r5, r24
   16fe0:	44 24       	eor	r4, r4
   16fe2:	89 2f       	mov	r24, r25
   16fe4:	90 e0       	ldi	r25, 0x00	; 0
   16fe6:	84 29       	or	r24, r4
   16fe8:	95 29       	or	r25, r5
   16fea:	63 c0       	rjmp	.+198    	; 0x170b2 <TurnerC3_SetConfiguration+0x21a>
						break;
					case 3:
						tempWord = atoi(param);
   16fec:	0e 94 59 ef 	call	0x1deb2	; 0x1deb2 <atoi>
						X_CFG.channelMask = TurnerC3_Endian2ByteSwap(tempWord);
   16ff0:	d7 01       	movw	r26, r14
   16ff2:	14 96       	adiw	r26, 0x04	; 4
   16ff4:	ed 91       	ld	r30, X+
   16ff6:	fc 91       	ld	r31, X
   16ff8:	15 97       	sbiw	r26, 0x05	; 5
   16ffa:	ec 57       	subi	r30, 0x7C	; 124
   16ffc:	fa 4f       	sbci	r31, 0xFA	; 250
   16ffe:	38 2e       	mov	r3, r24
   17000:	22 24       	eor	r2, r2
   17002:	89 2f       	mov	r24, r25
   17004:	90 e0       	ldi	r25, 0x00	; 0
   17006:	82 29       	or	r24, r2
   17008:	93 29       	or	r25, r3
   1700a:	53 c0       	rjmp	.+166    	; 0x170b2 <TurnerC3_SetConfiguration+0x21a>
					case 7:
					case 8:
					case 9:
					case 10:
					case 11:
						if((*param < '0') || (*param > '9'))
   1700c:	80 81       	ld	r24, Z
   1700e:	80 53       	subi	r24, 0x30	; 48
   17010:	8a 30       	cpi	r24, 0x0A	; 10
   17012:	68 f0       	brcs	.+26     	; 0x1702e <TurnerC3_SetConfiguration+0x196>
						{
							X_CFG.gainControl[i-4] = 3;
   17014:	d7 01       	movw	r26, r14
   17016:	14 96       	adiw	r26, 0x04	; 4
   17018:	ed 91       	ld	r30, X+
   1701a:	fc 91       	ld	r31, X
   1701c:	15 97       	sbiw	r26, 0x05	; 5
   1701e:	ec 0d       	add	r30, r12
   17020:	fd 1d       	adc	r31, r13
   17022:	ea 57       	subi	r30, 0x7A	; 122
   17024:	fa 4f       	sbci	r31, 0xFA	; 250
   17026:	b3 e0       	ldi	r27, 0x03	; 3
   17028:	b0 83       	st	Z, r27
   1702a:	80 e0       	ldi	r24, 0x00	; 0
   1702c:	84 c0       	rjmp	.+264    	; 0x17136 <TurnerC3_SetConfiguration+0x29e>
						}
						else
						{
							tempByte = atoi(param);
   1702e:	cf 01       	movw	r24, r30
   17030:	0e 94 59 ef 	call	0x1deb2	; 0x1deb2 <atoi>
							switch(tempByte)
   17034:	8a 30       	cpi	r24, 0x0A	; 10
   17036:	79 f0       	breq	.+30     	; 0x17056 <TurnerC3_SetConfiguration+0x1be>
   17038:	84 36       	cpi	r24, 0x64	; 100
   1703a:	c1 f0       	breq	.+48     	; 0x1706c <TurnerC3_SetConfiguration+0x1d4>
   1703c:	d7 01       	movw	r26, r14
   1703e:	14 96       	adiw	r26, 0x04	; 4
   17040:	ed 91       	ld	r30, X+
   17042:	fc 91       	ld	r31, X
   17044:	15 97       	sbiw	r26, 0x05	; 5
   17046:	81 30       	cpi	r24, 0x01	; 1
   17048:	e1 f4       	brne	.+56     	; 0x17082 <TurnerC3_SetConfiguration+0x1ea>
							{
								case 1:
									X_CFG.gainControl[i-4] = 0;
   1704a:	ec 0d       	add	r30, r12
   1704c:	fd 1d       	adc	r31, r13
   1704e:	ea 57       	subi	r30, 0x7A	; 122
   17050:	fa 4f       	sbci	r31, 0xFA	; 250
   17052:	10 82       	st	Z, r1
   17054:	ea cf       	rjmp	.-44     	; 0x1702a <TurnerC3_SetConfiguration+0x192>
									break;
								case 10:
									X_CFG.gainControl[i-4] = 1;
   17056:	d7 01       	movw	r26, r14
   17058:	14 96       	adiw	r26, 0x04	; 4
   1705a:	ed 91       	ld	r30, X+
   1705c:	fc 91       	ld	r31, X
   1705e:	15 97       	sbiw	r26, 0x05	; 5
   17060:	ec 0d       	add	r30, r12
   17062:	fd 1d       	adc	r31, r13
   17064:	ea 57       	subi	r30, 0x7A	; 122
   17066:	fa 4f       	sbci	r31, 0xFA	; 250
   17068:	b1 e0       	ldi	r27, 0x01	; 1
   1706a:	de cf       	rjmp	.-68     	; 0x17028 <TurnerC3_SetConfiguration+0x190>
									break;
								case 100:
									X_CFG.gainControl[i-4] = 2;
   1706c:	d7 01       	movw	r26, r14
   1706e:	14 96       	adiw	r26, 0x04	; 4
   17070:	ed 91       	ld	r30, X+
   17072:	fc 91       	ld	r31, X
   17074:	15 97       	sbiw	r26, 0x05	; 5
   17076:	ec 0d       	add	r30, r12
   17078:	fd 1d       	adc	r31, r13
   1707a:	ea 57       	subi	r30, 0x7A	; 122
   1707c:	fa 4f       	sbci	r31, 0xFA	; 250
   1707e:	b2 e0       	ldi	r27, 0x02	; 2
   17080:	d3 cf       	rjmp	.-90     	; 0x17028 <TurnerC3_SetConfiguration+0x190>
									break;
								default:
									X_CFG.gainControl[i-4] = 3;
   17082:	ec 0d       	add	r30, r12
   17084:	fd 1d       	adc	r31, r13
   17086:	ea 57       	subi	r30, 0x7A	; 122
   17088:	fa 4f       	sbci	r31, 0xFA	; 250
   1708a:	23 e0       	ldi	r18, 0x03	; 3
   1708c:	20 83       	st	Z, r18
   1708e:	cd cf       	rjmp	.-102    	; 0x1702a <TurnerC3_SetConfiguration+0x192>
							}
						}
						break;
					case 12:
						tempWord = atoi(param);
   17090:	0e 94 59 ef 	call	0x1deb2	; 0x1deb2 <atoi>
						X_CFG.numReadingsAvg = TurnerC3_Endian2ByteSwap(tempWord);
   17094:	d7 01       	movw	r26, r14
   17096:	14 96       	adiw	r26, 0x04	; 4
   17098:	ed 91       	ld	r30, X+
   1709a:	fc 91       	ld	r31, X
   1709c:	15 97       	sbiw	r26, 0x05	; 5
   1709e:	e2 57       	subi	r30, 0x72	; 114
   170a0:	fa 4f       	sbci	r31, 0xFA	; 250
   170a2:	8d 87       	std	Y+13, r24	; 0x0d
   170a4:	1c 86       	std	Y+12, r1	; 0x0c
   170a6:	89 2f       	mov	r24, r25
   170a8:	90 e0       	ldi	r25, 0x00	; 0
   170aa:	2c 85       	ldd	r18, Y+12	; 0x0c
   170ac:	3d 85       	ldd	r19, Y+13	; 0x0d
   170ae:	82 2b       	or	r24, r18
   170b0:	93 2b       	or	r25, r19
   170b2:	91 83       	std	Z+1, r25	; 0x01
   170b4:	80 83       	st	Z, r24
   170b6:	b9 cf       	rjmp	.-142    	; 0x1702a <TurnerC3_SetConfiguration+0x192>
						break;
					case 13:
						tempByte = atoi(param);
   170b8:	0e 94 59 ef 	call	0x1deb2	; 0x1deb2 <atoi>
						X_CFG.idlePower = tempByte;
   170bc:	d7 01       	movw	r26, r14
   170be:	14 96       	adiw	r26, 0x04	; 4
   170c0:	ed 91       	ld	r30, X+
   170c2:	fc 91       	ld	r31, X
   170c4:	15 97       	sbiw	r26, 0x05	; 5
   170c6:	e0 57       	subi	r30, 0x70	; 112
   170c8:	fa 4f       	sbci	r31, 0xFA	; 250
   170ca:	80 83       	st	Z, r24
   170cc:	ae cf       	rjmp	.-164    	; 0x1702a <TurnerC3_SetConfiguration+0x192>
						break;
					case 14:
						tempByte = atoi(param);
   170ce:	0e 94 59 ef 	call	0x1deb2	; 0x1deb2 <atoi>
						X_CFG.numWiperRev = tempByte;
   170d2:	f7 01       	movw	r30, r14
   170d4:	a4 81       	ldd	r26, Z+4	; 0x04
   170d6:	b5 81       	ldd	r27, Z+5	; 0x05
   170d8:	af 56       	subi	r26, 0x6F	; 111
   170da:	ba 4f       	sbci	r27, 0xFA	; 250
   170dc:	8c 93       	st	X, r24
   170de:	a1 59       	subi	r26, 0x91	; 145
   170e0:	b5 40       	sbci	r27, 0x05	; 5
						tempWord = TurnerC3_CheckSum((uint8_t*)(&X_CFG), sizeof(C3_CFG_BLOCK) - sizeof(uint16_t));
   170e2:	fd 01       	movw	r30, r26
   170e4:	e2 58       	subi	r30, 0x82	; 130
   170e6:	fa 4f       	sbci	r31, 0xFA	; 250
   170e8:	20 e0       	ldi	r18, 0x00	; 0
   170ea:	30 e0       	ldi	r19, 0x00	; 0
   170ec:	40 e0       	ldi	r20, 0x00	; 0
   170ee:	50 e0       	ldi	r21, 0x00	; 0
	uint16_t checksum = 0;
	uint32_t sum = 0;
	uint8_t hiByte;
	uint8_t loByte;

	for(int i = 0; i<len; i++)
   170f0:	bf 01       	movw	r22, r30
   170f2:	6c 5e       	subi	r22, 0xEC	; 236
   170f4:	7f 4f       	sbci	r23, 0xFF	; 255
   170f6:	05 c0       	rjmp	.+10     	; 0x17102 <TurnerC3_SetConfiguration+0x26a>
	{
		sum += *tempBuf;
   170f8:	81 91       	ld	r24, Z+
   170fa:	28 0f       	add	r18, r24
   170fc:	31 1d       	adc	r19, r1
   170fe:	41 1d       	adc	r20, r1
   17100:	51 1d       	adc	r21, r1
	uint16_t checksum = 0;
	uint32_t sum = 0;
	uint8_t hiByte;
	uint8_t loByte;

	for(int i = 0; i<len; i++)
   17102:	e6 17       	cp	r30, r22
   17104:	f7 07       	cpc	r31, r23
   17106:	c1 f7       	brne	.-16     	; 0x170f8 <TurnerC3_SetConfiguration+0x260>
	{
		sum += *tempBuf;
		tempBuf++;
	}
	checksum = (uint16_t)(sum & 0x0000FFFF);
   17108:	83 2f       	mov	r24, r19
	hiByte = HIBYTE(checksum);
	loByte = LOBYTE(checksum);
	checksum = MAKEWORD(hiByte, ((loByte + hiByte)*-1));
   1710a:	23 0f       	add	r18, r19
   1710c:	21 95       	neg	r18
   1710e:	2f 87       	std	Y+15, r18	; 0x0f
   17110:	1e 86       	std	Y+14, r1	; 0x0e
   17112:	90 e0       	ldi	r25, 0x00	; 0
   17114:	2e 85       	ldd	r18, Y+14	; 0x0e
   17116:	3f 85       	ldd	r19, Y+15	; 0x0f
   17118:	82 2b       	or	r24, r18
   1711a:	93 2b       	or	r25, r19
						break;
					case 14:
						tempByte = atoi(param);
						X_CFG.numWiperRev = tempByte;
						tempWord = TurnerC3_CheckSum((uint8_t*)(&X_CFG), sizeof(C3_CFG_BLOCK) - sizeof(uint16_t));
						X_CFG.cfgChecksum = TurnerC3_Endian2ByteSwap(tempWord);
   1711c:	ae 56       	subi	r26, 0x6E	; 110
   1711e:	ba 4f       	sbci	r27, 0xFA	; 250
   17120:	b8 2e       	mov	r11, r24
   17122:	aa 24       	eor	r10, r10
   17124:	89 2f       	mov	r24, r25
   17126:	90 e0       	ldi	r25, 0x00	; 0
   17128:	8a 29       	or	r24, r10
   1712a:	9b 29       	or	r25, r11
   1712c:	8d 93       	st	X+, r24
   1712e:	9c 93       	st	X, r25
   17130:	3f ef       	ldi	r19, 0xFF	; 255
   17132:	3b 87       	std	Y+11, r19	; 0x0b
   17134:	8f ef       	ldi	r24, 0xFF	; 255
		sendResult = FALSE;
	}
	else
	{
#define X_CFG pTaskInfo->pBuf->newConfiguration
		while((i<15) && (done == FALSE))
   17136:	9a e0       	ldi	r25, 0x0A	; 10
   17138:	c9 16       	cp	r12, r25
   1713a:	d1 04       	cpc	r13, r1
   1713c:	31 f0       	breq	.+12     	; 0x1714a <TurnerC3_SetConfiguration+0x2b2>
   1713e:	08 94       	sec
   17140:	c1 1c       	adc	r12, r1
   17142:	d1 1c       	adc	r13, r1
   17144:	88 23       	and	r24, r24
   17146:	09 f4       	brne	.+2      	; 0x1714a <TurnerC3_SetConfiguration+0x2b2>
   17148:	ef ce       	rjmp	.-546    	; 0x16f28 <TurnerC3_SetConfiguration+0x90>
   1714a:	2b 85       	ldd	r18, Y+11	; 0x0b
			i++;
		}
#undef X_CONFIG
	}

	if(retval == SUCCESS)
   1714c:	2f 3f       	cpi	r18, 0xFF	; 255
   1714e:	09 f0       	breq	.+2      	; 0x17152 <TurnerC3_SetConfiguration+0x2ba>
   17150:	62 c0       	rjmp	.+196    	; 0x17216 <TurnerC3_SetConfiguration+0x37e>
   17152:	af ef       	ldi	r26, 0xFF	; 255
   17154:	aa 87       	std	Y+10, r26	; 0x0a
	{
		memset(pTaskInfo->pBuf->bufferTx, 0, 30);
   17156:	d7 01       	movw	r26, r14
   17158:	14 96       	adiw	r26, 0x04	; 4
   1715a:	ec 91       	ld	r30, X
   1715c:	14 97       	sbiw	r26, 0x04	; 4
   1715e:	15 96       	adiw	r26, 0x05	; 5
   17160:	fc 91       	ld	r31, X
   17162:	8e e1       	ldi	r24, 0x1E	; 30
   17164:	df 01       	movw	r26, r30
   17166:	1d 92       	st	X+, r1
   17168:	8a 95       	dec	r24
   1716a:	e9 f7       	brne	.-6      	; 0x17166 <TurnerC3_SetConfiguration+0x2ce>
		pTaskInfo->pBuf->bufferTx[0] = 3;
   1716c:	d7 01       	movw	r26, r14
   1716e:	14 96       	adiw	r26, 0x04	; 4
   17170:	ed 91       	ld	r30, X+
   17172:	fc 91       	ld	r31, X
   17174:	15 97       	sbiw	r26, 0x05	; 5
   17176:	83 e0       	ldi	r24, 0x03	; 3
   17178:	80 83       	st	Z, r24
		pTaskInfo->pBuf->bufferTx[1] = 22;
   1717a:	14 96       	adiw	r26, 0x04	; 4
   1717c:	ed 91       	ld	r30, X+
   1717e:	fc 91       	ld	r31, X
   17180:	15 97       	sbiw	r26, 0x05	; 5
   17182:	86 e1       	ldi	r24, 0x16	; 22
   17184:	81 83       	std	Z+1, r24	; 0x01
		memcpy(&(pTaskInfo->pBuf->bufferTx[2]), &pTaskInfo->pBuf->newConfiguration, sizeof(C3_CFG_BLOCK));
   17186:	14 96       	adiw	r26, 0x04	; 4
   17188:	8d 91       	ld	r24, X+
   1718a:	9c 91       	ld	r25, X
   1718c:	15 97       	sbiw	r26, 0x05	; 5
   1718e:	dc 01       	movw	r26, r24
   17190:	12 96       	adiw	r26, 0x02	; 2
   17192:	fc 01       	movw	r30, r24
   17194:	e2 58       	subi	r30, 0x82	; 130
   17196:	fa 4f       	sbci	r31, 0xFA	; 250
   17198:	86 e1       	ldi	r24, 0x16	; 22
   1719a:	01 90       	ld	r0, Z+
   1719c:	0d 92       	st	X+, r0
   1719e:	81 50       	subi	r24, 0x01	; 1
   171a0:	e1 f7       	brne	.-8      	; 0x1719a <TurnerC3_SetConfiguration+0x302>


		retval = TurnerC3_Tx(pTaskInfo, (uint8_t*)pTaskInfo->pBuf->bufferTx, sizeof(C3_CFG_BLOCK) + 2);
   171a2:	f7 01       	movw	r30, r14
   171a4:	64 81       	ldd	r22, Z+4	; 0x04
   171a6:	75 81       	ldd	r23, Z+5	; 0x05
   171a8:	c7 01       	movw	r24, r14
   171aa:	48 e1       	ldi	r20, 0x18	; 24
   171ac:	0e 94 11 b3 	call	0x16622	; 0x16622 <TurnerC3_Tx>
   171b0:	28 2f       	mov	r18, r24

		if(retval == SUCCESS)
   171b2:	8f 3f       	cpi	r24, 0xFF	; 255
   171b4:	81 f5       	brne	.+96     	; 0x17216 <TurnerC3_SetConfiguration+0x37e>
		{
			retval = TurnerC3_Rx_Len(pTaskInfo, pTaskInfo->pBuf->bufferRx, &len, 26, 20 * QUARTER_SECOND);	//5 second timout
   171b6:	d7 01       	movw	r26, r14
   171b8:	14 96       	adiw	r26, 0x04	; 4
   171ba:	6d 91       	ld	r22, X+
   171bc:	7c 91       	ld	r23, X
   171be:	15 97       	sbiw	r26, 0x05	; 5
   171c0:	60 50       	subi	r22, 0x00	; 0
   171c2:	7f 4f       	sbci	r23, 0xFF	; 255
   171c4:	c7 01       	movw	r24, r14
   171c6:	ae 01       	movw	r20, r28
   171c8:	4f 5f       	subi	r20, 0xFF	; 255
   171ca:	5f 4f       	sbci	r21, 0xFF	; 255
   171cc:	2a e1       	ldi	r18, 0x1A	; 26
   171ce:	30 e0       	ldi	r19, 0x00	; 0
   171d0:	00 e8       	ldi	r16, 0x80	; 128
   171d2:	12 e0       	ldi	r17, 0x02	; 2
   171d4:	0e 94 0f a9 	call	0x1521e	; 0x1521e <TurnerC3_Rx_Len>
   171d8:	28 2f       	mov	r18, r24

			if((retval != SUCCESS) || (len != 26) || (pTaskInfo->pBuf->bufferRx[0] != 0x03))
   171da:	8f 3f       	cpi	r24, 0xFF	; 255
   171dc:	d9 f4       	brne	.+54     	; 0x17214 <TurnerC3_SetConfiguration+0x37c>
   171de:	89 81       	ldd	r24, Y+1	; 0x01
   171e0:	9a 81       	ldd	r25, Y+2	; 0x02
   171e2:	4a 97       	sbiw	r24, 0x1a	; 26
   171e4:	b9 f4       	brne	.+46     	; 0x17214 <TurnerC3_SetConfiguration+0x37c>
   171e6:	d7 01       	movw	r26, r14
   171e8:	14 96       	adiw	r26, 0x04	; 4
   171ea:	ed 91       	ld	r30, X+
   171ec:	fc 91       	ld	r31, X
   171ee:	15 97       	sbiw	r26, 0x05	; 5
   171f0:	e0 50       	subi	r30, 0x00	; 0
   171f2:	ff 4f       	sbci	r31, 0xFF	; 255
   171f4:	80 81       	ld	r24, Z
   171f6:	e0 50       	subi	r30, 0x00	; 0
   171f8:	f1 40       	sbci	r31, 0x01	; 1
   171fa:	83 30       	cpi	r24, 0x03	; 3
   171fc:	59 f4       	brne	.+22     	; 0x17214 <TurnerC3_SetConfiguration+0x37c>
			{
				retval = FAIL;
			}
			else
			{
				if(sendResult == TRUE)
   171fe:	ba 85       	ldd	r27, Y+10	; 0x0a
   17200:	bf 3f       	cpi	r27, 0xFF	; 255
   17202:	49 f4       	brne	.+18     	; 0x17216 <TurnerC3_SetConfiguration+0x37e>
					retval = TurnerC3_XmitConfiguration(pTaskInfo, (PC3_CFG_BLOCK)&pTaskInfo->pBuf->bufferRx[2]);
   17204:	ee 5f       	subi	r30, 0xFE	; 254
   17206:	fe 4f       	sbci	r31, 0xFE	; 254
   17208:	c7 01       	movw	r24, r14
   1720a:	bf 01       	movw	r22, r30
   1720c:	0e 94 0c af 	call	0x15e18	; 0x15e18 <TurnerC3_XmitConfiguration>
   17210:	28 2f       	mov	r18, r24
   17212:	01 c0       	rjmp	.+2      	; 0x17216 <TurnerC3_SetConfiguration+0x37e>
   17214:	20 e0       	ldi	r18, 0x00	; 0
			}
		}
	}
	return retval;
}
   17216:	82 2f       	mov	r24, r18
   17218:	61 96       	adiw	r28, 0x11	; 17
   1721a:	0f b6       	in	r0, 0x3f	; 63
   1721c:	f8 94       	cli
   1721e:	de bf       	out	0x3e, r29	; 62
   17220:	0f be       	out	0x3f, r0	; 63
   17222:	cd bf       	out	0x3d, r28	; 61
   17224:	cf 91       	pop	r28
   17226:	df 91       	pop	r29
   17228:	1f 91       	pop	r17
   1722a:	0f 91       	pop	r16
   1722c:	ff 90       	pop	r15
   1722e:	ef 90       	pop	r14
   17230:	df 90       	pop	r13
   17232:	cf 90       	pop	r12
   17234:	bf 90       	pop	r11
   17236:	af 90       	pop	r10
   17238:	9f 90       	pop	r9
   1723a:	8f 90       	pop	r8
   1723c:	7f 90       	pop	r7
   1723e:	6f 90       	pop	r6
   17240:	5f 90       	pop	r5
   17242:	4f 90       	pop	r4
   17244:	3f 90       	pop	r3
   17246:	2f 90       	pop	r2
   17248:	08 95       	ret

0001724a <TurnerC3_GetConfiguration>:
	return result;
}


uint8_t TurnerC3_GetConfiguration(PTURNER_C3_TASK pTaskInfo, BOOL sendResult)
{
   1724a:	df 92       	push	r13
   1724c:	ef 92       	push	r14
   1724e:	ff 92       	push	r15
   17250:	0f 93       	push	r16
   17252:	1f 93       	push	r17
   17254:	df 93       	push	r29
   17256:	cf 93       	push	r28
   17258:	00 d0       	rcall	.+0      	; 0x1725a <TurnerC3_GetConfiguration+0x10>
   1725a:	0f 92       	push	r0
   1725c:	cd b7       	in	r28, 0x3d	; 61
   1725e:	de b7       	in	r29, 0x3e	; 62
   17260:	7c 01       	movw	r14, r24
   17262:	d6 2e       	mov	r13, r22
	uint8_t retval = FAIL;
	uint8_t cmd[2] = {0x03, 0x00};
   17264:	83 e0       	ldi	r24, 0x03	; 3
   17266:	89 83       	std	Y+1, r24	; 0x01
   17268:	1a 82       	std	Y+2, r1	; 0x02
	uint16_t len = 0;
   1726a:	1c 82       	std	Y+4, r1	; 0x04
   1726c:	1b 82       	std	Y+3, r1	; 0x03
//	uint16_t numSamples = 0;
//	uint16_t samplePeriod = 0;
//	uint16_t powerOnDelay = 0;
	

	retval = TurnerC3_Tx(pTaskInfo, cmd, 2);
   1726e:	c7 01       	movw	r24, r14
   17270:	be 01       	movw	r22, r28
   17272:	6f 5f       	subi	r22, 0xFF	; 255
   17274:	7f 4f       	sbci	r23, 0xFF	; 255
   17276:	42 e0       	ldi	r20, 0x02	; 2
   17278:	0e 94 11 b3 	call	0x16622	; 0x16622 <TurnerC3_Tx>
   1727c:	28 2f       	mov	r18, r24

	if(retval == SUCCESS)
   1727e:	8f 3f       	cpi	r24, 0xFF	; 255
   17280:	71 f5       	brne	.+92     	; 0x172de <TurnerC3_GetConfiguration+0x94>
	{
		retval = TurnerC3_Rx_Len(pTaskInfo, pTaskInfo->pBuf->bufferRx, &len, 26, 20 * QUARTER_SECOND);	//5 second timout
   17282:	d7 01       	movw	r26, r14
   17284:	14 96       	adiw	r26, 0x04	; 4
   17286:	6d 91       	ld	r22, X+
   17288:	7c 91       	ld	r23, X
   1728a:	15 97       	sbiw	r26, 0x05	; 5
   1728c:	60 50       	subi	r22, 0x00	; 0
   1728e:	7f 4f       	sbci	r23, 0xFF	; 255
   17290:	c7 01       	movw	r24, r14
   17292:	ae 01       	movw	r20, r28
   17294:	4d 5f       	subi	r20, 0xFD	; 253
   17296:	5f 4f       	sbci	r21, 0xFF	; 255
   17298:	2a e1       	ldi	r18, 0x1A	; 26
   1729a:	30 e0       	ldi	r19, 0x00	; 0
   1729c:	00 e8       	ldi	r16, 0x80	; 128
   1729e:	12 e0       	ldi	r17, 0x02	; 2
   172a0:	0e 94 0f a9 	call	0x1521e	; 0x1521e <TurnerC3_Rx_Len>
   172a4:	28 2f       	mov	r18, r24

		if((retval != SUCCESS) || (len != 26) || (pTaskInfo->pBuf->bufferRx[0] != 0x03))
   172a6:	8f 3f       	cpi	r24, 0xFF	; 255
   172a8:	c9 f4       	brne	.+50     	; 0x172dc <TurnerC3_GetConfiguration+0x92>
   172aa:	8b 81       	ldd	r24, Y+3	; 0x03
   172ac:	9c 81       	ldd	r25, Y+4	; 0x04
   172ae:	4a 97       	sbiw	r24, 0x1a	; 26
   172b0:	a9 f4       	brne	.+42     	; 0x172dc <TurnerC3_GetConfiguration+0x92>
   172b2:	d7 01       	movw	r26, r14
   172b4:	14 96       	adiw	r26, 0x04	; 4
   172b6:	ed 91       	ld	r30, X+
   172b8:	fc 91       	ld	r31, X
   172ba:	15 97       	sbiw	r26, 0x05	; 5
   172bc:	e0 50       	subi	r30, 0x00	; 0
   172be:	ff 4f       	sbci	r31, 0xFF	; 255
   172c0:	80 81       	ld	r24, Z
   172c2:	e0 50       	subi	r30, 0x00	; 0
   172c4:	f1 40       	sbci	r31, 0x01	; 1
   172c6:	83 30       	cpi	r24, 0x03	; 3
   172c8:	49 f4       	brne	.+18     	; 0x172dc <TurnerC3_GetConfiguration+0x92>
   172ca:	16 c0       	rjmp	.+44     	; 0x172f8 <TurnerC3_GetConfiguration+0xae>
		}
	}

	if((retval == SUCCESS) && (sendResult == TRUE))
	{
		retval = TurnerC3_XmitConfiguration(pTaskInfo, (PC3_CFG_BLOCK)&pTaskInfo->pBuf->bufferRx[2]);
   172cc:	ee 5f       	subi	r30, 0xFE	; 254
   172ce:	fe 4f       	sbci	r31, 0xFE	; 254
   172d0:	c7 01       	movw	r24, r14
   172d2:	bf 01       	movw	r22, r30
   172d4:	0e 94 0c af 	call	0x15e18	; 0x15e18 <TurnerC3_XmitConfiguration>
   172d8:	28 2f       	mov	r18, r24
   172da:	01 c0       	rjmp	.+2      	; 0x172de <TurnerC3_GetConfiguration+0x94>
   172dc:	20 e0       	ldi	r18, 0x00	; 0
	}
	return retval;
}
   172de:	82 2f       	mov	r24, r18
   172e0:	0f 90       	pop	r0
   172e2:	0f 90       	pop	r0
   172e4:	0f 90       	pop	r0
   172e6:	0f 90       	pop	r0
   172e8:	cf 91       	pop	r28
   172ea:	df 91       	pop	r29
   172ec:	1f 91       	pop	r17
   172ee:	0f 91       	pop	r16
   172f0:	ff 90       	pop	r15
   172f2:	ef 90       	pop	r14
   172f4:	df 90       	pop	r13
   172f6:	08 95       	ret
		{
			retval = FAIL;
		}
	}

	if((retval == SUCCESS) && (sendResult == TRUE))
   172f8:	bf ef       	ldi	r27, 0xFF	; 255
   172fa:	db 16       	cp	r13, r27
   172fc:	81 f7       	brne	.-32     	; 0x172de <TurnerC3_GetConfiguration+0x94>
   172fe:	e6 cf       	rjmp	.-52     	; 0x172cc <TurnerC3_GetConfiguration+0x82>

00017300 <TurnerC3_ParseFile>:
	return retval;

}

uint8_t TurnerC3_ParseFile(PTURNER_C3_TASK pTaskInfo, uint32_t fileID)
{
   17300:	6f 92       	push	r6
   17302:	7f 92       	push	r7
   17304:	8f 92       	push	r8
   17306:	9f 92       	push	r9
   17308:	af 92       	push	r10
   1730a:	bf 92       	push	r11
   1730c:	cf 92       	push	r12
   1730e:	df 92       	push	r13
   17310:	ef 92       	push	r14
   17312:	ff 92       	push	r15
   17314:	0f 93       	push	r16
   17316:	1f 93       	push	r17
   17318:	df 93       	push	r29
   1731a:	cf 93       	push	r28
   1731c:	cd b7       	in	r28, 0x3d	; 61
   1731e:	de b7       	in	r29, 0x3e	; 62
   17320:	29 97       	sbiw	r28, 0x09	; 9
   17322:	0f b6       	in	r0, 0x3f	; 63
   17324:	f8 94       	cli
   17326:	de bf       	out	0x3e, r29	; 62
   17328:	0f be       	out	0x3f, r0	; 63
   1732a:	cd bf       	out	0x3d, r28	; 61
   1732c:	7c 01       	movw	r14, r24
   1732e:	3a 01       	movw	r6, r20
   17330:	4b 01       	movw	r8, r22
	uint16_t len = 0;
	char* pBuf;



	memset(&(fileOut[pTaskInfo->portNum][0]), 0, MAX_FILE_SIZE_OUT);
   17332:	dc 01       	movw	r26, r24
   17334:	11 96       	adiw	r26, 0x01	; 1
   17336:	2c 91       	ld	r18, X
   17338:	92 2f       	mov	r25, r18
   1733a:	99 0f       	add	r25, r25
   1733c:	99 0f       	add	r25, r25
   1733e:	80 e0       	ldi	r24, 0x00	; 0
   17340:	8f 5a       	subi	r24, 0xAF	; 175
   17342:	92 47       	sbci	r25, 0x72	; 114
   17344:	fc 01       	movw	r30, r24
   17346:	80 e0       	ldi	r24, 0x00	; 0
   17348:	94 e0       	ldi	r25, 0x04	; 4
   1734a:	df 01       	movw	r26, r30
   1734c:	9c 01       	movw	r18, r24
   1734e:	1d 92       	st	X+, r1
   17350:	21 50       	subi	r18, 0x01	; 1
   17352:	30 40       	sbci	r19, 0x00	; 0
   17354:	e1 f7       	brne	.-8      	; 0x1734e <TurnerC3_ParseFile+0x4e>

	strupr(&fileIn[pTaskInfo->portNum][0]);
   17356:	d7 01       	movw	r26, r14
   17358:	11 96       	adiw	r26, 0x01	; 1
   1735a:	9c 91       	ld	r25, X
   1735c:	80 e0       	ldi	r24, 0x00	; 0
   1735e:	8f 5a       	subi	r24, 0xAF	; 175
   17360:	96 47       	sbci	r25, 0x76	; 118
   17362:	0e 94 d2 f0 	call	0x1e1a4	; 0x1e1a4 <strupr>
	len = strlen(&fileIn[pTaskInfo->portNum][0]);
   17366:	f7 01       	movw	r30, r14
   17368:	91 81       	ldd	r25, Z+1	; 0x01
   1736a:	80 e0       	ldi	r24, 0x00	; 0
   1736c:	dc 01       	movw	r26, r24
   1736e:	af 5a       	subi	r26, 0xAF	; 175
   17370:	b6 47       	sbci	r27, 0x76	; 118
   17372:	fd 01       	movw	r30, r26
   17374:	01 90       	ld	r0, Z+
   17376:	00 20       	and	r0, r0
   17378:	e9 f7       	brne	.-6      	; 0x17374 <TurnerC3_ParseFile+0x74>
   1737a:	31 97       	sbiw	r30, 0x01	; 1
   1737c:	ea 1b       	sub	r30, r26
   1737e:	fb 0b       	sbc	r31, r27

	pBuf = &fileIn[pTaskInfo->portNum][0];
	if(len > 4)
   17380:	35 97       	sbiw	r30, 0x05	; 5
   17382:	08 f4       	brcc	.+2      	; 0x17386 <TurnerC3_ParseFile+0x86>
   17384:	2a c3       	rjmp	.+1620   	; 0x179da <TurnerC3_ParseFile+0x6da>
	{
		char* context = pBuf;
   17386:	ba 83       	std	Y+2, r27	; 0x02
   17388:	a9 83       	std	Y+1, r26	; 0x01
		char sep[5];		// = { ' ', '\t', '\r', '\n', '\0'};
//		char sep[] = { ' ', '\t', '\r', '\n', '\0'};
		char* cmdTok = ThreadSafeStrTok(&context, sep);
   1738a:	45 e0       	ldi	r20, 0x05	; 5
   1738c:	c4 2e       	mov	r12, r20
   1738e:	d1 2c       	mov	r13, r1
   17390:	cc 0e       	add	r12, r28
   17392:	dd 1e       	adc	r13, r29
   17394:	5e 01       	movw	r10, r28
   17396:	08 94       	sec
   17398:	a1 1c       	adc	r10, r1
   1739a:	b1 1c       	adc	r11, r1
   1739c:	c5 01       	movw	r24, r10
   1739e:	b6 01       	movw	r22, r12
   173a0:	0e 94 67 a9 	call	0x152ce	; 0x152ce <ThreadSafeStrTok>
   173a4:	8c 01       	movw	r16, r24

		memcpy_P(sep, separator2a, 5);
   173a6:	c6 01       	movw	r24, r12
   173a8:	6c e0       	ldi	r22, 0x0C	; 12
   173aa:	74 e1       	ldi	r23, 0x14	; 20
   173ac:	45 e0       	ldi	r20, 0x05	; 5
   173ae:	50 e0       	ldi	r21, 0x00	; 0
   173b0:	0e 94 ab ef 	call	0x1df56	; 0x1df56 <memcpy_P>
		if (strncmp_P(cmdTok, PSTR("CMD"), 3) == 0)
   173b4:	c8 01       	movw	r24, r16
   173b6:	6e e8       	ldi	r22, 0x8E	; 142
   173b8:	77 e1       	ldi	r23, 0x17	; 23
   173ba:	43 e0       	ldi	r20, 0x03	; 3
   173bc:	50 e0       	ldi	r21, 0x00	; 0
   173be:	0e 94 e7 ef 	call	0x1dfce	; 0x1dfce <strncmp_P>
   173c2:	89 2b       	or	r24, r25
   173c4:	09 f0       	breq	.+2      	; 0x173c8 <TurnerC3_ParseFile+0xc8>
   173c6:	09 c3       	rjmp	.+1554   	; 0x179da <TurnerC3_ParseFile+0x6da>
		{
			char* subCommand = ThreadSafeStrTok(&context, sep);
   173c8:	c5 01       	movw	r24, r10
   173ca:	b6 01       	movw	r22, r12
   173cc:	0e 94 67 a9 	call	0x152ce	; 0x152ce <ThreadSafeStrTok>
   173d0:	8c 01       	movw	r16, r24

			//We have a Start/Stop command
			if(strncmp_P(subCommand, PSTR("STATE"), 5) == 0)
   173d2:	68 e8       	ldi	r22, 0x88	; 136
   173d4:	77 e1       	ldi	r23, 0x17	; 23
   173d6:	45 e0       	ldi	r20, 0x05	; 5
   173d8:	50 e0       	ldi	r21, 0x00	; 0
   173da:	0e 94 e7 ef 	call	0x1dfce	; 0x1dfce <strncmp_P>
   173de:	89 2b       	or	r24, r25
   173e0:	09 f4       	brne	.+2      	; 0x173e4 <TurnerC3_ParseFile+0xe4>
   173e2:	65 c2       	rjmp	.+1226   	; 0x178ae <TurnerC3_ParseFile+0x5ae>
			{
				retval = TURNERC3_CURRENT_STATE;
			}
//			if(strncmp_P(subCommand, PSTR("ON"), 2) == 0)
			else if(strncmp_P(subCommand, PSTR("ON"), 2) == 0)
   173e4:	c8 01       	movw	r24, r16
   173e6:	65 e8       	ldi	r22, 0x85	; 133
   173e8:	77 e1       	ldi	r23, 0x17	; 23
   173ea:	42 e0       	ldi	r20, 0x02	; 2
   173ec:	50 e0       	ldi	r21, 0x00	; 0
   173ee:	0e 94 e7 ef 	call	0x1dfce	; 0x1dfce <strncmp_P>
   173f2:	89 2b       	or	r24, r25
   173f4:	79 f4       	brne	.+30     	; 0x17414 <TurnerC3_ParseFile+0x114>
			{
				if(pTaskInfo->pBuf->powerOn == FALSE)
   173f6:	d7 01       	movw	r26, r14
   173f8:	14 96       	adiw	r26, 0x04	; 4
   173fa:	ed 91       	ld	r30, X+
   173fc:	fc 91       	ld	r31, X
   173fe:	15 97       	sbiw	r26, 0x05	; 5
   17400:	eb 5f       	subi	r30, 0xFB	; 251
   17402:	fa 4f       	sbci	r31, 0xFA	; 250
   17404:	80 81       	ld	r24, Z
   17406:	88 23       	and	r24, r24
   17408:	09 f0       	breq	.+2      	; 0x1740c <TurnerC3_ParseFile+0x10c>
   1740a:	06 c2       	rjmp	.+1036   	; 0x17818 <TurnerC3_ParseFile+0x518>
					retval = TurnerC3_PowerOn(pTaskInfo);
   1740c:	c7 01       	movw	r24, r14
   1740e:	0e 94 95 a8 	call	0x1512a	; 0x1512a <TurnerC3_PowerOn>
   17412:	b5 c1       	rjmp	.+874    	; 0x1777e <TurnerC3_ParseFile+0x47e>
				else
					retval = TURNERC3_POWER_ON;
			}
			else if(strncmp_P(subCommand, PSTR("OFF"), 3) == 0)
   17414:	c8 01       	movw	r24, r16
   17416:	61 e8       	ldi	r22, 0x81	; 129
   17418:	77 e1       	ldi	r23, 0x17	; 23
   1741a:	43 e0       	ldi	r20, 0x03	; 3
   1741c:	50 e0       	ldi	r21, 0x00	; 0
   1741e:	0e 94 e7 ef 	call	0x1dfce	; 0x1dfce <strncmp_P>
   17422:	89 2b       	or	r24, r25
   17424:	d1 f4       	brne	.+52     	; 0x1745a <TurnerC3_ParseFile+0x15a>
			{
				if(pTaskInfo->pBuf->powerOn == TRUE)
   17426:	d7 01       	movw	r26, r14
   17428:	14 96       	adiw	r26, 0x04	; 4
   1742a:	ed 91       	ld	r30, X+
   1742c:	fc 91       	ld	r31, X
   1742e:	15 97       	sbiw	r26, 0x05	; 5
   17430:	eb 5f       	subi	r30, 0xFB	; 251
   17432:	fa 4f       	sbci	r31, 0xFA	; 250
   17434:	80 81       	ld	r24, Z
   17436:	8f 3f       	cpi	r24, 0xFF	; 255
   17438:	09 f0       	breq	.+2      	; 0x1743c <TurnerC3_ParseFile+0x13c>
   1743a:	e3 c1       	rjmp	.+966    	; 0x17802 <TurnerC3_ParseFile+0x502>
	return retval;
}

uint8_t TurnerC3_PowerOff(PTURNER_C3_TASK pTaskInfo)
{
	EnablePIBModule(pTaskInfo->portNum, FALSE, FALSE);
   1743c:	11 96       	adiw	r26, 0x01	; 1
   1743e:	8c 91       	ld	r24, X
   17440:	60 e0       	ldi	r22, 0x00	; 0
   17442:	40 e0       	ldi	r20, 0x00	; 0
   17444:	0e 94 a2 38 	call	0x7144	; 0x7144 <EnablePIBModule>
	pTaskInfo->pBuf->powerOn = FALSE;
   17448:	d7 01       	movw	r26, r14
   1744a:	14 96       	adiw	r26, 0x04	; 4
   1744c:	ed 91       	ld	r30, X+
   1744e:	fc 91       	ld	r31, X
   17450:	15 97       	sbiw	r26, 0x05	; 5
   17452:	eb 5f       	subi	r30, 0xFB	; 251
   17454:	fa 4f       	sbci	r31, 0xFA	; 250
   17456:	10 82       	st	Z, r1
   17458:	b0 c1       	rjmp	.+864    	; 0x177ba <TurnerC3_ParseFile+0x4ba>
				if(pTaskInfo->pBuf->powerOn == TRUE)
					retval = TurnerC3_PowerOff(pTaskInfo);
				else
					retval = TURNERC3_POWER_OFF;
			}
			else if(strncmp_P(subCommand, PSTR("START"), 5) == 0)
   1745a:	c8 01       	movw	r24, r16
   1745c:	6b e7       	ldi	r22, 0x7B	; 123
   1745e:	77 e1       	ldi	r23, 0x17	; 23
   17460:	45 e0       	ldi	r20, 0x05	; 5
   17462:	50 e0       	ldi	r21, 0x00	; 0
   17464:	0e 94 e7 ef 	call	0x1dfce	; 0x1dfce <strncmp_P>
   17468:	89 2b       	or	r24, r25
   1746a:	c9 f4       	brne	.+50     	; 0x1749e <TurnerC3_ParseFile+0x19e>
			{
				if((pTaskInfo->pBuf->sampleC3 == FALSE) && (pTaskInfo->pBuf->powerOn == TRUE))
   1746c:	d7 01       	movw	r26, r14
   1746e:	14 96       	adiw	r26, 0x04	; 4
   17470:	ed 91       	ld	r30, X+
   17472:	fc 91       	ld	r31, X
   17474:	15 97       	sbiw	r26, 0x05	; 5
   17476:	ec 5f       	subi	r30, 0xFC	; 252
   17478:	fa 4f       	sbci	r31, 0xFA	; 250
   1747a:	80 81       	ld	r24, Z
   1747c:	e4 50       	subi	r30, 0x04	; 4
   1747e:	f5 40       	sbci	r31, 0x05	; 5
   17480:	88 23       	and	r24, r24
   17482:	09 f0       	breq	.+2      	; 0x17486 <TurnerC3_ParseFile+0x186>
   17484:	42 c1       	rjmp	.+644    	; 0x1770a <TurnerC3_ParseFile+0x40a>
   17486:	eb 5f       	subi	r30, 0xFB	; 251
   17488:	fa 4f       	sbci	r31, 0xFA	; 250
   1748a:	80 81       	ld	r24, Z
   1748c:	e5 50       	subi	r30, 0x05	; 5
   1748e:	f5 40       	sbci	r31, 0x05	; 5
   17490:	8f 3f       	cpi	r24, 0xFF	; 255
   17492:	09 f0       	breq	.+2      	; 0x17496 <TurnerC3_ParseFile+0x196>
   17494:	3a c1       	rjmp	.+628    	; 0x1770a <TurnerC3_ParseFile+0x40a>
				{
					retval = TurnerC3_StartCurrentData(pTaskInfo);
   17496:	c7 01       	movw	r24, r14
   17498:	0e 94 50 b6 	call	0x16ca0	; 0x16ca0 <TurnerC3_StartCurrentData>
   1749c:	70 c1       	rjmp	.+736    	; 0x1777e <TurnerC3_ParseFile+0x47e>
					retval = TURNERC3_SAMPLING_ON;
					if(pTaskInfo->pBuf->powerOn != TRUE)
						retval = TURNERC3_POWER_OFF;
				}
			}
			else if(strncmp_P(subCommand, PSTR("STOP"), 4) == 0)
   1749e:	c8 01       	movw	r24, r16
   174a0:	66 e7       	ldi	r22, 0x76	; 118
   174a2:	77 e1       	ldi	r23, 0x17	; 23
   174a4:	44 e0       	ldi	r20, 0x04	; 4
   174a6:	50 e0       	ldi	r21, 0x00	; 0
   174a8:	0e 94 e7 ef 	call	0x1dfce	; 0x1dfce <strncmp_P>
   174ac:	89 2b       	or	r24, r25
   174ae:	f1 f4       	brne	.+60     	; 0x174ec <TurnerC3_ParseFile+0x1ec>
			{
				if((pTaskInfo->pBuf->sampleC3 == TRUE) && (pTaskInfo->pBuf->powerOn == TRUE))
   174b0:	d7 01       	movw	r26, r14
   174b2:	14 96       	adiw	r26, 0x04	; 4
   174b4:	ed 91       	ld	r30, X+
   174b6:	fc 91       	ld	r31, X
   174b8:	15 97       	sbiw	r26, 0x05	; 5
   174ba:	ec 5f       	subi	r30, 0xFC	; 252
   174bc:	fa 4f       	sbci	r31, 0xFA	; 250
   174be:	80 81       	ld	r24, Z
   174c0:	e4 50       	subi	r30, 0x04	; 4
   174c2:	f5 40       	sbci	r31, 0x05	; 5
   174c4:	8f 3f       	cpi	r24, 0xFF	; 255
   174c6:	59 f4       	brne	.+22     	; 0x174de <TurnerC3_ParseFile+0x1de>
   174c8:	eb 5f       	subi	r30, 0xFB	; 251
   174ca:	fa 4f       	sbci	r31, 0xFA	; 250
   174cc:	80 81       	ld	r24, Z
   174ce:	e5 50       	subi	r30, 0x05	; 5
   174d0:	f5 40       	sbci	r31, 0x05	; 5
   174d2:	8f 3f       	cpi	r24, 0xFF	; 255
   174d4:	21 f4       	brne	.+8      	; 0x174de <TurnerC3_ParseFile+0x1de>
				{
					retval = TurnerC3_StopCurrentData(pTaskInfo);
   174d6:	c7 01       	movw	r24, r14
   174d8:	0e 94 28 b6 	call	0x16c50	; 0x16c50 <TurnerC3_StopCurrentData>
   174dc:	50 c1       	rjmp	.+672    	; 0x1777e <TurnerC3_ParseFile+0x47e>
				}
				else
				{
					retval = TURNERC3_SAMPLING_OFF;
					if(pTaskInfo->pBuf->powerOn != TRUE)
   174de:	eb 5f       	subi	r30, 0xFB	; 251
   174e0:	fa 4f       	sbci	r31, 0xFA	; 250
   174e2:	80 81       	ld	r24, Z
   174e4:	8f 3f       	cpi	r24, 0xFF	; 255
   174e6:	09 f0       	breq	.+2      	; 0x174ea <TurnerC3_ParseFile+0x1ea>
   174e8:	8c c1       	rjmp	.+792    	; 0x17802 <TurnerC3_ParseFile+0x502>
   174ea:	af c1       	rjmp	.+862    	; 0x1784a <TurnerC3_ParseFile+0x54a>
						retval = TURNERC3_POWER_OFF;
				}
			}
			else if(strncmp_P(subCommand, PSTR("CFG"), 3) == 0)
   174ec:	c8 01       	movw	r24, r16
   174ee:	62 e7       	ldi	r22, 0x72	; 114
   174f0:	77 e1       	ldi	r23, 0x17	; 23
   174f2:	43 e0       	ldi	r20, 0x03	; 3
   174f4:	50 e0       	ldi	r21, 0x00	; 0
   174f6:	0e 94 e7 ef 	call	0x1dfce	; 0x1dfce <strncmp_P>
   174fa:	89 2b       	or	r24, r25
   174fc:	c1 f5       	brne	.+112    	; 0x1756e <TurnerC3_ParseFile+0x26e>
			{
				if((pTaskInfo->pBuf->sampleC3 == FALSE) && (pTaskInfo->pBuf->powerOn == TRUE))
   174fe:	d7 01       	movw	r26, r14
   17500:	14 96       	adiw	r26, 0x04	; 4
   17502:	ed 91       	ld	r30, X+
   17504:	fc 91       	ld	r31, X
   17506:	15 97       	sbiw	r26, 0x05	; 5
   17508:	ec 5f       	subi	r30, 0xFC	; 252
   1750a:	fa 4f       	sbci	r31, 0xFA	; 250
   1750c:	80 81       	ld	r24, Z
   1750e:	e4 50       	subi	r30, 0x04	; 4
   17510:	f5 40       	sbci	r31, 0x05	; 5
   17512:	88 23       	and	r24, r24
   17514:	09 f0       	breq	.+2      	; 0x17518 <TurnerC3_ParseFile+0x218>
   17516:	f9 c0       	rjmp	.+498    	; 0x1770a <TurnerC3_ParseFile+0x40a>
   17518:	eb 5f       	subi	r30, 0xFB	; 251
   1751a:	fa 4f       	sbci	r31, 0xFA	; 250
   1751c:	80 81       	ld	r24, Z
   1751e:	e5 50       	subi	r30, 0x05	; 5
   17520:	f5 40       	sbci	r31, 0x05	; 5
   17522:	8f 3f       	cpi	r24, 0xFF	; 255
   17524:	09 f0       	breq	.+2      	; 0x17528 <TurnerC3_ParseFile+0x228>
   17526:	f1 c0       	rjmp	.+482    	; 0x1770a <TurnerC3_ParseFile+0x40a>
				{
					subCommand = ThreadSafeStrTok(&context, sep);
   17528:	ce 01       	movw	r24, r28
   1752a:	01 96       	adiw	r24, 0x01	; 1
   1752c:	be 01       	movw	r22, r28
   1752e:	6b 5f       	subi	r22, 0xFB	; 251
   17530:	7f 4f       	sbci	r23, 0xFF	; 255
   17532:	0e 94 67 a9 	call	0x152ce	; 0x152ce <ThreadSafeStrTok>
   17536:	8c 01       	movw	r16, r24
					if(strncmp_P(subCommand, PSTR("SET"), 3) == 0)
   17538:	6e e6       	ldi	r22, 0x6E	; 110
   1753a:	77 e1       	ldi	r23, 0x17	; 23
   1753c:	43 e0       	ldi	r20, 0x03	; 3
   1753e:	50 e0       	ldi	r21, 0x00	; 0
   17540:	0e 94 e7 ef 	call	0x1dfce	; 0x1dfce <strncmp_P>
   17544:	89 2b       	or	r24, r25
   17546:	21 f4       	brne	.+8      	; 0x17550 <TurnerC3_ParseFile+0x250>
					{
						retval = TurnerC3_SetConfiguration(pTaskInfo, context);
   17548:	69 81       	ldd	r22, Y+1	; 0x01
   1754a:	7a 81       	ldd	r23, Y+2	; 0x02
   1754c:	c7 01       	movw	r24, r14
   1754e:	da c0       	rjmp	.+436    	; 0x17704 <TurnerC3_ParseFile+0x404>
					}
					else if(strncmp_P(subCommand, PSTR("GET"), 3) == 0)
   17550:	c8 01       	movw	r24, r16
   17552:	6a e6       	ldi	r22, 0x6A	; 106
   17554:	77 e1       	ldi	r23, 0x17	; 23
   17556:	43 e0       	ldi	r20, 0x03	; 3
   17558:	50 e0       	ldi	r21, 0x00	; 0
   1755a:	0e 94 e7 ef 	call	0x1dfce	; 0x1dfce <strncmp_P>
   1755e:	89 2b       	or	r24, r25
   17560:	09 f0       	breq	.+2      	; 0x17564 <TurnerC3_ParseFile+0x264>
   17562:	3b c2       	rjmp	.+1142   	; 0x179da <TurnerC3_ParseFile+0x6da>
					{
						retval = TurnerC3_GetConfiguration(pTaskInfo, TRUE);
   17564:	c7 01       	movw	r24, r14
   17566:	6f ef       	ldi	r22, 0xFF	; 255
   17568:	0e 94 25 b9 	call	0x1724a	; 0x1724a <TurnerC3_GetConfiguration>
   1756c:	08 c1       	rjmp	.+528    	; 0x1777e <TurnerC3_ParseFile+0x47e>
					retval = TURNERC3_SAMPLING_ON;
					if(pTaskInfo->pBuf->powerOn != TRUE)
						retval = TURNERC3_POWER_OFF;
				}
			}
			else if(strncmp_P(subCommand, PSTR("CAL"), 3) == 0)
   1756e:	c8 01       	movw	r24, r16
   17570:	66 e6       	ldi	r22, 0x66	; 102
   17572:	77 e1       	ldi	r23, 0x17	; 23
   17574:	43 e0       	ldi	r20, 0x03	; 3
   17576:	50 e0       	ldi	r21, 0x00	; 0
   17578:	0e 94 e7 ef 	call	0x1dfce	; 0x1dfce <strncmp_P>
   1757c:	89 2b       	or	r24, r25
   1757e:	09 f4       	brne	.+2      	; 0x17582 <TurnerC3_ParseFile+0x282>
   17580:	13 c2       	rjmp	.+1062   	; 0x179a8 <TurnerC3_ParseFile+0x6a8>
//JK					if(pTaskInfo->pBuf->powerOn != TRUE)
//JK						retval = TURNERC3_POWER_OFF;
//JK				}
//JK				
			}
			else if(strncmp_P(subCommand, PSTR("TIM"), 3) == 0)
   17582:	c8 01       	movw	r24, r16
   17584:	62 e6       	ldi	r22, 0x62	; 98
   17586:	77 e1       	ldi	r23, 0x17	; 23
   17588:	43 e0       	ldi	r20, 0x03	; 3
   1758a:	50 e0       	ldi	r21, 0x00	; 0
   1758c:	0e 94 e7 ef 	call	0x1dfce	; 0x1dfce <strncmp_P>
   17590:	89 2b       	or	r24, r25
   17592:	b9 f5       	brne	.+110    	; 0x17602 <TurnerC3_ParseFile+0x302>
			{
				if((pTaskInfo->pBuf->sampleC3 == FALSE) && (pTaskInfo->pBuf->powerOn == TRUE))
   17594:	d7 01       	movw	r26, r14
   17596:	14 96       	adiw	r26, 0x04	; 4
   17598:	ed 91       	ld	r30, X+
   1759a:	fc 91       	ld	r31, X
   1759c:	15 97       	sbiw	r26, 0x05	; 5
   1759e:	ec 5f       	subi	r30, 0xFC	; 252
   175a0:	fa 4f       	sbci	r31, 0xFA	; 250
   175a2:	80 81       	ld	r24, Z
   175a4:	e4 50       	subi	r30, 0x04	; 4
   175a6:	f5 40       	sbci	r31, 0x05	; 5
   175a8:	88 23       	and	r24, r24
   175aa:	09 f0       	breq	.+2      	; 0x175ae <TurnerC3_ParseFile+0x2ae>
   175ac:	ae c0       	rjmp	.+348    	; 0x1770a <TurnerC3_ParseFile+0x40a>
   175ae:	eb 5f       	subi	r30, 0xFB	; 251
   175b0:	fa 4f       	sbci	r31, 0xFA	; 250
   175b2:	80 81       	ld	r24, Z
   175b4:	e5 50       	subi	r30, 0x05	; 5
   175b6:	f5 40       	sbci	r31, 0x05	; 5
   175b8:	8f 3f       	cpi	r24, 0xFF	; 255
   175ba:	09 f0       	breq	.+2      	; 0x175be <TurnerC3_ParseFile+0x2be>
   175bc:	a6 c0       	rjmp	.+332    	; 0x1770a <TurnerC3_ParseFile+0x40a>
				{
					subCommand = ThreadSafeStrTok(&context, sep);
   175be:	ce 01       	movw	r24, r28
   175c0:	01 96       	adiw	r24, 0x01	; 1
   175c2:	be 01       	movw	r22, r28
   175c4:	6b 5f       	subi	r22, 0xFB	; 251
   175c6:	7f 4f       	sbci	r23, 0xFF	; 255
   175c8:	0e 94 67 a9 	call	0x152ce	; 0x152ce <ThreadSafeStrTok>
   175cc:	8c 01       	movw	r16, r24
					if(strncmp_P(subCommand, PSTR("SET"), 3) == 0)
   175ce:	6e e5       	ldi	r22, 0x5E	; 94
   175d0:	77 e1       	ldi	r23, 0x17	; 23
   175d2:	43 e0       	ldi	r20, 0x03	; 3
   175d4:	50 e0       	ldi	r21, 0x00	; 0
   175d6:	0e 94 e7 ef 	call	0x1dfce	; 0x1dfce <strncmp_P>
   175da:	89 2b       	or	r24, r25
   175dc:	21 f4       	brne	.+8      	; 0x175e6 <TurnerC3_ParseFile+0x2e6>
					{
						retval = TurnerC3_SetDateTime(pTaskInfo);
   175de:	c7 01       	movw	r24, r14
   175e0:	0e 94 e4 b4 	call	0x169c8	; 0x169c8 <TurnerC3_SetDateTime>
   175e4:	cc c0       	rjmp	.+408    	; 0x1777e <TurnerC3_ParseFile+0x47e>
					}
					else if(strncmp_P(subCommand, PSTR("GET"), 3) == 0)
   175e6:	c8 01       	movw	r24, r16
   175e8:	6a e5       	ldi	r22, 0x5A	; 90
   175ea:	77 e1       	ldi	r23, 0x17	; 23
   175ec:	43 e0       	ldi	r20, 0x03	; 3
   175ee:	50 e0       	ldi	r21, 0x00	; 0
   175f0:	0e 94 e7 ef 	call	0x1dfce	; 0x1dfce <strncmp_P>
   175f4:	89 2b       	or	r24, r25
   175f6:	09 f0       	breq	.+2      	; 0x175fa <TurnerC3_ParseFile+0x2fa>
   175f8:	f0 c1       	rjmp	.+992    	; 0x179da <TurnerC3_ParseFile+0x6da>
					{
						retval = TurnerC3_GetDateTime(pTaskInfo);
   175fa:	c7 01       	movw	r24, r14
   175fc:	0e 94 ae b5 	call	0x16b5c	; 0x16b5c <TurnerC3_GetDateTime>
   17600:	be c0       	rjmp	.+380    	; 0x1777e <TurnerC3_ParseFile+0x47e>
					retval = TURNERC3_SAMPLING_ON;
					if(pTaskInfo->pBuf->powerOn != TRUE)
						retval = TURNERC3_POWER_OFF;
				}
			}
			else if(strncmp_P(subCommand, PSTR("WIP"), 3) == 0)
   17602:	c8 01       	movw	r24, r16
   17604:	66 e5       	ldi	r22, 0x56	; 86
   17606:	77 e1       	ldi	r23, 0x17	; 23
   17608:	43 e0       	ldi	r20, 0x03	; 3
   1760a:	50 e0       	ldi	r21, 0x00	; 0
   1760c:	0e 94 e7 ef 	call	0x1dfce	; 0x1dfce <strncmp_P>
   17610:	89 2b       	or	r24, r25
   17612:	09 f0       	breq	.+2      	; 0x17616 <TurnerC3_ParseFile+0x316>
   17614:	81 c0       	rjmp	.+258    	; 0x17718 <TurnerC3_ParseFile+0x418>
			{
				uint8_t revolutions = 0;

				if((pTaskInfo->pBuf->sampleC3 == FALSE) && (pTaskInfo->pBuf->powerOn == TRUE))
   17616:	d7 01       	movw	r26, r14
   17618:	14 96       	adiw	r26, 0x04	; 4
   1761a:	ed 91       	ld	r30, X+
   1761c:	fc 91       	ld	r31, X
   1761e:	15 97       	sbiw	r26, 0x05	; 5
   17620:	ec 5f       	subi	r30, 0xFC	; 252
   17622:	fa 4f       	sbci	r31, 0xFA	; 250
   17624:	80 81       	ld	r24, Z
   17626:	e4 50       	subi	r30, 0x04	; 4
   17628:	f5 40       	sbci	r31, 0x05	; 5
   1762a:	88 23       	and	r24, r24
   1762c:	09 f0       	breq	.+2      	; 0x17630 <TurnerC3_ParseFile+0x330>
   1762e:	6d c0       	rjmp	.+218    	; 0x1770a <TurnerC3_ParseFile+0x40a>
   17630:	eb 5f       	subi	r30, 0xFB	; 251
   17632:	fa 4f       	sbci	r31, 0xFA	; 250
   17634:	80 81       	ld	r24, Z
   17636:	e5 50       	subi	r30, 0x05	; 5
   17638:	f5 40       	sbci	r31, 0x05	; 5
   1763a:	8f 3f       	cpi	r24, 0xFF	; 255
   1763c:	09 f0       	breq	.+2      	; 0x17640 <TurnerC3_ParseFile+0x340>
   1763e:	65 c0       	rjmp	.+202    	; 0x1770a <TurnerC3_ParseFile+0x40a>
				{
					subCommand = ThreadSafeStrTok(&context, sep);
   17640:	ce 01       	movw	r24, r28
   17642:	01 96       	adiw	r24, 0x01	; 1
   17644:	be 01       	movw	r22, r28
   17646:	6b 5f       	subi	r22, 0xFB	; 251
   17648:	7f 4f       	sbci	r23, 0xFF	; 255
   1764a:	0e 94 67 a9 	call	0x152ce	; 0x152ce <ThreadSafeStrTok>
					revolutions = atoi(subCommand);
   1764e:	0e 94 59 ef 	call	0x1deb2	; 0x1deb2 <atoi>
					if(revolutions > 0)
   17652:	88 23       	and	r24, r24
   17654:	09 f4       	brne	.+2      	; 0x17658 <TurnerC3_ParseFile+0x358>
   17656:	c1 c1       	rjmp	.+898    	; 0x179da <TurnerC3_ParseFile+0x6da>
					{
						retval = TurnerC3_GetConfiguration(pTaskInfo, FALSE);
   17658:	c7 01       	movw	r24, r14
   1765a:	60 e0       	ldi	r22, 0x00	; 0
   1765c:	0e 94 25 b9 	call	0x1724a	; 0x1724a <TurnerC3_GetConfiguration>
   17660:	28 2f       	mov	r18, r24

						memcpy(&(pTaskInfo->pBuf->currentConfiguration), &(pTaskInfo->pBuf->bufferRx[2]), 22);
   17662:	f7 01       	movw	r30, r14
   17664:	84 81       	ldd	r24, Z+4	; 0x04
   17666:	95 81       	ldd	r25, Z+5	; 0x05
   17668:	dc 01       	movw	r26, r24
   1766a:	ac 56       	subi	r26, 0x6C	; 108
   1766c:	ba 4f       	sbci	r27, 0xFA	; 250
   1766e:	fc 01       	movw	r30, r24
   17670:	ee 5f       	subi	r30, 0xFE	; 254
   17672:	fe 4f       	sbci	r31, 0xFE	; 254
   17674:	86 e1       	ldi	r24, 0x16	; 22
   17676:	01 90       	ld	r0, Z+
   17678:	0d 92       	st	X+, r0
   1767a:	81 50       	subi	r24, 0x01	; 1
   1767c:	e1 f7       	brne	.-8      	; 0x17676 <TurnerC3_ParseFile+0x376>
					
						if(retval == SUCCESS)
   1767e:	2f 3f       	cpi	r18, 0xFF	; 255
   17680:	09 f0       	breq	.+2      	; 0x17684 <TurnerC3_ParseFile+0x384>
   17682:	7e c0       	rjmp	.+252    	; 0x17780 <TurnerC3_ParseFile+0x480>
						{
							//Set new configuration for wiper
							retval = TurnerC3_StartCurrentData(pTaskInfo);
   17684:	c7 01       	movw	r24, r14
   17686:	0e 94 50 b6 	call	0x16ca0	; 0x16ca0 <TurnerC3_StartCurrentData>
							if(retval == SUCCESS)
   1768a:	8f 3f       	cpi	r24, 0xFF	; 255
   1768c:	01 f5       	brne	.+64     	; 0x176ce <TurnerC3_ParseFile+0x3ce>
							{
								uint16_t len = 0;
   1768e:	1c 82       	std	Y+4, r1	; 0x04
   17690:	1b 82       	std	Y+3, r1	; 0x03
								retval = FAIL;
								while(retval != SUCCESS)	//And we need some time out here too
								{
									retval = TurnerC3_Rx_Len(pTaskInfo, pTaskInfo->pBuf->bufferRx, &len, 24, QUARTER_SECOND);	//1/4 second timeout on getting current data back
   17692:	33 e0       	ldi	r19, 0x03	; 3
   17694:	c3 2e       	mov	r12, r19
   17696:	d1 2c       	mov	r13, r1
   17698:	cc 0e       	add	r12, r28
   1769a:	dd 1e       	adc	r13, r29
   1769c:	d7 01       	movw	r26, r14
   1769e:	14 96       	adiw	r26, 0x04	; 4
   176a0:	6d 91       	ld	r22, X+
   176a2:	7c 91       	ld	r23, X
   176a4:	15 97       	sbiw	r26, 0x05	; 5
   176a6:	60 50       	subi	r22, 0x00	; 0
   176a8:	7f 4f       	sbci	r23, 0xFF	; 255
   176aa:	c7 01       	movw	r24, r14
   176ac:	a6 01       	movw	r20, r12
   176ae:	28 e1       	ldi	r18, 0x18	; 24
   176b0:	30 e0       	ldi	r19, 0x00	; 0
   176b2:	00 e2       	ldi	r16, 0x20	; 32
   176b4:	10 e0       	ldi	r17, 0x00	; 0
   176b6:	0e 94 0f a9 	call	0x1521e	; 0x1521e <TurnerC3_Rx_Len>
							retval = TurnerC3_StartCurrentData(pTaskInfo);
							if(retval == SUCCESS)
							{
								uint16_t len = 0;
								retval = FAIL;
								while(retval != SUCCESS)	//And we need some time out here too
   176ba:	8f 3f       	cpi	r24, 0xFF	; 255
   176bc:	79 f7       	brne	.-34     	; 0x1769c <TurnerC3_ParseFile+0x39c>
								{
									retval = TurnerC3_Rx_Len(pTaskInfo, pTaskInfo->pBuf->bufferRx, &len, 24, QUARTER_SECOND);	//1/4 second timeout on getting current data back
								}
								pTaskInfo->pBuf->sampleC3 = FALSE;
   176be:	d7 01       	movw	r26, r14
   176c0:	14 96       	adiw	r26, 0x04	; 4
   176c2:	ed 91       	ld	r30, X+
   176c4:	fc 91       	ld	r31, X
   176c6:	15 97       	sbiw	r26, 0x05	; 5
   176c8:	ec 5f       	subi	r30, 0xFC	; 252
   176ca:	fa 4f       	sbci	r31, 0xFA	; 250
   176cc:	10 82       	st	Z, r1
							}
							memset(pTaskInfo->pBuf->bufferTx, 0, 30);
   176ce:	d7 01       	movw	r26, r14
   176d0:	14 96       	adiw	r26, 0x04	; 4
   176d2:	ec 91       	ld	r30, X
   176d4:	14 97       	sbiw	r26, 0x04	; 4
   176d6:	15 96       	adiw	r26, 0x05	; 5
   176d8:	fc 91       	ld	r31, X
   176da:	8e e1       	ldi	r24, 0x1E	; 30
   176dc:	df 01       	movw	r26, r30
   176de:	1d 92       	st	X+, r1
   176e0:	8a 95       	dec	r24
   176e2:	e9 f7       	brne	.-6      	; 0x176de <TurnerC3_ParseFile+0x3de>
							memcpy(pTaskInfo->pBuf->bufferTx, pTaskInfo->pBuf->bufferRx, 22);
   176e4:	f7 01       	movw	r30, r14
   176e6:	24 81       	ldd	r18, Z+4	; 0x04
   176e8:	35 81       	ldd	r19, Z+5	; 0x05
   176ea:	c9 01       	movw	r24, r18
   176ec:	fc 01       	movw	r30, r24
   176ee:	dc 01       	movw	r26, r24
   176f0:	a0 50       	subi	r26, 0x00	; 0
   176f2:	bf 4f       	sbci	r27, 0xFF	; 255
   176f4:	86 e1       	ldi	r24, 0x16	; 22
   176f6:	0d 90       	ld	r0, X+
   176f8:	01 92       	st	Z+, r0
   176fa:	81 50       	subi	r24, 0x01	; 1
   176fc:	e1 f7       	brne	.-8      	; 0x176f6 <TurnerC3_ParseFile+0x3f6>
							retval = TurnerC3_SetConfiguration(pTaskInfo, (char*)NULL);
   176fe:	c7 01       	movw	r24, r14
   17700:	60 e0       	ldi	r22, 0x00	; 0
   17702:	70 e0       	ldi	r23, 0x00	; 0
   17704:	0e 94 4c b7 	call	0x16e98	; 0x16e98 <TurnerC3_SetConfiguration>
   17708:	3a c0       	rjmp	.+116    	; 0x1777e <TurnerC3_ParseFile+0x47e>
					}				
				}
				else
				{
					retval = TURNERC3_SAMPLING_ON;
					if(pTaskInfo->pBuf->powerOn != TRUE)
   1770a:	eb 5f       	subi	r30, 0xFB	; 251
   1770c:	fa 4f       	sbci	r31, 0xFA	; 250
   1770e:	80 81       	ld	r24, Z
   17710:	8f 3f       	cpi	r24, 0xFF	; 255
   17712:	09 f0       	breq	.+2      	; 0x17716 <TurnerC3_ParseFile+0x416>
   17714:	76 c0       	rjmp	.+236    	; 0x17802 <TurnerC3_ParseFile+0x502>
   17716:	b2 c0       	rjmp	.+356    	; 0x1787c <TurnerC3_ParseFile+0x57c>
						retval = TURNERC3_POWER_OFF;
				}
			}
			else if(strncmp_P(subCommand, PSTR("ID"), 2) == 0)
   17718:	c8 01       	movw	r24, r16
   1771a:	63 e5       	ldi	r22, 0x53	; 83
   1771c:	77 e1       	ldi	r23, 0x17	; 23
   1771e:	42 e0       	ldi	r20, 0x02	; 2
   17720:	50 e0       	ldi	r21, 0x00	; 0
   17722:	0e 94 e7 ef 	call	0x1dfce	; 0x1dfce <strncmp_P>
   17726:	89 2b       	or	r24, r25
   17728:	09 f0       	breq	.+2      	; 0x1772c <TurnerC3_ParseFile+0x42c>
   1772a:	57 c1       	rjmp	.+686    	; 0x179da <TurnerC3_ParseFile+0x6da>
			{
				if(pTaskInfo->pBuf->powerOn == TRUE)
   1772c:	d7 01       	movw	r26, r14
   1772e:	14 96       	adiw	r26, 0x04	; 4
   17730:	ed 91       	ld	r30, X+
   17732:	fc 91       	ld	r31, X
   17734:	15 97       	sbiw	r26, 0x05	; 5
   17736:	eb 5f       	subi	r30, 0xFB	; 251
   17738:	fa 4f       	sbci	r31, 0xFA	; 250
   1773a:	80 81       	ld	r24, Z
   1773c:	8f 3f       	cpi	r24, 0xFF	; 255
   1773e:	09 f0       	breq	.+2      	; 0x17742 <TurnerC3_ParseFile+0x442>
   17740:	60 c0       	rjmp	.+192    	; 0x17802 <TurnerC3_ParseFile+0x502>
				{
					subCommand = ThreadSafeStrTok(&context, sep);
   17742:	ce 01       	movw	r24, r28
   17744:	01 96       	adiw	r24, 0x01	; 1
   17746:	be 01       	movw	r22, r28
   17748:	6b 5f       	subi	r22, 0xFB	; 251
   1774a:	7f 4f       	sbci	r23, 0xFF	; 255
   1774c:	0e 94 67 a9 	call	0x152ce	; 0x152ce <ThreadSafeStrTok>
   17750:	8c 01       	movw	r16, r24
					if(strncmp_P(subCommand, PSTR("SET"), 3) == 0)
   17752:	6f e4       	ldi	r22, 0x4F	; 79
   17754:	77 e1       	ldi	r23, 0x17	; 23
   17756:	43 e0       	ldi	r20, 0x03	; 3
   17758:	50 e0       	ldi	r21, 0x00	; 0
   1775a:	0e 94 e7 ef 	call	0x1dfce	; 0x1dfce <strncmp_P>
   1775e:	89 2b       	or	r24, r25
   17760:	09 f4       	brne	.+2      	; 0x17764 <TurnerC3_ParseFile+0x464>
   17762:	22 c1       	rjmp	.+580    	; 0x179a8 <TurnerC3_ParseFile+0x6a8>
					{
						retval = TURNERC3_UNSUPPORTED_CMD;
					}
					else if(strncmp_P(subCommand, PSTR("GET"), 3) == 0)
   17764:	c8 01       	movw	r24, r16
   17766:	6b e4       	ldi	r22, 0x4B	; 75
   17768:	77 e1       	ldi	r23, 0x17	; 23
   1776a:	43 e0       	ldi	r20, 0x03	; 3
   1776c:	50 e0       	ldi	r21, 0x00	; 0
   1776e:	0e 94 e7 ef 	call	0x1dfce	; 0x1dfce <strncmp_P>
   17772:	89 2b       	or	r24, r25
   17774:	09 f0       	breq	.+2      	; 0x17778 <TurnerC3_ParseFile+0x478>
   17776:	31 c1       	rjmp	.+610    	; 0x179da <TurnerC3_ParseFile+0x6da>
					{
						retval = TurnerC3_XmitID(pTaskInfo);
   17778:	c7 01       	movw	r24, r14
   1777a:	0e 94 e1 ab 	call	0x157c2	; 0x157c2 <TurnerC3_XmitID>
   1777e:	28 2f       	mov	r18, r24
					retval = TURNERC3_POWER_OFF;				
			}
		}
	}

	switch (retval)
   17780:	20 34       	cpi	r18, 0x40	; 64
   17782:	09 f4       	brne	.+2      	; 0x17786 <TurnerC3_ParseFile+0x486>
   17784:	62 c0       	rjmp	.+196    	; 0x1784a <TurnerC3_ParseFile+0x54a>
   17786:	21 34       	cpi	r18, 0x41	; 65
   17788:	48 f4       	brcc	.+18     	; 0x1779c <TurnerC3_ParseFile+0x49c>
   1778a:	20 32       	cpi	r18, 0x20	; 32
   1778c:	d1 f1       	breq	.+116    	; 0x17802 <TurnerC3_ParseFile+0x502>
   1778e:	20 33       	cpi	r18, 0x30	; 48
   17790:	09 f4       	brne	.+2      	; 0x17794 <TurnerC3_ParseFile+0x494>
   17792:	42 c0       	rjmp	.+132    	; 0x17818 <TurnerC3_ParseFile+0x518>
   17794:	20 31       	cpi	r18, 0x10	; 16
   17796:	09 f0       	breq	.+2      	; 0x1779a <TurnerC3_ParseFile+0x49a>
   17798:	20 c1       	rjmp	.+576    	; 0x179da <TurnerC3_ParseFile+0x6da>
   1779a:	28 c0       	rjmp	.+80     	; 0x177ec <TurnerC3_ParseFile+0x4ec>
   1779c:	20 36       	cpi	r18, 0x60	; 96
   1779e:	09 f4       	brne	.+2      	; 0x177a2 <TurnerC3_ParseFile+0x4a2>
   177a0:	86 c0       	rjmp	.+268    	; 0x178ae <TurnerC3_ParseFile+0x5ae>
   177a2:	21 36       	cpi	r18, 0x61	; 97
   177a4:	20 f4       	brcc	.+8      	; 0x177ae <TurnerC3_ParseFile+0x4ae>
   177a6:	20 35       	cpi	r18, 0x50	; 80
   177a8:	09 f0       	breq	.+2      	; 0x177ac <TurnerC3_ParseFile+0x4ac>
   177aa:	17 c1       	rjmp	.+558    	; 0x179da <TurnerC3_ParseFile+0x6da>
   177ac:	67 c0       	rjmp	.+206    	; 0x1787c <TurnerC3_ParseFile+0x57c>
   177ae:	20 37       	cpi	r18, 0x70	; 112
   177b0:	09 f4       	brne	.+2      	; 0x177b4 <TurnerC3_ParseFile+0x4b4>
   177b2:	fa c0       	rjmp	.+500    	; 0x179a8 <TurnerC3_ParseFile+0x6a8>
   177b4:	2f 3f       	cpi	r18, 0xFF	; 255
   177b6:	09 f0       	breq	.+2      	; 0x177ba <TurnerC3_ParseFile+0x4ba>
   177b8:	10 c1       	rjmp	.+544    	; 0x179da <TurnerC3_ParseFile+0x6da>
	{
		case SUCCESS:
			memcpy_P(&fileOut[pTaskInfo->portNum][0], PSTR("OK"), 2);
   177ba:	f7 01       	movw	r30, r14
   177bc:	21 81       	ldd	r18, Z+1	; 0x01
   177be:	92 2f       	mov	r25, r18
   177c0:	99 0f       	add	r25, r25
   177c2:	99 0f       	add	r25, r25
   177c4:	80 e0       	ldi	r24, 0x00	; 0
   177c6:	8f 5a       	subi	r24, 0xAF	; 175
   177c8:	92 47       	sbci	r25, 0x72	; 114
   177ca:	68 e4       	ldi	r22, 0x48	; 72
   177cc:	77 e1       	ldi	r23, 0x17	; 23
   177ce:	42 e0       	ldi	r20, 0x02	; 2
   177d0:	50 e0       	ldi	r21, 0x00	; 0
   177d2:	0e 94 ab ef 	call	0x1df56	; 0x1df56 <memcpy_P>
			fileOutSize[pTaskInfo->portNum] = 2;
   177d6:	d7 01       	movw	r26, r14
   177d8:	11 96       	adiw	r26, 0x01	; 1
   177da:	ec 91       	ld	r30, X
   177dc:	f0 e0       	ldi	r31, 0x00	; 0
   177de:	ee 0f       	add	r30, r30
   177e0:	ff 1f       	adc	r31, r31
   177e2:	ef 5a       	subi	r30, 0xAF	; 175
   177e4:	f2 46       	sbci	r31, 0x62	; 98
   177e6:	82 e0       	ldi	r24, 0x02	; 2
   177e8:	90 e0       	ldi	r25, 0x00	; 0
   177ea:	0f c1       	rjmp	.+542    	; 0x17a0a <TurnerC3_ParseFile+0x70a>
			break;
		case TURNERC3_INVALID_PARAMETERS:
			memcpy_P(&fileOut[pTaskInfo->portNum][0], PSTR("Invalid Parameter List"), 22);
   177ec:	f7 01       	movw	r30, r14
   177ee:	21 81       	ldd	r18, Z+1	; 0x01
   177f0:	92 2f       	mov	r25, r18
   177f2:	99 0f       	add	r25, r25
   177f4:	99 0f       	add	r25, r25
   177f6:	80 e0       	ldi	r24, 0x00	; 0
   177f8:	8f 5a       	subi	r24, 0xAF	; 175
   177fa:	92 47       	sbci	r25, 0x72	; 114
   177fc:	61 e3       	ldi	r22, 0x31	; 49
   177fe:	77 e1       	ldi	r23, 0x17	; 23
   17800:	15 c0       	rjmp	.+42     	; 0x1782c <TurnerC3_ParseFile+0x52c>
			fileOutSize[pTaskInfo->portNum] = 22;
			break;
		case TURNERC3_POWER_OFF:
			memcpy_P(&fileOut[pTaskInfo->portNum][0], PSTR("C3 Power is Off -- Please turn it first"), 39);
   17802:	f7 01       	movw	r30, r14
   17804:	21 81       	ldd	r18, Z+1	; 0x01
   17806:	92 2f       	mov	r25, r18
   17808:	99 0f       	add	r25, r25
   1780a:	99 0f       	add	r25, r25
   1780c:	80 e0       	ldi	r24, 0x00	; 0
   1780e:	8f 5a       	subi	r24, 0xAF	; 175
   17810:	92 47       	sbci	r25, 0x72	; 114
   17812:	69 e0       	ldi	r22, 0x09	; 9
   17814:	77 e1       	ldi	r23, 0x17	; 23
   17816:	d2 c0       	rjmp	.+420    	; 0x179bc <TurnerC3_ParseFile+0x6bc>
			fileOutSize[pTaskInfo->portNum] = 39;
			break;
		case TURNERC3_POWER_ON:
			memcpy_P(&fileOut[pTaskInfo->portNum][0], PSTR("C3 Power is already ON"), 22);
   17818:	f7 01       	movw	r30, r14
   1781a:	21 81       	ldd	r18, Z+1	; 0x01
   1781c:	92 2f       	mov	r25, r18
   1781e:	99 0f       	add	r25, r25
   17820:	99 0f       	add	r25, r25
   17822:	80 e0       	ldi	r24, 0x00	; 0
   17824:	8f 5a       	subi	r24, 0xAF	; 175
   17826:	92 47       	sbci	r25, 0x72	; 114
   17828:	62 ef       	ldi	r22, 0xF2	; 242
   1782a:	76 e1       	ldi	r23, 0x16	; 22
   1782c:	46 e1       	ldi	r20, 0x16	; 22
   1782e:	50 e0       	ldi	r21, 0x00	; 0
   17830:	0e 94 ab ef 	call	0x1df56	; 0x1df56 <memcpy_P>
			fileOutSize[pTaskInfo->portNum] = 22;
   17834:	d7 01       	movw	r26, r14
   17836:	11 96       	adiw	r26, 0x01	; 1
   17838:	ec 91       	ld	r30, X
   1783a:	f0 e0       	ldi	r31, 0x00	; 0
   1783c:	ee 0f       	add	r30, r30
   1783e:	ff 1f       	adc	r31, r31
   17840:	ef 5a       	subi	r30, 0xAF	; 175
   17842:	f2 46       	sbci	r31, 0x62	; 98
   17844:	86 e1       	ldi	r24, 0x16	; 22
   17846:	90 e0       	ldi	r25, 0x00	; 0
   17848:	e0 c0       	rjmp	.+448    	; 0x17a0a <TurnerC3_ParseFile+0x70a>
			break;
		case TURNERC3_SAMPLING_OFF:
			memcpy_P(&fileOut[pTaskInfo->portNum][0], PSTR("C3 Data Sampling is already Off"), 31);
   1784a:	f7 01       	movw	r30, r14
   1784c:	21 81       	ldd	r18, Z+1	; 0x01
   1784e:	92 2f       	mov	r25, r18
   17850:	99 0f       	add	r25, r25
   17852:	99 0f       	add	r25, r25
   17854:	80 e0       	ldi	r24, 0x00	; 0
   17856:	8f 5a       	subi	r24, 0xAF	; 175
   17858:	92 47       	sbci	r25, 0x72	; 114
   1785a:	62 ed       	ldi	r22, 0xD2	; 210
   1785c:	76 e1       	ldi	r23, 0x16	; 22
   1785e:	4f e1       	ldi	r20, 0x1F	; 31
   17860:	50 e0       	ldi	r21, 0x00	; 0
   17862:	0e 94 ab ef 	call	0x1df56	; 0x1df56 <memcpy_P>
			fileOutSize[pTaskInfo->portNum] = 31;
   17866:	d7 01       	movw	r26, r14
   17868:	11 96       	adiw	r26, 0x01	; 1
   1786a:	ec 91       	ld	r30, X
   1786c:	f0 e0       	ldi	r31, 0x00	; 0
   1786e:	ee 0f       	add	r30, r30
   17870:	ff 1f       	adc	r31, r31
   17872:	ef 5a       	subi	r30, 0xAF	; 175
   17874:	f2 46       	sbci	r31, 0x62	; 98
   17876:	8f e1       	ldi	r24, 0x1F	; 31
   17878:	90 e0       	ldi	r25, 0x00	; 0
   1787a:	c7 c0       	rjmp	.+398    	; 0x17a0a <TurnerC3_ParseFile+0x70a>
			break;
		case TURNERC3_SAMPLING_ON:
			memcpy_P(&fileOut[pTaskInfo->portNum][0], PSTR("C3 Data Sampling is ON -- unable to process other commands"), 58);
   1787c:	f7 01       	movw	r30, r14
   1787e:	21 81       	ldd	r18, Z+1	; 0x01
   17880:	92 2f       	mov	r25, r18
   17882:	99 0f       	add	r25, r25
   17884:	99 0f       	add	r25, r25
   17886:	80 e0       	ldi	r24, 0x00	; 0
   17888:	8f 5a       	subi	r24, 0xAF	; 175
   1788a:	92 47       	sbci	r25, 0x72	; 114
   1788c:	67 e9       	ldi	r22, 0x97	; 151
   1788e:	76 e1       	ldi	r23, 0x16	; 22
   17890:	4a e3       	ldi	r20, 0x3A	; 58
   17892:	50 e0       	ldi	r21, 0x00	; 0
   17894:	0e 94 ab ef 	call	0x1df56	; 0x1df56 <memcpy_P>
			fileOutSize[pTaskInfo->portNum] = 58;
   17898:	d7 01       	movw	r26, r14
   1789a:	11 96       	adiw	r26, 0x01	; 1
   1789c:	ec 91       	ld	r30, X
   1789e:	f0 e0       	ldi	r31, 0x00	; 0
   178a0:	ee 0f       	add	r30, r30
   178a2:	ff 1f       	adc	r31, r31
   178a4:	ef 5a       	subi	r30, 0xAF	; 175
   178a6:	f2 46       	sbci	r31, 0x62	; 98
   178a8:	8a e3       	ldi	r24, 0x3A	; 58
   178aa:	90 e0       	ldi	r25, 0x00	; 0
   178ac:	ae c0       	rjmp	.+348    	; 0x17a0a <TurnerC3_ParseFile+0x70a>
			break;
		case TURNERC3_CURRENT_STATE:
			if((pTaskInfo->pBuf->powerOn == TRUE) && (pTaskInfo->pBuf->sampleC3 == TRUE))
   178ae:	d7 01       	movw	r26, r14
   178b0:	14 96       	adiw	r26, 0x04	; 4
   178b2:	ed 91       	ld	r30, X+
   178b4:	fc 91       	ld	r31, X
   178b6:	15 97       	sbiw	r26, 0x05	; 5
   178b8:	eb 5f       	subi	r30, 0xFB	; 251
   178ba:	fa 4f       	sbci	r31, 0xFA	; 250
   178bc:	80 81       	ld	r24, Z
   178be:	e5 50       	subi	r30, 0x05	; 5
   178c0:	f5 40       	sbci	r31, 0x05	; 5
   178c2:	8f 3f       	cpi	r24, 0xFF	; 255
   178c4:	59 f5       	brne	.+86     	; 0x1791c <TurnerC3_ParseFile+0x61c>
   178c6:	ec 5f       	subi	r30, 0xFC	; 252
   178c8:	fa 4f       	sbci	r31, 0xFA	; 250
   178ca:	80 81       	ld	r24, Z
   178cc:	8f 3f       	cpi	r24, 0xFF	; 255
   178ce:	c9 f4       	brne	.+50     	; 0x17902 <TurnerC3_ParseFile+0x602>
			{
				memcpy_P(&fileOut[pTaskInfo->portNum][0], PSTR("Power is ON, Sampling is ON"), 27);
   178d0:	11 96       	adiw	r26, 0x01	; 1
   178d2:	2c 91       	ld	r18, X
   178d4:	92 2f       	mov	r25, r18
   178d6:	99 0f       	add	r25, r25
   178d8:	99 0f       	add	r25, r25
   178da:	80 e0       	ldi	r24, 0x00	; 0
   178dc:	8f 5a       	subi	r24, 0xAF	; 175
   178de:	92 47       	sbci	r25, 0x72	; 114
   178e0:	6b e7       	ldi	r22, 0x7B	; 123
   178e2:	76 e1       	ldi	r23, 0x16	; 22
   178e4:	4b e1       	ldi	r20, 0x1B	; 27
   178e6:	50 e0       	ldi	r21, 0x00	; 0
   178e8:	0e 94 ab ef 	call	0x1df56	; 0x1df56 <memcpy_P>
				fileOutSize[pTaskInfo->portNum] = 27;
   178ec:	d7 01       	movw	r26, r14
   178ee:	11 96       	adiw	r26, 0x01	; 1
   178f0:	ec 91       	ld	r30, X
   178f2:	f0 e0       	ldi	r31, 0x00	; 0
   178f4:	ee 0f       	add	r30, r30
   178f6:	ff 1f       	adc	r31, r31
   178f8:	ef 5a       	subi	r30, 0xAF	; 175
   178fa:	f2 46       	sbci	r31, 0x62	; 98
   178fc:	8b e1       	ldi	r24, 0x1B	; 27
   178fe:	90 e0       	ldi	r25, 0x00	; 0
   17900:	84 c0       	rjmp	.+264    	; 0x17a0a <TurnerC3_ParseFile+0x70a>
			}
			else if((pTaskInfo->pBuf->powerOn == TRUE) && (pTaskInfo->pBuf->sampleC3 == FALSE))
   17902:	88 23       	and	r24, r24
   17904:	c1 f5       	brne	.+112    	; 0x17976 <TurnerC3_ParseFile+0x676>
			{
				memcpy_P(&fileOut[pTaskInfo->portNum][0], PSTR("Power is ON, Sampling is OFF"), 28);
   17906:	f7 01       	movw	r30, r14
   17908:	21 81       	ldd	r18, Z+1	; 0x01
   1790a:	92 2f       	mov	r25, r18
   1790c:	99 0f       	add	r25, r25
   1790e:	99 0f       	add	r25, r25
   17910:	80 e0       	ldi	r24, 0x00	; 0
   17912:	8f 5a       	subi	r24, 0xAF	; 175
   17914:	92 47       	sbci	r25, 0x72	; 114
   17916:	6e e5       	ldi	r22, 0x5E	; 94
   17918:	76 e1       	ldi	r23, 0x16	; 22
   1791a:	11 c0       	rjmp	.+34     	; 0x1793e <TurnerC3_ParseFile+0x63e>
				fileOutSize[pTaskInfo->portNum] = 28;
			}
			else if((pTaskInfo->pBuf->powerOn == FALSE) && (pTaskInfo->pBuf->sampleC3 == TRUE))
   1791c:	88 23       	and	r24, r24
   1791e:	59 f5       	brne	.+86     	; 0x17976 <TurnerC3_ParseFile+0x676>
   17920:	ec 5f       	subi	r30, 0xFC	; 252
   17922:	fa 4f       	sbci	r31, 0xFA	; 250
   17924:	80 81       	ld	r24, Z
   17926:	8f 3f       	cpi	r24, 0xFF	; 255
   17928:	c9 f4       	brne	.+50     	; 0x1795c <TurnerC3_ParseFile+0x65c>
			{
				memcpy_P(&fileOut[pTaskInfo->portNum][0], PSTR("Power is OFF, Sampling is ON"), 28);
   1792a:	f7 01       	movw	r30, r14
   1792c:	21 81       	ldd	r18, Z+1	; 0x01
   1792e:	92 2f       	mov	r25, r18
   17930:	99 0f       	add	r25, r25
   17932:	99 0f       	add	r25, r25
   17934:	80 e0       	ldi	r24, 0x00	; 0
   17936:	8f 5a       	subi	r24, 0xAF	; 175
   17938:	92 47       	sbci	r25, 0x72	; 114
   1793a:	61 e4       	ldi	r22, 0x41	; 65
   1793c:	76 e1       	ldi	r23, 0x16	; 22
   1793e:	4c e1       	ldi	r20, 0x1C	; 28
   17940:	50 e0       	ldi	r21, 0x00	; 0
   17942:	0e 94 ab ef 	call	0x1df56	; 0x1df56 <memcpy_P>
				fileOutSize[pTaskInfo->portNum] = 28;
   17946:	d7 01       	movw	r26, r14
   17948:	11 96       	adiw	r26, 0x01	; 1
   1794a:	ec 91       	ld	r30, X
   1794c:	f0 e0       	ldi	r31, 0x00	; 0
   1794e:	ee 0f       	add	r30, r30
   17950:	ff 1f       	adc	r31, r31
   17952:	ef 5a       	subi	r30, 0xAF	; 175
   17954:	f2 46       	sbci	r31, 0x62	; 98
   17956:	8c e1       	ldi	r24, 0x1C	; 28
   17958:	90 e0       	ldi	r25, 0x00	; 0
   1795a:	57 c0       	rjmp	.+174    	; 0x17a0a <TurnerC3_ParseFile+0x70a>
			}
			else if((pTaskInfo->pBuf->powerOn == FALSE) && (pTaskInfo->pBuf->sampleC3 == FALSE))
   1795c:	88 23       	and	r24, r24
   1795e:	59 f4       	brne	.+22     	; 0x17976 <TurnerC3_ParseFile+0x676>
			{
				memcpy_P(&fileOut[pTaskInfo->portNum][0], PSTR("Power is OFF, Sampling is OFF"), 29);
   17960:	f7 01       	movw	r30, r14
   17962:	21 81       	ldd	r18, Z+1	; 0x01
   17964:	92 2f       	mov	r25, r18
   17966:	99 0f       	add	r25, r25
   17968:	99 0f       	add	r25, r25
   1796a:	80 e0       	ldi	r24, 0x00	; 0
   1796c:	8f 5a       	subi	r24, 0xAF	; 175
   1796e:	92 47       	sbci	r25, 0x72	; 114
   17970:	63 e2       	ldi	r22, 0x23	; 35
   17972:	76 e1       	ldi	r23, 0x16	; 22
   17974:	0a c0       	rjmp	.+20     	; 0x1798a <TurnerC3_ParseFile+0x68a>
				fileOutSize[pTaskInfo->portNum] = 29;
			}
			else
			{
				memcpy_P(&fileOut[pTaskInfo->portNum][0], PSTR("System is in an unknown state"), 29);
   17976:	f7 01       	movw	r30, r14
   17978:	21 81       	ldd	r18, Z+1	; 0x01
   1797a:	92 2f       	mov	r25, r18
   1797c:	99 0f       	add	r25, r25
   1797e:	99 0f       	add	r25, r25
   17980:	80 e0       	ldi	r24, 0x00	; 0
   17982:	8f 5a       	subi	r24, 0xAF	; 175
   17984:	92 47       	sbci	r25, 0x72	; 114
   17986:	65 e0       	ldi	r22, 0x05	; 5
   17988:	76 e1       	ldi	r23, 0x16	; 22
   1798a:	4d e1       	ldi	r20, 0x1D	; 29
   1798c:	50 e0       	ldi	r21, 0x00	; 0
   1798e:	0e 94 ab ef 	call	0x1df56	; 0x1df56 <memcpy_P>
				fileOutSize[pTaskInfo->portNum] = 29;
   17992:	d7 01       	movw	r26, r14
   17994:	11 96       	adiw	r26, 0x01	; 1
   17996:	ec 91       	ld	r30, X
   17998:	f0 e0       	ldi	r31, 0x00	; 0
   1799a:	ee 0f       	add	r30, r30
   1799c:	ff 1f       	adc	r31, r31
   1799e:	ef 5a       	subi	r30, 0xAF	; 175
   179a0:	f2 46       	sbci	r31, 0x62	; 98
   179a2:	8d e1       	ldi	r24, 0x1D	; 29
   179a4:	90 e0       	ldi	r25, 0x00	; 0
   179a6:	31 c0       	rjmp	.+98     	; 0x17a0a <TurnerC3_ParseFile+0x70a>
			}
			break;
		case TURNERC3_UNSUPPORTED_CMD:
			memcpy_P(&fileOut[pTaskInfo->portNum][0], PSTR("That command is currently not supported"), 39);
   179a8:	f7 01       	movw	r30, r14
   179aa:	21 81       	ldd	r18, Z+1	; 0x01
   179ac:	92 2f       	mov	r25, r18
   179ae:	99 0f       	add	r25, r25
   179b0:	99 0f       	add	r25, r25
   179b2:	80 e0       	ldi	r24, 0x00	; 0
   179b4:	8f 5a       	subi	r24, 0xAF	; 175
   179b6:	92 47       	sbci	r25, 0x72	; 114
   179b8:	6d ed       	ldi	r22, 0xDD	; 221
   179ba:	75 e1       	ldi	r23, 0x15	; 21
   179bc:	47 e2       	ldi	r20, 0x27	; 39
   179be:	50 e0       	ldi	r21, 0x00	; 0
   179c0:	0e 94 ab ef 	call	0x1df56	; 0x1df56 <memcpy_P>
			fileOutSize[pTaskInfo->portNum] = 39;
   179c4:	d7 01       	movw	r26, r14
   179c6:	11 96       	adiw	r26, 0x01	; 1
   179c8:	ec 91       	ld	r30, X
   179ca:	f0 e0       	ldi	r31, 0x00	; 0
   179cc:	ee 0f       	add	r30, r30
   179ce:	ff 1f       	adc	r31, r31
   179d0:	ef 5a       	subi	r30, 0xAF	; 175
   179d2:	f2 46       	sbci	r31, 0x62	; 98
   179d4:	87 e2       	ldi	r24, 0x27	; 39
   179d6:	90 e0       	ldi	r25, 0x00	; 0
   179d8:	18 c0       	rjmp	.+48     	; 0x17a0a <TurnerC3_ParseFile+0x70a>
			break;
		case FAIL:
		default:
			memcpy_P(&fileOut[pTaskInfo->portNum][0], PSTR("Unrecognized Command"), 20);
   179da:	f7 01       	movw	r30, r14
   179dc:	21 81       	ldd	r18, Z+1	; 0x01
   179de:	92 2f       	mov	r25, r18
   179e0:	99 0f       	add	r25, r25
   179e2:	99 0f       	add	r25, r25
   179e4:	80 e0       	ldi	r24, 0x00	; 0
   179e6:	8f 5a       	subi	r24, 0xAF	; 175
   179e8:	92 47       	sbci	r25, 0x72	; 114
   179ea:	68 ec       	ldi	r22, 0xC8	; 200
   179ec:	75 e1       	ldi	r23, 0x15	; 21
   179ee:	44 e1       	ldi	r20, 0x14	; 20
   179f0:	50 e0       	ldi	r21, 0x00	; 0
   179f2:	0e 94 ab ef 	call	0x1df56	; 0x1df56 <memcpy_P>
			fileOutSize[pTaskInfo->portNum] = 20;
   179f6:	d7 01       	movw	r26, r14
   179f8:	11 96       	adiw	r26, 0x01	; 1
   179fa:	ec 91       	ld	r30, X
   179fc:	f0 e0       	ldi	r31, 0x00	; 0
   179fe:	ee 0f       	add	r30, r30
   17a00:	ff 1f       	adc	r31, r31
   17a02:	ef 5a       	subi	r30, 0xAF	; 175
   17a04:	f2 46       	sbci	r31, 0x62	; 98
   17a06:	84 e1       	ldi	r24, 0x14	; 20
   17a08:	90 e0       	ldi	r25, 0x00	; 0
   17a0a:	91 83       	std	Z+1, r25	; 0x01
   17a0c:	80 83       	st	Z, r24
	}

	retval = SUCCESS;


	TurnerC3_QueueFile(pTaskInfo, fileID);
   17a0e:	c7 01       	movw	r24, r14
   17a10:	b4 01       	movw	r22, r8
   17a12:	a3 01       	movw	r20, r6
   17a14:	0e 94 93 a9 	call	0x15326	; 0x15326 <TurnerC3_QueueFile>
	
	return retval;
}
   17a18:	8f ef       	ldi	r24, 0xFF	; 255
   17a1a:	29 96       	adiw	r28, 0x09	; 9
   17a1c:	0f b6       	in	r0, 0x3f	; 63
   17a1e:	f8 94       	cli
   17a20:	de bf       	out	0x3e, r29	; 62
   17a22:	0f be       	out	0x3f, r0	; 63
   17a24:	cd bf       	out	0x3d, r28	; 61
   17a26:	cf 91       	pop	r28
   17a28:	df 91       	pop	r29
   17a2a:	1f 91       	pop	r17
   17a2c:	0f 91       	pop	r16
   17a2e:	ff 90       	pop	r15
   17a30:	ef 90       	pop	r14
   17a32:	df 90       	pop	r13
   17a34:	cf 90       	pop	r12
   17a36:	bf 90       	pop	r11
   17a38:	af 90       	pop	r10
   17a3a:	9f 90       	pop	r9
   17a3c:	8f 90       	pop	r8
   17a3e:	7f 90       	pop	r7
   17a40:	6f 90       	pop	r6
   17a42:	08 95       	ret

00017a44 <TurnerC3_ParseCommand>:

	return;
}

uint8_t TurnerC3_ParseCommand(PTURNER_C3_TASK pTaskInfo, char command, char* myCommand)
{
   17a44:	cf 92       	push	r12
   17a46:	df 92       	push	r13
   17a48:	ef 92       	push	r14
   17a4a:	ff 92       	push	r15
   17a4c:	0f 93       	push	r16
   17a4e:	1f 93       	push	r17
   17a50:	df 93       	push	r29
   17a52:	cf 93       	push	r28
   17a54:	00 d0       	rcall	.+0      	; 0x17a56 <TurnerC3_ParseCommand+0x12>
   17a56:	0f 92       	push	r0
   17a58:	cd b7       	in	r28, 0x3d	; 61
   17a5a:	de b7       	in	r29, 0x3e	; 62
   17a5c:	7c 01       	movw	r14, r24
   17a5e:	16 2f       	mov	r17, r22
   17a60:	5c 83       	std	Y+4, r21	; 0x04
   17a62:	4b 83       	std	Y+3, r20	; 0x03
	uint8_t retval = FAIL;

	sprintf_P(dbgMsg, PSTR("Parsing Command <%c> <%s>"), command, myCommand); SEND_MSG;
   17a64:	8d b7       	in	r24, 0x3d	; 61
   17a66:	9e b7       	in	r25, 0x3e	; 62
   17a68:	08 97       	sbiw	r24, 0x08	; 8
   17a6a:	0f b6       	in	r0, 0x3f	; 63
   17a6c:	f8 94       	cli
   17a6e:	9e bf       	out	0x3e, r25	; 62
   17a70:	0f be       	out	0x3f, r0	; 63
   17a72:	8d bf       	out	0x3d, r24	; 61
   17a74:	ed b7       	in	r30, 0x3d	; 61
   17a76:	fe b7       	in	r31, 0x3e	; 62
   17a78:	31 96       	adiw	r30, 0x01	; 1
   17a7a:	83 ef       	ldi	r24, 0xF3	; 243
   17a7c:	98 e1       	ldi	r25, 0x18	; 24
   17a7e:	ad b7       	in	r26, 0x3d	; 61
   17a80:	be b7       	in	r27, 0x3e	; 62
   17a82:	12 96       	adiw	r26, 0x02	; 2
   17a84:	9c 93       	st	X, r25
   17a86:	8e 93       	st	-X, r24
   17a88:	11 97       	sbiw	r26, 0x01	; 1
   17a8a:	8c e6       	ldi	r24, 0x6C	; 108
   17a8c:	99 e1       	ldi	r25, 0x19	; 25
   17a8e:	93 83       	std	Z+3, r25	; 0x03
   17a90:	82 83       	std	Z+2, r24	; 0x02
   17a92:	64 83       	std	Z+4, r22	; 0x04
   17a94:	15 82       	std	Z+5, r1	; 0x05
   17a96:	8b 81       	ldd	r24, Y+3	; 0x03
   17a98:	9c 81       	ldd	r25, Y+4	; 0x04
   17a9a:	97 83       	std	Z+7, r25	; 0x07
   17a9c:	86 83       	std	Z+6, r24	; 0x06
   17a9e:	0e 94 51 f1 	call	0x1e2a2	; 0x1e2a2 <sprintf_P>
	
	switch (command)
   17aa2:	ed b7       	in	r30, 0x3d	; 61
   17aa4:	fe b7       	in	r31, 0x3e	; 62
   17aa6:	38 96       	adiw	r30, 0x08	; 8
   17aa8:	0f b6       	in	r0, 0x3f	; 63
   17aaa:	f8 94       	cli
   17aac:	fe bf       	out	0x3e, r31	; 62
   17aae:	0f be       	out	0x3f, r0	; 63
   17ab0:	ed bf       	out	0x3d, r30	; 61
   17ab2:	61 2f       	mov	r22, r17
   17ab4:	70 e0       	ldi	r23, 0x00	; 0
   17ab6:	fb 01       	movw	r30, r22
   17ab8:	e1 54       	subi	r30, 0x41	; 65
   17aba:	f0 40       	sbci	r31, 0x00	; 0
   17abc:	e8 33       	cpi	r30, 0x38	; 56
   17abe:	f1 05       	cpc	r31, r1
   17ac0:	40 f4       	brcc	.+16     	; 0x17ad2 <TurnerC3_ParseCommand+0x8e>
   17ac2:	ec 51       	subi	r30, 0x1C	; 28
   17ac4:	ff 4f       	sbci	r31, 0xFF	; 255
   17ac6:	ee 0f       	add	r30, r30
   17ac8:	ff 1f       	adc	r31, r31
   17aca:	05 90       	lpm	r0, Z+
   17acc:	f4 91       	lpm	r31, Z+
   17ace:	e0 2d       	mov	r30, r0
   17ad0:	19 94       	eijmp
   17ad2:	10 e0       	ldi	r17, 0x00	; 0
   17ad4:	1c c4       	rjmp	.+2104   	; 0x1830e <TurnerC3_ParseCommand+0x8ca>
	{
		case 't':
		case 'T':
			// State

			sprintf_P(dbgMsg, PSTR("STATE COMMAND")); SEND_MSG;
   17ad6:	00 d0       	rcall	.+0      	; 0x17ad8 <TurnerC3_ParseCommand+0x94>
   17ad8:	0f 92       	push	r0
   17ada:	83 ef       	ldi	r24, 0xF3	; 243
   17adc:	98 e1       	ldi	r25, 0x18	; 24
   17ade:	ad b7       	in	r26, 0x3d	; 61
   17ae0:	be b7       	in	r27, 0x3e	; 62
   17ae2:	12 96       	adiw	r26, 0x02	; 2
   17ae4:	9c 93       	st	X, r25
   17ae6:	8e 93       	st	-X, r24
   17ae8:	11 97       	sbiw	r26, 0x01	; 1
   17aea:	8e e5       	ldi	r24, 0x5E	; 94
   17aec:	99 e1       	ldi	r25, 0x19	; 25
   17aee:	14 96       	adiw	r26, 0x04	; 4
   17af0:	9c 93       	st	X, r25
   17af2:	8e 93       	st	-X, r24
   17af4:	13 97       	sbiw	r26, 0x03	; 3
   17af6:	0e 94 51 f1 	call	0x1e2a2	; 0x1e2a2 <sprintf_P>
   17afa:	0f 90       	pop	r0
   17afc:	0f 90       	pop	r0
   17afe:	0f 90       	pop	r0
   17b00:	0f 90       	pop	r0
   17b02:	4f c3       	rjmp	.+1694   	; 0x181a2 <TurnerC3_ParseCommand+0x75e>

		case 'o':
		case 'O':
			// ON

			sprintf_P(dbgMsg, PSTR("ON")); SEND_MSG;
   17b04:	00 d0       	rcall	.+0      	; 0x17b06 <TurnerC3_ParseCommand+0xc2>
   17b06:	0f 92       	push	r0
   17b08:	83 ef       	ldi	r24, 0xF3	; 243
   17b0a:	98 e1       	ldi	r25, 0x18	; 24
   17b0c:	ed b7       	in	r30, 0x3d	; 61
   17b0e:	fe b7       	in	r31, 0x3e	; 62
   17b10:	92 83       	std	Z+2, r25	; 0x02
   17b12:	81 83       	std	Z+1, r24	; 0x01
   17b14:	8b e5       	ldi	r24, 0x5B	; 91
   17b16:	99 e1       	ldi	r25, 0x19	; 25
   17b18:	94 83       	std	Z+4, r25	; 0x04
   17b1a:	83 83       	std	Z+3, r24	; 0x03
   17b1c:	0e 94 51 f1 	call	0x1e2a2	; 0x1e2a2 <sprintf_P>

			if(pTaskInfo->pBuf->powerOn == FALSE)
   17b20:	d7 01       	movw	r26, r14
   17b22:	14 96       	adiw	r26, 0x04	; 4
   17b24:	ed 91       	ld	r30, X+
   17b26:	fc 91       	ld	r31, X
   17b28:	15 97       	sbiw	r26, 0x05	; 5
   17b2a:	eb 5f       	subi	r30, 0xFB	; 251
   17b2c:	fa 4f       	sbci	r31, 0xFA	; 250
   17b2e:	0f 90       	pop	r0
   17b30:	0f 90       	pop	r0
   17b32:	0f 90       	pop	r0
   17b34:	0f 90       	pop	r0
   17b36:	80 81       	ld	r24, Z
   17b38:	88 23       	and	r24, r24
   17b3a:	09 f0       	breq	.+2      	; 0x17b3e <TurnerC3_ParseCommand+0xfa>
   17b3c:	de c2       	rjmp	.+1468   	; 0x180fa <TurnerC3_ParseCommand+0x6b6>
				retval = TurnerC3_PowerOn(pTaskInfo);
   17b3e:	c7 01       	movw	r24, r14
   17b40:	0e 94 95 a8 	call	0x1512a	; 0x1512a <TurnerC3_PowerOn>
   17b44:	7f c0       	rjmp	.+254    	; 0x17c44 <TurnerC3_ParseCommand+0x200>

		case 'f':
		case 'F':
			// OFF

			sprintf_P(dbgMsg, PSTR("OFF")); SEND_MSG;
   17b46:	00 d0       	rcall	.+0      	; 0x17b48 <TurnerC3_ParseCommand+0x104>
   17b48:	0f 92       	push	r0
   17b4a:	83 ef       	ldi	r24, 0xF3	; 243
   17b4c:	98 e1       	ldi	r25, 0x18	; 24
   17b4e:	ed b7       	in	r30, 0x3d	; 61
   17b50:	fe b7       	in	r31, 0x3e	; 62
   17b52:	92 83       	std	Z+2, r25	; 0x02
   17b54:	81 83       	std	Z+1, r24	; 0x01
   17b56:	87 e5       	ldi	r24, 0x57	; 87
   17b58:	99 e1       	ldi	r25, 0x19	; 25
   17b5a:	94 83       	std	Z+4, r25	; 0x04
   17b5c:	83 83       	std	Z+3, r24	; 0x03
   17b5e:	0e 94 51 f1 	call	0x1e2a2	; 0x1e2a2 <sprintf_P>

			if(pTaskInfo->pBuf->powerOn == TRUE)
   17b62:	d7 01       	movw	r26, r14
   17b64:	14 96       	adiw	r26, 0x04	; 4
   17b66:	ed 91       	ld	r30, X+
   17b68:	fc 91       	ld	r31, X
   17b6a:	15 97       	sbiw	r26, 0x05	; 5
   17b6c:	eb 5f       	subi	r30, 0xFB	; 251
   17b6e:	fa 4f       	sbci	r31, 0xFA	; 250
   17b70:	0f 90       	pop	r0
   17b72:	0f 90       	pop	r0
   17b74:	0f 90       	pop	r0
   17b76:	0f 90       	pop	r0
   17b78:	80 81       	ld	r24, Z
   17b7a:	8f 3f       	cpi	r24, 0xFF	; 255
   17b7c:	09 f0       	breq	.+2      	; 0x17b80 <TurnerC3_ParseCommand+0x13c>
   17b7e:	a1 c2       	rjmp	.+1346   	; 0x180c2 <TurnerC3_ParseCommand+0x67e>
	return retval;
}

uint8_t TurnerC3_PowerOff(PTURNER_C3_TASK pTaskInfo)
{
	EnablePIBModule(pTaskInfo->portNum, FALSE, FALSE);
   17b80:	11 96       	adiw	r26, 0x01	; 1
   17b82:	8c 91       	ld	r24, X
   17b84:	60 e0       	ldi	r22, 0x00	; 0
   17b86:	40 e0       	ldi	r20, 0x00	; 0
   17b88:	0e 94 a2 38 	call	0x7144	; 0x7144 <EnablePIBModule>
	pTaskInfo->pBuf->powerOn = FALSE;
   17b8c:	d7 01       	movw	r26, r14
   17b8e:	14 96       	adiw	r26, 0x04	; 4
   17b90:	ed 91       	ld	r30, X+
   17b92:	fc 91       	ld	r31, X
   17b94:	15 97       	sbiw	r26, 0x05	; 5
   17b96:	eb 5f       	subi	r30, 0xFB	; 251
   17b98:	fa 4f       	sbci	r31, 0xFA	; 250
   17b9a:	10 82       	st	Z, r1
   17b9c:	6c c2       	rjmp	.+1240   	; 0x18076 <TurnerC3_ParseCommand+0x632>

		case 's':
		case 'S':
			// START

			sprintf_P(dbgMsg, PSTR("START")); SEND_MSG;
   17b9e:	00 d0       	rcall	.+0      	; 0x17ba0 <TurnerC3_ParseCommand+0x15c>
   17ba0:	0f 92       	push	r0
   17ba2:	83 ef       	ldi	r24, 0xF3	; 243
   17ba4:	98 e1       	ldi	r25, 0x18	; 24
   17ba6:	ed b7       	in	r30, 0x3d	; 61
   17ba8:	fe b7       	in	r31, 0x3e	; 62
   17baa:	92 83       	std	Z+2, r25	; 0x02
   17bac:	81 83       	std	Z+1, r24	; 0x01
   17bae:	81 e5       	ldi	r24, 0x51	; 81
   17bb0:	99 e1       	ldi	r25, 0x19	; 25
   17bb2:	94 83       	std	Z+4, r25	; 0x04
   17bb4:	83 83       	std	Z+3, r24	; 0x03
   17bb6:	0e 94 51 f1 	call	0x1e2a2	; 0x1e2a2 <sprintf_P>
			if((pTaskInfo->pBuf->sampleC3 == FALSE) && (pTaskInfo->pBuf->powerOn == TRUE))
   17bba:	d7 01       	movw	r26, r14
   17bbc:	14 96       	adiw	r26, 0x04	; 4
   17bbe:	ed 91       	ld	r30, X+
   17bc0:	fc 91       	ld	r31, X
   17bc2:	15 97       	sbiw	r26, 0x05	; 5
   17bc4:	ec 5f       	subi	r30, 0xFC	; 252
   17bc6:	fa 4f       	sbci	r31, 0xFA	; 250
   17bc8:	0f 90       	pop	r0
   17bca:	0f 90       	pop	r0
   17bcc:	0f 90       	pop	r0
   17bce:	0f 90       	pop	r0
   17bd0:	80 81       	ld	r24, Z
   17bd2:	e4 50       	subi	r30, 0x04	; 4
   17bd4:	f5 40       	sbci	r31, 0x05	; 5
   17bd6:	88 23       	and	r24, r24
   17bd8:	09 f0       	breq	.+2      	; 0x17bdc <TurnerC3_ParseCommand+0x198>
   17bda:	b4 c1       	rjmp	.+872    	; 0x17f44 <TurnerC3_ParseCommand+0x500>
   17bdc:	eb 5f       	subi	r30, 0xFB	; 251
   17bde:	fa 4f       	sbci	r31, 0xFA	; 250
   17be0:	80 81       	ld	r24, Z
   17be2:	e5 50       	subi	r30, 0x05	; 5
   17be4:	f5 40       	sbci	r31, 0x05	; 5
   17be6:	8f 3f       	cpi	r24, 0xFF	; 255
   17be8:	09 f0       	breq	.+2      	; 0x17bec <TurnerC3_ParseCommand+0x1a8>
   17bea:	ac c1       	rjmp	.+856    	; 0x17f44 <TurnerC3_ParseCommand+0x500>
			{
				retval = TurnerC3_StartCurrentData(pTaskInfo);
   17bec:	c7 01       	movw	r24, r14
   17bee:	0e 94 50 b6 	call	0x16ca0	; 0x16ca0 <TurnerC3_StartCurrentData>
   17bf2:	28 c0       	rjmp	.+80     	; 0x17c44 <TurnerC3_ParseCommand+0x200>
	
		case 'x':
		case 'X':
			// STOP

			sprintf_P(dbgMsg, PSTR("STOP")); SEND_MSG;
   17bf4:	00 d0       	rcall	.+0      	; 0x17bf6 <TurnerC3_ParseCommand+0x1b2>
   17bf6:	0f 92       	push	r0
   17bf8:	83 ef       	ldi	r24, 0xF3	; 243
   17bfa:	98 e1       	ldi	r25, 0x18	; 24
   17bfc:	ed b7       	in	r30, 0x3d	; 61
   17bfe:	fe b7       	in	r31, 0x3e	; 62
   17c00:	92 83       	std	Z+2, r25	; 0x02
   17c02:	81 83       	std	Z+1, r24	; 0x01
   17c04:	8c e4       	ldi	r24, 0x4C	; 76
   17c06:	99 e1       	ldi	r25, 0x19	; 25
   17c08:	94 83       	std	Z+4, r25	; 0x04
   17c0a:	83 83       	std	Z+3, r24	; 0x03
   17c0c:	0e 94 51 f1 	call	0x1e2a2	; 0x1e2a2 <sprintf_P>

			if((pTaskInfo->pBuf->sampleC3 == TRUE) && (pTaskInfo->pBuf->powerOn == TRUE))
   17c10:	d7 01       	movw	r26, r14
   17c12:	14 96       	adiw	r26, 0x04	; 4
   17c14:	ed 91       	ld	r30, X+
   17c16:	fc 91       	ld	r31, X
   17c18:	15 97       	sbiw	r26, 0x05	; 5
   17c1a:	ec 5f       	subi	r30, 0xFC	; 252
   17c1c:	fa 4f       	sbci	r31, 0xFA	; 250
   17c1e:	0f 90       	pop	r0
   17c20:	0f 90       	pop	r0
   17c22:	0f 90       	pop	r0
   17c24:	0f 90       	pop	r0
   17c26:	80 81       	ld	r24, Z
   17c28:	e4 50       	subi	r30, 0x04	; 4
   17c2a:	f5 40       	sbci	r31, 0x05	; 5
   17c2c:	8f 3f       	cpi	r24, 0xFF	; 255
   17c2e:	61 f4       	brne	.+24     	; 0x17c48 <TurnerC3_ParseCommand+0x204>
   17c30:	eb 5f       	subi	r30, 0xFB	; 251
   17c32:	fa 4f       	sbci	r31, 0xFA	; 250
   17c34:	80 81       	ld	r24, Z
   17c36:	e5 50       	subi	r30, 0x05	; 5
   17c38:	f5 40       	sbci	r31, 0x05	; 5
   17c3a:	8f 3f       	cpi	r24, 0xFF	; 255
   17c3c:	29 f4       	brne	.+10     	; 0x17c48 <TurnerC3_ParseCommand+0x204>
			{
				retval = TurnerC3_StopCurrentData(pTaskInfo);
   17c3e:	c7 01       	movw	r24, r14
   17c40:	0e 94 28 b6 	call	0x16c50	; 0x16c50 <TurnerC3_StopCurrentData>
   17c44:	18 2f       	mov	r17, r24
   17c46:	fa c1       	rjmp	.+1012   	; 0x1803c <TurnerC3_ParseCommand+0x5f8>
			}
			else
			{
				retval = TURNERC3_SAMPLING_OFF;
				if(pTaskInfo->pBuf->powerOn != TRUE)
   17c48:	eb 5f       	subi	r30, 0xFB	; 251
   17c4a:	fa 4f       	sbci	r31, 0xFA	; 250
   17c4c:	80 81       	ld	r24, Z
   17c4e:	8f 3f       	cpi	r24, 0xFF	; 255
   17c50:	09 f0       	breq	.+2      	; 0x17c54 <TurnerC3_ParseCommand+0x210>
   17c52:	37 c2       	rjmp	.+1134   	; 0x180c2 <TurnerC3_ParseCommand+0x67e>
   17c54:	6e c2       	rjmp	.+1244   	; 0x18132 <TurnerC3_ParseCommand+0x6ee>
		
		case 'c':
		case 'C':
			// CFG
			
			sprintf_P(dbgMsg, PSTR("CFG")); SEND_MSG;
   17c56:	00 d0       	rcall	.+0      	; 0x17c58 <TurnerC3_ParseCommand+0x214>
   17c58:	0f 92       	push	r0
   17c5a:	83 ef       	ldi	r24, 0xF3	; 243
   17c5c:	98 e1       	ldi	r25, 0x18	; 24
   17c5e:	ed b7       	in	r30, 0x3d	; 61
   17c60:	fe b7       	in	r31, 0x3e	; 62
   17c62:	92 83       	std	Z+2, r25	; 0x02
   17c64:	81 83       	std	Z+1, r24	; 0x01
   17c66:	88 e4       	ldi	r24, 0x48	; 72
   17c68:	99 e1       	ldi	r25, 0x19	; 25
   17c6a:	94 83       	std	Z+4, r25	; 0x04
   17c6c:	83 83       	std	Z+3, r24	; 0x03
   17c6e:	0e 94 51 f1 	call	0x1e2a2	; 0x1e2a2 <sprintf_P>

			if((pTaskInfo->pBuf->sampleC3 == FALSE) && (pTaskInfo->pBuf->powerOn == TRUE))
   17c72:	d7 01       	movw	r26, r14
   17c74:	14 96       	adiw	r26, 0x04	; 4
   17c76:	ed 91       	ld	r30, X+
   17c78:	fc 91       	ld	r31, X
   17c7a:	15 97       	sbiw	r26, 0x05	; 5
   17c7c:	ec 5f       	subi	r30, 0xFC	; 252
   17c7e:	fa 4f       	sbci	r31, 0xFA	; 250
   17c80:	0f 90       	pop	r0
   17c82:	0f 90       	pop	r0
   17c84:	0f 90       	pop	r0
   17c86:	0f 90       	pop	r0
   17c88:	80 81       	ld	r24, Z
   17c8a:	e4 50       	subi	r30, 0x04	; 4
   17c8c:	f5 40       	sbci	r31, 0x05	; 5
   17c8e:	88 23       	and	r24, r24
   17c90:	09 f0       	breq	.+2      	; 0x17c94 <TurnerC3_ParseCommand+0x250>
   17c92:	58 c1       	rjmp	.+688    	; 0x17f44 <TurnerC3_ParseCommand+0x500>
   17c94:	eb 5f       	subi	r30, 0xFB	; 251
   17c96:	fa 4f       	sbci	r31, 0xFA	; 250
   17c98:	80 81       	ld	r24, Z
   17c9a:	e5 50       	subi	r30, 0x05	; 5
   17c9c:	f5 40       	sbci	r31, 0x05	; 5
   17c9e:	8f 3f       	cpi	r24, 0xFF	; 255
   17ca0:	09 f0       	breq	.+2      	; 0x17ca4 <TurnerC3_ParseCommand+0x260>
   17ca2:	50 c1       	rjmp	.+672    	; 0x17f44 <TurnerC3_ParseCommand+0x500>
			{
				memset(pTaskInfo->pBuf->tokenSeparatorList, 0, MAX_TOKEN_SEPARATORS);
   17ca4:	cf 01       	movw	r24, r30
   17ca6:	87 5b       	subi	r24, 0xB7	; 183
   17ca8:	98 4f       	sbci	r25, 0xF8	; 248
   17caa:	fc 01       	movw	r30, r24
   17cac:	84 e1       	ldi	r24, 0x14	; 20
   17cae:	df 01       	movw	r26, r30
   17cb0:	1d 92       	st	X+, r1
   17cb2:	8a 95       	dec	r24
   17cb4:	e9 f7       	brne	.-6      	; 0x17cb0 <TurnerC3_ParseCommand+0x26c>
				strcat_P(pTaskInfo->pBuf->tokenSeparatorList, tokenListConsole);
   17cb6:	f7 01       	movw	r30, r14
   17cb8:	84 81       	ldd	r24, Z+4	; 0x04
   17cba:	95 81       	ldd	r25, Z+5	; 0x05
   17cbc:	87 5b       	subi	r24, 0xB7	; 183
   17cbe:	98 4f       	sbci	r25, 0xF8	; 248
   17cc0:	68 e3       	ldi	r22, 0x38	; 56
   17cc2:	72 e0       	ldi	r23, 0x02	; 2
   17cc4:	0e 94 b4 ef 	call	0x1df68	; 0x1df68 <strcat_P>

				char* subCommand = ThreadSafeStrTok(&myCommand, pTaskInfo->pBuf->tokenSeparatorList);
   17cc8:	d7 01       	movw	r26, r14
   17cca:	14 96       	adiw	r26, 0x04	; 4
   17ccc:	6d 91       	ld	r22, X+
   17cce:	7c 91       	ld	r23, X
   17cd0:	15 97       	sbiw	r26, 0x05	; 5
   17cd2:	67 5b       	subi	r22, 0xB7	; 183
   17cd4:	78 4f       	sbci	r23, 0xF8	; 248
   17cd6:	ce 01       	movw	r24, r28
   17cd8:	03 96       	adiw	r24, 0x03	; 3
   17cda:	0e 94 67 a9 	call	0x152ce	; 0x152ce <ThreadSafeStrTok>
   17cde:	8c 01       	movw	r16, r24
				if(strncasecmp_P(subCommand, PSTR("SET"), 3) == 0)
   17ce0:	64 e4       	ldi	r22, 0x44	; 68
   17ce2:	79 e1       	ldi	r23, 0x19	; 25
   17ce4:	43 e0       	ldi	r20, 0x03	; 3
   17ce6:	50 e0       	ldi	r21, 0x00	; 0
   17ce8:	0e 94 cf ef 	call	0x1df9e	; 0x1df9e <strncasecmp_P>
   17cec:	89 2b       	or	r24, r25
   17cee:	21 f4       	brne	.+8      	; 0x17cf8 <TurnerC3_ParseCommand+0x2b4>
				{
					retval = TurnerC3_SetConfiguration(pTaskInfo, myCommand);
   17cf0:	6b 81       	ldd	r22, Y+3	; 0x03
   17cf2:	7c 81       	ldd	r23, Y+4	; 0x04
   17cf4:	c7 01       	movw	r24, r14
   17cf6:	23 c1       	rjmp	.+582    	; 0x17f3e <TurnerC3_ParseCommand+0x4fa>
				}
				else if(strncasecmp_P(subCommand, PSTR("GET"), 3) == 0)
   17cf8:	c8 01       	movw	r24, r16
   17cfa:	60 e4       	ldi	r22, 0x40	; 64
   17cfc:	79 e1       	ldi	r23, 0x19	; 25
   17cfe:	43 e0       	ldi	r20, 0x03	; 3
   17d00:	50 e0       	ldi	r21, 0x00	; 0
   17d02:	0e 94 cf ef 	call	0x1df9e	; 0x1df9e <strncasecmp_P>
   17d06:	89 2b       	or	r24, r25
   17d08:	09 f0       	breq	.+2      	; 0x17d0c <TurnerC3_ParseCommand+0x2c8>
   17d0a:	0f c3       	rjmp	.+1566   	; 0x1832a <TurnerC3_ParseCommand+0x8e6>
				{
					retval = TurnerC3_GetConfiguration(pTaskInfo, TRUE);
   17d0c:	c7 01       	movw	r24, r14
   17d0e:	6f ef       	ldi	r22, 0xFF	; 255
   17d10:	0e 94 25 b9 	call	0x1724a	; 0x1724a <TurnerC3_GetConfiguration>
   17d14:	97 cf       	rjmp	.-210    	; 0x17c44 <TurnerC3_ParseCommand+0x200>

		case 'a':
		case 'A':
			// CAL

			sprintf_P(dbgMsg, PSTR("CAL")); SEND_MSG;
   17d16:	00 d0       	rcall	.+0      	; 0x17d18 <TurnerC3_ParseCommand+0x2d4>
   17d18:	0f 92       	push	r0
   17d1a:	83 ef       	ldi	r24, 0xF3	; 243
   17d1c:	98 e1       	ldi	r25, 0x18	; 24
   17d1e:	ed b7       	in	r30, 0x3d	; 61
   17d20:	fe b7       	in	r31, 0x3e	; 62
   17d22:	92 83       	std	Z+2, r25	; 0x02
   17d24:	81 83       	std	Z+1, r24	; 0x01
   17d26:	8c e3       	ldi	r24, 0x3C	; 60
   17d28:	99 e1       	ldi	r25, 0x19	; 25
   17d2a:	94 83       	std	Z+4, r25	; 0x04
   17d2c:	83 83       	std	Z+3, r24	; 0x03
   17d2e:	0e 94 51 f1 	call	0x1e2a2	; 0x1e2a2 <sprintf_P>
   17d32:	0f 90       	pop	r0
   17d34:	0f 90       	pop	r0
   17d36:	0f 90       	pop	r0
   17d38:	0f 90       	pop	r0
   17d3a:	af c2       	rjmp	.+1374   	; 0x1829a <TurnerC3_ParseCommand+0x856>

		case 'm':
		case 'M':
			// TIM

			sprintf_P(dbgMsg, PSTR("TIM")); SEND_MSG;
   17d3c:	00 d0       	rcall	.+0      	; 0x17d3e <TurnerC3_ParseCommand+0x2fa>
   17d3e:	0f 92       	push	r0
   17d40:	83 ef       	ldi	r24, 0xF3	; 243
   17d42:	98 e1       	ldi	r25, 0x18	; 24
   17d44:	ad b7       	in	r26, 0x3d	; 61
   17d46:	be b7       	in	r27, 0x3e	; 62
   17d48:	12 96       	adiw	r26, 0x02	; 2
   17d4a:	9c 93       	st	X, r25
   17d4c:	8e 93       	st	-X, r24
   17d4e:	11 97       	sbiw	r26, 0x01	; 1
   17d50:	88 e3       	ldi	r24, 0x38	; 56
   17d52:	99 e1       	ldi	r25, 0x19	; 25
   17d54:	14 96       	adiw	r26, 0x04	; 4
   17d56:	9c 93       	st	X, r25
   17d58:	8e 93       	st	-X, r24
   17d5a:	13 97       	sbiw	r26, 0x03	; 3
   17d5c:	0e 94 51 f1 	call	0x1e2a2	; 0x1e2a2 <sprintf_P>

			if((pTaskInfo->pBuf->sampleC3 == FALSE) && (pTaskInfo->pBuf->powerOn == TRUE))
   17d60:	d7 01       	movw	r26, r14
   17d62:	14 96       	adiw	r26, 0x04	; 4
   17d64:	ed 91       	ld	r30, X+
   17d66:	fc 91       	ld	r31, X
   17d68:	15 97       	sbiw	r26, 0x05	; 5
   17d6a:	ec 5f       	subi	r30, 0xFC	; 252
   17d6c:	fa 4f       	sbci	r31, 0xFA	; 250
   17d6e:	0f 90       	pop	r0
   17d70:	0f 90       	pop	r0
   17d72:	0f 90       	pop	r0
   17d74:	0f 90       	pop	r0
   17d76:	80 81       	ld	r24, Z
   17d78:	e4 50       	subi	r30, 0x04	; 4
   17d7a:	f5 40       	sbci	r31, 0x05	; 5
   17d7c:	88 23       	and	r24, r24
   17d7e:	09 f0       	breq	.+2      	; 0x17d82 <TurnerC3_ParseCommand+0x33e>
   17d80:	e1 c0       	rjmp	.+450    	; 0x17f44 <TurnerC3_ParseCommand+0x500>
   17d82:	eb 5f       	subi	r30, 0xFB	; 251
   17d84:	fa 4f       	sbci	r31, 0xFA	; 250
   17d86:	80 81       	ld	r24, Z
   17d88:	e5 50       	subi	r30, 0x05	; 5
   17d8a:	f5 40       	sbci	r31, 0x05	; 5
   17d8c:	8f 3f       	cpi	r24, 0xFF	; 255
   17d8e:	09 f0       	breq	.+2      	; 0x17d92 <TurnerC3_ParseCommand+0x34e>
   17d90:	d9 c0       	rjmp	.+434    	; 0x17f44 <TurnerC3_ParseCommand+0x500>
			{				
				memset(pTaskInfo->pBuf->tokenSeparatorList, 0, MAX_TOKEN_SEPARATORS);
   17d92:	cf 01       	movw	r24, r30
   17d94:	87 5b       	subi	r24, 0xB7	; 183
   17d96:	98 4f       	sbci	r25, 0xF8	; 248
   17d98:	fc 01       	movw	r30, r24
   17d9a:	84 e1       	ldi	r24, 0x14	; 20
   17d9c:	df 01       	movw	r26, r30
   17d9e:	1d 92       	st	X+, r1
   17da0:	8a 95       	dec	r24
   17da2:	e9 f7       	brne	.-6      	; 0x17d9e <TurnerC3_ParseCommand+0x35a>
				strcat_P(pTaskInfo->pBuf->tokenSeparatorList, tokenListConsole);
   17da4:	f7 01       	movw	r30, r14
   17da6:	84 81       	ldd	r24, Z+4	; 0x04
   17da8:	95 81       	ldd	r25, Z+5	; 0x05
   17daa:	87 5b       	subi	r24, 0xB7	; 183
   17dac:	98 4f       	sbci	r25, 0xF8	; 248
   17dae:	68 e3       	ldi	r22, 0x38	; 56
   17db0:	72 e0       	ldi	r23, 0x02	; 2
   17db2:	0e 94 b4 ef 	call	0x1df68	; 0x1df68 <strcat_P>

				char* subCommand = ThreadSafeStrTok(&myCommand, pTaskInfo->pBuf->tokenSeparatorList);
   17db6:	d7 01       	movw	r26, r14
   17db8:	14 96       	adiw	r26, 0x04	; 4
   17dba:	6d 91       	ld	r22, X+
   17dbc:	7c 91       	ld	r23, X
   17dbe:	15 97       	sbiw	r26, 0x05	; 5
   17dc0:	67 5b       	subi	r22, 0xB7	; 183
   17dc2:	78 4f       	sbci	r23, 0xF8	; 248
   17dc4:	ce 01       	movw	r24, r28
   17dc6:	03 96       	adiw	r24, 0x03	; 3
   17dc8:	0e 94 67 a9 	call	0x152ce	; 0x152ce <ThreadSafeStrTok>
   17dcc:	8c 01       	movw	r16, r24
				if(strncasecmp_P(subCommand, PSTR("SET"), 3) == 0)
   17dce:	64 e3       	ldi	r22, 0x34	; 52
   17dd0:	79 e1       	ldi	r23, 0x19	; 25
   17dd2:	43 e0       	ldi	r20, 0x03	; 3
   17dd4:	50 e0       	ldi	r21, 0x00	; 0
   17dd6:	0e 94 cf ef 	call	0x1df9e	; 0x1df9e <strncasecmp_P>
   17dda:	89 2b       	or	r24, r25
   17ddc:	21 f4       	brne	.+8      	; 0x17de6 <TurnerC3_ParseCommand+0x3a2>
				{
					retval = TurnerC3_SetDateTime(pTaskInfo);
   17dde:	c7 01       	movw	r24, r14
   17de0:	0e 94 e4 b4 	call	0x169c8	; 0x169c8 <TurnerC3_SetDateTime>
   17de4:	2f cf       	rjmp	.-418    	; 0x17c44 <TurnerC3_ParseCommand+0x200>
				}
				else if(strncasecmp_P(subCommand, PSTR("GET"), 3) == 0)
   17de6:	c8 01       	movw	r24, r16
   17de8:	60 e3       	ldi	r22, 0x30	; 48
   17dea:	79 e1       	ldi	r23, 0x19	; 25
   17dec:	43 e0       	ldi	r20, 0x03	; 3
   17dee:	50 e0       	ldi	r21, 0x00	; 0
   17df0:	0e 94 cf ef 	call	0x1df9e	; 0x1df9e <strncasecmp_P>
   17df4:	89 2b       	or	r24, r25
   17df6:	09 f0       	breq	.+2      	; 0x17dfa <TurnerC3_ParseCommand+0x3b6>
   17df8:	98 c2       	rjmp	.+1328   	; 0x1832a <TurnerC3_ParseCommand+0x8e6>
				{
					retval = TurnerC3_GetDateTime(pTaskInfo);
   17dfa:	c7 01       	movw	r24, r14
   17dfc:	0e 94 ae b5 	call	0x16b5c	; 0x16b5c <TurnerC3_GetDateTime>
   17e00:	21 cf       	rjmp	.-446    	; 0x17c44 <TurnerC3_ParseCommand+0x200>

		case 'w':
		case 'W':
			// WIP

			sprintf_P(dbgMsg, PSTR("WIP")); SEND_MSG;
   17e02:	00 d0       	rcall	.+0      	; 0x17e04 <TurnerC3_ParseCommand+0x3c0>
   17e04:	0f 92       	push	r0
   17e06:	83 ef       	ldi	r24, 0xF3	; 243
   17e08:	98 e1       	ldi	r25, 0x18	; 24
   17e0a:	ed b7       	in	r30, 0x3d	; 61
   17e0c:	fe b7       	in	r31, 0x3e	; 62
   17e0e:	92 83       	std	Z+2, r25	; 0x02
   17e10:	81 83       	std	Z+1, r24	; 0x01
   17e12:	8c e2       	ldi	r24, 0x2C	; 44
   17e14:	99 e1       	ldi	r25, 0x19	; 25
   17e16:	94 83       	std	Z+4, r25	; 0x04
   17e18:	83 83       	std	Z+3, r24	; 0x03
   17e1a:	0e 94 51 f1 	call	0x1e2a2	; 0x1e2a2 <sprintf_P>
			

			uint8_t revolutions = 0;

			if((pTaskInfo->pBuf->sampleC3 == FALSE) && (pTaskInfo->pBuf->powerOn == TRUE))
   17e1e:	d7 01       	movw	r26, r14
   17e20:	14 96       	adiw	r26, 0x04	; 4
   17e22:	ed 91       	ld	r30, X+
   17e24:	fc 91       	ld	r31, X
   17e26:	15 97       	sbiw	r26, 0x05	; 5
   17e28:	ec 5f       	subi	r30, 0xFC	; 252
   17e2a:	fa 4f       	sbci	r31, 0xFA	; 250
   17e2c:	0f 90       	pop	r0
   17e2e:	0f 90       	pop	r0
   17e30:	0f 90       	pop	r0
   17e32:	0f 90       	pop	r0
   17e34:	80 81       	ld	r24, Z
   17e36:	e4 50       	subi	r30, 0x04	; 4
   17e38:	f5 40       	sbci	r31, 0x05	; 5
   17e3a:	88 23       	and	r24, r24
   17e3c:	09 f0       	breq	.+2      	; 0x17e40 <TurnerC3_ParseCommand+0x3fc>
   17e3e:	82 c0       	rjmp	.+260    	; 0x17f44 <TurnerC3_ParseCommand+0x500>
   17e40:	eb 5f       	subi	r30, 0xFB	; 251
   17e42:	fa 4f       	sbci	r31, 0xFA	; 250
   17e44:	80 81       	ld	r24, Z
   17e46:	e5 50       	subi	r30, 0x05	; 5
   17e48:	f5 40       	sbci	r31, 0x05	; 5
   17e4a:	8f 3f       	cpi	r24, 0xFF	; 255
   17e4c:	09 f0       	breq	.+2      	; 0x17e50 <TurnerC3_ParseCommand+0x40c>
   17e4e:	7a c0       	rjmp	.+244    	; 0x17f44 <TurnerC3_ParseCommand+0x500>
			{
				memset(pTaskInfo->pBuf->tokenSeparatorList, 0, MAX_TOKEN_SEPARATORS);
   17e50:	cf 01       	movw	r24, r30
   17e52:	87 5b       	subi	r24, 0xB7	; 183
   17e54:	98 4f       	sbci	r25, 0xF8	; 248
   17e56:	fc 01       	movw	r30, r24
   17e58:	84 e1       	ldi	r24, 0x14	; 20
   17e5a:	df 01       	movw	r26, r30
   17e5c:	1d 92       	st	X+, r1
   17e5e:	8a 95       	dec	r24
   17e60:	e9 f7       	brne	.-6      	; 0x17e5c <TurnerC3_ParseCommand+0x418>
				strcat_P(pTaskInfo->pBuf->tokenSeparatorList, tokenListConsole);
   17e62:	f7 01       	movw	r30, r14
   17e64:	84 81       	ldd	r24, Z+4	; 0x04
   17e66:	95 81       	ldd	r25, Z+5	; 0x05
   17e68:	87 5b       	subi	r24, 0xB7	; 183
   17e6a:	98 4f       	sbci	r25, 0xF8	; 248
   17e6c:	68 e3       	ldi	r22, 0x38	; 56
   17e6e:	72 e0       	ldi	r23, 0x02	; 2
   17e70:	0e 94 b4 ef 	call	0x1df68	; 0x1df68 <strcat_P>

				char* subCommand = ThreadSafeStrTok(&myCommand, pTaskInfo->pBuf->tokenSeparatorList);
   17e74:	d7 01       	movw	r26, r14
   17e76:	14 96       	adiw	r26, 0x04	; 4
   17e78:	6d 91       	ld	r22, X+
   17e7a:	7c 91       	ld	r23, X
   17e7c:	15 97       	sbiw	r26, 0x05	; 5
   17e7e:	67 5b       	subi	r22, 0xB7	; 183
   17e80:	78 4f       	sbci	r23, 0xF8	; 248
   17e82:	ce 01       	movw	r24, r28
   17e84:	03 96       	adiw	r24, 0x03	; 3
   17e86:	0e 94 67 a9 	call	0x152ce	; 0x152ce <ThreadSafeStrTok>
				revolutions = atoi(subCommand);
   17e8a:	0e 94 59 ef 	call	0x1deb2	; 0x1deb2 <atoi>
				if(revolutions > 0)
   17e8e:	88 23       	and	r24, r24
   17e90:	09 f4       	brne	.+2      	; 0x17e94 <TurnerC3_ParseCommand+0x450>
   17e92:	4b c2       	rjmp	.+1174   	; 0x1832a <TurnerC3_ParseCommand+0x8e6>
				{
					retval = TurnerC3_GetConfiguration(pTaskInfo, FALSE);
   17e94:	c7 01       	movw	r24, r14
   17e96:	60 e0       	ldi	r22, 0x00	; 0
   17e98:	0e 94 25 b9 	call	0x1724a	; 0x1724a <TurnerC3_GetConfiguration>
   17e9c:	18 2f       	mov	r17, r24

					memcpy(&(pTaskInfo->pBuf->currentConfiguration), &(pTaskInfo->pBuf->bufferRx[2]), 22);
   17e9e:	f7 01       	movw	r30, r14
   17ea0:	84 81       	ldd	r24, Z+4	; 0x04
   17ea2:	95 81       	ldd	r25, Z+5	; 0x05
   17ea4:	dc 01       	movw	r26, r24
   17ea6:	ac 56       	subi	r26, 0x6C	; 108
   17ea8:	ba 4f       	sbci	r27, 0xFA	; 250
   17eaa:	fc 01       	movw	r30, r24
   17eac:	ee 5f       	subi	r30, 0xFE	; 254
   17eae:	fe 4f       	sbci	r31, 0xFE	; 254
   17eb0:	86 e1       	ldi	r24, 0x16	; 22
   17eb2:	01 90       	ld	r0, Z+
   17eb4:	0d 92       	st	X+, r0
   17eb6:	81 50       	subi	r24, 0x01	; 1
   17eb8:	e1 f7       	brne	.-8      	; 0x17eb2 <TurnerC3_ParseCommand+0x46e>
				
					if(retval == SUCCESS)
   17eba:	1f 3f       	cpi	r17, 0xFF	; 255
   17ebc:	09 f0       	breq	.+2      	; 0x17ec0 <TurnerC3_ParseCommand+0x47c>
   17ebe:	be c0       	rjmp	.+380    	; 0x1803c <TurnerC3_ParseCommand+0x5f8>
					{
						//Set new configuration for wiper
						retval = TurnerC3_StartCurrentData(pTaskInfo);
   17ec0:	c7 01       	movw	r24, r14
   17ec2:	0e 94 50 b6 	call	0x16ca0	; 0x16ca0 <TurnerC3_StartCurrentData>
						if(retval == SUCCESS)
   17ec6:	8f 3f       	cpi	r24, 0xFF	; 255
   17ec8:	f9 f4       	brne	.+62     	; 0x17f08 <TurnerC3_ParseCommand+0x4c4>
						{
							uint16_t len = 0;
   17eca:	1a 82       	std	Y+2, r1	; 0x02
   17ecc:	19 82       	std	Y+1, r1	; 0x01
							retval = FAIL;
							while(retval != SUCCESS)	//And we need some time out here too
							{
								retval = TurnerC3_Rx_Len(pTaskInfo, pTaskInfo->pBuf->bufferRx, &len, 24, QUARTER_SECOND);	//1/4 second timeout on getting current data back
   17ece:	6e 01       	movw	r12, r28
   17ed0:	08 94       	sec
   17ed2:	c1 1c       	adc	r12, r1
   17ed4:	d1 1c       	adc	r13, r1
   17ed6:	d7 01       	movw	r26, r14
   17ed8:	14 96       	adiw	r26, 0x04	; 4
   17eda:	6d 91       	ld	r22, X+
   17edc:	7c 91       	ld	r23, X
   17ede:	15 97       	sbiw	r26, 0x05	; 5
   17ee0:	60 50       	subi	r22, 0x00	; 0
   17ee2:	7f 4f       	sbci	r23, 0xFF	; 255
   17ee4:	c7 01       	movw	r24, r14
   17ee6:	a6 01       	movw	r20, r12
   17ee8:	28 e1       	ldi	r18, 0x18	; 24
   17eea:	30 e0       	ldi	r19, 0x00	; 0
   17eec:	00 e2       	ldi	r16, 0x20	; 32
   17eee:	10 e0       	ldi	r17, 0x00	; 0
   17ef0:	0e 94 0f a9 	call	0x1521e	; 0x1521e <TurnerC3_Rx_Len>
						retval = TurnerC3_StartCurrentData(pTaskInfo);
						if(retval == SUCCESS)
						{
							uint16_t len = 0;
							retval = FAIL;
							while(retval != SUCCESS)	//And we need some time out here too
   17ef4:	8f 3f       	cpi	r24, 0xFF	; 255
   17ef6:	79 f7       	brne	.-34     	; 0x17ed6 <TurnerC3_ParseCommand+0x492>
							{
								retval = TurnerC3_Rx_Len(pTaskInfo, pTaskInfo->pBuf->bufferRx, &len, 24, QUARTER_SECOND);	//1/4 second timeout on getting current data back
							}
							pTaskInfo->pBuf->sampleC3 = FALSE;
   17ef8:	d7 01       	movw	r26, r14
   17efa:	14 96       	adiw	r26, 0x04	; 4
   17efc:	ed 91       	ld	r30, X+
   17efe:	fc 91       	ld	r31, X
   17f00:	15 97       	sbiw	r26, 0x05	; 5
   17f02:	ec 5f       	subi	r30, 0xFC	; 252
   17f04:	fa 4f       	sbci	r31, 0xFA	; 250
   17f06:	10 82       	st	Z, r1
						}
						memset(pTaskInfo->pBuf->bufferTx, 0, 30);
   17f08:	d7 01       	movw	r26, r14
   17f0a:	14 96       	adiw	r26, 0x04	; 4
   17f0c:	ec 91       	ld	r30, X
   17f0e:	14 97       	sbiw	r26, 0x04	; 4
   17f10:	15 96       	adiw	r26, 0x05	; 5
   17f12:	fc 91       	ld	r31, X
   17f14:	8e e1       	ldi	r24, 0x1E	; 30
   17f16:	df 01       	movw	r26, r30
   17f18:	1d 92       	st	X+, r1
   17f1a:	8a 95       	dec	r24
   17f1c:	e9 f7       	brne	.-6      	; 0x17f18 <TurnerC3_ParseCommand+0x4d4>
						memcpy(pTaskInfo->pBuf->bufferTx, pTaskInfo->pBuf->bufferRx, 22);
   17f1e:	f7 01       	movw	r30, r14
   17f20:	24 81       	ldd	r18, Z+4	; 0x04
   17f22:	35 81       	ldd	r19, Z+5	; 0x05
   17f24:	c9 01       	movw	r24, r18
   17f26:	fc 01       	movw	r30, r24
   17f28:	dc 01       	movw	r26, r24
   17f2a:	a0 50       	subi	r26, 0x00	; 0
   17f2c:	bf 4f       	sbci	r27, 0xFF	; 255
   17f2e:	86 e1       	ldi	r24, 0x16	; 22
   17f30:	0d 90       	ld	r0, X+
   17f32:	01 92       	st	Z+, r0
   17f34:	81 50       	subi	r24, 0x01	; 1
   17f36:	e1 f7       	brne	.-8      	; 0x17f30 <TurnerC3_ParseCommand+0x4ec>
						retval = TurnerC3_SetConfiguration(pTaskInfo, (char*)NULL);
   17f38:	c7 01       	movw	r24, r14
   17f3a:	60 e0       	ldi	r22, 0x00	; 0
   17f3c:	70 e0       	ldi	r23, 0x00	; 0
   17f3e:	0e 94 4c b7 	call	0x16e98	; 0x16e98 <TurnerC3_SetConfiguration>
   17f42:	80 ce       	rjmp	.-768    	; 0x17c44 <TurnerC3_ParseCommand+0x200>
				}				
			}
			else
			{
				retval = TURNERC3_SAMPLING_ON;
				if(pTaskInfo->pBuf->powerOn != TRUE)
   17f44:	eb 5f       	subi	r30, 0xFB	; 251
   17f46:	fa 4f       	sbci	r31, 0xFA	; 250
   17f48:	80 81       	ld	r24, Z
   17f4a:	8f 3f       	cpi	r24, 0xFF	; 255
   17f4c:	09 f0       	breq	.+2      	; 0x17f50 <TurnerC3_ParseCommand+0x50c>
   17f4e:	b9 c0       	rjmp	.+370    	; 0x180c2 <TurnerC3_ParseCommand+0x67e>
   17f50:	0c c1       	rjmp	.+536    	; 0x1816a <TurnerC3_ParseCommand+0x726>

		case 'i':
		case 'I':
			// ID

			sprintf_P(dbgMsg, PSTR("ID")); SEND_MSG;
   17f52:	00 d0       	rcall	.+0      	; 0x17f54 <TurnerC3_ParseCommand+0x510>
   17f54:	0f 92       	push	r0
   17f56:	53 ef       	ldi	r21, 0xF3	; 243
   17f58:	c5 2e       	mov	r12, r21
   17f5a:	58 e1       	ldi	r21, 0x18	; 24
   17f5c:	d5 2e       	mov	r13, r21
   17f5e:	ad b7       	in	r26, 0x3d	; 61
   17f60:	be b7       	in	r27, 0x3e	; 62
   17f62:	12 96       	adiw	r26, 0x02	; 2
   17f64:	dc 92       	st	X, r13
   17f66:	ce 92       	st	-X, r12
   17f68:	11 97       	sbiw	r26, 0x01	; 1
   17f6a:	89 e2       	ldi	r24, 0x29	; 41
   17f6c:	99 e1       	ldi	r25, 0x19	; 25
   17f6e:	14 96       	adiw	r26, 0x04	; 4
   17f70:	9c 93       	st	X, r25
   17f72:	8e 93       	st	-X, r24
   17f74:	13 97       	sbiw	r26, 0x03	; 3
   17f76:	0e 94 51 f1 	call	0x1e2a2	; 0x1e2a2 <sprintf_P>

			if(pTaskInfo->pBuf->powerOn == TRUE)
   17f7a:	d7 01       	movw	r26, r14
   17f7c:	14 96       	adiw	r26, 0x04	; 4
   17f7e:	ed 91       	ld	r30, X+
   17f80:	fc 91       	ld	r31, X
   17f82:	15 97       	sbiw	r26, 0x05	; 5
   17f84:	eb 5f       	subi	r30, 0xFB	; 251
   17f86:	fa 4f       	sbci	r31, 0xFA	; 250
   17f88:	0f 90       	pop	r0
   17f8a:	0f 90       	pop	r0
   17f8c:	0f 90       	pop	r0
   17f8e:	0f 90       	pop	r0
   17f90:	80 81       	ld	r24, Z
   17f92:	e5 50       	subi	r30, 0x05	; 5
   17f94:	f5 40       	sbci	r31, 0x05	; 5
   17f96:	8f 3f       	cpi	r24, 0xFF	; 255
   17f98:	09 f0       	breq	.+2      	; 0x17f9c <TurnerC3_ParseCommand+0x558>
   17f9a:	93 c0       	rjmp	.+294    	; 0x180c2 <TurnerC3_ParseCommand+0x67e>
			{
				memset(pTaskInfo->pBuf->tokenSeparatorList, 0, MAX_TOKEN_SEPARATORS);
   17f9c:	cf 01       	movw	r24, r30
   17f9e:	87 5b       	subi	r24, 0xB7	; 183
   17fa0:	98 4f       	sbci	r25, 0xF8	; 248
   17fa2:	fc 01       	movw	r30, r24
   17fa4:	84 e1       	ldi	r24, 0x14	; 20
   17fa6:	df 01       	movw	r26, r30
   17fa8:	1d 92       	st	X+, r1
   17faa:	8a 95       	dec	r24
   17fac:	e9 f7       	brne	.-6      	; 0x17fa8 <TurnerC3_ParseCommand+0x564>
				strcat_P(pTaskInfo->pBuf->tokenSeparatorList, tokenListConsole);
   17fae:	f7 01       	movw	r30, r14
   17fb0:	84 81       	ldd	r24, Z+4	; 0x04
   17fb2:	95 81       	ldd	r25, Z+5	; 0x05
   17fb4:	87 5b       	subi	r24, 0xB7	; 183
   17fb6:	98 4f       	sbci	r25, 0xF8	; 248
   17fb8:	68 e3       	ldi	r22, 0x38	; 56
   17fba:	72 e0       	ldi	r23, 0x02	; 2
   17fbc:	0e 94 b4 ef 	call	0x1df68	; 0x1df68 <strcat_P>

				char* subCommand = ThreadSafeStrTok(&myCommand, pTaskInfo->pBuf->tokenSeparatorList);
   17fc0:	d7 01       	movw	r26, r14
   17fc2:	14 96       	adiw	r26, 0x04	; 4
   17fc4:	6d 91       	ld	r22, X+
   17fc6:	7c 91       	ld	r23, X
   17fc8:	15 97       	sbiw	r26, 0x05	; 5
   17fca:	67 5b       	subi	r22, 0xB7	; 183
   17fcc:	78 4f       	sbci	r23, 0xF8	; 248
   17fce:	ce 01       	movw	r24, r28
   17fd0:	03 96       	adiw	r24, 0x03	; 3
   17fd2:	0e 94 67 a9 	call	0x152ce	; 0x152ce <ThreadSafeStrTok>
   17fd6:	8c 01       	movw	r16, r24
				if(strncasecmp_P(subCommand, PSTR("SET"), 3) == 0)
   17fd8:	65 e2       	ldi	r22, 0x25	; 37
   17fda:	79 e1       	ldi	r23, 0x19	; 25
   17fdc:	43 e0       	ldi	r20, 0x03	; 3
   17fde:	50 e0       	ldi	r21, 0x00	; 0
   17fe0:	0e 94 cf ef 	call	0x1df9e	; 0x1df9e <strncasecmp_P>
   17fe4:	89 2b       	or	r24, r25
   17fe6:	09 f4       	brne	.+2      	; 0x17fea <TurnerC3_ParseCommand+0x5a6>
   17fe8:	58 c1       	rjmp	.+688    	; 0x1829a <TurnerC3_ParseCommand+0x856>
				{
					retval = TURNERC3_UNSUPPORTED_CMD;
				}
				else if(strncasecmp_P(subCommand, PSTR("GET"), 3) == 0)
   17fea:	c8 01       	movw	r24, r16
   17fec:	61 e2       	ldi	r22, 0x21	; 33
   17fee:	79 e1       	ldi	r23, 0x19	; 25
   17ff0:	43 e0       	ldi	r20, 0x03	; 3
   17ff2:	50 e0       	ldi	r21, 0x00	; 0
   17ff4:	0e 94 cf ef 	call	0x1df9e	; 0x1df9e <strncasecmp_P>
   17ff8:	89 2b       	or	r24, r25
   17ffa:	09 f0       	breq	.+2      	; 0x17ffe <TurnerC3_ParseCommand+0x5ba>
   17ffc:	96 c1       	rjmp	.+812    	; 0x1832a <TurnerC3_ParseCommand+0x8e6>
				{
					retval = TurnerC3_XmitID(pTaskInfo);
   17ffe:	c7 01       	movw	r24, r14
   18000:	0e 94 e1 ab 	call	0x157c2	; 0x157c2 <TurnerC3_XmitID>
   18004:	18 2f       	mov	r17, r24
					sprintf_P(dbgMsg, PSTR("retval = %d"), retval); SEND_MSG;
   18006:	00 d0       	rcall	.+0      	; 0x18008 <TurnerC3_ParseCommand+0x5c4>
   18008:	00 d0       	rcall	.+0      	; 0x1800a <TurnerC3_ParseCommand+0x5c6>
   1800a:	ed b7       	in	r30, 0x3d	; 61
   1800c:	fe b7       	in	r31, 0x3e	; 62
   1800e:	31 96       	adiw	r30, 0x01	; 1
   18010:	ad b7       	in	r26, 0x3d	; 61
   18012:	be b7       	in	r27, 0x3e	; 62
   18014:	12 96       	adiw	r26, 0x02	; 2
   18016:	dc 92       	st	X, r13
   18018:	ce 92       	st	-X, r12
   1801a:	11 97       	sbiw	r26, 0x01	; 1
   1801c:	85 e1       	ldi	r24, 0x15	; 21
   1801e:	99 e1       	ldi	r25, 0x19	; 25
   18020:	93 83       	std	Z+3, r25	; 0x03
   18022:	82 83       	std	Z+2, r24	; 0x02
   18024:	14 83       	std	Z+4, r17	; 0x04
   18026:	15 82       	std	Z+5, r1	; 0x05
   18028:	0e 94 51 f1 	call	0x1e2a2	; 0x1e2a2 <sprintf_P>
   1802c:	ed b7       	in	r30, 0x3d	; 61
   1802e:	fe b7       	in	r31, 0x3e	; 62
   18030:	36 96       	adiw	r30, 0x06	; 6
   18032:	0f b6       	in	r0, 0x3f	; 63
   18034:	f8 94       	cli
   18036:	fe bf       	out	0x3e, r31	; 62
   18038:	0f be       	out	0x3f, r0	; 63
   1803a:	ed bf       	out	0x3d, r30	; 61
		default:
			return FAIL;
	}


	switch (retval)
   1803c:	10 34       	cpi	r17, 0x40	; 64
   1803e:	09 f4       	brne	.+2      	; 0x18042 <TurnerC3_ParseCommand+0x5fe>
   18040:	78 c0       	rjmp	.+240    	; 0x18132 <TurnerC3_ParseCommand+0x6ee>
   18042:	11 34       	cpi	r17, 0x41	; 65
   18044:	48 f4       	brcc	.+18     	; 0x18058 <TurnerC3_ParseCommand+0x614>
   18046:	10 32       	cpi	r17, 0x20	; 32
   18048:	e1 f1       	breq	.+120    	; 0x180c2 <TurnerC3_ParseCommand+0x67e>
   1804a:	10 33       	cpi	r17, 0x30	; 48
   1804c:	09 f4       	brne	.+2      	; 0x18050 <TurnerC3_ParseCommand+0x60c>
   1804e:	55 c0       	rjmp	.+170    	; 0x180fa <TurnerC3_ParseCommand+0x6b6>
   18050:	10 31       	cpi	r17, 0x10	; 16
   18052:	09 f0       	breq	.+2      	; 0x18056 <TurnerC3_ParseCommand+0x612>
   18054:	40 c1       	rjmp	.+640    	; 0x182d6 <TurnerC3_ParseCommand+0x892>
   18056:	2d c0       	rjmp	.+90     	; 0x180b2 <TurnerC3_ParseCommand+0x66e>
   18058:	10 36       	cpi	r17, 0x60	; 96
   1805a:	09 f4       	brne	.+2      	; 0x1805e <TurnerC3_ParseCommand+0x61a>
   1805c:	a2 c0       	rjmp	.+324    	; 0x181a2 <TurnerC3_ParseCommand+0x75e>
   1805e:	11 36       	cpi	r17, 0x61	; 97
   18060:	20 f4       	brcc	.+8      	; 0x1806a <TurnerC3_ParseCommand+0x626>
   18062:	10 35       	cpi	r17, 0x50	; 80
   18064:	09 f0       	breq	.+2      	; 0x18068 <TurnerC3_ParseCommand+0x624>
   18066:	37 c1       	rjmp	.+622    	; 0x182d6 <TurnerC3_ParseCommand+0x892>
   18068:	80 c0       	rjmp	.+256    	; 0x1816a <TurnerC3_ParseCommand+0x726>
   1806a:	10 37       	cpi	r17, 0x70	; 112
   1806c:	09 f4       	brne	.+2      	; 0x18070 <TurnerC3_ParseCommand+0x62c>
   1806e:	15 c1       	rjmp	.+554    	; 0x1829a <TurnerC3_ParseCommand+0x856>
   18070:	1f 3f       	cpi	r17, 0xFF	; 255
   18072:	09 f0       	breq	.+2      	; 0x18076 <TurnerC3_ParseCommand+0x632>
   18074:	30 c1       	rjmp	.+608    	; 0x182d6 <TurnerC3_ParseCommand+0x892>
	{
		case SUCCESS:
			memcpy_P(pTaskInfo->pBuf->consoleResponse, PSTR("OK"), 2);
   18076:	d7 01       	movw	r26, r14
   18078:	14 96       	adiw	r26, 0x04	; 4
   1807a:	8d 91       	ld	r24, X+
   1807c:	9c 91       	ld	r25, X
   1807e:	15 97       	sbiw	r26, 0x05	; 5
   18080:	8a 59       	subi	r24, 0x9A	; 154
   18082:	98 4f       	sbci	r25, 0xF8	; 248
   18084:	62 e1       	ldi	r22, 0x12	; 18
   18086:	79 e1       	ldi	r23, 0x19	; 25
   18088:	42 e0       	ldi	r20, 0x02	; 2
   1808a:	50 e0       	ldi	r21, 0x00	; 0
   1808c:	0e 94 ab ef 	call	0x1df56	; 0x1df56 <memcpy_P>
			pTaskInfo->pBuf->responseInfo.status = CONSOLE_RESPONSE_OK;
   18090:	d7 01       	movw	r26, r14
   18092:	14 96       	adiw	r26, 0x04	; 4
   18094:	ed 91       	ld	r30, X+
   18096:	fc 91       	ld	r31, X
   18098:	15 97       	sbiw	r26, 0x05	; 5
   1809a:	e1 5a       	subi	r30, 0xA1	; 161
   1809c:	f8 4f       	sbci	r31, 0xF8	; 248
   1809e:	81 e0       	ldi	r24, 0x01	; 1
   180a0:	80 83       	st	Z, r24
			pTaskInfo->pBuf->responseInfo.length = 2;
   180a2:	14 96       	adiw	r26, 0x04	; 4
   180a4:	ed 91       	ld	r30, X+
   180a6:	fc 91       	ld	r31, X
   180a8:	15 97       	sbiw	r26, 0x05	; 5
   180aa:	ef 59       	subi	r30, 0x9F	; 159
   180ac:	f8 4f       	sbci	r31, 0xF8	; 248
   180ae:	82 e0       	ldi	r24, 0x02	; 2
   180b0:	f1 c0       	rjmp	.+482    	; 0x18294 <TurnerC3_ParseCommand+0x850>
			return SUCCESS;
			break;

		case TURNERC3_INVALID_PARAMETERS:
			memcpy_P(pTaskInfo->pBuf->consoleResponse, PSTR("Invalid Parameter List"), 22);
   180b2:	f7 01       	movw	r30, r14
   180b4:	84 81       	ldd	r24, Z+4	; 0x04
   180b6:	95 81       	ldd	r25, Z+5	; 0x05
   180b8:	8a 59       	subi	r24, 0x9A	; 154
   180ba:	98 4f       	sbci	r25, 0xF8	; 248
   180bc:	6b ef       	ldi	r22, 0xFB	; 251
   180be:	78 e1       	ldi	r23, 0x18	; 24
   180c0:	23 c0       	rjmp	.+70     	; 0x18108 <TurnerC3_ParseCommand+0x6c4>
			pTaskInfo->pBuf->responseInfo.length = 22;
			return SUCCESS;
			break;

		case TURNERC3_POWER_OFF:
			memcpy_P(pTaskInfo->pBuf->consoleResponse, PSTR("C3 Power is Off -- Please turn it first"), 39);
   180c2:	f7 01       	movw	r30, r14
   180c4:	84 81       	ldd	r24, Z+4	; 0x04
   180c6:	95 81       	ldd	r25, Z+5	; 0x05
   180c8:	8a 59       	subi	r24, 0x9A	; 154
   180ca:	98 4f       	sbci	r25, 0xF8	; 248
   180cc:	63 ed       	ldi	r22, 0xD3	; 211
   180ce:	78 e1       	ldi	r23, 0x18	; 24
   180d0:	47 e2       	ldi	r20, 0x27	; 39
   180d2:	50 e0       	ldi	r21, 0x00	; 0
   180d4:	0e 94 ab ef 	call	0x1df56	; 0x1df56 <memcpy_P>
			pTaskInfo->pBuf->responseInfo.status = CONSOLE_RESPONSE_OK;
   180d8:	d7 01       	movw	r26, r14
   180da:	14 96       	adiw	r26, 0x04	; 4
   180dc:	ed 91       	ld	r30, X+
   180de:	fc 91       	ld	r31, X
   180e0:	15 97       	sbiw	r26, 0x05	; 5
   180e2:	e1 5a       	subi	r30, 0xA1	; 161
   180e4:	f8 4f       	sbci	r31, 0xF8	; 248
   180e6:	81 e0       	ldi	r24, 0x01	; 1
   180e8:	80 83       	st	Z, r24
			pTaskInfo->pBuf->responseInfo.length = 39;
   180ea:	14 96       	adiw	r26, 0x04	; 4
   180ec:	ed 91       	ld	r30, X+
   180ee:	fc 91       	ld	r31, X
   180f0:	15 97       	sbiw	r26, 0x05	; 5
   180f2:	ef 59       	subi	r30, 0x9F	; 159
   180f4:	f8 4f       	sbci	r31, 0xF8	; 248
   180f6:	87 e2       	ldi	r24, 0x27	; 39
   180f8:	cd c0       	rjmp	.+410    	; 0x18294 <TurnerC3_ParseCommand+0x850>
			return SUCCESS;
			break;

		case TURNERC3_POWER_ON:
			memcpy_P(pTaskInfo->pBuf->consoleResponse, PSTR("C3 Power is already ON"), 22);
   180fa:	f7 01       	movw	r30, r14
   180fc:	84 81       	ldd	r24, Z+4	; 0x04
   180fe:	95 81       	ldd	r25, Z+5	; 0x05
   18100:	8a 59       	subi	r24, 0x9A	; 154
   18102:	98 4f       	sbci	r25, 0xF8	; 248
   18104:	6c eb       	ldi	r22, 0xBC	; 188
   18106:	78 e1       	ldi	r23, 0x18	; 24
   18108:	46 e1       	ldi	r20, 0x16	; 22
   1810a:	50 e0       	ldi	r21, 0x00	; 0
   1810c:	0e 94 ab ef 	call	0x1df56	; 0x1df56 <memcpy_P>
			pTaskInfo->pBuf->responseInfo.status = CONSOLE_RESPONSE_OK;
   18110:	d7 01       	movw	r26, r14
   18112:	14 96       	adiw	r26, 0x04	; 4
   18114:	ed 91       	ld	r30, X+
   18116:	fc 91       	ld	r31, X
   18118:	15 97       	sbiw	r26, 0x05	; 5
   1811a:	e1 5a       	subi	r30, 0xA1	; 161
   1811c:	f8 4f       	sbci	r31, 0xF8	; 248
   1811e:	81 e0       	ldi	r24, 0x01	; 1
   18120:	80 83       	st	Z, r24
			pTaskInfo->pBuf->responseInfo.length = 22;
   18122:	14 96       	adiw	r26, 0x04	; 4
   18124:	ed 91       	ld	r30, X+
   18126:	fc 91       	ld	r31, X
   18128:	15 97       	sbiw	r26, 0x05	; 5
   1812a:	ef 59       	subi	r30, 0x9F	; 159
   1812c:	f8 4f       	sbci	r31, 0xF8	; 248
   1812e:	86 e1       	ldi	r24, 0x16	; 22
   18130:	b1 c0       	rjmp	.+354    	; 0x18294 <TurnerC3_ParseCommand+0x850>
			return SUCCESS;
			break;

		case TURNERC3_SAMPLING_OFF:
			memcpy_P(pTaskInfo->pBuf->consoleResponse, PSTR("C3 Data Sampling is already Off"), 31);
   18132:	f7 01       	movw	r30, r14
   18134:	84 81       	ldd	r24, Z+4	; 0x04
   18136:	95 81       	ldd	r25, Z+5	; 0x05
   18138:	8a 59       	subi	r24, 0x9A	; 154
   1813a:	98 4f       	sbci	r25, 0xF8	; 248
   1813c:	6c e9       	ldi	r22, 0x9C	; 156
   1813e:	78 e1       	ldi	r23, 0x18	; 24
   18140:	4f e1       	ldi	r20, 0x1F	; 31
   18142:	50 e0       	ldi	r21, 0x00	; 0
   18144:	0e 94 ab ef 	call	0x1df56	; 0x1df56 <memcpy_P>
			pTaskInfo->pBuf->responseInfo.status = CONSOLE_RESPONSE_OK;
   18148:	d7 01       	movw	r26, r14
   1814a:	14 96       	adiw	r26, 0x04	; 4
   1814c:	ed 91       	ld	r30, X+
   1814e:	fc 91       	ld	r31, X
   18150:	15 97       	sbiw	r26, 0x05	; 5
   18152:	e1 5a       	subi	r30, 0xA1	; 161
   18154:	f8 4f       	sbci	r31, 0xF8	; 248
   18156:	81 e0       	ldi	r24, 0x01	; 1
   18158:	80 83       	st	Z, r24
			pTaskInfo->pBuf->responseInfo.length = 31;
   1815a:	14 96       	adiw	r26, 0x04	; 4
   1815c:	ed 91       	ld	r30, X+
   1815e:	fc 91       	ld	r31, X
   18160:	15 97       	sbiw	r26, 0x05	; 5
   18162:	ef 59       	subi	r30, 0x9F	; 159
   18164:	f8 4f       	sbci	r31, 0xF8	; 248
   18166:	8f e1       	ldi	r24, 0x1F	; 31
   18168:	95 c0       	rjmp	.+298    	; 0x18294 <TurnerC3_ParseCommand+0x850>
			return SUCCESS;
			break;

		case TURNERC3_SAMPLING_ON:
			memcpy_P(pTaskInfo->pBuf->consoleResponse, PSTR("C3 Data Sampling is ON -- unable to process other commands"), 58);
   1816a:	f7 01       	movw	r30, r14
   1816c:	84 81       	ldd	r24, Z+4	; 0x04
   1816e:	95 81       	ldd	r25, Z+5	; 0x05
   18170:	8a 59       	subi	r24, 0x9A	; 154
   18172:	98 4f       	sbci	r25, 0xF8	; 248
   18174:	61 e6       	ldi	r22, 0x61	; 97
   18176:	78 e1       	ldi	r23, 0x18	; 24
   18178:	4a e3       	ldi	r20, 0x3A	; 58
   1817a:	50 e0       	ldi	r21, 0x00	; 0
   1817c:	0e 94 ab ef 	call	0x1df56	; 0x1df56 <memcpy_P>
			pTaskInfo->pBuf->responseInfo.status = CONSOLE_RESPONSE_OK;
   18180:	d7 01       	movw	r26, r14
   18182:	14 96       	adiw	r26, 0x04	; 4
   18184:	ed 91       	ld	r30, X+
   18186:	fc 91       	ld	r31, X
   18188:	15 97       	sbiw	r26, 0x05	; 5
   1818a:	e1 5a       	subi	r30, 0xA1	; 161
   1818c:	f8 4f       	sbci	r31, 0xF8	; 248
   1818e:	81 e0       	ldi	r24, 0x01	; 1
   18190:	80 83       	st	Z, r24
			pTaskInfo->pBuf->responseInfo.length = 58;
   18192:	14 96       	adiw	r26, 0x04	; 4
   18194:	ed 91       	ld	r30, X+
   18196:	fc 91       	ld	r31, X
   18198:	15 97       	sbiw	r26, 0x05	; 5
   1819a:	ef 59       	subi	r30, 0x9F	; 159
   1819c:	f8 4f       	sbci	r31, 0xF8	; 248
   1819e:	8a e3       	ldi	r24, 0x3A	; 58
   181a0:	79 c0       	rjmp	.+242    	; 0x18294 <TurnerC3_ParseCommand+0x850>
			return SUCCESS;
			break;

		case TURNERC3_CURRENT_STATE:
			if((pTaskInfo->pBuf->powerOn == TRUE) && (pTaskInfo->pBuf->sampleC3 == TRUE))
   181a2:	d7 01       	movw	r26, r14
   181a4:	14 96       	adiw	r26, 0x04	; 4
   181a6:	ed 91       	ld	r30, X+
   181a8:	fc 91       	ld	r31, X
   181aa:	15 97       	sbiw	r26, 0x05	; 5
   181ac:	eb 5f       	subi	r30, 0xFB	; 251
   181ae:	fa 4f       	sbci	r31, 0xFA	; 250
   181b0:	80 81       	ld	r24, Z
   181b2:	e5 50       	subi	r30, 0x05	; 5
   181b4:	f5 40       	sbci	r31, 0x05	; 5
   181b6:	8f 3f       	cpi	r24, 0xFF	; 255
   181b8:	49 f5       	brne	.+82     	; 0x1820c <TurnerC3_ParseCommand+0x7c8>
   181ba:	ec 5f       	subi	r30, 0xFC	; 252
   181bc:	fa 4f       	sbci	r31, 0xFA	; 250
   181be:	80 81       	ld	r24, Z
   181c0:	e4 50       	subi	r30, 0x04	; 4
   181c2:	f5 40       	sbci	r31, 0x05	; 5
   181c4:	8f 3f       	cpi	r24, 0xFF	; 255
   181c6:	d1 f4       	brne	.+52     	; 0x181fc <TurnerC3_ParseCommand+0x7b8>
			{
				memcpy_P(pTaskInfo->pBuf->consoleResponse, PSTR("Power is ON, Sampling is ON"), 27);
   181c8:	cf 01       	movw	r24, r30
   181ca:	8a 59       	subi	r24, 0x9A	; 154
   181cc:	98 4f       	sbci	r25, 0xF8	; 248
   181ce:	65 e4       	ldi	r22, 0x45	; 69
   181d0:	78 e1       	ldi	r23, 0x18	; 24
   181d2:	4b e1       	ldi	r20, 0x1B	; 27
   181d4:	50 e0       	ldi	r21, 0x00	; 0
   181d6:	0e 94 ab ef 	call	0x1df56	; 0x1df56 <memcpy_P>
				pTaskInfo->pBuf->responseInfo.status = CONSOLE_RESPONSE_OK;
   181da:	d7 01       	movw	r26, r14
   181dc:	14 96       	adiw	r26, 0x04	; 4
   181de:	ed 91       	ld	r30, X+
   181e0:	fc 91       	ld	r31, X
   181e2:	15 97       	sbiw	r26, 0x05	; 5
   181e4:	e1 5a       	subi	r30, 0xA1	; 161
   181e6:	f8 4f       	sbci	r31, 0xF8	; 248
   181e8:	81 e0       	ldi	r24, 0x01	; 1
   181ea:	80 83       	st	Z, r24
				pTaskInfo->pBuf->responseInfo.length = 27;
   181ec:	14 96       	adiw	r26, 0x04	; 4
   181ee:	ed 91       	ld	r30, X+
   181f0:	fc 91       	ld	r31, X
   181f2:	15 97       	sbiw	r26, 0x05	; 5
   181f4:	ef 59       	subi	r30, 0x9F	; 159
   181f6:	f8 4f       	sbci	r31, 0xF8	; 248
   181f8:	8b e1       	ldi	r24, 0x1B	; 27
   181fa:	4c c0       	rjmp	.+152    	; 0x18294 <TurnerC3_ParseCommand+0x850>
			}
			else if((pTaskInfo->pBuf->powerOn == TRUE) && (pTaskInfo->pBuf->sampleC3 == FALSE))
   181fc:	88 23       	and	r24, r24
   181fe:	89 f5       	brne	.+98     	; 0x18262 <TurnerC3_ParseCommand+0x81e>
			{
				memcpy_P(pTaskInfo->pBuf->consoleResponse, PSTR("Power is ON, Sampling is OFF"), 28);
   18200:	cf 01       	movw	r24, r30
   18202:	8a 59       	subi	r24, 0x9A	; 154
   18204:	98 4f       	sbci	r25, 0xF8	; 248
   18206:	68 e2       	ldi	r22, 0x28	; 40
   18208:	78 e1       	ldi	r23, 0x18	; 24
   1820a:	0e c0       	rjmp	.+28     	; 0x18228 <TurnerC3_ParseCommand+0x7e4>
				pTaskInfo->pBuf->responseInfo.status = CONSOLE_RESPONSE_OK;
				pTaskInfo->pBuf->responseInfo.length = 28;
			}
			else if((pTaskInfo->pBuf->powerOn == FALSE) && (pTaskInfo->pBuf->sampleC3 == TRUE))
   1820c:	88 23       	and	r24, r24
   1820e:	49 f5       	brne	.+82     	; 0x18262 <TurnerC3_ParseCommand+0x81e>
   18210:	ec 5f       	subi	r30, 0xFC	; 252
   18212:	fa 4f       	sbci	r31, 0xFA	; 250
   18214:	80 81       	ld	r24, Z
   18216:	e4 50       	subi	r30, 0x04	; 4
   18218:	f5 40       	sbci	r31, 0x05	; 5
   1821a:	8f 3f       	cpi	r24, 0xFF	; 255
   1821c:	d1 f4       	brne	.+52     	; 0x18252 <TurnerC3_ParseCommand+0x80e>
			{
				memcpy_P(pTaskInfo->pBuf->consoleResponse, PSTR("Power is OFF, Sampling is ON"), 28);
   1821e:	cf 01       	movw	r24, r30
   18220:	8a 59       	subi	r24, 0x9A	; 154
   18222:	98 4f       	sbci	r25, 0xF8	; 248
   18224:	6b e0       	ldi	r22, 0x0B	; 11
   18226:	78 e1       	ldi	r23, 0x18	; 24
   18228:	4c e1       	ldi	r20, 0x1C	; 28
   1822a:	50 e0       	ldi	r21, 0x00	; 0
   1822c:	0e 94 ab ef 	call	0x1df56	; 0x1df56 <memcpy_P>
				pTaskInfo->pBuf->responseInfo.status = CONSOLE_RESPONSE_OK;
   18230:	d7 01       	movw	r26, r14
   18232:	14 96       	adiw	r26, 0x04	; 4
   18234:	ed 91       	ld	r30, X+
   18236:	fc 91       	ld	r31, X
   18238:	15 97       	sbiw	r26, 0x05	; 5
   1823a:	e1 5a       	subi	r30, 0xA1	; 161
   1823c:	f8 4f       	sbci	r31, 0xF8	; 248
   1823e:	81 e0       	ldi	r24, 0x01	; 1
   18240:	80 83       	st	Z, r24
				pTaskInfo->pBuf->responseInfo.length = 28;
   18242:	14 96       	adiw	r26, 0x04	; 4
   18244:	ed 91       	ld	r30, X+
   18246:	fc 91       	ld	r31, X
   18248:	15 97       	sbiw	r26, 0x05	; 5
   1824a:	ef 59       	subi	r30, 0x9F	; 159
   1824c:	f8 4f       	sbci	r31, 0xF8	; 248
   1824e:	8c e1       	ldi	r24, 0x1C	; 28
   18250:	21 c0       	rjmp	.+66     	; 0x18294 <TurnerC3_ParseCommand+0x850>
			}
			else if((pTaskInfo->pBuf->powerOn == FALSE) && (pTaskInfo->pBuf->sampleC3 == FALSE))
   18252:	88 23       	and	r24, r24
   18254:	31 f4       	brne	.+12     	; 0x18262 <TurnerC3_ParseCommand+0x81e>
			{
				memcpy_P(pTaskInfo->pBuf->consoleResponse, PSTR("Power is OFF, Sampling is OFF"), 29);
   18256:	cf 01       	movw	r24, r30
   18258:	8a 59       	subi	r24, 0x9A	; 154
   1825a:	98 4f       	sbci	r25, 0xF8	; 248
   1825c:	6d ee       	ldi	r22, 0xED	; 237
   1825e:	77 e1       	ldi	r23, 0x17	; 23
   18260:	05 c0       	rjmp	.+10     	; 0x1826c <TurnerC3_ParseCommand+0x828>
				pTaskInfo->pBuf->responseInfo.status = CONSOLE_RESPONSE_OK;
				pTaskInfo->pBuf->responseInfo.length = 29;
			}
			else
			{
				memcpy_P(pTaskInfo->pBuf->consoleResponse, PSTR("System is in an unknown state"), 29);
   18262:	cf 01       	movw	r24, r30
   18264:	8a 59       	subi	r24, 0x9A	; 154
   18266:	98 4f       	sbci	r25, 0xF8	; 248
   18268:	6f ec       	ldi	r22, 0xCF	; 207
   1826a:	77 e1       	ldi	r23, 0x17	; 23
   1826c:	4d e1       	ldi	r20, 0x1D	; 29
   1826e:	50 e0       	ldi	r21, 0x00	; 0
   18270:	0e 94 ab ef 	call	0x1df56	; 0x1df56 <memcpy_P>
				pTaskInfo->pBuf->responseInfo.status = CONSOLE_RESPONSE_OK;
   18274:	d7 01       	movw	r26, r14
   18276:	14 96       	adiw	r26, 0x04	; 4
   18278:	ed 91       	ld	r30, X+
   1827a:	fc 91       	ld	r31, X
   1827c:	15 97       	sbiw	r26, 0x05	; 5
   1827e:	e1 5a       	subi	r30, 0xA1	; 161
   18280:	f8 4f       	sbci	r31, 0xF8	; 248
   18282:	81 e0       	ldi	r24, 0x01	; 1
   18284:	80 83       	st	Z, r24
				pTaskInfo->pBuf->responseInfo.length = 29;
   18286:	14 96       	adiw	r26, 0x04	; 4
   18288:	ed 91       	ld	r30, X+
   1828a:	fc 91       	ld	r31, X
   1828c:	15 97       	sbiw	r26, 0x05	; 5
   1828e:	ef 59       	subi	r30, 0x9F	; 159
   18290:	f8 4f       	sbci	r31, 0xF8	; 248
   18292:	8d e1       	ldi	r24, 0x1D	; 29
   18294:	80 83       	st	Z, r24
   18296:	1f ef       	ldi	r17, 0xFF	; 255
   18298:	3a c0       	rjmp	.+116    	; 0x1830e <TurnerC3_ParseCommand+0x8ca>
			}
			return SUCCESS;
			break;

		case TURNERC3_UNSUPPORTED_CMD:
			memcpy_P(pTaskInfo->pBuf->consoleResponse, PSTR("That command is currently not supported"), 39);
   1829a:	f7 01       	movw	r30, r14
   1829c:	84 81       	ldd	r24, Z+4	; 0x04
   1829e:	95 81       	ldd	r25, Z+5	; 0x05
   182a0:	8a 59       	subi	r24, 0x9A	; 154
   182a2:	98 4f       	sbci	r25, 0xF8	; 248
   182a4:	67 ea       	ldi	r22, 0xA7	; 167
   182a6:	77 e1       	ldi	r23, 0x17	; 23
   182a8:	47 e2       	ldi	r20, 0x27	; 39
   182aa:	50 e0       	ldi	r21, 0x00	; 0
   182ac:	0e 94 ab ef 	call	0x1df56	; 0x1df56 <memcpy_P>
			pTaskInfo->pBuf->responseInfo.status = CONSOLE_RESPONSE_UNKNOWN_CMD;
   182b0:	d7 01       	movw	r26, r14
   182b2:	14 96       	adiw	r26, 0x04	; 4
   182b4:	ed 91       	ld	r30, X+
   182b6:	fc 91       	ld	r31, X
   182b8:	15 97       	sbiw	r26, 0x05	; 5
   182ba:	e1 5a       	subi	r30, 0xA1	; 161
   182bc:	f8 4f       	sbci	r31, 0xF8	; 248
   182be:	8a e0       	ldi	r24, 0x0A	; 10
   182c0:	80 83       	st	Z, r24
			pTaskInfo->pBuf->responseInfo.length = 39;
   182c2:	14 96       	adiw	r26, 0x04	; 4
   182c4:	ed 91       	ld	r30, X+
   182c6:	fc 91       	ld	r31, X
   182c8:	15 97       	sbiw	r26, 0x05	; 5
   182ca:	ef 59       	subi	r30, 0x9F	; 159
   182cc:	f8 4f       	sbci	r31, 0xF8	; 248
   182ce:	87 e2       	ldi	r24, 0x27	; 39
   182d0:	80 83       	st	Z, r24
   182d2:	10 e7       	ldi	r17, 0x70	; 112
   182d4:	1c c0       	rjmp	.+56     	; 0x1830e <TurnerC3_ParseCommand+0x8ca>
			break;

		case FAIL:
		default:
			memcpy_P(pTaskInfo->pBuf->consoleResponse, PSTR("Unrecognized Command"), 20);
   182d6:	f7 01       	movw	r30, r14
   182d8:	84 81       	ldd	r24, Z+4	; 0x04
   182da:	95 81       	ldd	r25, Z+5	; 0x05
   182dc:	8a 59       	subi	r24, 0x9A	; 154
   182de:	98 4f       	sbci	r25, 0xF8	; 248
   182e0:	62 e9       	ldi	r22, 0x92	; 146
   182e2:	77 e1       	ldi	r23, 0x17	; 23
   182e4:	44 e1       	ldi	r20, 0x14	; 20
   182e6:	50 e0       	ldi	r21, 0x00	; 0
   182e8:	0e 94 ab ef 	call	0x1df56	; 0x1df56 <memcpy_P>
			pTaskInfo->pBuf->responseInfo.status = CONSOLE_RESPONSE_UNKNOWN_CMD;
   182ec:	d7 01       	movw	r26, r14
   182ee:	14 96       	adiw	r26, 0x04	; 4
   182f0:	ed 91       	ld	r30, X+
   182f2:	fc 91       	ld	r31, X
   182f4:	15 97       	sbiw	r26, 0x05	; 5
   182f6:	e1 5a       	subi	r30, 0xA1	; 161
   182f8:	f8 4f       	sbci	r31, 0xF8	; 248
   182fa:	8a e0       	ldi	r24, 0x0A	; 10
   182fc:	80 83       	st	Z, r24
			pTaskInfo->pBuf->responseInfo.length = 20;
   182fe:	14 96       	adiw	r26, 0x04	; 4
   18300:	ed 91       	ld	r30, X+
   18302:	fc 91       	ld	r31, X
   18304:	15 97       	sbiw	r26, 0x05	; 5
   18306:	ef 59       	subi	r30, 0x9F	; 159
   18308:	f8 4f       	sbci	r31, 0xF8	; 248
   1830a:	84 e1       	ldi	r24, 0x14	; 20
   1830c:	80 83       	st	Z, r24

	}

	return retval;

}
   1830e:	81 2f       	mov	r24, r17
   18310:	0f 90       	pop	r0
   18312:	0f 90       	pop	r0
   18314:	0f 90       	pop	r0
   18316:	0f 90       	pop	r0
   18318:	cf 91       	pop	r28
   1831a:	df 91       	pop	r29
   1831c:	1f 91       	pop	r17
   1831e:	0f 91       	pop	r16
   18320:	ff 90       	pop	r15
   18322:	ef 90       	pop	r14
   18324:	df 90       	pop	r13
   18326:	cf 90       	pop	r12
   18328:	08 95       	ret

		case FAIL:
		default:
			memcpy_P(pTaskInfo->pBuf->consoleResponse, PSTR("Unrecognized Command"), 20);
			pTaskInfo->pBuf->responseInfo.status = CONSOLE_RESPONSE_UNKNOWN_CMD;
			pTaskInfo->pBuf->responseInfo.length = 20;
   1832a:	10 e0       	ldi	r17, 0x00	; 0
   1832c:	d4 cf       	rjmp	.-88     	; 0x182d6 <TurnerC3_ParseCommand+0x892>

0001832e <TurnerC3_ParseConsole>:
#define TURNERC3_SAMPLING_ON			0x50
#define TURNERC3_CURRENT_STATE			0x60
#define TURNERC3_UNSUPPORTED_CMD		0x70

void TurnerC3_ParseConsole(PTURNER_C3_TASK pTaskInfo)
{
   1832e:	8f 92       	push	r8
   18330:	9f 92       	push	r9
   18332:	af 92       	push	r10
   18334:	bf 92       	push	r11
   18336:	cf 92       	push	r12
   18338:	df 92       	push	r13
   1833a:	ef 92       	push	r14
   1833c:	ff 92       	push	r15
   1833e:	0f 93       	push	r16
   18340:	1f 93       	push	r17
   18342:	df 93       	push	r29
   18344:	cf 93       	push	r28
   18346:	0f 92       	push	r0
   18348:	0f 92       	push	r0
   1834a:	cd b7       	in	r28, 0x3d	; 61
   1834c:	de b7       	in	r29, 0x3e	; 62
   1834e:	6c 01       	movw	r12, r24
	char* myCommand = consoleIn[pTaskInfo->taskID].cmd; 
   18350:	dc 01       	movw	r26, r24
   18352:	8c 91       	ld	r24, X
   18354:	90 e0       	ldi	r25, 0x00	; 0
   18356:	29 e0       	ldi	r18, 0x09	; 9
   18358:	31 e0       	ldi	r19, 0x01	; 1
   1835a:	f9 01       	movw	r30, r18
   1835c:	8e 9f       	mul	r24, r30
   1835e:	90 01       	movw	r18, r0
   18360:	8f 9f       	mul	r24, r31
   18362:	30 0d       	add	r19, r0
   18364:	9e 9f       	mul	r25, r30
   18366:	30 0d       	add	r19, r0
   18368:	11 24       	eor	r1, r1
   1836a:	2e 58       	subi	r18, 0x8E	; 142
   1836c:	32 46       	sbci	r19, 0x62	; 98
   1836e:	3a 83       	std	Y+2, r19	; 0x02
   18370:	29 83       	std	Y+1, r18	; 0x01
	char* result = NULL;
	char command = 0;
	BOOL goodCommand = FALSE;
	uint8_t resultCode = 0;

	sprintf_P(dbgMsg, PSTR("Parsing console: <%s>"), myCommand); SEND_MSG;
   18372:	00 d0       	rcall	.+0      	; 0x18374 <TurnerC3_ParseConsole+0x46>
   18374:	00 d0       	rcall	.+0      	; 0x18376 <TurnerC3_ParseConsole+0x48>
   18376:	ed b7       	in	r30, 0x3d	; 61
   18378:	fe b7       	in	r31, 0x3e	; 62
   1837a:	31 96       	adiw	r30, 0x01	; 1
   1837c:	a3 ef       	ldi	r26, 0xF3	; 243
   1837e:	8a 2e       	mov	r8, r26
   18380:	a8 e1       	ldi	r26, 0x18	; 24
   18382:	9a 2e       	mov	r9, r26
   18384:	ad b7       	in	r26, 0x3d	; 61
   18386:	be b7       	in	r27, 0x3e	; 62
   18388:	12 96       	adiw	r26, 0x02	; 2
   1838a:	9c 92       	st	X, r9
   1838c:	8e 92       	st	-X, r8
   1838e:	11 97       	sbiw	r26, 0x01	; 1
   18390:	81 eb       	ldi	r24, 0xB1	; 177
   18392:	99 e1       	ldi	r25, 0x19	; 25
   18394:	93 83       	std	Z+3, r25	; 0x03
   18396:	82 83       	std	Z+2, r24	; 0x02
   18398:	35 83       	std	Z+5, r19	; 0x05
   1839a:	24 83       	std	Z+4, r18	; 0x04
   1839c:	0e 94 51 f1 	call	0x1e2a2	; 0x1e2a2 <sprintf_P>

	myCommand[MAX_FILE_SIZE_IN - 1] = 0;			//Make sure command string is NULL terminated
   183a0:	e9 81       	ldd	r30, Y+1	; 0x01
   183a2:	fa 81       	ldd	r31, Y+2	; 0x02
   183a4:	e1 50       	subi	r30, 0x01	; 1
   183a6:	ff 4f       	sbci	r31, 0xFF	; 255
   183a8:	10 82       	st	Z, r1

	memset(pTaskInfo->pBuf->tokenSeparatorList, 0, MAX_TOKEN_SEPARATORS);
   183aa:	f6 01       	movw	r30, r12
   183ac:	84 81       	ldd	r24, Z+4	; 0x04
   183ae:	95 81       	ldd	r25, Z+5	; 0x05
   183b0:	87 5b       	subi	r24, 0xB7	; 183
   183b2:	98 4f       	sbci	r25, 0xF8	; 248
   183b4:	fc 01       	movw	r30, r24
   183b6:	84 e1       	ldi	r24, 0x14	; 20
   183b8:	df 01       	movw	r26, r30
   183ba:	1d 92       	st	X+, r1
   183bc:	8a 95       	dec	r24
   183be:	e9 f7       	brne	.-6      	; 0x183ba <TurnerC3_ParseConsole+0x8c>
	strcat_P(pTaskInfo->pBuf->tokenSeparatorList, tokenListConsole);
   183c0:	ed b7       	in	r30, 0x3d	; 61
   183c2:	fe b7       	in	r31, 0x3e	; 62
   183c4:	36 96       	adiw	r30, 0x06	; 6
   183c6:	0f b6       	in	r0, 0x3f	; 63
   183c8:	f8 94       	cli
   183ca:	fe bf       	out	0x3e, r31	; 62
   183cc:	0f be       	out	0x3f, r0	; 63
   183ce:	ed bf       	out	0x3d, r30	; 61
   183d0:	d6 01       	movw	r26, r12
   183d2:	14 96       	adiw	r26, 0x04	; 4
   183d4:	8d 91       	ld	r24, X+
   183d6:	9c 91       	ld	r25, X
   183d8:	15 97       	sbiw	r26, 0x05	; 5
   183da:	87 5b       	subi	r24, 0xB7	; 183
   183dc:	98 4f       	sbci	r25, 0xF8	; 248
   183de:	68 e3       	ldi	r22, 0x38	; 56
   183e0:	72 e0       	ldi	r23, 0x02	; 2
   183e2:	0e 94 b4 ef 	call	0x1df68	; 0x1df68 <strcat_P>

	result = strtok_r(myCommand, pTaskInfo->pBuf->tokenSeparatorList, &myCommand);
   183e6:	f6 01       	movw	r30, r12
   183e8:	64 81       	ldd	r22, Z+4	; 0x04
   183ea:	75 81       	ldd	r23, Z+5	; 0x05
   183ec:	67 5b       	subi	r22, 0xB7	; 183
   183ee:	78 4f       	sbci	r23, 0xF8	; 248
   183f0:	89 81       	ldd	r24, Y+1	; 0x01
   183f2:	9a 81       	ldd	r25, Y+2	; 0x02
   183f4:	8e 01       	movw	r16, r28
   183f6:	0f 5f       	subi	r16, 0xFF	; 255
   183f8:	1f 4f       	sbci	r17, 0xFF	; 255
   183fa:	a8 01       	movw	r20, r16
   183fc:	0e 94 a0 f0 	call	0x1e140	; 0x1e140 <strtok_r>
   18400:	5c 01       	movw	r10, r24
	resultCode = 1;				//No Command Received
	
	if(result != NULL)
   18402:	00 97       	sbiw	r24, 0x00	; 0
   18404:	19 f4       	brne	.+6      	; 0x1840c <TurnerC3_ParseConsole+0xde>
   18406:	ff 24       	eor	r15, r15
   18408:	f3 94       	inc	r15
   1840a:	26 c0       	rjmp	.+76     	; 0x18458 <TurnerC3_ParseConsole+0x12a>
	{
		resultCode = 2;			//Unknown Parser Code
		if(strncasecmp_P(result, c3ParserID, strlen_P(c3ParserID)) == 0)
   1840c:	84 ef       	ldi	r24, 0xF4	; 244
   1840e:	93 e1       	ldi	r25, 0x13	; 19
   18410:	0e 94 c6 ef 	call	0x1df8c	; 0x1df8c <strlen_P>
   18414:	ac 01       	movw	r20, r24
   18416:	c5 01       	movw	r24, r10
   18418:	64 ef       	ldi	r22, 0xF4	; 244
   1841a:	73 e1       	ldi	r23, 0x13	; 19
   1841c:	0e 94 cf ef 	call	0x1df9e	; 0x1df9e <strncasecmp_P>
   18420:	89 2b       	or	r24, r25
   18422:	19 f0       	breq	.+6      	; 0x1842a <TurnerC3_ParseConsole+0xfc>
   18424:	72 e0       	ldi	r23, 0x02	; 2
   18426:	f7 2e       	mov	r15, r23
   18428:	17 c0       	rjmp	.+46     	; 0x18458 <TurnerC3_ParseConsole+0x12a>
		{
			resultCode = 3;		//Unknown command

			command = getCommand(&myCommand, c3Commands[0], 8, NUM_C3_COMMANDS, c3CmdList, pTaskInfo->pBuf->tokenSeparatorList);
   1842a:	d6 01       	movw	r26, r12
   1842c:	14 96       	adiw	r26, 0x04	; 4
   1842e:	ed 91       	ld	r30, X+
   18430:	fc 91       	ld	r31, X
   18432:	15 97       	sbiw	r26, 0x05	; 5
   18434:	e7 5b       	subi	r30, 0xB7	; 183
   18436:	f8 4f       	sbci	r31, 0xF8	; 248
   18438:	c8 01       	movw	r24, r16
   1843a:	64 ea       	ldi	r22, 0xA4	; 164
   1843c:	73 e1       	ldi	r23, 0x13	; 19
   1843e:	48 e0       	ldi	r20, 0x08	; 8
   18440:	2a e0       	ldi	r18, 0x0A	; 10
   18442:	07 ef       	ldi	r16, 0xF7	; 247
   18444:	13 e1       	ldi	r17, 0x13	; 19
   18446:	7f 01       	movw	r14, r30
   18448:	0e 94 1f 38 	call	0x703e	; 0x703e <getCommand>
   1844c:	18 2f       	mov	r17, r24

			if(command != 0)
   1844e:	88 23       	and	r24, r24
   18450:	09 f0       	breq	.+2      	; 0x18454 <TurnerC3_ParseConsole+0x126>
   18452:	be c0       	rjmp	.+380    	; 0x185d0 <TurnerC3_ParseConsole+0x2a2>
   18454:	63 e0       	ldi	r22, 0x03	; 3
   18456:	f6 2e       	mov	r15, r22
		sprintf_P(dbgMsg, PSTR("good message")); SEND_MSG;
		resultCode = TurnerC3_ParseCommand(pTaskInfo, command, myCommand);
	}
	else
	{
		sprintf_P(dbgMsg, PSTR("bad .. code=%d"), resultCode); SEND_MSG;
   18458:	00 d0       	rcall	.+0      	; 0x1845a <TurnerC3_ParseConsole+0x12c>
   1845a:	00 d0       	rcall	.+0      	; 0x1845c <TurnerC3_ParseConsole+0x12e>
   1845c:	ed b7       	in	r30, 0x3d	; 61
   1845e:	fe b7       	in	r31, 0x3e	; 62
   18460:	31 96       	adiw	r30, 0x01	; 1
   18462:	03 ef       	ldi	r16, 0xF3	; 243
   18464:	18 e1       	ldi	r17, 0x18	; 24
   18466:	ad b7       	in	r26, 0x3d	; 61
   18468:	be b7       	in	r27, 0x3e	; 62
   1846a:	12 96       	adiw	r26, 0x02	; 2
   1846c:	1c 93       	st	X, r17
   1846e:	0e 93       	st	-X, r16
   18470:	11 97       	sbiw	r26, 0x01	; 1
   18472:	85 e9       	ldi	r24, 0x95	; 149
   18474:	99 e1       	ldi	r25, 0x19	; 25
   18476:	93 83       	std	Z+3, r25	; 0x03
   18478:	82 83       	std	Z+2, r24	; 0x02
   1847a:	f4 82       	std	Z+4, r15	; 0x04
   1847c:	15 82       	std	Z+5, r1	; 0x05
   1847e:	0e 94 51 f1 	call	0x1e2a2	; 0x1e2a2 <sprintf_P>
		sprintf_P(dbgMsg, PSTR("cmd = <%s><%s>"), myCommand, result); SEND_MSG;
   18482:	0f 92       	push	r0
   18484:	0f 92       	push	r0
   18486:	ed b7       	in	r30, 0x3d	; 61
   18488:	fe b7       	in	r31, 0x3e	; 62
   1848a:	31 96       	adiw	r30, 0x01	; 1
   1848c:	ad b7       	in	r26, 0x3d	; 61
   1848e:	be b7       	in	r27, 0x3e	; 62
   18490:	12 96       	adiw	r26, 0x02	; 2
   18492:	1c 93       	st	X, r17
   18494:	0e 93       	st	-X, r16
   18496:	11 97       	sbiw	r26, 0x01	; 1
   18498:	86 e8       	ldi	r24, 0x86	; 134
   1849a:	99 e1       	ldi	r25, 0x19	; 25
   1849c:	93 83       	std	Z+3, r25	; 0x03
   1849e:	82 83       	std	Z+2, r24	; 0x02
   184a0:	89 81       	ldd	r24, Y+1	; 0x01
   184a2:	9a 81       	ldd	r25, Y+2	; 0x02
   184a4:	95 83       	std	Z+5, r25	; 0x05
   184a6:	84 83       	std	Z+4, r24	; 0x04
   184a8:	b7 82       	std	Z+7, r11	; 0x07
   184aa:	a6 82       	std	Z+6, r10	; 0x06
   184ac:	0e 94 51 f1 	call	0x1e2a2	; 0x1e2a2 <sprintf_P>
   184b0:	ed b7       	in	r30, 0x3d	; 61
   184b2:	fe b7       	in	r31, 0x3e	; 62
   184b4:	38 96       	adiw	r30, 0x08	; 8
   184b6:	0f b6       	in	r0, 0x3f	; 63
   184b8:	f8 94       	cli
   184ba:	fe bf       	out	0x3e, r31	; 62
   184bc:	0f be       	out	0x3f, r0	; 63
   184be:	ed bf       	out	0x3d, r30	; 61
	}

	if(resultCode != SUCCESS)
	{
		switch(resultCode)
   184c0:	f2 e0       	ldi	r31, 0x02	; 2
   184c2:	ff 16       	cp	r15, r31
   184c4:	79 f0       	breq	.+30     	; 0x184e4 <TurnerC3_ParseConsole+0x1b6>
   184c6:	43 e0       	ldi	r20, 0x03	; 3
   184c8:	f4 16       	cp	r15, r20
   184ca:	a9 f0       	breq	.+42     	; 0x184f6 <TurnerC3_ParseConsole+0x1c8>
   184cc:	d6 01       	movw	r26, r12
   184ce:	14 96       	adiw	r26, 0x04	; 4
   184d0:	ed 91       	ld	r30, X+
   184d2:	fc 91       	ld	r31, X
   184d4:	15 97       	sbiw	r26, 0x05	; 5
   184d6:	b1 e0       	ldi	r27, 0x01	; 1
   184d8:	fb 16       	cp	r15, r27
   184da:	b1 f4       	brne	.+44     	; 0x18508 <TurnerC3_ParseConsole+0x1da>
		{
			case 1:
				pTaskInfo->pBuf->responseInfo.status = CONSOLE_RESPONSE_EMPTY_CMD;
   184dc:	e1 5a       	subi	r30, 0xA1	; 161
   184de:	f8 4f       	sbci	r31, 0xF8	; 248
   184e0:	8d e0       	ldi	r24, 0x0D	; 13
   184e2:	15 c0       	rjmp	.+42     	; 0x1850e <TurnerC3_ParseConsole+0x1e0>
				break;
			case 2:
				pTaskInfo->pBuf->responseInfo.status = CONSOLE_RESPONSE_WRONG_DEVICE;
   184e4:	d6 01       	movw	r26, r12
   184e6:	14 96       	adiw	r26, 0x04	; 4
   184e8:	ed 91       	ld	r30, X+
   184ea:	fc 91       	ld	r31, X
   184ec:	15 97       	sbiw	r26, 0x05	; 5
   184ee:	e1 5a       	subi	r30, 0xA1	; 161
   184f0:	f8 4f       	sbci	r31, 0xF8	; 248
   184f2:	8e e0       	ldi	r24, 0x0E	; 14
   184f4:	0c c0       	rjmp	.+24     	; 0x1850e <TurnerC3_ParseConsole+0x1e0>
				break;
			case 3:
				pTaskInfo->pBuf->responseInfo.status = CONSOLE_RESPONSE_UNKNOWN_CMD;
   184f6:	d6 01       	movw	r26, r12
   184f8:	14 96       	adiw	r26, 0x04	; 4
   184fa:	ed 91       	ld	r30, X+
   184fc:	fc 91       	ld	r31, X
   184fe:	15 97       	sbiw	r26, 0x05	; 5
   18500:	e1 5a       	subi	r30, 0xA1	; 161
   18502:	f8 4f       	sbci	r31, 0xF8	; 248
   18504:	8a e0       	ldi	r24, 0x0A	; 10
   18506:	03 c0       	rjmp	.+6      	; 0x1850e <TurnerC3_ParseConsole+0x1e0>
				break;
			default:
				pTaskInfo->pBuf->responseInfo.status = CONSOLE_RESPONSE_CMD_FAILED;
   18508:	e1 5a       	subi	r30, 0xA1	; 161
   1850a:	f8 4f       	sbci	r31, 0xF8	; 248
   1850c:	8f e0       	ldi	r24, 0x0F	; 15
   1850e:	80 83       	st	Z, r24
				break;
		}
	}

	TurnerC3_QueueConsoleResponse(pTaskInfo);
   18510:	c6 01       	movw	r24, r12
   18512:	0e 94 ab aa 	call	0x15556	; 0x15556 <TurnerC3_QueueConsoleResponse>

	memset(consoleIn[pTaskInfo->taskID].cmd, 0, MAX_FILE_SIZE_IN);
   18516:	f6 01       	movw	r30, r12
   18518:	80 81       	ld	r24, Z
   1851a:	90 e0       	ldi	r25, 0x00	; 0
   1851c:	29 e0       	ldi	r18, 0x09	; 9
   1851e:	31 e0       	ldi	r19, 0x01	; 1
   18520:	ac 01       	movw	r20, r24
   18522:	42 9f       	mul	r20, r18
   18524:	c0 01       	movw	r24, r0
   18526:	43 9f       	mul	r20, r19
   18528:	90 0d       	add	r25, r0
   1852a:	52 9f       	mul	r21, r18
   1852c:	90 0d       	add	r25, r0
   1852e:	11 24       	eor	r1, r1
   18530:	8e 58       	subi	r24, 0x8E	; 142
   18532:	92 46       	sbci	r25, 0x62	; 98
   18534:	fc 01       	movw	r30, r24
   18536:	80 e0       	ldi	r24, 0x00	; 0
   18538:	91 e0       	ldi	r25, 0x01	; 1
   1853a:	df 01       	movw	r26, r30
   1853c:	ac 01       	movw	r20, r24
   1853e:	1d 92       	st	X+, r1
   18540:	41 50       	subi	r20, 0x01	; 1
   18542:	50 40       	sbci	r21, 0x00	; 0
   18544:	e1 f7       	brne	.-8      	; 0x1853e <TurnerC3_ParseConsole+0x210>
	consoleIn[pTaskInfo->taskID].cmdSrcAddress = 0;
   18546:	d6 01       	movw	r26, r12
   18548:	8c 91       	ld	r24, X
   1854a:	90 e0       	ldi	r25, 0x00	; 0
   1854c:	82 9f       	mul	r24, r18
   1854e:	f0 01       	movw	r30, r0
   18550:	83 9f       	mul	r24, r19
   18552:	f0 0d       	add	r31, r0
   18554:	92 9f       	mul	r25, r18
   18556:	f0 0d       	add	r31, r0
   18558:	11 24       	eor	r1, r1
   1855a:	e7 59       	subi	r30, 0x97	; 151
   1855c:	f2 46       	sbci	r31, 0x62	; 98
   1855e:	11 82       	std	Z+1, r1	; 0x01
   18560:	10 82       	st	Z, r1
	consoleIn[pTaskInfo->taskID].functionCode = 0;
   18562:	8c 91       	ld	r24, X
   18564:	90 e0       	ldi	r25, 0x00	; 0
   18566:	82 9f       	mul	r24, r18
   18568:	f0 01       	movw	r30, r0
   1856a:	83 9f       	mul	r24, r19
   1856c:	f0 0d       	add	r31, r0
   1856e:	92 9f       	mul	r25, r18
   18570:	f0 0d       	add	r31, r0
   18572:	11 24       	eor	r1, r1
   18574:	e7 59       	subi	r30, 0x97	; 151
   18576:	f2 46       	sbci	r31, 0x62	; 98
   18578:	12 82       	std	Z+2, r1	; 0x02
	consoleIn[pTaskInfo->taskID].cmdSize = 0;
   1857a:	8c 91       	ld	r24, X
   1857c:	90 e0       	ldi	r25, 0x00	; 0
   1857e:	82 9f       	mul	r24, r18
   18580:	f0 01       	movw	r30, r0
   18582:	83 9f       	mul	r24, r19
   18584:	f0 0d       	add	r31, r0
   18586:	92 9f       	mul	r25, r18
   18588:	f0 0d       	add	r31, r0
   1858a:	11 24       	eor	r1, r1
   1858c:	e7 59       	subi	r30, 0x97	; 151
   1858e:	f2 46       	sbci	r31, 0x62	; 98
   18590:	14 82       	std	Z+4, r1	; 0x04
   18592:	13 82       	std	Z+3, r1	; 0x03
	consoleIn[pTaskInfo->taskID].id = 0;
   18594:	8c 91       	ld	r24, X
   18596:	90 e0       	ldi	r25, 0x00	; 0
   18598:	82 9f       	mul	r24, r18
   1859a:	f0 01       	movw	r30, r0
   1859c:	83 9f       	mul	r24, r19
   1859e:	f0 0d       	add	r31, r0
   185a0:	92 9f       	mul	r25, r18
   185a2:	f0 0d       	add	r31, r0
   185a4:	11 24       	eor	r1, r1
   185a6:	e7 59       	subi	r30, 0x97	; 151
   185a8:	f2 46       	sbci	r31, 0x62	; 98
   185aa:	15 82       	std	Z+5, r1	; 0x05
   185ac:	16 82       	std	Z+6, r1	; 0x06
   185ae:	17 82       	std	Z+7, r1	; 0x07
   185b0:	10 86       	std	Z+8, r1	; 0x08

	return;
}
   185b2:	0f 90       	pop	r0
   185b4:	0f 90       	pop	r0
   185b6:	cf 91       	pop	r28
   185b8:	df 91       	pop	r29
   185ba:	1f 91       	pop	r17
   185bc:	0f 91       	pop	r16
   185be:	ff 90       	pop	r15
   185c0:	ef 90       	pop	r14
   185c2:	df 90       	pop	r13
   185c4:	cf 90       	pop	r12
   185c6:	bf 90       	pop	r11
   185c8:	af 90       	pop	r10
   185ca:	9f 90       	pop	r9
   185cc:	8f 90       	pop	r8
   185ce:	08 95       	ret
		}
	}

	if(goodCommand == TRUE)
	{
		sprintf_P(dbgMsg, PSTR("good message")); SEND_MSG;
   185d0:	00 d0       	rcall	.+0      	; 0x185d2 <TurnerC3_ParseConsole+0x2a4>
   185d2:	0f 92       	push	r0
   185d4:	ed b7       	in	r30, 0x3d	; 61
   185d6:	fe b7       	in	r31, 0x3e	; 62
   185d8:	92 82       	std	Z+2, r9	; 0x02
   185da:	81 82       	std	Z+1, r8	; 0x01
   185dc:	84 ea       	ldi	r24, 0xA4	; 164
   185de:	99 e1       	ldi	r25, 0x19	; 25
   185e0:	94 83       	std	Z+4, r25	; 0x04
   185e2:	83 83       	std	Z+3, r24	; 0x03
   185e4:	0e 94 51 f1 	call	0x1e2a2	; 0x1e2a2 <sprintf_P>
		resultCode = TurnerC3_ParseCommand(pTaskInfo, command, myCommand);
   185e8:	0f 90       	pop	r0
   185ea:	0f 90       	pop	r0
   185ec:	0f 90       	pop	r0
   185ee:	0f 90       	pop	r0
   185f0:	49 81       	ldd	r20, Y+1	; 0x01
   185f2:	5a 81       	ldd	r21, Y+2	; 0x02
   185f4:	c6 01       	movw	r24, r12
   185f6:	61 2f       	mov	r22, r17
   185f8:	0e 94 22 bd 	call	0x17a44	; 0x17a44 <TurnerC3_ParseCommand>
   185fc:	f8 2e       	mov	r15, r24
	{
		sprintf_P(dbgMsg, PSTR("bad .. code=%d"), resultCode); SEND_MSG;
		sprintf_P(dbgMsg, PSTR("cmd = <%s><%s>"), myCommand, result); SEND_MSG;
	}

	if(resultCode != SUCCESS)
   185fe:	ff ef       	ldi	r31, 0xFF	; 255
   18600:	8f 17       	cp	r24, r31
   18602:	09 f4       	brne	.+2      	; 0x18606 <TurnerC3_ParseConsole+0x2d8>
   18604:	85 cf       	rjmp	.-246    	; 0x18510 <TurnerC3_ParseConsole+0x1e2>
   18606:	5c cf       	rjmp	.-328    	; 0x184c0 <TurnerC3_ParseConsole+0x192>

00018608 <TurnerC3_HeartBeat>:




uint8_t TurnerC3_HeartBeat(PTURNER_C3_TASK pTaskInfo)
{
   18608:	ef 92       	push	r14
   1860a:	ff 92       	push	r15
   1860c:	0f 93       	push	r16
   1860e:	1f 93       	push	r17
   18610:	df 93       	push	r29
   18612:	cf 93       	push	r28
   18614:	00 d0       	rcall	.+0      	; 0x18616 <TurnerC3_HeartBeat+0xe>
   18616:	0f 92       	push	r0
   18618:	cd b7       	in	r28, 0x3d	; 61
   1861a:	de b7       	in	r29, 0x3e	; 62
   1861c:	7c 01       	movw	r14, r24
	uint8_t cmd[2];
	uint8_t retval = FAIL;
	uint8_t maxLen = 0;
	uint16_t len = 0;
   1861e:	1c 82       	std	Y+4, r1	; 0x04
   18620:	1b 82       	std	Y+3, r1	; 0x03

	cmd[0] = 0;
   18622:	19 82       	std	Y+1, r1	; 0x01
	cmd[1] = 0;
   18624:	1a 82       	std	Y+2, r1	; 0x02

	TurnerC3_Rx_Len(pTaskInfo, pTaskInfo->pBuf->bufferRx, &len, 100, 2 * QUARTER_SECOND);	//1 second timeout on heartbeat
   18626:	dc 01       	movw	r26, r24
   18628:	14 96       	adiw	r26, 0x04	; 4
   1862a:	6d 91       	ld	r22, X+
   1862c:	7c 91       	ld	r23, X
   1862e:	15 97       	sbiw	r26, 0x05	; 5
   18630:	60 50       	subi	r22, 0x00	; 0
   18632:	7f 4f       	sbci	r23, 0xFF	; 255
   18634:	ae 01       	movw	r20, r28
   18636:	4d 5f       	subi	r20, 0xFD	; 253
   18638:	5f 4f       	sbci	r21, 0xFF	; 255
   1863a:	24 e6       	ldi	r18, 0x64	; 100
   1863c:	30 e0       	ldi	r19, 0x00	; 0
   1863e:	00 e4       	ldi	r16, 0x40	; 64
   18640:	10 e0       	ldi	r17, 0x00	; 0
   18642:	0e 94 0f a9 	call	0x1521e	; 0x1521e <TurnerC3_Rx_Len>
	memset(pTaskInfo->pBuf->bufferRx, 0, 200);
   18646:	f7 01       	movw	r30, r14
   18648:	84 81       	ldd	r24, Z+4	; 0x04
   1864a:	95 81       	ldd	r25, Z+5	; 0x05
   1864c:	80 50       	subi	r24, 0x00	; 0
   1864e:	9f 4f       	sbci	r25, 0xFF	; 255
   18650:	fc 01       	movw	r30, r24
   18652:	88 ec       	ldi	r24, 0xC8	; 200
   18654:	df 01       	movw	r26, r30
   18656:	1d 92       	st	X+, r1
   18658:	8a 95       	dec	r24
   1865a:	e9 f7       	brne	.-6      	; 0x18656 <TurnerC3_HeartBeat+0x4e>

	retval = TurnerC3_Tx(pTaskInfo, cmd, 2);
   1865c:	c7 01       	movw	r24, r14
   1865e:	be 01       	movw	r22, r28
   18660:	6f 5f       	subi	r22, 0xFF	; 255
   18662:	7f 4f       	sbci	r23, 0xFF	; 255
   18664:	42 e0       	ldi	r20, 0x02	; 2
   18666:	0e 94 11 b3 	call	0x16622	; 0x16622 <TurnerC3_Tx>
   1866a:	18 2f       	mov	r17, r24

	if(retval == SUCCESS)
   1866c:	8f 3f       	cpi	r24, 0xFF	; 255
   1866e:	09 f0       	breq	.+2      	; 0x18672 <TurnerC3_HeartBeat+0x6a>
   18670:	7b c0       	rjmp	.+246    	; 0x18768 <TurnerC3_HeartBeat+0x160>
	{
		if(pTaskInfo->pBuf->heartbeatFirstTime == TRUE)
   18672:	d7 01       	movw	r26, r14
   18674:	14 96       	adiw	r26, 0x04	; 4
   18676:	ed 91       	ld	r30, X+
   18678:	fc 91       	ld	r31, X
   1867a:	15 97       	sbiw	r26, 0x05	; 5
   1867c:	e6 55       	subi	r30, 0x56	; 86
   1867e:	fa 4f       	sbci	r31, 0xFA	; 250
   18680:	80 81       	ld	r24, Z
   18682:	ea 5a       	subi	r30, 0xAA	; 170
   18684:	f5 40       	sbci	r31, 0x05	; 5
   18686:	8f 3f       	cpi	r24, 0xFF	; 255
   18688:	11 f0       	breq	.+4      	; 0x1868e <TurnerC3_HeartBeat+0x86>
   1868a:	24 e0       	ldi	r18, 0x04	; 4
   1868c:	01 c0       	rjmp	.+2      	; 0x18690 <TurnerC3_HeartBeat+0x88>
   1868e:	24 e6       	ldi	r18, 0x64	; 100
			maxLen = 100;
		else
			maxLen = 4;

		retval = TurnerC3_Rx_Len(pTaskInfo, pTaskInfo->pBuf->bufferRx, &len, maxLen, 4 * QUARTER_SECOND);	//1 second timeout on heartbeat
   18690:	e0 50       	subi	r30, 0x00	; 0
   18692:	ff 4f       	sbci	r31, 0xFF	; 255
   18694:	c7 01       	movw	r24, r14
   18696:	bf 01       	movw	r22, r30
   18698:	ae 01       	movw	r20, r28
   1869a:	4d 5f       	subi	r20, 0xFD	; 253
   1869c:	5f 4f       	sbci	r21, 0xFF	; 255
   1869e:	30 e0       	ldi	r19, 0x00	; 0
   186a0:	00 e8       	ldi	r16, 0x80	; 128
   186a2:	10 e0       	ldi	r17, 0x00	; 0
   186a4:	0e 94 0f a9 	call	0x1521e	; 0x1521e <TurnerC3_Rx_Len>
   186a8:	18 2f       	mov	r17, r24

		if(len != 0)
   186aa:	8b 81       	ldd	r24, Y+3	; 0x03
   186ac:	9c 81       	ldd	r25, Y+4	; 0x04
   186ae:	89 2b       	or	r24, r25
   186b0:	d1 f0       	breq	.+52     	; 0x186e6 <TurnerC3_HeartBeat+0xde>
		{
			//if(pTaskInfo->pBuf->heartbeatFirstTime == TRUE)
			//pTaskInfo->pBuf->heartbeatSecondTime = TRUE;
			pTaskInfo->pBuf->heartbeatCount++;
   186b2:	d7 01       	movw	r26, r14
   186b4:	14 96       	adiw	r26, 0x04	; 4
   186b6:	ed 91       	ld	r30, X+
   186b8:	fc 91       	ld	r31, X
   186ba:	15 97       	sbiw	r26, 0x05	; 5
   186bc:	9f 01       	movw	r18, r30
   186be:	24 55       	subi	r18, 0x54	; 84
   186c0:	3a 4f       	sbci	r19, 0xFA	; 250
   186c2:	d9 01       	movw	r26, r18
   186c4:	4d 91       	ld	r20, X+
   186c6:	5d 91       	ld	r21, X+
   186c8:	6d 91       	ld	r22, X+
   186ca:	7c 91       	ld	r23, X
   186cc:	13 97       	sbiw	r26, 0x03	; 3
   186ce:	4f 5f       	subi	r20, 0xFF	; 255
   186d0:	5f 4f       	sbci	r21, 0xFF	; 255
   186d2:	6f 4f       	sbci	r22, 0xFF	; 255
   186d4:	7f 4f       	sbci	r23, 0xFF	; 255
   186d6:	4d 93       	st	X+, r20
   186d8:	5d 93       	st	X+, r21
   186da:	6d 93       	st	X+, r22
   186dc:	7c 93       	st	X, r23
   186de:	13 97       	sbiw	r26, 0x03	; 3
			pTaskInfo->pBuf->heartbeatFirstTime = FALSE;
   186e0:	e6 55       	subi	r30, 0x56	; 86
   186e2:	fa 4f       	sbci	r31, 0xFA	; 250
   186e4:	10 82       	st	Z, r1
		}
		
		switch(pTaskInfo->pBuf->heartbeatCount)
   186e6:	d7 01       	movw	r26, r14
   186e8:	14 96       	adiw	r26, 0x04	; 4
   186ea:	ed 91       	ld	r30, X+
   186ec:	fc 91       	ld	r31, X
   186ee:	15 97       	sbiw	r26, 0x05	; 5
   186f0:	e4 55       	subi	r30, 0x54	; 84
   186f2:	fa 4f       	sbci	r31, 0xFA	; 250
   186f4:	80 81       	ld	r24, Z
   186f6:	91 81       	ldd	r25, Z+1	; 0x01
   186f8:	a2 81       	ldd	r26, Z+2	; 0x02
   186fa:	b3 81       	ldd	r27, Z+3	; 0x03
   186fc:	84 30       	cpi	r24, 0x04	; 4
   186fe:	91 05       	cpc	r25, r1
   18700:	a1 05       	cpc	r26, r1
   18702:	b1 05       	cpc	r27, r1
   18704:	01 f1       	breq	.+64     	; 0x18746 <TurnerC3_HeartBeat+0x13e>
   18706:	85 30       	cpi	r24, 0x05	; 5
   18708:	91 05       	cpc	r25, r1
   1870a:	a1 05       	cpc	r26, r1
   1870c:	b1 05       	cpc	r27, r1
   1870e:	50 f4       	brcc	.+20     	; 0x18724 <TurnerC3_HeartBeat+0x11c>
   18710:	82 30       	cpi	r24, 0x02	; 2
   18712:	91 05       	cpc	r25, r1
   18714:	a1 05       	cpc	r26, r1
   18716:	b1 05       	cpc	r27, r1
   18718:	79 f0       	breq	.+30     	; 0x18738 <TurnerC3_HeartBeat+0x130>
   1871a:	03 97       	sbiw	r24, 0x03	; 3
   1871c:	a1 05       	cpc	r26, r1
   1871e:	b1 05       	cpc	r27, r1
   18720:	19 f5       	brne	.+70     	; 0x18768 <TurnerC3_HeartBeat+0x160>
   18722:	0e c0       	rjmp	.+28     	; 0x18740 <TurnerC3_HeartBeat+0x138>
   18724:	85 30       	cpi	r24, 0x05	; 5
   18726:	91 05       	cpc	r25, r1
   18728:	a1 05       	cpc	r26, r1
   1872a:	b1 05       	cpc	r27, r1
   1872c:	89 f0       	breq	.+34     	; 0x18750 <TurnerC3_HeartBeat+0x148>
   1872e:	06 97       	sbiw	r24, 0x06	; 6
   18730:	a1 05       	cpc	r26, r1
   18732:	b1 05       	cpc	r27, r1
   18734:	c9 f4       	brne	.+50     	; 0x18768 <TurnerC3_HeartBeat+0x160>
   18736:	14 c0       	rjmp	.+40     	; 0x18760 <TurnerC3_HeartBeat+0x158>
		{
			case 2:
				TurnerC3_GetID(pTaskInfo);
   18738:	c7 01       	movw	r24, r14
   1873a:	0e 94 83 b3 	call	0x16706	; 0x16706 <TurnerC3_GetID>
   1873e:	14 c0       	rjmp	.+40     	; 0x18768 <TurnerC3_HeartBeat+0x160>
				break;
			case 3:
				TurnerC3_GetCalibration(pTaskInfo, 1);
   18740:	c7 01       	movw	r24, r14
   18742:	61 e0       	ldi	r22, 0x01	; 1
   18744:	02 c0       	rjmp	.+4      	; 0x1874a <TurnerC3_HeartBeat+0x142>
				break;
			case 4:
				TurnerC3_GetCalibration(pTaskInfo, 2);
   18746:	c7 01       	movw	r24, r14
   18748:	62 e0       	ldi	r22, 0x02	; 2
   1874a:	0e 94 79 b6 	call	0x16cf2	; 0x16cf2 <TurnerC3_GetCalibration>
   1874e:	0c c0       	rjmp	.+24     	; 0x18768 <TurnerC3_HeartBeat+0x160>
				break;
			case 5:
				TurnerC3_GetCalibration(pTaskInfo, 3);
   18750:	c7 01       	movw	r24, r14
   18752:	63 e0       	ldi	r22, 0x03	; 3
   18754:	0e 94 79 b6 	call	0x16cf2	; 0x16cf2 <TurnerC3_GetCalibration>
				TurnerC3_XmitID(pTaskInfo);
   18758:	c7 01       	movw	r24, r14
   1875a:	0e 94 e1 ab 	call	0x157c2	; 0x157c2 <TurnerC3_XmitID>
   1875e:	04 c0       	rjmp	.+8      	; 0x18768 <TurnerC3_HeartBeat+0x160>
				break;
			case 6:
				TurnerC3_GetConfiguration(pTaskInfo, TRUE);
   18760:	c7 01       	movw	r24, r14
   18762:	6f ef       	ldi	r22, 0xFF	; 255
   18764:	0e 94 25 b9 	call	0x1724a	; 0x1724a <TurnerC3_GetConfiguration>
//			retval = TurnerC3_XmitID(pTaskInfo);
//		}		
	}

	return retval;
}
   18768:	81 2f       	mov	r24, r17
   1876a:	0f 90       	pop	r0
   1876c:	0f 90       	pop	r0
   1876e:	0f 90       	pop	r0
   18770:	0f 90       	pop	r0
   18772:	cf 91       	pop	r28
   18774:	df 91       	pop	r29
   18776:	1f 91       	pop	r17
   18778:	0f 91       	pop	r16
   1877a:	ff 90       	pop	r15
   1877c:	ef 90       	pop	r14
   1877e:	08 95       	ret

00018780 <TurnerC3_Init>:

//prog_char separator1a[] = {'%', ' ', '.', ':', '/', '\t', '\r', '\n' ,'\0'};
prog_char separator2a[] = {' ', '\t', '\r', '\n', '\0'};

uint8_t TurnerC3_Init(PTURNER_C3_TASK pTaskInfo)
{
   18780:	af 92       	push	r10
   18782:	bf 92       	push	r11
   18784:	cf 92       	push	r12
   18786:	df 92       	push	r13
   18788:	ef 92       	push	r14
   1878a:	0f 93       	push	r16
   1878c:	1f 93       	push	r17
   1878e:	df 93       	push	r29
   18790:	cf 93       	push	r28
   18792:	00 d0       	rcall	.+0      	; 0x18794 <TurnerC3_Init+0x14>
   18794:	0f 92       	push	r0
   18796:	cd b7       	in	r28, 0x3d	; 61
   18798:	de b7       	in	r29, 0x3e	; 62
   1879a:	5c 01       	movw	r10, r24
	uint8_t retval = SUCCESS;
	uint16_t baseAddr = 0;

	if(pTaskInfo->portNum == USER_PORT_1)
   1879c:	dc 01       	movw	r26, r24
   1879e:	11 96       	adiw	r26, 0x01	; 1
   187a0:	8c 91       	ld	r24, X
   187a2:	81 30       	cpi	r24, 0x01	; 1
   187a4:	21 f4       	brne	.+8      	; 0x187ae <TurnerC3_Init+0x2e>
   187a6:	c1 2c       	mov	r12, r1
   187a8:	03 e0       	ldi	r16, 0x03	; 3
   187aa:	d0 2e       	mov	r13, r16
   187ac:	0e c0       	rjmp	.+28     	; 0x187ca <TurnerC3_Init+0x4a>
		baseAddr = EEPROM_PM1_START;
	if(pTaskInfo->portNum == USER_PORT_2)
   187ae:	82 30       	cpi	r24, 0x02	; 2
   187b0:	21 f4       	brne	.+8      	; 0x187ba <TurnerC3_Init+0x3a>
   187b2:	c1 2c       	mov	r12, r1
   187b4:	15 e0       	ldi	r17, 0x05	; 5
   187b6:	d1 2e       	mov	r13, r17
   187b8:	08 c0       	rjmp	.+16     	; 0x187ca <TurnerC3_Init+0x4a>
		baseAddr = EEPROM_PM2_START;
	if(pTaskInfo->portNum == USER_PORT_3)
   187ba:	83 30       	cpi	r24, 0x03	; 3
   187bc:	21 f4       	brne	.+8      	; 0x187c6 <TurnerC3_Init+0x46>
   187be:	c1 2c       	mov	r12, r1
   187c0:	b7 e0       	ldi	r27, 0x07	; 7
   187c2:	db 2e       	mov	r13, r27
   187c4:	02 c0       	rjmp	.+4      	; 0x187ca <TurnerC3_Init+0x4a>
   187c6:	cc 24       	eor	r12, r12
   187c8:	dd 24       	eor	r13, r13
		baseAddr = EEPROM_PM3_START;

	if(pTaskInfo->pBuf != NULL)
   187ca:	d5 01       	movw	r26, r10
   187cc:	14 96       	adiw	r26, 0x04	; 4
   187ce:	ed 91       	ld	r30, X+
   187d0:	fc 91       	ld	r31, X
   187d2:	15 97       	sbiw	r26, 0x05	; 5
   187d4:	30 97       	sbiw	r30, 0x00	; 0
   187d6:	41 f0       	breq	.+16     	; 0x187e8 <TurnerC3_Init+0x68>
		memset(pTaskInfo->pBuf, 0, TASK_BUF_SIZE);
   187d8:	80 ea       	ldi	r24, 0xA0	; 160
   187da:	9f e0       	ldi	r25, 0x0F	; 15
   187dc:	df 01       	movw	r26, r30
   187de:	9c 01       	movw	r18, r24
   187e0:	1d 92       	st	X+, r1
   187e2:	21 50       	subi	r18, 0x01	; 1
   187e4:	30 40       	sbci	r19, 0x00	; 0
   187e6:	e1 f7       	brne	.-8      	; 0x187e0 <TurnerC3_Init+0x60>

	switch(pTaskInfo->taskID)
   187e8:	d5 01       	movw	r26, r10
   187ea:	8c 91       	ld	r24, X
   187ec:	82 30       	cpi	r24, 0x02	; 2
   187ee:	79 f0       	breq	.+30     	; 0x1880e <TurnerC3_Init+0x8e>
   187f0:	83 30       	cpi	r24, 0x03	; 3
   187f2:	c1 f0       	breq	.+48     	; 0x18824 <TurnerC3_Init+0xa4>
   187f4:	81 30       	cpi	r24, 0x01	; 1
   187f6:	c1 f4       	brne	.+48     	; 0x18828 <TurnerC3_Init+0xa8>
	{
		case 1:
			BSET(DDRK, _BV(PK2));
   187f8:	80 91 07 01 	lds	r24, 0x0107
   187fc:	84 60       	ori	r24, 0x04	; 4
   187fe:	80 93 07 01 	sts	0x0107, r24
			BSET(PORTK, _BV(PK2));
   18802:	80 91 08 01 	lds	r24, 0x0108
   18806:	84 60       	ori	r24, 0x04	; 4
   18808:	80 93 08 01 	sts	0x0108, r24
   1880c:	0d c0       	rjmp	.+26     	; 0x18828 <TurnerC3_Init+0xa8>
			break;
		case 2:
			BSET(DDRH, _BV(PH6));
   1880e:	80 91 01 01 	lds	r24, 0x0101
   18812:	80 64       	ori	r24, 0x40	; 64
   18814:	80 93 01 01 	sts	0x0101, r24
			BSET(PORTH, _BV(PH6));
   18818:	80 91 02 01 	lds	r24, 0x0102
   1881c:	80 64       	ori	r24, 0x40	; 64
   1881e:	80 93 02 01 	sts	0x0102, r24
   18822:	02 c0       	rjmp	.+4      	; 0x18828 <TurnerC3_Init+0xa8>
			break;
		case 3:
			BSET(DDRF, _BV(PF2));
   18824:	82 9a       	sbi	0x10, 2	; 16
			BSET(PORTF, _BV(PF2));
   18826:	8a 9a       	sbi	0x11, 2	; 17
			break;
	}

	OSuartInitPort(pTaskInfo->portNum, 57600, UART_MODE_EIGHT_DATA_BITS, UART_MODE_ONE_STOP_BIT, UART_MODE_NO_PARITY);
   18828:	f5 01       	movw	r30, r10
   1882a:	81 81       	ldd	r24, Z+1	; 0x01
   1882c:	40 e0       	ldi	r20, 0x00	; 0
   1882e:	51 ee       	ldi	r21, 0xE1	; 225
   18830:	60 e0       	ldi	r22, 0x00	; 0
   18832:	70 e0       	ldi	r23, 0x00	; 0
   18834:	26 e0       	ldi	r18, 0x06	; 6
   18836:	00 e0       	ldi	r16, 0x00	; 0
   18838:	ee 24       	eor	r14, r14
   1883a:	0e 94 38 33 	call	0x6670	; 0x6670 <OSuartInitPort>

	if(baseAddr != 0)
   1883e:	c1 14       	cp	r12, r1
   18840:	d1 04       	cpc	r13, r1
   18842:	b1 f1       	breq	.+108    	; 0x188b0 <TurnerC3_Init+0x130>
	{
		uint32_t temp;
		EepromReadBlock((void*)(baseAddr + TURNER_C3_SAMPLE_OFFSET), (void*)&temp, 4);
   18844:	86 01       	movw	r16, r12
   18846:	00 5c       	subi	r16, 0xC0	; 192
   18848:	1f 4f       	sbci	r17, 0xFF	; 255
   1884a:	c8 01       	movw	r24, r16
   1884c:	6e 01       	movw	r12, r28
   1884e:	08 94       	sec
   18850:	c1 1c       	adc	r12, r1
   18852:	d1 1c       	adc	r13, r1
   18854:	b6 01       	movw	r22, r12
   18856:	44 e0       	ldi	r20, 0x04	; 4
   18858:	50 e0       	ldi	r21, 0x00	; 0
   1885a:	0e 94 67 37 	call	0x6ece	; 0x6ece <EepromReadBlock>

		if((temp == 0xFFFFFFFF) || (temp == 0x00000000))
   1885e:	89 81       	ldd	r24, Y+1	; 0x01
   18860:	9a 81       	ldd	r25, Y+2	; 0x02
   18862:	ab 81       	ldd	r26, Y+3	; 0x03
   18864:	bc 81       	ldd	r27, Y+4	; 0x04
   18866:	01 97       	sbiw	r24, 0x01	; 1
   18868:	a1 09       	sbc	r26, r1
   1886a:	b1 09       	sbc	r27, r1
   1886c:	8e 5f       	subi	r24, 0xFE	; 254
   1886e:	9f 4f       	sbci	r25, 0xFF	; 255
   18870:	af 4f       	sbci	r26, 0xFF	; 255
   18872:	bf 4f       	sbci	r27, 0xFF	; 255
   18874:	70 f0       	brcs	.+28     	; 0x18892 <TurnerC3_Init+0x112>
		{
			temp = 60;
   18876:	8c e3       	ldi	r24, 0x3C	; 60
   18878:	90 e0       	ldi	r25, 0x00	; 0
   1887a:	a0 e0       	ldi	r26, 0x00	; 0
   1887c:	b0 e0       	ldi	r27, 0x00	; 0
   1887e:	89 83       	std	Y+1, r24	; 0x01
   18880:	9a 83       	std	Y+2, r25	; 0x02
   18882:	ab 83       	std	Y+3, r26	; 0x03
   18884:	bc 83       	std	Y+4, r27	; 0x04
			EepromWriteBlock((void*)(baseAddr + TURNER_C3_SAMPLE_OFFSET), (void*)&temp, 4);
   18886:	c8 01       	movw	r24, r16
   18888:	b6 01       	movw	r22, r12
   1888a:	44 e0       	ldi	r20, 0x04	; 4
   1888c:	50 e0       	ldi	r21, 0x00	; 0
   1888e:	0e 94 f7 37 	call	0x6fee	; 0x6fee <EepromWriteBlock>
		}
		pTaskInfo->pBuf->sampleRate = temp;
   18892:	d5 01       	movw	r26, r10
   18894:	14 96       	adiw	r26, 0x04	; 4
   18896:	ed 91       	ld	r30, X+
   18898:	fc 91       	ld	r31, X
   1889a:	15 97       	sbiw	r26, 0x05	; 5
   1889c:	e0 50       	subi	r30, 0x00	; 0
   1889e:	fb 4f       	sbci	r31, 0xFB	; 251
   188a0:	89 81       	ldd	r24, Y+1	; 0x01
   188a2:	9a 81       	ldd	r25, Y+2	; 0x02
   188a4:	ab 81       	ldd	r26, Y+3	; 0x03
   188a6:	bc 81       	ldd	r27, Y+4	; 0x04
   188a8:	80 83       	st	Z, r24
   188aa:	91 83       	std	Z+1, r25	; 0x01
   188ac:	a2 83       	std	Z+2, r26	; 0x02
   188ae:	b3 83       	std	Z+3, r27	; 0x03
	}

	OSTimeDlyHMSM(0,0,1,0);
   188b0:	80 e0       	ldi	r24, 0x00	; 0
   188b2:	60 e0       	ldi	r22, 0x00	; 0
   188b4:	41 e0       	ldi	r20, 0x01	; 1
   188b6:	20 e0       	ldi	r18, 0x00	; 0
   188b8:	30 e0       	ldi	r19, 0x00	; 0
   188ba:	0e 94 2a 2e 	call	0x5c54	; 0x5c54 <OSTimeDlyHMSM>

	pTaskInfo->pBuf->sampleC3 = FALSE;
   188be:	d5 01       	movw	r26, r10
   188c0:	14 96       	adiw	r26, 0x04	; 4
   188c2:	ed 91       	ld	r30, X+
   188c4:	fc 91       	ld	r31, X
   188c6:	15 97       	sbiw	r26, 0x05	; 5
   188c8:	ec 5f       	subi	r30, 0xFC	; 252
   188ca:	fa 4f       	sbci	r31, 0xFA	; 250
   188cc:	11 92       	st	Z+, r1
	pTaskInfo->pBuf->powerOn = FALSE;
   188ce:	10 82       	st	Z, r1

	return retval;
}
   188d0:	8f ef       	ldi	r24, 0xFF	; 255
   188d2:	0f 90       	pop	r0
   188d4:	0f 90       	pop	r0
   188d6:	0f 90       	pop	r0
   188d8:	0f 90       	pop	r0
   188da:	cf 91       	pop	r28
   188dc:	df 91       	pop	r29
   188de:	1f 91       	pop	r17
   188e0:	0f 91       	pop	r16
   188e2:	ef 90       	pop	r14
   188e4:	df 90       	pop	r13
   188e6:	cf 90       	pop	r12
   188e8:	bf 90       	pop	r11
   188ea:	af 90       	pop	r10
   188ec:	08 95       	ret

000188ee <SerialPortPassThroughC3>:
	return retval;
}

void SerialPortPassThroughC3(uint8_t port)
{
	readyForSerialPassThru = TRUE;
   188ee:	8f ef       	ldi	r24, 0xFF	; 255
   188f0:	80 93 9e a1 	sts	0xA19E, r24

	while(1)
	{
		OSTimeDlyHMSM(1,0,0,0);
   188f4:	81 e0       	ldi	r24, 0x01	; 1
   188f6:	60 e0       	ldi	r22, 0x00	; 0
   188f8:	40 e0       	ldi	r20, 0x00	; 0
   188fa:	20 e0       	ldi	r18, 0x00	; 0
   188fc:	30 e0       	ldi	r19, 0x00	; 0
   188fe:	0e 94 2a 2e 	call	0x5c54	; 0x5c54 <OSTimeDlyHMSM>
   18902:	f8 cf       	rjmp	.-16     	; 0x188f4 <SerialPortPassThroughC3+0x6>

00018904 <TurnerC3_Orig_QueueFile>:
	return retval;
}


uint8_t TurnerC3_Orig_QueueFile(PTURNER_C3_ORIG_TASK pTaskInfo, uint32_t fileID)
{
   18904:	8f 92       	push	r8
   18906:	9f 92       	push	r9
   18908:	af 92       	push	r10
   1890a:	bf 92       	push	r11
   1890c:	cf 92       	push	r12
   1890e:	df 92       	push	r13
   18910:	ef 92       	push	r14
   18912:	ff 92       	push	r15
   18914:	0f 93       	push	r16
   18916:	1f 93       	push	r17
   18918:	df 93       	push	r29
   1891a:	cf 93       	push	r28
   1891c:	cd b7       	in	r28, 0x3d	; 61
   1891e:	de b7       	in	r29, 0x3e	; 62
   18920:	62 97       	sbiw	r28, 0x12	; 18
   18922:	0f b6       	in	r0, 0x3f	; 63
   18924:	f8 94       	cli
   18926:	de bf       	out	0x3e, r29	; 62
   18928:	0f be       	out	0x3f, r0	; 63
   1892a:	cd bf       	out	0x3d, r28	; 61
   1892c:	4c 01       	movw	r8, r24
   1892e:	5a 01       	movw	r10, r20
   18930:	6b 01       	movw	r12, r22
	uint8_t retval = FAIL;
	PFS_REPORT pReport;
	uint8_t err = 0;
   18932:	19 82       	std	Y+1, r1	; 0x01
	tm* dateTime;
	time_t time;

	OSMutexPend(pMutexFloatQueue, INFINITE, &err);
   18934:	80 91 51 19 	lds	r24, 0x1951
   18938:	90 91 52 19 	lds	r25, 0x1952
   1893c:	60 e0       	ldi	r22, 0x00	; 0
   1893e:	70 e0       	ldi	r23, 0x00	; 0
   18940:	ae 01       	movw	r20, r28
   18942:	4f 5f       	subi	r20, 0xFF	; 255
   18944:	5f 4f       	sbci	r21, 0xFF	; 255
   18946:	0e 94 c2 28 	call	0x5184	; 0x5184 <OSMutexPend>

	pReport = (PFS_REPORT)&(txFloatData[headFloatTx]);
   1894a:	80 91 93 07 	lds	r24, 0x0793
   1894e:	90 e0       	ldi	r25, 0x00	; 0
   18950:	26 e3       	ldi	r18, 0x36	; 54
   18952:	31 e0       	ldi	r19, 0x01	; 1
   18954:	82 9f       	mul	r24, r18
   18956:	80 01       	movw	r16, r0
   18958:	83 9f       	mul	r24, r19
   1895a:	10 0d       	add	r17, r0
   1895c:	92 9f       	mul	r25, r18
   1895e:	10 0d       	add	r17, r0
   18960:	11 24       	eor	r1, r1
   18962:	03 5a       	subi	r16, 0xA3	; 163
   18964:	16 45       	sbci	r17, 0x56	; 86

	memset(pReport, 0, sizeof(FS_REPORT));
   18966:	8a e5       	ldi	r24, 0x5A	; 90
   18968:	d8 01       	movw	r26, r16
   1896a:	1d 92       	st	X+, r1
   1896c:	8a 95       	dec	r24
   1896e:	e9 f7       	brne	.-6      	; 0x1896a <TurnerC3_Orig_QueueFile+0x66>

	pReport->headers.length  = sizeof(FS_REPORT) + CRC16_SIZE;
   18970:	8c e5       	ldi	r24, 0x5C	; 92
   18972:	90 e0       	ldi	r25, 0x00	; 0
   18974:	f8 01       	movw	r30, r16
   18976:	91 83       	std	Z+1, r25	; 0x01
   18978:	80 83       	st	Z, r24
	pReport->headers.destination = FLOAT_FS_INTERFACE;
   1897a:	85 e0       	ldi	r24, 0x05	; 5
   1897c:	90 e0       	ldi	r25, 0x00	; 0
   1897e:	93 83       	std	Z+3, r25	; 0x03
   18980:	82 83       	std	Z+2, r24	; 0x02
	pReport->type = NEW_FILE_AVAILABLE;
   18982:	80 e6       	ldi	r24, 0x60	; 96
   18984:	84 87       	std	Z+12, r24	; 0x0c

	time=gettime();
   18986:	0e 94 3c 34 	call	0x6878	; 0x6878 <gettime>
   1898a:	6a 83       	std	Y+2, r22	; 0x02
   1898c:	7b 83       	std	Y+3, r23	; 0x03
   1898e:	8c 83       	std	Y+4, r24	; 0x04
   18990:	9d 83       	std	Y+5, r25	; 0x05

	//Need to fill in these values appropriately
	pReport->newFile.fileSize = fileOutSize[pTaskInfo->portNum];
   18992:	d4 01       	movw	r26, r8
   18994:	11 96       	adiw	r26, 0x01	; 1
   18996:	ec 91       	ld	r30, X
   18998:	f0 e0       	ldi	r31, 0x00	; 0
   1899a:	ee 0f       	add	r30, r30
   1899c:	ff 1f       	adc	r31, r31
   1899e:	ef 5a       	subi	r30, 0xAF	; 175
   189a0:	f2 46       	sbci	r31, 0x62	; 98
   189a2:	80 81       	ld	r24, Z
   189a4:	91 81       	ldd	r25, Z+1	; 0x01
   189a6:	a0 e0       	ldi	r26, 0x00	; 0
   189a8:	b0 e0       	ldi	r27, 0x00	; 0
   189aa:	f8 01       	movw	r30, r16
   189ac:	82 8f       	std	Z+26, r24	; 0x1a
   189ae:	93 8f       	std	Z+27, r25	; 0x1b
   189b0:	a4 8f       	std	Z+28, r26	; 0x1c
   189b2:	b5 8f       	std	Z+29, r27	; 0x1d
	dateTime = gmtime(&time);
   189b4:	92 e0       	ldi	r25, 0x02	; 2
   189b6:	e9 2e       	mov	r14, r25
   189b8:	f1 2c       	mov	r15, r1
   189ba:	ec 0e       	add	r14, r28
   189bc:	fd 1e       	adc	r15, r29
   189be:	c7 01       	movw	r24, r14
   189c0:	0e 94 32 35 	call	0x6a64	; 0x6a64 <gmtime>
   189c4:	fc 01       	movw	r30, r24
	pReport->newFile.creationDate.day = dateTime->tm_mday;
   189c6:	86 81       	ldd	r24, Z+6	; 0x06
   189c8:	d8 01       	movw	r26, r16
   189ca:	92 96       	adiw	r26, 0x22	; 34
   189cc:	8c 93       	st	X, r24
   189ce:	92 97       	sbiw	r26, 0x22	; 34
	pReport->newFile.creationDate.hour = dateTime->tm_hour;
   189d0:	84 81       	ldd	r24, Z+4	; 0x04
   189d2:	5e 96       	adiw	r26, 0x1e	; 30
   189d4:	8c 93       	st	X, r24
   189d6:	5e 97       	sbiw	r26, 0x1e	; 30
	pReport->newFile.creationDate.minute = dateTime->tm_min;
   189d8:	82 81       	ldd	r24, Z+2	; 0x02
   189da:	5f 96       	adiw	r26, 0x1f	; 31
   189dc:	8c 93       	st	X, r24
   189de:	5f 97       	sbiw	r26, 0x1f	; 31
	pReport->newFile.creationDate.month = dateTime->tm_mon + 1;
   189e0:	80 85       	ldd	r24, Z+8	; 0x08
   189e2:	8f 5f       	subi	r24, 0xFF	; 255
   189e4:	91 96       	adiw	r26, 0x21	; 33
   189e6:	8c 93       	st	X, r24
   189e8:	91 97       	sbiw	r26, 0x21	; 33
	pReport->newFile.creationDate.second = dateTime->tm_sec;
   189ea:	80 81       	ld	r24, Z
   189ec:	90 96       	adiw	r26, 0x20	; 32
   189ee:	8c 93       	st	X, r24
   189f0:	90 97       	sbiw	r26, 0x20	; 32
	pReport->newFile.creationDate.year = (uint8_t)(dateTime->tm_year - 100);
   189f2:	82 85       	ldd	r24, Z+10	; 0x0a
   189f4:	84 56       	subi	r24, 0x64	; 100
   189f6:	93 96       	adiw	r26, 0x23	; 35
   189f8:	8c 93       	st	X, r24
	dateTime = gmtime(&time);
   189fa:	c7 01       	movw	r24, r14
   189fc:	0e 94 32 35 	call	0x6a64	; 0x6a64 <gmtime>
   18a00:	fc 01       	movw	r30, r24
	pReport->newFile.modifiedDate.day = dateTime->tm_mday;
   18a02:	86 81       	ldd	r24, Z+6	; 0x06
   18a04:	d8 01       	movw	r26, r16
   18a06:	98 96       	adiw	r26, 0x28	; 40
   18a08:	8c 93       	st	X, r24
   18a0a:	98 97       	sbiw	r26, 0x28	; 40
	pReport->newFile.modifiedDate.hour = dateTime->tm_hour;
   18a0c:	84 81       	ldd	r24, Z+4	; 0x04
   18a0e:	94 96       	adiw	r26, 0x24	; 36
   18a10:	8c 93       	st	X, r24
   18a12:	94 97       	sbiw	r26, 0x24	; 36
	pReport->newFile.modifiedDate.minute = dateTime->tm_min;
   18a14:	82 81       	ldd	r24, Z+2	; 0x02
   18a16:	95 96       	adiw	r26, 0x25	; 37
   18a18:	8c 93       	st	X, r24
   18a1a:	95 97       	sbiw	r26, 0x25	; 37
	pReport->newFile.modifiedDate.month = dateTime->tm_mon + 1;
   18a1c:	80 85       	ldd	r24, Z+8	; 0x08
   18a1e:	8f 5f       	subi	r24, 0xFF	; 255
   18a20:	97 96       	adiw	r26, 0x27	; 39
   18a22:	8c 93       	st	X, r24
   18a24:	97 97       	sbiw	r26, 0x27	; 39
	pReport->newFile.modifiedDate.second = dateTime->tm_sec;
   18a26:	80 81       	ld	r24, Z
   18a28:	96 96       	adiw	r26, 0x26	; 38
   18a2a:	8c 93       	st	X, r24
   18a2c:	96 97       	sbiw	r26, 0x26	; 38
	pReport->newFile.modifiedDate.year = (uint8_t)(dateTime->tm_year - 100);
   18a2e:	82 85       	ldd	r24, Z+10	; 0x0a
   18a30:	84 56       	subi	r24, 0x64	; 100
   18a32:	99 96       	adiw	r26, 0x29	; 41
   18a34:	8c 93       	st	X, r24
   18a36:	99 97       	sbiw	r26, 0x29	; 41

	pReport->newFile.fileAttributes = 0;
   18a38:	9a 96       	adiw	r26, 0x2a	; 42
   18a3a:	1c 92       	st	X, r1
	memset(&pReport->newFile.calculatedMD5, 0, sizeof(MD5));
   18a3c:	c8 01       	movw	r24, r16
   18a3e:	cf 96       	adiw	r24, 0x3f	; 63
   18a40:	20 e1       	ldi	r18, 0x10	; 16
   18a42:	dc 01       	movw	r26, r24
   18a44:	82 2f       	mov	r24, r18
   18a46:	1d 92       	st	X+, r1
   18a48:	8a 95       	dec	r24
   18a4a:	e9 f7       	brne	.-6      	; 0x18a46 <TurnerC3_Orig_QueueFile+0x142>
	memset(&pReport->newFile.providedMD5, 0, sizeof(MD5));
   18a4c:	c8 01       	movw	r24, r16
   18a4e:	8d 96       	adiw	r24, 0x2d	; 45
   18a50:	dc 01       	movw	r26, r24
   18a52:	1d 92       	st	X+, r1
   18a54:	2a 95       	dec	r18
   18a56:	e9 f7       	brne	.-6      	; 0x18a52 <TurnerC3_Orig_QueueFile+0x14e>
	pReport->newFile.calculatedCRC = 0;
   18a58:	f8 01       	movw	r30, r16
   18a5a:	16 ae       	std	Z+62, r1	; 0x3e
   18a5c:	15 ae       	std	Z+61, r1	; 0x3d
	pReport->newFile.providedCRC = 0;
   18a5e:	14 a6       	std	Z+44, r1	; 0x2c
   18a60:	13 a6       	std	Z+43, r1	; 0x2b
	pReport->newFile.storageControllerAddress = mainTaskAddress | pTaskInfo->portNum;
   18a62:	d4 01       	movw	r26, r8
   18a64:	11 96       	adiw	r26, 0x01	; 1
   18a66:	8c 91       	ld	r24, X
   18a68:	90 e0       	ldi	r25, 0x00	; 0
   18a6a:	20 91 e4 03 	lds	r18, 0x03E4
   18a6e:	30 91 e5 03 	lds	r19, 0x03E5
   18a72:	82 2b       	or	r24, r18
   18a74:	93 2b       	or	r25, r19
   18a76:	96 87       	std	Z+14, r25	; 0x0e
   18a78:	85 87       	std	Z+13, r24	; 0x0d

	char fileName[13];
	sprintf(fileName, "%.8lX.txt", fileID);
   18a7a:	ed b7       	in	r30, 0x3d	; 61
   18a7c:	fe b7       	in	r31, 0x3e	; 62
   18a7e:	38 97       	sbiw	r30, 0x08	; 8
   18a80:	0f b6       	in	r0, 0x3f	; 63
   18a82:	f8 94       	cli
   18a84:	fe bf       	out	0x3e, r31	; 62
   18a86:	0f be       	out	0x3f, r0	; 63
   18a88:	ed bf       	out	0x3d, r30	; 61
   18a8a:	31 96       	adiw	r30, 0x01	; 1
   18a8c:	86 e0       	ldi	r24, 0x06	; 6
   18a8e:	e8 2e       	mov	r14, r24
   18a90:	f1 2c       	mov	r15, r1
   18a92:	ec 0e       	add	r14, r28
   18a94:	fd 1e       	adc	r15, r29
   18a96:	ad b7       	in	r26, 0x3d	; 61
   18a98:	be b7       	in	r27, 0x3e	; 62
   18a9a:	12 96       	adiw	r26, 0x02	; 2
   18a9c:	fc 92       	st	X, r15
   18a9e:	ee 92       	st	-X, r14
   18aa0:	11 97       	sbiw	r26, 0x01	; 1
   18aa2:	82 e1       	ldi	r24, 0x12	; 18
   18aa4:	95 e0       	ldi	r25, 0x05	; 5
   18aa6:	93 83       	std	Z+3, r25	; 0x03
   18aa8:	82 83       	std	Z+2, r24	; 0x02
   18aaa:	a4 82       	std	Z+4, r10	; 0x04
   18aac:	b5 82       	std	Z+5, r11	; 0x05
   18aae:	c6 82       	std	Z+6, r12	; 0x06
   18ab0:	d7 82       	std	Z+7, r13	; 0x07
   18ab2:	0e 94 2d f1 	call	0x1e25a	; 0x1e25a <sprintf>

	DotToPad(pReport->newFile.fileName, fileName);
   18ab6:	ed b7       	in	r30, 0x3d	; 61
   18ab8:	fe b7       	in	r31, 0x3e	; 62
   18aba:	38 96       	adiw	r30, 0x08	; 8
   18abc:	0f b6       	in	r0, 0x3f	; 63
   18abe:	f8 94       	cli
   18ac0:	fe bf       	out	0x3e, r31	; 62
   18ac2:	0f be       	out	0x3f, r0	; 63
   18ac4:	ed bf       	out	0x3d, r30	; 61
   18ac6:	c8 01       	movw	r24, r16
   18ac8:	0f 96       	adiw	r24, 0x0f	; 15
   18aca:	b7 01       	movw	r22, r14
   18acc:	0e 94 87 3e 	call	0x7d0e	; 0x7d0e <DotToPad>

	(headFloatTx < (MAX_FLOAT_BUFFERS - 1)) ? (headFloatTx++) : (headFloatTx = 0);
   18ad0:	80 91 93 07 	lds	r24, 0x0793
   18ad4:	87 30       	cpi	r24, 0x07	; 7
   18ad6:	20 f4       	brcc	.+8      	; 0x18ae0 <TurnerC3_Orig_QueueFile+0x1dc>
   18ad8:	8f 5f       	subi	r24, 0xFF	; 255
   18ada:	80 93 93 07 	sts	0x0793, r24
   18ade:	02 c0       	rjmp	.+4      	; 0x18ae4 <TurnerC3_Orig_QueueFile+0x1e0>
   18ae0:	10 92 93 07 	sts	0x0793, r1
	
	if(headFloatTx == tailFloatTx)
   18ae4:	90 91 93 07 	lds	r25, 0x0793
   18ae8:	80 91 94 07 	lds	r24, 0x0794
   18aec:	98 17       	cp	r25, r24
   18aee:	41 f4       	brne	.+16     	; 0x18b00 <TurnerC3_Orig_QueueFile+0x1fc>
	{
		(tailFloatTx < (MAX_FLOAT_BUFFERS - 1)) ? (tailFloatTx++) : (tailFloatTx = 0);
   18af0:	97 30       	cpi	r25, 0x07	; 7
   18af2:	20 f4       	brcc	.+8      	; 0x18afc <TurnerC3_Orig_QueueFile+0x1f8>
   18af4:	9f 5f       	subi	r25, 0xFF	; 255
   18af6:	90 93 94 07 	sts	0x0794, r25
   18afa:	02 c0       	rjmp	.+4      	; 0x18b00 <TurnerC3_Orig_QueueFile+0x1fc>
   18afc:	10 92 94 07 	sts	0x0794, r1
	}

	OSMutexPost(pMutexFloatQueue);
   18b00:	80 91 51 19 	lds	r24, 0x1951
   18b04:	90 91 52 19 	lds	r25, 0x1952
   18b08:	0e 94 36 27 	call	0x4e6c	; 0x4e6c <OSMutexPost>

	return retval;
}
   18b0c:	80 e0       	ldi	r24, 0x00	; 0
   18b0e:	62 96       	adiw	r28, 0x12	; 18
   18b10:	0f b6       	in	r0, 0x3f	; 63
   18b12:	f8 94       	cli
   18b14:	de bf       	out	0x3e, r29	; 62
   18b16:	0f be       	out	0x3f, r0	; 63
   18b18:	cd bf       	out	0x3d, r28	; 61
   18b1a:	cf 91       	pop	r28
   18b1c:	df 91       	pop	r29
   18b1e:	1f 91       	pop	r17
   18b20:	0f 91       	pop	r16
   18b22:	ff 90       	pop	r15
   18b24:	ef 90       	pop	r14
   18b26:	df 90       	pop	r13
   18b28:	cf 90       	pop	r12
   18b2a:	bf 90       	pop	r11
   18b2c:	af 90       	pop	r10
   18b2e:	9f 90       	pop	r9
   18b30:	8f 90       	pop	r8
   18b32:	08 95       	ret

00018b34 <TurnerC3_Orig_Rx>:
	return;
}


uint8_t TurnerC3_Orig_Rx(PTURNER_C3_ORIG_TASK pTaskInfo, char* pBuffer, uint16_t* pLen, char* eol, int eolLen)
{
   18b34:	4f 92       	push	r4
   18b36:	5f 92       	push	r5
   18b38:	6f 92       	push	r6
   18b3a:	7f 92       	push	r7
   18b3c:	8f 92       	push	r8
   18b3e:	9f 92       	push	r9
   18b40:	af 92       	push	r10
   18b42:	bf 92       	push	r11
   18b44:	cf 92       	push	r12
   18b46:	df 92       	push	r13
   18b48:	ef 92       	push	r14
   18b4a:	ff 92       	push	r15
   18b4c:	0f 93       	push	r16
   18b4e:	1f 93       	push	r17
   18b50:	df 93       	push	r29
   18b52:	cf 93       	push	r28
   18b54:	0f 92       	push	r0
   18b56:	cd b7       	in	r28, 0x3d	; 61
   18b58:	de b7       	in	r29, 0x3e	; 62
   18b5a:	4c 01       	movw	r8, r24
   18b5c:	f6 2e       	mov	r15, r22
   18b5e:	e7 2e       	mov	r14, r23
   18b60:	6a 01       	movw	r12, r20
   18b62:	29 01       	movw	r4, r18
   18b64:	38 01       	movw	r6, r16
	uint8_t retval = FAIL;
	char* pChar = pBuffer;
	uint16_t count = 0;
	BOOL done = FALSE;
	int compare = 0;
	uint8_t err = 0;
   18b66:	19 82       	std	Y+1, r1	; 0x01
	char c = 0;


	c = (char) OSuartGetCharWait(pTaskInfo->portNum, 256, &err);	//Wait 2 seconds for first character
   18b68:	fc 01       	movw	r30, r24
   18b6a:	81 81       	ldd	r24, Z+1	; 0x01
   18b6c:	60 e0       	ldi	r22, 0x00	; 0
   18b6e:	71 e0       	ldi	r23, 0x01	; 1
   18b70:	5e 01       	movw	r10, r28
   18b72:	08 94       	sec
   18b74:	a1 1c       	adc	r10, r1
   18b76:	b1 1c       	adc	r11, r1
   18b78:	a5 01       	movw	r20, r10
   18b7a:	0e 94 b8 32 	call	0x6570	; 0x6570 <OSuartGetCharWait>
   18b7e:	28 2f       	mov	r18, r24
			
	if(err != OS_ERR_NONE)
   18b80:	89 81       	ldd	r24, Y+1	; 0x01
   18b82:	88 23       	and	r24, r24
   18b84:	21 f0       	breq	.+8      	; 0x18b8e <TurnerC3_Orig_Rx+0x5a>
		{
			*pLen = 0;
   18b86:	f6 01       	movw	r30, r12
   18b88:	11 82       	std	Z+1, r1	; 0x01
   18b8a:	10 82       	st	Z, r1
   18b8c:	17 c0       	rjmp	.+46     	; 0x18bbc <TurnerC3_Orig_Rx+0x88>
			return retval;
		}

	*pChar = c;
   18b8e:	8f 2d       	mov	r24, r15
   18b90:	9e 2d       	mov	r25, r14
   18b92:	8c 01       	movw	r16, r24
   18b94:	f8 01       	movw	r30, r16
   18b96:	21 93       	st	Z+, r18
   18b98:	8f 01       	movw	r16, r30
   18b9a:	31 e0       	ldi	r19, 0x01	; 1
   18b9c:	e3 2e       	mov	r14, r19
   18b9e:	f1 2c       	mov	r15, r1
	pChar++;
	count++;

	while((done == FALSE) && (count<110))
	{
		c = (char) OSuartGetCharWait(pTaskInfo->portNum, 256, &err);
   18ba0:	f4 01       	movw	r30, r8
   18ba2:	81 81       	ldd	r24, Z+1	; 0x01
   18ba4:	60 e0       	ldi	r22, 0x00	; 0
   18ba6:	71 e0       	ldi	r23, 0x01	; 1
   18ba8:	a5 01       	movw	r20, r10
   18baa:	0e 94 b8 32 	call	0x6570	; 0x6570 <OSuartGetCharWait>
   18bae:	98 2f       	mov	r25, r24
			
		if(err != OS_ERR_NONE)
   18bb0:	89 81       	ldd	r24, Y+1	; 0x01
   18bb2:	88 23       	and	r24, r24
   18bb4:	29 f0       	breq	.+10     	; 0x18bc0 <TurnerC3_Orig_Rx+0x8c>
		{
			*pLen = count;
   18bb6:	f6 01       	movw	r30, r12
   18bb8:	f1 82       	std	Z+1, r15	; 0x01
   18bba:	e0 82       	st	Z, r14
   18bbc:	80 e0       	ldi	r24, 0x00	; 0
   18bbe:	18 c0       	rjmp	.+48     	; 0x18bf0 <TurnerC3_Orig_Rx+0xbc>
			return retval;
		}

		*pChar = c;
   18bc0:	f8 01       	movw	r30, r16
   18bc2:	90 83       	st	Z, r25
		pChar++;
		count++;
   18bc4:	08 94       	sec
   18bc6:	e1 1c       	adc	r14, r1
   18bc8:	f1 1c       	adc	r15, r1

		if(count >= 1)
		{
			compare = strncmp((char *)(pChar - 1), eol, eolLen);
   18bca:	c8 01       	movw	r24, r16
   18bcc:	b2 01       	movw	r22, r4
   18bce:	a3 01       	movw	r20, r6
   18bd0:	0e 94 59 f0 	call	0x1e0b2	; 0x1e0b2 <strncmp>
			if(compare == 0)
   18bd4:	00 97       	sbiw	r24, 0x00	; 0
   18bd6:	11 f4       	brne	.+4      	; 0x18bdc <TurnerC3_Orig_Rx+0xa8>
   18bd8:	8f ef       	ldi	r24, 0xFF	; 255
   18bda:	07 c0       	rjmp	.+14     	; 0x18bea <TurnerC3_Orig_Rx+0xb6>
   18bdc:	0f 5f       	subi	r16, 0xFF	; 255
   18bde:	1f 4f       	sbci	r17, 0xFF	; 255

	*pChar = c;
	pChar++;
	count++;

	while((done == FALSE) && (count<110))
   18be0:	fe e6       	ldi	r31, 0x6E	; 110
   18be2:	ef 16       	cp	r14, r31
   18be4:	f1 04       	cpc	r15, r1
   18be6:	e1 f6       	brne	.-72     	; 0x18ba0 <TurnerC3_Orig_Rx+0x6c>
   18be8:	80 e0       	ldi	r24, 0x00	; 0
				retval = SUCCESS;
				done = TRUE;
			}
		}
	}
	*pLen = count;
   18bea:	f6 01       	movw	r30, r12
   18bec:	f1 82       	std	Z+1, r15	; 0x01
   18bee:	e0 82       	st	Z, r14

	return retval;
}
   18bf0:	0f 90       	pop	r0
   18bf2:	cf 91       	pop	r28
   18bf4:	df 91       	pop	r29
   18bf6:	1f 91       	pop	r17
   18bf8:	0f 91       	pop	r16
   18bfa:	ff 90       	pop	r15
   18bfc:	ef 90       	pop	r14
   18bfe:	df 90       	pop	r13
   18c00:	cf 90       	pop	r12
   18c02:	bf 90       	pop	r11
   18c04:	af 90       	pop	r10
   18c06:	9f 90       	pop	r9
   18c08:	8f 90       	pop	r8
   18c0a:	7f 90       	pop	r7
   18c0c:	6f 90       	pop	r6
   18c0e:	5f 90       	pop	r5
   18c10:	4f 90       	pop	r4
   18c12:	08 95       	ret

00018c14 <ThreadSafeStrTok>:

	return retval;
}

static char* ThreadSafeStrTok(char** context, char* sep)
{
   18c14:	ef 92       	push	r14
   18c16:	ff 92       	push	r15
   18c18:	0f 93       	push	r16
   18c1a:	1f 93       	push	r17
   18c1c:	cf 93       	push	r28
   18c1e:	df 93       	push	r29
   18c20:	8c 01       	movw	r16, r24
   18c22:	7b 01       	movw	r14, r22
	if (!context || !*context) return "";
   18c24:	00 97       	sbiw	r24, 0x00	; 0
   18c26:	c1 f0       	breq	.+48     	; 0x18c58 <ThreadSafeStrTok+0x44>
   18c28:	dc 01       	movw	r26, r24
   18c2a:	cd 91       	ld	r28, X+
   18c2c:	dc 91       	ld	r29, X
   18c2e:	20 97       	sbiw	r28, 0x00	; 0
   18c30:	99 f0       	breq	.+38     	; 0x18c58 <ThreadSafeStrTok+0x44>

	char* retval = &(*context)[strspn(*context, sep)];
   18c32:	ce 01       	movw	r24, r28
   18c34:	0e 94 77 f0 	call	0x1e0ee	; 0x1e0ee <strspn>
   18c38:	c8 0f       	add	r28, r24
   18c3a:	d9 1f       	adc	r29, r25
	char* eos = &retval[strcspn(retval, sep)];
   18c3c:	ce 01       	movw	r24, r28
   18c3e:	b7 01       	movw	r22, r14
   18c40:	0e 94 40 f0 	call	0x1e080	; 0x1e080 <strcspn>
   18c44:	fe 01       	movw	r30, r28
   18c46:	e8 0f       	add	r30, r24
   18c48:	f9 1f       	adc	r31, r25

	if (*eos) *eos++ = '\0';
   18c4a:	80 81       	ld	r24, Z
   18c4c:	81 11       	cpse	r24, r1
   18c4e:	11 92       	st	Z+, r1

	*context = eos;
   18c50:	d8 01       	movw	r26, r16
   18c52:	ed 93       	st	X+, r30
   18c54:	fc 93       	st	X, r31
   18c56:	02 c0       	rjmp	.+4      	; 0x18c5c <ThreadSafeStrTok+0x48>
	return retval;
   18c58:	cc e1       	ldi	r28, 0x1C	; 28
   18c5a:	d5 e0       	ldi	r29, 0x05	; 5
}
   18c5c:	ce 01       	movw	r24, r28
   18c5e:	df 91       	pop	r29
   18c60:	cf 91       	pop	r28
   18c62:	1f 91       	pop	r17
   18c64:	0f 91       	pop	r16
   18c66:	ff 90       	pop	r15
   18c68:	ef 90       	pop	r14
   18c6a:	08 95       	ret

00018c6c <TurnerC3_Orig_QueueConsoleResponse>:
	return;

}

void TurnerC3_Orig_QueueConsoleResponse(PTURNER_C3_ORIG_TASK pTaskInfo)
{
   18c6c:	ef 92       	push	r14
   18c6e:	ff 92       	push	r15
   18c70:	0f 93       	push	r16
   18c72:	1f 93       	push	r17
   18c74:	df 93       	push	r29
   18c76:	cf 93       	push	r28
   18c78:	0f 92       	push	r0
   18c7a:	cd b7       	in	r28, 0x3d	; 61
   18c7c:	de b7       	in	r29, 0x3e	; 62
   18c7e:	7c 01       	movw	r14, r24
	PCONSOLE_ACK_XMIT_2 pReport;
	uint8_t err = 0;
   18c80:	19 82       	std	Y+1, r1	; 0x01
	char* pData;

	OSMutexPend(pMutexFloatQueue, INFINITE, &err);
   18c82:	80 91 51 19 	lds	r24, 0x1951
   18c86:	90 91 52 19 	lds	r25, 0x1952
   18c8a:	60 e0       	ldi	r22, 0x00	; 0
   18c8c:	70 e0       	ldi	r23, 0x00	; 0
   18c8e:	ae 01       	movw	r20, r28
   18c90:	4f 5f       	subi	r20, 0xFF	; 255
   18c92:	5f 4f       	sbci	r21, 0xFF	; 255
   18c94:	0e 94 c2 28 	call	0x5184	; 0x5184 <OSMutexPend>

	pReport = (PCONSOLE_ACK_XMIT_2)&(txFloatAck[headFloatAckTx]);
   18c98:	80 91 95 07 	lds	r24, 0x0795
   18c9c:	90 e0       	ldi	r25, 0x00	; 0
   18c9e:	26 e3       	ldi	r18, 0x36	; 54
   18ca0:	31 e0       	ldi	r19, 0x01	; 1
   18ca2:	82 9f       	mul	r24, r18
   18ca4:	80 01       	movw	r16, r0
   18ca6:	83 9f       	mul	r24, r19
   18ca8:	10 0d       	add	r17, r0
   18caa:	92 9f       	mul	r25, r18
   18cac:	10 0d       	add	r17, r0
   18cae:	11 24       	eor	r1, r1
   18cb0:	03 5f       	subi	r16, 0xF3	; 243
   18cb2:	1c 44       	sbci	r17, 0x4C	; 76
	pData = (char*)pReport;

	pReport->comm.headers.destination = FLOAT_TASK_FORWARD_MESSAGE;		//pTaskInfo->pBuf->responseInfo.source;
   18cb4:	80 e2       	ldi	r24, 0x20	; 32
   18cb6:	90 e0       	ldi	r25, 0x00	; 0
   18cb8:	d8 01       	movw	r26, r16
   18cba:	13 96       	adiw	r26, 0x03	; 3
   18cbc:	9c 93       	st	X, r25
   18cbe:	8e 93       	st	-X, r24
   18cc0:	12 97       	sbiw	r26, 0x02	; 2

	pReport->comm.fwdInfo.msgFormat = MSG_FORMAT_SHIP_TO_SHORE;
   18cc2:	82 e0       	ldi	r24, 0x02	; 2
   18cc4:	1c 96       	adiw	r26, 0x0c	; 12
   18cc6:	8c 93       	st	X, r24
	pReport->comm.fwdInfo.destination = pTaskInfo->pBuf->responseInfo.source;
   18cc8:	d7 01       	movw	r26, r14
   18cca:	14 96       	adiw	r26, 0x04	; 4
   18ccc:	ed 91       	ld	r30, X+
   18cce:	fc 91       	ld	r31, X
   18cd0:	15 97       	sbiw	r26, 0x05	; 5
   18cd2:	e4 5f       	subi	r30, 0xF4	; 244
   18cd4:	f8 4f       	sbci	r31, 0xF8	; 248
   18cd6:	81 91       	ld	r24, Z+
   18cd8:	91 91       	ld	r25, Z+
   18cda:	d8 01       	movw	r26, r16
   18cdc:	1e 96       	adiw	r26, 0x0e	; 14
   18cde:	9c 93       	st	X, r25
   18ce0:	8e 93       	st	-X, r24
   18ce2:	1d 97       	sbiw	r26, 0x0d	; 13
	pReport->comm.fwdInfo.source = mainTaskAddress | pTaskInfo->taskID;
   18ce4:	d7 01       	movw	r26, r14
   18ce6:	8c 91       	ld	r24, X
   18ce8:	90 e0       	ldi	r25, 0x00	; 0
   18cea:	20 91 e4 03 	lds	r18, 0x03E4
   18cee:	30 91 e5 03 	lds	r19, 0x03E5
   18cf2:	82 2b       	or	r24, r18
   18cf4:	93 2b       	or	r25, r19
   18cf6:	d8 01       	movw	r26, r16
   18cf8:	50 96       	adiw	r26, 0x10	; 16
   18cfa:	9c 93       	st	X, r25
   18cfc:	8e 93       	st	-X, r24
   18cfe:	1f 97       	sbiw	r26, 0x0f	; 15

	if(pTaskInfo->pBuf->responseInfo.status < CONSOLE_RESPONSE_UNKNOWN_CMD)
   18d00:	20 81       	ld	r18, Z
   18d02:	ee 50       	subi	r30, 0x0E	; 14
   18d04:	f7 40       	sbci	r31, 0x07	; 7
   18d06:	2a 30       	cpi	r18, 0x0A	; 10
   18d08:	b0 f5       	brcc	.+108    	; 0x18d76 <TurnerC3_Orig_QueueConsoleResponse+0x10a>
	{
		pReport->comm.headers.length = sizeof(PIB_DATA_FORWARD_MESSAGE) + sizeof(CONSOLE_ACK) + pTaskInfo->pBuf->responseInfo.length + CRC16_SIZE;
   18d0a:	e0 5f       	subi	r30, 0xF0	; 240
   18d0c:	f8 4f       	sbci	r31, 0xF8	; 248
   18d0e:	40 81       	ld	r20, Z
   18d10:	50 e0       	ldi	r21, 0x00	; 0
   18d12:	42 5e       	subi	r20, 0xE2	; 226
   18d14:	5f 4f       	sbci	r21, 0xFF	; 255
   18d16:	11 96       	adiw	r26, 0x01	; 1
   18d18:	5c 93       	st	X, r21
   18d1a:	4e 93       	st	-X, r20
   18d1c:	4e 51       	subi	r20, 0x1E	; 30
   18d1e:	50 40       	sbci	r21, 0x00	; 0

		pReport->comm.iridiumInfo.headerICD.type = ACK_CONSOLE_DATA;
   18d20:	8d e3       	ldi	r24, 0x3D	; 61
   18d22:	51 96       	adiw	r26, 0x11	; 17
   18d24:	8c 93       	st	X, r24
   18d26:	51 97       	sbiw	r26, 0x11	; 17

		pReport->consoleAck.len = pTaskInfo->pBuf->responseInfo.length;
   18d28:	5b 96       	adiw	r26, 0x1b	; 27
   18d2a:	5c 93       	st	X, r21
   18d2c:	4e 93       	st	-X, r20
   18d2e:	5a 97       	sbiw	r26, 0x1a	; 26
		pReport->consoleAck.disposition = pTaskInfo->pBuf->responseInfo.status;
   18d30:	59 96       	adiw	r26, 0x19	; 25
   18d32:	2c 93       	st	X, r18
   18d34:	59 97       	sbiw	r26, 0x19	; 25
		pReport->consoleAck.format = pTaskInfo->pBuf->responseInfo.format;
   18d36:	82 91       	ld	r24, -Z
   18d38:	58 96       	adiw	r26, 0x18	; 24
   18d3a:	8c 93       	st	X, r24
		pData = pData + sizeof(PIB_DATA_FORWARD_MESSAGE) + sizeof(CONSOLE_ACK);
		memcpy(pData, pTaskInfo->pBuf->consoleResponse, pTaskInfo->pBuf->responseInfo.length);
   18d3c:	98 01       	movw	r18, r16
   18d3e:	24 5e       	subi	r18, 0xE4	; 228
   18d40:	3f 4f       	sbci	r19, 0xFF	; 255
   18d42:	36 96       	adiw	r30, 0x06	; 6
   18d44:	c9 01       	movw	r24, r18
   18d46:	bf 01       	movw	r22, r30
   18d48:	50 e0       	ldi	r21, 0x00	; 0
   18d4a:	0e 94 1c f0 	call	0x1e038	; 0x1e038 <memcpy>

		memcpy(dbgMsg, pTaskInfo->pBuf->consoleResponse, pTaskInfo->pBuf->responseInfo.length+1); SEND_MSG;
   18d4e:	d7 01       	movw	r26, r14
   18d50:	14 96       	adiw	r26, 0x04	; 4
   18d52:	ed 91       	ld	r30, X+
   18d54:	fc 91       	ld	r31, X
   18d56:	15 97       	sbiw	r26, 0x05	; 5
   18d58:	43 ef       	ldi	r20, 0xF3	; 243
   18d5a:	58 e1       	ldi	r21, 0x18	; 24
   18d5c:	e0 5f       	subi	r30, 0xF0	; 240
   18d5e:	f8 4f       	sbci	r31, 0xF8	; 248
   18d60:	20 81       	ld	r18, Z
   18d62:	30 e0       	ldi	r19, 0x00	; 0
   18d64:	2f 5f       	subi	r18, 0xFF	; 255
   18d66:	3f 4f       	sbci	r19, 0xFF	; 255
   18d68:	35 96       	adiw	r30, 0x05	; 5
   18d6a:	ca 01       	movw	r24, r20
   18d6c:	bf 01       	movw	r22, r30
   18d6e:	a9 01       	movw	r20, r18
   18d70:	0e 94 1c f0 	call	0x1e038	; 0x1e038 <memcpy>
   18d74:	0c c0       	rjmp	.+24     	; 0x18d8e <TurnerC3_Orig_QueueConsoleResponse+0x122>
	}
	else
	{
		pReport->comm.headers.length = sizeof(PIB_DATA_FORWARD_MESSAGE) + sizeof(CONSOLE_NACK) + CRC16_SIZE;
   18d76:	8d e1       	ldi	r24, 0x1D	; 29
   18d78:	90 e0       	ldi	r25, 0x00	; 0
   18d7a:	f8 01       	movw	r30, r16
   18d7c:	91 83       	std	Z+1, r25	; 0x01
   18d7e:	80 83       	st	Z, r24
		pReport->comm.iridiumInfo.headerICD.type = NACK_CONSOLE_DATA;
   18d80:	86 e2       	ldi	r24, 0x26	; 38
   18d82:	81 8b       	std	Z+17, r24	; 0x11
		pReport->consoleNack.numDispositions = 1;
   18d84:	81 e0       	ldi	r24, 0x01	; 1
   18d86:	90 e0       	ldi	r25, 0x00	; 0
   18d88:	91 8f       	std	Z+25, r25	; 0x19
   18d8a:	80 8f       	std	Z+24, r24	; 0x18
		pReport->consoleNack.disposition[0] = pTaskInfo->pBuf->responseInfo.status;
   18d8c:	22 8f       	std	Z+26, r18	; 0x1a
	}

	pReport->comm.iridiumInfo.headerICD.packetID = pTaskInfo->pBuf->responseInfo.id;
   18d8e:	d7 01       	movw	r26, r14
   18d90:	14 96       	adiw	r26, 0x04	; 4
   18d92:	ed 91       	ld	r30, X+
   18d94:	fc 91       	ld	r31, X
   18d96:	15 97       	sbiw	r26, 0x05	; 5
   18d98:	ef 5e       	subi	r30, 0xEF	; 239
   18d9a:	f8 4f       	sbci	r31, 0xF8	; 248
   18d9c:	80 81       	ld	r24, Z
   18d9e:	91 81       	ldd	r25, Z+1	; 0x01
   18da0:	a2 81       	ldd	r26, Z+2	; 0x02
   18da2:	b3 81       	ldd	r27, Z+3	; 0x03
   18da4:	f8 01       	movw	r30, r16
   18da6:	82 8b       	std	Z+18, r24	; 0x12
   18da8:	93 8b       	std	Z+19, r25	; 0x13
   18daa:	a4 8b       	std	Z+20, r26	; 0x14
   18dac:	b5 8b       	std	Z+21, r27	; 0x15
	pReport->comm.iridiumInfo.headerICD.size = pReport->comm.headers.length - sizeof(PIB_DATA_FORWARD_MESSAGE) - CRC16_SIZE;
   18dae:	80 81       	ld	r24, Z
   18db0:	91 81       	ldd	r25, Z+1	; 0x01
   18db2:	4a 97       	sbiw	r24, 0x1a	; 26
   18db4:	97 8b       	std	Z+23, r25	; 0x17
   18db6:	86 8b       	std	Z+22, r24	; 0x16


	(headFloatAckTx < MAX_ACK_BUFFERS - 1) ? (headFloatAckTx++) : (headFloatAckTx = 0);
   18db8:	80 91 95 07 	lds	r24, 0x0795
   18dbc:	83 30       	cpi	r24, 0x03	; 3
   18dbe:	20 f4       	brcc	.+8      	; 0x18dc8 <TurnerC3_Orig_QueueConsoleResponse+0x15c>
   18dc0:	8f 5f       	subi	r24, 0xFF	; 255
   18dc2:	80 93 95 07 	sts	0x0795, r24
   18dc6:	02 c0       	rjmp	.+4      	; 0x18dcc <TurnerC3_Orig_QueueConsoleResponse+0x160>
   18dc8:	10 92 95 07 	sts	0x0795, r1

	if(headFloatAckTx == tailFloatAckTx)
   18dcc:	90 91 95 07 	lds	r25, 0x0795
   18dd0:	80 91 96 07 	lds	r24, 0x0796
   18dd4:	98 17       	cp	r25, r24
   18dd6:	41 f4       	brne	.+16     	; 0x18de8 <TurnerC3_Orig_QueueConsoleResponse+0x17c>
	{
		(tailFloatAckTx < MAX_ACK_BUFFERS - 1) ? (tailFloatAckTx++) : (tailFloatAckTx = 0);
   18dd8:	93 30       	cpi	r25, 0x03	; 3
   18dda:	20 f4       	brcc	.+8      	; 0x18de4 <TurnerC3_Orig_QueueConsoleResponse+0x178>
   18ddc:	9f 5f       	subi	r25, 0xFF	; 255
   18dde:	90 93 96 07 	sts	0x0796, r25
   18de2:	02 c0       	rjmp	.+4      	; 0x18de8 <TurnerC3_Orig_QueueConsoleResponse+0x17c>
   18de4:	10 92 96 07 	sts	0x0796, r1
	}

	OSMutexPost(pMutexFloatQueue);
   18de8:	80 91 51 19 	lds	r24, 0x1951
   18dec:	90 91 52 19 	lds	r25, 0x1952
   18df0:	0e 94 36 27 	call	0x4e6c	; 0x4e6c <OSMutexPost>

	return;
}
   18df4:	0f 90       	pop	r0
   18df6:	cf 91       	pop	r28
   18df8:	df 91       	pop	r29
   18dfa:	1f 91       	pop	r17
   18dfc:	0f 91       	pop	r16
   18dfe:	ff 90       	pop	r15
   18e00:	ef 90       	pop	r14
   18e02:	08 95       	ret

00018e04 <TurnerC3_Orig_ASCIIReportXmit>:
	return retval;
}


uint8_t TurnerC3_Orig_ASCIIReportXmit(PTURNER_C3_ORIG_TASK pTaskInfo, uint16_t len)
{
   18e04:	ef 92       	push	r14
   18e06:	ff 92       	push	r15
   18e08:	0f 93       	push	r16
   18e0a:	1f 93       	push	r17
   18e0c:	df 93       	push	r29
   18e0e:	cf 93       	push	r28
   18e10:	0f 92       	push	r0
   18e12:	cd b7       	in	r28, 0x3d	; 61
   18e14:	de b7       	in	r29, 0x3e	; 62
   18e16:	7c 01       	movw	r14, r24
   18e18:	8b 01       	movw	r16, r22
	uint8_t retval = SUCCESS;
	uint8_t err = 0;
   18e1a:	19 82       	std	Y+1, r1	; 0x01
	PTURNER_C3_ORIG_ASCII_REPORT_XMIT pReport = NULL;

	OSMutexPend(pMutexFloatQueue, INFINITE, &err);
   18e1c:	80 91 51 19 	lds	r24, 0x1951
   18e20:	90 91 52 19 	lds	r25, 0x1952
   18e24:	60 e0       	ldi	r22, 0x00	; 0
   18e26:	70 e0       	ldi	r23, 0x00	; 0
   18e28:	ae 01       	movw	r20, r28
   18e2a:	4f 5f       	subi	r20, 0xFF	; 255
   18e2c:	5f 4f       	sbci	r21, 0xFF	; 255
   18e2e:	0e 94 c2 28 	call	0x5184	; 0x5184 <OSMutexPend>

	pReport = (PTURNER_C3_ORIG_ASCII_REPORT_XMIT)&(txFloatData[headFloatTx]);
   18e32:	80 91 93 07 	lds	r24, 0x0793
   18e36:	90 e0       	ldi	r25, 0x00	; 0
   18e38:	26 e3       	ldi	r18, 0x36	; 54
   18e3a:	31 e0       	ldi	r19, 0x01	; 1
   18e3c:	82 9f       	mul	r24, r18
   18e3e:	f0 01       	movw	r30, r0
   18e40:	83 9f       	mul	r24, r19
   18e42:	f0 0d       	add	r31, r0
   18e44:	92 9f       	mul	r25, r18
   18e46:	f0 0d       	add	r31, r0
   18e48:	11 24       	eor	r1, r1
   18e4a:	e3 5a       	subi	r30, 0xA3	; 163
   18e4c:	f6 45       	sbci	r31, 0x56	; 86

//	pReport->comm.headers.length  = sizeof(TURNER_C3_ASCII_REPORT_XMIT) + CRC16_SIZE;
	pReport->comm.headers.length  = sizeof(PIB_IRIDIUM_DATA_XMIT) + len + CRC16_SIZE;
   18e4e:	0f 5e       	subi	r16, 0xEF	; 239
   18e50:	1f 4f       	sbci	r17, 0xFF	; 255
   18e52:	11 83       	std	Z+1, r17	; 0x01
   18e54:	00 83       	st	Z, r16
   18e56:	01 51       	subi	r16, 0x11	; 17
   18e58:	10 40       	sbci	r17, 0x00	; 0
	pReport->comm.headers.destination = FLOAT_IRIDIUM_INTERFACE;
   18e5a:	82 e0       	ldi	r24, 0x02	; 2
   18e5c:	90 e0       	ldi	r25, 0x00	; 0
   18e5e:	93 83       	std	Z+3, r25	; 0x03
   18e60:	82 83       	std	Z+2, r24	; 0x02

	pReport->comm.iridiumInfo.structureType = 0x91;
   18e62:	81 e9       	ldi	r24, 0x91	; 145
   18e64:	84 87       	std	Z+12, r24	; 0x0c
	pReport->comm.iridiumInfo.size = pReport->comm.headers.length - sizeof(PIB_IRIDIUM_DATA_XMIT) - CRC16_SIZE;
   18e66:	16 87       	std	Z+14, r17	; 0x0e
   18e68:	05 87       	std	Z+13, r16	; 0x0d


	memcpy(&(pReport->reportASCII), &(pTaskInfo->pBuf->reportASCII), sizeof(C3_ORIG_ASCII_REPORT));
   18e6a:	d7 01       	movw	r26, r14
   18e6c:	14 96       	adiw	r26, 0x04	; 4
   18e6e:	2d 91       	ld	r18, X+
   18e70:	3c 91       	ld	r19, X
   18e72:	15 97       	sbiw	r26, 0x05	; 5
   18e74:	3f 96       	adiw	r30, 0x0f	; 15
   18e76:	21 5c       	subi	r18, 0xC1	; 193
   18e78:	39 4f       	sbci	r19, 0xF9	; 249
   18e7a:	89 eb       	ldi	r24, 0xB9	; 185
   18e7c:	d9 01       	movw	r26, r18
   18e7e:	0d 90       	ld	r0, X+
   18e80:	9d 01       	movw	r18, r26
   18e82:	01 92       	st	Z+, r0
   18e84:	81 50       	subi	r24, 0x01	; 1
   18e86:	d1 f7       	brne	.-12     	; 0x18e7c <TurnerC3_Orig_ASCIIReportXmit+0x78>


	(headFloatTx < MAX_FLOAT_BUFFERS - 1) ? (headFloatTx++) : (headFloatTx = 0);
   18e88:	80 91 93 07 	lds	r24, 0x0793
   18e8c:	87 30       	cpi	r24, 0x07	; 7
   18e8e:	20 f4       	brcc	.+8      	; 0x18e98 <TurnerC3_Orig_ASCIIReportXmit+0x94>
   18e90:	8f 5f       	subi	r24, 0xFF	; 255
   18e92:	80 93 93 07 	sts	0x0793, r24
   18e96:	02 c0       	rjmp	.+4      	; 0x18e9c <TurnerC3_Orig_ASCIIReportXmit+0x98>
   18e98:	10 92 93 07 	sts	0x0793, r1

	if(headFloatTx == tailFloatTx)
   18e9c:	90 91 93 07 	lds	r25, 0x0793
   18ea0:	80 91 94 07 	lds	r24, 0x0794
   18ea4:	98 17       	cp	r25, r24
   18ea6:	41 f4       	brne	.+16     	; 0x18eb8 <TurnerC3_Orig_ASCIIReportXmit+0xb4>
	{
		(tailFloatTx < MAX_FLOAT_BUFFERS - 1) ? (tailFloatTx++) : (tailFloatTx = 0);
   18ea8:	97 30       	cpi	r25, 0x07	; 7
   18eaa:	20 f4       	brcc	.+8      	; 0x18eb4 <TurnerC3_Orig_ASCIIReportXmit+0xb0>
   18eac:	9f 5f       	subi	r25, 0xFF	; 255
   18eae:	90 93 94 07 	sts	0x0794, r25
   18eb2:	02 c0       	rjmp	.+4      	; 0x18eb8 <TurnerC3_Orig_ASCIIReportXmit+0xb4>
   18eb4:	10 92 94 07 	sts	0x0794, r1
	}

	OSMutexPost(pMutexFloatQueue);
   18eb8:	80 91 51 19 	lds	r24, 0x1951
   18ebc:	90 91 52 19 	lds	r25, 0x1952
   18ec0:	0e 94 36 27 	call	0x4e6c	; 0x4e6c <OSMutexPost>

	return retval;
}
   18ec4:	8f ef       	ldi	r24, 0xFF	; 255
   18ec6:	0f 90       	pop	r0
   18ec8:	cf 91       	pop	r28
   18eca:	df 91       	pop	r29
   18ecc:	1f 91       	pop	r17
   18ece:	0f 91       	pop	r16
   18ed0:	ff 90       	pop	r15
   18ed2:	ef 90       	pop	r14
   18ed4:	08 95       	ret

00018ed6 <TurnerC3_Orig_DataReportXmitType91>:
	return retval;
}


uint8_t TurnerC3_Orig_DataReportXmitType91(PTURNER_C3_ORIG_TASK pTaskInfo)
{
   18ed6:	0f 93       	push	r16
   18ed8:	1f 93       	push	r17
   18eda:	df 93       	push	r29
   18edc:	cf 93       	push	r28
   18ede:	0f 92       	push	r0
   18ee0:	cd b7       	in	r28, 0x3d	; 61
   18ee2:	de b7       	in	r29, 0x3e	; 62
   18ee4:	8c 01       	movw	r16, r24
	uint8_t retval = 0;
	uint8_t err = 0;
   18ee6:	19 82       	std	Y+1, r1	; 0x01
	PTURNER_C3_ORIG_DATA_REPORT_XMIT pReport = NULL;

	OSMutexPend(pMutexFloatQueue, INFINITE, &err);
   18ee8:	80 91 51 19 	lds	r24, 0x1951
   18eec:	90 91 52 19 	lds	r25, 0x1952
   18ef0:	60 e0       	ldi	r22, 0x00	; 0
   18ef2:	70 e0       	ldi	r23, 0x00	; 0
   18ef4:	ae 01       	movw	r20, r28
   18ef6:	4f 5f       	subi	r20, 0xFF	; 255
   18ef8:	5f 4f       	sbci	r21, 0xFF	; 255
   18efa:	0e 94 c2 28 	call	0x5184	; 0x5184 <OSMutexPend>

	pReport = (PTURNER_C3_ORIG_DATA_REPORT_XMIT)&(txFloatData[headFloatTx]);
   18efe:	80 91 93 07 	lds	r24, 0x0793
   18f02:	90 e0       	ldi	r25, 0x00	; 0
   18f04:	26 e3       	ldi	r18, 0x36	; 54
   18f06:	31 e0       	ldi	r19, 0x01	; 1
   18f08:	82 9f       	mul	r24, r18
   18f0a:	f0 01       	movw	r30, r0
   18f0c:	83 9f       	mul	r24, r19
   18f0e:	f0 0d       	add	r31, r0
   18f10:	92 9f       	mul	r25, r18
   18f12:	f0 0d       	add	r31, r0
   18f14:	11 24       	eor	r1, r1
   18f16:	e3 5a       	subi	r30, 0xA3	; 163
   18f18:	f6 45       	sbci	r31, 0x56	; 86
	memset(pReport, 0, sizeof(FLOAT_TX_BUFFER));
   18f1a:	df 01       	movw	r26, r30
   18f1c:	c9 01       	movw	r24, r18
   18f1e:	1d 92       	st	X+, r1
   18f20:	01 97       	sbiw	r24, 0x01	; 1
   18f22:	e9 f7       	brne	.-6      	; 0x18f1e <TurnerC3_Orig_DataReportXmitType91+0x48>

	pReport->comm.headers.length  = sizeof(TURNER_C3_ORIG_DATA_REPORT_XMIT) + CRC16_SIZE;
   18f24:	8f ec       	ldi	r24, 0xCF	; 207
   18f26:	90 e0       	ldi	r25, 0x00	; 0
   18f28:	91 83       	std	Z+1, r25	; 0x01
   18f2a:	80 83       	st	Z, r24
	pReport->comm.headers.destination = FLOAT_IRIDIUM_INTERFACE;
   18f2c:	82 e0       	ldi	r24, 0x02	; 2
   18f2e:	90 e0       	ldi	r25, 0x00	; 0
   18f30:	93 83       	std	Z+3, r25	; 0x03
   18f32:	82 83       	std	Z+2, r24	; 0x02

	pReport->comm.iridiumInfo.structureType = 0x91;
   18f34:	81 e9       	ldi	r24, 0x91	; 145
   18f36:	84 87       	std	Z+12, r24	; 0x0c
	pReport->comm.iridiumInfo.size = pReport->comm.headers.length - sizeof(PIB_IRIDIUM_DATA_XMIT) - CRC16_SIZE;
   18f38:	8e eb       	ldi	r24, 0xBE	; 190
   18f3a:	90 e0       	ldi	r25, 0x00	; 0
   18f3c:	96 87       	std	Z+14, r25	; 0x0e
   18f3e:	85 87       	std	Z+13, r24	; 0x0d


	memcpy(&(pReport->reportData), &(pTaskInfo->pBuf->reportData), sizeof(C3_ORIG_DATA_REPORT));
   18f40:	d8 01       	movw	r26, r16
   18f42:	14 96       	adiw	r26, 0x04	; 4
   18f44:	2d 91       	ld	r18, X+
   18f46:	3c 91       	ld	r19, X
   18f48:	15 97       	sbiw	r26, 0x05	; 5
   18f4a:	3f 96       	adiw	r30, 0x0f	; 15
   18f4c:	2f 57       	subi	r18, 0x7F	; 127
   18f4e:	3a 4f       	sbci	r19, 0xFA	; 250
   18f50:	8e eb       	ldi	r24, 0xBE	; 190
   18f52:	d9 01       	movw	r26, r18
   18f54:	0d 90       	ld	r0, X+
   18f56:	9d 01       	movw	r18, r26
   18f58:	01 92       	st	Z+, r0
   18f5a:	81 50       	subi	r24, 0x01	; 1
   18f5c:	d1 f7       	brne	.-12     	; 0x18f52 <TurnerC3_Orig_DataReportXmitType91+0x7c>


	(headFloatTx < MAX_FLOAT_BUFFERS - 1) ? (headFloatTx++) : (headFloatTx = 0);
   18f5e:	80 91 93 07 	lds	r24, 0x0793
   18f62:	87 30       	cpi	r24, 0x07	; 7
   18f64:	20 f4       	brcc	.+8      	; 0x18f6e <TurnerC3_Orig_DataReportXmitType91+0x98>
   18f66:	8f 5f       	subi	r24, 0xFF	; 255
   18f68:	80 93 93 07 	sts	0x0793, r24
   18f6c:	02 c0       	rjmp	.+4      	; 0x18f72 <TurnerC3_Orig_DataReportXmitType91+0x9c>
   18f6e:	10 92 93 07 	sts	0x0793, r1

	if(headFloatTx == tailFloatTx)
   18f72:	90 91 93 07 	lds	r25, 0x0793
   18f76:	80 91 94 07 	lds	r24, 0x0794
   18f7a:	98 17       	cp	r25, r24
   18f7c:	41 f4       	brne	.+16     	; 0x18f8e <TurnerC3_Orig_DataReportXmitType91+0xb8>
	{
		(tailFloatTx < MAX_FLOAT_BUFFERS - 1) ? (tailFloatTx++) : (tailFloatTx = 0);
   18f7e:	97 30       	cpi	r25, 0x07	; 7
   18f80:	20 f4       	brcc	.+8      	; 0x18f8a <TurnerC3_Orig_DataReportXmitType91+0xb4>
   18f82:	9f 5f       	subi	r25, 0xFF	; 255
   18f84:	90 93 94 07 	sts	0x0794, r25
   18f88:	02 c0       	rjmp	.+4      	; 0x18f8e <TurnerC3_Orig_DataReportXmitType91+0xb8>
   18f8a:	10 92 94 07 	sts	0x0794, r1
	}

	OSMutexPost(pMutexFloatQueue);
   18f8e:	80 91 51 19 	lds	r24, 0x1951
   18f92:	90 91 52 19 	lds	r25, 0x1952
   18f96:	0e 94 36 27 	call	0x4e6c	; 0x4e6c <OSMutexPost>

	return retval;
}
   18f9a:	80 e0       	ldi	r24, 0x00	; 0
   18f9c:	0f 90       	pop	r0
   18f9e:	cf 91       	pop	r28
   18fa0:	df 91       	pop	r29
   18fa2:	1f 91       	pop	r17
   18fa4:	0f 91       	pop	r16
   18fa6:	08 95       	ret

00018fa8 <TurnerC3_Orig_ParseFile>:
	return retval;
}


uint8_t TurnerC3_Orig_ParseFile(PTURNER_C3_ORIG_TASK pTaskInfo, uint32_t fileID)
{
   18fa8:	4f 92       	push	r4
   18faa:	5f 92       	push	r5
   18fac:	6f 92       	push	r6
   18fae:	7f 92       	push	r7
   18fb0:	8f 92       	push	r8
   18fb2:	9f 92       	push	r9
   18fb4:	af 92       	push	r10
   18fb6:	bf 92       	push	r11
   18fb8:	cf 92       	push	r12
   18fba:	df 92       	push	r13
   18fbc:	ef 92       	push	r14
   18fbe:	ff 92       	push	r15
   18fc0:	0f 93       	push	r16
   18fc2:	1f 93       	push	r17
   18fc4:	df 93       	push	r29
   18fc6:	cf 93       	push	r28
   18fc8:	cd b7       	in	r28, 0x3d	; 61
   18fca:	de b7       	in	r29, 0x3e	; 62
   18fcc:	28 97       	sbiw	r28, 0x08	; 8
   18fce:	0f b6       	in	r0, 0x3f	; 63
   18fd0:	f8 94       	cli
   18fd2:	de bf       	out	0x3e, r29	; 62
   18fd4:	0f be       	out	0x3f, r0	; 63
   18fd6:	cd bf       	out	0x3d, r28	; 61
   18fd8:	7c 01       	movw	r14, r24
   18fda:	3a 01       	movw	r6, r20
   18fdc:	4b 01       	movw	r8, r22
	uint8_t retval = FAIL;
	uint16_t len = 0;
	char* pBuf;
	uint8_t err = 0;
   18fde:	19 82       	std	Y+1, r1	; 0x01
	char c;

	memset(&(fileOut[pTaskInfo->portNum][0]), 0, MAX_FILE_SIZE_OUT);
   18fe0:	dc 01       	movw	r26, r24
   18fe2:	11 96       	adiw	r26, 0x01	; 1
   18fe4:	2c 91       	ld	r18, X
   18fe6:	92 2f       	mov	r25, r18
   18fe8:	99 0f       	add	r25, r25
   18fea:	99 0f       	add	r25, r25
   18fec:	80 e0       	ldi	r24, 0x00	; 0
   18fee:	8f 5a       	subi	r24, 0xAF	; 175
   18ff0:	92 47       	sbci	r25, 0x72	; 114
   18ff2:	41 2c       	mov	r4, r1
   18ff4:	e4 e0       	ldi	r30, 0x04	; 4
   18ff6:	5e 2e       	mov	r5, r30
   18ff8:	dc 01       	movw	r26, r24
   18ffa:	c2 01       	movw	r24, r4
   18ffc:	1d 92       	st	X+, r1
   18ffe:	01 97       	sbiw	r24, 0x01	; 1
   19000:	e9 f7       	brne	.-6      	; 0x18ffc <TurnerC3_Orig_ParseFile+0x54>

	strupr(&fileIn[pTaskInfo->portNum][0]);
   19002:	d7 01       	movw	r26, r14
   19004:	11 96       	adiw	r26, 0x01	; 1
   19006:	9c 91       	ld	r25, X
   19008:	80 e0       	ldi	r24, 0x00	; 0
   1900a:	8f 5a       	subi	r24, 0xAF	; 175
   1900c:	96 47       	sbci	r25, 0x76	; 118
   1900e:	0e 94 d2 f0 	call	0x1e1a4	; 0x1e1a4 <strupr>
	len = strlen(&fileIn[pTaskInfo->portNum][0]);
   19012:	f7 01       	movw	r30, r14
   19014:	91 81       	ldd	r25, Z+1	; 0x01
   19016:	80 e0       	ldi	r24, 0x00	; 0
   19018:	dc 01       	movw	r26, r24
   1901a:	af 5a       	subi	r26, 0xAF	; 175
   1901c:	b6 47       	sbci	r27, 0x76	; 118
   1901e:	fd 01       	movw	r30, r26
   19020:	01 90       	ld	r0, Z+
   19022:	00 20       	and	r0, r0
   19024:	e9 f7       	brne	.-6      	; 0x19020 <TurnerC3_Orig_ParseFile+0x78>
   19026:	31 97       	sbiw	r30, 0x01	; 1
   19028:	ea 1b       	sub	r30, r26
   1902a:	fb 0b       	sbc	r31, r27

	pBuf = &fileIn[pTaskInfo->portNum][0];
	if(len > 4)
   1902c:	35 97       	sbiw	r30, 0x05	; 5
   1902e:	08 f4       	brcc	.+2      	; 0x19032 <TurnerC3_Orig_ParseFile+0x8a>
   19030:	f0 c0       	rjmp	.+480    	; 0x19212 <TurnerC3_Orig_ParseFile+0x26a>
	{
		char* context = pBuf;
   19032:	bb 83       	std	Y+3, r27	; 0x03
   19034:	aa 83       	std	Y+2, r26	; 0x02
		char sep[5];	// = { ' ', '\t', '\r', '\n', '\0' };
//		char sep[] = { ' ', '\t', '\r', '\n', '\0' };
		char* cmdTok = ThreadSafeStrTok(&context, sep);
   19036:	72 e0       	ldi	r23, 0x02	; 2
   19038:	a7 2e       	mov	r10, r23
   1903a:	b1 2c       	mov	r11, r1
   1903c:	ac 0e       	add	r10, r28
   1903e:	bd 1e       	adc	r11, r29
   19040:	64 e0       	ldi	r22, 0x04	; 4
   19042:	c6 2e       	mov	r12, r22
   19044:	d1 2c       	mov	r13, r1
   19046:	cc 0e       	add	r12, r28
   19048:	dd 1e       	adc	r13, r29
   1904a:	c5 01       	movw	r24, r10
   1904c:	b6 01       	movw	r22, r12
   1904e:	0e 94 0a c6 	call	0x18c14	; 0x18c14 <ThreadSafeStrTok>
   19052:	8c 01       	movw	r16, r24
		
		memcpy_P(sep, separator2, 5);
   19054:	c6 01       	movw	r24, r12
   19056:	6b e1       	ldi	r22, 0x1B	; 27
   19058:	7a e1       	ldi	r23, 0x1A	; 26
   1905a:	45 e0       	ldi	r20, 0x05	; 5
   1905c:	50 e0       	ldi	r21, 0x00	; 0
   1905e:	0e 94 ab ef 	call	0x1df56	; 0x1df56 <memcpy_P>

		if (strncmp(cmdTok, "CMD", 3) == 0)
   19062:	c8 01       	movw	r24, r16
   19064:	6d e1       	ldi	r22, 0x1D	; 29
   19066:	75 e0       	ldi	r23, 0x05	; 5
   19068:	43 e0       	ldi	r20, 0x03	; 3
   1906a:	50 e0       	ldi	r21, 0x00	; 0
   1906c:	0e 94 59 f0 	call	0x1e0b2	; 0x1e0b2 <strncmp>
   19070:	00 97       	sbiw	r24, 0x00	; 0
   19072:	09 f0       	breq	.+2      	; 0x19076 <TurnerC3_Orig_ParseFile+0xce>
   19074:	ce c0       	rjmp	.+412    	; 0x19212 <TurnerC3_Orig_ParseFile+0x26a>
		{
			char* subCommand = ThreadSafeStrTok(&context, sep);
   19076:	c5 01       	movw	r24, r10
   19078:	b6 01       	movw	r22, r12
   1907a:	0e 94 0a c6 	call	0x18c14	; 0x18c14 <ThreadSafeStrTok>
   1907e:	8c 01       	movw	r16, r24

			//We have a Start/Stop command
			if(strncmp(subCommand, "STO", 3) == 0)
   19080:	61 e2       	ldi	r22, 0x21	; 33
   19082:	75 e0       	ldi	r23, 0x05	; 5
   19084:	43 e0       	ldi	r20, 0x03	; 3
   19086:	50 e0       	ldi	r21, 0x00	; 0
   19088:	0e 94 59 f0 	call	0x1e0b2	; 0x1e0b2 <strncmp>
   1908c:	00 97       	sbiw	r24, 0x00	; 0
   1908e:	09 f0       	breq	.+2      	; 0x19092 <TurnerC3_Orig_ParseFile+0xea>
   19090:	6d c0       	rjmp	.+218    	; 0x1916c <TurnerC3_Orig_ParseFile+0x1c4>
			{
				pTaskInfo->pBuf->sampleC3 = FALSE;
   19092:	d7 01       	movw	r26, r14
   19094:	14 96       	adiw	r26, 0x04	; 4
   19096:	ed 91       	ld	r30, X+
   19098:	fc 91       	ld	r31, X
   1909a:	15 97       	sbiw	r26, 0x05	; 5
   1909c:	ec 5f       	subi	r30, 0xFC	; 252
   1909e:	fa 4f       	sbci	r31, 0xFA	; 250
   190a0:	10 82       	st	Z, r1
				EnablePIBModule(pTaskInfo->portNum, FALSE, FALSE);
   190a2:	11 96       	adiw	r26, 0x01	; 1
   190a4:	8c 91       	ld	r24, X
   190a6:	60 e0       	ldi	r22, 0x00	; 0
   190a8:	40 e0       	ldi	r20, 0x00	; 0
   190aa:	0e 94 a2 38 	call	0x7144	; 0x7144 <EnablePIBModule>
				retval = SUCCESS;
				if(pTaskInfo->pBuf->sampleCount > 0)
   190ae:	d7 01       	movw	r26, r14
   190b0:	14 96       	adiw	r26, 0x04	; 4
   190b2:	ed 91       	ld	r30, X+
   190b4:	fc 91       	ld	r31, X
   190b6:	15 97       	sbiw	r26, 0x05	; 5
   190b8:	e2 58       	subi	r30, 0x82	; 130
   190ba:	fa 4f       	sbci	r31, 0xFA	; 250
   190bc:	80 81       	ld	r24, Z
   190be:	ee 57       	subi	r30, 0x7E	; 126
   190c0:	f5 40       	sbci	r31, 0x05	; 5
   190c2:	88 23       	and	r24, r24
   190c4:	09 f4       	brne	.+2      	; 0x190c8 <TurnerC3_Orig_ParseFile+0x120>
   190c6:	8c c0       	rjmp	.+280    	; 0x191e0 <TurnerC3_Orig_ParseFile+0x238>
				{
					pTaskInfo->pBuf->reportData.headerReport.payloadType = 0x00000060;
   190c8:	ef 57       	subi	r30, 0x7F	; 127
   190ca:	fa 4f       	sbci	r31, 0xFA	; 250
   190cc:	80 e6       	ldi	r24, 0x60	; 96
   190ce:	90 e0       	ldi	r25, 0x00	; 0
   190d0:	a0 e0       	ldi	r26, 0x00	; 0
   190d2:	b0 e0       	ldi	r27, 0x00	; 0
   190d4:	81 93       	st	Z+, r24
   190d6:	91 93       	st	Z+, r25
   190d8:	a1 93       	st	Z+, r26
   190da:	b1 93       	st	Z+, r27
					pTaskInfo->pBuf->reportData.headerReport.boardID = mainBoardID;
   190dc:	80 91 e6 03 	lds	r24, 0x03E6
   190e0:	80 83       	st	Z, r24
					pTaskInfo->pBuf->reportData.headerReport.taskID = pTaskInfo->taskID;
   190e2:	d7 01       	movw	r26, r14
   190e4:	14 96       	adiw	r26, 0x04	; 4
   190e6:	ed 91       	ld	r30, X+
   190e8:	fc 91       	ld	r31, X
   190ea:	15 97       	sbiw	r26, 0x05	; 5
   190ec:	ea 57       	subi	r30, 0x7A	; 122
   190ee:	fa 4f       	sbci	r31, 0xFA	; 250
   190f0:	8c 91       	ld	r24, X
   190f2:	80 83       	st	Z, r24
					pTaskInfo->pBuf->reportData.headerReport.dataFormat = 9;
   190f4:	14 96       	adiw	r26, 0x04	; 4
   190f6:	ed 91       	ld	r30, X+
   190f8:	fc 91       	ld	r31, X
   190fa:	15 97       	sbiw	r26, 0x05	; 5
   190fc:	e9 57       	subi	r30, 0x79	; 121
   190fe:	fa 4f       	sbci	r31, 0xFA	; 250
   19100:	80 81       	ld	r24, Z
   19102:	80 7f       	andi	r24, 0xF0	; 240
   19104:	89 60       	ori	r24, 0x09	; 9
   19106:	80 83       	st	Z, r24
					pTaskInfo->pBuf->reportData.headerReport.parser = 0;
   19108:	14 96       	adiw	r26, 0x04	; 4
   1910a:	ed 91       	ld	r30, X+
   1910c:	fc 91       	ld	r31, X
   1910e:	15 97       	sbiw	r26, 0x05	; 5
   19110:	e9 57       	subi	r30, 0x79	; 121
   19112:	fa 4f       	sbci	r31, 0xFA	; 250
   19114:	80 81       	ld	r24, Z
   19116:	8f 7e       	andi	r24, 0xEF	; 239
   19118:	80 83       	st	Z, r24
					pTaskInfo->pBuf->reportData.headerReport.priority = 2;
   1911a:	14 96       	adiw	r26, 0x04	; 4
   1911c:	ed 91       	ld	r30, X+
   1911e:	fc 91       	ld	r31, X
   19120:	15 97       	sbiw	r26, 0x05	; 5
   19122:	e9 57       	subi	r30, 0x79	; 121
   19124:	fa 4f       	sbci	r31, 0xFA	; 250
   19126:	80 81       	ld	r24, Z
   19128:	8f 71       	andi	r24, 0x1F	; 31
   1912a:	80 64       	ori	r24, 0x40	; 64
   1912c:	80 83       	st	Z, r24
					pTaskInfo->pBuf->reportData.headerReport.repeatCount = MAX_C3_ORIG_SAMPLES;
   1912e:	14 96       	adiw	r26, 0x04	; 4
   19130:	ed 91       	ld	r30, X+
   19132:	fc 91       	ld	r31, X
   19134:	15 97       	sbiw	r26, 0x05	; 5
   19136:	e8 57       	subi	r30, 0x78	; 120
   19138:	fa 4f       	sbci	r31, 0xFA	; 250
   1913a:	87 e0       	ldi	r24, 0x07	; 7
   1913c:	80 83       	st	Z, r24

					//transmit samples
					TurnerC3_Orig_DataReportXmitType91(pTaskInfo);
   1913e:	c7 01       	movw	r24, r14
   19140:	0e 94 6b c7 	call	0x18ed6	; 0x18ed6 <TurnerC3_Orig_DataReportXmitType91>

					memset(&(pTaskInfo->pBuf->reportData), 0, sizeof(C3_ORIG_DATA_REPORT));
   19144:	f7 01       	movw	r30, r14
   19146:	84 81       	ldd	r24, Z+4	; 0x04
   19148:	95 81       	ldd	r25, Z+5	; 0x05
   1914a:	8f 57       	subi	r24, 0x7F	; 127
   1914c:	9a 4f       	sbci	r25, 0xFA	; 250
   1914e:	fc 01       	movw	r30, r24
   19150:	8e eb       	ldi	r24, 0xBE	; 190
   19152:	df 01       	movw	r26, r30
   19154:	1d 92       	st	X+, r1
   19156:	8a 95       	dec	r24
   19158:	e9 f7       	brne	.-6      	; 0x19154 <TurnerC3_Orig_ParseFile+0x1ac>
					pTaskInfo->pBuf->sampleCount = 0;
   1915a:	d7 01       	movw	r26, r14
   1915c:	14 96       	adiw	r26, 0x04	; 4
   1915e:	ed 91       	ld	r30, X+
   19160:	fc 91       	ld	r31, X
   19162:	15 97       	sbiw	r26, 0x05	; 5
   19164:	e2 58       	subi	r30, 0x82	; 130
   19166:	fa 4f       	sbci	r31, 0xFA	; 250
   19168:	10 82       	st	Z, r1
   1916a:	3a c0       	rjmp	.+116    	; 0x191e0 <TurnerC3_Orig_ParseFile+0x238>
				}

			}

			else if(strncmp(subCommand, "STA", 3) == 0)
   1916c:	c8 01       	movw	r24, r16
   1916e:	65 e2       	ldi	r22, 0x25	; 37
   19170:	75 e0       	ldi	r23, 0x05	; 5
   19172:	43 e0       	ldi	r20, 0x03	; 3
   19174:	50 e0       	ldi	r21, 0x00	; 0
   19176:	0e 94 59 f0 	call	0x1e0b2	; 0x1e0b2 <strncmp>
   1917a:	00 97       	sbiw	r24, 0x00	; 0
   1917c:	09 f0       	breq	.+2      	; 0x19180 <TurnerC3_Orig_ParseFile+0x1d8>
   1917e:	49 c0       	rjmp	.+146    	; 0x19212 <TurnerC3_Orig_ParseFile+0x26a>
			{
				pTaskInfo->pBuf->sampleC3 = TRUE;
   19180:	d7 01       	movw	r26, r14
   19182:	14 96       	adiw	r26, 0x04	; 4
   19184:	ed 91       	ld	r30, X+
   19186:	fc 91       	ld	r31, X
   19188:	15 97       	sbiw	r26, 0x05	; 5
   1918a:	ec 5f       	subi	r30, 0xFC	; 252
   1918c:	fa 4f       	sbci	r31, 0xFA	; 250
   1918e:	8f ef       	ldi	r24, 0xFF	; 255
   19190:	80 83       	st	Z, r24
				EnablePIBModule(pTaskInfo->portNum, TRUE, FALSE);
   19192:	11 96       	adiw	r26, 0x01	; 1
   19194:	8c 91       	ld	r24, X
   19196:	6f ef       	ldi	r22, 0xFF	; 255
   19198:	40 e0       	ldi	r20, 0x00	; 0
   1919a:	0e 94 a2 38 	call	0x7144	; 0x7144 <EnablePIBModule>
				OSTimeDlyHMSM(0,0,0,100);
   1919e:	80 e0       	ldi	r24, 0x00	; 0
   191a0:	60 e0       	ldi	r22, 0x00	; 0
   191a2:	40 e0       	ldi	r20, 0x00	; 0
   191a4:	24 e6       	ldi	r18, 0x64	; 100
   191a6:	30 e0       	ldi	r19, 0x00	; 0
   191a8:	0e 94 2a 2e 	call	0x5c54	; 0x5c54 <OSTimeDlyHMSM>

				memset(pTaskInfo->pBuf->bufferRx, 0, 1024);
   191ac:	f7 01       	movw	r30, r14
   191ae:	84 81       	ldd	r24, Z+4	; 0x04
   191b0:	95 81       	ldd	r25, Z+5	; 0x05
   191b2:	80 50       	subi	r24, 0x00	; 0
   191b4:	9f 4f       	sbci	r25, 0xFF	; 255
   191b6:	dc 01       	movw	r26, r24
   191b8:	c2 01       	movw	r24, r4
   191ba:	1d 92       	st	X+, r1
   191bc:	01 97       	sbiw	r24, 0x01	; 1
   191be:	e9 f7       	brne	.-6      	; 0x191ba <TurnerC3_Orig_ParseFile+0x212>

				err = OS_ERR_NONE;		
   191c0:	19 82       	std	Y+1, r1	; 0x01
				while(err == OS_ERR_NONE)
				{
					c = (char) OSuartGetCharWait(pTaskInfo->portNum, 64, &err);		//wait .05 seconds -- basically clearing buffer
   191c2:	8e 01       	movw	r16, r28
   191c4:	0f 5f       	subi	r16, 0xFF	; 255
   191c6:	1f 4f       	sbci	r17, 0xFF	; 255
   191c8:	08 c0       	rjmp	.+16     	; 0x191da <TurnerC3_Orig_ParseFile+0x232>
   191ca:	d7 01       	movw	r26, r14
   191cc:	11 96       	adiw	r26, 0x01	; 1
   191ce:	8c 91       	ld	r24, X
   191d0:	60 e4       	ldi	r22, 0x40	; 64
   191d2:	70 e0       	ldi	r23, 0x00	; 0
   191d4:	a8 01       	movw	r20, r16
   191d6:	0e 94 b8 32 	call	0x6570	; 0x6570 <OSuartGetCharWait>
				OSTimeDlyHMSM(0,0,0,100);

				memset(pTaskInfo->pBuf->bufferRx, 0, 1024);

				err = OS_ERR_NONE;		
				while(err == OS_ERR_NONE)
   191da:	89 81       	ldd	r24, Y+1	; 0x01
   191dc:	88 23       	and	r24, r24
   191de:	a9 f3       	breq	.-22     	; 0x191ca <TurnerC3_Orig_ParseFile+0x222>

				retval = SUCCESS;
			}
			if(retval == SUCCESS)
			{
				memcpy_P(&fileOut[pTaskInfo->portNum][0], PSTR("OK"), 2);
   191e0:	f7 01       	movw	r30, r14
   191e2:	21 81       	ldd	r18, Z+1	; 0x01
   191e4:	92 2f       	mov	r25, r18
   191e6:	99 0f       	add	r25, r25
   191e8:	99 0f       	add	r25, r25
   191ea:	80 e0       	ldi	r24, 0x00	; 0
   191ec:	8f 5a       	subi	r24, 0xAF	; 175
   191ee:	92 47       	sbci	r25, 0x72	; 114
   191f0:	6f e7       	ldi	r22, 0x7F	; 127
   191f2:	7a e1       	ldi	r23, 0x1A	; 26
   191f4:	42 e0       	ldi	r20, 0x02	; 2
   191f6:	50 e0       	ldi	r21, 0x00	; 0
   191f8:	0e 94 ab ef 	call	0x1df56	; 0x1df56 <memcpy_P>
				fileOutSize[pTaskInfo->portNum] = 2;
   191fc:	d7 01       	movw	r26, r14
   191fe:	11 96       	adiw	r26, 0x01	; 1
   19200:	ec 91       	ld	r30, X
   19202:	f0 e0       	ldi	r31, 0x00	; 0
   19204:	ee 0f       	add	r30, r30
   19206:	ff 1f       	adc	r31, r31
   19208:	ef 5a       	subi	r30, 0xAF	; 175
   1920a:	f2 46       	sbci	r31, 0x62	; 98
   1920c:	82 e0       	ldi	r24, 0x02	; 2
   1920e:	90 e0       	ldi	r25, 0x00	; 0
   19210:	18 c0       	rjmp	.+48     	; 0x19242 <TurnerC3_Orig_ParseFile+0x29a>
		}
	}

	if(retval == FAIL)
	{
		memcpy_P(&fileOut[pTaskInfo->portNum][0], PSTR("Unrecognized Command"), 20);
   19212:	f7 01       	movw	r30, r14
   19214:	21 81       	ldd	r18, Z+1	; 0x01
   19216:	92 2f       	mov	r25, r18
   19218:	99 0f       	add	r25, r25
   1921a:	99 0f       	add	r25, r25
   1921c:	80 e0       	ldi	r24, 0x00	; 0
   1921e:	8f 5a       	subi	r24, 0xAF	; 175
   19220:	92 47       	sbci	r25, 0x72	; 114
   19222:	6a e6       	ldi	r22, 0x6A	; 106
   19224:	7a e1       	ldi	r23, 0x1A	; 26
   19226:	44 e1       	ldi	r20, 0x14	; 20
   19228:	50 e0       	ldi	r21, 0x00	; 0
   1922a:	0e 94 ab ef 	call	0x1df56	; 0x1df56 <memcpy_P>
		fileOutSize[pTaskInfo->portNum] = 20;
   1922e:	d7 01       	movw	r26, r14
   19230:	11 96       	adiw	r26, 0x01	; 1
   19232:	ec 91       	ld	r30, X
   19234:	f0 e0       	ldi	r31, 0x00	; 0
   19236:	ee 0f       	add	r30, r30
   19238:	ff 1f       	adc	r31, r31
   1923a:	ef 5a       	subi	r30, 0xAF	; 175
   1923c:	f2 46       	sbci	r31, 0x62	; 98
   1923e:	84 e1       	ldi	r24, 0x14	; 20
   19240:	90 e0       	ldi	r25, 0x00	; 0
   19242:	91 83       	std	Z+1, r25	; 0x01
   19244:	80 83       	st	Z, r24
		retval = SUCCESS;
	}

	TurnerC3_Orig_QueueFile(pTaskInfo, fileID);
   19246:	c7 01       	movw	r24, r14
   19248:	b4 01       	movw	r22, r8
   1924a:	a3 01       	movw	r20, r6
   1924c:	0e 94 82 c4 	call	0x18904	; 0x18904 <TurnerC3_Orig_QueueFile>
	
	return retval;
}
   19250:	8f ef       	ldi	r24, 0xFF	; 255
   19252:	28 96       	adiw	r28, 0x08	; 8
   19254:	0f b6       	in	r0, 0x3f	; 63
   19256:	f8 94       	cli
   19258:	de bf       	out	0x3e, r29	; 62
   1925a:	0f be       	out	0x3f, r0	; 63
   1925c:	cd bf       	out	0x3d, r28	; 61
   1925e:	cf 91       	pop	r28
   19260:	df 91       	pop	r29
   19262:	1f 91       	pop	r17
   19264:	0f 91       	pop	r16
   19266:	ff 90       	pop	r15
   19268:	ef 90       	pop	r14
   1926a:	df 90       	pop	r13
   1926c:	cf 90       	pop	r12
   1926e:	bf 90       	pop	r11
   19270:	af 90       	pop	r10
   19272:	9f 90       	pop	r9
   19274:	8f 90       	pop	r8
   19276:	7f 90       	pop	r7
   19278:	6f 90       	pop	r6
   1927a:	5f 90       	pop	r5
   1927c:	4f 90       	pop	r4
   1927e:	08 95       	ret

00019280 <TurnerC3_Orig_ParseCommand>:

	return;
}

uint8_t TurnerC3_Orig_ParseCommand(PTURNER_C3_ORIG_TASK pTaskInfo, char command, char* cmdParams)
{
   19280:	ef 92       	push	r14
   19282:	ff 92       	push	r15
   19284:	0f 93       	push	r16
   19286:	1f 93       	push	r17
   19288:	df 93       	push	r29
   1928a:	cf 93       	push	r28
   1928c:	00 d0       	rcall	.+0      	; 0x1928e <TurnerC3_Orig_ParseCommand+0xe>
   1928e:	cd b7       	in	r28, 0x3d	; 61
   19290:	de b7       	in	r29, 0x3e	; 62
   19292:	8c 01       	movw	r16, r24
   19294:	5b 83       	std	Y+3, r21	; 0x03
   19296:	4a 83       	std	Y+2, r20	; 0x02
	uint8_t retval = FAIL;

	switch(command)
   19298:	68 35       	cpi	r22, 0x58	; 88
   1929a:	79 f1       	breq	.+94     	; 0x192fa <TurnerC3_Orig_ParseCommand+0x7a>
   1929c:	69 35       	cpi	r22, 0x59	; 89
   1929e:	b0 f4       	brcc	.+44     	; 0x192cc <TurnerC3_Orig_ParseCommand+0x4c>
   192a0:	69 34       	cpi	r22, 0x49	; 73
   192a2:	09 f4       	brne	.+2      	; 0x192a6 <TurnerC3_Orig_ParseCommand+0x26>
   192a4:	18 c1       	rjmp	.+560    	; 0x194d6 <TurnerC3_Orig_ParseCommand+0x256>
   192a6:	6a 34       	cpi	r22, 0x4A	; 74
   192a8:	38 f4       	brcc	.+14     	; 0x192b8 <TurnerC3_Orig_ParseCommand+0x38>
   192aa:	61 34       	cpi	r22, 0x41	; 65
   192ac:	09 f4       	brne	.+2      	; 0x192b0 <TurnerC3_Orig_ParseCommand+0x30>
   192ae:	a1 c0       	rjmp	.+322    	; 0x193f2 <TurnerC3_Orig_ParseCommand+0x172>
   192b0:	66 34       	cpi	r22, 0x46	; 70
   192b2:	09 f0       	breq	.+2      	; 0x192b6 <TurnerC3_Orig_ParseCommand+0x36>
   192b4:	70 c1       	rjmp	.+736    	; 0x19596 <TurnerC3_Orig_ParseCommand+0x316>
   192b6:	21 c0       	rjmp	.+66     	; 0x192fa <TurnerC3_Orig_ParseCommand+0x7a>
   192b8:	62 35       	cpi	r22, 0x52	; 82
   192ba:	09 f4       	brne	.+2      	; 0x192be <TurnerC3_Orig_ParseCommand+0x3e>
   192bc:	64 c0       	rjmp	.+200    	; 0x19386 <TurnerC3_Orig_ParseCommand+0x106>
   192be:	63 35       	cpi	r22, 0x53	; 83
   192c0:	09 f4       	brne	.+2      	; 0x192c4 <TurnerC3_Orig_ParseCommand+0x44>
   192c2:	09 c1       	rjmp	.+530    	; 0x194d6 <TurnerC3_Orig_ParseCommand+0x256>
   192c4:	6f 34       	cpi	r22, 0x4F	; 79
   192c6:	09 f0       	breq	.+2      	; 0x192ca <TurnerC3_Orig_ParseCommand+0x4a>
   192c8:	66 c1       	rjmp	.+716    	; 0x19596 <TurnerC3_Orig_ParseCommand+0x316>
   192ca:	5d c0       	rjmp	.+186    	; 0x19386 <TurnerC3_Orig_ParseCommand+0x106>
   192cc:	6f 36       	cpi	r22, 0x6F	; 111
   192ce:	09 f4       	brne	.+2      	; 0x192d2 <TurnerC3_Orig_ParseCommand+0x52>
   192d0:	5a c0       	rjmp	.+180    	; 0x19386 <TurnerC3_Orig_ParseCommand+0x106>
   192d2:	60 37       	cpi	r22, 0x70	; 112
   192d4:	48 f4       	brcc	.+18     	; 0x192e8 <TurnerC3_Orig_ParseCommand+0x68>
   192d6:	66 36       	cpi	r22, 0x66	; 102
   192d8:	81 f0       	breq	.+32     	; 0x192fa <TurnerC3_Orig_ParseCommand+0x7a>
   192da:	69 36       	cpi	r22, 0x69	; 105
   192dc:	09 f4       	brne	.+2      	; 0x192e0 <TurnerC3_Orig_ParseCommand+0x60>
   192de:	fb c0       	rjmp	.+502    	; 0x194d6 <TurnerC3_Orig_ParseCommand+0x256>
   192e0:	61 36       	cpi	r22, 0x61	; 97
   192e2:	09 f0       	breq	.+2      	; 0x192e6 <TurnerC3_Orig_ParseCommand+0x66>
   192e4:	58 c1       	rjmp	.+688    	; 0x19596 <TurnerC3_Orig_ParseCommand+0x316>
   192e6:	85 c0       	rjmp	.+266    	; 0x193f2 <TurnerC3_Orig_ParseCommand+0x172>
   192e8:	63 37       	cpi	r22, 0x73	; 115
   192ea:	09 f4       	brne	.+2      	; 0x192ee <TurnerC3_Orig_ParseCommand+0x6e>
   192ec:	f4 c0       	rjmp	.+488    	; 0x194d6 <TurnerC3_Orig_ParseCommand+0x256>
   192ee:	68 37       	cpi	r22, 0x78	; 120
   192f0:	21 f0       	breq	.+8      	; 0x192fa <TurnerC3_Orig_ParseCommand+0x7a>
   192f2:	62 37       	cpi	r22, 0x72	; 114
   192f4:	09 f0       	breq	.+2      	; 0x192f8 <TurnerC3_Orig_ParseCommand+0x78>
   192f6:	4f c1       	rjmp	.+670    	; 0x19596 <TurnerC3_Orig_ParseCommand+0x316>
   192f8:	46 c0       	rjmp	.+140    	; 0x19386 <TurnerC3_Orig_ParseCommand+0x106>
		case 'x':
		case 'X':
		case 'f':
		case 'F':
		{
			pTaskInfo->pBuf->sampleC3 = FALSE;
   192fa:	d8 01       	movw	r26, r16
   192fc:	14 96       	adiw	r26, 0x04	; 4
   192fe:	ed 91       	ld	r30, X+
   19300:	fc 91       	ld	r31, X
   19302:	15 97       	sbiw	r26, 0x05	; 5
   19304:	ec 5f       	subi	r30, 0xFC	; 252
   19306:	fa 4f       	sbci	r31, 0xFA	; 250
   19308:	10 82       	st	Z, r1
			EnablePIBModule(pTaskInfo->portNum, FALSE, FALSE);
   1930a:	11 96       	adiw	r26, 0x01	; 1
   1930c:	8c 91       	ld	r24, X
   1930e:	60 e0       	ldi	r22, 0x00	; 0
   19310:	40 e0       	ldi	r20, 0x00	; 0
   19312:	0e 94 a2 38 	call	0x7144	; 0x7144 <EnablePIBModule>
			retval = SUCCESS;
			if(pTaskInfo->pBuf->sampleCount > 0)
   19316:	d8 01       	movw	r26, r16
   19318:	14 96       	adiw	r26, 0x04	; 4
   1931a:	ed 91       	ld	r30, X+
   1931c:	fc 91       	ld	r31, X
   1931e:	15 97       	sbiw	r26, 0x05	; 5
   19320:	e2 58       	subi	r30, 0x82	; 130
   19322:	fa 4f       	sbci	r31, 0xFA	; 250
   19324:	80 81       	ld	r24, Z
   19326:	ee 57       	subi	r30, 0x7E	; 126
   19328:	f5 40       	sbci	r31, 0x05	; 5
   1932a:	88 23       	and	r24, r24
   1932c:	09 f4       	brne	.+2      	; 0x19330 <TurnerC3_Orig_ParseCommand+0xb0>
   1932e:	d3 c0       	rjmp	.+422    	; 0x194d6 <TurnerC3_Orig_ParseCommand+0x256>
			{
				pTaskInfo->pBuf->reportData.headerReport.payloadType = 0x00000060;
   19330:	ef 57       	subi	r30, 0x7F	; 127
   19332:	fa 4f       	sbci	r31, 0xFA	; 250
   19334:	80 e6       	ldi	r24, 0x60	; 96
   19336:	90 e0       	ldi	r25, 0x00	; 0
   19338:	a0 e0       	ldi	r26, 0x00	; 0
   1933a:	b0 e0       	ldi	r27, 0x00	; 0
   1933c:	81 93       	st	Z+, r24
   1933e:	91 93       	st	Z+, r25
   19340:	a1 93       	st	Z+, r26
   19342:	b1 93       	st	Z+, r27
				pTaskInfo->pBuf->reportData.headerReport.boardID = mainBoardID;
   19344:	80 91 e6 03 	lds	r24, 0x03E6
   19348:	81 93       	st	Z+, r24
				pTaskInfo->pBuf->reportData.headerReport.taskID = pTaskInfo->taskID;
   1934a:	d8 01       	movw	r26, r16
   1934c:	8c 91       	ld	r24, X
   1934e:	81 93       	st	Z+, r24
				pTaskInfo->pBuf->reportData.headerReport.dataFormat = 9;
				pTaskInfo->pBuf->reportData.headerReport.parser = 0;
				pTaskInfo->pBuf->reportData.headerReport.priority = 2;
   19350:	89 e4       	ldi	r24, 0x49	; 73
   19352:	81 93       	st	Z+, r24
				pTaskInfo->pBuf->reportData.headerReport.repeatCount = MAX_C3_ORIG_SAMPLES;
   19354:	87 e0       	ldi	r24, 0x07	; 7
   19356:	80 83       	st	Z, r24

				//transmit samples
				TurnerC3_Orig_DataReportXmitType91(pTaskInfo);
   19358:	c8 01       	movw	r24, r16
   1935a:	0e 94 6b c7 	call	0x18ed6	; 0x18ed6 <TurnerC3_Orig_DataReportXmitType91>

				memset(&(pTaskInfo->pBuf->reportData), 0, sizeof(C3_ORIG_DATA_REPORT));
   1935e:	f8 01       	movw	r30, r16
   19360:	84 81       	ldd	r24, Z+4	; 0x04
   19362:	95 81       	ldd	r25, Z+5	; 0x05
   19364:	8f 57       	subi	r24, 0x7F	; 127
   19366:	9a 4f       	sbci	r25, 0xFA	; 250
   19368:	fc 01       	movw	r30, r24
   1936a:	8e eb       	ldi	r24, 0xBE	; 190
   1936c:	df 01       	movw	r26, r30
   1936e:	1d 92       	st	X+, r1
   19370:	8a 95       	dec	r24
   19372:	e9 f7       	brne	.-6      	; 0x1936e <TurnerC3_Orig_ParseCommand+0xee>
				pTaskInfo->pBuf->sampleCount = 0;
   19374:	d8 01       	movw	r26, r16
   19376:	14 96       	adiw	r26, 0x04	; 4
   19378:	ed 91       	ld	r30, X+
   1937a:	fc 91       	ld	r31, X
   1937c:	15 97       	sbiw	r26, 0x05	; 5
   1937e:	e2 58       	subi	r30, 0x82	; 130
   19380:	fa 4f       	sbci	r31, 0xFA	; 250
   19382:	10 82       	st	Z, r1
   19384:	a8 c0       	rjmp	.+336    	; 0x194d6 <TurnerC3_Orig_ParseCommand+0x256>
		case 'r':
		case 'R':
		case 'o':
		case 'O':
		{
			pTaskInfo->pBuf->sampleC3 = TRUE;
   19386:	d8 01       	movw	r26, r16
   19388:	14 96       	adiw	r26, 0x04	; 4
   1938a:	ed 91       	ld	r30, X+
   1938c:	fc 91       	ld	r31, X
   1938e:	15 97       	sbiw	r26, 0x05	; 5
   19390:	ec 5f       	subi	r30, 0xFC	; 252
   19392:	fa 4f       	sbci	r31, 0xFA	; 250
   19394:	8f ef       	ldi	r24, 0xFF	; 255
   19396:	80 83       	st	Z, r24
			EnablePIBModule(pTaskInfo->portNum, TRUE, FALSE);
   19398:	11 96       	adiw	r26, 0x01	; 1
   1939a:	8c 91       	ld	r24, X
   1939c:	6f ef       	ldi	r22, 0xFF	; 255
   1939e:	40 e0       	ldi	r20, 0x00	; 0
   193a0:	0e 94 a2 38 	call	0x7144	; 0x7144 <EnablePIBModule>
			OSTimeDlyHMSM(0,0,0,100);
   193a4:	80 e0       	ldi	r24, 0x00	; 0
   193a6:	60 e0       	ldi	r22, 0x00	; 0
   193a8:	40 e0       	ldi	r20, 0x00	; 0
   193aa:	24 e6       	ldi	r18, 0x64	; 100
   193ac:	30 e0       	ldi	r19, 0x00	; 0
   193ae:	0e 94 2a 2e 	call	0x5c54	; 0x5c54 <OSTimeDlyHMSM>

			memset(pTaskInfo->pBuf->bufferRx, 0, 1024);
   193b2:	f8 01       	movw	r30, r16
   193b4:	84 81       	ldd	r24, Z+4	; 0x04
   193b6:	95 81       	ldd	r25, Z+5	; 0x05
   193b8:	80 50       	subi	r24, 0x00	; 0
   193ba:	9f 4f       	sbci	r25, 0xFF	; 255
   193bc:	fc 01       	movw	r30, r24
   193be:	80 e0       	ldi	r24, 0x00	; 0
   193c0:	94 e0       	ldi	r25, 0x04	; 4
   193c2:	df 01       	movw	r26, r30
   193c4:	9c 01       	movw	r18, r24
   193c6:	1d 92       	st	X+, r1
   193c8:	21 50       	subi	r18, 0x01	; 1
   193ca:	30 40       	sbci	r19, 0x00	; 0
   193cc:	e1 f7       	brne	.-8      	; 0x193c6 <TurnerC3_Orig_ParseCommand+0x146>

			uint8_t err = OS_ERR_NONE;		
   193ce:	19 82       	std	Y+1, r1	; 0x01
			while(err == OS_ERR_NONE)
			{
				OSuartGetCharWait(pTaskInfo->portNum, 64, &err);		//wait .05 seconds -- basically clearing buffer
   193d0:	7e 01       	movw	r14, r28
   193d2:	08 94       	sec
   193d4:	e1 1c       	adc	r14, r1
   193d6:	f1 1c       	adc	r15, r1
   193d8:	08 c0       	rjmp	.+16     	; 0x193ea <TurnerC3_Orig_ParseCommand+0x16a>
   193da:	d8 01       	movw	r26, r16
   193dc:	11 96       	adiw	r26, 0x01	; 1
   193de:	8c 91       	ld	r24, X
   193e0:	60 e4       	ldi	r22, 0x40	; 64
   193e2:	70 e0       	ldi	r23, 0x00	; 0
   193e4:	a7 01       	movw	r20, r14
   193e6:	0e 94 b8 32 	call	0x6570	; 0x6570 <OSuartGetCharWait>
			OSTimeDlyHMSM(0,0,0,100);

			memset(pTaskInfo->pBuf->bufferRx, 0, 1024);

			uint8_t err = OS_ERR_NONE;		
			while(err == OS_ERR_NONE)
   193ea:	89 81       	ldd	r24, Y+1	; 0x01
   193ec:	88 23       	and	r24, r24
   193ee:	a9 f3       	breq	.-22     	; 0x193da <TurnerC3_Orig_ParseCommand+0x15a>
   193f0:	72 c0       	rjmp	.+228    	; 0x194d6 <TurnerC3_Orig_ParseCommand+0x256>
		case 'a':
		case 'A':
		{
			char* result = NULL;

			memset(pTaskInfo->pBuf->tokenSeparatorList, 0, MAX_TOKEN_SEPARATORS);
   193f2:	f8 01       	movw	r30, r16
   193f4:	84 81       	ldd	r24, Z+4	; 0x04
   193f6:	95 81       	ldd	r25, Z+5	; 0x05
   193f8:	88 50       	subi	r24, 0x08	; 8
   193fa:	99 4f       	sbci	r25, 0xF9	; 249
   193fc:	fc 01       	movw	r30, r24
   193fe:	84 e1       	ldi	r24, 0x14	; 20
   19400:	df 01       	movw	r26, r30
   19402:	1d 92       	st	X+, r1
   19404:	8a 95       	dec	r24
   19406:	e9 f7       	brne	.-6      	; 0x19402 <TurnerC3_Orig_ParseCommand+0x182>
			strcat_P(pTaskInfo->pBuf->tokenSeparatorList, tokenListConsole);
   19408:	f8 01       	movw	r30, r16
   1940a:	84 81       	ldd	r24, Z+4	; 0x04
   1940c:	95 81       	ldd	r25, Z+5	; 0x05
   1940e:	88 50       	subi	r24, 0x08	; 8
   19410:	99 4f       	sbci	r25, 0xF9	; 249
   19412:	68 e3       	ldi	r22, 0x38	; 56
   19414:	72 e0       	ldi	r23, 0x02	; 2
   19416:	0e 94 b4 ef 	call	0x1df68	; 0x1df68 <strcat_P>

			result = strtok_r(cmdParams, pTaskInfo->pBuf->tokenSeparatorList, &cmdParams);
   1941a:	d8 01       	movw	r26, r16
   1941c:	14 96       	adiw	r26, 0x04	; 4
   1941e:	6d 91       	ld	r22, X+
   19420:	7c 91       	ld	r23, X
   19422:	15 97       	sbiw	r26, 0x05	; 5
   19424:	68 50       	subi	r22, 0x08	; 8
   19426:	79 4f       	sbci	r23, 0xF9	; 249
   19428:	8a 81       	ldd	r24, Y+2	; 0x02
   1942a:	9b 81       	ldd	r25, Y+3	; 0x03
   1942c:	ae 01       	movw	r20, r28
   1942e:	4e 5f       	subi	r20, 0xFE	; 254
   19430:	5f 4f       	sbci	r21, 0xFF	; 255
   19432:	0e 94 a0 f0 	call	0x1e140	; 0x1e140 <strtok_r>
   19436:	fc 01       	movw	r30, r24

			if(result != NULL)
   19438:	00 97       	sbiw	r24, 0x00	; 0
   1943a:	09 f4       	brne	.+2      	; 0x1943e <TurnerC3_Orig_ParseCommand+0x1be>
   1943c:	ac c0       	rjmp	.+344    	; 0x19596 <TurnerC3_Orig_ParseCommand+0x316>
			{
				char* pTest = result;
				if((*pTest == 'o') || (*pTest == 'O'))
   1943e:	80 81       	ld	r24, Z
   19440:	8f 36       	cpi	r24, 0x6F	; 111
   19442:	11 f0       	breq	.+4      	; 0x19448 <TurnerC3_Orig_ParseCommand+0x1c8>
   19444:	8f 34       	cpi	r24, 0x4F	; 79
   19446:	31 f4       	brne	.+12     	; 0x19454 <TurnerC3_Orig_ParseCommand+0x1d4>
				{
					pTest++;
				
					if((*pTest == 'f') || (*pTest == 'F'))
   19448:	81 81       	ldd	r24, Z+1	; 0x01
   1944a:	86 36       	cpi	r24, 0x66	; 102
   1944c:	11 f0       	breq	.+4      	; 0x19452 <TurnerC3_Orig_ParseCommand+0x1d2>
   1944e:	86 34       	cpi	r24, 0x46	; 70
   19450:	09 f4       	brne	.+2      	; 0x19454 <TurnerC3_Orig_ParseCommand+0x1d4>
						*result = *pTest;
   19452:	80 83       	st	Z, r24
				}

				retval = SUCCESS;
				switch(*result)
   19454:	80 81       	ld	r24, Z
   19456:	8f 34       	cpi	r24, 0x4F	; 79
   19458:	f9 f0       	breq	.+62     	; 0x19498 <TurnerC3_Orig_ParseCommand+0x218>
   1945a:	80 35       	cpi	r24, 0x50	; 80
   1945c:	70 f4       	brcc	.+28     	; 0x1947a <TurnerC3_Orig_ParseCommand+0x1fa>
   1945e:	81 33       	cpi	r24, 0x31	; 49
   19460:	d9 f0       	breq	.+54     	; 0x19498 <TurnerC3_Orig_ParseCommand+0x218>
   19462:	82 33       	cpi	r24, 0x32	; 50
   19464:	20 f4       	brcc	.+8      	; 0x1946e <TurnerC3_Orig_ParseCommand+0x1ee>
   19466:	80 33       	cpi	r24, 0x30	; 48
   19468:	09 f0       	breq	.+2      	; 0x1946c <TurnerC3_Orig_ParseCommand+0x1ec>
   1946a:	95 c0       	rjmp	.+298    	; 0x19596 <TurnerC3_Orig_ParseCommand+0x316>
   1946c:	1f c0       	rjmp	.+62     	; 0x194ac <TurnerC3_Orig_ParseCommand+0x22c>
   1946e:	86 34       	cpi	r24, 0x46	; 70
   19470:	e9 f0       	breq	.+58     	; 0x194ac <TurnerC3_Orig_ParseCommand+0x22c>
   19472:	8e 34       	cpi	r24, 0x4E	; 78
   19474:	09 f0       	breq	.+2      	; 0x19478 <TurnerC3_Orig_ParseCommand+0x1f8>
   19476:	8f c0       	rjmp	.+286    	; 0x19596 <TurnerC3_Orig_ParseCommand+0x316>
   19478:	19 c0       	rjmp	.+50     	; 0x194ac <TurnerC3_Orig_ParseCommand+0x22c>
   1947a:	8e 36       	cpi	r24, 0x6E	; 110
   1947c:	b9 f0       	breq	.+46     	; 0x194ac <TurnerC3_Orig_ParseCommand+0x22c>
   1947e:	8f 36       	cpi	r24, 0x6F	; 111
   19480:	30 f4       	brcc	.+12     	; 0x1948e <TurnerC3_Orig_ParseCommand+0x20e>
   19482:	89 35       	cpi	r24, 0x59	; 89
   19484:	49 f0       	breq	.+18     	; 0x19498 <TurnerC3_Orig_ParseCommand+0x218>
   19486:	86 36       	cpi	r24, 0x66	; 102
   19488:	09 f0       	breq	.+2      	; 0x1948c <TurnerC3_Orig_ParseCommand+0x20c>
   1948a:	85 c0       	rjmp	.+266    	; 0x19596 <TurnerC3_Orig_ParseCommand+0x316>
   1948c:	0f c0       	rjmp	.+30     	; 0x194ac <TurnerC3_Orig_ParseCommand+0x22c>
   1948e:	8f 36       	cpi	r24, 0x6F	; 111
   19490:	19 f0       	breq	.+6      	; 0x19498 <TurnerC3_Orig_ParseCommand+0x218>
   19492:	89 37       	cpi	r24, 0x79	; 121
   19494:	09 f0       	breq	.+2      	; 0x19498 <TurnerC3_Orig_ParseCommand+0x218>
   19496:	7f c0       	rjmp	.+254    	; 0x19596 <TurnerC3_Orig_ParseCommand+0x316>
					case 'y':
					case 'Y':
					case 'o':
					case 'O':
					case '1':
						pTaskInfo->pBuf->initState = AUTORUN_ON;
   19498:	d8 01       	movw	r26, r16
   1949a:	14 96       	adiw	r26, 0x04	; 4
   1949c:	ed 91       	ld	r30, X+
   1949e:	fc 91       	ld	r31, X
   194a0:	15 97       	sbiw	r26, 0x05	; 5
   194a2:	eb 5f       	subi	r30, 0xFB	; 251
   194a4:	fa 4f       	sbci	r31, 0xFA	; 250
   194a6:	81 e0       	ldi	r24, 0x01	; 1
   194a8:	80 83       	st	Z, r24
   194aa:	08 c0       	rjmp	.+16     	; 0x194bc <TurnerC3_Orig_ParseCommand+0x23c>
					case 'n':
					case 'N':
					case 'f':
					case 'F':
					case '0':
						pTaskInfo->pBuf->initState = AUTORUN_OFF;
   194ac:	d8 01       	movw	r26, r16
   194ae:	14 96       	adiw	r26, 0x04	; 4
   194b0:	ed 91       	ld	r30, X+
   194b2:	fc 91       	ld	r31, X
   194b4:	15 97       	sbiw	r26, 0x05	; 5
   194b6:	eb 5f       	subi	r30, 0xFB	; 251
   194b8:	fa 4f       	sbci	r31, 0xFA	; 250
   194ba:	10 82       	st	Z, r1
					default:
						retval = FAIL;
				}

				if(retval == SUCCESS)
					EepromWriteByteUnSigned((void*)(pTaskInfo->eepromAddress + TURNER_C3_AUTORUN_STATE_OFFSET), pTaskInfo->pBuf->initState);
   194bc:	f8 01       	movw	r30, r16
   194be:	82 81       	ldd	r24, Z+2	; 0x02
   194c0:	93 81       	ldd	r25, Z+3	; 0x03
   194c2:	04 80       	ldd	r0, Z+4	; 0x04
   194c4:	f5 81       	ldd	r31, Z+5	; 0x05
   194c6:	e0 2d       	mov	r30, r0
   194c8:	eb 5f       	subi	r30, 0xFB	; 251
   194ca:	fa 4f       	sbci	r31, 0xFA	; 250
   194cc:	8c 5b       	subi	r24, 0xBC	; 188
   194ce:	9f 4f       	sbci	r25, 0xFF	; 255
   194d0:	60 81       	ld	r22, Z
   194d2:	0e 94 9f 37 	call	0x6f3e	; 0x6f3e <EepromWriteByteUnSigned>
		}
	}

	if(retval == SUCCESS)
	{
		sprintf_P(pTaskInfo->pBuf->consoleResponse, PSTR("Turner C3:  Sampling is %s:  Autorun is %s"), pTaskInfo->pBuf->sampleC3 ? "ON":"OFF", (pTaskInfo->pBuf->initState==AUTORUN_ON) ? "ON":"OFF");
   194d6:	f8 01       	movw	r30, r16
   194d8:	a4 81       	ldd	r26, Z+4	; 0x04
   194da:	b5 81       	ldd	r27, Z+5	; 0x05
   194dc:	ac 5f       	subi	r26, 0xFC	; 252
   194de:	ba 4f       	sbci	r27, 0xFA	; 250
   194e0:	8c 91       	ld	r24, X
   194e2:	a4 50       	subi	r26, 0x04	; 4
   194e4:	b5 40       	sbci	r27, 0x05	; 5
   194e6:	88 23       	and	r24, r24
   194e8:	19 f4       	brne	.+6      	; 0x194f0 <TurnerC3_Orig_ParseCommand+0x270>
   194ea:	49 e2       	ldi	r20, 0x29	; 41
   194ec:	55 e0       	ldi	r21, 0x05	; 5
   194ee:	02 c0       	rjmp	.+4      	; 0x194f4 <TurnerC3_Orig_ParseCommand+0x274>
   194f0:	4d e2       	ldi	r20, 0x2D	; 45
   194f2:	55 e0       	ldi	r21, 0x05	; 5
   194f4:	ab 5f       	subi	r26, 0xFB	; 251
   194f6:	ba 4f       	sbci	r27, 0xFA	; 250
   194f8:	8c 91       	ld	r24, X
   194fa:	a5 50       	subi	r26, 0x05	; 5
   194fc:	b5 40       	sbci	r27, 0x05	; 5
   194fe:	81 30       	cpi	r24, 0x01	; 1
   19500:	19 f0       	breq	.+6      	; 0x19508 <TurnerC3_Orig_ParseCommand+0x288>
   19502:	29 e2       	ldi	r18, 0x29	; 41
   19504:	35 e0       	ldi	r19, 0x05	; 5
   19506:	02 c0       	rjmp	.+4      	; 0x1950c <TurnerC3_Orig_ParseCommand+0x28c>
   19508:	2d e2       	ldi	r18, 0x2D	; 45
   1950a:	35 e0       	ldi	r19, 0x05	; 5
   1950c:	8d b7       	in	r24, 0x3d	; 61
   1950e:	9e b7       	in	r25, 0x3e	; 62
   19510:	08 97       	sbiw	r24, 0x08	; 8
   19512:	0f b6       	in	r0, 0x3f	; 63
   19514:	f8 94       	cli
   19516:	9e bf       	out	0x3e, r25	; 62
   19518:	0f be       	out	0x3f, r0	; 63
   1951a:	8d bf       	out	0x3d, r24	; 61
   1951c:	6d b7       	in	r22, 0x3d	; 61
   1951e:	7e b7       	in	r23, 0x3e	; 62
   19520:	6f 5f       	subi	r22, 0xFF	; 255
   19522:	7f 4f       	sbci	r23, 0xFF	; 255
   19524:	ab 5e       	subi	r26, 0xEB	; 235
   19526:	b8 4f       	sbci	r27, 0xF8	; 248
   19528:	ed b7       	in	r30, 0x3d	; 61
   1952a:	fe b7       	in	r31, 0x3e	; 62
   1952c:	b2 83       	std	Z+2, r27	; 0x02
   1952e:	a1 83       	std	Z+1, r26	; 0x01
   19530:	82 e8       	ldi	r24, 0x82	; 130
   19532:	9a e1       	ldi	r25, 0x1A	; 26
   19534:	db 01       	movw	r26, r22
   19536:	13 96       	adiw	r26, 0x03	; 3
   19538:	9c 93       	st	X, r25
   1953a:	8e 93       	st	-X, r24
   1953c:	12 97       	sbiw	r26, 0x02	; 2
   1953e:	15 96       	adiw	r26, 0x05	; 5
   19540:	5c 93       	st	X, r21
   19542:	4e 93       	st	-X, r20
   19544:	14 97       	sbiw	r26, 0x04	; 4
   19546:	17 96       	adiw	r26, 0x07	; 7
   19548:	3c 93       	st	X, r19
   1954a:	2e 93       	st	-X, r18
   1954c:	16 97       	sbiw	r26, 0x06	; 6
   1954e:	0e 94 51 f1 	call	0x1e2a2	; 0x1e2a2 <sprintf_P>
		pTaskInfo->pBuf->responseInfo.status = CONSOLE_RESPONSE_OK;
   19552:	d8 01       	movw	r26, r16
   19554:	14 96       	adiw	r26, 0x04	; 4
   19556:	ed 91       	ld	r30, X+
   19558:	fc 91       	ld	r31, X
   1955a:	15 97       	sbiw	r26, 0x05	; 5
   1955c:	e2 5f       	subi	r30, 0xF2	; 242
   1955e:	f8 4f       	sbci	r31, 0xF8	; 248
   19560:	81 e0       	ldi	r24, 0x01	; 1
   19562:	80 83       	st	Z, r24
   19564:	ee 50       	subi	r30, 0x0E	; 14
   19566:	f7 40       	sbci	r31, 0x07	; 7
		pTaskInfo->pBuf->responseInfo.length = strlen(pTaskInfo->pBuf->consoleResponse);			
   19568:	cf 01       	movw	r24, r30
   1956a:	8b 5e       	subi	r24, 0xEB	; 235
   1956c:	98 4f       	sbci	r25, 0xF8	; 248
   1956e:	dc 01       	movw	r26, r24
   19570:	0d 90       	ld	r0, X+
   19572:	00 20       	and	r0, r0
   19574:	e9 f7       	brne	.-6      	; 0x19570 <TurnerC3_Orig_ParseCommand+0x2f0>
   19576:	11 97       	sbiw	r26, 0x01	; 1
   19578:	a8 1b       	sub	r26, r24
   1957a:	b9 0b       	sbc	r27, r25
   1957c:	e0 5f       	subi	r30, 0xF0	; 240
   1957e:	f8 4f       	sbci	r31, 0xF8	; 248
   19580:	a0 83       	st	Z, r26
   19582:	8f ef       	ldi	r24, 0xFF	; 255
   19584:	ed b7       	in	r30, 0x3d	; 61
   19586:	fe b7       	in	r31, 0x3e	; 62
   19588:	38 96       	adiw	r30, 0x08	; 8
   1958a:	0f b6       	in	r0, 0x3f	; 63
   1958c:	f8 94       	cli
   1958e:	fe bf       	out	0x3e, r31	; 62
   19590:	0f be       	out	0x3f, r0	; 63
   19592:	ed bf       	out	0x3d, r30	; 61
   19594:	01 c0       	rjmp	.+2      	; 0x19598 <TurnerC3_Orig_ParseCommand+0x318>
   19596:	80 e0       	ldi	r24, 0x00	; 0
	}

	return retval;
}
   19598:	0f 90       	pop	r0
   1959a:	0f 90       	pop	r0
   1959c:	0f 90       	pop	r0
   1959e:	cf 91       	pop	r28
   195a0:	df 91       	pop	r29
   195a2:	1f 91       	pop	r17
   195a4:	0f 91       	pop	r16
   195a6:	ff 90       	pop	r15
   195a8:	ef 90       	pop	r14
   195aa:	08 95       	ret

000195ac <TurnerC3_Orig_DataReportXmit>:
		}
	}
}

uint8_t TurnerC3_Orig_DataReportXmit(PTURNER_C3_ORIG_TASK pTaskInfo)
{
   195ac:	0f 93       	push	r16
   195ae:	1f 93       	push	r17
   195b0:	df 93       	push	r29
   195b2:	cf 93       	push	r28
   195b4:	0f 92       	push	r0
   195b6:	cd b7       	in	r28, 0x3d	; 61
   195b8:	de b7       	in	r29, 0x3e	; 62
   195ba:	8c 01       	movw	r16, r24
	uint8_t retval = 0;
	uint8_t err = 0;
   195bc:	19 82       	std	Y+1, r1	; 0x01
	PTURNER_C3_REPORT_XMIT pReport = NULL;

	OSMutexPend(pMutexFloatQueue, INFINITE, &err);
   195be:	80 91 51 19 	lds	r24, 0x1951
   195c2:	90 91 52 19 	lds	r25, 0x1952
   195c6:	60 e0       	ldi	r22, 0x00	; 0
   195c8:	70 e0       	ldi	r23, 0x00	; 0
   195ca:	ae 01       	movw	r20, r28
   195cc:	4f 5f       	subi	r20, 0xFF	; 255
   195ce:	5f 4f       	sbci	r21, 0xFF	; 255
   195d0:	0e 94 c2 28 	call	0x5184	; 0x5184 <OSMutexPend>

	pReport = (PTURNER_C3_REPORT_XMIT)&(txFloatData[headFloatTx]);
   195d4:	80 91 93 07 	lds	r24, 0x0793
   195d8:	90 e0       	ldi	r25, 0x00	; 0
   195da:	26 e3       	ldi	r18, 0x36	; 54
   195dc:	31 e0       	ldi	r19, 0x01	; 1
   195de:	82 9f       	mul	r24, r18
   195e0:	f0 01       	movw	r30, r0
   195e2:	83 9f       	mul	r24, r19
   195e4:	f0 0d       	add	r31, r0
   195e6:	92 9f       	mul	r25, r18
   195e8:	f0 0d       	add	r31, r0
   195ea:	11 24       	eor	r1, r1
   195ec:	e3 5a       	subi	r30, 0xA3	; 163
   195ee:	f6 45       	sbci	r31, 0x56	; 86

	pReport->comm.headers.length  = sizeof(TURNER_C3_REPORT_XMIT) + CRC16_SIZE;
   195f0:	8d e8       	ldi	r24, 0x8D	; 141
   195f2:	90 e0       	ldi	r25, 0x00	; 0
   195f4:	91 83       	std	Z+1, r25	; 0x01
   195f6:	80 83       	st	Z, r24
	pReport->comm.headers.destination = FLOAT_IRIDIUM_INTERFACE;
   195f8:	82 e0       	ldi	r24, 0x02	; 2
   195fa:	90 e0       	ldi	r25, 0x00	; 0
   195fc:	93 83       	std	Z+3, r25	; 0x03
   195fe:	82 83       	std	Z+2, r24	; 0x02

	pReport->comm.iridiumInfo.structureType = 0x80;
   19600:	80 e8       	ldi	r24, 0x80	; 128
   19602:	84 87       	std	Z+12, r24	; 0x0c
	pReport->comm.iridiumInfo.size = pReport->comm.headers.length - sizeof(PIB_IRIDIUM_DATA_XMIT) - CRC16_SIZE;
   19604:	8c e7       	ldi	r24, 0x7C	; 124
   19606:	90 e0       	ldi	r25, 0x00	; 0
   19608:	96 87       	std	Z+14, r25	; 0x0e
   1960a:	85 87       	std	Z+13, r24	; 0x0d

	pReport->payloadID = 0x00000050;
   1960c:	80 e5       	ldi	r24, 0x50	; 80
   1960e:	90 e0       	ldi	r25, 0x00	; 0
   19610:	a0 e0       	ldi	r26, 0x00	; 0
   19612:	b0 e0       	ldi	r27, 0x00	; 0
   19614:	87 87       	std	Z+15, r24	; 0x0f
   19616:	90 8b       	std	Z+16, r25	; 0x10
   19618:	a1 8b       	std	Z+17, r26	; 0x11
   1961a:	b2 8b       	std	Z+18, r27	; 0x12

	memcpy(&(pReport->fluorometerSample), &(pTaskInfo->pBuf->fluorometerSample), 120);
   1961c:	d8 01       	movw	r26, r16
   1961e:	14 96       	adiw	r26, 0x04	; 4
   19620:	2d 91       	ld	r18, X+
   19622:	3c 91       	ld	r19, X
   19624:	15 97       	sbiw	r26, 0x05	; 5
   19626:	73 96       	adiw	r30, 0x13	; 19
   19628:	2a 5f       	subi	r18, 0xFA	; 250
   1962a:	3a 4f       	sbci	r19, 0xFA	; 250
   1962c:	88 e7       	ldi	r24, 0x78	; 120
   1962e:	d9 01       	movw	r26, r18
   19630:	0d 90       	ld	r0, X+
   19632:	9d 01       	movw	r18, r26
   19634:	01 92       	st	Z+, r0
   19636:	81 50       	subi	r24, 0x01	; 1
   19638:	d1 f7       	brne	.-12     	; 0x1962e <TurnerC3_Orig_DataReportXmit+0x82>


	(headFloatTx < MAX_FLOAT_BUFFERS - 1) ? (headFloatTx++) : (headFloatTx = 0);
   1963a:	80 91 93 07 	lds	r24, 0x0793
   1963e:	87 30       	cpi	r24, 0x07	; 7
   19640:	20 f4       	brcc	.+8      	; 0x1964a <TurnerC3_Orig_DataReportXmit+0x9e>
   19642:	8f 5f       	subi	r24, 0xFF	; 255
   19644:	80 93 93 07 	sts	0x0793, r24
   19648:	02 c0       	rjmp	.+4      	; 0x1964e <TurnerC3_Orig_DataReportXmit+0xa2>
   1964a:	10 92 93 07 	sts	0x0793, r1

	if(headFloatTx == tailFloatTx)
   1964e:	90 91 93 07 	lds	r25, 0x0793
   19652:	80 91 94 07 	lds	r24, 0x0794
   19656:	98 17       	cp	r25, r24
   19658:	41 f4       	brne	.+16     	; 0x1966a <TurnerC3_Orig_DataReportXmit+0xbe>
	{
		(tailFloatTx < MAX_FLOAT_BUFFERS - 1) ? (tailFloatTx++) : (tailFloatTx = 0);
   1965a:	97 30       	cpi	r25, 0x07	; 7
   1965c:	20 f4       	brcc	.+8      	; 0x19666 <TurnerC3_Orig_DataReportXmit+0xba>
   1965e:	9f 5f       	subi	r25, 0xFF	; 255
   19660:	90 93 94 07 	sts	0x0794, r25
   19664:	02 c0       	rjmp	.+4      	; 0x1966a <TurnerC3_Orig_DataReportXmit+0xbe>
   19666:	10 92 94 07 	sts	0x0794, r1
	}

	OSMutexPost(pMutexFloatQueue);
   1966a:	80 91 51 19 	lds	r24, 0x1951
   1966e:	90 91 52 19 	lds	r25, 0x1952
   19672:	0e 94 36 27 	call	0x4e6c	; 0x4e6c <OSMutexPost>

	return retval;
}
   19676:	80 e0       	ldi	r24, 0x00	; 0
   19678:	0f 90       	pop	r0
   1967a:	cf 91       	pop	r28
   1967c:	df 91       	pop	r29
   1967e:	1f 91       	pop	r17
   19680:	0f 91       	pop	r16
   19682:	08 95       	ret

00019684 <TurnerC3_Orig_ParseConsole>:
	*context = eos;
	return retval;
}

void TurnerC3_Orig_ParseConsole(PTURNER_C3_ORIG_TASK pTaskInfo)
{
   19684:	8f 92       	push	r8
   19686:	9f 92       	push	r9
   19688:	af 92       	push	r10
   1968a:	bf 92       	push	r11
   1968c:	cf 92       	push	r12
   1968e:	df 92       	push	r13
   19690:	ef 92       	push	r14
   19692:	ff 92       	push	r15
   19694:	0f 93       	push	r16
   19696:	1f 93       	push	r17
   19698:	df 93       	push	r29
   1969a:	cf 93       	push	r28
   1969c:	0f 92       	push	r0
   1969e:	0f 92       	push	r0
   196a0:	cd b7       	in	r28, 0x3d	; 61
   196a2:	de b7       	in	r29, 0x3e	; 62
   196a4:	6c 01       	movw	r12, r24
	char* myCommand = consoleIn[pTaskInfo->taskID].cmd; 
   196a6:	dc 01       	movw	r26, r24
   196a8:	8c 91       	ld	r24, X
   196aa:	90 e0       	ldi	r25, 0x00	; 0
   196ac:	29 e0       	ldi	r18, 0x09	; 9
   196ae:	31 e0       	ldi	r19, 0x01	; 1
   196b0:	f9 01       	movw	r30, r18
   196b2:	8e 9f       	mul	r24, r30
   196b4:	90 01       	movw	r18, r0
   196b6:	8f 9f       	mul	r24, r31
   196b8:	30 0d       	add	r19, r0
   196ba:	9e 9f       	mul	r25, r30
   196bc:	30 0d       	add	r19, r0
   196be:	11 24       	eor	r1, r1
   196c0:	2e 58       	subi	r18, 0x8E	; 142
   196c2:	32 46       	sbci	r19, 0x62	; 98
   196c4:	3a 83       	std	Y+2, r19	; 0x02
   196c6:	29 83       	std	Y+1, r18	; 0x01
	char* result = NULL;
	char command = 0;
	BOOL goodCommand = FALSE;
	uint8_t resultCode = 0;

	sprintf_P(dbgMsg, PSTR("Parsing console: <%s>"), myCommand); SEND_MSG;
   196c8:	00 d0       	rcall	.+0      	; 0x196ca <TurnerC3_Orig_ParseConsole+0x46>
   196ca:	00 d0       	rcall	.+0      	; 0x196cc <TurnerC3_Orig_ParseConsole+0x48>
   196cc:	ed b7       	in	r30, 0x3d	; 61
   196ce:	fe b7       	in	r31, 0x3e	; 62
   196d0:	31 96       	adiw	r30, 0x01	; 1
   196d2:	b3 ef       	ldi	r27, 0xF3	; 243
   196d4:	8b 2e       	mov	r8, r27
   196d6:	b8 e1       	ldi	r27, 0x18	; 24
   196d8:	9b 2e       	mov	r9, r27
   196da:	ad b7       	in	r26, 0x3d	; 61
   196dc:	be b7       	in	r27, 0x3e	; 62
   196de:	12 96       	adiw	r26, 0x02	; 2
   196e0:	9c 92       	st	X, r9
   196e2:	8e 92       	st	-X, r8
   196e4:	11 97       	sbiw	r26, 0x01	; 1
   196e6:	88 ed       	ldi	r24, 0xD8	; 216
   196e8:	9a e1       	ldi	r25, 0x1A	; 26
   196ea:	93 83       	std	Z+3, r25	; 0x03
   196ec:	82 83       	std	Z+2, r24	; 0x02
   196ee:	35 83       	std	Z+5, r19	; 0x05
   196f0:	24 83       	std	Z+4, r18	; 0x04
   196f2:	0e 94 51 f1 	call	0x1e2a2	; 0x1e2a2 <sprintf_P>

	myCommand[MAX_FILE_SIZE_IN - 1] = 0;			//Make sure command string is NULL terminated
   196f6:	e9 81       	ldd	r30, Y+1	; 0x01
   196f8:	fa 81       	ldd	r31, Y+2	; 0x02
   196fa:	e1 50       	subi	r30, 0x01	; 1
   196fc:	ff 4f       	sbci	r31, 0xFF	; 255
   196fe:	10 82       	st	Z, r1

	memset(pTaskInfo->pBuf->tokenSeparatorList, 0, MAX_TOKEN_SEPARATORS);
   19700:	f6 01       	movw	r30, r12
   19702:	84 81       	ldd	r24, Z+4	; 0x04
   19704:	95 81       	ldd	r25, Z+5	; 0x05
   19706:	88 50       	subi	r24, 0x08	; 8
   19708:	99 4f       	sbci	r25, 0xF9	; 249
   1970a:	fc 01       	movw	r30, r24
   1970c:	84 e1       	ldi	r24, 0x14	; 20
   1970e:	df 01       	movw	r26, r30
   19710:	1d 92       	st	X+, r1
   19712:	8a 95       	dec	r24
   19714:	e9 f7       	brne	.-6      	; 0x19710 <TurnerC3_Orig_ParseConsole+0x8c>
	strcat_P(pTaskInfo->pBuf->tokenSeparatorList, tokenListConsole);
   19716:	ed b7       	in	r30, 0x3d	; 61
   19718:	fe b7       	in	r31, 0x3e	; 62
   1971a:	36 96       	adiw	r30, 0x06	; 6
   1971c:	0f b6       	in	r0, 0x3f	; 63
   1971e:	f8 94       	cli
   19720:	fe bf       	out	0x3e, r31	; 62
   19722:	0f be       	out	0x3f, r0	; 63
   19724:	ed bf       	out	0x3d, r30	; 61
   19726:	d6 01       	movw	r26, r12
   19728:	14 96       	adiw	r26, 0x04	; 4
   1972a:	8d 91       	ld	r24, X+
   1972c:	9c 91       	ld	r25, X
   1972e:	15 97       	sbiw	r26, 0x05	; 5
   19730:	88 50       	subi	r24, 0x08	; 8
   19732:	99 4f       	sbci	r25, 0xF9	; 249
   19734:	68 e3       	ldi	r22, 0x38	; 56
   19736:	72 e0       	ldi	r23, 0x02	; 2
   19738:	0e 94 b4 ef 	call	0x1df68	; 0x1df68 <strcat_P>

	result = strtok_r(myCommand, pTaskInfo->pBuf->tokenSeparatorList, &myCommand);
   1973c:	f6 01       	movw	r30, r12
   1973e:	64 81       	ldd	r22, Z+4	; 0x04
   19740:	75 81       	ldd	r23, Z+5	; 0x05
   19742:	68 50       	subi	r22, 0x08	; 8
   19744:	79 4f       	sbci	r23, 0xF9	; 249
   19746:	89 81       	ldd	r24, Y+1	; 0x01
   19748:	9a 81       	ldd	r25, Y+2	; 0x02
   1974a:	8e 01       	movw	r16, r28
   1974c:	0f 5f       	subi	r16, 0xFF	; 255
   1974e:	1f 4f       	sbci	r17, 0xFF	; 255
   19750:	a8 01       	movw	r20, r16
   19752:	0e 94 a0 f0 	call	0x1e140	; 0x1e140 <strtok_r>
   19756:	5c 01       	movw	r10, r24
	resultCode = 1;				//No Command Received

	if(result != NULL)
   19758:	00 97       	sbiw	r24, 0x00	; 0
   1975a:	19 f4       	brne	.+6      	; 0x19762 <TurnerC3_Orig_ParseConsole+0xde>
   1975c:	ff 24       	eor	r15, r15
   1975e:	f3 94       	inc	r15
   19760:	26 c0       	rjmp	.+76     	; 0x197ae <TurnerC3_Orig_ParseConsole+0x12a>
	{
		resultCode = 2;			//Unknown Parser Code
		if(strncasecmp_P(result, c3OrigParserID, strlen_P(c3OrigParserID)) == 0)
   19762:	88 e5       	ldi	r24, 0x58	; 88
   19764:	9a e1       	ldi	r25, 0x1A	; 26
   19766:	0e 94 c6 ef 	call	0x1df8c	; 0x1df8c <strlen_P>
   1976a:	ac 01       	movw	r20, r24
   1976c:	c5 01       	movw	r24, r10
   1976e:	68 e5       	ldi	r22, 0x58	; 88
   19770:	7a e1       	ldi	r23, 0x1A	; 26
   19772:	0e 94 cf ef 	call	0x1df9e	; 0x1df9e <strncasecmp_P>
   19776:	89 2b       	or	r24, r25
   19778:	19 f0       	breq	.+6      	; 0x19780 <TurnerC3_Orig_ParseConsole+0xfc>
   1977a:	a2 e0       	ldi	r26, 0x02	; 2
   1977c:	fa 2e       	mov	r15, r26
   1977e:	17 c0       	rjmp	.+46     	; 0x197ae <TurnerC3_Orig_ParseConsole+0x12a>
		{
			resultCode = 3;		//Unknown command

			command = getCommand(&myCommand, c3OrigCommands[0], LEN_C3_COMMANDS, NUM_C3_ORIG_COMMANDS, c3OrigCmdList, pTaskInfo->pBuf->tokenSeparatorList);
   19780:	d6 01       	movw	r26, r12
   19782:	14 96       	adiw	r26, 0x04	; 4
   19784:	ed 91       	ld	r30, X+
   19786:	fc 91       	ld	r31, X
   19788:	15 97       	sbiw	r26, 0x05	; 5
   1978a:	e8 50       	subi	r30, 0x08	; 8
   1978c:	f9 4f       	sbci	r31, 0xF9	; 249
   1978e:	c8 01       	movw	r24, r16
   19790:	60 e2       	ldi	r22, 0x20	; 32
   19792:	7a e1       	ldi	r23, 0x1A	; 26
   19794:	48 e0       	ldi	r20, 0x08	; 8
   19796:	27 e0       	ldi	r18, 0x07	; 7
   19798:	0b e5       	ldi	r16, 0x5B	; 91
   1979a:	1a e1       	ldi	r17, 0x1A	; 26
   1979c:	7f 01       	movw	r14, r30
   1979e:	0e 94 1f 38 	call	0x703e	; 0x703e <getCommand>
   197a2:	18 2f       	mov	r17, r24

			if(command != 0)
   197a4:	88 23       	and	r24, r24
   197a6:	09 f0       	breq	.+2      	; 0x197aa <TurnerC3_Orig_ParseConsole+0x126>
   197a8:	be c0       	rjmp	.+380    	; 0x19926 <TurnerC3_Orig_ParseConsole+0x2a2>
   197aa:	f3 e0       	ldi	r31, 0x03	; 3
   197ac:	ff 2e       	mov	r15, r31
		sprintf_P(dbgMsg, PSTR("good message")); SEND_MSG;
		resultCode = TurnerC3_Orig_ParseCommand(pTaskInfo, command, myCommand);
	}
	else
	{
		sprintf_P(dbgMsg, PSTR("bad .. code=%d"), resultCode); SEND_MSG;
   197ae:	00 d0       	rcall	.+0      	; 0x197b0 <TurnerC3_Orig_ParseConsole+0x12c>
   197b0:	00 d0       	rcall	.+0      	; 0x197b2 <TurnerC3_Orig_ParseConsole+0x12e>
   197b2:	ed b7       	in	r30, 0x3d	; 61
   197b4:	fe b7       	in	r31, 0x3e	; 62
   197b6:	31 96       	adiw	r30, 0x01	; 1
   197b8:	03 ef       	ldi	r16, 0xF3	; 243
   197ba:	18 e1       	ldi	r17, 0x18	; 24
   197bc:	ad b7       	in	r26, 0x3d	; 61
   197be:	be b7       	in	r27, 0x3e	; 62
   197c0:	12 96       	adiw	r26, 0x02	; 2
   197c2:	1c 93       	st	X, r17
   197c4:	0e 93       	st	-X, r16
   197c6:	11 97       	sbiw	r26, 0x01	; 1
   197c8:	8c eb       	ldi	r24, 0xBC	; 188
   197ca:	9a e1       	ldi	r25, 0x1A	; 26
   197cc:	93 83       	std	Z+3, r25	; 0x03
   197ce:	82 83       	std	Z+2, r24	; 0x02
   197d0:	f4 82       	std	Z+4, r15	; 0x04
   197d2:	15 82       	std	Z+5, r1	; 0x05
   197d4:	0e 94 51 f1 	call	0x1e2a2	; 0x1e2a2 <sprintf_P>
		sprintf_P(dbgMsg, PSTR("cmd = <%s><%s>"), myCommand, result); SEND_MSG;
   197d8:	0f 92       	push	r0
   197da:	0f 92       	push	r0
   197dc:	ed b7       	in	r30, 0x3d	; 61
   197de:	fe b7       	in	r31, 0x3e	; 62
   197e0:	31 96       	adiw	r30, 0x01	; 1
   197e2:	ad b7       	in	r26, 0x3d	; 61
   197e4:	be b7       	in	r27, 0x3e	; 62
   197e6:	12 96       	adiw	r26, 0x02	; 2
   197e8:	1c 93       	st	X, r17
   197ea:	0e 93       	st	-X, r16
   197ec:	11 97       	sbiw	r26, 0x01	; 1
   197ee:	8d ea       	ldi	r24, 0xAD	; 173
   197f0:	9a e1       	ldi	r25, 0x1A	; 26
   197f2:	93 83       	std	Z+3, r25	; 0x03
   197f4:	82 83       	std	Z+2, r24	; 0x02
   197f6:	89 81       	ldd	r24, Y+1	; 0x01
   197f8:	9a 81       	ldd	r25, Y+2	; 0x02
   197fa:	95 83       	std	Z+5, r25	; 0x05
   197fc:	84 83       	std	Z+4, r24	; 0x04
   197fe:	b7 82       	std	Z+7, r11	; 0x07
   19800:	a6 82       	std	Z+6, r10	; 0x06
   19802:	0e 94 51 f1 	call	0x1e2a2	; 0x1e2a2 <sprintf_P>
   19806:	ed b7       	in	r30, 0x3d	; 61
   19808:	fe b7       	in	r31, 0x3e	; 62
   1980a:	38 96       	adiw	r30, 0x08	; 8
   1980c:	0f b6       	in	r0, 0x3f	; 63
   1980e:	f8 94       	cli
   19810:	fe bf       	out	0x3e, r31	; 62
   19812:	0f be       	out	0x3f, r0	; 63
   19814:	ed bf       	out	0x3d, r30	; 61
	}

	if(resultCode != SUCCESS)
	{
		switch(resultCode)
   19816:	f2 e0       	ldi	r31, 0x02	; 2
   19818:	ff 16       	cp	r15, r31
   1981a:	79 f0       	breq	.+30     	; 0x1983a <TurnerC3_Orig_ParseConsole+0x1b6>
   1981c:	43 e0       	ldi	r20, 0x03	; 3
   1981e:	f4 16       	cp	r15, r20
   19820:	a9 f0       	breq	.+42     	; 0x1984c <TurnerC3_Orig_ParseConsole+0x1c8>
   19822:	d6 01       	movw	r26, r12
   19824:	14 96       	adiw	r26, 0x04	; 4
   19826:	ed 91       	ld	r30, X+
   19828:	fc 91       	ld	r31, X
   1982a:	15 97       	sbiw	r26, 0x05	; 5
   1982c:	b1 e0       	ldi	r27, 0x01	; 1
   1982e:	fb 16       	cp	r15, r27
   19830:	b1 f4       	brne	.+44     	; 0x1985e <TurnerC3_Orig_ParseConsole+0x1da>
		{
			case 1:
				pTaskInfo->pBuf->responseInfo.status = CONSOLE_RESPONSE_EMPTY_CMD;
   19832:	e2 5f       	subi	r30, 0xF2	; 242
   19834:	f8 4f       	sbci	r31, 0xF8	; 248
   19836:	8d e0       	ldi	r24, 0x0D	; 13
   19838:	15 c0       	rjmp	.+42     	; 0x19864 <TurnerC3_Orig_ParseConsole+0x1e0>
				break;
			case 2:
				pTaskInfo->pBuf->responseInfo.status = CONSOLE_RESPONSE_WRONG_DEVICE;
   1983a:	d6 01       	movw	r26, r12
   1983c:	14 96       	adiw	r26, 0x04	; 4
   1983e:	ed 91       	ld	r30, X+
   19840:	fc 91       	ld	r31, X
   19842:	15 97       	sbiw	r26, 0x05	; 5
   19844:	e2 5f       	subi	r30, 0xF2	; 242
   19846:	f8 4f       	sbci	r31, 0xF8	; 248
   19848:	8e e0       	ldi	r24, 0x0E	; 14
   1984a:	0c c0       	rjmp	.+24     	; 0x19864 <TurnerC3_Orig_ParseConsole+0x1e0>
				break;
			case 3:
				pTaskInfo->pBuf->responseInfo.status = CONSOLE_RESPONSE_UNKNOWN_CMD;
   1984c:	d6 01       	movw	r26, r12
   1984e:	14 96       	adiw	r26, 0x04	; 4
   19850:	ed 91       	ld	r30, X+
   19852:	fc 91       	ld	r31, X
   19854:	15 97       	sbiw	r26, 0x05	; 5
   19856:	e2 5f       	subi	r30, 0xF2	; 242
   19858:	f8 4f       	sbci	r31, 0xF8	; 248
   1985a:	8a e0       	ldi	r24, 0x0A	; 10
   1985c:	03 c0       	rjmp	.+6      	; 0x19864 <TurnerC3_Orig_ParseConsole+0x1e0>
				break;
			default:
				pTaskInfo->pBuf->responseInfo.status = CONSOLE_RESPONSE_CMD_FAILED;
   1985e:	e2 5f       	subi	r30, 0xF2	; 242
   19860:	f8 4f       	sbci	r31, 0xF8	; 248
   19862:	8f e0       	ldi	r24, 0x0F	; 15
   19864:	80 83       	st	Z, r24
				break;
		}
	}

	TurnerC3_Orig_QueueConsoleResponse(pTaskInfo);
   19866:	c6 01       	movw	r24, r12
   19868:	0e 94 36 c6 	call	0x18c6c	; 0x18c6c <TurnerC3_Orig_QueueConsoleResponse>

	memset(consoleIn[pTaskInfo->taskID].cmd, 0, MAX_FILE_SIZE_IN);
   1986c:	f6 01       	movw	r30, r12
   1986e:	80 81       	ld	r24, Z
   19870:	90 e0       	ldi	r25, 0x00	; 0
   19872:	29 e0       	ldi	r18, 0x09	; 9
   19874:	31 e0       	ldi	r19, 0x01	; 1
   19876:	ac 01       	movw	r20, r24
   19878:	42 9f       	mul	r20, r18
   1987a:	c0 01       	movw	r24, r0
   1987c:	43 9f       	mul	r20, r19
   1987e:	90 0d       	add	r25, r0
   19880:	52 9f       	mul	r21, r18
   19882:	90 0d       	add	r25, r0
   19884:	11 24       	eor	r1, r1
   19886:	8e 58       	subi	r24, 0x8E	; 142
   19888:	92 46       	sbci	r25, 0x62	; 98
   1988a:	fc 01       	movw	r30, r24
   1988c:	80 e0       	ldi	r24, 0x00	; 0
   1988e:	91 e0       	ldi	r25, 0x01	; 1
   19890:	df 01       	movw	r26, r30
   19892:	ac 01       	movw	r20, r24
   19894:	1d 92       	st	X+, r1
   19896:	41 50       	subi	r20, 0x01	; 1
   19898:	50 40       	sbci	r21, 0x00	; 0
   1989a:	e1 f7       	brne	.-8      	; 0x19894 <TurnerC3_Orig_ParseConsole+0x210>
	consoleIn[pTaskInfo->taskID].cmdSrcAddress = 0;
   1989c:	d6 01       	movw	r26, r12
   1989e:	8c 91       	ld	r24, X
   198a0:	90 e0       	ldi	r25, 0x00	; 0
   198a2:	82 9f       	mul	r24, r18
   198a4:	f0 01       	movw	r30, r0
   198a6:	83 9f       	mul	r24, r19
   198a8:	f0 0d       	add	r31, r0
   198aa:	92 9f       	mul	r25, r18
   198ac:	f0 0d       	add	r31, r0
   198ae:	11 24       	eor	r1, r1
   198b0:	e7 59       	subi	r30, 0x97	; 151
   198b2:	f2 46       	sbci	r31, 0x62	; 98
   198b4:	11 82       	std	Z+1, r1	; 0x01
   198b6:	10 82       	st	Z, r1
	consoleIn[pTaskInfo->taskID].functionCode = 0;
   198b8:	8c 91       	ld	r24, X
   198ba:	90 e0       	ldi	r25, 0x00	; 0
   198bc:	82 9f       	mul	r24, r18
   198be:	f0 01       	movw	r30, r0
   198c0:	83 9f       	mul	r24, r19
   198c2:	f0 0d       	add	r31, r0
   198c4:	92 9f       	mul	r25, r18
   198c6:	f0 0d       	add	r31, r0
   198c8:	11 24       	eor	r1, r1
   198ca:	e7 59       	subi	r30, 0x97	; 151
   198cc:	f2 46       	sbci	r31, 0x62	; 98
   198ce:	12 82       	std	Z+2, r1	; 0x02
	consoleIn[pTaskInfo->taskID].cmdSize = 0;
   198d0:	8c 91       	ld	r24, X
   198d2:	90 e0       	ldi	r25, 0x00	; 0
   198d4:	82 9f       	mul	r24, r18
   198d6:	f0 01       	movw	r30, r0
   198d8:	83 9f       	mul	r24, r19
   198da:	f0 0d       	add	r31, r0
   198dc:	92 9f       	mul	r25, r18
   198de:	f0 0d       	add	r31, r0
   198e0:	11 24       	eor	r1, r1
   198e2:	e7 59       	subi	r30, 0x97	; 151
   198e4:	f2 46       	sbci	r31, 0x62	; 98
   198e6:	14 82       	std	Z+4, r1	; 0x04
   198e8:	13 82       	std	Z+3, r1	; 0x03
	consoleIn[pTaskInfo->taskID].id = 0;
   198ea:	8c 91       	ld	r24, X
   198ec:	90 e0       	ldi	r25, 0x00	; 0
   198ee:	82 9f       	mul	r24, r18
   198f0:	f0 01       	movw	r30, r0
   198f2:	83 9f       	mul	r24, r19
   198f4:	f0 0d       	add	r31, r0
   198f6:	92 9f       	mul	r25, r18
   198f8:	f0 0d       	add	r31, r0
   198fa:	11 24       	eor	r1, r1
   198fc:	e7 59       	subi	r30, 0x97	; 151
   198fe:	f2 46       	sbci	r31, 0x62	; 98
   19900:	15 82       	std	Z+5, r1	; 0x05
   19902:	16 82       	std	Z+6, r1	; 0x06
   19904:	17 82       	std	Z+7, r1	; 0x07
   19906:	10 86       	std	Z+8, r1	; 0x08

	return;

}
   19908:	0f 90       	pop	r0
   1990a:	0f 90       	pop	r0
   1990c:	cf 91       	pop	r28
   1990e:	df 91       	pop	r29
   19910:	1f 91       	pop	r17
   19912:	0f 91       	pop	r16
   19914:	ff 90       	pop	r15
   19916:	ef 90       	pop	r14
   19918:	df 90       	pop	r13
   1991a:	cf 90       	pop	r12
   1991c:	bf 90       	pop	r11
   1991e:	af 90       	pop	r10
   19920:	9f 90       	pop	r9
   19922:	8f 90       	pop	r8
   19924:	08 95       	ret
		}
	}

	if(goodCommand == TRUE)
	{
		sprintf_P(dbgMsg, PSTR("good message")); SEND_MSG;
   19926:	00 d0       	rcall	.+0      	; 0x19928 <TurnerC3_Orig_ParseConsole+0x2a4>
   19928:	0f 92       	push	r0
   1992a:	ed b7       	in	r30, 0x3d	; 61
   1992c:	fe b7       	in	r31, 0x3e	; 62
   1992e:	92 82       	std	Z+2, r9	; 0x02
   19930:	81 82       	std	Z+1, r8	; 0x01
   19932:	8b ec       	ldi	r24, 0xCB	; 203
   19934:	9a e1       	ldi	r25, 0x1A	; 26
   19936:	94 83       	std	Z+4, r25	; 0x04
   19938:	83 83       	std	Z+3, r24	; 0x03
   1993a:	0e 94 51 f1 	call	0x1e2a2	; 0x1e2a2 <sprintf_P>
		resultCode = TurnerC3_Orig_ParseCommand(pTaskInfo, command, myCommand);
   1993e:	0f 90       	pop	r0
   19940:	0f 90       	pop	r0
   19942:	0f 90       	pop	r0
   19944:	0f 90       	pop	r0
   19946:	49 81       	ldd	r20, Y+1	; 0x01
   19948:	5a 81       	ldd	r21, Y+2	; 0x02
   1994a:	c6 01       	movw	r24, r12
   1994c:	61 2f       	mov	r22, r17
   1994e:	0e 94 40 c9 	call	0x19280	; 0x19280 <TurnerC3_Orig_ParseCommand>
   19952:	f8 2e       	mov	r15, r24
	{
		sprintf_P(dbgMsg, PSTR("bad .. code=%d"), resultCode); SEND_MSG;
		sprintf_P(dbgMsg, PSTR("cmd = <%s><%s>"), myCommand, result); SEND_MSG;
	}

	if(resultCode != SUCCESS)
   19954:	ff ef       	ldi	r31, 0xFF	; 255
   19956:	8f 17       	cp	r24, r31
   19958:	09 f4       	brne	.+2      	; 0x1995c <TurnerC3_Orig_ParseConsole+0x2d8>
   1995a:	85 cf       	rjmp	.-246    	; 0x19866 <TurnerC3_Orig_ParseConsole+0x1e2>
   1995c:	5c cf       	rjmp	.-328    	; 0x19816 <TurnerC3_Orig_ParseConsole+0x192>

0001995e <TurnerC3_Orig_GetDataSample>:
	return retval;
}


void TurnerC3_Orig_GetDataSample(PTURNER_C3_ORIG_TASK pTaskInfo)
{
   1995e:	2f 92       	push	r2
   19960:	3f 92       	push	r3
   19962:	4f 92       	push	r4
   19964:	5f 92       	push	r5
   19966:	6f 92       	push	r6
   19968:	7f 92       	push	r7
   1996a:	8f 92       	push	r8
   1996c:	9f 92       	push	r9
   1996e:	af 92       	push	r10
   19970:	bf 92       	push	r11
   19972:	cf 92       	push	r12
   19974:	df 92       	push	r13
   19976:	ef 92       	push	r14
   19978:	ff 92       	push	r15
   1997a:	0f 93       	push	r16
   1997c:	1f 93       	push	r17
   1997e:	df 93       	push	r29
   19980:	cf 93       	push	r28
   19982:	cd b7       	in	r28, 0x3d	; 61
   19984:	de b7       	in	r29, 0x3e	; 62
   19986:	c3 54       	subi	r28, 0x43	; 67
   19988:	d0 40       	sbci	r29, 0x00	; 0
   1998a:	0f b6       	in	r0, 0x3f	; 63
   1998c:	f8 94       	cli
   1998e:	de bf       	out	0x3e, r29	; 62
   19990:	0f be       	out	0x3f, r0	; 63
   19992:	cd bf       	out	0x3d, r28	; 61
   19994:	24 96       	adiw	r28, 0x04	; 4
   19996:	9f af       	std	Y+63, r25	; 0x3f
   19998:	8e af       	std	Y+62, r24	; 0x3e
   1999a:	24 97       	sbiw	r28, 0x04	; 4
	uint16_t len = 0;
   1999c:	1b 82       	std	Y+3, r1	; 0x03
   1999e:	1a 82       	std	Y+2, r1	; 0x02
	char eol = 0x0A;
   199a0:	8a e0       	ldi	r24, 0x0A	; 10
   199a2:	89 83       	std	Y+1, r24	; 0x01
	uint8_t retval = FAIL;




	memset(pTaskInfo->pBuf->bufferRx, 0, 1024);
   199a4:	24 96       	adiw	r28, 0x04	; 4
   199a6:	ae ad       	ldd	r26, Y+62	; 0x3e
   199a8:	bf ad       	ldd	r27, Y+63	; 0x3f
   199aa:	24 97       	sbiw	r28, 0x04	; 4
   199ac:	14 96       	adiw	r26, 0x04	; 4
   199ae:	8d 91       	ld	r24, X+
   199b0:	9c 91       	ld	r25, X
   199b2:	15 97       	sbiw	r26, 0x05	; 5
   199b4:	80 50       	subi	r24, 0x00	; 0
   199b6:	9f 4f       	sbci	r25, 0xFF	; 255
   199b8:	fc 01       	movw	r30, r24
   199ba:	80 e0       	ldi	r24, 0x00	; 0
   199bc:	94 e0       	ldi	r25, 0x04	; 4
   199be:	df 01       	movw	r26, r30
   199c0:	9c 01       	movw	r18, r24
   199c2:	1d 92       	st	X+, r1
   199c4:	21 50       	subi	r18, 0x01	; 1
   199c6:	30 40       	sbci	r19, 0x00	; 0
   199c8:	e1 f7       	brne	.-8      	; 0x199c2 <TurnerC3_Orig_GetDataSample+0x64>
	retval = TurnerC3_Orig_Rx(pTaskInfo, pTaskInfo->pBuf->bufferRx, &len, &eol, 1);
   199ca:	24 96       	adiw	r28, 0x04	; 4
   199cc:	ae ad       	ldd	r26, Y+62	; 0x3e
   199ce:	bf ad       	ldd	r27, Y+63	; 0x3f
   199d0:	24 97       	sbiw	r28, 0x04	; 4
   199d2:	14 96       	adiw	r26, 0x04	; 4
   199d4:	6d 91       	ld	r22, X+
   199d6:	7c 91       	ld	r23, X
   199d8:	15 97       	sbiw	r26, 0x05	; 5
   199da:	60 50       	subi	r22, 0x00	; 0
   199dc:	7f 4f       	sbci	r23, 0xFF	; 255
   199de:	cd 01       	movw	r24, r26
   199e0:	ae 01       	movw	r20, r28
   199e2:	4e 5f       	subi	r20, 0xFE	; 254
   199e4:	5f 4f       	sbci	r21, 0xFF	; 255
   199e6:	9e 01       	movw	r18, r28
   199e8:	2f 5f       	subi	r18, 0xFF	; 255
   199ea:	3f 4f       	sbci	r19, 0xFF	; 255
   199ec:	01 e0       	ldi	r16, 0x01	; 1
   199ee:	10 e0       	ldi	r17, 0x00	; 0
   199f0:	0e 94 9a c5 	call	0x18b34	; 0x18b34 <TurnerC3_Orig_Rx>

	if(retval == SUCCESS)
   199f4:	8f 3f       	cpi	r24, 0xFF	; 255
   199f6:	09 f0       	breq	.+2      	; 0x199fa <TurnerC3_Orig_GetDataSample+0x9c>
   199f8:	26 c3       	rjmp	.+1612   	; 0x1a046 <TurnerC3_Orig_GetDataSample+0x6e8>
		BOOL done = FALSE;
	
		char* tokens[16];
		char sep[9];	// = {'%', ' ', '.', ':', '/', '\t', '\r', '\n' ,'\0'};
//		char sep[] = {'%', ' ', '.', ':', '/', '\t', '\r', '\n' ,'\0'};
		char* pSample = (char*)pTaskInfo->pBuf->bufferRx;
   199fa:	24 96       	adiw	r28, 0x04	; 4
   199fc:	ee ad       	ldd	r30, Y+62	; 0x3e
   199fe:	ff ad       	ldd	r31, Y+63	; 0x3f
   19a00:	24 97       	sbiw	r28, 0x04	; 4
   19a02:	84 81       	ldd	r24, Z+4	; 0x04
   19a04:	95 81       	ldd	r25, Z+5	; 0x05
   19a06:	80 50       	subi	r24, 0x00	; 0
   19a08:	9f 4f       	sbci	r25, 0xFF	; 255
   19a0a:	9d 83       	std	Y+5, r25	; 0x05
   19a0c:	8c 83       	std	Y+4, r24	; 0x04

		memcpy_P(sep, separator1, 9);
   19a0e:	ce 01       	movw	r24, r28
   19a10:	06 96       	adiw	r24, 0x06	; 6
   19a12:	62 e1       	ldi	r22, 0x12	; 18
   19a14:	7a e1       	ldi	r23, 0x1A	; 26
   19a16:	49 e0       	ldi	r20, 0x09	; 9
   19a18:	50 e0       	ldi	r21, 0x00	; 0
   19a1a:	0e 94 ab ef 	call	0x1df56	; 0x1df56 <memcpy_P>
   19a1e:	90 e0       	ldi	r25, 0x00	; 0
   19a20:	22 96       	adiw	r28, 0x02	; 2
   19a22:	1f ae       	std	Y+63, r1	; 0x3f
   19a24:	22 97       	sbiw	r28, 0x02	; 2
//		TurnerC3_Orig_DataReportXmit(pTaskInfo);


		for(count=0; count<10; count++)
		{
			if(*pSample == 'D')
   19a26:	ec 81       	ldd	r30, Y+4	; 0x04
   19a28:	fd 81       	ldd	r31, Y+5	; 0x05
   19a2a:	80 81       	ld	r24, Z
   19a2c:	84 34       	cpi	r24, 0x44	; 68
   19a2e:	21 f4       	brne	.+8      	; 0x19a38 <TurnerC3_Orig_GetDataSample+0xda>
   19a30:	2f ef       	ldi	r18, 0xFF	; 255
   19a32:	22 96       	adiw	r28, 0x02	; 2
   19a34:	2f af       	std	Y+63, r18	; 0x3f
   19a36:	22 97       	sbiw	r28, 0x02	; 2
				done = TRUE;
			pSample++;
   19a38:	31 96       	adiw	r30, 0x01	; 1
   19a3a:	fd 83       	std	Y+5, r31	; 0x05
   19a3c:	ec 83       	std	Y+4, r30	; 0x04
//					boardID, pTaskInfo->taskID, latitude, longitude); 
//		memcpy(&pTaskInfo->pBuf->fluorometerSample[54], pTaskInfo->pBuf->bufferRx, len - 2);
//		TurnerC3_Orig_DataReportXmit(pTaskInfo);


		for(count=0; count<10; count++)
   19a3e:	9f 5f       	subi	r25, 0xFF	; 255
   19a40:	9a 30       	cpi	r25, 0x0A	; 10
   19a42:	89 f7       	brne	.-30     	; 0x19a26 <TurnerC3_Orig_GetDataSample+0xc8>
				done = TRUE;
			pSample++;
		}

		count = 0;
		pSample = (char*)pTaskInfo->pBuf->bufferRx;
   19a44:	24 96       	adiw	r28, 0x04	; 4
   19a46:	ae ad       	ldd	r26, Y+62	; 0x3e
   19a48:	bf ad       	ldd	r27, Y+63	; 0x3f
   19a4a:	24 97       	sbiw	r28, 0x04	; 4
   19a4c:	14 96       	adiw	r26, 0x04	; 4
   19a4e:	8d 91       	ld	r24, X+
   19a50:	9c 91       	ld	r25, X
   19a52:	15 97       	sbiw	r26, 0x05	; 5
   19a54:	80 50       	subi	r24, 0x00	; 0
   19a56:	9f 4f       	sbci	r25, 0xFF	; 255
   19a58:	9d 83       	std	Y+5, r25	; 0x05
   19a5a:	8c 83       	std	Y+4, r24	; 0x04
   19a5c:	8e 01       	movw	r16, r28
   19a5e:	0f 5d       	subi	r16, 0xDF	; 223
   19a60:	1f 4f       	sbci	r17, 0xFF	; 255

		while((count < 16) && (done == FALSE)) 
		{
			tokens[count] = ThreadSafeStrTok(&pSample, sep);
   19a62:	e4 e0       	ldi	r30, 0x04	; 4
   19a64:	ae 2e       	mov	r10, r30
   19a66:	b1 2c       	mov	r11, r1
   19a68:	ac 0e       	add	r10, r28
   19a6a:	bd 1e       	adc	r11, r29
   19a6c:	76 e0       	ldi	r23, 0x06	; 6
   19a6e:	c7 2e       	mov	r12, r23
   19a70:	d1 2c       	mov	r13, r1
   19a72:	cc 0e       	add	r12, r28
   19a74:	dd 1e       	adc	r13, r29
		}

		count = 0;
		pSample = (char*)pTaskInfo->pBuf->bufferRx;

		while((count < 16) && (done == FALSE)) 
   19a76:	60 e2       	ldi	r22, 0x20	; 32
   19a78:	e6 2e       	mov	r14, r22
   19a7a:	f1 2c       	mov	r15, r1
   19a7c:	e0 0e       	add	r14, r16
   19a7e:	f1 1e       	adc	r15, r17
   19a80:	12 c0       	rjmp	.+36     	; 0x19aa6 <TurnerC3_Orig_GetDataSample+0x148>
		{
			tokens[count] = ThreadSafeStrTok(&pSample, sep);
   19a82:	c5 01       	movw	r24, r10
   19a84:	b6 01       	movw	r22, r12
   19a86:	0e 94 0a c6 	call	0x18c14	; 0x18c14 <ThreadSafeStrTok>
   19a8a:	f8 01       	movw	r30, r16
   19a8c:	91 83       	std	Z+1, r25	; 0x01
   19a8e:	80 83       	st	Z, r24
			if(tokens[count] == NULL)
   19a90:	89 2b       	or	r24, r25
   19a92:	21 f4       	brne	.+8      	; 0x19a9c <TurnerC3_Orig_GetDataSample+0x13e>
   19a94:	ff ef       	ldi	r31, 0xFF	; 255
   19a96:	22 96       	adiw	r28, 0x02	; 2
   19a98:	ff af       	std	Y+63, r31	; 0x3f
   19a9a:	22 97       	sbiw	r28, 0x02	; 2
   19a9c:	0e 5f       	subi	r16, 0xFE	; 254
   19a9e:	1f 4f       	sbci	r17, 0xFF	; 255
		}

		count = 0;
		pSample = (char*)pTaskInfo->pBuf->bufferRx;

		while((count < 16) && (done == FALSE)) 
   19aa0:	0e 15       	cp	r16, r14
   19aa2:	1f 05       	cpc	r17, r15
   19aa4:	31 f0       	breq	.+12     	; 0x19ab2 <TurnerC3_Orig_GetDataSample+0x154>
   19aa6:	22 96       	adiw	r28, 0x02	; 2
   19aa8:	2f ad       	ldd	r18, Y+63	; 0x3f
   19aaa:	22 97       	sbiw	r28, 0x02	; 2
   19aac:	22 23       	and	r18, r18
   19aae:	49 f3       	breq	.-46     	; 0x19a82 <TurnerC3_Orig_GetDataSample+0x124>
   19ab0:	10 c2       	rjmp	.+1056   	; 0x19ed2 <TurnerC3_Orig_GetDataSample+0x574>
			count++;
		}
		if(count >= 16)	
		{
#define X_DATA_COUNT pTaskInfo->pBuf->reportData.dataBlock[pTaskInfo->pBuf->sampleCount]
			time.tm_sec = (uint8_t)atoi(tokens[5]);
   19ab2:	8b a5       	ldd	r24, Y+43	; 0x2b
   19ab4:	9c a5       	ldd	r25, Y+44	; 0x2c
   19ab6:	0e 94 59 ef 	call	0x1deb2	; 0x1deb2 <atoi>
   19aba:	88 2e       	mov	r8, r24
   19abc:	8f 87       	std	Y+15, r24	; 0x0f
   19abe:	18 8a       	std	Y+16, r1	; 0x10
			time.tm_min = (uint8_t)atoi(tokens[4]);
   19ac0:	89 a5       	ldd	r24, Y+41	; 0x29
   19ac2:	9a a5       	ldd	r25, Y+42	; 0x2a
   19ac4:	0e 94 59 ef 	call	0x1deb2	; 0x1deb2 <atoi>
   19ac8:	a8 2e       	mov	r10, r24
   19aca:	89 8b       	std	Y+17, r24	; 0x11
   19acc:	1a 8a       	std	Y+18, r1	; 0x12
			time.tm_hour = (uint8_t)atoi(tokens[3]);
   19ace:	8f a1       	ldd	r24, Y+39	; 0x27
   19ad0:	98 a5       	ldd	r25, Y+40	; 0x28
   19ad2:	0e 94 59 ef 	call	0x1deb2	; 0x1deb2 <atoi>
   19ad6:	c8 2e       	mov	r12, r24
   19ad8:	8b 8b       	std	Y+19, r24	; 0x13
   19ada:	1c 8a       	std	Y+20, r1	; 0x14
			time.tm_mday = (uint8_t)atoi(tokens[1]);
   19adc:	8b a1       	ldd	r24, Y+35	; 0x23
   19ade:	9c a1       	ldd	r25, Y+36	; 0x24
   19ae0:	0e 94 59 ef 	call	0x1deb2	; 0x1deb2 <atoi>
   19ae4:	e8 2e       	mov	r14, r24
   19ae6:	8d 8b       	std	Y+21, r24	; 0x15
   19ae8:	1e 8a       	std	Y+22, r1	; 0x16
			time.tm_mon = (uint8_t)atoi(tokens[0]);
   19aea:	89 a1       	ldd	r24, Y+33	; 0x21
   19aec:	9a a1       	ldd	r25, Y+34	; 0x22
   19aee:	0e 94 59 ef 	call	0x1deb2	; 0x1deb2 <atoi>
   19af2:	08 2f       	mov	r16, r24
   19af4:	8f 8b       	std	Y+23, r24	; 0x17
   19af6:	18 8e       	std	Y+24, r1	; 0x18
			time.tm_year = (uint8_t)atoi(tokens[2]) + 2000;
   19af8:	8d a1       	ldd	r24, Y+37	; 0x25
   19afa:	9e a1       	ldd	r25, Y+38	; 0x26
   19afc:	0e 94 59 ef 	call	0x1deb2	; 0x1deb2 <atoi>
   19b00:	90 e0       	ldi	r25, 0x00	; 0
   19b02:	80 53       	subi	r24, 0x30	; 48
   19b04:	98 4f       	sbci	r25, 0xF8	; 248
   19b06:	9a 8f       	std	Y+26, r25	; 0x1a
   19b08:	89 8f       	std	Y+25, r24	; 0x19

			X_DATA_COUNT.headerData.latitude = latitude;
   19b0a:	24 96       	adiw	r28, 0x04	; 4
   19b0c:	ae ad       	ldd	r26, Y+62	; 0x3e
   19b0e:	bf ad       	ldd	r27, Y+63	; 0x3f
   19b10:	24 97       	sbiw	r28, 0x04	; 4
   19b12:	14 96       	adiw	r26, 0x04	; 4
   19b14:	6d 90       	ld	r6, X+
   19b16:	7c 90       	ld	r7, X
   19b18:	15 97       	sbiw	r26, 0x05	; 5
   19b1a:	93 01       	movw	r18, r6
   19b1c:	22 58       	subi	r18, 0x82	; 130
   19b1e:	3a 4f       	sbci	r19, 0xFA	; 250
   19b20:	f9 01       	movw	r30, r18
   19b22:	80 81       	ld	r24, Z
   19b24:	90 e0       	ldi	r25, 0x00	; 0
   19b26:	5a e1       	ldi	r21, 0x1A	; 26
   19b28:	25 2e       	mov	r2, r21
   19b2a:	31 2c       	mov	r3, r1
   19b2c:	82 9d       	mul	r24, r2
   19b2e:	f0 01       	movw	r30, r0
   19b30:	83 9d       	mul	r24, r3
   19b32:	f0 0d       	add	r31, r0
   19b34:	92 9d       	mul	r25, r2
   19b36:	f0 0d       	add	r31, r0
   19b38:	11 24       	eor	r1, r1
   19b3a:	e6 0d       	add	r30, r6
   19b3c:	f7 1d       	adc	r31, r7
   19b3e:	e7 57       	subi	r30, 0x77	; 119
   19b40:	fa 4f       	sbci	r31, 0xFA	; 250
   19b42:	80 91 e5 b7 	lds	r24, 0xB7E5
   19b46:	90 91 e6 b7 	lds	r25, 0xB7E6
   19b4a:	a0 91 e7 b7 	lds	r26, 0xB7E7
   19b4e:	b0 91 e8 b7 	lds	r27, 0xB7E8
   19b52:	80 83       	st	Z, r24
   19b54:	91 83       	std	Z+1, r25	; 0x01
   19b56:	a2 83       	std	Z+2, r26	; 0x02
   19b58:	b3 83       	std	Z+3, r27	; 0x03
			X_DATA_COUNT.headerData.longitude = longitude;
   19b5a:	d9 01       	movw	r26, r18
   19b5c:	8c 91       	ld	r24, X
   19b5e:	90 e0       	ldi	r25, 0x00	; 0
   19b60:	82 9d       	mul	r24, r2
   19b62:	f0 01       	movw	r30, r0
   19b64:	83 9d       	mul	r24, r3
   19b66:	f0 0d       	add	r31, r0
   19b68:	92 9d       	mul	r25, r2
   19b6a:	f0 0d       	add	r31, r0
   19b6c:	11 24       	eor	r1, r1
   19b6e:	e6 0d       	add	r30, r6
   19b70:	f7 1d       	adc	r31, r7
   19b72:	e3 57       	subi	r30, 0x73	; 115
   19b74:	fa 4f       	sbci	r31, 0xFA	; 250
   19b76:	80 91 e9 b7 	lds	r24, 0xB7E9
   19b7a:	90 91 ea b7 	lds	r25, 0xB7EA
   19b7e:	a0 91 eb b7 	lds	r26, 0xB7EB
   19b82:	b0 91 ec b7 	lds	r27, 0xB7EC
   19b86:	80 83       	st	Z, r24
   19b88:	91 83       	std	Z+1, r25	; 0x01
   19b8a:	a2 83       	std	Z+2, r26	; 0x02
   19b8c:	b3 83       	std	Z+3, r27	; 0x03
			X_DATA_COUNT.headerData.timestamp = (uint32_t)mktime(time);
   19b8e:	f9 01       	movw	r30, r18
   19b90:	40 80       	ld	r4, Z
   19b92:	55 24       	eor	r5, r5
   19b94:	99 24       	eor	r9, r9
   19b96:	bb 24       	eor	r11, r11
   19b98:	dd 24       	eor	r13, r13
   19b9a:	ff 24       	eor	r15, r15
   19b9c:	10 e0       	ldi	r17, 0x00	; 0
   19b9e:	29 8d       	ldd	r18, Y+25	; 0x19
   19ba0:	3a 8d       	ldd	r19, Y+26	; 0x1a
   19ba2:	4b 8d       	ldd	r20, Y+27	; 0x1b
   19ba4:	5c 8d       	ldd	r21, Y+28	; 0x1c
   19ba6:	6d 8d       	ldd	r22, Y+29	; 0x1d
   19ba8:	7e 8d       	ldd	r23, Y+30	; 0x1e
   19baa:	8f 8d       	ldd	r24, Y+31	; 0x1f
   19bac:	98 a1       	ldd	r25, Y+32	; 0x20
   19bae:	0e 94 48 34 	call	0x6890	; 0x6890 <mktime>
   19bb2:	42 9c       	mul	r4, r2
   19bb4:	90 01       	movw	r18, r0
   19bb6:	43 9c       	mul	r4, r3
   19bb8:	30 0d       	add	r19, r0
   19bba:	52 9c       	mul	r5, r2
   19bbc:	30 0d       	add	r19, r0
   19bbe:	11 24       	eor	r1, r1
   19bc0:	62 0e       	add	r6, r18
   19bc2:	73 1e       	adc	r7, r19
   19bc4:	21 e9       	ldi	r18, 0x91	; 145
   19bc6:	35 e0       	ldi	r19, 0x05	; 5
   19bc8:	62 0e       	add	r6, r18
   19bca:	73 1e       	adc	r7, r19
   19bcc:	d3 01       	movw	r26, r6
   19bce:	6d 93       	st	X+, r22
   19bd0:	7d 93       	st	X+, r23
   19bd2:	8d 93       	st	X+, r24
   19bd4:	9c 93       	st	X, r25
   19bd6:	13 97       	sbiw	r26, 0x03	; 3

			X_DATA_COUNT.dataC1.integer = (uint16_t)atol(tokens[6]);
   19bd8:	24 96       	adiw	r28, 0x04	; 4
   19bda:	ee ad       	ldd	r30, Y+62	; 0x3e
   19bdc:	ff ad       	ldd	r31, Y+63	; 0x3f
   19bde:	24 97       	sbiw	r28, 0x04	; 4
   19be0:	04 81       	ldd	r16, Z+4	; 0x04
   19be2:	15 81       	ldd	r17, Z+5	; 0x05
   19be4:	8d a5       	ldd	r24, Y+45	; 0x2d
   19be6:	9e a5       	ldd	r25, Y+46	; 0x2e
   19be8:	0e 94 77 ef 	call	0x1deee	; 0x1deee <atol>
   19bec:	4e e7       	ldi	r20, 0x7E	; 126
   19bee:	e4 2e       	mov	r14, r20
   19bf0:	45 e0       	ldi	r20, 0x05	; 5
   19bf2:	f4 2e       	mov	r15, r20
   19bf4:	e0 0e       	add	r14, r16
   19bf6:	f1 1e       	adc	r15, r17
   19bf8:	d7 01       	movw	r26, r14
   19bfa:	2c 91       	ld	r18, X
   19bfc:	30 e0       	ldi	r19, 0x00	; 0
   19bfe:	22 9d       	mul	r18, r2
   19c00:	f0 01       	movw	r30, r0
   19c02:	23 9d       	mul	r18, r3
   19c04:	f0 0d       	add	r31, r0
   19c06:	32 9d       	mul	r19, r2
   19c08:	f0 0d       	add	r31, r0
   19c0a:	11 24       	eor	r1, r1
   19c0c:	e0 0f       	add	r30, r16
   19c0e:	f1 1f       	adc	r31, r17
   19c10:	eb 56       	subi	r30, 0x6B	; 107
   19c12:	fa 4f       	sbci	r31, 0xFA	; 250
   19c14:	71 83       	std	Z+1, r23	; 0x01
   19c16:	60 83       	st	Z, r22
			X_DATA_COUNT.dataC1.decimal = (uint8_t)atoi(tokens[7]);
   19c18:	8f a5       	ldd	r24, Y+47	; 0x2f
   19c1a:	98 a9       	ldd	r25, Y+48	; 0x30
   19c1c:	0e 94 59 ef 	call	0x1deb2	; 0x1deb2 <atoi>
   19c20:	f7 01       	movw	r30, r14
   19c22:	20 81       	ld	r18, Z
   19c24:	30 e0       	ldi	r19, 0x00	; 0
   19c26:	a9 01       	movw	r20, r18
   19c28:	42 9d       	mul	r20, r2
   19c2a:	90 01       	movw	r18, r0
   19c2c:	43 9d       	mul	r20, r3
   19c2e:	30 0d       	add	r19, r0
   19c30:	52 9d       	mul	r21, r2
   19c32:	30 0d       	add	r19, r0
   19c34:	11 24       	eor	r1, r1
   19c36:	02 0f       	add	r16, r18
   19c38:	13 1f       	adc	r17, r19
   19c3a:	09 56       	subi	r16, 0x69	; 105
   19c3c:	1a 4f       	sbci	r17, 0xFA	; 250
   19c3e:	d8 01       	movw	r26, r16
   19c40:	8c 93       	st	X, r24
			X_DATA_COUNT.dataC2.integer = (uint16_t)atol(tokens[8]);
   19c42:	24 96       	adiw	r28, 0x04	; 4
   19c44:	ee ad       	ldd	r30, Y+62	; 0x3e
   19c46:	ff ad       	ldd	r31, Y+63	; 0x3f
   19c48:	24 97       	sbiw	r28, 0x04	; 4
   19c4a:	04 81       	ldd	r16, Z+4	; 0x04
   19c4c:	15 81       	ldd	r17, Z+5	; 0x05
   19c4e:	89 a9       	ldd	r24, Y+49	; 0x31
   19c50:	9a a9       	ldd	r25, Y+50	; 0x32
   19c52:	0e 94 77 ef 	call	0x1deee	; 0x1deee <atol>
   19c56:	3e e7       	ldi	r19, 0x7E	; 126
   19c58:	e3 2e       	mov	r14, r19
   19c5a:	35 e0       	ldi	r19, 0x05	; 5
   19c5c:	f3 2e       	mov	r15, r19
   19c5e:	e0 0e       	add	r14, r16
   19c60:	f1 1e       	adc	r15, r17
   19c62:	d7 01       	movw	r26, r14
   19c64:	2c 91       	ld	r18, X
   19c66:	30 e0       	ldi	r19, 0x00	; 0
   19c68:	22 9d       	mul	r18, r2
   19c6a:	f0 01       	movw	r30, r0
   19c6c:	23 9d       	mul	r18, r3
   19c6e:	f0 0d       	add	r31, r0
   19c70:	32 9d       	mul	r19, r2
   19c72:	f0 0d       	add	r31, r0
   19c74:	11 24       	eor	r1, r1
   19c76:	e0 0f       	add	r30, r16
   19c78:	f1 1f       	adc	r31, r17
   19c7a:	e8 56       	subi	r30, 0x68	; 104
   19c7c:	fa 4f       	sbci	r31, 0xFA	; 250
   19c7e:	71 83       	std	Z+1, r23	; 0x01
   19c80:	60 83       	st	Z, r22
			X_DATA_COUNT.dataC2.decimal = (uint8_t)atoi(tokens[9]);
   19c82:	8b a9       	ldd	r24, Y+51	; 0x33
   19c84:	9c a9       	ldd	r25, Y+52	; 0x34
   19c86:	0e 94 59 ef 	call	0x1deb2	; 0x1deb2 <atoi>
   19c8a:	f7 01       	movw	r30, r14
   19c8c:	20 81       	ld	r18, Z
   19c8e:	30 e0       	ldi	r19, 0x00	; 0
   19c90:	a9 01       	movw	r20, r18
   19c92:	42 9d       	mul	r20, r2
   19c94:	90 01       	movw	r18, r0
   19c96:	43 9d       	mul	r20, r3
   19c98:	30 0d       	add	r19, r0
   19c9a:	52 9d       	mul	r21, r2
   19c9c:	30 0d       	add	r19, r0
   19c9e:	11 24       	eor	r1, r1
   19ca0:	02 0f       	add	r16, r18
   19ca2:	13 1f       	adc	r17, r19
   19ca4:	06 56       	subi	r16, 0x66	; 102
   19ca6:	1a 4f       	sbci	r17, 0xFA	; 250
   19ca8:	d8 01       	movw	r26, r16
   19caa:	8c 93       	st	X, r24
			X_DATA_COUNT.dataC3.integer = (uint16_t)atol(tokens[10]);
   19cac:	24 96       	adiw	r28, 0x04	; 4
   19cae:	ee ad       	ldd	r30, Y+62	; 0x3e
   19cb0:	ff ad       	ldd	r31, Y+63	; 0x3f
   19cb2:	24 97       	sbiw	r28, 0x04	; 4
   19cb4:	04 81       	ldd	r16, Z+4	; 0x04
   19cb6:	15 81       	ldd	r17, Z+5	; 0x05
   19cb8:	8d a9       	ldd	r24, Y+53	; 0x35
   19cba:	9e a9       	ldd	r25, Y+54	; 0x36
   19cbc:	0e 94 77 ef 	call	0x1deee	; 0x1deee <atol>
   19cc0:	2e e7       	ldi	r18, 0x7E	; 126
   19cc2:	e2 2e       	mov	r14, r18
   19cc4:	25 e0       	ldi	r18, 0x05	; 5
   19cc6:	f2 2e       	mov	r15, r18
   19cc8:	e0 0e       	add	r14, r16
   19cca:	f1 1e       	adc	r15, r17
   19ccc:	d7 01       	movw	r26, r14
   19cce:	2c 91       	ld	r18, X
   19cd0:	30 e0       	ldi	r19, 0x00	; 0
   19cd2:	2f 5f       	subi	r18, 0xFF	; 255
   19cd4:	3f 4f       	sbci	r19, 0xFF	; 255
   19cd6:	22 9d       	mul	r18, r2
   19cd8:	f0 01       	movw	r30, r0
   19cda:	23 9d       	mul	r18, r3
   19cdc:	f0 0d       	add	r31, r0
   19cde:	32 9d       	mul	r19, r2
   19ce0:	f0 0d       	add	r31, r0
   19ce2:	11 24       	eor	r1, r1
   19ce4:	e0 0f       	add	r30, r16
   19ce6:	f1 1f       	adc	r31, r17
   19ce8:	ef 57       	subi	r30, 0x7F	; 127
   19cea:	fa 4f       	sbci	r31, 0xFA	; 250
   19cec:	71 83       	std	Z+1, r23	; 0x01
   19cee:	60 83       	st	Z, r22
			X_DATA_COUNT.dataC3.decimal = (uint8_t)atoi(tokens[11]);
   19cf0:	8f a9       	ldd	r24, Y+55	; 0x37
   19cf2:	98 ad       	ldd	r25, Y+56	; 0x38
   19cf4:	0e 94 59 ef 	call	0x1deb2	; 0x1deb2 <atoi>
   19cf8:	f7 01       	movw	r30, r14
   19cfa:	20 81       	ld	r18, Z
   19cfc:	30 e0       	ldi	r19, 0x00	; 0
   19cfe:	a9 01       	movw	r20, r18
   19d00:	42 9d       	mul	r20, r2
   19d02:	90 01       	movw	r18, r0
   19d04:	43 9d       	mul	r20, r3
   19d06:	30 0d       	add	r19, r0
   19d08:	52 9d       	mul	r21, r2
   19d0a:	30 0d       	add	r19, r0
   19d0c:	11 24       	eor	r1, r1
   19d0e:	02 0f       	add	r16, r18
   19d10:	13 1f       	adc	r17, r19
   19d12:	03 56       	subi	r16, 0x63	; 99
   19d14:	1a 4f       	sbci	r17, 0xFA	; 250
   19d16:	d8 01       	movw	r26, r16
   19d18:	8c 93       	st	X, r24
			X_DATA_COUNT.pressure.integer = (uint16_t)atol(tokens[12]);
   19d1a:	24 96       	adiw	r28, 0x04	; 4
   19d1c:	ee ad       	ldd	r30, Y+62	; 0x3e
   19d1e:	ff ad       	ldd	r31, Y+63	; 0x3f
   19d20:	24 97       	sbiw	r28, 0x04	; 4
   19d22:	04 81       	ldd	r16, Z+4	; 0x04
   19d24:	15 81       	ldd	r17, Z+5	; 0x05
   19d26:	89 ad       	ldd	r24, Y+57	; 0x39
   19d28:	9a ad       	ldd	r25, Y+58	; 0x3a
   19d2a:	0e 94 77 ef 	call	0x1deee	; 0x1deee <atol>
   19d2e:	9e e7       	ldi	r25, 0x7E	; 126
   19d30:	e9 2e       	mov	r14, r25
   19d32:	95 e0       	ldi	r25, 0x05	; 5
   19d34:	f9 2e       	mov	r15, r25
   19d36:	e0 0e       	add	r14, r16
   19d38:	f1 1e       	adc	r15, r17
   19d3a:	d7 01       	movw	r26, r14
   19d3c:	2c 91       	ld	r18, X
   19d3e:	30 e0       	ldi	r19, 0x00	; 0
   19d40:	22 9d       	mul	r18, r2
   19d42:	f0 01       	movw	r30, r0
   19d44:	23 9d       	mul	r18, r3
   19d46:	f0 0d       	add	r31, r0
   19d48:	32 9d       	mul	r19, r2
   19d4a:	f0 0d       	add	r31, r0
   19d4c:	11 24       	eor	r1, r1
   19d4e:	e0 0f       	add	r30, r16
   19d50:	f1 1f       	adc	r31, r17
   19d52:	e2 56       	subi	r30, 0x62	; 98
   19d54:	fa 4f       	sbci	r31, 0xFA	; 250
   19d56:	71 83       	std	Z+1, r23	; 0x01
   19d58:	60 83       	st	Z, r22
			X_DATA_COUNT.pressure.decimal = (uint8_t)atoi(tokens[13]);
   19d5a:	8b ad       	ldd	r24, Y+59	; 0x3b
   19d5c:	9c ad       	ldd	r25, Y+60	; 0x3c
   19d5e:	0e 94 59 ef 	call	0x1deb2	; 0x1deb2 <atoi>
   19d62:	f7 01       	movw	r30, r14
   19d64:	20 81       	ld	r18, Z
   19d66:	30 e0       	ldi	r19, 0x00	; 0
   19d68:	a9 01       	movw	r20, r18
   19d6a:	42 9d       	mul	r20, r2
   19d6c:	90 01       	movw	r18, r0
   19d6e:	43 9d       	mul	r20, r3
   19d70:	30 0d       	add	r19, r0
   19d72:	52 9d       	mul	r21, r2
   19d74:	30 0d       	add	r19, r0
   19d76:	11 24       	eor	r1, r1
   19d78:	02 0f       	add	r16, r18
   19d7a:	13 1f       	adc	r17, r19
   19d7c:	00 56       	subi	r16, 0x60	; 96
   19d7e:	1a 4f       	sbci	r17, 0xFA	; 250
   19d80:	d8 01       	movw	r26, r16
   19d82:	8c 93       	st	X, r24
			X_DATA_COUNT.temperature = (uint16_t)((uint32_t)atol(tokens[14]) * (uint32_t)100 + (uint32_t)atoi(tokens[15]));
   19d84:	24 96       	adiw	r28, 0x04	; 4
   19d86:	ee ad       	ldd	r30, Y+62	; 0x3e
   19d88:	ff ad       	ldd	r31, Y+63	; 0x3f
   19d8a:	24 97       	sbiw	r28, 0x04	; 4
   19d8c:	04 81       	ldd	r16, Z+4	; 0x04
   19d8e:	15 81       	ldd	r17, Z+5	; 0x05
   19d90:	8d ad       	ldd	r24, Y+61	; 0x3d
   19d92:	9e ad       	ldd	r25, Y+62	; 0x3e
   19d94:	0e 94 77 ef 	call	0x1deee	; 0x1deee <atol>
   19d98:	4b 01       	movw	r8, r22
   19d9a:	5c 01       	movw	r10, r24
   19d9c:	fe 01       	movw	r30, r28
   19d9e:	ff 96       	adiw	r30, 0x3f	; 63
   19da0:	80 81       	ld	r24, Z
   19da2:	91 81       	ldd	r25, Z+1	; 0x01
   19da4:	0e 94 59 ef 	call	0x1deb2	; 0x1deb2 <atoi>
   19da8:	7c 01       	movw	r14, r24
   19daa:	8e e7       	ldi	r24, 0x7E	; 126
   19dac:	c8 2e       	mov	r12, r24
   19dae:	85 e0       	ldi	r24, 0x05	; 5
   19db0:	d8 2e       	mov	r13, r24
   19db2:	c0 0e       	add	r12, r16
   19db4:	d1 1e       	adc	r13, r17
   19db6:	d6 01       	movw	r26, r12
   19db8:	8c 91       	ld	r24, X
   19dba:	90 e0       	ldi	r25, 0x00	; 0
   19dbc:	fc 01       	movw	r30, r24
   19dbe:	e2 9d       	mul	r30, r2
   19dc0:	c0 01       	movw	r24, r0
   19dc2:	e3 9d       	mul	r30, r3
   19dc4:	90 0d       	add	r25, r0
   19dc6:	f2 9d       	mul	r31, r2
   19dc8:	90 0d       	add	r25, r0
   19dca:	11 24       	eor	r1, r1
   19dcc:	08 0f       	add	r16, r24
   19dce:	19 1f       	adc	r17, r25
   19dd0:	0f 55       	subi	r16, 0x5F	; 95
   19dd2:	1a 4f       	sbci	r17, 0xFA	; 250
   19dd4:	c5 01       	movw	r24, r10
   19dd6:	b4 01       	movw	r22, r8
   19dd8:	24 e6       	ldi	r18, 0x64	; 100
   19dda:	30 e0       	ldi	r19, 0x00	; 0
   19ddc:	40 e0       	ldi	r20, 0x00	; 0
   19dde:	50 e0       	ldi	r21, 0x00	; 0
   19de0:	0e 94 f2 f3 	call	0x1e7e4	; 0x1e7e4 <__mulsi3>
   19de4:	e6 0e       	add	r14, r22
   19de6:	f7 1e       	adc	r15, r23
   19de8:	d8 01       	movw	r26, r16
   19dea:	ed 92       	st	X+, r14
   19dec:	fc 92       	st	X, r15
			pTaskInfo->pBuf->sampleCount++;
   19dee:	f6 01       	movw	r30, r12
   19df0:	80 81       	ld	r24, Z
   19df2:	8f 5f       	subi	r24, 0xFF	; 255
   19df4:	80 83       	st	Z, r24
#undef X_DATA_COUNT
			if(pTaskInfo->pBuf->sampleCount == MAX_C3_ORIG_SAMPLES)
   19df6:	24 96       	adiw	r28, 0x04	; 4
   19df8:	ae ad       	ldd	r26, Y+62	; 0x3e
   19dfa:	bf ad       	ldd	r27, Y+63	; 0x3f
   19dfc:	24 97       	sbiw	r28, 0x04	; 4
   19dfe:	14 96       	adiw	r26, 0x04	; 4
   19e00:	ed 91       	ld	r30, X+
   19e02:	fc 91       	ld	r31, X
   19e04:	15 97       	sbiw	r26, 0x05	; 5
   19e06:	e2 58       	subi	r30, 0x82	; 130
   19e08:	fa 4f       	sbci	r31, 0xFA	; 250
   19e0a:	80 81       	ld	r24, Z
   19e0c:	ee 57       	subi	r30, 0x7E	; 126
   19e0e:	f5 40       	sbci	r31, 0x05	; 5
   19e10:	87 30       	cpi	r24, 0x07	; 7
   19e12:	09 f0       	breq	.+2      	; 0x19e16 <TurnerC3_Orig_GetDataSample+0x4b8>
   19e14:	5e c0       	rjmp	.+188    	; 0x19ed2 <TurnerC3_Orig_GetDataSample+0x574>
			{
				pTaskInfo->pBuf->reportData.headerReport.payloadType = 0x00000060;
   19e16:	ef 57       	subi	r30, 0x7F	; 127
   19e18:	fa 4f       	sbci	r31, 0xFA	; 250
   19e1a:	80 e6       	ldi	r24, 0x60	; 96
   19e1c:	90 e0       	ldi	r25, 0x00	; 0
   19e1e:	a0 e0       	ldi	r26, 0x00	; 0
   19e20:	b0 e0       	ldi	r27, 0x00	; 0
   19e22:	81 93       	st	Z+, r24
   19e24:	91 93       	st	Z+, r25
   19e26:	a1 93       	st	Z+, r26
   19e28:	b1 93       	st	Z+, r27
				pTaskInfo->pBuf->reportData.headerReport.boardID = mainBoardID;
   19e2a:	80 91 e6 03 	lds	r24, 0x03E6
   19e2e:	80 83       	st	Z, r24
				pTaskInfo->pBuf->reportData.headerReport.taskID = pTaskInfo->taskID;
   19e30:	24 96       	adiw	r28, 0x04	; 4
   19e32:	ae ad       	ldd	r26, Y+62	; 0x3e
   19e34:	bf ad       	ldd	r27, Y+63	; 0x3f
   19e36:	24 97       	sbiw	r28, 0x04	; 4
   19e38:	14 96       	adiw	r26, 0x04	; 4
   19e3a:	ed 91       	ld	r30, X+
   19e3c:	fc 91       	ld	r31, X
   19e3e:	15 97       	sbiw	r26, 0x05	; 5
   19e40:	ea 57       	subi	r30, 0x7A	; 122
   19e42:	fa 4f       	sbci	r31, 0xFA	; 250
   19e44:	8c 91       	ld	r24, X
   19e46:	80 83       	st	Z, r24
				pTaskInfo->pBuf->reportData.headerReport.dataFormat = 9;
   19e48:	14 96       	adiw	r26, 0x04	; 4
   19e4a:	ed 91       	ld	r30, X+
   19e4c:	fc 91       	ld	r31, X
   19e4e:	15 97       	sbiw	r26, 0x05	; 5
   19e50:	e9 57       	subi	r30, 0x79	; 121
   19e52:	fa 4f       	sbci	r31, 0xFA	; 250
   19e54:	80 81       	ld	r24, Z
   19e56:	80 7f       	andi	r24, 0xF0	; 240
   19e58:	89 60       	ori	r24, 0x09	; 9
   19e5a:	80 83       	st	Z, r24
				pTaskInfo->pBuf->reportData.headerReport.parser = 0;
   19e5c:	14 96       	adiw	r26, 0x04	; 4
   19e5e:	ed 91       	ld	r30, X+
   19e60:	fc 91       	ld	r31, X
   19e62:	15 97       	sbiw	r26, 0x05	; 5
   19e64:	e9 57       	subi	r30, 0x79	; 121
   19e66:	fa 4f       	sbci	r31, 0xFA	; 250
   19e68:	80 81       	ld	r24, Z
   19e6a:	8f 7e       	andi	r24, 0xEF	; 239
   19e6c:	80 83       	st	Z, r24
				pTaskInfo->pBuf->reportData.headerReport.priority = 2;
   19e6e:	14 96       	adiw	r26, 0x04	; 4
   19e70:	ed 91       	ld	r30, X+
   19e72:	fc 91       	ld	r31, X
   19e74:	15 97       	sbiw	r26, 0x05	; 5
   19e76:	e9 57       	subi	r30, 0x79	; 121
   19e78:	fa 4f       	sbci	r31, 0xFA	; 250
   19e7a:	80 81       	ld	r24, Z
   19e7c:	8f 71       	andi	r24, 0x1F	; 31
   19e7e:	80 64       	ori	r24, 0x40	; 64
   19e80:	80 83       	st	Z, r24
				pTaskInfo->pBuf->reportData.headerReport.repeatCount = pTaskInfo->pBuf->sampleCount;
   19e82:	14 96       	adiw	r26, 0x04	; 4
   19e84:	ed 91       	ld	r30, X+
   19e86:	fc 91       	ld	r31, X
   19e88:	15 97       	sbiw	r26, 0x05	; 5
   19e8a:	e2 58       	subi	r30, 0x82	; 130
   19e8c:	fa 4f       	sbci	r31, 0xFA	; 250
   19e8e:	80 81       	ld	r24, Z
   19e90:	3a 96       	adiw	r30, 0x0a	; 10
   19e92:	80 83       	st	Z, r24

				//transmit samples
				TurnerC3_Orig_DataReportXmitType91(pTaskInfo);
   19e94:	24 96       	adiw	r28, 0x04	; 4
   19e96:	8e ad       	ldd	r24, Y+62	; 0x3e
   19e98:	9f ad       	ldd	r25, Y+63	; 0x3f
   19e9a:	24 97       	sbiw	r28, 0x04	; 4
   19e9c:	0e 94 6b c7 	call	0x18ed6	; 0x18ed6 <TurnerC3_Orig_DataReportXmitType91>

				memset(&(pTaskInfo->pBuf->reportData), 0, sizeof(C3_ORIG_DATA_REPORT));
   19ea0:	24 96       	adiw	r28, 0x04	; 4
   19ea2:	ee ad       	ldd	r30, Y+62	; 0x3e
   19ea4:	ff ad       	ldd	r31, Y+63	; 0x3f
   19ea6:	24 97       	sbiw	r28, 0x04	; 4
   19ea8:	84 81       	ldd	r24, Z+4	; 0x04
   19eaa:	95 81       	ldd	r25, Z+5	; 0x05
   19eac:	8f 57       	subi	r24, 0x7F	; 127
   19eae:	9a 4f       	sbci	r25, 0xFA	; 250
   19eb0:	fc 01       	movw	r30, r24
   19eb2:	8e eb       	ldi	r24, 0xBE	; 190
   19eb4:	df 01       	movw	r26, r30
   19eb6:	1d 92       	st	X+, r1
   19eb8:	8a 95       	dec	r24
   19eba:	e9 f7       	brne	.-6      	; 0x19eb6 <TurnerC3_Orig_GetDataSample+0x558>
				pTaskInfo->pBuf->sampleCount = 0;
   19ebc:	24 96       	adiw	r28, 0x04	; 4
   19ebe:	ae ad       	ldd	r26, Y+62	; 0x3e
   19ec0:	bf ad       	ldd	r27, Y+63	; 0x3f
   19ec2:	24 97       	sbiw	r28, 0x04	; 4
   19ec4:	14 96       	adiw	r26, 0x04	; 4
   19ec6:	ed 91       	ld	r30, X+
   19ec8:	fc 91       	ld	r31, X
   19eca:	15 97       	sbiw	r26, 0x05	; 5
   19ecc:	e2 58       	subi	r30, 0x82	; 130
   19ece:	fa 4f       	sbci	r31, 0xFA	; 250
   19ed0:	10 82       	st	Z, r1
			}
		}

		if(done == TRUE)
   19ed2:	22 96       	adiw	r28, 0x02	; 2
   19ed4:	bf ad       	ldd	r27, Y+63	; 0x3f
   19ed6:	22 97       	sbiw	r28, 0x02	; 2
   19ed8:	bf 3f       	cpi	r27, 0xFF	; 255
   19eda:	09 f0       	breq	.+2      	; 0x19ede <TurnerC3_Orig_GetDataSample+0x580>
   19edc:	b4 c0       	rjmp	.+360    	; 0x1a046 <TurnerC3_Orig_GetDataSample+0x6e8>
		{
			uint16_t length = 0;

#define X_HDR pTaskInfo->pBuf->reportASCII
			X_HDR.headerReport.payloadType = 0x00000060;
   19ede:	24 96       	adiw	r28, 0x04	; 4
   19ee0:	ae ad       	ldd	r26, Y+62	; 0x3e
   19ee2:	bf ad       	ldd	r27, Y+63	; 0x3f
   19ee4:	24 97       	sbiw	r28, 0x04	; 4
   19ee6:	14 96       	adiw	r26, 0x04	; 4
   19ee8:	ed 91       	ld	r30, X+
   19eea:	fc 91       	ld	r31, X
   19eec:	15 97       	sbiw	r26, 0x05	; 5
   19eee:	e1 5c       	subi	r30, 0xC1	; 193
   19ef0:	f9 4f       	sbci	r31, 0xF9	; 249
   19ef2:	80 e6       	ldi	r24, 0x60	; 96
   19ef4:	90 e0       	ldi	r25, 0x00	; 0
   19ef6:	a0 e0       	ldi	r26, 0x00	; 0
   19ef8:	b0 e0       	ldi	r27, 0x00	; 0
   19efa:	81 93       	st	Z+, r24
   19efc:	91 93       	st	Z+, r25
   19efe:	a1 93       	st	Z+, r26
   19f00:	b1 93       	st	Z+, r27
			X_HDR.headerReport.boardID = mainBoardID;
   19f02:	80 91 e6 03 	lds	r24, 0x03E6
   19f06:	80 83       	st	Z, r24
			X_HDR.headerReport.taskID = pTaskInfo->taskID;
   19f08:	24 96       	adiw	r28, 0x04	; 4
   19f0a:	ae ad       	ldd	r26, Y+62	; 0x3e
   19f0c:	bf ad       	ldd	r27, Y+63	; 0x3f
   19f0e:	24 97       	sbiw	r28, 0x04	; 4
   19f10:	14 96       	adiw	r26, 0x04	; 4
   19f12:	ed 91       	ld	r30, X+
   19f14:	fc 91       	ld	r31, X
   19f16:	15 97       	sbiw	r26, 0x05	; 5
   19f18:	ec 5b       	subi	r30, 0xBC	; 188
   19f1a:	f9 4f       	sbci	r31, 0xF9	; 249
   19f1c:	8c 91       	ld	r24, X
   19f1e:	80 83       	st	Z, r24
			X_HDR.headerReport.dataFormat = 0;
   19f20:	14 96       	adiw	r26, 0x04	; 4
   19f22:	ed 91       	ld	r30, X+
   19f24:	fc 91       	ld	r31, X
   19f26:	15 97       	sbiw	r26, 0x05	; 5
   19f28:	eb 5b       	subi	r30, 0xBB	; 187
   19f2a:	f9 4f       	sbci	r31, 0xF9	; 249
   19f2c:	80 81       	ld	r24, Z
   19f2e:	80 7f       	andi	r24, 0xF0	; 240
   19f30:	80 83       	st	Z, r24
			X_HDR.headerReport.parser = 1;
   19f32:	14 96       	adiw	r26, 0x04	; 4
   19f34:	ed 91       	ld	r30, X+
   19f36:	fc 91       	ld	r31, X
   19f38:	15 97       	sbiw	r26, 0x05	; 5
   19f3a:	eb 5b       	subi	r30, 0xBB	; 187
   19f3c:	f9 4f       	sbci	r31, 0xF9	; 249
   19f3e:	80 81       	ld	r24, Z
   19f40:	80 61       	ori	r24, 0x10	; 16
   19f42:	80 83       	st	Z, r24
			X_HDR.headerReport.priority = 2;
   19f44:	14 96       	adiw	r26, 0x04	; 4
   19f46:	ed 91       	ld	r30, X+
   19f48:	fc 91       	ld	r31, X
   19f4a:	15 97       	sbiw	r26, 0x05	; 5
   19f4c:	eb 5b       	subi	r30, 0xBB	; 187
   19f4e:	f9 4f       	sbci	r31, 0xF9	; 249
   19f50:	80 81       	ld	r24, Z
   19f52:	8f 71       	andi	r24, 0x1F	; 31
   19f54:	80 64       	ori	r24, 0x40	; 64
   19f56:	80 83       	st	Z, r24
			X_HDR.headerReport.repeatCount = 1;
   19f58:	14 96       	adiw	r26, 0x04	; 4
   19f5a:	ed 91       	ld	r30, X+
   19f5c:	fc 91       	ld	r31, X
   19f5e:	15 97       	sbiw	r26, 0x05	; 5
   19f60:	ea 5b       	subi	r30, 0xBA	; 186
   19f62:	f9 4f       	sbci	r31, 0xF9	; 249
   19f64:	81 e0       	ldi	r24, 0x01	; 1
   19f66:	80 83       	st	Z, r24

			X_HDR.headerData.latitude = latitude;
   19f68:	14 96       	adiw	r26, 0x04	; 4
   19f6a:	0d 91       	ld	r16, X+
   19f6c:	1c 91       	ld	r17, X
   19f6e:	15 97       	sbiw	r26, 0x05	; 5
   19f70:	09 5b       	subi	r16, 0xB9	; 185
   19f72:	19 4f       	sbci	r17, 0xF9	; 249
   19f74:	80 91 e5 b7 	lds	r24, 0xB7E5
   19f78:	90 91 e6 b7 	lds	r25, 0xB7E6
   19f7c:	a0 91 e7 b7 	lds	r26, 0xB7E7
   19f80:	b0 91 e8 b7 	lds	r27, 0xB7E8
   19f84:	f8 01       	movw	r30, r16
   19f86:	81 93       	st	Z+, r24
   19f88:	91 93       	st	Z+, r25
   19f8a:	a1 93       	st	Z+, r26
   19f8c:	b1 93       	st	Z+, r27
			X_HDR.headerData.longitude = longitude;
   19f8e:	80 91 e9 b7 	lds	r24, 0xB7E9
   19f92:	90 91 ea b7 	lds	r25, 0xB7EA
   19f96:	a0 91 eb b7 	lds	r26, 0xB7EB
   19f9a:	b0 91 ec b7 	lds	r27, 0xB7EC
   19f9e:	81 93       	st	Z+, r24
   19fa0:	91 93       	st	Z+, r25
   19fa2:	a1 93       	st	Z+, r26
   19fa4:	b1 93       	st	Z+, r27
   19fa6:	8f 01       	movw	r16, r30
			X_HDR.headerData.timestamp = gettime();
   19fa8:	0e 94 3c 34 	call	0x6878	; 0x6878 <gettime>
   19fac:	d8 01       	movw	r26, r16
   19fae:	6d 93       	st	X+, r22
   19fb0:	7d 93       	st	X+, r23
   19fb2:	8d 93       	st	X+, r24
   19fb4:	9c 93       	st	X, r25
   19fb6:	13 97       	sbiw	r26, 0x03	; 3

			memset(X_HDR.data, 0, 165);
   19fb8:	24 96       	adiw	r28, 0x04	; 4
   19fba:	ee ad       	ldd	r30, Y+62	; 0x3e
   19fbc:	ff ad       	ldd	r31, Y+63	; 0x3f
   19fbe:	24 97       	sbiw	r28, 0x04	; 4
   19fc0:	84 81       	ldd	r24, Z+4	; 0x04
   19fc2:	95 81       	ldd	r25, Z+5	; 0x05
   19fc4:	8d 5a       	subi	r24, 0xAD	; 173
   19fc6:	99 4f       	sbci	r25, 0xF9	; 249
   19fc8:	fc 01       	movw	r30, r24
   19fca:	85 ea       	ldi	r24, 0xA5	; 165
   19fcc:	df 01       	movw	r26, r30
   19fce:	1d 92       	st	X+, r1
   19fd0:	8a 95       	dec	r24
   19fd2:	e9 f7       	brne	.-6      	; 0x19fce <TurnerC3_Orig_GetDataSample+0x670>
			memcpy(X_HDR.data, pTaskInfo->pBuf->bufferRx, len - 2);
   19fd4:	24 96       	adiw	r28, 0x04	; 4
   19fd6:	ee ad       	ldd	r30, Y+62	; 0x3e
   19fd8:	ff ad       	ldd	r31, Y+63	; 0x3f
   19fda:	24 97       	sbiw	r28, 0x04	; 4
   19fdc:	24 81       	ldd	r18, Z+4	; 0x04
   19fde:	35 81       	ldd	r19, Z+5	; 0x05
   19fe0:	a9 01       	movw	r20, r18
   19fe2:	4d 5a       	subi	r20, 0xAD	; 173
   19fe4:	59 4f       	sbci	r21, 0xF9	; 249
   19fe6:	ea 81       	ldd	r30, Y+2	; 0x02
   19fe8:	fb 81       	ldd	r31, Y+3	; 0x03
   19fea:	32 97       	sbiw	r30, 0x02	; 2
   19fec:	20 50       	subi	r18, 0x00	; 0
   19fee:	3f 4f       	sbci	r19, 0xFF	; 255
   19ff0:	ca 01       	movw	r24, r20
   19ff2:	b9 01       	movw	r22, r18
   19ff4:	af 01       	movw	r20, r30
   19ff6:	0e 94 1c f0 	call	0x1e038	; 0x1e038 <memcpy>

			//transmit samples
			length = sizeof(TYPE_91_REPORT_HEADER) + sizeof(TYPE_90_91_DATA_HEADER) + strlen(X_HDR.data);
   19ffa:	24 96       	adiw	r28, 0x04	; 4
   19ffc:	ae ad       	ldd	r26, Y+62	; 0x3e
   19ffe:	bf ad       	ldd	r27, Y+63	; 0x3f
   1a000:	24 97       	sbiw	r28, 0x04	; 4
   1a002:	14 96       	adiw	r26, 0x04	; 4
   1a004:	ed 91       	ld	r30, X+
   1a006:	fc 91       	ld	r31, X
   1a008:	15 97       	sbiw	r26, 0x05	; 5
   1a00a:	ed 5a       	subi	r30, 0xAD	; 173
   1a00c:	f9 4f       	sbci	r31, 0xF9	; 249
   1a00e:	df 01       	movw	r26, r30
   1a010:	0d 90       	ld	r0, X+
   1a012:	00 20       	and	r0, r0
   1a014:	e9 f7       	brne	.-6      	; 0x1a010 <TurnerC3_Orig_GetDataSample+0x6b2>
   1a016:	ae 1b       	sub	r26, r30
   1a018:	bf 0b       	sbc	r27, r31
			TurnerC3_Orig_ASCIIReportXmit(pTaskInfo, length);
   1a01a:	53 96       	adiw	r26, 0x13	; 19
   1a01c:	24 96       	adiw	r28, 0x04	; 4
   1a01e:	8e ad       	ldd	r24, Y+62	; 0x3e
   1a020:	9f ad       	ldd	r25, Y+63	; 0x3f
   1a022:	24 97       	sbiw	r28, 0x04	; 4
   1a024:	bd 01       	movw	r22, r26
   1a026:	0e 94 02 c7 	call	0x18e04	; 0x18e04 <TurnerC3_Orig_ASCIIReportXmit>

			memset(&X_HDR, 0, sizeof(C3_ORIG_ASCII_REPORT));
   1a02a:	24 96       	adiw	r28, 0x04	; 4
   1a02c:	ee ad       	ldd	r30, Y+62	; 0x3e
   1a02e:	ff ad       	ldd	r31, Y+63	; 0x3f
   1a030:	24 97       	sbiw	r28, 0x04	; 4
   1a032:	84 81       	ldd	r24, Z+4	; 0x04
   1a034:	95 81       	ldd	r25, Z+5	; 0x05
   1a036:	81 5c       	subi	r24, 0xC1	; 193
   1a038:	99 4f       	sbci	r25, 0xF9	; 249
   1a03a:	fc 01       	movw	r30, r24
   1a03c:	89 eb       	ldi	r24, 0xB9	; 185
   1a03e:	df 01       	movw	r26, r30
   1a040:	1d 92       	st	X+, r1
   1a042:	8a 95       	dec	r24
   1a044:	e9 f7       	brne	.-6      	; 0x1a040 <TurnerC3_Orig_GetDataSample+0x6e2>
#undef X_HDR
		}
	}
}
   1a046:	cd 5b       	subi	r28, 0xBD	; 189
   1a048:	df 4f       	sbci	r29, 0xFF	; 255
   1a04a:	0f b6       	in	r0, 0x3f	; 63
   1a04c:	f8 94       	cli
   1a04e:	de bf       	out	0x3e, r29	; 62
   1a050:	0f be       	out	0x3f, r0	; 63
   1a052:	cd bf       	out	0x3d, r28	; 61
   1a054:	cf 91       	pop	r28
   1a056:	df 91       	pop	r29
   1a058:	1f 91       	pop	r17
   1a05a:	0f 91       	pop	r16
   1a05c:	ff 90       	pop	r15
   1a05e:	ef 90       	pop	r14
   1a060:	df 90       	pop	r13
   1a062:	cf 90       	pop	r12
   1a064:	bf 90       	pop	r11
   1a066:	af 90       	pop	r10
   1a068:	9f 90       	pop	r9
   1a06a:	8f 90       	pop	r8
   1a06c:	7f 90       	pop	r7
   1a06e:	6f 90       	pop	r6
   1a070:	5f 90       	pop	r5
   1a072:	4f 90       	pop	r4
   1a074:	3f 90       	pop	r3
   1a076:	2f 90       	pop	r2
   1a078:	08 95       	ret

0001a07a <TurnerC3_Orig_Init>:
prog_char c3OrigParserID[] = "C3";
prog_char c3OrigCmdList[] = "ofarxisOFARXIS";


uint8_t TurnerC3_Orig_Init(PTURNER_C3_ORIG_TASK pTaskInfo)
{
   1a07a:	cf 92       	push	r12
   1a07c:	df 92       	push	r13
   1a07e:	ef 92       	push	r14
   1a080:	0f 93       	push	r16
   1a082:	1f 93       	push	r17
   1a084:	df 93       	push	r29
   1a086:	cf 93       	push	r28
   1a088:	00 d0       	rcall	.+0      	; 0x1a08a <TurnerC3_Orig_Init+0x10>
   1a08a:	00 d0       	rcall	.+0      	; 0x1a08c <TurnerC3_Orig_Init+0x12>
   1a08c:	cd b7       	in	r28, 0x3d	; 61
   1a08e:	de b7       	in	r29, 0x3e	; 62
   1a090:	6c 01       	movw	r12, r24
	uint8_t retval = SUCCESS;

	if(pTaskInfo->portNum == USER_PORT_1)
   1a092:	dc 01       	movw	r26, r24
   1a094:	11 96       	adiw	r26, 0x01	; 1
   1a096:	8c 91       	ld	r24, X
   1a098:	11 97       	sbiw	r26, 0x01	; 1
   1a09a:	81 30       	cpi	r24, 0x01	; 1
   1a09c:	31 f4       	brne	.+12     	; 0x1a0aa <TurnerC3_Orig_Init+0x30>
		pTaskInfo->eepromAddress = EEPROM_PM1_START;
   1a09e:	80 e0       	ldi	r24, 0x00	; 0
   1a0a0:	93 e0       	ldi	r25, 0x03	; 3
   1a0a2:	13 96       	adiw	r26, 0x03	; 3
   1a0a4:	9c 93       	st	X, r25
   1a0a6:	8e 93       	st	-X, r24
   1a0a8:	12 97       	sbiw	r26, 0x02	; 2
	if(pTaskInfo->portNum == USER_PORT_2)
   1a0aa:	f6 01       	movw	r30, r12
   1a0ac:	81 81       	ldd	r24, Z+1	; 0x01
   1a0ae:	82 30       	cpi	r24, 0x02	; 2
   1a0b0:	21 f4       	brne	.+8      	; 0x1a0ba <TurnerC3_Orig_Init+0x40>
		pTaskInfo->eepromAddress = EEPROM_PM2_START;
   1a0b2:	80 e0       	ldi	r24, 0x00	; 0
   1a0b4:	95 e0       	ldi	r25, 0x05	; 5
   1a0b6:	93 83       	std	Z+3, r25	; 0x03
   1a0b8:	82 83       	std	Z+2, r24	; 0x02
	if(pTaskInfo->portNum == USER_PORT_3)
   1a0ba:	d6 01       	movw	r26, r12
   1a0bc:	11 96       	adiw	r26, 0x01	; 1
   1a0be:	8c 91       	ld	r24, X
   1a0c0:	11 97       	sbiw	r26, 0x01	; 1
   1a0c2:	83 30       	cpi	r24, 0x03	; 3
   1a0c4:	31 f4       	brne	.+12     	; 0x1a0d2 <TurnerC3_Orig_Init+0x58>
		pTaskInfo->eepromAddress = EEPROM_PM3_START;
   1a0c6:	80 e0       	ldi	r24, 0x00	; 0
   1a0c8:	97 e0       	ldi	r25, 0x07	; 7
   1a0ca:	13 96       	adiw	r26, 0x03	; 3
   1a0cc:	9c 93       	st	X, r25
   1a0ce:	8e 93       	st	-X, r24
   1a0d0:	12 97       	sbiw	r26, 0x02	; 2

	if(pTaskInfo->pBuf != NULL)
   1a0d2:	d6 01       	movw	r26, r12
   1a0d4:	14 96       	adiw	r26, 0x04	; 4
   1a0d6:	ed 91       	ld	r30, X+
   1a0d8:	fc 91       	ld	r31, X
   1a0da:	15 97       	sbiw	r26, 0x05	; 5
   1a0dc:	30 97       	sbiw	r30, 0x00	; 0
   1a0de:	41 f0       	breq	.+16     	; 0x1a0f0 <TurnerC3_Orig_Init+0x76>
		memset(pTaskInfo->pBuf, 0, TASK_BUF_SIZE);
   1a0e0:	80 ea       	ldi	r24, 0xA0	; 160
   1a0e2:	9f e0       	ldi	r25, 0x0F	; 15
   1a0e4:	df 01       	movw	r26, r30
   1a0e6:	9c 01       	movw	r18, r24
   1a0e8:	1d 92       	st	X+, r1
   1a0ea:	21 50       	subi	r18, 0x01	; 1
   1a0ec:	30 40       	sbci	r19, 0x00	; 0
   1a0ee:	e1 f7       	brne	.-8      	; 0x1a0e8 <TurnerC3_Orig_Init+0x6e>

	OSuartInitPort(pTaskInfo->portNum, 9600, UART_MODE_EIGHT_DATA_BITS, UART_MODE_ONE_STOP_BIT, UART_MODE_NO_PARITY);
   1a0f0:	d6 01       	movw	r26, r12
   1a0f2:	11 96       	adiw	r26, 0x01	; 1
   1a0f4:	8c 91       	ld	r24, X
   1a0f6:	40 e8       	ldi	r20, 0x80	; 128
   1a0f8:	55 e2       	ldi	r21, 0x25	; 37
   1a0fa:	60 e0       	ldi	r22, 0x00	; 0
   1a0fc:	70 e0       	ldi	r23, 0x00	; 0
   1a0fe:	26 e0       	ldi	r18, 0x06	; 6
   1a100:	00 e0       	ldi	r16, 0x00	; 0
   1a102:	ee 24       	eor	r14, r14
   1a104:	0e 94 38 33 	call	0x6670	; 0x6670 <OSuartInitPort>

	pTaskInfo->pBuf->sampleC3 = FALSE;
   1a108:	d6 01       	movw	r26, r12
   1a10a:	14 96       	adiw	r26, 0x04	; 4
   1a10c:	ed 91       	ld	r30, X+
   1a10e:	fc 91       	ld	r31, X
   1a110:	15 97       	sbiw	r26, 0x05	; 5
   1a112:	ec 5f       	subi	r30, 0xFC	; 252
   1a114:	fa 4f       	sbci	r31, 0xFA	; 250
   1a116:	10 82       	st	Z, r1

	if(pTaskInfo->eepromAddress != 0)
   1a118:	12 96       	adiw	r26, 0x02	; 2
   1a11a:	8d 91       	ld	r24, X+
   1a11c:	9c 91       	ld	r25, X
   1a11e:	13 97       	sbiw	r26, 0x03	; 3
   1a120:	00 97       	sbiw	r24, 0x00	; 0
   1a122:	09 f4       	brne	.+2      	; 0x1a126 <TurnerC3_Orig_Init+0xac>
   1a124:	71 c0       	rjmp	.+226    	; 0x1a208 <TurnerC3_Orig_Init+0x18e>
	{
		uint32_t temp;
		EepromReadBlock((void*)(pTaskInfo->eepromAddress + TURNER_C3_SAMPLE_OFFSET), (void*)&temp, 4);
   1a126:	8e 01       	movw	r16, r28
   1a128:	0d 5f       	subi	r16, 0xFD	; 253
   1a12a:	1f 4f       	sbci	r17, 0xFF	; 255
   1a12c:	80 5c       	subi	r24, 0xC0	; 192
   1a12e:	9f 4f       	sbci	r25, 0xFF	; 255
   1a130:	b8 01       	movw	r22, r16
   1a132:	44 e0       	ldi	r20, 0x04	; 4
   1a134:	50 e0       	ldi	r21, 0x00	; 0
   1a136:	0e 94 67 37 	call	0x6ece	; 0x6ece <EepromReadBlock>

		if((temp == 0xFFFFFFFF) || (temp == 0x00000000))
   1a13a:	8b 81       	ldd	r24, Y+3	; 0x03
   1a13c:	9c 81       	ldd	r25, Y+4	; 0x04
   1a13e:	ad 81       	ldd	r26, Y+5	; 0x05
   1a140:	be 81       	ldd	r27, Y+6	; 0x06
   1a142:	01 97       	sbiw	r24, 0x01	; 1
   1a144:	a1 09       	sbc	r26, r1
   1a146:	b1 09       	sbc	r27, r1
   1a148:	8e 5f       	subi	r24, 0xFE	; 254
   1a14a:	9f 4f       	sbci	r25, 0xFF	; 255
   1a14c:	af 4f       	sbci	r26, 0xFF	; 255
   1a14e:	bf 4f       	sbci	r27, 0xFF	; 255
   1a150:	a0 f0       	brcs	.+40     	; 0x1a17a <TurnerC3_Orig_Init+0x100>
		{
			temp = 60;
   1a152:	8c e3       	ldi	r24, 0x3C	; 60
   1a154:	90 e0       	ldi	r25, 0x00	; 0
   1a156:	a0 e0       	ldi	r26, 0x00	; 0
   1a158:	b0 e0       	ldi	r27, 0x00	; 0
   1a15a:	8b 83       	std	Y+3, r24	; 0x03
   1a15c:	9c 83       	std	Y+4, r25	; 0x04
   1a15e:	ad 83       	std	Y+5, r26	; 0x05
   1a160:	be 83       	std	Y+6, r27	; 0x06
			EepromWriteBlock((void*)(pTaskInfo->eepromAddress + TURNER_C3_SAMPLE_OFFSET), (void*)&temp, 4);
   1a162:	d6 01       	movw	r26, r12
   1a164:	12 96       	adiw	r26, 0x02	; 2
   1a166:	8d 91       	ld	r24, X+
   1a168:	9c 91       	ld	r25, X
   1a16a:	13 97       	sbiw	r26, 0x03	; 3
   1a16c:	80 5c       	subi	r24, 0xC0	; 192
   1a16e:	9f 4f       	sbci	r25, 0xFF	; 255
   1a170:	b8 01       	movw	r22, r16
   1a172:	44 e0       	ldi	r20, 0x04	; 4
   1a174:	50 e0       	ldi	r21, 0x00	; 0
   1a176:	0e 94 f7 37 	call	0x6fee	; 0x6fee <EepromWriteBlock>
		}
		pTaskInfo->pBuf->sampleRate = temp;
   1a17a:	d6 01       	movw	r26, r12
   1a17c:	14 96       	adiw	r26, 0x04	; 4
   1a17e:	ed 91       	ld	r30, X+
   1a180:	fc 91       	ld	r31, X
   1a182:	15 97       	sbiw	r26, 0x05	; 5
   1a184:	e0 50       	subi	r30, 0x00	; 0
   1a186:	fb 4f       	sbci	r31, 0xFB	; 251
   1a188:	8b 81       	ldd	r24, Y+3	; 0x03
   1a18a:	9c 81       	ldd	r25, Y+4	; 0x04
   1a18c:	ad 81       	ldd	r26, Y+5	; 0x05
   1a18e:	be 81       	ldd	r27, Y+6	; 0x06
   1a190:	80 83       	st	Z, r24
   1a192:	91 83       	std	Z+1, r25	; 0x01
   1a194:	a2 83       	std	Z+2, r26	; 0x02
   1a196:	b3 83       	std	Z+3, r27	; 0x03

		pTaskInfo->pBuf->initState = 0xFF;
   1a198:	35 96       	adiw	r30, 0x05	; 5
   1a19a:	8f ef       	ldi	r24, 0xFF	; 255
   1a19c:	80 83       	st	Z, r24
		EepromReadByte((void*)(pTaskInfo->eepromAddress + TURNER_C3_AUTORUN_STATE_OFFSET), (void*)&pTaskInfo->pBuf->initState);
   1a19e:	d6 01       	movw	r26, r12
   1a1a0:	12 96       	adiw	r26, 0x02	; 2
   1a1a2:	8d 91       	ld	r24, X+
   1a1a4:	9c 91       	ld	r25, X
   1a1a6:	13 97       	sbiw	r26, 0x03	; 3
   1a1a8:	8c 5b       	subi	r24, 0xBC	; 188
   1a1aa:	9f 4f       	sbci	r25, 0xFF	; 255
   1a1ac:	bf 01       	movw	r22, r30
   1a1ae:	0e 94 38 37 	call	0x6e70	; 0x6e70 <EepromReadByte>
		if((pTaskInfo->pBuf->initState != AUTORUN_ON) && (pTaskInfo->pBuf->initState != AUTORUN_OFF))
   1a1b2:	d6 01       	movw	r26, r12
   1a1b4:	14 96       	adiw	r26, 0x04	; 4
   1a1b6:	ed 91       	ld	r30, X+
   1a1b8:	fc 91       	ld	r31, X
   1a1ba:	15 97       	sbiw	r26, 0x05	; 5
   1a1bc:	eb 5f       	subi	r30, 0xFB	; 251
   1a1be:	fa 4f       	sbci	r31, 0xFA	; 250
   1a1c0:	80 81       	ld	r24, Z
   1a1c2:	82 30       	cpi	r24, 0x02	; 2
   1a1c4:	50 f0       	brcs	.+20     	; 0x1a1da <TurnerC3_Orig_Init+0x160>
		{
			pTaskInfo->pBuf->initState = AUTORUN_OFF;	//Default to 1 sample per minute if not defined
   1a1c6:	10 82       	st	Z, r1
			EepromWriteByteUnSigned((void*)(pTaskInfo->eepromAddress + TURNER_C3_AUTORUN_STATE_OFFSET), pTaskInfo->pBuf->initState);
   1a1c8:	12 96       	adiw	r26, 0x02	; 2
   1a1ca:	8d 91       	ld	r24, X+
   1a1cc:	9c 91       	ld	r25, X
   1a1ce:	13 97       	sbiw	r26, 0x03	; 3
   1a1d0:	8c 5b       	subi	r24, 0xBC	; 188
   1a1d2:	9f 4f       	sbci	r25, 0xFF	; 255
   1a1d4:	60 e0       	ldi	r22, 0x00	; 0
   1a1d6:	0e 94 9f 37 	call	0x6f3e	; 0x6f3e <EepromWriteByteUnSigned>
		}

		if(pTaskInfo->pBuf->initState == AUTORUN_ON)
   1a1da:	d6 01       	movw	r26, r12
   1a1dc:	14 96       	adiw	r26, 0x04	; 4
   1a1de:	ed 91       	ld	r30, X+
   1a1e0:	fc 91       	ld	r31, X
   1a1e2:	15 97       	sbiw	r26, 0x05	; 5
   1a1e4:	eb 5f       	subi	r30, 0xFB	; 251
   1a1e6:	fa 4f       	sbci	r31, 0xFA	; 250
   1a1e8:	80 81       	ld	r24, Z
   1a1ea:	81 30       	cpi	r24, 0x01	; 1
   1a1ec:	69 f4       	brne	.+26     	; 0x1a208 <TurnerC3_Orig_Init+0x18e>
		{
			char tempBuf[2] = " ";
   1a1ee:	80 91 30 05 	lds	r24, 0x0530
   1a1f2:	90 91 31 05 	lds	r25, 0x0531
   1a1f6:	9a 83       	std	Y+2, r25	; 0x02
   1a1f8:	89 83       	std	Y+1, r24	; 0x01
			TurnerC3_Orig_ParseCommand(pTaskInfo, 'r', tempBuf);
   1a1fa:	c6 01       	movw	r24, r12
   1a1fc:	62 e7       	ldi	r22, 0x72	; 114
   1a1fe:	ae 01       	movw	r20, r28
   1a200:	4f 5f       	subi	r20, 0xFF	; 255
   1a202:	5f 4f       	sbci	r21, 0xFF	; 255
   1a204:	0e 94 40 c9 	call	0x19280	; 0x19280 <TurnerC3_Orig_ParseCommand>
		}

	}

	OSTimeDlyHMSM(0,0,1,0);
   1a208:	80 e0       	ldi	r24, 0x00	; 0
   1a20a:	60 e0       	ldi	r22, 0x00	; 0
   1a20c:	41 e0       	ldi	r20, 0x01	; 1
   1a20e:	20 e0       	ldi	r18, 0x00	; 0
   1a210:	30 e0       	ldi	r19, 0x00	; 0
   1a212:	0e 94 2a 2e 	call	0x5c54	; 0x5c54 <OSTimeDlyHMSM>



	return retval;
}
   1a216:	8f ef       	ldi	r24, 0xFF	; 255
   1a218:	26 96       	adiw	r28, 0x06	; 6
   1a21a:	0f b6       	in	r0, 0x3f	; 63
   1a21c:	f8 94       	cli
   1a21e:	de bf       	out	0x3e, r29	; 62
   1a220:	0f be       	out	0x3f, r0	; 63
   1a222:	cd bf       	out	0x3d, r28	; 61
   1a224:	cf 91       	pop	r28
   1a226:	df 91       	pop	r29
   1a228:	1f 91       	pop	r17
   1a22a:	0f 91       	pop	r16
   1a22c:	ef 90       	pop	r14
   1a22e:	df 90       	pop	r13
   1a230:	cf 90       	pop	r12
   1a232:	08 95       	ret

0001a234 <SerialPortPassThroughEmpty>:
	return;
}

void SerialPortPassThroughEmpty(uint8_t port)
{
	readyForSerialPassThru = TRUE;
   1a234:	8f ef       	ldi	r24, 0xFF	; 255
   1a236:	80 93 9e a1 	sts	0xA19E, r24

	while(1)
	{
		OSTimeDlyHMSM(1,0,0,0);
   1a23a:	81 e0       	ldi	r24, 0x01	; 1
   1a23c:	60 e0       	ldi	r22, 0x00	; 0
   1a23e:	40 e0       	ldi	r20, 0x00	; 0
   1a240:	20 e0       	ldi	r18, 0x00	; 0
   1a242:	30 e0       	ldi	r19, 0x00	; 0
   1a244:	0e 94 2a 2e 	call	0x5c54	; 0x5c54 <OSTimeDlyHMSM>
   1a248:	f8 cf       	rjmp	.-16     	; 0x1a23a <SerialPortPassThroughEmpty+0x6>

0001a24a <Empty_QueueConsoleResponse>:
	return retval;

}

void Empty_QueueConsoleResponse(PEMPTY_TASK pTaskInfo)
{
   1a24a:	ef 92       	push	r14
   1a24c:	ff 92       	push	r15
   1a24e:	0f 93       	push	r16
   1a250:	1f 93       	push	r17
   1a252:	df 93       	push	r29
   1a254:	cf 93       	push	r28
   1a256:	0f 92       	push	r0
   1a258:	cd b7       	in	r28, 0x3d	; 61
   1a25a:	de b7       	in	r29, 0x3e	; 62
   1a25c:	7c 01       	movw	r14, r24
	PCONSOLE_ACK_XMIT_2 pReport;
	uint8_t err = 0;
   1a25e:	19 82       	std	Y+1, r1	; 0x01
	char* pData;

	OSMutexPend(pMutexFloatQueue, INFINITE, &err);
   1a260:	80 91 51 19 	lds	r24, 0x1951
   1a264:	90 91 52 19 	lds	r25, 0x1952
   1a268:	60 e0       	ldi	r22, 0x00	; 0
   1a26a:	70 e0       	ldi	r23, 0x00	; 0
   1a26c:	ae 01       	movw	r20, r28
   1a26e:	4f 5f       	subi	r20, 0xFF	; 255
   1a270:	5f 4f       	sbci	r21, 0xFF	; 255
   1a272:	0e 94 c2 28 	call	0x5184	; 0x5184 <OSMutexPend>

	pReport = (PCONSOLE_ACK_XMIT_2)&(txFloatAck[headFloatAckTx]);
   1a276:	80 91 95 07 	lds	r24, 0x0795
   1a27a:	90 e0       	ldi	r25, 0x00	; 0
   1a27c:	26 e3       	ldi	r18, 0x36	; 54
   1a27e:	31 e0       	ldi	r19, 0x01	; 1
   1a280:	82 9f       	mul	r24, r18
   1a282:	80 01       	movw	r16, r0
   1a284:	83 9f       	mul	r24, r19
   1a286:	10 0d       	add	r17, r0
   1a288:	92 9f       	mul	r25, r18
   1a28a:	10 0d       	add	r17, r0
   1a28c:	11 24       	eor	r1, r1
   1a28e:	03 5f       	subi	r16, 0xF3	; 243
   1a290:	1c 44       	sbci	r17, 0x4C	; 76
	pData = (char*)pReport;

	pReport->comm.headers.destination = FLOAT_TASK_FORWARD_MESSAGE;		//pTaskInfo->pBuf->responseInfo.source;
   1a292:	80 e2       	ldi	r24, 0x20	; 32
   1a294:	90 e0       	ldi	r25, 0x00	; 0
   1a296:	d8 01       	movw	r26, r16
   1a298:	13 96       	adiw	r26, 0x03	; 3
   1a29a:	9c 93       	st	X, r25
   1a29c:	8e 93       	st	-X, r24
   1a29e:	12 97       	sbiw	r26, 0x02	; 2

	pReport->comm.fwdInfo.msgFormat = MSG_FORMAT_SHIP_TO_SHORE;
   1a2a0:	82 e0       	ldi	r24, 0x02	; 2
   1a2a2:	1c 96       	adiw	r26, 0x0c	; 12
   1a2a4:	8c 93       	st	X, r24
	pReport->comm.fwdInfo.destination = pTaskInfo->pBuf->responseInfo.source;
   1a2a6:	d7 01       	movw	r26, r14
   1a2a8:	14 96       	adiw	r26, 0x04	; 4
   1a2aa:	ed 91       	ld	r30, X+
   1a2ac:	fc 91       	ld	r31, X
   1a2ae:	15 97       	sbiw	r26, 0x05	; 5
   1a2b0:	ec 5e       	subi	r30, 0xEC	; 236
   1a2b2:	fe 4f       	sbci	r31, 0xFE	; 254
   1a2b4:	81 91       	ld	r24, Z+
   1a2b6:	91 91       	ld	r25, Z+
   1a2b8:	d8 01       	movw	r26, r16
   1a2ba:	1e 96       	adiw	r26, 0x0e	; 14
   1a2bc:	9c 93       	st	X, r25
   1a2be:	8e 93       	st	-X, r24
   1a2c0:	1d 97       	sbiw	r26, 0x0d	; 13
	pReport->comm.fwdInfo.source = mainTaskAddress | pTaskInfo->taskID;
   1a2c2:	d7 01       	movw	r26, r14
   1a2c4:	8c 91       	ld	r24, X
   1a2c6:	90 e0       	ldi	r25, 0x00	; 0
   1a2c8:	20 91 e4 03 	lds	r18, 0x03E4
   1a2cc:	30 91 e5 03 	lds	r19, 0x03E5
   1a2d0:	82 2b       	or	r24, r18
   1a2d2:	93 2b       	or	r25, r19
   1a2d4:	d8 01       	movw	r26, r16
   1a2d6:	50 96       	adiw	r26, 0x10	; 16
   1a2d8:	9c 93       	st	X, r25
   1a2da:	8e 93       	st	-X, r24
   1a2dc:	1f 97       	sbiw	r26, 0x0f	; 15

	if(pTaskInfo->pBuf->responseInfo.status < CONSOLE_RESPONSE_UNKNOWN_CMD)
   1a2de:	20 81       	ld	r18, Z
   1a2e0:	e6 51       	subi	r30, 0x16	; 22
   1a2e2:	f1 40       	sbci	r31, 0x01	; 1
   1a2e4:	2a 30       	cpi	r18, 0x0A	; 10
   1a2e6:	20 f5       	brcc	.+72     	; 0x1a330 <Empty_QueueConsoleResponse+0xe6>
	{
		pReport->comm.headers.length = sizeof(PIB_DATA_FORWARD_MESSAGE) + sizeof(CONSOLE_ACK) + pTaskInfo->pBuf->responseInfo.length + CRC16_SIZE;
   1a2e8:	e8 5e       	subi	r30, 0xE8	; 232
   1a2ea:	fe 4f       	sbci	r31, 0xFE	; 254
   1a2ec:	40 81       	ld	r20, Z
   1a2ee:	50 e0       	ldi	r21, 0x00	; 0
   1a2f0:	42 5e       	subi	r20, 0xE2	; 226
   1a2f2:	5f 4f       	sbci	r21, 0xFF	; 255
   1a2f4:	11 96       	adiw	r26, 0x01	; 1
   1a2f6:	5c 93       	st	X, r21
   1a2f8:	4e 93       	st	-X, r20
   1a2fa:	4e 51       	subi	r20, 0x1E	; 30
   1a2fc:	50 40       	sbci	r21, 0x00	; 0

		pReport->comm.iridiumInfo.headerICD.type = ACK_CONSOLE_DATA;
   1a2fe:	8d e3       	ldi	r24, 0x3D	; 61
   1a300:	51 96       	adiw	r26, 0x11	; 17
   1a302:	8c 93       	st	X, r24
   1a304:	51 97       	sbiw	r26, 0x11	; 17

		pReport->consoleAck.len = pTaskInfo->pBuf->responseInfo.length;
   1a306:	5b 96       	adiw	r26, 0x1b	; 27
   1a308:	5c 93       	st	X, r21
   1a30a:	4e 93       	st	-X, r20
   1a30c:	5a 97       	sbiw	r26, 0x1a	; 26
		pReport->consoleAck.disposition = pTaskInfo->pBuf->responseInfo.status;
   1a30e:	59 96       	adiw	r26, 0x19	; 25
   1a310:	2c 93       	st	X, r18
   1a312:	59 97       	sbiw	r26, 0x19	; 25
		pReport->consoleAck.format = pTaskInfo->pBuf->responseInfo.format;
   1a314:	82 91       	ld	r24, -Z
   1a316:	58 96       	adiw	r26, 0x18	; 24
   1a318:	8c 93       	st	X, r24
		pData = pData + sizeof(PIB_DATA_FORWARD_MESSAGE) + sizeof(CONSOLE_ACK);
		memcpy(pData, pTaskInfo->pBuf->consoleResponse, pTaskInfo->pBuf->responseInfo.length);
   1a31a:	98 01       	movw	r18, r16
   1a31c:	24 5e       	subi	r18, 0xE4	; 228
   1a31e:	3f 4f       	sbci	r19, 0xFF	; 255
   1a320:	e3 50       	subi	r30, 0x03	; 3
   1a322:	f1 40       	sbci	r31, 0x01	; 1
   1a324:	c9 01       	movw	r24, r18
   1a326:	bf 01       	movw	r22, r30
   1a328:	50 e0       	ldi	r21, 0x00	; 0
   1a32a:	0e 94 1c f0 	call	0x1e038	; 0x1e038 <memcpy>
   1a32e:	0c c0       	rjmp	.+24     	; 0x1a348 <Empty_QueueConsoleResponse+0xfe>
		//dbgMsg[pTaskInfo->pBuf->responseInfo.length] = 0;
		//SEND_MSG;
	}
	else
	{
		pReport->comm.headers.length = sizeof(PIB_DATA_FORWARD_MESSAGE) + sizeof(CONSOLE_NACK) + CRC16_SIZE;
   1a330:	8d e1       	ldi	r24, 0x1D	; 29
   1a332:	90 e0       	ldi	r25, 0x00	; 0
   1a334:	f8 01       	movw	r30, r16
   1a336:	91 83       	std	Z+1, r25	; 0x01
   1a338:	80 83       	st	Z, r24
		pReport->comm.iridiumInfo.headerICD.type = NACK_CONSOLE_DATA;
   1a33a:	86 e2       	ldi	r24, 0x26	; 38
   1a33c:	81 8b       	std	Z+17, r24	; 0x11
		pReport->consoleNack.numDispositions = 1;
   1a33e:	81 e0       	ldi	r24, 0x01	; 1
   1a340:	90 e0       	ldi	r25, 0x00	; 0
   1a342:	91 8f       	std	Z+25, r25	; 0x19
   1a344:	80 8f       	std	Z+24, r24	; 0x18
		pReport->consoleNack.disposition[0] = pTaskInfo->pBuf->responseInfo.status;
   1a346:	22 8f       	std	Z+26, r18	; 0x1a
	}

	pReport->comm.iridiumInfo.headerICD.packetID = pTaskInfo->pBuf->responseInfo.id;
   1a348:	d7 01       	movw	r26, r14
   1a34a:	14 96       	adiw	r26, 0x04	; 4
   1a34c:	ed 91       	ld	r30, X+
   1a34e:	fc 91       	ld	r31, X
   1a350:	15 97       	sbiw	r26, 0x05	; 5
   1a352:	e7 5e       	subi	r30, 0xE7	; 231
   1a354:	fe 4f       	sbci	r31, 0xFE	; 254
   1a356:	80 81       	ld	r24, Z
   1a358:	91 81       	ldd	r25, Z+1	; 0x01
   1a35a:	a2 81       	ldd	r26, Z+2	; 0x02
   1a35c:	b3 81       	ldd	r27, Z+3	; 0x03
   1a35e:	f8 01       	movw	r30, r16
   1a360:	82 8b       	std	Z+18, r24	; 0x12
   1a362:	93 8b       	std	Z+19, r25	; 0x13
   1a364:	a4 8b       	std	Z+20, r26	; 0x14
   1a366:	b5 8b       	std	Z+21, r27	; 0x15
	pReport->comm.iridiumInfo.headerICD.size = pReport->comm.headers.length - sizeof(PIB_DATA_FORWARD_MESSAGE) - CRC16_SIZE;
   1a368:	80 81       	ld	r24, Z
   1a36a:	91 81       	ldd	r25, Z+1	; 0x01
   1a36c:	4a 97       	sbiw	r24, 0x1a	; 26
   1a36e:	97 8b       	std	Z+23, r25	; 0x17
   1a370:	86 8b       	std	Z+22, r24	; 0x16


	(headFloatAckTx < MAX_ACK_BUFFERS - 1) ? (headFloatAckTx++) : (headFloatAckTx = 0);
   1a372:	80 91 95 07 	lds	r24, 0x0795
   1a376:	83 30       	cpi	r24, 0x03	; 3
   1a378:	20 f4       	brcc	.+8      	; 0x1a382 <Empty_QueueConsoleResponse+0x138>
   1a37a:	8f 5f       	subi	r24, 0xFF	; 255
   1a37c:	80 93 95 07 	sts	0x0795, r24
   1a380:	02 c0       	rjmp	.+4      	; 0x1a386 <Empty_QueueConsoleResponse+0x13c>
   1a382:	10 92 95 07 	sts	0x0795, r1

	if(headFloatAckTx == tailFloatAckTx)
   1a386:	90 91 95 07 	lds	r25, 0x0795
   1a38a:	80 91 96 07 	lds	r24, 0x0796
   1a38e:	98 17       	cp	r25, r24
   1a390:	41 f4       	brne	.+16     	; 0x1a3a2 <Empty_QueueConsoleResponse+0x158>
	{
		(tailFloatAckTx < MAX_ACK_BUFFERS - 1) ? (tailFloatAckTx++) : (tailFloatAckTx = 0);
   1a392:	93 30       	cpi	r25, 0x03	; 3
   1a394:	20 f4       	brcc	.+8      	; 0x1a39e <Empty_QueueConsoleResponse+0x154>
   1a396:	9f 5f       	subi	r25, 0xFF	; 255
   1a398:	90 93 96 07 	sts	0x0796, r25
   1a39c:	02 c0       	rjmp	.+4      	; 0x1a3a2 <Empty_QueueConsoleResponse+0x158>
   1a39e:	10 92 96 07 	sts	0x0796, r1
	}

	OSMutexPost(pMutexFloatQueue);
   1a3a2:	80 91 51 19 	lds	r24, 0x1951
   1a3a6:	90 91 52 19 	lds	r25, 0x1952
   1a3aa:	0e 94 36 27 	call	0x4e6c	; 0x4e6c <OSMutexPost>

	return;
}
   1a3ae:	0f 90       	pop	r0
   1a3b0:	cf 91       	pop	r28
   1a3b2:	df 91       	pop	r29
   1a3b4:	1f 91       	pop	r17
   1a3b6:	0f 91       	pop	r16
   1a3b8:	ff 90       	pop	r15
   1a3ba:	ef 90       	pop	r14
   1a3bc:	08 95       	ret

0001a3be <Empty_Id>:
	return retval;

}

uint8_t Empty_Id(PEMPTY_TASK pTaskInfo)
{
   1a3be:	0f 93       	push	r16
   1a3c0:	1f 93       	push	r17
   1a3c2:	8c 01       	movw	r16, r24
	uint8_t retval = SUCCESS;

	memset((char*)pTaskInfo->pBuf->consoleResponse, 0, 256);
   1a3c4:	dc 01       	movw	r26, r24
   1a3c6:	14 96       	adiw	r26, 0x04	; 4
   1a3c8:	8d 91       	ld	r24, X+
   1a3ca:	9c 91       	ld	r25, X
   1a3cc:	15 97       	sbiw	r26, 0x05	; 5
   1a3ce:	44 96       	adiw	r24, 0x14	; 20
   1a3d0:	fc 01       	movw	r30, r24
   1a3d2:	80 e0       	ldi	r24, 0x00	; 0
   1a3d4:	91 e0       	ldi	r25, 0x01	; 1
   1a3d6:	df 01       	movw	r26, r30
   1a3d8:	9c 01       	movw	r18, r24
   1a3da:	1d 92       	st	X+, r1
   1a3dc:	21 50       	subi	r18, 0x01	; 1
   1a3de:	30 40       	sbci	r19, 0x00	; 0
   1a3e0:	e1 f7       	brne	.-8      	; 0x1a3da <Empty_Id+0x1c>
	strcat_P(pTaskInfo->pBuf->consoleResponse, PSTR("Empty PM sensor."));
   1a3e2:	d8 01       	movw	r26, r16
   1a3e4:	14 96       	adiw	r26, 0x04	; 4
   1a3e6:	8d 91       	ld	r24, X+
   1a3e8:	9c 91       	ld	r25, X
   1a3ea:	15 97       	sbiw	r26, 0x05	; 5
   1a3ec:	44 96       	adiw	r24, 0x14	; 20
   1a3ee:	6a e4       	ldi	r22, 0x4A	; 74
   1a3f0:	7b e1       	ldi	r23, 0x1B	; 27
   1a3f2:	0e 94 b4 ef 	call	0x1df68	; 0x1df68 <strcat_P>
	pTaskInfo->pBuf->responseInfo.length = strlen(pTaskInfo->pBuf->consoleResponse);
   1a3f6:	f8 01       	movw	r30, r16
   1a3f8:	a4 81       	ldd	r26, Z+4	; 0x04
   1a3fa:	b5 81       	ldd	r27, Z+5	; 0x05
   1a3fc:	cd 01       	movw	r24, r26
   1a3fe:	44 96       	adiw	r24, 0x14	; 20
   1a400:	fc 01       	movw	r30, r24
   1a402:	01 90       	ld	r0, Z+
   1a404:	00 20       	and	r0, r0
   1a406:	e9 f7       	brne	.-6      	; 0x1a402 <Empty_Id+0x44>
   1a408:	31 97       	sbiw	r30, 0x01	; 1
   1a40a:	e8 1b       	sub	r30, r24
   1a40c:	f9 0b       	sbc	r31, r25
   1a40e:	a8 5e       	subi	r26, 0xE8	; 232
   1a410:	be 4f       	sbci	r27, 0xFE	; 254
   1a412:	ec 93       	st	X, r30

	return retval;

}
   1a414:	8f ef       	ldi	r24, 0xFF	; 255
   1a416:	1f 91       	pop	r17
   1a418:	0f 91       	pop	r16
   1a41a:	08 95       	ret

0001a41c <Empty_ParseCommand>:
	return;

}

uint8_t Empty_ParseCommand(PEMPTY_TASK pTaskInfo, char command, char* cmdParams)
{
   1a41c:	cf 93       	push	r28
   1a41e:	df 93       	push	r29
   1a420:	ec 01       	movw	r28, r24
	uint8_t retval = FAIL;

	switch(command)
   1a422:	69 34       	cpi	r22, 0x49	; 73
   1a424:	21 f0       	breq	.+8      	; 0x1a42e <Empty_ParseCommand+0x12>
   1a426:	69 36       	cpi	r22, 0x69	; 105
   1a428:	11 f0       	breq	.+4      	; 0x1a42e <Empty_ParseCommand+0x12>
   1a42a:	90 e0       	ldi	r25, 0x00	; 0
   1a42c:	0a c0       	rjmp	.+20     	; 0x1a442 <Empty_ParseCommand+0x26>
	{
		case 'i':
		case 'I':
			retval = Empty_Id(pTaskInfo);
   1a42e:	ce 01       	movw	r24, r28
   1a430:	0e 94 df d1 	call	0x1a3be	; 0x1a3be <Empty_Id>
   1a434:	98 2f       	mov	r25, r24
			pTaskInfo->pBuf->responseInfo.status = CONSOLE_RESPONSE_OK;
   1a436:	ec 81       	ldd	r30, Y+4	; 0x04
   1a438:	fd 81       	ldd	r31, Y+5	; 0x05
   1a43a:	ea 5e       	subi	r30, 0xEA	; 234
   1a43c:	fe 4f       	sbci	r31, 0xFE	; 254
   1a43e:	81 e0       	ldi	r24, 0x01	; 1
   1a440:	80 83       	st	Z, r24
			break;
	}

	return retval;

}
   1a442:	89 2f       	mov	r24, r25
   1a444:	df 91       	pop	r29
   1a446:	cf 91       	pop	r28
   1a448:	08 95       	ret

0001a44a <Empty_ParseConsole>:

	return;
}

void Empty_ParseConsole(PEMPTY_TASK pTaskInfo)
{
   1a44a:	af 92       	push	r10
   1a44c:	bf 92       	push	r11
   1a44e:	cf 92       	push	r12
   1a450:	df 92       	push	r13
   1a452:	ef 92       	push	r14
   1a454:	ff 92       	push	r15
   1a456:	0f 93       	push	r16
   1a458:	1f 93       	push	r17
   1a45a:	df 93       	push	r29
   1a45c:	cf 93       	push	r28
   1a45e:	0f 92       	push	r0
   1a460:	0f 92       	push	r0
   1a462:	cd b7       	in	r28, 0x3d	; 61
   1a464:	de b7       	in	r29, 0x3e	; 62
   1a466:	6c 01       	movw	r12, r24
	char* myCommand = consoleIn[pTaskInfo->taskID].cmd; 
   1a468:	dc 01       	movw	r26, r24
   1a46a:	8c 91       	ld	r24, X
   1a46c:	90 e0       	ldi	r25, 0x00	; 0
   1a46e:	29 e0       	ldi	r18, 0x09	; 9
   1a470:	31 e0       	ldi	r19, 0x01	; 1
   1a472:	82 9f       	mul	r24, r18
   1a474:	f0 01       	movw	r30, r0
   1a476:	83 9f       	mul	r24, r19
   1a478:	f0 0d       	add	r31, r0
   1a47a:	92 9f       	mul	r25, r18
   1a47c:	f0 0d       	add	r31, r0
   1a47e:	11 24       	eor	r1, r1
   1a480:	cf 01       	movw	r24, r30
   1a482:	8e 58       	subi	r24, 0x8E	; 142
   1a484:	92 46       	sbci	r25, 0x62	; 98
   1a486:	9a 83       	std	Y+2, r25	; 0x02
   1a488:	89 83       	std	Y+1, r24	; 0x01
	char* result = NULL;
	char command = 0;
	BOOL goodCommand = FALSE;
	uint8_t resultCode = 0;

	myCommand[MAX_FILE_SIZE_IN - 1] = 0;			//Make sure command string is NULL terminated
   1a48a:	ef 58       	subi	r30, 0x8F	; 143
   1a48c:	f1 46       	sbci	r31, 0x61	; 97
   1a48e:	10 82       	st	Z, r1

	memset(pTaskInfo->pBuf->tokenSeparatorList, 0, MAX_TOKEN_SEPARATORS);
   1a490:	14 96       	adiw	r26, 0x04	; 4
   1a492:	ec 91       	ld	r30, X
   1a494:	14 97       	sbiw	r26, 0x04	; 4
   1a496:	15 96       	adiw	r26, 0x05	; 5
   1a498:	fc 91       	ld	r31, X
   1a49a:	84 e1       	ldi	r24, 0x14	; 20
   1a49c:	df 01       	movw	r26, r30
   1a49e:	1d 92       	st	X+, r1
   1a4a0:	8a 95       	dec	r24
   1a4a2:	e9 f7       	brne	.-6      	; 0x1a49e <Empty_ParseConsole+0x54>
	strcat_P(pTaskInfo->pBuf->tokenSeparatorList, tokenListConsole);
   1a4a4:	f6 01       	movw	r30, r12
   1a4a6:	84 81       	ldd	r24, Z+4	; 0x04
   1a4a8:	95 81       	ldd	r25, Z+5	; 0x05
   1a4aa:	68 e3       	ldi	r22, 0x38	; 56
   1a4ac:	72 e0       	ldi	r23, 0x02	; 2
   1a4ae:	0e 94 b4 ef 	call	0x1df68	; 0x1df68 <strcat_P>

	result = strtok_r(myCommand, pTaskInfo->pBuf->tokenSeparatorList, &myCommand);
   1a4b2:	d6 01       	movw	r26, r12
   1a4b4:	14 96       	adiw	r26, 0x04	; 4
   1a4b6:	6d 91       	ld	r22, X+
   1a4b8:	7c 91       	ld	r23, X
   1a4ba:	15 97       	sbiw	r26, 0x05	; 5
   1a4bc:	89 81       	ldd	r24, Y+1	; 0x01
   1a4be:	9a 81       	ldd	r25, Y+2	; 0x02
   1a4c0:	5e 01       	movw	r10, r28
   1a4c2:	08 94       	sec
   1a4c4:	a1 1c       	adc	r10, r1
   1a4c6:	b1 1c       	adc	r11, r1
   1a4c8:	a5 01       	movw	r20, r10
   1a4ca:	0e 94 a0 f0 	call	0x1e140	; 0x1e140 <strtok_r>
   1a4ce:	8c 01       	movw	r16, r24


	resultCode = 1;				//No Command Received
	if(result != NULL)
   1a4d0:	00 97       	sbiw	r24, 0x00	; 0
   1a4d2:	11 f4       	brne	.+4      	; 0x1a4d8 <Empty_ParseConsole+0x8e>
   1a4d4:	81 e0       	ldi	r24, 0x01	; 1
   1a4d6:	21 c0       	rjmp	.+66     	; 0x1a51a <Empty_ParseConsole+0xd0>
	{
		resultCode = 2;			//Unknown Parser Code
		if(strncasecmp_P(result, emptyParserID, strlen_P(emptyParserID)) == 0)
   1a4d8:	81 e4       	ldi	r24, 0x41	; 65
   1a4da:	9b e1       	ldi	r25, 0x1B	; 27
   1a4dc:	0e 94 c6 ef 	call	0x1df8c	; 0x1df8c <strlen_P>
   1a4e0:	ac 01       	movw	r20, r24
   1a4e2:	c8 01       	movw	r24, r16
   1a4e4:	61 e4       	ldi	r22, 0x41	; 65
   1a4e6:	7b e1       	ldi	r23, 0x1B	; 27
   1a4e8:	0e 94 cf ef 	call	0x1df9e	; 0x1df9e <strncasecmp_P>
   1a4ec:	89 2b       	or	r24, r25
   1a4ee:	01 f5       	brne	.+64     	; 0x1a530 <Empty_ParseConsole+0xe6>
		{
			resultCode = 3;		//Unknown command
			command = getCommand(&myCommand, emptyCommands[0], LEN_COMMANDS, NUM_COMMANDS, emptyCmdList, pTaskInfo->pBuf->tokenSeparatorList);
   1a4f0:	f6 01       	movw	r30, r12
   1a4f2:	e4 80       	ldd	r14, Z+4	; 0x04
   1a4f4:	f5 80       	ldd	r15, Z+5	; 0x05
   1a4f6:	c5 01       	movw	r24, r10
   1a4f8:	6e e3       	ldi	r22, 0x3E	; 62
   1a4fa:	7b e1       	ldi	r23, 0x1B	; 27
   1a4fc:	43 e0       	ldi	r20, 0x03	; 3
   1a4fe:	21 e0       	ldi	r18, 0x01	; 1
   1a500:	07 e4       	ldi	r16, 0x47	; 71
   1a502:	1b e1       	ldi	r17, 0x1B	; 27
   1a504:	0e 94 1f 38 	call	0x703e	; 0x703e <getCommand>
   1a508:	68 2f       	mov	r22, r24

			if(command != 0)
   1a50a:	88 23       	and	r24, r24
   1a50c:	09 f0       	breq	.+2      	; 0x1a510 <Empty_ParseConsole+0xc6>
   1a50e:	84 c0       	rjmp	.+264    	; 0x1a618 <Empty_ParseConsole+0x1ce>
   1a510:	18 c0       	rjmp	.+48     	; 0x1a542 <Empty_ParseConsole+0xf8>
	if(goodCommand == TRUE)
		resultCode = Empty_ParseCommand(pTaskInfo, command, myCommand);

	if(resultCode != SUCCESS)
	{
		switch(resultCode)
   1a512:	82 30       	cpi	r24, 0x02	; 2
   1a514:	69 f0       	breq	.+26     	; 0x1a530 <Empty_ParseConsole+0xe6>
   1a516:	83 30       	cpi	r24, 0x03	; 3
   1a518:	a1 f0       	breq	.+40     	; 0x1a542 <Empty_ParseConsole+0xf8>
   1a51a:	d6 01       	movw	r26, r12
   1a51c:	14 96       	adiw	r26, 0x04	; 4
   1a51e:	ed 91       	ld	r30, X+
   1a520:	fc 91       	ld	r31, X
   1a522:	15 97       	sbiw	r26, 0x05	; 5
   1a524:	81 30       	cpi	r24, 0x01	; 1
   1a526:	b1 f4       	brne	.+44     	; 0x1a554 <Empty_ParseConsole+0x10a>
		{
			case 1:
				pTaskInfo->pBuf->responseInfo.status = CONSOLE_RESPONSE_EMPTY_CMD;
   1a528:	ea 5e       	subi	r30, 0xEA	; 234
   1a52a:	fe 4f       	sbci	r31, 0xFE	; 254
   1a52c:	8d e0       	ldi	r24, 0x0D	; 13
   1a52e:	15 c0       	rjmp	.+42     	; 0x1a55a <Empty_ParseConsole+0x110>
				break;
			case 2:
				pTaskInfo->pBuf->responseInfo.status = CONSOLE_RESPONSE_WRONG_DEVICE;
   1a530:	d6 01       	movw	r26, r12
   1a532:	14 96       	adiw	r26, 0x04	; 4
   1a534:	ed 91       	ld	r30, X+
   1a536:	fc 91       	ld	r31, X
   1a538:	15 97       	sbiw	r26, 0x05	; 5
   1a53a:	ea 5e       	subi	r30, 0xEA	; 234
   1a53c:	fe 4f       	sbci	r31, 0xFE	; 254
   1a53e:	8e e0       	ldi	r24, 0x0E	; 14
   1a540:	0c c0       	rjmp	.+24     	; 0x1a55a <Empty_ParseConsole+0x110>
				break;
			case 3:
				pTaskInfo->pBuf->responseInfo.status = CONSOLE_RESPONSE_UNKNOWN_CMD;
   1a542:	d6 01       	movw	r26, r12
   1a544:	14 96       	adiw	r26, 0x04	; 4
   1a546:	ed 91       	ld	r30, X+
   1a548:	fc 91       	ld	r31, X
   1a54a:	15 97       	sbiw	r26, 0x05	; 5
   1a54c:	ea 5e       	subi	r30, 0xEA	; 234
   1a54e:	fe 4f       	sbci	r31, 0xFE	; 254
   1a550:	8a e0       	ldi	r24, 0x0A	; 10
   1a552:	03 c0       	rjmp	.+6      	; 0x1a55a <Empty_ParseConsole+0x110>
				break;
			default:
				pTaskInfo->pBuf->responseInfo.status = CONSOLE_RESPONSE_CMD_FAILED;
   1a554:	ea 5e       	subi	r30, 0xEA	; 234
   1a556:	fe 4f       	sbci	r31, 0xFE	; 254
   1a558:	8f e0       	ldi	r24, 0x0F	; 15
   1a55a:	80 83       	st	Z, r24
				break;
		}
	}

	Empty_QueueConsoleResponse(pTaskInfo);
   1a55c:	c6 01       	movw	r24, r12
   1a55e:	0e 94 25 d1 	call	0x1a24a	; 0x1a24a <Empty_QueueConsoleResponse>

	memset(consoleIn[pTaskInfo->taskID].cmd, 0, MAX_FILE_SIZE_IN);
   1a562:	f6 01       	movw	r30, r12
   1a564:	80 81       	ld	r24, Z
   1a566:	90 e0       	ldi	r25, 0x00	; 0
   1a568:	29 e0       	ldi	r18, 0x09	; 9
   1a56a:	31 e0       	ldi	r19, 0x01	; 1
   1a56c:	ac 01       	movw	r20, r24
   1a56e:	42 9f       	mul	r20, r18
   1a570:	c0 01       	movw	r24, r0
   1a572:	43 9f       	mul	r20, r19
   1a574:	90 0d       	add	r25, r0
   1a576:	52 9f       	mul	r21, r18
   1a578:	90 0d       	add	r25, r0
   1a57a:	11 24       	eor	r1, r1
   1a57c:	8e 58       	subi	r24, 0x8E	; 142
   1a57e:	92 46       	sbci	r25, 0x62	; 98
   1a580:	fc 01       	movw	r30, r24
   1a582:	80 e0       	ldi	r24, 0x00	; 0
   1a584:	91 e0       	ldi	r25, 0x01	; 1
   1a586:	df 01       	movw	r26, r30
   1a588:	ac 01       	movw	r20, r24
   1a58a:	1d 92       	st	X+, r1
   1a58c:	41 50       	subi	r20, 0x01	; 1
   1a58e:	50 40       	sbci	r21, 0x00	; 0
   1a590:	e1 f7       	brne	.-8      	; 0x1a58a <Empty_ParseConsole+0x140>
	consoleIn[pTaskInfo->taskID].cmdSrcAddress = 0;
   1a592:	d6 01       	movw	r26, r12
   1a594:	8c 91       	ld	r24, X
   1a596:	90 e0       	ldi	r25, 0x00	; 0
   1a598:	82 9f       	mul	r24, r18
   1a59a:	f0 01       	movw	r30, r0
   1a59c:	83 9f       	mul	r24, r19
   1a59e:	f0 0d       	add	r31, r0
   1a5a0:	92 9f       	mul	r25, r18
   1a5a2:	f0 0d       	add	r31, r0
   1a5a4:	11 24       	eor	r1, r1
   1a5a6:	e7 59       	subi	r30, 0x97	; 151
   1a5a8:	f2 46       	sbci	r31, 0x62	; 98
   1a5aa:	11 82       	std	Z+1, r1	; 0x01
   1a5ac:	10 82       	st	Z, r1
	consoleIn[pTaskInfo->taskID].functionCode = 0;
   1a5ae:	8c 91       	ld	r24, X
   1a5b0:	90 e0       	ldi	r25, 0x00	; 0
   1a5b2:	82 9f       	mul	r24, r18
   1a5b4:	f0 01       	movw	r30, r0
   1a5b6:	83 9f       	mul	r24, r19
   1a5b8:	f0 0d       	add	r31, r0
   1a5ba:	92 9f       	mul	r25, r18
   1a5bc:	f0 0d       	add	r31, r0
   1a5be:	11 24       	eor	r1, r1
   1a5c0:	e7 59       	subi	r30, 0x97	; 151
   1a5c2:	f2 46       	sbci	r31, 0x62	; 98
   1a5c4:	12 82       	std	Z+2, r1	; 0x02
	consoleIn[pTaskInfo->taskID].cmdSize = 0;
   1a5c6:	8c 91       	ld	r24, X
   1a5c8:	90 e0       	ldi	r25, 0x00	; 0
   1a5ca:	82 9f       	mul	r24, r18
   1a5cc:	f0 01       	movw	r30, r0
   1a5ce:	83 9f       	mul	r24, r19
   1a5d0:	f0 0d       	add	r31, r0
   1a5d2:	92 9f       	mul	r25, r18
   1a5d4:	f0 0d       	add	r31, r0
   1a5d6:	11 24       	eor	r1, r1
   1a5d8:	e7 59       	subi	r30, 0x97	; 151
   1a5da:	f2 46       	sbci	r31, 0x62	; 98
   1a5dc:	14 82       	std	Z+4, r1	; 0x04
   1a5de:	13 82       	std	Z+3, r1	; 0x03
	consoleIn[pTaskInfo->taskID].id = 0;
   1a5e0:	8c 91       	ld	r24, X
   1a5e2:	90 e0       	ldi	r25, 0x00	; 0
   1a5e4:	82 9f       	mul	r24, r18
   1a5e6:	f0 01       	movw	r30, r0
   1a5e8:	83 9f       	mul	r24, r19
   1a5ea:	f0 0d       	add	r31, r0
   1a5ec:	92 9f       	mul	r25, r18
   1a5ee:	f0 0d       	add	r31, r0
   1a5f0:	11 24       	eor	r1, r1
   1a5f2:	e7 59       	subi	r30, 0x97	; 151
   1a5f4:	f2 46       	sbci	r31, 0x62	; 98
   1a5f6:	15 82       	std	Z+5, r1	; 0x05
   1a5f8:	16 82       	std	Z+6, r1	; 0x06
   1a5fa:	17 82       	std	Z+7, r1	; 0x07
   1a5fc:	10 86       	std	Z+8, r1	; 0x08

	return;

}
   1a5fe:	0f 90       	pop	r0
   1a600:	0f 90       	pop	r0
   1a602:	cf 91       	pop	r28
   1a604:	df 91       	pop	r29
   1a606:	1f 91       	pop	r17
   1a608:	0f 91       	pop	r16
   1a60a:	ff 90       	pop	r15
   1a60c:	ef 90       	pop	r14
   1a60e:	df 90       	pop	r13
   1a610:	cf 90       	pop	r12
   1a612:	bf 90       	pop	r11
   1a614:	af 90       	pop	r10
   1a616:	08 95       	ret
				goodCommand = TRUE;
		}
	}

	if(goodCommand == TRUE)
		resultCode = Empty_ParseCommand(pTaskInfo, command, myCommand);
   1a618:	49 81       	ldd	r20, Y+1	; 0x01
   1a61a:	5a 81       	ldd	r21, Y+2	; 0x02
   1a61c:	c6 01       	movw	r24, r12
   1a61e:	0e 94 0e d2 	call	0x1a41c	; 0x1a41c <Empty_ParseCommand>

	if(resultCode != SUCCESS)
   1a622:	8f 3f       	cpi	r24, 0xFF	; 255
   1a624:	09 f0       	breq	.+2      	; 0x1a628 <Empty_ParseConsole+0x1de>
   1a626:	75 cf       	rjmp	.-278    	; 0x1a512 <Empty_ParseConsole+0xc8>
   1a628:	99 cf       	rjmp	.-206    	; 0x1a55c <Empty_ParseConsole+0x112>

0001a62a <Empty_Init>:




uint8_t Empty_Init(PEMPTY_TASK pTaskInfo)
{
   1a62a:	ef 92       	push	r14
   1a62c:	0f 93       	push	r16
   1a62e:	cf 93       	push	r28
   1a630:	df 93       	push	r29
   1a632:	ec 01       	movw	r28, r24
	if(pTaskInfo->portNum == USER_PORT_2)
		baseAddr = EEPROM_PM2_START;
	if(pTaskInfo->portNum == USER_PORT_3)
		baseAddr = EEPROM_PM3_START;

	if(pTaskInfo->pBuf != NULL)
   1a634:	ec 81       	ldd	r30, Y+4	; 0x04
   1a636:	fd 81       	ldd	r31, Y+5	; 0x05
   1a638:	30 97       	sbiw	r30, 0x00	; 0
   1a63a:	41 f0       	breq	.+16     	; 0x1a64c <Empty_Init+0x22>
		memset(pTaskInfo->pBuf, 0, sizeof(EMPTY_BUFFER));
   1a63c:	82 e2       	ldi	r24, 0x22	; 34
   1a63e:	91 e0       	ldi	r25, 0x01	; 1
   1a640:	df 01       	movw	r26, r30
   1a642:	9c 01       	movw	r18, r24
   1a644:	1d 92       	st	X+, r1
   1a646:	21 50       	subi	r18, 0x01	; 1
   1a648:	30 40       	sbci	r19, 0x00	; 0
   1a64a:	e1 f7       	brne	.-8      	; 0x1a644 <Empty_Init+0x1a>

	pTaskInfo->eepromAddress = 0;
   1a64c:	1b 82       	std	Y+3, r1	; 0x03
   1a64e:	1a 82       	std	Y+2, r1	; 0x02

	OSuartInitPort(pTaskInfo->portNum, 9600, UART_MODE_EIGHT_DATA_BITS, UART_MODE_ONE_STOP_BIT, UART_MODE_NO_PARITY);
   1a650:	89 81       	ldd	r24, Y+1	; 0x01
   1a652:	40 e8       	ldi	r20, 0x80	; 128
   1a654:	55 e2       	ldi	r21, 0x25	; 37
   1a656:	60 e0       	ldi	r22, 0x00	; 0
   1a658:	70 e0       	ldi	r23, 0x00	; 0
   1a65a:	26 e0       	ldi	r18, 0x06	; 6
   1a65c:	00 e0       	ldi	r16, 0x00	; 0
   1a65e:	ee 24       	eor	r14, r14
   1a660:	0e 94 38 33 	call	0x6670	; 0x6670 <OSuartInitPort>

	EnablePIBModule(pTaskInfo->portNum, FALSE, FALSE);
   1a664:	89 81       	ldd	r24, Y+1	; 0x01
   1a666:	60 e0       	ldi	r22, 0x00	; 0
   1a668:	40 e0       	ldi	r20, 0x00	; 0
   1a66a:	0e 94 a2 38 	call	0x7144	; 0x7144 <EnablePIBModule>

	return retval;
}
   1a66e:	8f ef       	ldi	r24, 0xFF	; 255
   1a670:	df 91       	pop	r29
   1a672:	cf 91       	pop	r28
   1a674:	0f 91       	pop	r16
   1a676:	ef 90       	pop	r14
   1a678:	08 95       	ret

0001a67a <SerialPortPassThroughPower>:
	return;
}

void SerialPortPassThroughPower(uint8_t port)
{
	readyForSerialPassThru = TRUE;
   1a67a:	8f ef       	ldi	r24, 0xFF	; 255
   1a67c:	80 93 9e a1 	sts	0xA19E, r24

	while(1)
	{
		OSTimeDlyHMSM(1,0,0,0);
   1a680:	81 e0       	ldi	r24, 0x01	; 1
   1a682:	60 e0       	ldi	r22, 0x00	; 0
   1a684:	40 e0       	ldi	r20, 0x00	; 0
   1a686:	20 e0       	ldi	r18, 0x00	; 0
   1a688:	30 e0       	ldi	r19, 0x00	; 0
   1a68a:	0e 94 2a 2e 	call	0x5c54	; 0x5c54 <OSTimeDlyHMSM>
   1a68e:	f8 cf       	rjmp	.-16     	; 0x1a680 <SerialPortPassThroughPower+0x6>

0001a690 <Power_QueueConsoleResponse>:
	return retval;

}

void Power_QueueConsoleResponse(PPOWER_TASK pTaskInfo)
{
   1a690:	ef 92       	push	r14
   1a692:	ff 92       	push	r15
   1a694:	0f 93       	push	r16
   1a696:	1f 93       	push	r17
   1a698:	df 93       	push	r29
   1a69a:	cf 93       	push	r28
   1a69c:	0f 92       	push	r0
   1a69e:	cd b7       	in	r28, 0x3d	; 61
   1a6a0:	de b7       	in	r29, 0x3e	; 62
   1a6a2:	7c 01       	movw	r14, r24
	PCONSOLE_ACK_XMIT_2 pReport;
	uint8_t err = 0;
   1a6a4:	19 82       	std	Y+1, r1	; 0x01
	char* pData;

	OSMutexPend(pMutexFloatQueue, INFINITE, &err);
   1a6a6:	80 91 51 19 	lds	r24, 0x1951
   1a6aa:	90 91 52 19 	lds	r25, 0x1952
   1a6ae:	60 e0       	ldi	r22, 0x00	; 0
   1a6b0:	70 e0       	ldi	r23, 0x00	; 0
   1a6b2:	ae 01       	movw	r20, r28
   1a6b4:	4f 5f       	subi	r20, 0xFF	; 255
   1a6b6:	5f 4f       	sbci	r21, 0xFF	; 255
   1a6b8:	0e 94 c2 28 	call	0x5184	; 0x5184 <OSMutexPend>

	pReport = (PCONSOLE_ACK_XMIT_2)&(txFloatAck[headFloatAckTx]);
   1a6bc:	80 91 95 07 	lds	r24, 0x0795
   1a6c0:	90 e0       	ldi	r25, 0x00	; 0
   1a6c2:	26 e3       	ldi	r18, 0x36	; 54
   1a6c4:	31 e0       	ldi	r19, 0x01	; 1
   1a6c6:	82 9f       	mul	r24, r18
   1a6c8:	80 01       	movw	r16, r0
   1a6ca:	83 9f       	mul	r24, r19
   1a6cc:	10 0d       	add	r17, r0
   1a6ce:	92 9f       	mul	r25, r18
   1a6d0:	10 0d       	add	r17, r0
   1a6d2:	11 24       	eor	r1, r1
   1a6d4:	03 5f       	subi	r16, 0xF3	; 243
   1a6d6:	1c 44       	sbci	r17, 0x4C	; 76
	pData = (char*)pReport;

	pReport->comm.headers.destination = FLOAT_TASK_FORWARD_MESSAGE;		//pTaskInfo->pBuf->responseInfo.source;
   1a6d8:	80 e2       	ldi	r24, 0x20	; 32
   1a6da:	90 e0       	ldi	r25, 0x00	; 0
   1a6dc:	d8 01       	movw	r26, r16
   1a6de:	13 96       	adiw	r26, 0x03	; 3
   1a6e0:	9c 93       	st	X, r25
   1a6e2:	8e 93       	st	-X, r24
   1a6e4:	12 97       	sbiw	r26, 0x02	; 2

	pReport->comm.fwdInfo.msgFormat = MSG_FORMAT_SHIP_TO_SHORE;
   1a6e6:	82 e0       	ldi	r24, 0x02	; 2
   1a6e8:	1c 96       	adiw	r26, 0x0c	; 12
   1a6ea:	8c 93       	st	X, r24
	pReport->comm.fwdInfo.destination = pTaskInfo->pBuf->responseInfo.source;
   1a6ec:	d7 01       	movw	r26, r14
   1a6ee:	14 96       	adiw	r26, 0x04	; 4
   1a6f0:	ed 91       	ld	r30, X+
   1a6f2:	fc 91       	ld	r31, X
   1a6f4:	15 97       	sbiw	r26, 0x05	; 5
   1a6f6:	ea 5e       	subi	r30, 0xEA	; 234
   1a6f8:	fe 4f       	sbci	r31, 0xFE	; 254
   1a6fa:	81 91       	ld	r24, Z+
   1a6fc:	91 91       	ld	r25, Z+
   1a6fe:	d8 01       	movw	r26, r16
   1a700:	1e 96       	adiw	r26, 0x0e	; 14
   1a702:	9c 93       	st	X, r25
   1a704:	8e 93       	st	-X, r24
   1a706:	1d 97       	sbiw	r26, 0x0d	; 13
	pReport->comm.fwdInfo.source = mainTaskAddress | pTaskInfo->taskID;
   1a708:	d7 01       	movw	r26, r14
   1a70a:	8c 91       	ld	r24, X
   1a70c:	90 e0       	ldi	r25, 0x00	; 0
   1a70e:	20 91 e4 03 	lds	r18, 0x03E4
   1a712:	30 91 e5 03 	lds	r19, 0x03E5
   1a716:	82 2b       	or	r24, r18
   1a718:	93 2b       	or	r25, r19
   1a71a:	d8 01       	movw	r26, r16
   1a71c:	50 96       	adiw	r26, 0x10	; 16
   1a71e:	9c 93       	st	X, r25
   1a720:	8e 93       	st	-X, r24
   1a722:	1f 97       	sbiw	r26, 0x0f	; 15

	if(pTaskInfo->pBuf->responseInfo.status < CONSOLE_RESPONSE_UNKNOWN_CMD)
   1a724:	20 81       	ld	r18, Z
   1a726:	e8 51       	subi	r30, 0x18	; 24
   1a728:	f1 40       	sbci	r31, 0x01	; 1
   1a72a:	2a 30       	cpi	r18, 0x0A	; 10
   1a72c:	20 f5       	brcc	.+72     	; 0x1a776 <Power_QueueConsoleResponse+0xe6>
	{
		pReport->comm.headers.length = sizeof(PIB_DATA_FORWARD_MESSAGE) + sizeof(CONSOLE_ACK) + pTaskInfo->pBuf->responseInfo.length + CRC16_SIZE;
   1a72e:	e6 5e       	subi	r30, 0xE6	; 230
   1a730:	fe 4f       	sbci	r31, 0xFE	; 254
   1a732:	40 81       	ld	r20, Z
   1a734:	50 e0       	ldi	r21, 0x00	; 0
   1a736:	42 5e       	subi	r20, 0xE2	; 226
   1a738:	5f 4f       	sbci	r21, 0xFF	; 255
   1a73a:	11 96       	adiw	r26, 0x01	; 1
   1a73c:	5c 93       	st	X, r21
   1a73e:	4e 93       	st	-X, r20
   1a740:	4e 51       	subi	r20, 0x1E	; 30
   1a742:	50 40       	sbci	r21, 0x00	; 0

		pReport->comm.iridiumInfo.headerICD.type = ACK_CONSOLE_DATA;
   1a744:	8d e3       	ldi	r24, 0x3D	; 61
   1a746:	51 96       	adiw	r26, 0x11	; 17
   1a748:	8c 93       	st	X, r24
   1a74a:	51 97       	sbiw	r26, 0x11	; 17

		pReport->consoleAck.len = pTaskInfo->pBuf->responseInfo.length;
   1a74c:	5b 96       	adiw	r26, 0x1b	; 27
   1a74e:	5c 93       	st	X, r21
   1a750:	4e 93       	st	-X, r20
   1a752:	5a 97       	sbiw	r26, 0x1a	; 26
		pReport->consoleAck.disposition = pTaskInfo->pBuf->responseInfo.status;
   1a754:	59 96       	adiw	r26, 0x19	; 25
   1a756:	2c 93       	st	X, r18
   1a758:	59 97       	sbiw	r26, 0x19	; 25
		pReport->consoleAck.format = pTaskInfo->pBuf->responseInfo.format;
   1a75a:	82 91       	ld	r24, -Z
   1a75c:	58 96       	adiw	r26, 0x18	; 24
   1a75e:	8c 93       	st	X, r24
		pData = pData + sizeof(PIB_DATA_FORWARD_MESSAGE) + sizeof(CONSOLE_ACK);
		memcpy(pData, pTaskInfo->pBuf->consoleResponse, pTaskInfo->pBuf->responseInfo.length);
   1a760:	98 01       	movw	r18, r16
   1a762:	24 5e       	subi	r18, 0xE4	; 228
   1a764:	3f 4f       	sbci	r19, 0xFF	; 255
   1a766:	e3 50       	subi	r30, 0x03	; 3
   1a768:	f1 40       	sbci	r31, 0x01	; 1
   1a76a:	c9 01       	movw	r24, r18
   1a76c:	bf 01       	movw	r22, r30
   1a76e:	50 e0       	ldi	r21, 0x00	; 0
   1a770:	0e 94 1c f0 	call	0x1e038	; 0x1e038 <memcpy>
   1a774:	0c c0       	rjmp	.+24     	; 0x1a78e <Power_QueueConsoleResponse+0xfe>
		//dbgMsg[pTaskInfo->pBuf->responseInfo.length] = 0;
		//SEND_MSG;
	}
	else
	{
		pReport->comm.headers.length = sizeof(PIB_DATA_FORWARD_MESSAGE) + sizeof(CONSOLE_NACK) + CRC16_SIZE;
   1a776:	8d e1       	ldi	r24, 0x1D	; 29
   1a778:	90 e0       	ldi	r25, 0x00	; 0
   1a77a:	f8 01       	movw	r30, r16
   1a77c:	91 83       	std	Z+1, r25	; 0x01
   1a77e:	80 83       	st	Z, r24
		pReport->comm.iridiumInfo.headerICD.type = NACK_CONSOLE_DATA;
   1a780:	86 e2       	ldi	r24, 0x26	; 38
   1a782:	81 8b       	std	Z+17, r24	; 0x11
		pReport->consoleNack.numDispositions = 1;
   1a784:	81 e0       	ldi	r24, 0x01	; 1
   1a786:	90 e0       	ldi	r25, 0x00	; 0
   1a788:	91 8f       	std	Z+25, r25	; 0x19
   1a78a:	80 8f       	std	Z+24, r24	; 0x18
		pReport->consoleNack.disposition[0] = pTaskInfo->pBuf->responseInfo.status;
   1a78c:	22 8f       	std	Z+26, r18	; 0x1a
	}

	pReport->comm.iridiumInfo.headerICD.packetID = pTaskInfo->pBuf->responseInfo.id;
   1a78e:	d7 01       	movw	r26, r14
   1a790:	14 96       	adiw	r26, 0x04	; 4
   1a792:	ed 91       	ld	r30, X+
   1a794:	fc 91       	ld	r31, X
   1a796:	15 97       	sbiw	r26, 0x05	; 5
   1a798:	e5 5e       	subi	r30, 0xE5	; 229
   1a79a:	fe 4f       	sbci	r31, 0xFE	; 254
   1a79c:	80 81       	ld	r24, Z
   1a79e:	91 81       	ldd	r25, Z+1	; 0x01
   1a7a0:	a2 81       	ldd	r26, Z+2	; 0x02
   1a7a2:	b3 81       	ldd	r27, Z+3	; 0x03
   1a7a4:	f8 01       	movw	r30, r16
   1a7a6:	82 8b       	std	Z+18, r24	; 0x12
   1a7a8:	93 8b       	std	Z+19, r25	; 0x13
   1a7aa:	a4 8b       	std	Z+20, r26	; 0x14
   1a7ac:	b5 8b       	std	Z+21, r27	; 0x15
	pReport->comm.iridiumInfo.headerICD.size = pReport->comm.headers.length - sizeof(PIB_DATA_FORWARD_MESSAGE) - CRC16_SIZE;
   1a7ae:	80 81       	ld	r24, Z
   1a7b0:	91 81       	ldd	r25, Z+1	; 0x01
   1a7b2:	4a 97       	sbiw	r24, 0x1a	; 26
   1a7b4:	97 8b       	std	Z+23, r25	; 0x17
   1a7b6:	86 8b       	std	Z+22, r24	; 0x16


	(headFloatAckTx < MAX_ACK_BUFFERS - 1) ? (headFloatAckTx++) : (headFloatAckTx = 0);
   1a7b8:	80 91 95 07 	lds	r24, 0x0795
   1a7bc:	83 30       	cpi	r24, 0x03	; 3
   1a7be:	20 f4       	brcc	.+8      	; 0x1a7c8 <Power_QueueConsoleResponse+0x138>
   1a7c0:	8f 5f       	subi	r24, 0xFF	; 255
   1a7c2:	80 93 95 07 	sts	0x0795, r24
   1a7c6:	02 c0       	rjmp	.+4      	; 0x1a7cc <Power_QueueConsoleResponse+0x13c>
   1a7c8:	10 92 95 07 	sts	0x0795, r1

	if(headFloatAckTx == tailFloatAckTx)
   1a7cc:	90 91 95 07 	lds	r25, 0x0795
   1a7d0:	80 91 96 07 	lds	r24, 0x0796
   1a7d4:	98 17       	cp	r25, r24
   1a7d6:	41 f4       	brne	.+16     	; 0x1a7e8 <Power_QueueConsoleResponse+0x158>
	{
		(tailFloatAckTx < MAX_ACK_BUFFERS - 1) ? (tailFloatAckTx++) : (tailFloatAckTx = 0);
   1a7d8:	93 30       	cpi	r25, 0x03	; 3
   1a7da:	20 f4       	brcc	.+8      	; 0x1a7e4 <Power_QueueConsoleResponse+0x154>
   1a7dc:	9f 5f       	subi	r25, 0xFF	; 255
   1a7de:	90 93 96 07 	sts	0x0796, r25
   1a7e2:	02 c0       	rjmp	.+4      	; 0x1a7e8 <Power_QueueConsoleResponse+0x158>
   1a7e4:	10 92 96 07 	sts	0x0796, r1
	}

	OSMutexPost(pMutexFloatQueue);
   1a7e8:	80 91 51 19 	lds	r24, 0x1951
   1a7ec:	90 91 52 19 	lds	r25, 0x1952
   1a7f0:	0e 94 36 27 	call	0x4e6c	; 0x4e6c <OSMutexPost>

	return;
}
   1a7f4:	0f 90       	pop	r0
   1a7f6:	cf 91       	pop	r28
   1a7f8:	df 91       	pop	r29
   1a7fa:	1f 91       	pop	r17
   1a7fc:	0f 91       	pop	r16
   1a7fe:	ff 90       	pop	r15
   1a800:	ef 90       	pop	r14
   1a802:	08 95       	ret

0001a804 <Power_Id>:
	return retval;

}

uint8_t Power_Id(PPOWER_TASK pTaskInfo)
{
   1a804:	ef 92       	push	r14
   1a806:	ff 92       	push	r15
   1a808:	0f 93       	push	r16
   1a80a:	1f 93       	push	r17
   1a80c:	df 93       	push	r29
   1a80e:	cf 93       	push	r28
   1a810:	cd b7       	in	r28, 0x3d	; 61
   1a812:	de b7       	in	r29, 0x3e	; 62
   1a814:	64 97       	sbiw	r28, 0x14	; 20
   1a816:	0f b6       	in	r0, 0x3f	; 63
   1a818:	f8 94       	cli
   1a81a:	de bf       	out	0x3e, r29	; 62
   1a81c:	0f be       	out	0x3f, r0	; 63
   1a81e:	cd bf       	out	0x3d, r28	; 61
   1a820:	7c 01       	movw	r14, r24
	uint8_t retval = SUCCESS;

	char tempBuf[20];

	memset((char*)pTaskInfo->pBuf->consoleResponse, 0, 256);
   1a822:	dc 01       	movw	r26, r24
   1a824:	14 96       	adiw	r26, 0x04	; 4
   1a826:	8d 91       	ld	r24, X+
   1a828:	9c 91       	ld	r25, X
   1a82a:	15 97       	sbiw	r26, 0x05	; 5
   1a82c:	46 96       	adiw	r24, 0x16	; 22
   1a82e:	fc 01       	movw	r30, r24
   1a830:	80 e0       	ldi	r24, 0x00	; 0
   1a832:	91 e0       	ldi	r25, 0x01	; 1
   1a834:	df 01       	movw	r26, r30
   1a836:	9c 01       	movw	r18, r24
   1a838:	1d 92       	st	X+, r1
   1a83a:	21 50       	subi	r18, 0x01	; 1
   1a83c:	30 40       	sbci	r19, 0x00	; 0
   1a83e:	e1 f7       	brne	.-8      	; 0x1a838 <Power_Id+0x34>
	sprintf_P(pTaskInfo->pBuf->consoleResponse, PSTR("Power is %s: "), pTaskInfo->pBuf->powerOn==TRUE ? "ON":"OFF");
   1a840:	f7 01       	movw	r30, r14
   1a842:	a4 81       	ldd	r26, Z+4	; 0x04
   1a844:	b5 81       	ldd	r27, Z+5	; 0x05
   1a846:	8c 91       	ld	r24, X
   1a848:	8f 3f       	cpi	r24, 0xFF	; 255
   1a84a:	19 f0       	breq	.+6      	; 0x1a852 <Power_Id+0x4e>
   1a84c:	22 e3       	ldi	r18, 0x32	; 50
   1a84e:	35 e0       	ldi	r19, 0x05	; 5
   1a850:	02 c0       	rjmp	.+4      	; 0x1a856 <Power_Id+0x52>
   1a852:	26 e3       	ldi	r18, 0x36	; 54
   1a854:	35 e0       	ldi	r19, 0x05	; 5
   1a856:	00 d0       	rcall	.+0      	; 0x1a858 <Power_Id+0x54>
   1a858:	00 d0       	rcall	.+0      	; 0x1a85a <Power_Id+0x56>
   1a85a:	4d b7       	in	r20, 0x3d	; 61
   1a85c:	5e b7       	in	r21, 0x3e	; 62
   1a85e:	4f 5f       	subi	r20, 0xFF	; 255
   1a860:	5f 4f       	sbci	r21, 0xFF	; 255
   1a862:	56 96       	adiw	r26, 0x16	; 22
   1a864:	ed b7       	in	r30, 0x3d	; 61
   1a866:	fe b7       	in	r31, 0x3e	; 62
   1a868:	b2 83       	std	Z+2, r27	; 0x02
   1a86a:	a1 83       	std	Z+1, r26	; 0x01
   1a86c:	84 ec       	ldi	r24, 0xC4	; 196
   1a86e:	9b e1       	ldi	r25, 0x1B	; 27
   1a870:	da 01       	movw	r26, r20
   1a872:	13 96       	adiw	r26, 0x03	; 3
   1a874:	9c 93       	st	X, r25
   1a876:	8e 93       	st	-X, r24
   1a878:	12 97       	sbiw	r26, 0x02	; 2
   1a87a:	15 96       	adiw	r26, 0x05	; 5
   1a87c:	3c 93       	st	X, r19
   1a87e:	2e 93       	st	-X, r18
   1a880:	14 97       	sbiw	r26, 0x04	; 4
   1a882:	0e 94 51 f1 	call	0x1e2a2	; 0x1e2a2 <sprintf_P>
	memset(tempBuf, 0, 20);
   1a886:	fe 01       	movw	r30, r28
   1a888:	31 96       	adiw	r30, 0x01	; 1
   1a88a:	84 e1       	ldi	r24, 0x14	; 20
   1a88c:	df 01       	movw	r26, r30
   1a88e:	1d 92       	st	X+, r1
   1a890:	8a 95       	dec	r24
   1a892:	e9 f7       	brne	.-6      	; 0x1a88e <Power_Id+0x8a>
	sprintf_P(tempBuf, PSTR("AutoRun is %s"), pTaskInfo->pBuf->initState==AUTORUN_ON ? "ON":"OFF");
   1a894:	d7 01       	movw	r26, r14
   1a896:	14 96       	adiw	r26, 0x04	; 4
   1a898:	ed 91       	ld	r30, X+
   1a89a:	fc 91       	ld	r31, X
   1a89c:	15 97       	sbiw	r26, 0x05	; 5
   1a89e:	2d b7       	in	r18, 0x3d	; 61
   1a8a0:	3e b7       	in	r19, 0x3e	; 62
   1a8a2:	2a 5f       	subi	r18, 0xFA	; 250
   1a8a4:	3f 4f       	sbci	r19, 0xFF	; 255
   1a8a6:	0f b6       	in	r0, 0x3f	; 63
   1a8a8:	f8 94       	cli
   1a8aa:	3e bf       	out	0x3e, r19	; 62
   1a8ac:	0f be       	out	0x3f, r0	; 63
   1a8ae:	2d bf       	out	0x3d, r18	; 61
   1a8b0:	81 81       	ldd	r24, Z+1	; 0x01
   1a8b2:	81 30       	cpi	r24, 0x01	; 1
   1a8b4:	19 f0       	breq	.+6      	; 0x1a8bc <Power_Id+0xb8>
   1a8b6:	22 e3       	ldi	r18, 0x32	; 50
   1a8b8:	35 e0       	ldi	r19, 0x05	; 5
   1a8ba:	02 c0       	rjmp	.+4      	; 0x1a8c0 <Power_Id+0xbc>
   1a8bc:	26 e3       	ldi	r18, 0x36	; 54
   1a8be:	35 e0       	ldi	r19, 0x05	; 5
   1a8c0:	00 d0       	rcall	.+0      	; 0x1a8c2 <Power_Id+0xbe>
   1a8c2:	00 d0       	rcall	.+0      	; 0x1a8c4 <Power_Id+0xc0>
   1a8c4:	ed b7       	in	r30, 0x3d	; 61
   1a8c6:	fe b7       	in	r31, 0x3e	; 62
   1a8c8:	31 96       	adiw	r30, 0x01	; 1
   1a8ca:	8e 01       	movw	r16, r28
   1a8cc:	0f 5f       	subi	r16, 0xFF	; 255
   1a8ce:	1f 4f       	sbci	r17, 0xFF	; 255
   1a8d0:	ad b7       	in	r26, 0x3d	; 61
   1a8d2:	be b7       	in	r27, 0x3e	; 62
   1a8d4:	12 96       	adiw	r26, 0x02	; 2
   1a8d6:	1c 93       	st	X, r17
   1a8d8:	0e 93       	st	-X, r16
   1a8da:	11 97       	sbiw	r26, 0x01	; 1
   1a8dc:	86 eb       	ldi	r24, 0xB6	; 182
   1a8de:	9b e1       	ldi	r25, 0x1B	; 27
   1a8e0:	93 83       	std	Z+3, r25	; 0x03
   1a8e2:	82 83       	std	Z+2, r24	; 0x02
   1a8e4:	35 83       	std	Z+5, r19	; 0x05
   1a8e6:	24 83       	std	Z+4, r18	; 0x04
   1a8e8:	0e 94 51 f1 	call	0x1e2a2	; 0x1e2a2 <sprintf_P>
	strcat(pTaskInfo->pBuf->consoleResponse, tempBuf);
   1a8ec:	ed b7       	in	r30, 0x3d	; 61
   1a8ee:	fe b7       	in	r31, 0x3e	; 62
   1a8f0:	36 96       	adiw	r30, 0x06	; 6
   1a8f2:	0f b6       	in	r0, 0x3f	; 63
   1a8f4:	f8 94       	cli
   1a8f6:	fe bf       	out	0x3e, r31	; 62
   1a8f8:	0f be       	out	0x3f, r0	; 63
   1a8fa:	ed bf       	out	0x3d, r30	; 61
   1a8fc:	d7 01       	movw	r26, r14
   1a8fe:	14 96       	adiw	r26, 0x04	; 4
   1a900:	8d 91       	ld	r24, X+
   1a902:	9c 91       	ld	r25, X
   1a904:	15 97       	sbiw	r26, 0x05	; 5
   1a906:	46 96       	adiw	r24, 0x16	; 22
   1a908:	b8 01       	movw	r22, r16
   1a90a:	0e 94 2c f0 	call	0x1e058	; 0x1e058 <strcat>
	pTaskInfo->pBuf->responseInfo.length = strlen(pTaskInfo->pBuf->consoleResponse);
   1a90e:	f7 01       	movw	r30, r14
   1a910:	a4 81       	ldd	r26, Z+4	; 0x04
   1a912:	b5 81       	ldd	r27, Z+5	; 0x05
   1a914:	cd 01       	movw	r24, r26
   1a916:	46 96       	adiw	r24, 0x16	; 22
   1a918:	fc 01       	movw	r30, r24
   1a91a:	01 90       	ld	r0, Z+
   1a91c:	00 20       	and	r0, r0
   1a91e:	e9 f7       	brne	.-6      	; 0x1a91a <Power_Id+0x116>
   1a920:	31 97       	sbiw	r30, 0x01	; 1
   1a922:	e8 1b       	sub	r30, r24
   1a924:	f9 0b       	sbc	r31, r25
   1a926:	a6 5e       	subi	r26, 0xE6	; 230
   1a928:	be 4f       	sbci	r27, 0xFE	; 254
   1a92a:	ec 93       	st	X, r30

	return retval;

}
   1a92c:	8f ef       	ldi	r24, 0xFF	; 255
   1a92e:	64 96       	adiw	r28, 0x14	; 20
   1a930:	0f b6       	in	r0, 0x3f	; 63
   1a932:	f8 94       	cli
   1a934:	de bf       	out	0x3e, r29	; 62
   1a936:	0f be       	out	0x3f, r0	; 63
   1a938:	cd bf       	out	0x3d, r28	; 61
   1a93a:	cf 91       	pop	r28
   1a93c:	df 91       	pop	r29
   1a93e:	1f 91       	pop	r17
   1a940:	0f 91       	pop	r16
   1a942:	ff 90       	pop	r15
   1a944:	ef 90       	pop	r14
   1a946:	08 95       	ret

0001a948 <Power_ParseCommand>:
	return;

}

uint8_t Power_ParseCommand(PPOWER_TASK pTaskInfo, char command, char* cmdParams)
{
   1a948:	0f 93       	push	r16
   1a94a:	1f 93       	push	r17
   1a94c:	df 93       	push	r29
   1a94e:	cf 93       	push	r28
   1a950:	0f 92       	push	r0
   1a952:	0f 92       	push	r0
   1a954:	cd b7       	in	r28, 0x3d	; 61
   1a956:	de b7       	in	r29, 0x3e	; 62
   1a958:	8c 01       	movw	r16, r24
   1a95a:	5a 83       	std	Y+2, r21	; 0x02
   1a95c:	49 83       	std	Y+1, r20	; 0x01
	uint8_t retval = FAIL;

	switch(command)
   1a95e:	68 35       	cpi	r22, 0x58	; 88
   1a960:	09 f4       	brne	.+2      	; 0x1a964 <Power_ParseCommand+0x1c>
   1a962:	60 c0       	rjmp	.+192    	; 0x1aa24 <Power_ParseCommand+0xdc>
   1a964:	69 35       	cpi	r22, 0x59	; 89
   1a966:	98 f4       	brcc	.+38     	; 0x1a98e <Power_ParseCommand+0x46>
   1a968:	69 34       	cpi	r22, 0x49	; 73
   1a96a:	31 f1       	breq	.+76     	; 0x1a9b8 <Power_ParseCommand+0x70>
   1a96c:	6a 34       	cpi	r22, 0x4A	; 74
   1a96e:	38 f4       	brcc	.+14     	; 0x1a97e <Power_ParseCommand+0x36>
   1a970:	61 34       	cpi	r22, 0x41	; 65
   1a972:	09 f4       	brne	.+2      	; 0x1a976 <Power_ParseCommand+0x2e>
   1a974:	a6 c0       	rjmp	.+332    	; 0x1aac2 <Power_ParseCommand+0x17a>
   1a976:	66 34       	cpi	r22, 0x46	; 70
   1a978:	09 f0       	breq	.+2      	; 0x1a97c <Power_ParseCommand+0x34>
   1a97a:	28 c1       	rjmp	.+592    	; 0x1abcc <Power_ParseCommand+0x284>
   1a97c:	53 c0       	rjmp	.+166    	; 0x1aa24 <Power_ParseCommand+0xdc>
   1a97e:	62 35       	cpi	r22, 0x52	; 82
   1a980:	49 f1       	breq	.+82     	; 0x1a9d4 <Power_ParseCommand+0x8c>
   1a982:	63 35       	cpi	r22, 0x53	; 83
   1a984:	c9 f0       	breq	.+50     	; 0x1a9b8 <Power_ParseCommand+0x70>
   1a986:	6f 34       	cpi	r22, 0x4F	; 79
   1a988:	09 f0       	breq	.+2      	; 0x1a98c <Power_ParseCommand+0x44>
   1a98a:	20 c1       	rjmp	.+576    	; 0x1abcc <Power_ParseCommand+0x284>
   1a98c:	23 c0       	rjmp	.+70     	; 0x1a9d4 <Power_ParseCommand+0x8c>
   1a98e:	6f 36       	cpi	r22, 0x6F	; 111
   1a990:	09 f1       	breq	.+66     	; 0x1a9d4 <Power_ParseCommand+0x8c>
   1a992:	60 37       	cpi	r22, 0x70	; 112
   1a994:	48 f4       	brcc	.+18     	; 0x1a9a8 <Power_ParseCommand+0x60>
   1a996:	66 36       	cpi	r22, 0x66	; 102
   1a998:	09 f4       	brne	.+2      	; 0x1a99c <Power_ParseCommand+0x54>
   1a99a:	44 c0       	rjmp	.+136    	; 0x1aa24 <Power_ParseCommand+0xdc>
   1a99c:	69 36       	cpi	r22, 0x69	; 105
   1a99e:	61 f0       	breq	.+24     	; 0x1a9b8 <Power_ParseCommand+0x70>
   1a9a0:	61 36       	cpi	r22, 0x61	; 97
   1a9a2:	09 f0       	breq	.+2      	; 0x1a9a6 <Power_ParseCommand+0x5e>
   1a9a4:	13 c1       	rjmp	.+550    	; 0x1abcc <Power_ParseCommand+0x284>
   1a9a6:	8d c0       	rjmp	.+282    	; 0x1aac2 <Power_ParseCommand+0x17a>
   1a9a8:	63 37       	cpi	r22, 0x73	; 115
   1a9aa:	31 f0       	breq	.+12     	; 0x1a9b8 <Power_ParseCommand+0x70>
   1a9ac:	68 37       	cpi	r22, 0x78	; 120
   1a9ae:	d1 f1       	breq	.+116    	; 0x1aa24 <Power_ParseCommand+0xdc>
   1a9b0:	62 37       	cpi	r22, 0x72	; 114
   1a9b2:	09 f0       	breq	.+2      	; 0x1a9b6 <Power_ParseCommand+0x6e>
   1a9b4:	0b c1       	rjmp	.+534    	; 0x1abcc <Power_ParseCommand+0x284>
   1a9b6:	0e c0       	rjmp	.+28     	; 0x1a9d4 <Power_ParseCommand+0x8c>
	{
		case 'i':
		case 'I':
		case 's':
		case 'S':
			Power_Id(pTaskInfo);
   1a9b8:	c8 01       	movw	r24, r16
   1a9ba:	0e 94 02 d4 	call	0x1a804	; 0x1a804 <Power_Id>
			pTaskInfo->pBuf->responseInfo.status = CONSOLE_RESPONSE_OK;
   1a9be:	d8 01       	movw	r26, r16
   1a9c0:	14 96       	adiw	r26, 0x04	; 4
   1a9c2:	ed 91       	ld	r30, X+
   1a9c4:	fc 91       	ld	r31, X
   1a9c6:	15 97       	sbiw	r26, 0x05	; 5
   1a9c8:	e8 5e       	subi	r30, 0xE8	; 232
   1a9ca:	fe 4f       	sbci	r31, 0xFE	; 254
   1a9cc:	81 e0       	ldi	r24, 0x01	; 1
   1a9ce:	80 83       	st	Z, r24
   1a9d0:	8f ef       	ldi	r24, 0xFF	; 255
   1a9d2:	fd c0       	rjmp	.+506    	; 0x1abce <Power_ParseCommand+0x286>

		case 'o':
		case 'O':
		case 'r':
		case 'R':
			retval = EnablePIBModule(pTaskInfo->portNum, TRUE, FALSE);
   1a9d4:	f8 01       	movw	r30, r16
   1a9d6:	81 81       	ldd	r24, Z+1	; 0x01
   1a9d8:	6f ef       	ldi	r22, 0xFF	; 255
   1a9da:	40 e0       	ldi	r20, 0x00	; 0
   1a9dc:	0e 94 a2 38 	call	0x7144	; 0x7144 <EnablePIBModule>
			if (retval)
   1a9e0:	88 23       	and	r24, r24
   1a9e2:	39 f0       	breq	.+14     	; 0x1a9f2 <Power_ParseCommand+0xaa>
				pTaskInfo->pBuf->powerOn = TRUE;
   1a9e4:	d8 01       	movw	r26, r16
   1a9e6:	14 96       	adiw	r26, 0x04	; 4
   1a9e8:	ed 91       	ld	r30, X+
   1a9ea:	fc 91       	ld	r31, X
   1a9ec:	15 97       	sbiw	r26, 0x05	; 5
   1a9ee:	8f ef       	ldi	r24, 0xFF	; 255
   1a9f0:	80 83       	st	Z, r24
			sprintf_P(pTaskInfo->pBuf->consoleResponse, PSTR("Power is %s"), pTaskInfo->pBuf->powerOn==TRUE ? "ON":"OFF");
   1a9f2:	f8 01       	movw	r30, r16
   1a9f4:	a4 81       	ldd	r26, Z+4	; 0x04
   1a9f6:	b5 81       	ldd	r27, Z+5	; 0x05
   1a9f8:	8c 91       	ld	r24, X
   1a9fa:	8f 3f       	cpi	r24, 0xFF	; 255
   1a9fc:	19 f0       	breq	.+6      	; 0x1aa04 <Power_ParseCommand+0xbc>
   1a9fe:	22 e3       	ldi	r18, 0x32	; 50
   1aa00:	35 e0       	ldi	r19, 0x05	; 5
   1aa02:	02 c0       	rjmp	.+4      	; 0x1aa08 <Power_ParseCommand+0xc0>
   1aa04:	26 e3       	ldi	r18, 0x36	; 54
   1aa06:	35 e0       	ldi	r19, 0x05	; 5
   1aa08:	00 d0       	rcall	.+0      	; 0x1aa0a <Power_ParseCommand+0xc2>
   1aa0a:	00 d0       	rcall	.+0      	; 0x1aa0c <Power_ParseCommand+0xc4>
   1aa0c:	4d b7       	in	r20, 0x3d	; 61
   1aa0e:	5e b7       	in	r21, 0x3e	; 62
   1aa10:	4f 5f       	subi	r20, 0xFF	; 255
   1aa12:	5f 4f       	sbci	r21, 0xFF	; 255
   1aa14:	56 96       	adiw	r26, 0x16	; 22
   1aa16:	ed b7       	in	r30, 0x3d	; 61
   1aa18:	fe b7       	in	r31, 0x3e	; 62
   1aa1a:	b2 83       	std	Z+2, r27	; 0x02
   1aa1c:	a1 83       	std	Z+1, r26	; 0x01
   1aa1e:	8c ee       	ldi	r24, 0xEC	; 236
   1aa20:	9b e1       	ldi	r25, 0x1B	; 27
   1aa22:	27 c0       	rjmp	.+78     	; 0x1aa72 <Power_ParseCommand+0x12a>

		case 'f':
		case 'F':
		case 'x':
		case 'X':
			retval = EnablePIBModule(pTaskInfo->portNum, FALSE, FALSE);
   1aa24:	d8 01       	movw	r26, r16
   1aa26:	11 96       	adiw	r26, 0x01	; 1
   1aa28:	8c 91       	ld	r24, X
   1aa2a:	60 e0       	ldi	r22, 0x00	; 0
   1aa2c:	40 e0       	ldi	r20, 0x00	; 0
   1aa2e:	0e 94 a2 38 	call	0x7144	; 0x7144 <EnablePIBModule>
			if (retval)
   1aa32:	88 23       	and	r24, r24
   1aa34:	31 f0       	breq	.+12     	; 0x1aa42 <Power_ParseCommand+0xfa>
				pTaskInfo->pBuf->powerOn = FALSE;
   1aa36:	d8 01       	movw	r26, r16
   1aa38:	14 96       	adiw	r26, 0x04	; 4
   1aa3a:	ed 91       	ld	r30, X+
   1aa3c:	fc 91       	ld	r31, X
   1aa3e:	15 97       	sbiw	r26, 0x05	; 5
   1aa40:	10 82       	st	Z, r1
			sprintf_P(pTaskInfo->pBuf->consoleResponse, PSTR("Power is %s"), pTaskInfo->pBuf->powerOn==TRUE ? "ON":"OFF");
   1aa42:	f8 01       	movw	r30, r16
   1aa44:	a4 81       	ldd	r26, Z+4	; 0x04
   1aa46:	b5 81       	ldd	r27, Z+5	; 0x05
   1aa48:	8c 91       	ld	r24, X
   1aa4a:	8f 3f       	cpi	r24, 0xFF	; 255
   1aa4c:	19 f0       	breq	.+6      	; 0x1aa54 <Power_ParseCommand+0x10c>
   1aa4e:	22 e3       	ldi	r18, 0x32	; 50
   1aa50:	35 e0       	ldi	r19, 0x05	; 5
   1aa52:	02 c0       	rjmp	.+4      	; 0x1aa58 <Power_ParseCommand+0x110>
   1aa54:	26 e3       	ldi	r18, 0x36	; 54
   1aa56:	35 e0       	ldi	r19, 0x05	; 5
   1aa58:	00 d0       	rcall	.+0      	; 0x1aa5a <Power_ParseCommand+0x112>
   1aa5a:	00 d0       	rcall	.+0      	; 0x1aa5c <Power_ParseCommand+0x114>
   1aa5c:	4d b7       	in	r20, 0x3d	; 61
   1aa5e:	5e b7       	in	r21, 0x3e	; 62
   1aa60:	4f 5f       	subi	r20, 0xFF	; 255
   1aa62:	5f 4f       	sbci	r21, 0xFF	; 255
   1aa64:	56 96       	adiw	r26, 0x16	; 22
   1aa66:	ed b7       	in	r30, 0x3d	; 61
   1aa68:	fe b7       	in	r31, 0x3e	; 62
   1aa6a:	b2 83       	std	Z+2, r27	; 0x02
   1aa6c:	a1 83       	std	Z+1, r26	; 0x01
   1aa6e:	80 ee       	ldi	r24, 0xE0	; 224
   1aa70:	9b e1       	ldi	r25, 0x1B	; 27
   1aa72:	da 01       	movw	r26, r20
   1aa74:	13 96       	adiw	r26, 0x03	; 3
   1aa76:	9c 93       	st	X, r25
   1aa78:	8e 93       	st	-X, r24
   1aa7a:	12 97       	sbiw	r26, 0x02	; 2
   1aa7c:	15 96       	adiw	r26, 0x05	; 5
   1aa7e:	3c 93       	st	X, r19
   1aa80:	2e 93       	st	-X, r18
   1aa82:	14 97       	sbiw	r26, 0x04	; 4
   1aa84:	0e 94 51 f1 	call	0x1e2a2	; 0x1e2a2 <sprintf_P>
			pTaskInfo->pBuf->responseInfo.length = strlen(pTaskInfo->pBuf->consoleResponse);
   1aa88:	f8 01       	movw	r30, r16
   1aa8a:	a4 81       	ldd	r26, Z+4	; 0x04
   1aa8c:	b5 81       	ldd	r27, Z+5	; 0x05
   1aa8e:	cd 01       	movw	r24, r26
   1aa90:	46 96       	adiw	r24, 0x16	; 22
   1aa92:	fc 01       	movw	r30, r24
   1aa94:	01 90       	ld	r0, Z+
   1aa96:	00 20       	and	r0, r0
   1aa98:	e9 f7       	brne	.-6      	; 0x1aa94 <Power_ParseCommand+0x14c>
   1aa9a:	31 97       	sbiw	r30, 0x01	; 1
   1aa9c:	e8 1b       	sub	r30, r24
   1aa9e:	f9 0b       	sbc	r31, r25
   1aaa0:	a6 5e       	subi	r26, 0xE6	; 230
   1aaa2:	be 4f       	sbci	r27, 0xFE	; 254
   1aaa4:	ec 93       	st	X, r30
			pTaskInfo->pBuf->responseInfo.status = CONSOLE_RESPONSE_OK;
   1aaa6:	12 97       	sbiw	r26, 0x02	; 2
   1aaa8:	81 e0       	ldi	r24, 0x01	; 1
   1aaaa:	8c 93       	st	X, r24
   1aaac:	8f ef       	ldi	r24, 0xFF	; 255
   1aaae:	2d b7       	in	r18, 0x3d	; 61
   1aab0:	3e b7       	in	r19, 0x3e	; 62
   1aab2:	2a 5f       	subi	r18, 0xFA	; 250
   1aab4:	3f 4f       	sbci	r19, 0xFF	; 255
   1aab6:	0f b6       	in	r0, 0x3f	; 63
   1aab8:	f8 94       	cli
   1aaba:	3e bf       	out	0x3e, r19	; 62
   1aabc:	0f be       	out	0x3f, r0	; 63
   1aabe:	2d bf       	out	0x3d, r18	; 61
   1aac0:	86 c0       	rjmp	.+268    	; 0x1abce <Power_ParseCommand+0x286>
		case 'a':
		case 'A':
		{
			char* result = NULL;

			memset(pTaskInfo->pBuf->tokenSeparatorList, 0, MAX_TOKEN_SEPARATORS);
   1aac2:	d8 01       	movw	r26, r16
   1aac4:	14 96       	adiw	r26, 0x04	; 4
   1aac6:	8d 91       	ld	r24, X+
   1aac8:	9c 91       	ld	r25, X
   1aaca:	15 97       	sbiw	r26, 0x05	; 5
   1aacc:	02 96       	adiw	r24, 0x02	; 2
   1aace:	fc 01       	movw	r30, r24
   1aad0:	84 e1       	ldi	r24, 0x14	; 20
   1aad2:	df 01       	movw	r26, r30
   1aad4:	1d 92       	st	X+, r1
   1aad6:	8a 95       	dec	r24
   1aad8:	e9 f7       	brne	.-6      	; 0x1aad4 <Power_ParseCommand+0x18c>
			strcat_P(pTaskInfo->pBuf->tokenSeparatorList, tokenListConsole);
   1aada:	f8 01       	movw	r30, r16
   1aadc:	84 81       	ldd	r24, Z+4	; 0x04
   1aade:	95 81       	ldd	r25, Z+5	; 0x05
   1aae0:	02 96       	adiw	r24, 0x02	; 2
   1aae2:	68 e3       	ldi	r22, 0x38	; 56
   1aae4:	72 e0       	ldi	r23, 0x02	; 2
   1aae6:	0e 94 b4 ef 	call	0x1df68	; 0x1df68 <strcat_P>

			result = strtok_r(cmdParams, pTaskInfo->pBuf->tokenSeparatorList, &cmdParams);
   1aaea:	d8 01       	movw	r26, r16
   1aaec:	14 96       	adiw	r26, 0x04	; 4
   1aaee:	6d 91       	ld	r22, X+
   1aaf0:	7c 91       	ld	r23, X
   1aaf2:	15 97       	sbiw	r26, 0x05	; 5
   1aaf4:	6e 5f       	subi	r22, 0xFE	; 254
   1aaf6:	7f 4f       	sbci	r23, 0xFF	; 255
   1aaf8:	89 81       	ldd	r24, Y+1	; 0x01
   1aafa:	9a 81       	ldd	r25, Y+2	; 0x02
   1aafc:	ae 01       	movw	r20, r28
   1aafe:	4f 5f       	subi	r20, 0xFF	; 255
   1ab00:	5f 4f       	sbci	r21, 0xFF	; 255
   1ab02:	0e 94 a0 f0 	call	0x1e140	; 0x1e140 <strtok_r>
   1ab06:	fc 01       	movw	r30, r24

			if(result != NULL)
   1ab08:	00 97       	sbiw	r24, 0x00	; 0
   1ab0a:	09 f4       	brne	.+2      	; 0x1ab0e <Power_ParseCommand+0x1c6>
   1ab0c:	5f c0       	rjmp	.+190    	; 0x1abcc <Power_ParseCommand+0x284>
			{
				char* pTest = result;
				if((*pTest == 'o') || (*pTest == 'O'))
   1ab0e:	80 81       	ld	r24, Z
   1ab10:	8f 36       	cpi	r24, 0x6F	; 111
   1ab12:	11 f0       	breq	.+4      	; 0x1ab18 <Power_ParseCommand+0x1d0>
   1ab14:	8f 34       	cpi	r24, 0x4F	; 79
   1ab16:	31 f4       	brne	.+12     	; 0x1ab24 <Power_ParseCommand+0x1dc>
				{
					pTest++;
				
					if((*pTest == 'f') || (*pTest == 'F'))
   1ab18:	81 81       	ldd	r24, Z+1	; 0x01
   1ab1a:	86 36       	cpi	r24, 0x66	; 102
   1ab1c:	11 f0       	breq	.+4      	; 0x1ab22 <Power_ParseCommand+0x1da>
   1ab1e:	86 34       	cpi	r24, 0x46	; 70
   1ab20:	09 f4       	brne	.+2      	; 0x1ab24 <Power_ParseCommand+0x1dc>
						*result = *pTest;
   1ab22:	80 83       	st	Z, r24
				}

				switch(*result)
   1ab24:	80 81       	ld	r24, Z
   1ab26:	8f 34       	cpi	r24, 0x4F	; 79
   1ab28:	e9 f0       	breq	.+58     	; 0x1ab64 <Power_ParseCommand+0x21c>
   1ab2a:	80 35       	cpi	r24, 0x50	; 80
   1ab2c:	70 f4       	brcc	.+28     	; 0x1ab4a <Power_ParseCommand+0x202>
   1ab2e:	81 33       	cpi	r24, 0x31	; 49
   1ab30:	c9 f0       	breq	.+50     	; 0x1ab64 <Power_ParseCommand+0x21c>
   1ab32:	82 33       	cpi	r24, 0x32	; 50
   1ab34:	20 f4       	brcc	.+8      	; 0x1ab3e <Power_ParseCommand+0x1f6>
   1ab36:	80 33       	cpi	r24, 0x30	; 48
   1ab38:	09 f0       	breq	.+2      	; 0x1ab3c <Power_ParseCommand+0x1f4>
   1ab3a:	48 c0       	rjmp	.+144    	; 0x1abcc <Power_ParseCommand+0x284>
   1ab3c:	1b c0       	rjmp	.+54     	; 0x1ab74 <Power_ParseCommand+0x22c>
   1ab3e:	86 34       	cpi	r24, 0x46	; 70
   1ab40:	c9 f0       	breq	.+50     	; 0x1ab74 <Power_ParseCommand+0x22c>
   1ab42:	8e 34       	cpi	r24, 0x4E	; 78
   1ab44:	09 f0       	breq	.+2      	; 0x1ab48 <Power_ParseCommand+0x200>
   1ab46:	42 c0       	rjmp	.+132    	; 0x1abcc <Power_ParseCommand+0x284>
   1ab48:	15 c0       	rjmp	.+42     	; 0x1ab74 <Power_ParseCommand+0x22c>
   1ab4a:	8e 36       	cpi	r24, 0x6E	; 110
   1ab4c:	99 f0       	breq	.+38     	; 0x1ab74 <Power_ParseCommand+0x22c>
   1ab4e:	8f 36       	cpi	r24, 0x6F	; 111
   1ab50:	28 f4       	brcc	.+10     	; 0x1ab5c <Power_ParseCommand+0x214>
   1ab52:	89 35       	cpi	r24, 0x59	; 89
   1ab54:	39 f0       	breq	.+14     	; 0x1ab64 <Power_ParseCommand+0x21c>
   1ab56:	86 36       	cpi	r24, 0x66	; 102
   1ab58:	c9 f5       	brne	.+114    	; 0x1abcc <Power_ParseCommand+0x284>
   1ab5a:	0c c0       	rjmp	.+24     	; 0x1ab74 <Power_ParseCommand+0x22c>
   1ab5c:	8f 36       	cpi	r24, 0x6F	; 111
   1ab5e:	11 f0       	breq	.+4      	; 0x1ab64 <Power_ParseCommand+0x21c>
   1ab60:	89 37       	cpi	r24, 0x79	; 121
   1ab62:	a1 f5       	brne	.+104    	; 0x1abcc <Power_ParseCommand+0x284>
					case 'y':
					case 'Y':
					case 'o':
					case 'O':
					case '1':
						pTaskInfo->pBuf->initState = AUTORUN_ON;
   1ab64:	d8 01       	movw	r26, r16
   1ab66:	14 96       	adiw	r26, 0x04	; 4
   1ab68:	ed 91       	ld	r30, X+
   1ab6a:	fc 91       	ld	r31, X
   1ab6c:	15 97       	sbiw	r26, 0x05	; 5
   1ab6e:	81 e0       	ldi	r24, 0x01	; 1
   1ab70:	81 83       	std	Z+1, r24	; 0x01
   1ab72:	06 c0       	rjmp	.+12     	; 0x1ab80 <Power_ParseCommand+0x238>
					case 'n':
					case 'N':
					case 'f':
					case 'F':
					case '0':
						pTaskInfo->pBuf->initState = AUTORUN_OFF;
   1ab74:	d8 01       	movw	r26, r16
   1ab76:	14 96       	adiw	r26, 0x04	; 4
   1ab78:	ed 91       	ld	r30, X+
   1ab7a:	fc 91       	ld	r31, X
   1ab7c:	15 97       	sbiw	r26, 0x05	; 5
   1ab7e:	11 82       	std	Z+1, r1	; 0x01
				}


				if(retval == SUCCESS)
				{
					EepromWriteByteUnSigned((void*)(pTaskInfo->eepromAddress + POWER_AUTORUN_STATE_OFFSET), pTaskInfo->pBuf->initState);
   1ab80:	f8 01       	movw	r30, r16
   1ab82:	82 81       	ldd	r24, Z+2	; 0x02
   1ab84:	93 81       	ldd	r25, Z+3	; 0x03
   1ab86:	04 80       	ldd	r0, Z+4	; 0x04
   1ab88:	f5 81       	ldd	r31, Z+5	; 0x05
   1ab8a:	e0 2d       	mov	r30, r0
   1ab8c:	80 5c       	subi	r24, 0xC0	; 192
   1ab8e:	9f 4f       	sbci	r25, 0xFF	; 255
   1ab90:	61 81       	ldd	r22, Z+1	; 0x01
   1ab92:	0e 94 9f 37 	call	0x6f3e	; 0x6f3e <EepromWriteByteUnSigned>

					sprintf_P(pTaskInfo->pBuf->consoleResponse, PSTR("AutoRun is %s"), pTaskInfo->pBuf->initState==AUTORUN_ON ? "ON":"OFF");
   1ab96:	f8 01       	movw	r30, r16
   1ab98:	a4 81       	ldd	r26, Z+4	; 0x04
   1ab9a:	b5 81       	ldd	r27, Z+5	; 0x05
   1ab9c:	11 96       	adiw	r26, 0x01	; 1
   1ab9e:	8c 91       	ld	r24, X
   1aba0:	11 97       	sbiw	r26, 0x01	; 1
   1aba2:	81 30       	cpi	r24, 0x01	; 1
   1aba4:	19 f0       	breq	.+6      	; 0x1abac <Power_ParseCommand+0x264>
   1aba6:	22 e3       	ldi	r18, 0x32	; 50
   1aba8:	35 e0       	ldi	r19, 0x05	; 5
   1abaa:	02 c0       	rjmp	.+4      	; 0x1abb0 <Power_ParseCommand+0x268>
   1abac:	26 e3       	ldi	r18, 0x36	; 54
   1abae:	35 e0       	ldi	r19, 0x05	; 5
   1abb0:	00 d0       	rcall	.+0      	; 0x1abb2 <Power_ParseCommand+0x26a>
   1abb2:	00 d0       	rcall	.+0      	; 0x1abb4 <Power_ParseCommand+0x26c>
   1abb4:	4d b7       	in	r20, 0x3d	; 61
   1abb6:	5e b7       	in	r21, 0x3e	; 62
   1abb8:	4f 5f       	subi	r20, 0xFF	; 255
   1abba:	5f 4f       	sbci	r21, 0xFF	; 255
   1abbc:	56 96       	adiw	r26, 0x16	; 22
   1abbe:	ed b7       	in	r30, 0x3d	; 61
   1abc0:	fe b7       	in	r31, 0x3e	; 62
   1abc2:	b2 83       	std	Z+2, r27	; 0x02
   1abc4:	a1 83       	std	Z+1, r26	; 0x01
   1abc6:	82 ed       	ldi	r24, 0xD2	; 210
   1abc8:	9b e1       	ldi	r25, 0x1B	; 27
   1abca:	53 cf       	rjmp	.-346    	; 0x1aa72 <Power_ParseCommand+0x12a>
					pTaskInfo->pBuf->responseInfo.length = strlen(pTaskInfo->pBuf->consoleResponse);
					pTaskInfo->pBuf->responseInfo.status = CONSOLE_RESPONSE_OK;
   1abcc:	80 e0       	ldi	r24, 0x00	; 0
			break;
	}

	return retval;

}
   1abce:	0f 90       	pop	r0
   1abd0:	0f 90       	pop	r0
   1abd2:	cf 91       	pop	r28
   1abd4:	df 91       	pop	r29
   1abd6:	1f 91       	pop	r17
   1abd8:	0f 91       	pop	r16
   1abda:	08 95       	ret

0001abdc <Power_ParseConsole>:

	return;
}

void Power_ParseConsole(PPOWER_TASK pTaskInfo)
{
   1abdc:	cf 92       	push	r12
   1abde:	df 92       	push	r13
   1abe0:	ef 92       	push	r14
   1abe2:	ff 92       	push	r15
   1abe4:	0f 93       	push	r16
   1abe6:	1f 93       	push	r17
   1abe8:	df 93       	push	r29
   1abea:	cf 93       	push	r28
   1abec:	0f 92       	push	r0
   1abee:	0f 92       	push	r0
   1abf0:	cd b7       	in	r28, 0x3d	; 61
   1abf2:	de b7       	in	r29, 0x3e	; 62
   1abf4:	6c 01       	movw	r12, r24
	char* myCommand = consoleIn[pTaskInfo->taskID].cmd; 
   1abf6:	dc 01       	movw	r26, r24
   1abf8:	8c 91       	ld	r24, X
   1abfa:	90 e0       	ldi	r25, 0x00	; 0
   1abfc:	29 e0       	ldi	r18, 0x09	; 9
   1abfe:	31 e0       	ldi	r19, 0x01	; 1
   1ac00:	82 9f       	mul	r24, r18
   1ac02:	f0 01       	movw	r30, r0
   1ac04:	83 9f       	mul	r24, r19
   1ac06:	f0 0d       	add	r31, r0
   1ac08:	92 9f       	mul	r25, r18
   1ac0a:	f0 0d       	add	r31, r0
   1ac0c:	11 24       	eor	r1, r1
   1ac0e:	cf 01       	movw	r24, r30
   1ac10:	8e 58       	subi	r24, 0x8E	; 142
   1ac12:	92 46       	sbci	r25, 0x62	; 98
   1ac14:	9a 83       	std	Y+2, r25	; 0x02
   1ac16:	89 83       	std	Y+1, r24	; 0x01
	char* result = NULL;
	char command = 0;
	BOOL goodCommand = FALSE;
	uint8_t resultCode = 0;

	myCommand[MAX_FILE_SIZE_IN - 1] = 0;			//Make sure command string is NULL terminated
   1ac18:	ef 58       	subi	r30, 0x8F	; 143
   1ac1a:	f1 46       	sbci	r31, 0x61	; 97
   1ac1c:	10 82       	st	Z, r1

	memset(pTaskInfo->pBuf->tokenSeparatorList, 0, MAX_TOKEN_SEPARATORS);
   1ac1e:	14 96       	adiw	r26, 0x04	; 4
   1ac20:	8d 91       	ld	r24, X+
   1ac22:	9c 91       	ld	r25, X
   1ac24:	15 97       	sbiw	r26, 0x05	; 5
   1ac26:	02 96       	adiw	r24, 0x02	; 2
   1ac28:	fc 01       	movw	r30, r24
   1ac2a:	84 e1       	ldi	r24, 0x14	; 20
   1ac2c:	df 01       	movw	r26, r30
   1ac2e:	1d 92       	st	X+, r1
   1ac30:	8a 95       	dec	r24
   1ac32:	e9 f7       	brne	.-6      	; 0x1ac2e <Power_ParseConsole+0x52>
	strcat_P(pTaskInfo->pBuf->tokenSeparatorList, tokenListConsole);
   1ac34:	f6 01       	movw	r30, r12
   1ac36:	84 81       	ldd	r24, Z+4	; 0x04
   1ac38:	95 81       	ldd	r25, Z+5	; 0x05
   1ac3a:	02 96       	adiw	r24, 0x02	; 2
   1ac3c:	68 e3       	ldi	r22, 0x38	; 56
   1ac3e:	72 e0       	ldi	r23, 0x02	; 2
   1ac40:	0e 94 b4 ef 	call	0x1df68	; 0x1df68 <strcat_P>

	result = strtok_r(myCommand, pTaskInfo->pBuf->tokenSeparatorList, &myCommand);
   1ac44:	d6 01       	movw	r26, r12
   1ac46:	14 96       	adiw	r26, 0x04	; 4
   1ac48:	6d 91       	ld	r22, X+
   1ac4a:	7c 91       	ld	r23, X
   1ac4c:	15 97       	sbiw	r26, 0x05	; 5
   1ac4e:	6e 5f       	subi	r22, 0xFE	; 254
   1ac50:	7f 4f       	sbci	r23, 0xFF	; 255
   1ac52:	89 81       	ldd	r24, Y+1	; 0x01
   1ac54:	9a 81       	ldd	r25, Y+2	; 0x02
   1ac56:	7e 01       	movw	r14, r28
   1ac58:	08 94       	sec
   1ac5a:	e1 1c       	adc	r14, r1
   1ac5c:	f1 1c       	adc	r15, r1
   1ac5e:	a7 01       	movw	r20, r14
   1ac60:	0e 94 a0 f0 	call	0x1e140	; 0x1e140 <strtok_r>
   1ac64:	8c 01       	movw	r16, r24
	resultCode = 1;				//No Command Received
	if(result != NULL)
   1ac66:	00 97       	sbiw	r24, 0x00	; 0
   1ac68:	11 f4       	brne	.+4      	; 0x1ac6e <Power_ParseConsole+0x92>
   1ac6a:	81 e0       	ldi	r24, 0x01	; 1
   1ac6c:	25 c0       	rjmp	.+74     	; 0x1acb8 <Power_ParseConsole+0xdc>
	{
		resultCode = 2;			//Unknown Parser Code
		if(strncasecmp_P(result, powerParserID, strlen_P(powerParserID)) == 0)
   1ac6e:	81 ea       	ldi	r24, 0xA1	; 161
   1ac70:	9b e1       	ldi	r25, 0x1B	; 27
   1ac72:	0e 94 c6 ef 	call	0x1df8c	; 0x1df8c <strlen_P>
   1ac76:	ac 01       	movw	r20, r24
   1ac78:	c8 01       	movw	r24, r16
   1ac7a:	61 ea       	ldi	r22, 0xA1	; 161
   1ac7c:	7b e1       	ldi	r23, 0x1B	; 27
   1ac7e:	0e 94 cf ef 	call	0x1df9e	; 0x1df9e <strncasecmp_P>
   1ac82:	89 2b       	or	r24, r25
   1ac84:	21 f5       	brne	.+72     	; 0x1acce <Power_ParseConsole+0xf2>
		{
			resultCode = 3;		//Unknown command
			command = getCommand(&myCommand, powerCommands[0], LEN_POWER_COMMAND, NUM_POWER_COMMANDS, powerCmdList, pTaskInfo->pBuf->tokenSeparatorList);
   1ac86:	d6 01       	movw	r26, r12
   1ac88:	14 96       	adiw	r26, 0x04	; 4
   1ac8a:	ed 91       	ld	r30, X+
   1ac8c:	fc 91       	ld	r31, X
   1ac8e:	15 97       	sbiw	r26, 0x05	; 5
   1ac90:	32 96       	adiw	r30, 0x02	; 2
   1ac92:	c7 01       	movw	r24, r14
   1ac94:	6b e5       	ldi	r22, 0x5B	; 91
   1ac96:	7b e1       	ldi	r23, 0x1B	; 27
   1ac98:	4a e0       	ldi	r20, 0x0A	; 10
   1ac9a:	27 e0       	ldi	r18, 0x07	; 7
   1ac9c:	07 ea       	ldi	r16, 0xA7	; 167
   1ac9e:	1b e1       	ldi	r17, 0x1B	; 27
   1aca0:	7f 01       	movw	r14, r30
   1aca2:	0e 94 1f 38 	call	0x703e	; 0x703e <getCommand>
   1aca6:	68 2f       	mov	r22, r24

			if(command != 0)
   1aca8:	88 23       	and	r24, r24
   1acaa:	09 f0       	breq	.+2      	; 0x1acae <Power_ParseConsole+0xd2>
   1acac:	82 c0       	rjmp	.+260    	; 0x1adb2 <Power_ParseConsole+0x1d6>
   1acae:	18 c0       	rjmp	.+48     	; 0x1ace0 <Power_ParseConsole+0x104>
	if(goodCommand == TRUE)
		resultCode = Power_ParseCommand(pTaskInfo, command, myCommand);

	if(resultCode != SUCCESS)
	{
		switch(resultCode)
   1acb0:	82 30       	cpi	r24, 0x02	; 2
   1acb2:	69 f0       	breq	.+26     	; 0x1acce <Power_ParseConsole+0xf2>
   1acb4:	83 30       	cpi	r24, 0x03	; 3
   1acb6:	a1 f0       	breq	.+40     	; 0x1ace0 <Power_ParseConsole+0x104>
   1acb8:	d6 01       	movw	r26, r12
   1acba:	14 96       	adiw	r26, 0x04	; 4
   1acbc:	ed 91       	ld	r30, X+
   1acbe:	fc 91       	ld	r31, X
   1acc0:	15 97       	sbiw	r26, 0x05	; 5
   1acc2:	81 30       	cpi	r24, 0x01	; 1
   1acc4:	b1 f4       	brne	.+44     	; 0x1acf2 <Power_ParseConsole+0x116>
		{
			case 1:
				pTaskInfo->pBuf->responseInfo.status = CONSOLE_RESPONSE_EMPTY_CMD;
   1acc6:	e8 5e       	subi	r30, 0xE8	; 232
   1acc8:	fe 4f       	sbci	r31, 0xFE	; 254
   1acca:	8d e0       	ldi	r24, 0x0D	; 13
   1accc:	15 c0       	rjmp	.+42     	; 0x1acf8 <Power_ParseConsole+0x11c>
				break;
			case 2:
				pTaskInfo->pBuf->responseInfo.status = CONSOLE_RESPONSE_WRONG_DEVICE;
   1acce:	d6 01       	movw	r26, r12
   1acd0:	14 96       	adiw	r26, 0x04	; 4
   1acd2:	ed 91       	ld	r30, X+
   1acd4:	fc 91       	ld	r31, X
   1acd6:	15 97       	sbiw	r26, 0x05	; 5
   1acd8:	e8 5e       	subi	r30, 0xE8	; 232
   1acda:	fe 4f       	sbci	r31, 0xFE	; 254
   1acdc:	8e e0       	ldi	r24, 0x0E	; 14
   1acde:	0c c0       	rjmp	.+24     	; 0x1acf8 <Power_ParseConsole+0x11c>
				break;
			case 3:
				pTaskInfo->pBuf->responseInfo.status = CONSOLE_RESPONSE_UNKNOWN_CMD;
   1ace0:	d6 01       	movw	r26, r12
   1ace2:	14 96       	adiw	r26, 0x04	; 4
   1ace4:	ed 91       	ld	r30, X+
   1ace6:	fc 91       	ld	r31, X
   1ace8:	15 97       	sbiw	r26, 0x05	; 5
   1acea:	e8 5e       	subi	r30, 0xE8	; 232
   1acec:	fe 4f       	sbci	r31, 0xFE	; 254
   1acee:	8a e0       	ldi	r24, 0x0A	; 10
   1acf0:	03 c0       	rjmp	.+6      	; 0x1acf8 <Power_ParseConsole+0x11c>
				break;
			default:
				pTaskInfo->pBuf->responseInfo.status = CONSOLE_RESPONSE_CMD_FAILED;
   1acf2:	e8 5e       	subi	r30, 0xE8	; 232
   1acf4:	fe 4f       	sbci	r31, 0xFE	; 254
   1acf6:	8f e0       	ldi	r24, 0x0F	; 15
   1acf8:	80 83       	st	Z, r24
				break;
		}
	}

	Power_QueueConsoleResponse(pTaskInfo);
   1acfa:	c6 01       	movw	r24, r12
   1acfc:	0e 94 48 d3 	call	0x1a690	; 0x1a690 <Power_QueueConsoleResponse>

	memset(consoleIn[pTaskInfo->taskID].cmd, 0, MAX_FILE_SIZE_IN);
   1ad00:	f6 01       	movw	r30, r12
   1ad02:	80 81       	ld	r24, Z
   1ad04:	90 e0       	ldi	r25, 0x00	; 0
   1ad06:	29 e0       	ldi	r18, 0x09	; 9
   1ad08:	31 e0       	ldi	r19, 0x01	; 1
   1ad0a:	ac 01       	movw	r20, r24
   1ad0c:	42 9f       	mul	r20, r18
   1ad0e:	c0 01       	movw	r24, r0
   1ad10:	43 9f       	mul	r20, r19
   1ad12:	90 0d       	add	r25, r0
   1ad14:	52 9f       	mul	r21, r18
   1ad16:	90 0d       	add	r25, r0
   1ad18:	11 24       	eor	r1, r1
   1ad1a:	8e 58       	subi	r24, 0x8E	; 142
   1ad1c:	92 46       	sbci	r25, 0x62	; 98
   1ad1e:	fc 01       	movw	r30, r24
   1ad20:	80 e0       	ldi	r24, 0x00	; 0
   1ad22:	91 e0       	ldi	r25, 0x01	; 1
   1ad24:	df 01       	movw	r26, r30
   1ad26:	ac 01       	movw	r20, r24
   1ad28:	1d 92       	st	X+, r1
   1ad2a:	41 50       	subi	r20, 0x01	; 1
   1ad2c:	50 40       	sbci	r21, 0x00	; 0
   1ad2e:	e1 f7       	brne	.-8      	; 0x1ad28 <Power_ParseConsole+0x14c>
	consoleIn[pTaskInfo->taskID].cmdSrcAddress = 0;
   1ad30:	d6 01       	movw	r26, r12
   1ad32:	8c 91       	ld	r24, X
   1ad34:	90 e0       	ldi	r25, 0x00	; 0
   1ad36:	82 9f       	mul	r24, r18
   1ad38:	f0 01       	movw	r30, r0
   1ad3a:	83 9f       	mul	r24, r19
   1ad3c:	f0 0d       	add	r31, r0
   1ad3e:	92 9f       	mul	r25, r18
   1ad40:	f0 0d       	add	r31, r0
   1ad42:	11 24       	eor	r1, r1
   1ad44:	e7 59       	subi	r30, 0x97	; 151
   1ad46:	f2 46       	sbci	r31, 0x62	; 98
   1ad48:	11 82       	std	Z+1, r1	; 0x01
   1ad4a:	10 82       	st	Z, r1
	consoleIn[pTaskInfo->taskID].functionCode = 0;
   1ad4c:	8c 91       	ld	r24, X
   1ad4e:	90 e0       	ldi	r25, 0x00	; 0
   1ad50:	82 9f       	mul	r24, r18
   1ad52:	f0 01       	movw	r30, r0
   1ad54:	83 9f       	mul	r24, r19
   1ad56:	f0 0d       	add	r31, r0
   1ad58:	92 9f       	mul	r25, r18
   1ad5a:	f0 0d       	add	r31, r0
   1ad5c:	11 24       	eor	r1, r1
   1ad5e:	e7 59       	subi	r30, 0x97	; 151
   1ad60:	f2 46       	sbci	r31, 0x62	; 98
   1ad62:	12 82       	std	Z+2, r1	; 0x02
	consoleIn[pTaskInfo->taskID].cmdSize = 0;
   1ad64:	8c 91       	ld	r24, X
   1ad66:	90 e0       	ldi	r25, 0x00	; 0
   1ad68:	82 9f       	mul	r24, r18
   1ad6a:	f0 01       	movw	r30, r0
   1ad6c:	83 9f       	mul	r24, r19
   1ad6e:	f0 0d       	add	r31, r0
   1ad70:	92 9f       	mul	r25, r18
   1ad72:	f0 0d       	add	r31, r0
   1ad74:	11 24       	eor	r1, r1
   1ad76:	e7 59       	subi	r30, 0x97	; 151
   1ad78:	f2 46       	sbci	r31, 0x62	; 98
   1ad7a:	14 82       	std	Z+4, r1	; 0x04
   1ad7c:	13 82       	std	Z+3, r1	; 0x03
	consoleIn[pTaskInfo->taskID].id = 0;
   1ad7e:	8c 91       	ld	r24, X
   1ad80:	90 e0       	ldi	r25, 0x00	; 0
   1ad82:	82 9f       	mul	r24, r18
   1ad84:	f0 01       	movw	r30, r0
   1ad86:	83 9f       	mul	r24, r19
   1ad88:	f0 0d       	add	r31, r0
   1ad8a:	92 9f       	mul	r25, r18
   1ad8c:	f0 0d       	add	r31, r0
   1ad8e:	11 24       	eor	r1, r1
   1ad90:	e7 59       	subi	r30, 0x97	; 151
   1ad92:	f2 46       	sbci	r31, 0x62	; 98
   1ad94:	15 82       	std	Z+5, r1	; 0x05
   1ad96:	16 82       	std	Z+6, r1	; 0x06
   1ad98:	17 82       	std	Z+7, r1	; 0x07
   1ad9a:	10 86       	std	Z+8, r1	; 0x08

	return;

}
   1ad9c:	0f 90       	pop	r0
   1ad9e:	0f 90       	pop	r0
   1ada0:	cf 91       	pop	r28
   1ada2:	df 91       	pop	r29
   1ada4:	1f 91       	pop	r17
   1ada6:	0f 91       	pop	r16
   1ada8:	ff 90       	pop	r15
   1adaa:	ef 90       	pop	r14
   1adac:	df 90       	pop	r13
   1adae:	cf 90       	pop	r12
   1adb0:	08 95       	ret
				goodCommand = TRUE;
		}
	}

	if(goodCommand == TRUE)
		resultCode = Power_ParseCommand(pTaskInfo, command, myCommand);
   1adb2:	49 81       	ldd	r20, Y+1	; 0x01
   1adb4:	5a 81       	ldd	r21, Y+2	; 0x02
   1adb6:	c6 01       	movw	r24, r12
   1adb8:	0e 94 a4 d4 	call	0x1a948	; 0x1a948 <Power_ParseCommand>

	if(resultCode != SUCCESS)
   1adbc:	8f 3f       	cpi	r24, 0xFF	; 255
   1adbe:	09 f0       	breq	.+2      	; 0x1adc2 <Power_ParseConsole+0x1e6>
   1adc0:	77 cf       	rjmp	.-274    	; 0x1acb0 <Power_ParseConsole+0xd4>
   1adc2:	9b cf       	rjmp	.-202    	; 0x1acfa <Power_ParseConsole+0x11e>

0001adc4 <Power_Init>:
extern int32_t longitude;		//JGK Added 06-11-10
extern char	fixValid;			//JGK Added 06-11-10


uint8_t Power_Init(PPOWER_TASK pTaskInfo)
{
   1adc4:	cf 92       	push	r12
   1adc6:	df 92       	push	r13
   1adc8:	ef 92       	push	r14
   1adca:	0f 93       	push	r16
   1adcc:	df 93       	push	r29
   1adce:	cf 93       	push	r28
   1add0:	0f 92       	push	r0
   1add2:	0f 92       	push	r0
   1add4:	cd b7       	in	r28, 0x3d	; 61
   1add6:	de b7       	in	r29, 0x3e	; 62
   1add8:	6c 01       	movw	r12, r24
	uint8_t retval = SUCCESS;

	if(pTaskInfo->portNum == USER_PORT_1)
   1adda:	dc 01       	movw	r26, r24
   1addc:	11 96       	adiw	r26, 0x01	; 1
   1adde:	8c 91       	ld	r24, X
   1ade0:	11 97       	sbiw	r26, 0x01	; 1
   1ade2:	81 30       	cpi	r24, 0x01	; 1
   1ade4:	31 f4       	brne	.+12     	; 0x1adf2 <Power_Init+0x2e>
		pTaskInfo->eepromAddress = EEPROM_PM1_START;
   1ade6:	80 e0       	ldi	r24, 0x00	; 0
   1ade8:	93 e0       	ldi	r25, 0x03	; 3
   1adea:	13 96       	adiw	r26, 0x03	; 3
   1adec:	9c 93       	st	X, r25
   1adee:	8e 93       	st	-X, r24
   1adf0:	12 97       	sbiw	r26, 0x02	; 2
	if(pTaskInfo->portNum == USER_PORT_2)
   1adf2:	f6 01       	movw	r30, r12
   1adf4:	81 81       	ldd	r24, Z+1	; 0x01
   1adf6:	82 30       	cpi	r24, 0x02	; 2
   1adf8:	21 f4       	brne	.+8      	; 0x1ae02 <Power_Init+0x3e>
		pTaskInfo->eepromAddress = EEPROM_PM2_START;
   1adfa:	80 e0       	ldi	r24, 0x00	; 0
   1adfc:	95 e0       	ldi	r25, 0x05	; 5
   1adfe:	93 83       	std	Z+3, r25	; 0x03
   1ae00:	82 83       	std	Z+2, r24	; 0x02
	if(pTaskInfo->portNum == USER_PORT_3)
   1ae02:	d6 01       	movw	r26, r12
   1ae04:	11 96       	adiw	r26, 0x01	; 1
   1ae06:	8c 91       	ld	r24, X
   1ae08:	11 97       	sbiw	r26, 0x01	; 1
   1ae0a:	83 30       	cpi	r24, 0x03	; 3
   1ae0c:	31 f4       	brne	.+12     	; 0x1ae1a <Power_Init+0x56>
		pTaskInfo->eepromAddress = EEPROM_PM3_START;
   1ae0e:	80 e0       	ldi	r24, 0x00	; 0
   1ae10:	97 e0       	ldi	r25, 0x07	; 7
   1ae12:	13 96       	adiw	r26, 0x03	; 3
   1ae14:	9c 93       	st	X, r25
   1ae16:	8e 93       	st	-X, r24
   1ae18:	12 97       	sbiw	r26, 0x02	; 2

	if(pTaskInfo->pBuf != NULL)
   1ae1a:	d6 01       	movw	r26, r12
   1ae1c:	14 96       	adiw	r26, 0x04	; 4
   1ae1e:	ed 91       	ld	r30, X+
   1ae20:	fc 91       	ld	r31, X
   1ae22:	15 97       	sbiw	r26, 0x05	; 5
   1ae24:	30 97       	sbiw	r30, 0x00	; 0
   1ae26:	41 f0       	breq	.+16     	; 0x1ae38 <Power_Init+0x74>
		memset(pTaskInfo->pBuf, 0, sizeof(POWER_BUFFER));
   1ae28:	8f e1       	ldi	r24, 0x1F	; 31
   1ae2a:	91 e0       	ldi	r25, 0x01	; 1
   1ae2c:	df 01       	movw	r26, r30
   1ae2e:	9c 01       	movw	r18, r24
   1ae30:	1d 92       	st	X+, r1
   1ae32:	21 50       	subi	r18, 0x01	; 1
   1ae34:	30 40       	sbci	r19, 0x00	; 0
   1ae36:	e1 f7       	brne	.-8      	; 0x1ae30 <Power_Init+0x6c>


	//Get default power state
	pTaskInfo->pBuf->initState = 0xFF;
   1ae38:	d6 01       	movw	r26, r12
   1ae3a:	14 96       	adiw	r26, 0x04	; 4
   1ae3c:	ed 91       	ld	r30, X+
   1ae3e:	fc 91       	ld	r31, X
   1ae40:	15 97       	sbiw	r26, 0x05	; 5
   1ae42:	8f ef       	ldi	r24, 0xFF	; 255
   1ae44:	81 83       	std	Z+1, r24	; 0x01
	EepromReadByte((void*)(pTaskInfo->eepromAddress + POWER_AUTORUN_STATE_OFFSET), (void*)&pTaskInfo->pBuf->initState);
   1ae46:	12 96       	adiw	r26, 0x02	; 2
   1ae48:	8d 91       	ld	r24, X+
   1ae4a:	9c 91       	ld	r25, X
   1ae4c:	13 97       	sbiw	r26, 0x03	; 3
   1ae4e:	31 96       	adiw	r30, 0x01	; 1
   1ae50:	80 5c       	subi	r24, 0xC0	; 192
   1ae52:	9f 4f       	sbci	r25, 0xFF	; 255
   1ae54:	bf 01       	movw	r22, r30
   1ae56:	0e 94 38 37 	call	0x6e70	; 0x6e70 <EepromReadByte>
	if((pTaskInfo->pBuf->initState != AUTORUN_ON) && (pTaskInfo->pBuf->initState != AUTORUN_OFF))
   1ae5a:	d6 01       	movw	r26, r12
   1ae5c:	14 96       	adiw	r26, 0x04	; 4
   1ae5e:	ed 91       	ld	r30, X+
   1ae60:	fc 91       	ld	r31, X
   1ae62:	15 97       	sbiw	r26, 0x05	; 5
   1ae64:	81 81       	ldd	r24, Z+1	; 0x01
   1ae66:	82 30       	cpi	r24, 0x02	; 2
   1ae68:	50 f0       	brcs	.+20     	; 0x1ae7e <Power_Init+0xba>
	{
		pTaskInfo->pBuf->initState = AUTORUN_OFF;	//Default to 1 sample per minute if not defined
   1ae6a:	11 82       	std	Z+1, r1	; 0x01
		EepromWriteByteUnSigned((void*)(pTaskInfo->eepromAddress + POWER_AUTORUN_STATE_OFFSET), pTaskInfo->pBuf->initState);
   1ae6c:	12 96       	adiw	r26, 0x02	; 2
   1ae6e:	8d 91       	ld	r24, X+
   1ae70:	9c 91       	ld	r25, X
   1ae72:	13 97       	sbiw	r26, 0x03	; 3
   1ae74:	80 5c       	subi	r24, 0xC0	; 192
   1ae76:	9f 4f       	sbci	r25, 0xFF	; 255
   1ae78:	60 e0       	ldi	r22, 0x00	; 0
   1ae7a:	0e 94 9f 37 	call	0x6f3e	; 0x6f3e <EepromWriteByteUnSigned>
	}

	OSuartInitPort(pTaskInfo->portNum, 9600, UART_MODE_EIGHT_DATA_BITS, UART_MODE_ONE_STOP_BIT, UART_MODE_NO_PARITY);
   1ae7e:	f6 01       	movw	r30, r12
   1ae80:	81 81       	ldd	r24, Z+1	; 0x01
   1ae82:	40 e8       	ldi	r20, 0x80	; 128
   1ae84:	55 e2       	ldi	r21, 0x25	; 37
   1ae86:	60 e0       	ldi	r22, 0x00	; 0
   1ae88:	70 e0       	ldi	r23, 0x00	; 0
   1ae8a:	26 e0       	ldi	r18, 0x06	; 6
   1ae8c:	00 e0       	ldi	r16, 0x00	; 0
   1ae8e:	ee 24       	eor	r14, r14
   1ae90:	0e 94 38 33 	call	0x6670	; 0x6670 <OSuartInitPort>

	pTaskInfo->pBuf->powerOn = FALSE;
   1ae94:	d6 01       	movw	r26, r12
   1ae96:	14 96       	adiw	r26, 0x04	; 4
   1ae98:	ed 91       	ld	r30, X+
   1ae9a:	fc 91       	ld	r31, X
   1ae9c:	15 97       	sbiw	r26, 0x05	; 5
   1ae9e:	10 82       	st	Z, r1

	if(pTaskInfo->pBuf->initState == AUTORUN_ON)
   1aea0:	81 81       	ldd	r24, Z+1	; 0x01
   1aea2:	81 30       	cpi	r24, 0x01	; 1
   1aea4:	69 f4       	brne	.+26     	; 0x1aec0 <Power_Init+0xfc>
	{
		char tempBuf[2] = " ";
   1aea6:	80 91 39 05 	lds	r24, 0x0539
   1aeaa:	90 91 3a 05 	lds	r25, 0x053A
   1aeae:	9a 83       	std	Y+2, r25	; 0x02
   1aeb0:	89 83       	std	Y+1, r24	; 0x01
		Power_ParseCommand(pTaskInfo, 'r', tempBuf);
   1aeb2:	c6 01       	movw	r24, r12
   1aeb4:	62 e7       	ldi	r22, 0x72	; 114
   1aeb6:	ae 01       	movw	r20, r28
   1aeb8:	4f 5f       	subi	r20, 0xFF	; 255
   1aeba:	5f 4f       	sbci	r21, 0xFF	; 255
   1aebc:	0e 94 a4 d4 	call	0x1a948	; 0x1a948 <Power_ParseCommand>
	}
			
	return retval;
}
   1aec0:	8f ef       	ldi	r24, 0xFF	; 255
   1aec2:	0f 90       	pop	r0
   1aec4:	0f 90       	pop	r0
   1aec6:	cf 91       	pop	r28
   1aec8:	df 91       	pop	r29
   1aeca:	0f 91       	pop	r16
   1aecc:	ef 90       	pop	r14
   1aece:	df 90       	pop	r13
   1aed0:	cf 90       	pop	r12
   1aed2:	08 95       	ret

0001aed4 <Power>:


void Power(void* pParam)
{
   1aed4:	cf 92       	push	r12
   1aed6:	df 92       	push	r13
   1aed8:	ef 92       	push	r14
   1aeda:	ff 92       	push	r15
   1aedc:	0f 93       	push	r16
   1aede:	1f 93       	push	r17
   1aee0:	df 93       	push	r29
   1aee2:	cf 93       	push	r28
   1aee4:	cd b7       	in	r28, 0x3d	; 61
   1aee6:	de b7       	in	r29, 0x3e	; 62
   1aee8:	27 97       	sbiw	r28, 0x07	; 7
   1aeea:	0f b6       	in	r0, 0x3f	; 63
   1aeec:	f8 94       	cli
   1aeee:	de bf       	out	0x3e, r29	; 62
   1aef0:	0f be       	out	0x3f, r0	; 63
   1aef2:	cd bf       	out	0x3d, r28	; 61
	POWER_TASK taskInfo;
	PPOWER_TASK pTaskInit = (PPOWER_TASK)pParam;
   1aef4:	fc 01       	movw	r30, r24
	uint8_t retval = FAIL;

	taskInfo.taskID = pTaskInit->taskID;
   1aef6:	80 81       	ld	r24, Z
   1aef8:	8a 83       	std	Y+2, r24	; 0x02
	taskInfo.portNum = pTaskInit->portNum;
   1aefa:	81 81       	ldd	r24, Z+1	; 0x01
   1aefc:	8b 83       	std	Y+3, r24	; 0x03
	taskInfo.pBuf = pTaskInit->pBuf;
   1aefe:	84 81       	ldd	r24, Z+4	; 0x04
   1af00:	95 81       	ldd	r25, Z+5	; 0x05
   1af02:	9f 83       	std	Y+7, r25	; 0x07
   1af04:	8e 83       	std	Y+6, r24	; 0x06

	retval = Power_Init(&taskInfo);
   1af06:	8e 01       	movw	r16, r28
   1af08:	0e 5f       	subi	r16, 0xFE	; 254
   1af0a:	1f 4f       	sbci	r17, 0xFF	; 255
   1af0c:	c8 01       	movw	r24, r16
   1af0e:	0e 94 e2 d6 	call	0x1adc4	; 0x1adc4 <Power_Init>

	if(retval == SUCCESS)
   1af12:	8f 3f       	cpi	r24, 0xFF	; 255
   1af14:	09 f0       	breq	.+2      	; 0x1af18 <Power+0x44>
   1af16:	a8 c0       	rjmp	.+336    	; 0x1b068 <Power+0x194>
				SerialPortPassThroughPower(taskInfo.portNum);
			}

			if(consoleAvailable[taskInfo.portNum] == TRUE)
			{
				taskInfo.pBuf->responseInfo.source = consoleIn[taskInfo.taskID].cmdSrcAddress;
   1af18:	39 e0       	ldi	r19, 0x09	; 9
   1af1a:	c3 2e       	mov	r12, r19
   1af1c:	31 e0       	ldi	r19, 0x01	; 1
   1af1e:	d3 2e       	mov	r13, r19
				taskInfo.pBuf->responseInfo.status = 0;
				taskInfo.pBuf->responseInfo.length = consoleIn[taskInfo.taskID].cmdSize;
				taskInfo.pBuf->responseInfo.id = consoleIn[taskInfo.taskID].id;

				Power_ParseConsole(&taskInfo);
   1af20:	c8 01       	movw	r24, r16
   1af22:	f0 2e       	mov	r15, r16
   1af24:	09 2f       	mov	r16, r25

	if(retval == SUCCESS)
	{
		while(1)
		{
			OSTimeDlyHMSM(0,0,1,0);
   1af26:	80 e0       	ldi	r24, 0x00	; 0
   1af28:	60 e0       	ldi	r22, 0x00	; 0
   1af2a:	41 e0       	ldi	r20, 0x01	; 1
   1af2c:	20 e0       	ldi	r18, 0x00	; 0
   1af2e:	30 e0       	ldi	r19, 0x00	; 0
   1af30:	0e 94 2a 2e 	call	0x5c54	; 0x5c54 <OSTimeDlyHMSM>

			//sprintf_P(dbgMsg, PSTR("Power loop for PM%d"), taskInfo.portNum);
			//SEND_MSG;

			if(serialPortPassThrough[taskInfo.portNum] == TRUE)
   1af34:	8b 81       	ldd	r24, Y+3	; 0x03
   1af36:	a8 2f       	mov	r26, r24
   1af38:	b0 e0       	ldi	r27, 0x00	; 0
   1af3a:	fd 01       	movw	r30, r26
   1af3c:	e7 56       	subi	r30, 0x67	; 103
   1af3e:	fe 45       	sbci	r31, 0x5E	; 94
   1af40:	10 81       	ld	r17, Z
   1af42:	1f 3f       	cpi	r17, 0xFF	; 255
   1af44:	b9 f4       	brne	.+46     	; 0x1af74 <Power+0xa0>
			{
				//Set Flag so the float COMM task will proceed
				serialPortPassThroughOK = TRUE;
   1af46:	10 93 9d a1 	sts	0xA19D, r17
				
				EnablePIBModule(taskInfo.portNum, TRUE, FALSE);
   1af4a:	6f ef       	ldi	r22, 0xFF	; 255
   1af4c:	40 e0       	ldi	r20, 0x00	; 0
   1af4e:	0e 94 a2 38 	call	0x7144	; 0x7144 <EnablePIBModule>
				OSTimeDlyHMSM(0,0,0,500);
   1af52:	80 e0       	ldi	r24, 0x00	; 0
   1af54:	60 e0       	ldi	r22, 0x00	; 0
   1af56:	40 e0       	ldi	r20, 0x00	; 0
   1af58:	24 ef       	ldi	r18, 0xF4	; 244
   1af5a:	31 e0       	ldi	r19, 0x01	; 1
   1af5c:	0e 94 2a 2e 	call	0x5c54	; 0x5c54 <OSTimeDlyHMSM>
	return;
}

void SerialPortPassThroughPower(uint8_t port)
{
	readyForSerialPassThru = TRUE;
   1af60:	10 93 9e a1 	sts	0xA19E, r17

	while(1)
	{
		OSTimeDlyHMSM(1,0,0,0);
   1af64:	81 e0       	ldi	r24, 0x01	; 1
   1af66:	60 e0       	ldi	r22, 0x00	; 0
   1af68:	40 e0       	ldi	r20, 0x00	; 0
   1af6a:	20 e0       	ldi	r18, 0x00	; 0
   1af6c:	30 e0       	ldi	r19, 0x00	; 0
   1af6e:	0e 94 2a 2e 	call	0x5c54	; 0x5c54 <OSTimeDlyHMSM>
   1af72:	f8 cf       	rjmp	.-16     	; 0x1af64 <Power+0x90>
				OSTimeDlyHMSM(0,0,0,500);

				SerialPortPassThroughPower(taskInfo.portNum);
			}

			if(consoleAvailable[taskInfo.portNum] == TRUE)
   1af74:	a3 57       	subi	r26, 0x73	; 115
   1af76:	be 45       	sbci	r27, 0x5E	; 94
   1af78:	8c 91       	ld	r24, X
   1af7a:	8f 3f       	cpi	r24, 0xFF	; 255
   1af7c:	69 f5       	brne	.+90     	; 0x1afd8 <Power+0x104>
			{
				taskInfo.pBuf->responseInfo.source = consoleIn[taskInfo.taskID].cmdSrcAddress;
   1af7e:	ee 81       	ldd	r30, Y+6	; 0x06
   1af80:	ff 81       	ldd	r31, Y+7	; 0x07
   1af82:	8a 81       	ldd	r24, Y+2	; 0x02
   1af84:	90 e0       	ldi	r25, 0x00	; 0
   1af86:	ea 5e       	subi	r30, 0xEA	; 234
   1af88:	fe 4f       	sbci	r31, 0xFE	; 254
   1af8a:	8c 9d       	mul	r24, r12
   1af8c:	d0 01       	movw	r26, r0
   1af8e:	8d 9d       	mul	r24, r13
   1af90:	b0 0d       	add	r27, r0
   1af92:	9c 9d       	mul	r25, r12
   1af94:	b0 0d       	add	r27, r0
   1af96:	11 24       	eor	r1, r1
   1af98:	a7 59       	subi	r26, 0x97	; 151
   1af9a:	b2 46       	sbci	r27, 0x62	; 98
   1af9c:	8d 91       	ld	r24, X+
   1af9e:	9c 91       	ld	r25, X
   1afa0:	11 97       	sbiw	r26, 0x01	; 1
   1afa2:	81 93       	st	Z+, r24
   1afa4:	91 93       	st	Z+, r25
				taskInfo.pBuf->responseInfo.status = 0;
   1afa6:	10 82       	st	Z, r1
				taskInfo.pBuf->responseInfo.length = consoleIn[taskInfo.taskID].cmdSize;
   1afa8:	32 96       	adiw	r30, 0x02	; 2
   1afaa:	13 96       	adiw	r26, 0x03	; 3
   1afac:	8c 91       	ld	r24, X
   1afae:	13 97       	sbiw	r26, 0x03	; 3
   1afb0:	81 93       	st	Z+, r24
				taskInfo.pBuf->responseInfo.id = consoleIn[taskInfo.taskID].id;
   1afb2:	15 96       	adiw	r26, 0x05	; 5
   1afb4:	8d 91       	ld	r24, X+
   1afb6:	9d 91       	ld	r25, X+
   1afb8:	0d 90       	ld	r0, X+
   1afba:	bc 91       	ld	r27, X
   1afbc:	a0 2d       	mov	r26, r0
   1afbe:	80 83       	st	Z, r24
   1afc0:	91 83       	std	Z+1, r25	; 0x01
   1afc2:	a2 83       	std	Z+2, r26	; 0x02
   1afc4:	b3 83       	std	Z+3, r27	; 0x03

				Power_ParseConsole(&taskInfo);
   1afc6:	8f 2d       	mov	r24, r15
   1afc8:	90 2f       	mov	r25, r16
   1afca:	0e 94 ee d5 	call	0x1abdc	; 0x1abdc <Power_ParseConsole>
				consoleAvailable[taskInfo.portNum] = FALSE;
   1afce:	eb 81       	ldd	r30, Y+3	; 0x03
   1afd0:	f0 e0       	ldi	r31, 0x00	; 0
   1afd2:	e3 57       	subi	r30, 0x73	; 115
   1afd4:	fe 45       	sbci	r31, 0x5E	; 94
   1afd6:	10 82       	st	Z, r1
			}	
			
			// Check to see if we need to end this task and release resources
			if (kill[taskInfo.portNum] == TRUE) 
   1afd8:	8b 81       	ldd	r24, Y+3	; 0x03
   1afda:	e8 2f       	mov	r30, r24
   1afdc:	f0 e0       	ldi	r31, 0x00	; 0
   1afde:	ef 56       	subi	r30, 0x6F	; 111
   1afe0:	fe 45       	sbci	r31, 0x5E	; 94
   1afe2:	90 81       	ld	r25, Z
   1afe4:	9f 3f       	cpi	r25, 0xFF	; 255
   1afe6:	09 f0       	breq	.+2      	; 0x1afea <Power+0x116>
   1afe8:	9e cf       	rjmp	.-196    	; 0x1af26 <Power+0x52>
			{
				//sprintf_P(dbgMsg, PSTR("Ending task...."));
				//SEND_MSG;

				uint8_t val = 0xFF;
   1afea:	99 83       	std	Y+1, r25	; 0x01
				uint16_t startAddr = 0;

				if(taskInfo.portNum == USER_PORT_1)
   1afec:	81 30       	cpi	r24, 0x01	; 1
   1afee:	29 f4       	brne	.+10     	; 0x1affa <Power+0x126>
   1aff0:	00 e0       	ldi	r16, 0x00	; 0
   1aff2:	13 e0       	ldi	r17, 0x03	; 3
   1aff4:	80 e0       	ldi	r24, 0x00	; 0
   1aff6:	93 e0       	ldi	r25, 0x03	; 3
   1aff8:	19 c0       	rjmp	.+50     	; 0x1b02c <Power+0x158>
					startAddr = EEPROM_PM1_START;
				if(taskInfo.portNum == USER_PORT_2)
   1affa:	82 30       	cpi	r24, 0x02	; 2
   1affc:	29 f4       	brne	.+10     	; 0x1b008 <Power+0x134>
   1affe:	00 e0       	ldi	r16, 0x00	; 0
   1b000:	15 e0       	ldi	r17, 0x05	; 5
   1b002:	80 e0       	ldi	r24, 0x00	; 0
   1b004:	95 e0       	ldi	r25, 0x05	; 5
   1b006:	12 c0       	rjmp	.+36     	; 0x1b02c <Power+0x158>
					startAddr = EEPROM_PM2_START;
				if(taskInfo.portNum == USER_PORT_3)
   1b008:	83 30       	cpi	r24, 0x03	; 3
   1b00a:	11 f0       	breq	.+4      	; 0x1b010 <Power+0x13c>

				if (startAddr == 0)
				{
					//sprintf_P(dbgMsg, PSTR("No start addr"));
					//SEND_MSG;
					kill[taskInfo.portNum] = FALSE;
   1b00c:	10 82       	st	Z, r1
   1b00e:	8b cf       	rjmp	.-234    	; 0x1af26 <Power+0x52>
   1b010:	00 e0       	ldi	r16, 0x00	; 0
   1b012:	17 e0       	ldi	r17, 0x07	; 7
   1b014:	80 e0       	ldi	r24, 0x00	; 0
   1b016:	97 e0       	ldi	r25, 0x07	; 7
   1b018:	09 c0       	rjmp	.+18     	; 0x1b02c <Power+0x158>
				}
				else
				{
					// Write all F's to EEPROM
					for (uint16_t addr = startAddr; addr < startAddr + EEPROM_PM_SIZE; addr++)
						EepromWriteBlock((void*)addr, (void*)&val, 1);
   1b01a:	c8 01       	movw	r24, r16
   1b01c:	b6 01       	movw	r22, r12
   1b01e:	41 e0       	ldi	r20, 0x01	; 1
   1b020:	50 e0       	ldi	r21, 0x00	; 0
   1b022:	0e 94 f7 37 	call	0x6fee	; 0x6fee <EepromWriteBlock>
					kill[taskInfo.portNum] = FALSE;
				}
				else
				{
					// Write all F's to EEPROM
					for (uint16_t addr = startAddr; addr < startAddr + EEPROM_PM_SIZE; addr++)
   1b026:	0f 5f       	subi	r16, 0xFF	; 255
   1b028:	1f 4f       	sbci	r17, 0xFF	; 255
   1b02a:	09 c0       	rjmp	.+18     	; 0x1b03e <Power+0x16a>
   1b02c:	e1 2c       	mov	r14, r1
   1b02e:	22 e0       	ldi	r18, 0x02	; 2
   1b030:	f2 2e       	mov	r15, r18
   1b032:	e8 0e       	add	r14, r24
   1b034:	f9 1e       	adc	r15, r25
						EepromWriteBlock((void*)addr, (void*)&val, 1);
   1b036:	6e 01       	movw	r12, r28
   1b038:	08 94       	sec
   1b03a:	c1 1c       	adc	r12, r1
   1b03c:	d1 1c       	adc	r13, r1
					kill[taskInfo.portNum] = FALSE;
				}
				else
				{
					// Write all F's to EEPROM
					for (uint16_t addr = startAddr; addr < startAddr + EEPROM_PM_SIZE; addr++)
   1b03e:	0e 15       	cp	r16, r14
   1b040:	1f 05       	cpc	r17, r15
   1b042:	58 f3       	brcs	.-42     	; 0x1b01a <Power+0x146>
						EepromWriteBlock((void*)addr, (void*)&val, 1);

					memset(taskInfo.pBuf, 0, sizeof(POWER_BUFFER));
   1b044:	ee 81       	ldd	r30, Y+6	; 0x06
   1b046:	ff 81       	ldd	r31, Y+7	; 0x07
   1b048:	8f e1       	ldi	r24, 0x1F	; 31
   1b04a:	91 e0       	ldi	r25, 0x01	; 1
   1b04c:	df 01       	movw	r26, r30
   1b04e:	9c 01       	movw	r18, r24
   1b050:	1d 92       	st	X+, r1
   1b052:	21 50       	subi	r18, 0x01	; 1
   1b054:	30 40       	sbci	r19, 0x00	; 0
   1b056:	e1 f7       	brne	.-8      	; 0x1b050 <Power+0x17c>

					// Now end task (ie, just sleep for a really long time)
					while (1) OSTimeDlyHMSM(1,0,0,0);
   1b058:	81 e0       	ldi	r24, 0x01	; 1
   1b05a:	60 e0       	ldi	r22, 0x00	; 0
   1b05c:	40 e0       	ldi	r20, 0x00	; 0
   1b05e:	20 e0       	ldi	r18, 0x00	; 0
   1b060:	30 e0       	ldi	r19, 0x00	; 0
   1b062:	0e 94 2a 2e 	call	0x5c54	; 0x5c54 <OSTimeDlyHMSM>
   1b066:	f8 cf       	rjmp	.-16     	; 0x1b058 <Power+0x184>
            }			
		}
	}

	return;
}
   1b068:	27 96       	adiw	r28, 0x07	; 7
   1b06a:	0f b6       	in	r0, 0x3f	; 63
   1b06c:	f8 94       	cli
   1b06e:	de bf       	out	0x3e, r29	; 62
   1b070:	0f be       	out	0x3f, r0	; 63
   1b072:	cd bf       	out	0x3d, r28	; 61
   1b074:	cf 91       	pop	r28
   1b076:	df 91       	pop	r29
   1b078:	1f 91       	pop	r17
   1b07a:	0f 91       	pop	r16
   1b07c:	ff 90       	pop	r15
   1b07e:	ef 90       	pop	r14
   1b080:	df 90       	pop	r13
   1b082:	cf 90       	pop	r12
   1b084:	08 95       	ret

0001b086 <umult16x16>:
   1b086:	86 9f       	mul	r24, r22
   1b088:	d0 01       	movw	r26, r0
   1b08a:	97 9f       	mul	r25, r23
   1b08c:	f0 01       	movw	r30, r0
   1b08e:	96 9f       	mul	r25, r22
   1b090:	66 27       	eor	r22, r22
   1b092:	b0 0d       	add	r27, r0
   1b094:	e1 1d       	adc	r30, r1
   1b096:	f6 1f       	adc	r31, r22
   1b098:	87 9f       	mul	r24, r23
   1b09a:	b0 0d       	add	r27, r0
   1b09c:	e1 1d       	adc	r30, r1
   1b09e:	f6 1f       	adc	r31, r22
   1b0a0:	bd 01       	movw	r22, r26
   1b0a2:	cf 01       	movw	r24, r30
   1b0a4:	11 24       	eor	r1, r1
   1b0a6:	08 95       	ret

0001b0a8 <smult16x16>:
   1b0a8:	9c 01       	movw	r18, r24
   1b0aa:	86 9f       	mul	r24, r22
   1b0ac:	d0 01       	movw	r26, r0
   1b0ae:	37 02       	muls	r19, r23
   1b0b0:	f0 01       	movw	r30, r0
   1b0b2:	36 03       	mulsu	r19, r22
   1b0b4:	66 27       	eor	r22, r22
   1b0b6:	b0 0d       	add	r27, r0
   1b0b8:	e1 1d       	adc	r30, r1
   1b0ba:	f6 1f       	adc	r31, r22
   1b0bc:	72 03       	mulsu	r23, r18
   1b0be:	b0 0d       	add	r27, r0
   1b0c0:	e1 1d       	adc	r30, r1
   1b0c2:	f6 1f       	adc	r31, r22
   1b0c4:	bd 01       	movw	r22, r26
   1b0c6:	cf 01       	movw	r24, r30
   1b0c8:	11 24       	eor	r1, r1
   1b0ca:	08 95       	ret

0001b0cc <MD5Init>:
   (a) = ROTATE_LEFT ((a), (s)); \
   (a) += (b); \
  }

void MD5Init(MD5_CTX *mdContext)
{
   1b0cc:	fc 01       	movw	r30, r24
  mdContext->i[0] = mdContext->i[1] = (UINT4)0;
   1b0ce:	14 82       	std	Z+4, r1	; 0x04
   1b0d0:	15 82       	std	Z+5, r1	; 0x05
   1b0d2:	16 82       	std	Z+6, r1	; 0x06
   1b0d4:	17 82       	std	Z+7, r1	; 0x07
   1b0d6:	10 82       	st	Z, r1
   1b0d8:	11 82       	std	Z+1, r1	; 0x01
   1b0da:	12 82       	std	Z+2, r1	; 0x02
   1b0dc:	13 82       	std	Z+3, r1	; 0x03

  /* Load magic initialization constants.
   */
  mdContext->buf[0] = (UINT4)0x67452301;
   1b0de:	81 e0       	ldi	r24, 0x01	; 1
   1b0e0:	93 e2       	ldi	r25, 0x23	; 35
   1b0e2:	a5 e4       	ldi	r26, 0x45	; 69
   1b0e4:	b7 e6       	ldi	r27, 0x67	; 103
   1b0e6:	80 87       	std	Z+8, r24	; 0x08
   1b0e8:	91 87       	std	Z+9, r25	; 0x09
   1b0ea:	a2 87       	std	Z+10, r26	; 0x0a
   1b0ec:	b3 87       	std	Z+11, r27	; 0x0b
  mdContext->buf[1] = (UINT4)0xefcdab89;
   1b0ee:	89 e8       	ldi	r24, 0x89	; 137
   1b0f0:	9b ea       	ldi	r25, 0xAB	; 171
   1b0f2:	ad ec       	ldi	r26, 0xCD	; 205
   1b0f4:	bf ee       	ldi	r27, 0xEF	; 239
   1b0f6:	84 87       	std	Z+12, r24	; 0x0c
   1b0f8:	95 87       	std	Z+13, r25	; 0x0d
   1b0fa:	a6 87       	std	Z+14, r26	; 0x0e
   1b0fc:	b7 87       	std	Z+15, r27	; 0x0f
  mdContext->buf[2] = (UINT4)0x98badcfe;
   1b0fe:	8e ef       	ldi	r24, 0xFE	; 254
   1b100:	9c ed       	ldi	r25, 0xDC	; 220
   1b102:	aa eb       	ldi	r26, 0xBA	; 186
   1b104:	b8 e9       	ldi	r27, 0x98	; 152
   1b106:	80 8b       	std	Z+16, r24	; 0x10
   1b108:	91 8b       	std	Z+17, r25	; 0x11
   1b10a:	a2 8b       	std	Z+18, r26	; 0x12
   1b10c:	b3 8b       	std	Z+19, r27	; 0x13
  mdContext->buf[3] = (UINT4)0x10325476;
   1b10e:	86 e7       	ldi	r24, 0x76	; 118
   1b110:	94 e5       	ldi	r25, 0x54	; 84
   1b112:	a2 e3       	ldi	r26, 0x32	; 50
   1b114:	b0 e1       	ldi	r27, 0x10	; 16
   1b116:	84 8b       	std	Z+20, r24	; 0x14
   1b118:	95 8b       	std	Z+21, r25	; 0x15
   1b11a:	a6 8b       	std	Z+22, r26	; 0x16
   1b11c:	b7 8b       	std	Z+23, r27	; 0x17
}
   1b11e:	08 95       	ret

0001b120 <Transform>:
/* Basic MD5 step. Transform buf based on in.
 */
static void Transform (buf, in)
UINT4 *buf;
UINT4 *in;
{
   1b120:	2f 92       	push	r2
   1b122:	3f 92       	push	r3
   1b124:	4f 92       	push	r4
   1b126:	5f 92       	push	r5
   1b128:	6f 92       	push	r6
   1b12a:	7f 92       	push	r7
   1b12c:	8f 92       	push	r8
   1b12e:	9f 92       	push	r9
   1b130:	af 92       	push	r10
   1b132:	bf 92       	push	r11
   1b134:	cf 92       	push	r12
   1b136:	df 92       	push	r13
   1b138:	ef 92       	push	r14
   1b13a:	ff 92       	push	r15
   1b13c:	0f 93       	push	r16
   1b13e:	1f 93       	push	r17
   1b140:	df 93       	push	r29
   1b142:	cf 93       	push	r28
   1b144:	cd b7       	in	r28, 0x3d	; 61
   1b146:	de b7       	in	r29, 0x3e	; 62
   1b148:	ce 57       	subi	r28, 0x7E	; 126
   1b14a:	d0 40       	sbci	r29, 0x00	; 0
   1b14c:	0f b6       	in	r0, 0x3f	; 63
   1b14e:	f8 94       	cli
   1b150:	de bf       	out	0x3e, r29	; 62
   1b152:	0f be       	out	0x3f, r0	; 63
   1b154:	cd bf       	out	0x3d, r28	; 61
   1b156:	ef 96       	adiw	r28, 0x3f	; 63
   1b158:	9f af       	std	Y+63, r25	; 0x3f
   1b15a:	8e af       	std	Y+62, r24	; 0x3e
   1b15c:	ef 97       	sbiw	r28, 0x3f	; 63
  UINT4 a = buf[0], b = buf[1], c = buf[2], d = buf[3];
   1b15e:	dc 01       	movw	r26, r24
   1b160:	6d 90       	ld	r6, X+
   1b162:	7d 90       	ld	r7, X+
   1b164:	8d 90       	ld	r8, X+
   1b166:	9c 90       	ld	r9, X
   1b168:	13 97       	sbiw	r26, 0x03	; 3
   1b16a:	69 ae       	std	Y+57, r6	; 0x39
   1b16c:	7a ae       	std	Y+58, r7	; 0x3a
   1b16e:	8b ae       	std	Y+59, r8	; 0x3b
   1b170:	9c ae       	std	Y+60, r9	; 0x3c
   1b172:	14 96       	adiw	r26, 0x04	; 4
   1b174:	6d 90       	ld	r6, X+
   1b176:	7d 90       	ld	r7, X+
   1b178:	8d 90       	ld	r8, X+
   1b17a:	9c 90       	ld	r9, X
   1b17c:	17 97       	sbiw	r26, 0x07	; 7
   1b17e:	18 96       	adiw	r26, 0x08	; 8
   1b180:	2d 90       	ld	r2, X+
   1b182:	3d 90       	ld	r3, X+
   1b184:	4d 90       	ld	r4, X+
   1b186:	5c 90       	ld	r5, X
   1b188:	1b 97       	sbiw	r26, 0x0b	; 11
   1b18a:	1c 96       	adiw	r26, 0x0c	; 12
   1b18c:	ad 90       	ld	r10, X+
   1b18e:	bd 90       	ld	r11, X+
   1b190:	cd 90       	ld	r12, X+
   1b192:	dc 90       	ld	r13, X
   1b194:	1f 97       	sbiw	r26, 0x0f	; 15
  /* Round 1 */
#define S11 7
#define S12 12
#define S13 17
#define S14 22
  FF ( a, b, c, d, in[ 0], S11, 3614090360); /* 1 */
   1b196:	db 01       	movw	r26, r22
   1b198:	ed 90       	ld	r14, X+
   1b19a:	fd 90       	ld	r15, X+
   1b19c:	0d 91       	ld	r16, X+
   1b19e:	1c 91       	ld	r17, X
   1b1a0:	ed 96       	adiw	r28, 0x3d	; 61
   1b1a2:	ec ae       	std	Y+60, r14	; 0x3c
   1b1a4:	fd ae       	std	Y+61, r15	; 0x3d
   1b1a6:	0e af       	std	Y+62, r16	; 0x3e
   1b1a8:	1f af       	std	Y+63, r17	; 0x3f
   1b1aa:	ed 97       	sbiw	r28, 0x3d	; 61
   1b1ac:	89 ad       	ldd	r24, Y+57	; 0x39
   1b1ae:	9a ad       	ldd	r25, Y+58	; 0x3a
   1b1b0:	ab ad       	ldd	r26, Y+59	; 0x3b
   1b1b2:	bc ad       	ldd	r27, Y+60	; 0x3c
   1b1b4:	88 58       	subi	r24, 0x88	; 136
   1b1b6:	9b 45       	sbci	r25, 0x5B	; 91
   1b1b8:	a5 49       	sbci	r26, 0x95	; 149
   1b1ba:	b8 42       	sbci	r27, 0x28	; 40
   1b1bc:	8e 0d       	add	r24, r14
   1b1be:	9f 1d       	adc	r25, r15
   1b1c0:	a0 1f       	adc	r26, r16
   1b1c2:	b1 1f       	adc	r27, r17
   1b1c4:	a4 01       	movw	r20, r8
   1b1c6:	93 01       	movw	r18, r6
   1b1c8:	20 95       	com	r18
   1b1ca:	30 95       	com	r19
   1b1cc:	40 95       	com	r20
   1b1ce:	50 95       	com	r21
   1b1d0:	2a 21       	and	r18, r10
   1b1d2:	3b 21       	and	r19, r11
   1b1d4:	4c 21       	and	r20, r12
   1b1d6:	5d 21       	and	r21, r13
   1b1d8:	82 01       	movw	r16, r4
   1b1da:	71 01       	movw	r14, r2
   1b1dc:	e6 20       	and	r14, r6
   1b1de:	f7 20       	and	r15, r7
   1b1e0:	08 21       	and	r16, r8
   1b1e2:	19 21       	and	r17, r9
   1b1e4:	2e 29       	or	r18, r14
   1b1e6:	3f 29       	or	r19, r15
   1b1e8:	40 2b       	or	r20, r16
   1b1ea:	51 2b       	or	r21, r17
   1b1ec:	82 0f       	add	r24, r18
   1b1ee:	93 1f       	adc	r25, r19
   1b1f0:	a4 1f       	adc	r26, r20
   1b1f2:	b5 1f       	adc	r27, r21
   1b1f4:	7c 01       	movw	r14, r24
   1b1f6:	8d 01       	movw	r16, r26
   1b1f8:	37 e0       	ldi	r19, 0x07	; 7
   1b1fa:	ee 0c       	add	r14, r14
   1b1fc:	ff 1c       	adc	r15, r15
   1b1fe:	00 1f       	adc	r16, r16
   1b200:	11 1f       	adc	r17, r17
   1b202:	3a 95       	dec	r19
   1b204:	d1 f7       	brne	.-12     	; 0x1b1fa <Transform+0xda>
   1b206:	29 e1       	ldi	r18, 0x19	; 25
   1b208:	b6 95       	lsr	r27
   1b20a:	a7 95       	ror	r26
   1b20c:	97 95       	ror	r25
   1b20e:	87 95       	ror	r24
   1b210:	2a 95       	dec	r18
   1b212:	d1 f7       	brne	.-12     	; 0x1b208 <Transform+0xe8>
   1b214:	e8 2a       	or	r14, r24
   1b216:	f9 2a       	or	r15, r25
   1b218:	0a 2b       	or	r16, r26
   1b21a:	1b 2b       	or	r17, r27
   1b21c:	e6 0c       	add	r14, r6
   1b21e:	f7 1c       	adc	r15, r7
   1b220:	08 1d       	adc	r16, r8
   1b222:	19 1d       	adc	r17, r9
  FF ( d, a, b, c, in[ 1], S12, 3905402710); /* 2 */
   1b224:	db 01       	movw	r26, r22
   1b226:	14 96       	adiw	r26, 0x04	; 4
   1b228:	2d 91       	ld	r18, X+
   1b22a:	3d 91       	ld	r19, X+
   1b22c:	4d 91       	ld	r20, X+
   1b22e:	5c 91       	ld	r21, X
   1b230:	17 97       	sbiw	r26, 0x07	; 7
   1b232:	e9 96       	adiw	r28, 0x39	; 57
   1b234:	2c af       	std	Y+60, r18	; 0x3c
   1b236:	3d af       	std	Y+61, r19	; 0x3d
   1b238:	4e af       	std	Y+62, r20	; 0x3e
   1b23a:	5f af       	std	Y+63, r21	; 0x3f
   1b23c:	e9 97       	sbiw	r28, 0x39	; 57
   1b23e:	26 e5       	ldi	r18, 0x56	; 86
   1b240:	37 eb       	ldi	r19, 0xB7	; 183
   1b242:	47 ec       	ldi	r20, 0xC7	; 199
   1b244:	58 ee       	ldi	r21, 0xE8	; 232
   1b246:	a2 0e       	add	r10, r18
   1b248:	b3 1e       	adc	r11, r19
   1b24a:	c4 1e       	adc	r12, r20
   1b24c:	d5 1e       	adc	r13, r21
   1b24e:	e9 96       	adiw	r28, 0x39	; 57
   1b250:	8c ad       	ldd	r24, Y+60	; 0x3c
   1b252:	9d ad       	ldd	r25, Y+61	; 0x3d
   1b254:	ae ad       	ldd	r26, Y+62	; 0x3e
   1b256:	bf ad       	ldd	r27, Y+63	; 0x3f
   1b258:	e9 97       	sbiw	r28, 0x39	; 57
   1b25a:	a8 0e       	add	r10, r24
   1b25c:	b9 1e       	adc	r11, r25
   1b25e:	ca 1e       	adc	r12, r26
   1b260:	db 1e       	adc	r13, r27
   1b262:	d8 01       	movw	r26, r16
   1b264:	c7 01       	movw	r24, r14
   1b266:	80 95       	com	r24
   1b268:	90 95       	com	r25
   1b26a:	a0 95       	com	r26
   1b26c:	b0 95       	com	r27
   1b26e:	82 21       	and	r24, r2
   1b270:	93 21       	and	r25, r3
   1b272:	a4 21       	and	r26, r4
   1b274:	b5 21       	and	r27, r5
   1b276:	a8 01       	movw	r20, r16
   1b278:	97 01       	movw	r18, r14
   1b27a:	26 21       	and	r18, r6
   1b27c:	37 21       	and	r19, r7
   1b27e:	48 21       	and	r20, r8
   1b280:	59 21       	and	r21, r9
   1b282:	82 2b       	or	r24, r18
   1b284:	93 2b       	or	r25, r19
   1b286:	a4 2b       	or	r26, r20
   1b288:	b5 2b       	or	r27, r21
   1b28a:	a8 0e       	add	r10, r24
   1b28c:	b9 1e       	adc	r11, r25
   1b28e:	ca 1e       	adc	r12, r26
   1b290:	db 1e       	adc	r13, r27
   1b292:	a6 01       	movw	r20, r12
   1b294:	95 01       	movw	r18, r10
   1b296:	ac e0       	ldi	r26, 0x0C	; 12
   1b298:	22 0f       	add	r18, r18
   1b29a:	33 1f       	adc	r19, r19
   1b29c:	44 1f       	adc	r20, r20
   1b29e:	55 1f       	adc	r21, r21
   1b2a0:	aa 95       	dec	r26
   1b2a2:	d1 f7       	brne	.-12     	; 0x1b298 <Transform+0x178>
   1b2a4:	f4 e1       	ldi	r31, 0x14	; 20
   1b2a6:	d6 94       	lsr	r13
   1b2a8:	c7 94       	ror	r12
   1b2aa:	b7 94       	ror	r11
   1b2ac:	a7 94       	ror	r10
   1b2ae:	fa 95       	dec	r31
   1b2b0:	d1 f7       	brne	.-12     	; 0x1b2a6 <Transform+0x186>
   1b2b2:	2a 29       	or	r18, r10
   1b2b4:	3b 29       	or	r19, r11
   1b2b6:	4c 29       	or	r20, r12
   1b2b8:	5d 29       	or	r21, r13
   1b2ba:	2e 0d       	add	r18, r14
   1b2bc:	3f 1d       	adc	r19, r15
   1b2be:	40 1f       	adc	r20, r16
   1b2c0:	51 1f       	adc	r21, r17
   1b2c2:	2d ab       	std	Y+53, r18	; 0x35
   1b2c4:	3e ab       	std	Y+54, r19	; 0x36
   1b2c6:	4f ab       	std	Y+55, r20	; 0x37
   1b2c8:	58 af       	std	Y+56, r21	; 0x38
  FF ( c, d, a, b, in[ 2], S13,  606105819); /* 3 */
   1b2ca:	db 01       	movw	r26, r22
   1b2cc:	18 96       	adiw	r26, 0x08	; 8
   1b2ce:	8d 91       	ld	r24, X+
   1b2d0:	9d 91       	ld	r25, X+
   1b2d2:	0d 90       	ld	r0, X+
   1b2d4:	bc 91       	ld	r27, X
   1b2d6:	a0 2d       	mov	r26, r0
   1b2d8:	e5 96       	adiw	r28, 0x35	; 53
   1b2da:	8c af       	std	Y+60, r24	; 0x3c
   1b2dc:	9d af       	std	Y+61, r25	; 0x3d
   1b2de:	ae af       	std	Y+62, r26	; 0x3e
   1b2e0:	bf af       	std	Y+63, r27	; 0x3f
   1b2e2:	e5 97       	sbiw	r28, 0x35	; 53
   1b2e4:	eb ed       	ldi	r30, 0xDB	; 219
   1b2e6:	ae 2e       	mov	r10, r30
   1b2e8:	e0 e7       	ldi	r30, 0x70	; 112
   1b2ea:	be 2e       	mov	r11, r30
   1b2ec:	e0 e2       	ldi	r30, 0x20	; 32
   1b2ee:	ce 2e       	mov	r12, r30
   1b2f0:	e4 e2       	ldi	r30, 0x24	; 36
   1b2f2:	de 2e       	mov	r13, r30
   1b2f4:	2a 0c       	add	r2, r10
   1b2f6:	3b 1c       	adc	r3, r11
   1b2f8:	4c 1c       	adc	r4, r12
   1b2fa:	5d 1c       	adc	r5, r13
   1b2fc:	28 0e       	add	r2, r24
   1b2fe:	39 1e       	adc	r3, r25
   1b300:	4a 1e       	adc	r4, r26
   1b302:	5b 1e       	adc	r5, r27
   1b304:	da 01       	movw	r26, r20
   1b306:	c9 01       	movw	r24, r18
   1b308:	80 95       	com	r24
   1b30a:	90 95       	com	r25
   1b30c:	a0 95       	com	r26
   1b30e:	b0 95       	com	r27
   1b310:	86 21       	and	r24, r6
   1b312:	97 21       	and	r25, r7
   1b314:	a8 21       	and	r26, r8
   1b316:	b9 21       	and	r27, r9
   1b318:	2e 21       	and	r18, r14
   1b31a:	3f 21       	and	r19, r15
   1b31c:	40 23       	and	r20, r16
   1b31e:	51 23       	and	r21, r17
   1b320:	82 2b       	or	r24, r18
   1b322:	93 2b       	or	r25, r19
   1b324:	a4 2b       	or	r26, r20
   1b326:	b5 2b       	or	r27, r21
   1b328:	28 0e       	add	r2, r24
   1b32a:	39 1e       	adc	r3, r25
   1b32c:	4a 1e       	adc	r4, r26
   1b32e:	5b 1e       	adc	r5, r27
   1b330:	62 01       	movw	r12, r4
   1b332:	51 01       	movw	r10, r2
   1b334:	91 e1       	ldi	r25, 0x11	; 17
   1b336:	aa 0c       	add	r10, r10
   1b338:	bb 1c       	adc	r11, r11
   1b33a:	cc 1c       	adc	r12, r12
   1b33c:	dd 1c       	adc	r13, r13
   1b33e:	9a 95       	dec	r25
   1b340:	d1 f7       	brne	.-12     	; 0x1b336 <Transform+0x216>
   1b342:	8f e0       	ldi	r24, 0x0F	; 15
   1b344:	56 94       	lsr	r5
   1b346:	47 94       	ror	r4
   1b348:	37 94       	ror	r3
   1b34a:	27 94       	ror	r2
   1b34c:	8a 95       	dec	r24
   1b34e:	d1 f7       	brne	.-12     	; 0x1b344 <Transform+0x224>
   1b350:	a2 28       	or	r10, r2
   1b352:	b3 28       	or	r11, r3
   1b354:	c4 28       	or	r12, r4
   1b356:	d5 28       	or	r13, r5
   1b358:	2d a9       	ldd	r18, Y+53	; 0x35
   1b35a:	3e a9       	ldd	r19, Y+54	; 0x36
   1b35c:	4f a9       	ldd	r20, Y+55	; 0x37
   1b35e:	58 ad       	ldd	r21, Y+56	; 0x38
   1b360:	a2 0e       	add	r10, r18
   1b362:	b3 1e       	adc	r11, r19
   1b364:	c4 1e       	adc	r12, r20
   1b366:	d5 1e       	adc	r13, r21
  FF ( b, c, d, a, in[ 3], S14, 3250441966); /* 4 */
   1b368:	db 01       	movw	r26, r22
   1b36a:	1c 96       	adiw	r26, 0x0c	; 12
   1b36c:	8d 91       	ld	r24, X+
   1b36e:	9d 91       	ld	r25, X+
   1b370:	0d 90       	ld	r0, X+
   1b372:	bc 91       	ld	r27, X
   1b374:	a0 2d       	mov	r26, r0
   1b376:	e1 96       	adiw	r28, 0x31	; 49
   1b378:	8c af       	std	Y+60, r24	; 0x3c
   1b37a:	9d af       	std	Y+61, r25	; 0x3d
   1b37c:	ae af       	std	Y+62, r26	; 0x3e
   1b37e:	bf af       	std	Y+63, r27	; 0x3f
   1b380:	e1 97       	sbiw	r28, 0x31	; 49
   1b382:	2e ee       	ldi	r18, 0xEE	; 238
   1b384:	3e ec       	ldi	r19, 0xCE	; 206
   1b386:	4d eb       	ldi	r20, 0xBD	; 189
   1b388:	51 ec       	ldi	r21, 0xC1	; 193
   1b38a:	62 0e       	add	r6, r18
   1b38c:	73 1e       	adc	r7, r19
   1b38e:	84 1e       	adc	r8, r20
   1b390:	95 1e       	adc	r9, r21
   1b392:	68 0e       	add	r6, r24
   1b394:	79 1e       	adc	r7, r25
   1b396:	8a 1e       	adc	r8, r26
   1b398:	9b 1e       	adc	r9, r27
   1b39a:	d6 01       	movw	r26, r12
   1b39c:	c5 01       	movw	r24, r10
   1b39e:	80 95       	com	r24
   1b3a0:	90 95       	com	r25
   1b3a2:	a0 95       	com	r26
   1b3a4:	b0 95       	com	r27
   1b3a6:	8e 21       	and	r24, r14
   1b3a8:	9f 21       	and	r25, r15
   1b3aa:	a0 23       	and	r26, r16
   1b3ac:	b1 23       	and	r27, r17
   1b3ae:	2d a9       	ldd	r18, Y+53	; 0x35
   1b3b0:	3e a9       	ldd	r19, Y+54	; 0x36
   1b3b2:	4f a9       	ldd	r20, Y+55	; 0x37
   1b3b4:	58 ad       	ldd	r21, Y+56	; 0x38
   1b3b6:	2a 21       	and	r18, r10
   1b3b8:	3b 21       	and	r19, r11
   1b3ba:	4c 21       	and	r20, r12
   1b3bc:	5d 21       	and	r21, r13
   1b3be:	82 2b       	or	r24, r18
   1b3c0:	93 2b       	or	r25, r19
   1b3c2:	a4 2b       	or	r26, r20
   1b3c4:	b5 2b       	or	r27, r21
   1b3c6:	68 0e       	add	r6, r24
   1b3c8:	79 1e       	adc	r7, r25
   1b3ca:	8a 1e       	adc	r8, r26
   1b3cc:	9b 1e       	adc	r9, r27
   1b3ce:	13 01       	movw	r2, r6
   1b3d0:	24 01       	movw	r4, r8
   1b3d2:	b6 e1       	ldi	r27, 0x16	; 22
   1b3d4:	22 0c       	add	r2, r2
   1b3d6:	33 1c       	adc	r3, r3
   1b3d8:	44 1c       	adc	r4, r4
   1b3da:	55 1c       	adc	r5, r5
   1b3dc:	ba 95       	dec	r27
   1b3de:	d1 f7       	brne	.-12     	; 0x1b3d4 <Transform+0x2b4>
   1b3e0:	aa e0       	ldi	r26, 0x0A	; 10
   1b3e2:	96 94       	lsr	r9
   1b3e4:	87 94       	ror	r8
   1b3e6:	77 94       	ror	r7
   1b3e8:	67 94       	ror	r6
   1b3ea:	aa 95       	dec	r26
   1b3ec:	d1 f7       	brne	.-12     	; 0x1b3e2 <Transform+0x2c2>
   1b3ee:	26 28       	or	r2, r6
   1b3f0:	37 28       	or	r3, r7
   1b3f2:	48 28       	or	r4, r8
   1b3f4:	59 28       	or	r5, r9
   1b3f6:	2a 0c       	add	r2, r10
   1b3f8:	3b 1c       	adc	r3, r11
   1b3fa:	4c 1c       	adc	r4, r12
   1b3fc:	5d 1c       	adc	r5, r13
  FF ( a, b, c, d, in[ 4], S11, 4118548399); /* 5 */
   1b3fe:	db 01       	movw	r26, r22
   1b400:	50 96       	adiw	r26, 0x10	; 16
   1b402:	8d 91       	ld	r24, X+
   1b404:	9d 91       	ld	r25, X+
   1b406:	0d 90       	ld	r0, X+
   1b408:	bc 91       	ld	r27, X
   1b40a:	a0 2d       	mov	r26, r0
   1b40c:	ad 96       	adiw	r28, 0x2d	; 45
   1b40e:	8c af       	std	Y+60, r24	; 0x3c
   1b410:	9d af       	std	Y+61, r25	; 0x3d
   1b412:	ae af       	std	Y+62, r26	; 0x3e
   1b414:	bf af       	std	Y+63, r27	; 0x3f
   1b416:	ad 97       	sbiw	r28, 0x2d	; 45
   1b418:	81 55       	subi	r24, 0x51	; 81
   1b41a:	90 4f       	sbci	r25, 0xF0	; 240
   1b41c:	a3 48       	sbci	r26, 0x83	; 131
   1b41e:	ba 40       	sbci	r27, 0x0A	; 10
   1b420:	8e 0d       	add	r24, r14
   1b422:	9f 1d       	adc	r25, r15
   1b424:	a0 1f       	adc	r26, r16
   1b426:	b1 1f       	adc	r27, r17
   1b428:	a2 01       	movw	r20, r4
   1b42a:	91 01       	movw	r18, r2
   1b42c:	20 95       	com	r18
   1b42e:	30 95       	com	r19
   1b430:	40 95       	com	r20
   1b432:	50 95       	com	r21
   1b434:	6d a8       	ldd	r6, Y+53	; 0x35
   1b436:	7e a8       	ldd	r7, Y+54	; 0x36
   1b438:	8f a8       	ldd	r8, Y+55	; 0x37
   1b43a:	98 ac       	ldd	r9, Y+56	; 0x38
   1b43c:	26 21       	and	r18, r6
   1b43e:	37 21       	and	r19, r7
   1b440:	48 21       	and	r20, r8
   1b442:	59 21       	and	r21, r9
   1b444:	82 01       	movw	r16, r4
   1b446:	71 01       	movw	r14, r2
   1b448:	ea 20       	and	r14, r10
   1b44a:	fb 20       	and	r15, r11
   1b44c:	0c 21       	and	r16, r12
   1b44e:	1d 21       	and	r17, r13
   1b450:	2e 29       	or	r18, r14
   1b452:	3f 29       	or	r19, r15
   1b454:	40 2b       	or	r20, r16
   1b456:	51 2b       	or	r21, r17
   1b458:	82 0f       	add	r24, r18
   1b45a:	93 1f       	adc	r25, r19
   1b45c:	a4 1f       	adc	r26, r20
   1b45e:	b5 1f       	adc	r27, r21
   1b460:	3c 01       	movw	r6, r24
   1b462:	4d 01       	movw	r8, r26
   1b464:	f7 e0       	ldi	r31, 0x07	; 7
   1b466:	66 0c       	add	r6, r6
   1b468:	77 1c       	adc	r7, r7
   1b46a:	88 1c       	adc	r8, r8
   1b46c:	99 1c       	adc	r9, r9
   1b46e:	fa 95       	dec	r31
   1b470:	d1 f7       	brne	.-12     	; 0x1b466 <Transform+0x346>
   1b472:	e9 e1       	ldi	r30, 0x19	; 25
   1b474:	b6 95       	lsr	r27
   1b476:	a7 95       	ror	r26
   1b478:	97 95       	ror	r25
   1b47a:	87 95       	ror	r24
   1b47c:	ea 95       	dec	r30
   1b47e:	d1 f7       	brne	.-12     	; 0x1b474 <Transform+0x354>
   1b480:	68 2a       	or	r6, r24
   1b482:	79 2a       	or	r7, r25
   1b484:	8a 2a       	or	r8, r26
   1b486:	9b 2a       	or	r9, r27
   1b488:	62 0c       	add	r6, r2
   1b48a:	73 1c       	adc	r7, r3
   1b48c:	84 1c       	adc	r8, r4
   1b48e:	95 1c       	adc	r9, r5
  FF ( d, a, b, c, in[ 5], S12, 1200080426); /* 6 */
   1b490:	db 01       	movw	r26, r22
   1b492:	54 96       	adiw	r26, 0x14	; 20
   1b494:	ed 90       	ld	r14, X+
   1b496:	fd 90       	ld	r15, X+
   1b498:	0d 91       	ld	r16, X+
   1b49a:	1c 91       	ld	r17, X
   1b49c:	57 97       	sbiw	r26, 0x17	; 23
   1b49e:	a9 96       	adiw	r28, 0x29	; 41
   1b4a0:	ec ae       	std	Y+60, r14	; 0x3c
   1b4a2:	fd ae       	std	Y+61, r15	; 0x3d
   1b4a4:	0e af       	std	Y+62, r16	; 0x3e
   1b4a6:	1f af       	std	Y+63, r17	; 0x3f
   1b4a8:	a9 97       	sbiw	r28, 0x29	; 41
   1b4aa:	d8 01       	movw	r26, r16
   1b4ac:	c7 01       	movw	r24, r14
   1b4ae:	86 5d       	subi	r24, 0xD6	; 214
   1b4b0:	99 43       	sbci	r25, 0x39	; 57
   1b4b2:	a8 47       	sbci	r26, 0x78	; 120
   1b4b4:	b8 4b       	sbci	r27, 0xB8	; 184
   1b4b6:	ed a8       	ldd	r14, Y+53	; 0x35
   1b4b8:	fe a8       	ldd	r15, Y+54	; 0x36
   1b4ba:	0f a9       	ldd	r16, Y+55	; 0x37
   1b4bc:	18 ad       	ldd	r17, Y+56	; 0x38
   1b4be:	8e 0d       	add	r24, r14
   1b4c0:	9f 1d       	adc	r25, r15
   1b4c2:	a0 1f       	adc	r26, r16
   1b4c4:	b1 1f       	adc	r27, r17
   1b4c6:	a4 01       	movw	r20, r8
   1b4c8:	93 01       	movw	r18, r6
   1b4ca:	20 95       	com	r18
   1b4cc:	30 95       	com	r19
   1b4ce:	40 95       	com	r20
   1b4d0:	50 95       	com	r21
   1b4d2:	2a 21       	and	r18, r10
   1b4d4:	3b 21       	and	r19, r11
   1b4d6:	4c 21       	and	r20, r12
   1b4d8:	5d 21       	and	r21, r13
   1b4da:	84 01       	movw	r16, r8
   1b4dc:	73 01       	movw	r14, r6
   1b4de:	e2 20       	and	r14, r2
   1b4e0:	f3 20       	and	r15, r3
   1b4e2:	04 21       	and	r16, r4
   1b4e4:	15 21       	and	r17, r5
   1b4e6:	2e 29       	or	r18, r14
   1b4e8:	3f 29       	or	r19, r15
   1b4ea:	40 2b       	or	r20, r16
   1b4ec:	51 2b       	or	r21, r17
   1b4ee:	82 0f       	add	r24, r18
   1b4f0:	93 1f       	adc	r25, r19
   1b4f2:	a4 1f       	adc	r26, r20
   1b4f4:	b5 1f       	adc	r27, r21
   1b4f6:	8c 01       	movw	r16, r24
   1b4f8:	9d 01       	movw	r18, r26
   1b4fa:	5c e0       	ldi	r21, 0x0C	; 12
   1b4fc:	00 0f       	add	r16, r16
   1b4fe:	11 1f       	adc	r17, r17
   1b500:	22 1f       	adc	r18, r18
   1b502:	33 1f       	adc	r19, r19
   1b504:	5a 95       	dec	r21
   1b506:	d1 f7       	brne	.-12     	; 0x1b4fc <Transform+0x3dc>
   1b508:	44 e1       	ldi	r20, 0x14	; 20
   1b50a:	b6 95       	lsr	r27
   1b50c:	a7 95       	ror	r26
   1b50e:	97 95       	ror	r25
   1b510:	87 95       	ror	r24
   1b512:	4a 95       	dec	r20
   1b514:	d1 f7       	brne	.-12     	; 0x1b50a <Transform+0x3ea>
   1b516:	08 2b       	or	r16, r24
   1b518:	19 2b       	or	r17, r25
   1b51a:	2a 2b       	or	r18, r26
   1b51c:	3b 2b       	or	r19, r27
   1b51e:	06 0d       	add	r16, r6
   1b520:	17 1d       	adc	r17, r7
   1b522:	28 1d       	adc	r18, r8
   1b524:	39 1d       	adc	r19, r9
   1b526:	09 ab       	std	Y+49, r16	; 0x31
   1b528:	1a ab       	std	Y+50, r17	; 0x32
   1b52a:	2b ab       	std	Y+51, r18	; 0x33
   1b52c:	3c ab       	std	Y+52, r19	; 0x34
  FF ( c, d, a, b, in[ 6], S13, 2821735955); /* 7 */
   1b52e:	db 01       	movw	r26, r22
   1b530:	58 96       	adiw	r26, 0x18	; 24
   1b532:	2d 91       	ld	r18, X+
   1b534:	3d 91       	ld	r19, X+
   1b536:	4d 91       	ld	r20, X+
   1b538:	5c 91       	ld	r21, X
   1b53a:	5b 97       	sbiw	r26, 0x1b	; 27
   1b53c:	a5 96       	adiw	r28, 0x25	; 37
   1b53e:	2c af       	std	Y+60, r18	; 0x3c
   1b540:	3d af       	std	Y+61, r19	; 0x3d
   1b542:	4e af       	std	Y+62, r20	; 0x3e
   1b544:	5f af       	std	Y+63, r21	; 0x3f
   1b546:	a5 97       	sbiw	r28, 0x25	; 37
   1b548:	da 01       	movw	r26, r20
   1b54a:	c9 01       	movw	r24, r18
   1b54c:	8d 5e       	subi	r24, 0xED	; 237
   1b54e:	99 4b       	sbci	r25, 0xB9	; 185
   1b550:	af 4c       	sbci	r26, 0xCF	; 207
   1b552:	b7 45       	sbci	r27, 0x57	; 87
   1b554:	8a 0d       	add	r24, r10
   1b556:	9b 1d       	adc	r25, r11
   1b558:	ac 1d       	adc	r26, r12
   1b55a:	bd 1d       	adc	r27, r13
   1b55c:	29 a9       	ldd	r18, Y+49	; 0x31
   1b55e:	3a a9       	ldd	r19, Y+50	; 0x32
   1b560:	4b a9       	ldd	r20, Y+51	; 0x33
   1b562:	5c a9       	ldd	r21, Y+52	; 0x34
   1b564:	20 95       	com	r18
   1b566:	30 95       	com	r19
   1b568:	40 95       	com	r20
   1b56a:	50 95       	com	r21
   1b56c:	22 21       	and	r18, r2
   1b56e:	33 21       	and	r19, r3
   1b570:	44 21       	and	r20, r4
   1b572:	55 21       	and	r21, r5
   1b574:	e9 a8       	ldd	r14, Y+49	; 0x31
   1b576:	fa a8       	ldd	r15, Y+50	; 0x32
   1b578:	0b a9       	ldd	r16, Y+51	; 0x33
   1b57a:	1c a9       	ldd	r17, Y+52	; 0x34
   1b57c:	e6 20       	and	r14, r6
   1b57e:	f7 20       	and	r15, r7
   1b580:	08 21       	and	r16, r8
   1b582:	19 21       	and	r17, r9
   1b584:	2e 29       	or	r18, r14
   1b586:	3f 29       	or	r19, r15
   1b588:	40 2b       	or	r20, r16
   1b58a:	51 2b       	or	r21, r17
   1b58c:	82 0f       	add	r24, r18
   1b58e:	93 1f       	adc	r25, r19
   1b590:	a4 1f       	adc	r26, r20
   1b592:	b5 1f       	adc	r27, r21
   1b594:	5c 01       	movw	r10, r24
   1b596:	6d 01       	movw	r12, r26
   1b598:	31 e1       	ldi	r19, 0x11	; 17
   1b59a:	aa 0c       	add	r10, r10
   1b59c:	bb 1c       	adc	r11, r11
   1b59e:	cc 1c       	adc	r12, r12
   1b5a0:	dd 1c       	adc	r13, r13
   1b5a2:	3a 95       	dec	r19
   1b5a4:	d1 f7       	brne	.-12     	; 0x1b59a <Transform+0x47a>
   1b5a6:	2f e0       	ldi	r18, 0x0F	; 15
   1b5a8:	b6 95       	lsr	r27
   1b5aa:	a7 95       	ror	r26
   1b5ac:	97 95       	ror	r25
   1b5ae:	87 95       	ror	r24
   1b5b0:	2a 95       	dec	r18
   1b5b2:	d1 f7       	brne	.-12     	; 0x1b5a8 <Transform+0x488>
   1b5b4:	a8 2a       	or	r10, r24
   1b5b6:	b9 2a       	or	r11, r25
   1b5b8:	ca 2a       	or	r12, r26
   1b5ba:	db 2a       	or	r13, r27
   1b5bc:	e9 a8       	ldd	r14, Y+49	; 0x31
   1b5be:	fa a8       	ldd	r15, Y+50	; 0x32
   1b5c0:	0b a9       	ldd	r16, Y+51	; 0x33
   1b5c2:	1c a9       	ldd	r17, Y+52	; 0x34
   1b5c4:	ae 0c       	add	r10, r14
   1b5c6:	bf 1c       	adc	r11, r15
   1b5c8:	c0 1e       	adc	r12, r16
   1b5ca:	d1 1e       	adc	r13, r17
  FF ( b, c, d, a, in[ 7], S14, 4249261313); /* 8 */
   1b5cc:	db 01       	movw	r26, r22
   1b5ce:	5c 96       	adiw	r26, 0x1c	; 28
   1b5d0:	0d 91       	ld	r16, X+
   1b5d2:	1d 91       	ld	r17, X+
   1b5d4:	2d 91       	ld	r18, X+
   1b5d6:	3c 91       	ld	r19, X
   1b5d8:	5f 97       	sbiw	r26, 0x1f	; 31
   1b5da:	a1 96       	adiw	r28, 0x21	; 33
   1b5dc:	0c af       	std	Y+60, r16	; 0x3c
   1b5de:	1d af       	std	Y+61, r17	; 0x3d
   1b5e0:	2e af       	std	Y+62, r18	; 0x3e
   1b5e2:	3f af       	std	Y+63, r19	; 0x3f
   1b5e4:	a1 97       	sbiw	r28, 0x21	; 33
   1b5e6:	d9 01       	movw	r26, r18
   1b5e8:	c8 01       	movw	r24, r16
   1b5ea:	8f 5f       	subi	r24, 0xFF	; 255
   1b5ec:	9a 46       	sbci	r25, 0x6A	; 106
   1b5ee:	a9 4b       	sbci	r26, 0xB9	; 185
   1b5f0:	b2 40       	sbci	r27, 0x02	; 2
   1b5f2:	82 0d       	add	r24, r2
   1b5f4:	93 1d       	adc	r25, r3
   1b5f6:	a4 1d       	adc	r26, r4
   1b5f8:	b5 1d       	adc	r27, r5
   1b5fa:	a6 01       	movw	r20, r12
   1b5fc:	95 01       	movw	r18, r10
   1b5fe:	20 95       	com	r18
   1b600:	30 95       	com	r19
   1b602:	40 95       	com	r20
   1b604:	50 95       	com	r21
   1b606:	26 21       	and	r18, r6
   1b608:	37 21       	and	r19, r7
   1b60a:	48 21       	and	r20, r8
   1b60c:	59 21       	and	r21, r9
   1b60e:	e9 a8       	ldd	r14, Y+49	; 0x31
   1b610:	fa a8       	ldd	r15, Y+50	; 0x32
   1b612:	0b a9       	ldd	r16, Y+51	; 0x33
   1b614:	1c a9       	ldd	r17, Y+52	; 0x34
   1b616:	ea 20       	and	r14, r10
   1b618:	fb 20       	and	r15, r11
   1b61a:	0c 21       	and	r16, r12
   1b61c:	1d 21       	and	r17, r13
   1b61e:	2e 29       	or	r18, r14
   1b620:	3f 29       	or	r19, r15
   1b622:	40 2b       	or	r20, r16
   1b624:	51 2b       	or	r21, r17
   1b626:	82 0f       	add	r24, r18
   1b628:	93 1f       	adc	r25, r19
   1b62a:	a4 1f       	adc	r26, r20
   1b62c:	b5 1f       	adc	r27, r21
   1b62e:	1c 01       	movw	r2, r24
   1b630:	2d 01       	movw	r4, r26
   1b632:	06 e1       	ldi	r16, 0x16	; 22
   1b634:	22 0c       	add	r2, r2
   1b636:	33 1c       	adc	r3, r3
   1b638:	44 1c       	adc	r4, r4
   1b63a:	55 1c       	adc	r5, r5
   1b63c:	0a 95       	dec	r16
   1b63e:	d1 f7       	brne	.-12     	; 0x1b634 <Transform+0x514>
   1b640:	1a e0       	ldi	r17, 0x0A	; 10
   1b642:	b6 95       	lsr	r27
   1b644:	a7 95       	ror	r26
   1b646:	97 95       	ror	r25
   1b648:	87 95       	ror	r24
   1b64a:	1a 95       	dec	r17
   1b64c:	d1 f7       	brne	.-12     	; 0x1b642 <Transform+0x522>
   1b64e:	28 2a       	or	r2, r24
   1b650:	39 2a       	or	r3, r25
   1b652:	4a 2a       	or	r4, r26
   1b654:	5b 2a       	or	r5, r27
   1b656:	2a 0c       	add	r2, r10
   1b658:	3b 1c       	adc	r3, r11
   1b65a:	4c 1c       	adc	r4, r12
   1b65c:	5d 1c       	adc	r5, r13
  FF ( a, b, c, d, in[ 8], S11, 1770035416); /* 9 */
   1b65e:	db 01       	movw	r26, r22
   1b660:	90 96       	adiw	r26, 0x20	; 32
   1b662:	ed 90       	ld	r14, X+
   1b664:	fd 90       	ld	r15, X+
   1b666:	0d 91       	ld	r16, X+
   1b668:	1c 91       	ld	r17, X
   1b66a:	93 97       	sbiw	r26, 0x23	; 35
   1b66c:	6d 96       	adiw	r28, 0x1d	; 29
   1b66e:	ec ae       	std	Y+60, r14	; 0x3c
   1b670:	fd ae       	std	Y+61, r15	; 0x3d
   1b672:	0e af       	std	Y+62, r16	; 0x3e
   1b674:	1f af       	std	Y+63, r17	; 0x3f
   1b676:	6d 97       	sbiw	r28, 0x1d	; 29
   1b678:	d8 01       	movw	r26, r16
   1b67a:	c7 01       	movw	r24, r14
   1b67c:	88 52       	subi	r24, 0x28	; 40
   1b67e:	97 46       	sbci	r25, 0x67	; 103
   1b680:	af 47       	sbci	r26, 0x7F	; 127
   1b682:	b6 49       	sbci	r27, 0x96	; 150
   1b684:	86 0d       	add	r24, r6
   1b686:	97 1d       	adc	r25, r7
   1b688:	a8 1d       	adc	r26, r8
   1b68a:	b9 1d       	adc	r27, r9
   1b68c:	a2 01       	movw	r20, r4
   1b68e:	91 01       	movw	r18, r2
   1b690:	20 95       	com	r18
   1b692:	30 95       	com	r19
   1b694:	40 95       	com	r20
   1b696:	50 95       	com	r21
   1b698:	69 a8       	ldd	r6, Y+49	; 0x31
   1b69a:	7a a8       	ldd	r7, Y+50	; 0x32
   1b69c:	8b a8       	ldd	r8, Y+51	; 0x33
   1b69e:	9c a8       	ldd	r9, Y+52	; 0x34
   1b6a0:	26 21       	and	r18, r6
   1b6a2:	37 21       	and	r19, r7
   1b6a4:	48 21       	and	r20, r8
   1b6a6:	59 21       	and	r21, r9
   1b6a8:	82 01       	movw	r16, r4
   1b6aa:	71 01       	movw	r14, r2
   1b6ac:	ea 20       	and	r14, r10
   1b6ae:	fb 20       	and	r15, r11
   1b6b0:	0c 21       	and	r16, r12
   1b6b2:	1d 21       	and	r17, r13
   1b6b4:	2e 29       	or	r18, r14
   1b6b6:	3f 29       	or	r19, r15
   1b6b8:	40 2b       	or	r20, r16
   1b6ba:	51 2b       	or	r21, r17
   1b6bc:	82 0f       	add	r24, r18
   1b6be:	93 1f       	adc	r25, r19
   1b6c0:	a4 1f       	adc	r26, r20
   1b6c2:	b5 1f       	adc	r27, r21
   1b6c4:	3c 01       	movw	r6, r24
   1b6c6:	4d 01       	movw	r8, r26
   1b6c8:	f7 e0       	ldi	r31, 0x07	; 7
   1b6ca:	66 0c       	add	r6, r6
   1b6cc:	77 1c       	adc	r7, r7
   1b6ce:	88 1c       	adc	r8, r8
   1b6d0:	99 1c       	adc	r9, r9
   1b6d2:	fa 95       	dec	r31
   1b6d4:	d1 f7       	brne	.-12     	; 0x1b6ca <Transform+0x5aa>
   1b6d6:	e9 e1       	ldi	r30, 0x19	; 25
   1b6d8:	b6 95       	lsr	r27
   1b6da:	a7 95       	ror	r26
   1b6dc:	97 95       	ror	r25
   1b6de:	87 95       	ror	r24
   1b6e0:	ea 95       	dec	r30
   1b6e2:	d1 f7       	brne	.-12     	; 0x1b6d8 <Transform+0x5b8>
   1b6e4:	68 2a       	or	r6, r24
   1b6e6:	79 2a       	or	r7, r25
   1b6e8:	8a 2a       	or	r8, r26
   1b6ea:	9b 2a       	or	r9, r27
   1b6ec:	62 0c       	add	r6, r2
   1b6ee:	73 1c       	adc	r7, r3
   1b6f0:	84 1c       	adc	r8, r4
   1b6f2:	95 1c       	adc	r9, r5
  FF ( d, a, b, c, in[ 9], S12, 2336552879); /* 10 */
   1b6f4:	db 01       	movw	r26, r22
   1b6f6:	94 96       	adiw	r26, 0x24	; 36
   1b6f8:	ed 90       	ld	r14, X+
   1b6fa:	fd 90       	ld	r15, X+
   1b6fc:	0d 91       	ld	r16, X+
   1b6fe:	1c 91       	ld	r17, X
   1b700:	97 97       	sbiw	r26, 0x27	; 39
   1b702:	69 96       	adiw	r28, 0x19	; 25
   1b704:	ec ae       	std	Y+60, r14	; 0x3c
   1b706:	fd ae       	std	Y+61, r15	; 0x3d
   1b708:	0e af       	std	Y+62, r16	; 0x3e
   1b70a:	1f af       	std	Y+63, r17	; 0x3f
   1b70c:	69 97       	sbiw	r28, 0x19	; 25
   1b70e:	d8 01       	movw	r26, r16
   1b710:	c7 01       	movw	r24, r14
   1b712:	81 55       	subi	r24, 0x51	; 81
   1b714:	98 40       	sbci	r25, 0x08	; 8
   1b716:	ab 4b       	sbci	r26, 0xBB	; 187
   1b718:	b4 47       	sbci	r27, 0x74	; 116
   1b71a:	e9 a8       	ldd	r14, Y+49	; 0x31
   1b71c:	fa a8       	ldd	r15, Y+50	; 0x32
   1b71e:	0b a9       	ldd	r16, Y+51	; 0x33
   1b720:	1c a9       	ldd	r17, Y+52	; 0x34
   1b722:	8e 0d       	add	r24, r14
   1b724:	9f 1d       	adc	r25, r15
   1b726:	a0 1f       	adc	r26, r16
   1b728:	b1 1f       	adc	r27, r17
   1b72a:	a4 01       	movw	r20, r8
   1b72c:	93 01       	movw	r18, r6
   1b72e:	20 95       	com	r18
   1b730:	30 95       	com	r19
   1b732:	40 95       	com	r20
   1b734:	50 95       	com	r21
   1b736:	2a 21       	and	r18, r10
   1b738:	3b 21       	and	r19, r11
   1b73a:	4c 21       	and	r20, r12
   1b73c:	5d 21       	and	r21, r13
   1b73e:	84 01       	movw	r16, r8
   1b740:	73 01       	movw	r14, r6
   1b742:	e2 20       	and	r14, r2
   1b744:	f3 20       	and	r15, r3
   1b746:	04 21       	and	r16, r4
   1b748:	15 21       	and	r17, r5
   1b74a:	2e 29       	or	r18, r14
   1b74c:	3f 29       	or	r19, r15
   1b74e:	40 2b       	or	r20, r16
   1b750:	51 2b       	or	r21, r17
   1b752:	82 0f       	add	r24, r18
   1b754:	93 1f       	adc	r25, r19
   1b756:	a4 1f       	adc	r26, r20
   1b758:	b5 1f       	adc	r27, r21
   1b75a:	8c 01       	movw	r16, r24
   1b75c:	9d 01       	movw	r18, r26
   1b75e:	5c e0       	ldi	r21, 0x0C	; 12
   1b760:	00 0f       	add	r16, r16
   1b762:	11 1f       	adc	r17, r17
   1b764:	22 1f       	adc	r18, r18
   1b766:	33 1f       	adc	r19, r19
   1b768:	5a 95       	dec	r21
   1b76a:	d1 f7       	brne	.-12     	; 0x1b760 <Transform+0x640>
   1b76c:	44 e1       	ldi	r20, 0x14	; 20
   1b76e:	b6 95       	lsr	r27
   1b770:	a7 95       	ror	r26
   1b772:	97 95       	ror	r25
   1b774:	87 95       	ror	r24
   1b776:	4a 95       	dec	r20
   1b778:	d1 f7       	brne	.-12     	; 0x1b76e <Transform+0x64e>
   1b77a:	08 2b       	or	r16, r24
   1b77c:	19 2b       	or	r17, r25
   1b77e:	2a 2b       	or	r18, r26
   1b780:	3b 2b       	or	r19, r27
   1b782:	06 0d       	add	r16, r6
   1b784:	17 1d       	adc	r17, r7
   1b786:	28 1d       	adc	r18, r8
   1b788:	39 1d       	adc	r19, r9
   1b78a:	0d a7       	std	Y+45, r16	; 0x2d
   1b78c:	1e a7       	std	Y+46, r17	; 0x2e
   1b78e:	2f a7       	std	Y+47, r18	; 0x2f
   1b790:	38 ab       	std	Y+48, r19	; 0x30
  FF ( c, d, a, b, in[10], S13, 4294925233); /* 11 */
   1b792:	db 01       	movw	r26, r22
   1b794:	98 96       	adiw	r26, 0x28	; 40
   1b796:	2d 91       	ld	r18, X+
   1b798:	3d 91       	ld	r19, X+
   1b79a:	4d 91       	ld	r20, X+
   1b79c:	5c 91       	ld	r21, X
   1b79e:	9b 97       	sbiw	r26, 0x2b	; 43
   1b7a0:	65 96       	adiw	r28, 0x15	; 21
   1b7a2:	2c af       	std	Y+60, r18	; 0x3c
   1b7a4:	3d af       	std	Y+61, r19	; 0x3d
   1b7a6:	4e af       	std	Y+62, r20	; 0x3e
   1b7a8:	5f af       	std	Y+63, r21	; 0x3f
   1b7aa:	65 97       	sbiw	r28, 0x15	; 21
   1b7ac:	da 01       	movw	r26, r20
   1b7ae:	c9 01       	movw	r24, r18
   1b7b0:	8f 54       	subi	r24, 0x4F	; 79
   1b7b2:	94 4a       	sbci	r25, 0xA4	; 164
   1b7b4:	a0 40       	sbci	r26, 0x00	; 0
   1b7b6:	b0 40       	sbci	r27, 0x00	; 0
   1b7b8:	8a 0d       	add	r24, r10
   1b7ba:	9b 1d       	adc	r25, r11
   1b7bc:	ac 1d       	adc	r26, r12
   1b7be:	bd 1d       	adc	r27, r13
   1b7c0:	2d a5       	ldd	r18, Y+45	; 0x2d
   1b7c2:	3e a5       	ldd	r19, Y+46	; 0x2e
   1b7c4:	4f a5       	ldd	r20, Y+47	; 0x2f
   1b7c6:	58 a9       	ldd	r21, Y+48	; 0x30
   1b7c8:	20 95       	com	r18
   1b7ca:	30 95       	com	r19
   1b7cc:	40 95       	com	r20
   1b7ce:	50 95       	com	r21
   1b7d0:	22 21       	and	r18, r2
   1b7d2:	33 21       	and	r19, r3
   1b7d4:	44 21       	and	r20, r4
   1b7d6:	55 21       	and	r21, r5
   1b7d8:	ed a4       	ldd	r14, Y+45	; 0x2d
   1b7da:	fe a4       	ldd	r15, Y+46	; 0x2e
   1b7dc:	0f a5       	ldd	r16, Y+47	; 0x2f
   1b7de:	18 a9       	ldd	r17, Y+48	; 0x30
   1b7e0:	e6 20       	and	r14, r6
   1b7e2:	f7 20       	and	r15, r7
   1b7e4:	08 21       	and	r16, r8
   1b7e6:	19 21       	and	r17, r9
   1b7e8:	2e 29       	or	r18, r14
   1b7ea:	3f 29       	or	r19, r15
   1b7ec:	40 2b       	or	r20, r16
   1b7ee:	51 2b       	or	r21, r17
   1b7f0:	82 0f       	add	r24, r18
   1b7f2:	93 1f       	adc	r25, r19
   1b7f4:	a4 1f       	adc	r26, r20
   1b7f6:	b5 1f       	adc	r27, r21
   1b7f8:	5c 01       	movw	r10, r24
   1b7fa:	6d 01       	movw	r12, r26
   1b7fc:	01 e1       	ldi	r16, 0x11	; 17
   1b7fe:	aa 0c       	add	r10, r10
   1b800:	bb 1c       	adc	r11, r11
   1b802:	cc 1c       	adc	r12, r12
   1b804:	dd 1c       	adc	r13, r13
   1b806:	0a 95       	dec	r16
   1b808:	d1 f7       	brne	.-12     	; 0x1b7fe <Transform+0x6de>
   1b80a:	1f e0       	ldi	r17, 0x0F	; 15
   1b80c:	b6 95       	lsr	r27
   1b80e:	a7 95       	ror	r26
   1b810:	97 95       	ror	r25
   1b812:	87 95       	ror	r24
   1b814:	1a 95       	dec	r17
   1b816:	d1 f7       	brne	.-12     	; 0x1b80c <Transform+0x6ec>
   1b818:	a8 2a       	or	r10, r24
   1b81a:	b9 2a       	or	r11, r25
   1b81c:	ca 2a       	or	r12, r26
   1b81e:	db 2a       	or	r13, r27
   1b820:	ed a4       	ldd	r14, Y+45	; 0x2d
   1b822:	fe a4       	ldd	r15, Y+46	; 0x2e
   1b824:	0f a5       	ldd	r16, Y+47	; 0x2f
   1b826:	18 a9       	ldd	r17, Y+48	; 0x30
   1b828:	ae 0c       	add	r10, r14
   1b82a:	bf 1c       	adc	r11, r15
   1b82c:	c0 1e       	adc	r12, r16
   1b82e:	d1 1e       	adc	r13, r17
  FF ( b, c, d, a, in[11], S14, 2304563134); /* 12 */
   1b830:	db 01       	movw	r26, r22
   1b832:	9c 96       	adiw	r26, 0x2c	; 44
   1b834:	0d 91       	ld	r16, X+
   1b836:	1d 91       	ld	r17, X+
   1b838:	2d 91       	ld	r18, X+
   1b83a:	3c 91       	ld	r19, X
   1b83c:	9f 97       	sbiw	r26, 0x2f	; 47
   1b83e:	61 96       	adiw	r28, 0x11	; 17
   1b840:	0c af       	std	Y+60, r16	; 0x3c
   1b842:	1d af       	std	Y+61, r17	; 0x3d
   1b844:	2e af       	std	Y+62, r18	; 0x3e
   1b846:	3f af       	std	Y+63, r19	; 0x3f
   1b848:	61 97       	sbiw	r28, 0x11	; 17
   1b84a:	d9 01       	movw	r26, r18
   1b84c:	c8 01       	movw	r24, r16
   1b84e:	82 54       	subi	r24, 0x42	; 66
   1b850:	98 42       	sbci	r25, 0x28	; 40
   1b852:	a3 4a       	sbci	r26, 0xA3	; 163
   1b854:	b6 47       	sbci	r27, 0x76	; 118
   1b856:	82 0d       	add	r24, r2
   1b858:	93 1d       	adc	r25, r3
   1b85a:	a4 1d       	adc	r26, r4
   1b85c:	b5 1d       	adc	r27, r5
   1b85e:	a6 01       	movw	r20, r12
   1b860:	95 01       	movw	r18, r10
   1b862:	20 95       	com	r18
   1b864:	30 95       	com	r19
   1b866:	40 95       	com	r20
   1b868:	50 95       	com	r21
   1b86a:	26 21       	and	r18, r6
   1b86c:	37 21       	and	r19, r7
   1b86e:	48 21       	and	r20, r8
   1b870:	59 21       	and	r21, r9
   1b872:	ed a4       	ldd	r14, Y+45	; 0x2d
   1b874:	fe a4       	ldd	r15, Y+46	; 0x2e
   1b876:	0f a5       	ldd	r16, Y+47	; 0x2f
   1b878:	18 a9       	ldd	r17, Y+48	; 0x30
   1b87a:	ea 20       	and	r14, r10
   1b87c:	fb 20       	and	r15, r11
   1b87e:	0c 21       	and	r16, r12
   1b880:	1d 21       	and	r17, r13
   1b882:	2e 29       	or	r18, r14
   1b884:	3f 29       	or	r19, r15
   1b886:	40 2b       	or	r20, r16
   1b888:	51 2b       	or	r21, r17
   1b88a:	82 0f       	add	r24, r18
   1b88c:	93 1f       	adc	r25, r19
   1b88e:	a4 1f       	adc	r26, r20
   1b890:	b5 1f       	adc	r27, r21
   1b892:	7c 01       	movw	r14, r24
   1b894:	8d 01       	movw	r16, r26
   1b896:	f6 e1       	ldi	r31, 0x16	; 22
   1b898:	ee 0c       	add	r14, r14
   1b89a:	ff 1c       	adc	r15, r15
   1b89c:	00 1f       	adc	r16, r16
   1b89e:	11 1f       	adc	r17, r17
   1b8a0:	fa 95       	dec	r31
   1b8a2:	d1 f7       	brne	.-12     	; 0x1b898 <Transform+0x778>
   1b8a4:	ea e0       	ldi	r30, 0x0A	; 10
   1b8a6:	b6 95       	lsr	r27
   1b8a8:	a7 95       	ror	r26
   1b8aa:	97 95       	ror	r25
   1b8ac:	87 95       	ror	r24
   1b8ae:	ea 95       	dec	r30
   1b8b0:	d1 f7       	brne	.-12     	; 0x1b8a6 <Transform+0x786>
   1b8b2:	e8 2a       	or	r14, r24
   1b8b4:	f9 2a       	or	r15, r25
   1b8b6:	0a 2b       	or	r16, r26
   1b8b8:	1b 2b       	or	r17, r27
   1b8ba:	ea 0c       	add	r14, r10
   1b8bc:	fb 1c       	adc	r15, r11
   1b8be:	0c 1d       	adc	r16, r12
   1b8c0:	1d 1d       	adc	r17, r13
   1b8c2:	e9 a6       	std	Y+41, r14	; 0x29
   1b8c4:	fa a6       	std	Y+42, r15	; 0x2a
   1b8c6:	0b a7       	std	Y+43, r16	; 0x2b
   1b8c8:	1c a7       	std	Y+44, r17	; 0x2c
  FF ( a, b, c, d, in[12], S11, 1804603682); /* 13 */
   1b8ca:	db 01       	movw	r26, r22
   1b8cc:	d0 96       	adiw	r26, 0x30	; 48
   1b8ce:	0d 91       	ld	r16, X+
   1b8d0:	1d 91       	ld	r17, X+
   1b8d2:	2d 91       	ld	r18, X+
   1b8d4:	3c 91       	ld	r19, X
   1b8d6:	d3 97       	sbiw	r26, 0x33	; 51
   1b8d8:	2d 96       	adiw	r28, 0x0d	; 13
   1b8da:	0c af       	std	Y+60, r16	; 0x3c
   1b8dc:	1d af       	std	Y+61, r17	; 0x3d
   1b8de:	2e af       	std	Y+62, r18	; 0x3e
   1b8e0:	3f af       	std	Y+63, r19	; 0x3f
   1b8e2:	2d 97       	sbiw	r28, 0x0d	; 13
   1b8e4:	d9 01       	movw	r26, r18
   1b8e6:	c8 01       	movw	r24, r16
   1b8e8:	8e 5d       	subi	r24, 0xDE	; 222
   1b8ea:	9e 4e       	sbci	r25, 0xEE	; 238
   1b8ec:	af 46       	sbci	r26, 0x6F	; 111
   1b8ee:	b4 49       	sbci	r27, 0x94	; 148
   1b8f0:	86 0d       	add	r24, r6
   1b8f2:	97 1d       	adc	r25, r7
   1b8f4:	a8 1d       	adc	r26, r8
   1b8f6:	b9 1d       	adc	r27, r9
   1b8f8:	29 a5       	ldd	r18, Y+41	; 0x29
   1b8fa:	3a a5       	ldd	r19, Y+42	; 0x2a
   1b8fc:	4b a5       	ldd	r20, Y+43	; 0x2b
   1b8fe:	5c a5       	ldd	r21, Y+44	; 0x2c
   1b900:	20 95       	com	r18
   1b902:	30 95       	com	r19
   1b904:	40 95       	com	r20
   1b906:	50 95       	com	r21
   1b908:	6d a4       	ldd	r6, Y+45	; 0x2d
   1b90a:	7e a4       	ldd	r7, Y+46	; 0x2e
   1b90c:	8f a4       	ldd	r8, Y+47	; 0x2f
   1b90e:	98 a8       	ldd	r9, Y+48	; 0x30
   1b910:	26 21       	and	r18, r6
   1b912:	37 21       	and	r19, r7
   1b914:	48 21       	and	r20, r8
   1b916:	59 21       	and	r21, r9
   1b918:	e9 a4       	ldd	r14, Y+41	; 0x29
   1b91a:	fa a4       	ldd	r15, Y+42	; 0x2a
   1b91c:	0b a5       	ldd	r16, Y+43	; 0x2b
   1b91e:	1c a5       	ldd	r17, Y+44	; 0x2c
   1b920:	ea 20       	and	r14, r10
   1b922:	fb 20       	and	r15, r11
   1b924:	0c 21       	and	r16, r12
   1b926:	1d 21       	and	r17, r13
   1b928:	2e 29       	or	r18, r14
   1b92a:	3f 29       	or	r19, r15
   1b92c:	40 2b       	or	r20, r16
   1b92e:	51 2b       	or	r21, r17
   1b930:	82 0f       	add	r24, r18
   1b932:	93 1f       	adc	r25, r19
   1b934:	a4 1f       	adc	r26, r20
   1b936:	b5 1f       	adc	r27, r21
   1b938:	1c 01       	movw	r2, r24
   1b93a:	2d 01       	movw	r4, r26
   1b93c:	57 e0       	ldi	r21, 0x07	; 7
   1b93e:	22 0c       	add	r2, r2
   1b940:	33 1c       	adc	r3, r3
   1b942:	44 1c       	adc	r4, r4
   1b944:	55 1c       	adc	r5, r5
   1b946:	5a 95       	dec	r21
   1b948:	d1 f7       	brne	.-12     	; 0x1b93e <Transform+0x81e>
   1b94a:	49 e1       	ldi	r20, 0x19	; 25
   1b94c:	b6 95       	lsr	r27
   1b94e:	a7 95       	ror	r26
   1b950:	97 95       	ror	r25
   1b952:	87 95       	ror	r24
   1b954:	4a 95       	dec	r20
   1b956:	d1 f7       	brne	.-12     	; 0x1b94c <Transform+0x82c>
   1b958:	28 2a       	or	r2, r24
   1b95a:	39 2a       	or	r3, r25
   1b95c:	4a 2a       	or	r4, r26
   1b95e:	5b 2a       	or	r5, r27
   1b960:	e9 a4       	ldd	r14, Y+41	; 0x29
   1b962:	fa a4       	ldd	r15, Y+42	; 0x2a
   1b964:	0b a5       	ldd	r16, Y+43	; 0x2b
   1b966:	1c a5       	ldd	r17, Y+44	; 0x2c
   1b968:	2e 0c       	add	r2, r14
   1b96a:	3f 1c       	adc	r3, r15
   1b96c:	40 1e       	adc	r4, r16
   1b96e:	51 1e       	adc	r5, r17
  FF ( d, a, b, c, in[13], S12, 4254626195); /* 14 */
   1b970:	db 01       	movw	r26, r22
   1b972:	d4 96       	adiw	r26, 0x34	; 52
   1b974:	0d 91       	ld	r16, X+
   1b976:	1d 91       	ld	r17, X+
   1b978:	2d 91       	ld	r18, X+
   1b97a:	3c 91       	ld	r19, X
   1b97c:	d7 97       	sbiw	r26, 0x37	; 55
   1b97e:	29 96       	adiw	r28, 0x09	; 9
   1b980:	0c af       	std	Y+60, r16	; 0x3c
   1b982:	1d af       	std	Y+61, r17	; 0x3d
   1b984:	2e af       	std	Y+62, r18	; 0x3e
   1b986:	3f af       	std	Y+63, r19	; 0x3f
   1b988:	29 97       	sbiw	r28, 0x09	; 9
   1b98a:	d9 01       	movw	r26, r18
   1b98c:	c8 01       	movw	r24, r16
   1b98e:	8d 56       	subi	r24, 0x6D	; 109
   1b990:	9e 48       	sbci	r25, 0x8E	; 142
   1b992:	a7 46       	sbci	r26, 0x67	; 103
   1b994:	b2 40       	sbci	r27, 0x02	; 2
   1b996:	86 0d       	add	r24, r6
   1b998:	97 1d       	adc	r25, r7
   1b99a:	a8 1d       	adc	r26, r8
   1b99c:	b9 1d       	adc	r27, r9
   1b99e:	a2 01       	movw	r20, r4
   1b9a0:	91 01       	movw	r18, r2
   1b9a2:	20 95       	com	r18
   1b9a4:	30 95       	com	r19
   1b9a6:	40 95       	com	r20
   1b9a8:	50 95       	com	r21
   1b9aa:	2a 21       	and	r18, r10
   1b9ac:	3b 21       	and	r19, r11
   1b9ae:	4c 21       	and	r20, r12
   1b9b0:	5d 21       	and	r21, r13
   1b9b2:	e9 a4       	ldd	r14, Y+41	; 0x29
   1b9b4:	fa a4       	ldd	r15, Y+42	; 0x2a
   1b9b6:	0b a5       	ldd	r16, Y+43	; 0x2b
   1b9b8:	1c a5       	ldd	r17, Y+44	; 0x2c
   1b9ba:	e2 20       	and	r14, r2
   1b9bc:	f3 20       	and	r15, r3
   1b9be:	04 21       	and	r16, r4
   1b9c0:	15 21       	and	r17, r5
   1b9c2:	2e 29       	or	r18, r14
   1b9c4:	3f 29       	or	r19, r15
   1b9c6:	40 2b       	or	r20, r16
   1b9c8:	51 2b       	or	r21, r17
   1b9ca:	82 0f       	add	r24, r18
   1b9cc:	93 1f       	adc	r25, r19
   1b9ce:	a4 1f       	adc	r26, r20
   1b9d0:	b5 1f       	adc	r27, r21
   1b9d2:	3c 01       	movw	r6, r24
   1b9d4:	4d 01       	movw	r8, r26
   1b9d6:	3c e0       	ldi	r19, 0x0C	; 12
   1b9d8:	66 0c       	add	r6, r6
   1b9da:	77 1c       	adc	r7, r7
   1b9dc:	88 1c       	adc	r8, r8
   1b9de:	99 1c       	adc	r9, r9
   1b9e0:	3a 95       	dec	r19
   1b9e2:	d1 f7       	brne	.-12     	; 0x1b9d8 <Transform+0x8b8>
   1b9e4:	24 e1       	ldi	r18, 0x14	; 20
   1b9e6:	b6 95       	lsr	r27
   1b9e8:	a7 95       	ror	r26
   1b9ea:	97 95       	ror	r25
   1b9ec:	87 95       	ror	r24
   1b9ee:	2a 95       	dec	r18
   1b9f0:	d1 f7       	brne	.-12     	; 0x1b9e6 <Transform+0x8c6>
   1b9f2:	68 2a       	or	r6, r24
   1b9f4:	79 2a       	or	r7, r25
   1b9f6:	8a 2a       	or	r8, r26
   1b9f8:	9b 2a       	or	r9, r27
   1b9fa:	62 0c       	add	r6, r2
   1b9fc:	73 1c       	adc	r7, r3
   1b9fe:	84 1c       	adc	r8, r4
   1ba00:	95 1c       	adc	r9, r5
   1ba02:	6d a2       	std	Y+37, r6	; 0x25
   1ba04:	7e a2       	std	Y+38, r7	; 0x26
   1ba06:	8f a2       	std	Y+39, r8	; 0x27
   1ba08:	98 a6       	std	Y+40, r9	; 0x28
  FF ( c, d, a, b, in[14], S13, 2792965006); /* 15 */
   1ba0a:	60 94       	com	r6
   1ba0c:	70 94       	com	r7
   1ba0e:	80 94       	com	r8
   1ba10:	90 94       	com	r9
   1ba12:	69 a2       	std	Y+33, r6	; 0x21
   1ba14:	7a a2       	std	Y+34, r7	; 0x22
   1ba16:	8b a2       	std	Y+35, r8	; 0x23
   1ba18:	9c a2       	std	Y+36, r9	; 0x24
   1ba1a:	db 01       	movw	r26, r22
   1ba1c:	d8 96       	adiw	r26, 0x38	; 56
   1ba1e:	ed 90       	ld	r14, X+
   1ba20:	fd 90       	ld	r15, X+
   1ba22:	0d 91       	ld	r16, X+
   1ba24:	1c 91       	ld	r17, X
   1ba26:	db 97       	sbiw	r26, 0x3b	; 59
   1ba28:	25 96       	adiw	r28, 0x05	; 5
   1ba2a:	ec ae       	std	Y+60, r14	; 0x3c
   1ba2c:	fd ae       	std	Y+61, r15	; 0x3d
   1ba2e:	0e af       	std	Y+62, r16	; 0x3e
   1ba30:	1f af       	std	Y+63, r17	; 0x3f
   1ba32:	25 97       	sbiw	r28, 0x05	; 5
   1ba34:	d8 01       	movw	r26, r16
   1ba36:	c7 01       	movw	r24, r14
   1ba38:	82 57       	subi	r24, 0x72	; 114
   1ba3a:	9c 4b       	sbci	r25, 0xBC	; 188
   1ba3c:	a6 48       	sbci	r26, 0x86	; 134
   1ba3e:	b9 45       	sbci	r27, 0x59	; 89
   1ba40:	8a 0d       	add	r24, r10
   1ba42:	9b 1d       	adc	r25, r11
   1ba44:	ac 1d       	adc	r26, r12
   1ba46:	bd 1d       	adc	r27, r13
   1ba48:	a4 01       	movw	r20, r8
   1ba4a:	93 01       	movw	r18, r6
   1ba4c:	69 a4       	ldd	r6, Y+41	; 0x29
   1ba4e:	7a a4       	ldd	r7, Y+42	; 0x2a
   1ba50:	8b a4       	ldd	r8, Y+43	; 0x2b
   1ba52:	9c a4       	ldd	r9, Y+44	; 0x2c
   1ba54:	26 21       	and	r18, r6
   1ba56:	37 21       	and	r19, r7
   1ba58:	48 21       	and	r20, r8
   1ba5a:	59 21       	and	r21, r9
   1ba5c:	ed a0       	ldd	r14, Y+37	; 0x25
   1ba5e:	fe a0       	ldd	r15, Y+38	; 0x26
   1ba60:	0f a1       	ldd	r16, Y+39	; 0x27
   1ba62:	18 a5       	ldd	r17, Y+40	; 0x28
   1ba64:	e2 20       	and	r14, r2
   1ba66:	f3 20       	and	r15, r3
   1ba68:	04 21       	and	r16, r4
   1ba6a:	15 21       	and	r17, r5
   1ba6c:	2e 29       	or	r18, r14
   1ba6e:	3f 29       	or	r19, r15
   1ba70:	40 2b       	or	r20, r16
   1ba72:	51 2b       	or	r21, r17
   1ba74:	82 0f       	add	r24, r18
   1ba76:	93 1f       	adc	r25, r19
   1ba78:	a4 1f       	adc	r26, r20
   1ba7a:	b5 1f       	adc	r27, r21
   1ba7c:	3c 01       	movw	r6, r24
   1ba7e:	4d 01       	movw	r8, r26
   1ba80:	01 e1       	ldi	r16, 0x11	; 17
   1ba82:	66 0c       	add	r6, r6
   1ba84:	77 1c       	adc	r7, r7
   1ba86:	88 1c       	adc	r8, r8
   1ba88:	99 1c       	adc	r9, r9
   1ba8a:	0a 95       	dec	r16
   1ba8c:	d1 f7       	brne	.-12     	; 0x1ba82 <Transform+0x962>
   1ba8e:	1f e0       	ldi	r17, 0x0F	; 15
   1ba90:	b6 95       	lsr	r27
   1ba92:	a7 95       	ror	r26
   1ba94:	97 95       	ror	r25
   1ba96:	87 95       	ror	r24
   1ba98:	1a 95       	dec	r17
   1ba9a:	d1 f7       	brne	.-12     	; 0x1ba90 <Transform+0x970>
   1ba9c:	68 2a       	or	r6, r24
   1ba9e:	79 2a       	or	r7, r25
   1baa0:	8a 2a       	or	r8, r26
   1baa2:	9b 2a       	or	r9, r27
   1baa4:	ad a0       	ldd	r10, Y+37	; 0x25
   1baa6:	be a0       	ldd	r11, Y+38	; 0x26
   1baa8:	cf a0       	ldd	r12, Y+39	; 0x27
   1baaa:	d8 a4       	ldd	r13, Y+40	; 0x28
   1baac:	6a 0c       	add	r6, r10
   1baae:	7b 1c       	adc	r7, r11
   1bab0:	8c 1c       	adc	r8, r12
   1bab2:	9d 1c       	adc	r9, r13
  FF ( b, c, d, a, in[15], S14, 1236535329); /* 16 */
   1bab4:	74 01       	movw	r14, r8
   1bab6:	63 01       	movw	r12, r6
   1bab8:	c0 94       	com	r12
   1baba:	d0 94       	com	r13
   1babc:	e0 94       	com	r14
   1babe:	f0 94       	com	r15
   1bac0:	cd 8e       	std	Y+29, r12	; 0x1d
   1bac2:	de 8e       	std	Y+30, r13	; 0x1e
   1bac4:	ef 8e       	std	Y+31, r14	; 0x1f
   1bac6:	f8 a2       	std	Y+32, r15	; 0x20
   1bac8:	db 01       	movw	r26, r22
   1baca:	dc 96       	adiw	r26, 0x3c	; 60
   1bacc:	ed 90       	ld	r14, X+
   1bace:	fd 90       	ld	r15, X+
   1bad0:	0d 91       	ld	r16, X+
   1bad2:	1c 91       	ld	r17, X
   1bad4:	df 97       	sbiw	r26, 0x3f	; 63
   1bad6:	21 96       	adiw	r28, 0x01	; 1
   1bad8:	ec ae       	std	Y+60, r14	; 0x3c
   1bada:	fd ae       	std	Y+61, r15	; 0x3d
   1badc:	0e af       	std	Y+62, r16	; 0x3e
   1bade:	1f af       	std	Y+63, r17	; 0x3f
   1bae0:	21 97       	sbiw	r28, 0x01	; 1
   1bae2:	d8 01       	movw	r26, r16
   1bae4:	c7 01       	movw	r24, r14
   1bae6:	8f 5d       	subi	r24, 0xDF	; 223
   1bae8:	97 4f       	sbci	r25, 0xF7	; 247
   1baea:	ab 44       	sbci	r26, 0x4B	; 75
   1baec:	b6 4b       	sbci	r27, 0xB6	; 182
   1baee:	a9 a4       	ldd	r10, Y+41	; 0x29
   1baf0:	ba a4       	ldd	r11, Y+42	; 0x2a
   1baf2:	cb a4       	ldd	r12, Y+43	; 0x2b
   1baf4:	dc a4       	ldd	r13, Y+44	; 0x2c
   1baf6:	8a 0d       	add	r24, r10
   1baf8:	9b 1d       	adc	r25, r11
   1bafa:	ac 1d       	adc	r26, r12
   1bafc:	bd 1d       	adc	r27, r13
   1bafe:	2d 8d       	ldd	r18, Y+29	; 0x1d
   1bb00:	3e 8d       	ldd	r19, Y+30	; 0x1e
   1bb02:	4f 8d       	ldd	r20, Y+31	; 0x1f
   1bb04:	58 a1       	ldd	r21, Y+32	; 0x20
   1bb06:	22 21       	and	r18, r2
   1bb08:	33 21       	and	r19, r3
   1bb0a:	44 21       	and	r20, r4
   1bb0c:	55 21       	and	r21, r5
   1bb0e:	ed a0       	ldd	r14, Y+37	; 0x25
   1bb10:	fe a0       	ldd	r15, Y+38	; 0x26
   1bb12:	0f a1       	ldd	r16, Y+39	; 0x27
   1bb14:	18 a5       	ldd	r17, Y+40	; 0x28
   1bb16:	e6 20       	and	r14, r6
   1bb18:	f7 20       	and	r15, r7
   1bb1a:	08 21       	and	r16, r8
   1bb1c:	19 21       	and	r17, r9
   1bb1e:	2e 29       	or	r18, r14
   1bb20:	3f 29       	or	r19, r15
   1bb22:	40 2b       	or	r20, r16
   1bb24:	51 2b       	or	r21, r17
   1bb26:	82 0f       	add	r24, r18
   1bb28:	93 1f       	adc	r25, r19
   1bb2a:	a4 1f       	adc	r26, r20
   1bb2c:	b5 1f       	adc	r27, r21
   1bb2e:	5c 01       	movw	r10, r24
   1bb30:	6d 01       	movw	r12, r26
   1bb32:	f6 e1       	ldi	r31, 0x16	; 22
   1bb34:	aa 0c       	add	r10, r10
   1bb36:	bb 1c       	adc	r11, r11
   1bb38:	cc 1c       	adc	r12, r12
   1bb3a:	dd 1c       	adc	r13, r13
   1bb3c:	fa 95       	dec	r31
   1bb3e:	d1 f7       	brne	.-12     	; 0x1bb34 <Transform+0xa14>
   1bb40:	ea e0       	ldi	r30, 0x0A	; 10
   1bb42:	b6 95       	lsr	r27
   1bb44:	a7 95       	ror	r26
   1bb46:	97 95       	ror	r25
   1bb48:	87 95       	ror	r24
   1bb4a:	ea 95       	dec	r30
   1bb4c:	d1 f7       	brne	.-12     	; 0x1bb42 <Transform+0xa22>
   1bb4e:	a8 2a       	or	r10, r24
   1bb50:	b9 2a       	or	r11, r25
   1bb52:	ca 2a       	or	r12, r26
   1bb54:	db 2a       	or	r13, r27
   1bb56:	a6 0c       	add	r10, r6
   1bb58:	b7 1c       	adc	r11, r7
   1bb5a:	c8 1c       	adc	r12, r8
   1bb5c:	d9 1c       	adc	r13, r9
  /* Round 2 */
#define S21 5
#define S22 9
#define S23 14
#define S24 20
  GG ( a, b, c, d, in[ 1], S21, 4129170786); /* 17 */
   1bb5e:	e9 96       	adiw	r28, 0x39	; 57
   1bb60:	8c ad       	ldd	r24, Y+60	; 0x3c
   1bb62:	9d ad       	ldd	r25, Y+61	; 0x3d
   1bb64:	ae ad       	ldd	r26, Y+62	; 0x3e
   1bb66:	bf ad       	ldd	r27, Y+63	; 0x3f
   1bb68:	e9 97       	sbiw	r28, 0x39	; 57
   1bb6a:	8e 59       	subi	r24, 0x9E	; 158
   1bb6c:	9a 4d       	sbci	r25, 0xDA	; 218
   1bb6e:	a1 4e       	sbci	r26, 0xE1	; 225
   1bb70:	b9 40       	sbci	r27, 0x09	; 9
   1bb72:	82 0d       	add	r24, r2
   1bb74:	93 1d       	adc	r25, r3
   1bb76:	a4 1d       	adc	r26, r4
   1bb78:	b5 1d       	adc	r27, r5
   1bb7a:	2d a1       	ldd	r18, Y+37	; 0x25
   1bb7c:	3e a1       	ldd	r19, Y+38	; 0x26
   1bb7e:	4f a1       	ldd	r20, Y+39	; 0x27
   1bb80:	58 a5       	ldd	r21, Y+40	; 0x28
   1bb82:	2a 21       	and	r18, r10
   1bb84:	3b 21       	and	r19, r11
   1bb86:	4c 21       	and	r20, r12
   1bb88:	5d 21       	and	r21, r13
   1bb8a:	e9 a0       	ldd	r14, Y+33	; 0x21
   1bb8c:	fa a0       	ldd	r15, Y+34	; 0x22
   1bb8e:	0b a1       	ldd	r16, Y+35	; 0x23
   1bb90:	1c a1       	ldd	r17, Y+36	; 0x24
   1bb92:	e6 20       	and	r14, r6
   1bb94:	f7 20       	and	r15, r7
   1bb96:	08 21       	and	r16, r8
   1bb98:	19 21       	and	r17, r9
   1bb9a:	2e 29       	or	r18, r14
   1bb9c:	3f 29       	or	r19, r15
   1bb9e:	40 2b       	or	r20, r16
   1bba0:	51 2b       	or	r21, r17
   1bba2:	82 0f       	add	r24, r18
   1bba4:	93 1f       	adc	r25, r19
   1bba6:	a4 1f       	adc	r26, r20
   1bba8:	b5 1f       	adc	r27, r21
   1bbaa:	1c 01       	movw	r2, r24
   1bbac:	2d 01       	movw	r4, r26
   1bbae:	75 e0       	ldi	r23, 0x05	; 5
   1bbb0:	22 0c       	add	r2, r2
   1bbb2:	33 1c       	adc	r3, r3
   1bbb4:	44 1c       	adc	r4, r4
   1bbb6:	55 1c       	adc	r5, r5
   1bbb8:	7a 95       	dec	r23
   1bbba:	d1 f7       	brne	.-12     	; 0x1bbb0 <Transform+0xa90>
   1bbbc:	6b e1       	ldi	r22, 0x1B	; 27
   1bbbe:	b6 95       	lsr	r27
   1bbc0:	a7 95       	ror	r26
   1bbc2:	97 95       	ror	r25
   1bbc4:	87 95       	ror	r24
   1bbc6:	6a 95       	dec	r22
   1bbc8:	d1 f7       	brne	.-12     	; 0x1bbbe <Transform+0xa9e>
   1bbca:	28 2a       	or	r2, r24
   1bbcc:	39 2a       	or	r3, r25
   1bbce:	4a 2a       	or	r4, r26
   1bbd0:	5b 2a       	or	r5, r27
   1bbd2:	2a 0c       	add	r2, r10
   1bbd4:	3b 1c       	adc	r3, r11
   1bbd6:	4c 1c       	adc	r4, r12
   1bbd8:	5d 1c       	adc	r5, r13
  GG ( d, a, b, c, in[ 6], S22, 3225465664); /* 18 */
   1bbda:	a5 96       	adiw	r28, 0x25	; 37
   1bbdc:	8c ad       	ldd	r24, Y+60	; 0x3c
   1bbde:	9d ad       	ldd	r25, Y+61	; 0x3d
   1bbe0:	ae ad       	ldd	r26, Y+62	; 0x3e
   1bbe2:	bf ad       	ldd	r27, Y+63	; 0x3f
   1bbe4:	a5 97       	sbiw	r28, 0x25	; 37
   1bbe6:	80 5c       	subi	r24, 0xC0	; 192
   1bbe8:	9c 44       	sbci	r25, 0x4C	; 76
   1bbea:	af 4b       	sbci	r26, 0xBF	; 191
   1bbec:	bf 43       	sbci	r27, 0x3F	; 63
   1bbee:	0d a1       	ldd	r16, Y+37	; 0x25
   1bbf0:	1e a1       	ldd	r17, Y+38	; 0x26
   1bbf2:	2f a1       	ldd	r18, Y+39	; 0x27
   1bbf4:	38 a5       	ldd	r19, Y+40	; 0x28
   1bbf6:	80 0f       	add	r24, r16
   1bbf8:	91 1f       	adc	r25, r17
   1bbfa:	a2 1f       	adc	r26, r18
   1bbfc:	b3 1f       	adc	r27, r19
   1bbfe:	a2 01       	movw	r20, r4
   1bc00:	91 01       	movw	r18, r2
   1bc02:	26 21       	and	r18, r6
   1bc04:	37 21       	and	r19, r7
   1bc06:	48 21       	and	r20, r8
   1bc08:	59 21       	and	r21, r9
   1bc0a:	ed 8c       	ldd	r14, Y+29	; 0x1d
   1bc0c:	fe 8c       	ldd	r15, Y+30	; 0x1e
   1bc0e:	0f 8d       	ldd	r16, Y+31	; 0x1f
   1bc10:	18 a1       	ldd	r17, Y+32	; 0x20
   1bc12:	ea 20       	and	r14, r10
   1bc14:	fb 20       	and	r15, r11
   1bc16:	0c 21       	and	r16, r12
   1bc18:	1d 21       	and	r17, r13
   1bc1a:	2e 29       	or	r18, r14
   1bc1c:	3f 29       	or	r19, r15
   1bc1e:	40 2b       	or	r20, r16
   1bc20:	51 2b       	or	r21, r17
   1bc22:	82 0f       	add	r24, r18
   1bc24:	93 1f       	adc	r25, r19
   1bc26:	a4 1f       	adc	r26, r20
   1bc28:	b5 1f       	adc	r27, r21
   1bc2a:	8c 01       	movw	r16, r24
   1bc2c:	9d 01       	movw	r18, r26
   1bc2e:	59 e0       	ldi	r21, 0x09	; 9
   1bc30:	00 0f       	add	r16, r16
   1bc32:	11 1f       	adc	r17, r17
   1bc34:	22 1f       	adc	r18, r18
   1bc36:	33 1f       	adc	r19, r19
   1bc38:	5a 95       	dec	r21
   1bc3a:	d1 f7       	brne	.-12     	; 0x1bc30 <Transform+0xb10>
   1bc3c:	47 e1       	ldi	r20, 0x17	; 23
   1bc3e:	b6 95       	lsr	r27
   1bc40:	a7 95       	ror	r26
   1bc42:	97 95       	ror	r25
   1bc44:	87 95       	ror	r24
   1bc46:	4a 95       	dec	r20
   1bc48:	d1 f7       	brne	.-12     	; 0x1bc3e <Transform+0xb1e>
   1bc4a:	08 2b       	or	r16, r24
   1bc4c:	19 2b       	or	r17, r25
   1bc4e:	2a 2b       	or	r18, r26
   1bc50:	3b 2b       	or	r19, r27
   1bc52:	02 0d       	add	r16, r2
   1bc54:	13 1d       	adc	r17, r3
   1bc56:	24 1d       	adc	r18, r4
   1bc58:	35 1d       	adc	r19, r5
   1bc5a:	09 8f       	std	Y+25, r16	; 0x19
   1bc5c:	1a 8f       	std	Y+26, r17	; 0x1a
   1bc5e:	2b 8f       	std	Y+27, r18	; 0x1b
   1bc60:	3c 8f       	std	Y+28, r19	; 0x1c
  GG ( c, d, a, b, in[11], S23,  643717713); /* 19 */
   1bc62:	61 96       	adiw	r28, 0x11	; 17
   1bc64:	2c ad       	ldd	r18, Y+60	; 0x3c
   1bc66:	3d ad       	ldd	r19, Y+61	; 0x3d
   1bc68:	4e ad       	ldd	r20, Y+62	; 0x3e
   1bc6a:	5f ad       	ldd	r21, Y+63	; 0x3f
   1bc6c:	61 97       	sbiw	r28, 0x11	; 17
   1bc6e:	2f 5a       	subi	r18, 0xAF	; 175
   1bc70:	35 4a       	sbci	r19, 0xA5	; 165
   1bc72:	41 4a       	sbci	r20, 0xA1	; 161
   1bc74:	59 4d       	sbci	r21, 0xD9	; 217
   1bc76:	26 0d       	add	r18, r6
   1bc78:	37 1d       	adc	r19, r7
   1bc7a:	48 1d       	adc	r20, r8
   1bc7c:	59 1d       	adc	r21, r9
   1bc7e:	e9 8c       	ldd	r14, Y+25	; 0x19
   1bc80:	fa 8c       	ldd	r15, Y+26	; 0x1a
   1bc82:	0b 8d       	ldd	r16, Y+27	; 0x1b
   1bc84:	1c 8d       	ldd	r17, Y+28	; 0x1c
   1bc86:	ea 20       	and	r14, r10
   1bc88:	fb 20       	and	r15, r11
   1bc8a:	0c 21       	and	r16, r12
   1bc8c:	1d 21       	and	r17, r13
   1bc8e:	d6 01       	movw	r26, r12
   1bc90:	c5 01       	movw	r24, r10
   1bc92:	80 95       	com	r24
   1bc94:	90 95       	com	r25
   1bc96:	a0 95       	com	r26
   1bc98:	b0 95       	com	r27
   1bc9a:	82 21       	and	r24, r2
   1bc9c:	93 21       	and	r25, r3
   1bc9e:	a4 21       	and	r26, r4
   1bca0:	b5 21       	and	r27, r5
   1bca2:	e8 2a       	or	r14, r24
   1bca4:	f9 2a       	or	r15, r25
   1bca6:	0a 2b       	or	r16, r26
   1bca8:	1b 2b       	or	r17, r27
   1bcaa:	2e 0d       	add	r18, r14
   1bcac:	3f 1d       	adc	r19, r15
   1bcae:	40 1f       	adc	r20, r16
   1bcb0:	51 1f       	adc	r21, r17
   1bcb2:	39 01       	movw	r6, r18
   1bcb4:	4a 01       	movw	r8, r20
   1bcb6:	0e e0       	ldi	r16, 0x0E	; 14
   1bcb8:	66 0c       	add	r6, r6
   1bcba:	77 1c       	adc	r7, r7
   1bcbc:	88 1c       	adc	r8, r8
   1bcbe:	99 1c       	adc	r9, r9
   1bcc0:	0a 95       	dec	r16
   1bcc2:	d1 f7       	brne	.-12     	; 0x1bcb8 <Transform+0xb98>
   1bcc4:	12 e1       	ldi	r17, 0x12	; 18
   1bcc6:	56 95       	lsr	r21
   1bcc8:	47 95       	ror	r20
   1bcca:	37 95       	ror	r19
   1bccc:	27 95       	ror	r18
   1bcce:	1a 95       	dec	r17
   1bcd0:	d1 f7       	brne	.-12     	; 0x1bcc6 <Transform+0xba6>
   1bcd2:	62 2a       	or	r6, r18
   1bcd4:	73 2a       	or	r7, r19
   1bcd6:	84 2a       	or	r8, r20
   1bcd8:	95 2a       	or	r9, r21
   1bcda:	29 8d       	ldd	r18, Y+25	; 0x19
   1bcdc:	3a 8d       	ldd	r19, Y+26	; 0x1a
   1bcde:	4b 8d       	ldd	r20, Y+27	; 0x1b
   1bce0:	5c 8d       	ldd	r21, Y+28	; 0x1c
   1bce2:	62 0e       	add	r6, r18
   1bce4:	73 1e       	adc	r7, r19
   1bce6:	84 1e       	adc	r8, r20
   1bce8:	95 1e       	adc	r9, r21
  GG ( b, c, d, a, in[ 0], S24, 3921069994); /* 20 */
   1bcea:	ed 96       	adiw	r28, 0x3d	; 61
   1bcec:	2c ad       	ldd	r18, Y+60	; 0x3c
   1bcee:	3d ad       	ldd	r19, Y+61	; 0x3d
   1bcf0:	4e ad       	ldd	r20, Y+62	; 0x3e
   1bcf2:	5f ad       	ldd	r21, Y+63	; 0x3f
   1bcf4:	ed 97       	sbiw	r28, 0x3d	; 61
   1bcf6:	26 55       	subi	r18, 0x56	; 86
   1bcf8:	38 43       	sbci	r19, 0x38	; 56
   1bcfa:	49 44       	sbci	r20, 0x49	; 73
   1bcfc:	56 41       	sbci	r21, 0x16	; 22
   1bcfe:	2a 0d       	add	r18, r10
   1bd00:	3b 1d       	adc	r19, r11
   1bd02:	4c 1d       	adc	r20, r12
   1bd04:	5d 1d       	adc	r21, r13
   1bd06:	84 01       	movw	r16, r8
   1bd08:	73 01       	movw	r14, r6
   1bd0a:	e2 20       	and	r14, r2
   1bd0c:	f3 20       	and	r15, r3
   1bd0e:	04 21       	and	r16, r4
   1bd10:	15 21       	and	r17, r5
   1bd12:	d2 01       	movw	r26, r4
   1bd14:	c1 01       	movw	r24, r2
   1bd16:	80 95       	com	r24
   1bd18:	90 95       	com	r25
   1bd1a:	a0 95       	com	r26
   1bd1c:	b0 95       	com	r27
   1bd1e:	a9 8c       	ldd	r10, Y+25	; 0x19
   1bd20:	ba 8c       	ldd	r11, Y+26	; 0x1a
   1bd22:	cb 8c       	ldd	r12, Y+27	; 0x1b
   1bd24:	dc 8c       	ldd	r13, Y+28	; 0x1c
   1bd26:	8a 21       	and	r24, r10
   1bd28:	9b 21       	and	r25, r11
   1bd2a:	ac 21       	and	r26, r12
   1bd2c:	bd 21       	and	r27, r13
   1bd2e:	e8 2a       	or	r14, r24
   1bd30:	f9 2a       	or	r15, r25
   1bd32:	0a 2b       	or	r16, r26
   1bd34:	1b 2b       	or	r17, r27
   1bd36:	2e 0d       	add	r18, r14
   1bd38:	3f 1d       	adc	r19, r15
   1bd3a:	40 1f       	adc	r20, r16
   1bd3c:	51 1f       	adc	r21, r17
   1bd3e:	59 01       	movw	r10, r18
   1bd40:	6a 01       	movw	r12, r20
   1bd42:	b4 e1       	ldi	r27, 0x14	; 20
   1bd44:	aa 0c       	add	r10, r10
   1bd46:	bb 1c       	adc	r11, r11
   1bd48:	cc 1c       	adc	r12, r12
   1bd4a:	dd 1c       	adc	r13, r13
   1bd4c:	ba 95       	dec	r27
   1bd4e:	d1 f7       	brne	.-12     	; 0x1bd44 <Transform+0xc24>
   1bd50:	ac e0       	ldi	r26, 0x0C	; 12
   1bd52:	56 95       	lsr	r21
   1bd54:	47 95       	ror	r20
   1bd56:	37 95       	ror	r19
   1bd58:	27 95       	ror	r18
   1bd5a:	aa 95       	dec	r26
   1bd5c:	d1 f7       	brne	.-12     	; 0x1bd52 <Transform+0xc32>
   1bd5e:	a2 2a       	or	r10, r18
   1bd60:	b3 2a       	or	r11, r19
   1bd62:	c4 2a       	or	r12, r20
   1bd64:	d5 2a       	or	r13, r21
   1bd66:	a6 0c       	add	r10, r6
   1bd68:	b7 1c       	adc	r11, r7
   1bd6a:	c8 1c       	adc	r12, r8
   1bd6c:	d9 1c       	adc	r13, r9
  GG ( a, b, c, d, in[ 5], S21, 3593408605); /* 21 */
   1bd6e:	a9 96       	adiw	r28, 0x29	; 41
   1bd70:	2c ad       	ldd	r18, Y+60	; 0x3c
   1bd72:	3d ad       	ldd	r19, Y+61	; 0x3d
   1bd74:	4e ad       	ldd	r20, Y+62	; 0x3e
   1bd76:	5f ad       	ldd	r21, Y+63	; 0x3f
   1bd78:	a9 97       	sbiw	r28, 0x29	; 41
   1bd7a:	23 5a       	subi	r18, 0xA3	; 163
   1bd7c:	3f 4e       	sbci	r19, 0xEF	; 239
   1bd7e:	40 4d       	sbci	r20, 0xD0	; 208
   1bd80:	59 42       	sbci	r21, 0x29	; 41
   1bd82:	22 0d       	add	r18, r2
   1bd84:	33 1d       	adc	r19, r3
   1bd86:	44 1d       	adc	r20, r4
   1bd88:	55 1d       	adc	r21, r5
   1bd8a:	e9 8c       	ldd	r14, Y+25	; 0x19
   1bd8c:	fa 8c       	ldd	r15, Y+26	; 0x1a
   1bd8e:	0b 8d       	ldd	r16, Y+27	; 0x1b
   1bd90:	1c 8d       	ldd	r17, Y+28	; 0x1c
   1bd92:	ea 20       	and	r14, r10
   1bd94:	fb 20       	and	r15, r11
   1bd96:	0c 21       	and	r16, r12
   1bd98:	1d 21       	and	r17, r13
   1bd9a:	89 8d       	ldd	r24, Y+25	; 0x19
   1bd9c:	9a 8d       	ldd	r25, Y+26	; 0x1a
   1bd9e:	ab 8d       	ldd	r26, Y+27	; 0x1b
   1bda0:	bc 8d       	ldd	r27, Y+28	; 0x1c
   1bda2:	80 95       	com	r24
   1bda4:	90 95       	com	r25
   1bda6:	a0 95       	com	r26
   1bda8:	b0 95       	com	r27
   1bdaa:	86 21       	and	r24, r6
   1bdac:	97 21       	and	r25, r7
   1bdae:	a8 21       	and	r26, r8
   1bdb0:	b9 21       	and	r27, r9
   1bdb2:	e8 2a       	or	r14, r24
   1bdb4:	f9 2a       	or	r15, r25
   1bdb6:	0a 2b       	or	r16, r26
   1bdb8:	1b 2b       	or	r17, r27
   1bdba:	2e 0d       	add	r18, r14
   1bdbc:	3f 1d       	adc	r19, r15
   1bdbe:	40 1f       	adc	r20, r16
   1bdc0:	51 1f       	adc	r21, r17
   1bdc2:	19 01       	movw	r2, r18
   1bdc4:	2a 01       	movw	r4, r20
   1bdc6:	f5 e0       	ldi	r31, 0x05	; 5
   1bdc8:	22 0c       	add	r2, r2
   1bdca:	33 1c       	adc	r3, r3
   1bdcc:	44 1c       	adc	r4, r4
   1bdce:	55 1c       	adc	r5, r5
   1bdd0:	fa 95       	dec	r31
   1bdd2:	d1 f7       	brne	.-12     	; 0x1bdc8 <Transform+0xca8>
   1bdd4:	eb e1       	ldi	r30, 0x1B	; 27
   1bdd6:	56 95       	lsr	r21
   1bdd8:	47 95       	ror	r20
   1bdda:	37 95       	ror	r19
   1bddc:	27 95       	ror	r18
   1bdde:	ea 95       	dec	r30
   1bde0:	d1 f7       	brne	.-12     	; 0x1bdd6 <Transform+0xcb6>
   1bde2:	22 2a       	or	r2, r18
   1bde4:	33 2a       	or	r3, r19
   1bde6:	44 2a       	or	r4, r20
   1bde8:	55 2a       	or	r5, r21
   1bdea:	2a 0c       	add	r2, r10
   1bdec:	3b 1c       	adc	r3, r11
   1bdee:	4c 1c       	adc	r4, r12
   1bdf0:	5d 1c       	adc	r5, r13
  GG ( d, a, b, c, in[10], S22,   38016083); /* 22 */
   1bdf2:	65 96       	adiw	r28, 0x15	; 21
   1bdf4:	2c ad       	ldd	r18, Y+60	; 0x3c
   1bdf6:	3d ad       	ldd	r19, Y+61	; 0x3d
   1bdf8:	4e ad       	ldd	r20, Y+62	; 0x3e
   1bdfa:	5f ad       	ldd	r21, Y+63	; 0x3f
   1bdfc:	65 97       	sbiw	r28, 0x15	; 21
   1bdfe:	2d 5a       	subi	r18, 0xAD	; 173
   1be00:	3b 4e       	sbci	r19, 0xEB	; 235
   1be02:	4b 4b       	sbci	r20, 0xBB	; 187
   1be04:	5d 4f       	sbci	r21, 0xFD	; 253
   1be06:	e9 8c       	ldd	r14, Y+25	; 0x19
   1be08:	fa 8c       	ldd	r15, Y+26	; 0x1a
   1be0a:	0b 8d       	ldd	r16, Y+27	; 0x1b
   1be0c:	1c 8d       	ldd	r17, Y+28	; 0x1c
   1be0e:	2e 0d       	add	r18, r14
   1be10:	3f 1d       	adc	r19, r15
   1be12:	40 1f       	adc	r20, r16
   1be14:	51 1f       	adc	r21, r17
   1be16:	82 01       	movw	r16, r4
   1be18:	71 01       	movw	r14, r2
   1be1a:	e6 20       	and	r14, r6
   1be1c:	f7 20       	and	r15, r7
   1be1e:	08 21       	and	r16, r8
   1be20:	19 21       	and	r17, r9
   1be22:	d4 01       	movw	r26, r8
   1be24:	c3 01       	movw	r24, r6
   1be26:	80 95       	com	r24
   1be28:	90 95       	com	r25
   1be2a:	a0 95       	com	r26
   1be2c:	b0 95       	com	r27
   1be2e:	8a 21       	and	r24, r10
   1be30:	9b 21       	and	r25, r11
   1be32:	ac 21       	and	r26, r12
   1be34:	bd 21       	and	r27, r13
   1be36:	e8 2a       	or	r14, r24
   1be38:	f9 2a       	or	r15, r25
   1be3a:	0a 2b       	or	r16, r26
   1be3c:	1b 2b       	or	r17, r27
   1be3e:	2e 0d       	add	r18, r14
   1be40:	3f 1d       	adc	r19, r15
   1be42:	40 1f       	adc	r20, r16
   1be44:	51 1f       	adc	r21, r17
   1be46:	da 01       	movw	r26, r20
   1be48:	c9 01       	movw	r24, r18
   1be4a:	79 e0       	ldi	r23, 0x09	; 9
   1be4c:	88 0f       	add	r24, r24
   1be4e:	99 1f       	adc	r25, r25
   1be50:	aa 1f       	adc	r26, r26
   1be52:	bb 1f       	adc	r27, r27
   1be54:	7a 95       	dec	r23
   1be56:	d1 f7       	brne	.-12     	; 0x1be4c <Transform+0xd2c>
   1be58:	67 e1       	ldi	r22, 0x17	; 23
   1be5a:	56 95       	lsr	r21
   1be5c:	47 95       	ror	r20
   1be5e:	37 95       	ror	r19
   1be60:	27 95       	ror	r18
   1be62:	6a 95       	dec	r22
   1be64:	d1 f7       	brne	.-12     	; 0x1be5a <Transform+0xd3a>
   1be66:	82 2b       	or	r24, r18
   1be68:	93 2b       	or	r25, r19
   1be6a:	a4 2b       	or	r26, r20
   1be6c:	b5 2b       	or	r27, r21
   1be6e:	82 0d       	add	r24, r2
   1be70:	93 1d       	adc	r25, r3
   1be72:	a4 1d       	adc	r26, r4
   1be74:	b5 1d       	adc	r27, r5
   1be76:	8d 8b       	std	Y+21, r24	; 0x15
   1be78:	9e 8b       	std	Y+22, r25	; 0x16
   1be7a:	af 8b       	std	Y+23, r26	; 0x17
   1be7c:	b8 8f       	std	Y+24, r27	; 0x18
  GG ( c, d, a, b, in[15], S23, 3634488961); /* 23 */
   1be7e:	21 96       	adiw	r28, 0x01	; 1
   1be80:	2c ad       	ldd	r18, Y+60	; 0x3c
   1be82:	3d ad       	ldd	r19, Y+61	; 0x3d
   1be84:	4e ad       	ldd	r20, Y+62	; 0x3e
   1be86:	5f ad       	ldd	r21, Y+63	; 0x3f
   1be88:	21 97       	sbiw	r28, 0x01	; 1
   1be8a:	2f 57       	subi	r18, 0x7F	; 127
   1be8c:	39 41       	sbci	r19, 0x19	; 25
   1be8e:	4e 45       	sbci	r20, 0x5E	; 94
   1be90:	57 42       	sbci	r21, 0x27	; 39
   1be92:	26 0d       	add	r18, r6
   1be94:	37 1d       	adc	r19, r7
   1be96:	48 1d       	adc	r20, r8
   1be98:	59 1d       	adc	r21, r9
   1be9a:	7c 01       	movw	r14, r24
   1be9c:	8d 01       	movw	r16, r26
   1be9e:	ea 20       	and	r14, r10
   1bea0:	fb 20       	and	r15, r11
   1bea2:	0c 21       	and	r16, r12
   1bea4:	1d 21       	and	r17, r13
   1bea6:	d6 01       	movw	r26, r12
   1bea8:	c5 01       	movw	r24, r10
   1beaa:	80 95       	com	r24
   1beac:	90 95       	com	r25
   1beae:	a0 95       	com	r26
   1beb0:	b0 95       	com	r27
   1beb2:	82 21       	and	r24, r2
   1beb4:	93 21       	and	r25, r3
   1beb6:	a4 21       	and	r26, r4
   1beb8:	b5 21       	and	r27, r5
   1beba:	e8 2a       	or	r14, r24
   1bebc:	f9 2a       	or	r15, r25
   1bebe:	0a 2b       	or	r16, r26
   1bec0:	1b 2b       	or	r17, r27
   1bec2:	2e 0d       	add	r18, r14
   1bec4:	3f 1d       	adc	r19, r15
   1bec6:	40 1f       	adc	r20, r16
   1bec8:	51 1f       	adc	r21, r17
   1beca:	39 01       	movw	r6, r18
   1becc:	4a 01       	movw	r8, r20
   1bece:	0e e0       	ldi	r16, 0x0E	; 14
   1bed0:	66 0c       	add	r6, r6
   1bed2:	77 1c       	adc	r7, r7
   1bed4:	88 1c       	adc	r8, r8
   1bed6:	99 1c       	adc	r9, r9
   1bed8:	0a 95       	dec	r16
   1beda:	d1 f7       	brne	.-12     	; 0x1bed0 <Transform+0xdb0>
   1bedc:	12 e1       	ldi	r17, 0x12	; 18
   1bede:	56 95       	lsr	r21
   1bee0:	47 95       	ror	r20
   1bee2:	37 95       	ror	r19
   1bee4:	27 95       	ror	r18
   1bee6:	1a 95       	dec	r17
   1bee8:	d1 f7       	brne	.-12     	; 0x1bede <Transform+0xdbe>
   1beea:	62 2a       	or	r6, r18
   1beec:	73 2a       	or	r7, r19
   1beee:	84 2a       	or	r8, r20
   1bef0:	95 2a       	or	r9, r21
   1bef2:	ed 88       	ldd	r14, Y+21	; 0x15
   1bef4:	fe 88       	ldd	r15, Y+22	; 0x16
   1bef6:	0f 89       	ldd	r16, Y+23	; 0x17
   1bef8:	18 8d       	ldd	r17, Y+24	; 0x18
   1befa:	6e 0c       	add	r6, r14
   1befc:	7f 1c       	adc	r7, r15
   1befe:	80 1e       	adc	r8, r16
   1bf00:	91 1e       	adc	r9, r17
  GG ( b, c, d, a, in[ 4], S24, 3889429448); /* 24 */
   1bf02:	ad 96       	adiw	r28, 0x2d	; 45
   1bf04:	2c ad       	ldd	r18, Y+60	; 0x3c
   1bf06:	3d ad       	ldd	r19, Y+61	; 0x3d
   1bf08:	4e ad       	ldd	r20, Y+62	; 0x3e
   1bf0a:	5f ad       	ldd	r21, Y+63	; 0x3f
   1bf0c:	ad 97       	sbiw	r28, 0x2d	; 45
   1bf0e:	28 53       	subi	r18, 0x38	; 56
   1bf10:	34 40       	sbci	r19, 0x04	; 4
   1bf12:	4c 42       	sbci	r20, 0x2C	; 44
   1bf14:	58 41       	sbci	r21, 0x18	; 24
   1bf16:	2a 0d       	add	r18, r10
   1bf18:	3b 1d       	adc	r19, r11
   1bf1a:	4c 1d       	adc	r20, r12
   1bf1c:	5d 1d       	adc	r21, r13
   1bf1e:	84 01       	movw	r16, r8
   1bf20:	73 01       	movw	r14, r6
   1bf22:	e2 20       	and	r14, r2
   1bf24:	f3 20       	and	r15, r3
   1bf26:	04 21       	and	r16, r4
   1bf28:	15 21       	and	r17, r5
   1bf2a:	d2 01       	movw	r26, r4
   1bf2c:	c1 01       	movw	r24, r2
   1bf2e:	80 95       	com	r24
   1bf30:	90 95       	com	r25
   1bf32:	a0 95       	com	r26
   1bf34:	b0 95       	com	r27
   1bf36:	ad 88       	ldd	r10, Y+21	; 0x15
   1bf38:	be 88       	ldd	r11, Y+22	; 0x16
   1bf3a:	cf 88       	ldd	r12, Y+23	; 0x17
   1bf3c:	d8 8c       	ldd	r13, Y+24	; 0x18
   1bf3e:	8a 21       	and	r24, r10
   1bf40:	9b 21       	and	r25, r11
   1bf42:	ac 21       	and	r26, r12
   1bf44:	bd 21       	and	r27, r13
   1bf46:	e8 2a       	or	r14, r24
   1bf48:	f9 2a       	or	r15, r25
   1bf4a:	0a 2b       	or	r16, r26
   1bf4c:	1b 2b       	or	r17, r27
   1bf4e:	2e 0d       	add	r18, r14
   1bf50:	3f 1d       	adc	r19, r15
   1bf52:	40 1f       	adc	r20, r16
   1bf54:	51 1f       	adc	r21, r17
   1bf56:	59 01       	movw	r10, r18
   1bf58:	6a 01       	movw	r12, r20
   1bf5a:	b4 e1       	ldi	r27, 0x14	; 20
   1bf5c:	aa 0c       	add	r10, r10
   1bf5e:	bb 1c       	adc	r11, r11
   1bf60:	cc 1c       	adc	r12, r12
   1bf62:	dd 1c       	adc	r13, r13
   1bf64:	ba 95       	dec	r27
   1bf66:	d1 f7       	brne	.-12     	; 0x1bf5c <Transform+0xe3c>
   1bf68:	ac e0       	ldi	r26, 0x0C	; 12
   1bf6a:	56 95       	lsr	r21
   1bf6c:	47 95       	ror	r20
   1bf6e:	37 95       	ror	r19
   1bf70:	27 95       	ror	r18
   1bf72:	aa 95       	dec	r26
   1bf74:	d1 f7       	brne	.-12     	; 0x1bf6a <Transform+0xe4a>
   1bf76:	a2 2a       	or	r10, r18
   1bf78:	b3 2a       	or	r11, r19
   1bf7a:	c4 2a       	or	r12, r20
   1bf7c:	d5 2a       	or	r13, r21
   1bf7e:	a6 0c       	add	r10, r6
   1bf80:	b7 1c       	adc	r11, r7
   1bf82:	c8 1c       	adc	r12, r8
   1bf84:	d9 1c       	adc	r13, r9
  GG ( a, b, c, d, in[ 9], S21,  568446438); /* 25 */
   1bf86:	69 96       	adiw	r28, 0x19	; 25
   1bf88:	2c ad       	ldd	r18, Y+60	; 0x3c
   1bf8a:	3d ad       	ldd	r19, Y+61	; 0x3d
   1bf8c:	4e ad       	ldd	r20, Y+62	; 0x3e
   1bf8e:	5f ad       	ldd	r21, Y+63	; 0x3f
   1bf90:	69 97       	sbiw	r28, 0x19	; 25
   1bf92:	2a 51       	subi	r18, 0x1A	; 26
   1bf94:	32 43       	sbci	r19, 0x32	; 50
   1bf96:	4e 41       	sbci	r20, 0x1E	; 30
   1bf98:	5e 4d       	sbci	r21, 0xDE	; 222
   1bf9a:	22 0d       	add	r18, r2
   1bf9c:	33 1d       	adc	r19, r3
   1bf9e:	44 1d       	adc	r20, r4
   1bfa0:	55 1d       	adc	r21, r5
   1bfa2:	ed 88       	ldd	r14, Y+21	; 0x15
   1bfa4:	fe 88       	ldd	r15, Y+22	; 0x16
   1bfa6:	0f 89       	ldd	r16, Y+23	; 0x17
   1bfa8:	18 8d       	ldd	r17, Y+24	; 0x18
   1bfaa:	ea 20       	and	r14, r10
   1bfac:	fb 20       	and	r15, r11
   1bfae:	0c 21       	and	r16, r12
   1bfb0:	1d 21       	and	r17, r13
   1bfb2:	8d 89       	ldd	r24, Y+21	; 0x15
   1bfb4:	9e 89       	ldd	r25, Y+22	; 0x16
   1bfb6:	af 89       	ldd	r26, Y+23	; 0x17
   1bfb8:	b8 8d       	ldd	r27, Y+24	; 0x18
   1bfba:	80 95       	com	r24
   1bfbc:	90 95       	com	r25
   1bfbe:	a0 95       	com	r26
   1bfc0:	b0 95       	com	r27
   1bfc2:	86 21       	and	r24, r6
   1bfc4:	97 21       	and	r25, r7
   1bfc6:	a8 21       	and	r26, r8
   1bfc8:	b9 21       	and	r27, r9
   1bfca:	e8 2a       	or	r14, r24
   1bfcc:	f9 2a       	or	r15, r25
   1bfce:	0a 2b       	or	r16, r26
   1bfd0:	1b 2b       	or	r17, r27
   1bfd2:	2e 0d       	add	r18, r14
   1bfd4:	3f 1d       	adc	r19, r15
   1bfd6:	40 1f       	adc	r20, r16
   1bfd8:	51 1f       	adc	r21, r17
   1bfda:	19 01       	movw	r2, r18
   1bfdc:	2a 01       	movw	r4, r20
   1bfde:	f5 e0       	ldi	r31, 0x05	; 5
   1bfe0:	22 0c       	add	r2, r2
   1bfe2:	33 1c       	adc	r3, r3
   1bfe4:	44 1c       	adc	r4, r4
   1bfe6:	55 1c       	adc	r5, r5
   1bfe8:	fa 95       	dec	r31
   1bfea:	d1 f7       	brne	.-12     	; 0x1bfe0 <Transform+0xec0>
   1bfec:	eb e1       	ldi	r30, 0x1B	; 27
   1bfee:	56 95       	lsr	r21
   1bff0:	47 95       	ror	r20
   1bff2:	37 95       	ror	r19
   1bff4:	27 95       	ror	r18
   1bff6:	ea 95       	dec	r30
   1bff8:	d1 f7       	brne	.-12     	; 0x1bfee <Transform+0xece>
   1bffa:	22 2a       	or	r2, r18
   1bffc:	33 2a       	or	r3, r19
   1bffe:	44 2a       	or	r4, r20
   1c000:	55 2a       	or	r5, r21
   1c002:	2a 0c       	add	r2, r10
   1c004:	3b 1c       	adc	r3, r11
   1c006:	4c 1c       	adc	r4, r12
   1c008:	5d 1c       	adc	r5, r13
  GG ( d, a, b, c, in[14], S22, 3275163606); /* 26 */
   1c00a:	25 96       	adiw	r28, 0x05	; 5
   1c00c:	2c ad       	ldd	r18, Y+60	; 0x3c
   1c00e:	3d ad       	ldd	r19, Y+61	; 0x3d
   1c010:	4e ad       	ldd	r20, Y+62	; 0x3e
   1c012:	5f ad       	ldd	r21, Y+63	; 0x3f
   1c014:	25 97       	sbiw	r28, 0x05	; 5
   1c016:	2a 52       	subi	r18, 0x2A	; 42
   1c018:	38 4f       	sbci	r19, 0xF8	; 248
   1c01a:	48 4c       	sbci	r20, 0xC8	; 200
   1c01c:	5c 43       	sbci	r21, 0x3C	; 60
   1c01e:	ed 88       	ldd	r14, Y+21	; 0x15
   1c020:	fe 88       	ldd	r15, Y+22	; 0x16
   1c022:	0f 89       	ldd	r16, Y+23	; 0x17
   1c024:	18 8d       	ldd	r17, Y+24	; 0x18
   1c026:	2e 0d       	add	r18, r14
   1c028:	3f 1d       	adc	r19, r15
   1c02a:	40 1f       	adc	r20, r16
   1c02c:	51 1f       	adc	r21, r17
   1c02e:	82 01       	movw	r16, r4
   1c030:	71 01       	movw	r14, r2
   1c032:	e6 20       	and	r14, r6
   1c034:	f7 20       	and	r15, r7
   1c036:	08 21       	and	r16, r8
   1c038:	19 21       	and	r17, r9
   1c03a:	d4 01       	movw	r26, r8
   1c03c:	c3 01       	movw	r24, r6
   1c03e:	80 95       	com	r24
   1c040:	90 95       	com	r25
   1c042:	a0 95       	com	r26
   1c044:	b0 95       	com	r27
   1c046:	8a 21       	and	r24, r10
   1c048:	9b 21       	and	r25, r11
   1c04a:	ac 21       	and	r26, r12
   1c04c:	bd 21       	and	r27, r13
   1c04e:	e8 2a       	or	r14, r24
   1c050:	f9 2a       	or	r15, r25
   1c052:	0a 2b       	or	r16, r26
   1c054:	1b 2b       	or	r17, r27
   1c056:	2e 0d       	add	r18, r14
   1c058:	3f 1d       	adc	r19, r15
   1c05a:	40 1f       	adc	r20, r16
   1c05c:	51 1f       	adc	r21, r17
   1c05e:	da 01       	movw	r26, r20
   1c060:	c9 01       	movw	r24, r18
   1c062:	79 e0       	ldi	r23, 0x09	; 9
   1c064:	88 0f       	add	r24, r24
   1c066:	99 1f       	adc	r25, r25
   1c068:	aa 1f       	adc	r26, r26
   1c06a:	bb 1f       	adc	r27, r27
   1c06c:	7a 95       	dec	r23
   1c06e:	d1 f7       	brne	.-12     	; 0x1c064 <Transform+0xf44>
   1c070:	67 e1       	ldi	r22, 0x17	; 23
   1c072:	56 95       	lsr	r21
   1c074:	47 95       	ror	r20
   1c076:	37 95       	ror	r19
   1c078:	27 95       	ror	r18
   1c07a:	6a 95       	dec	r22
   1c07c:	d1 f7       	brne	.-12     	; 0x1c072 <Transform+0xf52>
   1c07e:	82 2b       	or	r24, r18
   1c080:	93 2b       	or	r25, r19
   1c082:	a4 2b       	or	r26, r20
   1c084:	b5 2b       	or	r27, r21
   1c086:	82 0d       	add	r24, r2
   1c088:	93 1d       	adc	r25, r3
   1c08a:	a4 1d       	adc	r26, r4
   1c08c:	b5 1d       	adc	r27, r5
   1c08e:	89 8b       	std	Y+17, r24	; 0x11
   1c090:	9a 8b       	std	Y+18, r25	; 0x12
   1c092:	ab 8b       	std	Y+19, r26	; 0x13
   1c094:	bc 8b       	std	Y+20, r27	; 0x14
  GG ( c, d, a, b, in[ 3], S23, 4107603335); /* 27 */
   1c096:	e1 96       	adiw	r28, 0x31	; 49
   1c098:	2c ad       	ldd	r18, Y+60	; 0x3c
   1c09a:	3d ad       	ldd	r19, Y+61	; 0x3d
   1c09c:	4e ad       	ldd	r20, Y+62	; 0x3e
   1c09e:	5f ad       	ldd	r21, Y+63	; 0x3f
   1c0a0:	e1 97       	sbiw	r28, 0x31	; 49
   1c0a2:	29 57       	subi	r18, 0x79	; 121
   1c0a4:	32 4f       	sbci	r19, 0xF2	; 242
   1c0a6:	4a 42       	sbci	r20, 0x2A	; 42
   1c0a8:	5b 40       	sbci	r21, 0x0B	; 11
   1c0aa:	26 0d       	add	r18, r6
   1c0ac:	37 1d       	adc	r19, r7
   1c0ae:	48 1d       	adc	r20, r8
   1c0b0:	59 1d       	adc	r21, r9
   1c0b2:	7c 01       	movw	r14, r24
   1c0b4:	8d 01       	movw	r16, r26
   1c0b6:	ea 20       	and	r14, r10
   1c0b8:	fb 20       	and	r15, r11
   1c0ba:	0c 21       	and	r16, r12
   1c0bc:	1d 21       	and	r17, r13
   1c0be:	d6 01       	movw	r26, r12
   1c0c0:	c5 01       	movw	r24, r10
   1c0c2:	80 95       	com	r24
   1c0c4:	90 95       	com	r25
   1c0c6:	a0 95       	com	r26
   1c0c8:	b0 95       	com	r27
   1c0ca:	82 21       	and	r24, r2
   1c0cc:	93 21       	and	r25, r3
   1c0ce:	a4 21       	and	r26, r4
   1c0d0:	b5 21       	and	r27, r5
   1c0d2:	e8 2a       	or	r14, r24
   1c0d4:	f9 2a       	or	r15, r25
   1c0d6:	0a 2b       	or	r16, r26
   1c0d8:	1b 2b       	or	r17, r27
   1c0da:	2e 0d       	add	r18, r14
   1c0dc:	3f 1d       	adc	r19, r15
   1c0de:	40 1f       	adc	r20, r16
   1c0e0:	51 1f       	adc	r21, r17
   1c0e2:	39 01       	movw	r6, r18
   1c0e4:	4a 01       	movw	r8, r20
   1c0e6:	0e e0       	ldi	r16, 0x0E	; 14
   1c0e8:	66 0c       	add	r6, r6
   1c0ea:	77 1c       	adc	r7, r7
   1c0ec:	88 1c       	adc	r8, r8
   1c0ee:	99 1c       	adc	r9, r9
   1c0f0:	0a 95       	dec	r16
   1c0f2:	d1 f7       	brne	.-12     	; 0x1c0e8 <Transform+0xfc8>
   1c0f4:	12 e1       	ldi	r17, 0x12	; 18
   1c0f6:	56 95       	lsr	r21
   1c0f8:	47 95       	ror	r20
   1c0fa:	37 95       	ror	r19
   1c0fc:	27 95       	ror	r18
   1c0fe:	1a 95       	dec	r17
   1c100:	d1 f7       	brne	.-12     	; 0x1c0f6 <Transform+0xfd6>
   1c102:	62 2a       	or	r6, r18
   1c104:	73 2a       	or	r7, r19
   1c106:	84 2a       	or	r8, r20
   1c108:	95 2a       	or	r9, r21
   1c10a:	e9 88       	ldd	r14, Y+17	; 0x11
   1c10c:	fa 88       	ldd	r15, Y+18	; 0x12
   1c10e:	0b 89       	ldd	r16, Y+19	; 0x13
   1c110:	1c 89       	ldd	r17, Y+20	; 0x14
   1c112:	6e 0c       	add	r6, r14
   1c114:	7f 1c       	adc	r7, r15
   1c116:	80 1e       	adc	r8, r16
   1c118:	91 1e       	adc	r9, r17
  GG ( b, c, d, a, in[ 8], S24, 1163531501); /* 28 */
   1c11a:	6d 96       	adiw	r28, 0x1d	; 29
   1c11c:	2c ad       	ldd	r18, Y+60	; 0x3c
   1c11e:	3d ad       	ldd	r19, Y+61	; 0x3d
   1c120:	4e ad       	ldd	r20, Y+62	; 0x3e
   1c122:	5f ad       	ldd	r21, Y+63	; 0x3f
   1c124:	6d 97       	sbiw	r28, 0x1d	; 29
   1c126:	23 51       	subi	r18, 0x13	; 19
   1c128:	3b 4e       	sbci	r19, 0xEB	; 235
   1c12a:	45 4a       	sbci	r20, 0xA5	; 165
   1c12c:	5a 4b       	sbci	r21, 0xBA	; 186
   1c12e:	2a 0d       	add	r18, r10
   1c130:	3b 1d       	adc	r19, r11
   1c132:	4c 1d       	adc	r20, r12
   1c134:	5d 1d       	adc	r21, r13
   1c136:	84 01       	movw	r16, r8
   1c138:	73 01       	movw	r14, r6
   1c13a:	e2 20       	and	r14, r2
   1c13c:	f3 20       	and	r15, r3
   1c13e:	04 21       	and	r16, r4
   1c140:	15 21       	and	r17, r5
   1c142:	d2 01       	movw	r26, r4
   1c144:	c1 01       	movw	r24, r2
   1c146:	80 95       	com	r24
   1c148:	90 95       	com	r25
   1c14a:	a0 95       	com	r26
   1c14c:	b0 95       	com	r27
   1c14e:	a9 88       	ldd	r10, Y+17	; 0x11
   1c150:	ba 88       	ldd	r11, Y+18	; 0x12
   1c152:	cb 88       	ldd	r12, Y+19	; 0x13
   1c154:	dc 88       	ldd	r13, Y+20	; 0x14
   1c156:	8a 21       	and	r24, r10
   1c158:	9b 21       	and	r25, r11
   1c15a:	ac 21       	and	r26, r12
   1c15c:	bd 21       	and	r27, r13
   1c15e:	e8 2a       	or	r14, r24
   1c160:	f9 2a       	or	r15, r25
   1c162:	0a 2b       	or	r16, r26
   1c164:	1b 2b       	or	r17, r27
   1c166:	2e 0d       	add	r18, r14
   1c168:	3f 1d       	adc	r19, r15
   1c16a:	40 1f       	adc	r20, r16
   1c16c:	51 1f       	adc	r21, r17
   1c16e:	59 01       	movw	r10, r18
   1c170:	6a 01       	movw	r12, r20
   1c172:	b4 e1       	ldi	r27, 0x14	; 20
   1c174:	aa 0c       	add	r10, r10
   1c176:	bb 1c       	adc	r11, r11
   1c178:	cc 1c       	adc	r12, r12
   1c17a:	dd 1c       	adc	r13, r13
   1c17c:	ba 95       	dec	r27
   1c17e:	d1 f7       	brne	.-12     	; 0x1c174 <Transform+0x1054>
   1c180:	ac e0       	ldi	r26, 0x0C	; 12
   1c182:	56 95       	lsr	r21
   1c184:	47 95       	ror	r20
   1c186:	37 95       	ror	r19
   1c188:	27 95       	ror	r18
   1c18a:	aa 95       	dec	r26
   1c18c:	d1 f7       	brne	.-12     	; 0x1c182 <Transform+0x1062>
   1c18e:	a2 2a       	or	r10, r18
   1c190:	b3 2a       	or	r11, r19
   1c192:	c4 2a       	or	r12, r20
   1c194:	d5 2a       	or	r13, r21
   1c196:	a6 0c       	add	r10, r6
   1c198:	b7 1c       	adc	r11, r7
   1c19a:	c8 1c       	adc	r12, r8
   1c19c:	d9 1c       	adc	r13, r9
  GG ( a, b, c, d, in[13], S21, 2850285829); /* 29 */
   1c19e:	29 96       	adiw	r28, 0x09	; 9
   1c1a0:	2c ad       	ldd	r18, Y+60	; 0x3c
   1c1a2:	3d ad       	ldd	r19, Y+61	; 0x3d
   1c1a4:	4e ad       	ldd	r20, Y+62	; 0x3e
   1c1a6:	5f ad       	ldd	r21, Y+63	; 0x3f
   1c1a8:	29 97       	sbiw	r28, 0x09	; 9
   1c1aa:	2b 5f       	subi	r18, 0xFB	; 251
   1c1ac:	36 41       	sbci	r19, 0x16	; 22
   1c1ae:	4c 41       	sbci	r20, 0x1C	; 28
   1c1b0:	56 45       	sbci	r21, 0x56	; 86
   1c1b2:	22 0d       	add	r18, r2
   1c1b4:	33 1d       	adc	r19, r3
   1c1b6:	44 1d       	adc	r20, r4
   1c1b8:	55 1d       	adc	r21, r5
   1c1ba:	e9 88       	ldd	r14, Y+17	; 0x11
   1c1bc:	fa 88       	ldd	r15, Y+18	; 0x12
   1c1be:	0b 89       	ldd	r16, Y+19	; 0x13
   1c1c0:	1c 89       	ldd	r17, Y+20	; 0x14
   1c1c2:	ea 20       	and	r14, r10
   1c1c4:	fb 20       	and	r15, r11
   1c1c6:	0c 21       	and	r16, r12
   1c1c8:	1d 21       	and	r17, r13
   1c1ca:	89 89       	ldd	r24, Y+17	; 0x11
   1c1cc:	9a 89       	ldd	r25, Y+18	; 0x12
   1c1ce:	ab 89       	ldd	r26, Y+19	; 0x13
   1c1d0:	bc 89       	ldd	r27, Y+20	; 0x14
   1c1d2:	80 95       	com	r24
   1c1d4:	90 95       	com	r25
   1c1d6:	a0 95       	com	r26
   1c1d8:	b0 95       	com	r27
   1c1da:	86 21       	and	r24, r6
   1c1dc:	97 21       	and	r25, r7
   1c1de:	a8 21       	and	r26, r8
   1c1e0:	b9 21       	and	r27, r9
   1c1e2:	e8 2a       	or	r14, r24
   1c1e4:	f9 2a       	or	r15, r25
   1c1e6:	0a 2b       	or	r16, r26
   1c1e8:	1b 2b       	or	r17, r27
   1c1ea:	2e 0d       	add	r18, r14
   1c1ec:	3f 1d       	adc	r19, r15
   1c1ee:	40 1f       	adc	r20, r16
   1c1f0:	51 1f       	adc	r21, r17
   1c1f2:	19 01       	movw	r2, r18
   1c1f4:	2a 01       	movw	r4, r20
   1c1f6:	f5 e0       	ldi	r31, 0x05	; 5
   1c1f8:	22 0c       	add	r2, r2
   1c1fa:	33 1c       	adc	r3, r3
   1c1fc:	44 1c       	adc	r4, r4
   1c1fe:	55 1c       	adc	r5, r5
   1c200:	fa 95       	dec	r31
   1c202:	d1 f7       	brne	.-12     	; 0x1c1f8 <Transform+0x10d8>
   1c204:	eb e1       	ldi	r30, 0x1B	; 27
   1c206:	56 95       	lsr	r21
   1c208:	47 95       	ror	r20
   1c20a:	37 95       	ror	r19
   1c20c:	27 95       	ror	r18
   1c20e:	ea 95       	dec	r30
   1c210:	d1 f7       	brne	.-12     	; 0x1c206 <Transform+0x10e6>
   1c212:	22 2a       	or	r2, r18
   1c214:	33 2a       	or	r3, r19
   1c216:	44 2a       	or	r4, r20
   1c218:	55 2a       	or	r5, r21
   1c21a:	2a 0c       	add	r2, r10
   1c21c:	3b 1c       	adc	r3, r11
   1c21e:	4c 1c       	adc	r4, r12
   1c220:	5d 1c       	adc	r5, r13
  GG ( d, a, b, c, in[ 2], S22, 4243563512); /* 30 */
   1c222:	e5 96       	adiw	r28, 0x35	; 53
   1c224:	2c ad       	ldd	r18, Y+60	; 0x3c
   1c226:	3d ad       	ldd	r19, Y+61	; 0x3d
   1c228:	4e ad       	ldd	r20, Y+62	; 0x3e
   1c22a:	5f ad       	ldd	r21, Y+63	; 0x3f
   1c22c:	e5 97       	sbiw	r28, 0x35	; 53
   1c22e:	28 50       	subi	r18, 0x08	; 8
   1c230:	3c 45       	sbci	r19, 0x5C	; 92
   1c232:	40 41       	sbci	r20, 0x10	; 16
   1c234:	53 40       	sbci	r21, 0x03	; 3
   1c236:	e9 88       	ldd	r14, Y+17	; 0x11
   1c238:	fa 88       	ldd	r15, Y+18	; 0x12
   1c23a:	0b 89       	ldd	r16, Y+19	; 0x13
   1c23c:	1c 89       	ldd	r17, Y+20	; 0x14
   1c23e:	2e 0d       	add	r18, r14
   1c240:	3f 1d       	adc	r19, r15
   1c242:	40 1f       	adc	r20, r16
   1c244:	51 1f       	adc	r21, r17
   1c246:	82 01       	movw	r16, r4
   1c248:	71 01       	movw	r14, r2
   1c24a:	e6 20       	and	r14, r6
   1c24c:	f7 20       	and	r15, r7
   1c24e:	08 21       	and	r16, r8
   1c250:	19 21       	and	r17, r9
   1c252:	d4 01       	movw	r26, r8
   1c254:	c3 01       	movw	r24, r6
   1c256:	80 95       	com	r24
   1c258:	90 95       	com	r25
   1c25a:	a0 95       	com	r26
   1c25c:	b0 95       	com	r27
   1c25e:	8a 21       	and	r24, r10
   1c260:	9b 21       	and	r25, r11
   1c262:	ac 21       	and	r26, r12
   1c264:	bd 21       	and	r27, r13
   1c266:	e8 2a       	or	r14, r24
   1c268:	f9 2a       	or	r15, r25
   1c26a:	0a 2b       	or	r16, r26
   1c26c:	1b 2b       	or	r17, r27
   1c26e:	2e 0d       	add	r18, r14
   1c270:	3f 1d       	adc	r19, r15
   1c272:	40 1f       	adc	r20, r16
   1c274:	51 1f       	adc	r21, r17
   1c276:	da 01       	movw	r26, r20
   1c278:	c9 01       	movw	r24, r18
   1c27a:	79 e0       	ldi	r23, 0x09	; 9
   1c27c:	88 0f       	add	r24, r24
   1c27e:	99 1f       	adc	r25, r25
   1c280:	aa 1f       	adc	r26, r26
   1c282:	bb 1f       	adc	r27, r27
   1c284:	7a 95       	dec	r23
   1c286:	d1 f7       	brne	.-12     	; 0x1c27c <Transform+0x115c>
   1c288:	67 e1       	ldi	r22, 0x17	; 23
   1c28a:	56 95       	lsr	r21
   1c28c:	47 95       	ror	r20
   1c28e:	37 95       	ror	r19
   1c290:	27 95       	ror	r18
   1c292:	6a 95       	dec	r22
   1c294:	d1 f7       	brne	.-12     	; 0x1c28a <Transform+0x116a>
   1c296:	82 2b       	or	r24, r18
   1c298:	93 2b       	or	r25, r19
   1c29a:	a4 2b       	or	r26, r20
   1c29c:	b5 2b       	or	r27, r21
   1c29e:	82 0d       	add	r24, r2
   1c2a0:	93 1d       	adc	r25, r3
   1c2a2:	a4 1d       	adc	r26, r4
   1c2a4:	b5 1d       	adc	r27, r5
   1c2a6:	8d 87       	std	Y+13, r24	; 0x0d
   1c2a8:	9e 87       	std	Y+14, r25	; 0x0e
   1c2aa:	af 87       	std	Y+15, r26	; 0x0f
   1c2ac:	b8 8b       	std	Y+16, r27	; 0x10
  GG ( c, d, a, b, in[ 7], S23, 1735328473); /* 31 */
   1c2ae:	a1 96       	adiw	r28, 0x21	; 33
   1c2b0:	2c ad       	ldd	r18, Y+60	; 0x3c
   1c2b2:	3d ad       	ldd	r19, Y+61	; 0x3d
   1c2b4:	4e ad       	ldd	r20, Y+62	; 0x3e
   1c2b6:	5f ad       	ldd	r21, Y+63	; 0x3f
   1c2b8:	a1 97       	sbiw	r28, 0x21	; 33
   1c2ba:	27 52       	subi	r18, 0x27	; 39
   1c2bc:	3d 4f       	sbci	r19, 0xFD	; 253
   1c2be:	40 49       	sbci	r20, 0x90	; 144
   1c2c0:	58 49       	sbci	r21, 0x98	; 152
   1c2c2:	26 0d       	add	r18, r6
   1c2c4:	37 1d       	adc	r19, r7
   1c2c6:	48 1d       	adc	r20, r8
   1c2c8:	59 1d       	adc	r21, r9
   1c2ca:	7c 01       	movw	r14, r24
   1c2cc:	8d 01       	movw	r16, r26
   1c2ce:	ea 20       	and	r14, r10
   1c2d0:	fb 20       	and	r15, r11
   1c2d2:	0c 21       	and	r16, r12
   1c2d4:	1d 21       	and	r17, r13
   1c2d6:	d6 01       	movw	r26, r12
   1c2d8:	c5 01       	movw	r24, r10
   1c2da:	80 95       	com	r24
   1c2dc:	90 95       	com	r25
   1c2de:	a0 95       	com	r26
   1c2e0:	b0 95       	com	r27
   1c2e2:	82 21       	and	r24, r2
   1c2e4:	93 21       	and	r25, r3
   1c2e6:	a4 21       	and	r26, r4
   1c2e8:	b5 21       	and	r27, r5
   1c2ea:	e8 2a       	or	r14, r24
   1c2ec:	f9 2a       	or	r15, r25
   1c2ee:	0a 2b       	or	r16, r26
   1c2f0:	1b 2b       	or	r17, r27
   1c2f2:	2e 0d       	add	r18, r14
   1c2f4:	3f 1d       	adc	r19, r15
   1c2f6:	40 1f       	adc	r20, r16
   1c2f8:	51 1f       	adc	r21, r17
   1c2fa:	39 01       	movw	r6, r18
   1c2fc:	4a 01       	movw	r8, r20
   1c2fe:	0e e0       	ldi	r16, 0x0E	; 14
   1c300:	66 0c       	add	r6, r6
   1c302:	77 1c       	adc	r7, r7
   1c304:	88 1c       	adc	r8, r8
   1c306:	99 1c       	adc	r9, r9
   1c308:	0a 95       	dec	r16
   1c30a:	d1 f7       	brne	.-12     	; 0x1c300 <Transform+0x11e0>
   1c30c:	12 e1       	ldi	r17, 0x12	; 18
   1c30e:	56 95       	lsr	r21
   1c310:	47 95       	ror	r20
   1c312:	37 95       	ror	r19
   1c314:	27 95       	ror	r18
   1c316:	1a 95       	dec	r17
   1c318:	d1 f7       	brne	.-12     	; 0x1c30e <Transform+0x11ee>
   1c31a:	62 2a       	or	r6, r18
   1c31c:	73 2a       	or	r7, r19
   1c31e:	84 2a       	or	r8, r20
   1c320:	95 2a       	or	r9, r21
   1c322:	ed 84       	ldd	r14, Y+13	; 0x0d
   1c324:	fe 84       	ldd	r15, Y+14	; 0x0e
   1c326:	0f 85       	ldd	r16, Y+15	; 0x0f
   1c328:	18 89       	ldd	r17, Y+16	; 0x10
   1c32a:	6e 0c       	add	r6, r14
   1c32c:	7f 1c       	adc	r7, r15
   1c32e:	80 1e       	adc	r8, r16
   1c330:	91 1e       	adc	r9, r17
   1c332:	69 86       	std	Y+9, r6	; 0x09
   1c334:	7a 86       	std	Y+10, r7	; 0x0a
   1c336:	8b 86       	std	Y+11, r8	; 0x0b
   1c338:	9c 86       	std	Y+12, r9	; 0x0c
  GG ( b, c, d, a, in[12], S24, 2368359562); /* 32 */
   1c33a:	2d 96       	adiw	r28, 0x0d	; 13
   1c33c:	2c ad       	ldd	r18, Y+60	; 0x3c
   1c33e:	3d ad       	ldd	r19, Y+61	; 0x3d
   1c340:	4e ad       	ldd	r20, Y+62	; 0x3e
   1c342:	5f ad       	ldd	r21, Y+63	; 0x3f
   1c344:	2d 97       	sbiw	r28, 0x0d	; 13
   1c346:	26 57       	subi	r18, 0x76	; 118
   1c348:	33 4b       	sbci	r19, 0xB3	; 179
   1c34a:	45 4d       	sbci	r20, 0xD5	; 213
   1c34c:	52 47       	sbci	r21, 0x72	; 114
   1c34e:	2a 0d       	add	r18, r10
   1c350:	3b 1d       	adc	r19, r11
   1c352:	4c 1d       	adc	r20, r12
   1c354:	5d 1d       	adc	r21, r13
   1c356:	84 01       	movw	r16, r8
   1c358:	73 01       	movw	r14, r6
   1c35a:	e2 20       	and	r14, r2
   1c35c:	f3 20       	and	r15, r3
   1c35e:	04 21       	and	r16, r4
   1c360:	15 21       	and	r17, r5
   1c362:	d2 01       	movw	r26, r4
   1c364:	c1 01       	movw	r24, r2
   1c366:	80 95       	com	r24
   1c368:	90 95       	com	r25
   1c36a:	a0 95       	com	r26
   1c36c:	b0 95       	com	r27
   1c36e:	6d 84       	ldd	r6, Y+13	; 0x0d
   1c370:	7e 84       	ldd	r7, Y+14	; 0x0e
   1c372:	8f 84       	ldd	r8, Y+15	; 0x0f
   1c374:	98 88       	ldd	r9, Y+16	; 0x10
   1c376:	86 21       	and	r24, r6
   1c378:	97 21       	and	r25, r7
   1c37a:	a8 21       	and	r26, r8
   1c37c:	b9 21       	and	r27, r9
   1c37e:	e8 2a       	or	r14, r24
   1c380:	f9 2a       	or	r15, r25
   1c382:	0a 2b       	or	r16, r26
   1c384:	1b 2b       	or	r17, r27
   1c386:	2e 0d       	add	r18, r14
   1c388:	3f 1d       	adc	r19, r15
   1c38a:	40 1f       	adc	r20, r16
   1c38c:	51 1f       	adc	r21, r17
   1c38e:	59 01       	movw	r10, r18
   1c390:	6a 01       	movw	r12, r20
   1c392:	b4 e1       	ldi	r27, 0x14	; 20
   1c394:	aa 0c       	add	r10, r10
   1c396:	bb 1c       	adc	r11, r11
   1c398:	cc 1c       	adc	r12, r12
   1c39a:	dd 1c       	adc	r13, r13
   1c39c:	ba 95       	dec	r27
   1c39e:	d1 f7       	brne	.-12     	; 0x1c394 <Transform+0x1274>
   1c3a0:	ac e0       	ldi	r26, 0x0C	; 12
   1c3a2:	56 95       	lsr	r21
   1c3a4:	47 95       	ror	r20
   1c3a6:	37 95       	ror	r19
   1c3a8:	27 95       	ror	r18
   1c3aa:	aa 95       	dec	r26
   1c3ac:	d1 f7       	brne	.-12     	; 0x1c3a2 <Transform+0x1282>
   1c3ae:	a2 2a       	or	r10, r18
   1c3b0:	b3 2a       	or	r11, r19
   1c3b2:	c4 2a       	or	r12, r20
   1c3b4:	d5 2a       	or	r13, r21
   1c3b6:	e9 84       	ldd	r14, Y+9	; 0x09
   1c3b8:	fa 84       	ldd	r15, Y+10	; 0x0a
   1c3ba:	0b 85       	ldd	r16, Y+11	; 0x0b
   1c3bc:	1c 85       	ldd	r17, Y+12	; 0x0c
   1c3be:	ae 0c       	add	r10, r14
   1c3c0:	bf 1c       	adc	r11, r15
   1c3c2:	c0 1e       	adc	r12, r16
   1c3c4:	d1 1e       	adc	r13, r17
  /* Round 3 */
#define S31 4
#define S32 11
#define S33 16
#define S34 23
  HH ( a, b, c, d, in[ 5], S31, 4294588738); /* 33 */
   1c3c6:	a9 96       	adiw	r28, 0x29	; 41
   1c3c8:	0c ad       	ldd	r16, Y+60	; 0x3c
   1c3ca:	1d ad       	ldd	r17, Y+61	; 0x3d
   1c3cc:	2e ad       	ldd	r18, Y+62	; 0x3e
   1c3ce:	3f ad       	ldd	r19, Y+63	; 0x3f
   1c3d0:	a9 97       	sbiw	r28, 0x29	; 41
   1c3d2:	0e 5b       	subi	r16, 0xBE	; 190
   1c3d4:	16 4c       	sbci	r17, 0xC6	; 198
   1c3d6:	25 40       	sbci	r18, 0x05	; 5
   1c3d8:	30 40       	sbci	r19, 0x00	; 0
   1c3da:	a9 96       	adiw	r28, 0x29	; 41
   1c3dc:	0c af       	std	Y+60, r16	; 0x3c
   1c3de:	1d af       	std	Y+61, r17	; 0x3d
   1c3e0:	2e af       	std	Y+62, r18	; 0x3e
   1c3e2:	3f af       	std	Y+63, r19	; 0x3f
   1c3e4:	a9 97       	sbiw	r28, 0x29	; 41
   1c3e6:	a9 01       	movw	r20, r18
   1c3e8:	98 01       	movw	r18, r16
   1c3ea:	22 0d       	add	r18, r2
   1c3ec:	33 1d       	adc	r19, r3
   1c3ee:	44 1d       	adc	r20, r4
   1c3f0:	55 1d       	adc	r21, r5
   1c3f2:	89 85       	ldd	r24, Y+9	; 0x09
   1c3f4:	9a 85       	ldd	r25, Y+10	; 0x0a
   1c3f6:	ab 85       	ldd	r26, Y+11	; 0x0b
   1c3f8:	bc 85       	ldd	r27, Y+12	; 0x0c
   1c3fa:	86 25       	eor	r24, r6
   1c3fc:	97 25       	eor	r25, r7
   1c3fe:	a8 25       	eor	r26, r8
   1c400:	b9 25       	eor	r27, r9
   1c402:	8a 25       	eor	r24, r10
   1c404:	9b 25       	eor	r25, r11
   1c406:	ac 25       	eor	r26, r12
   1c408:	bd 25       	eor	r27, r13
   1c40a:	28 0f       	add	r18, r24
   1c40c:	39 1f       	adc	r19, r25
   1c40e:	4a 1f       	adc	r20, r26
   1c410:	5b 1f       	adc	r21, r27
   1c412:	39 01       	movw	r6, r18
   1c414:	4a 01       	movw	r8, r20
   1c416:	f4 e0       	ldi	r31, 0x04	; 4
   1c418:	66 0c       	add	r6, r6
   1c41a:	77 1c       	adc	r7, r7
   1c41c:	88 1c       	adc	r8, r8
   1c41e:	99 1c       	adc	r9, r9
   1c420:	fa 95       	dec	r31
   1c422:	d1 f7       	brne	.-12     	; 0x1c418 <Transform+0x12f8>
   1c424:	ec e1       	ldi	r30, 0x1C	; 28
   1c426:	56 95       	lsr	r21
   1c428:	47 95       	ror	r20
   1c42a:	37 95       	ror	r19
   1c42c:	27 95       	ror	r18
   1c42e:	ea 95       	dec	r30
   1c430:	d1 f7       	brne	.-12     	; 0x1c426 <Transform+0x1306>
   1c432:	62 2a       	or	r6, r18
   1c434:	73 2a       	or	r7, r19
   1c436:	84 2a       	or	r8, r20
   1c438:	95 2a       	or	r9, r21
   1c43a:	6a 0c       	add	r6, r10
   1c43c:	7b 1c       	adc	r7, r11
   1c43e:	8c 1c       	adc	r8, r12
   1c440:	9d 1c       	adc	r9, r13
  HH ( d, a, b, c, in[ 8], S32, 2272392833); /* 34 */
   1c442:	6d 96       	adiw	r28, 0x1d	; 29
   1c444:	2c ad       	ldd	r18, Y+60	; 0x3c
   1c446:	3d ad       	ldd	r19, Y+61	; 0x3d
   1c448:	4e ad       	ldd	r20, Y+62	; 0x3e
   1c44a:	5f ad       	ldd	r21, Y+63	; 0x3f
   1c44c:	6d 97       	sbiw	r28, 0x1d	; 29
   1c44e:	2f 57       	subi	r18, 0x7F	; 127
   1c450:	39 40       	sbci	r19, 0x09	; 9
   1c452:	4e 48       	sbci	r20, 0x8E	; 142
   1c454:	58 47       	sbci	r21, 0x78	; 120
   1c456:	6d 96       	adiw	r28, 0x1d	; 29
   1c458:	2c af       	std	Y+60, r18	; 0x3c
   1c45a:	3d af       	std	Y+61, r19	; 0x3d
   1c45c:	4e af       	std	Y+62, r20	; 0x3e
   1c45e:	5f af       	std	Y+63, r21	; 0x3f
   1c460:	6d 97       	sbiw	r28, 0x1d	; 29
   1c462:	8d 85       	ldd	r24, Y+13	; 0x0d
   1c464:	9e 85       	ldd	r25, Y+14	; 0x0e
   1c466:	af 85       	ldd	r26, Y+15	; 0x0f
   1c468:	b8 89       	ldd	r27, Y+16	; 0x10
   1c46a:	28 0f       	add	r18, r24
   1c46c:	39 1f       	adc	r19, r25
   1c46e:	4a 1f       	adc	r20, r26
   1c470:	5b 1f       	adc	r21, r27
   1c472:	89 85       	ldd	r24, Y+9	; 0x09
   1c474:	9a 85       	ldd	r25, Y+10	; 0x0a
   1c476:	ab 85       	ldd	r26, Y+11	; 0x0b
   1c478:	bc 85       	ldd	r27, Y+12	; 0x0c
   1c47a:	8a 25       	eor	r24, r10
   1c47c:	9b 25       	eor	r25, r11
   1c47e:	ac 25       	eor	r26, r12
   1c480:	bd 25       	eor	r27, r13
   1c482:	86 25       	eor	r24, r6
   1c484:	97 25       	eor	r25, r7
   1c486:	a8 25       	eor	r26, r8
   1c488:	b9 25       	eor	r27, r9
   1c48a:	28 0f       	add	r18, r24
   1c48c:	39 1f       	adc	r19, r25
   1c48e:	4a 1f       	adc	r20, r26
   1c490:	5b 1f       	adc	r21, r27
   1c492:	19 01       	movw	r2, r18
   1c494:	2a 01       	movw	r4, r20
   1c496:	7b e0       	ldi	r23, 0x0B	; 11
   1c498:	22 0c       	add	r2, r2
   1c49a:	33 1c       	adc	r3, r3
   1c49c:	44 1c       	adc	r4, r4
   1c49e:	55 1c       	adc	r5, r5
   1c4a0:	7a 95       	dec	r23
   1c4a2:	d1 f7       	brne	.-12     	; 0x1c498 <Transform+0x1378>
   1c4a4:	65 e1       	ldi	r22, 0x15	; 21
   1c4a6:	56 95       	lsr	r21
   1c4a8:	47 95       	ror	r20
   1c4aa:	37 95       	ror	r19
   1c4ac:	27 95       	ror	r18
   1c4ae:	6a 95       	dec	r22
   1c4b0:	d1 f7       	brne	.-12     	; 0x1c4a6 <Transform+0x1386>
   1c4b2:	22 2a       	or	r2, r18
   1c4b4:	33 2a       	or	r3, r19
   1c4b6:	44 2a       	or	r4, r20
   1c4b8:	55 2a       	or	r5, r21
   1c4ba:	26 0c       	add	r2, r6
   1c4bc:	37 1c       	adc	r3, r7
   1c4be:	48 1c       	adc	r4, r8
   1c4c0:	59 1c       	adc	r5, r9
  HH ( c, d, a, b, in[11], S33, 1839030562); /* 35 */
   1c4c2:	61 96       	adiw	r28, 0x11	; 17
   1c4c4:	0c ad       	ldd	r16, Y+60	; 0x3c
   1c4c6:	1d ad       	ldd	r17, Y+61	; 0x3d
   1c4c8:	2e ad       	ldd	r18, Y+62	; 0x3e
   1c4ca:	3f ad       	ldd	r19, Y+63	; 0x3f
   1c4cc:	61 97       	sbiw	r28, 0x11	; 17
   1c4ce:	0e 5d       	subi	r16, 0xDE	; 222
   1c4d0:	1e 49       	sbci	r17, 0x9E	; 158
   1c4d2:	22 46       	sbci	r18, 0x62	; 98
   1c4d4:	32 49       	sbci	r19, 0x92	; 146
   1c4d6:	61 96       	adiw	r28, 0x11	; 17
   1c4d8:	0c af       	std	Y+60, r16	; 0x3c
   1c4da:	1d af       	std	Y+61, r17	; 0x3d
   1c4dc:	2e af       	std	Y+62, r18	; 0x3e
   1c4de:	3f af       	std	Y+63, r19	; 0x3f
   1c4e0:	61 97       	sbiw	r28, 0x11	; 17
   1c4e2:	78 01       	movw	r14, r16
   1c4e4:	89 01       	movw	r16, r18
   1c4e6:	29 85       	ldd	r18, Y+9	; 0x09
   1c4e8:	3a 85       	ldd	r19, Y+10	; 0x0a
   1c4ea:	4b 85       	ldd	r20, Y+11	; 0x0b
   1c4ec:	5c 85       	ldd	r21, Y+12	; 0x0c
   1c4ee:	e2 0e       	add	r14, r18
   1c4f0:	f3 1e       	adc	r15, r19
   1c4f2:	04 1f       	adc	r16, r20
   1c4f4:	15 1f       	adc	r17, r21
   1c4f6:	d4 01       	movw	r26, r8
   1c4f8:	c3 01       	movw	r24, r6
   1c4fa:	8a 25       	eor	r24, r10
   1c4fc:	9b 25       	eor	r25, r11
   1c4fe:	ac 25       	eor	r26, r12
   1c500:	bd 25       	eor	r27, r13
   1c502:	82 25       	eor	r24, r2
   1c504:	93 25       	eor	r25, r3
   1c506:	a4 25       	eor	r26, r4
   1c508:	b5 25       	eor	r27, r5
   1c50a:	e8 0e       	add	r14, r24
   1c50c:	f9 1e       	adc	r15, r25
   1c50e:	0a 1f       	adc	r16, r26
   1c510:	1b 1f       	adc	r17, r27
   1c512:	c8 01       	movw	r24, r16
   1c514:	aa 27       	eor	r26, r26
   1c516:	bb 27       	eor	r27, r27
   1c518:	87 01       	movw	r16, r14
   1c51a:	ff 24       	eor	r15, r15
   1c51c:	ee 24       	eor	r14, r14
   1c51e:	e8 2a       	or	r14, r24
   1c520:	f9 2a       	or	r15, r25
   1c522:	0a 2b       	or	r16, r26
   1c524:	1b 2b       	or	r17, r27
   1c526:	e2 0c       	add	r14, r2
   1c528:	f3 1c       	adc	r15, r3
   1c52a:	04 1d       	adc	r16, r4
   1c52c:	15 1d       	adc	r17, r5
  HH ( b, c, d, a, in[14], S34, 4259657740); /* 36 */
   1c52e:	25 96       	adiw	r28, 0x05	; 5
   1c530:	8c ad       	ldd	r24, Y+60	; 0x3c
   1c532:	9d ad       	ldd	r25, Y+61	; 0x3d
   1c534:	ae ad       	ldd	r26, Y+62	; 0x3e
   1c536:	bf ad       	ldd	r27, Y+63	; 0x3f
   1c538:	25 97       	sbiw	r28, 0x05	; 5
   1c53a:	84 5f       	subi	r24, 0xF4	; 244
   1c53c:	97 4c       	sbci	r25, 0xC7	; 199
   1c53e:	aa 41       	sbci	r26, 0x1A	; 26
   1c540:	b2 40       	sbci	r27, 0x02	; 2
   1c542:	25 96       	adiw	r28, 0x05	; 5
   1c544:	8c af       	std	Y+60, r24	; 0x3c
   1c546:	9d af       	std	Y+61, r25	; 0x3d
   1c548:	ae af       	std	Y+62, r26	; 0x3e
   1c54a:	bf af       	std	Y+63, r27	; 0x3f
   1c54c:	25 97       	sbiw	r28, 0x05	; 5
   1c54e:	9c 01       	movw	r18, r24
   1c550:	ad 01       	movw	r20, r26
   1c552:	2a 0d       	add	r18, r10
   1c554:	3b 1d       	adc	r19, r11
   1c556:	4c 1d       	adc	r20, r12
   1c558:	5d 1d       	adc	r21, r13
   1c55a:	d2 01       	movw	r26, r4
   1c55c:	c1 01       	movw	r24, r2
   1c55e:	86 25       	eor	r24, r6
   1c560:	97 25       	eor	r25, r7
   1c562:	a8 25       	eor	r26, r8
   1c564:	b9 25       	eor	r27, r9
   1c566:	8e 25       	eor	r24, r14
   1c568:	9f 25       	eor	r25, r15
   1c56a:	a0 27       	eor	r26, r16
   1c56c:	b1 27       	eor	r27, r17
   1c56e:	28 0f       	add	r18, r24
   1c570:	39 1f       	adc	r19, r25
   1c572:	4a 1f       	adc	r20, r26
   1c574:	5b 1f       	adc	r21, r27
   1c576:	59 01       	movw	r10, r18
   1c578:	6a 01       	movw	r12, r20
   1c57a:	b7 e1       	ldi	r27, 0x17	; 23
   1c57c:	aa 0c       	add	r10, r10
   1c57e:	bb 1c       	adc	r11, r11
   1c580:	cc 1c       	adc	r12, r12
   1c582:	dd 1c       	adc	r13, r13
   1c584:	ba 95       	dec	r27
   1c586:	d1 f7       	brne	.-12     	; 0x1c57c <Transform+0x145c>
   1c588:	a9 e0       	ldi	r26, 0x09	; 9
   1c58a:	56 95       	lsr	r21
   1c58c:	47 95       	ror	r20
   1c58e:	37 95       	ror	r19
   1c590:	27 95       	ror	r18
   1c592:	aa 95       	dec	r26
   1c594:	d1 f7       	brne	.-12     	; 0x1c58a <Transform+0x146a>
   1c596:	a2 2a       	or	r10, r18
   1c598:	b3 2a       	or	r11, r19
   1c59a:	c4 2a       	or	r12, r20
   1c59c:	d5 2a       	or	r13, r21
   1c59e:	ae 0c       	add	r10, r14
   1c5a0:	bf 1c       	adc	r11, r15
   1c5a2:	c0 1e       	adc	r12, r16
   1c5a4:	d1 1e       	adc	r13, r17
  HH ( a, b, c, d, in[ 1], S31, 2763975236); /* 37 */
   1c5a6:	e9 96       	adiw	r28, 0x39	; 57
   1c5a8:	2c ad       	ldd	r18, Y+60	; 0x3c
   1c5aa:	3d ad       	ldd	r19, Y+61	; 0x3d
   1c5ac:	4e ad       	ldd	r20, Y+62	; 0x3e
   1c5ae:	5f ad       	ldd	r21, Y+63	; 0x3f
   1c5b0:	e9 97       	sbiw	r28, 0x39	; 57
   1c5b2:	2c 5b       	subi	r18, 0xBC	; 188
   1c5b4:	35 41       	sbci	r19, 0x15	; 21
   1c5b6:	41 44       	sbci	r20, 0x41	; 65
   1c5b8:	5b 45       	sbci	r21, 0x5B	; 91
   1c5ba:	e9 96       	adiw	r28, 0x39	; 57
   1c5bc:	2c af       	std	Y+60, r18	; 0x3c
   1c5be:	3d af       	std	Y+61, r19	; 0x3d
   1c5c0:	4e af       	std	Y+62, r20	; 0x3e
   1c5c2:	5f af       	std	Y+63, r21	; 0x3f
   1c5c4:	e9 97       	sbiw	r28, 0x39	; 57
   1c5c6:	26 0d       	add	r18, r6
   1c5c8:	37 1d       	adc	r19, r7
   1c5ca:	48 1d       	adc	r20, r8
   1c5cc:	59 1d       	adc	r21, r9
   1c5ce:	d8 01       	movw	r26, r16
   1c5d0:	c7 01       	movw	r24, r14
   1c5d2:	82 25       	eor	r24, r2
   1c5d4:	93 25       	eor	r25, r3
   1c5d6:	a4 25       	eor	r26, r4
   1c5d8:	b5 25       	eor	r27, r5
   1c5da:	8a 25       	eor	r24, r10
   1c5dc:	9b 25       	eor	r25, r11
   1c5de:	ac 25       	eor	r26, r12
   1c5e0:	bd 25       	eor	r27, r13
   1c5e2:	28 0f       	add	r18, r24
   1c5e4:	39 1f       	adc	r19, r25
   1c5e6:	4a 1f       	adc	r20, r26
   1c5e8:	5b 1f       	adc	r21, r27
   1c5ea:	39 01       	movw	r6, r18
   1c5ec:	4a 01       	movw	r8, r20
   1c5ee:	f4 e0       	ldi	r31, 0x04	; 4
   1c5f0:	66 0c       	add	r6, r6
   1c5f2:	77 1c       	adc	r7, r7
   1c5f4:	88 1c       	adc	r8, r8
   1c5f6:	99 1c       	adc	r9, r9
   1c5f8:	fa 95       	dec	r31
   1c5fa:	d1 f7       	brne	.-12     	; 0x1c5f0 <Transform+0x14d0>
   1c5fc:	ec e1       	ldi	r30, 0x1C	; 28
   1c5fe:	56 95       	lsr	r21
   1c600:	47 95       	ror	r20
   1c602:	37 95       	ror	r19
   1c604:	27 95       	ror	r18
   1c606:	ea 95       	dec	r30
   1c608:	d1 f7       	brne	.-12     	; 0x1c5fe <Transform+0x14de>
   1c60a:	62 2a       	or	r6, r18
   1c60c:	73 2a       	or	r7, r19
   1c60e:	84 2a       	or	r8, r20
   1c610:	95 2a       	or	r9, r21
   1c612:	6a 0c       	add	r6, r10
   1c614:	7b 1c       	adc	r7, r11
   1c616:	8c 1c       	adc	r8, r12
   1c618:	9d 1c       	adc	r9, r13
  HH ( d, a, b, c, in[ 4], S32, 1272893353); /* 38 */
   1c61a:	ad 96       	adiw	r28, 0x2d	; 45
   1c61c:	8c ad       	ldd	r24, Y+60	; 0x3c
   1c61e:	9d ad       	ldd	r25, Y+61	; 0x3d
   1c620:	ae ad       	ldd	r26, Y+62	; 0x3e
   1c622:	bf ad       	ldd	r27, Y+63	; 0x3f
   1c624:	ad 97       	sbiw	r28, 0x2d	; 45
   1c626:	87 55       	subi	r24, 0x57	; 87
   1c628:	90 43       	sbci	r25, 0x30	; 48
   1c62a:	a1 42       	sbci	r26, 0x21	; 33
   1c62c:	b4 4b       	sbci	r27, 0xB4	; 180
   1c62e:	ad 96       	adiw	r28, 0x2d	; 45
   1c630:	8c af       	std	Y+60, r24	; 0x3c
   1c632:	9d af       	std	Y+61, r25	; 0x3d
   1c634:	ae af       	std	Y+62, r26	; 0x3e
   1c636:	bf af       	std	Y+63, r27	; 0x3f
   1c638:	ad 97       	sbiw	r28, 0x2d	; 45
   1c63a:	9c 01       	movw	r18, r24
   1c63c:	ad 01       	movw	r20, r26
   1c63e:	22 0d       	add	r18, r2
   1c640:	33 1d       	adc	r19, r3
   1c642:	44 1d       	adc	r20, r4
   1c644:	55 1d       	adc	r21, r5
   1c646:	d6 01       	movw	r26, r12
   1c648:	c5 01       	movw	r24, r10
   1c64a:	8e 25       	eor	r24, r14
   1c64c:	9f 25       	eor	r25, r15
   1c64e:	a0 27       	eor	r26, r16
   1c650:	b1 27       	eor	r27, r17
   1c652:	86 25       	eor	r24, r6
   1c654:	97 25       	eor	r25, r7
   1c656:	a8 25       	eor	r26, r8
   1c658:	b9 25       	eor	r27, r9
   1c65a:	28 0f       	add	r18, r24
   1c65c:	39 1f       	adc	r19, r25
   1c65e:	4a 1f       	adc	r20, r26
   1c660:	5b 1f       	adc	r21, r27
   1c662:	19 01       	movw	r2, r18
   1c664:	2a 01       	movw	r4, r20
   1c666:	7b e0       	ldi	r23, 0x0B	; 11
   1c668:	22 0c       	add	r2, r2
   1c66a:	33 1c       	adc	r3, r3
   1c66c:	44 1c       	adc	r4, r4
   1c66e:	55 1c       	adc	r5, r5
   1c670:	7a 95       	dec	r23
   1c672:	d1 f7       	brne	.-12     	; 0x1c668 <Transform+0x1548>
   1c674:	65 e1       	ldi	r22, 0x15	; 21
   1c676:	56 95       	lsr	r21
   1c678:	47 95       	ror	r20
   1c67a:	37 95       	ror	r19
   1c67c:	27 95       	ror	r18
   1c67e:	6a 95       	dec	r22
   1c680:	d1 f7       	brne	.-12     	; 0x1c676 <Transform+0x1556>
   1c682:	22 2a       	or	r2, r18
   1c684:	33 2a       	or	r3, r19
   1c686:	44 2a       	or	r4, r20
   1c688:	55 2a       	or	r5, r21
   1c68a:	26 0c       	add	r2, r6
   1c68c:	37 1c       	adc	r3, r7
   1c68e:	48 1c       	adc	r4, r8
   1c690:	59 1c       	adc	r5, r9
  HH ( c, d, a, b, in[ 7], S33, 4139469664); /* 39 */
   1c692:	a1 96       	adiw	r28, 0x21	; 33
   1c694:	2c ad       	ldd	r18, Y+60	; 0x3c
   1c696:	3d ad       	ldd	r19, Y+61	; 0x3d
   1c698:	4e ad       	ldd	r20, Y+62	; 0x3e
   1c69a:	5f ad       	ldd	r21, Y+63	; 0x3f
   1c69c:	a1 97       	sbiw	r28, 0x21	; 33
   1c69e:	20 5a       	subi	r18, 0xA0	; 160
   1c6a0:	34 4b       	sbci	r19, 0xB4	; 180
   1c6a2:	44 44       	sbci	r20, 0x44	; 68
   1c6a4:	59 40       	sbci	r21, 0x09	; 9
   1c6a6:	a1 96       	adiw	r28, 0x21	; 33
   1c6a8:	2c af       	std	Y+60, r18	; 0x3c
   1c6aa:	3d af       	std	Y+61, r19	; 0x3d
   1c6ac:	4e af       	std	Y+62, r20	; 0x3e
   1c6ae:	5f af       	std	Y+63, r21	; 0x3f
   1c6b0:	a1 97       	sbiw	r28, 0x21	; 33
   1c6b2:	e2 0e       	add	r14, r18
   1c6b4:	f3 1e       	adc	r15, r19
   1c6b6:	04 1f       	adc	r16, r20
   1c6b8:	15 1f       	adc	r17, r21
   1c6ba:	d4 01       	movw	r26, r8
   1c6bc:	c3 01       	movw	r24, r6
   1c6be:	8a 25       	eor	r24, r10
   1c6c0:	9b 25       	eor	r25, r11
   1c6c2:	ac 25       	eor	r26, r12
   1c6c4:	bd 25       	eor	r27, r13
   1c6c6:	82 25       	eor	r24, r2
   1c6c8:	93 25       	eor	r25, r3
   1c6ca:	a4 25       	eor	r26, r4
   1c6cc:	b5 25       	eor	r27, r5
   1c6ce:	e8 0e       	add	r14, r24
   1c6d0:	f9 1e       	adc	r15, r25
   1c6d2:	0a 1f       	adc	r16, r26
   1c6d4:	1b 1f       	adc	r17, r27
   1c6d6:	c8 01       	movw	r24, r16
   1c6d8:	aa 27       	eor	r26, r26
   1c6da:	bb 27       	eor	r27, r27
   1c6dc:	87 01       	movw	r16, r14
   1c6de:	ff 24       	eor	r15, r15
   1c6e0:	ee 24       	eor	r14, r14
   1c6e2:	e8 2a       	or	r14, r24
   1c6e4:	f9 2a       	or	r15, r25
   1c6e6:	0a 2b       	or	r16, r26
   1c6e8:	1b 2b       	or	r17, r27
   1c6ea:	e2 0c       	add	r14, r2
   1c6ec:	f3 1c       	adc	r15, r3
   1c6ee:	04 1d       	adc	r16, r4
   1c6f0:	15 1d       	adc	r17, r5
  HH ( b, c, d, a, in[10], S34, 3200236656); /* 40 */
   1c6f2:	65 96       	adiw	r28, 0x15	; 21
   1c6f4:	8c ad       	ldd	r24, Y+60	; 0x3c
   1c6f6:	9d ad       	ldd	r25, Y+61	; 0x3d
   1c6f8:	ae ad       	ldd	r26, Y+62	; 0x3e
   1c6fa:	bf ad       	ldd	r27, Y+63	; 0x3f
   1c6fc:	65 97       	sbiw	r28, 0x15	; 21
   1c6fe:	80 59       	subi	r24, 0x90	; 144
   1c700:	93 44       	sbci	r25, 0x43	; 67
   1c702:	a0 44       	sbci	r26, 0x40	; 64
   1c704:	b1 44       	sbci	r27, 0x41	; 65
   1c706:	65 96       	adiw	r28, 0x15	; 21
   1c708:	8c af       	std	Y+60, r24	; 0x3c
   1c70a:	9d af       	std	Y+61, r25	; 0x3d
   1c70c:	ae af       	std	Y+62, r26	; 0x3e
   1c70e:	bf af       	std	Y+63, r27	; 0x3f
   1c710:	65 97       	sbiw	r28, 0x15	; 21
   1c712:	9c 01       	movw	r18, r24
   1c714:	ad 01       	movw	r20, r26
   1c716:	2a 0d       	add	r18, r10
   1c718:	3b 1d       	adc	r19, r11
   1c71a:	4c 1d       	adc	r20, r12
   1c71c:	5d 1d       	adc	r21, r13
   1c71e:	d2 01       	movw	r26, r4
   1c720:	c1 01       	movw	r24, r2
   1c722:	86 25       	eor	r24, r6
   1c724:	97 25       	eor	r25, r7
   1c726:	a8 25       	eor	r26, r8
   1c728:	b9 25       	eor	r27, r9
   1c72a:	8e 25       	eor	r24, r14
   1c72c:	9f 25       	eor	r25, r15
   1c72e:	a0 27       	eor	r26, r16
   1c730:	b1 27       	eor	r27, r17
   1c732:	28 0f       	add	r18, r24
   1c734:	39 1f       	adc	r19, r25
   1c736:	4a 1f       	adc	r20, r26
   1c738:	5b 1f       	adc	r21, r27
   1c73a:	59 01       	movw	r10, r18
   1c73c:	6a 01       	movw	r12, r20
   1c73e:	b7 e1       	ldi	r27, 0x17	; 23
   1c740:	aa 0c       	add	r10, r10
   1c742:	bb 1c       	adc	r11, r11
   1c744:	cc 1c       	adc	r12, r12
   1c746:	dd 1c       	adc	r13, r13
   1c748:	ba 95       	dec	r27
   1c74a:	d1 f7       	brne	.-12     	; 0x1c740 <Transform+0x1620>
   1c74c:	a9 e0       	ldi	r26, 0x09	; 9
   1c74e:	56 95       	lsr	r21
   1c750:	47 95       	ror	r20
   1c752:	37 95       	ror	r19
   1c754:	27 95       	ror	r18
   1c756:	aa 95       	dec	r26
   1c758:	d1 f7       	brne	.-12     	; 0x1c74e <Transform+0x162e>
   1c75a:	a2 2a       	or	r10, r18
   1c75c:	b3 2a       	or	r11, r19
   1c75e:	c4 2a       	or	r12, r20
   1c760:	d5 2a       	or	r13, r21
   1c762:	ae 0c       	add	r10, r14
   1c764:	bf 1c       	adc	r11, r15
   1c766:	c0 1e       	adc	r12, r16
   1c768:	d1 1e       	adc	r13, r17
  HH ( a, b, c, d, in[13], S31,  681279174); /* 41 */
   1c76a:	29 96       	adiw	r28, 0x09	; 9
   1c76c:	2c ad       	ldd	r18, Y+60	; 0x3c
   1c76e:	3d ad       	ldd	r19, Y+61	; 0x3d
   1c770:	4e ad       	ldd	r20, Y+62	; 0x3e
   1c772:	5f ad       	ldd	r21, Y+63	; 0x3f
   1c774:	29 97       	sbiw	r28, 0x09	; 9
   1c776:	2a 53       	subi	r18, 0x3A	; 58
   1c778:	31 48       	sbci	r19, 0x81	; 129
   1c77a:	44 46       	sbci	r20, 0x64	; 100
   1c77c:	57 4d       	sbci	r21, 0xD7	; 215
   1c77e:	29 96       	adiw	r28, 0x09	; 9
   1c780:	2c af       	std	Y+60, r18	; 0x3c
   1c782:	3d af       	std	Y+61, r19	; 0x3d
   1c784:	4e af       	std	Y+62, r20	; 0x3e
   1c786:	5f af       	std	Y+63, r21	; 0x3f
   1c788:	29 97       	sbiw	r28, 0x09	; 9
   1c78a:	26 0d       	add	r18, r6
   1c78c:	37 1d       	adc	r19, r7
   1c78e:	48 1d       	adc	r20, r8
   1c790:	59 1d       	adc	r21, r9
   1c792:	d8 01       	movw	r26, r16
   1c794:	c7 01       	movw	r24, r14
   1c796:	82 25       	eor	r24, r2
   1c798:	93 25       	eor	r25, r3
   1c79a:	a4 25       	eor	r26, r4
   1c79c:	b5 25       	eor	r27, r5
   1c79e:	8a 25       	eor	r24, r10
   1c7a0:	9b 25       	eor	r25, r11
   1c7a2:	ac 25       	eor	r26, r12
   1c7a4:	bd 25       	eor	r27, r13
   1c7a6:	28 0f       	add	r18, r24
   1c7a8:	39 1f       	adc	r19, r25
   1c7aa:	4a 1f       	adc	r20, r26
   1c7ac:	5b 1f       	adc	r21, r27
   1c7ae:	39 01       	movw	r6, r18
   1c7b0:	4a 01       	movw	r8, r20
   1c7b2:	f4 e0       	ldi	r31, 0x04	; 4
   1c7b4:	66 0c       	add	r6, r6
   1c7b6:	77 1c       	adc	r7, r7
   1c7b8:	88 1c       	adc	r8, r8
   1c7ba:	99 1c       	adc	r9, r9
   1c7bc:	fa 95       	dec	r31
   1c7be:	d1 f7       	brne	.-12     	; 0x1c7b4 <Transform+0x1694>
   1c7c0:	ec e1       	ldi	r30, 0x1C	; 28
   1c7c2:	56 95       	lsr	r21
   1c7c4:	47 95       	ror	r20
   1c7c6:	37 95       	ror	r19
   1c7c8:	27 95       	ror	r18
   1c7ca:	ea 95       	dec	r30
   1c7cc:	d1 f7       	brne	.-12     	; 0x1c7c2 <Transform+0x16a2>
   1c7ce:	62 2a       	or	r6, r18
   1c7d0:	73 2a       	or	r7, r19
   1c7d2:	84 2a       	or	r8, r20
   1c7d4:	95 2a       	or	r9, r21
   1c7d6:	6a 0c       	add	r6, r10
   1c7d8:	7b 1c       	adc	r7, r11
   1c7da:	8c 1c       	adc	r8, r12
   1c7dc:	9d 1c       	adc	r9, r13
  HH ( d, a, b, c, in[ 0], S32, 3936430074); /* 42 */
   1c7de:	ed 96       	adiw	r28, 0x3d	; 61
   1c7e0:	8c ad       	ldd	r24, Y+60	; 0x3c
   1c7e2:	9d ad       	ldd	r25, Y+61	; 0x3d
   1c7e4:	ae ad       	ldd	r26, Y+62	; 0x3e
   1c7e6:	bf ad       	ldd	r27, Y+63	; 0x3f
   1c7e8:	ed 97       	sbiw	r28, 0x3d	; 61
   1c7ea:	86 50       	subi	r24, 0x06	; 6
   1c7ec:	98 4d       	sbci	r25, 0xD8	; 216
   1c7ee:	ae 45       	sbci	r26, 0x5E	; 94
   1c7f0:	b5 41       	sbci	r27, 0x15	; 21
   1c7f2:	ed 96       	adiw	r28, 0x3d	; 61
   1c7f4:	8c af       	std	Y+60, r24	; 0x3c
   1c7f6:	9d af       	std	Y+61, r25	; 0x3d
   1c7f8:	ae af       	std	Y+62, r26	; 0x3e
   1c7fa:	bf af       	std	Y+63, r27	; 0x3f
   1c7fc:	ed 97       	sbiw	r28, 0x3d	; 61
   1c7fe:	9c 01       	movw	r18, r24
   1c800:	ad 01       	movw	r20, r26
   1c802:	22 0d       	add	r18, r2
   1c804:	33 1d       	adc	r19, r3
   1c806:	44 1d       	adc	r20, r4
   1c808:	55 1d       	adc	r21, r5
   1c80a:	d6 01       	movw	r26, r12
   1c80c:	c5 01       	movw	r24, r10
   1c80e:	8e 25       	eor	r24, r14
   1c810:	9f 25       	eor	r25, r15
   1c812:	a0 27       	eor	r26, r16
   1c814:	b1 27       	eor	r27, r17
   1c816:	86 25       	eor	r24, r6
   1c818:	97 25       	eor	r25, r7
   1c81a:	a8 25       	eor	r26, r8
   1c81c:	b9 25       	eor	r27, r9
   1c81e:	28 0f       	add	r18, r24
   1c820:	39 1f       	adc	r19, r25
   1c822:	4a 1f       	adc	r20, r26
   1c824:	5b 1f       	adc	r21, r27
   1c826:	19 01       	movw	r2, r18
   1c828:	2a 01       	movw	r4, r20
   1c82a:	7b e0       	ldi	r23, 0x0B	; 11
   1c82c:	22 0c       	add	r2, r2
   1c82e:	33 1c       	adc	r3, r3
   1c830:	44 1c       	adc	r4, r4
   1c832:	55 1c       	adc	r5, r5
   1c834:	7a 95       	dec	r23
   1c836:	d1 f7       	brne	.-12     	; 0x1c82c <Transform+0x170c>
   1c838:	65 e1       	ldi	r22, 0x15	; 21
   1c83a:	56 95       	lsr	r21
   1c83c:	47 95       	ror	r20
   1c83e:	37 95       	ror	r19
   1c840:	27 95       	ror	r18
   1c842:	6a 95       	dec	r22
   1c844:	d1 f7       	brne	.-12     	; 0x1c83a <Transform+0x171a>
   1c846:	22 2a       	or	r2, r18
   1c848:	33 2a       	or	r3, r19
   1c84a:	44 2a       	or	r4, r20
   1c84c:	55 2a       	or	r5, r21
   1c84e:	26 0c       	add	r2, r6
   1c850:	37 1c       	adc	r3, r7
   1c852:	48 1c       	adc	r4, r8
   1c854:	59 1c       	adc	r5, r9
  HH ( c, d, a, b, in[ 3], S33, 3572445317); /* 43 */
   1c856:	e1 96       	adiw	r28, 0x31	; 49
   1c858:	2c ad       	ldd	r18, Y+60	; 0x3c
   1c85a:	3d ad       	ldd	r19, Y+61	; 0x3d
   1c85c:	4e ad       	ldd	r20, Y+62	; 0x3e
   1c85e:	5f ad       	ldd	r21, Y+63	; 0x3f
   1c860:	e1 97       	sbiw	r28, 0x31	; 49
   1c862:	2b 57       	subi	r18, 0x7B	; 123
   1c864:	3f 4c       	sbci	r19, 0xCF	; 207
   1c866:	40 41       	sbci	r20, 0x10	; 16
   1c868:	5b 42       	sbci	r21, 0x2B	; 43
   1c86a:	e1 96       	adiw	r28, 0x31	; 49
   1c86c:	2c af       	std	Y+60, r18	; 0x3c
   1c86e:	3d af       	std	Y+61, r19	; 0x3d
   1c870:	4e af       	std	Y+62, r20	; 0x3e
   1c872:	5f af       	std	Y+63, r21	; 0x3f
   1c874:	e1 97       	sbiw	r28, 0x31	; 49
   1c876:	e2 0e       	add	r14, r18
   1c878:	f3 1e       	adc	r15, r19
   1c87a:	04 1f       	adc	r16, r20
   1c87c:	15 1f       	adc	r17, r21
   1c87e:	d4 01       	movw	r26, r8
   1c880:	c3 01       	movw	r24, r6
   1c882:	8a 25       	eor	r24, r10
   1c884:	9b 25       	eor	r25, r11
   1c886:	ac 25       	eor	r26, r12
   1c888:	bd 25       	eor	r27, r13
   1c88a:	82 25       	eor	r24, r2
   1c88c:	93 25       	eor	r25, r3
   1c88e:	a4 25       	eor	r26, r4
   1c890:	b5 25       	eor	r27, r5
   1c892:	e8 0e       	add	r14, r24
   1c894:	f9 1e       	adc	r15, r25
   1c896:	0a 1f       	adc	r16, r26
   1c898:	1b 1f       	adc	r17, r27
   1c89a:	c8 01       	movw	r24, r16
   1c89c:	aa 27       	eor	r26, r26
   1c89e:	bb 27       	eor	r27, r27
   1c8a0:	87 01       	movw	r16, r14
   1c8a2:	ff 24       	eor	r15, r15
   1c8a4:	ee 24       	eor	r14, r14
   1c8a6:	e8 2a       	or	r14, r24
   1c8a8:	f9 2a       	or	r15, r25
   1c8aa:	0a 2b       	or	r16, r26
   1c8ac:	1b 2b       	or	r17, r27
   1c8ae:	e2 0c       	add	r14, r2
   1c8b0:	f3 1c       	adc	r15, r3
   1c8b2:	04 1d       	adc	r16, r4
   1c8b4:	15 1d       	adc	r17, r5
  HH ( b, c, d, a, in[ 6], S34,   76029189); /* 44 */
   1c8b6:	a5 96       	adiw	r28, 0x25	; 37
   1c8b8:	8c ad       	ldd	r24, Y+60	; 0x3c
   1c8ba:	9d ad       	ldd	r25, Y+61	; 0x3d
   1c8bc:	ae ad       	ldd	r26, Y+62	; 0x3e
   1c8be:	bf ad       	ldd	r27, Y+63	; 0x3f
   1c8c0:	a5 97       	sbiw	r28, 0x25	; 37
   1c8c2:	8b 5f       	subi	r24, 0xFB	; 251
   1c8c4:	92 4e       	sbci	r25, 0xE2	; 226
   1c8c6:	a7 47       	sbci	r26, 0x77	; 119
   1c8c8:	bb 4f       	sbci	r27, 0xFB	; 251
   1c8ca:	a5 96       	adiw	r28, 0x25	; 37
   1c8cc:	8c af       	std	Y+60, r24	; 0x3c
   1c8ce:	9d af       	std	Y+61, r25	; 0x3d
   1c8d0:	ae af       	std	Y+62, r26	; 0x3e
   1c8d2:	bf af       	std	Y+63, r27	; 0x3f
   1c8d4:	a5 97       	sbiw	r28, 0x25	; 37
   1c8d6:	9c 01       	movw	r18, r24
   1c8d8:	ad 01       	movw	r20, r26
   1c8da:	2a 0d       	add	r18, r10
   1c8dc:	3b 1d       	adc	r19, r11
   1c8de:	4c 1d       	adc	r20, r12
   1c8e0:	5d 1d       	adc	r21, r13
   1c8e2:	d2 01       	movw	r26, r4
   1c8e4:	c1 01       	movw	r24, r2
   1c8e6:	86 25       	eor	r24, r6
   1c8e8:	97 25       	eor	r25, r7
   1c8ea:	a8 25       	eor	r26, r8
   1c8ec:	b9 25       	eor	r27, r9
   1c8ee:	8e 25       	eor	r24, r14
   1c8f0:	9f 25       	eor	r25, r15
   1c8f2:	a0 27       	eor	r26, r16
   1c8f4:	b1 27       	eor	r27, r17
   1c8f6:	28 0f       	add	r18, r24
   1c8f8:	39 1f       	adc	r19, r25
   1c8fa:	4a 1f       	adc	r20, r26
   1c8fc:	5b 1f       	adc	r21, r27
   1c8fe:	59 01       	movw	r10, r18
   1c900:	6a 01       	movw	r12, r20
   1c902:	b7 e1       	ldi	r27, 0x17	; 23
   1c904:	aa 0c       	add	r10, r10
   1c906:	bb 1c       	adc	r11, r11
   1c908:	cc 1c       	adc	r12, r12
   1c90a:	dd 1c       	adc	r13, r13
   1c90c:	ba 95       	dec	r27
   1c90e:	d1 f7       	brne	.-12     	; 0x1c904 <Transform+0x17e4>
   1c910:	a9 e0       	ldi	r26, 0x09	; 9
   1c912:	56 95       	lsr	r21
   1c914:	47 95       	ror	r20
   1c916:	37 95       	ror	r19
   1c918:	27 95       	ror	r18
   1c91a:	aa 95       	dec	r26
   1c91c:	d1 f7       	brne	.-12     	; 0x1c912 <Transform+0x17f2>
   1c91e:	a2 2a       	or	r10, r18
   1c920:	b3 2a       	or	r11, r19
   1c922:	c4 2a       	or	r12, r20
   1c924:	d5 2a       	or	r13, r21
   1c926:	ae 0c       	add	r10, r14
   1c928:	bf 1c       	adc	r11, r15
   1c92a:	c0 1e       	adc	r12, r16
   1c92c:	d1 1e       	adc	r13, r17
  HH ( a, b, c, d, in[ 9], S31, 3654602809); /* 45 */
   1c92e:	69 96       	adiw	r28, 0x19	; 25
   1c930:	2c ad       	ldd	r18, Y+60	; 0x3c
   1c932:	3d ad       	ldd	r19, Y+61	; 0x3d
   1c934:	4e ad       	ldd	r20, Y+62	; 0x3e
   1c936:	5f ad       	ldd	r21, Y+63	; 0x3f
   1c938:	69 97       	sbiw	r28, 0x19	; 25
   1c93a:	27 5c       	subi	r18, 0xC7	; 199
   1c93c:	3f 42       	sbci	r19, 0x2F	; 47
   1c93e:	4b 42       	sbci	r20, 0x2B	; 43
   1c940:	56 42       	sbci	r21, 0x26	; 38
   1c942:	69 96       	adiw	r28, 0x19	; 25
   1c944:	2c af       	std	Y+60, r18	; 0x3c
   1c946:	3d af       	std	Y+61, r19	; 0x3d
   1c948:	4e af       	std	Y+62, r20	; 0x3e
   1c94a:	5f af       	std	Y+63, r21	; 0x3f
   1c94c:	69 97       	sbiw	r28, 0x19	; 25
   1c94e:	26 0d       	add	r18, r6
   1c950:	37 1d       	adc	r19, r7
   1c952:	48 1d       	adc	r20, r8
   1c954:	59 1d       	adc	r21, r9
   1c956:	d8 01       	movw	r26, r16
   1c958:	c7 01       	movw	r24, r14
   1c95a:	82 25       	eor	r24, r2
   1c95c:	93 25       	eor	r25, r3
   1c95e:	a4 25       	eor	r26, r4
   1c960:	b5 25       	eor	r27, r5
   1c962:	8a 25       	eor	r24, r10
   1c964:	9b 25       	eor	r25, r11
   1c966:	ac 25       	eor	r26, r12
   1c968:	bd 25       	eor	r27, r13
   1c96a:	28 0f       	add	r18, r24
   1c96c:	39 1f       	adc	r19, r25
   1c96e:	4a 1f       	adc	r20, r26
   1c970:	5b 1f       	adc	r21, r27
   1c972:	39 01       	movw	r6, r18
   1c974:	4a 01       	movw	r8, r20
   1c976:	f4 e0       	ldi	r31, 0x04	; 4
   1c978:	66 0c       	add	r6, r6
   1c97a:	77 1c       	adc	r7, r7
   1c97c:	88 1c       	adc	r8, r8
   1c97e:	99 1c       	adc	r9, r9
   1c980:	fa 95       	dec	r31
   1c982:	d1 f7       	brne	.-12     	; 0x1c978 <Transform+0x1858>
   1c984:	ec e1       	ldi	r30, 0x1C	; 28
   1c986:	56 95       	lsr	r21
   1c988:	47 95       	ror	r20
   1c98a:	37 95       	ror	r19
   1c98c:	27 95       	ror	r18
   1c98e:	ea 95       	dec	r30
   1c990:	d1 f7       	brne	.-12     	; 0x1c986 <Transform+0x1866>
   1c992:	62 2a       	or	r6, r18
   1c994:	73 2a       	or	r7, r19
   1c996:	84 2a       	or	r8, r20
   1c998:	95 2a       	or	r9, r21
   1c99a:	6a 0c       	add	r6, r10
   1c99c:	7b 1c       	adc	r7, r11
   1c99e:	8c 1c       	adc	r8, r12
   1c9a0:	9d 1c       	adc	r9, r13
  HH ( d, a, b, c, in[12], S32, 3873151461); /* 46 */
   1c9a2:	2d 96       	adiw	r28, 0x0d	; 13
   1c9a4:	8c ad       	ldd	r24, Y+60	; 0x3c
   1c9a6:	9d ad       	ldd	r25, Y+61	; 0x3d
   1c9a8:	ae ad       	ldd	r26, Y+62	; 0x3e
   1c9aa:	bf ad       	ldd	r27, Y+63	; 0x3f
   1c9ac:	2d 97       	sbiw	r28, 0x0d	; 13
   1c9ae:	8b 51       	subi	r24, 0x1B	; 27
   1c9b0:	96 46       	sbci	r25, 0x66	; 102
   1c9b2:	a4 42       	sbci	r26, 0x24	; 36
   1c9b4:	b9 41       	sbci	r27, 0x19	; 25
   1c9b6:	2d 96       	adiw	r28, 0x0d	; 13
   1c9b8:	8c af       	std	Y+60, r24	; 0x3c
   1c9ba:	9d af       	std	Y+61, r25	; 0x3d
   1c9bc:	ae af       	std	Y+62, r26	; 0x3e
   1c9be:	bf af       	std	Y+63, r27	; 0x3f
   1c9c0:	2d 97       	sbiw	r28, 0x0d	; 13
   1c9c2:	9c 01       	movw	r18, r24
   1c9c4:	ad 01       	movw	r20, r26
   1c9c6:	22 0d       	add	r18, r2
   1c9c8:	33 1d       	adc	r19, r3
   1c9ca:	44 1d       	adc	r20, r4
   1c9cc:	55 1d       	adc	r21, r5
   1c9ce:	d6 01       	movw	r26, r12
   1c9d0:	c5 01       	movw	r24, r10
   1c9d2:	8e 25       	eor	r24, r14
   1c9d4:	9f 25       	eor	r25, r15
   1c9d6:	a0 27       	eor	r26, r16
   1c9d8:	b1 27       	eor	r27, r17
   1c9da:	86 25       	eor	r24, r6
   1c9dc:	97 25       	eor	r25, r7
   1c9de:	a8 25       	eor	r26, r8
   1c9e0:	b9 25       	eor	r27, r9
   1c9e2:	28 0f       	add	r18, r24
   1c9e4:	39 1f       	adc	r19, r25
   1c9e6:	4a 1f       	adc	r20, r26
   1c9e8:	5b 1f       	adc	r21, r27
   1c9ea:	19 01       	movw	r2, r18
   1c9ec:	2a 01       	movw	r4, r20
   1c9ee:	7b e0       	ldi	r23, 0x0B	; 11
   1c9f0:	22 0c       	add	r2, r2
   1c9f2:	33 1c       	adc	r3, r3
   1c9f4:	44 1c       	adc	r4, r4
   1c9f6:	55 1c       	adc	r5, r5
   1c9f8:	7a 95       	dec	r23
   1c9fa:	d1 f7       	brne	.-12     	; 0x1c9f0 <Transform+0x18d0>
   1c9fc:	65 e1       	ldi	r22, 0x15	; 21
   1c9fe:	56 95       	lsr	r21
   1ca00:	47 95       	ror	r20
   1ca02:	37 95       	ror	r19
   1ca04:	27 95       	ror	r18
   1ca06:	6a 95       	dec	r22
   1ca08:	d1 f7       	brne	.-12     	; 0x1c9fe <Transform+0x18de>
   1ca0a:	22 2a       	or	r2, r18
   1ca0c:	33 2a       	or	r3, r19
   1ca0e:	44 2a       	or	r4, r20
   1ca10:	55 2a       	or	r5, r21
   1ca12:	26 0c       	add	r2, r6
   1ca14:	37 1c       	adc	r3, r7
   1ca16:	48 1c       	adc	r4, r8
   1ca18:	59 1c       	adc	r5, r9
  HH ( c, d, a, b, in[15], S33,  530742520); /* 47 */
   1ca1a:	21 96       	adiw	r28, 0x01	; 1
   1ca1c:	2c ad       	ldd	r18, Y+60	; 0x3c
   1ca1e:	3d ad       	ldd	r19, Y+61	; 0x3d
   1ca20:	4e ad       	ldd	r20, Y+62	; 0x3e
   1ca22:	5f ad       	ldd	r21, Y+63	; 0x3f
   1ca24:	21 97       	sbiw	r28, 0x01	; 1
   1ca26:	28 50       	subi	r18, 0x08	; 8
   1ca28:	33 48       	sbci	r19, 0x83	; 131
   1ca2a:	4d 45       	sbci	r20, 0x5D	; 93
   1ca2c:	50 4e       	sbci	r21, 0xE0	; 224
   1ca2e:	21 96       	adiw	r28, 0x01	; 1
   1ca30:	2c af       	std	Y+60, r18	; 0x3c
   1ca32:	3d af       	std	Y+61, r19	; 0x3d
   1ca34:	4e af       	std	Y+62, r20	; 0x3e
   1ca36:	5f af       	std	Y+63, r21	; 0x3f
   1ca38:	21 97       	sbiw	r28, 0x01	; 1
   1ca3a:	e2 0e       	add	r14, r18
   1ca3c:	f3 1e       	adc	r15, r19
   1ca3e:	04 1f       	adc	r16, r20
   1ca40:	15 1f       	adc	r17, r21
   1ca42:	d4 01       	movw	r26, r8
   1ca44:	c3 01       	movw	r24, r6
   1ca46:	8a 25       	eor	r24, r10
   1ca48:	9b 25       	eor	r25, r11
   1ca4a:	ac 25       	eor	r26, r12
   1ca4c:	bd 25       	eor	r27, r13
   1ca4e:	82 25       	eor	r24, r2
   1ca50:	93 25       	eor	r25, r3
   1ca52:	a4 25       	eor	r26, r4
   1ca54:	b5 25       	eor	r27, r5
   1ca56:	e8 0e       	add	r14, r24
   1ca58:	f9 1e       	adc	r15, r25
   1ca5a:	0a 1f       	adc	r16, r26
   1ca5c:	1b 1f       	adc	r17, r27
   1ca5e:	c8 01       	movw	r24, r16
   1ca60:	aa 27       	eor	r26, r26
   1ca62:	bb 27       	eor	r27, r27
   1ca64:	87 01       	movw	r16, r14
   1ca66:	ff 24       	eor	r15, r15
   1ca68:	ee 24       	eor	r14, r14
   1ca6a:	e8 2a       	or	r14, r24
   1ca6c:	f9 2a       	or	r15, r25
   1ca6e:	0a 2b       	or	r16, r26
   1ca70:	1b 2b       	or	r17, r27
   1ca72:	e2 0c       	add	r14, r2
   1ca74:	f3 1c       	adc	r15, r3
   1ca76:	04 1d       	adc	r16, r4
   1ca78:	15 1d       	adc	r17, r5
  HH ( b, c, d, a, in[ 2], S34, 3299628645); /* 48 */
   1ca7a:	e5 96       	adiw	r28, 0x35	; 53
   1ca7c:	8c ad       	ldd	r24, Y+60	; 0x3c
   1ca7e:	9d ad       	ldd	r25, Y+61	; 0x3d
   1ca80:	ae ad       	ldd	r26, Y+62	; 0x3e
   1ca82:	bf ad       	ldd	r27, Y+63	; 0x3f
   1ca84:	e5 97       	sbiw	r28, 0x35	; 53
   1ca86:	8b 59       	subi	r24, 0x9B	; 155
   1ca88:	99 4a       	sbci	r25, 0xA9	; 169
   1ca8a:	a3 45       	sbci	r26, 0x53	; 83
   1ca8c:	bb 43       	sbci	r27, 0x3B	; 59
   1ca8e:	e5 96       	adiw	r28, 0x35	; 53
   1ca90:	8c af       	std	Y+60, r24	; 0x3c
   1ca92:	9d af       	std	Y+61, r25	; 0x3d
   1ca94:	ae af       	std	Y+62, r26	; 0x3e
   1ca96:	bf af       	std	Y+63, r27	; 0x3f
   1ca98:	e5 97       	sbiw	r28, 0x35	; 53
   1ca9a:	9c 01       	movw	r18, r24
   1ca9c:	ad 01       	movw	r20, r26
   1ca9e:	2a 0d       	add	r18, r10
   1caa0:	3b 1d       	adc	r19, r11
   1caa2:	4c 1d       	adc	r20, r12
   1caa4:	5d 1d       	adc	r21, r13
   1caa6:	d2 01       	movw	r26, r4
   1caa8:	c1 01       	movw	r24, r2
   1caaa:	86 25       	eor	r24, r6
   1caac:	97 25       	eor	r25, r7
   1caae:	a8 25       	eor	r26, r8
   1cab0:	b9 25       	eor	r27, r9
   1cab2:	8e 25       	eor	r24, r14
   1cab4:	9f 25       	eor	r25, r15
   1cab6:	a0 27       	eor	r26, r16
   1cab8:	b1 27       	eor	r27, r17
   1caba:	28 0f       	add	r18, r24
   1cabc:	39 1f       	adc	r19, r25
   1cabe:	4a 1f       	adc	r20, r26
   1cac0:	5b 1f       	adc	r21, r27
   1cac2:	59 01       	movw	r10, r18
   1cac4:	6a 01       	movw	r12, r20
   1cac6:	b7 e1       	ldi	r27, 0x17	; 23
   1cac8:	aa 0c       	add	r10, r10
   1caca:	bb 1c       	adc	r11, r11
   1cacc:	cc 1c       	adc	r12, r12
   1cace:	dd 1c       	adc	r13, r13
   1cad0:	ba 95       	dec	r27
   1cad2:	d1 f7       	brne	.-12     	; 0x1cac8 <Transform+0x19a8>
   1cad4:	a9 e0       	ldi	r26, 0x09	; 9
   1cad6:	56 95       	lsr	r21
   1cad8:	47 95       	ror	r20
   1cada:	37 95       	ror	r19
   1cadc:	27 95       	ror	r18
   1cade:	aa 95       	dec	r26
   1cae0:	d1 f7       	brne	.-12     	; 0x1cad6 <Transform+0x19b6>
   1cae2:	a2 2a       	or	r10, r18
   1cae4:	b3 2a       	or	r11, r19
   1cae6:	c4 2a       	or	r12, r20
   1cae8:	d5 2a       	or	r13, r21
   1caea:	ae 0c       	add	r10, r14
   1caec:	bf 1c       	adc	r11, r15
   1caee:	c0 1e       	adc	r12, r16
   1caf0:	d1 1e       	adc	r13, r17
  /* Round 4 */
#define S41 6
#define S42 10
#define S43 15
#define S44 21
  II ( a, b, c, d, in[ 0], S41, 4096336452); /* 49 */
   1caf2:	ed 96       	adiw	r28, 0x3d	; 61
   1caf4:	2c ad       	ldd	r18, Y+60	; 0x3c
   1caf6:	3d ad       	ldd	r19, Y+61	; 0x3d
   1caf8:	4e ad       	ldd	r20, Y+62	; 0x3e
   1cafa:	5f ad       	ldd	r21, Y+63	; 0x3f
   1cafc:	ed 97       	sbiw	r28, 0x3d	; 61
   1cafe:	26 5b       	subi	r18, 0xB6	; 182
   1cb00:	35 40       	sbci	r19, 0x05	; 5
   1cb02:	48 47       	sbci	r20, 0x78	; 120
   1cb04:	56 4f       	sbci	r21, 0xF6	; 246
   1cb06:	26 0d       	add	r18, r6
   1cb08:	37 1d       	adc	r19, r7
   1cb0a:	48 1d       	adc	r20, r8
   1cb0c:	59 1d       	adc	r21, r9
   1cb0e:	d2 01       	movw	r26, r4
   1cb10:	c1 01       	movw	r24, r2
   1cb12:	80 95       	com	r24
   1cb14:	90 95       	com	r25
   1cb16:	a0 95       	com	r26
   1cb18:	b0 95       	com	r27
   1cb1a:	8a 29       	or	r24, r10
   1cb1c:	9b 29       	or	r25, r11
   1cb1e:	ac 29       	or	r26, r12
   1cb20:	bd 29       	or	r27, r13
   1cb22:	8e 25       	eor	r24, r14
   1cb24:	9f 25       	eor	r25, r15
   1cb26:	a0 27       	eor	r26, r16
   1cb28:	b1 27       	eor	r27, r17
   1cb2a:	28 0f       	add	r18, r24
   1cb2c:	39 1f       	adc	r19, r25
   1cb2e:	4a 1f       	adc	r20, r26
   1cb30:	5b 1f       	adc	r21, r27
   1cb32:	2d 83       	std	Y+5, r18	; 0x05
   1cb34:	3e 83       	std	Y+6, r19	; 0x06
   1cb36:	4f 83       	std	Y+7, r20	; 0x07
   1cb38:	58 87       	std	Y+8, r21	; 0x08
   1cb3a:	f6 e0       	ldi	r31, 0x06	; 6
   1cb3c:	22 0f       	add	r18, r18
   1cb3e:	33 1f       	adc	r19, r19
   1cb40:	44 1f       	adc	r20, r20
   1cb42:	55 1f       	adc	r21, r21
   1cb44:	fa 95       	dec	r31
   1cb46:	d1 f7       	brne	.-12     	; 0x1cb3c <Transform+0x1a1c>
   1cb48:	8d 81       	ldd	r24, Y+5	; 0x05
   1cb4a:	9e 81       	ldd	r25, Y+6	; 0x06
   1cb4c:	af 81       	ldd	r26, Y+7	; 0x07
   1cb4e:	b8 85       	ldd	r27, Y+8	; 0x08
   1cb50:	ea e1       	ldi	r30, 0x1A	; 26
   1cb52:	b6 95       	lsr	r27
   1cb54:	a7 95       	ror	r26
   1cb56:	97 95       	ror	r25
   1cb58:	87 95       	ror	r24
   1cb5a:	ea 95       	dec	r30
   1cb5c:	d1 f7       	brne	.-12     	; 0x1cb52 <Transform+0x1a32>
   1cb5e:	28 2b       	or	r18, r24
   1cb60:	39 2b       	or	r19, r25
   1cb62:	4a 2b       	or	r20, r26
   1cb64:	5b 2b       	or	r21, r27
   1cb66:	2a 0d       	add	r18, r10
   1cb68:	3b 1d       	adc	r19, r11
   1cb6a:	4c 1d       	adc	r20, r12
   1cb6c:	5d 1d       	adc	r21, r13
  II ( d, a, b, c, in[ 7], S42, 1126891415); /* 50 */
   1cb6e:	a1 96       	adiw	r28, 0x21	; 33
   1cb70:	8c ad       	ldd	r24, Y+60	; 0x3c
   1cb72:	9d ad       	ldd	r25, Y+61	; 0x3d
   1cb74:	ae ad       	ldd	r26, Y+62	; 0x3e
   1cb76:	bf ad       	ldd	r27, Y+63	; 0x3f
   1cb78:	a1 97       	sbiw	r28, 0x21	; 33
   1cb7a:	89 5c       	subi	r24, 0xC9	; 201
   1cb7c:	9b 44       	sbci	r25, 0x4B	; 75
   1cb7e:	a0 49       	sbci	r26, 0x90	; 144
   1cb80:	b3 4b       	sbci	r27, 0xB3	; 179
   1cb82:	82 0d       	add	r24, r2
   1cb84:	93 1d       	adc	r25, r3
   1cb86:	a4 1d       	adc	r26, r4
   1cb88:	b5 1d       	adc	r27, r5
   1cb8a:	89 83       	std	Y+1, r24	; 0x01
   1cb8c:	9a 83       	std	Y+2, r25	; 0x02
   1cb8e:	ab 83       	std	Y+3, r26	; 0x03
   1cb90:	bc 83       	std	Y+4, r27	; 0x04
   1cb92:	d8 01       	movw	r26, r16
   1cb94:	c7 01       	movw	r24, r14
   1cb96:	80 95       	com	r24
   1cb98:	90 95       	com	r25
   1cb9a:	a0 95       	com	r26
   1cb9c:	b0 95       	com	r27
   1cb9e:	82 2b       	or	r24, r18
   1cba0:	93 2b       	or	r25, r19
   1cba2:	a4 2b       	or	r26, r20
   1cba4:	b5 2b       	or	r27, r21
   1cba6:	8a 25       	eor	r24, r10
   1cba8:	9b 25       	eor	r25, r11
   1cbaa:	ac 25       	eor	r26, r12
   1cbac:	bd 25       	eor	r27, r13
   1cbae:	69 80       	ldd	r6, Y+1	; 0x01
   1cbb0:	7a 80       	ldd	r7, Y+2	; 0x02
   1cbb2:	8b 80       	ldd	r8, Y+3	; 0x03
   1cbb4:	9c 80       	ldd	r9, Y+4	; 0x04
   1cbb6:	68 0e       	add	r6, r24
   1cbb8:	79 1e       	adc	r7, r25
   1cbba:	8a 1e       	adc	r8, r26
   1cbbc:	9b 1e       	adc	r9, r27
   1cbbe:	69 82       	std	Y+1, r6	; 0x01
   1cbc0:	7a 82       	std	Y+2, r7	; 0x02
   1cbc2:	8b 82       	std	Y+3, r8	; 0x03
   1cbc4:	9c 82       	std	Y+4, r9	; 0x04
   1cbc6:	7a e0       	ldi	r23, 0x0A	; 10
   1cbc8:	66 0c       	add	r6, r6
   1cbca:	77 1c       	adc	r7, r7
   1cbcc:	88 1c       	adc	r8, r8
   1cbce:	99 1c       	adc	r9, r9
   1cbd0:	7a 95       	dec	r23
   1cbd2:	d1 f7       	brne	.-12     	; 0x1cbc8 <Transform+0x1aa8>
   1cbd4:	89 81       	ldd	r24, Y+1	; 0x01
   1cbd6:	9a 81       	ldd	r25, Y+2	; 0x02
   1cbd8:	ab 81       	ldd	r26, Y+3	; 0x03
   1cbda:	bc 81       	ldd	r27, Y+4	; 0x04
   1cbdc:	66 e1       	ldi	r22, 0x16	; 22
   1cbde:	b6 95       	lsr	r27
   1cbe0:	a7 95       	ror	r26
   1cbe2:	97 95       	ror	r25
   1cbe4:	87 95       	ror	r24
   1cbe6:	6a 95       	dec	r22
   1cbe8:	d1 f7       	brne	.-12     	; 0x1cbde <Transform+0x1abe>
   1cbea:	68 2a       	or	r6, r24
   1cbec:	79 2a       	or	r7, r25
   1cbee:	8a 2a       	or	r8, r26
   1cbf0:	9b 2a       	or	r9, r27
   1cbf2:	62 0e       	add	r6, r18
   1cbf4:	73 1e       	adc	r7, r19
   1cbf6:	84 1e       	adc	r8, r20
   1cbf8:	95 1e       	adc	r9, r21
  II ( c, d, a, b, in[14], S43, 2878612391); /* 51 */
   1cbfa:	25 96       	adiw	r28, 0x05	; 5
   1cbfc:	2c ac       	ldd	r2, Y+60	; 0x3c
   1cbfe:	3d ac       	ldd	r3, Y+61	; 0x3d
   1cc00:	4e ac       	ldd	r4, Y+62	; 0x3e
   1cc02:	5f ac       	ldd	r5, Y+63	; 0x3f
   1cc04:	25 97       	sbiw	r28, 0x05	; 5
   1cc06:	8b e9       	ldi	r24, 0x9B	; 155
   1cc08:	9b ee       	ldi	r25, 0xEB	; 235
   1cc0a:	ae ea       	ldi	r26, 0xAE	; 174
   1cc0c:	bd ea       	ldi	r27, 0xAD	; 173
   1cc0e:	28 0e       	add	r2, r24
   1cc10:	39 1e       	adc	r3, r25
   1cc12:	4a 1e       	adc	r4, r26
   1cc14:	5b 1e       	adc	r5, r27
   1cc16:	2e 0c       	add	r2, r14
   1cc18:	3f 1c       	adc	r3, r15
   1cc1a:	40 1e       	adc	r4, r16
   1cc1c:	51 1e       	adc	r5, r17
   1cc1e:	d6 01       	movw	r26, r12
   1cc20:	c5 01       	movw	r24, r10
   1cc22:	80 95       	com	r24
   1cc24:	90 95       	com	r25
   1cc26:	a0 95       	com	r26
   1cc28:	b0 95       	com	r27
   1cc2a:	86 29       	or	r24, r6
   1cc2c:	97 29       	or	r25, r7
   1cc2e:	a8 29       	or	r26, r8
   1cc30:	b9 29       	or	r27, r9
   1cc32:	82 27       	eor	r24, r18
   1cc34:	93 27       	eor	r25, r19
   1cc36:	a4 27       	eor	r26, r20
   1cc38:	b5 27       	eor	r27, r21
   1cc3a:	28 0e       	add	r2, r24
   1cc3c:	39 1e       	adc	r3, r25
   1cc3e:	4a 1e       	adc	r4, r26
   1cc40:	5b 1e       	adc	r5, r27
   1cc42:	82 01       	movw	r16, r4
   1cc44:	71 01       	movw	r14, r2
   1cc46:	ff e0       	ldi	r31, 0x0F	; 15
   1cc48:	ee 0c       	add	r14, r14
   1cc4a:	ff 1c       	adc	r15, r15
   1cc4c:	00 1f       	adc	r16, r16
   1cc4e:	11 1f       	adc	r17, r17
   1cc50:	fa 95       	dec	r31
   1cc52:	d1 f7       	brne	.-12     	; 0x1cc48 <Transform+0x1b28>
   1cc54:	e1 e1       	ldi	r30, 0x11	; 17
   1cc56:	56 94       	lsr	r5
   1cc58:	47 94       	ror	r4
   1cc5a:	37 94       	ror	r3
   1cc5c:	27 94       	ror	r2
   1cc5e:	ea 95       	dec	r30
   1cc60:	d1 f7       	brne	.-12     	; 0x1cc56 <Transform+0x1b36>
   1cc62:	e2 28       	or	r14, r2
   1cc64:	f3 28       	or	r15, r3
   1cc66:	04 29       	or	r16, r4
   1cc68:	15 29       	or	r17, r5
   1cc6a:	e6 0c       	add	r14, r6
   1cc6c:	f7 1c       	adc	r15, r7
   1cc6e:	08 1d       	adc	r16, r8
   1cc70:	19 1d       	adc	r17, r9
  II ( b, c, d, a, in[ 5], S44, 4237533241); /* 52 */
   1cc72:	a9 96       	adiw	r28, 0x29	; 41
   1cc74:	2c ac       	ldd	r2, Y+60	; 0x3c
   1cc76:	3d ac       	ldd	r3, Y+61	; 0x3d
   1cc78:	4e ac       	ldd	r4, Y+62	; 0x3e
   1cc7a:	5f ac       	ldd	r5, Y+63	; 0x3f
   1cc7c:	a9 97       	sbiw	r28, 0x29	; 41
   1cc7e:	87 ef       	ldi	r24, 0xF7	; 247
   1cc80:	96 e6       	ldi	r25, 0x66	; 102
   1cc82:	a9 e9       	ldi	r26, 0x99	; 153
   1cc84:	bc ef       	ldi	r27, 0xFC	; 252
   1cc86:	28 0e       	add	r2, r24
   1cc88:	39 1e       	adc	r3, r25
   1cc8a:	4a 1e       	adc	r4, r26
   1cc8c:	5b 1e       	adc	r5, r27
   1cc8e:	2a 0c       	add	r2, r10
   1cc90:	3b 1c       	adc	r3, r11
   1cc92:	4c 1c       	adc	r4, r12
   1cc94:	5d 1c       	adc	r5, r13
   1cc96:	da 01       	movw	r26, r20
   1cc98:	c9 01       	movw	r24, r18
   1cc9a:	80 95       	com	r24
   1cc9c:	90 95       	com	r25
   1cc9e:	a0 95       	com	r26
   1cca0:	b0 95       	com	r27
   1cca2:	8e 29       	or	r24, r14
   1cca4:	9f 29       	or	r25, r15
   1cca6:	a0 2b       	or	r26, r16
   1cca8:	b1 2b       	or	r27, r17
   1ccaa:	86 25       	eor	r24, r6
   1ccac:	97 25       	eor	r25, r7
   1ccae:	a8 25       	eor	r26, r8
   1ccb0:	b9 25       	eor	r27, r9
   1ccb2:	28 0e       	add	r2, r24
   1ccb4:	39 1e       	adc	r3, r25
   1ccb6:	4a 1e       	adc	r4, r26
   1ccb8:	5b 1e       	adc	r5, r27
   1ccba:	62 01       	movw	r12, r4
   1ccbc:	51 01       	movw	r10, r2
   1ccbe:	75 e1       	ldi	r23, 0x15	; 21
   1ccc0:	aa 0c       	add	r10, r10
   1ccc2:	bb 1c       	adc	r11, r11
   1ccc4:	cc 1c       	adc	r12, r12
   1ccc6:	dd 1c       	adc	r13, r13
   1ccc8:	7a 95       	dec	r23
   1ccca:	d1 f7       	brne	.-12     	; 0x1ccc0 <Transform+0x1ba0>
   1cccc:	6b e0       	ldi	r22, 0x0B	; 11
   1ccce:	56 94       	lsr	r5
   1ccd0:	47 94       	ror	r4
   1ccd2:	37 94       	ror	r3
   1ccd4:	27 94       	ror	r2
   1ccd6:	6a 95       	dec	r22
   1ccd8:	d1 f7       	brne	.-12     	; 0x1ccce <Transform+0x1bae>
   1ccda:	a2 28       	or	r10, r2
   1ccdc:	b3 28       	or	r11, r3
   1ccde:	c4 28       	or	r12, r4
   1cce0:	d5 28       	or	r13, r5
   1cce2:	ae 0c       	add	r10, r14
   1cce4:	bf 1c       	adc	r11, r15
   1cce6:	c0 1e       	adc	r12, r16
   1cce8:	d1 1e       	adc	r13, r17
  II ( a, b, c, d, in[12], S41, 1700485571); /* 53 */
   1ccea:	2d 96       	adiw	r28, 0x0d	; 13
   1ccec:	2c ac       	ldd	r2, Y+60	; 0x3c
   1ccee:	3d ac       	ldd	r3, Y+61	; 0x3d
   1ccf0:	4e ac       	ldd	r4, Y+62	; 0x3e
   1ccf2:	5f ac       	ldd	r5, Y+63	; 0x3f
   1ccf4:	2d 97       	sbiw	r28, 0x0d	; 13
   1ccf6:	8e ed       	ldi	r24, 0xDE	; 222
   1ccf8:	9f eb       	ldi	r25, 0xBF	; 191
   1ccfa:	af e7       	ldi	r26, 0x7F	; 127
   1ccfc:	be e7       	ldi	r27, 0x7E	; 126
   1ccfe:	28 0e       	add	r2, r24
   1cd00:	39 1e       	adc	r3, r25
   1cd02:	4a 1e       	adc	r4, r26
   1cd04:	5b 1e       	adc	r5, r27
   1cd06:	22 0e       	add	r2, r18
   1cd08:	33 1e       	adc	r3, r19
   1cd0a:	44 1e       	adc	r4, r20
   1cd0c:	55 1e       	adc	r5, r21
   1cd0e:	d4 01       	movw	r26, r8
   1cd10:	c3 01       	movw	r24, r6
   1cd12:	80 95       	com	r24
   1cd14:	90 95       	com	r25
   1cd16:	a0 95       	com	r26
   1cd18:	b0 95       	com	r27
   1cd1a:	8a 29       	or	r24, r10
   1cd1c:	9b 29       	or	r25, r11
   1cd1e:	ac 29       	or	r26, r12
   1cd20:	bd 29       	or	r27, r13
   1cd22:	8e 25       	eor	r24, r14
   1cd24:	9f 25       	eor	r25, r15
   1cd26:	a0 27       	eor	r26, r16
   1cd28:	b1 27       	eor	r27, r17
   1cd2a:	28 0e       	add	r2, r24
   1cd2c:	39 1e       	adc	r3, r25
   1cd2e:	4a 1e       	adc	r4, r26
   1cd30:	5b 1e       	adc	r5, r27
   1cd32:	a2 01       	movw	r20, r4
   1cd34:	91 01       	movw	r18, r2
   1cd36:	96 e0       	ldi	r25, 0x06	; 6
   1cd38:	22 0f       	add	r18, r18
   1cd3a:	33 1f       	adc	r19, r19
   1cd3c:	44 1f       	adc	r20, r20
   1cd3e:	55 1f       	adc	r21, r21
   1cd40:	9a 95       	dec	r25
   1cd42:	d1 f7       	brne	.-12     	; 0x1cd38 <Transform+0x1c18>
   1cd44:	8a e1       	ldi	r24, 0x1A	; 26
   1cd46:	56 94       	lsr	r5
   1cd48:	47 94       	ror	r4
   1cd4a:	37 94       	ror	r3
   1cd4c:	27 94       	ror	r2
   1cd4e:	8a 95       	dec	r24
   1cd50:	d1 f7       	brne	.-12     	; 0x1cd46 <Transform+0x1c26>
   1cd52:	22 29       	or	r18, r2
   1cd54:	33 29       	or	r19, r3
   1cd56:	44 29       	or	r20, r4
   1cd58:	55 29       	or	r21, r5
   1cd5a:	2a 0d       	add	r18, r10
   1cd5c:	3b 1d       	adc	r19, r11
   1cd5e:	4c 1d       	adc	r20, r12
   1cd60:	5d 1d       	adc	r21, r13
  II ( d, a, b, c, in[ 3], S42, 2399980690); /* 54 */
   1cd62:	e1 96       	adiw	r28, 0x31	; 49
   1cd64:	2c ac       	ldd	r2, Y+60	; 0x3c
   1cd66:	3d ac       	ldd	r3, Y+61	; 0x3d
   1cd68:	4e ac       	ldd	r4, Y+62	; 0x3e
   1cd6a:	5f ac       	ldd	r5, Y+63	; 0x3f
   1cd6c:	e1 97       	sbiw	r28, 0x31	; 49
   1cd6e:	8d e0       	ldi	r24, 0x0D	; 13
   1cd70:	9c e9       	ldi	r25, 0x9C	; 156
   1cd72:	ad e1       	ldi	r26, 0x1D	; 29
   1cd74:	ba eb       	ldi	r27, 0xBA	; 186
   1cd76:	28 0e       	add	r2, r24
   1cd78:	39 1e       	adc	r3, r25
   1cd7a:	4a 1e       	adc	r4, r26
   1cd7c:	5b 1e       	adc	r5, r27
   1cd7e:	26 0c       	add	r2, r6
   1cd80:	37 1c       	adc	r3, r7
   1cd82:	48 1c       	adc	r4, r8
   1cd84:	59 1c       	adc	r5, r9
   1cd86:	d8 01       	movw	r26, r16
   1cd88:	c7 01       	movw	r24, r14
   1cd8a:	80 95       	com	r24
   1cd8c:	90 95       	com	r25
   1cd8e:	a0 95       	com	r26
   1cd90:	b0 95       	com	r27
   1cd92:	82 2b       	or	r24, r18
   1cd94:	93 2b       	or	r25, r19
   1cd96:	a4 2b       	or	r26, r20
   1cd98:	b5 2b       	or	r27, r21
   1cd9a:	8a 25       	eor	r24, r10
   1cd9c:	9b 25       	eor	r25, r11
   1cd9e:	ac 25       	eor	r26, r12
   1cda0:	bd 25       	eor	r27, r13
   1cda2:	28 0e       	add	r2, r24
   1cda4:	39 1e       	adc	r3, r25
   1cda6:	4a 1e       	adc	r4, r26
   1cda8:	5b 1e       	adc	r5, r27
   1cdaa:	42 01       	movw	r8, r4
   1cdac:	31 01       	movw	r6, r2
   1cdae:	ba e0       	ldi	r27, 0x0A	; 10
   1cdb0:	66 0c       	add	r6, r6
   1cdb2:	77 1c       	adc	r7, r7
   1cdb4:	88 1c       	adc	r8, r8
   1cdb6:	99 1c       	adc	r9, r9
   1cdb8:	ba 95       	dec	r27
   1cdba:	d1 f7       	brne	.-12     	; 0x1cdb0 <Transform+0x1c90>
   1cdbc:	a6 e1       	ldi	r26, 0x16	; 22
   1cdbe:	56 94       	lsr	r5
   1cdc0:	47 94       	ror	r4
   1cdc2:	37 94       	ror	r3
   1cdc4:	27 94       	ror	r2
   1cdc6:	aa 95       	dec	r26
   1cdc8:	d1 f7       	brne	.-12     	; 0x1cdbe <Transform+0x1c9e>
   1cdca:	62 28       	or	r6, r2
   1cdcc:	73 28       	or	r7, r3
   1cdce:	84 28       	or	r8, r4
   1cdd0:	95 28       	or	r9, r5
   1cdd2:	62 0e       	add	r6, r18
   1cdd4:	73 1e       	adc	r7, r19
   1cdd6:	84 1e       	adc	r8, r20
   1cdd8:	95 1e       	adc	r9, r21
  II ( c, d, a, b, in[10], S43, 4293915773); /* 55 */
   1cdda:	65 96       	adiw	r28, 0x15	; 21
   1cddc:	2c ac       	ldd	r2, Y+60	; 0x3c
   1cdde:	3d ac       	ldd	r3, Y+61	; 0x3d
   1cde0:	4e ac       	ldd	r4, Y+62	; 0x3e
   1cde2:	5f ac       	ldd	r5, Y+63	; 0x3f
   1cde4:	65 97       	sbiw	r28, 0x15	; 21
   1cde6:	8d e0       	ldi	r24, 0x0D	; 13
   1cde8:	98 e3       	ldi	r25, 0x38	; 56
   1cdea:	a0 e3       	ldi	r26, 0x30	; 48
   1cdec:	b1 e4       	ldi	r27, 0x41	; 65
   1cdee:	28 0e       	add	r2, r24
   1cdf0:	39 1e       	adc	r3, r25
   1cdf2:	4a 1e       	adc	r4, r26
   1cdf4:	5b 1e       	adc	r5, r27
   1cdf6:	2e 0c       	add	r2, r14
   1cdf8:	3f 1c       	adc	r3, r15
   1cdfa:	40 1e       	adc	r4, r16
   1cdfc:	51 1e       	adc	r5, r17
   1cdfe:	d6 01       	movw	r26, r12
   1ce00:	c5 01       	movw	r24, r10
   1ce02:	80 95       	com	r24
   1ce04:	90 95       	com	r25
   1ce06:	a0 95       	com	r26
   1ce08:	b0 95       	com	r27
   1ce0a:	86 29       	or	r24, r6
   1ce0c:	97 29       	or	r25, r7
   1ce0e:	a8 29       	or	r26, r8
   1ce10:	b9 29       	or	r27, r9
   1ce12:	82 27       	eor	r24, r18
   1ce14:	93 27       	eor	r25, r19
   1ce16:	a4 27       	eor	r26, r20
   1ce18:	b5 27       	eor	r27, r21
   1ce1a:	28 0e       	add	r2, r24
   1ce1c:	39 1e       	adc	r3, r25
   1ce1e:	4a 1e       	adc	r4, r26
   1ce20:	5b 1e       	adc	r5, r27
   1ce22:	82 01       	movw	r16, r4
   1ce24:	71 01       	movw	r14, r2
   1ce26:	ff e0       	ldi	r31, 0x0F	; 15
   1ce28:	ee 0c       	add	r14, r14
   1ce2a:	ff 1c       	adc	r15, r15
   1ce2c:	00 1f       	adc	r16, r16
   1ce2e:	11 1f       	adc	r17, r17
   1ce30:	fa 95       	dec	r31
   1ce32:	d1 f7       	brne	.-12     	; 0x1ce28 <Transform+0x1d08>
   1ce34:	e1 e1       	ldi	r30, 0x11	; 17
   1ce36:	56 94       	lsr	r5
   1ce38:	47 94       	ror	r4
   1ce3a:	37 94       	ror	r3
   1ce3c:	27 94       	ror	r2
   1ce3e:	ea 95       	dec	r30
   1ce40:	d1 f7       	brne	.-12     	; 0x1ce36 <Transform+0x1d16>
   1ce42:	e2 28       	or	r14, r2
   1ce44:	f3 28       	or	r15, r3
   1ce46:	04 29       	or	r16, r4
   1ce48:	15 29       	or	r17, r5
   1ce4a:	e6 0c       	add	r14, r6
   1ce4c:	f7 1c       	adc	r15, r7
   1ce4e:	08 1d       	adc	r16, r8
   1ce50:	19 1d       	adc	r17, r9
  II ( b, c, d, a, in[ 1], S44, 2240044497); /* 56 */
   1ce52:	e9 96       	adiw	r28, 0x39	; 57
   1ce54:	2c ac       	ldd	r2, Y+60	; 0x3c
   1ce56:	3d ac       	ldd	r3, Y+61	; 0x3d
   1ce58:	4e ac       	ldd	r4, Y+62	; 0x3e
   1ce5a:	5f ac       	ldd	r5, Y+63	; 0x3f
   1ce5c:	e9 97       	sbiw	r28, 0x39	; 57
   1ce5e:	8d e8       	ldi	r24, 0x8D	; 141
   1ce60:	93 e7       	ldi	r25, 0x73	; 115
   1ce62:	a5 ec       	ldi	r26, 0xC5	; 197
   1ce64:	b0 ee       	ldi	r27, 0xE0	; 224
   1ce66:	28 0e       	add	r2, r24
   1ce68:	39 1e       	adc	r3, r25
   1ce6a:	4a 1e       	adc	r4, r26
   1ce6c:	5b 1e       	adc	r5, r27
   1ce6e:	2a 0c       	add	r2, r10
   1ce70:	3b 1c       	adc	r3, r11
   1ce72:	4c 1c       	adc	r4, r12
   1ce74:	5d 1c       	adc	r5, r13
   1ce76:	da 01       	movw	r26, r20
   1ce78:	c9 01       	movw	r24, r18
   1ce7a:	80 95       	com	r24
   1ce7c:	90 95       	com	r25
   1ce7e:	a0 95       	com	r26
   1ce80:	b0 95       	com	r27
   1ce82:	8e 29       	or	r24, r14
   1ce84:	9f 29       	or	r25, r15
   1ce86:	a0 2b       	or	r26, r16
   1ce88:	b1 2b       	or	r27, r17
   1ce8a:	86 25       	eor	r24, r6
   1ce8c:	97 25       	eor	r25, r7
   1ce8e:	a8 25       	eor	r26, r8
   1ce90:	b9 25       	eor	r27, r9
   1ce92:	28 0e       	add	r2, r24
   1ce94:	39 1e       	adc	r3, r25
   1ce96:	4a 1e       	adc	r4, r26
   1ce98:	5b 1e       	adc	r5, r27
   1ce9a:	62 01       	movw	r12, r4
   1ce9c:	51 01       	movw	r10, r2
   1ce9e:	75 e1       	ldi	r23, 0x15	; 21
   1cea0:	aa 0c       	add	r10, r10
   1cea2:	bb 1c       	adc	r11, r11
   1cea4:	cc 1c       	adc	r12, r12
   1cea6:	dd 1c       	adc	r13, r13
   1cea8:	7a 95       	dec	r23
   1ceaa:	d1 f7       	brne	.-12     	; 0x1cea0 <Transform+0x1d80>
   1ceac:	6b e0       	ldi	r22, 0x0B	; 11
   1ceae:	56 94       	lsr	r5
   1ceb0:	47 94       	ror	r4
   1ceb2:	37 94       	ror	r3
   1ceb4:	27 94       	ror	r2
   1ceb6:	6a 95       	dec	r22
   1ceb8:	d1 f7       	brne	.-12     	; 0x1ceae <Transform+0x1d8e>
   1ceba:	a2 28       	or	r10, r2
   1cebc:	b3 28       	or	r11, r3
   1cebe:	c4 28       	or	r12, r4
   1cec0:	d5 28       	or	r13, r5
   1cec2:	ae 0c       	add	r10, r14
   1cec4:	bf 1c       	adc	r11, r15
   1cec6:	c0 1e       	adc	r12, r16
   1cec8:	d1 1e       	adc	r13, r17
  II ( a, b, c, d, in[ 8], S41, 1873313359); /* 57 */
   1ceca:	6d 96       	adiw	r28, 0x1d	; 29
   1cecc:	2c ac       	ldd	r2, Y+60	; 0x3c
   1cece:	3d ac       	ldd	r3, Y+61	; 0x3d
   1ced0:	4e ac       	ldd	r4, Y+62	; 0x3e
   1ced2:	5f ac       	ldd	r5, Y+63	; 0x3f
   1ced4:	6d 97       	sbiw	r28, 0x1d	; 29
   1ced6:	8e ec       	ldi	r24, 0xCE	; 206
   1ced8:	97 e8       	ldi	r25, 0x87	; 135
   1ceda:	a6 e3       	ldi	r26, 0x36	; 54
   1cedc:	b8 ee       	ldi	r27, 0xE8	; 232
   1cede:	28 0e       	add	r2, r24
   1cee0:	39 1e       	adc	r3, r25
   1cee2:	4a 1e       	adc	r4, r26
   1cee4:	5b 1e       	adc	r5, r27
   1cee6:	22 0e       	add	r2, r18
   1cee8:	33 1e       	adc	r3, r19
   1ceea:	44 1e       	adc	r4, r20
   1ceec:	55 1e       	adc	r5, r21
   1ceee:	d4 01       	movw	r26, r8
   1cef0:	c3 01       	movw	r24, r6
   1cef2:	80 95       	com	r24
   1cef4:	90 95       	com	r25
   1cef6:	a0 95       	com	r26
   1cef8:	b0 95       	com	r27
   1cefa:	8a 29       	or	r24, r10
   1cefc:	9b 29       	or	r25, r11
   1cefe:	ac 29       	or	r26, r12
   1cf00:	bd 29       	or	r27, r13
   1cf02:	8e 25       	eor	r24, r14
   1cf04:	9f 25       	eor	r25, r15
   1cf06:	a0 27       	eor	r26, r16
   1cf08:	b1 27       	eor	r27, r17
   1cf0a:	28 0e       	add	r2, r24
   1cf0c:	39 1e       	adc	r3, r25
   1cf0e:	4a 1e       	adc	r4, r26
   1cf10:	5b 1e       	adc	r5, r27
   1cf12:	a2 01       	movw	r20, r4
   1cf14:	91 01       	movw	r18, r2
   1cf16:	96 e0       	ldi	r25, 0x06	; 6
   1cf18:	22 0f       	add	r18, r18
   1cf1a:	33 1f       	adc	r19, r19
   1cf1c:	44 1f       	adc	r20, r20
   1cf1e:	55 1f       	adc	r21, r21
   1cf20:	9a 95       	dec	r25
   1cf22:	d1 f7       	brne	.-12     	; 0x1cf18 <Transform+0x1df8>
   1cf24:	8a e1       	ldi	r24, 0x1A	; 26
   1cf26:	56 94       	lsr	r5
   1cf28:	47 94       	ror	r4
   1cf2a:	37 94       	ror	r3
   1cf2c:	27 94       	ror	r2
   1cf2e:	8a 95       	dec	r24
   1cf30:	d1 f7       	brne	.-12     	; 0x1cf26 <Transform+0x1e06>
   1cf32:	22 29       	or	r18, r2
   1cf34:	33 29       	or	r19, r3
   1cf36:	44 29       	or	r20, r4
   1cf38:	55 29       	or	r21, r5
   1cf3a:	2a 0d       	add	r18, r10
   1cf3c:	3b 1d       	adc	r19, r11
   1cf3e:	4c 1d       	adc	r20, r12
   1cf40:	5d 1d       	adc	r21, r13
  II ( d, a, b, c, in[15], S42, 4264355552); /* 58 */
   1cf42:	21 96       	adiw	r28, 0x01	; 1
   1cf44:	2c ac       	ldd	r2, Y+60	; 0x3c
   1cf46:	3d ac       	ldd	r3, Y+61	; 0x3d
   1cf48:	4e ac       	ldd	r4, Y+62	; 0x3e
   1cf4a:	5f ac       	ldd	r5, Y+63	; 0x3f
   1cf4c:	21 97       	sbiw	r28, 0x01	; 1
   1cf4e:	88 ee       	ldi	r24, 0xE8	; 232
   1cf50:	99 e6       	ldi	r25, 0x69	; 105
   1cf52:	aa e8       	ldi	r26, 0x8A	; 138
   1cf54:	be ed       	ldi	r27, 0xDE	; 222
   1cf56:	28 0e       	add	r2, r24
   1cf58:	39 1e       	adc	r3, r25
   1cf5a:	4a 1e       	adc	r4, r26
   1cf5c:	5b 1e       	adc	r5, r27
   1cf5e:	26 0c       	add	r2, r6
   1cf60:	37 1c       	adc	r3, r7
   1cf62:	48 1c       	adc	r4, r8
   1cf64:	59 1c       	adc	r5, r9
   1cf66:	d8 01       	movw	r26, r16
   1cf68:	c7 01       	movw	r24, r14
   1cf6a:	80 95       	com	r24
   1cf6c:	90 95       	com	r25
   1cf6e:	a0 95       	com	r26
   1cf70:	b0 95       	com	r27
   1cf72:	82 2b       	or	r24, r18
   1cf74:	93 2b       	or	r25, r19
   1cf76:	a4 2b       	or	r26, r20
   1cf78:	b5 2b       	or	r27, r21
   1cf7a:	8a 25       	eor	r24, r10
   1cf7c:	9b 25       	eor	r25, r11
   1cf7e:	ac 25       	eor	r26, r12
   1cf80:	bd 25       	eor	r27, r13
   1cf82:	28 0e       	add	r2, r24
   1cf84:	39 1e       	adc	r3, r25
   1cf86:	4a 1e       	adc	r4, r26
   1cf88:	5b 1e       	adc	r5, r27
   1cf8a:	42 01       	movw	r8, r4
   1cf8c:	31 01       	movw	r6, r2
   1cf8e:	ba e0       	ldi	r27, 0x0A	; 10
   1cf90:	66 0c       	add	r6, r6
   1cf92:	77 1c       	adc	r7, r7
   1cf94:	88 1c       	adc	r8, r8
   1cf96:	99 1c       	adc	r9, r9
   1cf98:	ba 95       	dec	r27
   1cf9a:	d1 f7       	brne	.-12     	; 0x1cf90 <Transform+0x1e70>
   1cf9c:	a6 e1       	ldi	r26, 0x16	; 22
   1cf9e:	56 94       	lsr	r5
   1cfa0:	47 94       	ror	r4
   1cfa2:	37 94       	ror	r3
   1cfa4:	27 94       	ror	r2
   1cfa6:	aa 95       	dec	r26
   1cfa8:	d1 f7       	brne	.-12     	; 0x1cf9e <Transform+0x1e7e>
   1cfaa:	62 28       	or	r6, r2
   1cfac:	73 28       	or	r7, r3
   1cfae:	84 28       	or	r8, r4
   1cfb0:	95 28       	or	r9, r5
   1cfb2:	62 0e       	add	r6, r18
   1cfb4:	73 1e       	adc	r7, r19
   1cfb6:	84 1e       	adc	r8, r20
   1cfb8:	95 1e       	adc	r9, r21
  II ( c, d, a, b, in[ 6], S43, 2734768916); /* 59 */
   1cfba:	a5 96       	adiw	r28, 0x25	; 37
   1cfbc:	2c ac       	ldd	r2, Y+60	; 0x3c
   1cfbe:	3d ac       	ldd	r3, Y+61	; 0x3d
   1cfc0:	4e ac       	ldd	r4, Y+62	; 0x3e
   1cfc2:	5f ac       	ldd	r5, Y+63	; 0x3f
   1cfc4:	a5 97       	sbiw	r28, 0x25	; 37
   1cfc6:	8f e0       	ldi	r24, 0x0F	; 15
   1cfc8:	96 e2       	ldi	r25, 0x26	; 38
   1cfca:	a9 e7       	ldi	r26, 0x79	; 121
   1cfcc:	be e9       	ldi	r27, 0x9E	; 158
   1cfce:	28 0e       	add	r2, r24
   1cfd0:	39 1e       	adc	r3, r25
   1cfd2:	4a 1e       	adc	r4, r26
   1cfd4:	5b 1e       	adc	r5, r27
   1cfd6:	2e 0c       	add	r2, r14
   1cfd8:	3f 1c       	adc	r3, r15
   1cfda:	40 1e       	adc	r4, r16
   1cfdc:	51 1e       	adc	r5, r17
   1cfde:	d6 01       	movw	r26, r12
   1cfe0:	c5 01       	movw	r24, r10
   1cfe2:	80 95       	com	r24
   1cfe4:	90 95       	com	r25
   1cfe6:	a0 95       	com	r26
   1cfe8:	b0 95       	com	r27
   1cfea:	86 29       	or	r24, r6
   1cfec:	97 29       	or	r25, r7
   1cfee:	a8 29       	or	r26, r8
   1cff0:	b9 29       	or	r27, r9
   1cff2:	82 27       	eor	r24, r18
   1cff4:	93 27       	eor	r25, r19
   1cff6:	a4 27       	eor	r26, r20
   1cff8:	b5 27       	eor	r27, r21
   1cffa:	28 0e       	add	r2, r24
   1cffc:	39 1e       	adc	r3, r25
   1cffe:	4a 1e       	adc	r4, r26
   1d000:	5b 1e       	adc	r5, r27
   1d002:	82 01       	movw	r16, r4
   1d004:	71 01       	movw	r14, r2
   1d006:	ff e0       	ldi	r31, 0x0F	; 15
   1d008:	ee 0c       	add	r14, r14
   1d00a:	ff 1c       	adc	r15, r15
   1d00c:	00 1f       	adc	r16, r16
   1d00e:	11 1f       	adc	r17, r17
   1d010:	fa 95       	dec	r31
   1d012:	d1 f7       	brne	.-12     	; 0x1d008 <Transform+0x1ee8>
   1d014:	e1 e1       	ldi	r30, 0x11	; 17
   1d016:	56 94       	lsr	r5
   1d018:	47 94       	ror	r4
   1d01a:	37 94       	ror	r3
   1d01c:	27 94       	ror	r2
   1d01e:	ea 95       	dec	r30
   1d020:	d1 f7       	brne	.-12     	; 0x1d016 <Transform+0x1ef6>
   1d022:	e2 28       	or	r14, r2
   1d024:	f3 28       	or	r15, r3
   1d026:	04 29       	or	r16, r4
   1d028:	15 29       	or	r17, r5
   1d02a:	e6 0c       	add	r14, r6
   1d02c:	f7 1c       	adc	r15, r7
   1d02e:	08 1d       	adc	r16, r8
   1d030:	19 1d       	adc	r17, r9
  II ( b, c, d, a, in[13], S44, 1309151649); /* 60 */
   1d032:	29 96       	adiw	r28, 0x09	; 9
   1d034:	2c ac       	ldd	r2, Y+60	; 0x3c
   1d036:	3d ac       	ldd	r3, Y+61	; 0x3d
   1d038:	4e ac       	ldd	r4, Y+62	; 0x3e
   1d03a:	5f ac       	ldd	r5, Y+63	; 0x3f
   1d03c:	29 97       	sbiw	r28, 0x09	; 9
   1d03e:	8b ed       	ldi	r24, 0xDB	; 219
   1d040:	92 e9       	ldi	r25, 0x92	; 146
   1d042:	ac e6       	ldi	r26, 0x6C	; 108
   1d044:	b5 e2       	ldi	r27, 0x25	; 37
   1d046:	28 0e       	add	r2, r24
   1d048:	39 1e       	adc	r3, r25
   1d04a:	4a 1e       	adc	r4, r26
   1d04c:	5b 1e       	adc	r5, r27
   1d04e:	2a 0c       	add	r2, r10
   1d050:	3b 1c       	adc	r3, r11
   1d052:	4c 1c       	adc	r4, r12
   1d054:	5d 1c       	adc	r5, r13
   1d056:	da 01       	movw	r26, r20
   1d058:	c9 01       	movw	r24, r18
   1d05a:	80 95       	com	r24
   1d05c:	90 95       	com	r25
   1d05e:	a0 95       	com	r26
   1d060:	b0 95       	com	r27
   1d062:	8e 29       	or	r24, r14
   1d064:	9f 29       	or	r25, r15
   1d066:	a0 2b       	or	r26, r16
   1d068:	b1 2b       	or	r27, r17
   1d06a:	86 25       	eor	r24, r6
   1d06c:	97 25       	eor	r25, r7
   1d06e:	a8 25       	eor	r26, r8
   1d070:	b9 25       	eor	r27, r9
   1d072:	28 0e       	add	r2, r24
   1d074:	39 1e       	adc	r3, r25
   1d076:	4a 1e       	adc	r4, r26
   1d078:	5b 1e       	adc	r5, r27
   1d07a:	62 01       	movw	r12, r4
   1d07c:	51 01       	movw	r10, r2
   1d07e:	75 e1       	ldi	r23, 0x15	; 21
   1d080:	aa 0c       	add	r10, r10
   1d082:	bb 1c       	adc	r11, r11
   1d084:	cc 1c       	adc	r12, r12
   1d086:	dd 1c       	adc	r13, r13
   1d088:	7a 95       	dec	r23
   1d08a:	d1 f7       	brne	.-12     	; 0x1d080 <Transform+0x1f60>
   1d08c:	6b e0       	ldi	r22, 0x0B	; 11
   1d08e:	56 94       	lsr	r5
   1d090:	47 94       	ror	r4
   1d092:	37 94       	ror	r3
   1d094:	27 94       	ror	r2
   1d096:	6a 95       	dec	r22
   1d098:	d1 f7       	brne	.-12     	; 0x1d08e <Transform+0x1f6e>
   1d09a:	a2 28       	or	r10, r2
   1d09c:	b3 28       	or	r11, r3
   1d09e:	c4 28       	or	r12, r4
   1d0a0:	d5 28       	or	r13, r5
   1d0a2:	ae 0c       	add	r10, r14
   1d0a4:	bf 1c       	adc	r11, r15
   1d0a6:	c0 1e       	adc	r12, r16
   1d0a8:	d1 1e       	adc	r13, r17
  II ( a, b, c, d, in[ 4], S41, 4149444226); /* 61 */
   1d0aa:	ad 96       	adiw	r28, 0x2d	; 45
   1d0ac:	2c ac       	ldd	r2, Y+60	; 0x3c
   1d0ae:	3d ac       	ldd	r3, Y+61	; 0x3d
   1d0b0:	4e ac       	ldd	r4, Y+62	; 0x3e
   1d0b2:	5f ac       	ldd	r5, Y+63	; 0x3f
   1d0b4:	ad 97       	sbiw	r28, 0x2d	; 45
   1d0b6:	89 ed       	ldi	r24, 0xD9	; 217
   1d0b8:	9e ea       	ldi	r25, 0xAE	; 174
   1d0ba:	a4 e7       	ldi	r26, 0x74	; 116
   1d0bc:	bb ea       	ldi	r27, 0xAB	; 171
   1d0be:	28 0e       	add	r2, r24
   1d0c0:	39 1e       	adc	r3, r25
   1d0c2:	4a 1e       	adc	r4, r26
   1d0c4:	5b 1e       	adc	r5, r27
   1d0c6:	22 0e       	add	r2, r18
   1d0c8:	33 1e       	adc	r3, r19
   1d0ca:	44 1e       	adc	r4, r20
   1d0cc:	55 1e       	adc	r5, r21
   1d0ce:	d4 01       	movw	r26, r8
   1d0d0:	c3 01       	movw	r24, r6
   1d0d2:	80 95       	com	r24
   1d0d4:	90 95       	com	r25
   1d0d6:	a0 95       	com	r26
   1d0d8:	b0 95       	com	r27
   1d0da:	8a 29       	or	r24, r10
   1d0dc:	9b 29       	or	r25, r11
   1d0de:	ac 29       	or	r26, r12
   1d0e0:	bd 29       	or	r27, r13
   1d0e2:	8e 25       	eor	r24, r14
   1d0e4:	9f 25       	eor	r25, r15
   1d0e6:	a0 27       	eor	r26, r16
   1d0e8:	b1 27       	eor	r27, r17
   1d0ea:	28 0e       	add	r2, r24
   1d0ec:	39 1e       	adc	r3, r25
   1d0ee:	4a 1e       	adc	r4, r26
   1d0f0:	5b 1e       	adc	r5, r27
   1d0f2:	a2 01       	movw	r20, r4
   1d0f4:	91 01       	movw	r18, r2
   1d0f6:	96 e0       	ldi	r25, 0x06	; 6
   1d0f8:	22 0f       	add	r18, r18
   1d0fa:	33 1f       	adc	r19, r19
   1d0fc:	44 1f       	adc	r20, r20
   1d0fe:	55 1f       	adc	r21, r21
   1d100:	9a 95       	dec	r25
   1d102:	d1 f7       	brne	.-12     	; 0x1d0f8 <Transform+0x1fd8>
   1d104:	8a e1       	ldi	r24, 0x1A	; 26
   1d106:	56 94       	lsr	r5
   1d108:	47 94       	ror	r4
   1d10a:	37 94       	ror	r3
   1d10c:	27 94       	ror	r2
   1d10e:	8a 95       	dec	r24
   1d110:	d1 f7       	brne	.-12     	; 0x1d106 <Transform+0x1fe6>
   1d112:	22 29       	or	r18, r2
   1d114:	33 29       	or	r19, r3
   1d116:	44 29       	or	r20, r4
   1d118:	55 29       	or	r21, r5
   1d11a:	2a 0d       	add	r18, r10
   1d11c:	3b 1d       	adc	r19, r11
   1d11e:	4c 1d       	adc	r20, r12
   1d120:	5d 1d       	adc	r21, r13
  II ( d, a, b, c, in[11], S42, 3174756917); /* 62 */
   1d122:	61 96       	adiw	r28, 0x11	; 17
   1d124:	2c ac       	ldd	r2, Y+60	; 0x3c
   1d126:	3d ac       	ldd	r3, Y+61	; 0x3d
   1d128:	4e ac       	ldd	r4, Y+62	; 0x3e
   1d12a:	5f ac       	ldd	r5, Y+63	; 0x3f
   1d12c:	61 97       	sbiw	r28, 0x11	; 17
   1d12e:	83 e1       	ldi	r24, 0x13	; 19
   1d130:	91 e9       	ldi	r25, 0x91	; 145
   1d132:	ad e9       	ldi	r26, 0x9D	; 157
   1d134:	bf e4       	ldi	r27, 0x4F	; 79
   1d136:	28 0e       	add	r2, r24
   1d138:	39 1e       	adc	r3, r25
   1d13a:	4a 1e       	adc	r4, r26
   1d13c:	5b 1e       	adc	r5, r27
   1d13e:	26 0c       	add	r2, r6
   1d140:	37 1c       	adc	r3, r7
   1d142:	48 1c       	adc	r4, r8
   1d144:	59 1c       	adc	r5, r9
   1d146:	d8 01       	movw	r26, r16
   1d148:	c7 01       	movw	r24, r14
   1d14a:	80 95       	com	r24
   1d14c:	90 95       	com	r25
   1d14e:	a0 95       	com	r26
   1d150:	b0 95       	com	r27
   1d152:	82 2b       	or	r24, r18
   1d154:	93 2b       	or	r25, r19
   1d156:	a4 2b       	or	r26, r20
   1d158:	b5 2b       	or	r27, r21
   1d15a:	8a 25       	eor	r24, r10
   1d15c:	9b 25       	eor	r25, r11
   1d15e:	ac 25       	eor	r26, r12
   1d160:	bd 25       	eor	r27, r13
   1d162:	28 0e       	add	r2, r24
   1d164:	39 1e       	adc	r3, r25
   1d166:	4a 1e       	adc	r4, r26
   1d168:	5b 1e       	adc	r5, r27
   1d16a:	42 01       	movw	r8, r4
   1d16c:	31 01       	movw	r6, r2
   1d16e:	ba e0       	ldi	r27, 0x0A	; 10
   1d170:	66 0c       	add	r6, r6
   1d172:	77 1c       	adc	r7, r7
   1d174:	88 1c       	adc	r8, r8
   1d176:	99 1c       	adc	r9, r9
   1d178:	ba 95       	dec	r27
   1d17a:	d1 f7       	brne	.-12     	; 0x1d170 <Transform+0x2050>
   1d17c:	a6 e1       	ldi	r26, 0x16	; 22
   1d17e:	56 94       	lsr	r5
   1d180:	47 94       	ror	r4
   1d182:	37 94       	ror	r3
   1d184:	27 94       	ror	r2
   1d186:	aa 95       	dec	r26
   1d188:	d1 f7       	brne	.-12     	; 0x1d17e <Transform+0x205e>
   1d18a:	62 28       	or	r6, r2
   1d18c:	73 28       	or	r7, r3
   1d18e:	84 28       	or	r8, r4
   1d190:	95 28       	or	r9, r5
   1d192:	62 0e       	add	r6, r18
   1d194:	73 1e       	adc	r7, r19
   1d196:	84 1e       	adc	r8, r20
   1d198:	95 1e       	adc	r9, r21
  II ( c, d, a, b, in[ 2], S43,  718787259); /* 63 */
   1d19a:	e5 96       	adiw	r28, 0x35	; 53
   1d19c:	2c ac       	ldd	r2, Y+60	; 0x3c
   1d19e:	3d ac       	ldd	r3, Y+61	; 0x3d
   1d1a0:	4e ac       	ldd	r4, Y+62	; 0x3e
   1d1a2:	5f ac       	ldd	r5, Y+63	; 0x3f
   1d1a4:	e5 97       	sbiw	r28, 0x35	; 53
   1d1a6:	86 e5       	ldi	r24, 0x56	; 86
   1d1a8:	9c e7       	ldi	r25, 0x7C	; 124
   1d1aa:	ab e2       	ldi	r26, 0x2B	; 43
   1d1ac:	b6 e6       	ldi	r27, 0x66	; 102
   1d1ae:	28 0e       	add	r2, r24
   1d1b0:	39 1e       	adc	r3, r25
   1d1b2:	4a 1e       	adc	r4, r26
   1d1b4:	5b 1e       	adc	r5, r27
   1d1b6:	2e 0c       	add	r2, r14
   1d1b8:	3f 1c       	adc	r3, r15
   1d1ba:	40 1e       	adc	r4, r16
   1d1bc:	51 1e       	adc	r5, r17
   1d1be:	d6 01       	movw	r26, r12
   1d1c0:	c5 01       	movw	r24, r10
   1d1c2:	80 95       	com	r24
   1d1c4:	90 95       	com	r25
   1d1c6:	a0 95       	com	r26
   1d1c8:	b0 95       	com	r27
   1d1ca:	86 29       	or	r24, r6
   1d1cc:	97 29       	or	r25, r7
   1d1ce:	a8 29       	or	r26, r8
   1d1d0:	b9 29       	or	r27, r9
   1d1d2:	82 27       	eor	r24, r18
   1d1d4:	93 27       	eor	r25, r19
   1d1d6:	a4 27       	eor	r26, r20
   1d1d8:	b5 27       	eor	r27, r21
   1d1da:	28 0e       	add	r2, r24
   1d1dc:	39 1e       	adc	r3, r25
   1d1de:	4a 1e       	adc	r4, r26
   1d1e0:	5b 1e       	adc	r5, r27
   1d1e2:	82 01       	movw	r16, r4
   1d1e4:	71 01       	movw	r14, r2
   1d1e6:	ff e0       	ldi	r31, 0x0F	; 15
   1d1e8:	ee 0c       	add	r14, r14
   1d1ea:	ff 1c       	adc	r15, r15
   1d1ec:	00 1f       	adc	r16, r16
   1d1ee:	11 1f       	adc	r17, r17
   1d1f0:	fa 95       	dec	r31
   1d1f2:	d1 f7       	brne	.-12     	; 0x1d1e8 <Transform+0x20c8>
   1d1f4:	e1 e1       	ldi	r30, 0x11	; 17
   1d1f6:	56 94       	lsr	r5
   1d1f8:	47 94       	ror	r4
   1d1fa:	37 94       	ror	r3
   1d1fc:	27 94       	ror	r2
   1d1fe:	ea 95       	dec	r30
   1d200:	d1 f7       	brne	.-12     	; 0x1d1f6 <Transform+0x20d6>
   1d202:	e2 28       	or	r14, r2
   1d204:	f3 28       	or	r15, r3
   1d206:	04 29       	or	r16, r4
   1d208:	15 29       	or	r17, r5
   1d20a:	e6 0c       	add	r14, r6
   1d20c:	f7 1c       	adc	r15, r7
   1d20e:	08 1d       	adc	r16, r8
   1d210:	19 1d       	adc	r17, r9
  II ( b, c, d, a, in[ 9], S44, 3951481745); /* 64 */
   1d212:	69 96       	adiw	r28, 0x19	; 25
   1d214:	2c ac       	ldd	r2, Y+60	; 0x3c
   1d216:	3d ac       	ldd	r3, Y+61	; 0x3d
   1d218:	4e ac       	ldd	r4, Y+62	; 0x3e
   1d21a:	5f ac       	ldd	r5, Y+63	; 0x3f
   1d21c:	69 97       	sbiw	r28, 0x19	; 25
   1d21e:	88 e5       	ldi	r24, 0x58	; 88
   1d220:	93 e0       	ldi	r25, 0x03	; 3
   1d222:	a2 eb       	ldi	r26, 0xB2	; 178
   1d224:	b1 e1       	ldi	r27, 0x11	; 17
   1d226:	28 0e       	add	r2, r24
   1d228:	39 1e       	adc	r3, r25
   1d22a:	4a 1e       	adc	r4, r26
   1d22c:	5b 1e       	adc	r5, r27
   1d22e:	2a 0c       	add	r2, r10
   1d230:	3b 1c       	adc	r3, r11
   1d232:	4c 1c       	adc	r4, r12
   1d234:	5d 1c       	adc	r5, r13
   1d236:	da 01       	movw	r26, r20
   1d238:	c9 01       	movw	r24, r18
   1d23a:	80 95       	com	r24
   1d23c:	90 95       	com	r25
   1d23e:	a0 95       	com	r26
   1d240:	b0 95       	com	r27
   1d242:	8e 29       	or	r24, r14
   1d244:	9f 29       	or	r25, r15
   1d246:	a0 2b       	or	r26, r16
   1d248:	b1 2b       	or	r27, r17
   1d24a:	86 25       	eor	r24, r6
   1d24c:	97 25       	eor	r25, r7
   1d24e:	a8 25       	eor	r26, r8
   1d250:	b9 25       	eor	r27, r9
   1d252:	28 0e       	add	r2, r24
   1d254:	39 1e       	adc	r3, r25
   1d256:	4a 1e       	adc	r4, r26
   1d258:	5b 1e       	adc	r5, r27

  buf[0] += a;
   1d25a:	a9 ac       	ldd	r10, Y+57	; 0x39
   1d25c:	ba ac       	ldd	r11, Y+58	; 0x3a
   1d25e:	cb ac       	ldd	r12, Y+59	; 0x3b
   1d260:	dc ac       	ldd	r13, Y+60	; 0x3c
   1d262:	2a 0d       	add	r18, r10
   1d264:	3b 1d       	adc	r19, r11
   1d266:	4c 1d       	adc	r20, r12
   1d268:	5d 1d       	adc	r21, r13
   1d26a:	ef 96       	adiw	r28, 0x3f	; 63
   1d26c:	ae ad       	ldd	r26, Y+62	; 0x3e
   1d26e:	bf ad       	ldd	r27, Y+63	; 0x3f
   1d270:	ef 97       	sbiw	r28, 0x3f	; 63
   1d272:	2d 93       	st	X+, r18
   1d274:	3d 93       	st	X+, r19
   1d276:	4d 93       	st	X+, r20
   1d278:	5c 93       	st	X, r21
   1d27a:	13 97       	sbiw	r26, 0x03	; 3
  buf[1] += b;
   1d27c:	14 96       	adiw	r26, 0x04	; 4
   1d27e:	2d 91       	ld	r18, X+
   1d280:	3d 91       	ld	r19, X+
   1d282:	4d 91       	ld	r20, X+
   1d284:	5c 91       	ld	r21, X
   1d286:	17 97       	sbiw	r26, 0x07	; 7
   1d288:	2e 0d       	add	r18, r14
   1d28a:	3f 1d       	adc	r19, r15
   1d28c:	40 1f       	adc	r20, r16
   1d28e:	51 1f       	adc	r21, r17
   1d290:	d2 01       	movw	r26, r4
   1d292:	c1 01       	movw	r24, r2
   1d294:	75 e1       	ldi	r23, 0x15	; 21
   1d296:	88 0f       	add	r24, r24
   1d298:	99 1f       	adc	r25, r25
   1d29a:	aa 1f       	adc	r26, r26
   1d29c:	bb 1f       	adc	r27, r27
   1d29e:	7a 95       	dec	r23
   1d2a0:	d1 f7       	brne	.-12     	; 0x1d296 <Transform+0x2176>
   1d2a2:	6b e0       	ldi	r22, 0x0B	; 11
   1d2a4:	56 94       	lsr	r5
   1d2a6:	47 94       	ror	r4
   1d2a8:	37 94       	ror	r3
   1d2aa:	27 94       	ror	r2
   1d2ac:	6a 95       	dec	r22
   1d2ae:	d1 f7       	brne	.-12     	; 0x1d2a4 <Transform+0x2184>
   1d2b0:	82 29       	or	r24, r2
   1d2b2:	93 29       	or	r25, r3
   1d2b4:	a4 29       	or	r26, r4
   1d2b6:	b5 29       	or	r27, r5
   1d2b8:	28 0f       	add	r18, r24
   1d2ba:	39 1f       	adc	r19, r25
   1d2bc:	4a 1f       	adc	r20, r26
   1d2be:	5b 1f       	adc	r21, r27
   1d2c0:	ef 96       	adiw	r28, 0x3f	; 63
   1d2c2:	ee ad       	ldd	r30, Y+62	; 0x3e
   1d2c4:	ff ad       	ldd	r31, Y+63	; 0x3f
   1d2c6:	ef 97       	sbiw	r28, 0x3f	; 63
   1d2c8:	24 83       	std	Z+4, r18	; 0x04
   1d2ca:	35 83       	std	Z+5, r19	; 0x05
   1d2cc:	46 83       	std	Z+6, r20	; 0x06
   1d2ce:	57 83       	std	Z+7, r21	; 0x07
  buf[2] += c;
   1d2d0:	80 85       	ldd	r24, Z+8	; 0x08
   1d2d2:	91 85       	ldd	r25, Z+9	; 0x09
   1d2d4:	a2 85       	ldd	r26, Z+10	; 0x0a
   1d2d6:	b3 85       	ldd	r27, Z+11	; 0x0b
   1d2d8:	8e 0d       	add	r24, r14
   1d2da:	9f 1d       	adc	r25, r15
   1d2dc:	a0 1f       	adc	r26, r16
   1d2de:	b1 1f       	adc	r27, r17
   1d2e0:	80 87       	std	Z+8, r24	; 0x08
   1d2e2:	91 87       	std	Z+9, r25	; 0x09
   1d2e4:	a2 87       	std	Z+10, r26	; 0x0a
   1d2e6:	b3 87       	std	Z+11, r27	; 0x0b
  buf[3] += d;
   1d2e8:	84 85       	ldd	r24, Z+12	; 0x0c
   1d2ea:	95 85       	ldd	r25, Z+13	; 0x0d
   1d2ec:	a6 85       	ldd	r26, Z+14	; 0x0e
   1d2ee:	b7 85       	ldd	r27, Z+15	; 0x0f
   1d2f0:	86 0d       	add	r24, r6
   1d2f2:	97 1d       	adc	r25, r7
   1d2f4:	a8 1d       	adc	r26, r8
   1d2f6:	b9 1d       	adc	r27, r9
   1d2f8:	84 87       	std	Z+12, r24	; 0x0c
   1d2fa:	95 87       	std	Z+13, r25	; 0x0d
   1d2fc:	a6 87       	std	Z+14, r26	; 0x0e
   1d2fe:	b7 87       	std	Z+15, r27	; 0x0f
}
   1d300:	c2 58       	subi	r28, 0x82	; 130
   1d302:	df 4f       	sbci	r29, 0xFF	; 255
   1d304:	0f b6       	in	r0, 0x3f	; 63
   1d306:	f8 94       	cli
   1d308:	de bf       	out	0x3e, r29	; 62
   1d30a:	0f be       	out	0x3f, r0	; 63
   1d30c:	cd bf       	out	0x3d, r28	; 61
   1d30e:	cf 91       	pop	r28
   1d310:	df 91       	pop	r29
   1d312:	1f 91       	pop	r17
   1d314:	0f 91       	pop	r16
   1d316:	ff 90       	pop	r15
   1d318:	ef 90       	pop	r14
   1d31a:	df 90       	pop	r13
   1d31c:	cf 90       	pop	r12
   1d31e:	bf 90       	pop	r11
   1d320:	af 90       	pop	r10
   1d322:	9f 90       	pop	r9
   1d324:	8f 90       	pop	r8
   1d326:	7f 90       	pop	r7
   1d328:	6f 90       	pop	r6
   1d32a:	5f 90       	pop	r5
   1d32c:	4f 90       	pop	r4
   1d32e:	3f 90       	pop	r3
   1d330:	2f 90       	pop	r2
   1d332:	08 95       	ret

0001d334 <MD5Update>:
  mdContext->buf[2] = (UINT4)0x98badcfe;
  mdContext->buf[3] = (UINT4)0x10325476;
}

void MD5Update(MD5_CTX *mdContext, unsigned char *inBuf, unsigned int inLen)
{
   1d334:	6f 92       	push	r6
   1d336:	7f 92       	push	r7
   1d338:	8f 92       	push	r8
   1d33a:	9f 92       	push	r9
   1d33c:	af 92       	push	r10
   1d33e:	bf 92       	push	r11
   1d340:	cf 92       	push	r12
   1d342:	df 92       	push	r13
   1d344:	ef 92       	push	r14
   1d346:	ff 92       	push	r15
   1d348:	0f 93       	push	r16
   1d34a:	1f 93       	push	r17
   1d34c:	df 93       	push	r29
   1d34e:	cf 93       	push	r28
   1d350:	cd b7       	in	r28, 0x3d	; 61
   1d352:	de b7       	in	r29, 0x3e	; 62
   1d354:	c0 54       	subi	r28, 0x40	; 64
   1d356:	d0 40       	sbci	r29, 0x00	; 0
   1d358:	0f b6       	in	r0, 0x3f	; 63
   1d35a:	f8 94       	cli
   1d35c:	de bf       	out	0x3e, r29	; 62
   1d35e:	0f be       	out	0x3f, r0	; 63
   1d360:	cd bf       	out	0x3d, r28	; 61
   1d362:	6c 01       	movw	r12, r24
   1d364:	4b 01       	movw	r8, r22
   1d366:	5a 01       	movw	r10, r20
  UINT4 in[16];
  int mdi;
  unsigned int i, ii;

  /* compute number of bytes mod 64 */
  mdi = (int)((mdContext->i[0] >> 3) & 0x3F);
   1d368:	dc 01       	movw	r26, r24
   1d36a:	2d 91       	ld	r18, X+
   1d36c:	3d 91       	ld	r19, X+
   1d36e:	4d 91       	ld	r20, X+
   1d370:	5c 91       	ld	r21, X

  /* update number of bits */
  if ((mdContext->i[0] + ((UINT4)inLen << 3)) < mdContext->i[0])
   1d372:	75 01       	movw	r14, r10
   1d374:	00 e0       	ldi	r16, 0x00	; 0
   1d376:	10 e0       	ldi	r17, 0x00	; 0
   1d378:	73 e0       	ldi	r23, 0x03	; 3
   1d37a:	ee 0c       	add	r14, r14
   1d37c:	ff 1c       	adc	r15, r15
   1d37e:	00 1f       	adc	r16, r16
   1d380:	11 1f       	adc	r17, r17
   1d382:	7a 95       	dec	r23
   1d384:	d1 f7       	brne	.-12     	; 0x1d37a <MD5Update+0x46>
   1d386:	d8 01       	movw	r26, r16
   1d388:	c7 01       	movw	r24, r14
   1d38a:	82 0f       	add	r24, r18
   1d38c:	93 1f       	adc	r25, r19
   1d38e:	a4 1f       	adc	r26, r20
   1d390:	b5 1f       	adc	r27, r21
   1d392:	82 17       	cp	r24, r18
   1d394:	93 07       	cpc	r25, r19
   1d396:	a4 07       	cpc	r26, r20
   1d398:	b5 07       	cpc	r27, r21
   1d39a:	60 f4       	brcc	.+24     	; 0x1d3b4 <MD5Update+0x80>
    mdContext->i[1]++;
   1d39c:	f6 01       	movw	r30, r12
   1d39e:	84 81       	ldd	r24, Z+4	; 0x04
   1d3a0:	95 81       	ldd	r25, Z+5	; 0x05
   1d3a2:	a6 81       	ldd	r26, Z+6	; 0x06
   1d3a4:	b7 81       	ldd	r27, Z+7	; 0x07
   1d3a6:	01 96       	adiw	r24, 0x01	; 1
   1d3a8:	a1 1d       	adc	r26, r1
   1d3aa:	b1 1d       	adc	r27, r1
   1d3ac:	84 83       	std	Z+4, r24	; 0x04
   1d3ae:	95 83       	std	Z+5, r25	; 0x05
   1d3b0:	a6 83       	std	Z+6, r26	; 0x06
   1d3b2:	b7 83       	std	Z+7, r27	; 0x07
  UINT4 in[16];
  int mdi;
  unsigned int i, ii;

  /* compute number of bytes mod 64 */
  mdi = (int)((mdContext->i[0] >> 3) & 0x3F);
   1d3b4:	63 e0       	ldi	r22, 0x03	; 3
   1d3b6:	56 95       	lsr	r21
   1d3b8:	47 95       	ror	r20
   1d3ba:	37 95       	ror	r19
   1d3bc:	27 95       	ror	r18
   1d3be:	6a 95       	dec	r22
   1d3c0:	d1 f7       	brne	.-12     	; 0x1d3b6 <MD5Update+0x82>
   1d3c2:	2f 73       	andi	r18, 0x3F	; 63
   1d3c4:	30 70       	andi	r19, 0x00	; 0

  /* update number of bits */
  if ((mdContext->i[0] + ((UINT4)inLen << 3)) < mdContext->i[0])
    mdContext->i[1]++;
  mdContext->i[0] += ((UINT4)inLen << 3);
   1d3c6:	f6 01       	movw	r30, r12
   1d3c8:	80 81       	ld	r24, Z
   1d3ca:	91 81       	ldd	r25, Z+1	; 0x01
   1d3cc:	a2 81       	ldd	r26, Z+2	; 0x02
   1d3ce:	b3 81       	ldd	r27, Z+3	; 0x03
   1d3d0:	8e 0d       	add	r24, r14
   1d3d2:	9f 1d       	adc	r25, r15
   1d3d4:	a0 1f       	adc	r26, r16
   1d3d6:	b1 1f       	adc	r27, r17
   1d3d8:	80 83       	st	Z, r24
   1d3da:	91 83       	std	Z+1, r25	; 0x01
   1d3dc:	a2 83       	std	Z+2, r26	; 0x02
   1d3de:	b3 83       	std	Z+3, r27	; 0x03
      for (i = 0, ii = 0; i < 16; i++, ii += 4)
        in[i] = (((UINT4)mdContext->in[ii+3]) << 24) |
                (((UINT4)mdContext->in[ii+2]) << 16) |
                (((UINT4)mdContext->in[ii+1]) << 8) |
                ((UINT4)mdContext->in[ii]);
      Transform (mdContext->buf, in);
   1d3e0:	86 01       	movw	r16, r12
   1d3e2:	08 5f       	subi	r16, 0xF8	; 248
   1d3e4:	1f 4f       	sbci	r17, 0xFF	; 255
  while (inLen--) {
    /* add new character to buffer, increment mdi */
    mdContext->in[mdi++] = *inBuf++;

    /* transform if necessary */
    if (mdi == 0x40) {
   1d3e6:	7e 01       	movw	r14, r28
   1d3e8:	08 94       	sec
   1d3ea:	e1 1c       	adc	r14, r1
   1d3ec:	f1 1c       	adc	r15, r1
      for (i = 0, ii = 0; i < 16; i++, ii += 4)
   1d3ee:	91 e4       	ldi	r25, 0x41	; 65
   1d3f0:	69 2e       	mov	r6, r25
   1d3f2:	71 2c       	mov	r7, r1
   1d3f4:	6c 0e       	add	r6, r28
   1d3f6:	7d 1e       	adc	r7, r29
   1d3f8:	4a c0       	rjmp	.+148    	; 0x1d48e <MD5Update+0x15a>
  mdContext->i[0] += ((UINT4)inLen << 3);
  mdContext->i[1] += ((UINT4)inLen >> 29);

  while (inLen--) {
    /* add new character to buffer, increment mdi */
    mdContext->in[mdi++] = *inBuf++;
   1d3fa:	f6 01       	movw	r30, r12
   1d3fc:	e2 0f       	add	r30, r18
   1d3fe:	f3 1f       	adc	r31, r19
   1d400:	d4 01       	movw	r26, r8
   1d402:	8c 91       	ld	r24, X
   1d404:	80 8f       	std	Z+24, r24	; 0x18
   1d406:	2f 5f       	subi	r18, 0xFF	; 255
   1d408:	3f 4f       	sbci	r19, 0xFF	; 255

    /* transform if necessary */
    if (mdi == 0x40) {
   1d40a:	20 34       	cpi	r18, 0x40	; 64
   1d40c:	31 05       	cpc	r19, r1
   1d40e:	c9 f5       	brne	.+114    	; 0x1d482 <MD5Update+0x14e>
   1d410:	f6 01       	movw	r30, r12
   1d412:	b7 01       	movw	r22, r14
      for (i = 0, ii = 0; i < 16; i++, ii += 4)
        in[i] = (((UINT4)mdContext->in[ii+3]) << 24) |
   1d414:	23 8d       	ldd	r18, Z+27	; 0x1b
   1d416:	30 e0       	ldi	r19, 0x00	; 0
   1d418:	40 e0       	ldi	r20, 0x00	; 0
   1d41a:	50 e0       	ldi	r21, 0x00	; 0
   1d41c:	52 2f       	mov	r21, r18
   1d41e:	44 27       	eor	r20, r20
   1d420:	33 27       	eor	r19, r19
   1d422:	22 27       	eor	r18, r18
   1d424:	82 8d       	ldd	r24, Z+26	; 0x1a
   1d426:	90 e0       	ldi	r25, 0x00	; 0
   1d428:	a0 e0       	ldi	r26, 0x00	; 0
   1d42a:	b0 e0       	ldi	r27, 0x00	; 0
   1d42c:	dc 01       	movw	r26, r24
   1d42e:	99 27       	eor	r25, r25
   1d430:	88 27       	eor	r24, r24
   1d432:	28 2b       	or	r18, r24
   1d434:	39 2b       	or	r19, r25
   1d436:	4a 2b       	or	r20, r26
   1d438:	5b 2b       	or	r21, r27
   1d43a:	80 8d       	ldd	r24, Z+24	; 0x18
   1d43c:	90 e0       	ldi	r25, 0x00	; 0
   1d43e:	a0 e0       	ldi	r26, 0x00	; 0
   1d440:	b0 e0       	ldi	r27, 0x00	; 0
   1d442:	28 2b       	or	r18, r24
   1d444:	39 2b       	or	r19, r25
   1d446:	4a 2b       	or	r20, r26
   1d448:	5b 2b       	or	r21, r27
   1d44a:	81 8d       	ldd	r24, Z+25	; 0x19
   1d44c:	90 e0       	ldi	r25, 0x00	; 0
   1d44e:	a0 e0       	ldi	r26, 0x00	; 0
   1d450:	b0 e0       	ldi	r27, 0x00	; 0
   1d452:	ba 2f       	mov	r27, r26
   1d454:	a9 2f       	mov	r26, r25
   1d456:	98 2f       	mov	r25, r24
   1d458:	88 27       	eor	r24, r24
   1d45a:	28 2b       	or	r18, r24
   1d45c:	39 2b       	or	r19, r25
   1d45e:	4a 2b       	or	r20, r26
   1d460:	5b 2b       	or	r21, r27
   1d462:	db 01       	movw	r26, r22
   1d464:	2d 93       	st	X+, r18
   1d466:	3d 93       	st	X+, r19
   1d468:	4d 93       	st	X+, r20
   1d46a:	5d 93       	st	X+, r21
   1d46c:	bd 01       	movw	r22, r26
   1d46e:	34 96       	adiw	r30, 0x04	; 4
    /* add new character to buffer, increment mdi */
    mdContext->in[mdi++] = *inBuf++;

    /* transform if necessary */
    if (mdi == 0x40) {
      for (i = 0, ii = 0; i < 16; i++, ii += 4)
   1d470:	a6 15       	cp	r26, r6
   1d472:	b7 05       	cpc	r27, r7
   1d474:	79 f6       	brne	.-98     	; 0x1d414 <MD5Update+0xe0>
        in[i] = (((UINT4)mdContext->in[ii+3]) << 24) |
                (((UINT4)mdContext->in[ii+2]) << 16) |
                (((UINT4)mdContext->in[ii+1]) << 8) |
                ((UINT4)mdContext->in[ii]);
      Transform (mdContext->buf, in);
   1d476:	c8 01       	movw	r24, r16
   1d478:	b7 01       	movw	r22, r14
   1d47a:	0e 94 90 d8 	call	0x1b120	; 0x1b120 <Transform>
   1d47e:	20 e0       	ldi	r18, 0x00	; 0
   1d480:	30 e0       	ldi	r19, 0x00	; 0
  mdContext->i[0] += ((UINT4)inLen << 3);
  mdContext->i[1] += ((UINT4)inLen >> 29);

  while (inLen--) {
    /* add new character to buffer, increment mdi */
    mdContext->in[mdi++] = *inBuf++;
   1d482:	08 94       	sec
   1d484:	81 1c       	adc	r8, r1
   1d486:	91 1c       	adc	r9, r1
   1d488:	08 94       	sec
   1d48a:	a1 08       	sbc	r10, r1
   1d48c:	b1 08       	sbc	r11, r1
  if ((mdContext->i[0] + ((UINT4)inLen << 3)) < mdContext->i[0])
    mdContext->i[1]++;
  mdContext->i[0] += ((UINT4)inLen << 3);
  mdContext->i[1] += ((UINT4)inLen >> 29);

  while (inLen--) {
   1d48e:	a1 14       	cp	r10, r1
   1d490:	b1 04       	cpc	r11, r1
   1d492:	09 f0       	breq	.+2      	; 0x1d496 <MD5Update+0x162>
   1d494:	b2 cf       	rjmp	.-156    	; 0x1d3fa <MD5Update+0xc6>
                ((UINT4)mdContext->in[ii]);
      Transform (mdContext->buf, in);
      mdi = 0;
    }
  }
}
   1d496:	c0 5c       	subi	r28, 0xC0	; 192
   1d498:	df 4f       	sbci	r29, 0xFF	; 255
   1d49a:	0f b6       	in	r0, 0x3f	; 63
   1d49c:	f8 94       	cli
   1d49e:	de bf       	out	0x3e, r29	; 62
   1d4a0:	0f be       	out	0x3f, r0	; 63
   1d4a2:	cd bf       	out	0x3d, r28	; 61
   1d4a4:	cf 91       	pop	r28
   1d4a6:	df 91       	pop	r29
   1d4a8:	1f 91       	pop	r17
   1d4aa:	0f 91       	pop	r16
   1d4ac:	ff 90       	pop	r15
   1d4ae:	ef 90       	pop	r14
   1d4b0:	df 90       	pop	r13
   1d4b2:	cf 90       	pop	r12
   1d4b4:	bf 90       	pop	r11
   1d4b6:	af 90       	pop	r10
   1d4b8:	9f 90       	pop	r9
   1d4ba:	8f 90       	pop	r8
   1d4bc:	7f 90       	pop	r7
   1d4be:	6f 90       	pop	r6
   1d4c0:	08 95       	ret

0001d4c2 <MD5Final>:

void MD5Final(MD5_CTX *mdContext)
{
   1d4c2:	af 92       	push	r10
   1d4c4:	bf 92       	push	r11
   1d4c6:	cf 92       	push	r12
   1d4c8:	df 92       	push	r13
   1d4ca:	ef 92       	push	r14
   1d4cc:	ff 92       	push	r15
   1d4ce:	0f 93       	push	r16
   1d4d0:	1f 93       	push	r17
   1d4d2:	df 93       	push	r29
   1d4d4:	cf 93       	push	r28
   1d4d6:	cd b7       	in	r28, 0x3d	; 61
   1d4d8:	de b7       	in	r29, 0x3e	; 62
   1d4da:	c0 54       	subi	r28, 0x40	; 64
   1d4dc:	d0 40       	sbci	r29, 0x00	; 0
   1d4de:	0f b6       	in	r0, 0x3f	; 63
   1d4e0:	f8 94       	cli
   1d4e2:	de bf       	out	0x3e, r29	; 62
   1d4e4:	0f be       	out	0x3f, r0	; 63
   1d4e6:	cd bf       	out	0x3d, r28	; 61
   1d4e8:	8c 01       	movw	r16, r24
  int mdi;
  unsigned int i, ii;
  unsigned int padLen;

  /* save number of bits */
  in[14] = mdContext->i[0];
   1d4ea:	fc 01       	movw	r30, r24
   1d4ec:	80 81       	ld	r24, Z
   1d4ee:	91 81       	ldd	r25, Z+1	; 0x01
   1d4f0:	a2 81       	ldd	r26, Z+2	; 0x02
   1d4f2:	b3 81       	ldd	r27, Z+3	; 0x03
   1d4f4:	89 af       	std	Y+57, r24	; 0x39
   1d4f6:	9a af       	std	Y+58, r25	; 0x3a
   1d4f8:	ab af       	std	Y+59, r26	; 0x3b
   1d4fa:	bc af       	std	Y+60, r27	; 0x3c
  in[15] = mdContext->i[1];
   1d4fc:	24 81       	ldd	r18, Z+4	; 0x04
   1d4fe:	35 81       	ldd	r19, Z+5	; 0x05
   1d500:	46 81       	ldd	r20, Z+6	; 0x06
   1d502:	57 81       	ldd	r21, Z+7	; 0x07
   1d504:	fe 01       	movw	r30, r28
   1d506:	fd 96       	adiw	r30, 0x3d	; 61
   1d508:	20 83       	st	Z, r18
   1d50a:	31 83       	std	Z+1, r19	; 0x01
   1d50c:	42 83       	std	Z+2, r20	; 0x02
   1d50e:	53 83       	std	Z+3, r21	; 0x03

  /* compute number of bytes mod 64 */
  mdi = (int)((mdContext->i[0] >> 3) & 0x3F);
   1d510:	23 e0       	ldi	r18, 0x03	; 3
   1d512:	b6 95       	lsr	r27
   1d514:	a7 95       	ror	r26
   1d516:	97 95       	ror	r25
   1d518:	87 95       	ror	r24
   1d51a:	2a 95       	dec	r18
   1d51c:	d1 f7       	brne	.-12     	; 0x1d512 <MD5Final+0x50>
   1d51e:	8f 73       	andi	r24, 0x3F	; 63
   1d520:	90 70       	andi	r25, 0x00	; 0

  /* pad out to 56 mod 64 */
  padLen = (mdi < 56) ? (56 - mdi) : (120 - mdi);
   1d522:	88 33       	cpi	r24, 0x38	; 56
   1d524:	91 05       	cpc	r25, r1
   1d526:	1c f4       	brge	.+6      	; 0x1d52e <MD5Final+0x6c>
   1d528:	48 e3       	ldi	r20, 0x38	; 56
   1d52a:	50 e0       	ldi	r21, 0x00	; 0
   1d52c:	02 c0       	rjmp	.+4      	; 0x1d532 <MD5Final+0x70>
   1d52e:	48 e7       	ldi	r20, 0x78	; 120
   1d530:	50 e0       	ldi	r21, 0x00	; 0
   1d532:	48 1b       	sub	r20, r24
   1d534:	59 0b       	sbc	r21, r25
  MD5Update (mdContext, PADDING, padLen);
   1d536:	c8 01       	movw	r24, r16
   1d538:	6b e3       	ldi	r22, 0x3B	; 59
   1d53a:	75 e0       	ldi	r23, 0x05	; 5
   1d53c:	0e 94 9a e9 	call	0x1d334	; 0x1d334 <MD5Update>
   1d540:	78 01       	movw	r14, r16
   1d542:	be 01       	movw	r22, r28
   1d544:	6f 5f       	subi	r22, 0xFF	; 255
   1d546:	7f 4f       	sbci	r23, 0xFF	; 255
   1d548:	f8 01       	movw	r30, r16

  /* append length in bits and transform */
  for (i = 0, ii = 0; i < 14; i++, ii += 4)
   1d54a:	99 e3       	ldi	r25, 0x39	; 57
   1d54c:	c9 2e       	mov	r12, r25
   1d54e:	d1 2c       	mov	r13, r1
   1d550:	cc 0e       	add	r12, r28
   1d552:	dd 1e       	adc	r13, r29
    in[i] = (((UINT4)mdContext->in[ii+3]) << 24) |
   1d554:	23 8d       	ldd	r18, Z+27	; 0x1b
   1d556:	30 e0       	ldi	r19, 0x00	; 0
   1d558:	40 e0       	ldi	r20, 0x00	; 0
   1d55a:	50 e0       	ldi	r21, 0x00	; 0
   1d55c:	52 2f       	mov	r21, r18
   1d55e:	44 27       	eor	r20, r20
   1d560:	33 27       	eor	r19, r19
   1d562:	22 27       	eor	r18, r18
   1d564:	82 8d       	ldd	r24, Z+26	; 0x1a
   1d566:	90 e0       	ldi	r25, 0x00	; 0
   1d568:	a0 e0       	ldi	r26, 0x00	; 0
   1d56a:	b0 e0       	ldi	r27, 0x00	; 0
   1d56c:	dc 01       	movw	r26, r24
   1d56e:	99 27       	eor	r25, r25
   1d570:	88 27       	eor	r24, r24
   1d572:	28 2b       	or	r18, r24
   1d574:	39 2b       	or	r19, r25
   1d576:	4a 2b       	or	r20, r26
   1d578:	5b 2b       	or	r21, r27
   1d57a:	80 8d       	ldd	r24, Z+24	; 0x18
   1d57c:	90 e0       	ldi	r25, 0x00	; 0
   1d57e:	a0 e0       	ldi	r26, 0x00	; 0
   1d580:	b0 e0       	ldi	r27, 0x00	; 0
   1d582:	28 2b       	or	r18, r24
   1d584:	39 2b       	or	r19, r25
   1d586:	4a 2b       	or	r20, r26
   1d588:	5b 2b       	or	r21, r27
   1d58a:	81 8d       	ldd	r24, Z+25	; 0x19
   1d58c:	90 e0       	ldi	r25, 0x00	; 0
   1d58e:	a0 e0       	ldi	r26, 0x00	; 0
   1d590:	b0 e0       	ldi	r27, 0x00	; 0
   1d592:	ba 2f       	mov	r27, r26
   1d594:	a9 2f       	mov	r26, r25
   1d596:	98 2f       	mov	r25, r24
   1d598:	88 27       	eor	r24, r24
   1d59a:	28 2b       	or	r18, r24
   1d59c:	39 2b       	or	r19, r25
   1d59e:	4a 2b       	or	r20, r26
   1d5a0:	5b 2b       	or	r21, r27
   1d5a2:	db 01       	movw	r26, r22
   1d5a4:	2d 93       	st	X+, r18
   1d5a6:	3d 93       	st	X+, r19
   1d5a8:	4d 93       	st	X+, r20
   1d5aa:	5d 93       	st	X+, r21
   1d5ac:	bd 01       	movw	r22, r26
   1d5ae:	34 96       	adiw	r30, 0x04	; 4
  /* pad out to 56 mod 64 */
  padLen = (mdi < 56) ? (56 - mdi) : (120 - mdi);
  MD5Update (mdContext, PADDING, padLen);

  /* append length in bits and transform */
  for (i = 0, ii = 0; i < 14; i++, ii += 4)
   1d5b0:	ac 15       	cp	r26, r12
   1d5b2:	bd 05       	cpc	r27, r13
   1d5b4:	79 f6       	brne	.-98     	; 0x1d554 <MD5Final+0x92>
    in[i] = (((UINT4)mdContext->in[ii+3]) << 24) |
            (((UINT4)mdContext->in[ii+2]) << 16) |
            (((UINT4)mdContext->in[ii+1]) << 8) |
            ((UINT4)mdContext->in[ii]);
  Transform (mdContext->buf, in);
   1d5b6:	c8 01       	movw	r24, r16
   1d5b8:	08 96       	adiw	r24, 0x08	; 8
   1d5ba:	be 01       	movw	r22, r28
   1d5bc:	6f 5f       	subi	r22, 0xFF	; 255
   1d5be:	7f 4f       	sbci	r23, 0xFF	; 255
   1d5c0:	0e 94 90 d8 	call	0x1b120	; 0x1b120 <Transform>
   1d5c4:	f8 01       	movw	r30, r16
   1d5c6:	e8 5a       	subi	r30, 0xA8	; 168
   1d5c8:	ff 4f       	sbci	r31, 0xFF	; 255
   1d5ca:	60 e0       	ldi	r22, 0x00	; 0
   1d5cc:	70 e0       	ldi	r23, 0x00	; 0

  /* store buffer in digest */
  for (i = 0, ii = 0; i < 4; i++, ii += 4) {
    mdContext->digest[ii] = (unsigned char)(mdContext->buf[i] & 0xFF);
   1d5ce:	d7 01       	movw	r26, r14
   1d5d0:	18 96       	adiw	r26, 0x08	; 8
   1d5d2:	8c 91       	ld	r24, X
   1d5d4:	18 97       	sbiw	r26, 0x08	; 8
   1d5d6:	80 83       	st	Z, r24
    mdContext->digest[ii+1] =
   1d5d8:	18 96       	adiw	r26, 0x08	; 8
   1d5da:	ad 90       	ld	r10, X+
   1d5dc:	bd 90       	ld	r11, X+
   1d5de:	cd 90       	ld	r12, X+
   1d5e0:	dc 90       	ld	r13, X
   1d5e2:	1b 97       	sbiw	r26, 0x0b	; 11
   1d5e4:	55 27       	eor	r21, r21
   1d5e6:	4d 2d       	mov	r20, r13
   1d5e8:	3c 2d       	mov	r19, r12
   1d5ea:	2b 2d       	mov	r18, r11
   1d5ec:	21 83       	std	Z+1, r18	; 0x01
      (unsigned char)((mdContext->buf[i] >> 8) & 0xFF);
    mdContext->digest[ii+2] =
   1d5ee:	96 01       	movw	r18, r12
   1d5f0:	44 27       	eor	r20, r20
   1d5f2:	55 27       	eor	r21, r21
   1d5f4:	22 83       	std	Z+2, r18	; 0x02
      (unsigned char)((mdContext->buf[i] >> 16) & 0xFF);
    mdContext->digest[ii+3] =
   1d5f6:	8d 2d       	mov	r24, r13
   1d5f8:	99 27       	eor	r25, r25
   1d5fa:	aa 27       	eor	r26, r26
   1d5fc:	bb 27       	eor	r27, r27
   1d5fe:	83 83       	std	Z+3, r24	; 0x03
            (((UINT4)mdContext->in[ii+1]) << 8) |
            ((UINT4)mdContext->in[ii]);
  Transform (mdContext->buf, in);

  /* store buffer in digest */
  for (i = 0, ii = 0; i < 4; i++, ii += 4) {
   1d600:	6c 5f       	subi	r22, 0xFC	; 252
   1d602:	7f 4f       	sbci	r23, 0xFF	; 255
   1d604:	84 e0       	ldi	r24, 0x04	; 4
   1d606:	90 e0       	ldi	r25, 0x00	; 0
   1d608:	e8 0e       	add	r14, r24
   1d60a:	f9 1e       	adc	r15, r25
   1d60c:	34 96       	adiw	r30, 0x04	; 4
   1d60e:	60 31       	cpi	r22, 0x10	; 16
   1d610:	71 05       	cpc	r23, r1
   1d612:	e9 f6       	brne	.-70     	; 0x1d5ce <MD5Final+0x10c>
    mdContext->digest[ii+2] =
      (unsigned char)((mdContext->buf[i] >> 16) & 0xFF);
    mdContext->digest[ii+3] =
      (unsigned char)((mdContext->buf[i] >> 24) & 0xFF);
  }
}
   1d614:	c0 5c       	subi	r28, 0xC0	; 192
   1d616:	df 4f       	sbci	r29, 0xFF	; 255
   1d618:	0f b6       	in	r0, 0x3f	; 63
   1d61a:	f8 94       	cli
   1d61c:	de bf       	out	0x3e, r29	; 62
   1d61e:	0f be       	out	0x3f, r0	; 63
   1d620:	cd bf       	out	0x3d, r28	; 61
   1d622:	cf 91       	pop	r28
   1d624:	df 91       	pop	r29
   1d626:	1f 91       	pop	r17
   1d628:	0f 91       	pop	r16
   1d62a:	ff 90       	pop	r15
   1d62c:	ef 90       	pop	r14
   1d62e:	df 90       	pop	r13
   1d630:	cf 90       	pop	r12
   1d632:	bf 90       	pop	r11
   1d634:	af 90       	pop	r10
   1d636:	08 95       	ret

0001d638 <BootImageIsTentative>:
//
// ---------------------------------------------

BOOL BootImageIsTentative()
{
	return !corrupt && bootVars.tentativeImage && !bootVars.useFallback;
   1d638:	80 91 7b 05 	lds	r24, 0x057B
   1d63c:	88 23       	and	r24, r24
   1d63e:	59 f4       	brne	.+22     	; 0x1d656 <BootImageIsTentative+0x1e>
   1d640:	80 91 9c e8 	lds	r24, 0xE89C
   1d644:	84 ff       	sbrs	r24, 4
   1d646:	07 c0       	rjmp	.+14     	; 0x1d656 <BootImageIsTentative+0x1e>
   1d648:	90 e0       	ldi	r25, 0x00	; 0
   1d64a:	80 fd       	sbrc	r24, 0
   1d64c:	91 e0       	ldi	r25, 0x01	; 1
   1d64e:	81 e0       	ldi	r24, 0x01	; 1
   1d650:	98 27       	eor	r25, r24
   1d652:	89 2f       	mov	r24, r25
   1d654:	08 95       	ret
   1d656:	80 e0       	ldi	r24, 0x00	; 0
   1d658:	90 e0       	ldi	r25, 0x00	; 0
}
   1d65a:	08 95       	ret

0001d65c <BootCausedByWatchdog>:
//
// ---------------------------------------------

BOOL BootCausedByWatchdog()
{
	return corrupt || bootVars.restartedByWatchdog;
   1d65c:	80 91 7b 05 	lds	r24, 0x057B
   1d660:	88 23       	and	r24, r24
   1d662:	31 f4       	brne	.+12     	; 0x1d670 <BootCausedByWatchdog+0x14>
   1d664:	20 e0       	ldi	r18, 0x00	; 0
   1d666:	30 e0       	ldi	r19, 0x00	; 0
   1d668:	80 91 9c e8 	lds	r24, 0xE89C
   1d66c:	83 ff       	sbrs	r24, 3
   1d66e:	02 c0       	rjmp	.+4      	; 0x1d674 <BootCausedByWatchdog+0x18>
   1d670:	21 e0       	ldi	r18, 0x01	; 1
   1d672:	30 e0       	ldi	r19, 0x00	; 0
}
   1d674:	82 2f       	mov	r24, r18
   1d676:	08 95       	ret

0001d678 <BootSelectProgram>:
// to actually restart)
//
// ---------------------------------------------

void BootSelectProgram(BOOL newSelectedImage)
{
   1d678:	98 2f       	mov	r25, r24
	if (!corrupt)
   1d67a:	80 91 7b 05 	lds	r24, 0x057B
   1d67e:	88 23       	and	r24, r24
   1d680:	b1 f4       	brne	.+44     	; 0x1d6ae <BootSelectProgram+0x36>
	{
		memset(bootVars.selectedImage.fileName, '\0', sizeof(bootVars.selectedImage.fileName));
   1d682:	e5 e5       	ldi	r30, 0x55	; 85
   1d684:	f8 ee       	ldi	r31, 0xE8	; 232
   1d686:	8d e0       	ldi	r24, 0x0D	; 13
   1d688:	df 01       	movw	r26, r30
   1d68a:	1d 92       	st	X+, r1
   1d68c:	8a 95       	dec	r24
   1d68e:	e9 f7       	brne	.-6      	; 0x1d68a <BootSelectProgram+0x12>

		if (newSelectedImage)
   1d690:	99 23       	and	r25, r25
   1d692:	21 f0       	breq	.+8      	; 0x1d69c <BootSelectProgram+0x24>
			strcpy_P(bootVars.selectedImage.fileName, PSTR("$NEWPROG"));
   1d694:	cf 01       	movw	r24, r30
   1d696:	61 e0       	ldi	r22, 0x01	; 1
   1d698:	7c e1       	ldi	r23, 0x1C	; 28
   1d69a:	03 c0       	rjmp	.+6      	; 0x1d6a2 <BootSelectProgram+0x2a>
		else
			strcpy_P(bootVars.selectedImage.fileName, PSTR("$DEFAULT"));
   1d69c:	cf 01       	movw	r24, r30
   1d69e:	68 ef       	ldi	r22, 0xF8	; 248
   1d6a0:	7b e1       	ldi	r23, 0x1B	; 27
   1d6a2:	0e 94 bf ef 	call	0x1df7e	; 0x1df7e <strcpy_P>

		WriteBootEEPROM(&bootVars);
   1d6a6:	85 e5       	ldi	r24, 0x55	; 85
   1d6a8:	98 ee       	ldi	r25, 0xE8	; 232
   1d6aa:	0e 94 6d ed 	call	0x1dada	; 0x1dada <WriteBootEEPROM>
   1d6ae:	08 95       	ret

0001d6b0 <BootRestart>:
// intentional restart
//
// ---------------------------------------------

void BootRestart(BOOL intentional)
{
   1d6b0:	28 2f       	mov	r18, r24
	// write the EEPROM flag to indicate if this is an intentional restart
	if (!corrupt)
   1d6b2:	80 91 7b 05 	lds	r24, 0x057B
   1d6b6:	88 23       	and	r24, r24
   1d6b8:	71 f4       	brne	.+28     	; 0x1d6d6 <BootRestart+0x26>
	{
		bootVars.intentionalRestart = intentional ? 1 : 0;
   1d6ba:	90 e0       	ldi	r25, 0x00	; 0
   1d6bc:	21 11       	cpse	r18, r1
   1d6be:	91 e0       	ldi	r25, 0x01	; 1
   1d6c0:	99 0f       	add	r25, r25
   1d6c2:	80 91 9c e8 	lds	r24, 0xE89C
   1d6c6:	8d 7f       	andi	r24, 0xFD	; 253
   1d6c8:	89 2b       	or	r24, r25
   1d6ca:	80 93 9c e8 	sts	0xE89C, r24
		WriteBootEEPROM(&bootVars);
   1d6ce:	85 e5       	ldi	r24, 0x55	; 85
   1d6d0:	98 ee       	ldi	r25, 0xE8	; 232
   1d6d2:	0e 94 6d ed 	call	0x1dada	; 0x1dada <WriteBootEEPROM>
	}

	cli();						// turn off interrupts to prevent watchdog retriggers
   1d6d6:	f8 94       	cli
	wdt_enable(WDTO_60MS);		// use a short timeout
   1d6d8:	2a e0       	ldi	r18, 0x0A	; 10
   1d6da:	88 e1       	ldi	r24, 0x18	; 24
   1d6dc:	90 e0       	ldi	r25, 0x00	; 0
   1d6de:	0f b6       	in	r0, 0x3f	; 63
   1d6e0:	f8 94       	cli
   1d6e2:	a8 95       	wdr
   1d6e4:	80 93 60 00 	sts	0x0060, r24
   1d6e8:	0f be       	out	0x3f, r0	; 63
   1d6ea:	20 93 60 00 	sts	0x0060, r18
	
	// just wait here until the watchdog restarts the system
	while(1)
		sleep_mode();
   1d6ee:	83 b7       	in	r24, 0x33	; 51
   1d6f0:	81 60       	ori	r24, 0x01	; 1
   1d6f2:	83 bf       	out	0x33, r24	; 51
   1d6f4:	88 95       	sleep
   1d6f6:	83 b7       	in	r24, 0x33	; 51
   1d6f8:	8e 7f       	andi	r24, 0xFE	; 254
   1d6fa:	83 bf       	out	0x33, r24	; 51
   1d6fc:	f8 cf       	rjmp	.-16     	; 0x1d6ee <BootRestart+0x3e>

0001d6fe <BootClearTentativeImage>:
//
// ---------------------------------------------

BOOL BootImageIsTentative()
{
	return !corrupt && bootVars.tentativeImage && !bootVars.useFallback;
   1d6fe:	80 91 7b 05 	lds	r24, 0x057B
   1d702:	88 23       	and	r24, r24
   1d704:	91 f4       	brne	.+36     	; 0x1d72a <BootClearTentativeImage+0x2c>
   1d706:	80 91 9c e8 	lds	r24, 0xE89C
   1d70a:	84 ff       	sbrs	r24, 4
   1d70c:	0e c0       	rjmp	.+28     	; 0x1d72a <BootClearTentativeImage+0x2c>
   1d70e:	90 e0       	ldi	r25, 0x00	; 0
   1d710:	80 fd       	sbrc	r24, 0
   1d712:	91 e0       	ldi	r25, 0x01	; 1
//
// ---------------------------------------------

void BootClearTentativeImage()
{
	if (BootImageIsTentative())
   1d714:	99 23       	and	r25, r25
   1d716:	49 f4       	brne	.+18     	; 0x1d72a <BootClearTentativeImage+0x2c>
	{
		bootVars.tentativeImage = 0;
   1d718:	80 91 9c e8 	lds	r24, 0xE89C
   1d71c:	8f 7e       	andi	r24, 0xEF	; 239
   1d71e:	80 93 9c e8 	sts	0xE89C, r24
		WriteBootEEPROM(&bootVars);
   1d722:	85 e5       	ldi	r24, 0x55	; 85
   1d724:	98 ee       	ldi	r25, 0xE8	; 232
   1d726:	0e 94 6d ed 	call	0x1dada	; 0x1dada <WriteBootEEPROM>
   1d72a:	08 95       	ret

0001d72c <BootCheckProgramMD5>:
// and MD5
//
// ---------------------------------------------

BOOL BootCheckProgramMD5(uint32_t imageLength, uint8_t* pExpectedMD5, uint8_t* pCalculatedMD5)
{
   1d72c:	2f 92       	push	r2
   1d72e:	3f 92       	push	r3
   1d730:	4f 92       	push	r4
   1d732:	5f 92       	push	r5
   1d734:	6f 92       	push	r6
   1d736:	7f 92       	push	r7
   1d738:	8f 92       	push	r8
   1d73a:	9f 92       	push	r9
   1d73c:	af 92       	push	r10
   1d73e:	bf 92       	push	r11
   1d740:	cf 92       	push	r12
   1d742:	df 92       	push	r13
   1d744:	ef 92       	push	r14
   1d746:	ff 92       	push	r15
   1d748:	0f 93       	push	r16
   1d74a:	1f 93       	push	r17
   1d74c:	df 93       	push	r29
   1d74e:	cf 93       	push	r28
   1d750:	cd b7       	in	r28, 0x3d	; 61
   1d752:	de b7       	in	r29, 0x3e	; 62
   1d754:	ce 5c       	subi	r28, 0xCE	; 206
   1d756:	d0 40       	sbci	r29, 0x00	; 0
   1d758:	0f b6       	in	r0, 0x3f	; 63
   1d75a:	f8 94       	cli
   1d75c:	de bf       	out	0x3e, r29	; 62
   1d75e:	0f be       	out	0x3f, r0	; 63
   1d760:	cd bf       	out	0x3d, r28	; 61
   1d762:	4b 01       	movw	r8, r22
   1d764:	5c 01       	movw	r10, r24
   1d766:	1a 01       	movw	r2, r20
   1d768:	c3 53       	subi	r28, 0x33	; 51
   1d76a:	df 4f       	sbci	r29, 0xFF	; 255
   1d76c:	28 83       	st	Y, r18
   1d76e:	cd 5c       	subi	r28, 0xCD	; 205
   1d770:	d0 40       	sbci	r29, 0x00	; 0
   1d772:	c2 53       	subi	r28, 0x32	; 50
   1d774:	df 4f       	sbci	r29, 0xFF	; 255
   1d776:	38 83       	st	Y, r19
   1d778:	ce 5c       	subi	r28, 0xCE	; 206
   1d77a:	d0 40       	sbci	r29, 0x00	; 0
	MD5_CTX md5ctx;						// the context used for incrementally computing MD5 digest
	uint32_t addr = 0;					// program address to read from
	uint8_t buffer[100];				// buffer to assemble for MD5

	// get the MD5 of the program space
	MD5Init(&md5ctx);
   1d77c:	8e 01       	movw	r16, r28
   1d77e:	0b 59       	subi	r16, 0x9B	; 155
   1d780:	1f 4f       	sbci	r17, 0xFF	; 255
   1d782:	c8 01       	movw	r24, r16
   1d784:	0e 94 66 d8 	call	0x1b0cc	; 0x1b0cc <MD5Init>
   1d788:	cc 24       	eor	r12, r12
   1d78a:	dd 24       	eor	r13, r13
   1d78c:	76 01       	movw	r14, r12

	while(addr < imageLength)
	{
		uint8_t* ptr = buffer;
		uint16_t blockSize = ((imageLength-addr) > DIM(buffer)) ? DIM(buffer) : ((uint16_t) (imageLength-addr));
   1d78e:	3e 01       	movw	r6, r28
   1d790:	08 94       	sec
   1d792:	61 1c       	adc	r6, r1
   1d794:	71 1c       	adc	r7, r1
		uint16_t remaining = blockSize;

		while(remaining--)
			*ptr++ = __ELPM(addr++);

		MD5Update(&md5ctx, (unsigned char*) buffer, blockSize);
   1d796:	28 01       	movw	r4, r16
   1d798:	2f c0       	rjmp	.+94     	; 0x1d7f8 <BootCheckProgramMD5+0xcc>
	MD5Init(&md5ctx);

	while(addr < imageLength)
	{
		uint8_t* ptr = buffer;
		uint16_t blockSize = ((imageLength-addr) > DIM(buffer)) ? DIM(buffer) : ((uint16_t) (imageLength-addr));
   1d79a:	d5 01       	movw	r26, r10
   1d79c:	c4 01       	movw	r24, r8
   1d79e:	8c 19       	sub	r24, r12
   1d7a0:	9d 09       	sbc	r25, r13
   1d7a2:	ae 09       	sbc	r26, r14
   1d7a4:	bf 09       	sbc	r27, r15
   1d7a6:	85 36       	cpi	r24, 0x65	; 101
   1d7a8:	91 05       	cpc	r25, r1
   1d7aa:	a1 05       	cpc	r26, r1
   1d7ac:	b1 05       	cpc	r27, r1
   1d7ae:	18 f0       	brcs	.+6      	; 0x1d7b6 <BootCheckProgramMD5+0x8a>
   1d7b0:	04 e6       	ldi	r16, 0x64	; 100
   1d7b2:	10 e0       	ldi	r17, 0x00	; 0
   1d7b4:	03 c0       	rjmp	.+6      	; 0x1d7bc <BootCheckProgramMD5+0x90>
   1d7b6:	84 01       	movw	r16, r8
   1d7b8:	0c 19       	sub	r16, r12
   1d7ba:	1d 09       	sbc	r17, r13
   1d7bc:	a7 01       	movw	r20, r14
   1d7be:	96 01       	movw	r18, r12
   1d7c0:	b8 01       	movw	r22, r16
   1d7c2:	d3 01       	movw	r26, r6
   1d7c4:	0a c0       	rjmp	.+20     	; 0x1d7da <BootCheckProgramMD5+0xae>
		uint16_t remaining = blockSize;

		while(remaining--)
			*ptr++ = __ELPM(addr++);
   1d7c6:	4b bf       	out	0x3b, r20	; 59
   1d7c8:	f9 01       	movw	r30, r18
   1d7ca:	87 91       	elpm	r24, Z+
   1d7cc:	8d 93       	st	X+, r24
   1d7ce:	61 50       	subi	r22, 0x01	; 1
   1d7d0:	70 40       	sbci	r23, 0x00	; 0
   1d7d2:	2f 5f       	subi	r18, 0xFF	; 255
   1d7d4:	3f 4f       	sbci	r19, 0xFF	; 255
   1d7d6:	4f 4f       	sbci	r20, 0xFF	; 255
   1d7d8:	5f 4f       	sbci	r21, 0xFF	; 255
	{
		uint8_t* ptr = buffer;
		uint16_t blockSize = ((imageLength-addr) > DIM(buffer)) ? DIM(buffer) : ((uint16_t) (imageLength-addr));
		uint16_t remaining = blockSize;

		while(remaining--)
   1d7da:	61 15       	cp	r22, r1
   1d7dc:	71 05       	cpc	r23, r1
   1d7de:	99 f7       	brne	.-26     	; 0x1d7c6 <BootCheckProgramMD5+0x9a>
   1d7e0:	c8 01       	movw	r24, r16
   1d7e2:	a0 e0       	ldi	r26, 0x00	; 0
   1d7e4:	b0 e0       	ldi	r27, 0x00	; 0
   1d7e6:	c8 0e       	add	r12, r24
   1d7e8:	d9 1e       	adc	r13, r25
   1d7ea:	ea 1e       	adc	r14, r26
   1d7ec:	fb 1e       	adc	r15, r27
			*ptr++ = __ELPM(addr++);

		MD5Update(&md5ctx, (unsigned char*) buffer, blockSize);
   1d7ee:	c2 01       	movw	r24, r4
   1d7f0:	b3 01       	movw	r22, r6
   1d7f2:	a8 01       	movw	r20, r16
   1d7f4:	0e 94 9a e9 	call	0x1d334	; 0x1d334 <MD5Update>
	uint8_t buffer[100];				// buffer to assemble for MD5

	// get the MD5 of the program space
	MD5Init(&md5ctx);

	while(addr < imageLength)
   1d7f8:	c8 14       	cp	r12, r8
   1d7fa:	d9 04       	cpc	r13, r9
   1d7fc:	ea 04       	cpc	r14, r10
   1d7fe:	fb 04       	cpc	r15, r11
   1d800:	60 f2       	brcs	.-104    	; 0x1d79a <BootCheckProgramMD5+0x6e>

		MD5Update(&md5ctx, (unsigned char*) buffer, blockSize);
	}
	
	// finalizes the MD5 calculation
	MD5Final(&md5ctx);
   1d802:	ce 01       	movw	r24, r28
   1d804:	8b 59       	subi	r24, 0x9B	; 155
   1d806:	9f 4f       	sbci	r25, 0xFF	; 255
   1d808:	0e 94 61 ea 	call	0x1d4c2	; 0x1d4c2 <MD5Final>

	// save a copy of the MD5 to the output location
	memcpy(pCalculatedMD5, md5ctx.digest, sizeof(md5ctx.digest));
   1d80c:	c3 53       	subi	r28, 0x33	; 51
   1d80e:	df 4f       	sbci	r29, 0xFF	; 255
   1d810:	88 81       	ld	r24, Y
   1d812:	cd 5c       	subi	r28, 0xCD	; 205
   1d814:	d0 40       	sbci	r29, 0x00	; 0
   1d816:	c2 53       	subi	r28, 0x32	; 50
   1d818:	df 4f       	sbci	r29, 0xFF	; 255
   1d81a:	98 81       	ld	r25, Y
   1d81c:	ce 5c       	subi	r28, 0xCE	; 206
   1d81e:	d0 40       	sbci	r29, 0x00	; 0
   1d820:	9c 01       	movw	r18, r24
   1d822:	d9 01       	movw	r26, r18
   1d824:	fe 01       	movw	r30, r28
   1d826:	e3 54       	subi	r30, 0x43	; 67
   1d828:	ff 4f       	sbci	r31, 0xFF	; 255
   1d82a:	80 e1       	ldi	r24, 0x10	; 16
   1d82c:	01 90       	ld	r0, Z+
   1d82e:	0d 92       	st	X+, r0
   1d830:	81 50       	subi	r24, 0x01	; 1
   1d832:	e1 f7       	brne	.-8      	; 0x1d82c <BootCheckProgramMD5+0x100>

	// fail in the case of invalid CRC
	BOOL success = FALSE;

	if (!memcmp(pExpectedMD5, pCalculatedMD5, sizeof(md5ctx.digest)))
   1d834:	c1 01       	movw	r24, r2
   1d836:	c3 53       	subi	r28, 0x33	; 51
   1d838:	df 4f       	sbci	r29, 0xFF	; 255
   1d83a:	68 81       	ld	r22, Y
   1d83c:	cd 5c       	subi	r28, 0xCD	; 205
   1d83e:	d0 40       	sbci	r29, 0x00	; 0
   1d840:	c2 53       	subi	r28, 0x32	; 50
   1d842:	df 4f       	sbci	r29, 0xFF	; 255
   1d844:	78 81       	ld	r23, Y
   1d846:	ce 5c       	subi	r28, 0xCE	; 206
   1d848:	d0 40       	sbci	r29, 0x00	; 0
   1d84a:	40 e1       	ldi	r20, 0x10	; 16
   1d84c:	50 e0       	ldi	r21, 0x00	; 0
   1d84e:	0e 94 0f f0 	call	0x1e01e	; 0x1e01e <memcmp>
   1d852:	9c 01       	movw	r18, r24
   1d854:	80 e0       	ldi	r24, 0x00	; 0
   1d856:	23 2b       	or	r18, r19
   1d858:	09 f4       	brne	.+2      	; 0x1d85c <BootCheckProgramMD5+0x130>
   1d85a:	81 e0       	ldi	r24, 0x01	; 1
		success = TRUE;

	// true if the digest matches, false if it's different
	return success;
}
   1d85c:	c2 53       	subi	r28, 0x32	; 50
   1d85e:	df 4f       	sbci	r29, 0xFF	; 255
   1d860:	0f b6       	in	r0, 0x3f	; 63
   1d862:	f8 94       	cli
   1d864:	de bf       	out	0x3e, r29	; 62
   1d866:	0f be       	out	0x3f, r0	; 63
   1d868:	cd bf       	out	0x3d, r28	; 61
   1d86a:	cf 91       	pop	r28
   1d86c:	df 91       	pop	r29
   1d86e:	1f 91       	pop	r17
   1d870:	0f 91       	pop	r16
   1d872:	ff 90       	pop	r15
   1d874:	ef 90       	pop	r14
   1d876:	df 90       	pop	r13
   1d878:	cf 90       	pop	r12
   1d87a:	bf 90       	pop	r11
   1d87c:	af 90       	pop	r10
   1d87e:	9f 90       	pop	r9
   1d880:	8f 90       	pop	r8
   1d882:	7f 90       	pop	r7
   1d884:	6f 90       	pop	r6
   1d886:	5f 90       	pop	r5
   1d888:	4f 90       	pop	r4
   1d88a:	3f 90       	pop	r3
   1d88c:	2f 90       	pop	r2
   1d88e:	08 95       	ret

0001d890 <BootCheckProgramImage>:
// configuration at startup
//
// ---------------------------------------------

void BootCheckProgramImage()
{
   1d890:	1f 93       	push	r17
#ifndef OMIT_BOOT_CHECKING

    // pull a character from the buffer atomically (if the buffer is not empty)
	OS_CPU_SR cpu_sr;
	OS_ENTER_CRITICAL();
   1d892:	9f b7       	in	r25, 0x3f	; 63
   1d894:	f8 94       	cli

	//uint8_t lowFuse = boot_lock_fuse_bits_get(GET_LOW_FUSE_BITS);
	uint8_t highFuse = boot_lock_fuse_bits_get(GET_HIGH_FUSE_BITS);
   1d896:	89 e0       	ldi	r24, 0x09	; 9
   1d898:	e3 e0       	ldi	r30, 0x03	; 3
   1d89a:	f0 e0       	ldi	r31, 0x00	; 0
   1d89c:	80 93 57 00 	sts	0x0057, r24
   1d8a0:	84 91       	lpm	r24, Z+
	//uint8_t extFuse = boot_lock_fuse_bits_get(GET_EXTENDED_FUSE_BITS);
	//uint8_t lockBits = boot_lock_fuse_bits_get(GET_LOCK_BITS);

	OS_EXIT_CRITICAL();
   1d8a2:	9f bf       	out	0x3f, r25	; 63


	// skip this if the boot loader is disabled, otherwise, we will just
	// keep rebooting
	if (highFuse & 1)
   1d8a4:	80 fd       	sbrc	r24, 0
   1d8a6:	31 c0       	rjmp	.+98     	; 0x1d90a <BootCheckProgramImage+0x7a>
		return;


	// read the image from the EEPROM
	corrupt = !ReadBootEEPROM(&bootVars);
   1d8a8:	85 e5       	ldi	r24, 0x55	; 85
   1d8aa:	98 ee       	ldi	r25, 0xE8	; 232
   1d8ac:	0e 94 d2 ec 	call	0x1d9a4	; 0x1d9a4 <ReadBootEEPROM>
   1d8b0:	20 e0       	ldi	r18, 0x00	; 0
   1d8b2:	89 2b       	or	r24, r25
   1d8b4:	09 f4       	brne	.+2      	; 0x1d8b8 <BootCheckProgramImage+0x28>
   1d8b6:	21 e0       	ldi	r18, 0x01	; 1
   1d8b8:	20 93 7b 05 	sts	0x057B, r18

	BOOL success = FALSE;
	uint8_t failStep = 0;

	if (++failStep, !corrupt)
   1d8bc:	22 23       	and	r18, r18
   1d8be:	11 f5       	brne	.+68     	; 0x1d904 <BootCheckProgramImage+0x74>
	if (++failStep, bootVars.selectedImage.imageLength)
   1d8c0:	60 91 62 e8 	lds	r22, 0xE862
   1d8c4:	70 91 63 e8 	lds	r23, 0xE863
   1d8c8:	80 91 64 e8 	lds	r24, 0xE864
   1d8cc:	90 91 65 e8 	lds	r25, 0xE865
   1d8d0:	61 15       	cp	r22, r1
   1d8d2:	71 05       	cpc	r23, r1
   1d8d4:	81 05       	cpc	r24, r1
   1d8d6:	91 05       	cpc	r25, r1
   1d8d8:	a9 f0       	breq	.+42     	; 0x1d904 <BootCheckProgramImage+0x74>
	if (++failStep, bootVars.selectedImage.imageLength <= 0x3E000L)
   1d8da:	61 30       	cpi	r22, 0x01	; 1
   1d8dc:	20 ee       	ldi	r18, 0xE0	; 224
   1d8de:	72 07       	cpc	r23, r18
   1d8e0:	23 e0       	ldi	r18, 0x03	; 3
   1d8e2:	82 07       	cpc	r24, r18
   1d8e4:	20 e0       	ldi	r18, 0x00	; 0
   1d8e6:	92 07       	cpc	r25, r18
   1d8e8:	68 f4       	brcc	.+26     	; 0x1d904 <BootCheckProgramImage+0x74>
	{
		++failStep;
		success = BootCheckProgramMD5(bootVars.selectedImage.imageLength, bootVars.selectedImage.imageMD5,
   1d8ea:	48 e6       	ldi	r20, 0x68	; 104
   1d8ec:	58 ee       	ldi	r21, 0xE8	; 232
   1d8ee:	2b e8       	ldi	r18, 0x8B	; 139
   1d8f0:	38 ee       	ldi	r19, 0xE8	; 232
   1d8f2:	0e 94 96 eb 	call	0x1d72c	; 0x1d72c <BootCheckProgramMD5>
   1d8f6:	18 2f       	mov	r17, r24
						bootVars.fallbackImage.imageMD5);
		WriteBootEEPROM(&bootVars);
   1d8f8:	85 e5       	ldi	r24, 0x55	; 85
   1d8fa:	98 ee       	ldi	r25, 0xE8	; 232
   1d8fc:	0e 94 6d ed 	call	0x1dada	; 0x1dada <WriteBootEEPROM>
	}

	if (!success)
   1d900:	11 23       	and	r17, r17
   1d902:	19 f4       	brne	.+6      	; 0x1d90a <BootCheckProgramImage+0x7a>
		BootRestart(TRUE);
   1d904:	81 e0       	ldi	r24, 0x01	; 1
   1d906:	0e 94 58 eb 	call	0x1d6b0	; 0x1d6b0 <BootRestart>
#endif
}
   1d90a:	1f 91       	pop	r17
   1d90c:	08 95       	ret

0001d90e <ComputeCRC>:
// Computes the CRC for the given local copy of the EEPROM
//
// ------------------------------------------------------------------------------

uint16_t ComputeCRC(BOOT_EEPROM* pEEPROM)
{
   1d90e:	bc 01       	movw	r22, r24
//
// ------------------------------------------------------------------------------

static uint16_t UpdateCRC(void* pStart, uint16_t size, uint16_t initCRC)
{
	uint8_t* ptr = (uint8_t*) pStart;
   1d910:	fc 01       	movw	r30, r24
   1d912:	40 e0       	ldi	r20, 0x00	; 0
   1d914:	50 e0       	ldi	r21, 0x00	; 0
   1d916:	28 e4       	ldi	r18, 0x48	; 72
   1d918:	30 e0       	ldi	r19, 0x00	; 0
   1d91a:	18 c0       	rjmp	.+48     	; 0x1d94c <ComputeCRC+0x3e>
	uint16_t crc = initCRC;

	while(size--)
		crc = _crc16_update(crc, *ptr++);
   1d91c:	81 91       	ld	r24, Z+
   1d91e:	48 27       	eor	r20, r24
   1d920:	84 2f       	mov	r24, r20
   1d922:	82 95       	swap	r24
   1d924:	84 27       	eor	r24, r20
   1d926:	08 2e       	mov	r0, r24
   1d928:	86 95       	lsr	r24
   1d92a:	86 95       	lsr	r24
   1d92c:	80 25       	eor	r24, r0
   1d92e:	08 2e       	mov	r0, r24
   1d930:	86 95       	lsr	r24
   1d932:	80 25       	eor	r24, r0
   1d934:	87 70       	andi	r24, 0x07	; 7
   1d936:	04 2e       	mov	r0, r20
   1d938:	45 2f       	mov	r20, r21
   1d93a:	86 95       	lsr	r24
   1d93c:	07 94       	ror	r0
   1d93e:	87 95       	ror	r24
   1d940:	50 2d       	mov	r21, r0
   1d942:	48 27       	eor	r20, r24
   1d944:	06 94       	lsr	r0
   1d946:	87 95       	ror	r24
   1d948:	50 25       	eor	r21, r0
   1d94a:	48 27       	eor	r20, r24
static uint16_t UpdateCRC(void* pStart, uint16_t size, uint16_t initCRC)
{
	uint8_t* ptr = (uint8_t*) pStart;
	uint16_t crc = initCRC;

	while(size--)
   1d94c:	21 50       	subi	r18, 0x01	; 1
   1d94e:	30 40       	sbci	r19, 0x00	; 0
   1d950:	8f ef       	ldi	r24, 0xFF	; 255
   1d952:	2f 3f       	cpi	r18, 0xFF	; 255
   1d954:	38 07       	cpc	r19, r24
   1d956:	11 f7       	brne	.-60     	; 0x1d91c <ComputeCRC+0xe>
//
// ------------------------------------------------------------------------------

static uint16_t UpdateCRC(void* pStart, uint16_t size, uint16_t initCRC)
{
	uint8_t* ptr = (uint8_t*) pStart;
   1d958:	fb 01       	movw	r30, r22
   1d95a:	e8 5b       	subi	r30, 0xB8	; 184
   1d95c:	ff 4f       	sbci	r31, 0xFF	; 255
   1d95e:	26 e3       	ldi	r18, 0x36	; 54
   1d960:	30 e0       	ldi	r19, 0x00	; 0
   1d962:	18 c0       	rjmp	.+48     	; 0x1d994 <ComputeCRC+0x86>
	uint16_t crc = initCRC;

	while(size--)
		crc = _crc16_update(crc, *ptr++);
   1d964:	81 91       	ld	r24, Z+
   1d966:	48 27       	eor	r20, r24
   1d968:	84 2f       	mov	r24, r20
   1d96a:	82 95       	swap	r24
   1d96c:	84 27       	eor	r24, r20
   1d96e:	08 2e       	mov	r0, r24
   1d970:	86 95       	lsr	r24
   1d972:	86 95       	lsr	r24
   1d974:	80 25       	eor	r24, r0
   1d976:	08 2e       	mov	r0, r24
   1d978:	86 95       	lsr	r24
   1d97a:	80 25       	eor	r24, r0
   1d97c:	87 70       	andi	r24, 0x07	; 7
   1d97e:	04 2e       	mov	r0, r20
   1d980:	45 2f       	mov	r20, r21
   1d982:	86 95       	lsr	r24
   1d984:	07 94       	ror	r0
   1d986:	87 95       	ror	r24
   1d988:	50 2d       	mov	r21, r0
   1d98a:	48 27       	eor	r20, r24
   1d98c:	06 94       	lsr	r0
   1d98e:	87 95       	ror	r24
   1d990:	50 25       	eor	r21, r0
   1d992:	48 27       	eor	r20, r24
static uint16_t UpdateCRC(void* pStart, uint16_t size, uint16_t initCRC)
{
	uint8_t* ptr = (uint8_t*) pStart;
	uint16_t crc = initCRC;

	while(size--)
   1d994:	21 50       	subi	r18, 0x01	; 1
   1d996:	30 40       	sbci	r19, 0x00	; 0
   1d998:	8f ef       	ldi	r24, 0xFF	; 255
   1d99a:	2f 3f       	cpi	r18, 0xFF	; 255
   1d99c:	38 07       	cpc	r19, r24
   1d99e:	11 f7       	brne	.-60     	; 0x1d964 <ComputeCRC+0x56>
{
	uint16_t crc = UpdateCRC(&pEEPROM->bootVars, sizeof(pEEPROM->bootVars), 0);

	crc = UpdateCRC(pEEPROM->space, sizeof(pEEPROM->space), crc);
	return crc;
}
   1d9a0:	ca 01       	movw	r24, r20
   1d9a2:	08 95       	ret

0001d9a4 <ReadBootEEPROM>:
// provided and returns TRUE if a valid copy was found (FALSE If no valid copy)
//
// ------------------------------------------------------------------------------

int ReadBootEEPROM(BOOT_EEPROM_VARS* pVars)
{
   1d9a4:	cf 92       	push	r12
   1d9a6:	df 92       	push	r13
   1d9a8:	ef 92       	push	r14
   1d9aa:	ff 92       	push	r15
   1d9ac:	0f 93       	push	r16
   1d9ae:	1f 93       	push	r17
   1d9b0:	df 93       	push	r29
   1d9b2:	cf 93       	push	r28
   1d9b4:	cd b7       	in	r28, 0x3d	; 61
   1d9b6:	de b7       	in	r29, 0x3e	; 62
   1d9b8:	c0 58       	subi	r28, 0x80	; 128
   1d9ba:	d0 40       	sbci	r29, 0x00	; 0
   1d9bc:	0f b6       	in	r0, 0x3f	; 63
   1d9be:	f8 94       	cli
   1d9c0:	de bf       	out	0x3e, r29	; 62
   1d9c2:	0f be       	out	0x3f, r0	; 63
   1d9c4:	cd bf       	out	0x3d, r28	; 61
   1d9c6:	d8 2e       	mov	r13, r24
   1d9c8:	c9 2e       	mov	r12, r25
   1d9ca:	40 e0       	ldi	r20, 0x00	; 0
   1d9cc:	50 e0       	ldi	r21, 0x00	; 0
	for (idx = 0; !validCRC && (idx < 2); ++idx)
	{
#ifdef EXPAND_RAW_BOOT_FUNCTIONS
		ReadRawBootEEPROM(idx, &eepromCopy);
#else
		eeprom_busy_wait();
   1d9ce:	de 01       	movw	r26, r28
   1d9d0:	11 96       	adiw	r26, 0x01	; 1
{
#if (! (defined(__AVR_ATmega2560__) || defined(__AVR_ATmega2561__)) )
    __eerd_block (__dst, __src, __n, eeprom_read_byte);
#else
    /* If ATmega256x device, do not call function. */
    while (__n--)
   1d9d2:	81 e8       	ldi	r24, 0x81	; 129
   1d9d4:	e8 2e       	mov	r14, r24
   1d9d6:	f1 2c       	mov	r15, r1
   1d9d8:	ec 0e       	add	r14, r28
   1d9da:	fd 1e       	adc	r15, r29
static uint16_t UpdateCRC(void* pStart, uint16_t size, uint16_t initCRC)
{
	uint8_t* ptr = (uint8_t*) pStart;
	uint16_t crc = initCRC;

	while(size--)
   1d9dc:	be 01       	movw	r22, r28
   1d9de:	67 5b       	subi	r22, 0xB7	; 183
   1d9e0:	7f 4f       	sbci	r23, 0xFF	; 255
	for (idx = 0; !validCRC && (idx < 2); ++idx)
	{
#ifdef EXPAND_RAW_BOOT_FUNCTIONS
		ReadRawBootEEPROM(idx, &eepromCopy);
#else
		eeprom_busy_wait();
   1d9e2:	8e 01       	movw	r16, r28
   1d9e4:	01 58       	subi	r16, 0x81	; 129
   1d9e6:	1f 4f       	sbci	r17, 0xFF	; 255
   1d9e8:	f9 99       	sbic	0x1f, 1	; 31
   1d9ea:	fe cf       	rjmp	.-4      	; 0x1d9e8 <ReadBootEEPROM+0x44>
   1d9ec:	9a 01       	movw	r18, r20
   1d9ee:	fd 01       	movw	r30, r26
   1d9f0:	09 c0       	rjmp	.+18     	; 0x1da04 <ReadBootEEPROM+0x60>
/** \ingroup avr_eeprom
    Read one byte from EEPROM address \a __p.
 */
__ATTR_PURE__ static __inline__ uint8_t eeprom_read_byte (const uint8_t *__p)
{
    do {} while (!eeprom_is_ready ());
   1d9f2:	f9 99       	sbic	0x1f, 1	; 31
   1d9f4:	fe cf       	rjmp	.-4      	; 0x1d9f2 <ReadBootEEPROM+0x4e>
#if E2END <= 0xFF
    EEARL = (size_t)__p;
#else
    EEAR = (size_t)__p;
   1d9f6:	32 bd       	out	0x22, r19	; 34
   1d9f8:	21 bd       	out	0x21, r18	; 33
    /* Use inline assembly below as some AVRs have problems with accessing
    EECR with STS instructions. For example, see errata for ATmega64. 
    The code below also assumes that EECR and EEDR are in the I/O space.
    */
    uint8_t __result;
    __asm__ __volatile__
   1d9fa:	f8 9a       	sbi	0x1f, 0	; 31
   1d9fc:	80 b5       	in	r24, 0x20	; 32
    __eerd_block (__dst, __src, __n, eeprom_read_byte);
#else
    /* If ATmega256x device, do not call function. */
    while (__n--)
    {
        *(char *)__dst++ = eeprom_read_byte(__src++);
   1d9fe:	81 93       	st	Z+, r24
   1da00:	2f 5f       	subi	r18, 0xFF	; 255
   1da02:	3f 4f       	sbci	r19, 0xFF	; 255
{
#if (! (defined(__AVR_ATmega2560__) || defined(__AVR_ATmega2561__)) )
    __eerd_block (__dst, __src, __n, eeprom_read_byte);
#else
    /* If ATmega256x device, do not call function. */
    while (__n--)
   1da04:	ee 15       	cp	r30, r14
   1da06:	ff 05       	cpc	r31, r15
   1da08:	a1 f7       	brne	.-24     	; 0x1d9f2 <ReadBootEEPROM+0x4e>
   1da0a:	fd 01       	movw	r30, r26
   1da0c:	20 e0       	ldi	r18, 0x00	; 0
   1da0e:	30 e0       	ldi	r19, 0x00	; 0
{
	uint8_t* ptr = (uint8_t*) pStart;
	uint16_t crc = initCRC;

	while(size--)
		crc = _crc16_update(crc, *ptr++);
   1da10:	81 91       	ld	r24, Z+
   1da12:	28 27       	eor	r18, r24
   1da14:	82 2f       	mov	r24, r18
   1da16:	82 95       	swap	r24
   1da18:	82 27       	eor	r24, r18
   1da1a:	08 2e       	mov	r0, r24
   1da1c:	86 95       	lsr	r24
   1da1e:	86 95       	lsr	r24
   1da20:	80 25       	eor	r24, r0
   1da22:	08 2e       	mov	r0, r24
   1da24:	86 95       	lsr	r24
   1da26:	80 25       	eor	r24, r0
   1da28:	87 70       	andi	r24, 0x07	; 7
   1da2a:	02 2e       	mov	r0, r18
   1da2c:	23 2f       	mov	r18, r19
   1da2e:	86 95       	lsr	r24
   1da30:	07 94       	ror	r0
   1da32:	87 95       	ror	r24
   1da34:	30 2d       	mov	r19, r0
   1da36:	28 27       	eor	r18, r24
   1da38:	06 94       	lsr	r0
   1da3a:	87 95       	ror	r24
   1da3c:	30 25       	eor	r19, r0
   1da3e:	28 27       	eor	r18, r24
static uint16_t UpdateCRC(void* pStart, uint16_t size, uint16_t initCRC)
{
	uint8_t* ptr = (uint8_t*) pStart;
	uint16_t crc = initCRC;

	while(size--)
   1da40:	e6 17       	cp	r30, r22
   1da42:	f7 07       	cpc	r31, r23
   1da44:	29 f7       	brne	.-54     	; 0x1da10 <ReadBootEEPROM+0x6c>
   1da46:	fb 01       	movw	r30, r22
   1da48:	18 c0       	rjmp	.+48     	; 0x1da7a <ReadBootEEPROM+0xd6>
		crc = _crc16_update(crc, *ptr++);
   1da4a:	81 91       	ld	r24, Z+
   1da4c:	28 27       	eor	r18, r24
   1da4e:	82 2f       	mov	r24, r18
   1da50:	82 95       	swap	r24
   1da52:	82 27       	eor	r24, r18
   1da54:	08 2e       	mov	r0, r24
   1da56:	86 95       	lsr	r24
   1da58:	86 95       	lsr	r24
   1da5a:	80 25       	eor	r24, r0
   1da5c:	08 2e       	mov	r0, r24
   1da5e:	86 95       	lsr	r24
   1da60:	80 25       	eor	r24, r0
   1da62:	87 70       	andi	r24, 0x07	; 7
   1da64:	02 2e       	mov	r0, r18
   1da66:	23 2f       	mov	r18, r19
   1da68:	86 95       	lsr	r24
   1da6a:	07 94       	ror	r0
   1da6c:	87 95       	ror	r24
   1da6e:	30 2d       	mov	r19, r0
   1da70:	28 27       	eor	r18, r24
   1da72:	06 94       	lsr	r0
   1da74:	87 95       	ror	r24
   1da76:	30 25       	eor	r19, r0
   1da78:	28 27       	eor	r18, r24
static uint16_t UpdateCRC(void* pStart, uint16_t size, uint16_t initCRC)
{
	uint8_t* ptr = (uint8_t*) pStart;
	uint16_t crc = initCRC;

	while(size--)
   1da7a:	e0 17       	cp	r30, r16
   1da7c:	f1 07       	cpc	r31, r17
   1da7e:	29 f7       	brne	.-54     	; 0x1da4a <ReadBootEEPROM+0xa6>
	uint8_t idx;
	int validCRC = FALSE;
	BOOT_EEPROM eepromCopy;


	for (idx = 0; !validCRC && (idx < 2); ++idx)
   1da80:	80 81       	ld	r24, Z
   1da82:	91 81       	ldd	r25, Z+1	; 0x01
   1da84:	28 17       	cp	r18, r24
   1da86:	39 07       	cpc	r19, r25
   1da88:	51 f0       	breq	.+20     	; 0x1da9e <ReadBootEEPROM+0xfa>
   1da8a:	40 58       	subi	r20, 0x80	; 128
   1da8c:	5f 4f       	sbci	r21, 0xFF	; 255
   1da8e:	81 e0       	ldi	r24, 0x01	; 1
   1da90:	40 30       	cpi	r20, 0x00	; 0
   1da92:	58 07       	cpc	r21, r24
   1da94:	09 f0       	breq	.+2      	; 0x1da98 <ReadBootEEPROM+0xf4>
   1da96:	a8 cf       	rjmp	.-176    	; 0x1d9e8 <ReadBootEEPROM+0x44>
   1da98:	20 e0       	ldi	r18, 0x00	; 0
   1da9a:	30 e0       	ldi	r19, 0x00	; 0
   1da9c:	0d c0       	rjmp	.+26     	; 0x1dab8 <ReadBootEEPROM+0x114>
		validCRC = (ComputeCRC(&eepromCopy) == eepromCopy.crc);
	}

	if (validCRC)
	{
		memcpy(pVars, &eepromCopy.bootVars, sizeof(*pVars));
   1da9e:	8d 2d       	mov	r24, r13
   1daa0:	9c 2d       	mov	r25, r12
   1daa2:	9c 01       	movw	r18, r24
   1daa4:	d9 01       	movw	r26, r18
   1daa6:	fe 01       	movw	r30, r28
   1daa8:	31 96       	adiw	r30, 0x01	; 1
   1daaa:	88 e4       	ldi	r24, 0x48	; 72
   1daac:	01 90       	ld	r0, Z+
   1daae:	0d 92       	st	X+, r0
   1dab0:	81 50       	subi	r24, 0x01	; 1
   1dab2:	e1 f7       	brne	.-8      	; 0x1daac <ReadBootEEPROM+0x108>
   1dab4:	21 e0       	ldi	r18, 0x01	; 1
   1dab6:	30 e0       	ldi	r19, 0x00	; 0
		return TRUE;
	}
	else
		return FALSE;
}
   1dab8:	c9 01       	movw	r24, r18
   1daba:	c0 58       	subi	r28, 0x80	; 128
   1dabc:	df 4f       	sbci	r29, 0xFF	; 255
   1dabe:	0f b6       	in	r0, 0x3f	; 63
   1dac0:	f8 94       	cli
   1dac2:	de bf       	out	0x3e, r29	; 62
   1dac4:	0f be       	out	0x3f, r0	; 63
   1dac6:	cd bf       	out	0x3d, r28	; 61
   1dac8:	cf 91       	pop	r28
   1daca:	df 91       	pop	r29
   1dacc:	1f 91       	pop	r17
   1dace:	0f 91       	pop	r16
   1dad0:	ff 90       	pop	r15
   1dad2:	ef 90       	pop	r14
   1dad4:	df 90       	pop	r13
   1dad6:	cf 90       	pop	r12
   1dad8:	08 95       	ret

0001dada <WriteBootEEPROM>:
// crc
//
// ------------------------------------------------------------------------------

void WriteBootEEPROM(BOOT_EEPROM_VARS* pVars)
{
   1dada:	af 92       	push	r10
   1dadc:	bf 92       	push	r11
   1dade:	cf 92       	push	r12
   1dae0:	df 92       	push	r13
   1dae2:	ef 92       	push	r14
   1dae4:	ff 92       	push	r15
   1dae6:	0f 93       	push	r16
   1dae8:	1f 93       	push	r17
   1daea:	df 93       	push	r29
   1daec:	cf 93       	push	r28
   1daee:	cd b7       	in	r28, 0x3d	; 61
   1daf0:	de b7       	in	r29, 0x3e	; 62
   1daf2:	c0 50       	subi	r28, 0x00	; 0
   1daf4:	d1 40       	sbci	r29, 0x01	; 1
   1daf6:	0f b6       	in	r0, 0x3f	; 63
   1daf8:	f8 94       	cli
   1dafa:	de bf       	out	0x3e, r29	; 62
   1dafc:	0f be       	out	0x3f, r0	; 63
   1dafe:	cd bf       	out	0x3d, r28	; 61
	uint8_t idx;
	BOOT_EEPROM eepromCopy;

	memcpy(&eepromCopy.bootVars, pVars, sizeof(eepromCopy.bootVars));
   1db00:	de 01       	movw	r26, r28
   1db02:	11 96       	adiw	r26, 0x01	; 1
   1db04:	fc 01       	movw	r30, r24
   1db06:	88 e4       	ldi	r24, 0x48	; 72
   1db08:	01 90       	ld	r0, Z+
   1db0a:	0d 92       	st	X+, r0
   1db0c:	81 50       	subi	r24, 0x01	; 1
   1db0e:	e1 f7       	brne	.-8      	; 0x1db08 <WriteBootEEPROM+0x2e>
	memset(eepromCopy.space, '\xFF', sizeof(eepromCopy.space));
   1db10:	8e 01       	movw	r16, r28
   1db12:	07 5b       	subi	r16, 0xB7	; 183
   1db14:	1f 4f       	sbci	r17, 0xFF	; 255
   1db16:	c8 01       	movw	r24, r16
   1db18:	6f ef       	ldi	r22, 0xFF	; 255
   1db1a:	70 e0       	ldi	r23, 0x00	; 0
   1db1c:	46 e3       	ldi	r20, 0x36	; 54
   1db1e:	50 e0       	ldi	r21, 0x00	; 0
   1db20:	0e 94 25 f0 	call	0x1e04a	; 0x1e04a <memset>
   1db24:	fe 01       	movw	r30, r28
   1db26:	31 96       	adiw	r30, 0x01	; 1
   1db28:	20 e0       	ldi	r18, 0x00	; 0
   1db2a:	30 e0       	ldi	r19, 0x00	; 0
{
	uint8_t* ptr = (uint8_t*) pStart;
	uint16_t crc = initCRC;

	while(size--)
		crc = _crc16_update(crc, *ptr++);
   1db2c:	81 91       	ld	r24, Z+
   1db2e:	28 27       	eor	r18, r24
   1db30:	82 2f       	mov	r24, r18
   1db32:	82 95       	swap	r24
   1db34:	82 27       	eor	r24, r18
   1db36:	08 2e       	mov	r0, r24
   1db38:	86 95       	lsr	r24
   1db3a:	86 95       	lsr	r24
   1db3c:	80 25       	eor	r24, r0
   1db3e:	08 2e       	mov	r0, r24
   1db40:	86 95       	lsr	r24
   1db42:	80 25       	eor	r24, r0
   1db44:	87 70       	andi	r24, 0x07	; 7
   1db46:	02 2e       	mov	r0, r18
   1db48:	23 2f       	mov	r18, r19
   1db4a:	86 95       	lsr	r24
   1db4c:	07 94       	ror	r0
   1db4e:	87 95       	ror	r24
   1db50:	30 2d       	mov	r19, r0
   1db52:	28 27       	eor	r18, r24
   1db54:	06 94       	lsr	r0
   1db56:	87 95       	ror	r24
   1db58:	30 25       	eor	r19, r0
   1db5a:	28 27       	eor	r18, r24
static uint16_t UpdateCRC(void* pStart, uint16_t size, uint16_t initCRC)
{
	uint8_t* ptr = (uint8_t*) pStart;
	uint16_t crc = initCRC;

	while(size--)
   1db5c:	e0 17       	cp	r30, r16
   1db5e:	f1 07       	cpc	r31, r17
   1db60:	29 f7       	brne	.-54     	; 0x1db2c <WriteBootEEPROM+0x52>
		crc = _crc16_update(crc, *ptr++);
   1db62:	ae 01       	movw	r20, r28
   1db64:	41 58       	subi	r20, 0x81	; 129
   1db66:	5f 4f       	sbci	r21, 0xFF	; 255
   1db68:	18 c0       	rjmp	.+48     	; 0x1db9a <WriteBootEEPROM+0xc0>
   1db6a:	81 91       	ld	r24, Z+
   1db6c:	28 27       	eor	r18, r24
   1db6e:	82 2f       	mov	r24, r18
   1db70:	82 95       	swap	r24
   1db72:	82 27       	eor	r24, r18
   1db74:	08 2e       	mov	r0, r24
   1db76:	86 95       	lsr	r24
   1db78:	86 95       	lsr	r24
   1db7a:	80 25       	eor	r24, r0
   1db7c:	08 2e       	mov	r0, r24
   1db7e:	86 95       	lsr	r24
   1db80:	80 25       	eor	r24, r0
   1db82:	87 70       	andi	r24, 0x07	; 7
   1db84:	02 2e       	mov	r0, r18
   1db86:	23 2f       	mov	r18, r19
   1db88:	86 95       	lsr	r24
   1db8a:	07 94       	ror	r0
   1db8c:	87 95       	ror	r24
   1db8e:	30 2d       	mov	r19, r0
   1db90:	28 27       	eor	r18, r24
   1db92:	06 94       	lsr	r0
   1db94:	87 95       	ror	r24
   1db96:	30 25       	eor	r19, r0
   1db98:	28 27       	eor	r18, r24
static uint16_t UpdateCRC(void* pStart, uint16_t size, uint16_t initCRC)
{
	uint8_t* ptr = (uint8_t*) pStart;
	uint16_t crc = initCRC;

	while(size--)
   1db9a:	e4 17       	cp	r30, r20
   1db9c:	f5 07       	cpc	r31, r21
   1db9e:	29 f7       	brne	.-54     	; 0x1db6a <WriteBootEEPROM+0x90>
	uint8_t idx;
	BOOT_EEPROM eepromCopy;

	memcpy(&eepromCopy.bootVars, pVars, sizeof(eepromCopy.bootVars));
	memset(eepromCopy.space, '\xFF', sizeof(eepromCopy.space));
	eepromCopy.crc = ComputeCRC(&eepromCopy);
   1dba0:	31 83       	std	Z+1, r19	; 0x01
   1dba2:	20 83       	st	Z, r18
   1dba4:	00 e0       	ldi	r16, 0x00	; 0
   1dba6:	10 e0       	ldi	r17, 0x00	; 0
	BOOT_EEPROM eepromCopy;

#ifdef EXPAND_RAW_BOOT_FUNCTIONS
	ReadRawBootEEPROM(idx, &eepromCopy);
#else
	eeprom_busy_wait();
   1dba8:	21 e8       	ldi	r18, 0x81	; 129
   1dbaa:	e2 2e       	mov	r14, r18
   1dbac:	f1 2c       	mov	r15, r1
   1dbae:	ec 0e       	add	r14, r28
   1dbb0:	fd 1e       	adc	r15, r29
   1dbb2:	91 e0       	ldi	r25, 0x01	; 1
   1dbb4:	a9 2e       	mov	r10, r25
   1dbb6:	b9 2e       	mov	r11, r25
   1dbb8:	ac 0e       	add	r10, r28
   1dbba:	bd 1e       	adc	r11, r29
	eeprom_read_block(&eepromCopy, &BOOT_VARS(idx), sizeof(eepromCopy));
#endif

	return (memcmp(&eepromCopy, pEEPROM, sizeof(eepromCopy)) == 0);
   1dbbc:	6e 01       	movw	r12, r28
   1dbbe:	08 94       	sec
   1dbc0:	c1 1c       	adc	r12, r1
   1dbc2:	d1 1c       	adc	r13, r1
	BOOT_EEPROM eepromCopy;

#ifdef EXPAND_RAW_BOOT_FUNCTIONS
	ReadRawBootEEPROM(idx, &eepromCopy);
#else
	eeprom_busy_wait();
   1dbc4:	f9 99       	sbic	0x1f, 1	; 31
   1dbc6:	fe cf       	rjmp	.-4      	; 0x1dbc4 <WriteBootEEPROM+0xea>
   1dbc8:	98 01       	movw	r18, r16
   1dbca:	f7 01       	movw	r30, r14
   1dbcc:	09 c0       	rjmp	.+18     	; 0x1dbe0 <WriteBootEEPROM+0x106>
/** \ingroup avr_eeprom
    Read one byte from EEPROM address \a __p.
 */
__ATTR_PURE__ static __inline__ uint8_t eeprom_read_byte (const uint8_t *__p)
{
    do {} while (!eeprom_is_ready ());
   1dbce:	f9 99       	sbic	0x1f, 1	; 31
   1dbd0:	fe cf       	rjmp	.-4      	; 0x1dbce <WriteBootEEPROM+0xf4>
#if E2END <= 0xFF
    EEARL = (size_t)__p;
#else
    EEAR = (size_t)__p;
   1dbd2:	32 bd       	out	0x22, r19	; 34
   1dbd4:	21 bd       	out	0x21, r18	; 33
    /* Use inline assembly below as some AVRs have problems with accessing
    EECR with STS instructions. For example, see errata for ATmega64. 
    The code below also assumes that EECR and EEDR are in the I/O space.
    */
    uint8_t __result;
    __asm__ __volatile__
   1dbd6:	f8 9a       	sbi	0x1f, 0	; 31
   1dbd8:	80 b5       	in	r24, 0x20	; 32
    __eerd_block (__dst, __src, __n, eeprom_read_byte);
#else
    /* If ATmega256x device, do not call function. */
    while (__n--)
    {
        *(char *)__dst++ = eeprom_read_byte(__src++);
   1dbda:	81 93       	st	Z+, r24
   1dbdc:	2f 5f       	subi	r18, 0xFF	; 255
   1dbde:	3f 4f       	sbci	r19, 0xFF	; 255
{
#if (! (defined(__AVR_ATmega2560__) || defined(__AVR_ATmega2561__)) )
    __eerd_block (__dst, __src, __n, eeprom_read_byte);
#else
    /* If ATmega256x device, do not call function. */
    while (__n--)
   1dbe0:	ea 15       	cp	r30, r10
   1dbe2:	fb 05       	cpc	r31, r11
   1dbe4:	a1 f7       	brne	.-24     	; 0x1dbce <WriteBootEEPROM+0xf4>
	eeprom_read_block(&eepromCopy, &BOOT_VARS(idx), sizeof(eepromCopy));
#endif

	return (memcmp(&eepromCopy, pEEPROM, sizeof(eepromCopy)) == 0);
   1dbe6:	c7 01       	movw	r24, r14
   1dbe8:	b6 01       	movw	r22, r12
   1dbea:	40 e8       	ldi	r20, 0x80	; 128
   1dbec:	50 e0       	ldi	r21, 0x00	; 0
   1dbee:	0e 94 0f f0 	call	0x1e01e	; 0x1e01e <memcmp>

	for (idx = 0; idx < 2; ++idx)
#ifdef EXPAND_RAW_BOOT_FUNCTIONS
		WriteRawBootEEPROM(idx, &eepromCopy);
#else
		if (!MatchesCopy(&eepromCopy, idx))
   1dbf2:	00 97       	sbiw	r24, 0x00	; 0
   1dbf4:	b1 f0       	breq	.+44     	; 0x1dc22 <WriteBootEEPROM+0x148>
		{
			eeprom_busy_wait();
   1dbf6:	f9 99       	sbic	0x1f, 1	; 31
   1dbf8:	fe cf       	rjmp	.-4      	; 0x1dbf6 <WriteBootEEPROM+0x11c>
   1dbfa:	c8 01       	movw	r24, r16
   1dbfc:	f6 01       	movw	r30, r12
   1dbfe:	0e c0       	rjmp	.+28     	; 0x1dc1c <WriteBootEEPROM+0x142>
#if (! (defined(__AVR_ATmega2560__) || defined(__AVR_ATmega2561__)) )
    __eewr_block (__dst, __src, __n, eeprom_write_byte);
#else
    /* If ATmega256x device, do not call function. */
    while (__n--)
        eeprom_write_byte (__dst++, *(uint8_t *)__src++);
   1dc00:	20 81       	ld	r18, Z
/** \ingroup avr_eeprom
    Write a byte \a __value to EEPROM address \a __p.
 */
static __inline__ void eeprom_write_byte (uint8_t *__p, uint8_t __value)
{
    do {} while (!eeprom_is_ready ());
   1dc02:	f9 99       	sbic	0x1f, 1	; 31
   1dc04:	fe cf       	rjmp	.-4      	; 0x1dc02 <WriteBootEEPROM+0x128>
#if (! (defined(__AVR_ATmega2560__) || defined(__AVR_ATmega2561__)) )
    __eewr_block (__dst, __src, __n, eeprom_write_byte);
#else
    /* If ATmega256x device, do not call function. */
    while (__n--)
        eeprom_write_byte (__dst++, *(uint8_t *)__src++);
   1dc06:	31 96       	adiw	r30, 0x01	; 1
static __inline__ void eeprom_write_byte (uint8_t *__p, uint8_t __value)
{
    do {} while (!eeprom_is_ready ());

#if	defined(EEPM0) && defined(EEPM1)
    EECR = 0;		/* Set programming mode: erase and write.	*/
   1dc08:	1f ba       	out	0x1f, r1	; 31
#endif

#if	E2END <= 0xFF
    EEARL = (size_t)__p;
#else
    EEAR = (size_t)__p;
   1dc0a:	92 bd       	out	0x22, r25	; 34
   1dc0c:	81 bd       	out	0x21, r24	; 33
#endif
    EEDR = __value;
   1dc0e:	20 bd       	out	0x20, r18	; 32

    __asm__ __volatile__ (
   1dc10:	0f b6       	in	r0, 0x3f	; 63
   1dc12:	f8 94       	cli
   1dc14:	fa 9a       	sbi	0x1f, 2	; 31
   1dc16:	f9 9a       	sbi	0x1f, 1	; 31
   1dc18:	0f be       	out	0x3f, r0	; 63
   1dc1a:	01 96       	adiw	r24, 0x01	; 1
{
#if (! (defined(__AVR_ATmega2560__) || defined(__AVR_ATmega2561__)) )
    __eewr_block (__dst, __src, __n, eeprom_write_byte);
#else
    /* If ATmega256x device, do not call function. */
    while (__n--)
   1dc1c:	ee 15       	cp	r30, r14
   1dc1e:	ff 05       	cpc	r31, r15
   1dc20:	79 f7       	brne	.-34     	; 0x1dc00 <WriteBootEEPROM+0x126>
   1dc22:	00 58       	subi	r16, 0x80	; 128
   1dc24:	1f 4f       	sbci	r17, 0xFF	; 255

	memcpy(&eepromCopy.bootVars, pVars, sizeof(eepromCopy.bootVars));
	memset(eepromCopy.space, '\xFF', sizeof(eepromCopy.space));
	eepromCopy.crc = ComputeCRC(&eepromCopy);

	for (idx = 0; idx < 2; ++idx)
   1dc26:	81 e0       	ldi	r24, 0x01	; 1
   1dc28:	00 30       	cpi	r16, 0x00	; 0
   1dc2a:	18 07       	cpc	r17, r24
   1dc2c:	09 f0       	breq	.+2      	; 0x1dc30 <WriteBootEEPROM+0x156>
   1dc2e:	ca cf       	rjmp	.-108    	; 0x1dbc4 <WriteBootEEPROM+0xea>
		{
			eeprom_busy_wait();
			eeprom_write_block(&eepromCopy, &BOOT_VARS(idx), sizeof(eepromCopy));
		}
#endif
}
   1dc30:	c0 50       	subi	r28, 0x00	; 0
   1dc32:	df 4f       	sbci	r29, 0xFF	; 255
   1dc34:	0f b6       	in	r0, 0x3f	; 63
   1dc36:	f8 94       	cli
   1dc38:	de bf       	out	0x3e, r29	; 62
   1dc3a:	0f be       	out	0x3f, r0	; 63
   1dc3c:	cd bf       	out	0x3d, r28	; 61
   1dc3e:	cf 91       	pop	r28
   1dc40:	df 91       	pop	r29
   1dc42:	1f 91       	pop	r17
   1dc44:	0f 91       	pop	r16
   1dc46:	ff 90       	pop	r15
   1dc48:	ef 90       	pop	r14
   1dc4a:	df 90       	pop	r13
   1dc4c:	cf 90       	pop	r12
   1dc4e:	bf 90       	pop	r11
   1dc50:	af 90       	pop	r10
   1dc52:	08 95       	ret

0001dc54 <strtol>:
   1dc54:	2f 92       	push	r2
   1dc56:	3f 92       	push	r3
   1dc58:	5f 92       	push	r5
   1dc5a:	6f 92       	push	r6
   1dc5c:	7f 92       	push	r7
   1dc5e:	8f 92       	push	r8
   1dc60:	9f 92       	push	r9
   1dc62:	af 92       	push	r10
   1dc64:	bf 92       	push	r11
   1dc66:	cf 92       	push	r12
   1dc68:	df 92       	push	r13
   1dc6a:	ef 92       	push	r14
   1dc6c:	ff 92       	push	r15
   1dc6e:	0f 93       	push	r16
   1dc70:	1f 93       	push	r17
   1dc72:	cf 93       	push	r28
   1dc74:	df 93       	push	r29
   1dc76:	8c 01       	movw	r16, r24
   1dc78:	1b 01       	movw	r2, r22
   1dc7a:	ea 01       	movw	r28, r20
   1dc7c:	61 15       	cp	r22, r1
   1dc7e:	71 05       	cpc	r23, r1
   1dc80:	19 f0       	breq	.+6      	; 0x1dc88 <strtol+0x34>
   1dc82:	fb 01       	movw	r30, r22
   1dc84:	91 83       	std	Z+1, r25	; 0x01
   1dc86:	80 83       	st	Z, r24
   1dc88:	20 97       	sbiw	r28, 0x00	; 0
   1dc8a:	49 f0       	breq	.+18     	; 0x1dc9e <strtol+0x4a>
   1dc8c:	ce 01       	movw	r24, r28
   1dc8e:	02 97       	sbiw	r24, 0x02	; 2
   1dc90:	83 97       	sbiw	r24, 0x23	; 35
   1dc92:	28 f0       	brcs	.+10     	; 0x1dc9e <strtol+0x4a>
   1dc94:	20 e0       	ldi	r18, 0x00	; 0
   1dc96:	30 e0       	ldi	r19, 0x00	; 0
   1dc98:	40 e0       	ldi	r20, 0x00	; 0
   1dc9a:	50 e0       	ldi	r21, 0x00	; 0
   1dc9c:	f6 c0       	rjmp	.+492    	; 0x1de8a <strtol+0x236>
   1dc9e:	f8 01       	movw	r30, r16
   1dca0:	a1 90       	ld	r10, Z+
   1dca2:	8f 01       	movw	r16, r30
   1dca4:	8a 2d       	mov	r24, r10
   1dca6:	90 e0       	ldi	r25, 0x00	; 0
   1dca8:	0e 94 75 f4 	call	0x1e8ea	; 0x1e8ea <isspace>
   1dcac:	89 2b       	or	r24, r25
   1dcae:	b9 f7       	brne	.-18     	; 0x1dc9e <strtol+0x4a>
   1dcb0:	fd e2       	ldi	r31, 0x2D	; 45
   1dcb2:	af 16       	cp	r10, r31
   1dcb4:	31 f4       	brne	.+12     	; 0x1dcc2 <strtol+0x6e>
   1dcb6:	f8 01       	movw	r30, r16
   1dcb8:	a1 90       	ld	r10, Z+
   1dcba:	8f 01       	movw	r16, r30
   1dcbc:	55 24       	eor	r5, r5
   1dcbe:	53 94       	inc	r5
   1dcc0:	07 c0       	rjmp	.+14     	; 0x1dcd0 <strtol+0x7c>
   1dcc2:	fb e2       	ldi	r31, 0x2B	; 43
   1dcc4:	af 16       	cp	r10, r31
   1dcc6:	19 f4       	brne	.+6      	; 0x1dcce <strtol+0x7a>
   1dcc8:	f8 01       	movw	r30, r16
   1dcca:	a1 90       	ld	r10, Z+
   1dccc:	8f 01       	movw	r16, r30
   1dcce:	55 24       	eor	r5, r5
   1dcd0:	20 97       	sbiw	r28, 0x00	; 0
   1dcd2:	19 f0       	breq	.+6      	; 0x1dcda <strtol+0x86>
   1dcd4:	c0 31       	cpi	r28, 0x10	; 16
   1dcd6:	d1 05       	cpc	r29, r1
   1dcd8:	c1 f4       	brne	.+48     	; 0x1dd0a <strtol+0xb6>
   1dcda:	f0 e3       	ldi	r31, 0x30	; 48
   1dcdc:	af 16       	cp	r10, r31
   1dcde:	79 f4       	brne	.+30     	; 0x1dcfe <strtol+0xaa>
   1dce0:	f8 01       	movw	r30, r16
   1dce2:	80 81       	ld	r24, Z
   1dce4:	88 37       	cpi	r24, 0x78	; 120
   1dce6:	11 f0       	breq	.+4      	; 0x1dcec <strtol+0x98>
   1dce8:	88 35       	cpi	r24, 0x58	; 88
   1dcea:	49 f4       	brne	.+18     	; 0x1dcfe <strtol+0xaa>
   1dcec:	f8 01       	movw	r30, r16
   1dcee:	a1 80       	ldd	r10, Z+1	; 0x01
   1dcf0:	0e 5f       	subi	r16, 0xFE	; 254
   1dcf2:	1f 4f       	sbci	r17, 0xFF	; 255
   1dcf4:	f2 e0       	ldi	r31, 0x02	; 2
   1dcf6:	5f 2a       	or	r5, r31
   1dcf8:	c0 e1       	ldi	r28, 0x10	; 16
   1dcfa:	d0 e0       	ldi	r29, 0x00	; 0
   1dcfc:	06 c0       	rjmp	.+12     	; 0x1dd0a <strtol+0xb6>
   1dcfe:	20 97       	sbiw	r28, 0x00	; 0
   1dd00:	21 f4       	brne	.+8      	; 0x1dd0a <strtol+0xb6>
   1dd02:	80 e3       	ldi	r24, 0x30	; 48
   1dd04:	a8 16       	cp	r10, r24
   1dd06:	e9 f4       	brne	.+58     	; 0x1dd42 <strtol+0xee>
   1dd08:	27 c0       	rjmp	.+78     	; 0x1dd58 <strtol+0x104>
   1dd0a:	c8 30       	cpi	r28, 0x08	; 8
   1dd0c:	d1 05       	cpc	r29, r1
   1dd0e:	31 f1       	breq	.+76     	; 0x1dd5c <strtol+0x108>
   1dd10:	c9 30       	cpi	r28, 0x09	; 9
   1dd12:	d1 05       	cpc	r29, r1
   1dd14:	24 f4       	brge	.+8      	; 0x1dd1e <strtol+0xca>
   1dd16:	c2 30       	cpi	r28, 0x02	; 2
   1dd18:	d1 05       	cpc	r29, r1
   1dd1a:	31 f5       	brne	.+76     	; 0x1dd68 <strtol+0x114>
   1dd1c:	0c c0       	rjmp	.+24     	; 0x1dd36 <strtol+0xe2>
   1dd1e:	ca 30       	cpi	r28, 0x0A	; 10
   1dd20:	d1 05       	cpc	r29, r1
   1dd22:	89 f0       	breq	.+34     	; 0x1dd46 <strtol+0xf2>
   1dd24:	c0 31       	cpi	r28, 0x10	; 16
   1dd26:	d1 05       	cpc	r29, r1
   1dd28:	f9 f4       	brne	.+62     	; 0x1dd68 <strtol+0x114>
   1dd2a:	c1 2c       	mov	r12, r1
   1dd2c:	d1 2c       	mov	r13, r1
   1dd2e:	e1 2c       	mov	r14, r1
   1dd30:	b8 e0       	ldi	r27, 0x08	; 8
   1dd32:	fb 2e       	mov	r15, r27
   1dd34:	28 c0       	rjmp	.+80     	; 0x1dd86 <strtol+0x132>
   1dd36:	c1 2c       	mov	r12, r1
   1dd38:	d1 2c       	mov	r13, r1
   1dd3a:	e1 2c       	mov	r14, r1
   1dd3c:	a0 e4       	ldi	r26, 0x40	; 64
   1dd3e:	fa 2e       	mov	r15, r26
   1dd40:	22 c0       	rjmp	.+68     	; 0x1dd86 <strtol+0x132>
   1dd42:	ca e0       	ldi	r28, 0x0A	; 10
   1dd44:	d0 e0       	ldi	r29, 0x00	; 0
   1dd46:	fc ec       	ldi	r31, 0xCC	; 204
   1dd48:	cf 2e       	mov	r12, r31
   1dd4a:	fc ec       	ldi	r31, 0xCC	; 204
   1dd4c:	df 2e       	mov	r13, r31
   1dd4e:	fc ec       	ldi	r31, 0xCC	; 204
   1dd50:	ef 2e       	mov	r14, r31
   1dd52:	fc e0       	ldi	r31, 0x0C	; 12
   1dd54:	ff 2e       	mov	r15, r31
   1dd56:	17 c0       	rjmp	.+46     	; 0x1dd86 <strtol+0x132>
   1dd58:	c8 e0       	ldi	r28, 0x08	; 8
   1dd5a:	d0 e0       	ldi	r29, 0x00	; 0
   1dd5c:	c1 2c       	mov	r12, r1
   1dd5e:	d1 2c       	mov	r13, r1
   1dd60:	e1 2c       	mov	r14, r1
   1dd62:	e0 e1       	ldi	r30, 0x10	; 16
   1dd64:	fe 2e       	mov	r15, r30
   1dd66:	0f c0       	rjmp	.+30     	; 0x1dd86 <strtol+0x132>
   1dd68:	9e 01       	movw	r18, r28
   1dd6a:	44 27       	eor	r20, r20
   1dd6c:	37 fd       	sbrc	r19, 7
   1dd6e:	40 95       	com	r20
   1dd70:	54 2f       	mov	r21, r20
   1dd72:	60 e0       	ldi	r22, 0x00	; 0
   1dd74:	70 e0       	ldi	r23, 0x00	; 0
   1dd76:	80 e0       	ldi	r24, 0x00	; 0
   1dd78:	90 e8       	ldi	r25, 0x80	; 128
   1dd7a:	0e 94 24 f4 	call	0x1e848	; 0x1e848 <__udivmodsi4>
   1dd7e:	c9 01       	movw	r24, r18
   1dd80:	da 01       	movw	r26, r20
   1dd82:	6c 01       	movw	r12, r24
   1dd84:	7d 01       	movw	r14, r26
   1dd86:	20 e0       	ldi	r18, 0x00	; 0
   1dd88:	30 e0       	ldi	r19, 0x00	; 0
   1dd8a:	40 e0       	ldi	r20, 0x00	; 0
   1dd8c:	50 e0       	ldi	r21, 0x00	; 0
   1dd8e:	60 e0       	ldi	r22, 0x00	; 0
   1dd90:	3e 01       	movw	r6, r28
   1dd92:	88 24       	eor	r8, r8
   1dd94:	77 fc       	sbrc	r7, 7
   1dd96:	80 94       	com	r8
   1dd98:	98 2c       	mov	r9, r8
   1dd9a:	70 ed       	ldi	r23, 0xD0	; 208
   1dd9c:	b7 2e       	mov	r11, r23
   1dd9e:	ba 0c       	add	r11, r10
   1dda0:	e9 e0       	ldi	r30, 0x09	; 9
   1dda2:	eb 15       	cp	r30, r11
   1dda4:	70 f4       	brcc	.+28     	; 0x1ddc2 <strtol+0x16e>
   1dda6:	8a 2d       	mov	r24, r10
   1dda8:	81 54       	subi	r24, 0x41	; 65
   1ddaa:	8a 31       	cpi	r24, 0x1A	; 26
   1ddac:	18 f4       	brcc	.+6      	; 0x1ddb4 <strtol+0x160>
   1ddae:	99 ec       	ldi	r25, 0xC9	; 201
   1ddb0:	b9 2e       	mov	r11, r25
   1ddb2:	06 c0       	rjmp	.+12     	; 0x1ddc0 <strtol+0x16c>
   1ddb4:	8a 2d       	mov	r24, r10
   1ddb6:	81 56       	subi	r24, 0x61	; 97
   1ddb8:	8a 31       	cpi	r24, 0x1A	; 26
   1ddba:	50 f5       	brcc	.+84     	; 0x1de10 <strtol+0x1bc>
   1ddbc:	89 ea       	ldi	r24, 0xA9	; 169
   1ddbe:	b8 2e       	mov	r11, r24
   1ddc0:	ba 0c       	add	r11, r10
   1ddc2:	8b 2d       	mov	r24, r11
   1ddc4:	90 e0       	ldi	r25, 0x00	; 0
   1ddc6:	8c 17       	cp	r24, r28
   1ddc8:	9d 07       	cpc	r25, r29
   1ddca:	14 f5       	brge	.+68     	; 0x1de10 <strtol+0x1bc>
   1ddcc:	6f 3f       	cpi	r22, 0xFF	; 255
   1ddce:	e1 f0       	breq	.+56     	; 0x1de08 <strtol+0x1b4>
   1ddd0:	c2 16       	cp	r12, r18
   1ddd2:	d3 06       	cpc	r13, r19
   1ddd4:	e4 06       	cpc	r14, r20
   1ddd6:	f5 06       	cpc	r15, r21
   1ddd8:	b0 f0       	brcs	.+44     	; 0x1de06 <strtol+0x1b2>
   1ddda:	ca 01       	movw	r24, r20
   1dddc:	b9 01       	movw	r22, r18
   1ddde:	a4 01       	movw	r20, r8
   1dde0:	93 01       	movw	r18, r6
   1dde2:	0e 94 f2 f3 	call	0x1e7e4	; 0x1e7e4 <__mulsi3>
   1dde6:	9b 01       	movw	r18, r22
   1dde8:	ac 01       	movw	r20, r24
   1ddea:	2b 0d       	add	r18, r11
   1ddec:	31 1d       	adc	r19, r1
   1ddee:	41 1d       	adc	r20, r1
   1ddf0:	51 1d       	adc	r21, r1
   1ddf2:	21 30       	cpi	r18, 0x01	; 1
   1ddf4:	f0 e0       	ldi	r31, 0x00	; 0
   1ddf6:	3f 07       	cpc	r19, r31
   1ddf8:	f0 e0       	ldi	r31, 0x00	; 0
   1ddfa:	4f 07       	cpc	r20, r31
   1ddfc:	f0 e8       	ldi	r31, 0x80	; 128
   1ddfe:	5f 07       	cpc	r21, r31
   1de00:	10 f4       	brcc	.+4      	; 0x1de06 <strtol+0x1b2>
   1de02:	61 e0       	ldi	r22, 0x01	; 1
   1de04:	01 c0       	rjmp	.+2      	; 0x1de08 <strtol+0x1b4>
   1de06:	6f ef       	ldi	r22, 0xFF	; 255
   1de08:	f8 01       	movw	r30, r16
   1de0a:	a1 90       	ld	r10, Z+
   1de0c:	8f 01       	movw	r16, r30
   1de0e:	c5 cf       	rjmp	.-118    	; 0x1dd9a <strtol+0x146>
   1de10:	21 14       	cp	r2, r1
   1de12:	31 04       	cpc	r3, r1
   1de14:	81 f0       	breq	.+32     	; 0x1de36 <strtol+0x1e2>
   1de16:	66 23       	and	r22, r22
   1de18:	31 f0       	breq	.+12     	; 0x1de26 <strtol+0x1d2>
   1de1a:	01 50       	subi	r16, 0x01	; 1
   1de1c:	10 40       	sbci	r17, 0x00	; 0
   1de1e:	f1 01       	movw	r30, r2
   1de20:	11 83       	std	Z+1, r17	; 0x01
   1de22:	00 83       	st	Z, r16
   1de24:	08 c0       	rjmp	.+16     	; 0x1de36 <strtol+0x1e2>
   1de26:	51 fe       	sbrs	r5, 1
   1de28:	1a c0       	rjmp	.+52     	; 0x1de5e <strtol+0x20a>
   1de2a:	02 50       	subi	r16, 0x02	; 2
   1de2c:	10 40       	sbci	r17, 0x00	; 0
   1de2e:	f1 01       	movw	r30, r2
   1de30:	11 83       	std	Z+1, r17	; 0x01
   1de32:	00 83       	st	Z, r16
   1de34:	14 c0       	rjmp	.+40     	; 0x1de5e <strtol+0x20a>
   1de36:	67 ff       	sbrs	r22, 7
   1de38:	12 c0       	rjmp	.+36     	; 0x1de5e <strtol+0x20a>
   1de3a:	50 fc       	sbrc	r5, 0
   1de3c:	05 c0       	rjmp	.+10     	; 0x1de48 <strtol+0x1f4>
   1de3e:	2f ef       	ldi	r18, 0xFF	; 255
   1de40:	3f ef       	ldi	r19, 0xFF	; 255
   1de42:	4f ef       	ldi	r20, 0xFF	; 255
   1de44:	5f e7       	ldi	r21, 0x7F	; 127
   1de46:	04 c0       	rjmp	.+8      	; 0x1de50 <strtol+0x1fc>
   1de48:	20 e0       	ldi	r18, 0x00	; 0
   1de4a:	30 e0       	ldi	r19, 0x00	; 0
   1de4c:	40 e0       	ldi	r20, 0x00	; 0
   1de4e:	50 e8       	ldi	r21, 0x80	; 128
   1de50:	82 e2       	ldi	r24, 0x22	; 34
   1de52:	90 e0       	ldi	r25, 0x00	; 0
   1de54:	90 93 54 19 	sts	0x1954, r25
   1de58:	80 93 53 19 	sts	0x1953, r24
   1de5c:	16 c0       	rjmp	.+44     	; 0x1de8a <strtol+0x236>
   1de5e:	50 fe       	sbrs	r5, 0
   1de60:	08 c0       	rjmp	.+16     	; 0x1de72 <strtol+0x21e>
   1de62:	50 95       	com	r21
   1de64:	40 95       	com	r20
   1de66:	30 95       	com	r19
   1de68:	21 95       	neg	r18
   1de6a:	3f 4f       	sbci	r19, 0xFF	; 255
   1de6c:	4f 4f       	sbci	r20, 0xFF	; 255
   1de6e:	5f 4f       	sbci	r21, 0xFF	; 255
   1de70:	0c c0       	rjmp	.+24     	; 0x1de8a <strtol+0x236>
   1de72:	57 ff       	sbrs	r21, 7
   1de74:	0a c0       	rjmp	.+20     	; 0x1de8a <strtol+0x236>
   1de76:	82 e2       	ldi	r24, 0x22	; 34
   1de78:	90 e0       	ldi	r25, 0x00	; 0
   1de7a:	90 93 54 19 	sts	0x1954, r25
   1de7e:	80 93 53 19 	sts	0x1953, r24
   1de82:	2f ef       	ldi	r18, 0xFF	; 255
   1de84:	3f ef       	ldi	r19, 0xFF	; 255
   1de86:	4f ef       	ldi	r20, 0xFF	; 255
   1de88:	5f e7       	ldi	r21, 0x7F	; 127
   1de8a:	b9 01       	movw	r22, r18
   1de8c:	ca 01       	movw	r24, r20
   1de8e:	df 91       	pop	r29
   1de90:	cf 91       	pop	r28
   1de92:	1f 91       	pop	r17
   1de94:	0f 91       	pop	r16
   1de96:	ff 90       	pop	r15
   1de98:	ef 90       	pop	r14
   1de9a:	df 90       	pop	r13
   1de9c:	cf 90       	pop	r12
   1de9e:	bf 90       	pop	r11
   1dea0:	af 90       	pop	r10
   1dea2:	9f 90       	pop	r9
   1dea4:	8f 90       	pop	r8
   1dea6:	7f 90       	pop	r7
   1dea8:	6f 90       	pop	r6
   1deaa:	5f 90       	pop	r5
   1deac:	3f 90       	pop	r3
   1deae:	2f 90       	pop	r2
   1deb0:	08 95       	ret

0001deb2 <atoi>:
   1deb2:	fc 01       	movw	r30, r24
   1deb4:	88 27       	eor	r24, r24
   1deb6:	99 27       	eor	r25, r25
   1deb8:	e8 94       	clt
   1deba:	21 91       	ld	r18, Z+
   1debc:	20 32       	cpi	r18, 0x20	; 32
   1debe:	e9 f3       	breq	.-6      	; 0x1deba <atoi+0x8>
   1dec0:	29 30       	cpi	r18, 0x09	; 9
   1dec2:	10 f0       	brcs	.+4      	; 0x1dec8 <atoi+0x16>
   1dec4:	2e 30       	cpi	r18, 0x0E	; 14
   1dec6:	c8 f3       	brcs	.-14     	; 0x1deba <atoi+0x8>
   1dec8:	2b 32       	cpi	r18, 0x2B	; 43
   1deca:	41 f0       	breq	.+16     	; 0x1dedc <atoi+0x2a>
   1decc:	2d 32       	cpi	r18, 0x2D	; 45
   1dece:	39 f4       	brne	.+14     	; 0x1dede <atoi+0x2c>
   1ded0:	68 94       	set
   1ded2:	04 c0       	rjmp	.+8      	; 0x1dedc <atoi+0x2a>
   1ded4:	0e 94 25 f1 	call	0x1e24a	; 0x1e24a <__mulhi_const_10>
   1ded8:	82 0f       	add	r24, r18
   1deda:	91 1d       	adc	r25, r1
   1dedc:	21 91       	ld	r18, Z+
   1dede:	20 53       	subi	r18, 0x30	; 48
   1dee0:	2a 30       	cpi	r18, 0x0A	; 10
   1dee2:	c0 f3       	brcs	.-16     	; 0x1ded4 <atoi+0x22>
   1dee4:	1e f4       	brtc	.+6      	; 0x1deec <atoi+0x3a>
   1dee6:	90 95       	com	r25
   1dee8:	81 95       	neg	r24
   1deea:	9f 4f       	sbci	r25, 0xFF	; 255
   1deec:	08 95       	ret

0001deee <atol>:
   1deee:	1f 93       	push	r17
   1def0:	fc 01       	movw	r30, r24
   1def2:	99 27       	eor	r25, r25
   1def4:	88 27       	eor	r24, r24
   1def6:	bc 01       	movw	r22, r24
   1def8:	e8 94       	clt
   1defa:	11 91       	ld	r17, Z+
   1defc:	10 32       	cpi	r17, 0x20	; 32
   1defe:	e9 f3       	breq	.-6      	; 0x1defa <atol+0xc>
   1df00:	19 30       	cpi	r17, 0x09	; 9
   1df02:	10 f0       	brcs	.+4      	; 0x1df08 <atol+0x1a>
   1df04:	1e 30       	cpi	r17, 0x0E	; 14
   1df06:	c8 f3       	brcs	.-14     	; 0x1defa <atol+0xc>
   1df08:	1b 32       	cpi	r17, 0x2B	; 43
   1df0a:	51 f0       	breq	.+20     	; 0x1df20 <atol+0x32>
   1df0c:	1d 32       	cpi	r17, 0x2D	; 45
   1df0e:	49 f4       	brne	.+18     	; 0x1df22 <atol+0x34>
   1df10:	68 94       	set
   1df12:	06 c0       	rjmp	.+12     	; 0x1df20 <atol+0x32>
   1df14:	0e 94 10 f1 	call	0x1e220	; 0x1e220 <__mulsi_const_10>
   1df18:	61 0f       	add	r22, r17
   1df1a:	71 1d       	adc	r23, r1
   1df1c:	81 1d       	adc	r24, r1
   1df1e:	91 1d       	adc	r25, r1
   1df20:	11 91       	ld	r17, Z+
   1df22:	10 53       	subi	r17, 0x30	; 48
   1df24:	1a 30       	cpi	r17, 0x0A	; 10
   1df26:	b0 f3       	brcs	.-20     	; 0x1df14 <atol+0x26>
   1df28:	3e f4       	brtc	.+14     	; 0x1df38 <atol+0x4a>
   1df2a:	90 95       	com	r25
   1df2c:	80 95       	com	r24
   1df2e:	70 95       	com	r23
   1df30:	61 95       	neg	r22
   1df32:	7f 4f       	sbci	r23, 0xFF	; 255
   1df34:	8f 4f       	sbci	r24, 0xFF	; 255
   1df36:	9f 4f       	sbci	r25, 0xFF	; 255
   1df38:	1f 91       	pop	r17
   1df3a:	08 95       	ret

0001df3c <memchr_P>:
   1df3c:	fc 01       	movw	r30, r24
   1df3e:	41 50       	subi	r20, 0x01	; 1
   1df40:	50 40       	sbci	r21, 0x00	; 0
   1df42:	30 f0       	brcs	.+12     	; 0x1df50 <memchr_P+0x14>
   1df44:	05 90       	lpm	r0, Z+
   1df46:	06 16       	cp	r0, r22
   1df48:	d1 f7       	brne	.-12     	; 0x1df3e <memchr_P+0x2>
   1df4a:	31 97       	sbiw	r30, 0x01	; 1
   1df4c:	cf 01       	movw	r24, r30
   1df4e:	08 95       	ret
   1df50:	88 27       	eor	r24, r24
   1df52:	99 27       	eor	r25, r25
   1df54:	08 95       	ret

0001df56 <memcpy_P>:
   1df56:	fb 01       	movw	r30, r22
   1df58:	dc 01       	movw	r26, r24
   1df5a:	02 c0       	rjmp	.+4      	; 0x1df60 <memcpy_P+0xa>
   1df5c:	05 90       	lpm	r0, Z+
   1df5e:	0d 92       	st	X+, r0
   1df60:	41 50       	subi	r20, 0x01	; 1
   1df62:	50 40       	sbci	r21, 0x00	; 0
   1df64:	d8 f7       	brcc	.-10     	; 0x1df5c <memcpy_P+0x6>
   1df66:	08 95       	ret

0001df68 <strcat_P>:
   1df68:	fb 01       	movw	r30, r22
   1df6a:	dc 01       	movw	r26, r24
   1df6c:	0d 90       	ld	r0, X+
   1df6e:	00 20       	and	r0, r0
   1df70:	e9 f7       	brne	.-6      	; 0x1df6c <strcat_P+0x4>
   1df72:	11 97       	sbiw	r26, 0x01	; 1
   1df74:	05 90       	lpm	r0, Z+
   1df76:	0d 92       	st	X+, r0
   1df78:	00 20       	and	r0, r0
   1df7a:	e1 f7       	brne	.-8      	; 0x1df74 <strcat_P+0xc>
   1df7c:	08 95       	ret

0001df7e <strcpy_P>:
   1df7e:	fb 01       	movw	r30, r22
   1df80:	dc 01       	movw	r26, r24
   1df82:	05 90       	lpm	r0, Z+
   1df84:	0d 92       	st	X+, r0
   1df86:	00 20       	and	r0, r0
   1df88:	e1 f7       	brne	.-8      	; 0x1df82 <strcpy_P+0x4>
   1df8a:	08 95       	ret

0001df8c <strlen_P>:
   1df8c:	fc 01       	movw	r30, r24
   1df8e:	05 90       	lpm	r0, Z+
   1df90:	00 20       	and	r0, r0
   1df92:	e9 f7       	brne	.-6      	; 0x1df8e <strlen_P+0x2>
   1df94:	80 95       	com	r24
   1df96:	90 95       	com	r25
   1df98:	8e 0f       	add	r24, r30
   1df9a:	9f 1f       	adc	r25, r31
   1df9c:	08 95       	ret

0001df9e <strncasecmp_P>:
   1df9e:	fb 01       	movw	r30, r22
   1dfa0:	dc 01       	movw	r26, r24
   1dfa2:	41 50       	subi	r20, 0x01	; 1
   1dfa4:	50 40       	sbci	r21, 0x00	; 0
   1dfa6:	88 f0       	brcs	.+34     	; 0x1dfca <strncasecmp_P+0x2c>
   1dfa8:	8d 91       	ld	r24, X+
   1dfaa:	81 34       	cpi	r24, 0x41	; 65
   1dfac:	1c f0       	brlt	.+6      	; 0x1dfb4 <strncasecmp_P+0x16>
   1dfae:	8b 35       	cpi	r24, 0x5B	; 91
   1dfb0:	0c f4       	brge	.+2      	; 0x1dfb4 <strncasecmp_P+0x16>
   1dfb2:	80 5e       	subi	r24, 0xE0	; 224
   1dfb4:	65 91       	lpm	r22, Z+
   1dfb6:	61 34       	cpi	r22, 0x41	; 65
   1dfb8:	1c f0       	brlt	.+6      	; 0x1dfc0 <strncasecmp_P+0x22>
   1dfba:	6b 35       	cpi	r22, 0x5B	; 91
   1dfbc:	0c f4       	brge	.+2      	; 0x1dfc0 <strncasecmp_P+0x22>
   1dfbe:	60 5e       	subi	r22, 0xE0	; 224
   1dfc0:	86 1b       	sub	r24, r22
   1dfc2:	61 11       	cpse	r22, r1
   1dfc4:	71 f3       	breq	.-36     	; 0x1dfa2 <strncasecmp_P+0x4>
   1dfc6:	99 0b       	sbc	r25, r25
   1dfc8:	08 95       	ret
   1dfca:	88 1b       	sub	r24, r24
   1dfcc:	fc cf       	rjmp	.-8      	; 0x1dfc6 <strncasecmp_P+0x28>

0001dfce <strncmp_P>:
   1dfce:	fb 01       	movw	r30, r22
   1dfd0:	dc 01       	movw	r26, r24
   1dfd2:	41 50       	subi	r20, 0x01	; 1
   1dfd4:	50 40       	sbci	r21, 0x00	; 0
   1dfd6:	30 f0       	brcs	.+12     	; 0x1dfe4 <strncmp_P+0x16>
   1dfd8:	8d 91       	ld	r24, X+
   1dfda:	05 90       	lpm	r0, Z+
   1dfdc:	80 19       	sub	r24, r0
   1dfde:	19 f4       	brne	.+6      	; 0x1dfe6 <strncmp_P+0x18>
   1dfe0:	00 20       	and	r0, r0
   1dfe2:	b9 f7       	brne	.-18     	; 0x1dfd2 <strncmp_P+0x4>
   1dfe4:	88 1b       	sub	r24, r24
   1dfe6:	99 0b       	sbc	r25, r25
   1dfe8:	08 95       	ret

0001dfea <strstr_P>:
   1dfea:	fb 01       	movw	r30, r22
   1dfec:	55 91       	lpm	r21, Z+
   1dfee:	55 23       	and	r21, r21
   1dff0:	a9 f0       	breq	.+42     	; 0x1e01c <strstr_P+0x32>
   1dff2:	bf 01       	movw	r22, r30
   1dff4:	dc 01       	movw	r26, r24
   1dff6:	4d 91       	ld	r20, X+
   1dff8:	45 17       	cp	r20, r21
   1dffa:	41 11       	cpse	r20, r1
   1dffc:	e1 f7       	brne	.-8      	; 0x1dff6 <strstr_P+0xc>
   1dffe:	59 f4       	brne	.+22     	; 0x1e016 <strstr_P+0x2c>
   1e000:	cd 01       	movw	r24, r26
   1e002:	05 90       	lpm	r0, Z+
   1e004:	00 20       	and	r0, r0
   1e006:	49 f0       	breq	.+18     	; 0x1e01a <strstr_P+0x30>
   1e008:	4d 91       	ld	r20, X+
   1e00a:	40 15       	cp	r20, r0
   1e00c:	41 11       	cpse	r20, r1
   1e00e:	c9 f3       	breq	.-14     	; 0x1e002 <strstr_P+0x18>
   1e010:	fb 01       	movw	r30, r22
   1e012:	41 11       	cpse	r20, r1
   1e014:	ef cf       	rjmp	.-34     	; 0x1dff4 <strstr_P+0xa>
   1e016:	81 e0       	ldi	r24, 0x01	; 1
   1e018:	90 e0       	ldi	r25, 0x00	; 0
   1e01a:	01 97       	sbiw	r24, 0x01	; 1
   1e01c:	08 95       	ret

0001e01e <memcmp>:
   1e01e:	fb 01       	movw	r30, r22
   1e020:	dc 01       	movw	r26, r24
   1e022:	04 c0       	rjmp	.+8      	; 0x1e02c <memcmp+0xe>
   1e024:	8d 91       	ld	r24, X+
   1e026:	01 90       	ld	r0, Z+
   1e028:	80 19       	sub	r24, r0
   1e02a:	21 f4       	brne	.+8      	; 0x1e034 <memcmp+0x16>
   1e02c:	41 50       	subi	r20, 0x01	; 1
   1e02e:	50 40       	sbci	r21, 0x00	; 0
   1e030:	c8 f7       	brcc	.-14     	; 0x1e024 <memcmp+0x6>
   1e032:	88 1b       	sub	r24, r24
   1e034:	99 0b       	sbc	r25, r25
   1e036:	08 95       	ret

0001e038 <memcpy>:
   1e038:	fb 01       	movw	r30, r22
   1e03a:	dc 01       	movw	r26, r24
   1e03c:	02 c0       	rjmp	.+4      	; 0x1e042 <memcpy+0xa>
   1e03e:	01 90       	ld	r0, Z+
   1e040:	0d 92       	st	X+, r0
   1e042:	41 50       	subi	r20, 0x01	; 1
   1e044:	50 40       	sbci	r21, 0x00	; 0
   1e046:	d8 f7       	brcc	.-10     	; 0x1e03e <memcpy+0x6>
   1e048:	08 95       	ret

0001e04a <memset>:
   1e04a:	dc 01       	movw	r26, r24
   1e04c:	01 c0       	rjmp	.+2      	; 0x1e050 <memset+0x6>
   1e04e:	6d 93       	st	X+, r22
   1e050:	41 50       	subi	r20, 0x01	; 1
   1e052:	50 40       	sbci	r21, 0x00	; 0
   1e054:	e0 f7       	brcc	.-8      	; 0x1e04e <memset+0x4>
   1e056:	08 95       	ret

0001e058 <strcat>:
   1e058:	fb 01       	movw	r30, r22
   1e05a:	dc 01       	movw	r26, r24
   1e05c:	0d 90       	ld	r0, X+
   1e05e:	00 20       	and	r0, r0
   1e060:	e9 f7       	brne	.-6      	; 0x1e05c <strcat+0x4>
   1e062:	11 97       	sbiw	r26, 0x01	; 1
   1e064:	01 90       	ld	r0, Z+
   1e066:	0d 92       	st	X+, r0
   1e068:	00 20       	and	r0, r0
   1e06a:	e1 f7       	brne	.-8      	; 0x1e064 <strcat+0xc>
   1e06c:	08 95       	ret

0001e06e <strcmp>:
   1e06e:	fb 01       	movw	r30, r22
   1e070:	dc 01       	movw	r26, r24
   1e072:	8d 91       	ld	r24, X+
   1e074:	01 90       	ld	r0, Z+
   1e076:	80 19       	sub	r24, r0
   1e078:	01 10       	cpse	r0, r1
   1e07a:	d9 f3       	breq	.-10     	; 0x1e072 <strcmp+0x4>
   1e07c:	99 0b       	sbc	r25, r25
   1e07e:	08 95       	ret

0001e080 <strcspn>:
   1e080:	dc 01       	movw	r26, r24
   1e082:	5d 91       	ld	r21, X+
   1e084:	55 23       	and	r21, r21
   1e086:	31 f0       	breq	.+12     	; 0x1e094 <strcspn+0x14>
   1e088:	fb 01       	movw	r30, r22
   1e08a:	01 90       	ld	r0, Z+
   1e08c:	05 16       	cp	r0, r21
   1e08e:	01 10       	cpse	r0, r1
   1e090:	e1 f7       	brne	.-8      	; 0x1e08a <strcspn+0xa>
   1e092:	b9 f7       	brne	.-18     	; 0x1e082 <strcspn+0x2>
   1e094:	80 95       	com	r24
   1e096:	90 95       	com	r25
   1e098:	8a 0f       	add	r24, r26
   1e09a:	9b 1f       	adc	r25, r27
   1e09c:	08 95       	ret

0001e09e <strlwr>:
   1e09e:	dc 01       	movw	r26, r24
   1e0a0:	6c 91       	ld	r22, X
   1e0a2:	61 54       	subi	r22, 0x41	; 65
   1e0a4:	6a 31       	cpi	r22, 0x1A	; 26
   1e0a6:	08 f0       	brcs	.+2      	; 0x1e0aa <strlwr+0xc>
   1e0a8:	60 52       	subi	r22, 0x20	; 32
   1e0aa:	6f 59       	subi	r22, 0x9F	; 159
   1e0ac:	6d 93       	st	X+, r22
   1e0ae:	c1 f7       	brne	.-16     	; 0x1e0a0 <strlwr+0x2>
   1e0b0:	08 95       	ret

0001e0b2 <strncmp>:
   1e0b2:	fb 01       	movw	r30, r22
   1e0b4:	dc 01       	movw	r26, r24
   1e0b6:	41 50       	subi	r20, 0x01	; 1
   1e0b8:	50 40       	sbci	r21, 0x00	; 0
   1e0ba:	30 f0       	brcs	.+12     	; 0x1e0c8 <strncmp+0x16>
   1e0bc:	8d 91       	ld	r24, X+
   1e0be:	01 90       	ld	r0, Z+
   1e0c0:	80 19       	sub	r24, r0
   1e0c2:	19 f4       	brne	.+6      	; 0x1e0ca <strncmp+0x18>
   1e0c4:	00 20       	and	r0, r0
   1e0c6:	b9 f7       	brne	.-18     	; 0x1e0b6 <strncmp+0x4>
   1e0c8:	88 1b       	sub	r24, r24
   1e0ca:	99 0b       	sbc	r25, r25
   1e0cc:	08 95       	ret

0001e0ce <strrev>:
   1e0ce:	dc 01       	movw	r26, r24
   1e0d0:	fc 01       	movw	r30, r24
   1e0d2:	67 2f       	mov	r22, r23
   1e0d4:	71 91       	ld	r23, Z+
   1e0d6:	77 23       	and	r23, r23
   1e0d8:	e1 f7       	brne	.-8      	; 0x1e0d2 <strrev+0x4>
   1e0da:	32 97       	sbiw	r30, 0x02	; 2
   1e0dc:	04 c0       	rjmp	.+8      	; 0x1e0e6 <strrev+0x18>
   1e0de:	7c 91       	ld	r23, X
   1e0e0:	6d 93       	st	X+, r22
   1e0e2:	70 83       	st	Z, r23
   1e0e4:	62 91       	ld	r22, -Z
   1e0e6:	ae 17       	cp	r26, r30
   1e0e8:	bf 07       	cpc	r27, r31
   1e0ea:	c8 f3       	brcs	.-14     	; 0x1e0de <strrev+0x10>
   1e0ec:	08 95       	ret

0001e0ee <strspn>:
   1e0ee:	dc 01       	movw	r26, r24
   1e0f0:	5d 91       	ld	r21, X+
   1e0f2:	55 23       	and	r21, r21
   1e0f4:	31 f0       	breq	.+12     	; 0x1e102 <strspn+0x14>
   1e0f6:	fb 01       	movw	r30, r22
   1e0f8:	01 90       	ld	r0, Z+
   1e0fa:	05 16       	cp	r0, r21
   1e0fc:	01 10       	cpse	r0, r1
   1e0fe:	e1 f7       	brne	.-8      	; 0x1e0f8 <strspn+0xa>
   1e100:	b9 f3       	breq	.-18     	; 0x1e0f0 <strspn+0x2>
   1e102:	80 95       	com	r24
   1e104:	90 95       	com	r25
   1e106:	8a 0f       	add	r24, r26
   1e108:	9b 1f       	adc	r25, r27
   1e10a:	08 95       	ret

0001e10c <strstr>:
   1e10c:	fb 01       	movw	r30, r22
   1e10e:	51 91       	ld	r21, Z+
   1e110:	55 23       	and	r21, r21
   1e112:	a9 f0       	breq	.+42     	; 0x1e13e <strstr+0x32>
   1e114:	bf 01       	movw	r22, r30
   1e116:	dc 01       	movw	r26, r24
   1e118:	4d 91       	ld	r20, X+
   1e11a:	45 17       	cp	r20, r21
   1e11c:	41 11       	cpse	r20, r1
   1e11e:	e1 f7       	brne	.-8      	; 0x1e118 <strstr+0xc>
   1e120:	59 f4       	brne	.+22     	; 0x1e138 <strstr+0x2c>
   1e122:	cd 01       	movw	r24, r26
   1e124:	01 90       	ld	r0, Z+
   1e126:	00 20       	and	r0, r0
   1e128:	49 f0       	breq	.+18     	; 0x1e13c <strstr+0x30>
   1e12a:	4d 91       	ld	r20, X+
   1e12c:	40 15       	cp	r20, r0
   1e12e:	41 11       	cpse	r20, r1
   1e130:	c9 f3       	breq	.-14     	; 0x1e124 <strstr+0x18>
   1e132:	fb 01       	movw	r30, r22
   1e134:	41 11       	cpse	r20, r1
   1e136:	ef cf       	rjmp	.-34     	; 0x1e116 <strstr+0xa>
   1e138:	81 e0       	ldi	r24, 0x01	; 1
   1e13a:	90 e0       	ldi	r25, 0x00	; 0
   1e13c:	01 97       	sbiw	r24, 0x01	; 1
   1e13e:	08 95       	ret

0001e140 <strtok_r>:
   1e140:	00 97       	sbiw	r24, 0x00	; 0
   1e142:	31 f4       	brne	.+12     	; 0x1e150 <strtok_r+0x10>
   1e144:	da 01       	movw	r26, r20
   1e146:	8d 91       	ld	r24, X+
   1e148:	9c 91       	ld	r25, X
   1e14a:	00 97       	sbiw	r24, 0x00	; 0
   1e14c:	09 f4       	brne	.+2      	; 0x1e150 <strtok_r+0x10>
   1e14e:	0e c0       	rjmp	.+28     	; 0x1e16c <strtok_r+0x2c>
   1e150:	dc 01       	movw	r26, r24
   1e152:	fb 01       	movw	r30, r22
   1e154:	3d 91       	ld	r19, X+
   1e156:	21 91       	ld	r18, Z+
   1e158:	22 23       	and	r18, r18
   1e15a:	19 f0       	breq	.+6      	; 0x1e162 <strtok_r+0x22>
   1e15c:	32 17       	cp	r19, r18
   1e15e:	c9 f3       	breq	.-14     	; 0x1e152 <strtok_r+0x12>
   1e160:	fa cf       	rjmp	.-12     	; 0x1e156 <strtok_r+0x16>
   1e162:	33 23       	and	r19, r19
   1e164:	31 f4       	brne	.+12     	; 0x1e172 <strtok_r+0x32>
   1e166:	da 01       	movw	r26, r20
   1e168:	1d 92       	st	X+, r1
   1e16a:	1c 92       	st	X, r1
   1e16c:	88 27       	eor	r24, r24
   1e16e:	99 27       	eor	r25, r25
   1e170:	08 95       	ret
   1e172:	11 97       	sbiw	r26, 0x01	; 1
   1e174:	af 93       	push	r26
   1e176:	bf 93       	push	r27
   1e178:	fb 01       	movw	r30, r22
   1e17a:	3d 91       	ld	r19, X+
   1e17c:	21 91       	ld	r18, Z+
   1e17e:	32 17       	cp	r19, r18
   1e180:	71 f4       	brne	.+28     	; 0x1e19e <strtok_r+0x5e>
   1e182:	33 23       	and	r19, r19
   1e184:	21 f4       	brne	.+8      	; 0x1e18e <strtok_r+0x4e>
   1e186:	88 27       	eor	r24, r24
   1e188:	99 27       	eor	r25, r25
   1e18a:	11 97       	sbiw	r26, 0x01	; 1
   1e18c:	02 c0       	rjmp	.+4      	; 0x1e192 <strtok_r+0x52>
   1e18e:	1e 92       	st	-X, r1
   1e190:	11 96       	adiw	r26, 0x01	; 1
   1e192:	fa 01       	movw	r30, r20
   1e194:	a1 93       	st	Z+, r26
   1e196:	b0 83       	st	Z, r27
   1e198:	9f 91       	pop	r25
   1e19a:	8f 91       	pop	r24
   1e19c:	08 95       	ret
   1e19e:	22 23       	and	r18, r18
   1e1a0:	69 f7       	brne	.-38     	; 0x1e17c <strtok_r+0x3c>
   1e1a2:	ea cf       	rjmp	.-44     	; 0x1e178 <strtok_r+0x38>

0001e1a4 <strupr>:
   1e1a4:	dc 01       	movw	r26, r24
   1e1a6:	6c 91       	ld	r22, X
   1e1a8:	61 56       	subi	r22, 0x61	; 97
   1e1aa:	6a 31       	cpi	r22, 0x1A	; 26
   1e1ac:	08 f0       	brcs	.+2      	; 0x1e1b0 <strupr+0xc>
   1e1ae:	60 5e       	subi	r22, 0xE0	; 224
   1e1b0:	6f 5b       	subi	r22, 0xBF	; 191
   1e1b2:	6d 93       	st	X+, r22
   1e1b4:	c1 f7       	brne	.-16     	; 0x1e1a6 <strupr+0x2>
   1e1b6:	08 95       	ret

0001e1b8 <ltoa>:
   1e1b8:	fa 01       	movw	r30, r20
   1e1ba:	cf 93       	push	r28
   1e1bc:	ff 93       	push	r31
   1e1be:	ef 93       	push	r30
   1e1c0:	22 30       	cpi	r18, 0x02	; 2
   1e1c2:	44 f1       	brlt	.+80     	; 0x1e214 <ltoa+0x5c>
   1e1c4:	25 32       	cpi	r18, 0x25	; 37
   1e1c6:	34 f5       	brge	.+76     	; 0x1e214 <ltoa+0x5c>
   1e1c8:	c2 2f       	mov	r28, r18
   1e1ca:	e8 94       	clt
   1e1cc:	ca 30       	cpi	r28, 0x0A	; 10
   1e1ce:	49 f4       	brne	.+18     	; 0x1e1e2 <ltoa+0x2a>
   1e1d0:	97 fb       	bst	r25, 7
   1e1d2:	3e f4       	brtc	.+14     	; 0x1e1e2 <ltoa+0x2a>
   1e1d4:	90 95       	com	r25
   1e1d6:	80 95       	com	r24
   1e1d8:	70 95       	com	r23
   1e1da:	61 95       	neg	r22
   1e1dc:	7f 4f       	sbci	r23, 0xFF	; 255
   1e1de:	8f 4f       	sbci	r24, 0xFF	; 255
   1e1e0:	9f 4f       	sbci	r25, 0xFF	; 255
   1e1e2:	2c 2f       	mov	r18, r28
   1e1e4:	33 27       	eor	r19, r19
   1e1e6:	44 27       	eor	r20, r20
   1e1e8:	55 27       	eor	r21, r21
   1e1ea:	ff 93       	push	r31
   1e1ec:	ef 93       	push	r30
   1e1ee:	0e 94 24 f4 	call	0x1e848	; 0x1e848 <__udivmodsi4>
   1e1f2:	ef 91       	pop	r30
   1e1f4:	ff 91       	pop	r31
   1e1f6:	60 5d       	subi	r22, 0xD0	; 208
   1e1f8:	6a 33       	cpi	r22, 0x3A	; 58
   1e1fa:	0c f0       	brlt	.+2      	; 0x1e1fe <ltoa+0x46>
   1e1fc:	69 5d       	subi	r22, 0xD9	; 217
   1e1fe:	61 93       	st	Z+, r22
   1e200:	b9 01       	movw	r22, r18
   1e202:	ca 01       	movw	r24, r20
   1e204:	60 50       	subi	r22, 0x00	; 0
   1e206:	70 40       	sbci	r23, 0x00	; 0
   1e208:	80 40       	sbci	r24, 0x00	; 0
   1e20a:	90 40       	sbci	r25, 0x00	; 0
   1e20c:	51 f7       	brne	.-44     	; 0x1e1e2 <ltoa+0x2a>
   1e20e:	16 f4       	brtc	.+4      	; 0x1e214 <ltoa+0x5c>
   1e210:	cd e2       	ldi	r28, 0x2D	; 45
   1e212:	c1 93       	st	Z+, r28
   1e214:	10 82       	st	Z, r1
   1e216:	8f 91       	pop	r24
   1e218:	9f 91       	pop	r25
   1e21a:	cf 91       	pop	r28
   1e21c:	0c 94 67 f0 	jmp	0x1e0ce	; 0x1e0ce <strrev>

0001e220 <__mulsi_const_10>:
   1e220:	59 2f       	mov	r21, r25
   1e222:	48 2f       	mov	r20, r24
   1e224:	37 2f       	mov	r19, r23
   1e226:	26 2f       	mov	r18, r22
   1e228:	66 0f       	add	r22, r22
   1e22a:	77 1f       	adc	r23, r23
   1e22c:	88 1f       	adc	r24, r24
   1e22e:	99 1f       	adc	r25, r25
   1e230:	66 0f       	add	r22, r22
   1e232:	77 1f       	adc	r23, r23
   1e234:	88 1f       	adc	r24, r24
   1e236:	99 1f       	adc	r25, r25
   1e238:	62 0f       	add	r22, r18
   1e23a:	73 1f       	adc	r23, r19
   1e23c:	84 1f       	adc	r24, r20
   1e23e:	95 1f       	adc	r25, r21
   1e240:	66 0f       	add	r22, r22
   1e242:	77 1f       	adc	r23, r23
   1e244:	88 1f       	adc	r24, r24
   1e246:	99 1f       	adc	r25, r25
   1e248:	08 95       	ret

0001e24a <__mulhi_const_10>:
   1e24a:	7a e0       	ldi	r23, 0x0A	; 10
   1e24c:	97 9f       	mul	r25, r23
   1e24e:	90 2d       	mov	r25, r0
   1e250:	87 9f       	mul	r24, r23
   1e252:	80 2d       	mov	r24, r0
   1e254:	91 0d       	add	r25, r1
   1e256:	11 24       	eor	r1, r1
   1e258:	08 95       	ret

0001e25a <sprintf>:
   1e25a:	ae e0       	ldi	r26, 0x0E	; 14
   1e25c:	b0 e0       	ldi	r27, 0x00	; 0
   1e25e:	e3 e3       	ldi	r30, 0x33	; 51
   1e260:	f1 ef       	ldi	r31, 0xF1	; 241
   1e262:	0c 94 8e f4 	jmp	0x1e91c	; 0x1e91c <__prologue_saves__+0x1c>
   1e266:	0e 89       	ldd	r16, Y+22	; 0x16
   1e268:	1f 89       	ldd	r17, Y+23	; 0x17
   1e26a:	86 e0       	ldi	r24, 0x06	; 6
   1e26c:	8c 83       	std	Y+4, r24	; 0x04
   1e26e:	1a 83       	std	Y+2, r17	; 0x02
   1e270:	09 83       	std	Y+1, r16	; 0x01
   1e272:	8f ef       	ldi	r24, 0xFF	; 255
   1e274:	9f e7       	ldi	r25, 0x7F	; 127
   1e276:	9e 83       	std	Y+6, r25	; 0x06
   1e278:	8d 83       	std	Y+5, r24	; 0x05
   1e27a:	9e 01       	movw	r18, r28
   1e27c:	26 5e       	subi	r18, 0xE6	; 230
   1e27e:	3f 4f       	sbci	r19, 0xFF	; 255
   1e280:	ce 01       	movw	r24, r28
   1e282:	01 96       	adiw	r24, 0x01	; 1
   1e284:	68 8d       	ldd	r22, Y+24	; 0x18
   1e286:	79 8d       	ldd	r23, Y+25	; 0x19
   1e288:	a9 01       	movw	r20, r18
   1e28a:	0e 94 75 f1 	call	0x1e2ea	; 0x1e2ea <vfprintf>
   1e28e:	2f 81       	ldd	r18, Y+7	; 0x07
   1e290:	38 85       	ldd	r19, Y+8	; 0x08
   1e292:	02 0f       	add	r16, r18
   1e294:	13 1f       	adc	r17, r19
   1e296:	f8 01       	movw	r30, r16
   1e298:	10 82       	st	Z, r1
   1e29a:	2e 96       	adiw	r28, 0x0e	; 14
   1e29c:	e4 e0       	ldi	r30, 0x04	; 4
   1e29e:	0c 94 aa f4 	jmp	0x1e954	; 0x1e954 <__epilogue_restores__+0x1c>

0001e2a2 <sprintf_P>:
   1e2a2:	ae e0       	ldi	r26, 0x0E	; 14
   1e2a4:	b0 e0       	ldi	r27, 0x00	; 0
   1e2a6:	e7 e5       	ldi	r30, 0x57	; 87
   1e2a8:	f1 ef       	ldi	r31, 0xF1	; 241
   1e2aa:	0c 94 8e f4 	jmp	0x1e91c	; 0x1e91c <__prologue_saves__+0x1c>
   1e2ae:	0e 89       	ldd	r16, Y+22	; 0x16
   1e2b0:	1f 89       	ldd	r17, Y+23	; 0x17
   1e2b2:	8e e0       	ldi	r24, 0x0E	; 14
   1e2b4:	8c 83       	std	Y+4, r24	; 0x04
   1e2b6:	1a 83       	std	Y+2, r17	; 0x02
   1e2b8:	09 83       	std	Y+1, r16	; 0x01
   1e2ba:	8f ef       	ldi	r24, 0xFF	; 255
   1e2bc:	9f e7       	ldi	r25, 0x7F	; 127
   1e2be:	9e 83       	std	Y+6, r25	; 0x06
   1e2c0:	8d 83       	std	Y+5, r24	; 0x05
   1e2c2:	9e 01       	movw	r18, r28
   1e2c4:	26 5e       	subi	r18, 0xE6	; 230
   1e2c6:	3f 4f       	sbci	r19, 0xFF	; 255
   1e2c8:	ce 01       	movw	r24, r28
   1e2ca:	01 96       	adiw	r24, 0x01	; 1
   1e2cc:	68 8d       	ldd	r22, Y+24	; 0x18
   1e2ce:	79 8d       	ldd	r23, Y+25	; 0x19
   1e2d0:	a9 01       	movw	r20, r18
   1e2d2:	0e 94 75 f1 	call	0x1e2ea	; 0x1e2ea <vfprintf>
   1e2d6:	2f 81       	ldd	r18, Y+7	; 0x07
   1e2d8:	38 85       	ldd	r19, Y+8	; 0x08
   1e2da:	02 0f       	add	r16, r18
   1e2dc:	13 1f       	adc	r17, r19
   1e2de:	f8 01       	movw	r30, r16
   1e2e0:	10 82       	st	Z, r1
   1e2e2:	2e 96       	adiw	r28, 0x0e	; 14
   1e2e4:	e4 e0       	ldi	r30, 0x04	; 4
   1e2e6:	0c 94 aa f4 	jmp	0x1e954	; 0x1e954 <__epilogue_restores__+0x1c>

0001e2ea <vfprintf>:
   1e2ea:	ab e0       	ldi	r26, 0x0B	; 11
   1e2ec:	b0 e0       	ldi	r27, 0x00	; 0
   1e2ee:	eb e7       	ldi	r30, 0x7B	; 123
   1e2f0:	f1 ef       	ldi	r31, 0xF1	; 241
   1e2f2:	0c 94 80 f4 	jmp	0x1e900	; 0x1e900 <__prologue_saves__>
   1e2f6:	3c 01       	movw	r6, r24
   1e2f8:	2b 01       	movw	r4, r22
   1e2fa:	5a 01       	movw	r10, r20
   1e2fc:	fc 01       	movw	r30, r24
   1e2fe:	17 82       	std	Z+7, r1	; 0x07
   1e300:	16 82       	std	Z+6, r1	; 0x06
   1e302:	83 81       	ldd	r24, Z+3	; 0x03
   1e304:	81 fd       	sbrc	r24, 1
   1e306:	03 c0       	rjmp	.+6      	; 0x1e30e <vfprintf+0x24>
   1e308:	6f ef       	ldi	r22, 0xFF	; 255
   1e30a:	7f ef       	ldi	r23, 0xFF	; 255
   1e30c:	c6 c1       	rjmp	.+908    	; 0x1e69a <vfprintf+0x3b0>
   1e30e:	9a e0       	ldi	r25, 0x0A	; 10
   1e310:	89 2e       	mov	r8, r25
   1e312:	1e 01       	movw	r2, r28
   1e314:	08 94       	sec
   1e316:	21 1c       	adc	r2, r1
   1e318:	31 1c       	adc	r3, r1
   1e31a:	f3 01       	movw	r30, r6
   1e31c:	23 81       	ldd	r18, Z+3	; 0x03
   1e31e:	f2 01       	movw	r30, r4
   1e320:	23 fd       	sbrc	r18, 3
   1e322:	85 91       	lpm	r24, Z+
   1e324:	23 ff       	sbrs	r18, 3
   1e326:	81 91       	ld	r24, Z+
   1e328:	2f 01       	movw	r4, r30
   1e32a:	88 23       	and	r24, r24
   1e32c:	09 f4       	brne	.+2      	; 0x1e330 <vfprintf+0x46>
   1e32e:	b2 c1       	rjmp	.+868    	; 0x1e694 <vfprintf+0x3aa>
   1e330:	85 32       	cpi	r24, 0x25	; 37
   1e332:	39 f4       	brne	.+14     	; 0x1e342 <vfprintf+0x58>
   1e334:	23 fd       	sbrc	r18, 3
   1e336:	85 91       	lpm	r24, Z+
   1e338:	23 ff       	sbrs	r18, 3
   1e33a:	81 91       	ld	r24, Z+
   1e33c:	2f 01       	movw	r4, r30
   1e33e:	85 32       	cpi	r24, 0x25	; 37
   1e340:	29 f4       	brne	.+10     	; 0x1e34c <vfprintf+0x62>
   1e342:	90 e0       	ldi	r25, 0x00	; 0
   1e344:	b3 01       	movw	r22, r6
   1e346:	0e 94 68 f3 	call	0x1e6d0	; 0x1e6d0 <fputc>
   1e34a:	e7 cf       	rjmp	.-50     	; 0x1e31a <vfprintf+0x30>
   1e34c:	98 2f       	mov	r25, r24
   1e34e:	ff 24       	eor	r15, r15
   1e350:	ee 24       	eor	r14, r14
   1e352:	99 24       	eor	r9, r9
   1e354:	ff e1       	ldi	r31, 0x1F	; 31
   1e356:	ff 15       	cp	r31, r15
   1e358:	d0 f0       	brcs	.+52     	; 0x1e38e <vfprintf+0xa4>
   1e35a:	9b 32       	cpi	r25, 0x2B	; 43
   1e35c:	69 f0       	breq	.+26     	; 0x1e378 <vfprintf+0x8e>
   1e35e:	9c 32       	cpi	r25, 0x2C	; 44
   1e360:	28 f4       	brcc	.+10     	; 0x1e36c <vfprintf+0x82>
   1e362:	90 32       	cpi	r25, 0x20	; 32
   1e364:	59 f0       	breq	.+22     	; 0x1e37c <vfprintf+0x92>
   1e366:	93 32       	cpi	r25, 0x23	; 35
   1e368:	91 f4       	brne	.+36     	; 0x1e38e <vfprintf+0xa4>
   1e36a:	0e c0       	rjmp	.+28     	; 0x1e388 <vfprintf+0x9e>
   1e36c:	9d 32       	cpi	r25, 0x2D	; 45
   1e36e:	49 f0       	breq	.+18     	; 0x1e382 <vfprintf+0x98>
   1e370:	90 33       	cpi	r25, 0x30	; 48
   1e372:	69 f4       	brne	.+26     	; 0x1e38e <vfprintf+0xa4>
   1e374:	41 e0       	ldi	r20, 0x01	; 1
   1e376:	24 c0       	rjmp	.+72     	; 0x1e3c0 <vfprintf+0xd6>
   1e378:	52 e0       	ldi	r21, 0x02	; 2
   1e37a:	f5 2a       	or	r15, r21
   1e37c:	84 e0       	ldi	r24, 0x04	; 4
   1e37e:	f8 2a       	or	r15, r24
   1e380:	28 c0       	rjmp	.+80     	; 0x1e3d2 <vfprintf+0xe8>
   1e382:	98 e0       	ldi	r25, 0x08	; 8
   1e384:	f9 2a       	or	r15, r25
   1e386:	25 c0       	rjmp	.+74     	; 0x1e3d2 <vfprintf+0xe8>
   1e388:	e0 e1       	ldi	r30, 0x10	; 16
   1e38a:	fe 2a       	or	r15, r30
   1e38c:	22 c0       	rjmp	.+68     	; 0x1e3d2 <vfprintf+0xe8>
   1e38e:	f7 fc       	sbrc	r15, 7
   1e390:	29 c0       	rjmp	.+82     	; 0x1e3e4 <vfprintf+0xfa>
   1e392:	89 2f       	mov	r24, r25
   1e394:	80 53       	subi	r24, 0x30	; 48
   1e396:	8a 30       	cpi	r24, 0x0A	; 10
   1e398:	70 f4       	brcc	.+28     	; 0x1e3b6 <vfprintf+0xcc>
   1e39a:	f6 fe       	sbrs	r15, 6
   1e39c:	05 c0       	rjmp	.+10     	; 0x1e3a8 <vfprintf+0xbe>
   1e39e:	98 9c       	mul	r9, r8
   1e3a0:	90 2c       	mov	r9, r0
   1e3a2:	11 24       	eor	r1, r1
   1e3a4:	98 0e       	add	r9, r24
   1e3a6:	15 c0       	rjmp	.+42     	; 0x1e3d2 <vfprintf+0xe8>
   1e3a8:	e8 9c       	mul	r14, r8
   1e3aa:	e0 2c       	mov	r14, r0
   1e3ac:	11 24       	eor	r1, r1
   1e3ae:	e8 0e       	add	r14, r24
   1e3b0:	f0 e2       	ldi	r31, 0x20	; 32
   1e3b2:	ff 2a       	or	r15, r31
   1e3b4:	0e c0       	rjmp	.+28     	; 0x1e3d2 <vfprintf+0xe8>
   1e3b6:	9e 32       	cpi	r25, 0x2E	; 46
   1e3b8:	29 f4       	brne	.+10     	; 0x1e3c4 <vfprintf+0xda>
   1e3ba:	f6 fc       	sbrc	r15, 6
   1e3bc:	6b c1       	rjmp	.+726    	; 0x1e694 <vfprintf+0x3aa>
   1e3be:	40 e4       	ldi	r20, 0x40	; 64
   1e3c0:	f4 2a       	or	r15, r20
   1e3c2:	07 c0       	rjmp	.+14     	; 0x1e3d2 <vfprintf+0xe8>
   1e3c4:	9c 36       	cpi	r25, 0x6C	; 108
   1e3c6:	19 f4       	brne	.+6      	; 0x1e3ce <vfprintf+0xe4>
   1e3c8:	50 e8       	ldi	r21, 0x80	; 128
   1e3ca:	f5 2a       	or	r15, r21
   1e3cc:	02 c0       	rjmp	.+4      	; 0x1e3d2 <vfprintf+0xe8>
   1e3ce:	98 36       	cpi	r25, 0x68	; 104
   1e3d0:	49 f4       	brne	.+18     	; 0x1e3e4 <vfprintf+0xfa>
   1e3d2:	f2 01       	movw	r30, r4
   1e3d4:	23 fd       	sbrc	r18, 3
   1e3d6:	95 91       	lpm	r25, Z+
   1e3d8:	23 ff       	sbrs	r18, 3
   1e3da:	91 91       	ld	r25, Z+
   1e3dc:	2f 01       	movw	r4, r30
   1e3de:	99 23       	and	r25, r25
   1e3e0:	09 f0       	breq	.+2      	; 0x1e3e4 <vfprintf+0xfa>
   1e3e2:	b8 cf       	rjmp	.-144    	; 0x1e354 <vfprintf+0x6a>
   1e3e4:	89 2f       	mov	r24, r25
   1e3e6:	85 54       	subi	r24, 0x45	; 69
   1e3e8:	83 30       	cpi	r24, 0x03	; 3
   1e3ea:	18 f0       	brcs	.+6      	; 0x1e3f2 <vfprintf+0x108>
   1e3ec:	80 52       	subi	r24, 0x20	; 32
   1e3ee:	83 30       	cpi	r24, 0x03	; 3
   1e3f0:	38 f4       	brcc	.+14     	; 0x1e400 <vfprintf+0x116>
   1e3f2:	44 e0       	ldi	r20, 0x04	; 4
   1e3f4:	50 e0       	ldi	r21, 0x00	; 0
   1e3f6:	a4 0e       	add	r10, r20
   1e3f8:	b5 1e       	adc	r11, r21
   1e3fa:	5f e3       	ldi	r21, 0x3F	; 63
   1e3fc:	59 83       	std	Y+1, r21	; 0x01
   1e3fe:	0f c0       	rjmp	.+30     	; 0x1e41e <vfprintf+0x134>
   1e400:	93 36       	cpi	r25, 0x63	; 99
   1e402:	31 f0       	breq	.+12     	; 0x1e410 <vfprintf+0x126>
   1e404:	93 37       	cpi	r25, 0x73	; 115
   1e406:	79 f0       	breq	.+30     	; 0x1e426 <vfprintf+0x13c>
   1e408:	93 35       	cpi	r25, 0x53	; 83
   1e40a:	09 f0       	breq	.+2      	; 0x1e40e <vfprintf+0x124>
   1e40c:	56 c0       	rjmp	.+172    	; 0x1e4ba <vfprintf+0x1d0>
   1e40e:	20 c0       	rjmp	.+64     	; 0x1e450 <vfprintf+0x166>
   1e410:	f5 01       	movw	r30, r10
   1e412:	80 81       	ld	r24, Z
   1e414:	89 83       	std	Y+1, r24	; 0x01
   1e416:	42 e0       	ldi	r20, 0x02	; 2
   1e418:	50 e0       	ldi	r21, 0x00	; 0
   1e41a:	a4 0e       	add	r10, r20
   1e41c:	b5 1e       	adc	r11, r21
   1e41e:	61 01       	movw	r12, r2
   1e420:	01 e0       	ldi	r16, 0x01	; 1
   1e422:	10 e0       	ldi	r17, 0x00	; 0
   1e424:	12 c0       	rjmp	.+36     	; 0x1e44a <vfprintf+0x160>
   1e426:	f5 01       	movw	r30, r10
   1e428:	c0 80       	ld	r12, Z
   1e42a:	d1 80       	ldd	r13, Z+1	; 0x01
   1e42c:	f6 fc       	sbrc	r15, 6
   1e42e:	03 c0       	rjmp	.+6      	; 0x1e436 <vfprintf+0x14c>
   1e430:	6f ef       	ldi	r22, 0xFF	; 255
   1e432:	7f ef       	ldi	r23, 0xFF	; 255
   1e434:	02 c0       	rjmp	.+4      	; 0x1e43a <vfprintf+0x150>
   1e436:	69 2d       	mov	r22, r9
   1e438:	70 e0       	ldi	r23, 0x00	; 0
   1e43a:	42 e0       	ldi	r20, 0x02	; 2
   1e43c:	50 e0       	ldi	r21, 0x00	; 0
   1e43e:	a4 0e       	add	r10, r20
   1e440:	b5 1e       	adc	r11, r21
   1e442:	c6 01       	movw	r24, r12
   1e444:	0e 94 5d f3 	call	0x1e6ba	; 0x1e6ba <strnlen>
   1e448:	8c 01       	movw	r16, r24
   1e44a:	5f e7       	ldi	r21, 0x7F	; 127
   1e44c:	f5 22       	and	r15, r21
   1e44e:	14 c0       	rjmp	.+40     	; 0x1e478 <vfprintf+0x18e>
   1e450:	f5 01       	movw	r30, r10
   1e452:	c0 80       	ld	r12, Z
   1e454:	d1 80       	ldd	r13, Z+1	; 0x01
   1e456:	f6 fc       	sbrc	r15, 6
   1e458:	03 c0       	rjmp	.+6      	; 0x1e460 <vfprintf+0x176>
   1e45a:	6f ef       	ldi	r22, 0xFF	; 255
   1e45c:	7f ef       	ldi	r23, 0xFF	; 255
   1e45e:	02 c0       	rjmp	.+4      	; 0x1e464 <vfprintf+0x17a>
   1e460:	69 2d       	mov	r22, r9
   1e462:	70 e0       	ldi	r23, 0x00	; 0
   1e464:	42 e0       	ldi	r20, 0x02	; 2
   1e466:	50 e0       	ldi	r21, 0x00	; 0
   1e468:	a4 0e       	add	r10, r20
   1e46a:	b5 1e       	adc	r11, r21
   1e46c:	c6 01       	movw	r24, r12
   1e46e:	0e 94 52 f3 	call	0x1e6a4	; 0x1e6a4 <strnlen_P>
   1e472:	8c 01       	movw	r16, r24
   1e474:	50 e8       	ldi	r21, 0x80	; 128
   1e476:	f5 2a       	or	r15, r21
   1e478:	f3 fe       	sbrs	r15, 3
   1e47a:	07 c0       	rjmp	.+14     	; 0x1e48a <vfprintf+0x1a0>
   1e47c:	1a c0       	rjmp	.+52     	; 0x1e4b2 <vfprintf+0x1c8>
   1e47e:	80 e2       	ldi	r24, 0x20	; 32
   1e480:	90 e0       	ldi	r25, 0x00	; 0
   1e482:	b3 01       	movw	r22, r6
   1e484:	0e 94 68 f3 	call	0x1e6d0	; 0x1e6d0 <fputc>
   1e488:	ea 94       	dec	r14
   1e48a:	8e 2d       	mov	r24, r14
   1e48c:	90 e0       	ldi	r25, 0x00	; 0
   1e48e:	08 17       	cp	r16, r24
   1e490:	19 07       	cpc	r17, r25
   1e492:	a8 f3       	brcs	.-22     	; 0x1e47e <vfprintf+0x194>
   1e494:	0e c0       	rjmp	.+28     	; 0x1e4b2 <vfprintf+0x1c8>
   1e496:	f6 01       	movw	r30, r12
   1e498:	f7 fc       	sbrc	r15, 7
   1e49a:	85 91       	lpm	r24, Z+
   1e49c:	f7 fe       	sbrs	r15, 7
   1e49e:	81 91       	ld	r24, Z+
   1e4a0:	6f 01       	movw	r12, r30
   1e4a2:	90 e0       	ldi	r25, 0x00	; 0
   1e4a4:	b3 01       	movw	r22, r6
   1e4a6:	0e 94 68 f3 	call	0x1e6d0	; 0x1e6d0 <fputc>
   1e4aa:	e1 10       	cpse	r14, r1
   1e4ac:	ea 94       	dec	r14
   1e4ae:	01 50       	subi	r16, 0x01	; 1
   1e4b0:	10 40       	sbci	r17, 0x00	; 0
   1e4b2:	01 15       	cp	r16, r1
   1e4b4:	11 05       	cpc	r17, r1
   1e4b6:	79 f7       	brne	.-34     	; 0x1e496 <vfprintf+0x1ac>
   1e4b8:	ea c0       	rjmp	.+468    	; 0x1e68e <vfprintf+0x3a4>
   1e4ba:	94 36       	cpi	r25, 0x64	; 100
   1e4bc:	11 f0       	breq	.+4      	; 0x1e4c2 <vfprintf+0x1d8>
   1e4be:	99 36       	cpi	r25, 0x69	; 105
   1e4c0:	69 f5       	brne	.+90     	; 0x1e51c <vfprintf+0x232>
   1e4c2:	f7 fe       	sbrs	r15, 7
   1e4c4:	08 c0       	rjmp	.+16     	; 0x1e4d6 <vfprintf+0x1ec>
   1e4c6:	f5 01       	movw	r30, r10
   1e4c8:	20 81       	ld	r18, Z
   1e4ca:	31 81       	ldd	r19, Z+1	; 0x01
   1e4cc:	42 81       	ldd	r20, Z+2	; 0x02
   1e4ce:	53 81       	ldd	r21, Z+3	; 0x03
   1e4d0:	84 e0       	ldi	r24, 0x04	; 4
   1e4d2:	90 e0       	ldi	r25, 0x00	; 0
   1e4d4:	0a c0       	rjmp	.+20     	; 0x1e4ea <vfprintf+0x200>
   1e4d6:	f5 01       	movw	r30, r10
   1e4d8:	80 81       	ld	r24, Z
   1e4da:	91 81       	ldd	r25, Z+1	; 0x01
   1e4dc:	9c 01       	movw	r18, r24
   1e4de:	44 27       	eor	r20, r20
   1e4e0:	37 fd       	sbrc	r19, 7
   1e4e2:	40 95       	com	r20
   1e4e4:	54 2f       	mov	r21, r20
   1e4e6:	82 e0       	ldi	r24, 0x02	; 2
   1e4e8:	90 e0       	ldi	r25, 0x00	; 0
   1e4ea:	a8 0e       	add	r10, r24
   1e4ec:	b9 1e       	adc	r11, r25
   1e4ee:	9f e6       	ldi	r25, 0x6F	; 111
   1e4f0:	f9 22       	and	r15, r25
   1e4f2:	57 ff       	sbrs	r21, 7
   1e4f4:	09 c0       	rjmp	.+18     	; 0x1e508 <vfprintf+0x21e>
   1e4f6:	50 95       	com	r21
   1e4f8:	40 95       	com	r20
   1e4fa:	30 95       	com	r19
   1e4fc:	21 95       	neg	r18
   1e4fe:	3f 4f       	sbci	r19, 0xFF	; 255
   1e500:	4f 4f       	sbci	r20, 0xFF	; 255
   1e502:	5f 4f       	sbci	r21, 0xFF	; 255
   1e504:	e0 e8       	ldi	r30, 0x80	; 128
   1e506:	fe 2a       	or	r15, r30
   1e508:	ca 01       	movw	r24, r20
   1e50a:	b9 01       	movw	r22, r18
   1e50c:	a1 01       	movw	r20, r2
   1e50e:	2a e0       	ldi	r18, 0x0A	; 10
   1e510:	30 e0       	ldi	r19, 0x00	; 0
   1e512:	0e 94 94 f3 	call	0x1e728	; 0x1e728 <__ultoa_invert>
   1e516:	d8 2e       	mov	r13, r24
   1e518:	d2 18       	sub	r13, r2
   1e51a:	40 c0       	rjmp	.+128    	; 0x1e59c <vfprintf+0x2b2>
   1e51c:	95 37       	cpi	r25, 0x75	; 117
   1e51e:	29 f4       	brne	.+10     	; 0x1e52a <vfprintf+0x240>
   1e520:	1f 2d       	mov	r17, r15
   1e522:	1f 7e       	andi	r17, 0xEF	; 239
   1e524:	2a e0       	ldi	r18, 0x0A	; 10
   1e526:	30 e0       	ldi	r19, 0x00	; 0
   1e528:	1d c0       	rjmp	.+58     	; 0x1e564 <vfprintf+0x27a>
   1e52a:	1f 2d       	mov	r17, r15
   1e52c:	19 7f       	andi	r17, 0xF9	; 249
   1e52e:	9f 36       	cpi	r25, 0x6F	; 111
   1e530:	61 f0       	breq	.+24     	; 0x1e54a <vfprintf+0x260>
   1e532:	90 37       	cpi	r25, 0x70	; 112
   1e534:	20 f4       	brcc	.+8      	; 0x1e53e <vfprintf+0x254>
   1e536:	98 35       	cpi	r25, 0x58	; 88
   1e538:	09 f0       	breq	.+2      	; 0x1e53c <vfprintf+0x252>
   1e53a:	ac c0       	rjmp	.+344    	; 0x1e694 <vfprintf+0x3aa>
   1e53c:	0f c0       	rjmp	.+30     	; 0x1e55c <vfprintf+0x272>
   1e53e:	90 37       	cpi	r25, 0x70	; 112
   1e540:	39 f0       	breq	.+14     	; 0x1e550 <vfprintf+0x266>
   1e542:	98 37       	cpi	r25, 0x78	; 120
   1e544:	09 f0       	breq	.+2      	; 0x1e548 <vfprintf+0x25e>
   1e546:	a6 c0       	rjmp	.+332    	; 0x1e694 <vfprintf+0x3aa>
   1e548:	04 c0       	rjmp	.+8      	; 0x1e552 <vfprintf+0x268>
   1e54a:	28 e0       	ldi	r18, 0x08	; 8
   1e54c:	30 e0       	ldi	r19, 0x00	; 0
   1e54e:	0a c0       	rjmp	.+20     	; 0x1e564 <vfprintf+0x27a>
   1e550:	10 61       	ori	r17, 0x10	; 16
   1e552:	14 fd       	sbrc	r17, 4
   1e554:	14 60       	ori	r17, 0x04	; 4
   1e556:	20 e1       	ldi	r18, 0x10	; 16
   1e558:	30 e0       	ldi	r19, 0x00	; 0
   1e55a:	04 c0       	rjmp	.+8      	; 0x1e564 <vfprintf+0x27a>
   1e55c:	14 fd       	sbrc	r17, 4
   1e55e:	16 60       	ori	r17, 0x06	; 6
   1e560:	20 e1       	ldi	r18, 0x10	; 16
   1e562:	32 e0       	ldi	r19, 0x02	; 2
   1e564:	17 ff       	sbrs	r17, 7
   1e566:	08 c0       	rjmp	.+16     	; 0x1e578 <vfprintf+0x28e>
   1e568:	f5 01       	movw	r30, r10
   1e56a:	60 81       	ld	r22, Z
   1e56c:	71 81       	ldd	r23, Z+1	; 0x01
   1e56e:	82 81       	ldd	r24, Z+2	; 0x02
   1e570:	93 81       	ldd	r25, Z+3	; 0x03
   1e572:	44 e0       	ldi	r20, 0x04	; 4
   1e574:	50 e0       	ldi	r21, 0x00	; 0
   1e576:	08 c0       	rjmp	.+16     	; 0x1e588 <vfprintf+0x29e>
   1e578:	f5 01       	movw	r30, r10
   1e57a:	80 81       	ld	r24, Z
   1e57c:	91 81       	ldd	r25, Z+1	; 0x01
   1e57e:	bc 01       	movw	r22, r24
   1e580:	80 e0       	ldi	r24, 0x00	; 0
   1e582:	90 e0       	ldi	r25, 0x00	; 0
   1e584:	42 e0       	ldi	r20, 0x02	; 2
   1e586:	50 e0       	ldi	r21, 0x00	; 0
   1e588:	a4 0e       	add	r10, r20
   1e58a:	b5 1e       	adc	r11, r21
   1e58c:	a1 01       	movw	r20, r2
   1e58e:	0e 94 94 f3 	call	0x1e728	; 0x1e728 <__ultoa_invert>
   1e592:	d8 2e       	mov	r13, r24
   1e594:	d2 18       	sub	r13, r2
   1e596:	8f e7       	ldi	r24, 0x7F	; 127
   1e598:	f8 2e       	mov	r15, r24
   1e59a:	f1 22       	and	r15, r17
   1e59c:	f6 fe       	sbrs	r15, 6
   1e59e:	0b c0       	rjmp	.+22     	; 0x1e5b6 <vfprintf+0x2cc>
   1e5a0:	5e ef       	ldi	r21, 0xFE	; 254
   1e5a2:	f5 22       	and	r15, r21
   1e5a4:	d9 14       	cp	r13, r9
   1e5a6:	38 f4       	brcc	.+14     	; 0x1e5b6 <vfprintf+0x2cc>
   1e5a8:	f4 fe       	sbrs	r15, 4
   1e5aa:	07 c0       	rjmp	.+14     	; 0x1e5ba <vfprintf+0x2d0>
   1e5ac:	f2 fc       	sbrc	r15, 2
   1e5ae:	05 c0       	rjmp	.+10     	; 0x1e5ba <vfprintf+0x2d0>
   1e5b0:	8f ee       	ldi	r24, 0xEF	; 239
   1e5b2:	f8 22       	and	r15, r24
   1e5b4:	02 c0       	rjmp	.+4      	; 0x1e5ba <vfprintf+0x2d0>
   1e5b6:	1d 2d       	mov	r17, r13
   1e5b8:	01 c0       	rjmp	.+2      	; 0x1e5bc <vfprintf+0x2d2>
   1e5ba:	19 2d       	mov	r17, r9
   1e5bc:	f4 fe       	sbrs	r15, 4
   1e5be:	0d c0       	rjmp	.+26     	; 0x1e5da <vfprintf+0x2f0>
   1e5c0:	fe 01       	movw	r30, r28
   1e5c2:	ed 0d       	add	r30, r13
   1e5c4:	f1 1d       	adc	r31, r1
   1e5c6:	80 81       	ld	r24, Z
   1e5c8:	80 33       	cpi	r24, 0x30	; 48
   1e5ca:	19 f4       	brne	.+6      	; 0x1e5d2 <vfprintf+0x2e8>
   1e5cc:	99 ee       	ldi	r25, 0xE9	; 233
   1e5ce:	f9 22       	and	r15, r25
   1e5d0:	08 c0       	rjmp	.+16     	; 0x1e5e2 <vfprintf+0x2f8>
   1e5d2:	1f 5f       	subi	r17, 0xFF	; 255
   1e5d4:	f2 fe       	sbrs	r15, 2
   1e5d6:	05 c0       	rjmp	.+10     	; 0x1e5e2 <vfprintf+0x2f8>
   1e5d8:	03 c0       	rjmp	.+6      	; 0x1e5e0 <vfprintf+0x2f6>
   1e5da:	8f 2d       	mov	r24, r15
   1e5dc:	86 78       	andi	r24, 0x86	; 134
   1e5de:	09 f0       	breq	.+2      	; 0x1e5e2 <vfprintf+0x2f8>
   1e5e0:	1f 5f       	subi	r17, 0xFF	; 255
   1e5e2:	0f 2d       	mov	r16, r15
   1e5e4:	f3 fc       	sbrc	r15, 3
   1e5e6:	14 c0       	rjmp	.+40     	; 0x1e610 <vfprintf+0x326>
   1e5e8:	f0 fe       	sbrs	r15, 0
   1e5ea:	0f c0       	rjmp	.+30     	; 0x1e60a <vfprintf+0x320>
   1e5ec:	1e 15       	cp	r17, r14
   1e5ee:	10 f0       	brcs	.+4      	; 0x1e5f4 <vfprintf+0x30a>
   1e5f0:	9d 2c       	mov	r9, r13
   1e5f2:	0b c0       	rjmp	.+22     	; 0x1e60a <vfprintf+0x320>
   1e5f4:	9d 2c       	mov	r9, r13
   1e5f6:	9e 0c       	add	r9, r14
   1e5f8:	91 1a       	sub	r9, r17
   1e5fa:	1e 2d       	mov	r17, r14
   1e5fc:	06 c0       	rjmp	.+12     	; 0x1e60a <vfprintf+0x320>
   1e5fe:	80 e2       	ldi	r24, 0x20	; 32
   1e600:	90 e0       	ldi	r25, 0x00	; 0
   1e602:	b3 01       	movw	r22, r6
   1e604:	0e 94 68 f3 	call	0x1e6d0	; 0x1e6d0 <fputc>
   1e608:	1f 5f       	subi	r17, 0xFF	; 255
   1e60a:	1e 15       	cp	r17, r14
   1e60c:	c0 f3       	brcs	.-16     	; 0x1e5fe <vfprintf+0x314>
   1e60e:	04 c0       	rjmp	.+8      	; 0x1e618 <vfprintf+0x32e>
   1e610:	1e 15       	cp	r17, r14
   1e612:	10 f4       	brcc	.+4      	; 0x1e618 <vfprintf+0x32e>
   1e614:	e1 1a       	sub	r14, r17
   1e616:	01 c0       	rjmp	.+2      	; 0x1e61a <vfprintf+0x330>
   1e618:	ee 24       	eor	r14, r14
   1e61a:	04 ff       	sbrs	r16, 4
   1e61c:	0f c0       	rjmp	.+30     	; 0x1e63c <vfprintf+0x352>
   1e61e:	80 e3       	ldi	r24, 0x30	; 48
   1e620:	90 e0       	ldi	r25, 0x00	; 0
   1e622:	b3 01       	movw	r22, r6
   1e624:	0e 94 68 f3 	call	0x1e6d0	; 0x1e6d0 <fputc>
   1e628:	02 ff       	sbrs	r16, 2
   1e62a:	1d c0       	rjmp	.+58     	; 0x1e666 <vfprintf+0x37c>
   1e62c:	01 fd       	sbrc	r16, 1
   1e62e:	03 c0       	rjmp	.+6      	; 0x1e636 <vfprintf+0x34c>
   1e630:	88 e7       	ldi	r24, 0x78	; 120
   1e632:	90 e0       	ldi	r25, 0x00	; 0
   1e634:	0e c0       	rjmp	.+28     	; 0x1e652 <vfprintf+0x368>
   1e636:	88 e5       	ldi	r24, 0x58	; 88
   1e638:	90 e0       	ldi	r25, 0x00	; 0
   1e63a:	0b c0       	rjmp	.+22     	; 0x1e652 <vfprintf+0x368>
   1e63c:	80 2f       	mov	r24, r16
   1e63e:	86 78       	andi	r24, 0x86	; 134
   1e640:	91 f0       	breq	.+36     	; 0x1e666 <vfprintf+0x37c>
   1e642:	01 ff       	sbrs	r16, 1
   1e644:	02 c0       	rjmp	.+4      	; 0x1e64a <vfprintf+0x360>
   1e646:	8b e2       	ldi	r24, 0x2B	; 43
   1e648:	01 c0       	rjmp	.+2      	; 0x1e64c <vfprintf+0x362>
   1e64a:	80 e2       	ldi	r24, 0x20	; 32
   1e64c:	f7 fc       	sbrc	r15, 7
   1e64e:	8d e2       	ldi	r24, 0x2D	; 45
   1e650:	90 e0       	ldi	r25, 0x00	; 0
   1e652:	b3 01       	movw	r22, r6
   1e654:	0e 94 68 f3 	call	0x1e6d0	; 0x1e6d0 <fputc>
   1e658:	06 c0       	rjmp	.+12     	; 0x1e666 <vfprintf+0x37c>
   1e65a:	80 e3       	ldi	r24, 0x30	; 48
   1e65c:	90 e0       	ldi	r25, 0x00	; 0
   1e65e:	b3 01       	movw	r22, r6
   1e660:	0e 94 68 f3 	call	0x1e6d0	; 0x1e6d0 <fputc>
   1e664:	9a 94       	dec	r9
   1e666:	d9 14       	cp	r13, r9
   1e668:	c0 f3       	brcs	.-16     	; 0x1e65a <vfprintf+0x370>
   1e66a:	da 94       	dec	r13
   1e66c:	f1 01       	movw	r30, r2
   1e66e:	ed 0d       	add	r30, r13
   1e670:	f1 1d       	adc	r31, r1
   1e672:	80 81       	ld	r24, Z
   1e674:	90 e0       	ldi	r25, 0x00	; 0
   1e676:	b3 01       	movw	r22, r6
   1e678:	0e 94 68 f3 	call	0x1e6d0	; 0x1e6d0 <fputc>
   1e67c:	dd 20       	and	r13, r13
   1e67e:	a9 f7       	brne	.-22     	; 0x1e66a <vfprintf+0x380>
   1e680:	06 c0       	rjmp	.+12     	; 0x1e68e <vfprintf+0x3a4>
   1e682:	80 e2       	ldi	r24, 0x20	; 32
   1e684:	90 e0       	ldi	r25, 0x00	; 0
   1e686:	b3 01       	movw	r22, r6
   1e688:	0e 94 68 f3 	call	0x1e6d0	; 0x1e6d0 <fputc>
   1e68c:	ea 94       	dec	r14
   1e68e:	ee 20       	and	r14, r14
   1e690:	c1 f7       	brne	.-16     	; 0x1e682 <vfprintf+0x398>
   1e692:	43 ce       	rjmp	.-890    	; 0x1e31a <vfprintf+0x30>
   1e694:	f3 01       	movw	r30, r6
   1e696:	66 81       	ldd	r22, Z+6	; 0x06
   1e698:	77 81       	ldd	r23, Z+7	; 0x07
   1e69a:	cb 01       	movw	r24, r22
   1e69c:	2b 96       	adiw	r28, 0x0b	; 11
   1e69e:	e2 e1       	ldi	r30, 0x12	; 18
   1e6a0:	0c 94 9c f4 	jmp	0x1e938	; 0x1e938 <__epilogue_restores__>

0001e6a4 <strnlen_P>:
   1e6a4:	fc 01       	movw	r30, r24
   1e6a6:	05 90       	lpm	r0, Z+
   1e6a8:	61 50       	subi	r22, 0x01	; 1
   1e6aa:	70 40       	sbci	r23, 0x00	; 0
   1e6ac:	01 10       	cpse	r0, r1
   1e6ae:	d8 f7       	brcc	.-10     	; 0x1e6a6 <strnlen_P+0x2>
   1e6b0:	80 95       	com	r24
   1e6b2:	90 95       	com	r25
   1e6b4:	8e 0f       	add	r24, r30
   1e6b6:	9f 1f       	adc	r25, r31
   1e6b8:	08 95       	ret

0001e6ba <strnlen>:
   1e6ba:	fc 01       	movw	r30, r24
   1e6bc:	61 50       	subi	r22, 0x01	; 1
   1e6be:	70 40       	sbci	r23, 0x00	; 0
   1e6c0:	01 90       	ld	r0, Z+
   1e6c2:	01 10       	cpse	r0, r1
   1e6c4:	d8 f7       	brcc	.-10     	; 0x1e6bc <strnlen+0x2>
   1e6c6:	80 95       	com	r24
   1e6c8:	90 95       	com	r25
   1e6ca:	8e 0f       	add	r24, r30
   1e6cc:	9f 1f       	adc	r25, r31
   1e6ce:	08 95       	ret

0001e6d0 <fputc>:
   1e6d0:	0f 93       	push	r16
   1e6d2:	1f 93       	push	r17
   1e6d4:	cf 93       	push	r28
   1e6d6:	df 93       	push	r29
   1e6d8:	8c 01       	movw	r16, r24
   1e6da:	eb 01       	movw	r28, r22
   1e6dc:	8b 81       	ldd	r24, Y+3	; 0x03
   1e6de:	81 ff       	sbrs	r24, 1
   1e6e0:	1b c0       	rjmp	.+54     	; 0x1e718 <fputc+0x48>
   1e6e2:	82 ff       	sbrs	r24, 2
   1e6e4:	0d c0       	rjmp	.+26     	; 0x1e700 <fputc+0x30>
   1e6e6:	2e 81       	ldd	r18, Y+6	; 0x06
   1e6e8:	3f 81       	ldd	r19, Y+7	; 0x07
   1e6ea:	8c 81       	ldd	r24, Y+4	; 0x04
   1e6ec:	9d 81       	ldd	r25, Y+5	; 0x05
   1e6ee:	28 17       	cp	r18, r24
   1e6f0:	39 07       	cpc	r19, r25
   1e6f2:	64 f4       	brge	.+24     	; 0x1e70c <fputc+0x3c>
   1e6f4:	e8 81       	ld	r30, Y
   1e6f6:	f9 81       	ldd	r31, Y+1	; 0x01
   1e6f8:	01 93       	st	Z+, r16
   1e6fa:	f9 83       	std	Y+1, r31	; 0x01
   1e6fc:	e8 83       	st	Y, r30
   1e6fe:	06 c0       	rjmp	.+12     	; 0x1e70c <fputc+0x3c>
   1e700:	e8 85       	ldd	r30, Y+8	; 0x08
   1e702:	f9 85       	ldd	r31, Y+9	; 0x09
   1e704:	80 2f       	mov	r24, r16
   1e706:	19 95       	eicall
   1e708:	89 2b       	or	r24, r25
   1e70a:	31 f4       	brne	.+12     	; 0x1e718 <fputc+0x48>
   1e70c:	8e 81       	ldd	r24, Y+6	; 0x06
   1e70e:	9f 81       	ldd	r25, Y+7	; 0x07
   1e710:	01 96       	adiw	r24, 0x01	; 1
   1e712:	9f 83       	std	Y+7, r25	; 0x07
   1e714:	8e 83       	std	Y+6, r24	; 0x06
   1e716:	02 c0       	rjmp	.+4      	; 0x1e71c <fputc+0x4c>
   1e718:	0f ef       	ldi	r16, 0xFF	; 255
   1e71a:	1f ef       	ldi	r17, 0xFF	; 255
   1e71c:	c8 01       	movw	r24, r16
   1e71e:	df 91       	pop	r29
   1e720:	cf 91       	pop	r28
   1e722:	1f 91       	pop	r17
   1e724:	0f 91       	pop	r16
   1e726:	08 95       	ret

0001e728 <__ultoa_invert>:
   1e728:	fa 01       	movw	r30, r20
   1e72a:	aa 27       	eor	r26, r26
   1e72c:	28 30       	cpi	r18, 0x08	; 8
   1e72e:	51 f1       	breq	.+84     	; 0x1e784 <__ultoa_invert+0x5c>
   1e730:	20 31       	cpi	r18, 0x10	; 16
   1e732:	81 f1       	breq	.+96     	; 0x1e794 <__ultoa_invert+0x6c>
   1e734:	e8 94       	clt
   1e736:	6f 93       	push	r22
   1e738:	6e 7f       	andi	r22, 0xFE	; 254
   1e73a:	6e 5f       	subi	r22, 0xFE	; 254
   1e73c:	7f 4f       	sbci	r23, 0xFF	; 255
   1e73e:	8f 4f       	sbci	r24, 0xFF	; 255
   1e740:	9f 4f       	sbci	r25, 0xFF	; 255
   1e742:	af 4f       	sbci	r26, 0xFF	; 255
   1e744:	b1 e0       	ldi	r27, 0x01	; 1
   1e746:	3e d0       	rcall	.+124    	; 0x1e7c4 <__ultoa_invert+0x9c>
   1e748:	b4 e0       	ldi	r27, 0x04	; 4
   1e74a:	3c d0       	rcall	.+120    	; 0x1e7c4 <__ultoa_invert+0x9c>
   1e74c:	67 0f       	add	r22, r23
   1e74e:	78 1f       	adc	r23, r24
   1e750:	89 1f       	adc	r24, r25
   1e752:	9a 1f       	adc	r25, r26
   1e754:	a1 1d       	adc	r26, r1
   1e756:	68 0f       	add	r22, r24
   1e758:	79 1f       	adc	r23, r25
   1e75a:	8a 1f       	adc	r24, r26
   1e75c:	91 1d       	adc	r25, r1
   1e75e:	a1 1d       	adc	r26, r1
   1e760:	6a 0f       	add	r22, r26
   1e762:	71 1d       	adc	r23, r1
   1e764:	81 1d       	adc	r24, r1
   1e766:	91 1d       	adc	r25, r1
   1e768:	a1 1d       	adc	r26, r1
   1e76a:	20 d0       	rcall	.+64     	; 0x1e7ac <__ultoa_invert+0x84>
   1e76c:	09 f4       	brne	.+2      	; 0x1e770 <__ultoa_invert+0x48>
   1e76e:	68 94       	set
   1e770:	3f 91       	pop	r19
   1e772:	2a e0       	ldi	r18, 0x0A	; 10
   1e774:	26 9f       	mul	r18, r22
   1e776:	11 24       	eor	r1, r1
   1e778:	30 19       	sub	r19, r0
   1e77a:	30 5d       	subi	r19, 0xD0	; 208
   1e77c:	31 93       	st	Z+, r19
   1e77e:	de f6       	brtc	.-74     	; 0x1e736 <__ultoa_invert+0xe>
   1e780:	cf 01       	movw	r24, r30
   1e782:	08 95       	ret
   1e784:	46 2f       	mov	r20, r22
   1e786:	47 70       	andi	r20, 0x07	; 7
   1e788:	40 5d       	subi	r20, 0xD0	; 208
   1e78a:	41 93       	st	Z+, r20
   1e78c:	b3 e0       	ldi	r27, 0x03	; 3
   1e78e:	0f d0       	rcall	.+30     	; 0x1e7ae <__ultoa_invert+0x86>
   1e790:	c9 f7       	brne	.-14     	; 0x1e784 <__ultoa_invert+0x5c>
   1e792:	f6 cf       	rjmp	.-20     	; 0x1e780 <__ultoa_invert+0x58>
   1e794:	46 2f       	mov	r20, r22
   1e796:	4f 70       	andi	r20, 0x0F	; 15
   1e798:	40 5d       	subi	r20, 0xD0	; 208
   1e79a:	4a 33       	cpi	r20, 0x3A	; 58
   1e79c:	18 f0       	brcs	.+6      	; 0x1e7a4 <__ultoa_invert+0x7c>
   1e79e:	49 5d       	subi	r20, 0xD9	; 217
   1e7a0:	31 fd       	sbrc	r19, 1
   1e7a2:	40 52       	subi	r20, 0x20	; 32
   1e7a4:	41 93       	st	Z+, r20
   1e7a6:	02 d0       	rcall	.+4      	; 0x1e7ac <__ultoa_invert+0x84>
   1e7a8:	a9 f7       	brne	.-22     	; 0x1e794 <__ultoa_invert+0x6c>
   1e7aa:	ea cf       	rjmp	.-44     	; 0x1e780 <__ultoa_invert+0x58>
   1e7ac:	b4 e0       	ldi	r27, 0x04	; 4
   1e7ae:	a6 95       	lsr	r26
   1e7b0:	97 95       	ror	r25
   1e7b2:	87 95       	ror	r24
   1e7b4:	77 95       	ror	r23
   1e7b6:	67 95       	ror	r22
   1e7b8:	ba 95       	dec	r27
   1e7ba:	c9 f7       	brne	.-14     	; 0x1e7ae <__ultoa_invert+0x86>
   1e7bc:	00 97       	sbiw	r24, 0x00	; 0
   1e7be:	61 05       	cpc	r22, r1
   1e7c0:	71 05       	cpc	r23, r1
   1e7c2:	08 95       	ret
   1e7c4:	9b 01       	movw	r18, r22
   1e7c6:	ac 01       	movw	r20, r24
   1e7c8:	0a 2e       	mov	r0, r26
   1e7ca:	06 94       	lsr	r0
   1e7cc:	57 95       	ror	r21
   1e7ce:	47 95       	ror	r20
   1e7d0:	37 95       	ror	r19
   1e7d2:	27 95       	ror	r18
   1e7d4:	ba 95       	dec	r27
   1e7d6:	c9 f7       	brne	.-14     	; 0x1e7ca <__ultoa_invert+0xa2>
   1e7d8:	62 0f       	add	r22, r18
   1e7da:	73 1f       	adc	r23, r19
   1e7dc:	84 1f       	adc	r24, r20
   1e7de:	95 1f       	adc	r25, r21
   1e7e0:	a0 1d       	adc	r26, r0
   1e7e2:	08 95       	ret

0001e7e4 <__mulsi3>:
   1e7e4:	62 9f       	mul	r22, r18
   1e7e6:	d0 01       	movw	r26, r0
   1e7e8:	73 9f       	mul	r23, r19
   1e7ea:	f0 01       	movw	r30, r0
   1e7ec:	82 9f       	mul	r24, r18
   1e7ee:	e0 0d       	add	r30, r0
   1e7f0:	f1 1d       	adc	r31, r1
   1e7f2:	64 9f       	mul	r22, r20
   1e7f4:	e0 0d       	add	r30, r0
   1e7f6:	f1 1d       	adc	r31, r1
   1e7f8:	92 9f       	mul	r25, r18
   1e7fa:	f0 0d       	add	r31, r0
   1e7fc:	83 9f       	mul	r24, r19
   1e7fe:	f0 0d       	add	r31, r0
   1e800:	74 9f       	mul	r23, r20
   1e802:	f0 0d       	add	r31, r0
   1e804:	65 9f       	mul	r22, r21
   1e806:	f0 0d       	add	r31, r0
   1e808:	99 27       	eor	r25, r25
   1e80a:	72 9f       	mul	r23, r18
   1e80c:	b0 0d       	add	r27, r0
   1e80e:	e1 1d       	adc	r30, r1
   1e810:	f9 1f       	adc	r31, r25
   1e812:	63 9f       	mul	r22, r19
   1e814:	b0 0d       	add	r27, r0
   1e816:	e1 1d       	adc	r30, r1
   1e818:	f9 1f       	adc	r31, r25
   1e81a:	bd 01       	movw	r22, r26
   1e81c:	cf 01       	movw	r24, r30
   1e81e:	11 24       	eor	r1, r1
   1e820:	08 95       	ret

0001e822 <__divmodhi4>:
   1e822:	97 fb       	bst	r25, 7
   1e824:	09 2e       	mov	r0, r25
   1e826:	07 26       	eor	r0, r23
   1e828:	0a d0       	rcall	.+20     	; 0x1e83e <__divmodhi4_neg1>
   1e82a:	77 fd       	sbrc	r23, 7
   1e82c:	04 d0       	rcall	.+8      	; 0x1e836 <__divmodhi4_neg2>
   1e82e:	49 d0       	rcall	.+146    	; 0x1e8c2 <__udivmodhi4>
   1e830:	06 d0       	rcall	.+12     	; 0x1e83e <__divmodhi4_neg1>
   1e832:	00 20       	and	r0, r0
   1e834:	1a f4       	brpl	.+6      	; 0x1e83c <__divmodhi4_exit>

0001e836 <__divmodhi4_neg2>:
   1e836:	70 95       	com	r23
   1e838:	61 95       	neg	r22
   1e83a:	7f 4f       	sbci	r23, 0xFF	; 255

0001e83c <__divmodhi4_exit>:
   1e83c:	08 95       	ret

0001e83e <__divmodhi4_neg1>:
   1e83e:	f6 f7       	brtc	.-4      	; 0x1e83c <__divmodhi4_exit>
   1e840:	90 95       	com	r25
   1e842:	81 95       	neg	r24
   1e844:	9f 4f       	sbci	r25, 0xFF	; 255
   1e846:	08 95       	ret

0001e848 <__udivmodsi4>:
   1e848:	a1 e2       	ldi	r26, 0x21	; 33
   1e84a:	1a 2e       	mov	r1, r26
   1e84c:	aa 1b       	sub	r26, r26
   1e84e:	bb 1b       	sub	r27, r27
   1e850:	fd 01       	movw	r30, r26
   1e852:	0d c0       	rjmp	.+26     	; 0x1e86e <__udivmodsi4_ep>

0001e854 <__udivmodsi4_loop>:
   1e854:	aa 1f       	adc	r26, r26
   1e856:	bb 1f       	adc	r27, r27
   1e858:	ee 1f       	adc	r30, r30
   1e85a:	ff 1f       	adc	r31, r31
   1e85c:	a2 17       	cp	r26, r18
   1e85e:	b3 07       	cpc	r27, r19
   1e860:	e4 07       	cpc	r30, r20
   1e862:	f5 07       	cpc	r31, r21
   1e864:	20 f0       	brcs	.+8      	; 0x1e86e <__udivmodsi4_ep>
   1e866:	a2 1b       	sub	r26, r18
   1e868:	b3 0b       	sbc	r27, r19
   1e86a:	e4 0b       	sbc	r30, r20
   1e86c:	f5 0b       	sbc	r31, r21

0001e86e <__udivmodsi4_ep>:
   1e86e:	66 1f       	adc	r22, r22
   1e870:	77 1f       	adc	r23, r23
   1e872:	88 1f       	adc	r24, r24
   1e874:	99 1f       	adc	r25, r25
   1e876:	1a 94       	dec	r1
   1e878:	69 f7       	brne	.-38     	; 0x1e854 <__udivmodsi4_loop>
   1e87a:	60 95       	com	r22
   1e87c:	70 95       	com	r23
   1e87e:	80 95       	com	r24
   1e880:	90 95       	com	r25
   1e882:	9b 01       	movw	r18, r22
   1e884:	ac 01       	movw	r20, r24
   1e886:	bd 01       	movw	r22, r26
   1e888:	cf 01       	movw	r24, r30
   1e88a:	08 95       	ret

0001e88c <__divmodsi4>:
   1e88c:	97 fb       	bst	r25, 7
   1e88e:	09 2e       	mov	r0, r25
   1e890:	05 26       	eor	r0, r21
   1e892:	0e d0       	rcall	.+28     	; 0x1e8b0 <__divmodsi4_neg1>
   1e894:	57 fd       	sbrc	r21, 7
   1e896:	04 d0       	rcall	.+8      	; 0x1e8a0 <__divmodsi4_neg2>
   1e898:	d7 df       	rcall	.-82     	; 0x1e848 <__udivmodsi4>
   1e89a:	0a d0       	rcall	.+20     	; 0x1e8b0 <__divmodsi4_neg1>
   1e89c:	00 1c       	adc	r0, r0
   1e89e:	38 f4       	brcc	.+14     	; 0x1e8ae <__divmodsi4_exit>

0001e8a0 <__divmodsi4_neg2>:
   1e8a0:	50 95       	com	r21
   1e8a2:	40 95       	com	r20
   1e8a4:	30 95       	com	r19
   1e8a6:	21 95       	neg	r18
   1e8a8:	3f 4f       	sbci	r19, 0xFF	; 255
   1e8aa:	4f 4f       	sbci	r20, 0xFF	; 255
   1e8ac:	5f 4f       	sbci	r21, 0xFF	; 255

0001e8ae <__divmodsi4_exit>:
   1e8ae:	08 95       	ret

0001e8b0 <__divmodsi4_neg1>:
   1e8b0:	f6 f7       	brtc	.-4      	; 0x1e8ae <__divmodsi4_exit>
   1e8b2:	90 95       	com	r25
   1e8b4:	80 95       	com	r24
   1e8b6:	70 95       	com	r23
   1e8b8:	61 95       	neg	r22
   1e8ba:	7f 4f       	sbci	r23, 0xFF	; 255
   1e8bc:	8f 4f       	sbci	r24, 0xFF	; 255
   1e8be:	9f 4f       	sbci	r25, 0xFF	; 255
   1e8c0:	08 95       	ret

0001e8c2 <__udivmodhi4>:
   1e8c2:	aa 1b       	sub	r26, r26
   1e8c4:	bb 1b       	sub	r27, r27
   1e8c6:	51 e1       	ldi	r21, 0x11	; 17
   1e8c8:	07 c0       	rjmp	.+14     	; 0x1e8d8 <__udivmodhi4_ep>

0001e8ca <__udivmodhi4_loop>:
   1e8ca:	aa 1f       	adc	r26, r26
   1e8cc:	bb 1f       	adc	r27, r27
   1e8ce:	a6 17       	cp	r26, r22
   1e8d0:	b7 07       	cpc	r27, r23
   1e8d2:	10 f0       	brcs	.+4      	; 0x1e8d8 <__udivmodhi4_ep>
   1e8d4:	a6 1b       	sub	r26, r22
   1e8d6:	b7 0b       	sbc	r27, r23

0001e8d8 <__udivmodhi4_ep>:
   1e8d8:	88 1f       	adc	r24, r24
   1e8da:	99 1f       	adc	r25, r25
   1e8dc:	5a 95       	dec	r21
   1e8de:	a9 f7       	brne	.-22     	; 0x1e8ca <__udivmodhi4_loop>
   1e8e0:	80 95       	com	r24
   1e8e2:	90 95       	com	r25
   1e8e4:	bc 01       	movw	r22, r24
   1e8e6:	cd 01       	movw	r24, r26
   1e8e8:	08 95       	ret

0001e8ea <isspace>:
   1e8ea:	91 11       	cpse	r25, r1
   1e8ec:	06 c0       	rjmp	.+12     	; 0x1e8fa <__ctype_isfalse>
   1e8ee:	80 32       	cpi	r24, 0x20	; 32
   1e8f0:	19 f0       	breq	.+6      	; 0x1e8f8 <isspace+0xe>
   1e8f2:	89 50       	subi	r24, 0x09	; 9
   1e8f4:	85 50       	subi	r24, 0x05	; 5
   1e8f6:	d0 f7       	brcc	.-12     	; 0x1e8ec <isspace+0x2>
   1e8f8:	08 95       	ret

0001e8fa <__ctype_isfalse>:
   1e8fa:	99 27       	eor	r25, r25
   1e8fc:	88 27       	eor	r24, r24

0001e8fe <__ctype_istrue>:
   1e8fe:	08 95       	ret

0001e900 <__prologue_saves__>:
   1e900:	2f 92       	push	r2
   1e902:	3f 92       	push	r3
   1e904:	4f 92       	push	r4
   1e906:	5f 92       	push	r5
   1e908:	6f 92       	push	r6
   1e90a:	7f 92       	push	r7
   1e90c:	8f 92       	push	r8
   1e90e:	9f 92       	push	r9
   1e910:	af 92       	push	r10
   1e912:	bf 92       	push	r11
   1e914:	cf 92       	push	r12
   1e916:	df 92       	push	r13
   1e918:	ef 92       	push	r14
   1e91a:	ff 92       	push	r15
   1e91c:	0f 93       	push	r16
   1e91e:	1f 93       	push	r17
   1e920:	cf 93       	push	r28
   1e922:	df 93       	push	r29
   1e924:	cd b7       	in	r28, 0x3d	; 61
   1e926:	de b7       	in	r29, 0x3e	; 62
   1e928:	ca 1b       	sub	r28, r26
   1e92a:	db 0b       	sbc	r29, r27
   1e92c:	0f b6       	in	r0, 0x3f	; 63
   1e92e:	f8 94       	cli
   1e930:	de bf       	out	0x3e, r29	; 62
   1e932:	0f be       	out	0x3f, r0	; 63
   1e934:	cd bf       	out	0x3d, r28	; 61
   1e936:	19 94       	eijmp

0001e938 <__epilogue_restores__>:
   1e938:	2a 88       	ldd	r2, Y+18	; 0x12
   1e93a:	39 88       	ldd	r3, Y+17	; 0x11
   1e93c:	48 88       	ldd	r4, Y+16	; 0x10
   1e93e:	5f 84       	ldd	r5, Y+15	; 0x0f
   1e940:	6e 84       	ldd	r6, Y+14	; 0x0e
   1e942:	7d 84       	ldd	r7, Y+13	; 0x0d
   1e944:	8c 84       	ldd	r8, Y+12	; 0x0c
   1e946:	9b 84       	ldd	r9, Y+11	; 0x0b
   1e948:	aa 84       	ldd	r10, Y+10	; 0x0a
   1e94a:	b9 84       	ldd	r11, Y+9	; 0x09
   1e94c:	c8 84       	ldd	r12, Y+8	; 0x08
   1e94e:	df 80       	ldd	r13, Y+7	; 0x07
   1e950:	ee 80       	ldd	r14, Y+6	; 0x06
   1e952:	fd 80       	ldd	r15, Y+5	; 0x05
   1e954:	0c 81       	ldd	r16, Y+4	; 0x04
   1e956:	1b 81       	ldd	r17, Y+3	; 0x03
   1e958:	aa 81       	ldd	r26, Y+2	; 0x02
   1e95a:	b9 81       	ldd	r27, Y+1	; 0x01
   1e95c:	ce 0f       	add	r28, r30
   1e95e:	d1 1d       	adc	r29, r1
   1e960:	0f b6       	in	r0, 0x3f	; 63
   1e962:	f8 94       	cli
   1e964:	de bf       	out	0x3e, r29	; 62
   1e966:	0f be       	out	0x3f, r0	; 63
   1e968:	cd bf       	out	0x3d, r28	; 61
   1e96a:	ed 01       	movw	r28, r26
   1e96c:	08 95       	ret

0001e96e <_exit>:
   1e96e:	f8 94       	cli

0001e970 <__stop_program>:
   1e970:	ff cf       	rjmp	.-2      	; 0x1e970 <__stop_program>

Disassembly of section .boot:

0003e000 <boot_loader>:
}

// this stub ensures that the boot loader is also included in the build
void __attribute__ ((section (".boot"))) __attribute__((naked)) boot_loader(void)
{
	asm (".incbin \"../pibboot.bin\"\n\t");
   3e000:	0d 94 72 f0 	jmp	0x3e0e4	; 0x3e0e4 <boot_loader+0xe4>
   3e004:	0d 94 ce f0 	jmp	0x3e19c	; 0x3e19c <boot_loader+0x19c>
   3e008:	0d 94 ce f0 	jmp	0x3e19c	; 0x3e19c <boot_loader+0x19c>
   3e00c:	0d 94 ce f0 	jmp	0x3e19c	; 0x3e19c <boot_loader+0x19c>
   3e010:	0d 94 ce f0 	jmp	0x3e19c	; 0x3e19c <boot_loader+0x19c>
   3e014:	0d 94 ce f0 	jmp	0x3e19c	; 0x3e19c <boot_loader+0x19c>
   3e018:	0d 94 ce f0 	jmp	0x3e19c	; 0x3e19c <boot_loader+0x19c>
   3e01c:	0d 94 ce f0 	jmp	0x3e19c	; 0x3e19c <boot_loader+0x19c>
   3e020:	0d 94 ce f0 	jmp	0x3e19c	; 0x3e19c <boot_loader+0x19c>
   3e024:	0d 94 ce f0 	jmp	0x3e19c	; 0x3e19c <boot_loader+0x19c>
   3e028:	0d 94 ce f0 	jmp	0x3e19c	; 0x3e19c <boot_loader+0x19c>
   3e02c:	0d 94 ce f0 	jmp	0x3e19c	; 0x3e19c <boot_loader+0x19c>
   3e030:	0d 94 ce f0 	jmp	0x3e19c	; 0x3e19c <boot_loader+0x19c>
   3e034:	0d 94 b6 fc 	jmp	0x3f96c	; 0x3f96c <boot_loader+0x196c>
   3e038:	0d 94 ce f0 	jmp	0x3e19c	; 0x3e19c <boot_loader+0x19c>
   3e03c:	0d 94 ce f0 	jmp	0x3e19c	; 0x3e19c <boot_loader+0x19c>
   3e040:	0d 94 ce f0 	jmp	0x3e19c	; 0x3e19c <boot_loader+0x19c>
   3e044:	0d 94 ce f0 	jmp	0x3e19c	; 0x3e19c <boot_loader+0x19c>
   3e048:	0d 94 ce f0 	jmp	0x3e19c	; 0x3e19c <boot_loader+0x19c>
   3e04c:	0d 94 ce f0 	jmp	0x3e19c	; 0x3e19c <boot_loader+0x19c>
   3e050:	0d 94 ce f0 	jmp	0x3e19c	; 0x3e19c <boot_loader+0x19c>
   3e054:	0d 94 ce f0 	jmp	0x3e19c	; 0x3e19c <boot_loader+0x19c>
   3e058:	0d 94 ce f0 	jmp	0x3e19c	; 0x3e19c <boot_loader+0x19c>
   3e05c:	0d 94 ce f0 	jmp	0x3e19c	; 0x3e19c <boot_loader+0x19c>
   3e060:	0d 94 ce f0 	jmp	0x3e19c	; 0x3e19c <boot_loader+0x19c>
   3e064:	0d 94 70 fd 	jmp	0x3fae0	; 0x3fae0 <boot_loader+0x1ae0>
   3e068:	0d 94 ce f0 	jmp	0x3e19c	; 0x3e19c <boot_loader+0x19c>
   3e06c:	0d 94 ce f0 	jmp	0x3e19c	; 0x3e19c <boot_loader+0x19c>
   3e070:	0d 94 ce f0 	jmp	0x3e19c	; 0x3e19c <boot_loader+0x19c>
   3e074:	0d 94 ce f0 	jmp	0x3e19c	; 0x3e19c <boot_loader+0x19c>
   3e078:	0d 94 ce f0 	jmp	0x3e19c	; 0x3e19c <boot_loader+0x19c>
   3e07c:	0d 94 ce f0 	jmp	0x3e19c	; 0x3e19c <boot_loader+0x19c>
   3e080:	0d 94 ce f0 	jmp	0x3e19c	; 0x3e19c <boot_loader+0x19c>
   3e084:	0d 94 ce f0 	jmp	0x3e19c	; 0x3e19c <boot_loader+0x19c>
   3e088:	0d 94 ce f0 	jmp	0x3e19c	; 0x3e19c <boot_loader+0x19c>
   3e08c:	0d 94 ce f0 	jmp	0x3e19c	; 0x3e19c <boot_loader+0x19c>
   3e090:	0d 94 ce f0 	jmp	0x3e19c	; 0x3e19c <boot_loader+0x19c>
   3e094:	0d 94 ce f0 	jmp	0x3e19c	; 0x3e19c <boot_loader+0x19c>
   3e098:	0d 94 ce f0 	jmp	0x3e19c	; 0x3e19c <boot_loader+0x19c>
   3e09c:	0d 94 ce f0 	jmp	0x3e19c	; 0x3e19c <boot_loader+0x19c>
   3e0a0:	0d 94 ce f0 	jmp	0x3e19c	; 0x3e19c <boot_loader+0x19c>
   3e0a4:	0d 94 ce f0 	jmp	0x3e19c	; 0x3e19c <boot_loader+0x19c>
   3e0a8:	0d 94 ce f0 	jmp	0x3e19c	; 0x3e19c <boot_loader+0x19c>
   3e0ac:	0d 94 ce f0 	jmp	0x3e19c	; 0x3e19c <boot_loader+0x19c>
   3e0b0:	0d 94 ce f0 	jmp	0x3e19c	; 0x3e19c <boot_loader+0x19c>
   3e0b4:	0d 94 ce f0 	jmp	0x3e19c	; 0x3e19c <boot_loader+0x19c>
   3e0b8:	0d 94 ce f0 	jmp	0x3e19c	; 0x3e19c <boot_loader+0x19c>
   3e0bc:	0d 94 ce f0 	jmp	0x3e19c	; 0x3e19c <boot_loader+0x19c>
   3e0c0:	0d 94 ce f0 	jmp	0x3e19c	; 0x3e19c <boot_loader+0x19c>
   3e0c4:	0d 94 ce f0 	jmp	0x3e19c	; 0x3e19c <boot_loader+0x19c>
   3e0c8:	0d 94 ce f0 	jmp	0x3e19c	; 0x3e19c <boot_loader+0x19c>
   3e0cc:	0d 94 ce f0 	jmp	0x3e19c	; 0x3e19c <boot_loader+0x19c>
   3e0d0:	0d 94 ce f0 	jmp	0x3e19c	; 0x3e19c <boot_loader+0x19c>
   3e0d4:	0d 94 ce f0 	jmp	0x3e19c	; 0x3e19c <boot_loader+0x19c>
   3e0d8:	0d 94 ce f0 	jmp	0x3e19c	; 0x3e19c <boot_loader+0x19c>
   3e0dc:	0d 94 ce f0 	jmp	0x3e19c	; 0x3e19c <boot_loader+0x19c>
   3e0e0:	0d 94 ce f0 	jmp	0x3e19c	; 0x3e19c <boot_loader+0x19c>
   3e0e4:	11 24       	eor	r1, r1
   3e0e6:	1f be       	out	0x3f, r1	; 63
   3e0e8:	cf ef       	ldi	r28, 0xFF	; 255
   3e0ea:	d1 e2       	ldi	r29, 0x21	; 33
   3e0ec:	de bf       	out	0x3e, r29	; 62
   3e0ee:	cd bf       	out	0x3d, r28	; 61
   3e0f0:	01 e0       	ldi	r16, 0x01	; 1
   3e0f2:	0c bf       	out	0x3c, r16	; 60
   3e0f4:	11 24       	eor	r1, r1
   3e0f6:	84 b7       	in	r24, 0x34	; 52
   3e0f8:	80 93 c4 00 	sts	0x00C4, r24
   3e0fc:	14 be       	out	0x34, r1	; 52
   3e0fe:	80 ec       	ldi	r24, 0xC0	; 192
   3e100:	80 93 01 01 	sts	0x0101, r24
   3e104:	80 e8       	ldi	r24, 0x80	; 128
   3e106:	80 93 74 00 	sts	0x0074, r24
   3e10a:	80 93 75 00 	sts	0x0075, r24
   3e10e:	88 e1       	ldi	r24, 0x18	; 24
   3e110:	0f b6       	in	r0, 0x3f	; 63
   3e112:	f8 94       	cli
   3e114:	80 93 60 00 	sts	0x0060, r24
   3e118:	10 92 60 00 	sts	0x0060, r1
   3e11c:	0f be       	out	0x3f, r0	; 63
   3e11e:	12 b8       	out	0x02, r1	; 2
   3e120:	11 b8       	out	0x01, r1	; 1
   3e122:	15 b8       	out	0x05, r1	; 5
   3e124:	14 b8       	out	0x04, r1	; 4
   3e126:	18 b8       	out	0x08, r1	; 8
   3e128:	17 b8       	out	0x07, r1	; 7
   3e12a:	1b b8       	out	0x0b, r1	; 11
   3e12c:	1a b8       	out	0x0a, r1	; 10
   3e12e:	1e b8       	out	0x0e, r1	; 14
   3e130:	1d b8       	out	0x0d, r1	; 13
   3e132:	11 ba       	out	0x11, r1	; 17
   3e134:	10 ba       	out	0x10, r1	; 16
   3e136:	14 ba       	out	0x14, r1	; 20
   3e138:	13 ba       	out	0x13, r1	; 19
   3e13a:	10 92 02 01 	sts	0x0102, r1
   3e13e:	10 92 05 01 	sts	0x0105, r1
   3e142:	10 92 04 01 	sts	0x0104, r1
   3e146:	10 92 08 01 	sts	0x0108, r1
   3e14a:	10 92 07 01 	sts	0x0107, r1
   3e14e:	10 92 0b 01 	sts	0x010B, r1
   3e152:	10 92 0a 01 	sts	0x010A, r1
   3e156:	e4 e6       	ldi	r30, 0x64	; 100
   3e158:	f0 e0       	ldi	r31, 0x00	; 0
   3e15a:	80 81       	ld	r24, Z
   3e15c:	8f 6e       	ori	r24, 0xEF	; 239
   3e15e:	80 83       	st	Z, r24
   3e160:	e5 e6       	ldi	r30, 0x65	; 101
   3e162:	f0 e0       	ldi	r31, 0x00	; 0
   3e164:	80 81       	ld	r24, Z
   3e166:	8f 63       	ori	r24, 0x3F	; 63
   3e168:	80 83       	st	Z, r24
   3e16a:	12 e0       	ldi	r17, 0x02	; 2
   3e16c:	a0 e0       	ldi	r26, 0x00	; 0
   3e16e:	b2 e0       	ldi	r27, 0x02	; 2
   3e170:	e2 ef       	ldi	r30, 0xF2	; 242
   3e172:	fe ef       	ldi	r31, 0xFE	; 254
   3e174:	03 e0       	ldi	r16, 0x03	; 3
   3e176:	0b bf       	out	0x3b, r16	; 59
   3e178:	02 c0       	rjmp	.+4      	; 0x3e17e <boot_loader+0x17e>
   3e17a:	07 90       	elpm	r0, Z+
   3e17c:	0d 92       	st	X+, r0
   3e17e:	a2 31       	cpi	r26, 0x12	; 18
   3e180:	b1 07       	cpc	r27, r17
   3e182:	d9 f7       	brne	.-10     	; 0x3e17a <boot_loader+0x17a>
   3e184:	18 e9       	ldi	r17, 0x98	; 152
   3e186:	a0 e0       	ldi	r26, 0x00	; 0
   3e188:	b0 e8       	ldi	r27, 0x80	; 128
   3e18a:	01 c0       	rjmp	.+2      	; 0x3e18e <boot_loader+0x18e>
   3e18c:	1d 92       	st	X+, r1
   3e18e:	ad 32       	cpi	r26, 0x2D	; 45
   3e190:	b1 07       	cpc	r27, r17
   3e192:	e1 f7       	brne	.-8      	; 0x3e18c <boot_loader+0x18c>
   3e194:	0f 94 d0 f0 	call	0x3e1a0	; 0x3e1a0 <boot_loader+0x1a0>
   3e198:	0d 94 77 ff 	jmp	0x3feee	; 0x3feee <boot_loader+0x1eee>
   3e19c:	0d 94 00 f0 	jmp	0x3e000	; 0x3e000 <boot_loader>
   3e1a0:	80 e2       	ldi	r24, 0x20	; 32
   3e1a2:	9e e4       	ldi	r25, 0x4E	; 78
   3e1a4:	01 97       	sbiw	r24, 0x01	; 1
   3e1a6:	f1 f7       	brne	.-4      	; 0x3e1a4 <boot_loader+0x1a4>
   3e1a8:	0f 94 84 f9 	call	0x3f308	; 0x3f308 <boot_loader+0x1308>
   3e1ac:	0f 94 88 f2 	call	0x3e510	; 0x3e510 <boot_loader+0x510>
   3e1b0:	0c 94 00 00 	jmp	0	; 0x0 <__vectors>
   3e1b4:	80 e0       	ldi	r24, 0x00	; 0
   3e1b6:	90 e0       	ldi	r25, 0x00	; 0
   3e1b8:	08 95       	ret
   3e1ba:	bc 01       	movw	r22, r24
   3e1bc:	fc 01       	movw	r30, r24
   3e1be:	40 e0       	ldi	r20, 0x00	; 0
   3e1c0:	50 e0       	ldi	r21, 0x00	; 0
   3e1c2:	28 e4       	ldi	r18, 0x48	; 72
   3e1c4:	30 e0       	ldi	r19, 0x00	; 0
   3e1c6:	18 c0       	rjmp	.+48     	; 0x3e1f8 <boot_loader+0x1f8>
   3e1c8:	81 91       	ld	r24, Z+
   3e1ca:	48 27       	eor	r20, r24
   3e1cc:	84 2f       	mov	r24, r20
   3e1ce:	82 95       	swap	r24
   3e1d0:	84 27       	eor	r24, r20
   3e1d2:	08 2e       	mov	r0, r24
   3e1d4:	86 95       	lsr	r24
   3e1d6:	86 95       	lsr	r24
   3e1d8:	80 25       	eor	r24, r0
   3e1da:	08 2e       	mov	r0, r24
   3e1dc:	86 95       	lsr	r24
   3e1de:	80 25       	eor	r24, r0
   3e1e0:	87 70       	andi	r24, 0x07	; 7
   3e1e2:	04 2e       	mov	r0, r20
   3e1e4:	45 2f       	mov	r20, r21
   3e1e6:	86 95       	lsr	r24
   3e1e8:	07 94       	ror	r0
   3e1ea:	87 95       	ror	r24
   3e1ec:	50 2d       	mov	r21, r0
   3e1ee:	48 27       	eor	r20, r24
   3e1f0:	06 94       	lsr	r0
   3e1f2:	87 95       	ror	r24
   3e1f4:	50 25       	eor	r21, r0
   3e1f6:	48 27       	eor	r20, r24
   3e1f8:	21 50       	subi	r18, 0x01	; 1
   3e1fa:	30 40       	sbci	r19, 0x00	; 0
   3e1fc:	8f ef       	ldi	r24, 0xFF	; 255
   3e1fe:	2f 3f       	cpi	r18, 0xFF	; 255
   3e200:	38 07       	cpc	r19, r24
   3e202:	11 f7       	brne	.-60     	; 0x3e1c8 <boot_loader+0x1c8>
   3e204:	fb 01       	movw	r30, r22
   3e206:	e8 5b       	subi	r30, 0xB8	; 184
   3e208:	ff 4f       	sbci	r31, 0xFF	; 255
   3e20a:	26 e3       	ldi	r18, 0x36	; 54
   3e20c:	30 e0       	ldi	r19, 0x00	; 0
   3e20e:	18 c0       	rjmp	.+48     	; 0x3e240 <boot_loader+0x240>
   3e210:	81 91       	ld	r24, Z+
   3e212:	48 27       	eor	r20, r24
   3e214:	84 2f       	mov	r24, r20
   3e216:	82 95       	swap	r24
   3e218:	84 27       	eor	r24, r20
   3e21a:	08 2e       	mov	r0, r24
   3e21c:	86 95       	lsr	r24
   3e21e:	86 95       	lsr	r24
   3e220:	80 25       	eor	r24, r0
   3e222:	08 2e       	mov	r0, r24
   3e224:	86 95       	lsr	r24
   3e226:	80 25       	eor	r24, r0
   3e228:	87 70       	andi	r24, 0x07	; 7
   3e22a:	04 2e       	mov	r0, r20
   3e22c:	45 2f       	mov	r20, r21
   3e22e:	86 95       	lsr	r24
   3e230:	07 94       	ror	r0
   3e232:	87 95       	ror	r24
   3e234:	50 2d       	mov	r21, r0
   3e236:	48 27       	eor	r20, r24
   3e238:	06 94       	lsr	r0
   3e23a:	87 95       	ror	r24
   3e23c:	50 25       	eor	r21, r0
   3e23e:	48 27       	eor	r20, r24
   3e240:	21 50       	subi	r18, 0x01	; 1
   3e242:	30 40       	sbci	r19, 0x00	; 0
   3e244:	8f ef       	ldi	r24, 0xFF	; 255
   3e246:	2f 3f       	cpi	r18, 0xFF	; 255
   3e248:	38 07       	cpc	r19, r24
   3e24a:	11 f7       	brne	.-60     	; 0x3e210 <boot_loader+0x210>
   3e24c:	ca 01       	movw	r24, r20
   3e24e:	08 95       	ret
   3e250:	cf 92       	push	r12
   3e252:	df 92       	push	r13
   3e254:	ef 92       	push	r14
   3e256:	ff 92       	push	r15
   3e258:	0f 93       	push	r16
   3e25a:	1f 93       	push	r17
   3e25c:	df 93       	push	r29
   3e25e:	cf 93       	push	r28
   3e260:	cd b7       	in	r28, 0x3d	; 61
   3e262:	de b7       	in	r29, 0x3e	; 62
   3e264:	c0 58       	subi	r28, 0x80	; 128
   3e266:	d0 40       	sbci	r29, 0x00	; 0
   3e268:	0f b6       	in	r0, 0x3f	; 63
   3e26a:	f8 94       	cli
   3e26c:	de bf       	out	0x3e, r29	; 62
   3e26e:	0f be       	out	0x3f, r0	; 63
   3e270:	cd bf       	out	0x3d, r28	; 61
   3e272:	d8 2e       	mov	r13, r24
   3e274:	c9 2e       	mov	r12, r25
   3e276:	40 e0       	ldi	r20, 0x00	; 0
   3e278:	50 e0       	ldi	r21, 0x00	; 0
   3e27a:	de 01       	movw	r26, r28
   3e27c:	11 96       	adiw	r26, 0x01	; 1
   3e27e:	81 e8       	ldi	r24, 0x81	; 129
   3e280:	e8 2e       	mov	r14, r24
   3e282:	f1 2c       	mov	r15, r1
   3e284:	ec 0e       	add	r14, r28
   3e286:	fd 1e       	adc	r15, r29
   3e288:	be 01       	movw	r22, r28
   3e28a:	67 5b       	subi	r22, 0xB7	; 183
   3e28c:	7f 4f       	sbci	r23, 0xFF	; 255
   3e28e:	8e 01       	movw	r16, r28
   3e290:	01 58       	subi	r16, 0x81	; 129
   3e292:	1f 4f       	sbci	r17, 0xFF	; 255
   3e294:	f9 99       	sbic	0x1f, 1	; 31
   3e296:	fe cf       	rjmp	.-4      	; 0x3e294 <boot_loader+0x294>
   3e298:	9a 01       	movw	r18, r20
   3e29a:	fd 01       	movw	r30, r26
   3e29c:	09 c0       	rjmp	.+18     	; 0x3e2b0 <boot_loader+0x2b0>
   3e29e:	f9 99       	sbic	0x1f, 1	; 31
   3e2a0:	fe cf       	rjmp	.-4      	; 0x3e29e <boot_loader+0x29e>
   3e2a2:	32 bd       	out	0x22, r19	; 34
   3e2a4:	21 bd       	out	0x21, r18	; 33
   3e2a6:	f8 9a       	sbi	0x1f, 0	; 31
   3e2a8:	80 b5       	in	r24, 0x20	; 32
   3e2aa:	81 93       	st	Z+, r24
   3e2ac:	2f 5f       	subi	r18, 0xFF	; 255
   3e2ae:	3f 4f       	sbci	r19, 0xFF	; 255
   3e2b0:	ee 15       	cp	r30, r14
   3e2b2:	ff 05       	cpc	r31, r15
   3e2b4:	a1 f7       	brne	.-24     	; 0x3e29e <boot_loader+0x29e>
   3e2b6:	fd 01       	movw	r30, r26
   3e2b8:	20 e0       	ldi	r18, 0x00	; 0
   3e2ba:	30 e0       	ldi	r19, 0x00	; 0
   3e2bc:	81 91       	ld	r24, Z+
   3e2be:	28 27       	eor	r18, r24
   3e2c0:	82 2f       	mov	r24, r18
   3e2c2:	82 95       	swap	r24
   3e2c4:	82 27       	eor	r24, r18
   3e2c6:	08 2e       	mov	r0, r24
   3e2c8:	86 95       	lsr	r24
   3e2ca:	86 95       	lsr	r24
   3e2cc:	80 25       	eor	r24, r0
   3e2ce:	08 2e       	mov	r0, r24
   3e2d0:	86 95       	lsr	r24
   3e2d2:	80 25       	eor	r24, r0
   3e2d4:	87 70       	andi	r24, 0x07	; 7
   3e2d6:	02 2e       	mov	r0, r18
   3e2d8:	23 2f       	mov	r18, r19
   3e2da:	86 95       	lsr	r24
   3e2dc:	07 94       	ror	r0
   3e2de:	87 95       	ror	r24
   3e2e0:	30 2d       	mov	r19, r0
   3e2e2:	28 27       	eor	r18, r24
   3e2e4:	06 94       	lsr	r0
   3e2e6:	87 95       	ror	r24
   3e2e8:	30 25       	eor	r19, r0
   3e2ea:	28 27       	eor	r18, r24
   3e2ec:	e6 17       	cp	r30, r22
   3e2ee:	f7 07       	cpc	r31, r23
   3e2f0:	29 f7       	brne	.-54     	; 0x3e2bc <boot_loader+0x2bc>
   3e2f2:	fb 01       	movw	r30, r22
   3e2f4:	18 c0       	rjmp	.+48     	; 0x3e326 <boot_loader+0x326>
   3e2f6:	81 91       	ld	r24, Z+
   3e2f8:	28 27       	eor	r18, r24
   3e2fa:	82 2f       	mov	r24, r18
   3e2fc:	82 95       	swap	r24
   3e2fe:	82 27       	eor	r24, r18
   3e300:	08 2e       	mov	r0, r24
   3e302:	86 95       	lsr	r24
   3e304:	86 95       	lsr	r24
   3e306:	80 25       	eor	r24, r0
   3e308:	08 2e       	mov	r0, r24
   3e30a:	86 95       	lsr	r24
   3e30c:	80 25       	eor	r24, r0
   3e30e:	87 70       	andi	r24, 0x07	; 7
   3e310:	02 2e       	mov	r0, r18
   3e312:	23 2f       	mov	r18, r19
   3e314:	86 95       	lsr	r24
   3e316:	07 94       	ror	r0
   3e318:	87 95       	ror	r24
   3e31a:	30 2d       	mov	r19, r0
   3e31c:	28 27       	eor	r18, r24
   3e31e:	06 94       	lsr	r0
   3e320:	87 95       	ror	r24
   3e322:	30 25       	eor	r19, r0
   3e324:	28 27       	eor	r18, r24
   3e326:	e0 17       	cp	r30, r16
   3e328:	f1 07       	cpc	r31, r17
   3e32a:	29 f7       	brne	.-54     	; 0x3e2f6 <boot_loader+0x2f6>
   3e32c:	80 81       	ld	r24, Z
   3e32e:	91 81       	ldd	r25, Z+1	; 0x01
   3e330:	28 17       	cp	r18, r24
   3e332:	39 07       	cpc	r19, r25
   3e334:	51 f0       	breq	.+20     	; 0x3e34a <boot_loader+0x34a>
   3e336:	40 58       	subi	r20, 0x80	; 128
   3e338:	5f 4f       	sbci	r21, 0xFF	; 255
   3e33a:	81 e0       	ldi	r24, 0x01	; 1
   3e33c:	40 30       	cpi	r20, 0x00	; 0
   3e33e:	58 07       	cpc	r21, r24
   3e340:	09 f0       	breq	.+2      	; 0x3e344 <boot_loader+0x344>
   3e342:	a8 cf       	rjmp	.-176    	; 0x3e294 <boot_loader+0x294>
   3e344:	20 e0       	ldi	r18, 0x00	; 0
   3e346:	30 e0       	ldi	r19, 0x00	; 0
   3e348:	0d c0       	rjmp	.+26     	; 0x3e364 <boot_loader+0x364>
   3e34a:	8d 2d       	mov	r24, r13
   3e34c:	9c 2d       	mov	r25, r12
   3e34e:	9c 01       	movw	r18, r24
   3e350:	d9 01       	movw	r26, r18
   3e352:	fe 01       	movw	r30, r28
   3e354:	31 96       	adiw	r30, 0x01	; 1
   3e356:	88 e4       	ldi	r24, 0x48	; 72
   3e358:	01 90       	ld	r0, Z+
   3e35a:	0d 92       	st	X+, r0
   3e35c:	81 50       	subi	r24, 0x01	; 1
   3e35e:	e1 f7       	brne	.-8      	; 0x3e358 <boot_loader+0x358>
   3e360:	21 e0       	ldi	r18, 0x01	; 1
   3e362:	30 e0       	ldi	r19, 0x00	; 0
   3e364:	c9 01       	movw	r24, r18
   3e366:	c0 58       	subi	r28, 0x80	; 128
   3e368:	df 4f       	sbci	r29, 0xFF	; 255
   3e36a:	0f b6       	in	r0, 0x3f	; 63
   3e36c:	f8 94       	cli
   3e36e:	de bf       	out	0x3e, r29	; 62
   3e370:	0f be       	out	0x3f, r0	; 63
   3e372:	cd bf       	out	0x3d, r28	; 61
   3e374:	cf 91       	pop	r28
   3e376:	df 91       	pop	r29
   3e378:	1f 91       	pop	r17
   3e37a:	0f 91       	pop	r16
   3e37c:	ff 90       	pop	r15
   3e37e:	ef 90       	pop	r14
   3e380:	df 90       	pop	r13
   3e382:	cf 90       	pop	r12
   3e384:	08 95       	ret
   3e386:	af 92       	push	r10
   3e388:	bf 92       	push	r11
   3e38a:	cf 92       	push	r12
   3e38c:	df 92       	push	r13
   3e38e:	ef 92       	push	r14
   3e390:	ff 92       	push	r15
   3e392:	0f 93       	push	r16
   3e394:	1f 93       	push	r17
   3e396:	df 93       	push	r29
   3e398:	cf 93       	push	r28
   3e39a:	cd b7       	in	r28, 0x3d	; 61
   3e39c:	de b7       	in	r29, 0x3e	; 62
   3e39e:	c0 50       	subi	r28, 0x00	; 0
   3e3a0:	d1 40       	sbci	r29, 0x01	; 1
   3e3a2:	0f b6       	in	r0, 0x3f	; 63
   3e3a4:	f8 94       	cli
   3e3a6:	de bf       	out	0x3e, r29	; 62
   3e3a8:	0f be       	out	0x3f, r0	; 63
   3e3aa:	cd bf       	out	0x3d, r28	; 61
   3e3ac:	de 01       	movw	r26, r28
   3e3ae:	11 96       	adiw	r26, 0x01	; 1
   3e3b0:	fc 01       	movw	r30, r24
   3e3b2:	88 e4       	ldi	r24, 0x48	; 72
   3e3b4:	01 90       	ld	r0, Z+
   3e3b6:	0d 92       	st	X+, r0
   3e3b8:	81 50       	subi	r24, 0x01	; 1
   3e3ba:	e1 f7       	brne	.-8      	; 0x3e3b4 <boot_loader+0x3b4>
   3e3bc:	8e 01       	movw	r16, r28
   3e3be:	07 5b       	subi	r16, 0xB7	; 183
   3e3c0:	1f 4f       	sbci	r17, 0xFF	; 255
   3e3c2:	c8 01       	movw	r24, r16
   3e3c4:	6f ef       	ldi	r22, 0xFF	; 255
   3e3c6:	70 e0       	ldi	r23, 0x00	; 0
   3e3c8:	46 e3       	ldi	r20, 0x36	; 54
   3e3ca:	50 e0       	ldi	r21, 0x00	; 0
   3e3cc:	0f 94 50 ff 	call	0x3fea0	; 0x3fea0 <boot_loader+0x1ea0>
   3e3d0:	fe 01       	movw	r30, r28
   3e3d2:	31 96       	adiw	r30, 0x01	; 1
   3e3d4:	20 e0       	ldi	r18, 0x00	; 0
   3e3d6:	30 e0       	ldi	r19, 0x00	; 0
   3e3d8:	81 91       	ld	r24, Z+
   3e3da:	28 27       	eor	r18, r24
   3e3dc:	82 2f       	mov	r24, r18
   3e3de:	82 95       	swap	r24
   3e3e0:	82 27       	eor	r24, r18
   3e3e2:	08 2e       	mov	r0, r24
   3e3e4:	86 95       	lsr	r24
   3e3e6:	86 95       	lsr	r24
   3e3e8:	80 25       	eor	r24, r0
   3e3ea:	08 2e       	mov	r0, r24
   3e3ec:	86 95       	lsr	r24
   3e3ee:	80 25       	eor	r24, r0
   3e3f0:	87 70       	andi	r24, 0x07	; 7
   3e3f2:	02 2e       	mov	r0, r18
   3e3f4:	23 2f       	mov	r18, r19
   3e3f6:	86 95       	lsr	r24
   3e3f8:	07 94       	ror	r0
   3e3fa:	87 95       	ror	r24
   3e3fc:	30 2d       	mov	r19, r0
   3e3fe:	28 27       	eor	r18, r24
   3e400:	06 94       	lsr	r0
   3e402:	87 95       	ror	r24
   3e404:	30 25       	eor	r19, r0
   3e406:	28 27       	eor	r18, r24
   3e408:	e0 17       	cp	r30, r16
   3e40a:	f1 07       	cpc	r31, r17
   3e40c:	29 f7       	brne	.-54     	; 0x3e3d8 <boot_loader+0x3d8>
   3e40e:	ae 01       	movw	r20, r28
   3e410:	41 58       	subi	r20, 0x81	; 129
   3e412:	5f 4f       	sbci	r21, 0xFF	; 255
   3e414:	18 c0       	rjmp	.+48     	; 0x3e446 <boot_loader+0x446>
   3e416:	81 91       	ld	r24, Z+
   3e418:	28 27       	eor	r18, r24
   3e41a:	82 2f       	mov	r24, r18
   3e41c:	82 95       	swap	r24
   3e41e:	82 27       	eor	r24, r18
   3e420:	08 2e       	mov	r0, r24
   3e422:	86 95       	lsr	r24
   3e424:	86 95       	lsr	r24
   3e426:	80 25       	eor	r24, r0
   3e428:	08 2e       	mov	r0, r24
   3e42a:	86 95       	lsr	r24
   3e42c:	80 25       	eor	r24, r0
   3e42e:	87 70       	andi	r24, 0x07	; 7
   3e430:	02 2e       	mov	r0, r18
   3e432:	23 2f       	mov	r18, r19
   3e434:	86 95       	lsr	r24
   3e436:	07 94       	ror	r0
   3e438:	87 95       	ror	r24
   3e43a:	30 2d       	mov	r19, r0
   3e43c:	28 27       	eor	r18, r24
   3e43e:	06 94       	lsr	r0
   3e440:	87 95       	ror	r24
   3e442:	30 25       	eor	r19, r0
   3e444:	28 27       	eor	r18, r24
   3e446:	e4 17       	cp	r30, r20
   3e448:	f5 07       	cpc	r31, r21
   3e44a:	29 f7       	brne	.-54     	; 0x3e416 <boot_loader+0x416>
   3e44c:	31 83       	std	Z+1, r19	; 0x01
   3e44e:	20 83       	st	Z, r18
   3e450:	00 e0       	ldi	r16, 0x00	; 0
   3e452:	10 e0       	ldi	r17, 0x00	; 0
   3e454:	21 e8       	ldi	r18, 0x81	; 129
   3e456:	e2 2e       	mov	r14, r18
   3e458:	f1 2c       	mov	r15, r1
   3e45a:	ec 0e       	add	r14, r28
   3e45c:	fd 1e       	adc	r15, r29
   3e45e:	91 e0       	ldi	r25, 0x01	; 1
   3e460:	a9 2e       	mov	r10, r25
   3e462:	b9 2e       	mov	r11, r25
   3e464:	ac 0e       	add	r10, r28
   3e466:	bd 1e       	adc	r11, r29
   3e468:	6e 01       	movw	r12, r28
   3e46a:	08 94       	sec
   3e46c:	c1 1c       	adc	r12, r1
   3e46e:	d1 1c       	adc	r13, r1
   3e470:	f9 99       	sbic	0x1f, 1	; 31
   3e472:	fe cf       	rjmp	.-4      	; 0x3e470 <boot_loader+0x470>
   3e474:	98 01       	movw	r18, r16
   3e476:	f7 01       	movw	r30, r14
   3e478:	09 c0       	rjmp	.+18     	; 0x3e48c <boot_loader+0x48c>
   3e47a:	f9 99       	sbic	0x1f, 1	; 31
   3e47c:	fe cf       	rjmp	.-4      	; 0x3e47a <boot_loader+0x47a>
   3e47e:	32 bd       	out	0x22, r19	; 34
   3e480:	21 bd       	out	0x21, r18	; 33
   3e482:	f8 9a       	sbi	0x1f, 0	; 31
   3e484:	80 b5       	in	r24, 0x20	; 32
   3e486:	81 93       	st	Z+, r24
   3e488:	2f 5f       	subi	r18, 0xFF	; 255
   3e48a:	3f 4f       	sbci	r19, 0xFF	; 255
   3e48c:	ea 15       	cp	r30, r10
   3e48e:	fb 05       	cpc	r31, r11
   3e490:	a1 f7       	brne	.-24     	; 0x3e47a <boot_loader+0x47a>
   3e492:	c7 01       	movw	r24, r14
   3e494:	b6 01       	movw	r22, r12
   3e496:	40 e8       	ldi	r20, 0x80	; 128
   3e498:	50 e0       	ldi	r21, 0x00	; 0
   3e49a:	0f 94 3a ff 	call	0x3fe74	; 0x3fe74 <boot_loader+0x1e74>
   3e49e:	00 97       	sbiw	r24, 0x00	; 0
   3e4a0:	b1 f0       	breq	.+44     	; 0x3e4ce <boot_loader+0x4ce>
   3e4a2:	f9 99       	sbic	0x1f, 1	; 31
   3e4a4:	fe cf       	rjmp	.-4      	; 0x3e4a2 <boot_loader+0x4a2>
   3e4a6:	c8 01       	movw	r24, r16
   3e4a8:	f6 01       	movw	r30, r12
   3e4aa:	0e c0       	rjmp	.+28     	; 0x3e4c8 <boot_loader+0x4c8>
   3e4ac:	20 81       	ld	r18, Z
   3e4ae:	f9 99       	sbic	0x1f, 1	; 31
   3e4b0:	fe cf       	rjmp	.-4      	; 0x3e4ae <boot_loader+0x4ae>
   3e4b2:	31 96       	adiw	r30, 0x01	; 1
   3e4b4:	1f ba       	out	0x1f, r1	; 31
   3e4b6:	92 bd       	out	0x22, r25	; 34
   3e4b8:	81 bd       	out	0x21, r24	; 33
   3e4ba:	20 bd       	out	0x20, r18	; 32
   3e4bc:	0f b6       	in	r0, 0x3f	; 63
   3e4be:	f8 94       	cli
   3e4c0:	fa 9a       	sbi	0x1f, 2	; 31
   3e4c2:	f9 9a       	sbi	0x1f, 1	; 31
   3e4c4:	0f be       	out	0x3f, r0	; 63
   3e4c6:	01 96       	adiw	r24, 0x01	; 1
   3e4c8:	ee 15       	cp	r30, r14
   3e4ca:	ff 05       	cpc	r31, r15
   3e4cc:	79 f7       	brne	.-34     	; 0x3e4ac <boot_loader+0x4ac>
   3e4ce:	00 58       	subi	r16, 0x80	; 128
   3e4d0:	1f 4f       	sbci	r17, 0xFF	; 255
   3e4d2:	81 e0       	ldi	r24, 0x01	; 1
   3e4d4:	00 30       	cpi	r16, 0x00	; 0
   3e4d6:	18 07       	cpc	r17, r24
   3e4d8:	09 f0       	breq	.+2      	; 0x3e4dc <boot_loader+0x4dc>
   3e4da:	ca cf       	rjmp	.-108    	; 0x3e470 <boot_loader+0x470>
   3e4dc:	c0 50       	subi	r28, 0x00	; 0
   3e4de:	df 4f       	sbci	r29, 0xFF	; 255
   3e4e0:	0f b6       	in	r0, 0x3f	; 63
   3e4e2:	f8 94       	cli
   3e4e4:	de bf       	out	0x3e, r29	; 62
   3e4e6:	0f be       	out	0x3f, r0	; 63
   3e4e8:	cd bf       	out	0x3d, r28	; 61
   3e4ea:	cf 91       	pop	r28
   3e4ec:	df 91       	pop	r29
   3e4ee:	1f 91       	pop	r17
   3e4f0:	0f 91       	pop	r16
   3e4f2:	ff 90       	pop	r15
   3e4f4:	ef 90       	pop	r14
   3e4f6:	df 90       	pop	r13
   3e4f8:	cf 90       	pop	r12
   3e4fa:	bf 90       	pop	r11
   3e4fc:	af 90       	pop	r10
   3e4fe:	08 95       	ret
   3e500:	85 b7       	in	r24, 0x35	; 53
   3e502:	8c 7f       	andi	r24, 0xFC	; 252
   3e504:	98 2f       	mov	r25, r24
   3e506:	93 60       	ori	r25, 0x03	; 3
   3e508:	95 bf       	out	0x35, r25	; 53
   3e50a:	82 60       	ori	r24, 0x02	; 2
   3e50c:	85 bf       	out	0x35, r24	; 53
   3e50e:	08 95       	ret
   3e510:	85 b7       	in	r24, 0x35	; 53
   3e512:	8c 7f       	andi	r24, 0xFC	; 252
   3e514:	98 2f       	mov	r25, r24
   3e516:	91 60       	ori	r25, 0x01	; 1
   3e518:	95 bf       	out	0x35, r25	; 53
   3e51a:	85 bf       	out	0x35, r24	; 53
   3e51c:	08 95       	ret
   3e51e:	8f 92       	push	r8
   3e520:	9f 92       	push	r9
   3e522:	af 92       	push	r10
   3e524:	bf 92       	push	r11
   3e526:	cf 92       	push	r12
   3e528:	df 92       	push	r13
   3e52a:	ef 92       	push	r14
   3e52c:	ff 92       	push	r15
   3e52e:	0f 93       	push	r16
   3e530:	1f 93       	push	r17
   3e532:	cf 93       	push	r28
   3e534:	df 93       	push	r29
   3e536:	5c 01       	movw	r10, r24
   3e538:	4b 01       	movw	r8, r22
   3e53a:	ea 01       	movw	r28, r20
   3e53c:	a9 01       	movw	r20, r18
   3e53e:	42 50       	subi	r20, 0x02	; 2
   3e540:	50 40       	sbci	r21, 0x00	; 0
   3e542:	fe 01       	movw	r30, r28
   3e544:	e4 0f       	add	r30, r20
   3e546:	f5 1f       	adc	r31, r21
   3e548:	4e 5f       	subi	r20, 0xFE	; 254
   3e54a:	5f 4f       	sbci	r21, 0xFF	; 255
   3e54c:	20 81       	ld	r18, Z
   3e54e:	11 81       	ldd	r17, Z+1	; 0x01
   3e550:	ba 01       	movw	r22, r20
   3e552:	65 50       	subi	r22, 0x05	; 5
   3e554:	70 40       	sbci	r23, 0x00	; 0
   3e556:	fe 01       	movw	r30, r28
   3e558:	a0 e0       	ldi	r26, 0x00	; 0
   3e55a:	b0 e0       	ldi	r27, 0x00	; 0
   3e55c:	1a c0       	rjmp	.+52     	; 0x3e592 <boot_loader+0x592>
   3e55e:	82 81       	ldd	r24, Z+2	; 0x02
   3e560:	a8 27       	eor	r26, r24
   3e562:	8a 2f       	mov	r24, r26
   3e564:	82 95       	swap	r24
   3e566:	8a 27       	eor	r24, r26
   3e568:	08 2e       	mov	r0, r24
   3e56a:	86 95       	lsr	r24
   3e56c:	86 95       	lsr	r24
   3e56e:	80 25       	eor	r24, r0
   3e570:	08 2e       	mov	r0, r24
   3e572:	86 95       	lsr	r24
   3e574:	80 25       	eor	r24, r0
   3e576:	87 70       	andi	r24, 0x07	; 7
   3e578:	0a 2e       	mov	r0, r26
   3e57a:	ab 2f       	mov	r26, r27
   3e57c:	86 95       	lsr	r24
   3e57e:	07 94       	ror	r0
   3e580:	87 95       	ror	r24
   3e582:	b0 2d       	mov	r27, r0
   3e584:	a8 27       	eor	r26, r24
   3e586:	06 94       	lsr	r0
   3e588:	87 95       	ror	r24
   3e58a:	b0 25       	eor	r27, r0
   3e58c:	a8 27       	eor	r26, r24
   3e58e:	61 50       	subi	r22, 0x01	; 1
   3e590:	70 40       	sbci	r23, 0x00	; 0
   3e592:	31 96       	adiw	r30, 0x01	; 1
   3e594:	61 15       	cp	r22, r1
   3e596:	71 05       	cpc	r23, r1
   3e598:	11 f7       	brne	.-60     	; 0x3e55e <boot_loader+0x55e>
   3e59a:	00 23       	and	r16, r16
   3e59c:	49 f0       	breq	.+18     	; 0x3e5b0 <boot_loader+0x5b0>
   3e59e:	91 2f       	mov	r25, r17
   3e5a0:	80 e0       	ldi	r24, 0x00	; 0
   3e5a2:	30 e0       	ldi	r19, 0x00	; 0
   3e5a4:	82 2b       	or	r24, r18
   3e5a6:	93 2b       	or	r25, r19
   3e5a8:	8a 17       	cp	r24, r26
   3e5aa:	9b 07       	cpc	r25, r27
   3e5ac:	09 f0       	breq	.+2      	; 0x3e5b0 <boot_loader+0x5b0>
   3e5ae:	07 c3       	rjmp	.+1550   	; 0x3ebbe <boot_loader+0xbbe>
   3e5b0:	c8 84       	ldd	r12, Y+8	; 0x08
   3e5b2:	d9 84       	ldd	r13, Y+9	; 0x09
   3e5b4:	c6 01       	movw	r24, r12
   3e5b6:	0c 96       	adiw	r24, 0x0c	; 12
   3e5b8:	48 17       	cp	r20, r24
   3e5ba:	59 07       	cpc	r21, r25
   3e5bc:	09 f0       	breq	.+2      	; 0x3e5c0 <boot_loader+0x5c0>
   3e5be:	ff c2       	rjmp	.+1534   	; 0x3ebbe <boot_loader+0xbbe>
   3e5c0:	88 81       	ld	r24, Y
   3e5c2:	81 30       	cpi	r24, 0x01	; 1
   3e5c4:	09 f0       	breq	.+2      	; 0x3e5c8 <boot_loader+0x5c8>
   3e5c6:	fb c2       	rjmp	.+1526   	; 0x3ebbe <boot_loader+0xbbe>
   3e5c8:	89 81       	ldd	r24, Y+1	; 0x01
   3e5ca:	9a 81       	ldd	r25, Y+2	; 0x02
   3e5cc:	00 97       	sbiw	r24, 0x00	; 0
   3e5ce:	09 f4       	brne	.+2      	; 0x3e5d2 <boot_loader+0x5d2>
   3e5d0:	f6 c2       	rjmp	.+1516   	; 0x3ebbe <boot_loader+0xbbe>
   3e5d2:	02 97       	sbiw	r24, 0x02	; 2
   3e5d4:	08 f0       	brcs	.+2      	; 0x3e5d8 <boot_loader+0x5d8>
   3e5d6:	f3 c2       	rjmp	.+1510   	; 0x3ebbe <boot_loader+0xbbe>
   3e5d8:	8b 81       	ldd	r24, Y+3	; 0x03
   3e5da:	8a 30       	cpi	r24, 0x0A	; 10
   3e5dc:	09 f0       	breq	.+2      	; 0x3e5e0 <boot_loader+0x5e0>
   3e5de:	53 c3       	rjmp	.+1702   	; 0x3ec86 <boot_loader+0xc86>
   3e5e0:	8a 85       	ldd	r24, Y+10	; 0x0a
   3e5e2:	88 31       	cpi	r24, 0x18	; 24
   3e5e4:	09 f0       	breq	.+2      	; 0x3e5e8 <boot_loader+0x5e8>
   3e5e6:	65 c0       	rjmp	.+202    	; 0x3e6b2 <boot_loader+0x6b2>
   3e5e8:	8b 85       	ldd	r24, Y+11	; 0x0b
   3e5ea:	9c 85       	ldd	r25, Y+12	; 0x0c
   3e5ec:	80 50       	subi	r24, 0x00	; 0
   3e5ee:	90 49       	sbci	r25, 0x90	; 144
   3e5f0:	09 f0       	breq	.+2      	; 0x3e5f4 <boot_loader+0x5f4>
   3e5f2:	49 c3       	rjmp	.+1682   	; 0x3ec86 <boot_loader+0xc86>
   3e5f4:	0f 94 a4 f6 	call	0x3ed48	; 0x3ed48 <boot_loader+0xd48>
   3e5f8:	2d 85       	ldd	r18, Y+13	; 0x0d
   3e5fa:	3e 85       	ldd	r19, Y+14	; 0x0e
   3e5fc:	80 91 24 94 	lds	r24, 0x9424
   3e600:	90 91 25 94 	lds	r25, 0x9425
   3e604:	4f ef       	ldi	r20, 0xFF	; 255
   3e606:	8f 3f       	cpi	r24, 0xFF	; 255
   3e608:	94 07       	cpc	r25, r20
   3e60a:	11 f4       	brne	.+4      	; 0x3e610 <boot_loader+0x610>
   3e60c:	80 e0       	ldi	r24, 0x00	; 0
   3e60e:	91 e0       	ldi	r25, 0x01	; 1
   3e610:	28 17       	cp	r18, r24
   3e612:	39 07       	cpc	r19, r25
   3e614:	09 f0       	breq	.+2      	; 0x3e618 <boot_loader+0x618>
   3e616:	d3 c2       	rjmp	.+1446   	; 0x3ebbe <boot_loader+0xbbe>
   3e618:	8e 8d       	ldd	r24, Y+30	; 0x1e
   3e61a:	9f 8d       	ldd	r25, Y+31	; 0x1f
   3e61c:	a8 a1       	ldd	r26, Y+32	; 0x20
   3e61e:	b9 a1       	ldd	r27, Y+33	; 0x21
   3e620:	00 97       	sbiw	r24, 0x00	; 0
   3e622:	a1 05       	cpc	r26, r1
   3e624:	b1 05       	cpc	r27, r1
   3e626:	09 f4       	brne	.+2      	; 0x3e62a <boot_loader+0x62a>
   3e628:	ca c2       	rjmp	.+1428   	; 0x3ebbe <boot_loader+0xbbe>
   3e62a:	81 50       	subi	r24, 0x01	; 1
   3e62c:	90 4e       	sbci	r25, 0xE0	; 224
   3e62e:	a3 40       	sbci	r26, 0x03	; 3
   3e630:	b0 40       	sbci	r27, 0x00	; 0
   3e632:	08 f0       	brcs	.+2      	; 0x3e636 <boot_loader+0x636>
   3e634:	c4 c2       	rjmp	.+1416   	; 0x3ebbe <boot_loader+0xbbe>
   3e636:	ce 5b       	subi	r28, 0xBE	; 190
   3e638:	df 4f       	sbci	r29, 0xFF	; 255
   3e63a:	88 81       	ld	r24, Y
   3e63c:	99 81       	ldd	r25, Y+1	; 0x01
   3e63e:	c2 54       	subi	r28, 0x42	; 66
   3e640:	d0 40       	sbci	r29, 0x00	; 0
   3e642:	ca 96       	adiw	r24, 0x3a	; 58
   3e644:	28 85       	ldd	r18, Y+8	; 0x08
   3e646:	39 85       	ldd	r19, Y+9	; 0x09
   3e648:	28 17       	cp	r18, r24
   3e64a:	39 07       	cpc	r19, r25
   3e64c:	09 f0       	breq	.+2      	; 0x3e650 <boot_loader+0x650>
   3e64e:	b7 c2       	rjmp	.+1390   	; 0x3ebbe <boot_loader+0xbbe>
   3e650:	be 01       	movw	r22, r28
   3e652:	61 5f       	subi	r22, 0xF1	; 241
   3e654:	7f 4f       	sbci	r23, 0xFF	; 255
   3e656:	87 e0       	ldi	r24, 0x07	; 7
   3e658:	93 e9       	ldi	r25, 0x93	; 147
   3e65a:	0f 94 7e f6 	call	0x3ecfc	; 0x3ecfc <boot_loader+0xcfc>
   3e65e:	88 23       	and	r24, r24
   3e660:	09 f4       	brne	.+2      	; 0x3e664 <boot_loader+0x664>
   3e662:	ad c2       	rjmp	.+1370   	; 0x3ebbe <boot_loader+0xbbe>
   3e664:	a0 e7       	ldi	r26, 0x70	; 112
   3e666:	b4 e9       	ldi	r27, 0x94	; 148
   3e668:	fe 01       	movw	r30, r28
   3e66a:	3d 96       	adiw	r30, 0x0d	; 13
   3e66c:	88 e3       	ldi	r24, 0x38	; 56
   3e66e:	01 90       	ld	r0, Z+
   3e670:	0d 92       	st	X+, r0
   3e672:	81 50       	subi	r24, 0x01	; 1
   3e674:	e1 f7       	brne	.-8      	; 0x3e66e <boot_loader+0x66e>
   3e676:	80 91 91 94 	lds	r24, 0x9491
   3e67a:	81 70       	andi	r24, 0x01	; 1
   3e67c:	80 93 91 94 	sts	0x9491, r24
   3e680:	81 e0       	ldi	r24, 0x01	; 1
   3e682:	80 93 99 90 	sts	0x9099, r24
   3e686:	10 92 22 93 	sts	0x9322, r1
   3e68a:	10 92 a8 94 	sts	0x94A8, r1
   3e68e:	ce 5b       	subi	r28, 0xBE	; 190
   3e690:	df 4f       	sbci	r29, 0xFF	; 255
   3e692:	68 81       	ld	r22, Y
   3e694:	79 81       	ldd	r23, Y+1	; 0x01
   3e696:	c2 54       	subi	r28, 0x42	; 66
   3e698:	d0 40       	sbci	r29, 0x00	; 0
   3e69a:	61 15       	cp	r22, r1
   3e69c:	71 05       	cpc	r23, r1
   3e69e:	09 f4       	brne	.+2      	; 0x3e6a2 <boot_loader+0x6a2>
   3e6a0:	c4 c2       	rjmp	.+1416   	; 0x3ec2a <boot_loader+0xc2a>
   3e6a2:	ce 01       	movw	r24, r28
   3e6a4:	8c 5b       	subi	r24, 0xBC	; 188
   3e6a6:	9f 4f       	sbci	r25, 0xFF	; 255
   3e6a8:	20 e0       	ldi	r18, 0x00	; 0
   3e6aa:	30 e0       	ldi	r19, 0x00	; 0
   3e6ac:	40 e0       	ldi	r20, 0x00	; 0
   3e6ae:	50 e0       	ldi	r21, 0x00	; 0
   3e6b0:	61 c0       	rjmp	.+194    	; 0x3e774 <boot_loader+0x774>
   3e6b2:	89 31       	cpi	r24, 0x19	; 25
   3e6b4:	09 f0       	breq	.+2      	; 0x3e6b8 <boot_loader+0x6b8>
   3e6b6:	61 c0       	rjmp	.+194    	; 0x3e77a <boot_loader+0x77a>
   3e6b8:	8b 85       	ldd	r24, Y+11	; 0x0b
   3e6ba:	9c 85       	ldd	r25, Y+12	; 0x0c
   3e6bc:	81 50       	subi	r24, 0x01	; 1
   3e6be:	90 49       	sbci	r25, 0x90	; 144
   3e6c0:	09 f0       	breq	.+2      	; 0x3e6c4 <boot_loader+0x6c4>
   3e6c2:	e1 c2       	rjmp	.+1474   	; 0x3ec86 <boot_loader+0xc86>
   3e6c4:	80 91 99 90 	lds	r24, 0x9099
   3e6c8:	88 23       	and	r24, r24
   3e6ca:	09 f4       	brne	.+2      	; 0x3e6ce <boot_loader+0x6ce>
   3e6cc:	78 c2       	rjmp	.+1264   	; 0x3ebbe <boot_loader+0xbbe>
   3e6ce:	80 91 91 94 	lds	r24, 0x9491
   3e6d2:	87 fd       	sbrc	r24, 7
   3e6d4:	74 c2       	rjmp	.+1256   	; 0x3ebbe <boot_loader+0xbbe>
   3e6d6:	2d 85       	ldd	r18, Y+13	; 0x0d
   3e6d8:	3e 85       	ldd	r19, Y+14	; 0x0e
   3e6da:	80 91 24 94 	lds	r24, 0x9424
   3e6de:	90 91 25 94 	lds	r25, 0x9425
   3e6e2:	ff ef       	ldi	r31, 0xFF	; 255
   3e6e4:	8f 3f       	cpi	r24, 0xFF	; 255
   3e6e6:	9f 07       	cpc	r25, r31
   3e6e8:	11 f4       	brne	.+4      	; 0x3e6ee <boot_loader+0x6ee>
   3e6ea:	80 e0       	ldi	r24, 0x00	; 0
   3e6ec:	91 e0       	ldi	r25, 0x01	; 1
   3e6ee:	28 17       	cp	r18, r24
   3e6f0:	39 07       	cpc	r19, r25
   3e6f2:	09 f0       	breq	.+2      	; 0x3e6f6 <boot_loader+0x6f6>
   3e6f4:	64 c2       	rjmp	.+1224   	; 0x3ebbe <boot_loader+0xbbe>
   3e6f6:	6f 89       	ldd	r22, Y+23	; 0x17
   3e6f8:	78 8d       	ldd	r23, Y+24	; 0x18
   3e6fa:	61 15       	cp	r22, r1
   3e6fc:	71 05       	cpc	r23, r1
   3e6fe:	09 f4       	brne	.+2      	; 0x3e702 <boot_loader+0x702>
   3e700:	5e c2       	rjmp	.+1212   	; 0x3ebbe <boot_loader+0xbbe>
   3e702:	2f 85       	ldd	r18, Y+15	; 0x0f
   3e704:	38 89       	ldd	r19, Y+16	; 0x10
   3e706:	49 89       	ldd	r20, Y+17	; 0x11
   3e708:	5a 89       	ldd	r21, Y+18	; 0x12
   3e70a:	80 91 7d 94 	lds	r24, 0x947D
   3e70e:	90 91 7e 94 	lds	r25, 0x947E
   3e712:	a0 91 7f 94 	lds	r26, 0x947F
   3e716:	b0 91 80 94 	lds	r27, 0x9480
   3e71a:	28 17       	cp	r18, r24
   3e71c:	39 07       	cpc	r19, r25
   3e71e:	4a 07       	cpc	r20, r26
   3e720:	5b 07       	cpc	r21, r27
   3e722:	09 f0       	breq	.+2      	; 0x3e726 <boot_loader+0x726>
   3e724:	4c c2       	rjmp	.+1176   	; 0x3ebbe <boot_loader+0xbbe>
   3e726:	2b 89       	ldd	r18, Y+19	; 0x13
   3e728:	3c 89       	ldd	r19, Y+20	; 0x14
   3e72a:	4d 89       	ldd	r20, Y+21	; 0x15
   3e72c:	5e 89       	ldd	r21, Y+22	; 0x16
   3e72e:	e0 90 81 94 	lds	r14, 0x9481
   3e732:	f0 90 82 94 	lds	r15, 0x9482
   3e736:	00 91 83 94 	lds	r16, 0x9483
   3e73a:	10 91 84 94 	lds	r17, 0x9484
   3e73e:	2e 15       	cp	r18, r14
   3e740:	3f 05       	cpc	r19, r15
   3e742:	40 07       	cpc	r20, r16
   3e744:	51 07       	cpc	r21, r17
   3e746:	08 f0       	brcs	.+2      	; 0x3e74a <boot_loader+0x74a>
   3e748:	3a c2       	rjmp	.+1140   	; 0x3ebbe <boot_loader+0xbbe>
   3e74a:	cb 01       	movw	r24, r22
   3e74c:	a0 e0       	ldi	r26, 0x00	; 0
   3e74e:	b0 e0       	ldi	r27, 0x00	; 0
   3e750:	82 0f       	add	r24, r18
   3e752:	93 1f       	adc	r25, r19
   3e754:	a4 1f       	adc	r26, r20
   3e756:	b5 1f       	adc	r27, r21
   3e758:	e8 16       	cp	r14, r24
   3e75a:	f9 06       	cpc	r15, r25
   3e75c:	0a 07       	cpc	r16, r26
   3e75e:	1b 07       	cpc	r17, r27
   3e760:	08 f4       	brcc	.+2      	; 0x3e764 <boot_loader+0x764>
   3e762:	2d c2       	rjmp	.+1114   	; 0x3ebbe <boot_loader+0xbbe>
   3e764:	cb 01       	movw	r24, r22
   3e766:	0f 96       	adiw	r24, 0x0f	; 15
   3e768:	c8 16       	cp	r12, r24
   3e76a:	d9 06       	cpc	r13, r25
   3e76c:	09 f0       	breq	.+2      	; 0x3e770 <boot_loader+0x770>
   3e76e:	27 c2       	rjmp	.+1102   	; 0x3ebbe <boot_loader+0xbbe>
   3e770:	ce 01       	movw	r24, r28
   3e772:	49 96       	adiw	r24, 0x19	; 25
   3e774:	0f 94 31 f7 	call	0x3ee62	; 0x3ee62 <boot_loader+0xe62>
   3e778:	58 c2       	rjmp	.+1200   	; 0x3ec2a <boot_loader+0xc2a>
   3e77a:	81 33       	cpi	r24, 0x31	; 49
   3e77c:	09 f0       	breq	.+2      	; 0x3e780 <boot_loader+0x780>
   3e77e:	47 c1       	rjmp	.+654    	; 0x3ea0e <boot_loader+0xa0e>
   3e780:	8b 85       	ldd	r24, Y+11	; 0x0b
   3e782:	9c 85       	ldd	r25, Y+12	; 0x0c
   3e784:	88 50       	subi	r24, 0x08	; 8
   3e786:	90 49       	sbci	r25, 0x90	; 144
   3e788:	09 f0       	breq	.+2      	; 0x3e78c <boot_loader+0x78c>
   3e78a:	7d c2       	rjmp	.+1274   	; 0x3ec86 <boot_loader+0xc86>
   3e78c:	2d 85       	ldd	r18, Y+13	; 0x0d
   3e78e:	3e 85       	ldd	r19, Y+14	; 0x0e
   3e790:	80 91 24 94 	lds	r24, 0x9424
   3e794:	90 91 25 94 	lds	r25, 0x9425
   3e798:	4f ef       	ldi	r20, 0xFF	; 255
   3e79a:	8f 3f       	cpi	r24, 0xFF	; 255
   3e79c:	94 07       	cpc	r25, r20
   3e79e:	11 f4       	brne	.+4      	; 0x3e7a4 <boot_loader+0x7a4>
   3e7a0:	80 e0       	ldi	r24, 0x00	; 0
   3e7a2:	91 e0       	ldi	r25, 0x01	; 1
   3e7a4:	28 17       	cp	r18, r24
   3e7a6:	39 07       	cpc	r19, r25
   3e7a8:	09 f0       	breq	.+2      	; 0x3e7ac <boot_loader+0x7ac>
   3e7aa:	09 c2       	rjmp	.+1042   	; 0x3ebbe <boot_loader+0xbbe>
   3e7ac:	57 e1       	ldi	r21, 0x17	; 23
   3e7ae:	c5 16       	cp	r12, r21
   3e7b0:	d1 04       	cpc	r13, r1
   3e7b2:	09 f0       	breq	.+2      	; 0x3e7b6 <boot_loader+0x7b6>
   3e7b4:	04 c2       	rjmp	.+1032   	; 0x3ebbe <boot_loader+0xbbe>
   3e7b6:	0f 94 a4 f6 	call	0x3ed48	; 0x3ed48 <boot_loader+0xd48>
   3e7ba:	ce 01       	movw	r24, r28
   3e7bc:	0f 96       	adiw	r24, 0x0f	; 15
   3e7be:	62 e7       	ldi	r22, 0x72	; 114
   3e7c0:	74 e9       	ldi	r23, 0x94	; 148
   3e7c2:	4b e0       	ldi	r20, 0x0B	; 11
   3e7c4:	50 e0       	ldi	r21, 0x00	; 0
   3e7c6:	0f 94 3a ff 	call	0x3fe74	; 0x3fe74 <boot_loader+0x1e74>
   3e7ca:	10 92 01 80 	sts	0x8001, r1
   3e7ce:	00 97       	sbiw	r24, 0x00	; 0
   3e7d0:	19 f4       	brne	.+6      	; 0x3e7d8 <boot_loader+0x7d8>
   3e7d2:	81 e0       	ldi	r24, 0x01	; 1
   3e7d4:	80 93 01 80 	sts	0x8001, r24
   3e7d8:	2a 8d       	ldd	r18, Y+26	; 0x1a
   3e7da:	3b 8d       	ldd	r19, Y+27	; 0x1b
   3e7dc:	4c 8d       	ldd	r20, Y+28	; 0x1c
   3e7de:	5d 8d       	ldd	r21, Y+29	; 0x1d
   3e7e0:	2f 3f       	cpi	r18, 0xFF	; 255
   3e7e2:	8f ef       	ldi	r24, 0xFF	; 255
   3e7e4:	38 07       	cpc	r19, r24
   3e7e6:	8f ef       	ldi	r24, 0xFF	; 255
   3e7e8:	48 07       	cpc	r20, r24
   3e7ea:	8f ef       	ldi	r24, 0xFF	; 255
   3e7ec:	58 07       	cpc	r21, r24
   3e7ee:	19 f4       	brne	.+6      	; 0x3e7f6 <boot_loader+0x7f6>
   3e7f0:	20 e0       	ldi	r18, 0x00	; 0
   3e7f2:	30 e0       	ldi	r19, 0x00	; 0
   3e7f4:	12 c0       	rjmp	.+36     	; 0x3e81a <boot_loader+0x81a>
   3e7f6:	60 e0       	ldi	r22, 0x00	; 0
   3e7f8:	80 91 7d 94 	lds	r24, 0x947D
   3e7fc:	90 91 7e 94 	lds	r25, 0x947E
   3e800:	a0 91 7f 94 	lds	r26, 0x947F
   3e804:	b0 91 80 94 	lds	r27, 0x9480
   3e808:	28 17       	cp	r18, r24
   3e80a:	39 07       	cpc	r19, r25
   3e80c:	4a 07       	cpc	r20, r26
   3e80e:	5b 07       	cpc	r21, r27
   3e810:	09 f0       	breq	.+2      	; 0x3e814 <boot_loader+0x814>
   3e812:	61 e0       	ldi	r22, 0x01	; 1
   3e814:	81 e0       	ldi	r24, 0x01	; 1
   3e816:	68 27       	eor	r22, r24
   3e818:	26 2f       	mov	r18, r22
   3e81a:	20 93 00 80 	sts	0x8000, r18
   3e81e:	80 91 99 90 	lds	r24, 0x9099
   3e822:	88 23       	and	r24, r24
   3e824:	19 f4       	brne	.+6      	; 0x3e82c <boot_loader+0x82c>
   3e826:	80 e0       	ldi	r24, 0x00	; 0
   3e828:	90 e0       	ldi	r25, 0x00	; 0
   3e82a:	0e c0       	rjmp	.+28     	; 0x3e848 <boot_loader+0x848>
   3e82c:	22 23       	and	r18, r18
   3e82e:	19 f0       	breq	.+6      	; 0x3e836 <boot_loader+0x836>
   3e830:	81 e0       	ldi	r24, 0x01	; 1
   3e832:	90 e0       	ldi	r25, 0x00	; 0
   3e834:	09 c0       	rjmp	.+18     	; 0x3e848 <boot_loader+0x848>
   3e836:	20 e0       	ldi	r18, 0x00	; 0
   3e838:	30 e0       	ldi	r19, 0x00	; 0
   3e83a:	80 91 01 80 	lds	r24, 0x8001
   3e83e:	88 23       	and	r24, r24
   3e840:	11 f0       	breq	.+4      	; 0x3e846 <boot_loader+0x846>
   3e842:	21 e0       	ldi	r18, 0x01	; 1
   3e844:	30 e0       	ldi	r19, 0x00	; 0
   3e846:	c9 01       	movw	r24, r18
   3e848:	80 93 05 80 	sts	0x8005, r24
   3e84c:	88 23       	and	r24, r24
   3e84e:	19 f4       	brne	.+6      	; 0x3e856 <boot_loader+0x856>
   3e850:	80 e0       	ldi	r24, 0x00	; 0
   3e852:	90 e0       	ldi	r25, 0x00	; 0
   3e854:	02 c0       	rjmp	.+4      	; 0x3e85a <boot_loader+0x85a>
   3e856:	8e 8d       	ldd	r24, Y+30	; 0x1e
   3e858:	81 70       	andi	r24, 0x01	; 1
   3e85a:	80 93 04 80 	sts	0x8004, r24
   3e85e:	88 23       	and	r24, r24
   3e860:	19 f4       	brne	.+6      	; 0x3e868 <boot_loader+0x868>
   3e862:	80 e0       	ldi	r24, 0x00	; 0
   3e864:	90 e0       	ldi	r25, 0x00	; 0
   3e866:	03 c0       	rjmp	.+6      	; 0x3e86e <boot_loader+0x86e>
   3e868:	8e 8d       	ldd	r24, Y+30	; 0x1e
   3e86a:	86 95       	lsr	r24
   3e86c:	81 70       	andi	r24, 0x01	; 1
   3e86e:	80 93 03 80 	sts	0x8003, r24
   3e872:	80 91 04 80 	lds	r24, 0x8004
   3e876:	88 23       	and	r24, r24
   3e878:	21 f1       	breq	.+72     	; 0x3e8c2 <boot_loader+0x8c2>
   3e87a:	00 91 93 94 	lds	r16, 0x9493
   3e87e:	10 91 94 94 	lds	r17, 0x9494
   3e882:	60 91 81 94 	lds	r22, 0x9481
   3e886:	70 91 82 94 	lds	r23, 0x9482
   3e88a:	80 91 83 94 	lds	r24, 0x9483
   3e88e:	90 91 84 94 	lds	r25, 0x9484
   3e892:	0f 94 41 fc 	call	0x3f882	; 0x3f882 <boot_loader+0x1882>
   3e896:	08 17       	cp	r16, r24
   3e898:	19 07       	cpc	r17, r25
   3e89a:	59 f4       	brne	.+22     	; 0x3e8b2 <boot_loader+0x8b2>
   3e89c:	80 91 91 94 	lds	r24, 0x9491
   3e8a0:	80 68       	ori	r24, 0x80	; 128
   3e8a2:	80 93 91 94 	sts	0x9491, r24
   3e8a6:	81 e0       	ldi	r24, 0x01	; 1
   3e8a8:	80 93 02 80 	sts	0x8002, r24
   3e8ac:	80 93 14 93 	sts	0x9314, r24
   3e8b0:	0b c0       	rjmp	.+22     	; 0x3e8c8 <boot_loader+0x8c8>
   3e8b2:	80 91 91 94 	lds	r24, 0x9491
   3e8b6:	8f 77       	andi	r24, 0x7F	; 127
   3e8b8:	80 93 91 94 	sts	0x9491, r24
   3e8bc:	10 92 02 80 	sts	0x8002, r1
   3e8c0:	03 c0       	rjmp	.+6      	; 0x3e8c8 <boot_loader+0x8c8>
   3e8c2:	81 e0       	ldi	r24, 0x01	; 1
   3e8c4:	80 93 02 80 	sts	0x8002, r24
   3e8c8:	80 91 02 80 	lds	r24, 0x8002
   3e8cc:	88 23       	and	r24, r24
   3e8ce:	09 f4       	brne	.+2      	; 0x3e8d2 <boot_loader+0x8d2>
   3e8d0:	b5 c1       	rjmp	.+874    	; 0x3ec3c <boot_loader+0xc3c>
   3e8d2:	20 e0       	ldi	r18, 0x00	; 0
   3e8d4:	30 e0       	ldi	r19, 0x00	; 0
   3e8d6:	80 91 05 80 	lds	r24, 0x8005
   3e8da:	88 23       	and	r24, r24
   3e8dc:	11 f0       	breq	.+4      	; 0x3e8e2 <boot_loader+0x8e2>
   3e8de:	21 e0       	ldi	r18, 0x01	; 1
   3e8e0:	30 e0       	ldi	r19, 0x00	; 0
   3e8e2:	81 e3       	ldi	r24, 0x31	; 49
   3e8e4:	80 93 a9 94 	sts	0x94A9, r24
   3e8e8:	8c 81       	ldd	r24, Y+4	; 0x04
   3e8ea:	9d 81       	ldd	r25, Y+5	; 0x05
   3e8ec:	ae 81       	ldd	r26, Y+6	; 0x06
   3e8ee:	bf 81       	ldd	r27, Y+7	; 0x07
   3e8f0:	80 93 aa 94 	sts	0x94AA, r24
   3e8f4:	90 93 ab 94 	sts	0x94AB, r25
   3e8f8:	a0 93 ac 94 	sts	0x94AC, r26
   3e8fc:	b0 93 ad 94 	sts	0x94AD, r27
   3e900:	84 e1       	ldi	r24, 0x14	; 20
   3e902:	90 e0       	ldi	r25, 0x00	; 0
   3e904:	fc 01       	movw	r30, r24
   3e906:	2e 9f       	mul	r18, r30
   3e908:	c0 01       	movw	r24, r0
   3e90a:	2f 9f       	mul	r18, r31
   3e90c:	90 0d       	add	r25, r0
   3e90e:	3e 9f       	mul	r19, r30
   3e910:	90 0d       	add	r25, r0
   3e912:	11 24       	eor	r1, r1
   3e914:	07 96       	adiw	r24, 0x07	; 7
   3e916:	90 93 af 94 	sts	0x94AF, r25
   3e91a:	80 93 ae 94 	sts	0x94AE, r24
   3e91e:	80 91 24 94 	lds	r24, 0x9424
   3e922:	90 91 25 94 	lds	r25, 0x9425
   3e926:	ff ef       	ldi	r31, 0xFF	; 255
   3e928:	8f 3f       	cpi	r24, 0xFF	; 255
   3e92a:	9f 07       	cpc	r25, r31
   3e92c:	11 f4       	brne	.+4      	; 0x3e932 <boot_loader+0x932>
   3e92e:	80 e0       	ldi	r24, 0x00	; 0
   3e930:	91 e0       	ldi	r25, 0x01	; 1
   3e932:	90 93 b1 94 	sts	0x94B1, r25
   3e936:	80 93 b0 94 	sts	0x94B0, r24
   3e93a:	10 92 b3 94 	sts	0x94B3, r1
   3e93e:	10 92 b2 94 	sts	0x94B2, r1
   3e942:	8f ef       	ldi	r24, 0xFF	; 255
   3e944:	80 93 b4 94 	sts	0x94B4, r24
   3e948:	30 93 b6 94 	sts	0x94B6, r19
   3e94c:	20 93 b5 94 	sts	0x94B5, r18
   3e950:	23 2b       	or	r18, r19
   3e952:	69 f1       	breq	.+90     	; 0x3e9ae <boot_loader+0x9ae>
   3e954:	a7 eb       	ldi	r26, 0xB7	; 183
   3e956:	b4 e9       	ldi	r27, 0x94	; 148
   3e958:	e2 e7       	ldi	r30, 0x72	; 114
   3e95a:	f4 e9       	ldi	r31, 0x94	; 148
   3e95c:	8b e0       	ldi	r24, 0x0B	; 11
   3e95e:	01 90       	ld	r0, Z+
   3e960:	0d 92       	st	X+, r0
   3e962:	81 50       	subi	r24, 0x01	; 1
   3e964:	e1 f7       	brne	.-8      	; 0x3e95e <boot_loader+0x95e>
   3e966:	80 91 7d 94 	lds	r24, 0x947D
   3e96a:	90 91 7e 94 	lds	r25, 0x947E
   3e96e:	a0 91 7f 94 	lds	r26, 0x947F
   3e972:	b0 91 80 94 	lds	r27, 0x9480
   3e976:	80 93 c2 94 	sts	0x94C2, r24
   3e97a:	90 93 c3 94 	sts	0x94C3, r25
   3e97e:	a0 93 c4 94 	sts	0x94C4, r26
   3e982:	b0 93 c5 94 	sts	0x94C5, r27
   3e986:	80 91 81 94 	lds	r24, 0x9481
   3e98a:	90 91 82 94 	lds	r25, 0x9482
   3e98e:	a0 91 83 94 	lds	r26, 0x9483
   3e992:	b0 91 84 94 	lds	r27, 0x9484
   3e996:	80 93 c6 94 	sts	0x94C6, r24
   3e99a:	90 93 c7 94 	sts	0x94C7, r25
   3e99e:	a0 93 c8 94 	sts	0x94C8, r26
   3e9a2:	b0 93 c9 94 	sts	0x94C9, r27
   3e9a6:	80 91 91 94 	lds	r24, 0x9491
   3e9aa:	80 93 ca 94 	sts	0x94CA, r24
   3e9ae:	80 91 ae 94 	lds	r24, 0x94AE
   3e9b2:	90 91 af 94 	lds	r25, 0x94AF
   3e9b6:	fc 01       	movw	r30, r24
   3e9b8:	39 96       	adiw	r30, 0x09	; 9
   3e9ba:	ac 01       	movw	r20, r24
   3e9bc:	49 5f       	subi	r20, 0xF9	; 249
   3e9be:	5f 4f       	sbci	r21, 0xFF	; 255
   3e9c0:	a9 ea       	ldi	r26, 0xA9	; 169
   3e9c2:	b4 e9       	ldi	r27, 0x94	; 148
   3e9c4:	20 e0       	ldi	r18, 0x00	; 0
   3e9c6:	30 e0       	ldi	r19, 0x00	; 0
   3e9c8:	1a c0       	rjmp	.+52     	; 0x3e9fe <boot_loader+0x9fe>
   3e9ca:	8d 91       	ld	r24, X+
   3e9cc:	28 27       	eor	r18, r24
   3e9ce:	82 2f       	mov	r24, r18
   3e9d0:	82 95       	swap	r24
   3e9d2:	82 27       	eor	r24, r18
   3e9d4:	08 2e       	mov	r0, r24
   3e9d6:	86 95       	lsr	r24
   3e9d8:	86 95       	lsr	r24
   3e9da:	80 25       	eor	r24, r0
   3e9dc:	08 2e       	mov	r0, r24
   3e9de:	86 95       	lsr	r24
   3e9e0:	80 25       	eor	r24, r0
   3e9e2:	87 70       	andi	r24, 0x07	; 7
   3e9e4:	02 2e       	mov	r0, r18
   3e9e6:	23 2f       	mov	r18, r19
   3e9e8:	86 95       	lsr	r24
   3e9ea:	07 94       	ror	r0
   3e9ec:	87 95       	ror	r24
   3e9ee:	30 2d       	mov	r19, r0
   3e9f0:	28 27       	eor	r18, r24
   3e9f2:	06 94       	lsr	r0
   3e9f4:	87 95       	ror	r24
   3e9f6:	30 25       	eor	r19, r0
   3e9f8:	28 27       	eor	r18, r24
   3e9fa:	41 50       	subi	r20, 0x01	; 1
   3e9fc:	50 40       	sbci	r21, 0x00	; 0
   3e9fe:	41 15       	cp	r20, r1
   3ea00:	51 05       	cpc	r21, r1
   3ea02:	19 f7       	brne	.-58     	; 0x3e9ca <boot_loader+0x9ca>
   3ea04:	e9 55       	subi	r30, 0x59	; 89
   3ea06:	fb 46       	sbci	r31, 0x6B	; 107
   3ea08:	20 83       	st	Z, r18
   3ea0a:	31 83       	std	Z+1, r19	; 0x01
   3ea0c:	03 c1       	rjmp	.+518    	; 0x3ec14 <boot_loader+0xc14>
   3ea0e:	80 31       	cpi	r24, 0x10	; 16
   3ea10:	09 f0       	breq	.+2      	; 0x3ea14 <boot_loader+0xa14>
   3ea12:	39 c1       	rjmp	.+626    	; 0x3ec86 <boot_loader+0xc86>
   3ea14:	8b 85       	ldd	r24, Y+11	; 0x0b
   3ea16:	9c 85       	ldd	r25, Y+12	; 0x0c
   3ea18:	20 e9       	ldi	r18, 0x90	; 144
   3ea1a:	85 30       	cpi	r24, 0x05	; 5
   3ea1c:	92 07       	cpc	r25, r18
   3ea1e:	09 f0       	breq	.+2      	; 0x3ea22 <boot_loader+0xa22>
   3ea20:	c2 c0       	rjmp	.+388    	; 0x3eba6 <boot_loader+0xba6>
   3ea22:	4e 85       	ldd	r20, Y+14	; 0x0e
   3ea24:	5d 85       	ldd	r21, Y+13	; 0x0d
   3ea26:	e8 89       	ldd	r30, Y+16	; 0x10
   3ea28:	ff 85       	ldd	r31, Y+15	; 0x0f
   3ea2a:	80 91 99 90 	lds	r24, 0x9099
   3ea2e:	88 23       	and	r24, r24
   3ea30:	09 f4       	brne	.+2      	; 0x3ea34 <boot_loader+0xa34>
   3ea32:	c5 c0       	rjmp	.+394    	; 0x3ebbe <boot_loader+0xbbe>
   3ea34:	60 91 24 94 	lds	r22, 0x9424
   3ea38:	70 91 25 94 	lds	r23, 0x9425
   3ea3c:	8f ef       	ldi	r24, 0xFF	; 255
   3ea3e:	6f 3f       	cpi	r22, 0xFF	; 255
   3ea40:	78 07       	cpc	r23, r24
   3ea42:	19 f4       	brne	.+6      	; 0x3ea4a <boot_loader+0xa4a>
   3ea44:	20 e0       	ldi	r18, 0x00	; 0
   3ea46:	31 e0       	ldi	r19, 0x01	; 1
   3ea48:	01 c0       	rjmp	.+2      	; 0x3ea4c <boot_loader+0xa4c>
   3ea4a:	9b 01       	movw	r18, r22
   3ea4c:	94 2f       	mov	r25, r20
   3ea4e:	80 e0       	ldi	r24, 0x00	; 0
   3ea50:	85 0f       	add	r24, r21
   3ea52:	91 1d       	adc	r25, r1
   3ea54:	82 17       	cp	r24, r18
   3ea56:	93 07       	cpc	r25, r19
   3ea58:	09 f0       	breq	.+2      	; 0x3ea5c <boot_loader+0xa5c>
   3ea5a:	b1 c0       	rjmp	.+354    	; 0x3ebbe <boot_loader+0xbbe>
   3ea5c:	9e 2f       	mov	r25, r30
   3ea5e:	80 e0       	ldi	r24, 0x00	; 0
   3ea60:	8f 0f       	add	r24, r31
   3ea62:	91 1d       	adc	r25, r1
   3ea64:	01 97       	sbiw	r24, 0x01	; 1
   3ea66:	09 f0       	breq	.+2      	; 0x3ea6a <boot_loader+0xa6a>
   3ea68:	aa c0       	rjmp	.+340    	; 0x3ebbe <boot_loader+0xbbe>
   3ea6a:	fe 01       	movw	r30, r28
   3ea6c:	71 96       	adiw	r30, 0x11	; 17
   3ea6e:	21 81       	ldd	r18, Z+1	; 0x01
   3ea70:	32 81       	ldd	r19, Z+2	; 0x02
   3ea72:	43 81       	ldd	r20, Z+3	; 0x03
   3ea74:	54 81       	ldd	r21, Z+4	; 0x04
   3ea76:	80 91 7d 94 	lds	r24, 0x947D
   3ea7a:	90 91 7e 94 	lds	r25, 0x947E
   3ea7e:	a0 91 7f 94 	lds	r26, 0x947F
   3ea82:	b0 91 80 94 	lds	r27, 0x9480
   3ea86:	28 17       	cp	r18, r24
   3ea88:	39 07       	cpc	r19, r25
   3ea8a:	4a 07       	cpc	r20, r26
   3ea8c:	5b 07       	cpc	r21, r27
   3ea8e:	09 f0       	breq	.+2      	; 0x3ea92 <boot_loader+0xa92>
   3ea90:	96 c0       	rjmp	.+300    	; 0x3ebbe <boot_loader+0xbbe>
   3ea92:	85 81       	ldd	r24, Z+5	; 0x05
   3ea94:	96 81       	ldd	r25, Z+6	; 0x06
   3ea96:	ef ef       	ldi	r30, 0xFF	; 255
   3ea98:	6f 3f       	cpi	r22, 0xFF	; 255
   3ea9a:	7e 07       	cpc	r23, r30
   3ea9c:	11 f4       	brne	.+4      	; 0x3eaa2 <boot_loader+0xaa2>
   3ea9e:	60 e0       	ldi	r22, 0x00	; 0
   3eaa0:	71 e0       	ldi	r23, 0x01	; 1
   3eaa2:	86 17       	cp	r24, r22
   3eaa4:	97 07       	cpc	r25, r23
   3eaa6:	09 f0       	breq	.+2      	; 0x3eaaa <boot_loader+0xaaa>
   3eaa8:	8a c0       	rjmp	.+276    	; 0x3ebbe <boot_loader+0xbbe>
   3eaaa:	89 89       	ldd	r24, Y+17	; 0x11
   3eaac:	83 30       	cpi	r24, 0x03	; 3
   3eaae:	08 f0       	brcs	.+2      	; 0x3eab2 <boot_loader+0xab2>
   3eab0:	86 c0       	rjmp	.+268    	; 0x3ebbe <boot_loader+0xbbe>
   3eab2:	f0 e1       	ldi	r31, 0x10	; 16
   3eab4:	cf 16       	cp	r12, r31
   3eab6:	d1 04       	cpc	r13, r1
   3eab8:	09 f0       	breq	.+2      	; 0x3eabc <boot_loader+0xabc>
   3eaba:	81 c0       	rjmp	.+258    	; 0x3ebbe <boot_loader+0xbbe>
   3eabc:	80 91 91 94 	lds	r24, 0x9491
   3eac0:	87 fd       	sbrc	r24, 7
   3eac2:	16 c0       	rjmp	.+44     	; 0x3eaf0 <boot_loader+0xaf0>
   3eac4:	00 91 93 94 	lds	r16, 0x9493
   3eac8:	10 91 94 94 	lds	r17, 0x9494
   3eacc:	60 91 81 94 	lds	r22, 0x9481
   3ead0:	70 91 82 94 	lds	r23, 0x9482
   3ead4:	80 91 83 94 	lds	r24, 0x9483
   3ead8:	90 91 84 94 	lds	r25, 0x9484
   3eadc:	0f 94 41 fc 	call	0x3f882	; 0x3f882 <boot_loader+0x1882>
   3eae0:	08 17       	cp	r16, r24
   3eae2:	19 07       	cpc	r17, r25
   3eae4:	29 f4       	brne	.+10     	; 0x3eaf0 <boot_loader+0xaf0>
   3eae6:	80 91 91 94 	lds	r24, 0x9491
   3eaea:	80 68       	ori	r24, 0x80	; 128
   3eaec:	80 93 91 94 	sts	0x9491, r24
   3eaf0:	80 91 91 94 	lds	r24, 0x9491
   3eaf4:	87 ff       	sbrs	r24, 7
   3eaf6:	a2 c0       	rjmp	.+324    	; 0x3ec3c <boot_loader+0xc3c>
   3eaf8:	08 e2       	ldi	r16, 0x28	; 40
   3eafa:	14 e9       	ldi	r17, 0x94	; 148
   3eafc:	83 e2       	ldi	r24, 0x23	; 35
   3eafe:	f8 01       	movw	r30, r16
   3eb00:	28 2f       	mov	r18, r24
   3eb02:	11 92       	st	Z+, r1
   3eb04:	2a 95       	dec	r18
   3eb06:	e9 f7       	brne	.-6      	; 0x3eb02 <boot_loader+0xb02>
   3eb08:	0d 5d       	subi	r16, 0xDD	; 221
   3eb0a:	1f 4f       	sbci	r17, 0xFF	; 255
   3eb0c:	f8 01       	movw	r30, r16
   3eb0e:	11 92       	st	Z+, r1
   3eb10:	8a 95       	dec	r24
   3eb12:	e9 f7       	brne	.-6      	; 0x3eb0e <boot_loader+0xb0e>
   3eb14:	03 52       	subi	r16, 0x23	; 35
   3eb16:	10 40       	sbci	r17, 0x00	; 0
   3eb18:	c8 01       	movw	r24, r16
   3eb1a:	67 e0       	ldi	r22, 0x07	; 7
   3eb1c:	73 e9       	ldi	r23, 0x93	; 147
   3eb1e:	0f 94 57 ff 	call	0x3feae	; 0x3feae <boot_loader+0x1eae>
   3eb22:	80 91 81 94 	lds	r24, 0x9481
   3eb26:	90 91 82 94 	lds	r25, 0x9482
   3eb2a:	a0 91 83 94 	lds	r26, 0x9483
   3eb2e:	b0 91 84 94 	lds	r27, 0x9484
   3eb32:	80 93 35 94 	sts	0x9435, r24
   3eb36:	90 93 36 94 	sts	0x9436, r25
   3eb3a:	a0 93 37 94 	sts	0x9437, r26
   3eb3e:	b0 93 38 94 	sts	0x9438, r27
   3eb42:	80 91 93 94 	lds	r24, 0x9493
   3eb46:	90 91 94 94 	lds	r25, 0x9494
   3eb4a:	90 93 3a 94 	sts	0x943A, r25
   3eb4e:	80 93 39 94 	sts	0x9439, r24
   3eb52:	d8 01       	movw	r26, r16
   3eb54:	53 96       	adiw	r26, 0x13	; 19
   3eb56:	e5 e9       	ldi	r30, 0x95	; 149
   3eb58:	f4 e9       	ldi	r31, 0x94	; 148
   3eb5a:	80 e1       	ldi	r24, 0x10	; 16
   3eb5c:	01 90       	ld	r0, Z+
   3eb5e:	0d 92       	st	X+, r0
   3eb60:	81 50       	subi	r24, 0x01	; 1
   3eb62:	e1 f7       	brne	.-8      	; 0x3eb5c <boot_loader+0xb5c>
   3eb64:	10 92 4b 94 	sts	0x944B, r1
   3eb68:	10 92 4c 94 	sts	0x944C, r1
   3eb6c:	90 e0       	ldi	r25, 0x00	; 0
   3eb6e:	89 89       	ldd	r24, Y+17	; 0x11
   3eb70:	81 30       	cpi	r24, 0x01	; 1
   3eb72:	09 f0       	breq	.+2      	; 0x3eb76 <boot_loader+0xb76>
   3eb74:	91 e0       	ldi	r25, 0x01	; 1
   3eb76:	80 91 6f 94 	lds	r24, 0x946F
   3eb7a:	8e 7f       	andi	r24, 0xFE	; 254
   3eb7c:	89 2b       	or	r24, r25
   3eb7e:	98 2f       	mov	r25, r24
   3eb80:	9b 7f       	andi	r25, 0xFB	; 251
   3eb82:	90 93 6f 94 	sts	0x946F, r25
   3eb86:	90 e0       	ldi	r25, 0x00	; 0
   3eb88:	80 ff       	sbrs	r24, 0
   3eb8a:	91 e0       	ldi	r25, 0x01	; 1
   3eb8c:	92 95       	swap	r25
   3eb8e:	90 7f       	andi	r25, 0xF0	; 240
   3eb90:	80 91 6f 94 	lds	r24, 0x946F
   3eb94:	8f 7e       	andi	r24, 0xEF	; 239
   3eb96:	89 2b       	or	r24, r25
   3eb98:	80 62       	ori	r24, 0x20	; 32
   3eb9a:	80 93 6f 94 	sts	0x946F, r24
   3eb9e:	81 e0       	ldi	r24, 0x01	; 1
   3eba0:	80 93 22 93 	sts	0x9322, r24
   3eba4:	09 c0       	rjmp	.+18     	; 0x3ebb8 <boot_loader+0xbb8>
   3eba6:	80 50       	subi	r24, 0x00	; 0
   3eba8:	90 4a       	sbci	r25, 0xA0	; 160
   3ebaa:	09 f0       	breq	.+2      	; 0x3ebae <boot_loader+0xbae>
   3ebac:	6c c0       	rjmp	.+216    	; 0x3ec86 <boot_loader+0xc86>
   3ebae:	20 e1       	ldi	r18, 0x10	; 16
   3ebb0:	c2 16       	cp	r12, r18
   3ebb2:	d1 04       	cpc	r13, r1
   3ebb4:	21 f4       	brne	.+8      	; 0x3ebbe <boot_loader+0xbbe>
   3ebb6:	81 e0       	ldi	r24, 0x01	; 1
   3ebb8:	80 93 a8 94 	sts	0x94A8, r24
   3ebbc:	36 c0       	rjmp	.+108    	; 0x3ec2a <boot_loader+0xc2a>
   3ebbe:	c5 01       	movw	r24, r10
   3ebc0:	b4 01       	movw	r22, r8
   3ebc2:	42 e0       	ldi	r20, 0x02	; 2
   3ebc4:	20 e0       	ldi	r18, 0x00	; 0
   3ebc6:	30 e0       	ldi	r19, 0x00	; 0
   3ebc8:	00 e0       	ldi	r16, 0x00	; 0
   3ebca:	10 e0       	ldi	r17, 0x00	; 0
   3ebcc:	0f 94 ca f8 	call	0x3f194	; 0x3f194 <boot_loader+0x1194>
   3ebd0:	5e c0       	rjmp	.+188    	; 0x3ec8e <boot_loader+0xc8e>
   3ebd2:	81 91       	ld	r24, Z+
   3ebd4:	28 27       	eor	r18, r24
   3ebd6:	82 2f       	mov	r24, r18
   3ebd8:	82 95       	swap	r24
   3ebda:	82 27       	eor	r24, r18
   3ebdc:	08 2e       	mov	r0, r24
   3ebde:	86 95       	lsr	r24
   3ebe0:	86 95       	lsr	r24
   3ebe2:	80 25       	eor	r24, r0
   3ebe4:	08 2e       	mov	r0, r24
   3ebe6:	86 95       	lsr	r24
   3ebe8:	80 25       	eor	r24, r0
   3ebea:	87 70       	andi	r24, 0x07	; 7
   3ebec:	02 2e       	mov	r0, r18
   3ebee:	23 2f       	mov	r18, r19
   3ebf0:	86 95       	lsr	r24
   3ebf2:	07 94       	ror	r0
   3ebf4:	87 95       	ror	r24
   3ebf6:	30 2d       	mov	r19, r0
   3ebf8:	28 27       	eor	r18, r24
   3ebfa:	06 94       	lsr	r0
   3ebfc:	87 95       	ror	r24
   3ebfe:	30 25       	eor	r19, r0
   3ec00:	28 27       	eor	r18, r24
   3ec02:	41 50       	subi	r20, 0x01	; 1
   3ec04:	50 40       	sbci	r21, 0x00	; 0
   3ec06:	41 15       	cp	r20, r1
   3ec08:	51 05       	cpc	r21, r1
   3ec0a:	19 f7       	brne	.-58     	; 0x3ebd2 <boot_loader+0xbd2>
   3ec0c:	20 93 b3 94 	sts	0x94B3, r18
   3ec10:	30 93 b4 94 	sts	0x94B4, r19
   3ec14:	20 91 ae 94 	lds	r18, 0x94AE
   3ec18:	30 91 af 94 	lds	r19, 0x94AF
   3ec1c:	27 5f       	subi	r18, 0xF7	; 247
   3ec1e:	3f 4f       	sbci	r19, 0xFF	; 255
   3ec20:	c5 01       	movw	r24, r10
   3ec22:	b4 01       	movw	r22, r8
   3ec24:	49 ea       	ldi	r20, 0xA9	; 169
   3ec26:	54 e9       	ldi	r21, 0x94	; 148
   3ec28:	06 c0       	rjmp	.+12     	; 0x3ec36 <boot_loader+0xc36>
   3ec2a:	c5 01       	movw	r24, r10
   3ec2c:	b4 01       	movw	r22, r8
   3ec2e:	40 e0       	ldi	r20, 0x00	; 0
   3ec30:	50 e0       	ldi	r21, 0x00	; 0
   3ec32:	20 e0       	ldi	r18, 0x00	; 0
   3ec34:	30 e0       	ldi	r19, 0x00	; 0
   3ec36:	0f 94 6a f8 	call	0x3f0d4	; 0x3f0d4 <boot_loader+0x10d4>
   3ec3a:	29 c0       	rjmp	.+82     	; 0x3ec8e <boot_loader+0xc8e>
   3ec3c:	84 e2       	ldi	r24, 0x24	; 36
   3ec3e:	80 93 a9 94 	sts	0x94A9, r24
   3ec42:	8c 81       	ldd	r24, Y+4	; 0x04
   3ec44:	9d 81       	ldd	r25, Y+5	; 0x05
   3ec46:	ae 81       	ldd	r26, Y+6	; 0x06
   3ec48:	bf 81       	ldd	r27, Y+7	; 0x07
   3ec4a:	80 93 aa 94 	sts	0x94AA, r24
   3ec4e:	90 93 ab 94 	sts	0x94AB, r25
   3ec52:	a0 93 ac 94 	sts	0x94AC, r26
   3ec56:	b0 93 ad 94 	sts	0x94AD, r27
   3ec5a:	83 e0       	ldi	r24, 0x03	; 3
   3ec5c:	90 e0       	ldi	r25, 0x00	; 0
   3ec5e:	90 93 af 94 	sts	0x94AF, r25
   3ec62:	80 93 ae 94 	sts	0x94AE, r24
   3ec66:	81 e0       	ldi	r24, 0x01	; 1
   3ec68:	90 e0       	ldi	r25, 0x00	; 0
   3ec6a:	90 93 b1 94 	sts	0x94B1, r25
   3ec6e:	80 93 b0 94 	sts	0x94B0, r24
   3ec72:	8b e0       	ldi	r24, 0x0B	; 11
   3ec74:	80 93 b2 94 	sts	0x94B2, r24
   3ec78:	4a e0       	ldi	r20, 0x0A	; 10
   3ec7a:	50 e0       	ldi	r21, 0x00	; 0
   3ec7c:	e9 ea       	ldi	r30, 0xA9	; 169
   3ec7e:	f4 e9       	ldi	r31, 0x94	; 148
   3ec80:	20 e0       	ldi	r18, 0x00	; 0
   3ec82:	30 e0       	ldi	r19, 0x00	; 0
   3ec84:	c0 cf       	rjmp	.-128    	; 0x3ec06 <boot_loader+0xc06>
   3ec86:	c5 01       	movw	r24, r10
   3ec88:	b4 01       	movw	r22, r8
   3ec8a:	0f 94 30 f9 	call	0x3f260	; 0x3f260 <boot_loader+0x1260>
   3ec8e:	df 91       	pop	r29
   3ec90:	cf 91       	pop	r28
   3ec92:	1f 91       	pop	r17
   3ec94:	0f 91       	pop	r16
   3ec96:	ff 90       	pop	r15
   3ec98:	ef 90       	pop	r14
   3ec9a:	df 90       	pop	r13
   3ec9c:	cf 90       	pop	r12
   3ec9e:	bf 90       	pop	r11
   3eca0:	af 90       	pop	r10
   3eca2:	9f 90       	pop	r9
   3eca4:	8f 90       	pop	r8
   3eca6:	08 95       	ret
   3eca8:	80 91 00 93 	lds	r24, 0x9300
   3ecac:	84 30       	cpi	r24, 0x04	; 4
   3ecae:	10 f0       	brcs	.+4      	; 0x3ecb4 <boot_loader+0xcb4>
   3ecb0:	9f ef       	ldi	r25, 0xFF	; 255
   3ecb2:	0d c0       	rjmp	.+26     	; 0x3ecce <boot_loader+0xcce>
   3ecb4:	90 91 21 93 	lds	r25, 0x9321
   3ecb8:	8f 5f       	subi	r24, 0xFF	; 255
   3ecba:	80 93 00 93 	sts	0x9300, r24
   3ecbe:	89 2f       	mov	r24, r25
   3ecc0:	8f 5f       	subi	r24, 0xFF	; 255
   3ecc2:	80 93 21 93 	sts	0x9321, r24
   3ecc6:	84 30       	cpi	r24, 0x04	; 4
   3ecc8:	10 f0       	brcs	.+4      	; 0x3ecce <boot_loader+0xcce>
   3ecca:	10 92 21 93 	sts	0x9321, r1
   3ecce:	89 2f       	mov	r24, r25
   3ecd0:	08 95       	ret
   3ecd2:	80 91 00 93 	lds	r24, 0x9300
   3ecd6:	88 23       	and	r24, r24
   3ecd8:	11 f4       	brne	.+4      	; 0x3ecde <boot_loader+0xcde>
   3ecda:	9f ef       	ldi	r25, 0xFF	; 255
   3ecdc:	0d c0       	rjmp	.+26     	; 0x3ecf8 <boot_loader+0xcf8>
   3ecde:	90 91 36 87 	lds	r25, 0x8736
   3ece2:	81 50       	subi	r24, 0x01	; 1
   3ece4:	80 93 00 93 	sts	0x9300, r24
   3ece8:	89 2f       	mov	r24, r25
   3ecea:	8f 5f       	subi	r24, 0xFF	; 255
   3ecec:	80 93 36 87 	sts	0x8736, r24
   3ecf0:	84 30       	cpi	r24, 0x04	; 4
   3ecf2:	10 f0       	brcs	.+4      	; 0x3ecf8 <boot_loader+0xcf8>
   3ecf4:	10 92 36 87 	sts	0x8736, r1
   3ecf8:	89 2f       	mov	r24, r25
   3ecfa:	08 95       	ret
   3ecfc:	ac 01       	movw	r20, r24
   3ecfe:	fb 01       	movw	r30, r22
   3ed00:	da 01       	movw	r26, r20
   3ed02:	98 e0       	ldi	r25, 0x08	; 8
   3ed04:	05 c0       	rjmp	.+10     	; 0x3ed10 <boot_loader+0xd10>
   3ed06:	80 81       	ld	r24, Z
   3ed08:	80 32       	cpi	r24, 0x20	; 32
   3ed0a:	09 f0       	breq	.+2      	; 0x3ed0e <boot_loader+0xd0e>
   3ed0c:	8d 93       	st	X+, r24
   3ed0e:	31 96       	adiw	r30, 0x01	; 1
   3ed10:	91 50       	subi	r25, 0x01	; 1
   3ed12:	c8 f7       	brcc	.-14     	; 0x3ed06 <boot_loader+0xd06>
   3ed14:	fd 01       	movw	r30, r26
   3ed16:	8e e2       	ldi	r24, 0x2E	; 46
   3ed18:	81 93       	st	Z+, r24
   3ed1a:	db 01       	movw	r26, r22
   3ed1c:	9b 01       	movw	r18, r22
   3ed1e:	2d 5f       	subi	r18, 0xFD	; 253
   3ed20:	3f 4f       	sbci	r19, 0xFF	; 255
   3ed22:	07 c0       	rjmp	.+14     	; 0x3ed32 <boot_loader+0xd32>
   3ed24:	18 96       	adiw	r26, 0x08	; 8
   3ed26:	8c 91       	ld	r24, X
   3ed28:	18 97       	sbiw	r26, 0x08	; 8
   3ed2a:	80 32       	cpi	r24, 0x20	; 32
   3ed2c:	09 f0       	breq	.+2      	; 0x3ed30 <boot_loader+0xd30>
   3ed2e:	81 93       	st	Z+, r24
   3ed30:	11 96       	adiw	r26, 0x01	; 1
   3ed32:	a2 17       	cp	r26, r18
   3ed34:	b3 07       	cpc	r27, r19
   3ed36:	b1 f7       	brne	.-20     	; 0x3ed24 <boot_loader+0xd24>
   3ed38:	10 82       	st	Z, r1
   3ed3a:	80 e0       	ldi	r24, 0x00	; 0
   3ed3c:	e4 1b       	sub	r30, r20
   3ed3e:	f5 0b       	sbc	r31, r21
   3ed40:	32 97       	sbiw	r30, 0x02	; 2
   3ed42:	0c f0       	brlt	.+2      	; 0x3ed46 <boot_loader+0xd46>
   3ed44:	81 e0       	ldi	r24, 0x01	; 1
   3ed46:	08 95       	ret
   3ed48:	df 92       	push	r13
   3ed4a:	ef 92       	push	r14
   3ed4c:	ff 92       	push	r15
   3ed4e:	0f 93       	push	r16
   3ed50:	1f 93       	push	r17
   3ed52:	cf 93       	push	r28
   3ed54:	df 93       	push	r29
   3ed56:	20 91 02 93 	lds	r18, 0x9302
   3ed5a:	30 91 03 93 	lds	r19, 0x9303
   3ed5e:	21 15       	cp	r18, r1
   3ed60:	31 05       	cpc	r19, r1
   3ed62:	09 f4       	brne	.+2      	; 0x3ed66 <boot_loader+0xd66>
   3ed64:	76 c0       	rjmp	.+236    	; 0x3ee52 <boot_loader+0xe52>
   3ed66:	2f 3f       	cpi	r18, 0xFF	; 255
   3ed68:	31 05       	cpc	r19, r1
   3ed6a:	09 f0       	breq	.+2      	; 0x3ed6e <boot_loader+0xd6e>
   3ed6c:	60 f4       	brcc	.+24     	; 0x3ed86 <boot_loader+0xd86>
   3ed6e:	e0 e0       	ldi	r30, 0x00	; 0
   3ed70:	f1 e0       	ldi	r31, 0x01	; 1
   3ed72:	e2 1b       	sub	r30, r18
   3ed74:	f3 0b       	sbc	r31, r19
   3ed76:	2d 5d       	subi	r18, 0xDD	; 221
   3ed78:	3c 46       	sbci	r19, 0x6C	; 108
   3ed7a:	c9 01       	movw	r24, r18
   3ed7c:	6f ef       	ldi	r22, 0xFF	; 255
   3ed7e:	70 e0       	ldi	r23, 0x00	; 0
   3ed80:	af 01       	movw	r20, r30
   3ed82:	0f 94 50 ff 	call	0x3fea0	; 0x3fea0 <boot_loader+0x1ea0>
   3ed86:	20 91 fc 92 	lds	r18, 0x92FC
   3ed8a:	30 91 fd 92 	lds	r19, 0x92FD
   3ed8e:	40 91 fe 92 	lds	r20, 0x92FE
   3ed92:	50 91 ff 92 	lds	r21, 0x92FF
   3ed96:	df b6       	in	r13, 0x3f	; 63
   3ed98:	f8 94       	cli
   3ed9a:	07 b6       	in	r0, 0x37	; 55
   3ed9c:	00 fc       	sbrc	r0, 0
   3ed9e:	fd cf       	rjmp	.-6      	; 0x3ed9a <boot_loader+0xd9a>
   3eda0:	f9 99       	sbic	0x1f, 1	; 31
   3eda2:	fe cf       	rjmp	.-4      	; 0x3eda0 <boot_loader+0xda0>
   3eda4:	c3 e2       	ldi	r28, 0x23	; 35
   3eda6:	d3 e9       	ldi	r29, 0x93	; 147
   3eda8:	83 e0       	ldi	r24, 0x03	; 3
   3edaa:	f9 01       	movw	r30, r18
   3edac:	40 93 5b 00 	sts	0x005B, r20
   3edb0:	80 93 57 00 	sts	0x0057, r24
   3edb4:	e8 95       	spm
   3edb6:	da 01       	movw	r26, r20
   3edb8:	c9 01       	movw	r24, r18
   3edba:	11 e0       	ldi	r17, 0x01	; 1
   3edbc:	13 c0       	rjmp	.+38     	; 0x3ede4 <boot_loader+0xde4>
   3edbe:	68 81       	ld	r22, Y
   3edc0:	79 81       	ldd	r23, Y+1	; 0x01
   3edc2:	07 b6       	in	r0, 0x37	; 55
   3edc4:	00 fc       	sbrc	r0, 0
   3edc6:	fd cf       	rjmp	.-6      	; 0x3edc2 <boot_loader+0xdc2>
   3edc8:	f9 99       	sbic	0x1f, 1	; 31
   3edca:	fe cf       	rjmp	.-4      	; 0x3edc8 <boot_loader+0xdc8>
   3edcc:	22 96       	adiw	r28, 0x02	; 2
   3edce:	0b 01       	movw	r0, r22
   3edd0:	fc 01       	movw	r30, r24
   3edd2:	a0 93 5b 00 	sts	0x005B, r26
   3edd6:	10 93 57 00 	sts	0x0057, r17
   3edda:	e8 95       	spm
   3eddc:	11 24       	eor	r1, r1
   3edde:	02 96       	adiw	r24, 0x02	; 2
   3ede0:	a1 1d       	adc	r26, r1
   3ede2:	b1 1d       	adc	r27, r1
   3ede4:	64 e9       	ldi	r22, 0x94	; 148
   3ede6:	c3 32       	cpi	r28, 0x23	; 35
   3ede8:	d6 07       	cpc	r29, r22
   3edea:	49 f7       	brne	.-46     	; 0x3edbe <boot_loader+0xdbe>
   3edec:	e1 2c       	mov	r14, r1
   3edee:	81 e0       	ldi	r24, 0x01	; 1
   3edf0:	f8 2e       	mov	r15, r24
   3edf2:	01 2d       	mov	r16, r1
   3edf4:	11 2d       	mov	r17, r1
   3edf6:	e2 0e       	add	r14, r18
   3edf8:	f3 1e       	adc	r15, r19
   3edfa:	04 1f       	adc	r16, r20
   3edfc:	15 1f       	adc	r17, r21
   3edfe:	07 b6       	in	r0, 0x37	; 55
   3ee00:	00 fc       	sbrc	r0, 0
   3ee02:	fd cf       	rjmp	.-6      	; 0x3edfe <boot_loader+0xdfe>
   3ee04:	f9 99       	sbic	0x1f, 1	; 31
   3ee06:	fe cf       	rjmp	.-4      	; 0x3ee04 <boot_loader+0xe04>
   3ee08:	85 e0       	ldi	r24, 0x05	; 5
   3ee0a:	f9 01       	movw	r30, r18
   3ee0c:	40 93 5b 00 	sts	0x005B, r20
   3ee10:	80 93 57 00 	sts	0x0057, r24
   3ee14:	e8 95       	spm
   3ee16:	07 b6       	in	r0, 0x37	; 55
   3ee18:	00 fc       	sbrc	r0, 0
   3ee1a:	fd cf       	rjmp	.-6      	; 0x3ee16 <boot_loader+0xe16>
   3ee1c:	f9 99       	sbic	0x1f, 1	; 31
   3ee1e:	fe cf       	rjmp	.-4      	; 0x3ee1c <boot_loader+0xe1c>
   3ee20:	81 e1       	ldi	r24, 0x11	; 17
   3ee22:	80 93 57 00 	sts	0x0057, r24
   3ee26:	e8 95       	spm
   3ee28:	df be       	out	0x3f, r13	; 63
   3ee2a:	e0 92 fc 92 	sts	0x92FC, r14
   3ee2e:	f0 92 fd 92 	sts	0x92FD, r15
   3ee32:	00 93 fe 92 	sts	0x92FE, r16
   3ee36:	10 93 ff 92 	sts	0x92FF, r17
   3ee3a:	10 92 03 93 	sts	0x9303, r1
   3ee3e:	10 92 02 93 	sts	0x9302, r1
   3ee42:	83 e2       	ldi	r24, 0x23	; 35
   3ee44:	93 e9       	ldi	r25, 0x93	; 147
   3ee46:	6f ef       	ldi	r22, 0xFF	; 255
   3ee48:	70 e0       	ldi	r23, 0x00	; 0
   3ee4a:	40 e0       	ldi	r20, 0x00	; 0
   3ee4c:	51 e0       	ldi	r21, 0x01	; 1
   3ee4e:	0f 94 50 ff 	call	0x3fea0	; 0x3fea0 <boot_loader+0x1ea0>
   3ee52:	df 91       	pop	r29
   3ee54:	cf 91       	pop	r28
   3ee56:	1f 91       	pop	r17
   3ee58:	0f 91       	pop	r16
   3ee5a:	ff 90       	pop	r15
   3ee5c:	ef 90       	pop	r14
   3ee5e:	df 90       	pop	r13
   3ee60:	08 95       	ret
   3ee62:	6f 92       	push	r6
   3ee64:	7f 92       	push	r7
   3ee66:	8f 92       	push	r8
   3ee68:	9f 92       	push	r9
   3ee6a:	af 92       	push	r10
   3ee6c:	bf 92       	push	r11
   3ee6e:	cf 92       	push	r12
   3ee70:	df 92       	push	r13
   3ee72:	ef 92       	push	r14
   3ee74:	ff 92       	push	r15
   3ee76:	0f 93       	push	r16
   3ee78:	1f 93       	push	r17
   3ee7a:	cf 93       	push	r28
   3ee7c:	df 93       	push	r29
   3ee7e:	3c 01       	movw	r6, r24
   3ee80:	4b 01       	movw	r8, r22
   3ee82:	59 01       	movw	r10, r18
   3ee84:	6a 01       	movw	r12, r20
   3ee86:	80 91 fc 92 	lds	r24, 0x92FC
   3ee8a:	90 91 fd 92 	lds	r25, 0x92FD
   3ee8e:	a0 91 fe 92 	lds	r26, 0x92FE
   3ee92:	b0 91 ff 92 	lds	r27, 0x92FF
   3ee96:	20 91 02 93 	lds	r18, 0x9302
   3ee9a:	30 91 03 93 	lds	r19, 0x9303
   3ee9e:	b9 01       	movw	r22, r18
   3eea0:	68 0f       	add	r22, r24
   3eea2:	79 1f       	adc	r23, r25
   3eea4:	70 70       	andi	r23, 0x00	; 0
   3eea6:	7b 01       	movw	r14, r22
   3eea8:	00 e0       	ldi	r16, 0x00	; 0
   3eeaa:	10 e0       	ldi	r17, 0x00	; 0
   3eeac:	40 e0       	ldi	r20, 0x00	; 0
   3eeae:	50 e0       	ldi	r21, 0x00	; 0
   3eeb0:	28 0f       	add	r18, r24
   3eeb2:	39 1f       	adc	r19, r25
   3eeb4:	4a 1f       	adc	r20, r26
   3eeb6:	5b 1f       	adc	r21, r27
   3eeb8:	2e 19       	sub	r18, r14
   3eeba:	3f 09       	sbc	r19, r15
   3eebc:	40 0b       	sbc	r20, r16
   3eebe:	51 0b       	sbc	r21, r17
   3eec0:	20 93 fc 92 	sts	0x92FC, r18
   3eec4:	30 93 fd 92 	sts	0x92FD, r19
   3eec8:	40 93 fe 92 	sts	0x92FE, r20
   3eecc:	50 93 ff 92 	sts	0x92FF, r21
   3eed0:	70 93 03 93 	sts	0x9303, r23
   3eed4:	60 93 02 93 	sts	0x9302, r22
   3eed8:	2e 0d       	add	r18, r14
   3eeda:	3f 1d       	adc	r19, r15
   3eedc:	40 1f       	adc	r20, r16
   3eede:	51 1f       	adc	r21, r17
   3eee0:	2a 15       	cp	r18, r10
   3eee2:	3b 05       	cpc	r19, r11
   3eee4:	4c 05       	cpc	r20, r12
   3eee6:	5d 05       	cpc	r21, r13
   3eee8:	c1 f0       	breq	.+48     	; 0x3ef1a <boot_loader+0xf1a>
   3eeea:	67 2b       	or	r22, r23
   3eeec:	11 f0       	breq	.+4      	; 0x3eef2 <boot_loader+0xef2>
   3eeee:	0f 94 a4 f6 	call	0x3ed48	; 0x3ed48 <boot_loader+0xd48>
   3eef2:	c5 01       	movw	r24, r10
   3eef4:	90 70       	andi	r25, 0x00	; 0
   3eef6:	90 93 03 93 	sts	0x9303, r25
   3eefa:	80 93 02 93 	sts	0x9302, r24
   3eefe:	a0 e0       	ldi	r26, 0x00	; 0
   3ef00:	b0 e0       	ldi	r27, 0x00	; 0
   3ef02:	a8 1a       	sub	r10, r24
   3ef04:	b9 0a       	sbc	r11, r25
   3ef06:	ca 0a       	sbc	r12, r26
   3ef08:	db 0a       	sbc	r13, r27
   3ef0a:	a0 92 fc 92 	sts	0x92FC, r10
   3ef0e:	b0 92 fd 92 	sts	0x92FD, r11
   3ef12:	c0 92 fe 92 	sts	0x92FE, r12
   3ef16:	d0 92 ff 92 	sts	0x92FF, r13
   3ef1a:	00 e0       	ldi	r16, 0x00	; 0
   3ef1c:	11 e0       	ldi	r17, 0x01	; 1
   3ef1e:	20 91 02 93 	lds	r18, 0x9302
   3ef22:	30 91 03 93 	lds	r19, 0x9303
   3ef26:	c8 01       	movw	r24, r16
   3ef28:	82 1b       	sub	r24, r18
   3ef2a:	93 0b       	sbc	r25, r19
   3ef2c:	e4 01       	movw	r28, r8
   3ef2e:	88 15       	cp	r24, r8
   3ef30:	99 05       	cpc	r25, r9
   3ef32:	08 f4       	brcc	.+2      	; 0x3ef36 <boot_loader+0xf36>
   3ef34:	ec 01       	movw	r28, r24
   3ef36:	20 97       	sbiw	r28, 0x00	; 0
   3ef38:	a9 f0       	breq	.+42     	; 0x3ef64 <boot_loader+0xf64>
   3ef3a:	2d 5d       	subi	r18, 0xDD	; 221
   3ef3c:	3c 46       	sbci	r19, 0x6C	; 108
   3ef3e:	c9 01       	movw	r24, r18
   3ef40:	b3 01       	movw	r22, r6
   3ef42:	ae 01       	movw	r20, r28
   3ef44:	0f 94 47 ff 	call	0x3fe8e	; 0x3fe8e <boot_loader+0x1e8e>
   3ef48:	80 91 02 93 	lds	r24, 0x9302
   3ef4c:	90 91 03 93 	lds	r25, 0x9303
   3ef50:	8c 0f       	add	r24, r28
   3ef52:	9d 1f       	adc	r25, r29
   3ef54:	90 93 03 93 	sts	0x9303, r25
   3ef58:	80 93 02 93 	sts	0x9302, r24
   3ef5c:	8c 1a       	sub	r8, r28
   3ef5e:	9d 0a       	sbc	r9, r29
   3ef60:	6c 0e       	add	r6, r28
   3ef62:	7d 1e       	adc	r7, r29
   3ef64:	80 91 02 93 	lds	r24, 0x9302
   3ef68:	90 91 03 93 	lds	r25, 0x9303
   3ef6c:	8f 3f       	cpi	r24, 0xFF	; 255
   3ef6e:	91 05       	cpc	r25, r1
   3ef70:	09 f0       	breq	.+2      	; 0x3ef74 <boot_loader+0xf74>
   3ef72:	10 f4       	brcc	.+4      	; 0x3ef78 <boot_loader+0xf78>
   3ef74:	80 e0       	ldi	r24, 0x00	; 0
   3ef76:	03 c0       	rjmp	.+6      	; 0x3ef7e <boot_loader+0xf7e>
   3ef78:	0f 94 a4 f6 	call	0x3ed48	; 0x3ed48 <boot_loader+0xd48>
   3ef7c:	81 e0       	ldi	r24, 0x01	; 1
   3ef7e:	81 14       	cp	r8, r1
   3ef80:	91 04       	cpc	r9, r1
   3ef82:	11 f0       	breq	.+4      	; 0x3ef88 <boot_loader+0xf88>
   3ef84:	88 23       	and	r24, r24
   3ef86:	59 f6       	brne	.-106    	; 0x3ef1e <boot_loader+0xf1e>
   3ef88:	df 91       	pop	r29
   3ef8a:	cf 91       	pop	r28
   3ef8c:	1f 91       	pop	r17
   3ef8e:	0f 91       	pop	r16
   3ef90:	ff 90       	pop	r15
   3ef92:	ef 90       	pop	r14
   3ef94:	df 90       	pop	r13
   3ef96:	cf 90       	pop	r12
   3ef98:	bf 90       	pop	r11
   3ef9a:	af 90       	pop	r10
   3ef9c:	9f 90       	pop	r9
   3ef9e:	8f 90       	pop	r8
   3efa0:	7f 90       	pop	r7
   3efa2:	6f 90       	pop	r6
   3efa4:	08 95       	ret
   3efa6:	7f 92       	push	r7
   3efa8:	8f 92       	push	r8
   3efaa:	9f 92       	push	r9
   3efac:	af 92       	push	r10
   3efae:	bf 92       	push	r11
   3efb0:	cf 92       	push	r12
   3efb2:	df 92       	push	r13
   3efb4:	ef 92       	push	r14
   3efb6:	ff 92       	push	r15
   3efb8:	0f 93       	push	r16
   3efba:	1f 93       	push	r17
   3efbc:	cf 93       	push	r28
   3efbe:	df 93       	push	r29
   3efc0:	5c 01       	movw	r10, r24
   3efc2:	ea 01       	movw	r28, r20
   3efc4:	49 01       	movw	r8, r18
   3efc6:	70 2e       	mov	r7, r16
   3efc8:	86 01       	movw	r16, r12
   3efca:	4a 30       	cpi	r20, 0x0A	; 10
   3efcc:	51 05       	cpc	r21, r1
   3efce:	c8 f4       	brcc	.+50     	; 0x3f002 <boot_loader+0x1002>
   3efd0:	0f 94 47 ff 	call	0x3fe8e	; 0x3fe8e <boot_loader+0x1e8e>
   3efd4:	ea e0       	ldi	r30, 0x0A	; 10
   3efd6:	f0 e0       	ldi	r31, 0x00	; 0
   3efd8:	ec 1b       	sub	r30, r28
   3efda:	fd 0b       	sbc	r31, r29
   3efdc:	9e 01       	movw	r18, r28
   3efde:	43 e0       	ldi	r20, 0x03	; 3
   3efe0:	22 0f       	add	r18, r18
   3efe2:	33 1f       	adc	r19, r19
   3efe4:	4a 95       	dec	r20
   3efe6:	e1 f7       	brne	.-8      	; 0x3efe0 <boot_loader+0xfe0>
   3efe8:	cc 0f       	add	r28, r28
   3efea:	dd 1f       	adc	r29, r29
   3efec:	2c 0f       	add	r18, r28
   3efee:	3d 1f       	adc	r19, r29
   3eff0:	2a 0d       	add	r18, r10
   3eff2:	3b 1d       	adc	r19, r11
   3eff4:	c9 01       	movw	r24, r18
   3eff6:	60 e0       	ldi	r22, 0x00	; 0
   3eff8:	70 e0       	ldi	r23, 0x00	; 0
   3effa:	af 01       	movw	r20, r30
   3effc:	0f 94 50 ff 	call	0x3fea0	; 0x3fea0 <boot_loader+0x1ea0>
   3f000:	07 c0       	rjmp	.+14     	; 0x3f010 <boot_loader+0x1010>
   3f002:	dc 01       	movw	r26, r24
   3f004:	fb 01       	movw	r30, r22
   3f006:	8a e0       	ldi	r24, 0x0A	; 10
   3f008:	01 90       	ld	r0, Z+
   3f00a:	0d 92       	st	X+, r0
   3f00c:	81 50       	subi	r24, 0x01	; 1
   3f00e:	e1 f7       	brne	.-8      	; 0x3f008 <boot_loader+0x1008>
   3f010:	77 20       	and	r7, r7
   3f012:	91 f0       	breq	.+36     	; 0x3f038 <boot_loader+0x1038>
   3f014:	f5 01       	movw	r30, r10
   3f016:	84 81       	ldd	r24, Z+4	; 0x04
   3f018:	95 81       	ldd	r25, Z+5	; 0x05
   3f01a:	93 83       	std	Z+3, r25	; 0x03
   3f01c:	82 83       	std	Z+2, r24	; 0x02
   3f01e:	80 91 24 94 	lds	r24, 0x9424
   3f022:	90 91 25 94 	lds	r25, 0x9425
   3f026:	ff ef       	ldi	r31, 0xFF	; 255
   3f028:	8f 3f       	cpi	r24, 0xFF	; 255
   3f02a:	9f 07       	cpc	r25, r31
   3f02c:	11 f4       	brne	.+4      	; 0x3f032 <boot_loader+0x1032>
   3f02e:	80 e0       	ldi	r24, 0x00	; 0
   3f030:	91 e0       	ldi	r25, 0x01	; 1
   3f032:	f5 01       	movw	r30, r10
   3f034:	95 83       	std	Z+5, r25	; 0x05
   3f036:	84 83       	std	Z+4, r24	; 0x04
   3f038:	04 5f       	subi	r16, 0xF4	; 244
   3f03a:	1f 4f       	sbci	r17, 0xFF	; 255
   3f03c:	f5 01       	movw	r30, r10
   3f03e:	11 83       	std	Z+1, r17	; 0x01
   3f040:	00 83       	st	Z, r16
   3f042:	0c 50       	subi	r16, 0x0C	; 12
   3f044:	10 40       	sbci	r17, 0x00	; 0
   3f046:	41 f0       	breq	.+16     	; 0x3f058 <boot_loader+0x1058>
   3f048:	95 01       	movw	r18, r10
   3f04a:	26 5f       	subi	r18, 0xF6	; 246
   3f04c:	3f 4f       	sbci	r19, 0xFF	; 255
   3f04e:	c9 01       	movw	r24, r18
   3f050:	b7 01       	movw	r22, r14
   3f052:	a8 01       	movw	r20, r16
   3f054:	0f 94 47 ff 	call	0x3fe8e	; 0x3fe8e <boot_loader+0x1e8e>
   3f058:	f5 01       	movw	r30, r10
   3f05a:	91 86       	std	Z+9, r9	; 0x09
   3f05c:	80 86       	std	Z+8, r8	; 0x08
   3f05e:	20 81       	ld	r18, Z
   3f060:	31 81       	ldd	r19, Z+1	; 0x01
   3f062:	22 50       	subi	r18, 0x02	; 2
   3f064:	30 40       	sbci	r19, 0x00	; 0
   3f066:	b9 01       	movw	r22, r18
   3f068:	40 e0       	ldi	r20, 0x00	; 0
   3f06a:	50 e0       	ldi	r21, 0x00	; 0
   3f06c:	1a c0       	rjmp	.+52     	; 0x3f0a2 <boot_loader+0x10a2>
   3f06e:	81 91       	ld	r24, Z+
   3f070:	48 27       	eor	r20, r24
   3f072:	84 2f       	mov	r24, r20
   3f074:	82 95       	swap	r24
   3f076:	84 27       	eor	r24, r20
   3f078:	08 2e       	mov	r0, r24
   3f07a:	86 95       	lsr	r24
   3f07c:	86 95       	lsr	r24
   3f07e:	80 25       	eor	r24, r0
   3f080:	08 2e       	mov	r0, r24
   3f082:	86 95       	lsr	r24
   3f084:	80 25       	eor	r24, r0
   3f086:	87 70       	andi	r24, 0x07	; 7
   3f088:	04 2e       	mov	r0, r20
   3f08a:	45 2f       	mov	r20, r21
   3f08c:	86 95       	lsr	r24
   3f08e:	07 94       	ror	r0
   3f090:	87 95       	ror	r24
   3f092:	50 2d       	mov	r21, r0
   3f094:	48 27       	eor	r20, r24
   3f096:	06 94       	lsr	r0
   3f098:	87 95       	ror	r24
   3f09a:	50 25       	eor	r21, r0
   3f09c:	48 27       	eor	r20, r24
   3f09e:	61 50       	subi	r22, 0x01	; 1
   3f0a0:	70 40       	sbci	r23, 0x00	; 0
   3f0a2:	61 15       	cp	r22, r1
   3f0a4:	71 05       	cpc	r23, r1
   3f0a6:	19 f7       	brne	.-58     	; 0x3f06e <boot_loader+0x106e>
   3f0a8:	f5 01       	movw	r30, r10
   3f0aa:	e2 0f       	add	r30, r18
   3f0ac:	f3 1f       	adc	r31, r19
   3f0ae:	40 83       	st	Z, r20
   3f0b0:	51 83       	std	Z+1, r21	; 0x01
   3f0b2:	2e 5f       	subi	r18, 0xFE	; 254
   3f0b4:	3f 4f       	sbci	r19, 0xFF	; 255
   3f0b6:	c9 01       	movw	r24, r18
   3f0b8:	df 91       	pop	r29
   3f0ba:	cf 91       	pop	r28
   3f0bc:	1f 91       	pop	r17
   3f0be:	0f 91       	pop	r16
   3f0c0:	ff 90       	pop	r15
   3f0c2:	ef 90       	pop	r14
   3f0c4:	df 90       	pop	r13
   3f0c6:	cf 90       	pop	r12
   3f0c8:	bf 90       	pop	r11
   3f0ca:	af 90       	pop	r10
   3f0cc:	9f 90       	pop	r9
   3f0ce:	8f 90       	pop	r8
   3f0d0:	7f 90       	pop	r7
   3f0d2:	08 95       	ret
   3f0d4:	af 92       	push	r10
   3f0d6:	bf 92       	push	r11
   3f0d8:	cf 92       	push	r12
   3f0da:	df 92       	push	r13
   3f0dc:	ef 92       	push	r14
   3f0de:	ff 92       	push	r15
   3f0e0:	0f 93       	push	r16
   3f0e2:	cf 93       	push	r28
   3f0e4:	df 93       	push	r29
   3f0e6:	7c 01       	movw	r14, r24
   3f0e8:	6b 01       	movw	r12, r22
   3f0ea:	e9 01       	movw	r28, r18
   3f0ec:	80 91 00 93 	lds	r24, 0x9300
   3f0f0:	84 30       	cpi	r24, 0x04	; 4
   3f0f2:	08 f0       	brcs	.+2      	; 0x3f0f6 <boot_loader+0x10f6>
   3f0f4:	45 c0       	rjmp	.+138    	; 0x3f180 <boot_loader+0x1180>
   3f0f6:	00 91 21 93 	lds	r16, 0x9321
   3f0fa:	8f 5f       	subi	r24, 0xFF	; 255
   3f0fc:	80 93 00 93 	sts	0x9300, r24
   3f100:	80 2f       	mov	r24, r16
   3f102:	8f 5f       	subi	r24, 0xFF	; 255
   3f104:	80 93 21 93 	sts	0x9321, r24
   3f108:	84 30       	cpi	r24, 0x04	; 4
   3f10a:	10 f0       	brcs	.+4      	; 0x3f110 <boot_loader+0x1110>
   3f10c:	10 92 21 93 	sts	0x9321, r1
   3f110:	0f 3f       	cpi	r16, 0xFF	; 255
   3f112:	b1 f1       	breq	.+108    	; 0x3f180 <boot_loader+0x1180>
   3f114:	f7 01       	movw	r30, r14
   3f116:	80 85       	ldd	r24, Z+8	; 0x08
   3f118:	91 85       	ldd	r25, Z+9	; 0x09
   3f11a:	90 93 d6 95 	sts	0x95D6, r25
   3f11e:	80 93 d5 95 	sts	0x95D5, r24
   3f122:	20 97       	sbiw	r28, 0x00	; 0
   3f124:	39 f0       	breq	.+14     	; 0x3f134 <boot_loader+0x1134>
   3f126:	27 ed       	ldi	r18, 0xD7	; 215
   3f128:	35 e9       	ldi	r19, 0x95	; 149
   3f12a:	c9 01       	movw	r24, r18
   3f12c:	ba 01       	movw	r22, r20
   3f12e:	ae 01       	movw	r20, r28
   3f130:	0f 94 47 ff 	call	0x3fe8e	; 0x3fe8e <boot_loader+0x1e8e>
   3f134:	a0 2e       	mov	r10, r16
   3f136:	bb 24       	eor	r11, r11
   3f138:	a7 fc       	sbrc	r10, 7
   3f13a:	b0 94       	com	r11
   3f13c:	88 e5       	ldi	r24, 0x58	; 88
   3f13e:	92 e0       	ldi	r25, 0x02	; 2
   3f140:	9c 01       	movw	r18, r24
   3f142:	a2 9e       	mul	r10, r18
   3f144:	c0 01       	movw	r24, r0
   3f146:	a3 9e       	mul	r10, r19
   3f148:	90 0d       	add	r25, r0
   3f14a:	b2 9e       	mul	r11, r18
   3f14c:	90 0d       	add	r25, r0
   3f14e:	11 24       	eor	r1, r1
   3f150:	22 96       	adiw	r28, 0x02	; 2
   3f152:	87 5c       	subi	r24, 0xC7	; 199
   3f154:	98 47       	sbci	r25, 0x78	; 120
   3f156:	b7 01       	movw	r22, r14
   3f158:	a6 01       	movw	r20, r12
   3f15a:	21 e0       	ldi	r18, 0x01	; 1
   3f15c:	30 e0       	ldi	r19, 0x00	; 0
   3f15e:	01 e0       	ldi	r16, 0x01	; 1
   3f160:	e5 ed       	ldi	r30, 0xD5	; 213
   3f162:	ee 2e       	mov	r14, r30
   3f164:	e5 e9       	ldi	r30, 0x95	; 149
   3f166:	fe 2e       	mov	r15, r30
   3f168:	6e 01       	movw	r12, r28
   3f16a:	0f 94 d3 f7 	call	0x3efa6	; 0x3efa6 <boot_loader+0xfa6>
   3f16e:	aa 0c       	add	r10, r10
   3f170:	bb 1c       	adc	r11, r11
   3f172:	ea e9       	ldi	r30, 0x9A	; 154
   3f174:	f0 e9       	ldi	r31, 0x90	; 144
   3f176:	ae 0e       	add	r10, r30
   3f178:	bf 1e       	adc	r11, r31
   3f17a:	f5 01       	movw	r30, r10
   3f17c:	91 83       	std	Z+1, r25	; 0x01
   3f17e:	80 83       	st	Z, r24
   3f180:	df 91       	pop	r29
   3f182:	cf 91       	pop	r28
   3f184:	0f 91       	pop	r16
   3f186:	ff 90       	pop	r15
   3f188:	ef 90       	pop	r14
   3f18a:	df 90       	pop	r13
   3f18c:	cf 90       	pop	r12
   3f18e:	bf 90       	pop	r11
   3f190:	af 90       	pop	r10
   3f192:	08 95       	ret
   3f194:	af 92       	push	r10
   3f196:	bf 92       	push	r11
   3f198:	cf 92       	push	r12
   3f19a:	df 92       	push	r13
   3f19c:	ef 92       	push	r14
   3f19e:	ff 92       	push	r15
   3f1a0:	0f 93       	push	r16
   3f1a2:	1f 93       	push	r17
   3f1a4:	cf 93       	push	r28
   3f1a6:	df 93       	push	r29
   3f1a8:	7c 01       	movw	r14, r24
   3f1aa:	6b 01       	movw	r12, r22
   3f1ac:	b9 01       	movw	r22, r18
   3f1ae:	e8 01       	movw	r28, r16
   3f1b0:	80 91 00 93 	lds	r24, 0x9300
   3f1b4:	84 30       	cpi	r24, 0x04	; 4
   3f1b6:	08 f0       	brcs	.+2      	; 0x3f1ba <boot_loader+0x11ba>
   3f1b8:	48 c0       	rjmp	.+144    	; 0x3f24a <boot_loader+0x124a>
   3f1ba:	10 91 21 93 	lds	r17, 0x9321
   3f1be:	8f 5f       	subi	r24, 0xFF	; 255
   3f1c0:	80 93 00 93 	sts	0x9300, r24
   3f1c4:	81 2f       	mov	r24, r17
   3f1c6:	8f 5f       	subi	r24, 0xFF	; 255
   3f1c8:	80 93 21 93 	sts	0x9321, r24
   3f1cc:	84 30       	cpi	r24, 0x04	; 4
   3f1ce:	10 f0       	brcs	.+4      	; 0x3f1d4 <boot_loader+0x11d4>
   3f1d0:	10 92 21 93 	sts	0x9321, r1
   3f1d4:	1f 3f       	cpi	r17, 0xFF	; 255
   3f1d6:	c9 f1       	breq	.+114    	; 0x3f24a <boot_loader+0x124a>
   3f1d8:	f7 01       	movw	r30, r14
   3f1da:	80 85       	ldd	r24, Z+8	; 0x08
   3f1dc:	91 85       	ldd	r25, Z+9	; 0x09
   3f1de:	90 93 d6 95 	sts	0x95D6, r25
   3f1e2:	80 93 d5 95 	sts	0x95D5, r24
   3f1e6:	40 93 d7 95 	sts	0x95D7, r20
   3f1ea:	20 97       	sbiw	r28, 0x00	; 0
   3f1ec:	41 f0       	breq	.+16     	; 0x3f1fe <boot_loader+0x11fe>
   3f1ee:	25 ed       	ldi	r18, 0xD5	; 213
   3f1f0:	35 e9       	ldi	r19, 0x95	; 149
   3f1f2:	2d 5f       	subi	r18, 0xFD	; 253
   3f1f4:	3f 4f       	sbci	r19, 0xFF	; 255
   3f1f6:	c9 01       	movw	r24, r18
   3f1f8:	ae 01       	movw	r20, r28
   3f1fa:	0f 94 47 ff 	call	0x3fe8e	; 0x3fe8e <boot_loader+0x1e8e>
   3f1fe:	a1 2e       	mov	r10, r17
   3f200:	bb 24       	eor	r11, r11
   3f202:	a7 fc       	sbrc	r10, 7
   3f204:	b0 94       	com	r11
   3f206:	88 e5       	ldi	r24, 0x58	; 88
   3f208:	92 e0       	ldi	r25, 0x02	; 2
   3f20a:	9c 01       	movw	r18, r24
   3f20c:	a2 9e       	mul	r10, r18
   3f20e:	c0 01       	movw	r24, r0
   3f210:	a3 9e       	mul	r10, r19
   3f212:	90 0d       	add	r25, r0
   3f214:	b2 9e       	mul	r11, r18
   3f216:	90 0d       	add	r25, r0
   3f218:	11 24       	eor	r1, r1
   3f21a:	23 96       	adiw	r28, 0x03	; 3
   3f21c:	87 5c       	subi	r24, 0xC7	; 199
   3f21e:	98 47       	sbci	r25, 0x78	; 120
   3f220:	b7 01       	movw	r22, r14
   3f222:	a6 01       	movw	r20, r12
   3f224:	20 e0       	ldi	r18, 0x00	; 0
   3f226:	30 e0       	ldi	r19, 0x00	; 0
   3f228:	01 e0       	ldi	r16, 0x01	; 1
   3f22a:	a5 ed       	ldi	r26, 0xD5	; 213
   3f22c:	ea 2e       	mov	r14, r26
   3f22e:	a5 e9       	ldi	r26, 0x95	; 149
   3f230:	fa 2e       	mov	r15, r26
   3f232:	6e 01       	movw	r12, r28
   3f234:	0f 94 d3 f7 	call	0x3efa6	; 0x3efa6 <boot_loader+0xfa6>
   3f238:	aa 0c       	add	r10, r10
   3f23a:	bb 1c       	adc	r11, r11
   3f23c:	ea e9       	ldi	r30, 0x9A	; 154
   3f23e:	f0 e9       	ldi	r31, 0x90	; 144
   3f240:	ae 0e       	add	r10, r30
   3f242:	bf 1e       	adc	r11, r31
   3f244:	f5 01       	movw	r30, r10
   3f246:	91 83       	std	Z+1, r25	; 0x01
   3f248:	80 83       	st	Z, r24
   3f24a:	df 91       	pop	r29
   3f24c:	cf 91       	pop	r28
   3f24e:	1f 91       	pop	r17
   3f250:	0f 91       	pop	r16
   3f252:	ff 90       	pop	r15
   3f254:	ef 90       	pop	r14
   3f256:	df 90       	pop	r13
   3f258:	cf 90       	pop	r12
   3f25a:	bf 90       	pop	r11
   3f25c:	af 90       	pop	r10
   3f25e:	08 95       	ret
   3f260:	ef 92       	push	r14
   3f262:	ff 92       	push	r15
   3f264:	0f 93       	push	r16
   3f266:	1f 93       	push	r17
   3f268:	df 93       	push	r29
   3f26a:	cf 93       	push	r28
   3f26c:	cd b7       	in	r28, 0x3d	; 61
   3f26e:	de b7       	in	r29, 0x3e	; 62
   3f270:	a8 97       	sbiw	r28, 0x28	; 40
   3f272:	0f b6       	in	r0, 0x3f	; 63
   3f274:	f8 94       	cli
   3f276:	de bf       	out	0x3e, r29	; 62
   3f278:	0f be       	out	0x3f, r0	; 63
   3f27a:	cd bf       	out	0x3d, r28	; 61
   3f27c:	7c 01       	movw	r14, r24
   3f27e:	90 91 15 93 	lds	r25, 0x9315
   3f282:	00 91 39 94 	lds	r16, 0x9439
   3f286:	10 91 3a 94 	lds	r17, 0x943A
   3f28a:	40 91 04 93 	lds	r20, 0x9304
   3f28e:	50 91 05 93 	lds	r21, 0x9305
   3f292:	de 01       	movw	r26, r28
   3f294:	16 96       	adiw	r26, 0x06	; 6
   3f296:	eb e3       	ldi	r30, 0x3B	; 59
   3f298:	f4 e9       	ldi	r31, 0x94	; 148
   3f29a:	80 e1       	ldi	r24, 0x10	; 16
   3f29c:	01 90       	ld	r0, Z+
   3f29e:	0d 92       	st	X+, r0
   3f2a0:	81 50       	subi	r24, 0x01	; 1
   3f2a2:	e1 f7       	brne	.-8      	; 0x3f29c <boot_loader+0x129c>
   3f2a4:	de 01       	movw	r26, r28
   3f2a6:	56 96       	adiw	r26, 0x16	; 22
   3f2a8:	ee e5       	ldi	r30, 0x5E	; 94
   3f2aa:	f4 e9       	ldi	r31, 0x94	; 148
   3f2ac:	80 e1       	ldi	r24, 0x10	; 16
   3f2ae:	01 90       	ld	r0, Z+
   3f2b0:	0d 92       	st	X+, r0
   3f2b2:	81 50       	subi	r24, 0x01	; 1
   3f2b4:	e1 f7       	brne	.-8      	; 0x3f2ae <boot_loader+0x12ae>
   3f2b6:	20 91 fa 92 	lds	r18, 0x92FA
   3f2ba:	30 91 fb 92 	lds	r19, 0x92FB
   3f2be:	80 91 06 93 	lds	r24, 0x9306
   3f2c2:	88 23       	and	r24, r24
   3f2c4:	19 f0       	breq	.+6      	; 0x3f2cc <boot_loader+0x12cc>
   3f2c6:	80 91 6f 94 	lds	r24, 0x946F
   3f2ca:	81 70       	andi	r24, 0x01	; 1
   3f2cc:	88 a7       	std	Y+40, r24	; 0x28
   3f2ce:	3f a3       	std	Y+39, r19	; 0x27
   3f2d0:	2e a3       	std	Y+38, r18	; 0x26
   3f2d2:	5d 83       	std	Y+5, r21	; 0x05
   3f2d4:	4c 83       	std	Y+4, r20	; 0x04
   3f2d6:	1b 83       	std	Y+3, r17	; 0x03
   3f2d8:	0a 83       	std	Y+2, r16	; 0x02
   3f2da:	99 83       	std	Y+1, r25	; 0x01
   3f2dc:	c7 01       	movw	r24, r14
   3f2de:	44 e0       	ldi	r20, 0x04	; 4
   3f2e0:	9e 01       	movw	r18, r28
   3f2e2:	2f 5f       	subi	r18, 0xFF	; 255
   3f2e4:	3f 4f       	sbci	r19, 0xFF	; 255
   3f2e6:	08 e2       	ldi	r16, 0x28	; 40
   3f2e8:	10 e0       	ldi	r17, 0x00	; 0
   3f2ea:	0f 94 ca f8 	call	0x3f194	; 0x3f194 <boot_loader+0x1194>
   3f2ee:	a8 96       	adiw	r28, 0x28	; 40
   3f2f0:	0f b6       	in	r0, 0x3f	; 63
   3f2f2:	f8 94       	cli
   3f2f4:	de bf       	out	0x3e, r29	; 62
   3f2f6:	0f be       	out	0x3f, r0	; 63
   3f2f8:	cd bf       	out	0x3d, r28	; 61
   3f2fa:	cf 91       	pop	r28
   3f2fc:	df 91       	pop	r29
   3f2fe:	1f 91       	pop	r17
   3f300:	0f 91       	pop	r16
   3f302:	ff 90       	pop	r15
   3f304:	ef 90       	pop	r14
   3f306:	08 95       	ret
   3f308:	3f 92       	push	r3
   3f30a:	4f 92       	push	r4
   3f30c:	5f 92       	push	r5
   3f30e:	6f 92       	push	r6
   3f310:	7f 92       	push	r7
   3f312:	8f 92       	push	r8
   3f314:	9f 92       	push	r9
   3f316:	af 92       	push	r10
   3f318:	bf 92       	push	r11
   3f31a:	cf 92       	push	r12
   3f31c:	df 92       	push	r13
   3f31e:	ef 92       	push	r14
   3f320:	ff 92       	push	r15
   3f322:	0f 93       	push	r16
   3f324:	1f 93       	push	r17
   3f326:	df 93       	push	r29
   3f328:	cf 93       	push	r28
   3f32a:	00 d0       	rcall	.+0      	; 0x3f32c <boot_loader+0x132c>
   3f32c:	0f 92       	push	r0
   3f32e:	cd b7       	in	r28, 0x3d	; 61
   3f330:	de b7       	in	r29, 0x3e	; 62
   3f332:	10 91 c4 00 	lds	r17, 0x00C4
   3f336:	f9 99       	sbic	0x1f, 1	; 31
   3f338:	fe cf       	rjmp	.-4      	; 0x3f336 <boot_loader+0x1336>
   3f33a:	f9 99       	sbic	0x1f, 1	; 31
   3f33c:	fe cf       	rjmp	.-4      	; 0x3f33a <boot_loader+0x133a>
   3f33e:	80 e0       	ldi	r24, 0x00	; 0
   3f340:	91 e0       	ldi	r25, 0x01	; 1
   3f342:	92 bd       	out	0x22, r25	; 34
   3f344:	81 bd       	out	0x21, r24	; 33
   3f346:	f8 9a       	sbi	0x1f, 0	; 31
   3f348:	30 b5       	in	r19, 0x20	; 32
   3f34a:	f9 99       	sbic	0x1f, 1	; 31
   3f34c:	fe cf       	rjmp	.-4      	; 0x3f34a <boot_loader+0x134a>
   3f34e:	81 e0       	ldi	r24, 0x01	; 1
   3f350:	91 e0       	ldi	r25, 0x01	; 1
   3f352:	92 bd       	out	0x22, r25	; 34
   3f354:	81 bd       	out	0x21, r24	; 33
   3f356:	f8 9a       	sbi	0x1f, 0	; 31
   3f358:	20 b5       	in	r18, 0x20	; 32
   3f35a:	83 2f       	mov	r24, r19
   3f35c:	92 2f       	mov	r25, r18
   3f35e:	90 93 25 94 	sts	0x9425, r25
   3f362:	80 93 24 94 	sts	0x9424, r24
   3f366:	8f 5f       	subi	r24, 0xFF	; 255
   3f368:	9f 4f       	sbci	r25, 0xFF	; 255
   3f36a:	31 f4       	brne	.+12     	; 0x3f378 <boot_loader+0x1378>
   3f36c:	80 e0       	ldi	r24, 0x00	; 0
   3f36e:	91 e0       	ldi	r25, 0x01	; 1
   3f370:	90 93 25 94 	sts	0x9425, r25
   3f374:	80 93 24 94 	sts	0x9424, r24
   3f378:	2f e0       	ldi	r18, 0x0F	; 15
   3f37a:	88 e1       	ldi	r24, 0x18	; 24
   3f37c:	90 e0       	ldi	r25, 0x00	; 0
   3f37e:	0f b6       	in	r0, 0x3f	; 63
   3f380:	f8 94       	cli
   3f382:	a8 95       	wdr
   3f384:	80 93 60 00 	sts	0x0060, r24
   3f388:	0f be       	out	0x3f, r0	; 63
   3f38a:	20 93 60 00 	sts	0x0060, r18
   3f38e:	a8 95       	wdr
   3f390:	0f 94 80 fc 	call	0x3f900	; 0x3f900 <boot_loader+0x1900>
   3f394:	0f 94 dc fc 	call	0x3f9b8	; 0x3f9b8 <boot_loader+0x19b8>
   3f398:	83 b7       	in	r24, 0x33	; 51
   3f39a:	81 7f       	andi	r24, 0xF1	; 241
   3f39c:	83 bf       	out	0x33, r24	; 51
   3f39e:	0f 94 80 f2 	call	0x3e500	; 0x3e500 <boot_loader+0x500>
   3f3a2:	80 e2       	ldi	r24, 0x20	; 32
   3f3a4:	9e e4       	ldi	r25, 0x4E	; 78
   3f3a6:	01 97       	sbiw	r24, 0x01	; 1
   3f3a8:	f1 f7       	brne	.-4      	; 0x3f3a6 <boot_loader+0x13a6>
   3f3aa:	78 94       	sei
   3f3ac:	80 e3       	ldi	r24, 0x30	; 48
   3f3ae:	9a eb       	ldi	r25, 0xBA	; 186
   3f3b0:	0f 94 4d fd 	call	0x3fa9a	; 0x3fa9a <boot_loader+0x1a9a>
   3f3b4:	88 e2       	ldi	r24, 0x28	; 40
   3f3b6:	94 e9       	ldi	r25, 0x94	; 148
   3f3b8:	0f 94 28 f1 	call	0x3e250	; 0x3e250 <boot_loader+0x250>
   3f3bc:	80 93 06 93 	sts	0x9306, r24
   3f3c0:	88 23       	and	r24, r24
   3f3c2:	f1 f0       	breq	.+60     	; 0x3f400 <boot_loader+0x1400>
   3f3c4:	80 91 35 94 	lds	r24, 0x9435
   3f3c8:	90 91 36 94 	lds	r25, 0x9436
   3f3cc:	a0 91 37 94 	lds	r26, 0x9437
   3f3d0:	b0 91 38 94 	lds	r27, 0x9438
   3f3d4:	01 97       	sbiw	r24, 0x01	; 1
   3f3d6:	a1 09       	sbc	r26, r1
   3f3d8:	b1 09       	sbc	r27, r1
   3f3da:	80 50       	subi	r24, 0x00	; 0
   3f3dc:	90 4e       	sbci	r25, 0xE0	; 224
   3f3de:	a3 40       	sbci	r26, 0x03	; 3
   3f3e0:	b0 40       	sbci	r27, 0x00	; 0
   3f3e2:	60 f4       	brcc	.+24     	; 0x3f3fc <boot_loader+0x13fc>
   3f3e4:	88 e2       	ldi	r24, 0x28	; 40
   3f3e6:	94 e9       	ldi	r25, 0x94	; 148
   3f3e8:	6d e0       	ldi	r22, 0x0D	; 13
   3f3ea:	70 e0       	ldi	r23, 0x00	; 0
   3f3ec:	0f 94 6c ff 	call	0x3fed8	; 0x3fed8 <boot_loader+0x1ed8>
   3f3f0:	0d 97       	sbiw	r24, 0x0d	; 13
   3f3f2:	21 f0       	breq	.+8      	; 0x3f3fc <boot_loader+0x13fc>
   3f3f4:	80 91 28 94 	lds	r24, 0x9428
   3f3f8:	88 23       	and	r24, r24
   3f3fa:	11 f4       	brne	.+4      	; 0x3f400 <boot_loader+0x1400>
   3f3fc:	10 92 06 93 	sts	0x9306, r1
   3f400:	8f ef       	ldi	r24, 0xFF	; 255
   3f402:	9f ef       	ldi	r25, 0xFF	; 255
   3f404:	90 93 16 93 	sts	0x9316, r25
   3f408:	80 93 15 93 	sts	0x9315, r24
   3f40c:	10 92 23 94 	sts	0x9423, r1
   3f410:	10 92 fc 92 	sts	0x92FC, r1
   3f414:	10 92 fd 92 	sts	0x92FD, r1
   3f418:	10 92 fe 92 	sts	0x92FE, r1
   3f41c:	10 92 ff 92 	sts	0x92FF, r1
   3f420:	10 92 03 93 	sts	0x9303, r1
   3f424:	10 92 02 93 	sts	0x9302, r1
   3f428:	80 91 06 93 	lds	r24, 0x9306
   3f42c:	88 23       	and	r24, r24
   3f42e:	19 f4       	brne	.+6      	; 0x3f436 <boot_loader+0x1436>
   3f430:	80 e0       	ldi	r24, 0x00	; 0
   3f432:	90 e0       	ldi	r25, 0x00	; 0
   3f434:	0a c0       	rjmp	.+20     	; 0x3f44a <boot_loader+0x144a>
   3f436:	60 91 35 94 	lds	r22, 0x9435
   3f43a:	70 91 36 94 	lds	r23, 0x9436
   3f43e:	80 91 37 94 	lds	r24, 0x9437
   3f442:	90 91 38 94 	lds	r25, 0x9438
   3f446:	0f 94 41 fc 	call	0x3f882	; 0x3f882 <boot_loader+0x1882>
   3f44a:	90 93 05 93 	sts	0x9305, r25
   3f44e:	80 93 04 93 	sts	0x9304, r24
   3f452:	80 91 06 93 	lds	r24, 0x9306
   3f456:	88 23       	and	r24, r24
   3f458:	19 f4       	brne	.+6      	; 0x3f460 <boot_loader+0x1460>
   3f45a:	2f ef       	ldi	r18, 0xFF	; 255
   3f45c:	3f ef       	ldi	r19, 0xFF	; 255
   3f45e:	08 c0       	rjmp	.+16     	; 0x3f470 <boot_loader+0x1470>
   3f460:	90 91 4c 94 	lds	r25, 0x944C
   3f464:	80 e0       	ldi	r24, 0x00	; 0
   3f466:	20 91 4b 94 	lds	r18, 0x944B
   3f46a:	30 e0       	ldi	r19, 0x00	; 0
   3f46c:	28 2b       	or	r18, r24
   3f46e:	39 2b       	or	r19, r25
   3f470:	30 93 fb 92 	sts	0x92FB, r19
   3f474:	20 93 fa 92 	sts	0x92FA, r18
   3f478:	80 91 06 93 	lds	r24, 0x9306
   3f47c:	88 23       	and	r24, r24
   3f47e:	19 f4       	brne	.+6      	; 0x3f486 <boot_loader+0x1486>
   3f480:	84 e0       	ldi	r24, 0x04	; 4
   3f482:	90 e0       	ldi	r25, 0x00	; 0
   3f484:	1b c0       	rjmp	.+54     	; 0x3f4bc <boot_loader+0x14bc>
   3f486:	88 e2       	ldi	r24, 0x28	; 40
   3f488:	94 e9       	ldi	r25, 0x94	; 148
   3f48a:	60 e0       	ldi	r22, 0x00	; 0
   3f48c:	72 e0       	ldi	r23, 0x02	; 2
   3f48e:	4c e0       	ldi	r20, 0x0C	; 12
   3f490:	50 e0       	ldi	r21, 0x00	; 0
   3f492:	0f 94 5e ff 	call	0x3febc	; 0x3febc <boot_loader+0x1ebc>
   3f496:	00 97       	sbiw	r24, 0x00	; 0
   3f498:	29 f4       	brne	.+10     	; 0x3f4a4 <boot_loader+0x14a4>
   3f49a:	10 92 16 93 	sts	0x9316, r1
   3f49e:	10 92 15 93 	sts	0x9315, r1
   3f4a2:	74 c0       	rjmp	.+232    	; 0x3f58c <boot_loader+0x158c>
   3f4a4:	88 e2       	ldi	r24, 0x28	; 40
   3f4a6:	94 e9       	ldi	r25, 0x94	; 148
   3f4a8:	69 e0       	ldi	r22, 0x09	; 9
   3f4aa:	72 e0       	ldi	r23, 0x02	; 2
   3f4ac:	4c e0       	ldi	r20, 0x0C	; 12
   3f4ae:	50 e0       	ldi	r21, 0x00	; 0
   3f4b0:	0f 94 5e ff 	call	0x3febc	; 0x3febc <boot_loader+0x1ebc>
   3f4b4:	00 97       	sbiw	r24, 0x00	; 0
   3f4b6:	39 f4       	brne	.+14     	; 0x3f4c6 <boot_loader+0x14c6>
   3f4b8:	81 e0       	ldi	r24, 0x01	; 1
   3f4ba:	90 e0       	ldi	r25, 0x00	; 0
   3f4bc:	90 93 16 93 	sts	0x9316, r25
   3f4c0:	80 93 15 93 	sts	0x9315, r24
   3f4c4:	63 c0       	rjmp	.+198    	; 0x3f58c <boot_loader+0x158c>
   3f4c6:	20 91 04 93 	lds	r18, 0x9304
   3f4ca:	30 91 05 93 	lds	r19, 0x9305
   3f4ce:	80 91 39 94 	lds	r24, 0x9439
   3f4d2:	90 91 3a 94 	lds	r25, 0x943A
   3f4d6:	28 17       	cp	r18, r24
   3f4d8:	39 07       	cpc	r19, r25
   3f4da:	19 f0       	breq	.+6      	; 0x3f4e2 <boot_loader+0x14e2>
   3f4dc:	82 e0       	ldi	r24, 0x02	; 2
   3f4de:	90 e0       	ldi	r25, 0x00	; 0
   3f4e0:	ed cf       	rjmp	.-38     	; 0x3f4bc <boot_loader+0x14bc>
   3f4e2:	8b e3       	ldi	r24, 0x3B	; 59
   3f4e4:	94 e9       	ldi	r25, 0x94	; 148
   3f4e6:	6e e5       	ldi	r22, 0x5E	; 94
   3f4e8:	74 e9       	ldi	r23, 0x94	; 148
   3f4ea:	40 e1       	ldi	r20, 0x10	; 16
   3f4ec:	50 e0       	ldi	r21, 0x00	; 0
   3f4ee:	0f 94 3a ff 	call	0x3fe74	; 0x3fe74 <boot_loader+0x1e74>
   3f4f2:	00 97       	sbiw	r24, 0x00	; 0
   3f4f4:	19 f0       	breq	.+6      	; 0x3f4fc <boot_loader+0x14fc>
   3f4f6:	83 e0       	ldi	r24, 0x03	; 3
   3f4f8:	90 e0       	ldi	r25, 0x00	; 0
   3f4fa:	e0 cf       	rjmp	.-64     	; 0x3f4bc <boot_loader+0x14bc>
   3f4fc:	80 91 6f 94 	lds	r24, 0x946F
   3f500:	8b 7d       	andi	r24, 0xDB	; 219
   3f502:	80 93 6f 94 	sts	0x946F, r24
   3f506:	81 ff       	sbrs	r24, 1
   3f508:	03 c0       	rjmp	.+6      	; 0x3f510 <boot_loader+0x1510>
   3f50a:	80 e0       	ldi	r24, 0x00	; 0
   3f50c:	90 e0       	ldi	r25, 0x00	; 0
   3f50e:	06 c0       	rjmp	.+12     	; 0x3f51c <boot_loader+0x151c>
   3f510:	90 e0       	ldi	r25, 0x00	; 0
   3f512:	13 ff       	sbrs	r17, 3
   3f514:	91 e0       	ldi	r25, 0x01	; 1
   3f516:	81 e0       	ldi	r24, 0x01	; 1
   3f518:	98 27       	eor	r25, r24
   3f51a:	89 2f       	mov	r24, r25
   3f51c:	81 70       	andi	r24, 0x01	; 1
   3f51e:	88 0f       	add	r24, r24
   3f520:	88 0f       	add	r24, r24
   3f522:	88 0f       	add	r24, r24
   3f524:	90 91 6f 94 	lds	r25, 0x946F
   3f528:	97 7f       	andi	r25, 0xF7	; 247
   3f52a:	98 2b       	or	r25, r24
   3f52c:	89 2f       	mov	r24, r25
   3f52e:	8d 7f       	andi	r24, 0xFD	; 253
   3f530:	80 93 6f 94 	sts	0x946F, r24
   3f534:	83 ff       	sbrs	r24, 3
   3f536:	15 c0       	rjmp	.+42     	; 0x3f562 <boot_loader+0x1562>
   3f538:	90 fd       	sbrc	r25, 0
   3f53a:	13 c0       	rjmp	.+38     	; 0x3f562 <boot_loader+0x1562>
   3f53c:	84 ff       	sbrs	r24, 4
   3f53e:	11 c0       	rjmp	.+34     	; 0x3f562 <boot_loader+0x1562>
   3f540:	80 91 6e 94 	lds	r24, 0x946E
   3f544:	88 23       	and	r24, r24
   3f546:	39 f0       	breq	.+14     	; 0x3f556 <boot_loader+0x1556>
   3f548:	81 50       	subi	r24, 0x01	; 1
   3f54a:	80 93 6e 94 	sts	0x946E, r24
   3f54e:	81 e0       	ldi	r24, 0x01	; 1
   3f550:	80 93 23 94 	sts	0x9423, r24
   3f554:	06 c0       	rjmp	.+12     	; 0x3f562 <boot_loader+0x1562>
   3f556:	85 e0       	ldi	r24, 0x05	; 5
   3f558:	90 e0       	ldi	r25, 0x00	; 0
   3f55a:	90 93 16 93 	sts	0x9316, r25
   3f55e:	80 93 15 93 	sts	0x9315, r24
   3f562:	80 91 6f 94 	lds	r24, 0x946F
   3f566:	83 ff       	sbrs	r24, 3
   3f568:	11 c0       	rjmp	.+34     	; 0x3f58c <boot_loader+0x158c>
   3f56a:	80 91 fa 92 	lds	r24, 0x92FA
   3f56e:	90 91 fb 92 	lds	r25, 0x92FB
   3f572:	ff ef       	ldi	r31, 0xFF	; 255
   3f574:	8f 3f       	cpi	r24, 0xFF	; 255
   3f576:	9f 07       	cpc	r25, r31
   3f578:	49 f0       	breq	.+18     	; 0x3f58c <boot_loader+0x158c>
   3f57a:	01 96       	adiw	r24, 0x01	; 1
   3f57c:	90 93 fb 92 	sts	0x92FB, r25
   3f580:	80 93 fa 92 	sts	0x92FA, r24
   3f584:	80 93 4b 94 	sts	0x944B, r24
   3f588:	90 93 4c 94 	sts	0x944C, r25
   3f58c:	80 91 15 93 	lds	r24, 0x9315
   3f590:	90 91 16 93 	lds	r25, 0x9316
   3f594:	8f 5f       	subi	r24, 0xFF	; 255
   3f596:	9f 4f       	sbci	r25, 0xFF	; 255
   3f598:	09 f4       	brne	.+2      	; 0x3f59c <boot_loader+0x159c>
   3f59a:	3a c1       	rjmp	.+628    	; 0x3f810 <boot_loader+0x1810>
   3f59c:	10 92 23 94 	sts	0x9423, r1
   3f5a0:	62 ea       	ldi	r22, 0xA2	; 162
   3f5a2:	86 2e       	mov	r8, r22
   3f5a4:	60 e9       	ldi	r22, 0x90	; 144
   3f5a6:	96 2e       	mov	r9, r22
   3f5a8:	58 e5       	ldi	r21, 0x58	; 88
   3f5aa:	a5 2e       	mov	r10, r21
   3f5ac:	52 e0       	ldi	r21, 0x02	; 2
   3f5ae:	b5 2e       	mov	r11, r21
   3f5b0:	33 24       	eor	r3, r3
   3f5b2:	33 94       	inc	r3
   3f5b4:	43 e0       	ldi	r20, 0x03	; 3
   3f5b6:	44 2e       	mov	r4, r20
   3f5b8:	51 2c       	mov	r5, r1
   3f5ba:	4c 0e       	add	r4, r28
   3f5bc:	5d 1e       	adc	r5, r29
   3f5be:	3e 01       	movw	r6, r28
   3f5c0:	08 94       	sec
   3f5c2:	61 1c       	adc	r6, r1
   3f5c4:	71 1c       	adc	r7, r1
   3f5c6:	16 c1       	rjmp	.+556    	; 0x3f7f4 <boot_loader+0x17f4>
   3f5c8:	80 91 36 87 	lds	r24, 0x8736
   3f5cc:	90 e0       	ldi	r25, 0x00	; 0
   3f5ce:	fc 01       	movw	r30, r24
   3f5d0:	ee 0f       	add	r30, r30
   3f5d2:	ff 1f       	adc	r31, r31
   3f5d4:	e6 56       	subi	r30, 0x66	; 102
   3f5d6:	ff 46       	sbci	r31, 0x6F	; 111
   3f5d8:	40 81       	ld	r20, Z
   3f5da:	51 81       	ldd	r21, Z+1	; 0x01
   3f5dc:	40 93 26 94 	sts	0x9426, r20
   3f5e0:	50 93 27 94 	sts	0x9427, r21
   3f5e4:	8a 9d       	mul	r24, r10
   3f5e6:	90 01       	movw	r18, r0
   3f5e8:	8b 9d       	mul	r24, r11
   3f5ea:	30 0d       	add	r19, r0
   3f5ec:	9a 9d       	mul	r25, r10
   3f5ee:	30 0d       	add	r19, r0
   3f5f0:	11 24       	eor	r1, r1
   3f5f2:	27 5c       	subi	r18, 0xC7	; 199
   3f5f4:	38 47       	sbci	r19, 0x78	; 120
   3f5f6:	c4 01       	movw	r24, r8
   3f5f8:	b9 01       	movw	r22, r18
   3f5fa:	0f 94 47 ff 	call	0x3fe8e	; 0x3fe8e <boot_loader+0x1e8e>
   3f5fe:	e0 91 36 87 	lds	r30, 0x8736
   3f602:	f0 e0       	ldi	r31, 0x00	; 0
   3f604:	ea 9d       	mul	r30, r10
   3f606:	c0 01       	movw	r24, r0
   3f608:	eb 9d       	mul	r30, r11
   3f60a:	90 0d       	add	r25, r0
   3f60c:	fa 9d       	mul	r31, r10
   3f60e:	90 0d       	add	r25, r0
   3f610:	11 24       	eor	r1, r1
   3f612:	ee 0f       	add	r30, r30
   3f614:	ff 1f       	adc	r31, r31
   3f616:	e6 56       	subi	r30, 0x66	; 102
   3f618:	ff 46       	sbci	r31, 0x6F	; 111
   3f61a:	60 81       	ld	r22, Z
   3f61c:	71 81       	ldd	r23, Z+1	; 0x01
   3f61e:	87 5c       	subi	r24, 0xC7	; 199
   3f620:	98 47       	sbci	r25, 0x78	; 120
   3f622:	0f 94 25 fd 	call	0x3fa4a	; 0x3fa4a <boot_loader+0x1a4a>
   3f626:	30 92 37 87 	sts	0x8737, r3
   3f62a:	0f 94 a8 fc 	call	0x3f950	; 0x3f950 <boot_loader+0x1950>
   3f62e:	0f 94 69 f6 	call	0x3ecd2	; 0x3ecd2 <boot_loader+0xcd2>
   3f632:	10 92 37 87 	sts	0x8737, r1
   3f636:	80 91 37 87 	lds	r24, 0x8737
   3f63a:	88 23       	and	r24, r24
   3f63c:	21 f4       	brne	.+8      	; 0x3f646 <boot_loader+0x1646>
   3f63e:	80 91 00 93 	lds	r24, 0x9300
   3f642:	88 23       	and	r24, r24
   3f644:	09 f6       	brne	.-126    	; 0x3f5c8 <boot_loader+0x15c8>
   3f646:	80 91 01 93 	lds	r24, 0x9301
   3f64a:	88 23       	and	r24, r24
   3f64c:	09 f0       	breq	.+2      	; 0x3f650 <boot_loader+0x1650>
   3f64e:	d2 c0       	rjmp	.+420    	; 0x3f7f4 <boot_loader+0x17f4>
   3f650:	80 91 a8 94 	lds	r24, 0x94A8
   3f654:	88 23       	and	r24, r24
   3f656:	29 f0       	breq	.+10     	; 0x3f662 <boot_loader+0x1662>
   3f658:	80 91 00 93 	lds	r24, 0x9300
   3f65c:	88 23       	and	r24, r24
   3f65e:	09 f4       	brne	.+2      	; 0x3f662 <boot_loader+0x1662>
   3f660:	c9 c0       	rjmp	.+402    	; 0x3f7f4 <boot_loader+0x17f4>
   3f662:	1a 82       	std	Y+2, r1	; 0x02
   3f664:	19 82       	std	Y+1, r1	; 0x01
   3f666:	1c 82       	std	Y+4, r1	; 0x04
   3f668:	1b 82       	std	Y+3, r1	; 0x03
   3f66a:	c3 01       	movw	r24, r6
   3f66c:	b2 01       	movw	r22, r4
   3f66e:	0f 94 81 fe 	call	0x3fd02	; 0x3fd02 <boot_loader+0x1d02>
   3f672:	88 23       	and	r24, r24
   3f674:	71 f4       	brne	.+28     	; 0x3f692 <boot_loader+0x1692>
   3f676:	83 b7       	in	r24, 0x33	; 51
   3f678:	81 60       	ori	r24, 0x01	; 1
   3f67a:	83 bf       	out	0x33, r24	; 51
   3f67c:	83 b7       	in	r24, 0x33	; 51
   3f67e:	81 60       	ori	r24, 0x01	; 1
   3f680:	83 bf       	out	0x33, r24	; 51
   3f682:	88 95       	sleep
   3f684:	83 b7       	in	r24, 0x33	; 51
   3f686:	8e 7f       	andi	r24, 0xFE	; 254
   3f688:	83 bf       	out	0x33, r24	; 51
   3f68a:	83 b7       	in	r24, 0x33	; 51
   3f68c:	8e 7f       	andi	r24, 0xFE	; 254
   3f68e:	83 bf       	out	0x33, r24	; 51
   3f690:	b1 c0       	rjmp	.+354    	; 0x3f7f4 <boot_loader+0x17f4>
   3f692:	eb 81       	ldd	r30, Y+3	; 0x03
   3f694:	fc 81       	ldd	r31, Y+4	; 0x04
   3f696:	09 81       	ldd	r16, Y+1	; 0x01
   3f698:	1a 81       	ldd	r17, Y+2	; 0x02
   3f69a:	ec 30       	cpi	r30, 0x0C	; 12
   3f69c:	f1 05       	cpc	r31, r1
   3f69e:	10 f4       	brcc	.+4      	; 0x3f6a4 <boot_loader+0x16a4>
   3f6a0:	c8 01       	movw	r24, r16
   3f6a2:	a6 c0       	rjmp	.+332    	; 0x3f7f0 <boot_loader+0x17f0>
   3f6a4:	68 01       	movw	r12, r16
   3f6a6:	d8 01       	movw	r26, r16
   3f6a8:	8d 91       	ld	r24, X+
   3f6aa:	9c 91       	ld	r25, X
   3f6ac:	11 97       	sbiw	r26, 0x01	; 1
   3f6ae:	e8 17       	cp	r30, r24
   3f6b0:	f9 07       	cpc	r31, r25
   3f6b2:	09 f0       	breq	.+2      	; 0x3f6b6 <boot_loader+0x16b6>
   3f6b4:	9b c0       	rjmp	.+310    	; 0x3f7ec <boot_loader+0x17ec>
   3f6b6:	9f 01       	movw	r18, r30
   3f6b8:	22 50       	subi	r18, 0x02	; 2
   3f6ba:	30 40       	sbci	r19, 0x00	; 0
   3f6bc:	40 e0       	ldi	r20, 0x00	; 0
   3f6be:	50 e0       	ldi	r21, 0x00	; 0
   3f6c0:	1a c0       	rjmp	.+52     	; 0x3f6f6 <boot_loader+0x16f6>
   3f6c2:	8d 91       	ld	r24, X+
   3f6c4:	48 27       	eor	r20, r24
   3f6c6:	84 2f       	mov	r24, r20
   3f6c8:	82 95       	swap	r24
   3f6ca:	84 27       	eor	r24, r20
   3f6cc:	08 2e       	mov	r0, r24
   3f6ce:	86 95       	lsr	r24
   3f6d0:	86 95       	lsr	r24
   3f6d2:	80 25       	eor	r24, r0
   3f6d4:	08 2e       	mov	r0, r24
   3f6d6:	86 95       	lsr	r24
   3f6d8:	80 25       	eor	r24, r0
   3f6da:	87 70       	andi	r24, 0x07	; 7
   3f6dc:	04 2e       	mov	r0, r20
   3f6de:	45 2f       	mov	r20, r21
   3f6e0:	86 95       	lsr	r24
   3f6e2:	07 94       	ror	r0
   3f6e4:	87 95       	ror	r24
   3f6e6:	50 2d       	mov	r21, r0
   3f6e8:	48 27       	eor	r20, r24
   3f6ea:	06 94       	lsr	r0
   3f6ec:	87 95       	ror	r24
   3f6ee:	50 25       	eor	r21, r0
   3f6f0:	48 27       	eor	r20, r24
   3f6f2:	21 50       	subi	r18, 0x01	; 1
   3f6f4:	30 40       	sbci	r19, 0x00	; 0
   3f6f6:	21 15       	cp	r18, r1
   3f6f8:	31 05       	cpc	r19, r1
   3f6fa:	19 f7       	brne	.-58     	; 0x3f6c2 <boot_loader+0x16c2>
   3f6fc:	32 97       	sbiw	r30, 0x02	; 2
   3f6fe:	e0 0f       	add	r30, r16
   3f700:	f1 1f       	adc	r31, r17
   3f702:	f1 80       	ldd	r15, Z+1	; 0x01
   3f704:	ee 24       	eor	r14, r14
   3f706:	80 81       	ld	r24, Z
   3f708:	90 e0       	ldi	r25, 0x00	; 0
   3f70a:	8e 29       	or	r24, r14
   3f70c:	9f 29       	or	r25, r15
   3f70e:	48 17       	cp	r20, r24
   3f710:	59 07       	cpc	r21, r25
   3f712:	09 f0       	breq	.+2      	; 0x3f716 <boot_loader+0x1716>
   3f714:	6b c0       	rjmp	.+214    	; 0x3f7ec <boot_loader+0x17ec>
   3f716:	80 91 38 87 	lds	r24, 0x8738
   3f71a:	88 23       	and	r24, r24
   3f71c:	b9 f0       	breq	.+46     	; 0x3f74c <boot_loader+0x174c>
   3f71e:	87 e1       	ldi	r24, 0x17	; 23
   3f720:	93 e9       	ldi	r25, 0x93	; 147
   3f722:	b8 01       	movw	r22, r16
   3f724:	4a e0       	ldi	r20, 0x0A	; 10
   3f726:	50 e0       	ldi	r21, 0x00	; 0
   3f728:	0f 94 3a ff 	call	0x3fe74	; 0x3fe74 <boot_loader+0x1e74>
   3f72c:	00 97       	sbiw	r24, 0x00	; 0
   3f72e:	71 f4       	brne	.+28     	; 0x3f74c <boot_loader+0x174c>
   3f730:	c8 01       	movw	r24, r16
   3f732:	0f 94 32 fe 	call	0x3fc64	; 0x3fc64 <boot_loader+0x1c64>
   3f736:	60 91 26 94 	lds	r22, 0x9426
   3f73a:	70 91 27 94 	lds	r23, 0x9427
   3f73e:	82 ea       	ldi	r24, 0xA2	; 162
   3f740:	90 e9       	ldi	r25, 0x90	; 144
   3f742:	0f 94 25 fd 	call	0x3fa4a	; 0x3fa4a <boot_loader+0x1a4a>
   3f746:	56 c0       	rjmp	.+172    	; 0x3f7f4 <boot_loader+0x17f4>
   3f748:	0f 94 69 f6 	call	0x3ecd2	; 0x3ecd2 <boot_loader+0xcd2>
   3f74c:	80 91 00 93 	lds	r24, 0x9300
   3f750:	88 23       	and	r24, r24
   3f752:	d1 f7       	brne	.-12     	; 0x3f748 <boot_loader+0x1748>
   3f754:	10 92 37 87 	sts	0x8737, r1
   3f758:	a7 e1       	ldi	r26, 0x17	; 23
   3f75a:	b3 e9       	ldi	r27, 0x93	; 147
   3f75c:	89 81       	ldd	r24, Y+1	; 0x01
   3f75e:	9a 81       	ldd	r25, Y+2	; 0x02
   3f760:	9c 01       	movw	r18, r24
   3f762:	f9 01       	movw	r30, r18
   3f764:	8a e0       	ldi	r24, 0x0A	; 10
   3f766:	01 90       	ld	r0, Z+
   3f768:	0d 92       	st	X+, r0
   3f76a:	81 50       	subi	r24, 0x01	; 1
   3f76c:	e1 f7       	brne	.-8      	; 0x3f766 <boot_loader+0x1766>
   3f76e:	30 92 38 87 	sts	0x8738, r3
   3f772:	f8 01       	movw	r30, r16
   3f774:	43 81       	ldd	r20, Z+3	; 0x03
   3f776:	80 91 24 94 	lds	r24, 0x9424
   3f77a:	90 91 25 94 	lds	r25, 0x9425
   3f77e:	ff ef       	ldi	r31, 0xFF	; 255
   3f780:	8f 3f       	cpi	r24, 0xFF	; 255
   3f782:	9f 07       	cpc	r25, r31
   3f784:	19 f4       	brne	.+6      	; 0x3f78c <boot_loader+0x178c>
   3f786:	21 e0       	ldi	r18, 0x01	; 1
   3f788:	30 e0       	ldi	r19, 0x00	; 0
   3f78a:	02 c0       	rjmp	.+4      	; 0x3f790 <boot_loader+0x1790>
   3f78c:	29 2f       	mov	r18, r25
   3f78e:	30 e0       	ldi	r19, 0x00	; 0
   3f790:	84 2f       	mov	r24, r20
   3f792:	90 e0       	ldi	r25, 0x00	; 0
   3f794:	82 17       	cp	r24, r18
   3f796:	93 07       	cpc	r25, r19
   3f798:	71 f0       	breq	.+28     	; 0x3f7b6 <boot_loader+0x17b6>
   3f79a:	4f 3f       	cpi	r20, 0xFF	; 255
   3f79c:	61 f0       	breq	.+24     	; 0x3f7b6 <boot_loader+0x17b6>
   3f79e:	6b 81       	ldd	r22, Y+3	; 0x03
   3f7a0:	7c 81       	ldd	r23, Y+4	; 0x04
   3f7a2:	89 81       	ldd	r24, Y+1	; 0x01
   3f7a4:	9a 81       	ldd	r25, Y+2	; 0x02
   3f7a6:	40 e0       	ldi	r20, 0x00	; 0
   3f7a8:	20 e0       	ldi	r18, 0x00	; 0
   3f7aa:	30 e0       	ldi	r19, 0x00	; 0
   3f7ac:	00 e0       	ldi	r16, 0x00	; 0
   3f7ae:	10 e0       	ldi	r17, 0x00	; 0
   3f7b0:	0f 94 ca f8 	call	0x3f194	; 0x3f194 <boot_loader+0x1194>
   3f7b4:	1b c0       	rjmp	.+54     	; 0x3f7ec <boot_loader+0x17ec>
   3f7b6:	d8 01       	movw	r26, r16
   3f7b8:	18 96       	adiw	r26, 0x08	; 8
   3f7ba:	8d 91       	ld	r24, X+
   3f7bc:	9c 91       	ld	r25, X
   3f7be:	19 97       	sbiw	r26, 0x09	; 9
   3f7c0:	6b 81       	ldd	r22, Y+3	; 0x03
   3f7c2:	7c 81       	ldd	r23, Y+4	; 0x04
   3f7c4:	09 81       	ldd	r16, Y+1	; 0x01
   3f7c6:	1a 81       	ldd	r17, Y+2	; 0x02
   3f7c8:	84 97       	sbiw	r24, 0x24	; 36
   3f7ca:	69 f4       	brne	.+26     	; 0x3f7e6 <boot_loader+0x17e6>
   3f7cc:	a6 01       	movw	r20, r12
   3f7ce:	46 5f       	subi	r20, 0xF6	; 246
   3f7d0:	5f 4f       	sbci	r21, 0xFF	; 255
   3f7d2:	f6 01       	movw	r30, r12
   3f7d4:	20 81       	ld	r18, Z
   3f7d6:	31 81       	ldd	r19, Z+1	; 0x01
   3f7d8:	2c 50       	subi	r18, 0x0C	; 12
   3f7da:	30 40       	sbci	r19, 0x00	; 0
   3f7dc:	c8 01       	movw	r24, r16
   3f7de:	01 e0       	ldi	r16, 0x01	; 1
   3f7e0:	0f 94 8f f2 	call	0x3e51e	; 0x3e51e <boot_loader+0x51e>
   3f7e4:	03 c0       	rjmp	.+6      	; 0x3f7ec <boot_loader+0x17ec>
   3f7e6:	c8 01       	movw	r24, r16
   3f7e8:	0f 94 30 f9 	call	0x3f260	; 0x3f260 <boot_loader+0x1260>
   3f7ec:	89 81       	ldd	r24, Y+1	; 0x01
   3f7ee:	9a 81       	ldd	r25, Y+2	; 0x02
   3f7f0:	0f 94 32 fe 	call	0x3fc64	; 0x3fc64 <boot_loader+0x1c64>
   3f7f4:	80 91 01 93 	lds	r24, 0x9301
   3f7f8:	88 23       	and	r24, r24
   3f7fa:	51 f4       	brne	.+20     	; 0x3f810 <boot_loader+0x1810>
   3f7fc:	80 91 a8 94 	lds	r24, 0x94A8
   3f800:	88 23       	and	r24, r24
   3f802:	09 f4       	brne	.+2      	; 0x3f806 <boot_loader+0x1806>
   3f804:	18 cf       	rjmp	.-464    	; 0x3f636 <boot_loader+0x1636>
   3f806:	80 91 00 93 	lds	r24, 0x9300
   3f80a:	88 23       	and	r24, r24
   3f80c:	09 f0       	breq	.+2      	; 0x3f810 <boot_loader+0x1810>
   3f80e:	13 cf       	rjmp	.-474    	; 0x3f636 <boot_loader+0x1636>
   3f810:	f8 94       	cli
   3f812:	80 e2       	ldi	r24, 0x20	; 32
   3f814:	9e e4       	ldi	r25, 0x4E	; 78
   3f816:	01 97       	sbiw	r24, 0x01	; 1
   3f818:	f1 f7       	brne	.-4      	; 0x3f816 <boot_loader+0x1816>
   3f81a:	0f 94 09 fd 	call	0x3fa12	; 0x3fa12 <boot_loader+0x1a12>
   3f81e:	0f 94 a0 fc 	call	0x3f940	; 0x3f940 <boot_loader+0x1940>
   3f822:	88 e1       	ldi	r24, 0x18	; 24
   3f824:	0f b6       	in	r0, 0x3f	; 63
   3f826:	f8 94       	cli
   3f828:	80 93 60 00 	sts	0x0060, r24
   3f82c:	10 92 60 00 	sts	0x0060, r1
   3f830:	0f be       	out	0x3f, r0	; 63
   3f832:	80 91 01 93 	lds	r24, 0x9301
   3f836:	88 23       	and	r24, r24
   3f838:	71 f4       	brne	.+28     	; 0x3f856 <boot_loader+0x1856>
   3f83a:	80 91 23 94 	lds	r24, 0x9423
   3f83e:	88 23       	and	r24, r24
   3f840:	31 f0       	breq	.+12     	; 0x3f84e <boot_loader+0x184e>
   3f842:	80 91 6f 94 	lds	r24, 0x946F
   3f846:	85 60       	ori	r24, 0x05	; 5
   3f848:	8f 7e       	andi	r24, 0xEF	; 239
   3f84a:	80 93 6f 94 	sts	0x946F, r24
   3f84e:	88 e2       	ldi	r24, 0x28	; 40
   3f850:	94 e9       	ldi	r25, 0x94	; 148
   3f852:	0f 94 c3 f1 	call	0x3e386	; 0x3e386 <boot_loader+0x386>
   3f856:	0f 90       	pop	r0
   3f858:	0f 90       	pop	r0
   3f85a:	0f 90       	pop	r0
   3f85c:	0f 90       	pop	r0
   3f85e:	cf 91       	pop	r28
   3f860:	df 91       	pop	r29
   3f862:	1f 91       	pop	r17
   3f864:	0f 91       	pop	r16
   3f866:	ff 90       	pop	r15
   3f868:	ef 90       	pop	r14
   3f86a:	df 90       	pop	r13
   3f86c:	cf 90       	pop	r12
   3f86e:	bf 90       	pop	r11
   3f870:	af 90       	pop	r10
   3f872:	9f 90       	pop	r9
   3f874:	8f 90       	pop	r8
   3f876:	7f 90       	pop	r7
   3f878:	6f 90       	pop	r6
   3f87a:	5f 90       	pop	r5
   3f87c:	4f 90       	pop	r4
   3f87e:	3f 90       	pop	r3
   3f880:	08 95       	ret
   3f882:	ef 92       	push	r14
   3f884:	ff 92       	push	r15
   3f886:	0f 93       	push	r16
   3f888:	1f 93       	push	r17
   3f88a:	7b 01       	movw	r14, r22
   3f88c:	8c 01       	movw	r16, r24
   3f88e:	20 e0       	ldi	r18, 0x00	; 0
   3f890:	30 e0       	ldi	r19, 0x00	; 0
   3f892:	40 e0       	ldi	r20, 0x00	; 0
   3f894:	50 e0       	ldi	r21, 0x00	; 0
   3f896:	60 e0       	ldi	r22, 0x00	; 0
   3f898:	70 e0       	ldi	r23, 0x00	; 0
   3f89a:	26 c0       	rjmp	.+76     	; 0x3f8e8 <boot_loader+0x18e8>
   3f89c:	da 01       	movw	r26, r20
   3f89e:	c9 01       	movw	r24, r18
   3f8a0:	01 96       	adiw	r24, 0x01	; 1
   3f8a2:	a1 1d       	adc	r26, r1
   3f8a4:	b1 1d       	adc	r27, r1
   3f8a6:	4b bf       	out	0x3b, r20	; 59
   3f8a8:	f9 01       	movw	r30, r18
   3f8aa:	27 91       	elpm	r18, Z+
   3f8ac:	62 27       	eor	r22, r18
   3f8ae:	26 2f       	mov	r18, r22
   3f8b0:	22 95       	swap	r18
   3f8b2:	26 27       	eor	r18, r22
   3f8b4:	02 2e       	mov	r0, r18
   3f8b6:	26 95       	lsr	r18
   3f8b8:	26 95       	lsr	r18
   3f8ba:	20 25       	eor	r18, r0
   3f8bc:	02 2e       	mov	r0, r18
   3f8be:	26 95       	lsr	r18
   3f8c0:	20 25       	eor	r18, r0
   3f8c2:	27 70       	andi	r18, 0x07	; 7
   3f8c4:	06 2e       	mov	r0, r22
   3f8c6:	67 2f       	mov	r22, r23
   3f8c8:	26 95       	lsr	r18
   3f8ca:	07 94       	ror	r0
   3f8cc:	27 95       	ror	r18
   3f8ce:	70 2d       	mov	r23, r0
   3f8d0:	62 27       	eor	r22, r18
   3f8d2:	06 94       	lsr	r0
   3f8d4:	27 95       	ror	r18
   3f8d6:	70 25       	eor	r23, r0
   3f8d8:	62 27       	eor	r22, r18
   3f8da:	08 94       	sec
   3f8dc:	e1 08       	sbc	r14, r1
   3f8de:	f1 08       	sbc	r15, r1
   3f8e0:	01 09       	sbc	r16, r1
   3f8e2:	11 09       	sbc	r17, r1
   3f8e4:	9c 01       	movw	r18, r24
   3f8e6:	ad 01       	movw	r20, r26
   3f8e8:	e1 14       	cp	r14, r1
   3f8ea:	f1 04       	cpc	r15, r1
   3f8ec:	01 05       	cpc	r16, r1
   3f8ee:	11 05       	cpc	r17, r1
   3f8f0:	09 f0       	breq	.+2      	; 0x3f8f4 <boot_loader+0x18f4>
   3f8f2:	d4 cf       	rjmp	.-88     	; 0x3f89c <boot_loader+0x189c>
   3f8f4:	cb 01       	movw	r24, r22
   3f8f6:	1f 91       	pop	r17
   3f8f8:	0f 91       	pop	r16
   3f8fa:	ff 90       	pop	r15
   3f8fc:	ef 90       	pop	r14
   3f8fe:	08 95       	ret
   3f900:	80 91 64 00 	lds	r24, 0x0064
   3f904:	8f 7b       	andi	r24, 0xBF	; 191
   3f906:	80 93 64 00 	sts	0x0064, r24
   3f90a:	80 e2       	ldi	r24, 0x20	; 32
   3f90c:	80 93 b6 00 	sts	0x00B6, r24
   3f910:	82 e0       	ldi	r24, 0x02	; 2
   3f912:	80 93 b0 00 	sts	0x00B0, r24
   3f916:	81 e0       	ldi	r24, 0x01	; 1
   3f918:	80 93 b1 00 	sts	0x00B1, r24
   3f91c:	10 92 b2 00 	sts	0x00B2, r1
   3f920:	8f ef       	ldi	r24, 0xFF	; 255
   3f922:	80 93 b3 00 	sts	0x00B3, r24
   3f926:	80 91 b6 00 	lds	r24, 0x00B6
   3f92a:	90 e0       	ldi	r25, 0x00	; 0
   3f92c:	8f 71       	andi	r24, 0x1F	; 31
   3f92e:	90 70       	andi	r25, 0x00	; 0
   3f930:	89 2b       	or	r24, r25
   3f932:	c9 f7       	brne	.-14     	; 0x3f926 <boot_loader+0x1926>
   3f934:	87 e0       	ldi	r24, 0x07	; 7
   3f936:	87 bb       	out	0x17, r24	; 23
   3f938:	82 e0       	ldi	r24, 0x02	; 2
   3f93a:	80 93 70 00 	sts	0x0070, r24
   3f93e:	08 95       	ret
   3f940:	10 92 70 00 	sts	0x0070, r1
   3f944:	e4 e6       	ldi	r30, 0x64	; 100
   3f946:	f0 e0       	ldi	r31, 0x00	; 0
   3f948:	80 81       	ld	r24, Z
   3f94a:	80 64       	ori	r24, 0x40	; 64
   3f94c:	80 83       	st	Z, r24
   3f94e:	08 95       	ret
   3f950:	8f b7       	in	r24, 0x3f	; 63
   3f952:	f8 94       	cli
   3f954:	20 91 06 80 	lds	r18, 0x8006
   3f958:	30 91 07 80 	lds	r19, 0x8007
   3f95c:	40 91 08 80 	lds	r20, 0x8008
   3f960:	50 91 09 80 	lds	r21, 0x8009
   3f964:	8f bf       	out	0x3f, r24	; 63
   3f966:	b9 01       	movw	r22, r18
   3f968:	ca 01       	movw	r24, r20
   3f96a:	08 95       	ret
   3f96c:	1f 92       	push	r1
   3f96e:	0f 92       	push	r0
   3f970:	0f b6       	in	r0, 0x3f	; 63
   3f972:	0f 92       	push	r0
   3f974:	11 24       	eor	r1, r1
   3f976:	8f 93       	push	r24
   3f978:	9f 93       	push	r25
   3f97a:	af 93       	push	r26
   3f97c:	bf 93       	push	r27
   3f97e:	80 91 06 80 	lds	r24, 0x8006
   3f982:	90 91 07 80 	lds	r25, 0x8007
   3f986:	a0 91 08 80 	lds	r26, 0x8008
   3f98a:	b0 91 09 80 	lds	r27, 0x8009
   3f98e:	01 96       	adiw	r24, 0x01	; 1
   3f990:	a1 1d       	adc	r26, r1
   3f992:	b1 1d       	adc	r27, r1
   3f994:	80 93 06 80 	sts	0x8006, r24
   3f998:	90 93 07 80 	sts	0x8007, r25
   3f99c:	a0 93 08 80 	sts	0x8008, r26
   3f9a0:	b0 93 09 80 	sts	0x8009, r27
   3f9a4:	a8 95       	wdr
   3f9a6:	bf 91       	pop	r27
   3f9a8:	af 91       	pop	r26
   3f9aa:	9f 91       	pop	r25
   3f9ac:	8f 91       	pop	r24
   3f9ae:	0f 90       	pop	r0
   3f9b0:	0f be       	out	0x3f, r0	; 63
   3f9b2:	0f 90       	pop	r0
   3f9b4:	1f 90       	pop	r1
   3f9b6:	18 95       	reti
   3f9b8:	80 e1       	ldi	r24, 0x10	; 16
   3f9ba:	90 e8       	ldi	r25, 0x80	; 128
   3f9bc:	90 93 31 87 	sts	0x8731, r25
   3f9c0:	80 93 30 87 	sts	0x8730, r24
   3f9c4:	80 e7       	ldi	r24, 0x70	; 112
   3f9c6:	92 e8       	ldi	r25, 0x82	; 130
   3f9c8:	90 93 6f 82 	sts	0x826F, r25
   3f9cc:	80 93 6e 82 	sts	0x826E, r24
   3f9d0:	80 ed       	ldi	r24, 0xD0	; 208
   3f9d2:	94 e8       	ldi	r25, 0x84	; 132
   3f9d4:	90 93 cf 84 	sts	0x84CF, r25
   3f9d8:	80 93 ce 84 	sts	0x84CE, r24
   3f9dc:	9f b7       	in	r25, 0x3f	; 63
   3f9de:	f8 94       	cli
   3f9e0:	e4 e6       	ldi	r30, 0x64	; 100
   3f9e2:	f0 e0       	ldi	r31, 0x00	; 0
   3f9e4:	80 81       	ld	r24, Z
   3f9e6:	8d 7f       	andi	r24, 0xFD	; 253
   3f9e8:	80 83       	st	Z, r24
   3f9ea:	8d b1       	in	r24, 0x0d	; 13
   3f9ec:	84 7f       	andi	r24, 0xF4	; 244
   3f9ee:	8a 60       	ori	r24, 0x0A	; 10
   3f9f0:	8d b9       	out	0x0d, r24	; 13
   3f9f2:	73 9a       	sbi	0x0e, 3	; 14
   3f9f4:	10 92 c5 00 	sts	0x00C5, r1
   3f9f8:	83 e0       	ldi	r24, 0x03	; 3
   3f9fa:	80 93 c4 00 	sts	0x00C4, r24
   3f9fe:	10 92 c0 00 	sts	0x00C0, r1
   3fa02:	88 e9       	ldi	r24, 0x98	; 152
   3fa04:	80 93 c1 00 	sts	0x00C1, r24
   3fa08:	8e e0       	ldi	r24, 0x0E	; 14
   3fa0a:	80 93 c2 00 	sts	0x00C2, r24
   3fa0e:	9f bf       	out	0x3f, r25	; 63
   3fa10:	08 95       	ret
   3fa12:	9f b7       	in	r25, 0x3f	; 63
   3fa14:	f8 94       	cli
   3fa16:	10 92 c1 00 	sts	0x00C1, r1
   3fa1a:	e4 e6       	ldi	r30, 0x64	; 100
   3fa1c:	f0 e0       	ldi	r31, 0x00	; 0
   3fa1e:	80 81       	ld	r24, Z
   3fa20:	82 60       	ori	r24, 0x02	; 2
   3fa22:	80 83       	st	Z, r24
   3fa24:	8d b1       	in	r24, 0x0d	; 13
   3fa26:	84 7f       	andi	r24, 0xF4	; 244
   3fa28:	8a 60       	ori	r24, 0x0A	; 10
   3fa2a:	8d b9       	out	0x0d, r24	; 13
   3fa2c:	73 98       	cbi	0x0e, 3	; 14
   3fa2e:	9f bf       	out	0x3f, r25	; 63
   3fa30:	08 95       	ret
   3fa32:	98 2f       	mov	r25, r24
   3fa34:	80 91 c0 00 	lds	r24, 0x00C0
   3fa38:	85 ff       	sbrs	r24, 5
   3fa3a:	fc cf       	rjmp	.-8      	; 0x3fa34 <boot_loader+0x1a34>
   3fa3c:	90 93 c6 00 	sts	0x00C6, r25
   3fa40:	80 91 c0 00 	lds	r24, 0x00C0
   3fa44:	86 ff       	sbrs	r24, 6
   3fa46:	fc cf       	rjmp	.-8      	; 0x3fa40 <boot_loader+0x1a40>
   3fa48:	08 95       	ret
   3fa4a:	fc 01       	movw	r30, r24
   3fa4c:	80 91 c0 00 	lds	r24, 0x00C0
   3fa50:	85 ff       	sbrs	r24, 5
   3fa52:	fc cf       	rjmp	.-8      	; 0x3fa4c <boot_loader+0x1a4c>
   3fa54:	8e e7       	ldi	r24, 0x7E	; 126
   3fa56:	80 93 c6 00 	sts	0x00C6, r24
   3fa5a:	3d e7       	ldi	r19, 0x7D	; 125
   3fa5c:	20 e2       	ldi	r18, 0x20	; 32
   3fa5e:	15 c0       	rjmp	.+42     	; 0x3fa8a <boot_loader+0x1a8a>
   3fa60:	90 81       	ld	r25, Z
   3fa62:	89 2f       	mov	r24, r25
   3fa64:	8d 57       	subi	r24, 0x7D	; 125
   3fa66:	82 30       	cpi	r24, 0x02	; 2
   3fa68:	38 f4       	brcc	.+14     	; 0x3fa78 <boot_loader+0x1a78>
   3fa6a:	80 91 c0 00 	lds	r24, 0x00C0
   3fa6e:	85 ff       	sbrs	r24, 5
   3fa70:	fc cf       	rjmp	.-8      	; 0x3fa6a <boot_loader+0x1a6a>
   3fa72:	30 93 c6 00 	sts	0x00C6, r19
   3fa76:	92 27       	eor	r25, r18
   3fa78:	80 91 c0 00 	lds	r24, 0x00C0
   3fa7c:	85 ff       	sbrs	r24, 5
   3fa7e:	fc cf       	rjmp	.-8      	; 0x3fa78 <boot_loader+0x1a78>
   3fa80:	31 96       	adiw	r30, 0x01	; 1
   3fa82:	90 93 c6 00 	sts	0x00C6, r25
   3fa86:	61 50       	subi	r22, 0x01	; 1
   3fa88:	70 40       	sbci	r23, 0x00	; 0
   3fa8a:	61 15       	cp	r22, r1
   3fa8c:	71 05       	cpc	r23, r1
   3fa8e:	41 f7       	brne	.-48     	; 0x3fa60 <boot_loader+0x1a60>
   3fa90:	80 91 c0 00 	lds	r24, 0x00C0
   3fa94:	86 ff       	sbrs	r24, 6
   3fa96:	fc cf       	rjmp	.-8      	; 0x3fa90 <boot_loader+0x1a90>
   3fa98:	08 95       	ret
   3fa9a:	ef 92       	push	r14
   3fa9c:	ff 92       	push	r15
   3fa9e:	0f 93       	push	r16
   3faa0:	1f 93       	push	r17
   3faa2:	9c 01       	movw	r18, r24
   3faa4:	44 27       	eor	r20, r20
   3faa6:	37 fd       	sbrc	r19, 7
   3faa8:	40 95       	com	r20
   3faaa:	54 2f       	mov	r21, r20
   3faac:	08 c0       	rjmp	.+16     	; 0x3fabe <boot_loader+0x1abe>
   3faae:	80 91 c0 00 	lds	r24, 0x00C0
   3fab2:	85 ff       	sbrs	r24, 5
   3fab4:	fc cf       	rjmp	.-8      	; 0x3faae <boot_loader+0x1aae>
   3fab6:	90 93 c6 00 	sts	0x00C6, r25
   3faba:	a8 01       	movw	r20, r16
   3fabc:	97 01       	movw	r18, r14
   3fabe:	79 01       	movw	r14, r18
   3fac0:	8a 01       	movw	r16, r20
   3fac2:	08 94       	sec
   3fac4:	e1 1c       	adc	r14, r1
   3fac6:	f1 1c       	adc	r15, r1
   3fac8:	01 1d       	adc	r16, r1
   3faca:	11 1d       	adc	r17, r1
   3facc:	4b bf       	out	0x3b, r20	; 59
   3face:	f9 01       	movw	r30, r18
   3fad0:	97 91       	elpm	r25, Z+
   3fad2:	99 23       	and	r25, r25
   3fad4:	61 f7       	brne	.-40     	; 0x3faae <boot_loader+0x1aae>
   3fad6:	1f 91       	pop	r17
   3fad8:	0f 91       	pop	r16
   3fada:	ff 90       	pop	r15
   3fadc:	ef 90       	pop	r14
   3fade:	08 95       	ret
   3fae0:	1f 92       	push	r1
   3fae2:	0f 92       	push	r0
   3fae4:	0f b6       	in	r0, 0x3f	; 63
   3fae6:	0f 92       	push	r0
   3fae8:	0b b6       	in	r0, 0x3b	; 59
   3faea:	0f 92       	push	r0
   3faec:	11 24       	eor	r1, r1
   3faee:	0f 93       	push	r16
   3faf0:	1f 93       	push	r17
   3faf2:	2f 93       	push	r18
   3faf4:	3f 93       	push	r19
   3faf6:	4f 93       	push	r20
   3faf8:	5f 93       	push	r21
   3fafa:	6f 93       	push	r22
   3fafc:	7f 93       	push	r23
   3fafe:	8f 93       	push	r24
   3fb00:	9f 93       	push	r25
   3fb02:	af 93       	push	r26
   3fb04:	bf 93       	push	r27
   3fb06:	cf 93       	push	r28
   3fb08:	df 93       	push	r29
   3fb0a:	ef 93       	push	r30
   3fb0c:	ff 93       	push	r31
   3fb0e:	c0 91 32 87 	lds	r28, 0x8732
   3fb12:	d0 91 33 87 	lds	r29, 0x8733
   3fb16:	20 91 30 87 	lds	r18, 0x8730
   3fb1a:	30 91 31 87 	lds	r19, 0x8731
   3fb1e:	60 91 34 87 	lds	r22, 0x8734
   3fb22:	70 91 35 87 	lds	r23, 0x8735
   3fb26:	11 e0       	ldi	r17, 0x01	; 1
   3fb28:	00 e2       	ldi	r16, 0x20	; 32
   3fb2a:	75 c0       	rjmp	.+234    	; 0x3fc16 <boot_loader+0x1c16>
   3fb2c:	40 91 c6 00 	lds	r20, 0x00C6
   3fb30:	20 97       	sbiw	r28, 0x00	; 0
   3fb32:	09 f4       	brne	.+2      	; 0x3fb36 <boot_loader+0x1b36>
   3fb34:	5c c0       	rjmp	.+184    	; 0x3fbee <boot_loader+0x1bee>
   3fb36:	de 01       	movw	r26, r28
   3fb38:	a4 5a       	subi	r26, 0xA4	; 164
   3fb3a:	bd 4f       	sbci	r27, 0xFD	; 253
   3fb3c:	8c 91       	ld	r24, X
   3fb3e:	88 23       	and	r24, r24
   3fb40:	09 f0       	breq	.+2      	; 0x3fb44 <boot_loader+0x1b44>
   3fb42:	55 c0       	rjmp	.+170    	; 0x3fbee <boot_loader+0x1bee>
   3fb44:	4e 37       	cpi	r20, 0x7E	; 126
   3fb46:	71 f4       	brne	.+28     	; 0x3fb64 <boot_loader+0x1b64>
   3fb48:	c8 5a       	subi	r28, 0xA8	; 168
   3fb4a:	dd 4f       	sbci	r29, 0xFD	; 253
   3fb4c:	88 81       	ld	r24, Y
   3fb4e:	99 81       	ldd	r25, Y+1	; 0x01
   3fb50:	c8 55       	subi	r28, 0x58	; 88
   3fb52:	d2 40       	sbci	r29, 0x02	; 2
   3fb54:	89 2b       	or	r24, r25
   3fb56:	c9 f4       	brne	.+50     	; 0x3fb8a <boot_loader+0x1b8a>
   3fb58:	c3 5a       	subi	r28, 0xA3	; 163
   3fb5a:	dd 4f       	sbci	r29, 0xFD	; 253
   3fb5c:	18 82       	st	Y, r1
   3fb5e:	cd 55       	subi	r28, 0x5D	; 93
   3fb60:	d2 40       	sbci	r29, 0x02	; 2
   3fb62:	52 c0       	rjmp	.+164    	; 0x3fc08 <boot_loader+0x1c08>
   3fb64:	fe 01       	movw	r30, r28
   3fb66:	e3 5a       	subi	r30, 0xA3	; 163
   3fb68:	fd 4f       	sbci	r31, 0xFD	; 253
   3fb6a:	4d 37       	cpi	r20, 0x7D	; 125
   3fb6c:	29 f4       	brne	.+10     	; 0x3fb78 <boot_loader+0x1b78>
   3fb6e:	80 81       	ld	r24, Z
   3fb70:	88 23       	and	r24, r24
   3fb72:	59 f4       	brne	.+22     	; 0x3fb8a <boot_loader+0x1b8a>
   3fb74:	10 83       	st	Z, r17
   3fb76:	48 c0       	rjmp	.+144    	; 0x3fc08 <boot_loader+0x1c08>
   3fb78:	80 81       	ld	r24, Z
   3fb7a:	88 23       	and	r24, r24
   3fb7c:	41 f0       	breq	.+16     	; 0x3fb8e <boot_loader+0x1b8e>
   3fb7e:	40 27       	eor	r20, r16
   3fb80:	10 82       	st	Z, r1
   3fb82:	84 2f       	mov	r24, r20
   3fb84:	8d 57       	subi	r24, 0x7D	; 125
   3fb86:	82 30       	cpi	r24, 0x02	; 2
   3fb88:	10 f0       	brcs	.+4      	; 0x3fb8e <boot_loader+0x1b8e>
   3fb8a:	1c 93       	st	X, r17
   3fb8c:	2a c0       	rjmp	.+84     	; 0x3fbe2 <boot_loader+0x1be2>
   3fb8e:	de 01       	movw	r26, r28
   3fb90:	a8 5a       	subi	r26, 0xA8	; 168
   3fb92:	bd 4f       	sbci	r27, 0xFD	; 253
   3fb94:	8d 91       	ld	r24, X+
   3fb96:	9c 91       	ld	r25, X
   3fb98:	11 97       	sbiw	r26, 0x01	; 1
   3fb9a:	fe 01       	movw	r30, r28
   3fb9c:	e8 0f       	add	r30, r24
   3fb9e:	f9 1f       	adc	r31, r25
   3fba0:	40 83       	st	Z, r20
   3fba2:	ac 01       	movw	r20, r24
   3fba4:	4f 5f       	subi	r20, 0xFF	; 255
   3fba6:	5f 4f       	sbci	r21, 0xFF	; 255
   3fba8:	4d 93       	st	X+, r20
   3fbaa:	5c 93       	st	X, r21
   3fbac:	41 30       	cpi	r20, 0x01	; 1
   3fbae:	51 05       	cpc	r21, r1
   3fbb0:	59 f1       	breq	.+86     	; 0x3fc08 <boot_loader+0x1c08>
   3fbb2:	fe 01       	movw	r30, r28
   3fbb4:	e6 5a       	subi	r30, 0xA6	; 166
   3fbb6:	fd 4f       	sbci	r31, 0xFD	; 253
   3fbb8:	42 30       	cpi	r20, 0x02	; 2
   3fbba:	51 05       	cpc	r21, r1
   3fbbc:	41 f4       	brne	.+16     	; 0x3fbce <boot_loader+0x1bce>
   3fbbe:	88 81       	ld	r24, Y
   3fbc0:	99 81       	ldd	r25, Y+1	; 0x01
   3fbc2:	91 83       	std	Z+1, r25	; 0x01
   3fbc4:	80 83       	st	Z, r24
   3fbc6:	89 55       	subi	r24, 0x59	; 89
   3fbc8:	92 40       	sbci	r25, 0x02	; 2
   3fbca:	f0 f0       	brcs	.+60     	; 0x3fc08 <boot_loader+0x1c08>
   3fbcc:	05 c0       	rjmp	.+10     	; 0x3fbd8 <boot_loader+0x1bd8>
   3fbce:	80 81       	ld	r24, Z
   3fbd0:	91 81       	ldd	r25, Z+1	; 0x01
   3fbd2:	48 17       	cp	r20, r24
   3fbd4:	59 07       	cpc	r21, r25
   3fbd6:	c0 f0       	brcs	.+48     	; 0x3fc08 <boot_loader+0x1c08>
   3fbd8:	c4 5a       	subi	r28, 0xA4	; 164
   3fbda:	dd 4f       	sbci	r29, 0xFD	; 253
   3fbdc:	18 83       	st	Y, r17
   3fbde:	cc 55       	subi	r28, 0x5C	; 92
   3fbe0:	d2 40       	sbci	r29, 0x02	; 2
   3fbe2:	52 2f       	mov	r21, r18
   3fbe4:	43 2f       	mov	r20, r19
   3fbe6:	9e 01       	movw	r18, r28
   3fbe8:	60 e0       	ldi	r22, 0x00	; 0
   3fbea:	70 e0       	ldi	r23, 0x00	; 0
   3fbec:	10 c0       	rjmp	.+32     	; 0x3fc0e <boot_loader+0x1c0e>
   3fbee:	4e 37       	cpi	r20, 0x7E	; 126
   3fbf0:	59 f4       	brne	.+22     	; 0x3fc08 <boot_loader+0x1c08>
   3fbf2:	21 15       	cp	r18, r1
   3fbf4:	31 05       	cpc	r19, r1
   3fbf6:	41 f0       	breq	.+16     	; 0x3fc08 <boot_loader+0x1c08>
   3fbf8:	f9 01       	movw	r30, r18
   3fbfa:	e2 5a       	subi	r30, 0xA2	; 162
   3fbfc:	fd 4f       	sbci	r31, 0xFD	; 253
   3fbfe:	50 81       	ld	r21, Z
   3fc00:	41 81       	ldd	r20, Z+1	; 0x01
   3fc02:	d1 83       	std	Z+1, r29	; 0x01
   3fc04:	c0 83       	st	Z, r28
   3fc06:	03 c0       	rjmp	.+6      	; 0x3fc0e <boot_loader+0x1c0e>
   3fc08:	52 2f       	mov	r21, r18
   3fc0a:	43 2f       	mov	r20, r19
   3fc0c:	9e 01       	movw	r18, r28
   3fc0e:	e9 01       	movw	r28, r18
   3fc10:	85 2f       	mov	r24, r21
   3fc12:	94 2f       	mov	r25, r20
   3fc14:	9c 01       	movw	r18, r24
   3fc16:	80 91 c0 00 	lds	r24, 0x00C0
   3fc1a:	87 fd       	sbrc	r24, 7
   3fc1c:	87 cf       	rjmp	.-242    	; 0x3fb2c <boot_loader+0x1b2c>
   3fc1e:	d0 93 33 87 	sts	0x8733, r29
   3fc22:	c0 93 32 87 	sts	0x8732, r28
   3fc26:	30 93 31 87 	sts	0x8731, r19
   3fc2a:	20 93 30 87 	sts	0x8730, r18
   3fc2e:	70 93 35 87 	sts	0x8735, r23
   3fc32:	60 93 34 87 	sts	0x8734, r22
   3fc36:	ff 91       	pop	r31
   3fc38:	ef 91       	pop	r30
   3fc3a:	df 91       	pop	r29
   3fc3c:	cf 91       	pop	r28
   3fc3e:	bf 91       	pop	r27
   3fc40:	af 91       	pop	r26
   3fc42:	9f 91       	pop	r25
   3fc44:	8f 91       	pop	r24
   3fc46:	7f 91       	pop	r23
   3fc48:	6f 91       	pop	r22
   3fc4a:	5f 91       	pop	r21
   3fc4c:	4f 91       	pop	r20
   3fc4e:	3f 91       	pop	r19
   3fc50:	2f 91       	pop	r18
   3fc52:	1f 91       	pop	r17
   3fc54:	0f 91       	pop	r16
   3fc56:	0f 90       	pop	r0
   3fc58:	0b be       	out	0x3b, r0	; 59
   3fc5a:	0f 90       	pop	r0
   3fc5c:	0f be       	out	0x3f, r0	; 63
   3fc5e:	0f 90       	pop	r0
   3fc60:	1f 90       	pop	r1
   3fc62:	18 95       	reti
   3fc64:	cf 93       	push	r28
   3fc66:	df 93       	push	r29
   3fc68:	ac 01       	movw	r20, r24
   3fc6a:	6f b7       	in	r22, 0x3f	; 63
   3fc6c:	f8 94       	cli
   3fc6e:	a0 91 32 87 	lds	r26, 0x8732
   3fc72:	b0 91 33 87 	lds	r27, 0x8733
   3fc76:	c0 e0       	ldi	r28, 0x00	; 0
   3fc78:	d0 e0       	ldi	r29, 0x00	; 0
   3fc7a:	08 c0       	rjmp	.+16     	; 0x3fc8c <boot_loader+0x1c8c>
   3fc7c:	fd 01       	movw	r30, r26
   3fc7e:	e2 5a       	subi	r30, 0xA2	; 162
   3fc80:	fd 4f       	sbci	r31, 0xFD	; 253
   3fc82:	ed 01       	movw	r28, r26
   3fc84:	20 81       	ld	r18, Z
   3fc86:	31 81       	ldd	r19, Z+1	; 0x01
   3fc88:	c9 01       	movw	r24, r18
   3fc8a:	dc 01       	movw	r26, r24
   3fc8c:	10 97       	sbiw	r26, 0x00	; 0
   3fc8e:	91 f1       	breq	.+100    	; 0x3fcf4 <boot_loader+0x1cf4>
   3fc90:	a4 17       	cp	r26, r20
   3fc92:	b5 07       	cpc	r27, r21
   3fc94:	99 f7       	brne	.-26     	; 0x3fc7c <boot_loader+0x1c7c>
   3fc96:	32 c0       	rjmp	.+100    	; 0x3fcfc <boot_loader+0x1cfc>
   3fc98:	c2 5a       	subi	r28, 0xA2	; 162
   3fc9a:	dd 4f       	sbci	r29, 0xFD	; 253
   3fc9c:	a2 5a       	subi	r26, 0xA2	; 162
   3fc9e:	bd 4f       	sbci	r27, 0xFD	; 253
   3fca0:	8d 91       	ld	r24, X+
   3fca2:	9c 91       	ld	r25, X
   3fca4:	11 97       	sbiw	r26, 0x01	; 1
   3fca6:	ae 55       	subi	r26, 0x5E	; 94
   3fca8:	b2 40       	sbci	r27, 0x02	; 2
   3fcaa:	99 83       	std	Y+1, r25	; 0x01
   3fcac:	88 83       	st	Y, r24
   3fcae:	0b c0       	rjmp	.+22     	; 0x3fcc6 <boot_loader+0x1cc6>
   3fcb0:	a2 5a       	subi	r26, 0xA2	; 162
   3fcb2:	bd 4f       	sbci	r27, 0xFD	; 253
   3fcb4:	8d 91       	ld	r24, X+
   3fcb6:	9c 91       	ld	r25, X
   3fcb8:	11 97       	sbiw	r26, 0x01	; 1
   3fcba:	ae 55       	subi	r26, 0x5E	; 94
   3fcbc:	b2 40       	sbci	r27, 0x02	; 2
   3fcbe:	90 93 33 87 	sts	0x8733, r25
   3fcc2:	80 93 32 87 	sts	0x8732, r24
   3fcc6:	80 e6       	ldi	r24, 0x60	; 96
   3fcc8:	92 e0       	ldi	r25, 0x02	; 2
   3fcca:	fd 01       	movw	r30, r26
   3fccc:	9c 01       	movw	r18, r24
   3fcce:	11 92       	st	Z+, r1
   3fcd0:	21 50       	subi	r18, 0x01	; 1
   3fcd2:	30 40       	sbci	r19, 0x00	; 0
   3fcd4:	e1 f7       	brne	.-8      	; 0x3fcce <boot_loader+0x1cce>
   3fcd6:	a2 5a       	subi	r26, 0xA2	; 162
   3fcd8:	bd 4f       	sbci	r27, 0xFD	; 253
   3fcda:	80 91 30 87 	lds	r24, 0x8730
   3fcde:	90 91 31 87 	lds	r25, 0x8731
   3fce2:	11 96       	adiw	r26, 0x01	; 1
   3fce4:	9c 93       	st	X, r25
   3fce6:	8e 93       	st	-X, r24
   3fce8:	ae 55       	subi	r26, 0x5E	; 94
   3fcea:	b2 40       	sbci	r27, 0x02	; 2
   3fcec:	b0 93 31 87 	sts	0x8731, r27
   3fcf0:	a0 93 30 87 	sts	0x8730, r26
   3fcf4:	6f bf       	out	0x3f, r22	; 63
   3fcf6:	df 91       	pop	r29
   3fcf8:	cf 91       	pop	r28
   3fcfa:	08 95       	ret
   3fcfc:	20 97       	sbiw	r28, 0x00	; 0
   3fcfe:	61 f6       	brne	.-104    	; 0x3fc98 <boot_loader+0x1c98>
   3fd00:	d7 cf       	rjmp	.-82     	; 0x3fcb0 <boot_loader+0x1cb0>
   3fd02:	df 92       	push	r13
   3fd04:	ef 92       	push	r14
   3fd06:	ff 92       	push	r15
   3fd08:	0f 93       	push	r16
   3fd0a:	1f 93       	push	r17
   3fd0c:	cf 93       	push	r28
   3fd0e:	df 93       	push	r29
   3fd10:	8c 01       	movw	r16, r24
   3fd12:	7b 01       	movw	r14, r22
   3fd14:	0f 94 a8 fc 	call	0x3f950	; 0x3f950 <boot_loader+0x1950>
   3fd18:	9b 01       	movw	r18, r22
   3fd1a:	ac 01       	movw	r20, r24
   3fd1c:	df b6       	in	r13, 0x3f	; 63
   3fd1e:	f8 94       	cli
   3fd20:	e0 91 32 87 	lds	r30, 0x8732
   3fd24:	f0 91 33 87 	lds	r31, 0x8733
   3fd28:	30 97       	sbiw	r30, 0x00	; 0
   3fd2a:	09 f4       	brne	.+2      	; 0x3fd2e <boot_loader+0x1d2e>
   3fd2c:	70 c0       	rjmp	.+224    	; 0x3fe0e <boot_loader+0x1e0e>
   3fd2e:	e4 5a       	subi	r30, 0xA4	; 164
   3fd30:	fd 4f       	sbci	r31, 0xFD	; 253
   3fd32:	80 81       	ld	r24, Z
   3fd34:	ec 55       	subi	r30, 0x5C	; 92
   3fd36:	f2 40       	sbci	r31, 0x02	; 2
   3fd38:	88 23       	and	r24, r24
   3fd3a:	09 f0       	breq	.+2      	; 0x3fd3e <boot_loader+0x1d3e>
   3fd3c:	68 c0       	rjmp	.+208    	; 0x3fe0e <boot_loader+0x1e0e>
   3fd3e:	c0 91 34 87 	lds	r28, 0x8734
   3fd42:	d0 91 35 87 	lds	r29, 0x8735
   3fd46:	20 97       	sbiw	r28, 0x00	; 0
   3fd48:	09 f4       	brne	.+2      	; 0x3fd4c <boot_loader+0x1d4c>
   3fd4a:	4c c0       	rjmp	.+152    	; 0x3fde4 <boot_loader+0x1de4>
   3fd4c:	ce 17       	cp	r28, r30
   3fd4e:	df 07       	cpc	r29, r31
   3fd50:	09 f0       	breq	.+2      	; 0x3fd54 <boot_loader+0x1d54>
   3fd52:	48 c0       	rjmp	.+144    	; 0x3fde4 <boot_loader+0x1de4>
   3fd54:	c8 5a       	subi	r28, 0xA8	; 168
   3fd56:	dd 4f       	sbci	r29, 0xFD	; 253
   3fd58:	68 81       	ld	r22, Y
   3fd5a:	79 81       	ldd	r23, Y+1	; 0x01
   3fd5c:	c8 55       	subi	r28, 0x58	; 88
   3fd5e:	d2 40       	sbci	r29, 0x02	; 2
   3fd60:	80 91 0a 80 	lds	r24, 0x800A
   3fd64:	90 91 0b 80 	lds	r25, 0x800B
   3fd68:	86 17       	cp	r24, r22
   3fd6a:	97 07       	cpc	r25, r23
   3fd6c:	b1 f5       	brne	.+108    	; 0x3fdda <boot_loader+0x1dda>
   3fd6e:	80 91 0c 80 	lds	r24, 0x800C
   3fd72:	90 91 0d 80 	lds	r25, 0x800D
   3fd76:	a0 91 0e 80 	lds	r26, 0x800E
   3fd7a:	b0 91 0f 80 	lds	r27, 0x800F
   3fd7e:	28 1b       	sub	r18, r24
   3fd80:	39 0b       	sbc	r19, r25
   3fd82:	4a 0b       	sbc	r20, r26
   3fd84:	5b 0b       	sbc	r21, r27
   3fd86:	24 36       	cpi	r18, 0x64	; 100
   3fd88:	31 05       	cpc	r19, r1
   3fd8a:	41 05       	cpc	r20, r1
   3fd8c:	51 05       	cpc	r21, r1
   3fd8e:	08 f4       	brcc	.+2      	; 0x3fd92 <boot_loader+0x1d92>
   3fd90:	42 c0       	rjmp	.+132    	; 0x3fe16 <boot_loader+0x1e16>
   3fd92:	c2 5a       	subi	r28, 0xA2	; 162
   3fd94:	dd 4f       	sbci	r29, 0xFD	; 253
   3fd96:	88 81       	ld	r24, Y
   3fd98:	99 81       	ldd	r25, Y+1	; 0x01
   3fd9a:	ce 55       	subi	r28, 0x5E	; 94
   3fd9c:	d2 40       	sbci	r29, 0x02	; 2
   3fd9e:	90 93 33 87 	sts	0x8733, r25
   3fda2:	80 93 32 87 	sts	0x8732, r24
   3fda6:	80 e6       	ldi	r24, 0x60	; 96
   3fda8:	92 e0       	ldi	r25, 0x02	; 2
   3fdaa:	de 01       	movw	r26, r28
   3fdac:	fc 01       	movw	r30, r24
   3fdae:	1d 92       	st	X+, r1
   3fdb0:	31 97       	sbiw	r30, 0x01	; 1
   3fdb2:	e9 f7       	brne	.-6      	; 0x3fdae <boot_loader+0x1dae>
   3fdb4:	e0 91 34 87 	lds	r30, 0x8734
   3fdb8:	f0 91 35 87 	lds	r31, 0x8735
   3fdbc:	e2 5a       	subi	r30, 0xA2	; 162
   3fdbe:	fd 4f       	sbci	r31, 0xFD	; 253
   3fdc0:	80 91 30 87 	lds	r24, 0x8730
   3fdc4:	90 91 31 87 	lds	r25, 0x8731
   3fdc8:	91 83       	std	Z+1, r25	; 0x01
   3fdca:	80 83       	st	Z, r24
   3fdcc:	ee 55       	subi	r30, 0x5E	; 94
   3fdce:	f2 40       	sbci	r31, 0x02	; 2
   3fdd0:	f0 93 31 87 	sts	0x8731, r31
   3fdd4:	e0 93 30 87 	sts	0x8730, r30
   3fdd8:	1a c0       	rjmp	.+52     	; 0x3fe0e <boot_loader+0x1e0e>
   3fdda:	70 93 0b 80 	sts	0x800B, r23
   3fdde:	60 93 0a 80 	sts	0x800A, r22
   3fde2:	0c c0       	rjmp	.+24     	; 0x3fdfc <boot_loader+0x1dfc>
   3fde4:	f0 93 35 87 	sts	0x8735, r31
   3fde8:	e0 93 34 87 	sts	0x8734, r30
   3fdec:	e8 5a       	subi	r30, 0xA8	; 168
   3fdee:	fd 4f       	sbci	r31, 0xFD	; 253
   3fdf0:	80 81       	ld	r24, Z
   3fdf2:	91 81       	ldd	r25, Z+1	; 0x01
   3fdf4:	90 93 0b 80 	sts	0x800B, r25
   3fdf8:	80 93 0a 80 	sts	0x800A, r24
   3fdfc:	20 93 0c 80 	sts	0x800C, r18
   3fe00:	30 93 0d 80 	sts	0x800D, r19
   3fe04:	40 93 0e 80 	sts	0x800E, r20
   3fe08:	50 93 0f 80 	sts	0x800F, r21
   3fe0c:	04 c0       	rjmp	.+8      	; 0x3fe16 <boot_loader+0x1e16>
   3fe0e:	10 92 35 87 	sts	0x8735, r1
   3fe12:	10 92 34 87 	sts	0x8734, r1
   3fe16:	df be       	out	0x3f, r13	; 63
   3fe18:	4f b7       	in	r20, 0x3f	; 63
   3fe1a:	f8 94       	cli
   3fe1c:	80 91 32 87 	lds	r24, 0x8732
   3fe20:	90 91 33 87 	lds	r25, 0x8733
   3fe24:	00 97       	sbiw	r24, 0x00	; 0
   3fe26:	b1 f0       	breq	.+44     	; 0x3fe54 <boot_loader+0x1e54>
   3fe28:	fc 01       	movw	r30, r24
   3fe2a:	e2 5a       	subi	r30, 0xA2	; 162
   3fe2c:	fd 4f       	sbci	r31, 0xFD	; 253
   3fe2e:	9c 01       	movw	r18, r24
   3fe30:	80 81       	ld	r24, Z
   3fe32:	91 81       	ldd	r25, Z+1	; 0x01
   3fe34:	00 97       	sbiw	r24, 0x00	; 0
   3fe36:	c1 f7       	brne	.-16     	; 0x3fe28 <boot_loader+0x1e28>
   3fe38:	f9 01       	movw	r30, r18
   3fe3a:	d8 01       	movw	r26, r16
   3fe3c:	2d 93       	st	X+, r18
   3fe3e:	3c 93       	st	X, r19
   3fe40:	e8 5a       	subi	r30, 0xA8	; 168
   3fe42:	fd 4f       	sbci	r31, 0xFD	; 253
   3fe44:	80 81       	ld	r24, Z
   3fe46:	91 81       	ldd	r25, Z+1	; 0x01
   3fe48:	d7 01       	movw	r26, r14
   3fe4a:	8d 93       	st	X+, r24
   3fe4c:	9c 93       	st	X, r25
   3fe4e:	34 96       	adiw	r30, 0x04	; 4
   3fe50:	80 81       	ld	r24, Z
   3fe52:	07 c0       	rjmp	.+14     	; 0x3fe62 <boot_loader+0x1e62>
   3fe54:	f8 01       	movw	r30, r16
   3fe56:	11 82       	std	Z+1, r1	; 0x01
   3fe58:	10 82       	st	Z, r1
   3fe5a:	d7 01       	movw	r26, r14
   3fe5c:	1d 92       	st	X+, r1
   3fe5e:	1c 92       	st	X, r1
   3fe60:	80 e0       	ldi	r24, 0x00	; 0
   3fe62:	4f bf       	out	0x3f, r20	; 63
   3fe64:	df 91       	pop	r29
   3fe66:	cf 91       	pop	r28
   3fe68:	1f 91       	pop	r17
   3fe6a:	0f 91       	pop	r16
   3fe6c:	ff 90       	pop	r15
   3fe6e:	ef 90       	pop	r14
   3fe70:	df 90       	pop	r13
   3fe72:	08 95       	ret
   3fe74:	fb 01       	movw	r30, r22
   3fe76:	dc 01       	movw	r26, r24
   3fe78:	04 c0       	rjmp	.+8      	; 0x3fe82 <boot_loader+0x1e82>
   3fe7a:	8d 91       	ld	r24, X+
   3fe7c:	01 90       	ld	r0, Z+
   3fe7e:	80 19       	sub	r24, r0
   3fe80:	21 f4       	brne	.+8      	; 0x3fe8a <boot_loader+0x1e8a>
   3fe82:	41 50       	subi	r20, 0x01	; 1
   3fe84:	50 40       	sbci	r21, 0x00	; 0
   3fe86:	c8 f7       	brcc	.-14     	; 0x3fe7a <boot_loader+0x1e7a>
   3fe88:	88 1b       	sub	r24, r24
   3fe8a:	99 0b       	sbc	r25, r25
   3fe8c:	08 95       	ret
   3fe8e:	fb 01       	movw	r30, r22
   3fe90:	dc 01       	movw	r26, r24
   3fe92:	02 c0       	rjmp	.+4      	; 0x3fe98 <boot_loader+0x1e98>
   3fe94:	01 90       	ld	r0, Z+
   3fe96:	0d 92       	st	X+, r0
   3fe98:	41 50       	subi	r20, 0x01	; 1
   3fe9a:	50 40       	sbci	r21, 0x00	; 0
   3fe9c:	d8 f7       	brcc	.-10     	; 0x3fe94 <boot_loader+0x1e94>
   3fe9e:	08 95       	ret
   3fea0:	dc 01       	movw	r26, r24
   3fea2:	01 c0       	rjmp	.+2      	; 0x3fea6 <boot_loader+0x1ea6>
   3fea4:	6d 93       	st	X+, r22
   3fea6:	41 50       	subi	r20, 0x01	; 1
   3fea8:	50 40       	sbci	r21, 0x00	; 0
   3feaa:	e0 f7       	brcc	.-8      	; 0x3fea4 <boot_loader+0x1ea4>
   3feac:	08 95       	ret
   3feae:	fb 01       	movw	r30, r22
   3feb0:	dc 01       	movw	r26, r24
   3feb2:	01 90       	ld	r0, Z+
   3feb4:	0d 92       	st	X+, r0
   3feb6:	00 20       	and	r0, r0
   3feb8:	e1 f7       	brne	.-8      	; 0x3feb2 <boot_loader+0x1eb2>
   3feba:	08 95       	ret
   3febc:	fb 01       	movw	r30, r22
   3febe:	dc 01       	movw	r26, r24
   3fec0:	41 50       	subi	r20, 0x01	; 1
   3fec2:	50 40       	sbci	r21, 0x00	; 0
   3fec4:	30 f0       	brcs	.+12     	; 0x3fed2 <boot_loader+0x1ed2>
   3fec6:	8d 91       	ld	r24, X+
   3fec8:	01 90       	ld	r0, Z+
   3feca:	80 19       	sub	r24, r0
   3fecc:	19 f4       	brne	.+6      	; 0x3fed4 <boot_loader+0x1ed4>
   3fece:	00 20       	and	r0, r0
   3fed0:	b9 f7       	brne	.-18     	; 0x3fec0 <boot_loader+0x1ec0>
   3fed2:	88 1b       	sub	r24, r24
   3fed4:	99 0b       	sbc	r25, r25
   3fed6:	08 95       	ret
   3fed8:	fc 01       	movw	r30, r24
   3feda:	61 50       	subi	r22, 0x01	; 1
   3fedc:	70 40       	sbci	r23, 0x00	; 0
   3fede:	01 90       	ld	r0, Z+
   3fee0:	01 10       	cpse	r0, r1
   3fee2:	d8 f7       	brcc	.-10     	; 0x3feda <boot_loader+0x1eda>
   3fee4:	80 95       	com	r24
   3fee6:	90 95       	com	r25
   3fee8:	8e 0f       	add	r24, r30
   3feea:	9f 1f       	adc	r25, r31
   3feec:	08 95       	ret
   3feee:	f8 94       	cli
   3fef0:	ff cf       	rjmp	.-2      	; 0x3fef0 <boot_loader+0x1ef0>
   3fef2:	24 4e       	sbci	r18, 0xE4	; 228
   3fef4:	45 57       	subi	r20, 0x75	; 117
   3fef6:	50 52       	subi	r21, 0x20	; 32
   3fef8:	4f 47       	sbci	r20, 0x7F	; 127
   3fefa:	00 24       	eor	r0, r0
   3fefc:	44 45       	sbci	r20, 0x54	; 84
   3fefe:	46 41       	sbci	r20, 0x16	; 22
   3ff00:	55 4c       	sbci	r21, 0xC5	; 197
   3ff02:	54 00       	.word	0x0054	; ????
	...
   3fffc:	01 00       	.word	0x0001	; ????
   3fffe:	01 00       	.word	0x0001	; ????
