        radix   dec
        ; Code bank 0; Start address: 0; End address: 1023
        org     0

        ; Define start addresses for data regions
shared___globals equ 32
__indf equ 0
__pcl equ 2
__status equ 3
__fsr equ 4
__c___byte equ 3
__c___bit equ 0
__z___byte equ 3
__z___bit equ 2
__rp0___byte equ 3
__rp0___bit equ 5
__rp1___byte equ 3
__rp1___bit equ 6
__irp___byte equ 3
__irp___bit equ 7
__pclath equ 10
__cb0___byte equ 10
__cb0___bit equ 3
__cb1___byte equ 10
__cb1___bit equ 4

        ; # #############################################################################
        ; #
        ; # Copyright (c) 2002-2004 by Wayne C. Gramlich
        ; # All rights reserved.
        ; #
        ; # See:
        ; #
        ; #   http://gramlich.net/projects/robobricks/irproximity2/index.html
        ; #
        ; # for more details.
        ; #
        ; # #############################################################################

        ; buffer = 'irproximity2'
        ; line_number = 16
        ; library _pic16f630 entered
        ; # Copyright (c) 2004 by Wayne C. Gramlich
        ; # All rights reserved.

        ; buffer = '_pic16f630'
        ; line_number = 5
        ; processor pic16f630
        ; line_number = 6
        ; configure_address 0x2007
        ; line_number = 7
        ;  configure_fill 0x0000
        ; line_number = 8
        ;  configure_option bg: bg11 = 0x3000
        ; line_number = 9
        ;  configure_option bg: bg10 = 0x2000
        ; line_number = 10
        ;  configure_option bg: bg01 = 0x1000
        ; line_number = 11
        ;  configure_option bg: bg00 = 0x0000
        ; line_number = 12
        ;  configure_option cpd: on = 0x000
        ; line_number = 13
        ;  configure_option cpd: off = 0x100
        ; line_number = 14
        ;  configure_option cp: on = 0x00
        ; line_number = 15
        ;  configure_option cp: off = 0x80
        ; line_number = 16
        ;  configure_option boden: on = 0x40
        ; line_number = 17
        ;  configure_option boden: off = 0x00
        ; line_number = 18
        ;  configure_option mclre: on = 0x20
        ; line_number = 19
        ;  configure_option mclre: off = 0x00
        ; line_number = 20
        ;  configure_option pwrte: on = 0x00
        ; line_number = 21
        ;  configure_option pwrte: off = 0x10
        ; line_number = 22
        ;  configure_option wdte: on = 8
        ; line_number = 23
        ;  configure_option wdte: off = 0
        ; line_number = 24
        ;  configure_option fosc: rc_clk = 7
        ; line_number = 25
        ;  configure_option fosc: rc_no_clk = 6
        ; line_number = 26
        ;  configure_option fosc: int_clk = 5
        ; line_number = 27
        ;  configure_option fosc: int_no_clk = 4
        ; line_number = 28
        ;  configure_option fosc: ec = 3
        ; line_number = 29
        ;  configure_option fosc: hs = 2
        ; line_number = 30
        ;  configure_option fosc: xt = 1
        ; line_number = 31
        ;  configure_option fosc: lp = 0
        ; line_number = 32
        ;  code_bank 0x0 : 0x3ff
        ; line_number = 33
        ;  data_bank 0x0 : 0x7f
        ; line_number = 34
        ;  data_bank 0x80 : 0xff
        ; line_number = 35
        ;  shared_region 0x20 : 0x5f
        ; line_number = 36
        ;  interrupts_possible
        ; line_number = 37
        ;  osccal_register_symbol _osccal
        ; line_number = 38
        ;  osccal_at_address 0x3ff
        ; line_number = 39
        ;  packages pdip=14, soic=14, tssop=14
        ; line_number = 40
        ;  pin vdd, power_supply
        ; line_number = 41
        ; pin_bindings pdip=1, soic=1, tssop=1
        ; line_number = 42
        ; pin ra5_in, ra5_out, t1cki, osc1, clkin, ra5_unused
        ; line_number = 43
        ; pin_bindings pdip=2, soic=2, tssop=2
        ; line_number = 44
        ;  bind_to _porta@5
        ; line_number = 45
        ;  or_if ra5_in _trisa 16
        ; line_number = 46
        ;  or_if ra5_out _trisa 0
        ; line_number = 47
        ; pin ra4_in, ra4_out, t1g, osc2, clkout, ra4_unused
        ; line_number = 48
        ; pin_bindings pdip=3, soic=3, tssop=3
        ; line_number = 49
        ;  bind_to _porta@4
        ; line_number = 50
        ;  or_if ra4_in _trisa 8
        ; line_number = 51
        ;  or_if ra4_out _trisa 0
        ; line_number = 52
        ; pin ra3_in, mclr, vpp, ra3_unused
        ; line_number = 53
        ; pin_bindings pdip=4, soic=4, tssop=4
        ; line_number = 54
        ;  bind_to _porta@3
        ; line_number = 55
        ;  or_if ra3_in _trisa 4
        ; line_number = 56
        ; pin rc5_in, rc5_out, rc5_unused
        ; line_number = 57
        ; pin_bindings pdip=5, soic=5, tssop=5
        ; line_number = 58
        ;  bind_to _portc@5
        ; line_number = 59
        ;  or_if rc5_in _trisc 32
        ; line_number = 60
        ;  or_if rc5_out _trisc 0
        ; line_number = 61
        ; pin rc4_in, rc4_out, rc4_unused
        ; line_number = 62
        ; pin_bindings pdip=6, soic=6, tssop=6
        ; line_number = 63
        ;  bind_to _portc@4
        ; line_number = 64
        ;  or_if rc4_in _trisc 16
        ; line_number = 65
        ;  or_if rc4_out _trisc 0
        ; line_number = 66
        ; pin rc3_in, rc3_out, r3_unused
        ; line_number = 67
        ; pin_bindings pdip=7, soic=7, tssop=7
        ; line_number = 68
        ;  bind_to _portc@3
        ; line_number = 69
        ;  or_if rc3_in _trisc 8
        ; line_number = 70
        ;  or_if rc3_out _trisc 0
        ; line_number = 71
        ; pin rc2_in, rc2_out, rc2_unused
        ; line_number = 72
        ; pin_bindings pdip=8, soic=8, tssop=8
        ; line_number = 73
        ;  bind_to _portc@2
        ; line_number = 74
        ;  or_if rc2_in _trisc 4
        ; line_number = 75
        ;  or_if rc2_out _trisc 0
        ; line_number = 76
        ; pin rc1_in, rc1_out, rc1_unused
        ; line_number = 77
        ; pin_bindings pdip=9, soic=9, tssop=9
        ; line_number = 78
        ;  bind_to _portc@1
        ; line_number = 79
        ;  or_if rc1_in _trisc 2
        ; line_number = 80
        ;  or_if rc1_out _trisc 0
        ; line_number = 81
        ; pin rc0_in, rc0_out, rc0_unused
        ; line_number = 82
        ; pin_bindings pdip=10, soic=10, tssop=10
        ; line_number = 83
        ;  bind_to _portc@0
        ; line_number = 84
        ;  or_if rc0_in _trisc 1
        ; line_number = 85
        ;  or_if rc0_out _trisc 0
        ; line_number = 86
        ; pin ra2_in, ra2_out, cout, t0cki, int, ra2_unused
        ; line_number = 87
        ; pin_bindings pdip=11, soic=11, tssop=11
        ; line_number = 88
        ;  bind_to _porta@2
        ; line_number = 89
        ;  or_if ra2_in _trisa 4
        ; line_number = 90
        ;  or_if ra2_out _trisa 0
        ; line_number = 91
        ; pin ra1_in, ra1_out, cin_minus, vref, icspclk, ra1_unused
        ; line_number = 92
        ; pin_bindings pdip=12, soic=12, tssop=12
        ; line_number = 93
        ;  bind_to _porta@1
        ; line_number = 94
        ;  or_if ra1_in _trisa 2
        ; line_number = 95
        ;  or_if ra1_out _trisa 0
        ; line_number = 96
        ; pin ra0_in, ra0_out, cin_plus, icspdat, ra0_unused
        ; line_number = 97
        ; pin_bindings pdip=13, soic=13, tssop=13
        ; line_number = 98
        ;  bind_to _porta@0
        ; line_number = 99
        ;  or_if ra0_in _trisa 1
        ; line_number = 100
        ;  or_if ra0_out _trisa 0
        ; line_number = 101
        ; pin vss, ground
        ; line_number = 102
        ; pin_bindings pdip=14, soic=14, tssop=14


        ; line_number = 107
        ; library _pic16f630_676 entered
        ; # Copyright (c) 2004 by Wayne C. Gramlich
        ; # All rights reserved.

        ; # Shared register definitions for the PIC16F630 and PIC16F676.

        ; buffer = '_pic16f630_676'
        ; line_number = 7
        ; register _indf = 
_indf equ 0

        ; line_number = 9
        ; register _tmr0 = 
_tmr0 equ 1

        ; line_number = 11
        ; register _pcl = 
_pcl equ 2

        ; line_number = 13
        ; register _status = 
_status equ 3
        ; line_number = 14
        ; bind _rp0 = _status@5
_rp0___byte equ _status
_rp0___bit equ 5
        ; line_number = 15
        ; bind _to = _status@4
_to___byte equ _status
_to___bit equ 4
        ; line_number = 16
        ; bind _pd = _status@3
_pd___byte equ _status
_pd___bit equ 3
        ; line_number = 17
        ; bind _z = _status@2
_z___byte equ _status
_z___bit equ 2
        ; line_number = 18
        ; bind _dc = _status@1
_dc___byte equ _status
_dc___bit equ 1
        ; line_number = 19
        ; bind _c = _status@0
_c___byte equ _status
_c___bit equ 0

        ; line_number = 21
        ; register _fsr = 
_fsr equ 4

        ; line_number = 23
        ; register _porta = 
_porta equ 5
        ; line_number = 24
        ; register _ra = 
_ra equ 5
        ; line_number = 25
        ; bind _ra5 = _porta@5
_ra5___byte equ _porta
_ra5___bit equ 5
        ; line_number = 26
        ; bind _ra4 = _porta@4
_ra4___byte equ _porta
_ra4___bit equ 4
        ; line_number = 27
        ; bind _ra3 = _porta@3
_ra3___byte equ _porta
_ra3___bit equ 3
        ; line_number = 28
        ; bind _ra2 = _porta@2
_ra2___byte equ _porta
_ra2___bit equ 2
        ; line_number = 29
        ; bind _ra1 = _porta@1
_ra1___byte equ _porta
_ra1___bit equ 1
        ; line_number = 30
        ; bind _ra0 = _porta@0
_ra0___byte equ _porta
_ra0___bit equ 0

        ; line_number = 32
        ; register _portc = 
_portc equ 7
        ; line_number = 33
        ; register _rc = 
_rc equ 7
        ; line_number = 34
        ; bind _rc5 = _portc@5
_rc5___byte equ _portc
_rc5___bit equ 5
        ; line_number = 35
        ; bind _rc4 = _portc@4
_rc4___byte equ _portc
_rc4___bit equ 4
        ; line_number = 36
        ; bind _rc3 = _portc@3
_rc3___byte equ _portc
_rc3___bit equ 3
        ; line_number = 37
        ; bind _rc2 = _portc@2
_rc2___byte equ _portc
_rc2___bit equ 2
        ; line_number = 38
        ; bind _rc1 = _portc@1
_rc1___byte equ _portc
_rc1___bit equ 1
        ; line_number = 39
        ; bind _rc0 = _portc@0
_rc0___byte equ _portc
_rc0___bit equ 0

        ; line_number = 41
        ; register _pclath = 
_pclath equ 10

        ; line_number = 43
        ; register _intcon = 
_intcon equ 11
        ; line_number = 44
        ; bind _gie = _intcon@7
_gie___byte equ _intcon
_gie___bit equ 7
        ; line_number = 45
        ; bind _peie = _intcon@6
_peie___byte equ _intcon
_peie___bit equ 6
        ; line_number = 46
        ; bind _t0ie = _intcon@5
_t0ie___byte equ _intcon
_t0ie___bit equ 5
        ; line_number = 47
        ; bind _inte = _intcon@4
_inte___byte equ _intcon
_inte___bit equ 4
        ; line_number = 48
        ; bind _raie = _intcon@3
_raie___byte equ _intcon
_raie___bit equ 3
        ; line_number = 49
        ; bind _t0if = _intcon@2
_t0if___byte equ _intcon
_t0if___bit equ 2
        ; line_number = 50
        ; bind _intf = _intcon@1
_intf___byte equ _intcon
_intf___bit equ 1
        ; line_number = 51
        ; bind _raif = _intcon@0
_raif___byte equ _intcon
_raif___bit equ 0

        ; line_number = 53
        ; register _pir1 = 
_pir1 equ 12
        ; line_number = 54
        ; bind _eeif = _pir1@7
_eeif___byte equ _pir1
_eeif___bit equ 7
        ; line_number = 55
        ; bind _cmif = _pir1@3
_cmif___byte equ _pir1
_cmif___bit equ 3
        ; line_number = 56
        ; bind _tmr1if = _pir1@0
_tmr1if___byte equ _pir1
_tmr1if___bit equ 0

        ; line_number = 58
        ; register _tmr1l = 
_tmr1l equ 14

        ; line_number = 60
        ; register _tmr1h = 
_tmr1h equ 15

        ; line_number = 62
        ; register _t1con = 
_t1con equ 16
        ; line_number = 63
        ; bind _t1ge = _t1con@6
_t1ge___byte equ _t1con
_t1ge___bit equ 6
        ; line_number = 64
        ; bind _t1ckps1 = _t1con@5
_t1ckps1___byte equ _t1con
_t1ckps1___bit equ 5
        ; line_number = 65
        ; bind _t1ckps0 = _t1con@4
_t1ckps0___byte equ _t1con
_t1ckps0___bit equ 4
        ; line_number = 66
        ; bind _t1oscen = _t1con@3
_t1oscen___byte equ _t1con
_t1oscen___bit equ 3
        ; line_number = 67
        ; bind _t1sync = _t1con@2
_t1sync___byte equ _t1con
_t1sync___bit equ 2
        ; line_number = 68
        ; bind _tmr1cs = _t1con@1
_tmr1cs___byte equ _t1con
_tmr1cs___bit equ 1
        ; line_number = 69
        ; bind _tmr1on = _t1con@0
_tmr1on___byte equ _t1con
_tmr1on___bit equ 0

        ; line_number = 71
        ; register _cmcon = 
_cmcon equ 25
        ; line_number = 72
        ; bind _cout = _cmcon@6
_cout___byte equ _cmcon
_cout___bit equ 6
        ; line_number = 73
        ; bind _cinv = _cmcon@4
_cinv___byte equ _cmcon
_cinv___bit equ 4
        ; line_number = 74
        ; bind _cis = _cmcon@3
_cis___byte equ _cmcon
_cis___bit equ 3
        ; line_number = 75
        ; bind _cm2 = _cmcon@2
_cm2___byte equ _cmcon
_cm2___bit equ 2
        ; line_number = 76
        ; bind _cm1 = _cmcon@1
_cm1___byte equ _cmcon
_cm1___bit equ 1
        ; line_number = 77
        ; bind _cm0 = _cmcon@0
_cm0___byte equ _cmcon
_cm0___bit equ 0

        ; # Data bank 1 (0x80-0xff):

        ; line_number = 81
        ; register _option_reg = 
_option_reg equ 128
        ; line_number = 82
        ; bind _rapu = _option_reg@7
_rapu___byte equ _option_reg
_rapu___bit equ 7
        ; line_number = 83
        ; bind _intedg = _option_reg@6
_intedg___byte equ _option_reg
_intedg___bit equ 6
        ; line_number = 84
        ; bind _t0cs = _option_reg@5
_t0cs___byte equ _option_reg
_t0cs___bit equ 5
        ; line_number = 85
        ; bind _t0se = _option_reg@4
_t0se___byte equ _option_reg
_t0se___bit equ 4
        ; line_number = 86
        ; bind _psa = _option_reg@3
_psa___byte equ _option_reg
_psa___bit equ 3
        ; line_number = 87
        ; bind _ps2 = _option_reg@2
_ps2___byte equ _option_reg
_ps2___bit equ 2
        ; line_number = 88
        ; bind _ps1 = _option_reg@1
_ps1___byte equ _option_reg
_ps1___bit equ 1
        ; line_number = 89
        ; bind _ps0 = _option_reg@0
_ps0___byte equ _option_reg
_ps0___bit equ 0

        ; line_number = 91
        ; register _trisa = 
_trisa equ 133
        ; line_number = 92
        ; bind _trisa5 = _trisa@5
_trisa5___byte equ _trisa
_trisa5___bit equ 5
        ; line_number = 93
        ; bind _trisa4 = _trisa@4
_trisa4___byte equ _trisa
_trisa4___bit equ 4
        ; line_number = 94
        ; bind _trisa3 = _trisa@3
_trisa3___byte equ _trisa
_trisa3___bit equ 3
        ; line_number = 95
        ; bind _trisa2 = _trisa@2
_trisa2___byte equ _trisa
_trisa2___bit equ 2
        ; line_number = 96
        ; bind _trisa1 = _trisa@1
_trisa1___byte equ _trisa
_trisa1___bit equ 1
        ; line_number = 97
        ; bind _trisa0 = _trisa@0
_trisa0___byte equ _trisa
_trisa0___bit equ 0

        ; line_number = 99
        ; register _trisc = 
_trisc equ 135
        ; line_number = 100
        ; bind _trisc5 = _trisc@5
_trisc5___byte equ _trisc
_trisc5___bit equ 5
        ; line_number = 101
        ; bind _trisc4 = _trisc@4
_trisc4___byte equ _trisc
_trisc4___bit equ 4
        ; line_number = 102
        ; bind _trisc3 = _trisc@3
_trisc3___byte equ _trisc
_trisc3___bit equ 3
        ; line_number = 103
        ; bind _trisc2 = _trisc@2
_trisc2___byte equ _trisc
_trisc2___bit equ 2
        ; line_number = 104
        ; bind _trisc1 = _trisc@1
_trisc1___byte equ _trisc
_trisc1___bit equ 1
        ; line_number = 105
        ; bind _trisc0 = _trisc@0
_trisc0___byte equ _trisc
_trisc0___bit equ 0

        ; line_number = 107
        ; register _pie1 = 
_pie1 equ 140
        ; line_number = 108
        ; bind _eeie = _pie1@7
_eeie___byte equ _pie1
_eeie___bit equ 7
        ; line_number = 109
        ; bind _adie = _pie1@6
_adie___byte equ _pie1
_adie___bit equ 6
        ; line_number = 110
        ; bind _cmie = _pie1@3
