Subversion Repositories svnkaklik

Rev

Rev 410 | Blame | Compare with Previous | Last modification | View Log | Download


AVRcam.elf:     file format elf32-avr

Sections:
Idx Name          Size      VMA       LMA       File off  Algn
  0 .noinit       00000030  00800300  00800300  0000119a  2**0
                  ALLOC
  1 .bss          00000274  00800070  00800070  0000119a  2**0
                  ALLOC
  2 .data         00000010  00800060  000010d6  0000118a  2**0
                  CONTENTS, ALLOC, LOAD, DATA
  3 .text         000010d6  00000000  00000000  000000b4  2**1
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
  4 .stab         00003f9c  00000000  00000000  0000119c  2**2
                  CONTENTS, READONLY, DEBUGGING
  5 .stabstr      000017b7  00000000  00000000  00005138  2**0
                  CONTENTS, READONLY, DEBUGGING
Disassembly of section .text:

00000000 <__vectors>:
       0:       63 c0           rjmp    .+198           ; 0xc8 <__init>
       2:       11 c8           rjmp    .-4062          ; 0xfffff026 <__eeprom_end+0xff7ef026>
       4:       11 c8           rjmp    .-4062          ; 0xfffff028 <__eeprom_end+0xff7ef028>
       6:       7a c0           rjmp    .+244           ; 0xfc <__bad_interrupt>
       8:       79 c0           rjmp    .+242           ; 0xfc <__bad_interrupt>
       a:       78 c0           rjmp    .+240           ; 0xfc <__bad_interrupt>
       c:       77 c0           rjmp    .+238           ; 0xfc <__bad_interrupt>
       e:       76 c0           rjmp    .+236           ; 0xfc <__bad_interrupt>
      10:       0c c8           rjmp    .-4072          ; 0xfffff02a <__eeprom_end+0xff7ef02a>
      12:       74 c0           rjmp    .+232           ; 0xfc <__bad_interrupt>
      14:       73 c0           rjmp    .+230           ; 0xfc <__bad_interrupt>
      16:       af c5           rjmp    .+2910          ; 0xb76 <__vector_11>
      18:       71 c0           rjmp    .+226           ; 0xfc <__bad_interrupt>
      1a:       70 c0           rjmp    .+224           ; 0xfc <__bad_interrupt>
      1c:       6f c0           rjmp    .+222           ; 0xfc <__bad_interrupt>
      1e:       6e c0           rjmp    .+220           ; 0xfc <__bad_interrupt>
      20:       6d c0           rjmp    .+218           ; 0xfc <__bad_interrupt>
      22:       14 c6           rjmp    .+3112          ; 0xc4c <__vector_17>
      24:       6b c0           rjmp    .+214           ; 0xfc <__bad_interrupt>

00000026 <__ctors_end>:
      26:       2e c6           rjmp    .+3164          ; 0xc84 <__vector_17+0x38>
      28:       c1 c6           rjmp    .+3458          ; 0xdac <__vector_17+0x160>
      2a:       c0 c6           rjmp    .+3456          ; 0xdac <__vector_17+0x160>
      2c:       bf c6           rjmp    .+3454          ; 0xdac <__vector_17+0x160>
      2e:       be c6           rjmp    .+3452          ; 0xdac <__vector_17+0x160>
      30:       bd c6           rjmp    .+3450          ; 0xdac <__vector_17+0x160>
      32:       bc c6           rjmp    .+3448          ; 0xdac <__vector_17+0x160>
      34:       bb c6           rjmp    .+3446          ; 0xdac <__vector_17+0x160>
      36:       26 c6           rjmp    .+3148          ; 0xc84 <__vector_17+0x38>
      38:       b9 c6           rjmp    .+3442          ; 0xdac <__vector_17+0x160>
      3a:       b8 c6           rjmp    .+3440          ; 0xdac <__vector_17+0x160>
      3c:       b7 c6           rjmp    .+3438          ; 0xdac <__vector_17+0x160>
      3e:       b6 c6           rjmp    .+3436          ; 0xdac <__vector_17+0x160>
      40:       b5 c6           rjmp    .+3434          ; 0xdac <__vector_17+0x160>
      42:       b4 c6           rjmp    .+3432          ; 0xdac <__vector_17+0x160>
      44:       b3 c6           rjmp    .+3430          ; 0xdac <__vector_17+0x160>
      46:       36 c6           rjmp    .+3180          ; 0xcb4 <__vector_17+0x68>
      48:       b1 c6           rjmp    .+3426          ; 0xdac <__vector_17+0x160>
      4a:       b0 c6           rjmp    .+3424          ; 0xdac <__vector_17+0x160>
      4c:       af c6           rjmp    .+3422          ; 0xdac <__vector_17+0x160>
      4e:       ae c6           rjmp    .+3420          ; 0xdac <__vector_17+0x160>
      50:       ad c6           rjmp    .+3418          ; 0xdac <__vector_17+0x160>
      52:       ac c6           rjmp    .+3416          ; 0xdac <__vector_17+0x160>
      54:       ab c6           rjmp    .+3414          ; 0xdac <__vector_17+0x160>
      56:       3e c6           rjmp    .+3196          ; 0xcd4 <__vector_17+0x88>
      58:       a9 c6           rjmp    .+3410          ; 0xdac <__vector_17+0x160>
      5a:       a8 c6           rjmp    .+3408          ; 0xdac <__vector_17+0x160>
      5c:       a7 c6           rjmp    .+3406          ; 0xdac <__vector_17+0x160>
      5e:       a6 c6           rjmp    .+3404          ; 0xdac <__vector_17+0x160>
      60:       a5 c6           rjmp    .+3402          ; 0xdac <__vector_17+0x160>
      62:       a4 c6           rjmp    .+3400          ; 0xdac <__vector_17+0x160>
      64:       a3 c6           rjmp    .+3398          ; 0xdac <__vector_17+0x160>
      66:       3f c6           rjmp    .+3198          ; 0xce6 <__vector_17+0x9a>
      68:       a1 c6           rjmp    .+3394          ; 0xdac <__vector_17+0x160>
      6a:       a0 c6           rjmp    .+3392          ; 0xdac <__vector_17+0x160>
      6c:       9f c6           rjmp    .+3390          ; 0xdac <__vector_17+0x160>
      6e:       9e c6           rjmp    .+3388          ; 0xdac <__vector_17+0x160>
      70:       9d c6           rjmp    .+3386          ; 0xdac <__vector_17+0x160>
      72:       9c c6           rjmp    .+3384          ; 0xdac <__vector_17+0x160>
      74:       9b c6           rjmp    .+3382          ; 0xdac <__vector_17+0x160>
      76:       57 c6           rjmp    .+3246          ; 0xd26 <__vector_17+0xda>
      78:       99 c6           rjmp    .+3378          ; 0xdac <__vector_17+0x160>
      7a:       98 c6           rjmp    .+3376          ; 0xdac <__vector_17+0x160>
      7c:       97 c6           rjmp    .+3374          ; 0xdac <__vector_17+0x160>
      7e:       96 c6           rjmp    .+3372          ; 0xdac <__vector_17+0x160>
      80:       95 c6           rjmp    .+3370          ; 0xdac <__vector_17+0x160>
      82:       94 c6           rjmp    .+3368          ; 0xdac <__vector_17+0x160>
      84:       93 c6           rjmp    .+3366          ; 0xdac <__vector_17+0x160>
      86:       92 c6           rjmp    .+3364          ; 0xdac <__vector_17+0x160>
      88:       91 c6           rjmp    .+3362          ; 0xdac <__vector_17+0x160>
      8a:       90 c6           rjmp    .+3360          ; 0xdac <__vector_17+0x160>
      8c:       8f c6           rjmp    .+3358          ; 0xdac <__vector_17+0x160>
      8e:       8e c6           rjmp    .+3356          ; 0xdac <__vector_17+0x160>
      90:       8d c6           rjmp    .+3354          ; 0xdac <__vector_17+0x160>
      92:       8c c6           rjmp    .+3352          ; 0xdac <__vector_17+0x160>
      94:       8b c6           rjmp    .+3350          ; 0xdac <__vector_17+0x160>
      96:       50 c6           rjmp    .+3232          ; 0xd38 <__vector_17+0xec>
      98:       89 c6           rjmp    .+3346          ; 0xdac <__vector_17+0x160>
      9a:       88 c6           rjmp    .+3344          ; 0xdac <__vector_17+0x160>
      9c:       87 c6           rjmp    .+3342          ; 0xdac <__vector_17+0x160>
      9e:       86 c6           rjmp    .+3340          ; 0xdac <__vector_17+0x160>
      a0:       85 c6           rjmp    .+3338          ; 0xdac <__vector_17+0x160>
      a2:       84 c6           rjmp    .+3336          ; 0xdac <__vector_17+0x160>
      a4:       83 c6           rjmp    .+3334          ; 0xdac <__vector_17+0x160>
      a6:       16 c6           rjmp    .+3116          ; 0xcd4 <__vector_17+0x88>
      a8:       81 c6           rjmp    .+3330          ; 0xdac <__vector_17+0x160>
      aa:       80 c6           rjmp    .+3328          ; 0xdac <__vector_17+0x160>
      ac:       7f c6           rjmp    .+3326          ; 0xdac <__vector_17+0x160>
      ae:       7e c6           rjmp    .+3324          ; 0xdac <__vector_17+0x160>
      b0:       7d c6           rjmp    .+3322          ; 0xdac <__vector_17+0x160>
      b2:       7c c6           rjmp    .+3320          ; 0xdac <__vector_17+0x160>
      b4:       7b c6           rjmp    .+3318          ; 0xdac <__vector_17+0x160>
      b6:       51 c6           rjmp    .+3234          ; 0xd5a <__vector_17+0x10e>
      b8:       79 c6           rjmp    .+3314          ; 0xdac <__vector_17+0x160>
      ba:       78 c6           rjmp    .+3312          ; 0xdac <__vector_17+0x160>
      bc:       77 c6           rjmp    .+3310          ; 0xdac <__vector_17+0x160>
      be:       76 c6           rjmp    .+3308          ; 0xdac <__vector_17+0x160>
      c0:       75 c6           rjmp    .+3306          ; 0xdac <__vector_17+0x160>
      c2:       74 c6           rjmp    .+3304          ; 0xdac <__vector_17+0x160>
      c4:       73 c6           rjmp    .+3302          ; 0xdac <__vector_17+0x160>
      c6:       64 c6           rjmp    .+3272          ; 0xd90 <__vector_17+0x144>

000000c8 <__init>:
      c8:       11 24           eor     r1, r1
      ca:       1f be           out     0x3f, r1        ; 63
      cc:       cf e5           ldi     r28, 0x5F       ; 95
      ce:       d4 e0           ldi     r29, 0x04       ; 4
      d0:       de bf           out     0x3e, r29       ; 62
      d2:       cd bf           out     0x3d, r28       ; 61

000000d4 <__do_copy_data>:
      d4:       10 e0           ldi     r17, 0x00       ; 0
      d6:       a0 e6           ldi     r26, 0x60       ; 96
      d8:       b0 e0           ldi     r27, 0x00       ; 0
      da:       e6 ed           ldi     r30, 0xD6       ; 214
      dc:       f0 e1           ldi     r31, 0x10       ; 16
      de:       02 c0           rjmp    .+4             ; 0xe4 <.do_copy_data_start>

000000e0 <.do_copy_data_loop>:
      e0:       05 90           lpm     r0, Z+
      e2:       0d 92           st      X+, r0

000000e4 <.do_copy_data_start>:
      e4:       a0 37           cpi     r26, 0x70       ; 112
      e6:       b1 07           cpc     r27, r17
      e8:       d9 f7           brne    .-10            ; 0xe0 <.do_copy_data_loop>

000000ea <__do_clear_bss>:
      ea:       12 e0           ldi     r17, 0x02       ; 2
      ec:       a0 e7           ldi     r26, 0x70       ; 112
      ee:       b0 e0           ldi     r27, 0x00       ; 0
      f0:       01 c0           rjmp    .+2             ; 0xf4 <.do_clear_bss_start>

000000f2 <.do_clear_bss_loop>:
      f2:       1d 92           st      X+, r1

000000f4 <.do_clear_bss_start>:
      f4:       a4 3e           cpi     r26, 0xE4       ; 228
      f6:       b1 07           cpc     r27, r17
      f8:       e1 f7           brne    .-8             ; 0xf2 <.do_clear_bss_loop>
      fa:       30 c0           rjmp    .+96            ; 0x15c <main>

000000fc <__bad_interrupt>:
      fc:       9d c7           rjmp    .+3898          ; 0x1038 <__vector_default>

000000fe <CamInt_resetCam>:
    output the clock signal.  Thus, if we reset the cam, the
    AVR has no clock, and thus doesn't run...
