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

        ; Define start addresses for data regions
shared___globals equ 112
globals___0 equ 32
globals___1 equ 160
globals___2 equ 272
globals___3 equ 416
__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) 2000-2005 by Wayne C. Gramlich.
        ; # All rights reserved.

        ; # This is a boot loader that resides in high memory for
        ; # loading programs into low memory.

        ; buffer = 'picbrain11'
        ; line_number = 9
        ; library _pic16f876 entered

        ; # Copyright (c) 2004 by Wayne C. Gramlich
        ; # All rights reserved.

        ; buffer = '_pic16f876'
        ; line_number = 6
        ; processor pic16f876
        ; line_number = 7
        ; configure_address 0x2007
        ; line_number = 8
        ;  configure_fill 0x0400
        ; line_number = 9
        ;  configure_option cp: off = 0x3030
        ; line_number = 10
        ;  configure_option cp: quarter = 0x2020
        ; line_number = 11
        ;  configure_option cp: half = 0x1010
        ; line_number = 12
        ;  configure_option cp: on = 0x0000
        ; line_number = 13
        ;  configure_option debug: on = 0x000
        ; line_number = 14
        ;  configure_option debug: off = 0x800
        ; line_number = 15
        ;  configure_option wrt: on = 0x200
        ; line_number = 16
        ;  configure_option wrt: off = 0x000
        ; line_number = 17
        ;  configure_option cpd: on = 0x000
        ; line_number = 18
        ;  configure_option cpd: off = 0x100
        ; line_number = 19
        ;  configure_option lvp: on = 0x80
        ; line_number = 20
        ;  configure_option lvp: off = 0x00
        ; line_number = 21
        ;  configure_option boden: on = 0x40
        ; line_number = 22
        ;  configure_option boden: off = 0x00
        ; line_number = 23
        ;  configure_option pwrte: on = 0
        ; line_number = 24
        ;  configure_option pwrte: off = 8
        ; line_number = 25
        ;  configure_option wdte: on = 4
        ; line_number = 26
        ;  configure_option wdte: off = 0
        ; line_number = 27
        ;  configure_option fosc: rc = 3
        ; line_number = 28
        ;  configure_option fosc: hs = 2
        ; line_number = 29
        ;  configure_option fosc: xt = 1
        ; line_number = 30
        ;  configure_option fosc: lp = 0
        ; line_number = 31
        ;  code_bank 0x0 : 0x7ff
        ; line_number = 32
        ;  code_bank 0x800 : 0xfff
        ; line_number = 33
        ;  code_bank 0x1000 : 0x17ff
        ; line_number = 34
        ;  code_bank 0x1800 : 0x1fff
        ; line_number = 35
        ;  data_bank 0x0 : 0x7f
        ; line_number = 36
        ;  data_bank 0x80 : 0xff
        ; line_number = 37
        ;  data_bank 0x100 : 0x17f
        ; line_number = 38
        ;  data_bank 0x180 : 0x1ff
        ; line_number = 39
        ;  global_region 0x20 : 0x6f
        ; line_number = 40
        ;  global_region 0xa0 : 0xef
        ; line_number = 41
        ;  global_region 0x110 : 0x16f
        ; line_number = 42
        ;  global_region 0x1a0 : 0x1ff
        ; line_number = 43
        ;  shared_region 0x70 : 0x7f
        ; line_number = 44
        ;  interrupts_possible
        ; line_number = 45
        ;  packages pdip = 28
        ; line_number = 46
        ;  pin mclr, vpp, thv, mclr_unused
        ; line_number = 47
        ; pin_bindings pdip = 1
        ; line_number = 48
        ; pin ra0_in, ra0_out, an0, ra0_unused
        ; line_number = 49
        ; pin_bindings pdip = 2
        ; line_number = 50
        ;  bind_to _porta@0
        ; line_number = 51
        ;  or_if ra0_in _trisa 1
        ; line_number = 52
        ;  or_if ra0_in _adcon1 7
        ; line_number = 53
        ;  or_if ra0_in _adcon0 0
        ; line_number = 54
        ;  or_if ra0_out _trisa 0
        ; line_number = 55
        ;  or_if ra0_out _adcon1 7
        ; line_number = 56
        ;  or_if ra0_out _adcon0 0
        ; line_number = 57
        ; pin ra1_in, ra1_out, an1, ra1_unused
        ; line_number = 58
        ; pin_bindings pdip = 3
        ; line_number = 59
        ;  bind_to _porta@1
        ; line_number = 60
        ;  or_if ra1_in _trisa 2
        ; line_number = 61
        ;  or_if ra1_in _adcon1 7
        ; line_number = 62
        ;  or_if ra1_in _adcon0 0
        ; line_number = 63
        ;  or_if ra1_out _trisa 0
        ; line_number = 64
        ;  or_if ra1_out _adcon1 7
        ; line_number = 65
        ;  or_if ra1_out _adcon0 0
        ; line_number = 66
        ; pin ra2_in, ra2_out, an2, vref_minus, ra2_unused
        ; line_number = 67
        ; pin_bindings pdip = 4
        ; line_number = 68
        ;  bind_to _porta@2
        ; line_number = 69
        ;  or_if ra2_in _trisa 4
        ; line_number = 70
        ;  or_if ra2_in _adcon1 7
        ; line_number = 71
        ;  or_if ra2_in _adcon0 0
        ; line_number = 72
        ;  or_if ra2_out _trisa 0
        ; line_number = 73
        ;  or_if ra2_out _adcon1 7
        ; line_number = 74
        ;  or_if ra2_out _adcon0 0
        ; line_number = 75
        ; pin ra3_in, ra3_out, an3, vrev_plus, ra3_unused
        ; line_number = 76
        ; pin_bindings pdip = 5
        ; line_number = 77
        ;  bind_to _porta@3
        ; line_number = 78
        ;  or_if ra3_in _trisa 8
        ; line_number = 79
        ;  or_if ra3_in _adcon1 7
        ; line_number = 80
        ;  or_if ra3_in _adcon0 0
        ; line_number = 81
        ;  or_if ra3_out _trisa 0
        ; line_number = 82
        ;  or_if ra3_out _adcon1 7
        ; line_number = 83
        ;  or_if ra3_out _adcon0 0
        ; line_number = 84
        ; pin ra4_in, ra4_out, t0cki, ra4_unused
        ; line_number = 85
        ; pin_bindings pdip = 6
        ; line_number = 86
        ;  bind_to _porta@4
        ; line_number = 87
        ;  or_if ra4_in _trisa 16
        ; line_number = 88
        ;  or_if ra4_in _adcon1 7
        ; line_number = 89
        ;  or_if ra4_in _adcon0 0
        ; line_number = 90
        ;  or_if ra4_out _trisa 0
        ; line_number = 91
        ;  or_if ra4_out _adcon1 7
        ; line_number = 92
        ;  or_if ra4_out _adcon0 0
        ; line_number = 93
        ; pin ra5_in, ra5_out, an4, ra5_unused
        ; line_number = 94
        ; pin_bindings pdip = 7
        ; line_number = 95
        ;  bind_to _porta@5
        ; line_number = 96
        ;  or_if ra5_in _trisa 32
        ; line_number = 97
        ;  or_if ra5_in _adcon1 7
        ; line_number = 98
        ;  or_if ra5_in _adcon1 0
        ; line_number = 99
        ;  or_if ra5_out _trisa 0
        ; line_number = 100
        ;  or_if ra5_out _adcon1 7
        ; line_number = 101
        ;  or_if ra5_out _adcon0 0
        ; line_number = 102
        ; pin vss, ground
        ; line_number = 103
        ; pin_bindings pdip = 8
        ; line_number = 104
        ; pin osc1, clkin
        ; line_number = 105
        ; pin_bindings pdip = 9
        ; line_number = 106
        ; pin osc2, clkout
        ; line_number = 107
        ; pin_bindings pdip = 10
        ; line_number = 108
        ; pin rc0_in, rc0_out, t1oso, t1cki, rc0_unused
        ; line_number = 109
        ; pin_bindings pdip = 11
        ; line_number = 110
        ;  bind_to _portc@0
        ; line_number = 111
        ;  or_if rc0_in _trisc 1
        ; line_number = 112
        ;  or_if rc0_in _adcon1 7
        ; line_number = 113
        ;  or_if rc0_in _adcon0 0
        ; line_number = 114
        ;  or_if rc0_out _trisc 0
        ; line_number = 115
        ;  or_if rc0_out _adcon1 7
        ; line_number = 116
        ;  or_if rc0_out _adcon0 0
        ; line_number = 117
        ; pin rc1_in, rc1_out, t1osi, ccp2, rc1_unused
        ; line_number = 118
        ; pin_bindings pdip = 12
        ; line_number = 119
        ;  bind_to _portc@1
        ; line_number = 120
        ;  or_if rc1_in _trisc 2
        ; line_number = 121
        ;  or_if rc1_in _adcon1 7
        ; line_number = 122
        ;  or_if rc1_in _adcon0 0
        ; line_number = 123
        ;  or_if rc1_out _trisc 0
        ; line_number = 124
        ;  or_if rc1_out _adcon1 7
        ; line_number = 125
        ;  or_if rc1_out _adcon0 0
        ; line_number = 126
        ; pin rc2_in, rc2_out, ccp1, rc2_unused
        ; line_number = 127
        ; pin_bindings pdip = 13
        ; line_number = 128
        ;  bind_to _portc@2
        ; line_number = 129
        ;  or_if rc2_in _trisc 4
        ; line_number = 130
        ;  or_if rc2_in _adcon1 7
        ; line_number = 131
        ;  or_if rc2_in _adcon0 0
        ; line_number = 132
        ;  or_if rc2_out _trisc 0
        ; line_number = 133
        ;  or_if rc2_out _adcon1 7
        ; line_number = 134
        ;  or_if rc2_out _adcon0 0
        ; line_number = 135
        ; pin rc3_in, rc3_out, sck, scl, rc3_unused
        ; line_number = 136
        ; pin_bindings pdip = 14
        ; line_number = 137
        ;  bind_to _portc@3
        ; line_number = 138
        ;  or_if rc3_in _trisc 8
        ; line_number = 139
        ;  or_if rc3_in _adcon1 7
        ; line_number = 140
        ;  or_if rc3_in _adcon0 0
        ; line_number = 141
        ;  or_if rc3_out _trisc 0
        ; line_number = 142
        ;  or_if rc3_out _adcon1 7
        ; line_number = 143
        ;  or_if rc3_out _adcon0 0
        ; line_number = 144
        ; pin rc4_in, rc4_out, sdi, sda, rc4_unused
        ; line_number = 145
        ; pin_bindings pdip = 15
        ; line_number = 146
        ;  bind_to _portc@4
        ; line_number = 147
        ;  or_if rc4_in _trisc 16
        ; line_number = 148
        ;  or_if rc4_in _adcon1 7
        ; line_number = 149
        ;  or_if rc4_in _adcon0 0
        ; line_number = 150
        ;  or_if rc4_out _trisc 0
        ; line_number = 151
        ;  or_if rc4_out _adcon1 7
        ; line_number = 152
        ;  or_if rc4_out _adcon0 0
        ; line_number = 153
        ; pin rc5_in, rc5_out, sdo, rc5_unused
        ; line_number = 154
        ; pin_bindings pdip = 16
        ; line_number = 155
        ;  bind_to _portc@5
        ; line_number = 156
        ;  or_if rc5_in _trisc 32
        ; line_number = 157
        ;  or_if rc5_in _adcon1 7
        ; line_number = 158
        ;  or_if rc5_in _adcon0 0
        ; line_number = 159
        ;  or_if rc5_out _trisc 0
        ; line_number = 160
        ;  or_if rc5_out _adcon1 7
        ; line_number = 161
        ;  or_if rc5_out _adcon0 0
        ; line_number = 162
        ; pin rc6_in, rc6_out, tx, ck, rc6_unused
        ; line_number = 163
        ; pin_bindings pdip = 17
        ; line_number = 164
        ;  bind_to _portc@6
        ; line_number = 165
        ;  or_if rc6_in _trisc 64
        ; line_number = 166
        ;  or_if rc6_in _adcon1 7
        ; line_number = 167
        ;  or_if rc6_in _adcon0 0
        ; line_number = 168
        ;  or_if rc6_out _trisc 0
        ; line_number = 169
        ;  or_if rc6_out _adcon1 7
        ; line_number = 170
        ;  or_if rc6_out _adcon0 0
        ; line_number = 171
        ;  or_if tx _trisc 0
        ; line_number = 172
        ;  or_if tx _adcon1 7
        ; line_number = 173
        ;  or_if tx _adcon0 0
        ; line_number = 174
        ; pin rc7_in, rc7_out, rx, dt, rc7_unused
        ; line_number = 175
        ; pin_bindings pdip = 18
        ; line_number = 176
        ;  bind_to _portc@7
        ; line_number = 177
        ;  or_if rc7_in _trisc 128
        ; line_number = 178
        ;  or_if rc7_in _adcon1 7
        ; line_number = 179
        ;  or_if rc7_in _adcon0 0
        ; line_number = 180
        ;  or_if rx _trisc 128
        ; line_number = 181
        ;  or_if rx _adcon1 7
        ; line_number = 182
        ;  or_if rx _adcon0 0
        ; line_number = 183
        ;  or_if rc7_out _trisc 0
        ; line_number = 184
        ;  or_if rc7_out _adcon1 7
        ; line_number = 185
        ;  or_if rc7_out _adcon0 0
        ; line_number = 186
        ; pin vss2, ground2
        ; line_number = 187
        ; pin_bindings pdip = 19
        ; line_number = 188
        ; pin vdd, power_supply
        ; line_number = 189
        ; pin_bindings pdip = 20
        ; line_number = 190
        ; pin rb0_in, rb0_out, int, rb0_unused
        ; line_number = 191
        ; pin_bindings pdip = 21
        ; line_number = 192
        ;  bind_to _portb@0
        ; line_number = 193
        ;  or_if rb0_in _trisb 1
        ; line_number = 194
        ;  or_if rb0_in _adcon1 7
        ; line_number = 195
        ;  or_if rb0_in _adcon0 0
        ; line_number = 196
        ;  or_if rb0_out _trisb 0
        ; line_number = 197
        ;  or_if rb0_out _adcon1 7
        ; line_number = 198
        ;  or_if rb0_out _adcon0 0
        ; line_number = 199
        ; pin rb1_in, rb1_out, rb1_unused
        ; line_number = 200
        ; pin_bindings pdip = 22
        ; line_number = 201
        ;  bind_to _portb@1
        ; line_number = 202
        ;  or_if rb1_in _trisb 2
        ; line_number = 203
        ;  or_if rb1_in _adcon1 7
        ; line_number = 204
        ;  or_if rb1_in _adcon0 0
        ; line_number = 205
        ;  or_if rb1_out _trisb 0
        ; line_number = 206
        ;  or_if rb1_out _adcon1 7
        ; line_number = 207
        ;  or_if rb1_out _adcon0 0
        ; line_number = 208
        ; pin rb2_in, rb2_out, rb2_unused
        ; line_number = 209
        ; pin_bindings pdip = 23
        ; line_number = 210
        ;  bind_to _portb@2
        ; line_number = 211
        ;  or_if rb2_in _trisb 4
        ; line_number = 212
        ;  or_if rb2_in _adcon1 7
        ; line_number = 213
        ;  or_if rb2_in _adcon0 0
        ; line_number = 214
        ;  or_if rb2_out _trisb 0
        ; line_number = 215
        ;  or_if rb2_out _adcon1 7
        ; line_number = 216
        ;  or_if rb2_out _adcon0 0
        ; line_number = 217
        ; pin rb3_in, rb3_out, pgm, rb3_unused
        ; line_number = 218
        ; pin_bindings pdip = 24
        ; line_number = 219
        ;  bind_to _portb@3
        ; line_number = 220
        ;  or_if rb3_in _trisb 8
        ; line_number = 221
        ;  or_if rb3_in _adcon1 7
        ; line_number = 222
        ;  or_if rb3_out _trisb 0
        ; line_number = 223
        ;  or_if rb3_out _adcon1 7
        ; line_number = 224
        ; pin rb4_in, rb4_out, rb4_unused
        ; line_number = 225
        ; pin_bindings pdip = 25
        ; line_number = 226
        ;  bind_to _portb@4
        ; line_number = 227
        ;  or_if rb4_in _trisb 16
        ; line_number = 228
        ;  or_if rb4_in _adcon1 7
        ; line_number = 229
        ;  or_if rb4_in _adcon0 0
        ; line_number = 230
        ;  or_if rb4_out _trisb 0
        ; line_number = 231
        ;  or_if rb4_out _adcon1 7
        ; line_number = 232
        ;  or_if rb4_out _adcon0 0
        ; line_number = 233
        ; pin rb5_in, rb5_out, rb5_unused
        ; line_number = 234
        ; pin_bindings pdip = 26
        ; line_number = 235
        ;  bind_to _portb@5
        ; line_number = 236
        ;  or_if rb5_in _trisb 32
        ; line_number = 237
        ;  or_if rb5_in _adcon1 7
        ; line_number = 238
        ;  or_if rb5_in _adcon0 0
        ; line_number = 239
        ;  or_if rb5_out _trisb 0
        ; line_number = 240
        ;  or_if rb5_out _adcon1 7
        ; line_number = 241
        ;  or_if rb5_out _adcon0 0
        ; line_number = 242
        ; pin rb6_in, rb6_out, pgc, rb6_unused
        ; line_number = 243
        ; pin_bindings pdip = 27
        ; line_number = 244
        ;  bind_to _portb@6
        ; line_number = 245
        ;  or_if rb6_in _trisb 64
        ; line_number = 246
        ;  or_if rb6_in _adcon1 7
        ; line_number = 247
        ;  or_if rb6_in _adcon0 0
        ; line_number = 248
        ;  or_if rb6_out _trisb 0
        ; line_number = 249
        ;  or_if rb6_out _adcon1 7
        ; line_number = 250
        ;  or_if rb6_out _adcon0 0
        ; line_number = 251
        ; pin rb7_in, rb7_out, pgd, rb7_unused
        ; line_number = 252
        ; pin_bindings pdip = 28
        ; line_number = 253
        ;  bind_to _portb@7
        ; line_number = 254
        ;  or_if rb7_in _trisb 128
        ; line_number = 255
        ;  or_if rb7_in _adcon1 7
        ; line_number = 256
        ;  or_if rb7_in _adcon0 0
        ; line_number = 257
        ;  or_if rb7_out _trisb 0
        ; line_number = 258
        ;  or_if rb7_out _adcon1 7
        ; line_number = 259
        ;  or_if rb7_out _adcon0 0


        ; # Register and pin definitions:

        ; line_number = 266
        ; library _pic16f87x entered

        ; # Copyright (c) 2004 by Wayne C. Gramlich
        ; # All rights reserved.

        ; # Common declarations for PIC16F87x series microcontrollers:

        ; # Register and pin definitions:

        ; # Bank 0:

        ; buffer = '_pic16f87x'
        ; line_number = 12
        ; register _indf = 
_indf equ 0

        ; line_number = 14
        ; register _tmr0 = 
_tmr0 equ 1

        ; line_number = 16
        ; register _pcl = 
_pcl equ 2

        ; line_number = 18
        ; register _status = 
_status equ 3
        ; line_number = 19
        ; bind _irp = _status@7
_irp___byte equ _status
_irp___bit equ 7
        ; line_number = 20
        ; bind _rp1 = _status@6
_rp1___byte equ _status
_rp1___bit equ 6
        ; line_number = 21
        ; bind _rp0 = _status@5
_rp0___byte equ _status
_rp0___bit equ 5
        ; line_number = 22
        ; bind _to = _status@4
_to___byte equ _status
_to___bit equ 4
        ; line_number = 23
        ; bind _pd = _status@3
_pd___byte equ _status
_pd___bit equ 3
        ; line_number = 24
        ; bind _z = _status@2
_z___byte equ _status
_z___bit equ 2
        ; line_number = 25
        ; bind _dc = _status@1
_dc___byte equ _status
_dc___bit equ 1

        ; line_number = 27
        ; register _fsr = 
_fsr equ 4

        ; line_number = 29
        ; register _porta = 
_porta equ 5

        ; line_number = 31
        ; register _portb = 
_portb equ 6

        ; line_number = 33
        ; register _portc = 
_portc equ 7

        ; line_number = 35
        ; register _pclath = 
_pclath equ 10

        ; line_number = 37
        ; register _intcon = 
_intcon equ 11
        ; line_number = 38
        ; bind _gie = _intcon@7
_gie___byte equ _intcon
_gie___bit equ 7
        ; line_number = 39
        ; bind _peie = _intcon@6
_peie___byte equ _intcon
_peie___bit equ 6
        ; line_number = 40
        ; bind _t0ie = _intcon@5
_t0ie___byte equ _intcon
_t0ie___bit equ 5
        ; line_number = 41
        ; bind _inte = _intcon@4
_inte___byte equ _intcon
_inte___bit equ 4
        ; line_number = 42
        ; bind _rbie = _intcon@3
_rbie___byte equ _intcon
_rbie___bit equ 3
        ; line_number = 43
        ; bind _t0if = _intcon@2
_t0if___byte equ _intcon
_t0if___bit equ 2
        ; line_number = 44
        ; bind _intf = _intcon@1
_intf___byte equ _intcon
_intf___bit equ 1
        ; line_number = 45
        ; bind _rbf = _intcon@0
_rbf___byte equ _intcon
_rbf___bit equ 0

        ; line_number = 47
        ; register _pir1 = 
_pir1 equ 12
        ; line_number = 48
        ; bind _pspif = _pir1@7
_pspif___byte equ _pir1
_pspif___bit equ 7
        ; line_number = 49
        ; bind _adif = _pir1@6
_adif___byte equ _pir1
_adif___bit equ 6
        ; line_number = 50
        ; bind _rcif = _pir1@5
_rcif___byte equ _pir1
_rcif___bit equ 5
        ; line_number = 51
        ; bind _txif = _pir1@4
_txif___byte equ _pir1
_txif___bit equ 4
        ; line_number = 52
        ; bind _sspif = _pir1@3
_sspif___byte equ _pir1
_sspif___bit equ 3
        ; line_number = 53
        ; bind _ccpif = _pir1@2
_ccpif___byte equ _pir1
_ccpif___bit equ 2
        ; line_number = 54
        ; bind _tmr2if = _pir1@1
_tmr2if___byte equ _pir1
_tmr2if___bit equ 1
        ; line_number = 55
        ; bind _tmr1if = _pir1@0
_tmr1if___byte equ _pir1
_tmr1if___bit equ 0

        ; line_number = 57
        ; register _pir2 = 
_pir2 equ 13
        ; line_number = 58
        ; bind _eeif = _pir2@4
_eeif___byte equ _pir2
_eeif___bit equ 4
        ; line_number = 59
        ; bind _bclif = _pir2@3
_bclif___byte equ _pir2
_bclif___bit equ 3
        ; line_number = 60
        ; bind _ccp2if = _pir2@0
_ccp2if___byte equ _pir2
_ccp2if___bit equ 0

        ; line_number = 62
        ; register _tmr1l = 
_tmr1l equ 14

        ; line_number = 64
        ; register _tmr1h = 
_tmr1h equ 15

        ; line_number = 66
        ; register _t1con = 