_cmie___byte equ _pie1
_cmie___bit equ 3
        ; line_number = 111
        ; bind _tmr1ie = _pie1@0
_tmr1ie___byte equ _pie1
_tmr1ie___bit equ 0

        ; line_number = 113
        ; register _pcon = 
_pcon equ 142
        ; line_number = 114
        ; bind _por = _pcon@1
_por___byte equ _pcon
_por___bit equ 1
        ; line_number = 115
        ; bind _bor = _pcon@0
_bor___byte equ _pcon
_bor___bit equ 0

        ; line_number = 117
        ; register _osccal = 
_osccal equ 144
        ; line_number = 118
        ; bind _cal5 = _osccal@7
_cal5___byte equ _osccal
_cal5___bit equ 7
        ; line_number = 119
        ; bind _cal4 = _osccal@6
_cal4___byte equ _osccal
_cal4___bit equ 6
        ; line_number = 120
        ; bind _cal3 = _osccal@5
_cal3___byte equ _osccal
_cal3___bit equ 5
        ; line_number = 121
        ; bind _cal2 = _osccal@4
_cal2___byte equ _osccal
_cal2___bit equ 4
        ; line_number = 122
        ; bind _cal1 = _osccal@3
_cal1___byte equ _osccal
_cal1___bit equ 3
        ; line_number = 123
        ; bind _cal0 = _osccal@2
_cal0___byte equ _osccal
_cal0___bit equ 2
        ; line_number = 124
        ; constant _osccal_lsb = 4
_osccal_lsb equ 4

        ; line_number = 126
        ; register _wpua = 
_wpua equ 149
        ; line_number = 127
        ; bind _wpua5 = _wpua@5
_wpua5___byte equ _wpua
_wpua5___bit equ 5
        ; line_number = 128
        ; bind _wpua4 = _wpua@4
_wpua4___byte equ _wpua
_wpua4___bit equ 4
        ; line_number = 129
        ; bind _wpua2 = _wpua@2
_wpua2___byte equ _wpua
_wpua2___bit equ 2
        ; line_number = 130
        ; bind _wpua1 = _wpua@1
_wpua1___byte equ _wpua
_wpua1___bit equ 1
        ; line_number = 131
        ; bind _wpua0 = _wpua@0
_wpua0___byte equ _wpua
_wpua0___bit equ 0

        ; line_number = 133
        ; register _ioca = 
_ioca equ 150
        ; line_number = 134
        ; bind _ioca5 = _ioca@5
_ioca5___byte equ _ioca
_ioca5___bit equ 5
        ; line_number = 135
        ; bind _ioca4 = _ioca@4
_ioca4___byte equ _ioca
_ioca4___bit equ 4
        ; line_number = 136
        ; bind _ioca3 = _ioca@3
_ioca3___byte equ _ioca
_ioca3___bit equ 3
        ; line_number = 137
        ; bind _ioca2 = _ioca@2
_ioca2___byte equ _ioca
_ioca2___bit equ 2
        ; line_number = 138
        ; bind _ioca1 = _ioca@1
_ioca1___byte equ _ioca
_ioca1___bit equ 1
        ; line_number = 139
        ; bind _ioca0 = _ioca@0
_ioca0___byte equ _ioca
_ioca0___bit equ 0

        ; line_number = 141
        ; register _vrcon = 
_vrcon equ 153
        ; line_number = 142
        ; bind _vren = _vrcon@7
_vren___byte equ _vrcon
_vren___bit equ 7
        ; line_number = 143
        ; bind _vrr = _vrcon@5
_vrr___byte equ _vrcon
_vrr___bit equ 5
        ; line_number = 144
        ; bind _vr3 = _vrcon@3
_vr3___byte equ _vrcon
_vr3___bit equ 3
        ; line_number = 145
        ; bind _vr2 = _vrcon@2
_vr2___byte equ _vrcon
_vr2___bit equ 2
        ; line_number = 146
        ; bind _vr1 = _vrcon@1
_vr1___byte equ _vrcon
_vr1___bit equ 1
        ; line_number = 147
        ; bind _vr0 = _vrcon@0
_vr0___byte equ _vrcon
_vr0___bit equ 0

        ; line_number = 149
        ; register _eedata = 
_eedata equ 154

        ; line_number = 151
        ; register _eeadr = 
_eeadr equ 155

        ; line_number = 153
        ; register _eecon1 = 
_eecon1 equ 156
        ; line_number = 154
        ; bind _wrerr = _eecon1@3
_wrerr___byte equ _eecon1
_wrerr___bit equ 3
        ; line_number = 155
        ; bind _wren = _eecon1@2
_wren___byte equ _eecon1
_wren___bit equ 2
        ; line_number = 156
        ; bind _wr = _eecon1@1
_wr___byte equ _eecon1
_wr___bit equ 1
        ; line_number = 157
        ; bind _rd = _eecon1@0
_rd___byte equ _eecon1
_rd___bit equ 0

        ; line_number = 159
        ; register _eecon2 = 
_eecon2 equ 157


        ; buffer = '_pic16f630'
        ; line_number = 107
        ; library _pic16f630_676 exited


        ; buffer = 'irproximity2'
        ; line_number = 16
        ; library _pic16f630 exited
        ; line_number = 17
        ; library clock4mhz entered
        ; # Copyright (c) 2004 by Wayne C. Gramlich
        ; # All rights reserved.

        ; # This library defines the contstants {clock_rate}, {instruction_rate},
        ; # and {clocks_per_instruction}.

        ; # Define processor constants:
        ; buffer = 'clock4mhz'
        ; line_number = 9
        ; constant clock_rate = 4000000
clock_rate equ 4000000
        ; line_number = 10
        ; constant clocks_per_instruction = 4
clocks_per_instruction equ 4
        ; line_number = 11
        ; constant instruction_rate = clock_rate / clocks_per_instruction
instruction_rate equ 1000000


        ; buffer = 'irproximity2'
        ; line_number = 17
        ; library clock4mhz exited
        ; line_number = 18
        ; library bit_bang entered
        ; # Copyright (c) 2004 by Wayne C. Gramlich
        ; # All rights reserved.

        ; # This library provides bit bang routines for sending and receiving
        ; # serial data at 2400 baud in 8N1 format (1 start bit, 8 data bits,
        ; # No parity bit, 1 stop stop bit.)
        ; #
        ; # This library requires that the pins {serial_in} and {serial_out}
        ; # be defined.  In addition, the variable {instruction_rate} needs
        ; # to be defined.  Lastly, there needs to be a {delay} procedure
        ; # with an "exact_delay delay_instructions" clause in it.  The {delay}
        ; # routine should invoke "watch_dog_reset" so that the watch dog time
        ; # can be set.

        ; # Define some constants that we will be needing:
        ; buffer = 'bit_bang'
        ; line_number = 17
        ; constant baud_rate = 2400
baud_rate equ 2400
        ; line_number = 18
        ; constant instructions_per_bit = instruction_rate / baud_rate
instructions_per_bit equ 416
        ; line_number = 19
        ; constant delays_per_bit = 3
delays_per_bit equ 3
        ; line_number = 20
        ; constant instructions_per_delay = instructions_per_bit / delays_per_bit
instructions_per_delay equ 138
        ; line_number = 21
        ; constant extra_instructions = 5
extra_instructions equ 5
        ; line_number = 22
        ; constant delay_instructions = instructions_per_delay - extra_instructions
delay_instructions equ 133

        ; # The {receiving} bit is sent when data is being received.
        ; # It gets cleared whenever data gets sent.  It is used to
        ; # determine whether additional delay is needed to turn a
        ; # line around for slow interpretted chips like the Basic
        ; # Stamp 2 and the OOPIC.

        ; line_number = 30
        ; global receiving bit
receiving___byte equ shared___globals+63
receiving___bit equ 0
        ; line_number = 31
        ; global waiting bit
waiting___byte equ shared___globals+63
waiting___bit equ 1

        ; Delaying code generation for procedure  byte_get
        ; Delaying code generation for procedure  byte_put

        ; buffer = 'irproximity2'
        ; line_number = 18
        ; library bit_bang exited

        ; line_number = 20
        ; package pdip
        ; line_number = 21
        ; pin 1 = power_supply
        ; line_number = 22
        ;  pin 2 = ra5_out, name = serial_out
serial_out___byte equ _porta
serial_out___bit equ 5
        ; line_number = 23
        ;  pin 3 = ra4_in, name = ir_sense
ir_sense___byte equ _porta
ir_sense___bit equ 4
        ; line_number = 24
        ;  pin 4 = ra3_in, name = serial_in
serial_in___byte equ _porta
serial_in___bit equ 3
        ; line_number = 25
        ;  pin 5 = rc5_unused
        ; line_number = 26
        ;  pin 6 = rc4_out, name = front_led1
front_led1___byte equ _portc
front_led1___bit equ 4
        ; line_number = 27
        ;  pin 7 = rc3_out, name = back_led0
back_led0___byte equ _portc
back_led0___bit equ 3
        ; line_number = 28
        ;  pin 8 = rc2_out, name = back_led1
back_led1___byte equ _portc
back_led1___bit equ 2
        ; line_number = 29
        ;  pin 9 = rc1_out, name = front_led0
front_led0___byte equ _portc
front_led0___bit equ 1
        ; line_number = 30
        ;  pin 10 = rc0_unused
        ; line_number = 31
        ;  pin 11 = ra2_out, name = front_ir
front_ir___byte equ _porta
front_ir___bit equ 2
        ; line_number = 32
        ;  pin 12 = ra1_out, name = back_ir
back_ir___byte equ _porta
back_ir___bit equ 1
        ; line_number = 33
        ;  pin 13 = ra0_out, name = debug_out
debug_out___byte equ _porta
debug_out___bit equ 0
        ; line_number = 34
        ;  pin 14 = ground

        ; line_number = 36
        ; constant max_bit = 5
max_bit equ 5
        ; line_number = 37
        ; constant max_count = (1 << (max_bit + 1)) - 1
max_count equ 63

        ; line_number = 39
        ; constant buffer_power = 3
buffer_power equ 3
        ; line_number = 40
        ; constant buffer_size = 1 << buffer_power
buffer_size equ 8
        ; line_number = 41
        ; constant f1 = 13
f1 equ 13
        ; line_number = 42
        ; constant f2 = 13
f2 equ 13
        ; line_number = 43
        ; constant f = f1 + f2
f equ 26
        ; line_number = 44
        ; constant near_default = 40 << 2
near_default equ 160

        ; line_number = 46
        ; constant interrupt_front_near = 5
interrupt_front_near equ 5
        ; line_number = 47
        ; constant interrupt_front_far = 4
interrupt_front_far equ 4
        ; line_number = 48
        ; constant interrupt_front_none = 3
interrupt_front_none equ 3
        ; line_number = 49
        ; constant interrupt_back_near = 2
interrupt_back_near equ 2
        ; line_number = 50
        ; constant interrupt_back_far = 1
interrupt_back_far equ 1
        ; line_number = 51
        ; constant interrupt_back_none = 0
interrupt_back_none equ 0

        ; # Globals:
        ; line_number = 54
        ; global interrupt_enable bit
interrupt_enable___byte equ shared___globals+63
interrupt_enable___bit equ 2
        ; line_number = 55
        ; global interrupt_pending bit
interrupt_pending___byte equ shared___globals+63
interrupt_pending___bit equ 3
        ; line_number = 56
        ; global interrupt_mask byte
interrupt_mask equ shared___globals+4

        ; line_number = 58
        ; global backs[buffer_size] array[byte]
backs equ shared___globals+5
        ; line_number = 59
        ; global back_average byte
back_average equ shared___globals+13
        ; line_number = 60
        ; global back_count byte
back_count equ shared___globals+14
        ; line_number = 61
        ; global back_delay byte
back_delay equ shared___globals+15
        ; line_number = 62
        ; global back_enable bit
back_enable___byte equ shared___globals+63
back_enable___bit equ 4
        ; line_number = 63
        ; global back_far byte
back_far equ shared___globals+16
        ; line_number = 64
        ; global back_detect byte
back_detect equ shared___globals+17
        ; line_number = 65
        ; global back_index byte
back_index equ shared___globals+18
        ; line_number = 66
        ; global back_last byte
back_last equ shared___globals+19
        ; line_number = 67
        ; global back_near byte
back_near equ shared___globals+20

        ; line_number = 69
        ; global fronts[buffer_size] array[byte]
fronts equ shared___globals+21
        ; line_number = 70
        ; global front_average byte
front_average equ shared___globals+29
        ; line_number = 71
        ; global front_count byte
front_count equ shared___globals+30
        ; line_number = 72
        ; global front_delay byte
front_delay equ shared___globals+31
        ; line_number = 73
        ; global front_enable bit
front_enable___byte equ shared___globals+63
front_enable___bit equ 5
        ; line_number = 74
        ; global front_far byte
front_far equ shared___globals+32
        ; line_number = 75
        ; global front_index byte
front_index equ shared___globals+33
        ; line_number = 76
        ; global front_last byte
front_last equ shared___globals+34
        ; line_number = 77
        ; global front_near byte
front_near equ shared___globals+35

        ; line_number = 79
        ; global command_previous byte
command_previous equ shared___globals+36
        ; line_number = 80
        ; global command_last byte
command_last equ shared___globals+37
        ; line_number = 81
        ; global sent_previous byte
sent_previous equ shared___globals+38
        ; line_number = 82
        ; global sent_last byte
sent_last equ shared___globals+39

        ; line_number = 84
        ; procedure main
main:
        ; Need to calibrate the oscillator
        call    1023
        bsf     __rp0___byte, __rp0___bit
        movwf   _osccal
        ; Initialize some registers
        movlw   12
        movwf   _trisa
        clrf    _trisc
        ; arguments_none
        ; line_number = 86
        ;  returns_nothing

        ; line_number = 88
        ;  local temp byte
main__temp equ shared___globals+40

        ; line_number = 90
        ;  local bit byte
main__bit equ shared___globals+41
        ; line_number = 91
        ;  local command byte
main__command equ shared___globals+42
        ; line_number = 92
        ;  local temporary byte
main__temporary equ shared___globals+43
        ; line_number = 93
        ;  local id_index byte
main__id_index equ shared___globals+44
        ; line_number = 94
        ;  local glitch byte
main__glitch equ shared___globals+45
        ; line_number = 95
        ;  local counter byte
main__counter equ shared___globals+46

        ; before procedure statements delay=non-uniform, bit states=(data:X0=>X1 code:XX=>XX)
        ; line_number = 97
        ;  id_index := 0
        movlw   0
        bcf     __rp0___byte, __rp0___bit
        movwf   main__id_index
        ; line_number = 98
        ;  glitch := 0
        movlw   0
        movwf   main__glitch

        ; line_number = 100
        ;  interrupt_enable := 0
        bcf     interrupt_enable___byte, interrupt_enable___bit
        ; line_number = 101
        ;  interrupt_pending := 0
        bcf     interrupt_pending___byte, interrupt_pending___bit
        ; line_number = 102
        ;  interrupt_mask := 0
        movlw   0
        movwf   interrupt_mask
        ; line_number = 103
        ;  receiving := 0
        bcf     receiving___byte, receiving___bit

        ; line_number = 105
        ;  back_count := 0
        movlw   0
        movwf   back_count
        ; line_number = 106
        ;  back_delay := 0
        movlw   0
        movwf   back_delay
        ; line_number = 107
        ;  back_enable := 1
        bsf     back_enable___byte, back_enable___bit
        ; line_number = 108
        ;  back_far := 0
        movlw   0
        movwf   back_far
        ; line_number = 109
        ;  back_index := 0
        movlw   0
        movwf   back_index
        ; line_number = 110
        ;  back_led0 := 1
        bsf     back_led0___byte, back_led0___bit
        ; line_number = 111
        ;  back_led1 := 1
        bsf     back_led1___byte, back_led1___bit
        ; line_number = 112
        ;  back_near := near_default
        movlw   160
        movwf   back_near

        ; line_number = 114
        ;  front_count := 0
        movlw   0
        movwf   front_count
        ; line_number = 115
        ;  front_delay := 0
        movlw   0
        movwf   front_delay
        ; line_number = 116
        ;  front_enable := 1
        bsf     front_enable___byte, front_enable___bit
        ; line_number = 117
        ;  front_far := 0
        movlw   0
        movwf   front_far
        ; line_number = 118
        ;  front_index := 0
        movlw   0
        movwf   front_index
        ; line_number = 119
        ;  front_led0 := 1
        bsf     front_led0___byte, front_led0___bit
        ; line_number = 120
        ;  front_led1 := 1
        bsf     front_led1___byte, front_led1___bit
        ; line_number = 121
        ;  front_near := near_default
        movlw   160
        movwf   front_near

        ; # Set the direction:
        ; line_number = 124
        ;  loop_forever start
main__1:
        ; # Wait for a command:
        ; line_number = 126
        ;  command := xbyte_get()
        call    xbyte_get
        movwf   main__command

        ; # Dispatch on command:
        ; line_number = 129
        ;  switch command >> 6 start
        movlw   main__89>>8
        movwf   __pclath
main__90 equ shared___globals+53
        swapf   main__command,w
        movwf   main__90
        rrf     main__90,f
        rrf     main__90,w
        andlw   3
        addlw   main__89
        movwf   __pcl
        ; page_group 4
main__89:
        goto    main__85
        goto    main__86
        goto    main__87
        goto    main__88
        ; line_number = 130
        ; case 0
main__85:
        ; # Command = 00xx xxxx:
        ; line_number = 132
        ;  switch (command >> 3) & 7 start
        movlw   main__52>>8
        movwf   __pclath
main__53 equ shared___globals+53
        rrf     main__command,w
        movwf   main__53
        rrf     main__53,f
        rrf     main__53,w
        andlw   7
        addlw   main__52
        movwf   __pcl
        ; page_group 8
main__52:
        goto    main__47
        goto    main__48
        goto    main__49
        goto    main__50
        goto    main__51
        goto    main__51
        goto    main__51
        goto    main__51
        ; line_number = 133
        ; case 0
main__47:
        ; # Command = 0000 0xxx:
        ; line_number = 135
        ;  switch command & 7 start
        movlw   main__18>>8
        movwf   __pclath
        movlw   7
        andwf   main__command,w
        addlw   main__18
        movwf   __pcl
        ; page_group 8
main__18:
        goto    main__10
        goto    main__11
        goto    main__12
        goto    main__13
        goto    main__14
        goto    main__15
        goto    main__16
        goto    main__17
        ; line_number = 136
        ; case 0
