        radix dec
global__variables__bank0 equ 8
global__variables__bank1 equ 48
global__variables__bank2 equ 80
global__variables__bank3 equ 112
global__bit__variables__bank0 equ 24
global__bit__variables__bank1 equ 58
global__bit__variables__bank2 equ 88
global__bit__variables__bank3 equ 112
indf___register equ 0
pcl___register equ 2
c___byte equ 3
c___bit equ 0
z___byte equ 3
z___bit equ 2
        ; On 12-bit PIC's, RP0 is actually bit 5 in FSR (=4)
rp0___byte equ 4
rp0___bit equ 5
        ; On 12-bit PIC's, RP1 is actually bit 6 in FSR (=4)
rp1___byte equ 4
rp1___bit equ 6
        ; On 12-bit PIC's, PA0 is actually bit 5 in STATUS (=3)
pa0___byte equ 3
pa0___bit equ 5
fsr___register equ 4
        org 0
start:
        ; Use oscillator calibration value already in register W
        movwf 5
        ; Initialize TRIS registers
        movlw 200
        tris 6
        movlw 0
        tris 7
        ; Switch from register bank 0 to register bank 1
        bsf rp0___byte,rp0___bit
        ; Register bank is now 1
        ; Switch from code bank 0 to code bank 1 before possible transfer (goto)
        bsf pa0___byte,pa0___bit
        goto main
        ; comment #############################################################################
        ; comment {}
        ; comment {Copyright < c > 2000 - 2001 by Wayne C . Gramlich and Bill Benson}
        ; comment {All rights reserved .}
        ; comment {}
        ; comment {Permission to use , copy , modify , distribute , and sell this software}
        ; comment {for any purpose is hereby granted without fee provided that the above}
        ; comment {copyright notice and this permission are retained . The author makes}
        ; comment {no representations about the suitability of this software for any purpose .}
        ; comment {It is provided { as is } without express or implied warranty .}
        ; comment {}
        ; comment {This is the code that implements the LED10 RoboBrick . Basically}
        ; comment {it just waits for commands that come in at 2400 baud and responds}
        ; comment {to them . See}
        ; comment {}
        ; comment {http : / / web . gramlich . net / projects / robobricks / debug16 / index . html}
        ; comment {}
        ; comment {for more details .}
        ; comment {}
        ; comment #############################################################################
        ;   processor pic16c505 cp = off wdte = on mclre = off fosc = intrc_no_clock  
        ; 4052=0xfd4 4095=0xfff
        __config 4052
configuration___address equ 4095
        ; comment {Define processor constants :}
        ;   constant clock_rate 4000000  
clock_rate equ 4000000
        ;   constant clocks_per_instruction 4  
clocks_per_instruction equ 4
        ;   constant instruction_rate clock_rate / clocks_per_instruction  
instruction_rate equ 1000000
        ; comment {Define serial communication control constants :}
        ;   constant baud_rate 2400  
baud_rate equ 2400
        ;   constant instructions_per_bit instruction_rate / baud_rate  
instructions_per_bit equ 416
        ;   constant delays_per_bit 3  
delays_per_bit equ 3
        ;   constant instructions_per_delay instructions_per_bit / delays_per_bit  
instructions_per_delay equ 138
        ;   constant extra_instructions_per_bit 9  
extra_instructions_per_bit equ 9
        ;   constant extra_instructions_per_delay extra_instructions_per_bit / delays_per_bit  
extra_instructions_per_delay equ 3
        ;   constant delay_instructions instructions_per_delay - extra_instructions_per_delay  
delay_instructions equ 135
        ; comment {Register definitions :}
        ; comment {Status register :}
status equ 3
        ;   bind c status @ 0  
c equ status+0
c__byte equ status+0
c__bit equ 0
        ;   bind z status @ 2  
z equ status+0
z__byte equ status+0
z__bit equ 2
        ; comment {OSCCAL register :}
osccal equ 5
        ;   constant osccal_lsb 4  
osccal_lsb equ 4
        ; comment {Define pin assignments and directions :}
portb equ 6
portc equ 7
led9__byte equ 6
led9__bit equ 0
led8__byte equ 6
led8__bit equ 1
led7__byte equ 7
led7__bit equ 0
led6__byte equ 7
led6__bit equ 1
led5__byte equ 7
led5__bit equ 2
led4__byte equ 7
led4__bit equ 3
led3__byte equ 7
led3__bit equ 4
led2__byte equ 7
led2__bit equ 5
led1__byte equ 6
led1__bit equ 4
led0__byte equ 6
led0__bit equ 5
serial_out__byte equ 6
serial_out__bit equ 2
serial_in__byte equ 6
serial_in__bit equ 3
        ; string_constants Start
        ; Switch from register bank 1 to register bank 0
        bcf rp0___byte,rp0___bit
        ; Register bank is now 0
        ; Switch from code bank 1 to code bank 0 before possible transfer (label)
        bcf pa0___byte,pa0___bit
string___fetch:
        movwf pcl___register
        ;   id = 1 , 0 , 9 , 0 , 0 , 0 , 0 , 0 , 0r'16' , 6 , 0s'Debug16A' , 15 , 0s'Gramlich&Benson'  
id___string equ 0
id:
        addwf pcl___register,f
        ; Length = 49
        retlw 49
        ; 1
        retlw 1
        ; 0
        retlw 0
        ; 9
        retlw 9
        ; 0
        retlw 0
        ; 0
        retlw 0
        ; 0
        retlw 0
        ; 0
        retlw 0
        ; 0
        retlw 0
        ; 0r'16'
        retlw 87 ; random number
        retlw 101 ; random number
        retlw 196 ; random number
        retlw 110 ; random number
        retlw 93 ; random number
        retlw 174 ; random number
        retlw 1 ; random number
        retlw 158 ; random number
        retlw 180 ; random number
        retlw 122 ; random number
        retlw 180 ; random number
        retlw 159 ; random number
        retlw 58 ; random number
        retlw 43 ; random number
        retlw 60 ; random number
        retlw 98 ; random number
        ; 6
        retlw 6
        ; `Debug16A'
        retlw 68
        retlw 101
        retlw 98
        retlw 117
        retlw 103
        retlw 49
        retlw 54
        retlw 65
        ; 15
        retlw 15
        ; `Gramlich&Benson'
        retlw 71
        retlw 114
        retlw 97
        retlw 109
        retlw 108
        retlw 105
        retlw 99
        retlw 104
        retlw 38
        retlw 66
        retlw 101
        retlw 110
        retlw 115
        retlw 111
        retlw 110
        ;   bit_to_mask = 0xff , 0x40 , 0x20 , 0x10 , 8 , 4 , 2 , 1  
bit_to_mask___string equ 51
bit_to_mask:
        addwf pcl___register,f
        ; Length = 8
        retlw 8
        ; 0xff
        retlw 255
        ; 0x40
        retlw 64
        ; 0x20
        retlw 32
        ; 0x10
        retlw 16
        ; 8
        retlw 8
        ; 4
        retlw 4
        ; 2
        retlw 2
        ; 1
        retlw 1
        ; string__constants End
        ;   constant leds_count 10  
leds_count equ 10
        ;   bank 0  
        ; Default register bank is now 0