_t1con equ 16
        ; line_number = 67
        ; bind _t1ckps1 = _t1con@5
_t1ckps1___byte equ _t1con
_t1ckps1___bit equ 5
        ; line_number = 68
        ; bind _t1ckps0 = _t1con@4
_t1ckps0___byte equ _t1con
_t1ckps0___bit equ 4
        ; line_number = 69
        ; bind _t1oscen = _t1con@3
_t1oscen___byte equ _t1con
_t1oscen___bit equ 3
        ; line_number = 70
        ; bind _t1sync = _t1con@2
_t1sync___byte equ _t1con
_t1sync___bit equ 2
        ; line_number = 71
        ; bind _tmr1cs = _t1con@1
_tmr1cs___byte equ _t1con
_tmr1cs___bit equ 1
        ; line_number = 72
        ; bind _tmr1on = _t1con@0
_tmr1on___byte equ _t1con
_tmr1on___bit equ 0

        ; line_number = 74
        ; register _tmr2 = 
_tmr2 equ 17

        ; line_number = 76
        ; register _t2con = 
_t2con equ 18
        ; line_number = 77
        ; bind _toutps3 = _t2con@6
_toutps3___byte equ _t2con
_toutps3___bit equ 6
        ; line_number = 78
        ; bind _toutps2 = _t2con@5
_toutps2___byte equ _t2con
_toutps2___bit equ 5
        ; line_number = 79
        ; bind _toutps1 = _t2con@4
_toutps1___byte equ _t2con
_toutps1___bit equ 4
        ; line_number = 80
        ; bind _toutps0 = _t2con@3
_toutps0___byte equ _t2con
_toutps0___bit equ 3
        ; line_number = 81
        ; bind _tmr2on = _t2con@2
_tmr2on___byte equ _t2con
_tmr2on___bit equ 2
        ; line_number = 82
        ; bind _t2ckps1 = _t2con@1
_t2ckps1___byte equ _t2con
_t2ckps1___bit equ 1
        ; line_number = 83
        ; bind _t2ckps0 = _t2con@0
_t2ckps0___byte equ _t2con
_t2ckps0___bit equ 0

        ; line_number = 85
        ; register _sspbuf = 
_sspbuf equ 19

        ; line_number = 87
        ; register _sspcon = 
_sspcon equ 20
        ; line_number = 88
        ; bind _wcol = _sspcon@7
_wcol___byte equ _sspcon
_wcol___bit equ 7
        ; line_number = 89
        ; bind _sspov = _sspcon@6
_sspov___byte equ _sspcon
_sspov___bit equ 6
        ; line_number = 90
        ; bind _sspen = _sspcon@5
_sspen___byte equ _sspcon
_sspen___bit equ 5
        ; line_number = 91
        ; bind _ckp = _sspcon@4
_ckp___byte equ _sspcon
_ckp___bit equ 4
        ; line_number = 92
        ; bind _sspm3 = _sspcon@3
_sspm3___byte equ _sspcon
_sspm3___bit equ 3
        ; line_number = 93
        ; bind _sspm2 = _sspcon@2
_sspm2___byte equ _sspcon
_sspm2___bit equ 2
        ; line_number = 94
        ; bind _sspm1 = _sspcon@1
_sspm1___byte equ _sspcon
_sspm1___bit equ 1
        ; line_number = 95
        ; bind _sspm0 = _sspcon@0
_sspm0___byte equ _sspcon
_sspm0___bit equ 0

        ; line_number = 97
        ; register _ccpr1l = 
_ccpr1l equ 21

        ; line_number = 99
        ; register _ccpr1h = 
_ccpr1h equ 22

        ; line_number = 101
        ; register _ccp1con = 
_ccp1con equ 23
        ; line_number = 102
        ; bind _ccp1x = _ccp1con@5
_ccp1x___byte equ _ccp1con
_ccp1x___bit equ 5
        ; line_number = 103
        ; bind _ccp1y = _ccp1con@4
_ccp1y___byte equ _ccp1con
_ccp1y___bit equ 4
        ; line_number = 104
        ; bind _ccp1m3 = _ccp1con@3
_ccp1m3___byte equ _ccp1con
_ccp1m3___bit equ 3
        ; line_number = 105
        ; bind _ccp1m2 = _ccp1con@2
_ccp1m2___byte equ _ccp1con
_ccp1m2___bit equ 2
        ; line_number = 106
        ; bind _ccp1m1 = _ccp1con@1
_ccp1m1___byte equ _ccp1con
_ccp1m1___bit equ 1
        ; line_number = 107
        ; bind _ccp1m0 = _ccp1con@0
_ccp1m0___byte equ _ccp1con
_ccp1m0___bit equ 0

        ; line_number = 109
        ; register _rcsta = 
_rcsta equ 24
        ; line_number = 110
        ; bind _spen = _rcsta@7
_spen___byte equ _rcsta
_spen___bit equ 7
        ; line_number = 111
        ; bind _rx9 = _rcsta@6
_rx9___byte equ _rcsta
_rx9___bit equ 6
        ; line_number = 112
        ; bind _sren = _rcsta@5
_sren___byte equ _rcsta
_sren___bit equ 5
        ; line_number = 113
        ; bind _cren = _rcsta@4
_cren___byte equ _rcsta
_cren___bit equ 4
        ; line_number = 114
        ; bind _adden = _rcsta@3
_adden___byte equ _rcsta
_adden___bit equ 3
        ; line_number = 115
        ; bind _ferr = _rcsta@2
_ferr___byte equ _rcsta
_ferr___bit equ 2
        ; line_number = 116
        ; bind _oerr = _rcsta@1
_oerr___byte equ _rcsta
_oerr___bit equ 1
        ; line_number = 117
        ; bind _rx9d = _rcsta@0
_rx9d___byte equ _rcsta
_rx9d___bit equ 0

        ; line_number = 119
        ; register _txreg = 
_txreg equ 25

        ; line_number = 121
        ; register _rcreg = 
_rcreg equ 26

        ; line_number = 123
        ; register _ccpr2l = 
_ccpr2l equ 27

        ; line_number = 125
        ; register _ccpr2h = 
_ccpr2h equ 28

        ; line_number = 127
        ; register _ccp2con = 
_ccp2con equ 29
        ; line_number = 128
        ; bind _ccp2x = _ccp2con@5
_ccp2x___byte equ _ccp2con
_ccp2x___bit equ 5
        ; line_number = 129
        ; bind _ccp2y = _ccp2con@4
_ccp2y___byte equ _ccp2con
_ccp2y___bit equ 4
        ; line_number = 130
        ; bind _ccp2m3 = _ccp2con@3
_ccp2m3___byte equ _ccp2con
_ccp2m3___bit equ 3
        ; line_number = 131
        ; bind _ccp2m2 = _ccp2con@2
_ccp2m2___byte equ _ccp2con
_ccp2m2___bit equ 2
        ; line_number = 132
        ; bind _ccp2m1 = _ccp2con@1
_ccp2m1___byte equ _ccp2con
_ccp2m1___bit equ 1
        ; line_number = 133
        ; bind _ccp2m0 = _ccp2con@0
_ccp2m0___byte equ _ccp2con
_ccp2m0___bit equ 0

        ; line_number = 135
        ; register _adresh = 
_adresh equ 30

        ; line_number = 137
        ; register _adcon0 = 
_adcon0 equ 31
        ; line_number = 138
        ; bind _adcs1 = _adcon0@7
_adcs1___byte equ _adcon0
_adcs1___bit equ 7
        ; line_number = 139
        ; bind _adcs0 = _adcon0@6
_adcs0___byte equ _adcon0
_adcs0___bit equ 6
        ; line_number = 140
        ; bind _chs2 = _adcon0@5
_chs2___byte equ _adcon0
_chs2___bit equ 5
        ; line_number = 141
        ; bind _chs1 = _adcon0@4
_chs1___byte equ _adcon0
_chs1___bit equ 4
        ; line_number = 142
        ; bind _chs0 = _adcon0@3
_chs0___byte equ _adcon0
_chs0___bit equ 3
        ; line_number = 143
        ; bind _go_done = _adcon0@2
_go_done___byte equ _adcon0
_go_done___bit equ 2
        ; line_number = 144
        ; bind _adon = _adcon0@0
_adon___byte equ _adcon0
_adon___bit equ 0

        ; # Bank 1:

        ; line_number = 148
        ; register _option_reg = 
_option_reg equ 129
        ; line_number = 149
        ; bind _rbpu = _option_reg@7
_rbpu___byte equ _option_reg
_rbpu___bit equ 7
        ; line_number = 150
        ; bind _intedg = _option_reg@6
_intedg___byte equ _option_reg
_intedg___bit equ 6
        ; line_number = 151
        ; bind _t0cs = _option_reg@5
_t0cs___byte equ _option_reg
_t0cs___bit equ 5
        ; line_number = 152
        ; bind _t0se = _option_reg@4
_t0se___byte equ _option_reg
_t0se___bit equ 4
        ; line_number = 153
        ; bind _psa = _option_reg@3
_psa___byte equ _option_reg
_psa___bit equ 3
        ; line_number = 154
        ; bind _ps2 = _option_reg@2
_ps2___byte equ _option_reg
_ps2___bit equ 2
        ; line_number = 155
        ; bind _ps1 = _option_reg@1
_ps1___byte equ _option_reg
_ps1___bit equ 1
        ; line_number = 156
        ; bind _ps0 = _option_reg@0
_ps0___byte equ _option_reg
_ps0___bit equ 0

        ; line_number = 158
        ; register _trisa = 
_trisa equ 133

        ; line_number = 160
        ; register _trisb = 
_trisb equ 134

        ; line_number = 162
        ; register _trisc = 
_trisc equ 135

        ; line_number = 164
        ; register _pie1 = 
_pie1 equ 140
        ; line_number = 165
        ; bind _pspie = _pie1@7
_pspie___byte equ _pie1
_pspie___bit equ 7
        ; line_number = 166
        ; bind _adie = _pie1@6
_adie___byte equ _pie1
_adie___bit equ 6
        ; line_number = 167
        ; bind _rcie = _pie1@5
_rcie___byte equ _pie1
_rcie___bit equ 5
        ; line_number = 168
        ; bind _txie = _pie1@4
_txie___byte equ _pie1
_txie___bit equ 4
        ; line_number = 169
        ; bind _sspie = _pie1@3
_sspie___byte equ _pie1
_sspie___bit equ 3
        ; line_number = 170
        ; bind _ccp1ie = _pie1@2
_ccp1ie___byte equ _pie1
_ccp1ie___bit equ 2
        ; line_number = 171
        ; bind _tmr2ie = _pie1@1
_tmr2ie___byte equ _pie1
_tmr2ie___bit equ 1
        ; line_number = 172
        ; bind _tmr1ie = _pie1@0
_tmr1ie___byte equ _pie1
_tmr1ie___bit equ 0

        ; line_number = 174
        ; register _pie2 = 
_pie2 equ 141
        ; line_number = 175
        ; bind _eeie = _pie2@4
_eeie___byte equ _pie2
_eeie___bit equ 4
        ; line_number = 176
        ; bind _bcie = _pie2@3
_bcie___byte equ _pie2
_bcie___bit equ 3
        ; line_number = 177
        ; bind _ccp2ie = _pie2@0
_ccp2ie___byte equ _pie2
_ccp2ie___bit equ 0

        ; line_number = 179
        ; register _pcon = 
_pcon equ 142
        ; line_number = 180
        ; bind _por = _pcon@1
_por___byte equ _pcon
_por___bit equ 1
        ; line_number = 181
        ; bind _bor = _pcon@0
_bor___byte equ _pcon
_bor___bit equ 0

        ; line_number = 183
        ; register _sspcon2 = 
_sspcon2 equ 145
        ; line_number = 184
        ; bind _gcen = _sspcon2@7
_gcen___byte equ _sspcon2
_gcen___bit equ 7
        ; line_number = 185
        ; bind _ackstat = _sspcon2@6
_ackstat___byte equ _sspcon2
_ackstat___bit equ 6
        ; line_number = 186
        ; bind _ackdt = _sspcon2@5
_ackdt___byte equ _sspcon2
_ackdt___bit equ 5
        ; line_number = 187
        ; bind _acken = _sspcon2@4
_acken___byte equ _sspcon2
_acken___bit equ 4
        ; line_number = 188
        ; bind _rcen = _sspcon2@3
_rcen___byte equ _sspcon2
_rcen___bit equ 3
        ; line_number = 189
        ; bind _pen = _sspcon2@2
_pen___byte equ _sspcon2
_pen___bit equ 2
        ; line_number = 190
        ; bind _rsen = _sspcon2@1
_rsen___byte equ _sspcon2
_rsen___bit equ 1
        ; line_number = 191
        ; bind _sen = _sspcon2@0
_sen___byte equ _sspcon2
_sen___bit equ 0

        ; line_number = 193
        ; register _pr2 = 
_pr2 equ 146

        ; line_number = 195
        ; register _sspadd = 
_sspadd equ 147

        ; line_number = 197
        ; register _sspstat = 
_sspstat equ 148
        ; line_number = 198
        ; bind _smp = _sspstat@7
_smp___byte equ _sspstat
_smp___bit equ 7
        ; line_number = 199
        ; bind _cke = _sspstat@6
_cke___byte equ _sspstat
_cke___bit equ 6
        ; line_number = 200
        ; bind _da = _sspstat@5
_da___byte equ _sspstat
_da___bit equ 5
        ; line_number = 201
        ; bind _p = _sspstat@4
_p___byte equ _sspstat
_p___bit equ 4
        ; line_number = 202
        ; bind _s = _sspstat@3
_s___byte equ _sspstat
_s___bit equ 3
        ; line_number = 203
        ; bind _rw = _sspstat@2
_rw___byte equ _sspstat
_rw___bit equ 2
        ; line_number = 204
        ; bind _ua = _sspstat@1
_ua___byte equ _sspstat
_ua___bit equ 1
        ; line_number = 205
        ; bind _bf = _sspstat@0
_bf___byte equ _sspstat
_bf___bit equ 0

        ; line_number = 207
        ; register _txsta = 
_txsta equ 152
        ; line_number = 208
        ; bind _csrc = _txsta@7
_csrc___byte equ _txsta
_csrc___bit equ 7
        ; line_number = 209
        ; bind _tx9 = _txsta@6
_tx9___byte equ _txsta
_tx9___bit equ 6
        ; line_number = 210
        ; bind _txen = _txsta@5
_txen___byte equ _txsta
_txen___bit equ 5
        ; line_number = 211
        ; bind _sync = _txsta@4
_sync___byte equ _txsta
_sync___bit equ 4
        ; line_number = 212
        ; bind _brgh = _txsta@2
_brgh___byte equ _txsta
_brgh___bit equ 2
        ; line_number = 213
        ; bind _trmt = _txsta@1
_trmt___byte equ _txsta
_trmt___bit equ 1
        ; line_number = 214
        ; bind _tx9d = _txsta@0
_tx9d___byte equ _txsta
_tx9d___bit equ 0

        ; line_number = 216
        ; register _spbrg = 
_spbrg equ 153

        ; line_number = 218
        ; register _adresl = 
_adresl equ 158

        ; line_number = 220
        ; register _adcon1 = 
_adcon1 equ 159
        ; line_number = 221
        ; bind _adfm = _adcon1@7
_adfm___byte equ _adcon1
_adfm___bit equ 7
        ; line_number = 222
        ; bind _pcfg3 = _adcon1@3
_pcfg3___byte equ _adcon1
_pcfg3___bit equ 3
        ; line_number = 223
        ; bind _pcfg2 = _adcon1@2
_pcfg2___byte equ _adcon1
_pcfg2___bit equ 2
        ; line_number = 224
        ; bind _pcfg1 = _adcon1@1
_pcfg1___byte equ _adcon1
_pcfg1___bit equ 1
        ; line_number = 225
        ; bind _pcfg0 = _adcon1@0
_pcfg0___byte equ _adcon1
_pcfg0___bit equ 0

        ; # Bank 2:

        ; line_number = 229
        ; register _eedata = 
_eedata equ 268

        ; line_number = 231
        ; register _eeadr = 
_eeadr equ 269

        ; line_number = 233
        ; register _eedath = 
_eedath equ 270

        ; line_number = 235
        ; register _eeadrh = 
_eeadrh equ 271

        ; # Bank 3:

        ; line_number = 239
        ; register _eecon1 = 
_eecon1 equ 396
        ; line_number = 240
        ; bind _eepgd = _eecon1@7
_eepgd___byte equ _eecon1
_eepgd___bit equ 7
        ; line_number = 241
        ; bind _wrerr = _eecon1@3
_wrerr___byte equ _eecon1
_wrerr___bit equ 3
        ; line_number = 242
        ; bind _wren = _eecon1@2
_wren___byte equ _eecon1
_wren___bit equ 2
        ; line_number = 243
        ; bind _wr = _eecon1@1
_wr___byte equ _eecon1
_wr___bit equ 1
        ; line_number = 244
        ; bind _rd = _eecon1@0
_rd___byte equ _eecon1
_rd___bit equ 0

        ; line_number = 246
        ; register _eecon2 = 
_eecon2 equ 397


        ; buffer = '_pic16f876'
        ; line_number = 266
        ; library _pic16f87x exited


        ; buffer = 'picbrain11'
        ; line_number = 9
        ; library _pic16f876 exited
        ; line_number = 10
        ; library clock20mhz 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 = 'clock20mhz'
        ; line_number = 9
        ; constant clock_rate = 20000000
clock_rate equ 20000000
        ; 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 5000000


        ; buffer = 'picbrain11'
        ; line_number = 10
        ; library clock20mhz exited


        ; # Port and pin definitions:

        ; line_number = 16
        ; constant a_reg = 0
a_reg equ 0
        ; line_number = 17
        ; constant b_reg = 1
b_reg equ 1
        ; line_number = 18
        ; constant c_reg = 2
c_reg equ 2

        ; line_number = 20
        ; constant n1 = 0
n1 equ 0
        ; line_number = 21
        ; constant n1_reg = b_reg
n1_reg equ 1

        ; line_number = 23
        ; constant n2 = 1
n2 equ 1
        ; line_number = 24
        ; constant n2_reg = a_reg
n2_reg equ 0

        ; line_number = 26
        ; constant n3 = 2
n3 equ 2
        ; line_number = 27
        ; constant n3_reg = b_reg
n3_reg equ 1

        ; line_number = 29
        ; constant n4 = 3
n4 equ 3
        ; line_number = 30
        ; constant n4_reg = a_reg
n4_reg equ 0

        ; line_number = 32
        ; constant n5 = 4
n5 equ 4
        ; line_number = 33
        ; constant n5_reg = b_reg
n5_reg equ 1

        ; line_number = 35
        ; constant n6 = 5
n6 equ 5
        ; line_number = 36
        ; constant n6_reg = a_reg
n6_reg equ 0

        ; line_number = 38
        ; constant n7 = 6
n7 equ 6
        ; line_number = 39
        ; constant n7_reg = b_reg
n7_reg equ 1

        ; line_number = 41
        ; constant n8 = 7
n8 equ 7
        ; line_number = 42
        ; constant n8_reg = c_reg
n8_reg equ 2

        ; line_number = 44
        ; constant n9 = 8
n9 equ 8
        ; line_number = 45
        ; constant n9_reg = c_reg
n9_reg equ 2

        ; line_number = 47
        ; constant n10 = 9
n10 equ 9
        ; line_number = 48
        ; constant n10_reg = c_reg
n10_reg equ 2

        ; line_number = 50
        ; constant n11 = 10
n11 equ 10
        ; line_number = 51
        ; constant n11_reg = c_reg
n11_reg equ 2

        ; line_number = 53
        ; constant n_none = 11
n_none equ 11

        ; # Port definitions:

        ; line_number = 57
        ; package pdip
        ; line_number = 58
        ; pin 1 = mclr
        ; line_number = 59
        ;  pin 2 = ra0_in, name = n2in, bit = n2in_bit, mask = n2in_mask
n2in___byte equ _porta
n2in___bit equ 0
n2in_bit equ 0
n2in_mask equ 1
        ; line_number = 60
        ;  pin 3 = ra1_out, name = n2out, bit = n2out_bit, mask = n2out_mask
n2out___byte equ _porta
n2out___bit equ 1
n2out_bit equ 1
n2out_mask equ 2
        ; line_number = 61
        ;  pin 4 = ra2_in, name = n4in, bit = n4in_bit, mask = n4in_mask
n4in___byte equ _porta
n4in___bit equ 2
n4in_bit equ 2
n4in_mask equ 4
        ; line_number = 62
        ;  pin 5 = ra3_out, name = n4out, bit = n4out_bit, mask = n4out_mask
n4out___byte equ _porta
n4out___bit equ 3
n4out_bit equ 3
n4out_mask equ 8
        ; line_number = 63
        ;  pin 6 = ra4_in, name = n6in, bit = n6in_bit, mask = n6in_mask
n6in___byte equ _porta
n6in___bit equ 4
n6in_bit equ 4
n6in_mask equ 16
        ; line_number = 64
        ;  pin 7 = ra5_out, name = n6out, bit = n6_out_bit, mask = n6out_mask
n6out___byte equ _porta
n6out___bit equ 5
n6_out_bit equ 5
n6out_mask equ 32
        ; line_number = 65
        ;  pin 8 = ground
        ; line_number = 66
        ;  pin 9 = osc1
        ; line_number = 67
        ;  pin 10 = osc2
        ; line_number = 68
        ;  pin 11 = rc0_in, name = n9in, bit = n9in_bit, mask = n9in_mask
n9in___byte equ _portc
n9in___bit equ 0
n9in_bit equ 0
n9in_mask equ 1
        ; line_number = 69
        ;  pin 12 = rc1_out, name = n9out, bit = n9out_bit, mask = n9out_mask
n9out___byte equ _portc
n9out___bit equ 1
n9out_bit equ 1
n9out_mask equ 2
        ; line_number = 70
        ;  pin 13 = rc2_in, name = n8in, bit = n8in_bit, mask = n8in_mask
n8in___byte equ _portc
n8in___bit equ 2
n8in_bit equ 2
n8in_mask equ 4
        ; line_number = 71
        ;  pin 14 = rc3_in, name = n10in, bit = n10in_bit, mask = n10in_mask
n10in___byte equ _portc
n10in___bit equ 3
n10in_bit equ 3
n10in_mask equ 8
        ; line_number = 72
        ;  pin 15 = rc4_out, name = n10out, bit = n10out_bit, mask = n10out_mask
n10out___byte equ _portc
n10out___bit equ 4
n10out_bit equ 4
n10out_mask equ 16
        ; line_number = 73
        ;  pin 16 = rc5_out, name = n8out, bit = n8out_bit, mask = n8out_mask
n8out___byte equ _portc
n8out___bit equ 5
n8out_bit equ 5
n8out_mask equ 32
        ; line_number = 74
        ;  pin 17 = rc6_out, name = n11out, bit = n11out_bit, mask = n11out_mask
n11out___byte equ _portc
n11out___bit equ 6
n11out_bit equ 6
n11out_mask equ 64
        ; line_number = 75
        ;  pin 18 = rc7_in, name = n11in, bit = n11in_bit, mask = n11in_mask