main__10:
        ; # Command = 0000 0000; Read LED's:
        ; line_number = 138
        ;  temporary := 0
        movlw   0
        movwf   main__temporary
        ; line_number = 139
        ;  if front_average > front_far start
        movf    front_far,w
        subwf   front_average,w
        btfsc   __z___byte, __z___bit
        bcf     __c___byte, __c___bit
        ; (after recombine) true_delay=non-uniform, false_delay=non-uniform
        ; CASE: True.size=1 False.size=0
        btfsc   __c___byte, __c___bit
        ; line_number = 140
        ; temporary@3 := 1
main__select__2___byte equ main__temporary
main__select__2___bit equ 3
        bsf     main__select__2___byte, main__select__2___bit
        ; Recombine size1 = 0 || size2 = 0
        ; code.delay=4294967295 back_code.delay=4294967295
        ; <=bit_code_emit@symbol; sym=__c (data:X0=>X0 code:XX=>XX)
        ; line_number = 139
        ;  if front_average > front_far done
        ; line_number = 141
        ; if front_average > front_near start
        movf    front_near,w
        subwf   front_average,w
        btfsc   __z___byte, __z___bit
        bcf     __c___byte, __c___bit
        ; (after recombine) true_delay=non-uniform, false_delay=non-uniform
        ; CASE: True.size=1 False.size=0
        btfsc   __c___byte, __c___bit
        ; line_number = 142
        ; temporary@2 := 1
main__select__3___byte equ main__temporary
main__select__3___bit equ 2
        bsf     main__select__3___byte, main__select__3___bit
        ; Recombine size1 = 0 || size2 = 0
        ; code.delay=4294967295 back_code.delay=4294967295
        ; <=bit_code_emit@symbol; sym=__c (data:X0=>X0 code:XX=>XX)
        ; line_number = 141
        ; if front_average > front_near done
        ; line_number = 143
        ; if back_average > back_far start
        movf    back_far,w
        subwf   back_average,w
        btfsc   __z___byte, __z___bit
        bcf     __c___byte, __c___bit
        ; (after recombine) true_delay=non-uniform, false_delay=non-uniform
        ; CASE: True.size=1 False.size=0
        btfsc   __c___byte, __c___bit
        ; line_number = 144
        ; temporary@1 := 1
main__select__4___byte equ main__temporary
main__select__4___bit equ 1
        bsf     main__select__4___byte, main__select__4___bit
        ; Recombine size1 = 0 || size2 = 0
        ; code.delay=4294967295 back_code.delay=4294967295
        ; <=bit_code_emit@symbol; sym=__c (data:X0=>X0 code:XX=>XX)
        ; line_number = 143
        ; if back_average > back_far done
        ; line_number = 145
        ; if back_average > back_near start
        movf    back_near,w
        subwf   back_average,w
        btfsc   __z___byte, __z___bit
        bcf     __c___byte, __c___bit
        ; (after recombine) true_delay=non-uniform, false_delay=non-uniform
        ; CASE: True.size=1 False.size=0
        btfsc   __c___byte, __c___bit
        ; line_number = 146
        ; temporary@0 := 1
main__select__5___byte equ main__temporary
main__select__5___bit equ 0
        bsf     main__select__5___byte, main__select__5___bit
        ; Recombine size1 = 0 || size2 = 0
        ; code.delay=4294967295 back_code.delay=4294967295
        ; <=bit_code_emit@symbol; sym=__c (data:X0=>X0 code:XX=>XX)
        ; line_number = 145
        ; if back_average > back_near done
        ; line_number = 147
        ; call byte_put(temporary)
        movf    main__temporary,w
        call    byte_put
        goto    main__19
        ; line_number = 148
        ; case 1
main__11:
        ; # Command = 0000 0001; Read Front/Back Average High:
        ; line_number = 150
        ;  call byte_put((front_average & 0xf0) | (back_average >> 4))
main__6 equ shared___globals+53
        movlw   240
        andwf   front_average,w
        movwf   main__6
main__7 equ shared___globals+54
        swapf   back_average,w
        andlw   15
        iorwf   main__6,w
        call    byte_put
        goto    main__19
        ; line_number = 151
        ; case 2
main__12:
        ; # Command = 0000 0010; Read Enables:
        ; line_number = 153
        ;  temporary := 0
        movlw   0
        movwf   main__temporary
        ; line_number = 154
        ;  if front_enable start
        ; (after recombine) true_delay=non-uniform, false_delay=non-uniform
        ; CASE: True.size=1 False.size=0
        btfsc   front_enable___byte, front_enable___bit
        ; line_number = 155
        ; temporary@2 := 1
main__select__8___byte equ main__temporary
main__select__8___bit equ 2
        bsf     main__select__8___byte, main__select__8___bit
        ; Recombine size1 = 0 || size2 = 0
        ; code.delay=4294967295 back_code.delay=4294967295
        ; <=bit_code_emit@symbol; sym=front_enable (data:X0=>X0 code:XX=>XX)
        ; line_number = 154
        ;  if front_enable done
        ; line_number = 156
        ; if back_enable start
        ; (after recombine) true_delay=non-uniform, false_delay=non-uniform
        ; CASE: True.size=1 False.size=0
        btfsc   back_enable___byte, back_enable___bit
        ; line_number = 157
        ; temporary@1 := 1
main__select__9___byte equ main__temporary
main__select__9___bit equ 1
        bsf     main__select__9___byte, main__select__9___bit
        ; Recombine size1 = 0 || size2 = 0
        ; code.delay=4294967295 back_code.delay=4294967295
        ; <=bit_code_emit@symbol; sym=back_enable (data:X0=>X0 code:XX=>XX)
        ; line_number = 156
        ; if back_enable done
        ; line_number = 158
        ; call byte_put(temporary)
        movf    main__temporary,w
        call    byte_put
        goto    main__19
        ; line_number = 159
        ; case 3
main__13:
        ; # Command = 0000 0011; Read Interrupt Mask:
        ; line_number = 161
        ;  call byte_put(interrupt_mask)
        movf    interrupt_mask,w
        call    byte_put
        goto    main__19
        ; line_number = 162
        ; case 4
main__14:
        ; # Command = 0000 0100; Read Front Average:
        ; line_number = 164
        ;  call byte_put(front_average)
        movf    front_average,w
        call    byte_put
        goto    main__19
        ; line_number = 165
        ; case 5
main__15:
        ; # Command = 0000 0101; Read Back Average:
        ; line_number = 167
        ;  call byte_put(back_average)
        movf    back_average,w
        call    byte_put
        goto    main__19
        ; line_number = 168
        ; case 6
main__16:
        ; # Command = 0000 0110; Read Front Latest:
        ; line_number = 170
        ;  call byte_put(front_last)
        movf    front_last,w
        call    byte_put
        goto    main__19
        ; line_number = 171
        ; case 7
main__17:
        ; # Command = 0000 0111; Read Back Latest:
        ; line_number = 173
        ;  call byte_put(back_last)
        movf    back_last,w
        call    byte_put
main__19:
        ; switch end:(data:X0=>X0 code:XX=>XX)
        ; line_number = 135
        ;  switch command & 7 done
        goto    main__54
        ; line_number = 174
        ; case 1
main__48:
        ; # Command = 0000 1xxx:
        ; line_number = 176
        ;  switch command & 7 start
        movlw   main__27>>8
        movwf   __pclath
        movlw   7
        andwf   main__command,w
        addlw   main__27
        movwf   __pcl
        ; page_group 8
main__27:
        goto    main__20
        goto    main__21
        goto    main__22
        goto    main__23
        goto    main__24
        goto    main__25
        goto    main__26
        goto    main__26
        ; line_number = 177
        ; case 0
main__20:
        ; # Command = 0000 1000; Read Front Near:
        ; line_number = 179
        ;  call byte_put(front_near)
        movf    front_near,w
        call    byte_put
        goto    main__28
        ; line_number = 180
        ; case 1
main__21:
        ; # Command = 0000 1001; Read Back Near:
        ; line_number = 182
        ;  call byte_put(back_near)
        movf    back_near,w
        call    byte_put
        goto    main__28
        ; line_number = 183
        ; case 2
main__22:
        ; # Command = 0000 1010; Read Front Far:
        ; line_number = 185
        ;  call byte_put(front_far)
        movf    front_far,w
        call    byte_put
        goto    main__28
        ; line_number = 186
        ; case 3
main__23:
        ; # Command = 0000 1011; Read Back Far:
        ; line_number = 188
        ;  call byte_put(back_far)
        movf    back_far,w
        call    byte_put
        goto    main__28
        ; line_number = 189
        ; case 4
main__24:
        ; # Command = 0000 1100; Read Front Delay:
        ; line_number = 191
        ;  call byte_put(front_delay)
        movf    front_delay,w
        call    byte_put
        goto    main__28
        ; line_number = 192
        ; case 5
main__25:
        ; # Command = 0000 1101; Read Back Delay:
        ; line_number = 194
        ;  call byte_put(back_delay)
        movf    back_delay,w
        call    byte_put
        goto    main__28
        ; line_number = 195
        ; case 6, 7
main__26:
        ; # Command = 0000 111x:
        ; line_number = 197
        ;  do_nothing
main__28:
        ; switch end:(data:X0=>X? code:XX=>XX)
        ; line_number = 176
        ;  switch command & 7 done
        goto    main__54
        ; line_number = 198
        ; case 2
main__49:
        ; line_number = 199
        ; switch command & 7 start
        movlw   main__36>>8
        movwf   __pclath
        movlw   7
        andwf   main__command,w
        addlw   main__36
        movwf   __pcl
        ; page_group 8
main__36:
        goto    main__33
        goto    main__33
        goto    main__33
        goto    main__33
        goto    main__34
        goto    main__35
        goto    main__35
        goto    main__35
        ; line_number = 200
        ; case 0, 1, 2, 3
main__33:
        ; # Command = 0001 00fb: Set Enables:
        ; line_number = 202
        ;  front_enable := command@1
        bcf     front_enable___byte, front_enable___bit
main__select__29___byte equ main__command
main__select__29___bit equ 1
        ; (after recombine) true_delay=non-uniform, false_delay=non-uniform
        ; CASE: True.size=1 False.size=0
        btfsc   main__select__29___byte, main__select__29___bit
        bsf     front_enable___byte, front_enable___bit
        ; Recombine size1 = 0 || size2 = 0
        ; code.delay=4294967295 back_code.delay=4294967295
        ; <=bit_code_emit@symbol; sym=main__select__29 (data:X0=>X0 code:XX=>XX)
        ; line_number = 203
        ;  back_enable := command@0
        bcf     back_enable___byte, back_enable___bit
main__select__30___byte equ main__command
main__select__30___bit equ 0
        ; (after recombine) true_delay=non-uniform, false_delay=non-uniform
        ; CASE: True.size=1 False.size=0
        btfsc   main__select__30___byte, main__select__30___bit
        bsf     back_enable___byte, back_enable___bit
        ; Recombine size1 = 0 || size2 = 0
        ; code.delay=4294967295 back_code.delay=4294967295
        ; <=bit_code_emit@symbol; sym=main__select__30 (data:X0=>X0 code:XX=>XX)
        ; line_number = 204
        ;  if !front_enable start
        ; (after recombine) true_delay=non-uniform, false_delay=non-uniform
        ; CASE: true.size=0 && false.size>1
        ; bit_code_emit_helper1: body_code.size=6 true_test=false body_code.delay=0 (non-uniform delay)
        btfsc   front_enable___byte, front_enable___bit
        goto    main__31
        ; line_number = 205
        ; front_average := 0
        movlw   0
        movwf   front_average
        ; line_number = 206
        ;  front_last := 0
        movlw   0
        movwf   front_last
        ; line_number = 207
        ;  front_led0 := 1
        bsf     front_led0___byte, front_led0___bit
        ; line_number = 208
        ;  front_led1 := 1
        bsf     front_led1___byte, front_led1___bit
main__31:
        ; Recombine size1 = 0 || size2 = 0
        ; code.delay=4294967295 back_code.delay=4294967295
        ; <=bit_code_emit@symbol; sym=front_enable (data:X0=>X0 code:XX=>XX)
        ; line_number = 204
        ;  if !front_enable done
        ; line_number = 209
        ; if !back_enable start
        ; (after recombine) true_delay=non-uniform, false_delay=non-uniform
        ; CASE: true.size=0 && false.size>1
        ; bit_code_emit_helper1: body_code.size=6 true_test=false body_code.delay=0 (non-uniform delay)
        btfsc   back_enable___byte, back_enable___bit
        goto    main__32
        ; line_number = 210
        ; back_average := 0
        movlw   0
        movwf   back_average
        ; line_number = 211
        ;  back_last := 0
        movlw   0
        movwf   back_last
        ; line_number = 212
        ;  back_led0 := 1
        bsf     back_led0___byte, back_led0___bit
        ; line_number = 213
        ;  back_led1 := 1
        bsf     back_led1___byte, back_led1___bit
main__32:
        ; Recombine size1 = 0 || size2 = 0
        ; code.delay=4294967295 back_code.delay=4294967295
        ; <=bit_code_emit@symbol; sym=back_enable (data:X0=>X0 code:XX=>XX)
        ; line_number = 209
        ; if !back_enable done
        goto    main__37
        ; line_number = 214
        ; case 4
main__34:
        ; # Command = 0001 0100: Set Interrupt Mask:
        ; line_number = 216
        ;  interrupt_mask := xbyte_get()
        call    xbyte_get
        movwf   interrupt_mask
        goto    main__37
        ; line_number = 217
        ; case 5, 6, 7
main__35:
        ; line_number = 218
        ; do_nothing
main__37:
        ; switch end:(data:X0=>X? code:XX=>XX)
        ; line_number = 199
        ; switch command & 7 done
        goto    main__54
        ; line_number = 219
        ; case 3
main__50:
        ; line_number = 220
        ; switch command & 7 start
        movlw   main__45>>8
        movwf   __pclath
        movlw   7
        andwf   main__command,w
        addlw   main__45
        movwf   __pcl
        ; page_group 8
main__45:
        goto    main__38
        goto    main__39
        goto    main__40
        goto    main__41
        goto    main__42
        goto    main__43
        goto    main__44
        goto    main__44
        ; line_number = 221
        ; case 0
main__38:
        ; # Command = 0001 1000: Set Front Near:
        ; line_number = 223
        ;  front_near := xbyte_get()
        call    xbyte_get
        movwf   front_near
        goto    main__46
        ; line_number = 224
        ; case 1
main__39:
        ; # Command = 0001 1001: Set Back Near:
        ; line_number = 226
        ;  back_near := xbyte_get()
        call    xbyte_get
        movwf   back_near
        goto    main__46
        ; line_number = 227
        ; case 2
main__40:
        ; # Command = 0001 1010: Set Front Far:
        ; line_number = 229
        ;  front_far := xbyte_get()
        call    xbyte_get
        movwf   front_far
        goto    main__46
        ; line_number = 230
        ; case 3
main__41:
        ; # Command = 0001 1011: Set Back Far:
        ; line_number = 232
        ;  back_far := xbyte_get()
        call    xbyte_get
        movwf   back_far
        goto    main__46
        ; line_number = 233
        ; case 4
main__42:
        ; # Command = 0001 1100: Set Front Delay:
        ; line_number = 235
        ;  front_delay := xbyte_get()
        call    xbyte_get
        movwf   front_delay
        goto    main__46
        ; line_number = 236
        ; case 5
main__43:
        ; # Command = 0001 1101: Set Back Delay:
        ; line_number = 238
        ;  back_delay := xbyte_get()
        call    xbyte_get
        movwf   back_delay
        goto    main__46
        ; line_number = 239
        ; case 6, 7
main__44:
        ; line_number = 240
        ; do_nothing
main__46:
        ; switch end:(data:X0=>X? code:XX=>XX)
        ; line_number = 220
        ; switch command & 7 done
        goto    main__54
        ; line_number = 241
        ; case 4, 5, 6, 7
main__51:
        ; line_number = 242
        ; do_nothing

main__54:
        ; switch end:(data:X0=>X? code:XX=>XX)
        ; line_number = 132
        ;  switch (command >> 3) & 7 done
        goto    main__91
        ; line_number = 244
        ; case 1
main__86:
        ; # Command = 01xx xxxx:
        ; line_number = 246
        ;  do_nothing
        goto    main__91
        ; line_number = 247
        ; case 2
main__87:
        ; # Do nothing (Command = 10xx xxxx):
        ; line_number = 249
        ;  do_nothing
        goto    main__91
        ; line_number = 250
        ; case 3
main__88:
        ; # Command = 11xx xxxx:
        ; line_number = 252
        ;  switch (command >> 3) & 7 start
        movlw   main__82>>8
        movwf   __pclath
main__83 equ shared___globals+53
        rrf     main__command,w
        movwf   main__83
        rrf     main__83,f
        rrf     main__83,w
        andlw   7
        addlw   main__82
        movwf   __pcl
        ; page_group 8
main__82:
        goto    main__78
        goto    main__78
        goto    main__78
        goto    main__78
        goto    main__78
        goto    main__79
        goto    main__80
        goto    main__81
        ; line_number = 253
        ; case 0, 1, 2, 3, 4
main__78:
        ; # Command = 1100 xxxx or 1110 0xxx:
        ; line_number = 255
        ;  do_nothing
        goto    main__84
        ; line_number = 256
        ; case 5
main__79:
        ; # Read Interrupt Bits (Command = 1110 1111):
        ; line_number = 258
        ;  if (command & 7) = 7 start
        ; Left minus Right
        movlw   7
        andwf   main__command,w
        addlw   249
        ; (after recombine) true_delay=non-uniform, false_delay=non-uniform
        ; CASE: true_code.size = 0 && false_code.size > 1
        ; bit_code_emit_helper1: body_code.size=8 true_test=true body_code.delay=0 (non-uniform delay)
        btfss   __z___byte, __z___bit
        goto    main__57
        ; # Return Interrupt Bits:
        ; line_number = 260
        ;  temporary := 0
        movlw   0
        movwf   main__temporary
        ; line_number = 261
        ;  if interrupt_enable start
        ; (after recombine) true_delay=non-uniform, false_delay=non-uniform
        ; CASE: True.size=1 False.size=0
        btfsc   interrupt_enable___byte, interrupt_enable___bit
        ; line_number = 262
        ; temporary@1 := 1
main__select__55___byte equ main__temporary
main__select__55___bit equ 1
        bsf     main__select__55___byte, main__select__55___bit
        ; Recombine size1 = 0 || size2 = 0
        ; code.delay=4294967295 back_code.delay=4294967295
        ; <=bit_code_emit@symbol; sym=interrupt_enable (data:X0=>X0 code:XX=>XX)
        ; line_number = 261
        ;  if interrupt_enable done
        ; line_number = 263
        ; if interrupt_pending start
        ; (after recombine) true_delay=non-uniform, false_delay=non-uniform
        ; CASE: True.size=1 False.size=0
        btfsc   interrupt_pending___byte, interrupt_pending___bit
        ; line_number = 264
        ; temporary@0 := 1