***********************************************************/    
void CamInt_resetCam(void)
{
      fe:       08 95           ret

00000100 <CamInt_init>:
     100:       8f 9a           sbi     0x11, 7 ; 17
     102:       8f 9a           sbi     0x11, 7 ; 17
     104:       8a 98           cbi     0x11, 2 ; 17
     106:       97 98           cbi     0x12, 7 ; 18
     108:       87 b3           in      r24, 0x17       ; 23
     10a:       80 7f           andi    r24, 0xF0       ; 240
     10c:       87 bb           out     0x17, r24       ; 23
     10e:       87 b3           in      r24, 0x17       ; 23
     110:       80 6f           ori     r24, 0xF0       ; 240
     112:       87 bb           out     0x17, r24       ; 23
     114:       84 b3           in      r24, 0x14       ; 20
     116:       80 7f           andi    r24, 0xF0       ; 240
     118:       84 bb           out     0x14, r24       ; 20
     11a:       8e b5           in      r24, 0x2e       ; 46
     11c:       88 7f           andi    r24, 0xF8       ; 248
     11e:       8e bd           out     0x2e, r24       ; 46
     120:       85 b7           in      r24, 0x35       ; 53
     122:       8c 60           ori     r24, 0x0C       ; 12
     124:       85 bf           out     0x35, r24       ; 53
     126:       85 b7           in      r24, 0x35       ; 53
     128:       83 60           ori     r24, 0x03       ; 3
     12a:       85 bf           out     0x35, r24       ; 53
     12c:       8b b7           in      r24, 0x3b       ; 59
     12e:       80 64           ori     r24, 0x40       ; 64
     130:       8b bf           out     0x3b, r24       ; 59
     132:       86 e0           ldi     r24, 0x06       ; 6
     134:       83 bf           out     0x33, r24       ; 51
     136:       85 b7           in      r24, 0x35       ; 53
     138:       8f 78           andi    r24, 0x8F       ; 143
     13a:       85 bf           out     0x35, r24       ; 53
     13c:       85 b7           in      r24, 0x35       ; 53
     13e:       80 68           ori     r24, 0x80       ; 128
     140:       85 bf           out     0x35, r24       ; 53
     142:       e0 e0           ldi     r30, 0x00       ; 0
     144:       f3 e0           ldi     r31, 0x03       ; 3
     146:       80 e3           ldi     r24, 0x30       ; 48
     148:       df 01           movw    r26, r30
     14a:       98 2f           mov     r25, r24
     14c:       1d 92           st      X+, r1
     14e:       9a 95           dec     r25
     150:       e9 f7           brne    .-6             ; 0x14c <CamInt_init+0x4c>
              /* Needed in order to truncate to 8 bit.  */
              uint8_t len;
              len = (uint8_t) n; 

              __asm__ __volatile__ (
     152:       a1 e0           ldi     r26, 0x01       ; 1
     154:       b0 e0           ldi     r27, 0x00       ; 0
     156:       18 2e           mov     r1, r24
     158:       ac d7           rcall   .+3928          ; 0x10b2 <__eeprom_read_block_1C1D1E>
     15a:       08 95           ret

0000015c <main>:
        Inputs:  none
        Outputs: int
***********************************************************/    
int main(void)
{
     15c:       cf e5           ldi     r28, 0x5F       ; 95
     15e:       d4 e0           ldi     r29, 0x04       ; 4
     160:       de bf           out     0x3e, r29       ; 62
     162:       cd bf           out     0x3d, r28       ; 61
        /* initialize all of the interface modules */
        DebugInt_init();
     164:       db d6           rcall   .+3510          ; 0xf1c <DebugInt_init>
        UartInt_init();
     166:       f9 d4           rcall   .+2546          ; 0xb5a <UartInt_init>
        I2CInt_init();
     168:       30 d5           rcall   .+2656          ; 0xbca <I2CInt_init>
        CamInt_init();
     16a:       ca df           rcall   .-108           ; 0x100 <CamInt_init>
        
        /* initialize the remaining modules that will process
        data...interrupts need to be on for these */
        ENABLE_INTS();
     16c:       78 94           sei
        CamConfig_init(); 
     16e:       8a d6           rcall   .+3348          ; 0xe84 <CamConfig_init>
        UIMgr_init();
     170:       6a d3           rcall   .+1748          ; 0x846 <UIMgr_init>
        FrameMgr_init();
     172:       25 d2           rcall   .+1098          ; 0x5be <FrameMgr_init>
    
        /* provide a short delay for the camera to stabilize before
        we let the executive start up */
        Utility_delay(1000);
     174:       88 ee           ldi     r24, 0xE8       ; 232
     176:       93 e0           ldi     r25, 0x03       ; 3
     178:       96 d6           rcall   .+3372          ; 0xea6 <Utility_delay>
        
        /* the rest of the application will be under the
        control of the Executive.  */
        Exec_run();     
     17a:       11 d0           rcall   .+34            ; 0x19e <Exec_run>
        
        /* this should never be reached */
        return(0);
}
     17c:       80 e0           ldi     r24, 0x00       ; 0
     17e:       90 e0           ldi     r25, 0x00       ; 0
     180:       a9 c7           rjmp    .+3922          ; 0x10d4 <_exit>

00000182 <Exec_writeEventFifo>:
     182:       f8 94           cli
     184:       90 91 70 00     lds     r25, 0x0070
     188:       ec e6           ldi     r30, 0x6C       ; 108
     18a:       f2 e0           ldi     r31, 0x02       ; 2
     18c:       e9 0f           add     r30, r25
     18e:       f1 1d           adc     r31, r1
     190:       80 83           st      Z, r24
     192:       9f 5f           subi    r25, 0xFF       ; 255
     194:       97 70           andi    r25, 0x07       ; 7
     196:       90 93 70 00     sts     0x0070, r25
     19a:       78 94           sei
     19c:       08 95           ret

0000019e <Exec_run>:
     19e:       cf 93           push    r28
     1a0:       df 93           push    r29
     1a2:       cc e6           ldi     r28, 0x6C       ; 108
     1a4:       d2 e0           ldi     r29, 0x02       ; 2
     1a6:       80 91 72 00     lds     r24, 0x0072
     1aa:       88 23           and     r24, r24
     1ac:       99 f0           breq    .+38            ; 0x1d4 <Exec_run+0x36>
     1ae:       80 ff           sbrs    r24, 0
     1b0:       07 c0           rjmp    .+14            ; 0x1c0 <Exec_run+0x22>
     1b2:       f8 94           cli
     1b4:       8e 7f           andi    r24, 0xFE       ; 254
     1b6:       80 93 72 00     sts     0x0072, r24
     1ba:       78 94           sei
     1bc:       b2 d0           rcall   .+356           ; 0x322 <FrameMgr_processLine>
     1be:       db d2           rcall   .+1462          ; 0x776 <UIMgr_transmitPendingData>
     1c0:       80 91 72 00     lds     r24, 0x0072
     1c4:       81 ff           sbrs    r24, 1
     1c6:       06 c0           rjmp    .+12            ; 0x1d4 <Exec_run+0x36>
     1c8:       f8 94           cli
     1ca:       8d 7f           andi    r24, 0xFD       ; 253
     1cc:       80 93 72 00     sts     0x0072, r24
     1d0:       78 94           sei
     1d2:       fc d1           rcall   .+1016          ; 0x5cc <FrameMgr_acquireLine>
     1d4:       90 91 71 00     lds     r25, 0x0071
     1d8:       80 91 70 00     lds     r24, 0x0070
     1dc:       89 17           cp      r24, r25
     1de:       19 f3           breq    .-58            ; 0x1a6 <Exec_run+0x8>
     1e0:       f8 94           cli
     1e2:       fe 01           movw    r30, r28
     1e4:       e9 0f           add     r30, r25
     1e6:       f1 1d           adc     r31, r1
     1e8:       e0 81           ld      r30, Z
     1ea:       89 2f           mov     r24, r25
     1ec:       8f 5f           subi    r24, 0xFF       ; 255
     1ee:       87 70           andi    r24, 0x07       ; 7
     1f0:       80 93 71 00     sts     0x0071, r24
     1f4:       78 94           sei
     1f6:       e0 31           cpi     r30, 0x10       ; 16
     1f8:       29 f1           breq    .+74            ; 0x244 <Exec_run+0xa6>
     1fa:       e1 31           cpi     r30, 0x11       ; 17
     1fc:       60 f4           brcc    .+24            ; 0x216 <Exec_run+0x78>
     1fe:       e2 30           cpi     r30, 0x02       ; 2
     200:       c1 f0           breq    .+48            ; 0x232 <Exec_run+0x94>
     202:       e3 30           cpi     r30, 0x03       ; 3
     204:       18 f4           brcc    .+6             ; 0x20c <Exec_run+0x6e>
     206:       e1 30           cpi     r30, 0x01       ; 1
     208:       71 f6           brne    .-100           ; 0x1a6 <Exec_run+0x8>
     20a:       2a c0           rjmp    .+84            ; 0x260 <Exec_run+0xc2>
     20c:       e4 30           cpi     r30, 0x04       ; 4
     20e:       29 f1           breq    .+74            ; 0x25a <Exec_run+0xbc>
     210:       e8 30           cpi     r30, 0x08       ; 8
     212:       49 f6           brne    .-110           ; 0x1a6 <Exec_run+0x8>
     214:       1f c0           rjmp    .+62            ; 0x254 <Exec_run+0xb6>
     216:       e0 38           cpi     r30, 0x80       ; 128
     218:       79 f0           breq    .+30            ; 0x238 <Exec_run+0x9a>
     21a:       e1 38           cpi     r30, 0x81       ; 129
     21c:       20 f4           brcc    .+8             ; 0x226 <Exec_run+0x88>
     21e:       e0 32           cpi     r30, 0x20       ; 32
     220:       09 f0           breq    .+2             ; 0x224 <Exec_run+0x86>
     222:       c1 cf           rjmp    .-126           ; 0x1a6 <Exec_run+0x8>
     224:       14 c0           rjmp    .+40            ; 0x24e <Exec_run+0xb0>
     226:       e1 38           cpi     r30, 0x81       ; 129
     228:       51 f0           breq    .+20            ; 0x23e <Exec_run+0xa0>
     22a:       e0 39           cpi     r30, 0x90       ; 144
     22c:       09 f0           breq    .+2             ; 0x230 <Exec_run+0x92>
     22e:       bb cf           rjmp    .-138           ; 0x1a6 <Exec_run+0x8>
     230:       1c c0           rjmp    .+56            ; 0x26a <Exec_run+0xcc>
     232:       82 e0           ldi     r24, 0x02       ; 2
     234:       19 d2           rcall   .+1074          ; 0x668 <FrameMgr_dispatchEvent>
     236:       b7 cf           rjmp    .-146           ; 0x1a6 <Exec_run+0x8>
     238:       80 e8           ldi     r24, 0x80       ; 128
     23a:       16 d2           rcall   .+1068          ; 0x668 <FrameMgr_dispatchEvent>
     23c:       b4 cf           rjmp    .-152           ; 0x1a6 <Exec_run+0x8>
     23e:       81 e8           ldi     r24, 0x81       ; 129
     240:       13 d2           rcall   .+1062          ; 0x668 <FrameMgr_dispatchEvent>
     242:       b1 cf           rjmp    .-158           ; 0x1a6 <Exec_run+0x8>
     244:       80 e1           ldi     r24, 0x10       ; 16
     246:       10 d2           rcall   .+1056          ; 0x668 <FrameMgr_dispatchEvent>
     248:       80 e1           ldi     r24, 0x10       ; 16
     24a:       7a d4           rcall   .+2292          ; 0xb40 <UIMgr_dispatchEvent>
     24c:       ac cf           rjmp    .-168           ; 0x1a6 <Exec_run+0x8>
     24e:       80 e2           ldi     r24, 0x20       ; 32
     250:       0b d2           rcall   .+1046          ; 0x668 <FrameMgr_dispatchEvent>
     252:       a9 cf           rjmp    .-174           ; 0x1a6 <Exec_run+0x8>
     254:       88 e0           ldi     r24, 0x08       ; 8
     256:       08 d2           rcall   .+1040          ; 0x668 <FrameMgr_dispatchEvent>
     258:       a6 cf           rjmp    .-180           ; 0x1a6 <Exec_run+0x8>
     25a:       84 e0           ldi     r24, 0x04       ; 4
     25c:       05 d2           rcall   .+1034          ; 0x668 <FrameMgr_dispatchEvent>
     25e:       a3 cf           rjmp    .-186           ; 0x1a6 <Exec_run+0x8>
     260:       81 e0           ldi     r24, 0x01       ; 1
     262:       6e d4           rcall   .+2268          ; 0xb40 <UIMgr_dispatchEvent>
     264:       81 e0           ldi     r24, 0x01       ; 1
     266:       00 d2           rcall   .+1024          ; 0x668 <FrameMgr_dispatchEvent>
     268:       9e cf           rjmp    .-196           ; 0x1a6 <Exec_run+0x8>
     26a:       80 e9           ldi     r24, 0x90       ; 144
     26c:       69 d4           rcall   .+2258          ; 0xb40 <UIMgr_dispatchEvent>
     26e:       9b cf           rjmp    .-202           ; 0x1a6 <Exec_run+0x8>

00000270 <FrameMgr_processFrame>:
     270:       df 92           push    r13
     272:       ef 92           push    r14
     274:       ff 92           push    r15
     276:       0f 93           push    r16
     278:       1f 93           push    r17
     27a:       cf 93           push    r28
     27c:       df 93           push    r29
     27e:       20 91 60 00     lds     r18, 0x0060
     282:       30 91 61 00     lds     r19, 0x0061
     286:       80 91 73 00     lds     r24, 0x0073
     28a:       88 23           and     r24, r24
     28c:       09 f4           brne    .+2             ; 0x290 <FrameMgr_processFrame+0x20>
     28e:       3f c0           rjmp    .+126           ; 0x30e <FrameMgr_processFrame+0x9e>
     290:       e9 01           movw    r28, r18
     292:       8a e0           ldi     r24, 0x0A       ; 10
     294:       43 d2           rcall   .+1158          ; 0x71c <UIMgr_writeTxFifo>
     296:       80 91 73 00     lds     r24, 0x0073
     29a:       40 d2           rcall   .+1152          ; 0x71c <UIMgr_writeTxFifo>
     29c:       dd 24           eor     r13, r13
     29e:       8f 81           ldd     r24, Y+7        ; 0x07
     2a0:       81 30           cpi     r24, 0x01       ; 1
     2a2:       69 f5           brne    .+90            ; 0x2fe <FrameMgr_processFrame+0x8e>
     2a4:       88 81           ld      r24, Y
     2a6:       80 38           cpi     r24, 0x80       ; 128
     2a8:       e1 f0           breq    .+56            ; 0x2e2 <FrameMgr_processFrame+0x72>
     2aa:       80 34           cpi     r24, 0x40       ; 64
     2ac:       11 f4           brne    .+4             ; 0x2b2 <FrameMgr_processFrame+0x42>
     2ae:       81 e0           ldi     r24, 0x01       ; 1
     2b0:       19 c0           rjmp    .+50            ; 0x2e4 <FrameMgr_processFrame+0x74>
     2b2:       80 32           cpi     r24, 0x20       ; 32
     2b4:       11 f4           brne    .+4             ; 0x2ba <FrameMgr_processFrame+0x4a>
     2b6:       82 e0           ldi     r24, 0x02       ; 2
     2b8:       15 c0           rjmp    .+42            ; 0x2e4 <FrameMgr_processFrame+0x74>
     2ba:       80 31           cpi     r24, 0x10       ; 16
     2bc:       11 f4           brne    .+4             ; 0x2c2 <FrameMgr_processFrame+0x52>
     2be:       83 e0           ldi     r24, 0x03       ; 3
     2c0:       11 c0           rjmp    .+34            ; 0x2e4 <FrameMgr_processFrame+0x74>
     2c2:       88 30           cpi     r24, 0x08       ; 8
     2c4:       11 f4           brne    .+4             ; 0x2ca <FrameMgr_processFrame+0x5a>
     2c6:       84 e0           ldi     r24, 0x04       ; 4
     2c8:       0d c0           rjmp    .+26            ; 0x2e4 <FrameMgr_processFrame+0x74>
     2ca:       84 30           cpi     r24, 0x04       ; 4
     2cc:       11 f4           brne    .+4             ; 0x2d2 <FrameMgr_processFrame+0x62>
     2ce:       85 e0           ldi     r24, 0x05       ; 5
     2d0:       09 c0           rjmp    .+18            ; 0x2e4 <FrameMgr_processFrame+0x74>
     2d2:       82 30           cpi     r24, 0x02       ; 2
     2d4:       11 f4           brne    .+4             ; 0x2da <FrameMgr_processFrame+0x6a>
     2d6:       86 e0           ldi     r24, 0x06       ; 6
     2d8:       05 c0           rjmp    .+10            ; 0x2e4 <FrameMgr_processFrame+0x74>
     2da:       81 30           cpi     r24, 0x01       ; 1
     2dc:       11 f4           brne    .+4             ; 0x2e2 <FrameMgr_processFrame+0x72>
     2de:       87 e0           ldi     r24, 0x07       ; 7
     2e0:       01 c0           rjmp    .+2             ; 0x2e4 <FrameMgr_processFrame+0x74>
     2e2:       80 e0           ldi     r24, 0x00       ; 0
     2e4:       1b 81           ldd     r17, Y+3        ; 0x03
     2e6:       0c 81           ldd     r16, Y+4        ; 0x04
     2e8:       fd 80           ldd     r15, Y+5        ; 0x05
     2ea:       ee 80           ldd     r14, Y+6        ; 0x06
     2ec:       17 d2           rcall   .+1070          ; 0x71c <UIMgr_writeTxFifo>
     2ee:       81 2f           mov     r24, r17
     2f0:       15 d2           rcall   .+1066          ; 0x71c <UIMgr_writeTxFifo>
     2f2:       80 2f           mov     r24, r16
     2f4:       13 d2           rcall   .+1062          ; 0x71c <UIMgr_writeTxFifo>
     2f6:       8f 2d           mov     r24, r15
     2f8:       11 d2           rcall   .+1058          ; 0x71c <UIMgr_writeTxFifo>
     2fa:       8e 2d           mov     r24, r14
     2fc:       0f d2           rcall   .+1054          ; 0x71c <UIMgr_writeTxFifo>
     2fe:       d3 94           inc     r13
     300:       88 e0           ldi     r24, 0x08       ; 8
     302:       d8 16           cp      r13, r24
     304:       11 f0           breq    .+4             ; 0x30a <FrameMgr_processFrame+0x9a>
     306:       28 96           adiw    r28, 0x08       ; 8
     308:       ca cf           rjmp    .-108           ; 0x29e <FrameMgr_processFrame+0x2e>
     30a:       8f ef           ldi     r24, 0xFF       ; 255
     30c:       07 d2           rcall   .+1038          ; 0x71c <UIMgr_writeTxFifo>
     30e:       84 e0           ldi     r24, 0x04       ; 4
     310:       38 df           rcall   .-400           ; 0x182 <Exec_writeEventFifo>
     312:       df 91           pop     r29
     314:       cf 91           pop     r28
     316:       1f 91           pop     r17
     318:       0f 91           pop     r16
     31a:       ff 90           pop     r15
     31c:       ef 90           pop     r14
     31e:       df 90           pop     r13
     320:       08 95           ret

00000322 <FrameMgr_processLine>:
     322:       2f 92           push    r2
     324:       3f 92           push    r3
     326:       4f 92           push    r4
     328:       5f 92           push    r5
     32a:       6f 92           push    r6
     32c:       7f 92           push    r7
     32e:       8f 92           push    r8
     330:       9f 92           push    r9
     332:       bf 92           push    r11
     334:       cf 92           push    r12
     336:       df 92           push    r13
     338:       ef 92           push    r14
     33a:       ff 92           push    r15
     33c:       0f 93           push    r16
     33e:       1f 93           push    r17
     340:       cf 93           push    r28
     342:       df 93           push    r29
     344:       cd b7           in      r28, 0x3d       ; 61
     346:       de b7           in      r29, 0x3e       ; 62
     348:       21 97           sbiw    r28, 0x01       ; 1
     34a:       0f b6           in      r0, 0x3f        ; 63
     34c:       f8 94           cli
     34e:       de bf           out     0x3e, r29       ; 62
     350:       0f be           out     0x3f, r0        ; 63
     352:       cd bf           out     0x3d, r28       ; 61
     354:       40 91 60 00     lds     r20, 0x0060
     358:       50 91 61 00     lds     r21, 0x0061
     35c:       80 91 74 00     lds     r24, 0x0074
     360:       82 30           cpi     r24, 0x02       ; 2
     362:       09 f0           breq    .+2             ; 0x366 <FrameMgr_processLine+0x44>
     364:       5b c0           rjmp    .+182           ; 0x41c <FrameMgr_processLine+0xfa>
     366:       8b e0           ldi     r24, 0x0B       ; 11
     368:       02 d4           rcall   .+2052          ; 0xb6e <UartInt_txByte>
     36a:       80 91 75 00     lds     r24, 0x0075
     36e:       ff d3           rcall   .+2046          ; 0xb6e <UartInt_txByte>
     370:       0c eb           ldi     r16, 0xBC       ; 188
     372:       11 e0           ldi     r17, 0x01       ; 1
     374:       0f 2e           mov     r0, r31
     376:       fc e0           ldi     r31, 0x0C       ; 12
     378:       ef 2e           mov     r14, r31
     37a:       f1 e0           ldi     r31, 0x01       ; 1
     37c:       ff 2e           mov     r15, r31
     37e:       f0 2d           mov     r31, r0
     380:       0f 2e           mov     r0, r31
     382:       fc e6           ldi     r31, 0x6C       ; 108
     384:       cf 2e           mov     r12, r31
     386:       f2 e0           ldi     r31, 0x02       ; 2
     388:       df 2e           mov     r13, r31
     38a:       f0 2d           mov     r31, r0
     38c:       d8 01           movw    r26, r16
     38e:       8c 91           ld      r24, X
     390:       89 83           std     Y+1, r24        ; 0x01
     392:       89 81           ldd     r24, Y+1        ; 0x01
     394:       8f 70           andi    r24, 0x0F       ; 15
     396:       89 83           std     Y+1, r24        ; 0x01
     398:       89 81           ldd     r24, Y+1        ; 0x01
     39a:       82 95           swap    r24
     39c:       80 7f           andi    r24, 0xF0       ; 240
     39e:       89 83           std     Y+1, r24        ; 0x01
     3a0:       99 81           ldd     r25, Y+1        ; 0x01
     3a2:       f7 01           movw    r30, r14
     3a4:       80 81           ld      r24, Z
     3a6:       8f 70           andi    r24, 0x0F       ; 15
     3a8:       89 2b           or      r24, r25
     3aa:       89 83           std     Y+1, r24        ; 0x01
     3ac:       89 81           ldd     r24, Y+1        ; 0x01
     3ae:       df d3           rcall   .+1982          ; 0xb6e <UartInt_txByte>
     3b0:       f7 01           movw    r30, r14
     3b2:       81 81           ldd     r24, Z+1        ; 0x01
     3b4:       89 83           std     Y+1, r24        ; 0x01
     3b6:       89 81           ldd     r24, Y+1        ; 0x01
     3b8:       8f 70           andi    r24, 0x0F       ; 15
     3ba:       89 83           std     Y+1, r24        ; 0x01
     3bc:       89 81           ldd     r24, Y+1        ; 0x01
     3be:       82 95           swap    r24
     3c0:       80 7f           andi    r24, 0xF0       ; 240
     3c2:       89 83           std     Y+1, r24        ; 0x01
     3c4:       99 81           ldd     r25, Y+1        ; 0x01
     3c6:       f8 01           movw    r30, r16
     3c8:       81 81           ldd     r24, Z+1        ; 0x01
     3ca:       8f 70           andi    r24, 0x0F       ; 15
     3cc:       89 2b           or      r24, r25
     3ce:       89 83           std     Y+1, r24        ; 0x01
     3d0:       89 81           ldd     r24, Y+1        ; 0x01
     3d2:       cd d3           rcall   .+1946          ; 0xb6e <UartInt_txByte>
     3d4:       0e 5f           subi    r16, 0xFE       ; 254
     3d6:       1f 4f           sbci    r17, 0xFF       ; 255
     3d8:       82 e0           ldi     r24, 0x02       ; 2
     3da:       90 e0           ldi     r25, 0x00       ; 0
     3dc:       e8 0e           add     r14, r24
     3de:       f9 1e           adc     r15, r25
     3e0:       0c 15           cp      r16, r12
     3e2:       1d 05           cpc     r17, r13
     3e4:       99 f6           brne    .-90            ; 0x38c <FrameMgr_processLine+0x6a>
     3e6:       8f e0           ldi     r24, 0x0F       ; 15
     3e8:       c2 d3           rcall   .+1924          ; 0xb6e <UartInt_txByte>
     3ea:       80 91 75 00     lds     r24, 0x0075
     3ee:       8f 5f           subi    r24, 0xFF       ; 255
     3f0:       80 93 75 00     sts     0x0075, r24
     3f4:       88 34           cpi     r24, 0x48       ; 72
     3f6:       60 f0           brcs    .+24            ; 0x410 <FrameMgr_processLine+0xee>
     3f8:       10 92 75 00     sts     0x0075, r1
     3fc:       10 92 74 00     sts     0x0074, r1
     400:       89 b7           in      r24, 0x39       ; 57
     402:       8b 7f           andi    r24, 0xFB       ; 251
     404:       89 bf           out     0x39, r24       ; 57
     406:       60 e0           ldi     r22, 0x00       ; 0
     408:       81 e1           ldi     r24, 0x11       ; 17
     40a:       f3 d4           rcall   .+2534          ; 0xdf2 <CamConfig_setCamReg>
     40c:       f7 d4           rcall   .+2542          ; 0xdfc <CamConfig_sendFifoCmds>
     40e:       bf c0           rjmp    .+382           ; 0x58e <__stack+0x12f>
     410:       80 91 72 00     lds     r24, 0x0072
     414:       82 60           ori     r24, 0x02       ; 2
     416:       80 93 72 00     sts     0x0072, r24
     41a:       b9 c0           rjmp    .+370           ; 0x58e <__stack+0x12f>
     41c:       81 30           cpi     r24, 0x01       ; 1
     41e:       09 f0           breq    .+2             ; 0x422 <FrameMgr_processLine+0x100>
     420:       b6 c0           rjmp    .+364           ; 0x58e <__stack+0x12f>
     422:       b0 90 76 00     lds     r11, 0x0076
     426:       eb 2c           mov     r14, r11
     428:       ff 24           eor     r15, r15
     42a:       37 01           movw    r6, r14
     42c:       08 94           sec
     42e:       61 08           sbc     r6, r1
     430:       71 08           sbc     r7, r1
     432:       00 91 73 00     lds     r16, 0x0073
     436:       10 e0           ldi     r17, 0x00       ; 0
     438:       60 e0           ldi     r22, 0x00       ; 0
     43a:       71 e0           ldi     r23, 0x01       ; 1
     43c:       0f 2e           mov     r0, r31
     43e:       fc eb           ldi     r31, 0xBC       ; 188
     440:       2f 2e           mov     r2, r31
     442:       f1 e0           ldi     r31, 0x01       ; 1
     444:       3f 2e           mov     r3, r31
     446:       f0 2d           mov     r31, r0
     448:       d1 01           movw    r26, r2
     44a:       3c 91           ld      r19, X
     44c:       17 0f           add     r17, r23
     44e:       f1 01           movw    r30, r2
     450:       71 81           ldd     r23, Z+1        ; 0x01
     452:       82 e0           ldi     r24, 0x02       ; 2
     454:       90 e0           ldi     r25, 0x00       ; 0
     456:       28 0e           add     r2, r24
     458:       39 1e           adc     r3, r25
     45a:       67 0f           add     r22, r23
     45c:       33 23           and     r19, r19
     45e:       09 f4           brne    .+2             ; 0x462 <__stack+0x3>
     460:       57 c0           rjmp    .+174           ; 0x510 <__stack+0xb1>
     462:       74 30           cpi     r23, 0x04       ; 4
     464:       08 f4           brcc    .+2             ; 0x468 <__stack+0x9>
     466:       54 c0           rjmp    .+168           ; 0x510 <__stack+0xb1>
     468:       fa 01           movw    r30, r20
     46a:       20 e0           ldi     r18, 0x00       ; 0
     46c:       80 81           ld      r24, Z
     46e:       83 17           cp      r24, r19
     470:       b1 f5           brne    .+108           ; 0x4de <__stack+0x7f>
     472:       87 81           ldd     r24, Z+7        ; 0x07
     474:       81 30           cpi     r24, 0x01       ; 1
     476:       99 f5           brne    .+102           ; 0x4de <__stack+0x7f>
     478:       0f 2e           mov     r0, r31
     47a:       f6 e0           ldi     r31, 0x06       ; 6
     47c:       cf 2e           mov     r12, r31
     47e:       dd 24           eor     r13, r13
     480:       f0 2d           mov     r31, r0
     482:       ce 0e           add     r12, r30
     484:       df 1e           adc     r13, r31
     486:       86 81           ldd     r24, Z+6        ; 0x06
     488:       99 27           eor     r25, r25
     48a:       86 15           cp      r24, r6
     48c:       97 05           cpc     r25, r7
     48e:       39 f5           brne    .+78            ; 0x4de <__stack+0x7f>
     490:       2f 01           movw    r4, r30
     492:       08 94           sec
     494:       41 1c           adc     r4, r1
     496:       51 1c           adc     r5, r1
     498:       81 81           ldd     r24, Z+1        ; 0x01
     49a:       88 24           eor     r8, r8
     49c:       99 24           eor     r9, r9
     49e:       68 94           set
     4a0:       81 f8           bld     r8, 1
     4a2:       8e 0e           add     r8, r30
     4a4:       9f 1e           adc     r9, r31
     4a6:       92 81           ldd     r25, Z+2        ; 0x02
     4a8:       18 17           cp      r17, r24
     4aa:       10 f0           brcs    .+4             ; 0x4b0 <__stack+0x51>
     4ac:       91 17           cp      r25, r17
     4ae:       40 f4           brcc    .+16            ; 0x4c0 <__stack+0x61>
     4b0:       68 17           cp      r22, r24
     4b2:       10 f0           brcs    .+4             ; 0x4b8 <__stack+0x59>
     4b4:       96 17           cp      r25, r22
     4b6:       20 f4           brcc    .+8             ; 0x4c0 <__stack+0x61>
     4b8:       81 17           cp      r24, r17
     4ba:       88 f0           brcs    .+34            ; 0x4de <__stack+0x7f>
     4bc:       69 17           cp      r22, r25
     4be:       78 f0           brcs    .+30            ; 0x4de <__stack+0x7f>
     4c0:       d2 01           movw    r26, r4
     4c2:       1c 93           st      X, r17
     4c4:       d4 01           movw    r26, r8
     4c6:       6c 93           st      X, r22
     4c8:       83 81           ldd     r24, Z+3        ; 0x03
     4ca:       18 17           cp      r17, r24
     4cc:       08 f4           brcc    .+2             ; 0x4d0 <__stack+0x71>
     4ce:       13 83           std     Z+3, r17        ; 0x03
     4d0:       85 81           ldd     r24, Z+5        ; 0x05
     4d2:       86 17           cp      r24, r22
     4d4:       08 f4           brcc    .+2             ; 0x4d8 <__stack+0x79>
     4d6:       65 83           std     Z+5, r22        ; 0x05
     4d8:       f6 01           movw    r30, r12
     4da:       b0 82           st      Z, r11
     4dc:       19 c0           rjmp    .+50            ; 0x510 <__stack+0xb1>
     4de:       2f 5f           subi    r18, 0xFF       ; 255
     4e0:       28 30           cpi     r18, 0x08       ; 8
     4e2:       09 f4           brne    .+2             ; 0x4e6 <__stack+0x87>
     4e4:       50 c0           rjmp    .+160           ; 0x586 <__stack+0x127>
     4e6:       38 96           adiw    r30, 0x08       ; 8
     4e8:       c1 cf           rjmp    .-126           ; 0x46c <__stack+0xd>
     4ea:       fa 01           movw    r30, r20
     4ec:       90 e0           ldi     r25, 0x00       ; 0
     4ee:       87 81           ldd     r24, Z+7        ; 0x07
     4f0:       88 23           and     r24, r24
     4f2:       21 f0           breq    .+8             ; 0x4fc <__stack+0x9d>
     4f4:       38 96           adiw    r30, 0x08       ; 8
     4f6:       9f 5f           subi    r25, 0xFF       ; 255
     4f8:       98 30           cpi     r25, 0x08       ; 8
     4fa:       c9 f7           brne    .-14            ; 0x4ee <__stack+0x8f>
     4fc:       30 83           st      Z, r19
     4fe:       11 83           std     Z+1, r17        ; 0x01
     500:       62 83           std     Z+2, r22        ; 0x02
     502:       13 83           std     Z+3, r17        ; 0x03
     504:       b4 82           std     Z+4, r11        ; 0x04
     506:       65 83           std     Z+5, r22        ; 0x05
     508:       b6 82           std     Z+6, r11        ; 0x06
     50a:       81 e0           ldi     r24, 0x01       ; 1
     50c:       87 83           std     Z+7, r24        ; 0x07
     50e:       0f 5f           subi    r16, 0xFF       ; 255
     510:       60 3b           cpi     r22, 0xB0       ; 176
     512:       08 f4           brcc    .+2             ; 0x516 <__stack+0xb7>
     514:       99 cf           rjmp    .-206           ; 0x448 <FrameMgr_processLine+0x126>
     516:       00 93 73 00     sts     0x0073, r16
     51a:       c7 01           movw    r24, r14
     51c:       87 70           andi    r24, 0x07       ; 7
     51e:       90 70           andi    r25, 0x00       ; 0
     520:       07 97           sbiw    r24, 0x07       ; 7
     522:       e9 f4           brne    .+58            ; 0x55e <__stack+0xff>
     524:       60 e0           ldi     r22, 0x00       ; 0
     526:       fa 01           movw    r30, r20
     528:       87 81           ldd     r24, Z+7        ; 0x07
     52a:       81 30           cpi     r24, 0x01       ; 1
     52c:       81 f4           brne    .+32            ; 0x54e <__stack+0xef>
     52e:       86 81           ldd     r24, Z+6        ; 0x06
     530:       28 2f           mov     r18, r24
     532:       33 27           eor     r19, r19
     534:       84 81           ldd     r24, Z+4        ; 0x04
     536:       d9 01           movw    r26, r18
     538:       a8 1b           sub     r26, r24
     53a:       b1 09           sbc     r27, r1
     53c:       13 97           sbiw    r26, 0x03       ; 3
     53e:       3c f4           brge    .+14            ; 0x54e <__stack+0xef>
     540:       c7 01           movw    r24, r14
     542:       82 1b           sub     r24, r18
     544:       93 0b           sbc     r25, r19
     546:       03 97           sbiw    r24, 0x03       ; 3
     548:       14 f0           brlt    .+4             ; 0x54e <__stack+0xef>
     54a:       17 82           std     Z+7, r1 ; 0x07
     54c:       01 50           subi    r16, 0x01       ; 1
     54e:       6f 5f           subi    r22, 0xFF       ; 255
     550:       68 30           cpi     r22, 0x08       ; 8
     552:       19 f0           breq    .+6             ; 0x55a <__stack+0xfb>
     554:       48 5f           subi    r20, 0xF8       ; 248
     556:       5f 4f           sbci    r21, 0xFF       ; 255
     558:       e6 cf           rjmp    .-52            ; 0x526 <__stack+0xc7>
     55a:       00 93 73 00     sts     0x0073, r16
     55e:       8b 2d           mov     r24, r11
     560:       8f 5f           subi    r24, 0xFF       ; 255
     562:       80 93 76 00     sts     0x0076, r24
     566:       80 39           cpi     r24, 0x90       ; 144
     568:       41 f4           brne    .+16            ; 0x57a <__stack+0x11b>
     56a:       80 e2           ldi     r24, 0x20       ; 32
     56c:       0a de           rcall   .-1004          ; 0x182 <Exec_writeEventFifo>
     56e:       89 b7           in      r24, 0x39       ; 57
     570:       8b 7f           andi    r24, 0xFB       ; 251
     572:       89 bf           out     0x39, r24       ; 57
     574:       10 92 76 00     sts     0x0076, r1
     578:       0a c0           rjmp    .+20            ; 0x58e <__stack+0x12f>
     57a:       80 91 72 00     lds     r24, 0x0072
     57e:       82 60           ori     r24, 0x02       ; 2
     580:       80 93 72 00     sts     0x0072, r24
     584:       04 c0           rjmp    .+8             ; 0x58e <__stack+0x12f>
     586:       08 30           cpi     r16, 0x08       ; 8
     588:       08 f4           brcc    .+2             ; 0x58c <__stack+0x12d>
     58a:       af cf           rjmp    .-162           ; 0x4ea <__stack+0x8b>
     58c:       c1 cf           rjmp    .-126           ; 0x510 <__stack+0xb1>
     58e:       21 96           adiw    r28, 0x01       ; 1
     590:       0f b6           in      r0, 0x3f        ; 63
     592:       f8 94           cli
     594:       de bf           out     0x3e, r29       ; 62
     596:       0f be           out     0x3f, r0        ; 63
     598:       cd bf           out     0x3d, r28       ; 61
     59a:       df 91           pop     r29
     59c:       cf 91           pop     r28
     59e:       1f 91           pop     r17
     5a0:       0f 91           pop     r16
     5a2:       ff 90           pop     r15
     5a4:       ef 90           pop     r14
     5a6:       df 90           pop     r13
     5a8:       cf 90           pop     r12
     5aa:       bf 90           pop     r11
     5ac:       9f 90           pop     r9
     5ae:       8f 90           pop     r8
     5b0:       7f 90           pop     r7
     5b2:       6f 90           pop     r6
     5b4:       5f 90           pop     r5
     5b6:       4f 90           pop     r4
     5b8:       3f 90           pop     r3
     5ba:       2f 90           pop     r2
     5bc:       08 95           ret

000005be <FrameMgr_init>:
     5be:       80 e4           ldi     r24, 0x40       ; 64
     5c0:       e8 e7           ldi     r30, 0x78       ; 120
     5c2:       f0 e0           ldi     r31, 0x00       ; 0
     5c4:       11 92           st      Z+, r1
     5c6:       8a 95           dec     r24
     5c8:       e9 f7           brne    .-6             ; 0x5c4 <FrameMgr_init+0x6>
     5ca:       08 95           ret

000005cc <FrameMgr_acquireLine>:
     5cc:       80 91 74 00     lds     r24, 0x0074
     5d0:       82 30           cpi     r24, 0x02       ; 2
     5d2:       31 f5           brne    .+76            ; 0x620 <FrameMgr_acquireLine+0x54>
     5d4:       80 91 75 00     lds     r24, 0x0075
     5d8:       98 2f           mov     r25, r24
     5da:       99 0f           add     r25, r25
     5dc:       80 eb           ldi     r24, 0xB0       ; 176
     5de:       ec eb           ldi     r30, 0xBC       ; 188
     5e0:       f1 e0           ldi     r31, 0x01       ; 1
     5e2:       28 2f           mov     r18, r24
     5e4:       11 92           st      Z+, r1
     5e6:       2a 95           dec     r18
     5e8:       e9 f7           brne    .-6             ; 0x5e4 <FrameMgr_acquireLine+0x18>
     5ea:       ec e0           ldi     r30, 0x0C       ; 12
     5ec:       f1 e0           ldi     r31, 0x01       ; 1
     5ee:       11 92           st      Z+, r1
     5f0:       8a 95           dec     r24
     5f2:       e9 f7           brne    .-6             ; 0x5ee <FrameMgr_acquireLine+0x22>
     5f4:       82 9b           sbis    0x10, 2 ; 16
     5f6:       fe cf           rjmp    .-4             ; 0x5f4 <FrameMgr_acquireLine+0x28>
     5f8:       82 9b           sbis    0x10, 2 ; 16
     5fa:       07 c0           rjmp    .+14            ; 0x60a <FrameMgr_acquireLine+0x3e>
     5fc:       fd cf           rjmp    .-6             ; 0x5f8 <FrameMgr_acquireLine+0x2c>
     5fe:       84 9b           sbis    0x10, 4 ; 16
     600:       fe cf           rjmp    .-4             ; 0x5fe <FrameMgr_acquireLine+0x32>
     602:       91 50           subi    r25, 0x01       ; 1
     604:       84 9b           sbis    0x10, 4 ; 16
     606:       04 c0           rjmp    .+8             ; 0x610 <FrameMgr_acquireLine+0x44>
     608:       fd cf           rjmp    .-6             ; 0x604 <FrameMgr_acquireLine+0x38>
     60a:       99 23           and     r25, r25
     60c:       c1 f7           brne    .-16            ; 0x5fe <FrameMgr_acquireLine+0x32>
     60e:       02 c0           rjmp    .+4             ; 0x614 <FrameMgr_acquireLine+0x48>
     610:       99 23           and     r25, r25
     612:       a9 f7           brne    .-22            ; 0x5fe <FrameMgr_acquireLine+0x32>
     614:       6c e0           ldi     r22, 0x0C       ; 12
     616:       71 e0           ldi     r23, 0x01       ; 1
     618:       8c eb           ldi     r24, 0xBC       ; 188
     61a:       91 e0           ldi     r25, 0x01       ; 1
     61c:       e4 d4           rcall   .+2504          ; 0xfe6 <CamIntAsm_acquireDumpLine>
     61e:       08 95           ret
     620:       81 30           cpi     r24, 0x01       ; 1
     622:       39 f4           brne    .+14            ; 0x632 <FrameMgr_acquireLine+0x66>
     624:       84 99           sbic    0x10, 4 ; 16
     626:       fe cf           rjmp    .-4             ; 0x624 <FrameMgr_acquireLine+0x58>
     628:       60 e0           ldi     r22, 0x00       ; 0
     62a:       73 e0           ldi     r23, 0x03       ; 3
     62c:       8c eb           ldi     r24, 0xBC       ; 188
     62e:       91 e0           ldi     r25, 0x01       ; 1
     630:       93 d4           rcall   .+2342          ; 0xf58 <CamIntAsm_acquireTrackingLine>
     632:       08 95           ret

00000634 <FrameMgr_acquireFrame>:
     634:       80 91 74 00     lds     r24, 0x0074
     638:       81 30           cpi     r24, 0x01       ; 1
     63a:       a9 f4           brne    .+42            ; 0x666 <FrameMgr_acquireFrame+0x32>
     63c:       10 92 76 00     sts     0x0076, r1
     640:       80 91 73 00     lds     r24, 0x0073
     644:       80 93 77 00     sts     0x0077, r24
     648:       10 92 73 00     sts     0x0073, r1
     64c:       80 e4           ldi     r24, 0x40       ; 64
     64e:       e8 e7           ldi     r30, 0x78       ; 120
     650:       f0 e0           ldi     r31, 0x00       ; 0
     652:       11 92           st      Z+, r1
     654:       8a 95           dec     r24
     656:       e9 f7           brne    .-6             ; 0x652 <FrameMgr_acquireFrame+0x1e>
     658:       82 9b           sbis    0x10, 2 ; 16
     65a:       fe cf           rjmp    .-4             ; 0x658 <FrameMgr_acquireFrame+0x24>
     65c:       60 e0           ldi     r22, 0x00       ; 0
     65e:       73 e0           ldi     r23, 0x03       ; 3
     660:       8c eb           ldi     r24, 0xBC       ; 188
     662:       91 e0           ldi     r25, 0x01       ; 1
     664:       79 d4           rcall   .+2290          ; 0xf58 <CamIntAsm_acquireTrackingLine>
     666:       08 95           ret

00000668 <FrameMgr_dispatchEvent>:
     668:       84 30           cpi     r24, 0x04       ; 4
     66a:       19 f1           breq    .+70            ; 0x6b2 <FrameMgr_dispatchEvent+0x4a>
     66c:       85 30           cpi     r24, 0x05       ; 5
     66e:       28 f4           brcc    .+10            ; 0x67a <FrameMgr_dispatchEvent+0x12>
     670:       81 30           cpi     r24, 0x01       ; 1
     672:       09 f1           breq    .+66            ; 0x6b6 <FrameMgr_dispatchEvent+0x4e>
     674:       82 30           cpi     r24, 0x02       ; 2
     676:       41 f5           brne    .+80            ; 0x6c8 <FrameMgr_dispatchEvent+0x60>
     678:       07 c0           rjmp    .+14            ; 0x688 <FrameMgr_dispatchEvent+0x20>
     67a:       80 38           cpi     r24, 0x80       ; 128
     67c:       99 f0           breq    .+38            ; 0x6a4 <FrameMgr_dispatchEvent+0x3c>
     67e:       81 38           cpi     r24, 0x81       ; 129
     680:       09 f1           breq    .+66            ; 0x6c4 <FrameMgr_dispatchEvent+0x5c>
     682:       80 32           cpi     r24, 0x20       ; 32
     684:       09 f5           brne    .+66            ; 0x6c8 <FrameMgr_dispatchEvent+0x60>
     686:       13 c0           rjmp    .+38            ; 0x6ae <FrameMgr_dispatchEvent+0x46>
     688:       61 e0           ldi     r22, 0x01       ; 1
     68a:       81 e1           ldi     r24, 0x11       ; 17
     68c:       b2 d3           rcall   .+1892          ; 0xdf2 <CamConfig_setCamReg>
     68e:       b6 d3           rcall   .+1900          ; 0xdfc <CamConfig_sendFifoCmds>
     690:       88 ee           ldi     r24, 0xE8       ; 232
     692:       93 e0           ldi     r25, 0x03       ; 3
     694:       08 d4           rcall   .+2064          ; 0xea6 <Utility_delay>
     696:       10 92 75 00     sts     0x0075, r1
     69a:       82 e0           ldi     r24, 0x02       ; 2
     69c:       80 93 74 00     sts     0x0074, r24
     6a0:       95 df           rcall   .-214           ; 0x5cc <FrameMgr_acquireLine>
     6a2:       08 95           ret
     6a4:       81 e0           ldi     r24, 0x01       ; 1
     6a6:       80 93 74 00     sts     0x0074, r24
     6aa:       c4 df           rcall   .-120           ; 0x634 <FrameMgr_acquireFrame>
     6ac:       08 95           ret
     6ae:       e0 dd           rcall   .-1088          ; 0x270 <FrameMgr_processFrame>
     6b0:       08 95           ret
     6b2:       c0 df           rcall   .-128           ; 0x634 <FrameMgr_acquireFrame>
     6b4:       08 95           ret
     6b6:       80 91 74 00     lds     r24, 0x0074
     6ba:       88 23           and     r24, r24
     6bc:       29 f0           breq    .+10            ; 0x6c8 <FrameMgr_dispatchEvent+0x60>
     6be:       84 e0           ldi     r24, 0x04       ; 4
     6c0:       60 dd           rcall   .-1344          ; 0x182 <Exec_writeEventFifo>
     6c2:       08 95           ret
     6c4:       10 92 74 00     sts     0x0074, r1
     6c8:       08 95           ret

000006ca <UIMgr_writeBufferToTxFifo>:
static unsigned char tokenCount = 0;
static unsigned char tokenBuffer[MAX_TOKEN_COUNT];
static UIMgr_Cmd_t receivedCmd = noCmd;
static unsigned char AVRcamVersion[] = "AVRcam v1.4\r";

/*  Local Function Declaration */
static unsigned char UIMgr_readRxFifo(void);
static unsigned char UIMgr_readTxFifo(void);
static unsigned char UIMgr_readRxFifo(void);
static void UIMgr_sendNck(void);
static void UIMgr_sendAck(void);
static void UIMgr_convertTokenToCmd(void);
static void UIMgr_convertTokenToValue(void);
static void UIMgr_executeCmd(void);

/*  Extern Variables */
unsigned char UIMgr_rxFifo[UI_MGR_RX_FIFO_SIZE];
unsigned char UIMgr_rxFifoHead=0;
unsigned char UIMgr_rxFifoTail=0;

unsigned char UIMgr_txFifo[UI_MGR_TX_FIFO_SIZE];
unsigned char UIMgr_txFifoHead=0;
unsigned char UIMgr_txFifoTail=0;

/*  Definitions */
#define IS_DATA_IN_TX_FIFO() (!(UIMgr_txFifoHead == UIMgr_txFifoTail))
#define IS_DATA_IN_RX_FIFO() (!(UIMgr_rxFifoHead == UIMgr_rxFifoTail))

/* MAX_EEPROM_WRITE_ATTEMPTS limits the number of writes that can be
done to a particular EEPROM cell, so that it can't possible just 
write to the same cell over and over */
#define MAX_EEPROM_WRITE_ATTEMPTS 3

/***********************************************************
        Function Name: UIMgr_init
        Function Description: This function is responsible for
        initializing the UIMgr module.  It sets up the fifo
        used to hold incoming data, etc.
        Inputs:  none 
        Outputs: none
***********************************************************/    
void UIMgr_init(void)
{
        memset(asciiTokenBuffer,0x00,MAX_TOKEN_LENGTH+1);
        memset(tokenBuffer,0x00,MAX_TOKEN_COUNT);
        memset(UIMgr_txFifo,0x00,UI_MGR_TX_FIFO_SIZE);
        memset(UIMgr_rxFifo,0x00,UI_MGR_RX_FIFO_SIZE);
}

/***********************************************************
        Function Name: UIMgr_dispatchEvent
        Function Description: This function is responsible for
        processing events that pertain to the UIMgr.
        Inputs:  event - the generated event
        Outputs: none
***********************************************************/    
void UIMgr_dispatchEvent(unsigned char event)
{
        switch(event)
        {
                case EV_ACQUIRE_LINE_COMPLETE:
                        UIMgr_transmitPendingData();
                        break;
                        
                case EV_SERIAL_DATA_RECEIVED:           
                        UIMgr_processReceivedData();
                        break;
                        
                case EV_SERIAL_DATA_PENDING_TX:
                        UIMgr_flushTxBuffer();
                        break;
        }
}
/***********************************************************
        Function Name: UIMgr_transmitPendingData
        Function Description: This function is responsible for
        transmitting a single byte of data if data is waiting
        to be sent.  Otherwise, if nothing is waiting, the
        function just returns.
        Inputs:  none 
        Outputs: none
***********************************************************/
void UIMgr_transmitPendingData(void)
{
        if (IS_DATA_IN_TX_FIFO() == TRUE)
        {
                /* data is waiting...send a single byte */
                UartInt_txByte( UIMgr_readTxFifo() );
        }
}
/***********************************************************
        Function Name: UIMgr_processReceivedData
        Function Description: This function is responsible for
        parsing any serial data waiting in the rx fifo
        Inputs:  none 
        Outputs: none
***********************************************************/
void UIMgr_processReceivedData(void)
{
        unsigned char tmpData = 0;

        /* still need to add a mechanism to handle token counts 
        that are excessive!!! FIX ME!!! */
    
        while(IS_DATA_IN_RX_FIFO() == TRUE)
        {
                tmpData = UIMgr_readRxFifo();
                if (tmpData == '\r') 
                {
                        /* we have reached a token separator */
                        if (tokenCount == 0)
                        {
                                /* convert the command */
                                UIMgr_convertTokenToCmd();                              
                        }
                        else
                        {
                                /* convert a value */
                                UIMgr_convertTokenToValue();
                                tokenCount++;
                        }
                        /* either way, it is time to try to process the received
                        token list since we have reached the end of the cmd. */
                        Utility_delay(100);
                        if (receivedCmd == invalidCmd ||
                             receivedCmd == noCmd )
                        {
                                UIMgr_sendNck();
                                PUBLISH_EVENT(EV_SERIAL_DATA_PENDING_TX);
                        }
                        else
                        {
                                UIMgr_sendAck();
                                /* publish the serial data pending event, so it
                                will push the ACK out before we execute the cmd */
                                PUBLISH_EVENT(EV_SERIAL_DATA_PENDING_TX);
                                UIMgr_executeCmd();
                        }
                        
                        /* reset any necessary data */
                        tokenCount = 0;
                        memset(tokenBuffer,0x00,MAX_TOKEN_COUNT);
                }
                else if (tmpData == ' ')  /* space char */
                {
                        /* the end of a token has been reached */
                        if (tokenCount == 0)
                        {
                                UIMgr_convertTokenToCmd();
                                tokenCount++;   /* check this...why is this being incremented here??? This
                means we have received a token, with tokenCount == 0, which means it is a
                command...why is this contributing to tokenCount?
                This might cause the set color map command to include too much data, since
                it sets the color map based on tokenCount...CHECK*/
                        }
                        else
                        {
                                /* check to see if this token is going to push
                                us over the limit...if so, abort the transaction */
                                if (tokenCount+1 >= MAX_TOKEN_COUNT)
                                {
                                        /* we received too many tokens, and 
                                        need to NCK this request, since its too
                                        large...reset everything...*/
                                        charCount=0;
                                        charIndex=0;
                                        tokenCount=0;
                                        receivedCmd = invalidCmd;
                                }
                                else
                                {
                                        /* tokenCount is still in range...*/
                                        UIMgr_convertTokenToValue();
                                        tokenCount++;
                                }
                        }
                }
                else if ( (tmpData >= 'A' && tmpData <= 'Z') ||
                                   (tmpData >= '0' && tmpData <= '9') )
                {
                        /* a valid range of token was received */
                        asciiTokenBuffer[charIndex] = tmpData;
                        charCount++;
                        charIndex++;
                        if (charCount > MAX_TOKEN_LENGTH)
                        {
                                /* we have received a token that cannot be handled...
                                set the received cmd to an invalid cmd, and wait
                                for the \r to process it */
                                receivedCmd = invalidCmd;
                                charIndex = 0;  /* ...so we won't overwrite memory */
                        }
                }
                else
                {
                        /* an invalid character was received */
                        receivedCmd = invalidCmd;
                }
        }  /* end while */
        
        asm volatile("clt"::);  /* clear out the T flag in case it wasn't
                                                                 cleared already */
}                                               

/***********************************************************
        Function Name: UIMgr_executeCmd
        Function Description: This function is responsible for
        executing whatever cmd is stored in the receivedCmd
        object.
        Inputs:  none 
        Outputs: none
***********************************************************/
static void UIMgr_executeCmd(void)
{
        unsigned char i,eepromData, num_writes=0;
        unsigned char *pData;
    unsigned char eeprom_write_succeeded = FALSE;
#if     DEBUG_COLOR_MAP 
        unsigned char asciiBuffer[5];
#endif

        if (receivedCmd == pingCmd) 
        {
        }
        else if (receivedCmd == getVersionCmd)
        {
                pData = AVRcamVersion;
                while(*pData != 0)
                {               
                        UIMgr_writeTxFifo(*pData++);
                }
        }               
        else if (receivedCmd == resetCameraCmd)
        {
                CamInt_resetCam();
        }
        else if (receivedCmd == dumpFrameCmd)
        {
                /* publish the event that will indicate that
                a request has come to dump a frame...this will
                be received by the FrameMgr, which will begin
                dumping the frame...a short delay is needed
                here to keep the Java demo app happy (sometimes
                it wouldn't be able to receive the serial data
                as quickly as AVRcam can provide it). */
                Utility_delay(100);
                PUBLISH_EVENT(EV_DUMP_FRAME);
        }
        else if (receivedCmd == setCameraRegsCmd)
        {
                /* we need to gather the tokens and
                build config cmds to be sent to the camera */
                for (i=1; i<tokenCount; i+=2)  /* starts at 1 since first token
                                                                                        is the CR cmd */
                {
                        CamConfig_setCamReg(tokenBuffer[i],tokenBuffer[i+1]);
                }
                CamConfig_sendFifoCmds();
        }
        else if (receivedCmd == enableTrackingCmd)
        {
                /* publish the event...again with a short delay */
                Utility_delay(100);
                PUBLISH_EVENT(EV_ENABLE_TRACKING);
        }
        else if (receivedCmd == disableTrackingCmd)
        {
                PUBLISH_EVENT(EV_DISABLE_TRACKING);
        }
        else if (receivedCmd == setColorMapCmd)
        {
                /* copy the received tokens into the color map */
                for (i=0; i<tokenCount; i++)
                {
                        colorMap[i] = tokenBuffer[i+1];
            
            /* write each colorMap byte to EEPROM, but only those
            that changed...this will help reduce wear on the EEPROM */
            eepromData = eeprom_read_byte( (unsigned char*)(i+1));
            if (eepromData != colorMap[i])
            {
                /* need to actually perform the write because the
                data in eeprom is different than the current colorMap */
                eeprom_write_succeeded = FALSE;
                while(eeprom_write_succeeded == FALSE && num_writes < MAX_EEPROM_WRITE_ATTEMPTS)
                {
                    eeprom_write_byte((unsigned char*)(i+1),colorMap[i]);
                    num_writes++;
                    eepromData = eeprom_read_byte( (unsigned char*)(i+1));
                    if (eepromData == colorMap[i])
                    {
                        eeprom_write_succeeded = TRUE;
                    }
                }
                num_writes = 0;
            }
                }

#if     DEBUG_COLOR_MAP                 
                                /* for debugging...send out the entire color map */
        UIMgr_txBuffer("\r\n",2);
                for (i=0; i<NUM_ELEMENTS_IN_COLOR_MAP; i++)
                {
                        memset(asciiBuffer,0x00,5);
                        itoa(colorMap[i],asciiBuffer,10);
                        UIMgr_txBuffer(asciiBuffer,3);
                        UIMgr_txBuffer(" ",1);
                        if (i==15 || i == 31)
                        {
                                /* break up the output */
                                UIMgr_txBuffer("\r\n",2);
                        }
                }
#endif                  
        }
}

/***********************************************************
        Function Name: UIMgr_convertTokenToValue
        Function Description: This function is responsible for
        converting a received token to a hex value It will
        access the asciiTokenBuffer directly, and store the
        result in the appropriate token buffer.
        Inputs:  none 
        Outputs: none
***********************************************************/    
static void UIMgr_convertTokenToValue(void)
{
        unsigned int newValue;
        
        newValue = atoi(asciiTokenBuffer);
        if (newValue > 255)
        {
                /* the value is too large */
                receivedCmd = invalidCmd;
                tokenBuffer[tokenCount] = 0xFF;  /* to indicate an error */
        }
        else
        {
                /* copy the value into the tokenBuffer */
                tokenBuffer[tokenCount] = newValue;
        }
        memset(asciiTokenBuffer,0x00,MAX_TOKEN_LENGTH);
        charIndex = 0;
        charCount = 0;
}
/***********************************************************
        Function Name: UIMgr_convertTokenToCmd
        Function Description: This function is responsible for
        parsing a received 2-character command.  It will
        access the asciiTokenBuffer directly.
        Inputs:  none 
        Outputs: none
***********************************************************/    
static void UIMgr_convertTokenToCmd(void)
{
        if ( (asciiTokenBuffer[0] == 'P') &&
                 (asciiTokenBuffer[1] == 'G') )
        {
                /* we got a "ping" command...but we still need to see
                if we are going to get the \r */
                receivedCmd = pingCmd;
        }
        else if ( (asciiTokenBuffer[0] == 'G') &&
                           (asciiTokenBuffer[1] == 'V') )
        {
                /* we got the "get version" command */
                receivedCmd = getVersionCmd;
        }
        else if ( (asciiTokenBuffer[0] == 'D') &&
                           (asciiTokenBuffer[1] == 'F') )
        {
                /* we should go into frame dump mode */
                receivedCmd = dumpFrameCmd;     
        }
        else if ( (asciiTokenBuffer[0] == 'C') &&
                   (asciiTokenBuffer[1] == 'R') )
        {
                /* the user wants to set registers in the OV6620 */
                receivedCmd = setCameraRegsCmd;
        }
        else if ( (asciiTokenBuffer[0] == 'E') &&
                           (asciiTokenBuffer[1] == 'T') )
        {
                /* the user wants to enable tracking */
                receivedCmd = enableTrackingCmd;
        }
        else if ( (asciiTokenBuffer[0] == 'S') &&
                           (asciiTokenBuffer[1] == 'M') )
        {
                /* the user wants to set the color map */
                receivedCmd = setColorMapCmd;
        }
        else if ( (asciiTokenBuffer[0] == 'D') &&
                           (asciiTokenBuffer[1] == 'T') )
        {
                receivedCmd = disableTrackingCmd;
        }
        else if ( (asciiTokenBuffer[0] == 'R') &&
                           (asciiTokenBuffer[1] == 'S') )
        {
                receivedCmd = resetCameraCmd;
        }
        else
        {
                /* don't recognize the cmd */
                receivedCmd = invalidCmd;
        }
        memset(asciiTokenBuffer,0x00,MAX_TOKEN_LENGTH);
        charIndex = 0;
        charCount = 0;
}
/***********************************************************
        Function Name: UIMgr_sendAck
        Function Description: This function is responsible for
        queuing up an ACK to be sent to the user.
        Inputs:  none 
        Outputs: none
***********************************************************/    
static void UIMgr_sendAck(void)
{
        UIMgr_writeTxFifo('A');
        UIMgr_writeTxFifo('C');
        UIMgr_writeTxFifo('K');
        UIMgr_writeTxFifo('\r');
}

/***********************************************************
        Function Name: UIMgr_sendNck
        Function Description: This function is responsible for
        queueing up an NCK to be sent to the user.
        Inputs:  none 
        Outputs: none
***********************************************************/    
static void UIMgr_sendNck(void)
{
                UIMgr_writeTxFifo('N');
                UIMgr_writeTxFifo('C');
                UIMgr_writeTxFifo('K');
                UIMgr_writeTxFifo('\r');
}


/***********************************************************
        Function Name: UIMgr_writeBufferToTxFifo
        Function Description: This function is responsible for
        placing "length" bytes into the tx FIFO.
        Inputs:  pData -  a pointer to the data to send
                 length - the number of bytes to send
        Outputs: none
***********************************************************/    
void UIMgr_writeBufferToTxFifo(unsigned char *pData, unsigned char length)
{
     6ca:       dc 01           movw    r26, r24
        unsigned char tmpHead;
        if (length == 0)
     6cc:       66 23           and     r22, r22
     6ce:       b1 f0           breq    .+44            ; 0x6fc <UIMgr_writeBufferToTxFifo+0x32>
        {
                return;
        }
        
        DISABLE_INTS();
     6d0:       f8 94           cli
        while(length-- != 0)
     6d2:       61 50           subi    r22, 0x01       ; 1
     6d4:       6f 3f           cpi     r22, 0xFF       ; 255
     6d6:       89 f0           breq    .+34            ; 0x6fa <UIMgr_writeBufferToTxFifo+0x30>
     6d8:       90 91 ba 00     lds     r25, 0x00BA
        {
                UIMgr_txFifo[UIMgr_txFifoHead] = *pData++;
     6dc:       24 e9           ldi     r18, 0x94       ; 148
     6de:       32 e0           ldi     r19, 0x02       ; 2
     6e0:       f9 01           movw    r30, r18
     6e2:       e9 0f           add     r30, r25
     6e4:       f1 1d           adc     r31, r1
     6e6:       8d 91           ld      r24, X+
     6e8:       80 83           st      Z, r24
        
                /* now move the head up */
                tmpHead = (UIMgr_txFifoHead + 1) & (UI_MGR_TX_FIFO_MASK);
     6ea:       89 2f           mov     r24, r25
     6ec:       8f 5f           subi    r24, 0xFF       ; 255
     6ee:       98 2f           mov     r25, r24
     6f0:       9f 73           andi    r25, 0x3F       ; 63
     6f2:       61 50           subi    r22, 0x01       ; 1
     6f4:       a8 f7           brcc    .-22            ; 0x6e0 <UIMgr_writeBufferToTxFifo+0x16>
     6f6:       90 93 ba 00     sts     0x00BA, r25
                UIMgr_txFifoHead = tmpHead;
        }
        ENABLE_INTS();
     6fa:       78 94           sei
     6fc:       08 95           ret

000006fe <UIMgr_readTxFifo>:
}

/***********************************************************
        Function Name: UIMgr_txBuffer
        Function Description: This function is responsible for
        sending 'length' bytes out using the UartInterface 
        module.
        Inputs:  pData -  a pointer to the data to send
                 length - the number of bytes to send
        Outputs: none
***********************************************************/    
void UIMgr_txBuffer(unsigned char *pData, unsigned char length)
{
        while(length-- != 0)
        {
                UartInt_txByte(*pData++); 
        }
}

/***********************************************************
        Function Name: UIMgr_flushTxBuffer
        Function Description: This function is responsible for
        sending all data currently in the serial tx buffer
        to the user.
        Inputs:  none
        Outputs: none
***********************************************************/    
void UIMgr_flushTxBuffer(void)
{
        while(IS_DATA_IN_TX_FIFO() == TRUE)
        {
                UartInt_txByte(UIMgr_readTxFifo() );
        }
}

/***********************************************************
        Function Name: UIMgr_readRxFifo
        Function Description: This function is responsible for
        reading a single byte of data from the rx fifo, and
        updating the appropriate pointers.
        Inputs:  none 
        Outputs: unsigned char-the data read
***********************************************************/    
static unsigned char UIMgr_readRxFifo(void)
{
        unsigned char dataByte, tmpTail;
        
        /* just return the current tail from the rx fifo */
        DISABLE_INTS();
        dataByte = UIMgr_rxFifo[UIMgr_rxFifoTail];      
        tmpTail = (UIMgr_rxFifoTail+1) & (UI_MGR_RX_FIFO_MASK);
        UIMgr_rxFifoTail = tmpTail;
        ENABLE_INTS();
        
        return(dataByte);
}

/***********************************************************
        Function Name: UIMgr_readTxFifo
        Function Description: This function is responsible for
        reading a single byte of data from the tx fifo, and
        updating the appropriate pointers.
        Inputs:  none 
        Outputs: unsigned char-the data read
***********************************************************/    
static unsigned char UIMgr_readTxFifo(void)
{
        unsigned char dataByte, tmpTail;
        
        /* just return the current tail from the tx fifo */
        DISABLE_INTS();
     6fe:       f8 94           cli
        dataByte = UIMgr_txFifo[UIMgr_txFifoTail];      
     700:       90 91 bb 00     lds     r25, 0x00BB
     704:       e4 e9           ldi     r30, 0x94       ; 148
     706:       f2 e0           ldi     r31, 0x02       ; 2
     708:       e9 0f           add     r30, r25
     70a:       f1 1d           adc     r31, r1
     70c:       80 81           ld      r24, Z
        tmpTail = (UIMgr_txFifoTail+1) & (UI_MGR_TX_FIFO_MASK);
        UIMgr_txFifoTail = tmpTail;
     70e:       9f 5f           subi    r25, 0xFF       ; 255
     710:       9f 73           andi    r25, 0x3F       ; 63
     712:       90 93 bb 00     sts     0x00BB, r25
        ENABLE_INTS();
     716:       78 94           sei
        
        return(dataByte);
}
     718:       99 27           eor     r25, r25
     71a:       08 95           ret

0000071c <UIMgr_writeTxFifo>:

/***********************************************************
        Function Name: UIMgr_writeTxFifo
        Function Description: This function is responsible for
        writing a single byte to the TxFifo and
        updating the appropriate pointers.
        Inputs:  data - the byte to write to the Fifo 
        Outputs: none
***********************************************************/    
void UIMgr_writeTxFifo(unsigned char data)
{
        unsigned char tmpHead;

        DISABLE_INTS();
     71c:       f8 94           cli
        UIMgr_txFifo[UIMgr_txFifoHead] = data;
     71e:       90 91 ba 00     lds     r25, 0x00BA
     722:       e4 e9           ldi     r30, 0x94       ; 148
     724:       f2 e0           ldi     r31, 0x02       ; 2
     726:       e9 0f           add     r30, r25
     728:       f1 1d           adc     r31, r1
     72a:       80 83           st      Z, r24

    /* now move the head up */
    tmpHead = (UIMgr_txFifoHead + 1) & (UI_MGR_TX_FIFO_MASK);
    UIMgr_txFifoHead = tmpHead;
     72c:       9f 5f           subi    r25, 0xFF       ; 255
     72e:       9f 73           andi    r25, 0x3F       ; 63
     730:       90 93 ba 00     sts     0x00BA, r25
        ENABLE_INTS();
     734:       78 94           sei
     736:       08 95           ret

00000738 <UIMgr_flushTxBuffer>:
     738:       90 91 ba 00     lds     r25, 0x00BA
     73c:       80 91 bb 00     lds     r24, 0x00BB
     740:       98 17           cp      r25, r24
     742:       41 f0           breq    .+16            ; 0x754 <UIMgr_flushTxBuffer+0x1c>
     744:       dc df           rcall   .-72            ; 0x6fe <UIMgr_readTxFifo>
     746:       13 d2           rcall   .+1062          ; 0xb6e <UartInt_txByte>
     748:       90 91 ba 00     lds     r25, 0x00BA
     74c:       80 91 bb 00     lds     r24, 0x00BB
     750:       98 17           cp      r25, r24
     752:       c1 f7           brne    .-16            ; 0x744 <UIMgr_flushTxBuffer+0xc>
     754:       08 95           ret

00000756 <UIMgr_txBuffer>:
     756:       1f 93           push    r17
     758:       cf 93           push    r28
     75a:       df 93           push    r29
     75c:       ec 01           movw    r28, r24
     75e:       16 2f           mov     r17, r22
     760:       11 50           subi    r17, 0x01       ; 1
     762:       1f 3f           cpi     r17, 0xFF       ; 255
     764:       21 f0           breq    .+8             ; 0x76e <UIMgr_txBuffer+0x18>
     766:       89 91           ld      r24, Y+
     768:       02 d2           rcall   .+1028          ; 0xb6e <UartInt_txByte>
     76a:       11 50           subi    r17, 0x01       ; 1
     76c:       e0 f7           brcc    .-8             ; 0x766 <UIMgr_txBuffer+0x10>
     76e:       df 91           pop     r29
     770:       cf 91           pop     r28
     772:       1f 91           pop     r17
     774:       08 95           ret

00000776 <UIMgr_transmitPendingData>:
     776:       90 91 ba 00     lds     r25, 0x00BA
     77a:       80 91 bb 00     lds     r24, 0x00BB
     77e:       98 17           cp      r25, r24
     780:       11 f0           breq    .+4             ; 0x786 <UIMgr_transmitPendingData+0x10>
     782:       bd df           rcall   .-134           ; 0x6fe <UIMgr_readTxFifo>
     784:       f4 d1           rcall   .+1000          ; 0xb6e <UartInt_txByte>
     786:       08 95           ret

00000788 <UIMgr_convertTokenToCmd>:
     788:       90 91 bf 00     lds     r25, 0x00BF
     78c:       90 35           cpi     r25, 0x50       ; 80
     78e:       41 f4           brne    .+16            ; 0x7a0 <UIMgr_convertTokenToCmd+0x18>
     790:       80 91 c0 00     lds     r24, 0x00C0
     794:       87 34           cpi     r24, 0x47       ; 71
     796:       09 f5           brne    .+66            ; 0x7da <UIMgr_convertTokenToCmd+0x52>
     798:       81 e0           ldi     r24, 0x01       ; 1
     79a:       80 93 62 00     sts     0x0062, r24
     79e:       48 c0           rjmp    .+144           ; 0x830 <UIMgr_convertTokenToCmd+0xa8>
     7a0:       97 34           cpi     r25, 0x47       ; 71
     7a2:       39 f4           brne    .+14            ; 0x7b2 <UIMgr_convertTokenToCmd+0x2a>
     7a4:       80 91 c0 00     lds     r24, 0x00C0
     7a8:       86 35           cpi     r24, 0x56       ; 86
     7aa:       09 f5           brne    .+66            ; 0x7ee <UIMgr_convertTokenToCmd+0x66>
     7ac:       10 92 62 00     sts     0x0062, r1
     7b0:       3f c0           rjmp    .+126           ; 0x830 <UIMgr_convertTokenToCmd+0xa8>
     7b2:       94 34           cpi     r25, 0x44       ; 68
     7b4:       41 f4           brne    .+16            ; 0x7c6 <UIMgr_convertTokenToCmd+0x3e>
     7b6:       80 91 c0 00     lds     r24, 0x00C0
     7ba:       86 34           cpi     r24, 0x46       ; 70
     7bc:       11 f5           brne    .+68            ; 0x802 <UIMgr_convertTokenToCmd+0x7a>
     7be:       83 e0           ldi     r24, 0x03       ; 3
     7c0:       80 93 62 00     sts     0x0062, r24
     7c4:       35 c0           rjmp    .+106           ; 0x830 <UIMgr_convertTokenToCmd+0xa8>
     7c6:       93 34           cpi     r25, 0x43       ; 67
     7c8:       41 f4           brne    .+16            ; 0x7da <UIMgr_convertTokenToCmd+0x52>
     7ca:       80 91 c0 00     lds     r24, 0x00C0
     7ce:       82 35           cpi     r24, 0x52       ; 82
     7d0:       11 f5           brne    .+68            ; 0x816 <UIMgr_convertTokenToCmd+0x8e>
     7d2:       82 e0           ldi     r24, 0x02       ; 2
     7d4:       80 93 62 00     sts     0x0062, r24
     7d8:       2b c0           rjmp    .+86            ; 0x830 <UIMgr_convertTokenToCmd+0xa8>
     7da:       95 34           cpi     r25, 0x45       ; 69
     7dc:       41 f4           brne    .+16            ; 0x7ee <UIMgr_convertTokenToCmd+0x66>
     7de:       80 91 c0 00     lds     r24, 0x00C0
     7e2:       84 35           cpi     r24, 0x54       ; 84
     7e4:       11 f5           brne    .+68            ; 0x82a <UIMgr_convertTokenToCmd+0xa2>
     7e6:       84 e0           ldi     r24, 0x04       ; 4
     7e8:       80 93 62 00     sts     0x0062, r24
     7ec:       21 c0           rjmp    .+66            ; 0x830 <UIMgr_convertTokenToCmd+0xa8>
     7ee:       93 35           cpi     r25, 0x53       ; 83
     7f0:       41 f4           brne    .+16            ; 0x802 <UIMgr_convertTokenToCmd+0x7a>
     7f2:       80 91 c0 00     lds     r24, 0x00C0
     7f6:       8d 34           cpi     r24, 0x4D       ; 77
     7f8:       c1 f4           brne    .+48            ; 0x82a <UIMgr_convertTokenToCmd+0xa2>
     7fa:       86 e0           ldi     r24, 0x06       ; 6
     7fc:       80 93 62 00     sts     0x0062, r24
     800:       17 c0           rjmp    .+46            ; 0x830 <UIMgr_convertTokenToCmd+0xa8>
     802:       94 34           cpi     r25, 0x44       ; 68
     804:       41 f4           brne    .+16            ; 0x816 <UIMgr_convertTokenToCmd+0x8e>
     806:       80 91 c0 00     lds     r24, 0x00C0
     80a:       84 35           cpi     r24, 0x54       ; 84
     80c:       71 f4           brne    .+28            ; 0x82a <UIMgr_convertTokenToCmd+0xa2>
     80e:       85 e0           ldi     r24, 0x05       ; 5
     810:       80 93 62 00     sts     0x0062, r24
     814:       0d c0           rjmp    .+26            ; 0x830 <UIMgr_convertTokenToCmd+0xa8>
     816:       92 35           cpi     r25, 0x52       ; 82
     818:       41 f4           brne    .+16            ; 0x82a <UIMgr_convertTokenToCmd+0xa2>
     81a:       80 91 c0 00     lds     r24, 0x00C0
     81e:       83 35           cpi     r24, 0x53       ; 83
     820:       21 f4           brne    .+8             ; 0x82a <UIMgr_convertTokenToCmd+0xa2>
     822:       87 e0           ldi     r24, 0x07       ; 7
     824:       80 93 62 00     sts     0x0062, r24
     828:       03 c0           rjmp    .+6             ; 0x830 <UIMgr_convertTokenToCmd+0xa8>
     82a:       89 e0           ldi     r24, 0x09       ; 9
     82c:       80 93 62 00     sts     0x0062, r24
     830:       83 e0           ldi     r24, 0x03       ; 3
     832:       ef eb           ldi     r30, 0xBF       ; 191
     834:       f0 e0           ldi     r31, 0x00       ; 0
     836:       11 92           st      Z+, r1
     838:       8a 95           dec     r24
     83a:       e9 f7           brne    .-6             ; 0x836 <UIMgr_convertTokenToCmd+0xae>
     83c:       10 92 be 00     sts     0x00BE, r1
     840:       10 92 bd 00     sts     0x00BD, r1
     844:       08 95           ret

00000846 <UIMgr_init>:
     846:       10 92 bf 00     sts     0x00BF, r1
     84a:       10 92 c0 00     sts     0x00C0, r1
     84e:       10 92 c1 00     sts     0x00C1, r1
     852:       10 92 c2 00     sts     0x00C2, r1
     856:       80 e4           ldi     r24, 0x40       ; 64
     858:       e3 ec           ldi     r30, 0xC3       ; 195
     85a:       f0 e0           ldi     r31, 0x00       ; 0
     85c:       98 2f           mov     r25, r24
     85e:       11 92           st      Z+, r1
     860:       9a 95           dec     r25
     862:       e9 f7           brne    .-6             ; 0x85e <UIMgr_init+0x18>
     864:       e4 e9           ldi     r30, 0x94       ; 148
     866:       f2 e0           ldi     r31, 0x02       ; 2
     868:       11 92           st      Z+, r1
     86a:       8a 95           dec     r24
     86c:       e9 f7           brne    .-6             ; 0x868 <UIMgr_init+0x22>
     86e:       80 e2           ldi     r24, 0x20       ; 32
     870:       e4 e7           ldi     r30, 0x74       ; 116
     872:       f2 e0           ldi     r31, 0x02       ; 2
     874:       11 92           st      Z+, r1
     876:       8a 95           dec     r24
     878:       e9 f7           brne    .-6             ; 0x874 <UIMgr_init+0x2e>
     87a:       08 95           ret

0000087c <UIMgr_convertTokenToValue>:
     87c:       8f eb           ldi     r24, 0xBF       ; 191
     87e:       90 e0           ldi     r25, 0x00       ; 0
     880:       dc d3           rcall   .+1976          ; 0x103a <atoi>
     882:       9c 01           movw    r18, r24
     884:       8f 3f           cpi     r24, 0xFF       ; 255
     886:       91 05           cpc     r25, r1
     888:       69 f0           breq    .+26            ; 0x8a4 <UIMgr_convertTokenToValue+0x28>
     88a:       60 f0           brcs    .+24            ; 0x8a4 <UIMgr_convertTokenToValue+0x28>
     88c:       89 e0           ldi     r24, 0x09       ; 9
     88e:       80 93 62 00     sts     0x0062, r24
     892:       80 91 bc 00     lds     r24, 0x00BC
     896:       e3 ec           ldi     r30, 0xC3       ; 195
     898:       f0 e0           ldi     r31, 0x00       ; 0
     89a:       e8 0f           add     r30, r24
     89c:       f1 1d           adc     r31, r1
     89e:       8f ef           ldi     r24, 0xFF       ; 255
     8a0:       80 83           st      Z, r24
     8a2:       07 c0           rjmp    .+14            ; 0x8b2 <UIMgr_convertTokenToValue+0x36>
     8a4:       80 91 bc 00     lds     r24, 0x00BC
     8a8:       e3 ec           ldi     r30, 0xC3       ; 195
     8aa:       f0 e0           ldi     r31, 0x00       ; 0
     8ac:       e8 0f           add     r30, r24
     8ae:       f1 1d           adc     r31, r1
     8b0:       20 83           st      Z, r18
     8b2:       83 e0           ldi     r24, 0x03       ; 3
     8b4:       ef eb           ldi     r30, 0xBF       ; 191
     8b6:       f0 e0           ldi     r31, 0x00       ; 0
     8b8:       11 92           st      Z+, r1
     8ba:       8a 95           dec     r24
     8bc:       e9 f7           brne    .-6             ; 0x8b8 <UIMgr_convertTokenToValue+0x3c>
     8be:       10 92 be 00     sts     0x00BE, r1
     8c2:       10 92 bd 00     sts     0x00BD, r1
     8c6:       08 95           ret

000008c8 <UIMgr_processReceivedData>:
     8c8:       6f 92           push    r6
     8ca:       7f 92           push    r7
     8cc:       8f 92           push    r8
     8ce:       9f 92           push    r9
     8d0:       af 92           push    r10
     8d2:       bf 92           push    r11
     8d4:       cf 92           push    r12
     8d6:       df 92           push    r13
     8d8:       ef 92           push    r14
     8da:       ff 92           push    r15
     8dc:       1f 93           push    r17
     8de:       cf 93           push    r28
     8e0:       df 93           push    r29
     8e2:       0f 2e           mov     r0, r31
     8e4:       f4 e7           ldi     r31, 0x74       ; 116
     8e6:       cf 2e           mov     r12, r31
     8e8:       f2 e0           ldi     r31, 0x02       ; 2
     8ea:       df 2e           mov     r13, r31
     8ec:       f0 2d           mov     r31, r0
     8ee:       0f 2e           mov     r0, r31
     8f0:       ff eb           ldi     r31, 0xBF       ; 191
     8f2:       af 2e           mov     r10, r31
     8f4:       f0 e0           ldi     r31, 0x00       ; 0
     8f6:       bf 2e           mov     r11, r31
     8f8:       f0 2d           mov     r31, r0
     8fa:       0f 2e           mov     r0, r31
     8fc:       f3 ec           ldi     r31, 0xC3       ; 195
     8fe:       ef 2e           mov     r14, r31
     900:       f0 e0           ldi     r31, 0x00       ; 0
     902:       ff 2e           mov     r15, r31
     904:       f0 2d           mov     r31, r0
     906:       0f 2e           mov     r0, r31
     908:       f0 e0           ldi     r31, 0x00       ; 0
     90a:       8f 2e           mov     r8, r31
     90c:       f3 e0           ldi     r31, 0x03       ; 3
     90e:       9f 2e           mov     r9, r31
     910:       f0 2d           mov     r31, r0
     912:       0f 2e           mov     r0, r31
     914:       f3 e6           ldi     r31, 0x63       ; 99
     916:       6f 2e           mov     r6, r31
     918:       f0 e0           ldi     r31, 0x00       ; 0
     91a:       7f 2e           mov     r7, r31
     91c:       f0 2d           mov     r31, r0
     91e:       fa c0           rjmp    .+500           ; 0xb14 <UIMgr_processReceivedData+0x24c>
     920:       f8 94           cli
     922:       f6 01           movw    r30, r12
     924:       e9 0f           add     r30, r25
     926:       f1 1d           adc     r31, r1
     928:       20 81           ld      r18, Z
     92a:       89 2f           mov     r24, r25
     92c:       8f 5f           subi    r24, 0xFF       ; 255
     92e:       8f 71           andi    r24, 0x1F       ; 31
     930:       80 93 b9 00     sts     0x00B9, r24
     934:       78 94           sei
     936:       2d 30           cpi     r18, 0x0D       ; 13
     938:       09 f0           breq    .+2             ; 0x93c <UIMgr_processReceivedData+0x74>
     93a:       a9 c0           rjmp    .+338           ; 0xa8e <UIMgr_processReceivedData+0x1c6>
     93c:       80 91 bc 00     lds     r24, 0x00BC
     940:       88 23           and     r24, r24
     942:       11 f4           brne    .+4             ; 0x948 <UIMgr_processReceivedData+0x80>
     944:       21 df           rcall   .-446           ; 0x788 <UIMgr_convertTokenToCmd>
     946:       06 c0           rjmp    .+12            ; 0x954 <UIMgr_processReceivedData+0x8c>
     948:       99 df           rcall   .-206           ; 0x87c <UIMgr_convertTokenToValue>
     94a:       80 91 bc 00     lds     r24, 0x00BC
     94e:       8f 5f           subi    r24, 0xFF       ; 255
     950:       80 93 bc 00     sts     0x00BC, r24
     954:       84 e6           ldi     r24, 0x64       ; 100
     956:       90 e0           ldi     r25, 0x00       ; 0
     958:       a6 d2           rcall   .+1356          ; 0xea6 <Utility_delay>
     95a:       80 91 62 00     lds     r24, 0x0062
     95e:       88 50           subi    r24, 0x08       ; 8
     960:       82 30           cpi     r24, 0x02       ; 2
     962:       58 f4           brcc    .+22            ; 0x97a <UIMgr_processReceivedData+0xb2>
     964:       8e e4           ldi     r24, 0x4E       ; 78
     966:       da de           rcall   .-588           ; 0x71c <UIMgr_writeTxFifo>
     968:       83 e4           ldi     r24, 0x43       ; 67
     96a:       d8 de           rcall   .-592           ; 0x71c <UIMgr_writeTxFifo>
     96c:       8b e4           ldi     r24, 0x4B       ; 75
     96e:       d6 de           rcall   .-596           ; 0x71c <UIMgr_writeTxFifo>
     970:       8d e0           ldi     r24, 0x0D       ; 13
     972:       d4 de           rcall   .-600           ; 0x71c <UIMgr_writeTxFifo>
     974:       80 e9           ldi     r24, 0x90       ; 144
     976:       05 dc           rcall   .-2038          ; 0x182 <Exec_writeEventFifo>
     978:       82 c0           rjmp    .+260           ; 0xa7e <UIMgr_processReceivedData+0x1b6>
     97a:       81 e4           ldi     r24, 0x41       ; 65
     97c:       cf de           rcall   .-610           ; 0x71c <UIMgr_writeTxFifo>
     97e:       83 e4           ldi     r24, 0x43       ; 67
     980:       cd de           rcall   .-614           ; 0x71c <UIMgr_writeTxFifo>
     982:       8b e4           ldi     r24, 0x4B       ; 75
     984:       cb de           rcall   .-618           ; 0x71c <UIMgr_writeTxFifo>
     986:       8d e0           ldi     r24, 0x0D       ; 13
     988:       c9 de           rcall   .-622           ; 0x71c <UIMgr_writeTxFifo>
     98a:       80 e9           ldi     r24, 0x90       ; 144
     98c:       fa db           rcall   .-2060          ; 0x182 <Exec_writeEventFifo>
     98e:       80 91 62 00     lds     r24, 0x0062
     992:       81 30           cpi     r24, 0x01       ; 1
     994:       09 f4           brne    .+2             ; 0x998 <UIMgr_processReceivedData+0xd0>
     996:       73 c0           rjmp    .+230           ; 0xa7e <UIMgr_processReceivedData+0x1b6>
     998:       88 23           and     r24, r24
     99a:       69 f4           brne    .+26            ; 0x9b6 <UIMgr_processReceivedData+0xee>
     99c:       80 91 63 00     lds     r24, 0x0063
     9a0:       88 23           and     r24, r24
     9a2:       09 f4           brne    .+2             ; 0x9a6 <UIMgr_processReceivedData+0xde>
     9a4:       6c c0           rjmp    .+216           ; 0xa7e <UIMgr_processReceivedData+0x1b6>
     9a6:       e3 01           movw    r28, r6
     9a8:       21 96           adiw    r28, 0x01       ; 1
     9aa:       b8 de           rcall   .-656           ; 0x71c <UIMgr_writeTxFifo>
     9ac:       88 81           ld      r24, Y
     9ae:       88 23           and     r24, r24
     9b0:       09 f4           brne    .+2             ; 0x9b4 <UIMgr_processReceivedData+0xec>
     9b2:       65 c0           rjmp    .+202           ; 0xa7e <UIMgr_processReceivedData+0x1b6>
     9b4:       f9 cf           rjmp    .-14            ; 0x9a8 <UIMgr_processReceivedData+0xe0>
     9b6:       87 30           cpi     r24, 0x07       ; 7
     9b8:       11 f4           brne    .+4             ; 0x9be <UIMgr_processReceivedData+0xf6>
     9ba:       a1 db           rcall   .-2238          ; 0xfe <CamInt_resetCam>
     9bc:       60 c0           rjmp    .+192           ; 0xa7e <UIMgr_processReceivedData+0x1b6>
     9be:       83 30           cpi     r24, 0x03       ; 3
     9c0:       31 f4           brne    .+12            ; 0x9ce <UIMgr_processReceivedData+0x106>
     9c2:       84 e6           ldi     r24, 0x64       ; 100
     9c4:       90 e0           ldi     r25, 0x00       ; 0
     9c6:       6f d2           rcall   .+1246          ; 0xea6 <Utility_delay>
     9c8:       82 e0           ldi     r24, 0x02       ; 2
     9ca:       db db           rcall   .-2122          ; 0x182 <Exec_writeEventFifo>
     9cc:       58 c0           rjmp    .+176           ; 0xa7e <UIMgr_processReceivedData+0x1b6>
     9ce:       82 30           cpi     r24, 0x02       ; 2
     9d0:       91 f4           brne    .+36            ; 0x9f6 <UIMgr_processReceivedData+0x12e>
     9d2:       80 91 bc 00     lds     r24, 0x00BC
     9d6:       82 30           cpi     r24, 0x02       ; 2
     9d8:       60 f0           brcs    .+24            ; 0x9f2 <UIMgr_processReceivedData+0x12a>
     9da:       11 e0           ldi     r17, 0x01       ; 1
     9dc:       f7 01           movw    r30, r14
     9de:       e1 0f           add     r30, r17
     9e0:       f1 1d           adc     r31, r1
     9e2:       61 81           ldd     r22, Z+1        ; 0x01
     9e4:       80 81           ld      r24, Z
     9e6:       05 d2           rcall   .+1034          ; 0xdf2 <CamConfig_setCamReg>
     9e8:       1e 5f           subi    r17, 0xFE       ; 254
     9ea:       80 91 bc 00     lds     r24, 0x00BC
     9ee:       18 17           cp      r17, r24
     9f0:       a8 f3           brcs    .-22            ; 0x9dc <UIMgr_processReceivedData+0x114>
     9f2:       04 d2           rcall   .+1032          ; 0xdfc <CamConfig_sendFifoCmds>
     9f4:       44 c0           rjmp    .+136           ; 0xa7e <UIMgr_processReceivedData+0x1b6>
     9f6:       84 30           cpi     r24, 0x04       ; 4
     9f8:       31 f4           brne    .+12            ; 0xa06 <UIMgr_processReceivedData+0x13e>
     9fa:       84 e6           ldi     r24, 0x64       ; 100
     9fc:       90 e0           ldi     r25, 0x00       ; 0
     9fe:       53 d2           rcall   .+1190          ; 0xea6 <Utility_delay>
     a00:       80 e8           ldi     r24, 0x80       ; 128
     a02:       bf db           rcall   .-2178          ; 0x182 <Exec_writeEventFifo>
     a04:       3c c0           rjmp    .+120           ; 0xa7e <UIMgr_processReceivedData+0x1b6>
     a06:       85 30           cpi     r24, 0x05       ; 5
     a08:       19 f4           brne    .+6             ; 0xa10 <UIMgr_processReceivedData+0x148>
     a0a:       81 e8           ldi     r24, 0x81       ; 129
     a0c:       ba db           rcall   .-2188          ; 0x182 <Exec_writeEventFifo>
     a0e:       37 c0           rjmp    .+110           ; 0xa7e <UIMgr_processReceivedData+0x1b6>
     a10:       86 30           cpi     r24, 0x06       ; 6
     a12:       09 f0           breq    .+2             ; 0xa16 <UIMgr_processReceivedData+0x14e>
     a14:       34 c0           rjmp    .+104           ; 0xa7e <UIMgr_processReceivedData+0x1b6>
     a16:       80 91 bc 00     lds     r24, 0x00BC
     a1a:       88 23           and     r24, r24
     a1c:       81 f1           breq    .+96            ; 0xa7e <UIMgr_processReceivedData+0x1b6>
     a1e:       40 e0           ldi     r20, 0x00       ; 0
     a20:       84 2f           mov     r24, r20
     a22:       99 27           eor     r25, r25
     a24:       9c 01           movw    r18, r24
     a26:       2f 5f           subi    r18, 0xFF       ; 255
     a28:       3f 4f           sbci    r19, 0xFF       ; 255
     a2a:       f9 01           movw    r30, r18
     a2c:       ee 0d           add     r30, r14
     a2e:       ff 1d           adc     r31, r15
     a30:       e0 81           ld      r30, Z
     a32:       ec 01           movw    r28, r24
     a34:       c8 0d           add     r28, r8
     a36:       d9 1d           adc     r29, r9
     a38:       e8 83           st      Y, r30
uint8_t 
eeprom_read_byte (const uint8_t *addr) 
{
  uint8_t result;
  __asm__ __volatile__
     a3a:       d9 01           movw    r26, r18
     a3c:       32 d3           rcall   .+1636          ; 0x10a2 <__eeprom_read_byte_1C1D1E>
     a3e:       80 2d           mov     r24, r0
     a40:       e8 17           cp      r30, r24
     a42:       c1 f0           breq    .+48            ; 0xa74 <UIMgr_processReceivedData+0x1ac>

void 
eeprom_write_byte (uint8_t *addr,uint8_t value)
{
  __asm__ __volatile__ (
     a44:       d9 01           movw    r26, r18
     a46:       0e 2e           mov     r0, r30
     a48:       39 d3           rcall   .+1650          ; 0x10bc <__eeprom_write_byte_1C1D1E>
     a4a:       d9 01           movw    r26, r18
     a4c:       2a d3           rcall   .+1620          ; 0x10a2 <__eeprom_read_byte_1C1D1E>
     a4e:       80 2d           mov     r24, r0
     a50:       98 81           ld      r25, Y
     a52:       89 17           cp      r24, r25
     a54:       79 f0           breq    .+30            ; 0xa74 <UIMgr_processReceivedData+0x1ac>

void 
eeprom_write_byte (uint8_t *addr,uint8_t value)
{
  __asm__ __volatile__ (
     a56:       d9 01           movw    r26, r18
     a58:       09 2e           mov     r0, r25
     a5a:       30 d3           rcall   .+1632          ; 0x10bc <__eeprom_write_byte_1C1D1E>
     a5c:       d9 01           movw    r26, r18
     a5e:       21 d3           rcall   .+1602          ; 0x10a2 <__eeprom_read_byte_1C1D1E>
     a60:       80 2d           mov     r24, r0
     a62:       98 81           ld      r25, Y
     a64:       89 17           cp      r24, r25
     a66:       31 f0           breq    .+12            ; 0xa74 <UIMgr_processReceivedData+0x1ac>

void 
eeprom_write_byte (uint8_t *addr,uint8_t value)
{
  __asm__ __volatile__ (
     a68:       d9 01           movw    r26, r18
     a6a:       09 2e           mov     r0, r25
     a6c:       27 d3           rcall   .+1614          ; 0x10bc <__eeprom_write_byte_1C1D1E>
     a6e:       d9 01           movw    r26, r18
     a70:       18 d3           rcall   .+1584          ; 0x10a2 <__eeprom_read_byte_1C1D1E>
     a72:       80 2d           mov     r24, r0
     a74:       4f 5f           subi    r20, 0xFF       ; 255
     a76:       80 91 bc 00     lds     r24, 0x00BC
     a7a:       48 17           cp      r20, r24
     a7c:       88 f2           brcs    .-94            ; 0xa20 <UIMgr_processReceivedData+0x158>
     a7e:       10 92 bc 00     sts     0x00BC, r1
     a82:       80 e4           ldi     r24, 0x40       ; 64
     a84:       f7 01           movw    r30, r14
     a86:       11 92           st      Z+, r1
     a88:       8a 95           dec     r24
     a8a:       e9 f7           brne    .-6             ; 0xa86 <UIMgr_processReceivedData+0x1be>
     a8c:       43 c0           rjmp    .+134           ; 0xb14 <UIMgr_processReceivedData+0x24c>
     a8e:       20 32           cpi     r18, 0x20       ; 32
     a90:       09 f5           brne    .+66            ; 0xad4 <UIMgr_processReceivedData+0x20c>
     a92:       80 91 bc 00     lds     r24, 0x00BC
     a96:       88 23           and     r24, r24
     a98:       39 f4           brne    .+14            ; 0xaa8 <UIMgr_processReceivedData+0x1e0>
     a9a:       76 de           rcall   .-788           ; 0x788 <UIMgr_convertTokenToCmd>
     a9c:       80 91 bc 00     lds     r24, 0x00BC
     aa0:       8f 5f           subi    r24, 0xFF       ; 255
     aa2:       80 93 bc 00     sts     0x00BC, r24
     aa6:       36 c0           rjmp    .+108           ; 0xb14 <UIMgr_processReceivedData+0x24c>
     aa8:       99 27           eor     r25, r25
     aaa:       01 96           adiw    r24, 0x01       ; 1
     aac:       80 34           cpi     r24, 0x40       ; 64
     aae:       91 05           cpc     r25, r1
     ab0:       54 f0           brlt    .+20            ; 0xac6 <UIMgr_processReceivedData+0x1fe>
     ab2:       10 92 bd 00     sts     0x00BD, r1
     ab6:       10 92 be 00     sts     0x00BE, r1
     aba:       10 92 bc 00     sts     0x00BC, r1
     abe:       89 e0           ldi     r24, 0x09       ; 9
     ac0:       80 93 62 00     sts     0x0062, r24
     ac4:       27 c0           rjmp    .+78            ; 0xb14 <UIMgr_processReceivedData+0x24c>
     ac6:       da de           rcall   .-588           ; 0x87c <UIMgr_convertTokenToValue>
     ac8:       80 91 bc 00     lds     r24, 0x00BC
     acc:       8f 5f           subi    r24, 0xFF       ; 255
     ace:       80 93 bc 00     sts     0x00BC, r24
     ad2:       20 c0           rjmp    .+64            ; 0xb14 <UIMgr_processReceivedData+0x24c>
     ad4:       82 2f           mov     r24, r18
     ad6:       81 54           subi    r24, 0x41       ; 65
     ad8:       8a 31           cpi     r24, 0x1A       ; 26
     ada:       18 f0           brcs    .+6             ; 0xae2 <UIMgr_processReceivedData+0x21a>
     adc:       8f 5e           subi    r24, 0xEF       ; 239
     ade:       8a 30           cpi     r24, 0x0A       ; 10
     ae0:       b0 f4           brcc    .+44            ; 0xb0e <UIMgr_processReceivedData+0x246>
     ae2:       80 91 be 00     lds     r24, 0x00BE
     ae6:       f5 01           movw    r30, r10
     ae8:       e8 0f           add     r30, r24
     aea:       f1 1d           adc     r31, r1
     aec:       20 83           st      Z, r18
     aee:       90 91 bd 00     lds     r25, 0x00BD
     af2:       9f 5f           subi    r25, 0xFF       ; 255
     af4:       90 93 bd 00     sts     0x00BD, r25
     af8:       8f 5f           subi    r24, 0xFF       ; 255
     afa:       80 93 be 00     sts     0x00BE, r24
     afe:       94 30           cpi     r25, 0x04       ; 4
     b00:       48 f0           brcs    .+18            ; 0xb14 <UIMgr_processReceivedData+0x24c>
     b02:       89 e0           ldi     r24, 0x09       ; 9
     b04:       80 93 62 00     sts     0x0062, r24
     b08:       10 92 be 00     sts     0x00BE, r1
     b0c:       03 c0           rjmp    .+6             ; 0xb14 <UIMgr_processReceivedData+0x24c>
     b0e:       89 e0           ldi     r24, 0x09       ; 9
     b10:       80 93 62 00     sts     0x0062, r24
     b14:       90 91 b9 00     lds     r25, 0x00B9
     b18:       80 91 b8 00     lds     r24, 0x00B8
     b1c:       89 17           cp      r24, r25
     b1e:       09 f0           breq    .+2             ; 0xb22 <UIMgr_processReceivedData+0x25a>
     b20:       ff ce           rjmp    .-514           ; 0x920 <UIMgr_processReceivedData+0x58>
     b22:       e8 94           clt
     b24:       df 91           pop     r29
     b26:       cf 91           pop     r28
     b28:       1f 91           pop     r17
     b2a:       ff 90           pop     r15
     b2c:       ef 90           pop     r14
     b2e:       df 90           pop     r13
     b30:       cf 90           pop     r12
     b32:       bf 90           pop     r11
     b34:       af 90           pop     r10
     b36:       9f 90           pop     r9
     b38:       8f 90           pop     r8
     b3a:       7f 90           pop     r7
     b3c:       6f 90           pop     r6
     b3e:       08 95           ret

00000b40 <UIMgr_dispatchEvent>:
     b40:       80 31           cpi     r24, 0x10       ; 16
     b42:       29 f0           breq    .+10            ; 0xb4e <UIMgr_dispatchEvent+0xe>
     b44:       80 39           cpi     r24, 0x90       ; 144
     b46:       39 f0           breq    .+14            ; 0xb56 <UIMgr_dispatchEvent+0x16>
     b48:       81 30           cpi     r24, 0x01       ; 1
     b4a:       31 f4           brne    .+12            ; 0xb58 <UIMgr_dispatchEvent+0x18>
     b4c:       02 c0           rjmp    .+4             ; 0xb52 <UIMgr_dispatchEvent+0x12>
     b4e:       13 de           rcall   .-986           ; 0x776 <UIMgr_transmitPendingData>
     b50:       08 95           ret
     b52:       ba de           rcall   .-652           ; 0x8c8 <UIMgr_processReceivedData>
     b54:       08 95           ret
     b56:       f0 dd           rcall   .-1056          ; 0x738 <UIMgr_flushTxBuffer>
     b58:       08 95           ret

00000b5a <UartInt_init>:
     b5a:       10 bc           out     0x20, r1        ; 32
     b5c:       82 e1           ldi     r24, 0x12       ; 18
     b5e:       89 b9           out     0x09, r24       ; 9
     b60:       88 e9           ldi     r24, 0x98       ; 152
     b62:       8a b9           out     0x0a, r24       ; 10
     b64:       86 e8           ldi     r24, 0x86       ; 134
     b66:       80 bd           out     0x20, r24       ; 32
     b68:       82 e0           ldi     r24, 0x02       ; 2
     b6a:       8b b9           out     0x0b, r24       ; 11
     b6c:       08 95           ret

00000b6e <UartInt_txByte>:
     b6e:       5d 9b           sbis    0x0b, 5 ; 11
     b70:       fe cf           rjmp    .-4             ; 0xb6e <UartInt_txByte>
     b72:       8c b9           out     0x0c, r24       ; 12
     b74:       08 95           ret

00000b76 <__vector_11>:
     b76:       1f 92           push    r1
     b78:       0f 92           push    r0
     b7a:       0f b6           in      r0, 0x3f        ; 63
     b7c:       0f 92           push    r0
     b7e:       11 24           eor     r1, r1
     b80:       8f 93           push    r24
     b82:       9f 93           push    r25
     b84:       ef 93           push    r30
     b86:       ff 93           push    r31
     b88:       80 91 b8 00     lds     r24, 0x00B8
     b8c:       9c b1           in      r25, 0x0c       ; 12
     b8e:       e4 e7           ldi     r30, 0x74       ; 116
     b90:       f2 e0           ldi     r31, 0x02       ; 2
     b92:       e8 0f           add     r30, r24
     b94:       f1 1d           adc     r31, r1
     b96:       90 83           st      Z, r25
     b98:       8f 5f           subi    r24, 0xFF       ; 255
     b9a:       8f 71           andi    r24, 0x1F       ; 31
     b9c:       80 93 b8 00     sts     0x00B8, r24
     ba0:       80 91 70 00     lds     r24, 0x0070
     ba4:       ec e6           ldi     r30, 0x6C       ; 108
     ba6:       f2 e0           ldi     r31, 0x02       ; 2
     ba8:       e8 0f           add     r30, r24
     baa:       f1 1d           adc     r31, r1
     bac:       91 e0           ldi     r25, 0x01       ; 1
     bae:       90 83           st      Z, r25
     bb0:       8f 5f           subi    r24, 0xFF       ; 255
     bb2:       87 70           andi    r24, 0x07       ; 7
     bb4:       80 93 70 00     sts     0x0070, r24
     bb8:       ff 91           pop     r31
     bba:       ef 91           pop     r30
     bbc:       9f 91           pop     r25
     bbe:       8f 91           pop     r24
     bc0:       0f 90           pop     r0
     bc2:       0f be           out     0x3f, r0        ; 63
     bc4:       0f 90           pop     r0
     bc6:       1f 90           pop     r1
     bc8:       18 95           reti

00000bca <I2CInt_init>:
     bca:       11 b8           out     0x01, r1        ; 1
     bcc:       88 e4           ldi     r24, 0x48       ; 72
     bce:       80 b9           out     0x00, r24       ; 0
     bd0:       08 95           ret

00000bd2 <I2CInt_writeData>:
     bd2:       98 2f           mov     r25, r24
     bd4:       80 91 08 01     lds     r24, 0x0108
     bd8:       88 23           and     r24, r24
     bda:       e4 f3           brlt    .-8             ; 0xbd4 <I2CInt_writeData+0x2>
     bdc:       06 b6           in      r0, 0x36        ; 54
     bde:       04 fc           sbrc    r0, 4
     be0:       fd cf           rjmp    .-6             ; 0xbdc <I2CInt_writeData+0xa>
     be2:       90 93 03 01     sts     0x0103, r25
     be6:       70 93 05 01     sts     0x0105, r23
     bea:       60 93 04 01     sts     0x0104, r22
     bee:       40 93 07 01     sts     0x0107, r20
     bf2:       10 92 06 01     sts     0x0106, r1
     bf6:       10 92 09 01     sts     0x0109, r1
     bfa:       85 ea           ldi     r24, 0xA5       ; 165
     bfc:       86 bf           out     0x36, r24       ; 54
     bfe:       80 91 08 01     lds     r24, 0x0108
     c02:       80 68           ori     r24, 0x80       ; 128
     c04:       80 93 08 01     sts     0x0108, r24
     c08:       08 95           ret

00000c0a <I2CInt_readData>:
     c0a:       98 2f           mov     r25, r24
     c0c:       80 91 08 01     lds     r24, 0x0108
     c10:       88 23           and     r24, r24
     c12:       e4 f3           brlt    .-8             ; 0xc0c <I2CInt_readData+0x2>
     c14:       90 93 03 01     sts     0x0103, r25
     c18:       70 93 05 01     sts     0x0105, r23
     c1c:       60 93 04 01     sts     0x0104, r22
     c20:       40 93 07 01     sts     0x0107, r20
     c24:       81 e0           ldi     r24, 0x01       ; 1
     c26:       80 93 06 01     sts     0x0106, r24
     c2a:       10 92 09 01     sts     0x0109, r1
     c2e:       85 ea           ldi     r24, 0xA5       ; 165
     c30:       86 bf           out     0x36, r24       ; 54
     c32:       80 91 08 01     lds     r24, 0x0108
     c36:       80 68           ori     r24, 0x80       ; 128
     c38:       80 93 08 01     sts     0x0108, r24
     c3c:       08 95           ret

00000c3e <I2CInt_isI2cBusy>:
     c3e:       80 91 08 01     lds     r24, 0x0108
     c42:       88 1f           adc     r24, r24
     c44:       88 27           eor     r24, r24
     c46:       88 1f           adc     r24, r24
     c48:       99 27           eor     r25, r25
     c4a:       08 95           ret

00000c4c <__vector_17>:
     c4c:       1f 92           push    r1
     c4e:       0f 92           push    r0
     c50:       0f b6           in      r0, 0x3f        ; 63
     c52:       0f 92           push    r0
     c54:       11 24           eor     r1, r1
     c56:       8f 93           push    r24
     c58:       9f 93           push    r25
     c5a:       af 93           push    r26
     c5c:       bf 93           push    r27
     c5e:       ef 93           push    r30
     c60:       ff 93           push    r31
     c62:       81 b1           in      r24, 0x01       ; 1
     c64:       99 27           eor     r25, r25
     c66:       aa 27           eor     r26, r26
     c68:       bb 27           eor     r27, r27
     c6a:       88 7f           andi    r24, 0xF8       ; 248
     c6c:       90 70           andi    r25, 0x00       ; 0
     c6e:       a0 70           andi    r26, 0x00       ; 0
     c70:       b0 70           andi    r27, 0x00       ; 0
     c72:       fc 01           movw    r30, r24
     c74:       38 97           sbiw    r30, 0x08       ; 8
     c76:       e1 35           cpi     r30, 0x51       ; 81
     c78:       f1 05           cpc     r31, r1
     c7a:       08 f0           brcs    .+2             ; 0xc7e <__vector_17+0x32>
     c7c:       97 c0           rjmp    .+302           ; 0xdac <__vector_17+0x160>
     c7e:       ed 5e           subi    r30, 0xED       ; 237
     c80:       ff 4f           sbci    r31, 0xFF       ; 255
     c82:       09 94           ijmp
     c84:       80 91 09 01     lds     r24, 0x0109
     c88:       83 30           cpi     r24, 0x03       ; 3
     c8a:       48 f0           brcs    .+18            ; 0xc9e <__vector_17+0x52>
     c8c:       86 b7           in      r24, 0x36       ; 54
     c8e:       80 69           ori     r24, 0x90       ; 144
     c90:       86 bf           out     0x36, r24       ; 54
     c92:       80 91 08 01     lds     r24, 0x0108
     c96:       8f 77           andi    r24, 0x7F       ; 127
     c98:       80 93 08 01     sts     0x0108, r24
     c9c:       87 c0           rjmp    .+270           ; 0xdac <__vector_17+0x160>
     c9e:       80 91 03 01     lds     r24, 0x0103
     ca2:       90 91 06 01     lds     r25, 0x0106
     ca6:       88 0f           add     r24, r24
     ca8:       89 0f           add     r24, r25
     caa:       83 b9           out     0x03, r24       ; 3
     cac:       86 b7           in      r24, 0x36       ; 54
     cae:       8f 7d           andi    r24, 0xDF       ; 223
     cb0:       86 bf           out     0x36, r24       ; 54
     cb2:       7c c0           rjmp    .+248           ; 0xdac <__vector_17+0x160>
     cb4:       10 92 09 01     sts     0x0109, r1
     cb8:       e0 91 04 01     lds     r30, 0x0104
     cbc:       f0 91 05 01     lds     r31, 0x0105
     cc0:       81 91           ld      r24, Z+
     cc2:       83 b9           out     0x03, r24       ; 3
     cc4:       f0 93 05 01     sts     0x0105, r31
     cc8:       e0 93 04 01     sts     0x0104, r30
     ccc:       86 b7           in      r24, 0x36       ; 54
     cce:       80 68           ori     r24, 0x80       ; 128
     cd0:       86 bf           out     0x36, r24       ; 54
     cd2:       6c c0           rjmp    .+216           ; 0xdac <__vector_17+0x160>
     cd4:       80 91 09 01     lds     r24, 0x0109
     cd8:       8f 5f           subi    r24, 0xFF       ; 255
     cda:       80 93 09 01     sts     0x0109, r24
     cde:       86 b7           in      r24, 0x36       ; 54
     ce0:       80 6b           ori     r24, 0xB0       ; 176
     ce2:       86 bf           out     0x36, r24       ; 54
     ce4:       63 c0           rjmp    .+198           ; 0xdac <__vector_17+0x160>
     ce6:       80 91 07 01     lds     r24, 0x0107
     cea:       81 50           subi    r24, 0x01       ; 1
     cec:       80 93 07 01     sts     0x0107, r24
     cf0:       80 91 07 01     lds     r24, 0x0107
     cf4:       88 23           and     r24, r24
     cf6:       71 f0           breq    .+28            ; 0xd14 <__vector_17+0xc8>
     cf8:       e0 91 04 01     lds     r30, 0x0104
     cfc:       f0 91 05 01     lds     r31, 0x0105
     d00:       81 91           ld      r24, Z+
     d02:       83 b9           out     0x03, r24       ; 3
     d04:       f0 93 05 01     sts     0x0105, r31
     d08:       e0 93 04 01     sts     0x0104, r30
     d0c:       86 b7           in      r24, 0x36       ; 54
     d0e:       80 68           ori     r24, 0x80       ; 128
     d10:       86 bf           out     0x36, r24       ; 54
     d12:       4c c0           rjmp    .+152           ; 0xdac <__vector_17+0x160>
     d14:       86 b7           in      r24, 0x36       ; 54
     d16:       80 69           ori     r24, 0x90       ; 144
     d18:       86 bf           out     0x36, r24       ; 54
     d1a:       80 91 08 01     lds     r24, 0x0108
     d1e:       8f 77           andi    r24, 0x7F       ; 127
     d20:       80 93 08 01     sts     0x0108, r24
     d24:       43 c0           rjmp    .+134           ; 0xdac <__vector_17+0x160>
     d26:       86 b7           in      r24, 0x36       ; 54
     d28:       80 69           ori     r24, 0x90       ; 144
     d2a:       86 bf           out     0x36, r24       ; 54
     d2c:       80 91 08 01     lds     r24, 0x0108
     d30:       8f 77           andi    r24, 0x7F       ; 127
     d32:       80 93 08 01     sts     0x0108, r24
     d36:       3a c0           rjmp    .+116           ; 0xdac <__vector_17+0x160>
     d38:       80 91 07 01     lds     r24, 0x0107
     d3c:       81 50           subi    r24, 0x01       ; 1
     d3e:       80 93 07 01     sts     0x0107, r24
     d42:       80 91 07 01     lds     r24, 0x0107
     d46:       88 23           and     r24, r24
     d48:       21 f0           breq    .+8             ; 0xd52 <__vector_17+0x106>
     d4a:       86 b7           in      r24, 0x36       ; 54
     d4c:       80 6c           ori     r24, 0xC0       ; 192
     d4e:       86 bf           out     0x36, r24       ; 54
     d50:       2d c0           rjmp    .+90            ; 0xdac <__vector_17+0x160>
     d52:       86 b7           in      r24, 0x36       ; 54
     d54:       80 68           ori     r24, 0x80       ; 128
     d56:       86 bf           out     0x36, r24       ; 54
     d58:       29 c0           rjmp    .+82            ; 0xdac <__vector_17+0x160>
     d5a:       e0 91 04 01     lds     r30, 0x0104
     d5e:       f0 91 05 01     lds     r31, 0x0105
     d62:       83 b1           in      r24, 0x03       ; 3
     d64:       81 93           st      Z+, r24
     d66:       f0 93 05 01     sts     0x0105, r31
     d6a:       e0 93 04 01     sts     0x0104, r30
     d6e:       80 91 07 01     lds     r24, 0x0107
     d72:       81 50           subi    r24, 0x01       ; 1
     d74:       80 93 07 01     sts     0x0107, r24
     d78:       80 91 07 01     lds     r24, 0x0107
     d7c:       88 23           and     r24, r24
     d7e:       21 f0           breq    .+8             ; 0xd88 <__vector_17+0x13c>
     d80:       86 b7           in      r24, 0x36       ; 54
     d82:       80 6c           ori     r24, 0xC0       ; 192
     d84:       86 bf           out     0x36, r24       ; 54
     d86:       12 c0           rjmp    .+36            ; 0xdac <__vector_17+0x160>
     d88:       86 b7           in      r24, 0x36       ; 54
     d8a:       8f 7b           andi    r24, 0xBF       ; 191
     d8c:       86 bf           out     0x36, r24       ; 54
     d8e:       0e c0           rjmp    .+28            ; 0xdac <__vector_17+0x160>
     d90:       e0 91 04 01     lds     r30, 0x0104
     d94:       f0 91 05 01     lds     r31, 0x0105
     d98:       83 b1           in      r24, 0x03       ; 3
     d9a:       80 83           st      Z, r24
     d9c:       86 b7           in      r24, 0x36       ; 54
     d9e:       80 69           ori     r24, 0x90       ; 144
     da0:       86 bf           out     0x36, r24       ; 54
     da2:       80 91 08 01     lds     r24, 0x0108
     da6:       8f 77           andi    r24, 0x7F       ; 127
     da8:       80 93 08 01     sts     0x0108, r24
     dac:       ff 91           pop     r31
     dae:       ef 91           pop     r30
     db0:       bf 91           pop     r27
     db2:       af 91           pop     r26
     db4:       9f 91           pop     r25
     db6:       8f 91           pop     r24
     db8:       0f 90           pop     r0
     dba:       0f be           out     0x3f, r0        ; 63
     dbc:       0f 90           pop     r0
     dbe:       1f 90           pop     r1
     dc0:       18 95           reti

00000dc2 <CamConfig_writeTxFifo>:
     dc2:       20 91 0a 01     lds     r18, 0x010A
     dc6:       e2 2f           mov     r30, r18
     dc8:       ff 27           eor     r31, r31
     dca:       ee 0f           add     r30, r30
     dcc:       ff 1f           adc     r31, r31
     dce:       ec 52           subi    r30, 0x2C       ; 44
     dd0:       fd 4f           sbci    r31, 0xFD       ; 253
     dd2:       91 83           std     Z+1, r25        ; 0x01
     dd4:       80 83           st      Z, r24
     dd6:       2f 5f           subi    r18, 0xFF       ; 255
     dd8:       27 70           andi    r18, 0x07       ; 7
     dda:       20 93 0a 01     sts     0x010A, r18
     dde:       90 e0           ldi     r25, 0x00       ; 0
     de0:       80 91 0b 01     lds     r24, 0x010B
     de4:       28 17           cp      r18, r24
     de6:       09 f4           brne    .+2             ; 0xdea <CamConfig_writeTxFifo+0x28>
     de8:       91 e0           ldi     r25, 0x01       ; 1
     dea:       81 e0           ldi     r24, 0x01       ; 1
     dec:       89 27           eor     r24, r25
     dee:       99 27           eor     r25, r25
     df0:       08 95           ret

00000df2 <CamConfig_setCamReg>:
     df2:       28 2f           mov     r18, r24
     df4:       36 2f           mov     r19, r22
     df6:       c9 01           movw    r24, r18
     df8:       e4 df           rcall   .-56            ; 0xdc2 <CamConfig_writeTxFifo>
     dfa:       08 95           ret

00000dfc <CamConfig_sendFifoCmds>:
     dfc:       ef 92           push    r14
     dfe:       ff 92           push    r15
     e00:       0f 93           push    r16
     e02:       1f 93           push    r17
     e04:       cf 93           push    r28
     e06:       df 93           push    r29
     e08:       cd b7           in      r28, 0x3d       ; 61
     e0a:       de b7           in      r29, 0x3e       ; 62
     e0c:       22 97           sbiw    r28, 0x02       ; 2
     e0e:       0f b6           in      r0, 0x3f        ; 63
     e10:       f8 94           cli
     e12:       de bf           out     0x3e, r29       ; 62
     e14:       0f be           out     0x3f, r0        ; 63
     e16:       cd bf           out     0x3d, r28       ; 61
     e18:       0f 2e           mov     r0, r31
     e1a:       f4 ed           ldi     r31, 0xD4       ; 212
     e1c:       ef 2e           mov     r14, r31
     e1e:       f2 e0           ldi     r31, 0x02       ; 2
     e20:       ff 2e           mov     r15, r31
     e22:       f0 2d           mov     r31, r0
     e24:       8e 01           movw    r16, r28
     e26:       0f 5f           subi    r16, 0xFF       ; 255
     e28:       1f 4f           sbci    r17, 0xFF       ; 255
     e2a:       19 c0           rjmp    .+50            ; 0xe5e <CamConfig_sendFifoCmds+0x62>
     e2c:       e3 2f           mov     r30, r19
     e2e:       ff 27           eor     r31, r31
     e30:       ee 0f           add     r30, r30
     e32:       ff 1f           adc     r31, r31
     e34:       ee 0d           add     r30, r14
     e36:       ff 1d           adc     r31, r15
     e38:       91 81           ldd     r25, Z+1        ; 0x01
     e3a:       20 81           ld      r18, Z
     e3c:       83 2f           mov     r24, r19
     e3e:       8f 5f           subi    r24, 0xFF       ; 255
     e40:       87 70           andi    r24, 0x07       ; 7
     e42:       80 93 0b 01     sts     0x010B, r24
     e46:       9a 83           std     Y+2, r25        ; 0x02
     e48:       29 83           std     Y+1, r18        ; 0x01
     e4a:       42 e0           ldi     r20, 0x02       ; 2
     e4c:       b8 01           movw    r22, r16
     e4e:       80 e6           ldi     r24, 0x60       ; 96
     e50:       c0 de           rcall   .-640           ; 0xbd2 <I2CInt_writeData>
     e52:       84 e6           ldi     r24, 0x64       ; 100
     e54:       90 e0           ldi     r25, 0x00       ; 0
     e56:       27 d0           rcall   .+78            ; 0xea6 <Utility_delay>
     e58:       f2 de           rcall   .-540           ; 0xc3e <I2CInt_isI2cBusy>
     e5a:       81 30           cpi     r24, 0x01       ; 1
     e5c:       e9 f3           breq    .-6             ; 0xe58 <CamConfig_sendFifoCmds+0x5c>
     e5e:       30 91 0b 01     lds     r19, 0x010B
     e62:       80 91 0a 01     lds     r24, 0x010A
     e66:       83 17           cp      r24, r19
     e68:       09 f7           brne    .-62            ; 0xe2c <CamConfig_sendFifoCmds+0x30>
     e6a:       22 96           adiw    r28, 0x02       ; 2
     e6c:       0f b6           in      r0, 0x3f        ; 63
     e6e:       f8 94           cli
     e70:       de bf           out     0x3e, r29       ; 62
     e72:       0f be           out     0x3f, r0        ; 63
     e74:       cd bf           out     0x3d, r28       ; 61
     e76:       df 91           pop     r29
     e78:       cf 91           pop     r28
     e7a:       1f 91           pop     r17
     e7c:       0f 91           pop     r16
     e7e:       ff 90           pop     r15
     e80:       ef 90           pop     r14
     e82:       08 95           ret

00000e84 <CamConfig_init>:
     e84:       60 e2           ldi     r22, 0x20       ; 32
     e86:       84 e1           ldi     r24, 0x14       ; 20
     e88:       b4 df           rcall   .-152           ; 0xdf2 <CamConfig_setCamReg>
     e8a:       60 e4           ldi     r22, 0x40       ; 64
     e8c:       89 e3           ldi     r24, 0x39       ; 57
     e8e:       b1 df           rcall   .-158           ; 0xdf2 <CamConfig_setCamReg>
     e90:       68 e2           ldi     r22, 0x28       ; 40
     e92:       82 e1           ldi     r24, 0x12       ; 18
     e94:       ae df           rcall   .-164           ; 0xdf2 <CamConfig_setCamReg>
     e96:       65 e0           ldi     r22, 0x05       ; 5
     e98:       88 e2           ldi     r24, 0x28       ; 40
     e9a:       ab df           rcall   .-170           ; 0xdf2 <CamConfig_setCamReg>
     e9c:       61 e0           ldi     r22, 0x01       ; 1
     e9e:       83 e1           ldi     r24, 0x13       ; 19
     ea0:       a8 df           rcall   .-176           ; 0xdf2 <CamConfig_setCamReg>
     ea2:       ac df           rcall   .-168           ; 0xdfc <CamConfig_sendFifoCmds>
     ea4:       08 95           ret

00000ea6 <Utility_delay>:
     ea6:       cf 93           push    r28
     ea8:       df 93           push    r29
     eaa:       cd b7           in      r28, 0x3d       ; 61
     eac:       de b7           in      r29, 0x3e       ; 62
     eae:       24 97           sbiw    r28, 0x04       ; 4
     eb0:       0f b6           in      r0, 0x3f        ; 63
     eb2:       f8 94           cli
     eb4:       de bf           out     0x3e, r29       ; 62
     eb6:       0f be           out     0x3f, r0        ; 63
     eb8:       cd bf           out     0x3d, r28       ; 61
     eba:       9c 01           movw    r18, r24
     ebc:       1a 82           std     Y+2, r1 ; 0x02
     ebe:       19 82           std     Y+1, r1 ; 0x01
     ec0:       1c 82           std     Y+4, r1 ; 0x04
     ec2:       1b 82           std     Y+3, r1 ; 0x03
     ec4:       1a 82           std     Y+2, r1 ; 0x02
     ec6:       19 82           std     Y+1, r1 ; 0x01
     ec8:       89 81           ldd     r24, Y+1        ; 0x01
     eca:       9a 81           ldd     r25, Y+2        ; 0x02
     ecc:       82 17           cp      r24, r18
     ece:       93 07           cpc     r25, r19
     ed0:       e0 f4           brcc    .+56            ; 0xf0a <Utility_delay+0x64>
     ed2:       1c 82           std     Y+4, r1 ; 0x04
     ed4:       1b 82           std     Y+3, r1 ; 0x03
     ed6:       8b 81           ldd     r24, Y+3        ; 0x03
     ed8:       9c 81           ldd     r25, Y+4        ; 0x04
     eda:       88 5e           subi    r24, 0xE8       ; 232
     edc:       93 40           sbci    r25, 0x03       ; 3
     ede:       58 f4           brcc    .+22            ; 0xef6 <Utility_delay+0x50>
     ee0:       00 00           nop
     ee2:       8b 81           ldd     r24, Y+3        ; 0x03
     ee4:       9c 81           ldd     r25, Y+4        ; 0x04
     ee6:       01 96           adiw    r24, 0x01       ; 1
     ee8:       9c 83           std     Y+4, r25        ; 0x04
     eea:       8b 83           std     Y+3, r24        ; 0x03
     eec:       8b 81           ldd     r24, Y+3        ; 0x03
     eee:       9c 81           ldd     r25, Y+4        ; 0x04
     ef0:       88 5e           subi    r24, 0xE8       ; 232
     ef2:       93 40           sbci    r25, 0x03       ; 3
     ef4:       a8 f3           brcs    .-22            ; 0xee0 <Utility_delay+0x3a>
     ef6:       89 81           ldd     r24, Y+1        ; 0x01
     ef8:       9a 81           ldd     r25, Y+2        ; 0x02
     efa:       01 96           adiw    r24, 0x01       ; 1
     efc:       9a 83           std     Y+2, r25        ; 0x02
     efe:       89 83           std     Y+1, r24        ; 0x01
     f00:       89 81           ldd     r24, Y+1        ; 0x01
     f02:       9a 81           ldd     r25, Y+2        ; 0x02
     f04:       82 17           cp      r24, r18
     f06:       93 07           cpc     r25, r19
     f08:       20 f3           brcs    .-56            ; 0xed2 <Utility_delay+0x2c>
     f0a:       24 96           adiw    r28, 0x04       ; 4
     f0c:       0f b6           in      r0, 0x3f        ; 63
     f0e:       f8 94           cli
     f10:       de bf           out     0x3e, r29       ; 62
     f12:       0f be           out     0x3f, r0        ; 63
     f14:       cd bf           out     0x3d, r28       ; 61
     f16:       df 91           pop     r29
     f18:       cf 91           pop     r28
     f1a:       08 95           ret

00000f1c <DebugInt_init>:
***********************************************************/    
void DebugInt_init(void)
{
        /* set PortD pin6 for output */
        DDRD  |= 0x40;
     f1c:       8e 9a           sbi     0x11, 6 ; 17
        /* turn on LED */
        PORTD |= 0x40;
     f1e:       96 9a           sbi     0x12, 6 ; 18
    Utility_delay(500);
     f20:       84 ef           ldi     r24, 0xF4       ; 244
     f22:       91 e0           ldi     r25, 0x01       ; 1
     f24:       c0 df           rcall   .-128           ; 0xea6 <Utility_delay>
    PORTD &= 0xBF;
     f26:       96 98           cbi     0x12, 6 ; 18
    Utility_delay(500);
     f28:       84 ef           ldi     r24, 0xF4       ; 244
     f2a:       91 e0           ldi     r25, 0x01       ; 1
     f2c:       bc df           rcall   .-136           ; 0xea6 <Utility_delay>
    PORTD |= 0x40;
     f2e:       96 9a           sbi     0x12, 6 ; 18
    Utility_delay(500);
     f30:       84 ef           ldi     r24, 0xF4       ; 244
     f32:       91 e0           ldi     r25, 0x01       ; 1
     f34:       b8 df           rcall   .-144           ; 0xea6 <Utility_delay>
    PORTD &= 0xBF;
     f36:       96 98           cbi     0x12, 6 ; 18
    Utility_delay(500);
     f38:       84 ef           ldi     r24, 0xF4       ; 244
     f3a:       91 e0           ldi     r25, 0x01       ; 1
     f3c:       b4 df           rcall   .-152           ; 0xea6 <Utility_delay>
    PORTD |= 0x40;
     f3e:       96 9a           sbi     0x12, 6 ; 18
    Utility_delay(500);
     f40:       84 ef           ldi     r24, 0xF4       ; 244
     f42:       91 e0           ldi     r25, 0x01       ; 1
     f44:       b0 df           rcall   .-160           ; 0xea6 <Utility_delay>
    PORTD &= 0xBF;
     f46:       96 98           cbi     0x12, 6 ; 18
    Utility_delay(500);
     f48:       84 ef           ldi     r24, 0xF4       ; 244
     f4a:       91 e0           ldi     r25, 0x01       ; 1
     f4c:       ac df           rcall   .-168           ; 0xea6 <Utility_delay>
    PORTD |= 0x40;
     f4e:       96 9a           sbi     0x12, 6 ; 18
     f50:       08 95           ret

00000f52 <CamIntAsm_waitForNewTrackingFrame>:
;               set, and the function will return.
;*****************************************************************
                
CamIntAsm_waitForNewTrackingFrame:
                sbi             _SFR_IO_ADDR(PORTD),PD6  ; For testing...
     f52:       96 9a           sbi     0x12, 6 ; 18
                cbi             _SFR_IO_ADDR(PORTD),PD6         
     f54:       96 98           cbi     0x12, 6 ; 18
                sleep
     f56:       88 95           sleep

00000f58 <CamIntAsm_acquireTrackingLine>:

;*****************************************************************
; REMEMBER...everything from here on out is critically timed to be
; synchronized with the flow of pixel data from the camera...
;*****************************************************************

CamIntAsm_acquireTrackingLine:
                brts    _cleanUp
     f58:       e6 f1           brts    .+120           ; 0xfd2 <_cleanUp>
                ;sbi            _SFR_IO_ADDR(PORTD),PD6 ; For testing...
                ;cbi            _SFR_IO_ADDR(PORTD),PD6
        
        in      tmp1,_SFR_IO_ADDR(TCCR1B) ; Enable the PCLK line to actually
     f5a:       3e b5           in      r19, 0x2e       ; 46
        ori     tmp1, 0x07                 ; feed Timer1
     f5c:       37 60           ori     r19, 0x07       ; 7
        out     _SFR_IO_ADDR(TCCR1B),tmp1 
     f5e:       3e bd           out     0x2e, r19       ; 46
                                                                                ; The line is about to start...         
                ldi     pixelCount,0                    ; Initialize the RLE stats...
     f60:       00 e0           ldi     r16, 0x00       ; 0
                ldi             pixelRunStart,PIXEL_RUN_START_INITIAL   ; Remember, we always calculate
     f62:       10 e5           ldi     r17, 0x50       ; 80
                                                                                                                ; the pixel run length as
                                                                                                                ; TCNT1L - pixelRunStart
                
                ldi             lastColor,0x00                          ; clear out the last color before we start
     f64:       20 e0           ldi     r18, 0x00       ; 0
                
                mov     XH,currLineBuffHigh     ; Load the pointer to the current line
     f66:       b9 2f           mov     r27, r25
                mov             XL,currLineBuffLow              ; buffer into the X pointer regs                 
     f68:       a8 2f           mov     r26, r24
                
                mov     ZH,colorMapHigh         ; Load the pointers to the membership
     f6a:       f7 2f           mov     r31, r23
                mov             ZL,colorMapLow                  ; lookup tables (ZL and YL will be overwritten
     f6c:       e6 2f           mov     r30, r22
                mov     YH,colorMapHigh                 ; as soon as we start reading data) to Z and Y
     f6e:       d7 2f           mov     r29, r23
                
                in              tmp1, _SFR_IO_ADDR(TIMSK)                       ; enable TIMER1 to start counting
     f70:       39 b7           in      r19, 0x39       ; 57
                ori             tmp1, ENABLE_PCLK_TIMER1_OVERFLOW_BITMASK       ; external PCLK pulses and interrupt on 
     f72:       34 60           ori     r19, 0x04       ; 4
                out             _SFR_IO_ADDR(TIMSK),tmp1                        ; overflow
     f74:       39 bf           out     0x39, r19       ; 57
                
                ldi     tmp1,PIXEL_RUN_START_INITIAL    ; set up the TCNT1 to overflow (and
     f76:       30 e5           ldi     r19, 0x50       ; 80
                ldi     tmp2,0xFF                                               ; interrupts) after 176 pixels          
     f78:       4f ef           ldi     r20, 0xFF       ; 255
                out     _SFR_IO_ADDR(TCNT1H),tmp2               
     f7a:       4d bd           out     0x2d, r20       ; 45
                out     _SFR_IO_ADDR(TCNT1L),tmp1                               
     f7c:       3c bd           out     0x2c, r19       ; 44
                
                mov             YL,colorMapLow          
     f7e:       c6 2f           mov     r28, r22
                
                in              tmp1, _SFR_IO_ADDR(GICR)        ; enable the HREF interrupt...remember, we
     f80:       3b b7           in      r19, 0x3b       ; 59
                                                                                        ; only use this interrupt to synchronize
                                                                                        ; the beginning of the line
                ori     tmp1, HREF_INTERRUPT_ENABLE_MASK
     f82:       30 68           ori     r19, 0x80       ; 128
                out             _SFR_IO_ADDR(GICR), tmp1
     f84:       3b bf           out     0x3b, r19       ; 59

00000f86 <_trackFrame>:
                
;*******************************************************************************************
;   Track Frame handler 
;*******************************************************************************************            
                
_trackFrame:            
                sbi             _SFR_IO_ADDR(PORTD),PD6
     f86:       96 9a           sbi     0x12, 6 ; 18
                sleep   ; ...And we wait...
     f88:       88 95           sleep
                
        ; Returning from the interrupt/sleep wakeup will consume
        ; 14 clock cycles (7 to wakeup from idle sleep, 3 to vector, and 4 to return)   

        ; Disable the HREF interrupt
                cbi             _SFR_IO_ADDR(PORTD),PD6
     f8a:       96 98           cbi     0x12, 6 ; 18
                in              tmp1, _SFR_IO_ADDR(GICR)
     f8c:       3b b7           in      r19, 0x3b       ; 59
                andi    tmp1, HREF_INTERRUPT_DISABLE_MASK
     f8e:       3f 77           andi    r19, 0x7F       ; 127
                out             _SFR_IO_ADDR(GICR), tmp1
     f90:       3b bf           out     0x3b, r19       ; 59
                
        ; A couple of NOPs are needed here to sync up the pixel data...the number (2)
        ; of NOPs was determined emperically by trial and error.
                nop
     f92:       00 00           nop
        ...

00000f96 <_acquirePixelBlock>:
                nop
_acquirePixelBlock:                                                     ;                                                       Clock Cycle Count
                in              ZL,RB_PORT                              ; sample the red value (PINB)           (1)
     f96:       e6 b3           in      r30, 0x16       ; 22
                in              YL,G_PORT                               ; sample the green value (PINC)         (1)
     f98:       c3 b3           in      r28, 0x13       ; 19
                andi    YL,0x0F                                 ; clear the high nibble                         (1)
     f9a:       cf 70           andi    r28, 0x0F       ; 15
                ldd             color,Z+RED_MEM_OFFSET          ; lookup the red membership                     (2)
     f9c:       30 81           ld      r19, Z
                in              ZL,RB_PORT                              ; sample the blue value (PINB)          (1)
     f9e:       e6 b3           in      r30, 0x16       ; 22
                ldd             greenData,Y+GREEN_MEM_OFFSET; lookup the green membership               (2)
     fa0:       48 89           ldd     r20, Y+16       ; 0x10
                ldd             blueData,Z+BLUE_MEM_OFFSET      ; lookup the blue membership            (2)
     fa2:       50 a1           ldd     r21, Z+32       ; 0x20
                and             color,greenData                         ; mask memberships together                     (1)
     fa4:       34 23           and     r19, r20
                and             color,blueData                          ; to produce the final color            (1)
     fa6:       35 23           and     r19, r21
                brts    _cleanUpTrackingLine            ; if some interrupt routine has         (1...not set)
     fa8:       76 f0           brts    .+28            ; 0xfc6 <_cleanUpTrackingLine>
                                                                                        ; come in and set our T flag in 
                                                                                        ; SREG, then we need to hop out
                                                                                        ; and blow away this frames data (common cleanup)                                                                       
                cp              color,lastColor                 ; check to see if the run continues     (1)
     faa:       32 17           cp      r19, r18
                breq    _acquirePixelBlock              ;                                                                       (2...equal)
     fac:       a1 f3           breq    .-24            ; 0xf96 <_acquirePixelBlock>
                                                                                        ;                                                                       ___________
                                                                                        ;                                                               16 clock cycles                 
                                                                                        ; (16 clock cycles = 1 uS = 1 pixelBlock time)
                
                ; Toggle the debug line to indicate a color change
                sbi     _SFR_IO_ADDR(PORTD),PD6
     fae:       96 9a           sbi     0x12, 6 ; 18
                nop
     fb0:       00 00           nop
                cbi             _SFR_IO_ADDR(PORTD),PD6
     fb2:       96 98           cbi     0x12, 6 ; 18
                
                mov             tmp2,pixelRunStart                              ; get the count value of the
     fb4:       41 2f           mov     r20, r17
                                                                                                ; current pixel run
                in              pixelCount,_SFR_IO_ADDR(TCNT1L) ; get the current TCNT1 value 
     fb6:       0c b5           in      r16, 0x2c       ; 44
                mov     pixelRunStart,pixelCount                ; reload pixelRunStart for the
     fb8:       10 2f           mov     r17, r16
                                                                                                ; next run
                sub             pixelCount,tmp2                         ; pixelCount = TCNT1L - pixelRunStart
     fba:       04 1b           sub     r16, r20
                                                                                
                st              X+,lastColor                    ; record the color run in the current line buffer
     fbc:       2d 93           st      X+, r18
                st              X+,pixelCount                   ; with its length
     fbe:       0d 93           st      X+, r16
                mov             lastColor,color                 ; set lastColor so we can figure out when it changes
     fc0:       23 2f           mov     r18, r19
                
                nop                                                             ; waste one more cycle for a total of 16
     fc2:       00 00           nop
                rjmp    _acquirePixelBlock      
     fc4:       e8 cf           rjmp    .-48            ; 0xf96 <_acquirePixelBlock>

00000fc6 <_cleanUpTrackingLine>:
                
; _cleanUpTrackingLine is used to write the last run length block off to the currentLineBuffer so
; that all 176 pixels in the line are accounted for.
_cleanUpTrackingLine:           
                ldi             pixelCount,0xFF         ; the length of the last run is ALWAYS 0xFF minus the last
     fc6:       0f ef           ldi     r16, 0xFF       ; 255
                sub             pixelCount,pixelRunStart        ; pixelRunStart
     fc8:       01 1b           sub     r16, r17
                
                inc             pixelCount                              ; increment pixelCount since we actually need to account
     fca:       03 95           inc     r16
                                                                                ; for the overflow of TCNT1
                                                                                
                st              X+,color                                ; record the color run in the current line buffer
     fcc:       3d 93           st      X+, r19
                st              X,pixelCount            
     fce:       0c 93           st      X, r16
                rjmp    _cleanUp
     fd0:       00 c0           rjmp    .+0             ; 0xfd2 <_cleanUp>

00000fd2 <_cleanUp>:
                
_cleanUpDumpLine:               
                ; NOTE: If serial data is received, to interrupt the tracking of a line, we'll
                ; get a EV_SERIAL_DATA_RECEIVED event, and the T bit set so we will end the
                ; line's processing...however, the PCLK will keep on ticking for the rest of
                ; the frame/line, which will cause the TCNT to eventually overflow and
                ; interrupt us, generating a EV_ACQUIRE_LINE_COMPLETE event.  We don't want
                ; this, so we need to actually turn off the PCLK counting each time we exit
                ; this loop, and only turn it on when we begin acquiring lines....
        ; NOT NEEDED FOR NOW...
                ;in             tmp1, _SFR_IO_ADDR(TIMSK)                       ; disable TIMER1 to stop counting
                ;andi   tmp1, DISABLE_PCLK_TIMER1_OVERFLOW_BITMASK      ; external PCLK pulses
                ;out            _SFR_IO_ADDR(TIMSK),tmp1

_cleanUp:
        ; Disable the external clocking of the Timer1 counter 
        in      tmp1, _SFR_IO_ADDR(TCCR1B)
     fd2:       3e b5           in      r19, 0x2e       ; 46
        andi    tmp1, 0xF8
     fd4:       38 7f           andi    r19, 0xF8       ; 248
        out     _SFR_IO_ADDR(TCCR1B),tmp1
     fd6:       3e bd           out     0x2e, r19       ; 46
                
                ; Toggle the debug line to indicate the line is complete
                sbi     _SFR_IO_ADDR(PORTD),PD6
     fd8:       96 9a           sbi     0x12, 6 ; 18
                cbi             _SFR_IO_ADDR(PORTD),PD6
     fda:       96 98           cbi     0x12, 6 ; 18
                clt                             ; clear out the T bit since we have detected
     fdc:       e8 94           clt

00000fde <_exit>:
                                                ; the interruption and are exiting to handle it
_exit:
                ret
     fde:       08 95           ret

00000fe0 <CamIntAsm_waitForNewDumpFrame>:
                
;*****************************************************************              
;       Function Name: CamIntAsm_waitForNewDumpFrame
;       Function Description: This function is responsible for
;       going to sleep until a new frame begins (indicated by
;       VSYNC transitioning from low to high.  This will wake
;       the "VSYNC sleep" up and allow it to continue with 
;       acquiring a line of pixel data to dump out to the UI.
;       Inputs:  r25 - MSB of currentLineBuffer
;                r24 - LSB of currentLineBuffer
;                                r23 - MSB of prevLineBuffer
;                                r22 - LSB of prevLineBuffer
;       Outputs: none
;       NOTES: This function doesn't really return...it sorta just
;       floats into the acquireDumpLine function after the "VSYNC sleep"
;       is awoken.
;*****************************************************************              
CamIntAsm_waitForNewDumpFrame:
                sbi             _SFR_IO_ADDR(PORTD),PD6  ; For testing...
     fe0:       96 9a           sbi     0x12, 6 ; 18
                cbi             _SFR_IO_ADDR(PORTD),PD6
     fe2:       96 98           cbi     0x12, 6 ; 18
                sleep
     fe4:       88 95           sleep

00000fe6 <CamIntAsm_acquireDumpLine>:

;*****************************************************************
; REMEMBER...everything from here on out is critically timed to be
; synchronized with the flow of pixel data from the camera...
;*****************************************************************

CamIntAsm_acquireDumpLine:
                brts    _cleanUp
     fe6:       ae f3           brts    .-22            ; 0xfd2 <_cleanUp>
                ;sbi            _SFR_IO_ADDR(PORTD),PD6 ; For testing...
                ;cbi            _SFR_IO_ADDR(PORTD),PD6
                
                mov     XH,currLineBuffHigh     ; Load the pointer to the current line
     fe8:       b9 2f           mov     r27, r25
                mov             XL,currLineBuffLow              ; buffer into the X pointer regs
     fea:       a8 2f           mov     r26, r24

                mov             YH,prevLineBuffHigh             ; Load the pointer to the previous line
     fec:       d7 2f           mov     r29, r23
                mov             YL,prevLineBuffLow      ; buffer into the Y pointer regs
     fee:       c6 2f           mov     r28, r22
                
                ldi     tmp1,PIXEL_RUN_START_INITIAL    ; set up the TCNT1 to overflow (and
     ff0:       30 e5           ldi     r19, 0x50       ; 80
                ldi     tmp2,0xFF                                               ; interrupts) after 176 pixels          
     ff2:       4f ef           ldi     r20, 0xFF       ; 255
                out     _SFR_IO_ADDR(TCNT1H),tmp2               
     ff4:       4d bd           out     0x2d, r20       ; 45
                out     _SFR_IO_ADDR(TCNT1L),tmp1               
     ff6:       3c bd           out     0x2c, r19       ; 44
                
        in      tmp1, _SFR_IO_ADDR(TCCR1B) ; Enable the PCLK line to actually
     ff8:       3e b5           in      r19, 0x2e       ; 46
        ori     tmp1, 0x07                 ; feed Timer1
     ffa:       37 60           ori     r19, 0x07       ; 7
        out     _SFR_IO_ADDR(TCCR1B),tmp1
     ffc:       3e bd           out     0x2e, r19       ; 46
        nop
     ffe:       00 00           nop
        
                in              tmp1, _SFR_IO_ADDR(TIMSK)                       ; enable TIMER1 to start counting
    1000:       39 b7           in      r19, 0x39       ; 57
                ori             tmp1, ENABLE_PCLK_TIMER1_OVERFLOW_BITMASK       ; external PCLK pulses and interrupt on 
    1002:       34 60           ori     r19, 0x04       ; 4
                out             _SFR_IO_ADDR(TIMSK),tmp1                        ; overflow                      
    1004:       39 bf           out     0x39, r19       ; 57
                
                in              tmp1, _SFR_IO_ADDR(GICR)        ; enable the HREF interrupt...remember, we
    1006:       3b b7           in      r19, 0x3b       ; 59
                                                                                        ; only use this interrupt to synchronize
                                                                                        ; the beginning of the line
                ori     tmp1, HREF_INTERRUPT_ENABLE_MASK
    1008:       30 68           ori     r19, 0x80       ; 128
                out             _SFR_IO_ADDR(GICR), tmp1
    100a:       3b bf           out     0x3b, r19       ; 59

0000100c <_dumpFrame>:
                
;*******************************************************************************************
;   Dump Frame handler 
;*******************************************************************************************            
                
_dumpFrame:             
                sbi             _SFR_IO_ADDR(PORTD),PD6
    100c:       96 9a           sbi     0x12, 6 ; 18
                sleep   ; ...And we wait...
    100e:       88 95           sleep

                cbi             _SFR_IO_ADDR(PORTD),PD6
    1010:       96 98           cbi     0x12, 6 ; 18
                in              tmp1, _SFR_IO_ADDR(GICR)                        ; disable the HREF interrupt
    1012:       3b b7           in      r19, 0x3b       ; 59
                andi    tmp1, HREF_INTERRUPT_DISABLE_MASK       ; so we don't get interrupted
    1014:       3f 77           andi    r19, 0x7F       ; 127
                out             _SFR_IO_ADDR(GICR), tmp1                        ; while dumping the line
    1016:       3b bf           out     0x3b, r19       ; 59
        ...

0000101a <_sampleDumpPixel>:
        
                nop             ; Remember...if we ever remove the "cbi" instruction above,
                                ; we need to add two more NOPs to cover this
    
; Ok...the following loop needs to run in 8 clock cycles, so we can get every
; pixel in the line...this shouldn't be a problem, since the PCLK timing was
; reduced by a factor of 2 whenever we go to dump a line (this is to give us
; enough time to do the sampling and storing of the pixel data).  In addition,
; it is assumed that we will have to do some minor processing on the data right
; before we send it out, like mask off the top 4-bits of each, and then pack both
; low nibbles into a single byte for transmission...we just don't have time to
; do that here (only 8 instruction cycles :-)  )
_sampleDumpPixel:
                in              tmp1,G_PORT                             ; sample the G value                                    (1)
    101a:       33 b3           in      r19, 0x13       ; 19
                in              tmp2,RB_PORT                    ; sample the R/B value                                  (1)
    101c:       46 b3           in      r20, 0x16       ; 22
                st              X+,tmp1                                 ; store to the currLineBuff and inc ptrs(2)
    101e:       3d 93           st      X+, r19
                st              Y+,tmp2                                 ; store to the prevLineBuff and inc ptrs(2)
    1020:       49 93           st      Y+, r20
                brtc    _sampleDumpPixel                ; loop back unless flag is set                  (2...if not set)
    1022:       de f7           brtc    .-10            ; 0x101a <_sampleDumpPixel>
                                                                                ;                                                                       ___________
                                                                                ;                                                                       8 cycles normally
                                                                                                                                                        
                ; if we make it here, it means the T flag is set, and we must have been interrupted
                ; so we need to exit (what if we were interrupted for serial? should we disable it?)
                rjmp    _cleanUpDumpLine
    1024:       d6 cf           rjmp    .-84            ; 0xfd2 <_cleanUp>

00001026 <__vector_1>:

;***********************************************************
;       Function Name: <interrupt handler for External Interrupt0> 
;       Function Description: This function is responsible
;       for handling a rising edge on the Ext Interrupt 0.  This
;       routine simply returns, since we just want to wake up
;       whenever the VSYNC transitions (meaning the start of a new
;       frame).
;       Inputs:  none
;       Outputs: none
;***********************************************************
SIG_INTERRUPT0:
; This will wake us up when VSYNC transitions high...we just want to return
                reti
    1026:       18 95           reti

00001028 <__vector_2>:
                
;***********************************************************
;       Function Name: <interrupt handler for External Interrupt1> 
;       Function Description: This function is responsible
;       for handling a falling edge on the Ext Interrupt 1.  This
;       routine simply returns, since we just want to wake up
;       whenever the HREF transitions (meaning the pixels 
;       are starting after VSYNC transitioned, and we need to
;       start acquiring the pixel blocks
;       Inputs:  none
;       Outputs: none
;***********************************************************    
SIG_INTERRUPT1:
; This will wake us up when HREF transitions high...we just want to return
                reti
    1028:       18 95           reti

0000102a <__vector_8>:
                
;***********************************************************
;       Function Name: <interrupt handler for Timer0 overflow>
;       Function Description: This function is responsible
;       for handling the Timer0 overflow (hooked up to indicate
;       when we have reached the number of HREFs required in a
;       single frame).  We set the T flag in the SREG to
;       indicate to the _acquirePixelBlock routine that it needs
;       to exit, and then set the appropriate action to take in
;       the eventList of the Executive module.
;       Inputs:  none
;       Outputs: none
;   Note: Originally, the HREF pulses were also going to
;   be counted by a hardware counter, but it didn't end up
;   being necessary
;***********************************************************
;SIG_OVERFLOW0:
;               set                             ; set the T bit in SREG
;               lds             tmp1,eventBitmask
;               ori             tmp1,EV_ACQUIRE_FRAME_COMPLETE
;               sts             eventBitmask,tmp1
;               reti
                
;***********************************************************
;       Function Name: <interrupt handler for Timer1 overflow>
;       Function Description: This function is responsible
;       for handling the Timer1 overflow (hooked up to indicate
;       when we have reached the end of a line of pixel data,
;       since PCLK is hooked up to overflow TCNT1 after 176 
;       pixels).  This routine generates an acquire line complete
;       event in the fastEventBitmask, which is streamlined for
;       efficiency reasons.
;***********************************************************
SIG_OVERFLOW1:                          
                lds             tmp1,fastEventBitmask                   ; set a flag indicating
    102a:       30 91 72 00     lds     r19, 0x0072
                ori             tmp1,FEV_ACQUIRE_LINE_COMPLETE  ; a line is complete
    102e:       31 60           ori     r19, 0x01       ; 1
                sts             fastEventBitmask,tmp1
    1030:       30 93 72 00     sts     0x0072, r19
                set             ; set the T bit in SREG 
    1034:       68 94           set
                ;sbi            _SFR_IO_ADDR(PORTD),PD6 ; For testing...
                ;cbi            _SFR_IO_ADDR(PORTD),PD6 ; For testing...

                reti
    1036:       18 95           reti

00001038 <__vector_default>:

; This is the default handler for all interrupts that don't
; have handler routines specified for them.
        .global __vector_default              
__vector_default:
        reti
    1038:       18 95           reti

0000103a <atoi>:
    103a:       fc 01           movw    r30, r24
    103c:       88 27           eor     r24, r24
    103e:       99 27           eor     r25, r25
    1040:       e8 94           clt
    1042:       21 91           ld      r18, Z+
    1044:       22 23           and     r18, r18
    1046:       e9 f0           breq    .+58            ; 0x1082 <atoi+0x48>
    1048:       20 32           cpi     r18, 0x20       ; 32
    104a:       d9 f3           breq    .-10            ; 0x1042 <atoi+0x8>
    104c:       29 30           cpi     r18, 0x09       ; 9
    104e:       c9 f3           breq    .-14            ; 0x1042 <atoi+0x8>
    1050:       2a 30           cpi     r18, 0x0A       ; 10
    1052:       b9 f3           breq    .-18            ; 0x1042 <atoi+0x8>
    1054:       2c 30           cpi     r18, 0x0C       ; 12
    1056:       a9 f3           breq    .-22            ; 0x1042 <atoi+0x8>
    1058:       2d 30           cpi     r18, 0x0D       ; 13
    105a:       99 f3           breq    .-26            ; 0x1042 <atoi+0x8>
    105c:       26 37           cpi     r18, 0x76       ; 118
    105e:       89 f3           breq    .-30            ; 0x1042 <atoi+0x8>
    1060:       2b 32           cpi     r18, 0x2B       ; 43
    1062:       19 f0           breq    .+6             ; 0x106a <atoi+0x30>
    1064:       2d 32           cpi     r18, 0x2D       ; 45
    1066:       21 f4           brne    .+8             ; 0x1070 <atoi+0x36>
    1068:       68 94           set
    106a:       21 91           ld      r18, Z+
    106c:       22 23           and     r18, r18
    106e:       49 f0           breq    .+18            ; 0x1082 <atoi+0x48>
    1070:       20 33           cpi     r18, 0x30       ; 48
    1072:       3c f0           brlt    .+14            ; 0x1082 <atoi+0x48>
    1074:       2a 33           cpi     r18, 0x3A       ; 58
    1076:       2c f4           brge    .+10            ; 0x1082 <atoi+0x48>
    1078:       20 53           subi    r18, 0x30       ; 48
    107a:       0b d0           rcall   .+22            ; 0x1092 <__mulhi_const_10>
    107c:       82 0f           add     r24, r18
    107e:       91 1d           adc     r25, r1
    1080:       f4 cf           rjmp    .-24            ; 0x106a <atoi+0x30>
    1082:       81 15           cp      r24, r1
    1084:       91 05           cpc     r25, r1
    1086:       21 f0           breq    .+8             ; 0x1090 <atoi+0x56>
    1088:       1e f4           brtc    .+6             ; 0x1090 <atoi+0x56>
    108a:       80 95           com     r24
    108c:       90 95           com     r25
    108e:       01 96           adiw    r24, 0x01       ; 1
    1090:       08 95           ret

00001092 <__mulhi_const_10>:
    1092:       7a e0           ldi     r23, 0x0A       ; 10
    1094:       97 9f           mul     r25, r23
    1096:       90 2d           mov     r25, r0
    1098:       87 9f           mul     r24, r23
    109a:       80 2d           mov     r24, r0
    109c:       91 0d           add     r25, r1
    109e:       11 24           eor     r1, r1
    10a0:       08 95           ret

000010a2 <__eeprom_read_byte_1C1D1E>:
    10a2:       e1 99           sbic    0x1c, 1 ; 28
    10a4:       fe cf           rjmp    .-4             ; 0x10a2 <__eeprom_read_byte_1C1D1E>
    10a6:       bf bb           out     0x1f, r27       ; 31
    10a8:       ae bb           out     0x1e, r26       ; 30
    10aa:       e0 9a           sbi     0x1c, 0 ; 28
    10ac:       11 96           adiw    r26, 0x01       ; 1
    10ae:       0d b2           in      r0, 0x1d        ; 29
    10b0:       08 95           ret

000010b2 <__eeprom_read_block_1C1D1E>:
    10b2:       f7 df           rcall   .-18            ; 0x10a2 <__eeprom_read_byte_1C1D1E>
    10b4:       01 92           st      Z+, r0
    10b6:       1a 94           dec     r1
    10b8:       e1 f7           brne    .-8             ; 0x10b2 <__eeprom_read_block_1C1D1E>
    10ba:       08 95           ret

000010bc <__eeprom_write_byte_1C1D1E>:
    10bc:       e1 99           sbic    0x1c, 1 ; 28
    10be:       fe cf           rjmp    .-4             ; 0x10bc <__eeprom_write_byte_1C1D1E>
    10c0:       bf bb           out     0x1f, r27       ; 31
    10c2:       ae bb           out     0x1e, r26       ; 30
    10c4:       0d ba           out     0x1d, r0        ; 29
    10c6:       11 96           adiw    r26, 0x01       ; 1
    10c8:       0f b6           in      r0, 0x3f        ; 63
    10ca:       f8 94           cli
    10cc:       e2 9a           sbi     0x1c, 2 ; 28
    10ce:       e1 9a           sbi     0x1c, 1 ; 28
    10d0:       0f be           out     0x3f, r0        ; 63
    10d2:       08 95           ret

000010d4 <_exit>:
    10d4:       ff cf           rjmp    .-2             ; 0x10d4 <_exit>