n11in___byte equ _portc
n11in___bit equ 7
n11in_bit equ 7
n11in_mask equ 128
        ; line_number = 76
        ;  pin 19 = ground2
        ; line_number = 77
        ;  pin 20 = power_supply
        ; line_number = 78
        ;  pin 21 = rb0_in, name = n7in, bit = n7in_bit, mask = n7in_mask
n7in___byte equ _portb
n7in___bit equ 0
n7in_bit equ 0
n7in_mask equ 1
        ; line_number = 79
        ;  pin 22 = rb1_out, name = n7out, bit = n7_out_bit, mask = n7out_mask
n7out___byte equ _portb
n7out___bit equ 1
n7_out_bit equ 1
n7out_mask equ 2
        ; line_number = 80
        ;  pin 23 = rb2_in, name = n5in, bit = n5in_bit, mask = n5in_mask
n5in___byte equ _portb
n5in___bit equ 2
n5in_bit equ 2
n5in_mask equ 4
        ; line_number = 81
        ;  pin 24 = rb3_out, name = n5out, bit = n5out_bit, mask = n5out_mask
n5out___byte equ _portb
n5out___bit equ 3
n5out_bit equ 3
n5out_mask equ 8
        ; line_number = 82
        ;  pin 25 = rb4_in, name = n3in, bit = n3in_bit, mask = n3in_mask
n3in___byte equ _portb
n3in___bit equ 4
n3in_bit equ 4
n3in_mask equ 16
        ; line_number = 83
        ;  pin 26 = rb5_out, name = n3out, bit = n3out_bit, mask = n3out_mask
n3out___byte equ _portb
n3out___bit equ 5
n3out_bit equ 5
n3out_mask equ 32
        ; line_number = 84
        ;  pin 27 = rb6_in, name = n1in, bit = n1in_bit, mask = n1in_mask
n1in___byte equ _portb
n1in___bit equ 6
n1in_bit equ 6
n1in_mask equ 64
        ; line_number = 85
        ;  pin 28 = rb7_out, name = n1out, bit = n1out_bit, mask = n1out_mask
n1out___byte equ _portb
n1out___bit equ 7
n1out_bit equ 7
n1out_mask equ 128

        ; # The tether is expected on connector N1:
        ; #constant tether_socket = n1
        ; line_number = 89
        ; constant tether_socket = n1
tether_socket equ 0

        ; # Some general constants:
        ; line_number = 92
        ; constant ascii_mask = 0x7f
ascii_mask equ 127
        ; line_number = 93
        ; constant tab = 8
tab equ 8
        ; line_number = 94
        ; constant line_feed = 10
line_feed equ 10
        ; line_number = 95
        ; constant carriage_return = 13
carriage_return equ 13
        ; line_number = 96
        ; constant space = 32
space equ 32
        ; line_number = 97
        ; constant register_mask = 0x7f
register_mask equ 127

        ; # Stome timing constants:
        ; line_number = 100
        ; constant baud_rate = 2400
baud_rate equ 2400
        ; line_number = 101
        ; constant instructions_per_bit = instruction_rate / baud_rate
instructions_per_bit equ 2083
        ; line_number = 102
        ; constant delays_per_bit = 3
delays_per_bit equ 3
        ; line_number = 103
        ; constant instructions_per_delay = instructions_per_bit / delays_per_bit
instructions_per_delay equ 694
        ; line_number = 104
        ; constant extra_delay_instructions = 8
extra_delay_instructions equ 8
        ; line_number = 105
        ; constant extra_bit_instructions = extra_delay_instructions * delays_per_bit
extra_bit_instructions equ 24
        ; line_number = 106
        ; constant delay_instructions = instructions_per_delay - extra_delay_instructions
delay_instructions equ 686

        ; # The null pulse that comes back from a clock pulse command is supposed to be
        ; # exactly 9 bits long.  9 bits at 2400 baud is 9/2400 = 3.75mS.  The number
        ; # iterations through the loop is 3.75mS / (number of instructions per iteration.)
        ; line_number = 111
        ; constant nine_bits_instructions = (clock_rate * 9) / (4 * baud_rate)
nine_bits_instructions equ 18750
        ; line_number = 112
        ; constant instructions_per_iteration = 13
instructions_per_iteration equ 13
        ; line_number = 113
        ; constant iterations_for_nine_bits = nine_bits_instructions / instructions_per_iteration
iterations_for_nine_bits equ 1442
        ; line_number = 114
        ; constant iterations_high = iterations_for_nine_bits / 256
iterations_high equ 5
        ; line_number = 115
        ; constant iterations_low = iterations_for_nine_bits - (iterations_high * 256)
iterations_low equ 162

        ; line_number = 117
        ; origin 0
        org     0

        ; line_number = 119
        ; procedure start
start:
        ; arguments_none
        ; line_number = 121
        ;  returns_nothing

        ; # This procedure will transfer control to the boot loader {main}.

        ; before procedure statements delay=non-uniform, bit states=(data:00=>00 code:00=>00)
        ; line_number = 125
        ;  call main()
        bsf     __cb0___byte, __cb0___bit
        bsf     __cb1___byte, __cb1___bit
        call    main


        ; delay after procedure statements=non-uniform
        ; Implied return
        bcf     __cb0___byte, __cb0___bit
        bcf     __cb1___byte, __cb1___bit
        retlw   0




        ; line_number = 128
        ; constant program_origin = 8
program_origin equ 8
        ; line_number = 129
        ; origin program_origin
        org     8

        ; line_number = 131
        ; procedure program
program:
        ; arguments_none
        ; line_number = 133
        ;  returns_nothing

        ; # Dummy program that does nothing:

        ; before procedure statements delay=non-uniform, bit states=(data:00=>00 code:00=>00)
        ; delay after procedure statements=non-uniform
        ; Implied return
        retlw   0




        ; line_number = 138
        ; constant buffer_size = 8
buffer_size equ 8
        ; line_number = 139
        ; constant block_size = 4
block_size equ 4
        ; line_number = 140
        ; global block_highs[buffer_size] array[byte]
block_highs equ globals___2
        ; line_number = 141
        ; global block_lows[buffer_size] array[byte]
block_lows equ globals___2+8
        ; line_number = 142
        ; global buffer_highs[buffer_size] array[byte]
buffer_highs equ globals___2+16
        ; line_number = 143
        ; global buffer_lows[buffer_size] array[byte]
buffer_lows equ globals___2+24

        ; line_number = 145
        ; constant boot_loader_origin = 0x1800
boot_loader_origin equ 6144
        ; line_number = 146
        ; origin boot_loader_origin
        ; Code bank 1; Start address: 2048; End address: 4095
        org     2048
        ; Code bank 2; Start address: 4096; End address: 6143
        org     4096
        ; Code bank 3; Start address: 6144; End address: 8191
        org     6144
        org     6144

        ; line_number = 149
        ; register_array bank01[256] = 0
bank01 equ 0
        ; line_number = 150
        ; register_array bank23[256] = 0x100
bank23 equ 256
        ; line_number = 151
        ; register_array ports[3] = 5
ports equ 5

        ; line_number = 153
        ; constant id_reset = 0xfd
id_reset equ 253
        ; line_number = 154
        ; constant id_next = 0xfc
id_next equ 252

        ; # Global variables:

        ; # In general, I don't like gobal error registers, but for this
        ; # application, I think a global one works best:
        ; line_number = 160
        ; global ok bit
ok___byte equ globals___0+79
ok___bit equ 0
        ; line_number = 161
        ; global have_carriage_return bit
have_carriage_return___byte equ globals___0+79
have_carriage_return___bit equ 1

        ; # I/O registers:
        ; line_number = 164
        ; global in_mask byte
in_mask equ globals___0
        ; line_number = 165
        ; global in_out_register byte
in_out_register equ globals___0+1
        ; line_number = 166
        ; global out_mask byte
out_mask equ globals___0+2
        ; line_number = 167
        ; global receiving bit
receiving___byte equ globals___0+79
receiving___bit equ 2

        ; line_number = 169
        ; global sleep_count byte
sleep_count equ globals___0+3

        ; line_number = 171
        ; procedure main
main:
        ; Initialize some registers
        clrf    _adcon0
        movlw   7
        bsf     __rp0___byte, __rp0___bit
        movwf   _adcon1
        movlw   21
        movwf   _trisa
        movlw   85
        movwf   _trisb
        movlw   141
        movwf   _trisc
        ; arguments_none
        ; line_number = 173
        ;  returns_nothing

        ; line_number = 175
        ;  local address_high byte
main__address_high equ globals___0+4
        ; line_number = 176
        ;  local address_low byte
main__address_low equ globals___0+5
        ; line_number = 177
        ;  local block_index byte
main__block_index equ globals___0+6
        ; line_number = 178
        ;  local buffer_index byte
main__buffer_index equ globals___0+7
        ; line_number = 179
        ;  local buffer_size byte
main__buffer_size equ globals___0+8
        ; line_number = 180
        ;  local byte byte
main__byte equ globals___0+9
        ; line_number = 181
        ;  local check_sum byte
main__check_sum equ globals___0+10
        ; line_number = 182
        ;  local chr byte
main__chr equ globals___0+11
        ; line_number = 183
        ;  local command byte
main__command equ globals___0+12
        ; line_number = 184
        ;  local count byte
main__count equ globals___0+13
        ; line_number = 185
        ;  local errors byte
main__errors equ globals___0+14
        ; line_number = 186
        ;  local error_high byte
main__error_high equ globals___0+15
        ; line_number = 187
        ;  local error_low byte
main__error_low equ globals___0+16
        ; line_number = 188
        ;  local index byte
main__index equ globals___0+17
        ; line_number = 189
        ;  local length byte
main__length equ globals___0+18
        ; line_number = 190
        ;  local more bit
main__more___byte equ globals___0+79
main__more___bit equ 3
        ; line_number = 191
        ;  local return1 byte
main__return1 equ globals___0+19
        ; line_number = 192
        ;  local return2 byte
main__return2 equ globals___0+20
        ; line_number = 193
        ;  local socket byte
main__socket equ globals___0+21
        ; line_number = 194
        ;  local type byte
main__type equ globals___0+22

        ; # Turn of general interrupts:
        ; before procedure statements delay=non-uniform, bit states=(data:00=>01 code:11=>11)
        ; line_number = 197
        ;  _gie := 0
        bcf     _gie___byte, _gie___bit

        ; # Initilize serial port:

        ; # Do Baud Rate selection and asynch. serial port enable:
        ; # Prescaler = low:
        ; line_number = 203
        ;  _brgh := 1
        bsf     _brgh___byte, _brgh___bit
        ; # Baud rate = 19200 Baud:
        ; line_number = 205
        ;  _spbrg := 64
        movlw   64
        movwf   _spbrg
        ; # Asynchronous mode:
        ; line_number = 207
        ;  _sync := 0
        bcf     _sync___byte, _sync___bit
        ; # Serial port enable:
        ; line_number = 209
        ;  _spen := 1
        bcf     __rp0___byte, __rp0___bit
        bsf     _spen___byte, _spen___bit
        ; line_number = 210
        ;  _txif := 0
        bcf     _txif___byte, _txif___bit

        ; # Enable the transmitter:
        ; # 8-bit mode:
        ; line_number = 214
        ;  _tx9 := 0
        bsf     __rp0___byte, __rp0___bit
        bcf     _tx9___byte, _tx9___bit
        ; # Enable transmitter:
        ; line_number = 216
        ;  _txen := 1
        bsf     _txen___byte, _txen___bit

        ; # Enable the receiver:
        ; # 8-bit mode:
        ; line_number = 220
        ;  _rx9 := 0
        bcf     __rp0___byte, __rp0___bit
        bcf     _rx9___byte, _rx9___bit
        ; # Disable address:
        ; line_number = 222
        ;  _adden := 0
        bcf     _adden___byte, _adden___bit
        ; # Continuous receive enable:
        ; line_number = 224
        ;  _cren := 1
        bsf     _cren___byte, _cren___bit
        ; # Serial receive enable:
        ; line_number = 226
        ;  _sren := 1
        bsf     _sren___byte, _sren___bit

        ; # Initialize all of the serial outs:
        ; line_number = 229
        ;  n1out := 1
        bsf     n1out___byte, n1out___bit
        ; line_number = 230
        ;  n2out := 1
        bsf     n2out___byte, n2out___bit
        ; line_number = 231
        ;  n3out := 1
        bsf     n3out___byte, n3out___bit
        ; line_number = 232
        ;  n4out := 1
        bsf     n4out___byte, n4out___bit
        ; line_number = 233
        ;  n5out := 1
        bsf     n5out___byte, n5out___bit
        ; line_number = 234
        ;  n6out := 1
        bsf     n6out___byte, n6out___bit
        ; line_number = 235
        ;  n7out := 1
        bsf     n7out___byte, n7out___bit
        ; line_number = 236
        ;  n8out := 1
        bsf     n8out___byte, n8out___bit
        ; line_number = 237
        ;  n9out := 1
        bsf     n9out___byte, n9out___bit
        ; line_number = 238
        ;  n10out := 1
        bsf     n10out___byte, n10out___bit

        ; #call put_character('H')
        ; #call put_character('i')
        ; #call put_character('!')
        ; #call put_character('\r\')
        ; #call put_character('\n\')

        ; # Print out a hello message:
        ; line_number = 247
        ;  index := 0
        movlw   0
        movwf   main__index
        ; line_number = 248
        ;  while index < hello.size start
main__1:
        movlw   13
        subwf   main__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=5 true_test=false body_code.delay=0 (non-uniform delay)
        btfsc   __c___byte, __c___bit
        goto    main__2
        ; line_number = 249
        ; call put_character(hello[index])
        movf    main__index,w
        call    hello
        call    put_character
        ; line_number = 250
        ;  index := index + 1
        incf    main__index,f

        goto    main__1
main__2:
        ; Recombine size1 = 0 || size2 = 0
        ; code.delay=4294967295 back_code.delay=4294967295
        ; <=bit_code_emit@symbol; sym=__c (data:00=>00 code:11=>11)
        ; line_number = 248
        ;  while index < hello.size done
        ; #if seconds_sleep(4)
        ; #	call put_crlf()
        ; #
        ; #	call execute()

        ; #call put_byte(0x11, n10)
        ; #call put_byte(0xa0, n10)

        ; line_number = 260
        ;  socket := n1
        clrf    main__socket

        ; # Command loop:
        ; #call put_crlf()
        ; line_number = 264
        ;  loop_forever start