main__select__56___byte equ main__temporary
main__select__56___bit equ 0
        bsf     main__select__56___byte, main__select__56___bit
        ; Recombine size1 = 0 || size2 = 0
        ; code.delay=4294967295 back_code.delay=4294967295
        ; <=bit_code_emit@symbol; sym=interrupt_pending (data:X0=>X0 code:XX=>XX)
        ; line_number = 263
        ; if interrupt_pending done
        ; line_number = 265
        ; call byte_put(temporary)
        movf    main__temporary,w
        call    byte_put
        ; Recombine size1 = 0 || size2 = 0
main__57:
        ; code.delay=4294967295 back_code.delay=4294967295
        ; <=bit_code_emit@symbol; sym=__z (data:X0=>X0 code:XX=>XX)
        ; line_number = 258
        ;  if (command & 7) = 7 done
        goto    main__84
        ; line_number = 266
        ; case 6
main__80:
        ; # Shared Interrupt commands (Command = 1111 0xxx):
        ; line_number = 268
        ;  switch command & 7 start
        movlw   main__65>>8
        movwf   __pclath
        movlw   7
        andwf   main__command,w
        addlw   main__65
        movwf   __pcl
        ; page_group 8
main__65:
        goto    main__62
        goto    main__62
        goto    main__62
        goto    main__62
        goto    main__63
        goto    main__63
        goto    main__64
        goto    main__64
        ; line_number = 269
        ; case 0, 1, 2, 3
main__62:
        ; # Set interrupt bits (Command = 1111 10ep):
        ; line_number = 271
        ;  interrupt_enable := command@1
        bcf     interrupt_enable___byte, interrupt_enable___bit
main__select__58___byte equ main__command
main__select__58___bit equ 1
        ; (after recombine) true_delay=non-uniform, false_delay=non-uniform
        ; CASE: True.size=1 False.size=0
        btfsc   main__select__58___byte, main__select__58___bit
        bsf     interrupt_enable___byte, interrupt_enable___bit
        ; Recombine size1 = 0 || size2 = 0
        ; code.delay=4294967295 back_code.delay=4294967295
        ; <=bit_code_emit@symbol; sym=main__select__58 (data:X0=>X0 code:XX=>XX)
        ; line_number = 272
        ;  interrupt_pending := command@0
        bcf     interrupt_pending___byte, interrupt_pending___bit
main__select__59___byte equ main__command
main__select__59___bit equ 0
        ; (after recombine) true_delay=non-uniform, false_delay=non-uniform
        ; CASE: True.size=1 False.size=0
        btfsc   main__select__59___byte, main__select__59___bit
        bsf     interrupt_pending___byte, interrupt_pending___bit
        ; Recombine size1 = 0 || size2 = 0
        ; code.delay=4294967295 back_code.delay=4294967295
        ; <=bit_code_emit@symbol; sym=main__select__59 (data:X0=>X0 code:XX=>XX)
        goto    main__66
        ; line_number = 273
        ; case 4, 5
main__63:
        ; # Set Interrupt Pending (Command = 1111 110p):
        ; line_number = 275
        ;  interrupt_pending := command@0
        bcf     interrupt_pending___byte, interrupt_pending___bit
main__select__60___byte equ main__command
main__select__60___bit equ 0
        ; (after recombine) true_delay=non-uniform, false_delay=non-uniform
        ; CASE: True.size=1 False.size=0
        btfsc   main__select__60___byte, main__select__60___bit
        bsf     interrupt_pending___byte, interrupt_pending___bit
        ; Recombine size1 = 0 || size2 = 0
        ; code.delay=4294967295 back_code.delay=4294967295
        ; <=bit_code_emit@symbol; sym=main__select__60 (data:X0=>X0 code:XX=>XX)
        goto    main__66
        ; line_number = 276
        ; case 6, 7
main__64:
        ; # Set Interrupt Enable (Command = 1110 111e):
        ; line_number = 278
        ;  interrupt_enable := command@0
        bcf     interrupt_enable___byte, interrupt_enable___bit
main__select__61___byte equ main__command
main__select__61___bit equ 0
        ; (after recombine) true_delay=non-uniform, false_delay=non-uniform
        ; CASE: True.size=1 False.size=0
        btfsc   main__select__61___byte, main__select__61___bit
        bsf     interrupt_enable___byte, interrupt_enable___bit
        ; Recombine size1 = 0 || size2 = 0
        ; code.delay=4294967295 back_code.delay=4294967295
        ; <=bit_code_emit@symbol; sym=main__select__61 (data:X0=>X0 code:XX=>XX)
main__66:
        ; switch end:(data:X0=>X0 code:XX=>XX)
        ; line_number = 268
        ;  switch command & 7 done
        goto    main__84
        ; line_number = 279
        ; case 7
main__81:
        ; # Shared commands (Command = 1111 1xxx):
        ; line_number = 281
        ;  switch command & 7 start
        movlw   main__76>>8
        movwf   __pclath
        movlw   7
        andwf   main__command,w
        addlw   main__76
        movwf   __pcl
        ; page_group 8
main__76:
        goto    main__68
        goto    main__69
        goto    main__70
        goto    main__71
        goto    main__72
        goto    main__73
        goto    main__74
        goto    main__75
        ; line_number = 282
        ; case 0
main__68:
        ; This case body wants this bit set
        bsf     __rp0___byte, __rp0___bit
        ; # Clock Decrement (Command = 1111 1000):
        ; line_number = 284
        ;  _osccal := _osccal - _osccal_lsb
        movlw   252
        addwf   _osccal,f
        goto    main__77
        ; line_number = 285
        ; case 1
main__69:
        ; This case body wants this bit set
        bsf     __rp0___byte, __rp0___bit
        ; # Clock Increment (Command = 1111 1001):
        ; line_number = 287
        ;  _osccal := _osccal + _osccal_lsb
        movlw   4
        addwf   _osccal,f
        goto    main__77
        ; line_number = 288
        ; case 2
main__70:
        ; This case body wants this bit set
        bsf     __rp0___byte, __rp0___bit
        ; # Clock Read (Command = 1111 1010):
        ; line_number = 290
        ;  call byte_put(_osccal)
        movf    _osccal,w
        bcf     __rp0___byte, __rp0___bit
        call    byte_put
        goto    main__77
        ; line_number = 291
        ; case 3
main__71:
        ; # Clock Pulse (Command = 1111 1011):
        ; line_number = 293
        ;  call byte_put(0)
        movlw   0
        call    byte_put
        goto    main__77
        ; line_number = 294
        ; case 4
main__72:
        ; # ID Next (Command = 1111 1100):
        ; line_number = 296
        ;  temp := 0
        movlw   0
        movwf   main__temp
        ; line_number = 297
        ;  if id_index < id.size start
        movlw   52
        subwf   main__id_index,w
        ; (after recombine) true_delay=non-uniform, false_delay=non-uniform
        ; CASE: true.size=0 && false.size>1
        ; bit_code_emit_helper1: body_code.size=4 true_test=false body_code.delay=0 (non-uniform delay)
        btfsc   __c___byte, __c___bit
        goto    main__67
        ; line_number = 298
        ; temp := id[id_index]
        movf    main__id_index,w
        call    id
        movwf   main__temp
        ; line_number = 299
        ;  id_index := id_index + 1
        incf    main__id_index,f
main__67:
        ; Recombine size1 = 0 || size2 = 0
        ; code.delay=4294967295 back_code.delay=4294967295
        ; <=bit_code_emit@symbol; sym=__c (data:X0=>X0 code:XX=>XX)
        ; line_number = 297
        ;  if id_index < id.size done
        ; line_number = 300
        ; call byte_put(temp)
        movf    main__temp,w
        call    byte_put
        goto    main__77
        ; line_number = 301
        ; case 5
main__73:
        ; # ID Reset (Command = 1111 1101):
        ; line_number = 303
        ;  id_index := 0
        movlw   0
        movwf   main__id_index
        goto    main__77
        ; line_number = 304
        ; case 6
main__74:
        ; # Glitch Read (Command = 1111 1110):
        ; line_number = 306
        ;  call byte_put(glitch)
        movf    main__glitch,w
        call    byte_put
        ; line_number = 307
        ;  glitch := 0
        movlw   0
        movwf   main__glitch
        goto    main__77
        ; line_number = 308
        ; case 7
main__75:
        ; # Glitch (Command = 1111 1111):
        ; line_number = 310
        ;  if (glitch != 0xff) start
        ; Left minus Right
        incf    main__glitch,w
        ; (after recombine) true_delay=non-uniform, false_delay=non-uniform
        ; CASE: true_code.size=0 && false_code.size=1
        btfss   __z___byte, __z___bit
        ; line_number = 311
        ; glitch := glitch + 1
        incf    main__glitch,f


        ; Recombine size1 = 0 || size2 = 0
        ; code.delay=4294967295 back_code.delay=4294967295
        ; <=bit_code_emit@symbol; sym=__z (data:X0=>X0 code:XX=>XX)
        ; line_number = 310
        ;  if (glitch != 0xff) done
main__77:
        ; switch end:(data:X0=>X? code:XX=>XX)
        ; line_number = 281
        ;  switch command & 7 done
main__84:
        ; switch end:(data:X0=>X? code:XX=>XX)
        ; line_number = 252
        ;  switch (command >> 3) & 7 done
main__91:
        ; switch end:(data:X0=>X? code:XX=>XX)
        ; line_number = 129
        ;  switch command >> 6 done
        ; line_number = 124
        ;  loop_forever wrap-up
        ; Need to adjust code banks to match front of loop
        bcf     __rp0___byte, __rp0___bit
        goto    main__1
        ; line_number = 124
        ;  loop_forever done
        ; delay after procedure statements=non-uniform




        ; line_number = 314
        ; procedure delay
delay:
        ; arguments_none
        ; line_number = 316
        ;  returns_nothing
        ; line_number = 317
        ;  exact_delay delay_instructions

        ; # Kick the dog:
        ; before procedure statements delay=0, bit states=(data:X0=>X0 code:XX=>XX)
        ; line_number = 320
        ;  watch_dog_reset done
        ; Delay at watch_dog_reset is 0
        clrwdt  


        ; delay after procedure statements=1
        ; Delay 130 cycles
        ; Delay loop takes 32 * 4 = 128 cycles
        movlw   32
delay__1:
        addlw   255
        btfss   __z___byte, __z___bit
        goto    delay__1
        goto    delay__2
delay__2:
        ; Implied return
        retlw   0
        ; Final delay = 133




        ; line_number = 323
        ; procedure xbyte_get
xbyte_get:
        ; arguments_none
        ; line_number = 325
        ;  returns byte

        ; # This procedure will wait for a byte to be received from
        ; # serial_in_bit.  It calls the delay procedure for all delays.
        ; # This procedure will keep calling the {delay} routine until
        ; # data is received.  It differs from byte_get() in that it
        ; # calls strobe() instead of delay in the 'wait for start bit'
        ; # loop.

        ; line_number = 334
        ;  local count byte
xbyte_get__count equ shared___globals+47
        ; line_number = 335
        ;  local byte byte
xbyte_get__byte equ shared___globals+48

        ; # 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 PIC running at
        ; # 4MHz (=1MIPS), only has 138 instructions available for the
        ; # delay routine when at 1/3 of bit.

        ; # Wait for a start bit:
        ; before procedure statements delay=non-uniform, bit states=(data:X0=>X0 code:XX=>XX)
        ; line_number = 354
        ;  receiving := 1
        bsf     receiving___byte, receiving___bit
        ; line_number = 355
        ;  serial_out := 1
        bsf     serial_out___byte, serial_out___bit
        ; line_number = 356
        ;  while serial_in start
xbyte_get__1:
        ; (after recombine) true_delay=non-uniform, false_delay=non-uniform
        ; CASE: true_code.size = 0 && false_code.size > 1
        ; bit_code_emit_helper1: body_code.size=4 true_test=true body_code.delay=0 (non-uniform delay)
        btfss   serial_in___byte, serial_in___bit
        goto    xbyte_get__2
        ; line_number = 357
        ; call strobe()
        call    strobe
        ; # Make sure the IR LED's are turned off:
        ; line_number = 359
        ;  front_ir := 0
        bcf     front_ir___byte, front_ir___bit
        ; line_number = 360
        ;  back_ir := 0
        bcf     back_ir___byte, back_ir___bit

        goto    xbyte_get__1
        ; Recombine size1 = 0 || size2 = 0
xbyte_get__2:
        ; code.delay=4294967295 back_code.delay=4294967295
        ; <=bit_code_emit@symbol; sym=serial_in (data:X0=>X0 code:XX=>XX)
        ; line_number = 356
        ;  while serial_in done
        ; # Skip over start bit:
        ; line_number = 363
        ;  delay instructions_per_bit - 2 start
        ; Delay expression evaluates to 414
        ; # There are two instructions of set-up for following loop_exactly:
        ; line_number = 365
        ;  call delay()
        ; Delay at call is 0
        call    delay
        ; line_number = 366
        ;  call delay()
        ; Delay at call is 135
        call    delay
        ; line_number = 367
        ;  call delay()
        ; Delay at call is 270
        call    delay
        ; line_number = 368
        ;  byte := 0
        ; Delay at assignment is 405
        movlw   0
        movwf   xbyte_get__byte

        ; Delay 7 cycles
        goto    xbyte_get__3
xbyte_get__3:
        goto    xbyte_get__4
xbyte_get__4:
        goto    xbyte_get__5
xbyte_get__5:
        nop     
        ; line_number = 363
        ;  delay instructions_per_bit - 2 done
        ; # Read in 8 bits of data:
        ; line_number = 371
        ;  loop_exactly 8 start
xbyte_get__6 equ shared___globals+55
        movlw   8
        movwf   xbyte_get__6
xbyte_get__7:
        ; # There are 3 instrucitons of loop_exactly overhead:
        ; line_number = 373
        ;  delay instructions_per_bit - 3 start
        ; Delay expression evaluates to 413
        ; line_number = 374
        ; call delay()
        ; Delay at call is 0
        call    delay
        ; line_number = 375
        ;  byte := byte >> 1
        ; Delay at assignment is 135
        ; Assignment of variable to self (no code needed)
        rrf     xbyte_get__byte,f
        bcf     xbyte_get__byte, 7
        ; line_number = 376
        ;  if serial_in start
        ; Delay at if is 137
        ; (after recombine) true_delay=1, false_delay=0 uniform_delay=true
        ; CASE: True.size=1 False.size=0
        btfsc   serial_in___byte, serial_in___bit
        ; line_number = 377
        ; byte@7 := 1
        ; Delay at assignment is 0
xbyte_get__select__8___byte equ xbyte_get__byte
xbyte_get__select__8___bit equ 7
        bsf     xbyte_get__select__8___byte, xbyte_get__select__8___bit
        ; code.delay=139 back_code.delay=0
        ; <=bit_code_emit@symbol; sym=serial_in (data:X0=>X0 code:XX=>XX)
        ; if final true delay=1 false delay=0 code delay=139
        ; line_number = 376
        ;  if serial_in done
        ; line_number = 378
        ; call delay()
        ; Delay at call is 139
        call    delay
        ; line_number = 379
        ;  call delay()
        ; Delay at call is 274
        call    delay

        ; Delay 4 cycles
        goto    xbyte_get__9
xbyte_get__9:
        goto    xbyte_get__10
xbyte_get__10:
        ; line_number = 373
        ;  delay instructions_per_bit - 3 done
        ; line_number = 371
        ;  loop_exactly 8 wrap-up
        decfsz  xbyte_get__6,f
        goto    xbyte_get__7
        ; line_number = 371
        ;  loop_exactly 8 done
        ; # Skip over 2/3's of stop bit; 3 cycles for return:
        ; line_number = 382
        ;  delay instructions_per_delay*2 - 3 start
        ; Delay expression evaluates to 273
        ; line_number = 383
        ; call delay()
        ; Delay at call is 0
        call    delay
        ; line_number = 384
        ;  call delay()
        ; Delay at call is 135
        call    delay
        ; Delay 3 cycles
        goto    xbyte_get__11
xbyte_get__11:
        nop     
        ; line_number = 382
        ;  delay instructions_per_delay*2 - 3 done
        ; line_number = 385
        ; command_previous := command_last
        movf    command_last,w
        movwf   command_previous
        ; line_number = 386
        ;  command_last := byte
        movf    xbyte_get__byte,w
        movwf   command_last
        ; line_number = 387
        ;  return byte start
        ; line_number = 387
        movf    xbyte_get__byte,w
        return  
        ; line_number = 387
        ;  return byte done


        ; delay after procedure statements=non-uniform




        ; line_number = 390
        ; procedure strobe
strobe:
        ; arguments_none
        ; line_number = 392
        ;  returns_nothing

        ; # This procedure is responsible for alternatively strobing the
        ; # two illumination IR LED's.  It first fires one and then the
        ; # other; it never fires both at the same time.

        ; # This routine is called exclusively from the xbyte_get() routine
        ; # in the "wait for a start bit" routine.  Since this routine
        ; # can take over 4 bit times to perform an entire strobe cycle,
        ; # it is constantly checking serial_in to see if a start bit
        ; # has started.  If so, it immediately stops all activity and
        ; # returns.   Thus, proximity information is only being collected
        ; # when the IRProximity2 brick is waiting for a command *and* no
        ; # command is forthcoming.

        ; line_number = 407
        ;  local average byte
strobe__average equ shared___globals+49
        ; line_number = 408
        ;  local count byte
strobe__count equ shared___globals+50
        ; line_number = 409
        ;  local detect byte
strobe__detect equ shared___globals+51
        ; line_number = 410
        ;  local front_back bit
strobe__front_back___byte equ shared___globals+63
strobe__front_back___bit equ 6
        ; line_number = 411
        ;  local illuminate bit
strobe__illuminate___byte equ shared___globals+63
strobe__illuminate___bit equ 7
        ; line_number = 412
        ;  local index byte