leds_mask_low equ global__variables__bank0+0
leds_mask_high equ global__variables__bank0+1
blink_masks equ global__variables__bank0+2
        ; comment {Note that the 12 - bit PIC ' s only have a 2 - level deep stack .}
        ; comment {The code starts in the main procedure < located at the end of this code >}
        ; comment {The next level of procedure call is either get_byte or send_byte .}
        ; comment {Lastly , the lowest level of procedure call is delay . It all fits ,}
        ; comment {but just barely .}
        ;   bank 2  
        ; Default register bank is now 2

        ; procedure mask_to_bit start
mask_to_bit:
        ; Procedure must be called with RP0, RP1, and IRP set to register bank 2
        ; Procedure must be called with PCLATH set to code bank 0
mask_to_bit__variables__base equ global__variables__bank2+0
mask_to_bit__bytes__base equ mask_to_bit__variables__base+0
mask_to_bit__bits__base equ mask_to_bit__variables__base+3
mask_to_bit__total__bytes equ 3
mask_to_bit__mask equ mask_to_bit__bytes__base+0
mask_to_bit__0return__byte equ mask_to_bit__bytes__base+1
mask_to_bit__bit equ mask_to_bit__bytes__base+2
        ; if { mask = 0xff } start
        incf mask_to_bit__mask,w
        ; expression=`{ mask = 0xff }' exp_delay=1 true_delay=3  false_delay=0 true_size=3 false_size=0
        btfss z___byte,z___bit
        goto label92__0end
        ; if { mask = 0xff } body start
        ;   return 7  
        movlw 7
        movwf mask_to_bit__0return__byte
        retlw 0
        ; if { mask = 0xff } body end
label92__0end:
        ; if exp=` mask = 0xff ' empty false
        ; Other expression=`{ mask = 0xff }' delay=-1
        ; if { mask = 0xff } end
        ;   bit := 0  
        clrf mask_to_bit__bit
        ;   mask := mask | 0x80  
        movlw 128
        iorwf mask_to_bit__mask,f
        ; `while  ! {{ mask @ 0 }}  ...' start
mask_to_bit__97while__continue:
        ; Alias variable for select mask @ 0
mask_to_bit__mask__97select0 equ mask_to_bit__mask+0
mask_to_bit__mask__97select0__byte equ mask_to_bit__mask+0
mask_to_bit__mask__97select0__bit equ 0
        ; expression=`{{ mask @ 0 }}' exp_delay=0 true_delay=2  false_delay=5 true_size=1 false_size=4
        btfsc mask_to_bit__mask__97select0__byte,mask_to_bit__mask__97select0__bit
        goto mask_to_bit__97while__break
        ;   mask := mask >> 1  
        bcf c___byte,c___bit
        rrf mask_to_bit__mask,f
        ;   bit := bit + 1  
        incf mask_to_bit__bit,f
        goto mask_to_bit__97while__continue
        ; if exp=` mask @ 0 ' true goto
        ; Other expression=`{{ mask @ 0 }}' delay=-1
mask_to_bit__97while__break:
        ; `while  ! {{ mask @ 0 }}  ...' end
        ;   return bit  
        movf mask_to_bit__bit,w
        movwf mask_to_bit__0return__byte
        retlw 0
        ; procedure mask_to_bit end

        ; procedure get_byte start
get_byte:
        ; Procedure must be called with RP0, RP1, and IRP set to register bank 2
        ; Procedure must be called with PCLATH set to code bank 0
get_byte__variables__base equ global__variables__bank2+3
get_byte__bytes__base equ get_byte__variables__base+0
get_byte__bits__base equ get_byte__variables__base+3
get_byte__total__bytes equ 3
        ;   arguments_none  
get_byte__0return__byte equ get_byte__bytes__base+0
        ; This procedure will wait for a byte to be received from
        ; serial_in_bit . It calls the delay procedure for all delays .
get_byte__count equ get_byte__bytes__base+1
get_byte__char equ get_byte__bytes__base+2
        ; Why does the delay procedure wait for a third of bit ? Well , it
        ; has to do with the loop immediately below . If we catch the
        ; start bit at the beginning of a 1 / 3 bit time , we will be
        ; sampling data at approximately 1 / 3 of the way into each bit .
        ; Conversely , if we catch the start near the end of a 1 / 3 bit
        ; bit time , we will be sampling data at approximately 2 / 3 of the
        ; way into each bit . So , what this means is that our bit sample
        ; times will be somewhere between 1 / 3 and 2 / 3 of bit < i . e . in
        ; the middle of the bit .
        ; It would be nice to tweak the code to shorter delay times
        ; < 1 / 4 bit , 1 / 5 bit , etc . > but then it gets too hard to get
        ; the bookeeping done in the delay routine . A 12 - bit PIC
        ; running at 4 MHz <= 1 MIPS > , only has 138 instructions available
        ; for the delay routine when at 1 / 3 of bit .
        ; Wait for a start bit :
        ; `while serial_in ...' start
get_byte__131while__continue:
        ; expression=`serial_in' exp_delay=0 true_delay=1  false_delay=2 true_size=2 false_size=1
        btfss serial_in__byte,serial_in__bit
        goto get_byte__131while__break
        ;   call delay {{ }}  
        ; Switch from register bank 2 to register bank 0
        bcf rp1___byte,rp1___bit
        ; Register bank is now 0
        call delay
        ; Switch from register bank 0 to register bank 2
        bsf rp1___byte,rp1___bit
        ; Register bank is now 2
        goto get_byte__131while__continue
        ; if exp=`serial_in' false goto
        ; Other expression=`serial_in' delay=-1
get_byte__131while__break:
        ; `while serial_in ...' end
        ; Skip over start bit :
        ;   call delay {{ }}  
        ; Switch from register bank 2 to register bank 0
        bcf rp1___byte,rp1___bit
        ; Register bank is now 0
        call delay
        ;   call delay {{ }}  
        call delay
        ;   call delay {{ }}  
        call delay
        ; Sample in the middle third of each data bit :
        ;   char := 0  
        ; Switch from register bank 0 to register bank 2 (which contains get_byte__char)
        bsf rp1___byte,rp1___bit
        ; Register bank is now 2
        clrf get_byte__char
        ; nop extra_instructions_per_bit - 6
        ; Delay 3 cycles
        nop
        nop
        nop
        ; `count_down count 8 ...' start
        movlw 8
        movwf get_byte__count
get_byte__143_loop:
        ;   call delay {{ }}  
        ; Switch from register bank 2 to register bank 0
        bcf rp1___byte,rp1___bit
        ; Register bank is now 0
        call delay
        ;   char := char >> 1  
        bcf c___byte,c___bit
        ; Switch from register bank 0 to register bank 2 (which contains get_byte__char)
        bsf rp1___byte,rp1___bit
        ; Register bank is now 2
        rrf get_byte__char,f
        ; if { serial_in } start
        ; expression=`{ serial_in }' exp_delay=0 true_delay=1  false_delay=0 true_size=1 false_size=0
        btfsc serial_in__byte,serial_in__bit
        ; if { serial_in } body start
        ;   char @ 7 := 1  
        ; Select char @ 7
get_byte__char__147select0 equ get_byte__char+0
get_byte__char__147select0__byte equ get_byte__char+0
get_byte__char__147select0__bit equ 7
        bsf get_byte__char__147select0__byte,get_byte__char__147select0__bit
        ; if { serial_in } body end
        ; if exp=`serial_in' false skip delay=2
        ; Other expression=`{ serial_in }' delay=2
        ; if { serial_in } end
        ;   call delay {{ }}  
        ; Switch from register bank 2 to register bank 0
        bcf rp1___byte,rp1___bit
        ; Register bank is now 0
        call delay
        ;   call delay {{ }}  
        call delay
        ; nop extra_instructions_per_bit - 7
        ; Delay 2 cycles
        nop
        nop
        ; Switch from register bank 0 to register bank 2 (which contains get_byte__count)
        bsf rp1___byte,rp1___bit
        ; Register bank is now 2
        decfsz get_byte__count,f
        goto get_byte__143_loop
get_byte__143_done:
        ; `count_down count 8 ...' end
        ; Skip over 2 / 3 ' s of stop bit :
        ;   call delay {{ }}  
        ; Switch from register bank 2 to register bank 0
        bcf rp1___byte,rp1___bit
        ; Register bank is now 0
        call delay
        ;   call delay {{ }}  
        call delay
        ;   return char  
        ; Switch from register bank 0 to register bank 2 (which contains get_byte__char)
        bsf rp1___byte,rp1___bit
        ; Register bank is now 2
        movf get_byte__char,w
        movwf get_byte__0return__byte
        retlw 0
        ; procedure get_byte end

        ; procedure send_byte start
send_byte:
        ; Procedure must be called with RP0, RP1, and IRP set to register bank 2
        ; Procedure must be called with PCLATH set to code bank 0
send_byte__variables__base equ global__variables__bank2+6
send_byte__bytes__base equ send_byte__variables__base+0
send_byte__bits__base equ send_byte__variables__base+2
send_byte__total__bytes equ 2
send_byte__char equ send_byte__bytes__base+0
        ; Send < char > to < tx > :
send_byte__count equ send_byte__bytes__base+1
        ; Send the start bit :
        ;   serial_out := 0  
        bcf serial_out__byte,serial_out__bit
        ;   call delay {{ }}  
        ; Switch from register bank 2 to register bank 0
        bcf rp1___byte,rp1___bit
        ; Register bank is now 0
        call delay
        ;   call delay {{ }}  
        call delay
        ;   call delay {{ }}  
        call delay
        ; nop extra_instructions_per_bit - 3
        ; Delay 6 cycles
        nop
        nop
        nop
        nop
        nop
        nop
        ; Send the data :
        ; `count_down count 8 ...' start
        movlw 8
        ; Switch from register bank 0 to register bank 2 (which contains send_byte__count)
        bsf rp1___byte,rp1___bit
        ; Register bank is now 2
        movwf send_byte__count
send_byte__176_loop:
        ;   serial_out := char @ 0  
        ; Alias variable for select char @ 0
send_byte__char__177select0 equ send_byte__char+0
send_byte__char__177select0__byte equ send_byte__char+0
send_byte__char__177select0__bit equ 0
        btfss send_byte__char__177select0__byte,send_byte__char__177select0__bit
        bcf serial_out__byte,serial_out__bit
        btfsc send_byte__char__177select0__byte,send_byte__char__177select0__bit
        bsf serial_out__byte,serial_out__bit
        ;   char := char >> 1  
        bcf c___byte,c___bit
        rrf send_byte__char,f
        ;   call delay {{ }}  
        ; Switch from register bank 2 to register bank 0
        bcf rp1___byte,rp1___bit
        ; Register bank is now 0
        call delay
        ;   call delay {{ }}  
        call delay
        ;   call delay {{ }}  
        call delay
        ; Switch from register bank 0 to register bank 2 (which contains send_byte__count)
        bsf rp1___byte,rp1___bit
        ; Register bank is now 2
        decfsz send_byte__count,f
        goto send_byte__176_loop
send_byte__176_done:
        ; `count_down count 8 ...' end
        ; Send the stop bit :
        ; nop 1
        ; Delay 1 cycles
        nop
        ;   serial_out := 1  
        bsf serial_out__byte,serial_out__bit
        ;   call delay {{ }}  
        ; Switch from register bank 2 to register bank 0
        bcf rp1___byte,rp1___bit
        ; Register bank is now 0
        call delay
        ;   call delay {{ }}  
        call delay
        ;   call delay {{ }}  
        call delay
        ; nop extra_instructions_per_bit - 5
        ; Delay 4 cycles
        nop
        nop
        nop
        nop
        ; procedure send_byte end
        ; Switch from register bank 0 to register bank 2
        bsf rp1___byte,rp1___bit
        ; Register bank is now 2
        retlw 0
        ;   bank 0  
        ; Default register bank is now 0

        ; procedure delay start
        ; optimize 0
delay:
        ; Procedure must be called with RP0, RP1, and IRP set to register bank 0
        ; Procedure must be called with PCLATH set to code bank 0
delay__variables__base equ global__variables__bank0+12
delay__bytes__base equ delay__variables__base+0
delay__bits__base equ delay__variables__base+4
delay__total__bytes equ 4
delay__195byte1 equ delay__bytes__base+3
delay__215byte2 equ delay__bytes__base+3
        ;   arguments_none  
        ;   uniform_delay delay_instructions  
        ; Uniform delay remaining = 131 Accumulated Delay = 0
        ; Uniform delay remaining = 131 Accumulated Delay = 0
        ; This procedure delays 1 / 3 of a bit .
        ; Uniform delay remaining = 131 Accumulated Delay = 0
        ; Uniform delay remaining = 131 Accumulated Delay = 0
delay__blink equ delay__bytes__base+0
        ; Uniform delay remaining = 131 Accumulated Delay = 0
delay__high equ delay__bytes__base+1
        ; Uniform delay remaining = 131 Accumulated Delay = 0
delay__low equ delay__bytes__base+2
        ; Uniform delay remaining = 131 Accumulated Delay = 0
        ; Uniform delay remaining = 131 Accumulated Delay = 0
        ; This procedure is called 7200 times a second . We want to
        ; Uniform delay remaining = 131 Accumulated Delay = 0
        ; slow the fastest blink rate down to something more manageable ,
        ; Uniform delay remaining = 131 Accumulated Delay = 0
        ; like 4 times a second .
        ; Uniform delay remaining = 131 Accumulated Delay = 0
        ; Uniform delay remaining = 131 Accumulated Delay = 0
        ; Kick the dog :
        ; Uniform delay remaining = 131 Accumulated Delay = 0
        ;   watch_dog_reset  
        clrwdt
        ; Uniform delay remaining = 130 Accumulated Delay = 1
        ; Uniform delay remaining = 130 Accumulated Delay = 1
        ; Slow the blink rate down :
        ; Uniform delay remaining = 130 Accumulated Delay = 1
        ;   low := low + 1  
        incf delay__low,f
        ; Uniform delay remaining = 129 Accumulated Delay = 2
        ; if { z } start
        ; expression=`{ z }' exp_delay=0 true_delay=10  false_delay=0 true_size=13 false_size=0
        btfsc z__byte,z__bit
        goto label215__0true
label215__0false:
        ; Delay 9 cycles
        movlw 2
        movwf delay__215byte2
delay__215delay1:
        decfsz delay__215byte2,f
        goto delay__215delay1
        nop
        nop
        goto label215__0end
label215__0true:
        ; if { z } body start
        ; Uniform delay remaining = 129 Accumulated Delay = 0
        ;   high := high + 1  
        incf delay__high,f
        ; Uniform delay remaining = 128 Accumulated Delay = 1
        ; 7200 / 256 ~ = 28 ; for fastest blink rate :
        ; Uniform delay remaining = 128 Accumulated Delay = 1
        ; 28 / 7 = 4 = > 4 blinks a second , or
        ; Uniform delay remaining = 128 Accumulated Delay = 1
        ; 28 / 4 = 7 = > 7 blinks a second
        ; Uniform delay remaining = 128 Accumulated Delay = 1
        ; if { high > 2 } start
        movlw 3
        subwf delay__high,w
        ; expression=`{ high > 2 }' exp_delay=2 true_delay=4  false_delay=0 true_size=4 false_size=0
        btfsc c___byte,c___bit
        goto label220__0true
label220__0false:
        ; Delay 3 cycles
        nop
        nop
        nop
        goto label220__0end
label220__0true:
        ; if { high > 2 } body start
        ; Uniform delay remaining = 128 Accumulated Delay = 0
        ;   high := 0  
        clrf delay__high
        ; Uniform delay remaining = 127 Accumulated Delay = 1
        ;   blink := blink + 1  
        incf delay__blink,f
        ; Uniform delay remaining = 126 Accumulated Delay = 2
        ; Uniform delay remaining = 126 Accumulated Delay = 2
        ; We never let the blink mask go to all zeros because the way
        ; Uniform delay remaining = 126 Accumulated Delay = 2
        ; we indicate that an LED is to stay on always is that we set
        ; Uniform delay remaining = 126 Accumulated Delay = 2
        ; its blink mask to all one ' s . If the blink variable ever goes
        ; Uniform delay remaining = 126 Accumulated Delay = 2
        ; to all zeros , there would be a small glitch for LED ' s that
        ; Uniform delay remaining = 126 Accumulated Delay = 2
        ; are supposed to be always on . Hence we skip over a value of 0 .
        ; Uniform delay remaining = 126 Accumulated Delay = 2
        ; if { z } start
        ; expression=`{ z }' exp_delay=0 true_delay=1  false_delay=0 true_size=1 false_size=0
        btfsc z__byte,z__bit
        ; if { z } body start
        ; Uniform delay remaining = 126 Accumulated Delay = 0
        ;   blink := blink + 1  
        incf delay__blink,f
        ; Uniform delay remaining = 125 Accumulated Delay = 1
        ; Uniform delay remaining = 125 Accumulated Delay = 1
        ; if { z } body end
        ; if exp=`z' false skip delay=2
        ; Other expression=`{ z }' delay=2
        ; if { z } end
        ; Uniform delay remaining = 124 Accumulated Delay = 4
        ; Uniform delay remaining = 124 Accumulated Delay = 4
        ; if { high > 2 } body end
        ; if exp=` high > 2 ' total delay=9
        ; if exp=` high > 2 ' generic
label220__0end:
        ; Other expression=`{ high > 2 }' delay=9
        ; if { high > 2 } end
        ; Uniform delay remaining = 119 Accumulated Delay = 10
        ; Uniform delay remaining = 119 Accumulated Delay = 10
        ; if { z } body end
        ; if exp=`z' total delay=13
        ; if exp=`z' generic
label215__0end:
        ; Other expression=`{ z }' delay=13
        ; if { z } end
        ; Uniform delay remaining = 116 Accumulated Delay = 15
        ; Uniform delay remaining = 116 Accumulated Delay = 15
        ; if { leds_mask_low @ 0 } start
        ; Alias variable for select leds_mask_low @ 0
leds_mask_low__235select0 equ leds_mask_low+0
leds_mask_low__235select0__byte equ leds_mask_low+0
leds_mask_low__235select0__bit equ 0
        ; expression=`{ leds_mask_low @ 0 }' exp_delay=0 true_delay=5  false_delay=0 true_size=5 false_size=0
        btfsc leds_mask_low__235select0__byte,leds_mask_low__235select0__bit
        goto label235__1true
label235__1false:
        ; else body start
        ; Uniform delay remaining = 116 Accumulated Delay = 0
        ;   led0 := 1  
        ; 1 instructions found for sharing
        ; Uniform delay remaining = 115 Accumulated Delay = 1
        ; else body end
        ; Delay 4 cycles
        nop
        nop
        nop
        nop
        goto label235__1end
label235__1true:
        ; if { leds_mask_low @ 0 } body start
        ; Uniform delay remaining = 116 Accumulated Delay = 0
        ; led0 := 0
        ; Uniform delay remaining = 116 Accumulated Delay = 0
        ; if { blink & blink_masks ~~ {{ 0 }} != 0 } start
        movf blink_masks+0,w
        andwf delay__blink,w
        ; expression=`{ blink & blink_masks ~~ {{ 0 }} != 0 }' exp_delay=2 true_delay=1  false_delay=1 true_size=1 false_size=1
        btfss z___byte,z___bit
        ; if { blink & blink_masks ~~ {{ 0 }} != 0 } body start
        ; Uniform delay remaining = 116 Accumulated Delay = 0
        ;   led0 := 0  
        bcf led0__byte,led0__bit
        ; Uniform delay remaining = 115 Accumulated Delay = 1
        ; Uniform delay remaining = 115 Accumulated Delay = 1
        ; if { blink & blink_masks ~~ {{ 0 }} != 0 } body end
        btfsc z___byte,z___bit
        ; else body start
        ; Uniform delay remaining = 116 Accumulated Delay = 0
        ;   led0 := 1  
        ; 1 instructions found for sharing
        ; Uniform delay remaining = 115 Accumulated Delay = 1
        ; else body end
        ; if exp=` blink & blink_masks ~~ {{ 0 }} != 0 ' single true and false skip delay=6
        ; Other expression=`{ blink & blink_masks ~~ {{ 0 }} != 0 }' delay=6
        ; if { blink & blink_masks ~~ {{ 0 }} != 0 } end
        ; Uniform delay remaining = 110 Accumulated Delay = 6
        ; Uniform delay remaining = 110 Accumulated Delay = 6
        ; if { leds_mask_low @ 0 } body end
        ; if exp=` leds_mask_low @ 0 ' total delay=8
        ; if exp=` leds_mask_low @ 0 ' generic
label235__1end:
        ; Other expression=`{ leds_mask_low @ 0 }' delay=8
        ; 1 shared instructions follow
        bsf led0__byte,led0__bit
        ; if { leds_mask_low @ 0 } end
        ; Uniform delay remaining = 107 Accumulated Delay = 24
        ; Uniform delay remaining = 107 Accumulated Delay = 24
        ; if { leds_mask_low @ 1 } start
        ; Alias variable for select leds_mask_low @ 1
leds_mask_low__246select0 equ leds_mask_low+0
leds_mask_low__246select0__byte equ leds_mask_low+0
leds_mask_low__246select0__bit equ 1
        ; expression=`{ leds_mask_low @ 1 }' exp_delay=0 true_delay=5  false_delay=0 true_size=5 false_size=0
        btfsc leds_mask_low__246select0__byte,leds_mask_low__246select0__bit
        goto label246__1true
label246__1false:
        ; else body start
        ; Uniform delay remaining = 107 Accumulated Delay = 0
        ;   led1 := 1  
        ; 1 instructions found for sharing
        ; Uniform delay remaining = 106 Accumulated Delay = 1
        ; else body end
        ; Delay 4 cycles
        nop
        nop
        nop
        nop
        goto label246__1end
label246__1true:
        ; if { leds_mask_low @ 1 } body start
        ; Uniform delay remaining = 107 Accumulated Delay = 0
        ; if { blink & blink_masks ~~ {{ 1 }} != 0 } start
        movf blink_masks+1,w
        andwf delay__blink,w
        ; expression=`{ blink & blink_masks ~~ {{ 1 }} != 0 }' exp_delay=2 true_delay=1  false_delay=1 true_size=1 false_size=1
        btfss z___byte,z___bit
        ; if { blink & blink_masks ~~ {{ 1 }} != 0 } body start
        ; Uniform delay remaining = 107 Accumulated Delay = 0
        ;   led1 := 0  
        bcf led1__byte,led1__bit
        ; Uniform delay remaining = 106 Accumulated Delay = 1
        ; Uniform delay remaining = 106 Accumulated Delay = 1
        ; if { blink & blink_masks ~~ {{ 1 }} != 0 } body end
        btfsc z___byte,z___bit
        ; else body start
        ; Uniform delay remaining = 107 Accumulated Delay = 0
        ;   led1 := 1  
        ; 1 instructions found for sharing
        ; Uniform delay remaining = 106 Accumulated Delay = 1
        ; else body end
        ; if exp=` blink & blink_masks ~~ {{ 1 }} != 0 ' single true and false skip delay=6
        ; Other expression=`{ blink & blink_masks ~~ {{ 1 }} != 0 }' delay=6
        ; if { blink & blink_masks ~~ {{ 1 }} != 0 } end
        ; Uniform delay remaining = 101 Accumulated Delay = 6
        ; Uniform delay remaining = 101 Accumulated Delay = 6
        ; if { leds_mask_low @ 1 } body end
        ; if exp=` leds_mask_low @ 1 ' total delay=8
        ; if exp=` leds_mask_low @ 1 ' generic
label246__1end:
        ; Other expression=`{ leds_mask_low @ 1 }' delay=8
        ; 1 shared instructions follow
        bsf led1__byte,led1__bit
        ; if { leds_mask_low @ 1 } end
        ; Uniform delay remaining = 98 Accumulated Delay = 33
        ; Uniform delay remaining = 98 Accumulated Delay = 33
        ; if { leds_mask_low @ 2 } start
        ; Alias variable for select leds_mask_low @ 2
leds_mask_low__256select0 equ leds_mask_low+0
leds_mask_low__256select0__byte equ leds_mask_low+0
leds_mask_low__256select0__bit equ 2
        ; expression=`{ leds_mask_low @ 2 }' exp_delay=0 true_delay=5  false_delay=0 true_size=5 false_size=0
        btfsc leds_mask_low__256select0__byte,leds_mask_low__256select0__bit
        goto label256__1true
label256__1false:
        ; else body start
        ; Uniform delay remaining = 98 Accumulated Delay = 0
        ;   led2 := 1  
        ; 1 instructions found for sharing
        ; Uniform delay remaining = 97 Accumulated Delay = 1
        ; else body end
        ; Delay 4 cycles
        nop
        nop
        nop
        nop
        goto label256__1end
label256__1true:
        ; if { leds_mask_low @ 2 } body start
        ; Uniform delay remaining = 98 Accumulated Delay = 0
        ; if { blink & blink_masks ~~ {{ 2 }} != 0 } start
        movf blink_masks+2,w
        andwf delay__blink,w
        ; expression=`{ blink & blink_masks ~~ {{ 2 }} != 0 }' exp_delay=2 true_delay=1  false_delay=1 true_size=1 false_size=1
        btfss z___byte,z___bit
        ; if { blink & blink_masks ~~ {{ 2 }} != 0 } body start
        ; Uniform delay remaining = 98 Accumulated Delay = 0
        ;   led2 := 0  
        bcf led2__byte,led2__bit
        ; Uniform delay remaining = 97 Accumulated Delay = 1
        ; Uniform delay remaining = 97 Accumulated Delay = 1
        ; if { blink & blink_masks ~~ {{ 2 }} != 0 } body end
        btfsc z___byte,z___bit
        ; else body start
        ; Uniform delay remaining = 98 Accumulated Delay = 0
        ;   led2 := 1  
        ; 1 instructions found for sharing
        ; Uniform delay remaining = 97 Accumulated Delay = 1
        ; else body end
        ; if exp=` blink & blink_masks ~~ {{ 2 }} != 0 ' single true and false skip delay=6
        ; Other expression=`{ blink & blink_masks ~~ {{ 2 }} != 0 }' delay=6
        ; if { blink & blink_masks ~~ {{ 2 }} != 0 } end
        ; Uniform delay remaining = 92 Accumulated Delay = 6
        ; Uniform delay remaining = 92 Accumulated Delay = 6
        ; if { leds_mask_low @ 2 } body end
        ; if exp=` leds_mask_low @ 2 ' total delay=8
        ; if exp=` leds_mask_low @ 2 ' generic
label256__1end:
        ; Other expression=`{ leds_mask_low @ 2 }' delay=8
        ; 1 shared instructions follow
        bsf led2__byte,led2__bit
        ; if { leds_mask_low @ 2 } end
        ; Uniform delay remaining = 89 Accumulated Delay = 42
        ; Uniform delay remaining = 89 Accumulated Delay = 42
        ; if { leds_mask_low @ 3 } start
        ; Alias variable for select leds_mask_low @ 3
leds_mask_low__266select0 equ leds_mask_low+0
leds_mask_low__266select0__byte equ leds_mask_low+0
leds_mask_low__266select0__bit equ 3
        ; expression=`{ leds_mask_low @ 3 }' exp_delay=0 true_delay=5  false_delay=0 true_size=5 false_size=0
        btfsc leds_mask_low__266select0__byte,leds_mask_low__266select0__bit
        goto label266__1true
label266__1false:
        ; else body start
        ; Uniform delay remaining = 89 Accumulated Delay = 0
        ;   led3 := 1  
        ; 1 instructions found for sharing
        ; Uniform delay remaining = 88 Accumulated Delay = 1
        ; else body end
        ; Delay 4 cycles
        nop
        nop
        nop
        nop
        goto label266__1end
label266__1true:
        ; if { leds_mask_low @ 3 } body start
        ; Uniform delay remaining = 89 Accumulated Delay = 0
        ; if { blink & blink_masks ~~ {{ 3 }} != 0 } start
        movf blink_masks+3,w
        andwf delay__blink,w
        ; expression=`{ blink & blink_masks ~~ {{ 3 }} != 0 }' exp_delay=2 true_delay=1  false_delay=1 true_size=1 false_size=1
        btfss z___byte,z___bit
        ; if { blink & blink_masks ~~ {{ 3 }} != 0 } body start
        ; Uniform delay remaining = 89 Accumulated Delay = 0
        ;   led3 := 0  
        bcf led3__byte,led3__bit
        ; Uniform delay remaining = 88 Accumulated Delay = 1
        ; Uniform delay remaining = 88 Accumulated Delay = 1
        ; if { blink & blink_masks ~~ {{ 3 }} != 0 } body end
        btfsc z___byte,z___bit
        ; else body start
        ; Uniform delay remaining = 89 Accumulated Delay = 0
        ;   led3 := 1  
        ; 1 instructions found for sharing
        ; Uniform delay remaining = 88 Accumulated Delay = 1
        ; else body end
        ; if exp=` blink & blink_masks ~~ {{ 3 }} != 0 ' single true and false skip delay=6
        ; Other expression=`{ blink & blink_masks ~~ {{ 3 }} != 0 }' delay=6
        ; if { blink & blink_masks ~~ {{ 3 }} != 0 } end
        ; Uniform delay remaining = 83 Accumulated Delay = 6
        ; Uniform delay remaining = 83 Accumulated Delay = 6
        ; if { leds_mask_low @ 3 } body end
        ; if exp=` leds_mask_low @ 3 ' total delay=8
        ; if exp=` leds_mask_low @ 3 ' generic
label266__1end:
        ; Other expression=`{ leds_mask_low @ 3 }' delay=8
        ; 1 shared instructions follow
        bsf led3__byte,led3__bit
        ; if { leds_mask_low @ 3 } end
        ; Uniform delay remaining = 80 Accumulated Delay = 51
        ; Uniform delay remaining = 80 Accumulated Delay = 51
        ; if { leds_mask_low @ 4 } start
        ; Alias variable for select leds_mask_low @ 4
leds_mask_low__276select0 equ leds_mask_low+0
leds_mask_low__276select0__byte equ leds_mask_low+0
leds_mask_low__276select0__bit equ 4
        ; expression=`{ leds_mask_low @ 4 }' exp_delay=0 true_delay=5  false_delay=0 true_size=5 false_size=0
        btfsc leds_mask_low__276select0__byte,leds_mask_low__276select0__bit
        goto label276__1true
label276__1false:
        ; else body start
        ; Uniform delay remaining = 80 Accumulated Delay = 0
        ;   led4 := 1  
        ; 1 instructions found for sharing
        ; Uniform delay remaining = 79 Accumulated Delay = 1
        ; else body end
        ; Delay 4 cycles
        nop
        nop
        nop
        nop
        goto label276__1end
label276__1true:
        ; if { leds_mask_low @ 4 } body start
        ; Uniform delay remaining = 80 Accumulated Delay = 0
        ; if { blink & blink_masks ~~ {{ 4 }} != 0 } start
        movf blink_masks+4,w
        andwf delay__blink,w
        ; expression=`{ blink & blink_masks ~~ {{ 4 }} != 0 }' exp_delay=2 true_delay=1  false_delay=1 true_size=1 false_size=1
        btfss z___byte,z___bit
        ; if { blink & blink_masks ~~ {{ 4 }} != 0 } body start
        ; Uniform delay remaining = 80 Accumulated Delay = 0
        ;   led4 := 0  
        bcf led4__byte,led4__bit
        ; Uniform delay remaining = 79 Accumulated Delay = 1
        ; Uniform delay remaining = 79 Accumulated Delay = 1
        ; if { blink & blink_masks ~~ {{ 4 }} != 0 } body end
        btfsc z___byte,z___bit
        ; else body start
        ; Uniform delay remaining = 80 Accumulated Delay = 0
        ;   led4 := 1  
        ; 1 instructions found for sharing
        ; Uniform delay remaining = 79 Accumulated Delay = 1
        ; else body end
        ; if exp=` blink & blink_masks ~~ {{ 4 }} != 0 ' single true and false skip delay=6
        ; Other expression=`{ blink & blink_masks ~~ {{ 4 }} != 0 }' delay=6
        ; if { blink & blink_masks ~~ {{ 4 }} != 0 } end
        ; Uniform delay remaining = 74 Accumulated Delay = 6
        ; Uniform delay remaining = 74 Accumulated Delay = 6
        ; if { leds_mask_low @ 4 } body end
        ; if exp=` leds_mask_low @ 4 ' total delay=8
        ; if exp=` leds_mask_low @ 4 ' generic
label276__1end:
        ; Other expression=`{ leds_mask_low @ 4 }' delay=8
        ; 1 shared instructions follow
        bsf led4__byte,led4__bit
        ; if { leds_mask_low @ 4 } end
        ; Uniform delay remaining = 71 Accumulated Delay = 60
        ; Uniform delay remaining = 71 Accumulated Delay = 60
        ; if { leds_mask_high @ 0 } start
        ; Alias variable for select leds_mask_high @ 0
leds_mask_high__286select0 equ leds_mask_high+0
leds_mask_high__286select0__byte equ leds_mask_high+0
leds_mask_high__286select0__bit equ 0
        ; expression=`{ leds_mask_high @ 0 }' exp_delay=0 true_delay=5  false_delay=0 true_size=5 false_size=0
        btfsc leds_mask_high__286select0__byte,leds_mask_high__286select0__bit
        goto label286__1true
label286__1false:
        ; else body start
        ; Uniform delay remaining = 71 Accumulated Delay = 0
        ;   led5 := 1  
        ; 1 instructions found for sharing
        ; Uniform delay remaining = 70 Accumulated Delay = 1
        ; else body end
        ; Delay 4 cycles
        nop
        nop
        nop
        nop
        goto label286__1end
label286__1true:
        ; if { leds_mask_high @ 0 } body start
        ; Uniform delay remaining = 71 Accumulated Delay = 0
        ; if { blink & blink_masks ~~ {{ 5 }} != 0 } start
        movf blink_masks+5,w
        andwf delay__blink,w
        ; expression=`{ blink & blink_masks ~~ {{ 5 }} != 0 }' exp_delay=2 true_delay=1  false_delay=1 true_size=1 false_size=1
        btfss z___byte,z___bit
        ; if { blink & blink_masks ~~ {{ 5 }} != 0 } body start
        ; Uniform delay remaining = 71 Accumulated Delay = 0
        ;   led5 := 0  
        bcf led5__byte,led5__bit
        ; Uniform delay remaining = 70 Accumulated Delay = 1
        ; Uniform delay remaining = 70 Accumulated Delay = 1
        ; if { blink & blink_masks ~~ {{ 5 }} != 0 } body end
        btfsc z___byte,z___bit
        ; else body start
        ; Uniform delay remaining = 71 Accumulated Delay = 0
        ;   led5 := 1  
        ; 1 instructions found for sharing
        ; Uniform delay remaining = 70 Accumulated Delay = 1
        ; else body end
        ; if exp=` blink & blink_masks ~~ {{ 5 }} != 0 ' single true and false skip delay=6
        ; Other expression=`{ blink & blink_masks ~~ {{ 5 }} != 0 }' delay=6
        ; if { blink & blink_masks ~~ {{ 5 }} != 0 } end
        ; Uniform delay remaining = 65 Accumulated Delay = 6
        ; Uniform delay remaining = 65 Accumulated Delay = 6
        ; if { leds_mask_high @ 0 } body end
        ; if exp=` leds_mask_high @ 0 ' total delay=8
        ; if exp=` leds_mask_high @ 0 ' generic
label286__1end:
        ; Other expression=`{ leds_mask_high @ 0 }' delay=8
        ; 1 shared instructions follow
        bsf led5__byte,led5__bit
        ; if { leds_mask_high @ 0 } end
        ; Uniform delay remaining = 62 Accumulated Delay = 69
        ; Uniform delay remaining = 62 Accumulated Delay = 69
        ; if { leds_mask_high @ 1 } start
        ; Alias variable for select leds_mask_high @ 1
leds_mask_high__296select0 equ leds_mask_high+0
leds_mask_high__296select0__byte equ leds_mask_high+0
leds_mask_high__296select0__bit equ 1
        ; expression=`{ leds_mask_high @ 1 }' exp_delay=0 true_delay=5  false_delay=0 true_size=5 false_size=0
        btfsc leds_mask_high__296select0__byte,leds_mask_high__296select0__bit
        goto label296__1true
label296__1false:
        ; else body start
        ; Uniform delay remaining = 62 Accumulated Delay = 0
        ;   led6 := 1  
        ; 1 instructions found for sharing
        ; Uniform delay remaining = 61 Accumulated Delay = 1
        ; else body end
        ; Delay 4 cycles
        nop
        nop
        nop
        nop
        goto label296__1end
label296__1true:
        ; if { leds_mask_high @ 1 } body start
        ; Uniform delay remaining = 62 Accumulated Delay = 0
        ; if { blink & blink_masks ~~ {{ 6 }} != 0 } start
        movf blink_masks+6,w
        andwf delay__blink,w
        ; expression=`{ blink & blink_masks ~~ {{ 6 }} != 0 }' exp_delay=2 true_delay=1  false_delay=1 true_size=1 false_size=1
        btfss z___byte,z___bit
        ; if { blink & blink_masks ~~ {{ 6 }} != 0 } body start
        ; Uniform delay remaining = 62 Accumulated Delay = 0
        ;   led6 := 0  
        bcf led6__byte,led6__bit
        ; Uniform delay remaining = 61 Accumulated Delay = 1
        ; Uniform delay remaining = 61 Accumulated Delay = 1
        ; if { blink & blink_masks ~~ {{ 6 }} != 0 } body end
        btfsc z___byte,z___bit
        ; else body start
        ; Uniform delay remaining = 62 Accumulated Delay = 0
        ;   led6 := 1  
        ; 1 instructions found for sharing
        ; Uniform delay remaining = 61 Accumulated Delay = 1
        ; else body end
        ; if exp=` blink & blink_masks ~~ {{ 6 }} != 0 ' single true and false skip delay=6
        ; Other expression=`{ blink & blink_masks ~~ {{ 6 }} != 0 }' delay=6
        ; if { blink & blink_masks ~~ {{ 6 }} != 0 } end
        ; Uniform delay remaining = 56 Accumulated Delay = 6
        ; Uniform delay remaining = 56 Accumulated Delay = 6
        ; if { leds_mask_high @ 1 } body end
        ; if exp=` leds_mask_high @ 1 ' total delay=8
        ; if exp=` leds_mask_high @ 1 ' generic
label296__1end:
        ; Other expression=`{ leds_mask_high @ 1 }' delay=8
        ; 1 shared instructions follow
        bsf led6__byte,led6__bit
        ; if { leds_mask_high @ 1 } end
        ; Uniform delay remaining = 53 Accumulated Delay = 78
        ; Uniform delay remaining = 53 Accumulated Delay = 78
        ; if { leds_mask_high @ 2 } start
        ; Alias variable for select leds_mask_high @ 2
leds_mask_high__306select0 equ leds_mask_high+0
leds_mask_high__306select0__byte equ leds_mask_high+0
leds_mask_high__306select0__bit equ 2
        ; expression=`{ leds_mask_high @ 2 }' exp_delay=0 true_delay=5  false_delay=0 true_size=5 false_size=0
        btfsc leds_mask_high__306select0__byte,leds_mask_high__306select0__bit
        goto label306__1true
label306__1false:
        ; else body start
        ; Uniform delay remaining = 53 Accumulated Delay = 0
        ;   led7 := 1  
        ; 1 instructions found for sharing
        ; Uniform delay remaining = 52 Accumulated Delay = 1
        ; else body end
        ; Delay 4 cycles
        nop
        nop
        nop
        nop
        goto label306__1end
label306__1true:
        ; if { leds_mask_high @ 2 } body start
        ; Uniform delay remaining = 53 Accumulated Delay = 0
        ; if { blink & blink_masks ~~ {{ 7 }} != 0 } start
        movf blink_masks+7,w
        andwf delay__blink,w
        ; expression=`{ blink & blink_masks ~~ {{ 7 }} != 0 }' exp_delay=2 true_delay=1  false_delay=1 true_size=1 false_size=1
        btfss z___byte,z___bit
        ; if { blink & blink_masks ~~ {{ 7 }} != 0 } body start
        ; Uniform delay remaining = 53 Accumulated Delay = 0
        ;   led7 := 0  
        bcf led7__byte,led7__bit
        ; Uniform delay remaining = 52 Accumulated Delay = 1
        ; Uniform delay remaining = 52 Accumulated Delay = 1
        ; if { blink & blink_masks ~~ {{ 7 }} != 0 } body end
        btfsc z___byte,z___bit
        ; else body start
        ; Uniform delay remaining = 53 Accumulated Delay = 0
        ;   led7 := 1  
        ; 1 instructions found for sharing
        ; Uniform delay remaining = 52 Accumulated Delay = 1
        ; else body end
        ; if exp=` blink & blink_masks ~~ {{ 7 }} != 0 ' single true and false skip delay=6
        ; Other expression=`{ blink & blink_masks ~~ {{ 7 }} != 0 }' delay=6
        ; if { blink & blink_masks ~~ {{ 7 }} != 0 } end
        ; Uniform delay remaining = 47 Accumulated Delay = 6
        ; Uniform delay remaining = 47 Accumulated Delay = 6
        ; if { leds_mask_high @ 2 } body end
        ; if exp=` leds_mask_high @ 2 ' total delay=8
        ; if exp=` leds_mask_high @ 2 ' generic
label306__1end:
        ; Other expression=`{ leds_mask_high @ 2 }' delay=8
        ; 1 shared instructions follow
        bsf led7__byte,led7__bit
        ; if { leds_mask_high @ 2 } end
        ; Uniform delay remaining = 44 Accumulated Delay = 87
        ; Uniform delay remaining = 44 Accumulated Delay = 87
        ; if { leds_mask_high @ 3 } start
        ; Alias variable for select leds_mask_high @ 3
leds_mask_high__316select0 equ leds_mask_high+0
leds_mask_high__316select0__byte equ leds_mask_high+0
leds_mask_high__316select0__bit equ 3
        ; expression=`{ leds_mask_high @ 3 }' exp_delay=0 true_delay=5  false_delay=0 true_size=5 false_size=0
        btfsc leds_mask_high__316select0__byte,leds_mask_high__316select0__bit
        goto label316__1true
label316__1false:
        ; else body start
        ; Uniform delay remaining = 44 Accumulated Delay = 0
        ;   led8 := 1  
        ; 1 instructions found for sharing
        ; Uniform delay remaining = 43 Accumulated Delay = 1
        ; else body end
        ; Delay 4 cycles
        nop
        nop
        nop
        nop
        goto label316__1end
label316__1true:
        ; if { leds_mask_high @ 3 } body start
        ; Uniform delay remaining = 44 Accumulated Delay = 0
        ; if { blink & blink_masks ~~ {{ 8 }} != 0 } start
        movf blink_masks+8,w
        andwf delay__blink,w
        ; expression=`{ blink & blink_masks ~~ {{ 8 }} != 0 }' exp_delay=2 true_delay=1  false_delay=1 true_size=1 false_size=1
        btfss z___byte,z___bit
        ; if { blink & blink_masks ~~ {{ 8 }} != 0 } body start
        ; Uniform delay remaining = 44 Accumulated Delay = 0
        ;   led8 := 0  
        bcf led8__byte,led8__bit
        ; Uniform delay remaining = 43 Accumulated Delay = 1
        ; Uniform delay remaining = 43 Accumulated Delay = 1
        ; if { blink & blink_masks ~~ {{ 8 }} != 0 } body end
        btfsc z___byte,z___bit
        ; else body start
        ; Uniform delay remaining = 44 Accumulated Delay = 0
        ;   led8 := 1  
        ; 1 instructions found for sharing
        ; Uniform delay remaining = 43 Accumulated Delay = 1
        ; else body end
        ; if exp=` blink & blink_masks ~~ {{ 8 }} != 0 ' single true and false skip delay=6
        ; Other expression=`{ blink & blink_masks ~~ {{ 8 }} != 0 }' delay=6
        ; if { blink & blink_masks ~~ {{ 8 }} != 0 } end
        ; Uniform delay remaining = 38 Accumulated Delay = 6
        ; Uniform delay remaining = 38 Accumulated Delay = 6
        ; if { leds_mask_high @ 3 } body end
        ; if exp=` leds_mask_high @ 3 ' total delay=8
        ; if exp=` leds_mask_high @ 3 ' generic
label316__1end:
        ; Other expression=`{ leds_mask_high @ 3 }' delay=8
        ; 1 shared instructions follow
        bsf led8__byte,led8__bit
        ; if { leds_mask_high @ 3 } end
        ; Uniform delay remaining = 35 Accumulated Delay = 96
        ; Uniform delay remaining = 35 Accumulated Delay = 96
        ; if { leds_mask_high @ 4 } start
        ; Alias variable for select leds_mask_high @ 4
leds_mask_high__326select0 equ leds_mask_high+0
leds_mask_high__326select0__byte equ leds_mask_high+0
leds_mask_high__326select0__bit equ 4
        ; expression=`{ leds_mask_high @ 4 }' exp_delay=0 true_delay=5  false_delay=0 true_size=5 false_size=0
        btfsc leds_mask_high__326select0__byte,leds_mask_high__326select0__bit
        goto label326__1true
label326__1false:
        ; else body start
        ; Uniform delay remaining = 35 Accumulated Delay = 0
        ;   led9 := 1  
        ; 1 instructions found for sharing
        ; Uniform delay remaining = 34 Accumulated Delay = 1
        ; else body end
        ; Delay 4 cycles
        nop
        nop
        nop
        nop
        goto label326__1end
label326__1true:
        ; if { leds_mask_high @ 4 } body start
        ; Uniform delay remaining = 35 Accumulated Delay = 0
        ; if { blink & blink_masks ~~ {{ 9 }} != 0 } start
        movf blink_masks+9,w
        andwf delay__blink,w
        ; expression=`{ blink & blink_masks ~~ {{ 9 }} != 0 }' exp_delay=2 true_delay=1  false_delay=1 true_size=1 false_size=1
        btfss z___byte,z___bit
        ; if { blink & blink_masks ~~ {{ 9 }} != 0 } body start
        ; Uniform delay remaining = 35 Accumulated Delay = 0
        ;   led9 := 0  
        bcf led9__byte,led9__bit
        ; Uniform delay remaining = 34 Accumulated Delay = 1
        ; Uniform delay remaining = 34 Accumulated Delay = 1
        ; if { blink & blink_masks ~~ {{ 9 }} != 0 } body end
        btfsc z___byte,z___bit
        ; else body start
        ; Uniform delay remaining = 35 Accumulated Delay = 0
        ;   led9 := 1  
        ; 1 instructions found for sharing
        ; Uniform delay remaining = 34 Accumulated Delay = 1
        ; else body end
        ; if exp=` blink & blink_masks ~~ {{ 9 }} != 0 ' single true and false skip delay=6
        ; Other expression=`{ blink & blink_masks ~~ {{ 9 }} != 0 }' delay=6
        ; if { blink & blink_masks ~~ {{ 9 }} != 0 } end
        ; Uniform delay remaining = 29 Accumulated Delay = 6
        ; Uniform delay remaining = 29 Accumulated Delay = 6
        ; if { leds_mask_high @ 4 } body end
        ; if exp=` leds_mask_high @ 4 ' total delay=8
        ; if exp=` leds_mask_high @ 4 ' generic
label326__1end:
        ; Other expression=`{ leds_mask_high @ 4 }' delay=8
        ; 1 shared instructions follow
        bsf led9__byte,led9__bit
        ; if { leds_mask_high @ 4 } end
        ; Uniform delay remaining = 26 Accumulated Delay = 105
        ; Uniform delay remaining = 26 Accumulated Delay = 105
        ; Soak up remaining 26 cycles
        ; Delay 26 cycles
        movlw 8
        movwf delay__195byte1
delay__195delay0:
        decfsz delay__195byte1,f
        goto delay__195delay0
        nop
        ; procedure delay end
        retlw 0
        ; optimize 1
        ;   origin 0x200  
        org 512
        ;   bank 1  
        ; Default register bank is now 1
        ; comment {The main procedure is loaded with switch statements . On the 12 - bit}
        ; comment {PIC ' s , switch statements have to live in the first 256 bytes of}
        ; comment {each code bank . For this reason , we shove main into code bank 1 .}
        ; comment {If we , try to put main in code bank 0 , it pushes the first bytes}
        ; comment {of several routines out of the first 256 bytes , which is also a}
        ; comment {no - no of the 12 - bit PIC ' s .}

        ; procedure main start
switch__407block_start:
        addwf pcl___register,f
        goto switch__407block408
        goto switch__407block412
        goto switch__407block416
        goto switch__407block420
switch__407block_end:
        ; switch_check 407 switch__407block_start switch__407block_end
switch__445block_start:
        addwf pcl___register,f
        goto switch__445block446
        goto switch__445block451
        goto switch__445block456
        goto switch__445block461
switch__445block_end:
        ; switch_check 445 switch__445block_start switch__445block_end
switch__442block_start:
        addwf pcl___register,f
        goto switch__442block443
        goto switch__442default472
        goto switch__442default472
        goto switch__442default472
switch__442block_end:
        ; switch_check 442 switch__442block_start switch__442block_end
switch__439block_start:
        addwf pcl___register,f
        goto switch__439block440
        goto switch__439block477
        goto switch__439block501
        goto switch__439block525
switch__439block_end:
        ; switch_check 439 switch__439block_start switch__439block_end
switch__552block_start:
        addwf pcl___register,f
        goto switch__552block553
        goto switch__552block557
        goto switch__552block561
        goto switch__552block565
        goto switch__552block569
        goto switch__552block577
        goto switch__552block582
        goto switch__552block587
switch__552block_end:
        ; switch_check 552 switch__552block_start switch__552block_end
switch__377block_start:
        addwf pcl___register,f
        goto switch__377block379
        goto switch__377block390
        goto switch__377block437
        goto switch__377block548
switch__377block_end:
        ; switch_check 377 switch__377block_start switch__377block_end
main:
        ; Procedure must be called with RP0, RP1, and IRP set to register bank 1
        ; Procedure must be called with PCLATH set to code bank 0
main__variables__base equ global__variables__bank1+0
main__bytes__base equ main__variables__base+0
main__bits__base equ main__variables__base+10
main__total__bytes equ 10
main__377byte0 equ main__bytes__base+8
main__510byte0 equ main__bytes__base+8
main__468byte0 equ main__bytes__base+8
main__442byte0 equ main__bytes__base+8
main__550byte1 equ main__bytes__base+8
main__468byte1 equ main__bytes__base+8
main__362byte0 equ main__bytes__base+8
main__550byte2 equ main__bytes__base+8
main__521byte0 equ main__bytes__base+8
main__468byte2 equ main__bytes__base+8
main__362byte1 equ main__bytes__base+9
        ;   arguments_none  
main__ledx equ main__bytes__base+0
main__command equ main__bytes__base+1
main__data equ main__bytes__base+2
main__glitch equ main__bytes__base+3
main__index equ main__bytes__base+4
main__mask equ main__bytes__base+5
main__rate equ main__bytes__base+6
main__result equ main__bytes__base+7
        ; Initialize blink_masks :
        ; `count_down index leds_count ...' start
        movlw 10
        movwf main__index
main__361_loop:
        ;   blink_masks ~~ {{ index - 1 }} := 0xff  
        movlw 255
        movwf main__362byte0
        decf main__index,w
        movwf main__362byte1
        movlw LOW blink_masks
        addwf main__362byte1,
        movwf fsr___register
        ; FSR now points to reg bank 0 (which contains 10[])
        ; Switch from register bank 0 to register bank 1 (which contains main__362byte0)
        bsf rp0___byte,rp0___bit
        ; Register bank is now 1
        movf main__362byte0,w
        bcf irp___register,irp___bit
        ; Switch from register bank 1 to register bank 0 (which contains blink_masks)
        bcf rp0___byte,rp0___bit
        ; Register bank is now 0
        ; FSR must point to reg bank 0 (which contains 10[10]) before using INDF reg
        movwf indf___register
        ; Switch from register bank 0 to register bank 1 (which contains main__index)
        bsf rp0___byte,rp0___bit
        ; Register bank is now 1
        decfsz main__index,f
        goto main__361_loop
main__361_done:
        ; `count_down index leds_count ...' end
        ; Initialize remaining registers :
        ;   glitch := 0  
        clrf main__glitch
        ;   index := 0  
        clrf main__index
        ;   leds_mask_low := 0  
        clrf leds_mask_low
        ;   leds_mask_high := 0  
        clrf leds_mask_high
        ; Process commands :
        ; loop_forever ... start
main__372loop__forever:
        ; Wait for command :
        ;   command := get_byte {{ }}  
        ; Switch from register bank 1 to register bank 2
        bcf rp0___byte,rp0___bit
        bsf rp1___byte,rp1___bit
        ; Register bank is now 2
        ; Switch from code bank 1 to code bank 0 before possible transfer (call)
        bcf pa0___byte,pa0___bit
        call get_byte
        movf get_byte__0return__byte,w
        ; Switch from register bank 2 to register bank 1 (which contains main__command)
        bsf rp0___byte,rp0___bit
        bcf rp1___byte,rp1___bit
        ; Register bank is now 1
        movwf main__command
        ; Dispatch on command :
        ; switch { command >> 6 }
        swapf main__command,w
        movwf main__377byte0
        rrf main__377byte0,f
        rrf main__377byte0,w
        andlw 3
        ;   # xx = 00 : write upper and write lower commands  
        ; case 0
        ;   # xx = 01 : Bit operations - clear , set , toggle & read  
        ; case 1
        ; case 2
        ; case 3
        ; Switch from code bank 0 to code bank 1 before possible transfer (goto)
        bsf pa0___byte,pa0___bit
        goto switch__377block_start
switch__377block379:
        ; < Command = 00 xx xxxx > :
        ; if { command @ 5 } start
        ; Alias variable for select command @ 5
main__command__381select0 equ main__command+0
main__command__381select0__byte equ main__command+0
main__command__381select0__bit equ 5
        ; expression=`{ command @ 5 }' exp_delay=0 true_delay=3  false_delay=2 true_size=3 false_size=2
        btfsc main__command__381select0__byte,main__command__381select0__bit
        goto label381__1true
label381__1false:
        ; else body start
        ; Write Lower < Command = 000 a bcde > :
        ;   leds_mask_low := command  
        movf main__command,w
        movwf leds_mask_low
        ; else body end
        goto label381__1end
label381__1true:
        ; if { command @ 5 } body start
        ; Write Upper < Command = 001 a bcde > :
        ;   leds_mask_high := command & 0x1f  
        movlw 31
        andwf main__command,w
        movwf leds_mask_high
        ; if { command @ 5 } body end
        ; if exp=` command @ 5 ' generic
label381__1end:
        ; Other expression=`{ command @ 5 }' delay=-1
        ; if { command @ 5 } end
        goto switch__377end
switch__377block390:
        ; Bit commands : < Command = 01 cc bbbb > :
        ;   ledx := command & 0xf  
        movlw 15
        andwf main__command,w
        movwf main__ledx
        ;   data := leds_mask_low  
        movf leds_mask_low,w
        movwf main__data
        ; if { ledx >= 5 } start
        movlw 5
        subwf main__ledx,w
        ; expression=`{ ledx >= 5 }' exp_delay=2 true_delay=4  false_delay=0 true_size=4 false_size=0
        btfss c___byte,c___bit
        goto label394__0end
        ; if { ledx >= 5 } body start
        ;   ledx := ledx - 5  
        movlw 251
        addwf main__ledx,f
        ;   data := leds_mask_high  
        movf leds_mask_high,w
        movwf main__data
        ; if { ledx >= 5 } body end
label394__0end:
        ; if exp=` ledx >= 5 ' empty false
        ; Other expression=`{ ledx >= 5 }' delay=-1
        ; if { ledx >= 5 } end
        ; Compute the mask :
        ;   mask := 1  
        movlw 1
        movwf main__mask
        ; `while  ledx != 0  ...' start
main__401while__continue:
        movf main__ledx,w
        ; expression=` ledx != 0 ' exp_delay=1 true_delay=5  false_delay=2 true_size=4 false_size=1
        btfsc z___byte,z___bit
        goto main__401while__break
        ;   mask := mask << 1  
        bcf c___byte,c___bit
        rlf main__mask,f
        ;   ledx := ledx - 1  
        decf main__ledx,f
        goto main__401while__continue
        ; if exp=` ledx != 0 ' false goto
        ; Other expression=` ledx != 0 ' delay=-1
main__401while__break:
        ; `while  ledx != 0  ...' end
        ;   ledx := command & 0xf  
        movlw 15
        andwf main__command,w
        movwf main__ledx
        ; switch { {{ command >> 4 }} & 3 }
        swapf main__command,w
        andlw 3
        ; case 0
        ; case 1
        ; case 2
        ; case 3
        goto switch__407block_start
switch__407block408:
        ; Bit Clear < Command = 0100 bbbb > :
        ;   data := data & {{ 0xff ^ mask }}  
        movlw 255
        xorwf main__mask,w
        andwf main__data,f
        goto switch__407end
switch__407block412:
        ; Bit Set < Command = 0100 bbbb > :
        ;   data := data | mask  
        movf main__mask,w
        iorwf main__data,f
        goto switch__407end
switch__407block416:
        ; Bit Toggle < Command = 0100 bbbb > :
        ;   data := data ^ mask  
        movf main__mask,w
        xorwf main__data,f
        goto switch__407end
switch__407block420:
        ; Bit Read < Command = 0100 bbbb > :
        ;   result := {{ mask_to_bit {{ blink_masks ~~ {{ ledx }} }} ^ 7 }} << 5  
        movlw LOW blink_masks
        addwf main__ledx,w
        movwf fsr___register
        ; FSR now points to reg bank 0 (which contains 10[10])
        bcf irp___register,irp___bit
        ; FSR must point to reg bank 0 (which contains 10[10]) before using INDF reg
        movf indf___register,w
        ; Switch from register bank 0 to register bank 2 (which contains mask_to_bit__mask)
        bsf rp1___byte,rp1___bit
        ; Register bank is now 2
        movwf mask_to_bit__mask
        ; Switch from code bank 1 to code bank 0 before possible transfer (call)
        bcf pa0___byte,pa0___bit
        call mask_to_bit
        movf mask_to_bit__0return__byte,w
        xorlw 7
        ; Switch from register bank 2 to register bank 1 (which contains main__result)
        bsf rp0___byte,rp0___bit
        bcf rp1___byte,rp1___bit
        ; Register bank is now 1
        movwf main__result
        swapf main__result,f
        rlf main__result,w
        andlw 224
        movwf main__result
        ; if { data & mask != 0 } start
        movf main__data,w
        andwf main__mask,w
        ; expression=`{ data & mask != 0 }' exp_delay=2 true_delay=1  false_delay=0 true_size=1 false_size=0
        ; Switch from code bank 0 to code bank 1 before possible transfer (btfss)
        bsf pa0___byte,pa0___bit
        btfss z___byte,z___bit
        ; if { data & mask != 0 } body start
        ;   result := result + 1  
        incf main__result,f
        ; if { data & mask != 0 } body end
        ; if exp=` data & mask != 0 ' false skip delay=4
        ; Other expression=`{ data & mask != 0 }' delay=4
        ; if { data & mask != 0 } end
        ;   call send_byte {{ result }}  
        movf main__result,w
        ; Switch from register bank 1 to register bank 2 (which contains send_byte__char)
        bcf rp0___byte,rp0___bit
        bsf rp1___byte,rp1___bit
        ; Register bank is now 2
        movwf send_byte__char
        ; Switch from code bank 1 to code bank 0 before possible transfer (call)
        bcf pa0___byte,pa0___bit
        call send_byte
        ; Switch from register bank 2 to register bank 1
        bsf rp0___byte,rp0___bit
        bcf rp1___byte,rp1___bit
        ; Register bank is now 1
        ; Switch from code bank 0 to code bank 1 before possible transfer (goto)
        bsf pa0___byte,pa0___bit
switch__407end:
        ; Stuff the data back :
        ; if { ledx < 5 } start
        movlw 5
        subwf main__ledx,w
        ; expression=`{ ledx < 5 }' exp_delay=2 true_delay=2  false_delay=2 true_size=2 false_size=2
        btfsc c___byte,c___bit
        goto label431__0false
label431__0true:
        ; if { ledx < 5 } body start
        ;   leds_mask_low := data  
        movf main__data,w
        movwf leds_mask_low
        ; if { ledx < 5 } body end
        goto label431__0end
label431__0false:
        ; else body start
        ;   leds_mask_high := data  
        movf main__data,w
        movwf leds_mask_high
        ; else body end
        ; if exp=` ledx < 5 ' generic
label431__0end:
        ; Other expression=`{ ledx < 5 }' delay=-1
        ; if { ledx < 5 } end
        goto switch__377end
switch__377block437:
        ; Do nothing < Command = 10 xx xxx > :
        ; switch { {{ command >> 4 }} & 3 }
        swapf main__command,w
        andlw 3
        ; case 0
        ; case 1
        ; case 2
        ; case 3
        goto switch__439block_start
switch__439block440:
        ; Command = 1000 xxxx :
        ; switch { {{ command >> 2 }} & 3 }
        rrf main__command,w
        movwf main__442byte0
        rrf main__442byte0,w
        andlw 3
        ; case 0
        goto switch__442block_start
switch__442block443:
        ; Command = 1000 00 xx :
        ; switch { command & 3 }
        movlw 3
        andwf main__command,w
        ; case 0
        ; case 1
        ;   # xx = 10 : read - all , lower , upper ; blink rate ; inc / dec leds ; pwr mode  
        ; case 2
        ;   # xx = 11 : shared commands  
        ; case 3
        goto switch__445block_start
switch__445block446:
        ; Read All < Command = 1000 0000 > :
        ;   call send_byte {{ leds_mask_high }}  
        movf leds_mask_high,w
        ; Switch from register bank 1 to register bank 2 (which contains send_byte__char)
        bcf rp0___byte,rp0___bit
        bsf rp1___byte,rp1___bit
        ; Register bank is now 2
        movwf send_byte__char
        ; Switch from code bank 1 to code bank 0 before possible transfer (call)
        bcf pa0___byte,pa0___bit
        call send_byte
        ;   call send_byte {{ leds_mask_low }}  
        movf leds_mask_low,w
        movwf send_byte__char
        call send_byte
        ; Switch from register bank 2 to register bank 1
        bsf rp0___byte,rp0___bit
        bcf rp1___byte,rp1___bit
        ; Register bank is now 1
        ; Switch from code bank 0 to code bank 1 before possible transfer (goto)
        bsf pa0___byte,pa0___bit
        goto switch__445end
switch__445block451:
        ; Read Lower < Command = 1000 0001 > :
        ;   call send_byte {{ leds_mask_low }}  
        movf leds_mask_low,w
        ; Switch from register bank 1 to register bank 2 (which contains send_byte__char)
        bcf rp0___byte,rp0___bit
        bsf rp1___byte,rp1___bit
        ; Register bank is now 2
        movwf send_byte__char
        ; Switch from code bank 1 to code bank 0 before possible transfer (call)
        bcf pa0___byte,pa0___bit
        call send_byte
        ; Switch from register bank 2 to register bank 1
        bsf rp0___byte,rp0___bit
        bcf rp1___byte,rp1___bit
        ; Register bank is now 1
        ; Switch from code bank 0 to code bank 1 before possible transfer (goto)
        bsf pa0___byte,pa0___bit
        goto switch__445end
switch__445block456:
        ; Read Upper < Command = 1000 0010 > :
        ;   call send_byte {{ leds_mask_high }}  
        movf leds_mask_high,w
        ; Switch from register bank 1 to register bank 2 (which contains send_byte__char)
        bcf rp0___byte,rp0___bit
        bsf rp1___byte,rp1___bit
        ; Register bank is now 2
        movwf send_byte__char
        ; Switch from code bank 1 to code bank 0 before possible transfer (call)
        bcf pa0___byte,pa0___bit
        call send_byte
        ; Switch from register bank 2 to register bank 1
        bsf rp0___byte,rp0___bit
        bcf rp1___byte,rp1___bit
        ; Register bank is now 1
        ; Switch from code bank 0 to code bank 1 before possible transfer (goto)
        bsf pa0___byte,pa0___bit
        goto switch__445end
switch__445block461:
        ; Blink Rate Set < Command = 1000 0011 > :
        ;   command := get_byte {{ }}  
        ; Switch from register bank 1 to register bank 2
        bcf rp0___byte,rp0___bit
        bsf rp1___byte,rp1___bit
        ; Register bank is now 2
        ; Switch from code bank 1 to code bank 0 before possible transfer (call)
        bcf pa0___byte,pa0___bit
        call get_byte
        movf get_byte__0return__byte,w
        ; Switch from register bank 2 to register bank 1 (which contains main__command)
        bsf rp0___byte,rp0___bit
        bcf rp1___byte,rp1___bit
        ; Register bank is now 1
        movwf main__command
        ;   ledx := command & 0xf  
        movlw 15
        andwf main__command,w
        movwf main__ledx
        ; if { ledx >= 10 } start
        movlw 10
        subwf main__ledx,w
        ; expression=`{ ledx >= 10 }' exp_delay=2 true_delay=1  false_delay=0 true_size=1 false_size=0
        ; Switch from code bank 0 to code bank 1 before possible transfer (btfsc)
        bsf pa0___byte,pa0___bit
        btfsc c___byte,c___bit
        ; if { ledx >= 10 } body start
        ;   ledx := 0  
        clrf main__ledx
        ; if { ledx >= 10 } body end
        ; if exp=` ledx >= 10 ' false skip delay=4
        ; Other expression=`{ ledx >= 10 }' delay=4
        ; if { ledx >= 10 } end
        ;   blink_masks ~~ {{ ledx }} := bit_to_mask ~~ {{ command >> 5 }}  
        swapf main__command,w
        movwf main__468byte1
        rrf main__468byte1,w
        andlw 7
        movwf main__468byte2
        incf main__468byte2,w
        ; Switch from register bank 1 to register bank 0
        bcf rp0___byte,rp0___bit
        ; Register bank is now 0
        ; Switch from code bank 1 to code bank 0 before possible transfer (call)
        bcf pa0___byte,pa0___bit
        call bit_to_mask
        ; Switch from register bank 0 to register bank 1 (which contains main__468byte0)
        bsf rp0___byte,rp0___bit
        ; Register bank is now 1
        movwf main__468byte0
        movlw LOW blink_masks
        addwf main__ledx,w
        movwf fsr___register
        ; FSR now points to reg bank 0 (which contains 10[])
        ; Switch from register bank 0 to register bank 1 (which contains main__468byte0)
        bsf rp0___byte,rp0___bit
        ; Register bank is now 1
        movf main__468byte0,w
        bcf irp___register,irp___bit
        ; Switch from register bank 1 to register bank 0 (which contains blink_masks)
        bcf rp0___byte,rp0___bit
        ; Register bank is now 0
        ; FSR must point to reg bank 0 (which contains 10[10]) before using INDF reg
        movwf indf___register
        ; Switch from register bank 0 to register bank 1
        bsf rp0___byte,rp0___bit
        ; Register bank is now 1
        ; Switch from code bank 0 to code bank 1 before possible transfer (goto)
        bsf pa0___byte,pa0___bit
switch__445end:
        goto switch__442end
switch__442default472:
        ; Do nothing :
switch__442end:
        goto switch__439end
switch__439block477:
        ; Increment LED ' s < Command = 1001 bbbb > :
        ;   ledx := command & 0xf  
        movlw 15
        andwf main__command,w
        movwf main__ledx
        ;   mask := 1  
        movlw 1
        movwf main__mask
        ; if { ledx < 5 } start
        movlw 5
        subwf main__ledx,w
        ; expression=`{ ledx < 5 }' exp_delay=2 true_delay=-1  false_delay=-1 true_size=14 false_size=11
        btfsc c___byte,c___bit
        goto label481__0false
label481__0true:
        ; if { ledx < 5 } body start
        ; `while  ledx != 0  ...' start
main__482while__continue:
        movf main__ledx,w
        ; expression=` ledx != 0 ' exp_delay=1 true_delay=5  false_delay=2 true_size=4 false_size=1
        btfsc z___byte,z___bit
        goto main__482while__break
        ;   mask := mask << 1  
        bcf c___byte,c___bit
        rlf main__mask,f
        ;   ledx := ledx - 1  
        decf main__ledx,f
        goto main__482while__continue
        ; if exp=` ledx != 0 ' false goto
        ; Other expression=` ledx != 0 ' delay=-1
main__482while__break:
        ; `while  ledx != 0  ...' end
        ;   leds_mask_low := leds_mask_low + mask  
        movf main__mask,w
        addwf leds_mask_low,f
        ; if { leds_mask_low @ 5 } start
        ; Alias variable for select leds_mask_low @ 5
leds_mask_low__487select0 equ leds_mask_low+0
leds_mask_low__487select0__byte equ leds_mask_low+0
leds_mask_low__487select0__bit equ 5
        ; expression=`{ leds_mask_low @ 5 }' exp_delay=0 true_delay=3  false_delay=0 true_size=3 false_size=0
        btfss leds_mask_low__487select0__byte,leds_mask_low__487select0__bit
        goto label487__1end
        ; if { leds_mask_low @ 5 } body start
        ;   leds_mask_low := leds_mask_low & 0x1f  
        movlw 31
        andwf leds_mask_low,f
        ;   leds_mask_high := leds_mask_high + 1  
        incf leds_mask_high,f
        ; if { leds_mask_low @ 5 } body end
label487__1end:
        ; if exp=` leds_mask_low @ 5 ' empty false
        ; Other expression=`{ leds_mask_low @ 5 }' delay=-1
        ; if { leds_mask_low @ 5 } end
        ; if { ledx < 5 } body end
        goto label481__0end
label481__0false:
        ; else body start
        ;   ledx := ledx - 5  
        movlw 251
        addwf main__ledx,f
        ; `while  ledx != 0  ...' start
main__493while__continue:
        movf main__ledx,w
        ; expression=` ledx != 0 ' exp_delay=1 true_delay=5  false_delay=2 true_size=4 false_size=1
        btfsc z___byte,z___bit
        goto main__493while__break
        ;   mask := mask << 1  
        bcf c___byte,c___bit
        rlf main__mask,f
        ;   ledx := ledx - 1  
        decf main__ledx,f
        goto main__493while__continue
        ; if exp=` ledx != 0 ' false goto
        ; Other expression=` ledx != 0 ' delay=-1
main__493while__break:
        ; `while  ledx != 0  ...' end
        ;   leds_mask_high := leds_mask_high + mask  
        movf main__mask,w
        addwf leds_mask_high,f
        ; else body end
        ; if exp=` ledx < 5 ' generic
label481__0end:
        ; Other expression=`{ ledx < 5 }' delay=-1
        ; if { ledx < 5 } end
        ;   leds_mask_high := leds_mask_high & 0x1f  
        movlw 31
        andwf leds_mask_high,f
        goto switch__439end
switch__439block501:
        ; Decrement LED ' s < Command = 1010 bbbb > :
        ;   ledx := command & 0xf  
        movlw 15
        andwf main__command,w
        movwf main__ledx
        ;   mask := 1  
        movlw 1
        movwf main__mask
        ; if { ledx < 5 } start
        movlw 5
        subwf main__ledx,w
        ; expression=`{ ledx < 5 }' exp_delay=2 true_delay=-1  false_delay=-1 true_size=17 false_size=14
        btfsc c___byte,c___bit
        goto label505__0false
label505__0true:
        ; if { ledx < 5 } body start
        ; `while  ledx != 0  ...' start
main__506while__continue:
        movf main__ledx,w
        ; expression=` ledx != 0 ' exp_delay=1 true_delay=5  false_delay=2 true_size=4 false_size=1
        btfsc z___byte,z___bit
        goto main__506while__break
        ;   mask := mask << 1  
        bcf c___byte,c___bit
        rlf main__mask,f
        ;   ledx := ledx - 1  
        decf main__ledx,f
        goto main__506while__continue
        ; if exp=` ledx != 0 ' false goto
        ; Other expression=` ledx != 0 ' delay=-1
main__506while__break:
        ; `while  ledx != 0  ...' end
        ;   leds_mask_low := leds_mask_low - mask  
        movf leds_mask_low,w
        movwf main__510byte0
        movf main__mask,w
        subwf main__510byte0,w
        movwf leds_mask_low
        ; if { leds_mask_low @ 5 } start
        ; Alias variable for select leds_mask_low @ 5
leds_mask_low__511select0 equ leds_mask_low+0
leds_mask_low__511select0__byte equ leds_mask_low+0
leds_mask_low__511select0__bit equ 5
        ; expression=`{ leds_mask_low @ 5 }' exp_delay=0 true_delay=3  false_delay=0 true_size=3 false_size=0
        btfss leds_mask_low__511select0__byte,leds_mask_low__511select0__bit
        goto label511__1end
        ; if { leds_mask_low @ 5 } body start
        ;   leds_mask_low := leds_mask_low & 0x1f  
        movlw 31
        andwf leds_mask_low,f
        ;   leds_mask_high := leds_mask_high - 1  
        decf leds_mask_high,f
        ; if { leds_mask_low @ 5 } body end
label511__1end:
        ; if exp=` leds_mask_low @ 5 ' empty false
        ; Other expression=`{ leds_mask_low @ 5 }' delay=-1
        ; if { leds_mask_low @ 5 } end
        ; if { ledx < 5 } body end
        goto label505__0end
label505__0false:
        ; else body start
        ;   ledx := ledx - 5  
        movlw 251
        addwf main__ledx,f
        ; `while  ledx != 0  ...' start
main__517while__continue:
        movf main__ledx,w
        ; expression=` ledx != 0 ' exp_delay=1 true_delay=5  false_delay=2 true_size=4 false_size=1
        btfsc z___byte,z___bit
        goto main__517while__break
        ;   mask := mask << 1  
        bcf c___byte,c___bit
        rlf main__mask,f
        ;   ledx := ledx - 1  
        decf main__ledx,f
        goto main__517while__continue
        ; if exp=` ledx != 0 ' false goto
        ; Other expression=` ledx != 0 ' delay=-1
main__517while__break:
        ; `while  ledx != 0  ...' end
        ;   leds_mask_high := leds_mask_high - mask  
        movf leds_mask_high,w
        movwf main__521byte0
        movf main__mask,w
        subwf main__521byte0,w
        movwf leds_mask_high
        ; else body end
        ; if exp=` ledx < 5 ' generic
label505__0end:
        ; Other expression=`{ ledx < 5 }' delay=-1
        ; if { ledx < 5 } end
        ;   leds_mask_high := leds_mask_high & 0x1f  
        movlw 31
        andwf leds_mask_high,f
        goto switch__439end
switch__439block525:
        ; Power Level Set < Command = 1011 llll > :
        ;   ledx := command & 0xf  
        movlw 15
        andwf main__command,w
        movwf main__ledx
        ;   mask := 0  
        clrf main__mask
        ; if { ledx <= 5 } start
        movlw 6
        subwf main__ledx,w
        ; expression=`{ ledx <= 5 }' exp_delay=2 true_delay=-1  false_delay=-1 true_size=12 false_size=16
        btfsc c___byte,c___bit
        goto label529__0false
label529__0true:
        ; if { ledx <= 5 } body start
        ; `while  ledx != 0  ...' start
main__530while__continue:
        movf main__ledx,w
        ; expression=` ledx != 0 ' exp_delay=1 true_delay=7  false_delay=2 true_size=6 false_size=1
        btfsc z___byte,z___bit
        goto main__530while__break
        ;   mask := {{ mask << 1 }} | 1  
        bcf c___byte,c___bit
        rlf main__mask,w
        iorlw 1
        movwf main__mask
        ;   ledx := ledx - 1  
        decf main__ledx,f
        goto main__530while__continue
        ; if exp=` ledx != 0 ' false goto
        ; Other expression=` ledx != 0 ' delay=-1
main__530while__break:
        ; `while  ledx != 0  ...' end
        ;   leds_mask_low := mask  
        movf main__mask,w
        movwf leds_mask_low
        ;   leds_mask_high := 0  
        clrf leds_mask_high
        ; if { ledx <= 5 } body end
        goto label529__0end
label529__0false:
        ; else body start
        ;   ledx := ledx - 5  
        movlw 251
        addwf main__ledx,f
        ; `while  ledx != 0  ...' start
main__538while__continue:
        movf main__ledx,w
        ; expression=` ledx != 0 ' exp_delay=1 true_delay=7  false_delay=2 true_size=6 false_size=1
        btfsc z___byte,z___bit
        goto main__538while__break
        ;   mask := {{ mask << 1 }} | 1  
        bcf c___byte,c___bit
        rlf main__mask,w
        iorlw 1
        movwf main__mask
        ;   ledx := ledx - 1  
        decf main__ledx,f
        goto main__538while__continue
        ; if exp=` ledx != 0 ' false goto
        ; Other expression=` ledx != 0 ' delay=-1
main__538while__break:
        ; `while  ledx != 0  ...' end
        ;   leds_mask_low := 0x1f  
        movlw 31
        movwf leds_mask_low
        ;   leds_mask_high := mask & 0x1f  
        movlw 31
        andwf main__mask,w
        movwf leds_mask_high
        ; else body end
        ; if exp=` ledx <= 5 ' generic
label529__0end:
        ; Other expression=`{ ledx <= 5 }' delay=-1
        ; if { ledx <= 5 } end
switch__439end:
        goto switch__377end
switch__377block548:
        ; < Command = 11 xx xxxx > :
        ; if { {{ command >> 3 }} & 7 = 7 } start
        rrf main__command,w
        movwf main__550byte2
        rrf main__550byte2,f
        rrf main__550byte2,w
        andlw 7
        movwf main__550byte1
        movlw 7
        subwf main__550byte1,w
        ; expression=`{ {{ command >> 3 }} & 7 = 7 }' exp_delay=9 true_delay=38  false_delay=0 true_size=37 false_size=0
        btfss z___byte,z___bit
        goto label550__3end
        ; if { {{ command >> 3 }} & 7 = 7 } body start
        ; Command = 1111 1 xxx :
        ; switch { command & 7 }
        movlw 7
        andwf main__command,w
        ; case 0
        ; case 1
        ; case 2
        ; case 3
        ; case 4
        ; case 5
        ; case 6
        ; case 7
        goto switch__552block_start
switch__552block553:
        ; Clock Decrement < Command = 1111 1000 > :
        ;   osccal := osccal - osccal_lsb  
        movlw 252
        addwf osccal,f
        goto switch__552end
switch__552block557:
        ; Clock Increment < Command = 1111 1001 > :
        ;   osccal := osccal + osccal_lsb  
        movlw 4
        addwf osccal,f
        goto switch__552end
switch__552block561:
        ; Clock Read < Command = 1111 1010 > :
        ;   call send_byte {{ osccal }}  
        movf osccal,w
        ; Switch from register bank 1 to register bank 2 (which contains send_byte__char)
        bcf rp0___byte,rp0___bit
        bsf rp1___byte,rp1___bit
        ; Register bank is now 2
        movwf send_byte__char
        ; Switch from code bank 1 to code bank 0 before possible transfer (call)
        bcf pa0___byte,pa0___bit
        call send_byte
        ; Switch from register bank 2 to register bank 1
        bsf rp0___byte,rp0___bit
        bcf rp1___byte,rp1___bit
        ; Register bank is now 1
        ; Switch from code bank 0 to code bank 1 before possible transfer (goto)
        bsf pa0___byte,pa0___bit
        goto switch__552end
switch__552block565:
        ; Clock Pulse < Command = 1111 1011 > :
        ;   call send_byte {{ 0 }}  
        ; Switch from register bank 1 to register bank 2 (which contains send_byte__char)
        bcf rp0___byte,rp0___bit
        bsf rp1___byte,rp1___bit
        ; Register bank is now 2
        clrf send_byte__char
        ; Switch from code bank 1 to code bank 0 before possible transfer (call)
        bcf pa0___byte,pa0___bit
        call send_byte
        ; Switch from register bank 2 to register bank 1
        bsf rp0___byte,rp0___bit
        bcf rp1___byte,rp1___bit
        ; Register bank is now 1
        ; Switch from code bank 0 to code bank 1 before possible transfer (goto)
        bsf pa0___byte,pa0___bit
        goto switch__552end
switch__552block569:
        ; ID Next < Command = 1111 1100 > :
        ;   call send_byte {{ id ~~ {{ index }} }}  
        incf main__index,w
        ; Switch from register bank 1 to register bank 0
        bcf rp0___byte,rp0___bit
        ; Register bank is now 0
        ; Switch from code bank 1 to code bank 0 before possible transfer (call)
        bcf pa0___byte,pa0___bit
        call id
        ; Switch from register bank 0 to register bank 2 (which contains send_byte__char)
        bsf rp1___byte,rp1___bit
        ; Register bank is now 2
        movwf send_byte__char
        call send_byte
        ;   index := index + 1  
        ; Switch from register bank 2 to register bank 1 (which contains main__index)
        bsf rp0___byte,rp0___bit
        bcf rp1___byte,rp1___bit
        ; Register bank is now 1
        incf main__index,f
        ; if { index >= id . size } start
        movlw 49
        subwf main__index,w
        ; expression=`{ index >= id . size }' exp_delay=2 true_delay=1  false_delay=0 true_size=1 false_size=0
        ; Switch from code bank 0 to code bank 1 before possible transfer (btfsc)
        bsf pa0___byte,pa0___bit
        btfsc c___byte,c___bit
        ; if { index >= id . size } body start
        ;   index := 0  
        clrf main__index
        ; if { index >= id . size } body end
        ; if exp=` index >= id . size ' false skip delay=4
        ; Other expression=`{ index >= id . size }' delay=4
        ; if { index >= id . size } end
        goto switch__552end
switch__552block577:
        ; ID Reset < Command = 1111 1101 > :
        ;   index := 0  
        clrf main__index
        goto switch__552end
switch__552block582:
        ; Glitch Read < Command = 1111 1110 > :
        ;   call send_byte {{ glitch }}  
        movf main__glitch,w
        ; Switch from register bank 1 to register bank 2 (which contains send_byte__char)
        bcf rp0___byte,rp0___bit
        bsf rp1___byte,rp1___bit
        ; Register bank is now 2
        movwf send_byte__char
        ; Switch from code bank 1 to code bank 0 before possible transfer (call)
        bcf pa0___byte,pa0___bit
        call send_byte
        ;   glitch := 0  
        ; Switch from register bank 2 to register bank 1 (which contains main__glitch)
        bsf rp0___byte,rp0___bit
        bcf rp1___byte,rp1___bit
        ; Register bank is now 1
        clrf main__glitch
        ; Switch from code bank 0 to code bank 1 before possible transfer (goto)
        bsf pa0___byte,pa0___bit
        goto switch__552end
switch__552block587:
        ; Glitch < Command = 1111 1111 > :
        ; if { glitch != 0xff } start
        incf main__glitch,w
        ; expression=`{ glitch != 0xff }' exp_delay=1 true_delay=1  false_delay=0 true_size=1 false_size=0
        btfss z___byte,z___bit
        ; if { glitch != 0xff } body start
        ;   glitch := glitch + 1  
        incf main__glitch,f
        ; if { glitch != 0xff } body end
        ; if exp=` glitch != 0xff ' false skip delay=3
        ; Other expression=`{ glitch != 0xff }' delay=3
        ; if { glitch != 0xff } end
switch__552end:
        ; if { {{ command >> 3 }} & 7 = 7 } body end
label550__3end:
        ; if exp=` {{ command >> 3 }} & 7 = 7 ' empty false
        ; Other expression=`{ {{ command >> 3 }} & 7 = 7 }' delay=-1
        ; if { {{ command >> 3 }} & 7 = 7 } end
switch__377end:
        goto main__372loop__forever
        ; loop_forever ... end
        ; procedure main end

        ; Register bank 0 used 16 bytes of 24 available bytes
        ; Register bank 1 used 10 bytes of 16 available bytes
        ; Register bank 2 used 8 bytes of 16 available bytes
        ; Register bank 3 used 0 bytes of 16 available bytes

        end