main__3:
        ; # Output a prompt:
        ; line_number = 266
        ;  call put_character('>')
        movlw   62
        call    put_character

        ; # Go fetch a command character:
        ; line_number = 269
        ;  have_carriage_return := 0
        bcf     have_carriage_return___byte, have_carriage_return___bit
        ; line_number = 270
        ;  ok := 1
        bsf     ok___byte, ok___bit
        ; line_number = 271
        ;  command := get_character()
        call    get_character
        movwf   main__command

        ; # Dispatch on command character:
        ; line_number = 274
        ;  if command = 'C' start
        ; Left minus Right
        movlw   189
        addwf   main__command,w
        ; (after recombine) true_delay=non-uniform, false_delay=non-uniform
        ; CASE: true_code_size > 1 && false_code_size > 1
        ; true_code_size=9 false_code_size=584
        btfss   __z___byte, __z___bit
        goto    main__79
        ; line_number = 275
        ; byte := get_hex_byte()
        call    get_hex_byte
        movwf   main__byte
        ; line_number = 276
        ;  if get_carriage_return() start
        call    get_carriage_return
        ; (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   get_carriage_return__0return___byte, get_carriage_return__0return___bit
        goto    main__78
        ; line_number = 277
        ; call clock_adjust(byte, socket)
        movf    main__byte,w
        movwf   clock_adjust__adjust
        movf    main__socket,w
        call    clock_adjust
        ; Recombine size1 = 0 || size2 = 0
main__78:
        ; code.delay=4294967295 back_code.delay=4294967295
        ; <=bit_code_emit@symbol; sym=get_carriage_return__0return (data:00=>00 code:11=>11)
        ; line_number = 276
        ;  if get_carriage_return() done
        goto    main__80
main__79:
        ; line_number = 278
        ; Left minus Right
        movlw   187
        addwf   main__command,w
        ; (after recombine) true_delay=non-uniform, false_delay=non-uniform
        ; CASE: true_code_size > 1 && false_code_size > 1
        ; true_code_size=34 false_code_size=545
        btfss   __z___byte, __z___bit
        goto    main__76
        ; # Examine data memory command:
        ; line_number = 280
        ;  address_high := get_hex_byte()
        call    get_hex_byte
        movwf   main__address_high
        ; line_number = 281
        ;  address_low := get_hex_byte()
        call    get_hex_byte
        movwf   main__address_low
        ; line_number = 282
        ;  count := get_hex_byte()
        call    get_hex_byte
        movwf   main__count
        ; line_number = 283
        ;  if get_carriage_return() start
        call    get_carriage_return
        ; (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=25 true_test=true body_code.delay=0 (non-uniform delay)
        btfss   get_carriage_return__0return___byte, get_carriage_return__0return___bit
        goto    main__75
        ; line_number = 284
        ; loop_exactly count start
main__71 equ globals___0+69
        movf    main__count,w
        movwf   main__71
main__72:
        ; line_number = 285
        ; if address_high = 0 start
        ; Left minus Right
        movf    main__address_high,w
        ; (after recombine) true_delay=non-uniform, false_delay=non-uniform
        ; CASE: true_code_size > 1 && false_code_size > 1
        ; true_code_size=6 false_code_size=6
        btfss   __z___byte, __z___bit
        goto    main__73
        ; line_number = 286
        ; byte := bank01[address_low]
        movf    main__address_low,w
        addlw   bank01
        movwf   __fsr
        bcf     __irp___byte, __irp___bit
        movf    __indf,w
        movwf   main__byte
        goto    main__74
main__73:
        ; line_number = 288
        ; byte := bank23[address_low]
        movf    main__address_low,w
        addlw   bank23
        movwf   __fsr
        bsf     __irp___byte, __irp___bit
        movf    __indf,w
        movwf   main__byte
main__74:
        ; code.delay=4294967295 back_code.delay=4294967295
        ; <=bit_code_emit@symbol; sym=__z (data:00=>00 code:11=>11)
        ; line_number = 285
        ; if address_high = 0 done
        ; line_number = 289
        ; call put_hex_byte(byte)
        movf    main__byte,w
        call    put_hex_byte
        ; line_number = 290
        ;  call put_space()
        call    put_space
        ; line_number = 291
        ;  address_low := address_low + 1
        incf    main__address_low,f
        ; line_number = 292
        ;  if _z start
        ; (after recombine) true_delay=non-uniform, false_delay=non-uniform
        ; CASE: True.size=1 False.size=0
        btfsc   _z___byte, _z___bit
        ; line_number = 293
        ; address_high := address_high + 1
        incf    main__address_high,f
        ; Recombine size1 = 0 || size2 = 0
        ; code.delay=4294967295 back_code.delay=4294967295
        ; <=bit_code_emit@symbol; sym=_z (data:00=>00 code:11=>11)
        ; line_number = 292
        ;  if _z done
        ; line_number = 284
        ; loop_exactly count wrap-up
        decfsz  main__71,f
        goto    main__72
        ; line_number = 284
        ; loop_exactly count done
        ; line_number = 294
        ; call put_crlf()
        call    put_crlf
        ; Recombine size1 = 0 || size2 = 0
main__75:
        ; code.delay=4294967295 back_code.delay=4294967295
        ; <=bit_code_emit@symbol; sym=get_carriage_return__0return (data:00=>00 code:11=>11)
        ; line_number = 283
        ;  if get_carriage_return() done
        goto    main__77
main__76:
        ; line_number = 295
        ; Left minus Right
        movlw   185
        addwf   main__command,w
        ; (after recombine) true_delay=non-uniform, false_delay=non-uniform
        ; CASE: true.size=1 false.size>1; no GOTO
        btfss   __z___byte, __z___bit
        goto    main__69
        ; # Goto command:
        ; line_number = 297
        ;  call goto_command()
        call    goto_command
        goto    main__70
main__69:
        ; line_number = 298
        ; Left minus Right
        movlw   183
        addwf   main__command,w
        ; (after recombine) true_delay=non-uniform, false_delay=non-uniform
        ; CASE: true_code_size > 1 && false_code_size > 1
        ; true_code_size=17 false_code_size=517
        btfss   __z___byte, __z___bit
        goto    main__67
        ; line_number = 299
        ; if get_carriage_return() start
        call    get_carriage_return
        ; (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=14 true_test=true body_code.delay=0 (non-uniform delay)
        btfss   get_carriage_return__0return___byte, get_carriage_return__0return___bit
        goto    main__66
        ; line_number = 300
        ; call put_byte(id_reset, socket)
        movlw   253
        movwf   put_byte__character
        movf    main__socket,w
        call    put_byte
        ; line_number = 301
        ;  call id8(socket)
        movf    main__socket,w
        call    id8
        ; line_number = 302
        ;  call id8(socket)
        movf    main__socket,w
        call    id8
        ; line_number = 303
        ;  call id8(socket)
        movf    main__socket,w
        call    id8
        ; line_number = 304
        ;  call id_string(socket)
        movf    main__socket,w
        call    id_string
        ; line_number = 305
        ;  call id_string(socket)
        movf    main__socket,w
        call    id_string
        ; Recombine size1 = 0 || size2 = 0
main__66:
        ; code.delay=4294967295 back_code.delay=4294967295
        ; <=bit_code_emit@symbol; sym=get_carriage_return__0return (data:00=>00 code:11=>11)
        ; line_number = 299
        ; if get_carriage_return() done
        goto    main__68
main__67:
        ; line_number = 306
        ; Left minus Right
        movlw   181
        addwf   main__command,w
        ; (after recombine) true_delay=non-uniform, false_delay=non-uniform
        ; CASE: true_code_size > 1 && false_code_size > 1
        ; true_code_size=16 false_code_size=496
        btfss   __z___byte, __z___bit
        goto    main__64
        ; line_number = 307
        ; byte := get_hex_nibble()
        call    get_hex_nibble
        movwf   main__byte
        ; line_number = 308
        ;  if byte = 0 || byte > 10 start
        ; Left minus Right
        movf    main__byte,w
        ; (after recombine) true_delay=non-uniform, false_delay=non-uniform
        ; CASE: true.size=1 false.size>1; true=GOTO
        btfsc   __z___byte, __z___bit
        goto    main__62
        ; &&||: index=1 true_delay=4294967295 false_delay=4294967295 goto_delay=4294967295
        movlw   10
        subwf   main__byte,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
main__62:
        ; line_number = 309
        ; ok := 0
        bcf     ok___byte, ok___bit
        ; Recombine size1 = 0 || size2 = 0
        ; code.delay=4294967295 back_code.delay=4294967295
        ; <=bit_code_emit@symbol; sym=__c (data:XX=>XX code:11=>11)
        ; &&||: index=0 true_delay=4294967295 false_delay=4294967295 goto_delay=4294967295
        ; &&||:: index=0 new_delay=4294967295 goto_delay=4294967295
        ; code.delay=4294967295 back_code.delay=4294967295
        ; <=bit_code_emit@symbol; sym=__z (data:XX=>XX code:11=>11)
        ; line_number = 308
        ;  if byte = 0 || byte > 10 done
        ; line_number = 310
        ; if get_carriage_return() start
        call    get_carriage_return
        ; (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   get_carriage_return__0return___byte, get_carriage_return__0return___bit
        goto    main__63
        ; line_number = 311
        ; socket := byte - 1
        decf    main__byte,w
        movwf   main__socket
        ; Recombine size1 = 0 || size2 = 0
main__63:
        ; code.delay=4294967295 back_code.delay=4294967295
        ; <=bit_code_emit@symbol; sym=get_carriage_return__0return (data:00=>00 code:11=>11)
        ; line_number = 310
        ; if get_carriage_return() done
        goto    main__65
main__64:
        ; line_number = 312
        ; Left minus Right
        movlw   176
        addwf   main__command,w
        ; (after recombine) true_delay=non-uniform, false_delay=non-uniform
        ; CASE: true_code_size > 1 && false_code_size > 1
        ; true_code_size=51 false_code_size=440
        btfss   __z___byte, __z___bit
        goto    main__60
        ; # Print a page of memory:
        ; line_number = 314
        ;  _eeadrh := get_hex_byte()
        call    get_hex_byte
        bsf     __rp1___byte, __rp1___bit
        movwf   _eeadrh
        ; line_number = 315
        ;  if get_carriage_return() start
        bcf     __rp1___byte, __rp1___bit
        call    get_carriage_return
        ; (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=44 true_test=true body_code.delay=0 (non-uniform delay)
        btfss   get_carriage_return__0return___byte, get_carriage_return__0return___bit
        goto    main__59
        ; line_number = 316
        ; index := 0
        movlw   0
        movwf   main__index
        ; line_number = 317
        ;  more := 1
        bsf     main__more___byte, main__more___bit
        ; line_number = 318
        ;  while more start
main__56:
        ; (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=39 true_test=true body_code.delay=0 (non-uniform delay)
        btfss   main__more___byte, main__more___bit
        goto    main__58
        ; line_number = 319
        ; if index & 7 = 0 start
        ; Left minus Right
        movlw   7
        andwf   main__index,w
        ; (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=7 true_test=true body_code.delay=0 (non-uniform delay)
        btfss   __z___byte, __z___bit
        goto    main__57
        bsf     __rp1___byte, __rp1___bit
        ; # Display the address:
        ; line_number = 321
        ;  call put_hex_byte(_eeadrh)
        movf    _eeadrh,w
        bcf     __rp1___byte, __rp1___bit
        call    put_hex_byte
        ; line_number = 322
        ;  call put_hex_byte(index)
        movf    main__index,w
        call    put_hex_byte
        ; line_number = 323
        ;  call put_character(':')
        movlw   58
        call    put_character

        ; Recombine size1 = 0 || size2 = 0
main__57:
        ; code.delay=4294967295 back_code.delay=4294967295
        ; <=bit_code_emit@symbol; sym=__z (data:00=>00 code:11=>11)
        ; line_number = 319
        ; if index & 7 = 0 done
        ; # Read the word:
        ; line_number = 326
        ;  _eeadr := index
        movf    main__index,w
        bsf     __rp1___byte, __rp1___bit
        movwf   _eeadr
        ; line_number = 327
        ;  _eepgd := 1
        bsf     __rp0___byte, __rp0___bit
        bsf     _eepgd___byte, _eepgd___bit
        ; line_number = 328
        ;  _rd := 1
        bsf     _rd___byte, _rd___bit
        ; # The next two instructions are *ignored*:
        ; line_number = 330
        ;  assemble
        ; line_number = 331
        nop     
        ; line_number = 332
        nop     

        ; # Display the word:
        ; line_number = 335
        ;  call put_space()
        bcf     __rp0___byte, __rp0___bit
        bcf     __rp1___byte, __rp1___bit
        call    put_space
        ; line_number = 336
        ;  call put_hex_byte(_eedath)
        bsf     __rp1___byte, __rp1___bit
        movf    _eedath,w
        bcf     __rp1___byte, __rp1___bit
        call    put_hex_byte
        ; line_number = 337
        ;  call put_hex_byte(_eedata)
        bsf     __rp1___byte, __rp1___bit
        movf    _eedata,w
        bcf     __rp1___byte, __rp1___bit
        call    put_hex_byte

        ; # Bump to next address in page:
        ; line_number = 340
        ;  index := index + 1
        incf    main__index,f
        ; line_number = 341
        ;  if _z start
        ; (after recombine) true_delay=non-uniform, false_delay=non-uniform
        ; CASE: True.size=1 False.size=0
        btfsc   _z___byte, _z___bit
        ; line_number = 342
        ; more := 0
        bcf     main__more___byte, main__more___bit
        ; Recombine size1 = 0 || size2 = 0
        ; code.delay=4294967295 back_code.delay=4294967295
        ; <=bit_code_emit@symbol; sym=_z (data:00=>00 code:11=>11)
        ; line_number = 341
        ;  if _z done
        ; line_number = 343
        ; if index & 7 = 0 start
        ; Left minus Right
        movlw   7
        andwf   main__index,w
        ; (after recombine) true_delay=non-uniform, false_delay=non-uniform
        ; CASE: True.size=1 False.size=0
        btfsc   __z___byte, __z___bit
        ; line_number = 344
        ; call put_crlf()
        call    put_crlf
        ; Recombine size1 = 0 || size2 = 0
        ; code.delay=4294967295 back_code.delay=4294967295
        ; <=bit_code_emit@symbol; sym=__z (data:00=>00 code:11=>11)
        ; line_number = 343
        ; if index & 7 = 0 done
        goto    main__56
        ; Recombine size1 = 0 || size2 = 0
main__58:
        ; code.delay=4294967295 back_code.delay=4294967295
        ; <=bit_code_emit@symbol; sym=main__more (data:00=>00 code:11=>11)
        ; line_number = 318
        ;  while more done
        ; Recombine size1 = 0 || size2 = 0
main__59:
        ; code.delay=4294967295 back_code.delay=4294967295
        ; <=bit_code_emit@symbol; sym=get_carriage_return__0return (data:00=>00 code:11=>11)
        ; line_number = 315
        ;  if get_carriage_return() done
        goto    main__61
main__60:
        ; line_number = 345
        ; Left minus Right
        movlw   174
        addwf   main__command,w
        ; (after recombine) true_delay=non-uniform, false_delay=non-uniform
        ; CASE: true_code_size > 1 && false_code_size > 1
        ; true_code_size=21 false_code_size=414
        btfss   __z___byte, __z___bit
        goto    main__54
        ; # Send a command to a RoboBrick:
        ; line_number = 347
        ;  byte := get_hex_byte()
        call    get_hex_byte
        movwf   main__byte
        ; line_number = 348
        ;  if get_carriage_return() start
        call    get_carriage_return
        ; (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=16 true_test=true body_code.delay=0 (non-uniform delay)
        btfss   get_carriage_return__0return___byte, get_carriage_return__0return___bit
        goto    main__53
        ; line_number = 349
        ; call put_byte(byte, socket)
        movf    main__byte,w
        movwf   put_byte__character
        movf    main__socket,w
        call    put_byte
        ; line_number = 350
        ;  return1 := get_byte(socket)
        movf    main__socket,w
        call    get_byte
        movwf   main__return1
        ; line_number = 351
        ;  return2 := get_byte(socket)
        movf    main__socket,w
        call    get_byte
        movwf   main__return2
        ; line_number = 352
        ;  call put_hex_byte(return1)
        movf    main__return1,w
        call    put_hex_byte
        ; line_number = 353
        ;  call put_space()
        call    put_space
        ; line_number = 354
        ;  call put_hex_byte(return2)
        movf    main__return2,w
        call    put_hex_byte
        ; line_number = 355
        ;  call put_crlf()
        call    put_crlf
        ; Recombine size1 = 0 || size2 = 0
main__53:
        ; code.delay=4294967295 back_code.delay=4294967295
        ; <=bit_code_emit@symbol; sym=get_carriage_return__0return (data:00=>00 code:11=>11)
        ; line_number = 348
        ;  if get_carriage_return() done
        goto    main__55
main__54:
        ; line_number = 356
        ; Left minus Right
        movlw   173
        addwf   main__command,w
        ; (after recombine) true_delay=non-uniform, false_delay=non-uniform
        ; CASE: true_code_size > 1 && false_code_size > 1
        ; true_code_size=25 false_code_size=384
        btfss   __z___byte, __z___bit
        goto    main__51
        ; # Store data memory command:
        ; line_number = 358
        ;  address_high := get_hex_byte()
        call    get_hex_byte
        movwf   main__address_high
        ; line_number = 359
        ;  address_low := get_hex_byte()
        call    get_hex_byte
        movwf   main__address_low
        ; line_number = 360
        ;  byte := get_hex_byte()
        call    get_hex_byte
        movwf   main__byte
        ; line_number = 361
        ;  if get_carriage_return() start
        call    get_carriage_return
        ; (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=16 true_test=true body_code.delay=0 (non-uniform delay)
        btfss   get_carriage_return__0return___byte, get_carriage_return__0return___bit
        goto    main__50
        ; line_number = 362
        ; if (address_high = 0) start
        ; Left minus Right
        movf    main__address_high,w
        ; (after recombine) true_delay=non-uniform, false_delay=non-uniform
        ; CASE: true_code_size > 1 && false_code_size > 1
        ; true_code_size=6 false_code_size=6
        btfss   __z___byte, __z___bit
        goto    main__48
        ; line_number = 363
        ; bank01[address_low] := byte
        ; index_fsr_first
        movf    main__address_low,w
        addlw   bank01
        movwf   __fsr
        bcf     __irp___byte, __irp___bit
        movf    main__byte,w
        movwf   __indf
        goto    main__49
main__48:
        ; line_number = 365
        ; bank23[address_low] := byte
        ; index_fsr_first
        movf    main__address_low,w
        addlw   bank23
        movwf   __fsr
        bsf     __irp___byte, __irp___bit
        movf    main__byte,w
        movwf   __indf
main__49:
        ; code.delay=4294967295 back_code.delay=4294967295
        ; <=bit_code_emit@symbol; sym=__z (data:00=>00 code:11=>11)
        ; line_number = 362
        ; if (address_high = 0) done
        ; Recombine size1 = 0 || size2 = 0
main__50:
        ; code.delay=4294967295 back_code.delay=4294967295
        ; <=bit_code_emit@symbol; sym=get_carriage_return__0return (data:00=>00 code:11=>11)
        ; line_number = 361
        ;  if get_carriage_return() done
        goto    main__52
main__51:
        ; line_number = 366
        ; Left minus Right
        movlw   172
        addwf   main__command,w
        ; (after recombine) true_delay=non-uniform, false_delay=non-uniform
        ; CASE: true_code_size > 1 && false_code_size > 1
        ; true_code_size=5 false_code_size=374
        btfss   __z___byte, __z___bit
        goto    main__46
        ; line_number = 367
        ; loop_forever start
main__45:
        ; line_number = 368
        ; call put_byte('U', n2)
        movlw   85
        movwf   put_byte__character
        movlw   1
        call    put_byte
        ; line_number = 367
        ; loop_forever wrap-up
        goto    main__45
        ; line_number = 367
        ; loop_forever done
        goto    main__47
main__46:
        ; line_number = 369
        ; Left minus Right
        movlw   170
        addwf   main__command,w
        ; (after recombine) true_delay=non-uniform, false_delay=non-uniform
        ; CASE: true_code_size > 1 && false_code_size > 1
        ; true_code_size=10 false_code_size=359
        btfss   __z___byte, __z___bit
        goto    main__43
        ; line_number = 370
        ; if get_carriage_return() start
        call    get_carriage_return
        ; (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=7 true_test=true body_code.delay=0 (non-uniform delay)
        btfss   get_carriage_return__0return___byte, get_carriage_return__0return___bit
        goto    main__42
        ; line_number = 371
        ; call put_character('1')
        movlw   49
        call    put_character
        ; line_number = 372
        ;  call put_character('.')
        movlw   46
        call    put_character
        ; line_number = 373
        ;  call put_character('0')
        movlw   48
        call    put_character
        ; line_number = 374
        ;  call put_crlf()
        call    put_crlf
        ; Recombine size1 = 0 || size2 = 0
main__42:
        ; code.delay=4294967295 back_code.delay=4294967295
        ; <=bit_code_emit@symbol; sym=get_carriage_return__0return (data:00=>00 code:11=>11)
        ; line_number = 370
        ; if get_carriage_return() done
        goto    main__44
main__43:
        ; line_number = 375
        ; Left minus Right
        movlw   168
        addwf   main__command,w
        ; (after recombine) true_delay=non-uniform, false_delay=non-uniform
        ; CASE: true_code_size > 1 && false_code_size > 1
        ; true_code_size=3 false_code_size=351
        btfss   __z___byte, __z___bit
        goto    main__40
        ; line_number = 376
        ; if get_carriage_return() start
        call    get_carriage_return
        ; (after recombine) true_delay=non-uniform, false_delay=non-uniform
        ; CASE: True.size=1 False.size=0
        btfsc   get_carriage_return__0return___byte, get_carriage_return__0return___bit
        ; line_number = 377
        ; call execute()
        call    execute
        ; Recombine size1 = 0 || size2 = 0
        ; code.delay=4294967295 back_code.delay=4294967295
        ; <=bit_code_emit@symbol; sym=get_carriage_return__0return (data:00=>00 code:11=>11)
        ; line_number = 376
        ; if get_carriage_return() done
        goto    main__41
main__40:
        ; line_number = 378
        ; Left minus Right
        movlw   198
        addwf   main__command,w
        ; (after recombine) true_delay=non-uniform, false_delay=non-uniform
        ; CASE: true_code_size > 1 && false_code_size > 1
        ; true_code_size=338 false_code_size=8
        btfss   __z___byte, __z___bit
        goto    main__38
        ; # Hex command:
        ; line_number = 380
        ;  check_sum := 0
        movlw   0
        movwf   main__check_sum
        ; line_number = 381
        ;  length := get_hex_byte()
        call    get_hex_byte
        movwf   main__length
        ; line_number = 382
        ;  check_sum := check_sum + length
        movf    main__length,w
        addwf   main__check_sum,f
        ; line_number = 383
        ;  address_high := get_hex_byte()
        call    get_hex_byte
        movwf   main__address_high
        ; line_number = 384
        ;  check_sum := check_sum + address_high
        movf    main__address_high,w
        addwf   main__check_sum,f
        ; line_number = 385
        ;  address_low := get_hex_byte()
        call    get_hex_byte
        movwf   main__address_low
        ; line_number = 386
        ;  check_sum := check_sum + address_low
        movf    main__address_low,w
        addwf   main__check_sum,f
        ; line_number = 387
        ;  type := get_hex_byte()
        call    get_hex_byte
        movwf   main__type
        ; line_number = 388
        ;  check_sum := check_sum + type
        movf    main__type,w
        addwf   main__check_sum,f
        ; line_number = 389
        ;  index := 0
        movlw   0
        movwf   main__index
        ; line_number = 390
        ;  buffer_size := length >> 1
        rrf     main__length,w
        movwf   main__buffer_size
        bcf     main__buffer_size, 7
        ; line_number = 391
        ;  while index < buffer_size start
main__5:
        movf    main__buffer_size,w
        subwf   main__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=22 true_test=false body_code.delay=0 (non-uniform delay)
        btfsc   __c___byte, __c___bit
        goto    main__6
        ; line_number = 392
        ; byte := get_hex_byte()
        call    get_hex_byte
        movwf   main__byte
        ; line_number = 393
        ;  check_sum := check_sum + byte
        movf    main__byte,w
        addwf   main__check_sum,f
        ; line_number = 394
        ;  buffer_lows[index] := byte
        ; index_fsr_first
        movf    main__index,w
        addlw   buffer_lows
        movwf   __fsr
        bsf     __irp___byte, __irp___bit
        movf    main__byte,w
        movwf   __indf
        ; line_number = 395
        ;  byte := get_hex_byte()
        call    get_hex_byte
        movwf   main__byte
        ; line_number = 396
        ;  check_sum := check_sum + byte
        movf    main__byte,w
        addwf   main__check_sum,f
        ; line_number = 397
        ;  buffer_highs[index] := byte
        ; index_fsr_first
        movf    main__index,w
        addlw   buffer_highs
        movwf   __fsr
        bsf     __irp___byte, __irp___bit
        movf    main__byte,w
        movwf   __indf
        ; line_number = 398
        ;  index := index + 1
        incf    main__index,f
        goto    main__5
main__6:
        ; Recombine size1 = 0 || size2 = 0
        ; code.delay=4294967295 back_code.delay=4294967295
        ; <=bit_code_emit@symbol; sym=__c (data:00=>00 code:11=>11)
        ; line_number = 391
        ;  while index < buffer_size done
        ; line_number = 399
        ; check_sum := check_sum + get_hex_byte()
main__7 equ globals___0+69
        movf    main__check_sum,w
        movwf   main__7
        call    get_hex_byte
        addwf   main__7,w
        movwf   main__check_sum
        ; line_number = 400
        ;  if get_carriage_return() start
        call    get_carriage_return
        ; (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=281 true_test=true body_code.delay=0 (non-uniform delay)
        btfss   get_carriage_return__0return___byte, get_carriage_return__0return___bit
        goto    main__37
        ; # Command completed without error:

        ; # For debugging only:
        ; #call put_character('L')
        ; #call put_hex_byte(length)
        ; #call put_space()

        ; #call put_character('A')
        ; #call put_hex_byte(address_high)
        ; #call put_hex_byte(address_low)
        ; #call put_space()

        ; #call put_character('T')
        ; #call put_hex_byte(type)
        ; #call put_space()

        ; #index := 0
        ; #buffer_size := length >> 1
        ; #while index < buffer_size
        ; #    call put_character('[')
        ; #    call put_hex_nibble(index)
        ; #    call put_character(']')
        ; #    call put_hex_byte(buffer_highs[index])
        ; #    call put_hex_byte(buffer_lows[index])
        ; #    call put_space()
        ; #    index := index + 1		

        ; #call put_character('C')
        ; #call put_hex_byte(check_sum)
        ; #call put_crlf()

        ; line_number = 432
        ;  if check_sum = 0 start
        ; Left minus Right
        movf    main__check_sum,w
        ; (after recombine) true_delay=non-uniform, false_delay=non-uniform
        ; CASE: true_code_size > 1 && false_code_size > 1
        ; true_code_size=267 false_code_size=10
        btfss   __z___byte, __z___bit
        goto    main__35
        ; # Check sum is cool:
        ; # Address is off by a factor of 2:
        ; line_number = 435
        ;  address_low := address_low >> 1
        ; Assignment of variable to self (no code needed)
        rrf     main__address_low,f
        bcf     main__address_low, 7
        ; line_number = 436
        ;  if address_high@0 start
main__select__9___byte equ main__address_high
main__select__9___bit equ 0
        ; (after recombine) true_delay=non-uniform, false_delay=non-uniform
        ; CASE: True.size=1 False.size=0
        btfsc   main__select__9___byte, main__select__9___bit
        ; line_number = 437
        ; address_low@7 := 1
main__select__8___byte equ main__address_low
main__select__8___bit equ 7
        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=main__select__9 (data:00=>00 code:11=>11)
        ; line_number = 436
        ;  if address_high@0 done
        ; line_number = 438
        ; address_high := address_high >> 1
        ; Assignment of variable to self (no code needed)
        rrf     main__address_high,f
        bcf     main__address_high, 7

        ; # Only write data into "safe" pages:
        ; line_number = 441
        ;  if type = 1 start
        ; Left minus Right
        decf    main__type,w
        ; (after recombine) true_delay=non-uniform, false_delay=non-uniform
        ; CASE: true_code_size > 1 && false_code_size > 1
        ; true_code_size=20 false_code_size=237
        btfss   __z___byte, __z___bit
        goto    main__33
        ; line_number = 442
        ; call put_character('E')
        movlw   69
        call    put_character
        ; line_number = 443
        ;  call put_character('r')
        movlw   114
        call    put_character
        ; line_number = 444
        ;  call put_character('r')
        movlw   114
        call    put_character
        ; line_number = 445
        ;  call put_character('=')
        movlw   61
        call    put_character
        ; line_number = 446
        ;  call put_hex_byte(errors)
        movf    main__errors,w
        call    put_hex_byte
        ; line_number = 447
        ;  if errors != 0 start
        ; Left minus Right
        movf    main__errors,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=6 true_test=false body_code.delay=0 (non-uniform delay)
        btfsc   __z___byte, __z___bit
        goto    main__32
        ; line_number = 448
        ; call put_character('@')
        movlw   64
        call    put_character
        ; line_number = 449
        ;  call put_hex_byte(error_high)
        movf    main__error_high,w
        call    put_hex_byte
        ; line_number = 450
        ;  call put_hex_byte(error_low)
        movf    main__error_low,w
        call    put_hex_byte
main__32:
        ; Recombine size1 = 0 || size2 = 0
        ; code.delay=4294967295 back_code.delay=4294967295
        ; <=bit_code_emit@symbol; sym=__z (data:00=>00 code:11=>11)
        ; line_number = 447
        ;  if errors != 0 done
        ; line_number = 451
        ; call put_crlf()
        call    put_crlf
        ; Recombine code1_bit_states != code2_bit_states
        goto    main__34
main__33:
        ; line_number = 452
        ; Left minus Right
        movf    main__type,w
        ; (after recombine) true_delay=non-uniform, false_delay=non-uniform
        ; CASE: true.size>1 false.size=1; false=GOTO
        btfss   __z___byte, __z___bit
        goto    main__29
        ; &&||: index=1 true_delay=4294967295 false_delay=4294967295 goto_delay=4294967295
main__30 equ globals___0+69
        andlw   0
        subwf   main__address_high,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=230 true_test=false body_code.delay=0 (non-uniform delay)
        btfsc   __c___byte, __c___bit
        goto    main__31
        ; # Write data until the buffer is empty:
        ; line_number = 455
        ;  ok := 1
        bsf     ok___byte, ok___bit
        ; line_number = 456
        ;  if address_high = 0 && address_low & 0xfc = 0 start
        ; Left minus Right
        movf    main__address_high,w
        ; (after recombine) true_delay=non-uniform, false_delay=non-uniform
        ; CASE: true.size>1 false.size=1; false=GOTO
        btfss   __z___byte, __z___bit
        goto    main__10
        ; &&||: index=1 true_delay=4294967295 false_delay=4294967295 goto_delay=4294967295
        ; Left minus Right
        movlw   252
        andwf   main__address_low,w
        ; (after recombine) true_delay=non-uniform, false_delay=non-uniform
        ; CASE: True.size=1 False.size=0
        btfsc   __z___byte, __z___bit
        ; # Trying to modify first 4 words of flash;
        ; # This is not allowed:
        ; line_number = 459
        ;  ok := 0
        bcf     ok___byte, ok___bit
        ; Recombine code1_bit_states != code2_bit_states
main__10:
        ; code.delay=4294967295 back_code.delay=4294967295
        ; <=bit_code_emit@symbol; sym=__z (data:00=>00 code:11=>11)
        ; &&||: index=0 true_delay=4294967295 false_delay=4294967295 goto_delay=4294967295
        ; &&||:: index=0 new_delay=4294967295 goto_delay=4294967295
        ; Recombine code1_bit_states != code2_bit_states
        ; code.delay=4294967295 back_code.delay=4294967295
        ; <=bit_code_emit@symbol; sym=__z (data:00=>00 code:11=>11)
        ; line_number = 456
        ;  if address_high = 0 && address_low & 0xfc = 0 done
        ; line_number = 460
        ; index := 0
        movlw   0
        movwf   main__index
        ; line_number = 461
        ;  while index < buffer_size start
main__11:
        movf    main__buffer_size,w
        subwf   main__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=216 true_test=false body_code.delay=0 (non-uniform delay)
        btfsc   __c___byte, __c___bit
        goto    main__28
        ; # Read 4 word block from memory:
        ; line_number = 463
        ;  block_index := 0
        movlw   0
        movwf   main__block_index
        ; line_number = 464
        ;  _eeadrh := address_high
        movf    main__address_high,w
        bsf     __rp1___byte, __rp1___bit
        movwf   _eeadrh
        ; line_number = 465
        ;  _eeadr := address_low & 0xfc
        movlw   252
        bcf     __rp1___byte, __rp1___bit
        andwf   main__address_low,w
        bsf     __rp1___byte, __rp1___bit
        movwf   _eeadr
        ; line_number = 466
        ;  while block_index < block_size start
main__12:
        movlw   4
        bcf     __rp1___byte, __rp1___bit
        subwf   main__block_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=26 true_test=false body_code.delay=0 (non-uniform delay)
        btfsc   __c___byte, __c___bit
        goto    main__13
        ; line_number = 467
        ; _eepgd := 1
        bsf     _eepgd___byte, _eepgd___bit
        ; line_number = 468
        ;  _rd := 1
        bsf     _rd___byte, _rd___bit
        ; # The next two instructions are not executed:
        ; line_number = 470
        ;  assemble
        ; line_number = 471
        nop     
        ; line_number = 472
        nop     
        ; line_number = 473
        ; block_lows[block_index] := _eedata
        ; index_fsr_first
        bcf     __rp0___byte, __rp0___bit
        bcf     __rp1___byte, __rp1___bit
        movf    main__block_index,w
        addlw   block_lows
        movwf   __fsr
        bsf     __irp___byte, __irp___bit
        bsf     __rp1___byte, __rp1___bit
        movf    _eedata,w
        movwf   __indf
        ; line_number = 474
        ;  block_highs[block_index] := _eedath
        ; index_fsr_first
        bcf     __rp1___byte, __rp1___bit
        movf    main__block_index,w
        addlw   block_highs
        movwf   __fsr
        bsf     __irp___byte, __irp___bit
        bsf     __rp1___byte, __rp1___bit
        movf    _eedath,w
        movwf   __indf
        ; line_number = 475
        ;  block_index := block_index + 1
        bcf     __rp1___byte, __rp1___bit
        incf    main__block_index,f
        ; line_number = 476
        ;  _eeadr := _eeadr + 1
        bsf     __rp1___byte, __rp1___bit
        incf    _eeadr,f

        goto    main__12
main__13:
        ; Recombine size1 = 0 || size2 = 0
        ; code.delay=4294967295 back_code.delay=4294967295
        ; <=bit_code_emit@symbol; sym=__c (data:00=>10 code:11=>11)
        ; line_number = 466
        ;  while block_index < block_size done
        ; # Now transfer the data from buffer to block:
        ; line_number = 479
        ;  block_index := address_low & 3
        movlw   3
        bcf     __rp1___byte, __rp1___bit
        andwf   main__address_low,w
        movwf   main__block_index
        ; line_number = 480
        ;  buffer_index := index
        movf    main__index,w
        movwf   main__buffer_index
        ; line_number = 481
        ;  count := 0
        movlw   0
        movwf   main__count
        ; line_number = 482
        ;  while (block_index < block_size && buffer_index < buffer_size) start
main__14:
        movlw   4
        subwf   main__block_index,w
        ; (after recombine) true_delay=non-uniform, false_delay=non-uniform
        ; CASE: true.size=1 false.size>1; true=GOTO
        btfsc   __c___byte, __c___bit
        goto    main__18
        ; &&||: index=1 true_delay=4294967295 false_delay=4294967295 goto_delay=4294967295
        movf    main__buffer_size,w
        subwf   main__buffer_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=30 true_test=false body_code.delay=0 (non-uniform delay)
        btfsc   __c___byte, __c___bit
        goto    main__19
        ; line_number = 484
        ; if ok 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=24 true_test=true body_code.delay=0 (non-uniform delay)
        btfss   ok___byte, ok___bit
        goto    main__17
        ; line_number = 485
        ; block_highs[block_index] := buffer_highs[buffer_index]
        ; right_temporary_first
main__15 equ globals___0+69
        movf    main__buffer_index,w
        addlw   buffer_highs
        movwf   __fsr
        bsf     __irp___byte, __irp___bit
        movf    __indf,w
        movwf   main__15
        movf    main__block_index,w
        addlw   block_highs
        movwf   __fsr
        movf    main__15,w
        bsf     __irp___byte, __irp___bit
        movwf   __indf

        ; line_number = 487
        ; block_lows[block_index] := buffer_lows[buffer_index]
        ; right_temporary_first
main__16 equ globals___0+69
        movf    main__buffer_index,w
        addlw   buffer_lows
        movwf   __fsr
        bsf     __irp___byte, __irp___bit
        movf    __indf,w
        movwf   main__16
        movf    main__block_index,w
        addlw   block_lows
        movwf   __fsr
        movf    main__16,w
        bsf     __irp___byte, __irp___bit
        movwf   __indf

        ; Recombine size1 = 0 || size2 = 0
main__17:
        ; code.delay=4294967295 back_code.delay=4294967295
        ; <=bit_code_emit@symbol; sym=ok (data:00=>00 code:11=>11)
        ; line_number = 484
        ; if ok done
        ; line_number = 489
        ; block_index := block_index + 1
        incf    main__block_index,f
        ; line_number = 490
        ;  buffer_index := buffer_index + 1
        incf    main__buffer_index,f
        ; line_number = 491
        ;  count := count + 1
        incf    main__count,f

        goto    main__14
main__19:
main__18:
        ; Recombine code1_bit_states != code2_bit_states
        ; code.delay=4294967295 back_code.delay=4294967295
        ; <=bit_code_emit@symbol; sym=__c (data:00=>00 code:11=>11)
        ; &&||: index=0 true_delay=4294967295 false_delay=4294967295 goto_delay=4294967295
        ; &&||:: index=0 new_delay=4294967295 goto_delay=4294967295
        ; code.delay=4294967295 back_code.delay=4294967295
        ; <=bit_code_emit@symbol; sym=__c (data:00=>00 code:11=>11)
        ; line_number = 482
        ;  while (block_index < block_size && buffer_index < buffer_size) done

        ; # Now write the 4 word block into memory:
        ; line_number = 494
        ;  _eeadrh := address_high
        movf    main__address_high,w
        bsf     __rp1___byte, __rp1___bit
        movwf   _eeadrh
        ; line_number = 495
        ;  _eeadr := address_low & 0xfc
        movlw   252
        bcf     __rp1___byte, __rp1___bit
        andwf   main__address_low,w
        bsf     __rp1___byte, __rp1___bit
        movwf   _eeadr
        ; line_number = 496
        ;  block_index := 0
        movlw   0
        bcf     __rp1___byte, __rp1___bit
        movwf   main__block_index
        ; line_number = 497
        ;  if ok 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=38 true_test=true body_code.delay=0 (non-uniform delay)
        btfss   ok___byte, ok___bit
        goto    main__23
        ; line_number = 498
        ; while ok && block_index < block_size start
main__20:
        ; (after recombine) true_delay=non-uniform, false_delay=non-uniform
        ; CASE: true.size>1 false.size=1; false=GOTO
        btfss   ok___byte, ok___bit
        goto    main__21
        ; &&||: index=1 true_delay=4294967295 false_delay=4294967295 goto_delay=4294967295
        movlw   4
        subwf   main__block_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=32 true_test=false body_code.delay=0 (non-uniform delay)
        btfsc   __c___byte, __c___bit
        goto    main__22
        ; line_number = 499
        ; _eedath := block_highs[block_index]
        movf    main__block_index,w
        addlw   block_highs
        movwf   __fsr
        bsf     __irp___byte, __irp___bit
        movf    __indf,w
        bsf     __rp1___byte, __rp1___bit
        movwf   _eedath
        ; line_number = 500
        ;  _eedata := block_lows[block_index]
        bcf     __rp1___byte, __rp1___bit
        movf    main__block_index,w
        addlw   block_lows
        movwf   __fsr
        bsf     __irp___byte, __irp___bit
        movf    __indf,w
        bsf     __rp1___byte, __rp1___bit
        movwf   _eedata
        ; line_number = 501
        ;  _eepgd := 1
        bsf     __rp0___byte, __rp0___bit
        bsf     _eepgd___byte, _eepgd___bit
        ; line_number = 502
        ;  _wren := 1
        bsf     _wren___byte, _wren___bit
        ; line_number = 503
        ;  _eecon2 := 0x55
        movlw   85
        movwf   _eecon2
        ; line_number = 504
        ;  _eecon2 := 0xaa
        movlw   170
        movwf   _eecon2
        ; line_number = 505
        ;  _wr := 1
        bsf     _wr___byte, _wr___bit
        ; # The next two instructions must be nop's:
        ; line_number = 507
        ;  assemble
        ; line_number = 508
        nop     
        ; line_number = 509
        nop     
        ; line_number = 510
        ; _wren := 0
        bcf     _wren___byte, _wren___bit
        ; line_number = 511
        ;  block_index := block_index + 1
        bcf     __rp0___byte, __rp0___bit
        bcf     __rp1___byte, __rp1___bit
        incf    main__block_index,f
        ; line_number = 512
        ;  _eeadr := _eeadr + 1
        bsf     __rp1___byte, __rp1___bit
        incf    _eeadr,f

        goto    main__20
main__22:
main__21:
        ; Recombine code1_bit_states != code2_bit_states
        ; code.delay=4294967295 back_code.delay=4294967295
        ; <=bit_code_emit@symbol; sym=__c (data:00=>10 code:11=>11)
        ; &&||: index=0 true_delay=4294967295 false_delay=4294967295 goto_delay=4294967295
        ; &&||:: index=0 new_delay=4294967295 goto_delay=4294967295
        ; Recombine code1_bit_states != code2_bit_states
        ; code.delay=4294967295 back_code.delay=4294967295
        ; <=bit_code_emit@symbol; sym=ok (data:00=>10 code:11=>11)
        ; line_number = 498
        ; while ok && block_index < block_size done
        ; Recombine size1 = 0 || size2 = 0
main__23:
        ; code.delay=4294967295 back_code.delay=4294967295
        ; <=bit_code_emit@symbol; sym=ok (data:00=>10 code:11=>11)
        ; line_number = 497
        ;  if ok done
        ; # Now verify that the write worked:
        ; line_number = 515
        ;  _eeadrh := address_high
        bcf     __rp1___byte, __rp1___bit
        movf    main__address_high,w
        bsf     __rp1___byte, __rp1___bit
        movwf   _eeadrh
        ; line_number = 516
        ;  _eeadr := address_low & 0xfc
        movlw   252
        bcf     __rp1___byte, __rp1___bit
        andwf   main__address_low,w
        bsf     __rp1___byte, __rp1___bit
        movwf   _eeadr
        ; line_number = 517
        ;  block_index := 0
        movlw   0
        bcf     __rp1___byte, __rp1___bit
        movwf   main__block_index
        ; line_number = 518
        ;  while block_index < block_size start
main__24:
        movlw   4
        subwf   main__block_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=54 true_test=false body_code.delay=0 (non-uniform delay)
        btfsc   __c___byte, __c___bit
        goto    main__27
        ; line_number = 519
        ; _eepgd := 1
        bsf     _eepgd___byte, _eepgd___bit
        ; line_number = 520
        ;  _rd := 1
        bsf     _rd___byte, _rd___bit
        ; # The next two instructions must be nop's:
        ; line_number = 522
        ;  assemble
        ; line_number = 523
        nop     
        ; line_number = 524
        nop     
        ; line_number = 525
        ; if block_highs[block_index] != _eedath start
        ; Right minus Left
        bcf     __rp0___byte, __rp0___bit
        bcf     __rp1___byte, __rp1___bit
        movf    main__block_index,w
        addlw   block_highs
        movwf   __fsr
        bsf     __irp___byte, __irp___bit
        movf    __indf,w
        bsf     __rp1___byte, __rp1___bit
        subwf   _eedath,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=10 true_test=false body_code.delay=0 (non-uniform delay)
        bcf     __rp1___byte, __rp1___bit
        btfsc   __z___byte, __z___bit
        goto    main__25
        bsf     __rp1___byte, __rp1___bit
        ; line_number = 526
        ; error_high := _eeadrh
        movf    _eeadrh,w
        bcf     __rp1___byte, __rp1___bit
        movwf   main__error_high
        ; line_number = 527
        ;  error_low := _eeadr | block_index & 3
        movlw   3
        andwf   main__block_index,w
        bsf     __rp1___byte, __rp1___bit
        iorwf   _eeadr,w
        bcf     __rp1___byte, __rp1___bit
        movwf   main__error_low
        ; line_number = 528
        ;  errors := errors + 1
        incf    main__errors,f
main__25:
        ; Recombine size1 = 0 || size2 = 0
        ; code.delay=4294967295 back_code.delay=4294967295
        ; <=bit_code_emit@symbol; sym=__z (data:XX=>00 code:11=>11)
        ; line_number = 525
        ; if block_highs[block_index] != _eedath done
        ; line_number = 529
        ; if block_lows[block_index] != _eedata start
        ; Right minus Left
        movf    main__block_index,w
        addlw   block_lows
        movwf   __fsr
        bsf     __irp___byte, __irp___bit
        movf    __indf,w
        bsf     __rp1___byte, __rp1___bit
        subwf   _eedata,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=10 true_test=false body_code.delay=0 (non-uniform delay)
        bcf     __rp1___byte, __rp1___bit
        btfsc   __z___byte, __z___bit
        goto    main__26
        bsf     __rp1___byte, __rp1___bit
        ; line_number = 530
        ; error_high := _eeadrh
        movf    _eeadrh,w
        bcf     __rp1___byte, __rp1___bit
        movwf   main__error_high
        ; line_number = 531
        ;  error_low := _eeadr | block_index & 3
        movlw   3
        andwf   main__block_index,w
        bsf     __rp1___byte, __rp1___bit
        iorwf   _eeadr,w
        bcf     __rp1___byte, __rp1___bit
        movwf   main__error_low
        ; line_number = 532
        ;  errors := errors + 1
        incf    main__errors,f
main__26:
        ; Recombine size1 = 0 || size2 = 0
        ; code.delay=4294967295 back_code.delay=4294967295
        ; <=bit_code_emit@symbol; sym=__z (data:XX=>00 code:11=>11)
        ; line_number = 529
        ; if block_lows[block_index] != _eedata done
        ; line_number = 533
        ; call put_character(chr)
        movf    main__chr,w
        call    put_character
        ; line_number = 534
        ;  block_index := block_index + 1
        incf    main__block_index,f
        ; line_number = 535
        ;  _eeadr := _eeadr + 1
        bsf     __rp1___byte, __rp1___bit
        incf    _eeadr,f

        goto    main__24
main__27:
        ; Recombine size1 = 0 || size2 = 0
        ; code.delay=4294967295 back_code.delay=4294967295
        ; <=bit_code_emit@symbol; sym=__c (data:00=>10 code:11=>11)
        ; line_number = 518
        ;  while block_index < block_size done
        ; # Now mark the words in buffer as processed:
        ; line_number = 538
        ;  address_low := address_low + count
        bcf     __rp1___byte, __rp1___bit
        movf    main__count,w
        addwf   main__address_low,f
        ; line_number = 539
        ;  if _z start
        ; (after recombine) true_delay=non-uniform, false_delay=non-uniform
        ; CASE: True.size=1 False.size=0
        btfsc   _z___byte, _z___bit
        ; line_number = 540
        ; address_high := address_high + 1
        incf    main__address_high,f
        ; Recombine size1 = 0 || size2 = 0
        ; code.delay=4294967295 back_code.delay=4294967295
        ; <=bit_code_emit@symbol; sym=_z (data:00=>00 code:11=>11)
        ; line_number = 539
        ;  if _z done
        ; line_number = 541
        ; index := index + count
        movf    main__count,w
        addwf   main__index,f
        goto    main__11
main__28:
        ; Recombine size1 = 0 || size2 = 0
        ; code.delay=4294967295 back_code.delay=4294967295
        ; <=bit_code_emit@symbol; sym=__c (data:XX=>00 code:XX=>11)
        ; line_number = 461
        ;  while index < buffer_size done
main__31:
main__29:
        ; Recombine code1_bit_states != code2_bit_states
        ; code.delay=4294967295 back_code.delay=4294967295
        ; <=bit_code_emit@symbol; sym=__c (data:00=>00 code:11=>11)
        ; &&||: index=0 true_delay=4294967295 false_delay=4294967295 goto_delay=4294967295
        ; &&||:: index=0 new_delay=4294967295 goto_delay=4294967295
        ; Recombine code1_bit_states != code2_bit_states
        ; code.delay=4294967295 back_code.delay=4294967295
        ; <=bit_code_emit@symbol; sym=__z (data:00=>00 code:11=>11)
main__34:
        ; code.delay=4294967295 back_code.delay=4294967295
        ; <=bit_code_emit@symbol; sym=__z (data:00=>00 code:11=>11)
        ; line_number = 441
        ;  if type = 1 done

        goto    main__36
main__35:
        ; line_number = 543
        ; errors := errors + 1
        incf    main__errors,f
        ; line_number = 544
        ;  call put_character('c')
        movlw   99
        call    put_character
        ; line_number = 545
        ;  call put_character('s')
        movlw   115
        call    put_character
        ; line_number = 546
        ;  call put_character('=')
        movlw   61
        call    put_character
        ; line_number = 547
        ;  call put_hex_byte(check_sum)
        movf    main__check_sum,w
        call    put_hex_byte
        ; line_number = 548
        ;  call put_crlf()
        call    put_crlf
main__36:
        ; code.delay=4294967295 back_code.delay=4294967295
        ; <=bit_code_emit@symbol; sym=__z (data:00=>00 code:11=>11)
        ; line_number = 432
        ;  if check_sum = 0 done
        ; Recombine size1 = 0 || size2 = 0
main__37:
        ; code.delay=4294967295 back_code.delay=4294967295
        ; <=bit_code_emit@symbol; sym=get_carriage_return__0return (data:00=>00 code:11=>11)
        ; line_number = 400
        ;  if get_carriage_return() done
        goto    main__39
main__38:
        ; line_number = 549
        ; Left minus Right
        movlw   243
        addwf   main__command,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   __z___byte, __z___bit
        goto    main__4
        ; # Unrecognized command:
        ; line_number = 554
        ;  call get_carriage_return()
        call    get_carriage_return
        ; line_number = 555
        ;  call put_character('?')
        movlw   63
        call    put_character
        ; line_number = 556
        ;  call put_crlf()
        call    put_crlf


main__4:
        ; # Empty command:
        ; line_number = 551
        ;  do_nothing
        ; Recombine code1_bit_states != code2_bit_states
        ; code.delay=4294967295 back_code.delay=4294967295
        ; <=bit_code_emit@symbol; sym=__z (data:00=>00 code:11=>11)
main__39:
        ; code.delay=4294967295 back_code.delay=4294967295
        ; <=bit_code_emit@symbol; sym=__z (data:00=>00 code:11=>11)
main__41:
        ; code.delay=4294967295 back_code.delay=4294967295
        ; <=bit_code_emit@symbol; sym=__z (data:00=>00 code:11=>11)
main__44:
        ; code.delay=4294967295 back_code.delay=4294967295
        ; <=bit_code_emit@symbol; sym=__z (data:00=>00 code:11=>11)
main__47:
        ; code.delay=4294967295 back_code.delay=4294967295
        ; <=bit_code_emit@symbol; sym=__z (data:00=>00 code:11=>11)
main__52:
        ; code.delay=4294967295 back_code.delay=4294967295
        ; <=bit_code_emit@symbol; sym=__z (data:00=>00 code:11=>11)
main__55:
        ; code.delay=4294967295 back_code.delay=4294967295
        ; <=bit_code_emit@symbol; sym=__z (data:00=>00 code:11=>11)
main__61:
        ; code.delay=4294967295 back_code.delay=4294967295
        ; <=bit_code_emit@symbol; sym=__z (data:00=>00 code:11=>11)
main__65:
        ; code.delay=4294967295 back_code.delay=4294967295
        ; <=bit_code_emit@symbol; sym=__z (data:00=>00 code:11=>11)
main__68:
        ; code.delay=4294967295 back_code.delay=4294967295
        ; <=bit_code_emit@symbol; sym=__z (data:00=>00 code:11=>11)
main__70:
        ; code.delay=4294967295 back_code.delay=4294967295
        ; <=bit_code_emit@symbol; sym=__z (data:00=>00 code:11=>11)
main__77:
        ; code.delay=4294967295 back_code.delay=4294967295
        ; <=bit_code_emit@symbol; sym=__z (data:00=>00 code:11=>11)
main__80:
        ; code.delay=4294967295 back_code.delay=4294967295
        ; <=bit_code_emit@symbol; sym=__z (data:00=>00 code:11=>11)
        ; line_number = 274
        ;  if command = 'C' done
        ; line_number = 264
        ;  loop_forever wrap-up
        goto    main__3
        ; line_number = 264
        ;  loop_forever done
        ; delay after procedure statements=non-uniform




        ; line_number = 559
        ; procedure clock_adjust
clock_adjust:
        ; Last argument is sitting in W; save into argument variable
        movwf   clock_adjust__socket
        ; delay=4294967295
        ; line_number = 560
        ; argument adjust byte
clock_adjust__adjust equ globals___0+32
        ; line_number = 561
        ; argument socket byte
clock_adjust__socket equ globals___0+33
        ; line_number = 562
        ;  returns_nothing

        ; # This procedure will adjust the clock to the slave.

        ; line_number = 566
        ;  local command byte
clock_adjust__command equ globals___0+23
        ; line_number = 567
        ;  local count byte
clock_adjust__count equ globals___0+24
        ; line_number = 568
        ;  local error byte
clock_adjust__error equ globals___0+25
        ; line_number = 569
        ;  local error_minimum byte
clock_adjust__error_minimum equ globals___0+26
        ; line_number = 570
        ;  local high byte
clock_adjust__high equ globals___0+27
        ; line_number = 571
        ;  local in_mask byte
clock_adjust__in_mask equ globals___0+28
        ; line_number = 572
        ;  local in_out_register byte
clock_adjust__in_out_register equ globals___0+29
        ; line_number = 573
        ;  local low byte
clock_adjust__low equ globals___0+30
        ; line_number = 574
        ;  local target byte
clock_adjust__target equ globals___0+31

        ; before procedure statements delay=non-uniform, bit states=(data:00=>00 code:11=>11)
        ; line_number = 576
        ;  target := iterations_low - adjust
        comf    clock_adjust__adjust,w
        addlw   163
        movwf   clock_adjust__target
        ; line_number = 577
        ;  count := 2
        movlw   2
        movwf   clock_adjust__count
        ; line_number = 578
        ;  error := 0xff
        movlw   255
        movwf   clock_adjust__error
        ; line_number = 579
        ;  error_minimum := 0xf0
        movlw   240
        movwf   clock_adjust__error_minimum

        ; # Print out the target:
        ; line_number = 582
        ;  call put_character('T')
        movlw   84
        call    put_character
        ; line_number = 583
        ;  call put_hex_byte(iterations_high)
        movlw   5
        call    put_hex_byte
        ; line_number = 584
        ;  call put_hex_byte(target)
        movf    clock_adjust__target,w
        call    put_hex_byte
        ; line_number = 585
        ;  call put_crlf()
        call    put_crlf

        ; line_number = 587
        ;  loop_forever start
clock_adjust__1:
        ; # Print out the clock value:
        ; line_number = 589
        ;  call put_character('C')
        movlw   67
        call    put_character
        ; line_number = 590
        ;  call put_byte(0xfa, socket)
        movlw   250
        movwf   put_byte__character
        movf    clock_adjust__socket,w
        call    put_byte
        ; line_number = 591
        ;  call put_hex_byte(get_byte(socket))
        movf    clock_adjust__socket,w
        call    get_byte
        call    put_hex_byte
        ; line_number = 592
        ;  call put_space()
        call    put_space

        ; line_number = 594
        ;  in_mask := in_masks(socket)
        movf    clock_adjust__socket,w
        call    in_masks
        movwf   clock_adjust__in_mask
        ; line_number = 595
        ;  in_out_register := in_out_registers(socket)
        movf    clock_adjust__socket,w
        call    in_out_registers
        movwf   clock_adjust__in_out_register

        ; # Ask for a timing byte:
        ; line_number = 598
        ;  call put_byte(0xfb, socket)
        movlw   251
        movwf   put_byte__character
        movf    clock_adjust__socket,w
        call    put_byte

        ; # Nasty:
        ; line_number = 601
        ;  low := 0
        movlw   0
        movwf   clock_adjust__low
        ; line_number = 602
        ;  high := 0
        movlw   0
        movwf   clock_adjust__high
        ; line_number = 603
        ;  while ports[in_out_register] & in_mask != 0 start
clock_adjust__2:
        ; Left minus Right
        movf    clock_adjust__in_out_register,w
        addlw   ports
        movwf   __fsr
        bcf     __irp___byte, __irp___bit
        movf    __indf,w
        andwf   clock_adjust__in_mask,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
        ; true.size=0 false_size=1 false=GOTO
        goto    clock_adjust__2
        ; Recombine size1 = 0 || size2 = 0
        ; code.delay=4294967295 back_code.delay=4294967295
        ; <=bit_code_emit@symbol; sym=__z (data:XX=>XX code:11=>11)
        ; line_number = 603
        ;  while ports[in_out_register] & in_mask != 0 done
        ; line_number = 605
        ; while ports[in_out_register] & in_mask = 0 start
clock_adjust__3:
        ; Left minus Right
        movf    clock_adjust__in_out_register,w
        addlw   ports
        movwf   __fsr
        bcf     __irp___byte, __irp___bit
        movf    __indf,w
        andwf   clock_adjust__in_mask,w
        ; (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   __z___byte, __z___bit
        goto    clock_adjust__4
        ; line_number = 606
        ; low := low + 1
        incf    clock_adjust__low,f
        ; line_number = 607
        ;  if _z start
        ; (after recombine) true_delay=non-uniform, false_delay=non-uniform
        ; CASE: True.size=1 False.size=0
        btfsc   _z___byte, _z___bit
        ; line_number = 608
        ; high := high + 1
        incf    clock_adjust__high,f

        ; Recombine size1 = 0 || size2 = 0
        ; code.delay=4294967295 back_code.delay=4294967295
        ; <=bit_code_emit@symbol; sym=_z (data:00=>00 code:11=>11)
        ; line_number = 607
        ;  if _z done
        goto    clock_adjust__3
        ; Recombine size1 = 0 || size2 = 0
clock_adjust__4:
        ; code.delay=4294967295 back_code.delay=4294967295
        ; <=bit_code_emit@symbol; sym=__z (data:00=>00 code:11=>11)
        ; line_number = 605
        ; while ports[in_out_register] & in_mask = 0 done
        ; # Print out high and low:
        ; line_number = 611
        ;  call put_character('H')
        movlw   72
        call    put_character
        ; line_number = 612
        ;  call put_hex_byte(high)
        movf    clock_adjust__high,w
        call    put_hex_byte
        ; line_number = 613
        ;  call put_space()
        call    put_space
        ; line_number = 614
        ;  call put_character('L')
        movlw   76
        call    put_character
        ; line_number = 615
        ;  call put_hex_byte(low)
        movf    clock_adjust__low,w
        call    put_hex_byte
        ; line_number = 616
        ;  call put_space()
        call    put_space

        ; # Now think about adjusting clock.
        ; line_number = 619
        ;  if high > iterations_high start
        movlw   5
        subwf   clock_adjust__high,w
        btfsc   __z___byte, __z___bit
        bcf     __c___byte, __c___bit
        ; (after recombine) true_delay=non-uniform, false_delay=non-uniform
        ; CASE: true_code_size > 1 && false_code_size > 1
        ; true_code_size=5 false_code_size=38
        btfss   __c___byte, __c___bit
        goto    clock_adjust__11
        ; # Clock pulse is too long; slave clock is too slow:
        ; line_number = 621
        ;  command := 0xf9
        movlw   249
        movwf   clock_adjust__command
        ; line_number = 622
        ;  error := high - target
        movf    clock_adjust__target,w
        subwf   clock_adjust__high,w
        movwf   clock_adjust__error
        ; Recombine code1_bit_states != code2_bit_states
        goto    clock_adjust__12
clock_adjust__11:
        ; line_number = 623
        movlw   5
        subwf   clock_adjust__high,w
        ; (after recombine) true_delay=non-uniform, false_delay=non-uniform
        ; CASE: true_code_size > 1 && false_code_size > 1
        ; true_code_size=28 false_code_size=5
        btfss   __c___byte, __c___bit
        goto    clock_adjust__9
        ; # The high 8-bits are equal:
        ; line_number = 629
        ;  if low > target start
        movf    clock_adjust__target,w
        subwf   clock_adjust__low,w
        btfsc   __z___byte, __z___bit
        bcf     __c___byte, __c___bit
        ; (after recombine) true_delay=non-uniform, false_delay=non-uniform
        ; CASE: true_code_size > 1 && false_code_size > 1
        ; true_code_size=5 false_code_size=16
        btfss   __c___byte, __c___bit
        goto    clock_adjust__7
        ; # Clock pulse is too long; slave clock is too slow:
        ; line_number = 631
        ;  command := 0xf9
        movlw   249
        movwf   clock_adjust__command
        ; line_number = 632
        ;  error := low - target
        movf    clock_adjust__target,w
        subwf   clock_adjust__low,w
        movwf   clock_adjust__error
        ; Recombine code1_bit_states != code2_bit_states
        goto    clock_adjust__8
clock_adjust__7:
        ; line_number = 633
        movf    clock_adjust__target,w
        subwf   clock_adjust__low,w
        ; (after recombine) true_delay=non-uniform, false_delay=non-uniform
        ; CASE: true_code_size > 1 && false_code_size > 1
        ; true_code_size=6 false_code_size=5
        btfss   __c___byte, __c___bit
        goto    clock_adjust__5
        ; # Exact match; we are done:
        ; line_number = 639
        ;  command := 0
        movlw   0
        movwf   clock_adjust__command
        ; line_number = 640
        ;  error := 0
        movlw   0
        movwf   clock_adjust__error
        ; line_number = 641
        ;  error_minimum := 0
        movlw   0
        movwf   clock_adjust__error_minimum


        goto    clock_adjust__6
clock_adjust__5:
        ; # Clock pulse is too short; slave clock is too fast:
        ; line_number = 635
        ;  command := 0xf8
        movlw   248
        movwf   clock_adjust__command
        ; line_number = 636
        ;  error := target - low
        movf    clock_adjust__low,w
        subwf   clock_adjust__target,w
        movwf   clock_adjust__error
clock_adjust__6:
        ; code.delay=4294967295 back_code.delay=4294967295
        ; <=bit_code_emit@symbol; sym=__c (data:00=>00 code:11=>11)
clock_adjust__8:
        ; code.delay=4294967295 back_code.delay=4294967295
        ; <=bit_code_emit@symbol; sym=__c (data:00=>00 code:11=>11)
        ; line_number = 629
        ;  if low > target done
        ; Recombine code1_bit_states != code2_bit_states
        goto    clock_adjust__10
clock_adjust__9:
        ; # Clock pulse is too short; slave clock is too fast:
        ; line_number = 625
        ;  command := 0xf8
        movlw   248
        movwf   clock_adjust__command
        ; line_number = 626
        ;  error := target - high
        movf    clock_adjust__high,w
        subwf   clock_adjust__target,w
        movwf   clock_adjust__error
clock_adjust__10:
        ; code.delay=4294967295 back_code.delay=4294967295
        ; <=bit_code_emit@symbol; sym=__c (data:00=>00 code:11=>11)
clock_adjust__12:
        ; code.delay=4294967295 back_code.delay=4294967295
        ; <=bit_code_emit@symbol; sym=__c (data:00=>00 code:11=>11)
        ; line_number = 619
        ;  if high > iterations_high done
        ; # Print out the error and error minimum:
        ; line_number = 645
        ;  call put_character('E')
        movlw   69
        call    put_character
        ; line_number = 646
        ;  call put_hex_byte(error)
        movf    clock_adjust__error,w
        call    put_hex_byte
        ; line_number = 647
        ;  call put_space()
        call    put_space
        ; line_number = 648
        ;  call put_character('M')
        movlw   77
        call    put_character
        ; line_number = 649
        ;  call put_hex_byte(error_minimum)
        movf    clock_adjust__error_minimum,w
        call    put_hex_byte
        ; line_number = 650
        ;  call put_space()
        call    put_space

        ; line_number = 652
        ;  if error = error_minimum start
        ; Left minus Right
        movf    clock_adjust__error_minimum,w
        subwf   clock_adjust__error,w
        ; (after recombine) true_delay=non-uniform, false_delay=non-uniform
        ; CASE: true_code_size > 1 && false_code_size > 1
        ; true_code_size=2 false_code_size=14
        btfss   __z___byte, __z___bit
        goto    clock_adjust__16
        ; line_number = 653
        ; call put_crlf()
        call    put_crlf
        ; line_number = 654
        ;  return start
        ; line_number = 654
        retlw   0
        ; line_number = 654
        ;  return done
        goto    clock_adjust__17
clock_adjust__16:
        ; line_number = 655
        movf    clock_adjust__error_minimum,w
        subwf   clock_adjust__error,w
        ; (after recombine) true_delay=non-uniform, false_delay=non-uniform
        ; CASE: true_code_size > 1 && false_code_size > 1
        ; true_code_size=6 false_code_size=3
        btfss   __c___byte, __c___bit
        goto    clock_adjust__14
        ; line_number = 659
        ; count := count - 1
        decf    clock_adjust__count,f
        ; line_number = 660
        ;  if _z 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=3 true_test=true body_code.delay=0 (non-uniform delay)
        btfss   _z___byte, _z___bit
        goto    clock_adjust__13
        ; line_number = 661
        ; error_minimum := error_minimum + 1
        incf    clock_adjust__error_minimum,f
        ; line_number = 662
        ;  count := 2
        movlw   2
        movwf   clock_adjust__count

        ; Recombine size1 = 0 || size2 = 0
clock_adjust__13:
        ; code.delay=4294967295 back_code.delay=4294967295
        ; <=bit_code_emit@symbol; sym=_z (data:00=>00 code:11=>11)
        ; line_number = 660
        ;  if _z done
        ; Recombine code1_bit_states != code2_bit_states
        goto    clock_adjust__15
clock_adjust__14:
        ; line_number = 656
        ; error_minimum := error
        movf    clock_adjust__error,w
        movwf   clock_adjust__error_minimum
        ; line_number = 657
        ;  error := error + 1
        incf    clock_adjust__error,f
clock_adjust__15:
        ; code.delay=4294967295 back_code.delay=4294967295
        ; <=bit_code_emit@symbol; sym=__c (data:00=>00 code:11=>11)
clock_adjust__17:
        ; code.delay=4294967295 back_code.delay=4294967295
        ; <=bit_code_emit@symbol; sym=__z (data:00=>00 code:11=>11)
        ; line_number = 652
        ;  if error = error_minimum done
        ; # Now adjust the clock:
        ; line_number = 665
        ;  call put_byte(command, socket)
        movf    clock_adjust__command,w
        movwf   put_byte__character
        movf    clock_adjust__socket,w
        call    put_byte

        ; line_number = 667
        ;  call put_crlf()
        call    put_crlf


        ; line_number = 587
        ;  loop_forever wrap-up
        goto    clock_adjust__1
        ; line_number = 587
        ;  loop_forever done
        ; delay after procedure statements=non-uniform




        ; line_number = 670
        ; procedure execute
execute:
        ; arguments_none
        ; line_number = 672
        ;  returns_nothing

        ; # This procedure will transfer control to location program_origin.

        ; before procedure statements delay=non-uniform, bit states=(data:00=>00 code:11=>11)
        ; line_number = 676
        ;  _pclath := 0
        movlw   0
        movwf   _pclath
        ; line_number = 677
        ;  _pcl := program_origin
        movlw   8
        movwf   _pcl


        ; delay after procedure statements=non-uniform
        ; Implied return
        retlw   0




        ; line_number = 680
        ; procedure goto_command
goto_command:
        ; arguments_none
        ; line_number = 682
        ;  returns_nothing

        ; line_number = 684
        ;  local address_low byte
goto_command__address_low equ globals___0+34
        ; line_number = 685
        ;  local address_high byte
goto_command__address_high equ globals___0+35

        ; before procedure statements delay=non-uniform, bit states=(data:00=>00 code:11=>11)
        ; line_number = 687
        ;  address_high := get_hex_byte()
        call    get_hex_byte
        movwf   goto_command__address_high
        ; line_number = 688
        ;  address_low := get_hex_byte()
        call    get_hex_byte
        movwf   goto_command__address_low
        ; line_number = 689
        ;  if get_carriage_return() start
        call    get_carriage_return
        ; (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   get_carriage_return__0return___byte, get_carriage_return__0return___bit
        goto    goto_command__1
        ; line_number = 690
        ; _pclath := address_high
        movf    goto_command__address_high,w
        movwf   _pclath
        ; line_number = 691
        ;  _pcl := address_low
        movf    goto_command__address_low,w
        movwf   _pcl


        ; Recombine size1 = 0 || size2 = 0
goto_command__1:
        ; code.delay=4294967295 back_code.delay=4294967295
        ; <=bit_code_emit@symbol; sym=get_carriage_return__0return (data:00=>00 code:11=>11)
        ; line_number = 689
        ;  if get_carriage_return() done
        ; delay after procedure statements=non-uniform
        ; Implied return
        retlw   0




        ; # The `id' procedures are below:

        ; line_number = 696
        ; procedure id8
id8:
        ; Last argument is sitting in W; save into argument variable
        movwf   id8__socket
        ; delay=4294967295
        ; line_number = 697
        ; argument socket byte
id8__socket equ globals___0+37
        ; line_number = 698
        ;  returns_nothing

        ; # This procedure will print out 8 bytes of id:

        ; line_number = 702
        ;  local count byte
id8__count equ globals___0+36

        ; before procedure statements delay=non-uniform, bit states=(data:00=>00 code:11=>11)
        ; line_number = 704
        ;  loop_exactly 8 start
id8__1 equ globals___0+70
        movlw   8
        movwf   id8__1
id8__2:
        ; line_number = 705
        ; call put_hex_byte(put_get_byte(id_next, socket))
        movlw   252
        movwf   put_get_byte__command
        movf    id8__socket,w
        call    put_get_byte
        call    put_hex_byte
        ; line_number = 706
        ;  call put_space()
        call    put_space
        ; line_number = 704
        ;  loop_exactly 8 wrap-up
        decfsz  id8__1,f
        goto    id8__2
        ; line_number = 704
        ;  loop_exactly 8 done
        ; line_number = 707
        ; call put_crlf()
        call    put_crlf


        ; delay after procedure statements=non-uniform
        ; Implied return
        retlw   0




        ; line_number = 710
        ; procedure id_string
id_string:
        ; Last argument is sitting in W; save into argument variable
        movwf   id_string__socket
        ; delay=4294967295
        ; line_number = 711
        ; argument socket byte
id_string__socket equ globals___0+39
        ; line_number = 712
        ;  returns_nothing

        ; # This procedure will print out a string from the id:

        ; line_number = 716
        ;  local size byte
id_string__size equ globals___0+38

        ; before procedure statements delay=non-uniform, bit states=(data:00=>00 code:11=>11)
        ; line_number = 718
        ;  size := put_get_byte(id_next, socket)
        movlw   252
        movwf   put_get_byte__command
        movf    id_string__socket,w
        call    put_get_byte
        movwf   id_string__size
        ; line_number = 719
        ;  while size != 0 start
id_string__1:
        ; Left minus Right
        movf    id_string__size,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=7 true_test=false body_code.delay=0 (non-uniform delay)
        btfsc   __z___byte, __z___bit
        goto    id_string__2
        ; line_number = 720
        ; call put_character(put_get_byte(id_next, socket))
        movlw   252
        movwf   put_get_byte__command
        movf    id_string__socket,w
        call    put_get_byte
        call    put_character
        ; line_number = 721
        ;  size := size - 1
        decf    id_string__size,f
        goto    id_string__1
id_string__2:
        ; Recombine size1 = 0 || size2 = 0
        ; code.delay=4294967295 back_code.delay=4294967295
        ; <=bit_code_emit@symbol; sym=__z (data:00=>00 code:11=>11)
        ; line_number = 719
        ;  while size != 0 done
        ; line_number = 722
        ; call put_crlf()
        call    put_crlf


        ; delay after procedure statements=non-uniform
        ; Implied return
        retlw   0




        ; # The `get' procedures are below:

        ; line_number = 727
        ; procedure get_byte
get_byte:
        ; Last argument is sitting in W; save into argument variable
        movwf   get_byte__socket
        ; delay=4294967295
        ; line_number = 728
        ; argument socket byte
get_byte__socket equ globals___0+44
        ; line_number = 729
        ;  returns byte

        ; # This procedure will get a byte from the currently selected
        ; # input.  If no byte is received in a reasonable amount of
        ; # time, 0xfc is returned.

        ; line_number = 735
        ;  local counter byte
get_byte__counter equ globals___0+40
        ; line_number = 736
        ;  local character byte
get_byte__character equ globals___0+41
        ; line_number = 737
        ;  local in_mask byte
get_byte__in_mask equ globals___0+42
        ; line_number = 738
        ;  local in_out_register byte
get_byte__in_out_register equ globals___0+43

        ; before procedure statements delay=non-uniform, bit states=(data:00=>00 code:11=>11)
        ; line_number = 740
        ;  in_out_register := in_out_registers(socket)
        movf    get_byte__socket,w
        call    in_out_registers
        movwf   get_byte__in_out_register
        ; line_number = 741
        ;  in_mask := in_masks(socket)
        movf    get_byte__socket,w
        call    in_masks
        movwf   get_byte__in_mask

        ; line_number = 743
        ;  receiving := 1
        bsf     receiving___byte, receiving___bit
        ; line_number = 744
        ;  loop_exactly 255 start
get_byte__1 equ globals___0+71
        movlw   255
        movwf   get_byte__1
get_byte__2:
        ; line_number = 745
        ; if ports[in_out_register] & in_mask = 0 start
        ; Left minus Right
        movf    get_byte__in_out_register,w
        addlw   ports
        movwf   __fsr
        bcf     __irp___byte, __irp___bit
        movf    __indf,w
        andwf   get_byte__in_mask,w
        ; (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=34 true_test=true body_code.delay=0 (non-uniform delay)
        btfss   __z___byte, __z___bit
        goto    get_byte__9
        ; # We got a start bit:
        ; line_number = 747
        ;  call delay()
        call    delay
        ; line_number = 748
        ;  call delay()
        call    delay
        ; line_number = 749
        ;  call delay()
        call    delay

        ; # 2 Instructions for loop_exactly initialization:
        ; line_number = 752
        ;  delay extra_bit_instructions - 2 start
        ; Delay expression evaluates to 22
        ; # Sample 1/3 of bit into each character:
        ; line_number = 754
        ;  character := 0
        ; Delay at assignment is 0
        movlw   0
        movwf   get_byte__character

        ; Delay 20 cycles
        ; Delay loop takes 5 * 4 = 20 cycles
        movlw   5
get_byte__3:
        addlw   255
        btfss   __z___byte, __z___bit
        goto    get_byte__3
        ; line_number = 752
        ;  delay extra_bit_instructions - 2 done
        ; line_number = 756
        ; loop_exactly 8 start
get_byte__4 equ globals___0+72
        movlw   8
        movwf   get_byte__4
get_byte__5:
        ; line_number = 757
        ; call delay()
        call    delay
        ; # 3 Instructions for loop overhead:
        ; line_number = 759
        ;  delay extra_bit_instructions - 3 start
        ; Delay expression evaluates to 21
        ; line_number = 760
        ; character := character >> 1
        ; Delay at assignment is 0
        ; Assignment of variable to self (no code needed)
        rrf     get_byte__character,f
        bcf     get_byte__character, 7
        ; line_number = 761
        ;  if ports[in_out_register] & in_mask != 0 start
        ; Delay at if is 2
        ; Left minus Right
        movf    get_byte__in_out_register,w
        addlw   ports
        movwf   __fsr
        bcf     __irp___byte, __irp___bit
        movf    __indf,w
        andwf   get_byte__in_mask,w
        ; (after recombine) true_delay=0, false_delay=1 uniform_delay=true
        ; CASE: true_code.size=0 && false_code.size=1
        btfss   __z___byte, __z___bit
        ; line_number = 762
        ; character@7 := 1
        ; Delay at assignment is 0
get_byte__select__6___byte equ get_byte__character
get_byte__select__6___bit equ 7
        bsf     get_byte__select__6___byte, get_byte__select__6___bit
        ; code.delay=10 back_code.delay=0
        ; <=bit_code_emit@symbol; sym=__z (data:00=>00 code:11=>11)
        ; Uniform delay broke in relation_code_emit
        ; if final true delay=1 false delay=0 code delay=10
        ; line_number = 761
        ;  if ports[in_out_register] & in_mask != 0 done
        ; Delay 11 cycles
        ; Delay loop takes 2 * 4 = 8 cycles
        movlw   2
get_byte__7:
        addlw   255
        btfss   __z___byte, __z___bit
        goto    get_byte__7
        goto    get_byte__8
get_byte__8:
        nop     
        ; line_number = 759
        ;  delay extra_bit_instructions - 3 done
        ; line_number = 763
        ; call delay()
        call    delay
        ; line_number = 764
        ;  call delay()
        call    delay

        ; line_number = 756
        ; loop_exactly 8 wrap-up
        decfsz  get_byte__4,f
        goto    get_byte__5
        ; line_number = 756
        ; loop_exactly 8 done
        ; # Now sleep through 2/3's of the stop bit:
        ; line_number = 767
        ;  call delay()
        call    delay
        ; line_number = 768
        ;  call delay()
        call    delay
        ; line_number = 769
        ;  return character start
        ; line_number = 769
        movf    get_byte__character,w
        return  
        ; line_number = 769
        ;  return character done
        ; Recombine size1 = 0 || size2 = 0
get_byte__9:
        ; code.delay=4294967295 back_code.delay=4294967295
        ; <=bit_code_emit@symbol; sym=__z (data:00=>00 code:11=>11)
        ; line_number = 745
        ; if ports[in_out_register] & in_mask = 0 done
        ; line_number = 770
        ; call delay()
        call    delay
        ; line_number = 744
        ;  loop_exactly 255 wrap-up
        decfsz  get_byte__1,f
        goto    get_byte__2
        ; line_number = 744
        ;  loop_exactly 255 done
        ; line_number = 771
        ; return 0xfc start
        ; line_number = 771
        retlw   252
        ; line_number = 771
        ; return 0xfc done


        ; delay after procedure statements=non-uniform




get_carriage_return__0return___byte equ globals___0+79
get_carriage_return__0return___bit equ 4
        ; line_number = 774
        ; procedure get_carriage_return
get_carriage_return:
        ; arguments_none
        ; line_number = 776
        ;  returns bit

        ; # This procedure will verify that the next character is
        ; # a carriage return.  If the next character is a carriage
        ; # return a 1 is returned.  Otherwise, characters are read
        ; # until a carriage return is encountered and 0 is returned.
        ; # If any errors occurred (i.e. ok = 0), a "?" followed by
        ; # carriage-return line-feed is returned.

        ; before procedure statements delay=non-uniform, bit states=(data:00=>00 code:11=>11)
        ; line_number = 785
        ;  while get_character() != carriage_return start
get_carriage_return__1:
        ; Left minus Right
        call    get_character
        addlw   243
        ; (after recombine) true_delay=non-uniform, false_delay=non-uniform
        ; CASE: true.size=0 && false.size>1
        ; bit_code_emit_helper1: body_code.size=2 true_test=false body_code.delay=0 (non-uniform delay)
        btfsc   __z___byte, __z___bit
        goto    get_carriage_return__2
        ; line_number = 786
        ; ok := 0
        bcf     ok___byte, ok___bit
        goto    get_carriage_return__1
get_carriage_return__2:
        ; Recombine size1 = 0 || size2 = 0
        ; code.delay=4294967295 back_code.delay=4294967295
        ; <=bit_code_emit@symbol; sym=__z (data:00=>00 code:11=>11)
        ; line_number = 785
        ;  while get_character() != carriage_return done
        ; line_number = 787
        ; have_carriage_return := 0
        bcf     have_carriage_return___byte, have_carriage_return___bit
        ; line_number = 788
        ;  if ok 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=2 true_test=true body_code.delay=0 (non-uniform delay)
        btfss   ok___byte, ok___bit
        goto    get_carriage_return__3
        ; line_number = 789
        ; return 1 start
        ; line_number = 789
        bsf     get_carriage_return__0return___byte, get_carriage_return__0return___bit
        return  
        ; line_number = 789
        ; return 1 done
        ; Recombine size1 = 0 || size2 = 0
get_carriage_return__3:
        ; code.delay=4294967295 back_code.delay=4294967295
        ; <=bit_code_emit@symbol; sym=ok (data:00=>00 code:11=>11)
        ; line_number = 788
        ;  if ok done
        ; line_number = 790
        ; call put_character('?')
        movlw   63
        call    put_character
        ; line_number = 791
        ;  call put_crlf()
        call    put_crlf
        ; line_number = 792
        ;  return 0 start
        ; line_number = 792
        bcf     get_carriage_return__0return___byte, get_carriage_return__0return___bit
        return  
        ; line_number = 792
        ;  return 0 done


        ; delay after procedure statements=non-uniform




        ; line_number = 795
        ; procedure get_character
get_character:
        ; arguments_none
        ; line_number = 797
        ;  returns byte

        ; # This procedure will get the next character from the UART.

        ; line_number = 801
        ;  local character byte
get_character__character equ globals___0+45
        ; line_number = 802
        ;  local pir1_copy byte
get_character__pir1_copy equ globals___0+46

        ; before procedure statements delay=non-uniform, bit states=(data:00=>00 code:11=>11)
        ; line_number = 804
        ;  if have_carriage_return start
        ; (after recombine) true_delay=non-uniform, false_delay=non-uniform
        ; CASE: True.size=1 False.size=0
        btfsc   have_carriage_return___byte, have_carriage_return___bit
        ; line_number = 805
        ; return carriage_return start
        ; line_number = 805
        retlw   13
        ; line_number = 805
        ; return carriage_return done

        ; Recombine size1 = 0 || size2 = 0
        ; code.delay=4294967295 back_code.delay=4294967295
        ; <=bit_code_emit@symbol; sym=have_carriage_return (data:XX=>XX code:11=>11)
        ; line_number = 804
        ;  if have_carriage_return done
        ; # FIXME:  Compiler can't bit test outside of the current data bank!!!
        ; # So read the entire register into a temporary and test second.

        ; # Read characters until something other than a space is typed in:
        ; line_number = 811
        ;  character := space
        movlw   32
        movwf   get_character__character
        ; line_number = 812
        ;  while character = space start
get_character__1:
        ; Left minus Right
        movlw   224
        addwf   get_character__character,w
        ; (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=9 true_test=true body_code.delay=0 (non-uniform delay)
        btfss   __z___byte, __z___bit
        goto    get_character__6
        ; line_number = 813
        ; pir1_copy@5 := 0
get_character__select__2___byte equ get_character__pir1_copy
get_character__select__2___bit equ 5
        bcf     get_character__select__2___byte, get_character__select__2___bit
        ; line_number = 814
        ;  while !(pir1_copy@5) start
get_character__3:
get_character__select__4___byte equ get_character__pir1_copy
get_character__select__4___bit equ 5
        ; (after recombine) true_delay=non-uniform, false_delay=non-uniform
        ; CASE: true.size=0 && false.size>1
        ; bit_code_emit_helper1: body_code.size=3 true_test=false body_code.delay=0 (non-uniform delay)
        btfsc   get_character__select__4___byte, get_character__select__4___bit
        goto    get_character__5
        ; # Wait for character:
        ; line_number = 816
        ;  pir1_copy := _pir1
        movf    _pir1,w
        movwf   get_character__pir1_copy
        goto    get_character__3
get_character__5:
        ; Recombine size1 = 0 || size2 = 0
        ; code.delay=4294967295 back_code.delay=4294967295
        ; <=bit_code_emit@symbol; sym=get_character__select__4 (data:XX=>00 code:11=>11)
        ; line_number = 814
        ;  while !(pir1_copy@5) done
        ; line_number = 817
        ; character := _rcreg
        movf    _rcreg,w
        movwf   get_character__character

        goto    get_character__1
        ; Recombine size1 = 0 || size2 = 0
get_character__6:
        ; code.delay=4294967295 back_code.delay=4294967295
        ; <=bit_code_emit@symbol; sym=__z (data:00=>00 code:11=>11)
        ; line_number = 812
        ;  while character = space done
        ; # Convert to upper case:
        ; line_number = 820
        ;  if 'a' <= character && character <= 'z' start
        movlw   97
        subwf   get_character__character,w
        ; (after recombine) true_delay=non-uniform, false_delay=non-uniform
        ; CASE: true.size>1 false.size=1; false=GOTO
        btfss   __c___byte, __c___bit
        goto    get_character__7
        ; &&||: index=1 true_delay=4294967295 false_delay=4294967295 goto_delay=4294967295
        movlw   122
        subwf   get_character__character,w
        btfsc   __z___byte, __z___bit
        bcf     __c___byte, __c___bit
        ; (after recombine) true_delay=non-uniform, false_delay=non-uniform
        ; CASE: true.size=0 && false.size>1
        ; bit_code_emit_helper1: body_code.size=2 true_test=false body_code.delay=0 (non-uniform delay)
        btfsc   __c___byte, __c___bit
        goto    get_character__8
        ; line_number = 821
        ; character := character - 'a' + 'A'
        movlw   224
        addwf   get_character__character,f

get_character__8:
get_character__7:
        ; Recombine code1_bit_states != code2_bit_states
        ; code.delay=4294967295 back_code.delay=4294967295
        ; <=bit_code_emit@symbol; sym=__c (data:00=>00 code:11=>11)
        ; &&||: index=0 true_delay=4294967295 false_delay=4294967295 goto_delay=4294967295
        ; &&||:: index=0 new_delay=4294967295 goto_delay=4294967295
        ; Recombine code1_bit_states != code2_bit_states
        ; code.delay=4294967295 back_code.delay=4294967295
        ; <=bit_code_emit@symbol; sym=__c (data:00=>00 code:11=>11)
        ; line_number = 820
        ;  if 'a' <= character && character <= 'z' done
        ; # Carriage returns "stick" until get_carriage_return() is called:
        ; line_number = 824
        ;  if character = carriage_return start
        ; Left minus Right
        movlw   243
        addwf   get_character__character,w
        ; (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=3 true_test=true body_code.delay=0 (non-uniform delay)
        btfss   __z___byte, __z___bit
        goto    get_character__9
        ; line_number = 825
        ; call put_character(line_feed)
        movlw   10
        call    put_character
        ; line_number = 826
        ;  have_carriage_return := 1
        bsf     have_carriage_return___byte, have_carriage_return___bit
        ; Recombine size1 = 0 || size2 = 0
get_character__9:
        ; code.delay=4294967295 back_code.delay=4294967295
        ; <=bit_code_emit@symbol; sym=__z (data:00=>00 code:11=>11)
        ; line_number = 824
        ;  if character = carriage_return done
        ; line_number = 827
        ; return character start
        ; line_number = 827
        movf    get_character__character,w
        return  
        ; line_number = 827
        ; return character done


        ; delay after procedure statements=non-uniform




        ; line_number = 830
        ; procedure get_hex_byte
get_hex_byte:
        ; arguments_none
        ; line_number = 832
        ;  returns byte

        ; # This procedure will read one hexadecimal byte:

        ; before procedure statements delay=non-uniform, bit states=(data:00=>00 code:11=>11)
        ; line_number = 836
        ;  return (get_hex_nibble() << 4) | get_hex_nibble() start
        ; line_number = 836
get_hex_byte__1 equ globals___0+73
        call    get_hex_nibble
        movwf   get_hex_byte__1
        swapf   get_hex_byte__1,f
        movlw   240
        andwf   get_hex_byte__1,f
        call    get_hex_nibble
        iorwf   get_hex_byte__1,w
        return  
        ; line_number = 836
        ;  return (get_hex_nibble() << 4) | get_hex_nibble() done


        ; delay after procedure statements=non-uniform




        ; line_number = 839
        ; procedure get_hex_nibble
get_hex_nibble:
        ; arguments_none
        ; line_number = 841
        ;  returns byte

        ; # This procedure will get and return one hexadecimal digit worth
        ; # of number.

        ; line_number = 846
        ;  local character byte
get_hex_nibble__character equ globals___0+47

        ; before procedure statements delay=non-uniform, bit states=(data:00=>00 code:11=>11)
        ; line_number = 848
        ;  character := get_character()
        call    get_character
        movwf   get_hex_nibble__character
        ; line_number = 849
        ;  if '0' <= character && character <= '9' start
        movlw   48
        subwf   get_hex_nibble__character,w
        ; (after recombine) true_delay=non-uniform, false_delay=non-uniform
        ; CASE: true.size>1 false.size=1; false=GOTO
        btfss   __c___byte, __c___bit
        goto    get_hex_nibble__3
        ; &&||: index=1 true_delay=4294967295 false_delay=4294967295 goto_delay=4294967295
        movlw   57
        subwf   get_hex_nibble__character,w
        btfsc   __z___byte, __z___bit
        bcf     __c___byte, __c___bit
        ; (after recombine) true_delay=non-uniform, false_delay=non-uniform
        ; CASE: true_code_size > 1 && false_code_size > 1
        ; true_code_size=13 false_code_size=3
        btfss   __c___byte, __c___bit
        goto    get_hex_nibble__4
get_hex_nibble__3:
        ; line_number = 851
        movlw   65
        subwf   get_hex_nibble__character,w
        ; (after recombine) true_delay=non-uniform, false_delay=non-uniform
        ; CASE: true.size>1 false.size=1; false=GOTO
        btfss   __c___byte, __c___bit
        goto    get_hex_nibble__1
        ; &&||: index=1 true_delay=4294967295 false_delay=4294967295 goto_delay=4294967295
        movlw   70
        subwf   get_hex_nibble__character,w
        btfsc   __z___byte, __z___bit
        bcf     __c___byte, __c___bit
        ; (after recombine) true_delay=non-uniform, false_delay=non-uniform
        ; CASE: true.size=0 && false.size>1
        ; bit_code_emit_helper1: body_code.size=3 true_test=false body_code.delay=0 (non-uniform delay)
        btfsc   __c___byte, __c___bit
        goto    get_hex_nibble__2
        ; line_number = 852
        ; return character - 'A' + 10 start
        ; line_number = 852
        movlw   201
        addwf   get_hex_nibble__character,w
        return  
        ; line_number = 852
        ; return character - 'A' + 10 done
get_hex_nibble__2:
get_hex_nibble__1:
        ; Recombine code1_bit_states != code2_bit_states
        ; code.delay=4294967295 back_code.delay=4294967295
        ; <=bit_code_emit@symbol; sym=__c (data:00=>00 code:11=>11)
        ; &&||: index=0 true_delay=4294967295 false_delay=4294967295 goto_delay=4294967295
        ; &&||:: index=0 new_delay=4294967295 goto_delay=4294967295
        ; Recombine code1_bit_states != code2_bit_states
        ; code.delay=4294967295 back_code.delay=4294967295
        ; <=bit_code_emit@symbol; sym=__c (data:00=>00 code:11=>11)
        ; Recombine code1_bit_states != code2_bit_states
        goto    get_hex_nibble__5
get_hex_nibble__4:
        ; line_number = 850
        ; return character - '0' start
        ; line_number = 850
        movlw   208
        addwf   get_hex_nibble__character,w
        return  
        ; line_number = 850
        ; return character - '0' done
get_hex_nibble__5:
        ; code.delay=4294967295 back_code.delay=4294967295
        ; <=bit_code_emit@symbol; sym=__c (data:00=>00 code:11=>11)
        ; &&||: index=0 true_delay=4294967295 false_delay=4294967295 goto_delay=4294967295
        ; &&||:: index=0 new_delay=4294967295 goto_delay=4294967295
        ; Recombine code1_bit_states != code2_bit_states
        ; code.delay=4294967295 back_code.delay=4294967295
        ; <=bit_code_emit@symbol; sym=__c (data:00=>00 code:11=>11)
        ; line_number = 849
        ;  if '0' <= character && character <= '9' done
        ; line_number = 853
        ; ok := 0
        bcf     ok___byte, ok___bit
        ; line_number = 854
        ;  return 0 start
        ; line_number = 854
        retlw   0
        ; line_number = 854
        ;  return 0 done


        ; delay after procedure statements=non-uniform




        ; # The `put' procedures:

        ; line_number = 859
        ; procedure put_get_byte
put_get_byte:
        ; Last argument is sitting in W; save into argument variable
        movwf   put_get_byte__socket
        ; delay=4294967295
        ; line_number = 860
        ; argument command byte
put_get_byte__command equ globals___0+48
        ; line_number = 861
        ; argument socket byte
put_get_byte__socket equ globals___0+49
        ; line_number = 862
        ;  returns byte

        ; # This procedure will output {command} to {socket} and wait
        ; # for a response which is subseuently returned.

        ; before procedure statements delay=non-uniform, bit states=(data:00=>00 code:11=>11)
        ; line_number = 867
        ;  call put_byte(command, socket)
        movf    put_get_byte__command,w
        movwf   put_byte__character
        movf    put_get_byte__socket,w
        call    put_byte
        ; line_number = 868
        ;  return get_byte(socket) start
        ; line_number = 868
        movf    put_get_byte__socket,w
        call    get_byte
        return  
        ; line_number = 868
        ;  return get_byte(socket) done


        ; delay after procedure statements=non-uniform




        ; line_number = 871
        ; procedure put_byte
put_byte:
        ; Last argument is sitting in W; save into argument variable
        movwf   put_byte__socket
        ; delay=4294967295
        ; line_number = 872
        ; argument character byte
put_byte__character equ globals___0+56
        ; line_number = 873
        ; argument socket byte
put_byte__socket equ globals___0+57
        ; line_number = 874
        ;  returns_nothing

        ; # This procedure will send {character} out to {socket}.

        ; line_number = 878
        ;  local counter byte
put_byte__counter equ globals___0+50
        ; line_number = 879
        ;  local one byte
put_byte__one equ globals___0+51
        ; line_number = 880
        ;  local port byte
put_byte__port equ globals___0+52
        ; line_number = 881
        ;  local zero byte
put_byte__zero equ globals___0+53

        ; line_number = 883
        ;  local in_out_register byte
put_byte__in_out_register equ globals___0+54
        ; line_number = 884
        ;  local out_mask byte
put_byte__out_mask equ globals___0+55

        ; before procedure statements delay=non-uniform, bit states=(data:00=>00 code:11=>11)
        ; line_number = 886
        ;  in_out_register := in_out_registers(socket)
        movf    put_byte__socket,w
        call    in_out_registers
        movwf   put_byte__in_out_register
        ; line_number = 887
        ;  out_mask := out_masks(socket)
        movf    put_byte__socket,w
        call    out_masks
        movwf   put_byte__out_mask
        ; line_number = 888
        ;  port := ports[in_out_register]
        movf    put_byte__in_out_register,w
        addlw   ports
        movwf   __fsr
        bcf     __irp___byte, __irp___bit
        movf    __indf,w
        movwf   put_byte__port
        ; line_number = 889
        ;  one := port | out_mask
        movf    put_byte__port,w
        iorwf   put_byte__out_mask,w
        movwf   put_byte__one
        ; line_number = 890
        ;  zero := port & (out_mask ^ 0xff)
        movlw   255
        xorwf   put_byte__out_mask,w
        andwf   put_byte__port,w
        movwf   put_byte__zero

        ; # If we were last receiving some characters, let's delay by 2/3 bit
        ; # to make sure there is adequate turn-around:
        ; line_number = 894
        ;  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=3 true_test=true body_code.delay=0 (non-uniform delay)
        btfss   receiving___byte, receiving___bit
        goto    put_byte__1
        ; line_number = 895
        ; receiving := 0
        bcf     receiving___byte, receiving___bit
        ; line_number = 896
        ;  call delay()
        call    delay
        ; line_number = 897
        ;  call delay()
        call    delay

        ; Recombine size1 = 0 || size2 = 0
put_byte__1:
        ; code.delay=4294967295 back_code.delay=4294967295
        ; <=bit_code_emit@symbol; sym=receiving (data:00=>00 code:11=>11)
        ; line_number = 894
        ;  if receiving done
        ; # Do start bit:
        ; line_number = 900
        ;  delay extra_bit_instructions - 2 start
        ; Delay expression evaluates to 22
        ; line_number = 901
        ; ports[in_out_register] := zero
        ; Delay at assignment is 0
        ; index_fsr_first
        movf    put_byte__in_out_register,w
        addlw   ports
        movwf   __fsr
        bcf     __irp___byte, __irp___bit
        movf    put_byte__zero,w
        movwf   __indf
        ; Delay 16 cycles
        ; Delay loop takes 4 * 4 = 16 cycles
        movlw   4
put_byte__2:
        addlw   255
        btfss   __z___byte, __z___bit
        goto    put_byte__2
        ; line_number = 900
        ;  delay extra_bit_instructions - 2 done
        ; line_number = 902
        ; call delay()
        call    delay
        ; line_number = 903
        ;  call delay()
        call    delay
        ; line_number = 904
        ;  call delay()
        call    delay
        ; # "- 2" is for two bytes of loop set up:

        ; # Do next 8 bits:
        ; line_number = 908
        ;  loop_exactly 8 start
put_byte__3 equ globals___0+74
        movlw   8
        movwf   put_byte__3
put_byte__4:
        ; # 3 cycles for goto at end of loop
        ; line_number = 910
        ;  delay extra_bit_instructions - 3 start
        ; Delay expression evaluates to 21
        ; line_number = 911
        ; port := ports[in_out_register]
        ; Delay at assignment is 0
        movf    put_byte__in_out_register,w
        addlw   ports
        movwf   __fsr
        bcf     __irp___byte, __irp___bit
        movf    __indf,w
        movwf   put_byte__port
        ; line_number = 912
        ;  if character@0 start
        ; Delay at if is 6
put_byte__select__5___byte equ put_byte__character
put_byte__select__5___bit equ 0
        ; (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   put_byte__select__5___byte, put_byte__select__5___bit
        goto    put_byte__6
        ; # Send a mark (1):
        ; line_number = 914
        ;  port := one
        ; Delay at assignment is 0
        movf    put_byte__one,w
        movwf   put_byte__port
        goto    put_byte__7
put_byte__6:
        ; # Send a space (0):
        ; line_number = 917
        ;  port := zero
        ; Delay at assignment is 0
        movf    put_byte__zero,w
        movwf   put_byte__port
        nop     
put_byte__7:
        ; code.delay=12 back_code.delay=0
        ; <=bit_code_emit@symbol; sym=put_byte__select__5 (data:00=>00 code:11=>11)
        ; if final true delay=2 false delay=2 code delay=12
        ; line_number = 912
        ;  if character@0 done
        ; line_number = 918
        ; ports[in_out_register] := port
        ; Delay at assignment is 12
        ; index_fsr_first
        movf    put_byte__in_out_register,w
        addlw   ports
        movwf   __fsr
        bcf     __irp___byte, __irp___bit
        movf    put_byte__port,w
        movwf   __indf
        ; line_number = 919
        ;  character := character >> 1
        ; Delay at assignment is 18
        ; Assignment of variable to self (no code needed)
        rrf     put_byte__character,f
        bcf     put_byte__character, 7
        ; Delay 1 cycles
        nop     
        ; line_number = 910
        ;  delay extra_bit_instructions - 3 done
        ; line_number = 920
        ; call delay()
        call    delay
        ; line_number = 921
        ;  call delay()
        call    delay
        ; line_number = 922
        ;  call delay()
        call    delay

        ; line_number = 908
        ;  loop_exactly 8 wrap-up
        decfsz  put_byte__3,f
        goto    put_byte__4
        ; line_number = 908
        ;  loop_exactly 8 done
        ; # Now do stop bit:
        ; line_number = 925
        ;  delay extra_bit_instructions start
        ; Delay expression evaluates to 24
        ; line_number = 926
        ; ports[in_out_register] := one
        ; Delay at assignment is 0
        ; index_fsr_first
        movf    put_byte__in_out_register,w
        addlw   ports
        movwf   __fsr
        bcf     __irp___byte, __irp___bit
        movf    put_byte__one,w
        movwf   __indf
        ; Delay 18 cycles
        ; Delay loop takes 4 * 4 = 16 cycles
        movlw   4
put_byte__8:
        addlw   255
        btfss   __z___byte, __z___bit
        goto    put_byte__8
        goto    put_byte__9
put_byte__9:
        ; line_number = 925
        ;  delay extra_bit_instructions done
        ; line_number = 927
        ; call delay()
        call    delay
        ; line_number = 928
        ;  call delay()
        call    delay
        ; line_number = 929
        ;  call delay()
        call    delay


        ; delay after procedure statements=non-uniform
        ; Implied return
        retlw   0




        ; line_number = 932
        ; procedure put_character
put_character:
        ; Last argument is sitting in W; save into argument variable
        movwf   put_character__character
        ; delay=4294967295
        ; line_number = 933
        ; argument character byte
put_character__character equ globals___0+59
        ; line_number = 934
        ;  returns_nothing

        ; # This procedure will send {character} out to TX-pin of port C.

        ; line_number = 938
        ;  local pir1_copy byte
put_character__pir1_copy equ globals___0+58

        ; #FIXME: The compiler chokes on a bit test in another page!!!
        ; # For now may a local copy and test locally:
        ; before procedure statements delay=non-uniform, bit states=(data:00=>00 code:11=>11)
        ; line_number = 942
        ;  pir1_copy@4 := 0
put_character__select__1___byte equ put_character__pir1_copy
put_character__select__1___bit equ 4
        bcf     put_character__select__1___byte, put_character__select__1___bit
        ; line_number = 943
        ;  while !(pir1_copy@4) start
put_character__2:
put_character__select__3___byte equ put_character__pir1_copy
put_character__select__3___bit equ 4
        ; (after recombine) true_delay=non-uniform, false_delay=non-uniform
        ; CASE: true.size=0 && false.size>1
        ; bit_code_emit_helper1: body_code.size=3 true_test=false body_code.delay=0 (non-uniform delay)
        btfsc   put_character__select__3___byte, put_character__select__3___bit
        goto    put_character__4
        ; # Wait for transmit buffer to empty.
        ; line_number = 945
        ;  pir1_copy := _pir1
        movf    _pir1,w
        movwf   put_character__pir1_copy

        goto    put_character__2
put_character__4:
        ; Recombine size1 = 0 || size2 = 0
        ; code.delay=4294967295 back_code.delay=4294967295
        ; <=bit_code_emit@symbol; sym=put_character__select__3 (data:00=>00 code:11=>11)
        ; line_number = 943
        ;  while !(pir1_copy@4) done
        ; # Send the character:
        ; line_number = 948
        ;  _txreg := character
        movf    put_character__character,w
        movwf   _txreg


        ; delay after procedure statements=non-uniform
        ; Implied return
        retlw   0




        ; line_number = 951
        ; procedure put_crlf
put_crlf:
        ; arguments_none
        ; line_number = 953
        ;  returns_nothing

        ; # This procedure will output a carriage-return line-feed.

        ; before procedure statements delay=non-uniform, bit states=(data:00=>00 code:11=>11)
        ; line_number = 957
        ;  call put_character(carriage_return)
        movlw   13
        call    put_character
        ; line_number = 958
        ;  call put_character(line_feed)
        movlw   10
        call    put_character


        ; delay after procedure statements=non-uniform
        ; Implied return
        retlw   0




        ; line_number = 961
        ; procedure put_hex_byte
put_hex_byte:
        ; Last argument is sitting in W; save into argument variable
        movwf   put_hex_byte__byte
        ; delay=4294967295
        ; line_number = 962
        ; argument byte byte
put_hex_byte__byte equ globals___0+60
        ; line_number = 963
        ;  returns_nothing

        ; # This procedure will output {byte} as two hexadecimal digits.

        ; before procedure statements delay=non-uniform, bit states=(data:00=>00 code:11=>11)
        ; line_number = 967
        ;  call put_hex_nibble(byte >> 4)
put_hex_byte__1 equ globals___0+75
        swapf   put_hex_byte__byte,w
        andlw   15
        call    put_hex_nibble
        ; line_number = 968
        ;  call put_hex_nibble(byte & 15)
        movlw   15
        andwf   put_hex_byte__byte,w
        call    put_hex_nibble


        ; delay after procedure statements=non-uniform
        ; Implied return
        retlw   0




        ; line_number = 971
        ; procedure put_hex_nibble
put_hex_nibble:
        ; Last argument is sitting in W; save into argument variable
        movwf   put_hex_nibble__nibble
        ; delay=4294967295
        ; line_number = 972
        ; argument nibble byte
put_hex_nibble__nibble equ globals___0+61
        ; line_number = 973
        ;  returns_nothing

        ; # This procedure will output {nibble} as a hexadecimal digit.

        ; before procedure statements delay=non-uniform, bit states=(data:00=>00 code:11=>11)
        ; line_number = 977
        ;  if nibble < 10 start
        movlw   10
        subwf   put_hex_nibble__nibble,w
        ; (after recombine) true_delay=non-uniform, false_delay=non-uniform
        ; CASE: true_size=1 && false_size=1
        ; SUBCASE: Double test; true, then false
        btfsc   __c___byte, __c___bit
        ; line_number = 980
        ; nibble := nibble + 'A' - 10
        movlw   55
        btfss   __c___byte, __c___bit
        ; line_number = 978
        ; nibble := nibble + '0'
        movlw   48
        ; code.delay=4294967295 back_code.delay=4294967295
        addwf   put_hex_nibble__nibble,f
        ; <=bit_code_emit@symbol; sym=__c (data:00=>00 code:11=>11)
        ; line_number = 977
        ;  if nibble < 10 done
        ; line_number = 981
        ; call put_character(nibble)
        movf    put_hex_nibble__nibble,w
        call    put_character


        ; delay after procedure statements=non-uniform
        ; Implied return
        retlw   0




        ; line_number = 984
        ; procedure put_space
put_space:
        ; arguments_none
        ; line_number = 986
        ;  returns_nothing

        ; before procedure statements delay=non-uniform, bit states=(data:00=>00 code:11=>11)
        ; line_number = 988
        ;  call put_character(space)
        movlw   32
        call    put_character


        ; delay after procedure statements=non-uniform
        ; Implied return
        retlw   0




        ; # Sleep routines:

seconds_sleep__0return___byte equ globals___0+79
seconds_sleep__0return___bit equ 5
        ; line_number = 993
        ; procedure seconds_sleep
seconds_sleep:
        ; Last argument is sitting in W; save into argument variable
        movwf   seconds_sleep__seconds
        ; delay=4294967295
        ; line_number = 994
        ; argument seconds byte
seconds_sleep__seconds equ globals___0+63
        ; line_number = 995
        ;  returns bit

        ; # This procedure will sleep for the specified number of seconds.

        ; line_number = 999
        ;  local count byte
seconds_sleep__count equ globals___0+62

        ; before procedure statements delay=non-uniform, bit states=(data:00=>00 code:11=>11)
        ; line_number = 1001
        ;  sleep_count := 0
        movlw   0
        movwf   sleep_count
        ; line_number = 1002
        ;  loop_exactly seconds start
seconds_sleep__1 equ globals___0+76
        movf    seconds_sleep__seconds,w
        movwf   seconds_sleep__1
seconds_sleep__2:
        ; line_number = 1003
        ; call put_character(count + '0')
        movlw   48
        addwf   seconds_sleep__count,w
        call    put_character
        ; line_number = 1004
        ;  call put_space()
        call    put_space
        ; line_number = 1005
        ;  if second_sleep() start
        call    second_sleep
        ; (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   second_sleep__0return___byte, second_sleep__0return___bit
        goto    seconds_sleep__4
        ; line_number = 1006
        ; if sleep_count < 10 start
        movlw   10
        subwf   sleep_count,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=2 true_test=false body_code.delay=0 (non-uniform delay)
        btfsc   __c___byte, __c___bit
        goto    seconds_sleep__3
        ; line_number = 1007
        ; return 1 start
        ; line_number = 1007
        bsf     seconds_sleep__0return___byte, seconds_sleep__0return___bit
        return  
        ; line_number = 1007
        ; return 1 done
seconds_sleep__3:
        ; Recombine size1 = 0 || size2 = 0
        ; code.delay=4294967295 back_code.delay=4294967295
        ; <=bit_code_emit@symbol; sym=__c (data:00=>00 code:11=>11)
        ; line_number = 1006
        ; if sleep_count < 10 done
        ; line_number = 1008
        ; return 0 start
        ; line_number = 1008
        bcf     seconds_sleep__0return___byte, seconds_sleep__0return___bit
        return  
        ; line_number = 1008
        ; return 0 done
        ; Recombine size1 = 0 || size2 = 0
seconds_sleep__4:
        ; code.delay=4294967295 back_code.delay=4294967295
        ; <=bit_code_emit@symbol; sym=second_sleep__0return (data:00=>00 code:11=>11)
        ; line_number = 1005
        ;  if second_sleep() done
        ; line_number = 1002
        ;  loop_exactly seconds wrap-up
        decfsz  seconds_sleep__1,f
        goto    seconds_sleep__2
        ; line_number = 1002
        ;  loop_exactly seconds done
        ; line_number = 1009
        ; return 1 start
        ; line_number = 1009
        bsf     seconds_sleep__0return___byte, seconds_sleep__0return___bit
        return  
        ; line_number = 1009
        ; return 1 done


        ; delay after procedure statements=non-uniform




second_sleep__0return___byte equ globals___0+79
second_sleep__0return___bit equ 6
        ; line_number = 1012
        ; procedure second_sleep
second_sleep:
        ; arguments_none
        ; line_number = 1014
        ;  returns bit

        ; # This procedure will sleep for one second.

        ; line_number = 1018
        ;  local count1 byte
second_sleep__count1 equ globals___0+64
        ; line_number = 1019
        ;  local count2 byte
second_sleep__count2 equ globals___0+65

        ; before procedure statements delay=non-uniform, bit states=(data:00=>00 code:11=>11)
        ; line_number = 1021
        ;  _rcif := 0
        bcf     _rcif___byte, _rcif___bit
        ; line_number = 1022
        ;  _rcreg := 0
        movlw   0
        movwf   _rcreg
        ; line_number = 1023
        ;  loop_exactly 100 start
second_sleep__1 equ globals___0+77
        movlw   100
        movwf   second_sleep__1
second_sleep__2:
        ; line_number = 1024
        ; loop_exactly 100 start
second_sleep__3 equ globals___0+78
        movlw   100
        movwf   second_sleep__3
second_sleep__4:
        ; line_number = 1025
        ; delay 500 start
        ; Delay expression evaluates to 500
        ; line_number = 1026
        ; if _rcif start
        ; Delay at if is 0
        ; (after recombine) true_delay=3, 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=3 (uniform delay)
        btfsc   _rcif___byte, _rcif___bit
        goto    second_sleep__5
        ; Delay 2 cycles
        goto    second_sleep__7
second_sleep__7:
        goto    second_sleep__6
second_sleep__5:
        ; line_number = 1027
        ; return 1 start
        ; line_number = 1027
        ; Delay at expression return is 0
        bsf     second_sleep__0return___byte, second_sleep__0return___bit
        return  
        ; line_number = 1027
        ; return 1 done
second_sleep__6:
        ; code.delay=6 back_code.delay=0
        ; <=bit_code_emit@symbol; sym=_rcif (data:00=>00 code:11=>11)
        ; if final true delay=3 false delay=0 code delay=6
        ; line_number = 1026
        ; if _rcif done
        ; line_number = 1028
        ; if sleep_count != 255 start
        ; Delay at if is 6
        ; Left minus Right
        incf    sleep_count,w
        ; (after recombine) true_delay=0, false_delay=1 uniform_delay=true
        ; CASE: true_code.size=0 && false_code.size=1
        btfss   __z___byte, __z___bit
        ; line_number = 1029
        ; sleep_count := sleep_count + 1
        ; Delay at assignment is 0
        incf    sleep_count,f
        ; code.delay=9 back_code.delay=0
        ; <=bit_code_emit@symbol; sym=__z (data:00=>00 code:11=>11)
        ; Uniform delay broke in relation_code_emit
        ; if final true delay=1 false delay=0 code delay=9
        ; line_number = 1028
        ; if sleep_count != 255 done
        ; Delay 491 cycles
        ; Delay loop takes 122 * 4 = 488 cycles
        movlw   122
second_sleep__8:
        addlw   255
        btfss   __z___byte, __z___bit
        goto    second_sleep__8
        goto    second_sleep__9
second_sleep__9:
        nop     
        ; line_number = 1025
        ; delay 500 done
        ; line_number = 1024
        ; loop_exactly 100 wrap-up
        decfsz  second_sleep__3,f
        goto    second_sleep__4
        ; line_number = 1024
        ; loop_exactly 100 done
        ; line_number = 1023
        ;  loop_exactly 100 wrap-up
        decfsz  second_sleep__1,f
        goto    second_sleep__2
        ; line_number = 1023
        ;  loop_exactly 100 done
        ; line_number = 1030
        ; return 0 start
        ; line_number = 1030
        bcf     second_sleep__0return___byte, second_sleep__0return___bit
        return  
        ; line_number = 1030
        ; return 0 done


        ; delay after procedure statements=non-uniform




        ; line_number = 1033
        ; procedure delay
delay:
        ; arguments_none
        ; line_number = 1035
        ;  returns_nothing
        ; line_number = 1036
        ;  exact_delay delay_instructions

        ; # Delay 1/3 of a bit:

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


        ; delay after procedure statements=1
        ; Delay 683 cycles
        ; Delay loop takes 170 * 4 = 680 cycles
        movlw   170
delay__1:
        addlw   255
        btfss   __z___byte, __z___bit
        goto    delay__1
        goto    delay__2
delay__2:
        nop     
        ; Implied return
        retlw   0
        ; Final delay = 686




        ; line_number = 1044
        ; string hello = "PICBrain11C\cr,lf\" start
        ; hello = 'PICBrain11C\13,10\'
hello:
        ; Temporarily save index into FSR
        movwf   __fsr
        ; Initialize PCLATH to point to this code page
        movlw   hello___base>>8
        movwf   __pclath
        ; Restore index from FSR
        movf    __fsr,w
        addlw   hello___base
        ; Index to the correct return value
        movwf   __pcl
        ; page_group 13
hello___base:
        retlw   80
        retlw   73
        retlw   67
        retlw   66
        retlw   114
        retlw   97
        retlw   105
        retlw   110
        retlw   49
        retlw   49
        retlw   67
        retlw   13
        retlw   10
        ; line_number = 1044
        ; string hello = "PICBrain11C\cr,lf\" start

        ; line_number = 1046
        ; procedure in_out_registers
in_out_registers:
        ; Last argument is sitting in W; save into argument variable
        movwf   in_out_registers__socket
        ; delay=4294967295
        ; line_number = 1047
        ; argument socket byte
in_out_registers__socket equ globals___0+66
        ; line_number = 1048
        ;  returns byte

        ; # This procedure will return the register number to access for {socket}.

        ; before procedure statements delay=non-uniform, bit states=(data:00=>00 code:11=>11)
        ; line_number = 1052
        ;  switch socket start
        movlw   in_out_registers__12>>8
        movwf   __pclath
        movf    in_out_registers__socket,w
        addlw   in_out_registers__12
        movwf   __pcl
        ; page_group 11
in_out_registers__12:
        ; line_number = 1054
        ; return n1_reg start
        ; line_number = 1054
        retlw   1
        ; line_number = 1054
        ; return n1_reg done
        ; line_number = 1056
        ; return n2_reg start
        ; line_number = 1056
        retlw   0
        ; line_number = 1056
        ; return n2_reg done
        ; line_number = 1058
        ; return n3_reg start
        ; line_number = 1058
        retlw   1
        ; line_number = 1058
        ; return n3_reg done
        ; line_number = 1060
        ; return n4_reg start
        ; line_number = 1060
        retlw   0
        ; line_number = 1060
        ; return n4_reg done
        ; line_number = 1062
        ; return n5_reg start
        ; line_number = 1062
        retlw   1
        ; line_number = 1062
        ; return n5_reg done
        ; line_number = 1064
        ; return n6_reg start
        ; line_number = 1064
        retlw   0
        ; line_number = 1064
        ; return n6_reg done
        ; line_number = 1066
        ; return n7_reg start
        ; line_number = 1066
        retlw   1
        ; line_number = 1066
        ; return n7_reg done
        ; line_number = 1068
        ; return n8_reg start
        ; line_number = 1068
        retlw   2
        ; line_number = 1068
        ; return n8_reg done
        ; line_number = 1070
        ; return n9_reg start
        ; line_number = 1070
        retlw   2
        ; line_number = 1070
        ; return n9_reg done
        ; line_number = 1072
        ; return n10_reg start
        ; line_number = 1072
        retlw   2
        ; line_number = 1072
        ; return n10_reg done
        ; line_number = 1074
        ; return n11_reg start
        ; line_number = 1074
        retlw   2
        ; line_number = 1074
        ; return n11_reg done
in_out_registers__13:
        ; switch end:(data:00=>00 code:11=>11)
        ; line_number = 1052
        ;  switch socket done
        ; line_number = 1075
        ; return n_none start
        ; line_number = 1075
        retlw   11
        ; line_number = 1075
        ; return n_none done


        ; delay after procedure statements=non-uniform




        ; line_number = 1078
        ; procedure in_masks
in_masks:
        ; Last argument is sitting in W; save into argument variable
        movwf   in_masks__socket
        ; delay=4294967295
        ; line_number = 1079
        ; argument socket byte
in_masks__socket equ globals___0+67
        ; line_number = 1080
        ;  returns byte

        ; # This procedure will return the input mask for {socket}.

        ; before procedure statements delay=non-uniform, bit states=(data:00=>00 code:11=>11)
        ; line_number = 1084
        ;  switch socket start
        movlw   in_masks__12>>8
        movwf   __pclath
        movf    in_masks__socket,w
        addlw   in_masks__12
        movwf   __pcl
        ; page_group 11
in_masks__12:
        ; line_number = 1086
        ; return n1in_mask start
        ; line_number = 1086
        retlw   64
        ; line_number = 1086
        ; return n1in_mask done
        ; line_number = 1088
        ; return n2in_mask start
        ; line_number = 1088
        retlw   1
        ; line_number = 1088
        ; return n2in_mask done
        ; line_number = 1090
        ; return n3in_mask start
        ; line_number = 1090
        retlw   16
        ; line_number = 1090
        ; return n3in_mask done
        ; line_number = 1092
        ; return n4in_mask start
        ; line_number = 1092
        retlw   4
        ; line_number = 1092
        ; return n4in_mask done
        ; line_number = 1094
        ; return n5in_mask start
        ; line_number = 1094
        retlw   4
        ; line_number = 1094
        ; return n5in_mask done
        ; line_number = 1096
        ; return n6in_mask start
        ; line_number = 1096
        retlw   16
        ; line_number = 1096
        ; return n6in_mask done
        ; line_number = 1098
        ; return n7in_mask start
        ; line_number = 1098
        retlw   1
        ; line_number = 1098
        ; return n7in_mask done
        ; line_number = 1100
        ; return n8in_mask start
        ; line_number = 1100
        retlw   4
        ; line_number = 1100
        ; return n8in_mask done
        ; line_number = 1102
        ; return n9in_mask start
        ; line_number = 1102
        retlw   1
        ; line_number = 1102
        ; return n9in_mask done
        ; line_number = 1104
        ; return n10in_mask start
        ; line_number = 1104
        retlw   8
        ; line_number = 1104
        ; return n10in_mask done
        ; line_number = 1106
        ; return n11in_mask start
        ; line_number = 1106
        retlw   128
        ; line_number = 1106
        ; return n11in_mask done
in_masks__13:
        ; switch end:(data:00=>00 code:11=>11)
        ; line_number = 1084
        ;  switch socket done
        ; line_number = 1107
        ; return 0 start
        ; line_number = 1107
        retlw   0
        ; line_number = 1107
        ; return 0 done


        ; delay after procedure statements=non-uniform




        ; line_number = 1110
        ; procedure out_masks
out_masks:
        ; Last argument is sitting in W; save into argument variable
        movwf   out_masks__socket
        ; delay=4294967295
        ; line_number = 1111
        ; argument socket byte
out_masks__socket equ globals___0+68
        ; line_number = 1112
        ;  returns byte

        ; # This procedure will return the output mask for {socket}.

        ; before procedure statements delay=non-uniform, bit states=(data:00=>00 code:11=>11)
        ; line_number = 1116
        ;  switch socket start
        movlw   out_masks__12>>8
        movwf   __pclath
        movf    out_masks__socket,w
        addlw   out_masks__12
        movwf   __pcl
        ; page_group 11
out_masks__12:
        ; line_number = 1118
        ; return n1out_mask start
        ; line_number = 1118
        retlw   128
        ; line_number = 1118
        ; return n1out_mask done
        ; line_number = 1120
        ; return n2out_mask start
        ; line_number = 1120
        retlw   2
        ; line_number = 1120
        ; return n2out_mask done
        ; line_number = 1122
        ; return n3out_mask start
        ; line_number = 1122
        retlw   32
        ; line_number = 1122
        ; return n3out_mask done
        ; line_number = 1124
        ; return n4out_mask start
        ; line_number = 1124
        retlw   8
        ; line_number = 1124
        ; return n4out_mask done
        ; line_number = 1126
        ; return n5out_mask start
        ; line_number = 1126
        retlw   8
        ; line_number = 1126
        ; return n5out_mask done
        ; line_number = 1128
        ; return n6out_mask start
        ; line_number = 1128
        retlw   32
        ; line_number = 1128
        ; return n6out_mask done
        ; line_number = 1130
        ; return n7out_mask start
        ; line_number = 1130
        retlw   2
        ; line_number = 1130
        ; return n7out_mask done
        ; line_number = 1132
        ; return n8out_mask start
        ; line_number = 1132
        retlw   32
        ; line_number = 1132
        ; return n8out_mask done
        ; line_number = 1134
        ; return n9out_mask start
        ; line_number = 1134
        retlw   2
        ; line_number = 1134
        ; return n9out_mask done
        ; line_number = 1136
        ; return n10out_mask start
        ; line_number = 1136
        retlw   16
        ; line_number = 1136
        ; return n10out_mask done
        ; line_number = 1138
        ; return n11out_mask start
        ; line_number = 1138
        retlw   64
        ; line_number = 1138
        ; return n11out_mask done
out_masks__13:
        ; switch end:(data:00=>00 code:11=>11)
        ; line_number = 1116
        ;  switch socket done
        ; line_number = 1139
        ; return 0 start
        ; line_number = 1139
        retlw   0
        ; line_number = 1139
        ; return 0 done


        ; delay after procedure statements=non-uniform





        ; Configuration bits
        ; fill = 0x400
        ; cp = off (0x3030)
        ; debug = off (0x800)
        ; wrt = on (0x200)
        ; cpd = off (0x100)
        ; lvp = off (0x0)
        ; boden = off (0x0)
        ; pwrte = off (0x8)
        ; wdte = off (0x0)
        ; fosc = hs (0x2)
        ; 16186 = 0x3f3a
        __config 16186
        ; Define start addresses for data regions
        ; Region="shared___globals" Address=112" Size=16 Bytes=0 Bits=0 Available=16
        ; Region="globals___0" Address=32" Size=80 Bytes=79 Bits=7 Available=0
        ; Region="globals___1" Address=160" Size=80 Bytes=0 Bits=0 Available=80
        ; Region="globals___2" Address=272" Size=96 Bytes=32 Bits=0 Available=64
        ; Region="globals___3" Address=416" Size=96 Bytes=0 Bits=0 Available=96
        end