strobe__index equ shared___globals+52

        ; # Kick the dog:
        ; before procedure statements delay=non-uniform, bit states=(data:X0=>X0 code:XX=>XX)
        ; line_number = 415
        ;  watch_dog_reset done
        clrwdt  

        ; line_number = 417
        ;  detect := 0
        movlw   0
        movwf   strobe__detect
        ; line_number = 418
        ;  if front_back start
        ; (after recombine) true_delay=non-uniform, false_delay=non-uniform
        ; CASE: true_code_size > 1 && false_code_size > 1
        ; true_code_size=111 false_code_size=113
        btfss   strobe__front_back___byte, strobe__front_back___bit
        goto    strobe__49
        ; # Next time do the back:
        ; line_number = 420
        ;  front_back := 0
        bcf     strobe__front_back___byte, strobe__front_back___bit

        ; # Figure out whether or not we turn the IR LED's on
        ; # this time.
        ; line_number = 424
        ;  delay f1 start
        ; Delay expression evaluates to 13
        ; line_number = 425
        ; if !serial_in start
        ; Delay at if is 0
        ; (after recombine) true_delay=0, false_delay=1 uniform_delay=true
        ; CASE: true_code.size=0 && false_code.size=1
        btfss   serial_in___byte, serial_in___bit
        ; line_number = 426
        ; delay_set 1 start
        ; Delay at delay_set is 0
        ; line_number = 427
        ; return start
        ; line_number = 427
        retlw   0
        ; line_number = 427
        ; return done
        ; line_number = 426
        ; delay_set 1 done
        ; code.delay=2 back_code.delay=0
        ; <=bit_code_emit@symbol; sym=serial_in (data:X0=>X0 code:XX=>XX)
        ; if final true delay=1 false delay=0 code delay=2
        ; line_number = 425
        ; if !serial_in done
        ; line_number = 428
        ; illuminate := 1
        ; Delay at assignment is 2
        bsf     strobe__illuminate___byte, strobe__illuminate___bit
        ; line_number = 429
        ;  if front_count = 0 start
        ; Delay at if is 3
        ; Left minus Right
        movf    front_count,w
        ; (after recombine) true_delay=3, false_delay=2 uniform_delay=true
        ; CASE: true_code_size > 1 && false_code_size > 1
        ; true_code_size=3 false_code_size=2
        btfsc   __z___byte, __z___bit
        goto    strobe__24
        ; Delay 0 cycles
        ; line_number = 433
        ; front_count := front_count - 1
        ; Delay at assignment is 0
        decf    front_count,f
        ; line_number = 434
        ;  illuminate := 0
        ; Delay at assignment is 1
        bcf     strobe__illuminate___byte, strobe__illuminate___bit
        goto    strobe__25
strobe__24:
        ; line_number = 430
        ; front_count := front_delay
        ; Delay at assignment is 0
        movf    front_delay,w
        movwf   front_count
        ; line_number = 431
        ;  illuminate := 1
        ; Delay at assignment is 2
        bsf     strobe__illuminate___byte, strobe__illuminate___bit
strobe__25:
        ; code.delay=9 back_code.delay=0
        ; <=bit_code_emit@symbol; sym=__z (data:X0=>X0 code:XX=>XX)
        ; Uniform delay broke in relation_code_emit
        ; if final true delay=3 false delay=2 code delay=9
        ; line_number = 429
        ;  if front_count = 0 done
        ; line_number = 435
        ; if !front_enable start
        ; Delay at if is 9
        ; (after recombine) true_delay=0, false_delay=1 uniform_delay=true
        ; CASE: true_code.size=0 && false_code.size=1
        btfss   front_enable___byte, front_enable___bit
        ; line_number = 436
        ; illuminate := 0
        ; Delay at assignment is 0
        bcf     strobe__illuminate___byte, strobe__illuminate___bit

        ; code.delay=11 back_code.delay=0
        ; <=bit_code_emit@symbol; sym=front_enable (data:X0=>X0 code:XX=>XX)
        ; if final true delay=1 false delay=0 code delay=11
        ; line_number = 435
        ; if !front_enable done
        ; Delay 2 cycles
        goto    strobe__26
strobe__26:
        ; line_number = 424
        ;  delay f1 done
        ; line_number = 438
        ; if illuminate start
        ; (after recombine) true_delay=non-uniform, false_delay=non-uniform
        ; CASE: true_code.size = 0 && false_code.size > 1
        ; bit_code_emit_helper1: body_code.size=93 true_test=true body_code.delay=0 (non-uniform delay)
        btfss   strobe__illuminate___byte, strobe__illuminate___bit
        goto    strobe__48
        ; # We've decided to illuminate.  Generate 22 pulses of
        ; # IR light on the front IR LED at 38kHz.
        ; line_number = 441
        ;  loop_exactly 22 start
strobe__27 equ shared___globals+56
        movlw   22
        movwf   strobe__27
strobe__28:
        ; line_number = 442
        ; delay f1 start
        ; Delay expression evaluates to 13
        ; line_number = 443
        ; front_ir := 1
        ; Delay at assignment is 0
        bsf     front_ir___byte, front_ir___bit
        ; line_number = 444
        ;  if !serial_in start
        ; Delay at if is 1
        ; (after recombine) true_delay=0, false_delay=1 uniform_delay=true
        ; CASE: true_code.size=0 && false_code.size=1
        btfss   serial_in___byte, serial_in___bit
        ; line_number = 445
        ; delay_set 1 start
        ; Delay at delay_set is 0
        ; line_number = 446
        ; return start
        ; line_number = 446
        retlw   0
        ; line_number = 446
        ; return done
        ; line_number = 445
        ; delay_set 1 done
        ; code.delay=3 back_code.delay=0
        ; <=bit_code_emit@symbol; sym=serial_in (data:XX=>X0 code:XX=>XX)
        ; if final true delay=1 false delay=0 code delay=3
        ; line_number = 444
        ;  if !serial_in done
        ; line_number = 447
        ; if !ir_sense start
        ; Delay at if is 3
        ; (after recombine) true_delay=0, false_delay=1 uniform_delay=true
        ; CASE: true_code.size=0 && false_code.size=1
        btfss   ir_sense___byte, ir_sense___bit
        ; line_number = 448
        ; detect := detect + 1
        ; Delay at assignment is 0
        incf    strobe__detect,f
        ; code.delay=5 back_code.delay=0
        ; <=bit_code_emit@symbol; sym=ir_sense (data:XX=>X0 code:XX=>XX)
        ; if final true delay=1 false delay=0 code delay=5
        ; line_number = 447
        ; if !ir_sense done
        ; Delay 8 cycles
        ; Delay loop takes 2 * 4 = 8 cycles
        movlw   2
strobe__29:
        addlw   255
        btfss   __z___byte, __z___bit
        goto    strobe__29
        ; line_number = 442
        ; delay f1 done
        ; line_number = 449
        ; delay f2 - 3 start
        ; Delay expression evaluates to 10
        ; line_number = 450
        ; front_ir := 0
        ; Delay at assignment is 0
        bcf     front_ir___byte, front_ir___bit
        ; line_number = 451
        ;  if !serial_in start
        ; Delay at if is 1
        ; (after recombine) true_delay=0, false_delay=1 uniform_delay=true
        ; CASE: true_code.size=0 && false_code.size=1
        btfss   serial_in___byte, serial_in___bit
        ; line_number = 452
        ; delay_set 1 start
        ; Delay at delay_set is 0
        ; line_number = 453
        ; return start
        ; line_number = 453
        retlw   0
        ; line_number = 453
        ; return done
        ; line_number = 452
        ; delay_set 1 done
        ; code.delay=3 back_code.delay=0
        ; <=bit_code_emit@symbol; sym=serial_in (data:XX=>X0 code:XX=>XX)
        ; if final true delay=1 false delay=0 code delay=3
        ; line_number = 451
        ;  if !serial_in done
        ; line_number = 454
        ; if !ir_sense start
        ; Delay at if is 3
        ; (after recombine) true_delay=0, false_delay=1 uniform_delay=true
        ; CASE: true_code.size=0 && false_code.size=1
        btfss   ir_sense___byte, ir_sense___bit
        ; line_number = 455
        ; detect := detect + 1
        ; Delay at assignment is 0
        incf    strobe__detect,f

        ; code.delay=5 back_code.delay=0
        ; <=bit_code_emit@symbol; sym=ir_sense (data:XX=>X0 code:XX=>XX)
        ; if final true delay=1 false delay=0 code delay=5
        ; line_number = 454
        ; if !ir_sense done
        ; Delay 5 cycles
        goto    strobe__30
strobe__30:
        goto    strobe__31
strobe__31:
        nop     
        ; line_number = 449
        ; delay f2 - 3 done
        ; line_number = 441
        ;  loop_exactly 22 wrap-up
        decfsz  strobe__27,f
        goto    strobe__28
        ; line_number = 441
        ;  loop_exactly 22 done
        ; # Now wait for twice that amount of time for the
        ; # the sensor to calm down.  Test every half wave
        ; # length though:
        ; line_number = 460
        ;  front_ir := 0
        bcf     front_ir___byte, front_ir___bit
        ; line_number = 461
        ;  loop_exactly 44 start
strobe__32 equ shared___globals+56
        movlw   44
        movwf   strobe__32
strobe__33:
        ; line_number = 462
        ; delay f1 start
        ; Delay expression evaluates to 13
        ; line_number = 463
        ; if !serial_in start
        ; Delay at if is 0
        ; (after recombine) true_delay=0, false_delay=1 uniform_delay=true
        ; CASE: true_code.size=0 && false_code.size=1
        btfss   serial_in___byte, serial_in___bit
        ; line_number = 464
        ; delay_set 1 start
        ; Delay at delay_set is 0
        ; line_number = 465
        ; return start
        ; line_number = 465
        retlw   0
        ; line_number = 465
        ; return done
        ; line_number = 464
        ; delay_set 1 done
        ; code.delay=2 back_code.delay=0
        ; <=bit_code_emit@symbol; sym=serial_in (data:X0=>X0 code:XX=>XX)
        ; if final true delay=1 false delay=0 code delay=2
        ; line_number = 463
        ; if !serial_in done
        ; line_number = 466
        ; if !ir_sense start
        ; Delay at if is 2
        ; (after recombine) true_delay=0, false_delay=1 uniform_delay=true
        ; CASE: true_code.size=0 && false_code.size=1
        btfss   ir_sense___byte, ir_sense___bit
        ; line_number = 467
        ; detect := detect + 1
        ; Delay at assignment is 0
        incf    strobe__detect,f
        ; code.delay=4 back_code.delay=0
        ; <=bit_code_emit@symbol; sym=ir_sense (data:X0=>X0 code:XX=>XX)
        ; if final true delay=1 false delay=0 code delay=4
        ; line_number = 466
        ; if !ir_sense done
        ; Delay 9 cycles
        ; Delay loop takes 2 * 4 = 8 cycles
        movlw   2
strobe__34:
        addlw   255
        btfss   __z___byte, __z___bit
        goto    strobe__34
        nop     
        ; line_number = 462
        ; delay f1 done
        ; line_number = 468
        ; delay f2 - 3 start
        ; Delay expression evaluates to 10
        ; line_number = 469
        ; if !serial_in start
        ; Delay at if is 0
        ; (after recombine) true_delay=0, false_delay=1 uniform_delay=true
        ; CASE: true_code.size=0 && false_code.size=1
        btfss   serial_in___byte, serial_in___bit
        ; line_number = 470
        ; delay_set 1 start
        ; Delay at delay_set is 0
        ; line_number = 471
        ; return start
        ; line_number = 471
        retlw   0
        ; line_number = 471
        ; return done
        ; line_number = 470
        ; delay_set 1 done
        ; code.delay=2 back_code.delay=0
        ; <=bit_code_emit@symbol; sym=serial_in (data:X0=>X0 code:XX=>XX)
        ; if final true delay=1 false delay=0 code delay=2
        ; line_number = 469
        ; if !serial_in done
        ; line_number = 472
        ; if !ir_sense start
        ; Delay at if is 2
        ; (after recombine) true_delay=0, false_delay=1 uniform_delay=true
        ; CASE: true_code.size=0 && false_code.size=1
        btfss   ir_sense___byte, ir_sense___bit
        ; line_number = 473
        ; detect := detect + 1
        ; Delay at assignment is 0
        incf    strobe__detect,f

        ; code.delay=4 back_code.delay=0
        ; <=bit_code_emit@symbol; sym=ir_sense (data:X0=>X0 code:XX=>XX)
        ; if final true delay=1 false delay=0 code delay=4
        ; line_number = 472
        ; if !ir_sense done
        ; Delay 6 cycles
        goto    strobe__35
strobe__35:
        goto    strobe__36
strobe__36:
        goto    strobe__37
strobe__37:
        ; line_number = 468
        ; delay f2 - 3 done
        ; line_number = 461
        ;  loop_exactly 44 wrap-up
        decfsz  strobe__32,f
        goto    strobe__33
        ; line_number = 461
        ;  loop_exactly 44 done
        ; # Now do follow on processing of the signal.
        ; line_number = 476
        ;  delay f1 start
        ; Delay expression evaluates to 13
        ; # First, clip the signal to 0x3f:
        ; line_number = 478
        ;  if !serial_in start
        ; Delay at if is 0
        ; (after recombine) true_delay=0, false_delay=1 uniform_delay=true
        ; CASE: true_code.size=0 && false_code.size=1
        btfss   serial_in___byte, serial_in___bit
        ; line_number = 479
        ; delay_set 1 start
        ; Delay at delay_set is 0
        ; line_number = 480
        ; return start
        ; line_number = 480
        retlw   0
        ; line_number = 480
        ; return done

        ; line_number = 479
        ; delay_set 1 done
        ; code.delay=2 back_code.delay=0
        ; <=bit_code_emit@symbol; sym=serial_in (data:X0=>X0 code:XX=>XX)
        ; if final true delay=1 false delay=0 code delay=2
        ; line_number = 478
        ;  if !serial_in done
        ; # The largest possible value is 22 + 44 = 66.
        ; # Any values over 63 need to be truncated to 63:
        ; line_number = 484
        ;  if detect@6 start
        ; Delay at if is 2
strobe__select__38___byte equ strobe__detect
strobe__select__38___bit equ 6
        ; (after recombine) true_delay=2, false_delay=0 uniform_delay=true
        ; CASE: true_code.size = 0 && false_code.size > 1
        ; bit_code_emit_helper1: body_code.size=2 true_test=true body_code.delay=2 (uniform delay)
        btfsc   strobe__select__38___byte, strobe__select__38___bit
        goto    strobe__39
        ; Delay 1 cycles
        nop     
        goto    strobe__40
strobe__39:
        ; line_number = 485
        ; detect := 0x3f
        ; Delay at assignment is 0
        movlw   63
        movwf   strobe__detect
strobe__40:
        ; code.delay=7 back_code.delay=0
        ; <=bit_code_emit@symbol; sym=strobe__select__38 (data:X0=>X0 code:XX=>XX)
        ; if final true delay=2 false delay=0 code delay=7
        ; line_number = 484
        ;  if detect@6 done
        ; line_number = 486
        ; front_last := detect
        ; Delay at assignment is 7
        movf    strobe__detect,w
        movwf   front_last
        ; Delay 4 cycles
        goto    strobe__41
strobe__41:
        goto    strobe__42
strobe__42:
        ; line_number = 476
        ;  delay f1 done
        ; line_number = 487
        ; delay f1 start
        ; Delay expression evaluates to 13
        ; # Drop the detected value into the averaging buffer:	
        ; line_number = 489
        ;  if !serial_in start
        ; Delay at if is 0
        ; (after recombine) true_delay=0, false_delay=1 uniform_delay=true
        ; CASE: true_code.size=0 && false_code.size=1
        btfss   serial_in___byte, serial_in___bit
        ; line_number = 490
        ; delay_set 1 start
        ; Delay at delay_set is 0
        ; line_number = 491
        ; return start
        ; line_number = 491
        retlw   0
        ; line_number = 491
        ; return done
        ; line_number = 490
        ; delay_set 1 done
        ; code.delay=2 back_code.delay=0
        ; <=bit_code_emit@symbol; sym=serial_in (data:X0=>X0 code:XX=>XX)
        ; if final true delay=1 false delay=0 code delay=2
        ; line_number = 489
        ;  if !serial_in done
        ; line_number = 492
        ; front_index := front_index + 1
        ; Delay at assignment is 2
        incf    front_index,f
        ; line_number = 493
        ;  front_index@buffer_power := 0
        ; Delay at assignment is 3
strobe__select__43___byte equ front_index
strobe__select__43___bit equ 3
        bcf     strobe__select__43___byte, strobe__select__43___bit
        ; line_number = 494
        ;  fronts[front_index] := detect >> 1
        ; Delay at assignment is 4
        ; index_fsr_first
        movf    front_index,w
        addlw   fronts
        movwf   __fsr
        rrf     strobe__detect,w
        movwf   __indf
        bcf     __indf, 7
        ; Delay 3 cycles
        goto    strobe__44
strobe__44:
        nop     
        ; line_number = 487
        ; delay f1 done
        ; line_number = 495
        ; average := 0
        movlw   0
        movwf   strobe__average
        ; line_number = 496
        ;  index := 0
        movlw   0
        movwf   strobe__index
        ; line_number = 497
        ;  loop_exactly buffer_size start
strobe__45 equ shared___globals+56
        movlw   8
        movwf   strobe__45
strobe__46:
        ; line_number = 498
        ; delay f2 - 3 start
        ; Delay expression evaluates to 10
        ; line_number = 499
        ; if !serial_in start
        ; Delay at if is 0
        ; (after recombine) true_delay=0, false_delay=1 uniform_delay=true
        ; CASE: true_code.size=0 && false_code.size=1
        btfss   serial_in___byte, serial_in___bit
        ; line_number = 500
        ; delay_set 1 start
        ; Delay at delay_set is 0
        ; line_number = 501
        ; return start
        ; line_number = 501
        retlw   0
        ; line_number = 501
        ; return done
        ; line_number = 500
        ; delay_set 1 done
        ; code.delay=2 back_code.delay=0
        ; <=bit_code_emit@symbol; sym=serial_in (data:X0=>X0 code:XX=>XX)
        ; if final true delay=1 false delay=0 code delay=2
        ; line_number = 499
        ; if !serial_in done
        ; line_number = 502
        ; average := average + fronts[index]
        ; Delay at assignment is 2
        movf    strobe__index,w
        addlw   fronts
        movwf   __fsr
        movf    __indf,w
        addwf   strobe__average,f
        ; Delay 3 cycles
        goto    strobe__47
strobe__47:
        nop     
        ; line_number = 498
        ; delay f2 - 3 done
        ; line_number = 497
        ;  loop_exactly buffer_size wrap-up
        decfsz  strobe__45,f
        goto    strobe__46
        ; line_number = 497
        ;  loop_exactly buffer_size done
        ; line_number = 503
        ; front_average := average
        movf    strobe__average,w
        movwf   front_average
        ; line_number = 504
        ;  delay f1 + 1 start
        ; Delay expression evaluates to 14
        ; line_number = 505
        ; if !serial_in start
        ; Delay at if is 0
        ; (after recombine) true_delay=0, false_delay=1 uniform_delay=true
        ; CASE: true_code.size=0 && false_code.size=1
        btfss   serial_in___byte, serial_in___bit
        ; line_number = 506
        ; delay_set 1 start
        ; Delay at delay_set is 0
        ; line_number = 507
        ; return start
        ; line_number = 507
        retlw   0
        ; line_number = 507
        ; return done
        ; line_number = 506
        ; delay_set 1 done
        ; code.delay=2 back_code.delay=0
        ; <=bit_code_emit@symbol; sym=serial_in (data:X0=>X0 code:XX=>XX)
        ; if final true delay=1 false delay=0 code delay=2
        ; line_number = 505
        ; if !serial_in done
        ; line_number = 508
        ; if front_average >= front_far start
        ; Delay at if is 2
        movf    front_far,w
        subwf   front_average,w
        ; (after recombine) true_delay=1, false_delay=1 uniform_delay=true
        ; CASE: true_size=1 && false_size=1
        ; SUBCASE: Double test; true, then false
        btfsc   __c___byte, __c___bit
        ; line_number = 509
        ; front_led0 := 0
        ; Delay at assignment is 0
        bcf     front_led0___byte, front_led0___bit
        btfss   __c___byte, __c___bit
        ; line_number = 511
        ; front_led0 := 1
        ; Delay at assignment is 0
        bsf     front_led0___byte, front_led0___bit
        ; code.delay=8 back_code.delay=0
        ; <=bit_code_emit@symbol; sym=__c (data:X0=>X0 code:XX=>XX)
        ; Uniform delay broke in relation_code_emit
        ; if final true delay=1 false delay=1 code delay=8
        ; line_number = 508
        ; if front_average >= front_far done
        ; line_number = 512
        ; if front_average >= front_near start
        ; Delay at if is 8
        movf    front_near,w
        subwf   front_average,w
        ; (after recombine) true_delay=1, false_delay=1 uniform_delay=true
        ; CASE: true_size=1 && false_size=1
        ; SUBCASE: Double test; true, then false
        btfsc   __c___byte, __c___bit
        ; line_number = 513
        ; front_led1 := 0
        ; Delay at assignment is 0
        bcf     front_led1___byte, front_led1___bit
        btfss   __c___byte, __c___bit
        ; line_number = 515
        ; front_led1 := 1
        ; Delay at assignment is 0
        bsf     front_led1___byte, front_led1___bit
        ; code.delay=14 back_code.delay=0
        ; <=bit_code_emit@symbol; sym=__c (data:X0=>X0 code:XX=>XX)
        ; Uniform delay broke in relation_code_emit
        ; if final true delay=1 false delay=1 code delay=14
        ; line_number = 512
        ; if front_average >= front_near done
        ; line_number = 504
        ;  delay f1 + 1 done
        ; Recombine size1 = 0 || size2 = 0
strobe__48:
        ; code.delay=4294967295 back_code.delay=4294967295
        ; <=bit_code_emit@symbol; sym=strobe__illuminate (data:XX=>X0 code:XX=>XX)
        ; line_number = 438
        ; if illuminate done
        goto    strobe__50
strobe__49:
        ; # This time do the back sensor; next time do front:
        ; line_number = 518
        ;  front_back := 1
        bsf     strobe__front_back___byte, strobe__front_back___bit

        ; # Figure out whether or not we turn the IR LED's on
        ; # this time.
        ; line_number = 522
        ;  delay f1 start
        ; Delay expression evaluates to 13
        ; line_number = 523
        ; if !serial_in start
        ; Delay at if is 0
        ; (after recombine) true_delay=0, false_delay=1 uniform_delay=true
        ; CASE: true_code.size=0 && false_code.size=1
        btfss   serial_in___byte, serial_in___bit
        ; line_number = 524
        ; delay_set 1 start
        ; Delay at delay_set is 0
        ; line_number = 525
        ; return start
        ; line_number = 525
        retlw   0
        ; line_number = 525
        ; return done
        ; line_number = 524
        ; delay_set 1 done
        ; code.delay=2 back_code.delay=0
        ; <=bit_code_emit@symbol; sym=serial_in (data:X0=>X0 code:XX=>XX)
        ; if final true delay=1 false delay=0 code delay=2
        ; line_number = 523
        ; if !serial_in done
        ; line_number = 526
        ; illuminate := 1
        ; Delay at assignment is 2
        bsf     strobe__illuminate___byte, strobe__illuminate___bit
        ; line_number = 527
        ;  if back_count = 0 start
        ; Delay at if is 3
        ; Left minus Right
        movf    back_count,w
        ; (after recombine) true_delay=3, false_delay=2 uniform_delay=true
        ; CASE: true_code_size > 1 && false_code_size > 1
        ; true_code_size=3 false_code_size=2
        btfsc   __z___byte, __z___bit
        goto    strobe__1
        ; Delay 0 cycles
        ; line_number = 531
        ; back_count := back_count - 1
        ; Delay at assignment is 0
        decf    back_count,f
        ; line_number = 532
        ;  illuminate := 0
        ; Delay at assignment is 1
        bcf     strobe__illuminate___byte, strobe__illuminate___bit
        goto    strobe__2
strobe__1:
        ; line_number = 528
        ; back_count := back_delay
        ; Delay at assignment is 0
        movf    back_delay,w
        movwf   back_count
        ; line_number = 529
        ;  illuminate := 1
        ; Delay at assignment is 2
        bsf     strobe__illuminate___byte, strobe__illuminate___bit
strobe__2:
        ; code.delay=9 back_code.delay=0
        ; <=bit_code_emit@symbol; sym=__z (data:X0=>X0 code:XX=>XX)
        ; Uniform delay broke in relation_code_emit
        ; if final true delay=3 false delay=2 code delay=9
        ; line_number = 527
        ;  if back_count = 0 done
        ; line_number = 533
        ; if !back_enable start
        ; Delay at if is 9
        ; (after recombine) true_delay=0, false_delay=1 uniform_delay=true
        ; CASE: true_code.size=0 && false_code.size=1
        btfss   back_enable___byte, back_enable___bit
        ; line_number = 534
        ; illuminate := 0
        ; Delay at assignment is 0
        bcf     strobe__illuminate___byte, strobe__illuminate___bit

        ; code.delay=11 back_code.delay=0
        ; <=bit_code_emit@symbol; sym=back_enable (data:X0=>X0 code:XX=>XX)
        ; if final true delay=1 false delay=0 code delay=11
        ; line_number = 533
        ; if !back_enable done
        ; Delay 2 cycles
        goto    strobe__3
strobe__3:
        ; line_number = 522
        ;  delay f1 done
        ; line_number = 536
        ; if illuminate start
        ; (after recombine) true_delay=non-uniform, false_delay=non-uniform
        ; CASE: true_code.size = 0 && false_code.size > 1
        ; bit_code_emit_helper1: body_code.size=95 true_test=true body_code.delay=0 (non-uniform delay)
        btfss   strobe__illuminate___byte, strobe__illuminate___bit
        goto    strobe__23
        ; # We've decided to illuminate.  Generate 22 pulses of
        ; # IR light on the back IR LED at 38kHz.
        ; line_number = 539
        ;  loop_exactly 22 start
strobe__4 equ shared___globals+56
        movlw   22
        movwf   strobe__4
strobe__5:
        ; line_number = 540
        ; delay f1 start
        ; Delay expression evaluates to 13
        ; line_number = 541
        ; back_ir := 1
        ; Delay at assignment is 0
        bsf     back_ir___byte, back_ir___bit
        ; line_number = 542
        ;  if !serial_in start
        ; Delay at if is 1
        ; (after recombine) true_delay=0, false_delay=1 uniform_delay=true
        ; CASE: true_code.size=0 && false_code.size=1
        btfss   serial_in___byte, serial_in___bit
        ; line_number = 543
        ; delay_set 1 start
        ; Delay at delay_set is 0
        ; line_number = 544
        ; return start
        ; line_number = 544
        retlw   0
        ; line_number = 544
        ; return done
        ; line_number = 543
        ; delay_set 1 done
        ; code.delay=3 back_code.delay=0
        ; <=bit_code_emit@symbol; sym=serial_in (data:XX=>X0 code:XX=>XX)
        ; if final true delay=1 false delay=0 code delay=3
        ; line_number = 542
        ;  if !serial_in done
        ; line_number = 545
        ; if !ir_sense start
        ; Delay at if is 3
        ; (after recombine) true_delay=0, false_delay=1 uniform_delay=true
        ; CASE: true_code.size=0 && false_code.size=1
        btfss   ir_sense___byte, ir_sense___bit
        ; line_number = 546
        ; detect := detect + 1
        ; Delay at assignment is 0
        incf    strobe__detect,f
        ; code.delay=5 back_code.delay=0
        ; <=bit_code_emit@symbol; sym=ir_sense (data:XX=>X0 code:XX=>XX)
        ; if final true delay=1 false delay=0 code delay=5
        ; line_number = 545
        ; if !ir_sense done
        ; Delay 8 cycles
        ; Delay loop takes 2 * 4 = 8 cycles
        movlw   2
strobe__6:
        addlw   255
        btfss   __z___byte, __z___bit
        goto    strobe__6
        ; line_number = 540
        ; delay f1 done
        ; line_number = 547
        ; delay f2 - 3 start
        ; Delay expression evaluates to 10
        ; line_number = 548
        ; back_ir := 0
        ; Delay at assignment is 0
        bcf     back_ir___byte, back_ir___bit
        ; line_number = 549
        ;  if !serial_in start
        ; Delay at if is 1
        ; (after recombine) true_delay=0, false_delay=1 uniform_delay=true
        ; CASE: true_code.size=0 && false_code.size=1
        btfss   serial_in___byte, serial_in___bit
        ; line_number = 550
        ; delay_set 1 start
        ; Delay at delay_set is 0
        ; line_number = 551
        ; return start
        ; line_number = 551
        retlw   0
        ; line_number = 551
        ; return done
        ; line_number = 550
        ; delay_set 1 done
        ; code.delay=3 back_code.delay=0
        ; <=bit_code_emit@symbol; sym=serial_in (data:XX=>X0 code:XX=>XX)
        ; if final true delay=1 false delay=0 code delay=3
        ; line_number = 549
        ;  if !serial_in done
        ; line_number = 552
        ; if !ir_sense start
        ; Delay at if is 3
        ; (after recombine) true_delay=0, false_delay=1 uniform_delay=true
        ; CASE: true_code.size=0 && false_code.size=1
        btfss   ir_sense___byte, ir_sense___bit
        ; line_number = 553
        ; detect := detect + 1
        ; Delay at assignment is 0
        incf    strobe__detect,f

        ; code.delay=5 back_code.delay=0
        ; <=bit_code_emit@symbol; sym=ir_sense (data:XX=>X0 code:XX=>XX)
        ; if final true delay=1 false delay=0 code delay=5
        ; line_number = 552
        ; if !ir_sense done
        ; Delay 5 cycles
        goto    strobe__7
strobe__7:
        goto    strobe__8
strobe__8:
        nop     
        ; line_number = 547
        ; delay f2 - 3 done
        ; line_number = 539
        ;  loop_exactly 22 wrap-up
        decfsz  strobe__4,f
        goto    strobe__5
        ; line_number = 539
        ;  loop_exactly 22 done
        ; # Now wait for twice that amount of time for the
        ; # the sensor to calm down.  Test every half wave
        ; # length though:
        ; line_number = 558
        ;  back_ir := 0
        bcf     back_ir___byte, back_ir___bit
        ; line_number = 559
        ;  loop_exactly 44 start
strobe__9 equ shared___globals+56
        movlw   44
        movwf   strobe__9
strobe__10:
        ; line_number = 560
        ; delay f1 start
        ; Delay expression evaluates to 13
        ; line_number = 561
        ; if !serial_in start
        ; Delay at if is 0
        ; (after recombine) true_delay=0, false_delay=1 uniform_delay=true
        ; CASE: true_code.size=0 && false_code.size=1
        btfss   serial_in___byte, serial_in___bit
        ; line_number = 562
        ; delay_set 1 start
        ; Delay at delay_set is 0
        ; line_number = 563
        ; return start
        ; line_number = 563
        retlw   0
        ; line_number = 563
        ; return done
        ; line_number = 562
        ; delay_set 1 done
        ; code.delay=2 back_code.delay=0
        ; <=bit_code_emit@symbol; sym=serial_in (data:X0=>X0 code:XX=>XX)
        ; if final true delay=1 false delay=0 code delay=2
        ; line_number = 561
        ; if !serial_in done
        ; line_number = 564
        ; if !ir_sense start
        ; Delay at if is 2
        ; (after recombine) true_delay=0, false_delay=1 uniform_delay=true
        ; CASE: true_code.size=0 && false_code.size=1
        btfss   ir_sense___byte, ir_sense___bit
        ; line_number = 565
        ; detect := detect + 1
        ; Delay at assignment is 0
        incf    strobe__detect,f
        ; code.delay=4 back_code.delay=0
        ; <=bit_code_emit@symbol; sym=ir_sense (data:X0=>X0 code:XX=>XX)
        ; if final true delay=1 false delay=0 code delay=4
        ; line_number = 564
        ; if !ir_sense done
        ; Delay 9 cycles
        ; Delay loop takes 2 * 4 = 8 cycles
        movlw   2
strobe__11:
        addlw   255
        btfss   __z___byte, __z___bit
        goto    strobe__11
        nop     
        ; line_number = 560
        ; delay f1 done
        ; line_number = 566
        ; delay f2 - 3 start
        ; Delay expression evaluates to 10
        ; line_number = 567
        ; if !serial_in start
        ; Delay at if is 0
        ; (after recombine) true_delay=0, false_delay=1 uniform_delay=true
        ; CASE: true_code.size=0 && false_code.size=1
        btfss   serial_in___byte, serial_in___bit
        ; line_number = 568
        ; delay_set 1 start
        ; Delay at delay_set is 0
        ; line_number = 569
        ; return start
        ; line_number = 569
        retlw   0
        ; line_number = 569
        ; return done
        ; line_number = 568
        ; delay_set 1 done
        ; code.delay=2 back_code.delay=0
        ; <=bit_code_emit@symbol; sym=serial_in (data:X0=>X0 code:XX=>XX)
        ; if final true delay=1 false delay=0 code delay=2
        ; line_number = 567
        ; if !serial_in done
        ; line_number = 570
        ; if !ir_sense start
        ; Delay at if is 2
        ; (after recombine) true_delay=0, false_delay=1 uniform_delay=true
        ; CASE: true_code.size=0 && false_code.size=1
        btfss   ir_sense___byte, ir_sense___bit
        ; line_number = 571
        ; detect := detect + 1
        ; Delay at assignment is 0
        incf    strobe__detect,f

        ; code.delay=4 back_code.delay=0
        ; <=bit_code_emit@symbol; sym=ir_sense (data:X0=>X0 code:XX=>XX)
        ; if final true delay=1 false delay=0 code delay=4
        ; line_number = 570
        ; if !ir_sense done
        ; Delay 6 cycles
        goto    strobe__12
strobe__12:
        goto    strobe__13
strobe__13:
        goto    strobe__14
strobe__14:
        ; line_number = 566
        ; delay f2 - 3 done
        ; line_number = 559
        ;  loop_exactly 44 wrap-up
        decfsz  strobe__9,f
        goto    strobe__10
        ; line_number = 559
        ;  loop_exactly 44 done
        ; # Now do follow on processing of the signal.
        ; line_number = 574
        ;  delay f1 start
        ; Delay expression evaluates to 13
        ; # First, clip the signal to 0x3f:
        ; line_number = 576
        ;  if !serial_in start
        ; Delay at if is 0
        ; (after recombine) true_delay=0, false_delay=1 uniform_delay=true
        ; CASE: true_code.size=0 && false_code.size=1
        btfss   serial_in___byte, serial_in___bit
        ; line_number = 577
        ; delay_set 1 start
        ; Delay at delay_set is 0
        ; line_number = 578
        ; return start
        ; line_number = 578
        retlw   0
        ; line_number = 578
        ; return done
        ; line_number = 577
        ; delay_set 1 done
        ; code.delay=2 back_code.delay=0
        ; <=bit_code_emit@symbol; sym=serial_in (data:X0=>X0 code:XX=>XX)
        ; if final true delay=1 false delay=0 code delay=2
        ; line_number = 576
        ;  if !serial_in done
        ; # Any values over 63 need to be truncated:
        ; line_number = 580
        ;  if detect@6 start
        ; Delay at if is 2
strobe__select__15___byte equ strobe__detect
strobe__select__15___bit equ 6
        ; (after recombine) true_delay=2, false_delay=0 uniform_delay=true
        ; CASE: true_code.size = 0 && false_code.size > 1
        ; bit_code_emit_helper1: body_code.size=2 true_test=true body_code.delay=2 (uniform delay)
        btfsc   strobe__select__15___byte, strobe__select__15___bit
        goto    strobe__16
        ; Delay 1 cycles
        nop     
        goto    strobe__17
strobe__16:
        ; line_number = 581
        ; detect := 0x3f
        ; Delay at assignment is 0
        movlw   63
        movwf   strobe__detect
strobe__17:
        ; code.delay=7 back_code.delay=0
        ; <=bit_code_emit@symbol; sym=strobe__select__15 (data:X0=>X0 code:XX=>XX)
        ; if final true delay=2 false delay=0 code delay=7
        ; line_number = 580
        ;  if detect@6 done
        ; line_number = 582
        ; back_last := detect << 2
        ; Delay at assignment is 7
        rlf     strobe__detect,w
        movwf   back_last
        rlf     back_last,f
        movlw   252
        andwf   back_last,f
        ; Delay 1 cycles
        nop     
        ; line_number = 574
        ;  delay f1 done
        ; line_number = 583
        ; delay f1 start
        ; Delay expression evaluates to 13
        ; # Drop the detected value into the averaging buffer:
        ; line_number = 585
        ;  if !serial_in start
        ; Delay at if is 0
        ; (after recombine) true_delay=0, false_delay=1 uniform_delay=true
        ; CASE: true_code.size=0 && false_code.size=1
        btfss   serial_in___byte, serial_in___bit
        ; line_number = 586
        ; delay_set 1 start
        ; Delay at delay_set is 0
        ; line_number = 587
        ; return start
        ; line_number = 587
        retlw   0
        ; line_number = 587
        ; return done
        ; line_number = 586
        ; delay_set 1 done
        ; code.delay=2 back_code.delay=0
        ; <=bit_code_emit@symbol; sym=serial_in (data:X0=>X0 code:XX=>XX)
        ; if final true delay=1 false delay=0 code delay=2
        ; line_number = 585
        ;  if !serial_in done
        ; line_number = 588
        ; back_index := back_index + 1
        ; Delay at assignment is 2
        incf    back_index,f
        ; line_number = 589
        ;  back_index@buffer_power := 0
        ; Delay at assignment is 3
strobe__select__18___byte equ back_index
strobe__select__18___bit equ 3
        bcf     strobe__select__18___byte, strobe__select__18___bit
        ; line_number = 590
        ;  backs[back_index] := detect >> 1
        ; Delay at assignment is 4
        ; index_fsr_first
        movf    back_index,w
        addlw   backs
        movwf   __fsr
        rrf     strobe__detect,w
        movwf   __indf
        bcf     __indf, 7

        ; Delay 3 cycles
        goto    strobe__19
strobe__19:
        nop     
        ; line_number = 583
        ; delay f1 done
        ; # Compute the average:
        ; line_number = 593
        ;  average := 0
        movlw   0
        movwf   strobe__average
        ; line_number = 594
        ;  index := 0
        movlw   0
        movwf   strobe__index
        ; line_number = 595
        ;  loop_exactly buffer_size start
strobe__20 equ shared___globals+56
        movlw   8
        movwf   strobe__20
strobe__21:
        ; line_number = 596
        ; delay f2 - 3 start
        ; Delay expression evaluates to 10
        ; line_number = 597
        ; if !serial_in start
        ; Delay at if is 0
        ; (after recombine) true_delay=0, false_delay=1 uniform_delay=true
        ; CASE: true_code.size=0 && false_code.size=1
        btfss   serial_in___byte, serial_in___bit
        ; line_number = 598
        ; delay_set 1 start
        ; Delay at delay_set is 0
        ; line_number = 599
        ; return start
        ; line_number = 599
        retlw   0
        ; line_number = 599
        ; return done
        ; line_number = 598
        ; delay_set 1 done
        ; code.delay=2 back_code.delay=0
        ; <=bit_code_emit@symbol; sym=serial_in (data:X0=>X0 code:XX=>XX)
        ; if final true delay=1 false delay=0 code delay=2
        ; line_number = 597
        ; if !serial_in done
        ; line_number = 600
        ; average := average + backs[index]
        ; Delay at assignment is 2
        movf    strobe__index,w
        addlw   backs
        movwf   __fsr
        movf    __indf,w
        addwf   strobe__average,f
        ; line_number = 601
        ;  index := index + 1
        ; Delay at assignment is 7
        incf    strobe__index,f

        ; Delay 2 cycles
        goto    strobe__22
strobe__22:
        ; line_number = 596
        ; delay f2 - 3 done
        ; line_number = 595
        ;  loop_exactly buffer_size wrap-up
        decfsz  strobe__20,f
        goto    strobe__21
        ; line_number = 595
        ;  loop_exactly buffer_size done
        ; # Light the LED's as appropriate:	
        ; line_number = 604
        ;  back_average := average
        movf    strobe__average,w
        movwf   back_average
        ; line_number = 605
        ;  delay f1 + 1 start
        ; Delay expression evaluates to 14
        ; line_number = 606
        ; if !serial_in start
        ; Delay at if is 0
        ; (after recombine) true_delay=0, false_delay=1 uniform_delay=true
        ; CASE: true_code.size=0 && false_code.size=1
        btfss   serial_in___byte, serial_in___bit
        ; line_number = 607
        ; delay_set 1 start
        ; Delay at delay_set is 0
        ; line_number = 608
        ; return start
        ; line_number = 608
        retlw   0
        ; line_number = 608
        ; return done
        ; line_number = 607
        ; delay_set 1 done
        ; code.delay=2 back_code.delay=0
        ; <=bit_code_emit@symbol; sym=serial_in (data:X0=>X0 code:XX=>XX)
        ; if final true delay=1 false delay=0 code delay=2
        ; line_number = 606
        ; if !serial_in done
        ; line_number = 609
        ; if back_average >= back_far start
        ; Delay at if is 2
        movf    back_far,w
        subwf   back_average,w
        ; (after recombine) true_delay=1, false_delay=1 uniform_delay=true
        ; CASE: true_size=1 && false_size=1
        ; SUBCASE: Double test; true, then false
        btfsc   __c___byte, __c___bit
        ; line_number = 610
        ; back_led0 := 0
        ; Delay at assignment is 0
        bcf     back_led0___byte, back_led0___bit
        btfss   __c___byte, __c___bit
        ; line_number = 612
        ; back_led0 := 1
        ; Delay at assignment is 0
        bsf     back_led0___byte, back_led0___bit
        ; code.delay=8 back_code.delay=0
        ; <=bit_code_emit@symbol; sym=__c (data:X0=>X0 code:XX=>XX)
        ; Uniform delay broke in relation_code_emit
        ; if final true delay=1 false delay=1 code delay=8
        ; line_number = 609
        ; if back_average >= back_far done
        ; line_number = 613
        ; if back_average >= back_near start
        ; Delay at if is 8
        movf    back_near,w
        subwf   back_average,w
        ; (after recombine) true_delay=1, false_delay=1 uniform_delay=true
        ; CASE: true_size=1 && false_size=1
        ; SUBCASE: Double test; true, then false
        btfsc   __c___byte, __c___bit
        ; line_number = 614
        ; back_led1 := 0
        ; Delay at assignment is 0
        bcf     back_led1___byte, back_led1___bit
        btfss   __c___byte, __c___bit
        ; line_number = 616
        ; back_led1 := 1
        ; Delay at assignment is 0
        bsf     back_led1___byte, back_led1___bit

        ; code.delay=14 back_code.delay=0
        ; <=bit_code_emit@symbol; sym=__c (data:X0=>X0 code:XX=>XX)
        ; Uniform delay broke in relation_code_emit
        ; if final true delay=1 false delay=1 code delay=14
        ; line_number = 613
        ; if back_average >= back_near done
        ; line_number = 605
        ;  delay f1 + 1 done
        ; Recombine size1 = 0 || size2 = 0
strobe__23:
        ; code.delay=4294967295 back_code.delay=4294967295
        ; <=bit_code_emit@symbol; sym=strobe__illuminate (data:XX=>X0 code:XX=>XX)
        ; line_number = 536
        ; if illuminate done
strobe__50:
        ; code.delay=4294967295 back_code.delay=4294967295
        ; <=bit_code_emit@symbol; sym=strobe__front_back (data:XX=>XX code:XX=>XX)
        ; line_number = 418
        ;  if front_back done
        ; line_number = 618
        ; if illuminate start
        ; (after recombine) true_delay=non-uniform, false_delay=non-uniform
        ; CASE: true_code_size > 1 && false_code_size > 1
        ; true_code_size=55 false_code_size=16
        btfss   strobe__illuminate___byte, strobe__illuminate___bit
        goto    strobe__77
        ; # Do interrupt processing:
        ; line_number = 620
        ;  delay f1 + 3 start
        ; Delay expression evaluates to 16
        ; line_number = 621
        ; if !serial_in start
        ; Delay at if is 0
        ; (after recombine) true_delay=0, false_delay=1 uniform_delay=true
        ; CASE: true_code.size=0 && false_code.size=1
        btfss   serial_in___byte, serial_in___bit
        ; line_number = 622
        ; delay_set 1 start
        ; Delay at delay_set is 0
        ; line_number = 623
        ; return start
        ; line_number = 623
        retlw   0
        ; line_number = 623
        ; return done
        ; line_number = 622
        ; delay_set 1 done
        ; code.delay=2 back_code.delay=0
        ; <=bit_code_emit@symbol; sym=serial_in (data:X0=>X0 code:XX=>XX)
        ; if final true delay=1 false delay=0 code delay=2
        ; line_number = 621
        ; if !serial_in done
        ; line_number = 624
        ; interrupt_pending := 0
        ; Delay at assignment is 2
        bcf     interrupt_pending___byte, interrupt_pending___bit
        ; line_number = 625
        ;  if front_average >= front_near start
        ; Delay at if is 3
        movf    front_near,w
        subwf   front_average,w
        ; (after recombine) true_delay=2, false_delay=8 uniform_delay=true
        ; CASE: true_code_size > 1 && false_code_size > 1
        ; true_code_size=2 false_code_size=10
        btfss   __c___byte, __c___bit
        goto    strobe__61
        ; line_number = 626
        ; if interrupt_mask@interrupt_front_near start
        ; Delay at if is 0
strobe__select__60___byte equ interrupt_mask
strobe__select__60___bit equ 5
        ; (after recombine) true_delay=1, false_delay=0 uniform_delay=true
        ; CASE: True.size=1 False.size=0
        btfsc   strobe__select__60___byte, strobe__select__60___bit
        ; line_number = 627
        ; interrupt_pending := 1
        ; Delay at assignment is 0
        bsf     interrupt_pending___byte, interrupt_pending___bit
        ; code.delay=2 back_code.delay=0
        ; <=bit_code_emit@symbol; sym=strobe__select__60 (data:X0=>X0 code:XX=>XX)
        ; if final true delay=1 false delay=0 code delay=2
        ; line_number = 626
        ; if interrupt_mask@interrupt_front_near done
        ; Delay 5 cycles
        goto    strobe__63
strobe__63:
        goto    strobe__64
strobe__64:
        nop     
        goto    strobe__62
strobe__61:
        ; line_number = 628
        movf    front_far,w
        subwf   front_average,w
        ; (after recombine) true_delay=2, false_delay=2 uniform_delay=true
        ; CASE: true_code_size > 1 && false_code_size > 1
        ; true_code_size=2 false_code_size=2
        btfss   __c___byte, __c___bit
        goto    strobe__58
        ; line_number = 629
        ; if interrupt_mask@interrupt_front_far start
        ; Delay at if is 0
strobe__select__57___byte equ interrupt_mask
strobe__select__57___bit equ 4
        ; (after recombine) true_delay=1, false_delay=0 uniform_delay=true
        ; CASE: True.size=1 False.size=0
        btfsc   strobe__select__57___byte, strobe__select__57___bit
        ; line_number = 630
        ; interrupt_pending := 1
        ; Delay at assignment is 0
        bsf     interrupt_pending___byte, interrupt_pending___bit
        ; code.delay=2 back_code.delay=0
        ; <=bit_code_emit@symbol; sym=strobe__select__57 (data:X0=>X0 code:XX=>XX)
        ; if final true delay=1 false delay=0 code delay=2
        ; line_number = 629
        ; if interrupt_mask@interrupt_front_far done
        goto    strobe__59
strobe__58:
        ; line_number = 632
        ; if interrupt_mask@interrupt_front_none start
        ; Delay at if is 0
strobe__select__56___byte equ interrupt_mask
strobe__select__56___bit equ 3
        ; (after recombine) true_delay=1, false_delay=0 uniform_delay=true
        ; CASE: True.size=1 False.size=0
        btfsc   strobe__select__56___byte, strobe__select__56___bit
        ; line_number = 633
        ; interrupt_pending := 1
        ; Delay at assignment is 0
        bsf     interrupt_pending___byte, interrupt_pending___bit
        ; code.delay=2 back_code.delay=0
        ; <=bit_code_emit@symbol; sym=strobe__select__56 (data:X0=>X0 code:XX=>XX)
        ; if final true delay=1 false delay=0 code delay=2
        ; line_number = 632
        ; if interrupt_mask@interrupt_front_none done
        nop     
strobe__59:
        ; code.delay=8 back_code.delay=0
        ; <=bit_code_emit@symbol; sym=__c (data:X0=>X0 code:XX=>XX)
        ; Uniform delay broke in relation_code_emit
strobe__62:
        ; code.delay=16 back_code.delay=0
        ; <=bit_code_emit@symbol; sym=__c (data:X0=>X0 code:XX=>XX)
        ; Uniform delay broke in relation_code_emit
        ; if final true delay=2 false delay=8 code delay=16
        ; line_number = 625
        ;  if front_average >= front_near done
        ; line_number = 620
        ;  delay f1 + 3 done
        ; line_number = 634
        ; delay f1 + 2 start
        ; Delay expression evaluates to 15
        ; line_number = 635
        ; if !serial_in start
        ; Delay at if is 0
        ; (after recombine) true_delay=0, false_delay=1 uniform_delay=true
        ; CASE: true_code.size=0 && false_code.size=1
        btfss   serial_in___byte, serial_in___bit
        ; line_number = 636
        ; delay_set 1 start
        ; Delay at delay_set is 0
        ; line_number = 637
        ; return start
        ; line_number = 637
        retlw   0
        ; line_number = 637
        ; return done
        ; line_number = 636
        ; delay_set 1 done
        ; code.delay=2 back_code.delay=0
        ; <=bit_code_emit@symbol; sym=serial_in (data:X0=>X0 code:XX=>XX)
        ; if final true delay=1 false delay=0 code delay=2
        ; line_number = 635
        ; if !serial_in done
        ; line_number = 638
        ; if back_average >= back_near start
        ; Delay at if is 2
        movf    back_near,w
        subwf   back_average,w
        ; (after recombine) true_delay=2, false_delay=8 uniform_delay=true
        ; CASE: true_code_size > 1 && false_code_size > 1
        ; true_code_size=2 false_code_size=10
        btfss   __c___byte, __c___bit
        goto    strobe__70
        ; line_number = 639
        ; if interrupt_mask@interrupt_back_near start
        ; Delay at if is 0
strobe__select__69___byte equ interrupt_mask
strobe__select__69___bit equ 2
        ; (after recombine) true_delay=1, false_delay=0 uniform_delay=true
        ; CASE: True.size=1 False.size=0
        btfsc   strobe__select__69___byte, strobe__select__69___bit
        ; line_number = 640
        ; interrupt_pending := 1
        ; Delay at assignment is 0
        bsf     interrupt_pending___byte, interrupt_pending___bit
        ; code.delay=2 back_code.delay=0
        ; <=bit_code_emit@symbol; sym=strobe__select__69 (data:X0=>X0 code:XX=>XX)
        ; if final true delay=1 false delay=0 code delay=2
        ; line_number = 639
        ; if interrupt_mask@interrupt_back_near done
        ; Delay 5 cycles
        goto    strobe__72
strobe__72:
        goto    strobe__73
strobe__73:
        nop     
        goto    strobe__71
strobe__70:
        ; line_number = 641
        movf    back_far,w
        subwf   back_average,w
        ; (after recombine) true_delay=2, false_delay=2 uniform_delay=true
        ; CASE: true_code_size > 1 && false_code_size > 1
        ; true_code_size=2 false_code_size=2
        btfss   __c___byte, __c___bit
        goto    strobe__67
        ; line_number = 642
        ; if interrupt_mask@interrupt_back_far start
        ; Delay at if is 0
strobe__select__66___byte equ interrupt_mask
strobe__select__66___bit equ 1
        ; (after recombine) true_delay=1, false_delay=0 uniform_delay=true
        ; CASE: True.size=1 False.size=0
        btfsc   strobe__select__66___byte, strobe__select__66___bit
        ; line_number = 643
        ; interrupt_pending := 1
        ; Delay at assignment is 0
        bsf     interrupt_pending___byte, interrupt_pending___bit
        ; code.delay=2 back_code.delay=0
        ; <=bit_code_emit@symbol; sym=strobe__select__66 (data:X0=>X0 code:XX=>XX)
        ; if final true delay=1 false delay=0 code delay=2
        ; line_number = 642
        ; if interrupt_mask@interrupt_back_far done
        goto    strobe__68
strobe__67:
        ; line_number = 645
        ; if interrupt_mask@interrupt_back_none start
        ; Delay at if is 0
strobe__select__65___byte equ interrupt_mask
strobe__select__65___bit equ 0
        ; (after recombine) true_delay=1, false_delay=0 uniform_delay=true
        ; CASE: True.size=1 False.size=0
        btfsc   strobe__select__65___byte, strobe__select__65___bit
        ; line_number = 646
        ; interrupt_pending := 1
        ; Delay at assignment is 0
        bsf     interrupt_pending___byte, interrupt_pending___bit
        ; code.delay=2 back_code.delay=0
        ; <=bit_code_emit@symbol; sym=strobe__select__65 (data:X0=>X0 code:XX=>XX)
        ; if final true delay=1 false delay=0 code delay=2
        ; line_number = 645
        ; if interrupt_mask@interrupt_back_none done
        nop     
strobe__68:
        ; code.delay=8 back_code.delay=0
        ; <=bit_code_emit@symbol; sym=__c (data:X0=>X0 code:XX=>XX)
        ; Uniform delay broke in relation_code_emit
strobe__71:
        ; code.delay=15 back_code.delay=0
        ; <=bit_code_emit@symbol; sym=__c (data:X0=>X0 code:XX=>XX)
        ; Uniform delay broke in relation_code_emit
        ; if final true delay=2 false delay=8 code delay=15
        ; line_number = 638
        ; if back_average >= back_near done
        ; line_number = 634
        ; delay f1 + 2 done
        ; line_number = 647
        ; delay f1 start
        ; Delay expression evaluates to 13
        ; line_number = 648
        ; if interrupt_enable start
        ; Delay at if is 0
        ; (after recombine) true_delay=2, false_delay=0 uniform_delay=true
        ; CASE: true_code.size = 0 && false_code.size > 1
        ; bit_code_emit_helper1: body_code.size=2 true_test=true body_code.delay=2 (uniform delay)
        btfsc   interrupt_enable___byte, interrupt_enable___bit
        goto    strobe__74
        ; Delay 1 cycles
        nop     
        goto    strobe__75
strobe__74:
        ; line_number = 649
        ; if interrupt_pending start
        ; Delay at if is 0
        ; (after recombine) true_delay=1, false_delay=0 uniform_delay=true
        ; CASE: True.size=1 False.size=0
        btfsc   interrupt_pending___byte, interrupt_pending___bit
        ; # Assert the interrupt signal:
        ; line_number = 651
        ;  serial_out := 0
        ; Delay at assignment is 0
        bcf     serial_out___byte, serial_out___bit
        ; code.delay=2 back_code.delay=0
        ; <=bit_code_emit@symbol; sym=interrupt_pending (data:X0=>X0 code:XX=>XX)
        ; if final true delay=1 false delay=0 code delay=2
        ; line_number = 649
        ; if interrupt_pending done
strobe__75:
        ; code.delay=5 back_code.delay=0
        ; <=bit_code_emit@symbol; sym=interrupt_enable (data:X0=>X0 code:XX=>XX)
        ; if final true delay=2 false delay=0 code delay=5
        ; line_number = 648
        ; if interrupt_enable done
        ; Delay 8 cycles
        ; Delay loop takes 2 * 4 = 8 cycles
        movlw   2
strobe__76:
        addlw   255
        btfss   __z___byte, __z___bit
        goto    strobe__76
        ; line_number = 647
        ; delay f1 done
        goto    strobe__78
strobe__77:
        ; # Kill some time just as if we were illuminating an IR LED:
        ; line_number = 654
        ;  loop_exactly 22 + 44 + 10 start
strobe__51 equ shared___globals+56
        ; Expression is strictly a constant
        movlw   76
        movwf   strobe__51
strobe__52:
        ; line_number = 655
        ; delay f1 start
        ; Delay expression evaluates to 13
        ; line_number = 656
        ; if !serial_in start
        ; Delay at if is 0
        ; (after recombine) true_delay=0, false_delay=1 uniform_delay=true
        ; CASE: true_code.size=0 && false_code.size=1
        btfss   serial_in___byte, serial_in___bit
        ; line_number = 657
        ; delay_set 1 start
        ; Delay at delay_set is 0
        ; line_number = 658
        ; return start
        ; line_number = 658
        retlw   0
        ; line_number = 658
        ; return done
        ; line_number = 657
        ; delay_set 1 done
        ; code.delay=2 back_code.delay=0
        ; <=bit_code_emit@symbol; sym=serial_in (data:X0=>X0 code:XX=>XX)
        ; if final true delay=1 false delay=0 code delay=2
        ; line_number = 656
        ; if !serial_in done
        ; Delay 11 cycles
        ; Delay loop takes 2 * 4 = 8 cycles
        movlw   2
strobe__53:
        addlw   255
        btfss   __z___byte, __z___bit
        goto    strobe__53
        goto    strobe__54
strobe__54:
        nop     
        ; line_number = 655
        ; delay f1 done
        ; line_number = 659
        ; delay f2 - 3 start
        ; Delay expression evaluates to 10
        ; line_number = 660
        ; if !serial_in start
        ; Delay at if is 0
        ; (after recombine) true_delay=0, false_delay=1 uniform_delay=true
        ; CASE: true_code.size=0 && false_code.size=1
        btfss   serial_in___byte, serial_in___bit
        ; line_number = 661
        ; delay_set 1 start
        ; Delay at delay_set is 0
        ; line_number = 662
        ; return start
        ; line_number = 662
        retlw   0
        ; line_number = 662
        ; return done

        ; line_number = 661
        ; delay_set 1 done
        ; code.delay=2 back_code.delay=0
        ; <=bit_code_emit@symbol; sym=serial_in (data:X0=>X0 code:XX=>XX)
        ; if final true delay=1 false delay=0 code delay=2
        ; line_number = 660
        ; if !serial_in done
        ; Delay 8 cycles
        ; Delay loop takes 2 * 4 = 8 cycles
        movlw   2
strobe__55:
        addlw   255
        btfss   __z___byte, __z___bit
        goto    strobe__55
        ; line_number = 659
        ; delay f2 - 3 done
        ; line_number = 654
        ;  loop_exactly 22 + 44 + 10 wrap-up
        decfsz  strobe__51,f
        goto    strobe__52
        ; line_number = 654
        ;  loop_exactly 22 + 44 + 10 done
strobe__78:
        ; code.delay=4294967295 back_code.delay=4294967295
        ; <=bit_code_emit@symbol; sym=strobe__illuminate (data:XX=>XX code:XX=>XX)
        ; line_number = 618
        ; if illuminate done
        ; delay after procedure statements=non-uniform
        ; Implied return
        retlw   0




        ; line_number = 664
        ; constant zero8 = "\0,0,0,0,0,0,0,0\"
        ; zero8 = '\0,0,0,0,0,0,0,0\'
        ; line_number = 665
        ; constant module_name = "\13\IRProximity2C"
        ; module_name = '\13\IRProximity2C'
        ; line_number = 666
        ; constant vendor_name = "\13\Mondo-tronics"
        ; vendor_name = '\13\Mondo-tronics'
        ; line_number = 667
        ; string id = "\1,0,29,0,0,0,0,0\" ~ zero8 ~ zero8 ~ module_name ~ vendor_name start
        ; id = '\1,0,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13\IRProximity2C\13\Mondo-tronics'
id:
        ; Temporarily save index into FSR
        movwf   __fsr
        ; Initialize PCLATH to point to this code page
        movlw   id___base>>8
        movwf   __pclath
        ; Restore index from FSR
        movf    __fsr,w
        addlw   id___base
        ; Index to the correct return value
        movwf   __pcl
        ; page_group 52
        ; Add 20 NOP's until start of new page 
        nop     
        nop     
        nop     
        nop     
        nop     
        nop     
        nop     
        nop     
        nop     
        nop     
        nop     
        nop     
        nop     
        nop     
        nop     
        nop     
        nop     
        nop     
        nop     
        nop     
id___base:
        retlw   1
        retlw   0
        retlw   29
        retlw   0
        retlw   0
        retlw   0
        retlw   0
        retlw   0
        retlw   0
        retlw   0
        retlw   0
        retlw   0
        retlw   0
        retlw   0
        retlw   0
        retlw   0
        retlw   0
        retlw   0
        retlw   0
        retlw   0
        retlw   0
        retlw   0
        retlw   0
        retlw   0
        retlw   13
        retlw   73
        retlw   82
        retlw   80
        retlw   114
        retlw   111
        retlw   120
        retlw   105
        retlw   109
        retlw   105
        retlw   116
        retlw   121
        retlw   50
        retlw   67
        retlw   13
        retlw   77
        retlw   111
        retlw   110
        retlw   100
        retlw   111
        retlw   45
        retlw   116
        retlw   114
        retlw   111
        retlw   110
        retlw   105
        retlw   99
        retlw   115
        ; line_number = 667
        ; string id = "\1,0,29,0,0,0,0,0\" ~ zero8 ~ zero8 ~ module_name ~ vendor_name start

        ; Appending 2 delayed procedures to code bank 0
        ; buffer = 'bit_bang'
        ; line_number = 33
        ; procedure byte_get
byte_get:
        ; arguments_none
        ; line_number = 35
        ;  returns byte

        ; # This procedure will wait for a byte to be received from
        ; # serial_in_bit.  It calls the delay procedure for all delays.
        ; # This procedure will keep calling the {delay} routine until
        ; # data is received.

        ; line_number = 42
        ;  local count byte
byte_get__count equ shared___globals
        ; line_number = 43
        ;  local byte byte
byte_get__byte equ shared___globals+1

        ; # 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 PIC running at
        ; # 4MHz (=1MIPS), only has 138 instructions available for the
        ; # delay routine when at 1/3 of bit.

        ; # Wait for a start bit:
        ; before procedure statements delay=non-uniform, bit states=(data:X0=>X0 code:XX=>XX)
        ; line_number = 62
        ;  waiting := 1
        bsf     waiting___byte, waiting___bit
        ; line_number = 63
        ;  receiving := 1
        bsf     receiving___byte, receiving___bit
        ; line_number = 64
        ;  while serial_in start
byte_get__1:
        ; (after recombine) true_delay=non-uniform, false_delay=non-uniform
        ; CASE: true_code.size = 0 && false_code.size > 1
        ; bit_code_emit_helper1: body_code.size=2 true_test=true body_code.delay=0 (non-uniform delay)
        btfss   serial_in___byte, serial_in___bit
        goto    byte_get__2
        ; line_number = 65
        ; delay instructions_per_delay - 3 start
        ; Delay expression evaluates to 135
        ; line_number = 66
        ; call delay()
        ; Delay at call is 0
        call    delay
        ; line_number = 65
        ; delay instructions_per_delay - 3 done
        goto    byte_get__1
        ; Recombine size1 = 0 || size2 = 0
byte_get__2:
        ; code.delay=4294967295 back_code.delay=4294967295
        ; <=bit_code_emit@symbol; sym=serial_in (data:X0=>X0 code:XX=>XX)
        ; line_number = 64
        ;  while serial_in done
        ; line_number = 67
        ; waiting := 0
        bcf     waiting___byte, waiting___bit

        ; # Clear out any preceeding interrupt condition:
        ; line_number = 70
        ;  serial_out := 1
        bsf     serial_out___byte, serial_out___bit

        ; # Skip over start bit:
        ; line_number = 73
        ;  delay instructions_per_bit - 2 start
        ; Delay expression evaluates to 414
        ; # There are two instructions of set-up for following loop_exactly:
        ; line_number = 75
        ;  call delay()
        ; Delay at call is 0
        call    delay
        ; line_number = 76
        ;  call delay()
        ; Delay at call is 135
        call    delay
        ; line_number = 77
        ;  call delay()
        ; Delay at call is 270
        call    delay
        ; line_number = 78
        ;  byte := 0
        ; Delay at assignment is 405
        movlw   0
        movwf   byte_get__byte

        ; Delay 7 cycles
        goto    byte_get__3
byte_get__3:
        goto    byte_get__4
byte_get__4:
        goto    byte_get__5
byte_get__5:
        nop     
        ; line_number = 73
        ;  delay instructions_per_bit - 2 done
        ; # Read in 8 bits of data:
        ; line_number = 81
        ;  loop_exactly 8 start
byte_get__6 equ shared___globals+57
        movlw   8
        movwf   byte_get__6
byte_get__7:
        ; # There are 3 instrucitons of loop_exactly overhead:
        ; line_number = 83
        ;  delay instructions_per_bit - 3 start
        ; Delay expression evaluates to 413
        ; line_number = 84
        ; call delay()
        ; Delay at call is 0
        call    delay
        ; line_number = 85
        ;  byte := byte >> 1
        ; Delay at assignment is 135
        ; Assignment of variable to self (no code needed)
        rrf     byte_get__byte,f
        bcf     byte_get__byte, 7
        ; line_number = 86
        ;  if serial_in start
        ; Delay at if is 137
        ; (after recombine) true_delay=1, false_delay=0 uniform_delay=true
        ; CASE: True.size=1 False.size=0
        btfsc   serial_in___byte, serial_in___bit
        ; line_number = 87
        ; byte@7 := 1
        ; Delay at assignment is 0
byte_get__select__8___byte equ byte_get__byte
byte_get__select__8___bit equ 7
        bsf     byte_get__select__8___byte, byte_get__select__8___bit
        ; code.delay=139 back_code.delay=0
        ; <=bit_code_emit@symbol; sym=serial_in (data:X0=>X0 code:XX=>XX)
        ; if final true delay=1 false delay=0 code delay=139
        ; line_number = 86
        ;  if serial_in done
        ; line_number = 88
        ; call delay()
        ; Delay at call is 139
        call    delay
        ; line_number = 89
        ;  call delay()
        ; Delay at call is 274
        call    delay

        ; Delay 4 cycles
        goto    byte_get__9
byte_get__9:
        goto    byte_get__10
byte_get__10:
        ; line_number = 83
        ;  delay instructions_per_bit - 3 done
        ; line_number = 81
        ;  loop_exactly 8 wrap-up
        decfsz  byte_get__6,f
        goto    byte_get__7
        ; line_number = 81
        ;  loop_exactly 8 done
        ; # Skip over 2/3's of stop bit; 3 cycles for return:
        ; line_number = 92
        ;  delay instructions_per_delay*2 - 3 start
        ; Delay expression evaluates to 273
        ; line_number = 93
        ; call delay()
        ; Delay at call is 0
        call    delay
        ; line_number = 94
        ;  call delay()
        ; Delay at call is 135
        call    delay
        ; Delay 3 cycles
        goto    byte_get__11
byte_get__11:
        nop     
        ; line_number = 92
        ;  delay instructions_per_delay*2 - 3 done
        ; line_number = 95
        ; command_previous := command_last
        movf    command_last,w
        movwf   command_previous
        ; line_number = 96
        ;  command_last := byte
        movf    byte_get__byte,w
        movwf   command_last
        ; line_number = 97
        ;  serial_out := 1
        bsf     serial_out___byte, serial_out___bit
        ; line_number = 98
        ;  return byte start
        ; line_number = 98
        movf    byte_get__byte,w
        return  
        ; line_number = 98
        ;  return byte done


        ; delay after procedure statements=non-uniform




        ; line_number = 101
        ; procedure byte_put
byte_put:
        ; Last argument is sitting in W; save into argument variable
        movwf   byte_put__byte
        ; delay=4294967295
        ; line_number = 102
        ; argument byte byte
byte_put__byte equ shared___globals+3
        ; line_number = 103
        ;  returns_nothing

        ; # This procedure will send {byte} to {serial_out} pin.  The {delay}
        ; # procedure is called to provide the appropriate bit timing.

        ; line_number = 108
        ;  local count byte
byte_put__count equ shared___globals+2

        ; # {receiving} will be 1 if the last get/put routine was a get.
        ; # Before we start transmitting a response back, we want to ensure
        ; # that there has been enough time to turn the line around.
        ; # We delay the first 1/3 of a bit to pad out the 9-2/3 bits
        ; # from get_byte to 10 bits.  We delay another 3 bits just to
        ; # ensure that slow interpreters do not get overrun.
        ; before procedure statements delay=non-uniform, bit states=(data:X0=>X0 code:XX=>XX)
        ; line_number = 116
        ;  sent_previous := sent_last
        movf    sent_last,w
        movwf   sent_previous
        ; line_number = 117
        ;  sent_last := byte
        movf    byte_put__byte,w
        movwf   sent_last
        ; line_number = 118
        ;  if receiving start
        ; (after recombine) true_delay=non-uniform, false_delay=non-uniform
        ; CASE: true_code.size = 0 && false_code.size > 1
        ; bit_code_emit_helper1: body_code.size=4 true_test=true body_code.delay=0 (non-uniform delay)
        btfss   receiving___byte, receiving___bit
        goto    byte_put__3
        ; line_number = 119
        ; receiving := 0
        bcf     receiving___byte, receiving___bit
        ; # 10 = 1 + 3*3 = 3-1/3 extra bits of delay:
        ; line_number = 121
        ;  loop_exactly 10 start
byte_put__1 equ shared___globals+58
        movlw   10
        movwf   byte_put__1
byte_put__2:
        ; line_number = 122
        ; call delay()
        call    delay

        ; line_number = 121
        ;  loop_exactly 10 wrap-up
        decfsz  byte_put__1,f
        goto    byte_put__2
        ; line_number = 121
        ;  loop_exactly 10 done
        ; Recombine size1 = 0 || size2 = 0
byte_put__3:
        ; code.delay=4294967295 back_code.delay=4294967295
        ; <=bit_code_emit@symbol; sym=receiving (data:X0=>X0 code:XX=>XX)
        ; line_number = 118
        ;  if receiving done
        ; # Send the start bit:
        ; line_number = 125
        ;  delay instructions_per_bit - 2 start
        ; Delay expression evaluates to 414
        ; # The loop_exactly setup after this is 2 instructions:
        ; line_number = 127
        ;  serial_out := 0
        ; Delay at assignment is 0
        bcf     serial_out___byte, serial_out___bit
        ; line_number = 128
        ;  call delay()
        ; Delay at call is 1
        call    delay
        ; line_number = 129
        ;  call delay()
        ; Delay at call is 136
        call    delay
        ; line_number = 130
        ;  call delay()
        ; Delay at call is 271
        call    delay

        ; Delay 8 cycles
        ; Delay loop takes 2 * 4 = 8 cycles
        movlw   2
byte_put__4:
        addlw   255
        btfss   __z___byte, __z___bit
        goto    byte_put__4
        ; line_number = 125
        ;  delay instructions_per_bit - 2 done
        ; # Send the data:
        ; line_number = 133
        ;  loop_exactly 8 start
byte_put__5 equ shared___globals+58
        movlw   8
        movwf   byte_put__5
byte_put__6:
        ; # Loop_exactly overhead is 3 instructions:
        ; line_number = 135
        ;  delay instructions_per_bit - 3 start
        ; Delay expression evaluates to 413
        ; line_number = 136
        ; if byte@0 start
        ; Delay at if is 0
byte_put__select__7___byte equ byte_put__byte
byte_put__select__7___bit equ 0
        ; (after recombine) true_delay=1, false_delay=1 uniform_delay=true
        ; CASE: true_size=1 && false_size=1
        ; SUBCASE: Double test; true, then false
        btfsc   byte_put__select__7___byte, byte_put__select__7___bit
        ; line_number = 137
        ; serial_out := 1
        ; Delay at assignment is 0
        bsf     serial_out___byte, serial_out___bit
        btfss   byte_put__select__7___byte, byte_put__select__7___bit
        ; line_number = 139
        ; serial_out := 0
        ; Delay at assignment is 0
        bcf     serial_out___byte, serial_out___bit
        ; code.delay=4 back_code.delay=0
        ; <=bit_code_emit@symbol; sym=byte_put__select__7 (data:X0=>X0 code:XX=>XX)
        ; if final true delay=1 false delay=1 code delay=4
        ; line_number = 136
        ; if byte@0 done
        ; line_number = 140
        ; byte := byte >> 1
        ; Delay at assignment is 4
        ; Assignment of variable to self (no code needed)
        rrf     byte_put__byte,f
        bcf     byte_put__byte, 7
        ; line_number = 141
        ;  call delay()
        ; Delay at call is 6
        call    delay
        ; line_number = 142
        ;  call delay()
        ; Delay at call is 141
        call    delay
        ; line_number = 143
        ;  call delay()
        ; Delay at call is 276
        call    delay

        ; Delay 2 cycles
        goto    byte_put__8
byte_put__8:
        ; line_number = 135
        ;  delay instructions_per_bit - 3 done
        ; line_number = 133
        ;  loop_exactly 8 wrap-up
        decfsz  byte_put__5,f
        goto    byte_put__6
        ; line_number = 133
        ;  loop_exactly 8 done
        ; # Send the stop bit:
        ; line_number = 146
        ;  delay instructions_per_bit start
        ; Delay expression evaluates to 416
        ; line_number = 147
        ; serial_out := 1
        ; Delay at assignment is 0
        bsf     serial_out___byte, serial_out___bit
        ; line_number = 148
        ;  call delay()
        ; Delay at call is 1
        call    delay
        ; line_number = 149
        ;  call delay()
        ; Delay at call is 136
        call    delay
        ; line_number = 150
        ;  call delay()
        ; Delay at call is 271
        call    delay


        ; Delay 10 cycles
        ; Delay loop takes 2 * 4 = 8 cycles
        movlw   2
byte_put__9:
        addlw   255
        btfss   __z___byte, __z___bit
        goto    byte_put__9
        goto    byte_put__10
byte_put__10:
        ; line_number = 146
        ;  delay instructions_per_bit done
        ; delay after procedure statements=non-uniform
        ; Implied return
        retlw   0




        ; Configuration bits
        ; fill = 0x0
        ; bg = bg11 (0x3000)
        ; cpd = off (0x100)
        ; cp = off (0x80)
        ; boden = off (0x0)
        ; mclre = off (0x0)
        ; pwrte = off (0x10)
        ; wdte = off (0x0)
        ; fosc = int_no_clk (0x4)
        ; 12692 = 0x3194
        __config 12692
        ; Define start addresses for data regions
        ; Region="shared___globals" Address=32" Size=64 Bytes=59 Bits=8 Available=4
        ; Region="shared___globals" Address=32" Size=64 Bytes=59 Bits=8 Available=4
        ; Region="shared___globals" Address=32" Size=64 Bytes=59 Bits=8 Available=4
        end
